From 4408da71a92d3acadfb53c52c01f4c639d19928f Mon Sep 17 00:00:00 2001 From: Mark Riedesel Date: Wed, 10 Apr 2024 09:41:10 -0400 Subject: [PATCH] mark some fields as optional --- pyaccuwage/enums.py | 1 + pyaccuwage/record.py | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pyaccuwage/enums.py b/pyaccuwage/enums.py index 8c96ebf..66a8722 100644 --- a/pyaccuwage/enums.py +++ b/pyaccuwage/enums.py @@ -323,6 +323,7 @@ employment_codes = ( ) tax_jurisdiction_codes = ( + (' ', 'W-2'), ('V', 'Virgin Islands'), ('G', 'Guam'), ('S', 'American Samoa'), diff --git a/pyaccuwage/record.py b/pyaccuwage/record.py index 9e46217..a4fe89b 100644 --- a/pyaccuwage/record.py +++ b/pyaccuwage/record.py @@ -105,8 +105,8 @@ class EmployerRecord(EFW2Record): zipcode_ext = TextField(max_length=4, required=False) kind_of_employer = TextField(max_length=1) blank1 = BlankField(max_length=4) - foreign_state_province = TextField(max_length=23) - foreign_postal_code = TextField(max_length=15) + foreign_state_province = TextField(max_length=23, required=False) + foreign_postal_code = TextField(max_length=15, required=False) country_code = TextField(max_length=2, required=False) employment_code = TextField(max_length=1) tax_jurisdiction_code = TextField(max_length=1, required=False) @@ -150,7 +150,7 @@ class EmployeeWageRecord(EFW2Record): ssn = IntegerField(max_length=9, required=False) employee_first_name = TextField(max_length=15) - employee_middle_name = TextField(max_length=15) + employee_middle_name = TextField(max_length=15, required=False) employee_last_name = TextField(max_length=20) employee_suffix = TextField(max_length=4, required=False) location_address = TextField(max_length=22) @@ -163,7 +163,7 @@ class EmployeeWageRecord(EFW2Record): blank1 = BlankField(max_length=5) foreign_state = TextField(max_length=23, required=False) foreign_postal_code = TextField(max_length=15, required=False) - country = TextField(max_length=2) + country = TextField(max_length=2, required=True, blank=True) wages_tips = MoneyField(max_length=11) federal_income_tax_withheld = MoneyField(max_length=11) social_security_wages = MoneyField(max_length=11) @@ -199,8 +199,10 @@ class EmployeeWageRecord(EFW2Record): blank6 = BlankField(max_length=23) def validate_ssn(self, f): - if str(f.value).startswith('666','9'): - raise ValidationError("ssn cannot start with 666 or 9", field=f) + if str(f.value).startswith('666'): + raise ValidationError("ssn cannot start with 666", field=f) + if str(f.value).startswith('9'): + raise ValidationError("ssn cannot start with 9", field=f) @@ -243,7 +245,7 @@ class StateWageRecord(EFW2Record): taxing_entity_code = TextField(max_length=5, required=False) ssn = IntegerField(max_length=9, required=False) employee_first_name = TextField(max_length=15) - employee_middle_name = TextField(max_length=15) + employee_middle_name = TextField(max_length=15, required=False) employee_last_name = TextField(max_length=20) employee_suffix = TextField(max_length=4, required=False) location_address = TextField(max_length=22) @@ -257,10 +259,10 @@ class StateWageRecord(EFW2Record): foreign_postal_code = TextField(max_length=15, required=False) country_code = TextField(max_length=2, required=False) optional_code = TextField(max_length=2, required=False) - reporting_period = MonthYearField() + reporting_period = MonthYearField(required=False) quarterly_unemp_ins_wages = MoneyField(max_length=11) quarterly_unemp_ins_taxable_wages = MoneyField(max_length=11) - number_of_weeks_worked = IntegerField(max_length=2) + number_of_weeks_worked = IntegerField(max_length=2, required=False) date_first_employed = DateField(required=False) date_of_separation = DateField(required=False) blank2 = BlankField(max_length=5) @@ -270,7 +272,7 @@ class StateWageRecord(EFW2Record): state_taxable_wages = MoneyField(max_length=11) state_income_tax_wh = MoneyField(max_length=11) other_state_data = TextField(max_length=10, required=False) - tax_type_code = TextField(max_length=1) # VALIDATE C, D, E, or F + tax_type_code = TextField(max_length=1, required=False) # VALIDATE C, D, E, or F local_taxable_wages = MoneyField(max_length=11) local_income_tax_wh = MoneyField(max_length=11) state_control_number = IntegerField(max_length=7, required=False) @@ -280,7 +282,8 @@ class StateWageRecord(EFW2Record): def validate_tax_type_code(self, field): choices = [x for x,y in enums.tax_type_codes] - if field.value.upper() not in choices: + value = field.value + if value and value.upper() not in choices: raise ValidationError("%s not one of %s" % (field.value,choices), field=f)