diff --git a/pyaccuwage/model.py b/pyaccuwage/model.py index ed0884f..2cc4704 100644 --- a/pyaccuwage/model.py +++ b/pyaccuwage/model.py @@ -55,7 +55,7 @@ class Model(object): def output(self): result = ''.join([self.record_identifier] + [field.get_data() for field in self.get_sorted_fields()]) - if len(result) != self.record_length: + if hasattr(self, 'record_length') and len(result) != self.record_length: raise ValidationError("Record result length not equal to %d bytes (%d)" % (self.record_length, len(result))) #result = ''.join([self.record_identifier] + [field.get_data() for field in self.get_sorted_fields()]) #if len(result) != self.target_size: diff --git a/pyaccuwage/record.py b/pyaccuwage/record.py index 35b6524..9435d75 100644 --- a/pyaccuwage/record.py +++ b/pyaccuwage/record.py @@ -7,7 +7,10 @@ __all__ = RECORD_TYPES = ['SubmitterRecord', 'EmployerRecord', 'TotalRecord', 'OptionalTotalRecord', 'StateTotalRecord', 'FinalRecord', 'StateWageRecord'] -class SubmitterRecord(model.Model): +class EFW2Record(model.Model): + record_length = 512 + +class SubmitterRecord(EFW2Record): # year=2012 record_identifier = 'RA' required = True @@ -79,7 +82,7 @@ class SubmitterRecord(model.Model): -class EmployerRecord(model.Model): +class EmployerRecord(EFW2Record): # year=2012 record_identifier = 'RE' required = True @@ -138,7 +141,7 @@ class EmployerRecord(model.Model): raise ValidationError("%s not in one of %s" % (f.value, choices), field=f) -class EmployeeWageRecord(model.Model): +class EmployeeWageRecord(EFW2Record): # year=2012 record_identifier = 'RW' required = True @@ -198,7 +201,7 @@ class EmployeeWageRecord(model.Model): -class OptionalEmployeeWageRecord(model.Model): +class OptionalEmployeeWageRecord(EFW2Record): # year=2012 record_identifier = 'RO' required = False @@ -228,7 +231,7 @@ class OptionalEmployeeWageRecord(model.Model): blank4 = BlankField(max_length=128) -class StateWageRecord(model.Model): +class StateWageRecord(EFW2Record): # year=2012 record_identifier = 'RS' required = False @@ -278,7 +281,7 @@ class StateWageRecord(model.Model): raise ValidationError("%s not one of %s" % (field.value,choices), field=f) -class TotalRecord(model.Model): +class TotalRecord(EFW2Record): #year=2012 record_identifier = 'RT' required = True @@ -313,7 +316,7 @@ class TotalRecord(model.Model): blank2 = BlankField(max_length=113) -class OptionalTotalRecord(model.Model): +class OptionalTotalRecord(EFW2Record): #year= record_identifier = 'RU' required = False @@ -342,14 +345,14 @@ class OptionalTotalRecord(model.Model): blank2 = BlankField(max_length=23) -class StateTotalRecord(model.Model): +class StateTotalRecord(EFW2Record): #year=2012 record_identifier = 'RV' required = False supplemental_data = TextField(max_length=510) -class FinalRecord(model.Model): +class FinalRecord(EFW2Record): #year=2012 record_identifier = 'RF' required = True