Finished up most of the record order validation and also checking

for all required records in a set. Added a controller class but
decided to put stuff in __init__ instead, at least for now.
Added a DateField which converts datetime.date into the proper
string format for EFW2 files (hopefully), this should still be
tested next week.
This commit is contained in:
Binh 2011-05-07 15:19:48 -05:00
parent f30237a90d
commit 5781cbf335
4 changed files with 113 additions and 14 deletions

View file

@ -1,14 +1,15 @@
import model
from fields import *
__all__ = ['SubmitterRecord', 'EmployerRecord',
__all__ = RECORD_TYPES = ['SubmitterRecord', 'EmployerRecord',
'EmployeeWageRecord', 'OptionalEmployeeWageRecord',
'TotalRecord', 'OptionalTotalRecord',
'StateTotalRecord', 'FinalRecord',]
class SubmitterRecord(model.Model):
record_identifier = 'RA'
required = True
submitter_ein = NumericField(max_length=9)
user_id = TextField(max_length=8)
software_vendor = TextField(max_length=4)
@ -51,7 +52,8 @@ class SubmitterRecord(model.Model):
class EmployerRecord(model.Model):
record_identifier = 'RE'
required = True
tax_year = NumericField(max_length=4)
agent_indicator = NumericField(max_length=1)
employer_ein = TextField(max_length=9)
@ -78,7 +80,8 @@ class EmployerRecord(model.Model):
class EmployeeWageRecord(model.Model):
record_identifier = 'RW'
required = True
ssn = NumericField(max_length=9, required=False)
employee_first_name = TextField(max_length=15)
employee_middle_name = TextField(max_length=15)
@ -129,7 +132,8 @@ class EmployeeWageRecord(model.Model):
class OptionalEmployeeWageRecord(model.Model):
record_identifier = 'RO'
required = False
blank1 = BlankField(max_length=9)
allocated_tips = MoneyField(max_length=11)
uncollected_tax_on_tips = MoneyField(max_length=11)
@ -156,6 +160,7 @@ class OptionalEmployeeWageRecord(model.Model):
class StateWageRecord(model.Model):
record_identifier = 'RS'
required = False
state_code = NumericField(max_length=2)
taxing_entity_code = TextField(max_length=5)
@ -179,8 +184,8 @@ class StateWageRecord(model.Model):
quarterly_unemp_ins_wages = MoneyField(max_length=11)
quarterly_unemp_ins_taxable_wages = MoneyField(max_length=11)
number_of_weeks_worked = NumericField(max_length=2)
date_first_employed = TextField(max_length=8)#DateField()
date_of_separation = TextField(max_length=8)#DateField()
date_first_employed = DateField()
date_of_separation = DateField()
blank2 = BlankField(max_length=5)
state_employer_account_num = NumericField(max_length=20)
blank3 = BlankField(max_length=6)
@ -198,6 +203,7 @@ class StateWageRecord(model.Model):
class TotalRecord(model.Model):
record_identifier = 'RT'
required = True
number_of_rw_records = NumericField(max_length=7)
wages_tips = NumericField(max_length=15)
@ -231,7 +237,8 @@ class TotalRecord(model.Model):
class OptionalTotalRecord(model.Model):
record_identifier = 'RU'
required = False
number_of_ro_records = NumericField(max_length=7)
allocated_tips = NumericField(max_length=15)
uncollected_tax_on_tips = NumericField(max_length=15)
@ -257,11 +264,14 @@ class OptionalTotalRecord(model.Model):
class StateTotalRecord(model.Model):
record_identifier = 'RV'
required = False
supplemental_data = TextField(max_length=510)
class FinalRecord(model.Model):
record_identifier = 'RF'
required = True
blank1 = BlankField(max_length=5)
number_of_rw_records = NumericField(max_length=9)
blank2 = BlankField(max_length=496)