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:
parent
f30237a90d
commit
5781cbf335
4 changed files with 113 additions and 14 deletions
28
record.py
28
record.py
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue