diff --git a/facho/fe/data/dian/codelist/PeriodoNomina-2.1.gc b/facho/fe/data/dian/codelist/PeriodoNomina-2.1.gc new file mode 100644 index 0000000..0f2760d --- /dev/null +++ b/facho/fe/data/dian/codelist/PeriodoNomina-2.1.gc @@ -0,0 +1,36 @@ + + + + + PeriodoNomina + Periodos Nomina + 1 + + + + Code + + + + Nombre + + + + CodeKey + + + + + + + 1 + + + Semanal + + + + diff --git a/facho/fe/data/dian/codelist/__init__.py b/facho/fe/data/dian/codelist/__init__.py index 5d42ed7..f1ba264 100644 --- a/facho/fe/data/dian/codelist/__init__.py +++ b/facho/fe/data/dian/codelist/__init__.py @@ -99,3 +99,5 @@ UnidadesMedida = CodeList(path_for_codelist('UnidadesMedida-2.1.gc'), 'code', 'n TipoTrabajador = CodeList(path_for_codelist('TipoTrabajador-2.1.gc'), 'code', 'name') SubTipoTrabajador = CodeList(path_for_codelist('SubTipoTrabajador-2.1.gc'), 'code', 'name') TipoContrato = CodeList(path_for_codelist('TipoContrato-2.1.gc'), 'code', 'name') +PeriodoNomina = CodeList(path_for_codelist('PeriodoNomina-2.1.gc'), 'code', 'name') +TipoMoneda = CodeList(path_for_codelist('TipoMoneda-2.1.gc'), 'code', 'name') diff --git a/facho/fe/nomina/__init__.py b/facho/fe/nomina/__init__.py index a4bccbb..1b5cdc4 100644 --- a/facho/fe/nomina/__init__.py +++ b/facho/fe/nomina/__init__.py @@ -33,6 +33,27 @@ class NumeroSecuencia: fragment.set_attributes('./NumeroSecuenciaXML', Numero = self.numero) + +@dataclass +class PeriodoNomina: + code: str + name: str = '' + + def __post_init__(self): + if self.code not in codelist.PeriodoNomina: + raise ValueError("code [%s] not found" % (self.code)) + self.name = codelist.PeriodoNomina[self.code]['name'] + +@dataclass +class TipoMoneda: + code: str + name: str = '' + + def __post_init__(self): + if self.code not in codelist.TipoMoneda: + raise ValueError("code [%s] not found" % (self.code)) + self.name = codelist.TipoMoneda[self.code]['name'] + @dataclass class InformacionGeneral: class TIPO_AMBIENTE: @@ -48,6 +69,8 @@ class InformacionGeneral: fecha_generacion: str hora_generacion: str + periodo_nomina: PeriodoNomina + tipo_moneda: TipoMoneda tipo_ambiente: TIPO_AMBIENTE software_pin: str @@ -69,6 +92,10 @@ class InformacionGeneral: FechaGen = self.fecha_generacion, # NIE027 HoraGen = self.hora_generacion, + # NIE029 + PeriodoNomina = self.periodo_nomina.code, + # NIE030 + TipoMoneda = self.tipo_moneda.code # TODO(bit4bit) resto... # ..... ) diff --git a/tests/test_nomina.py b/tests/test_nomina.py index d5f85f2..63e7837 100644 --- a/tests/test_nomina.py +++ b/tests/test_nomina.py @@ -120,7 +120,9 @@ def test_nomina_cune(): fecha_generacion = '2020-01-16', hora_generacion = '1053:10-05:00', tipo_ambiente = fe.nomina.InformacionGeneral.AMBIENTE_PRODUCCION, - software_pin = '693' + software_pin = '693', + periodo_nomina = fe.nomina.PeriodoNomina(code='1'), + tipo_moneda = fe.nomina.TipoMoneda(code='COP') )) nomina.asignar_empleador(fe.nomina.Empleador(