se adicionan restantes obligatorios para NominaIndividual
FossilOrigin-Name: 428f40698c252453c5b6ae39f35553c6484d90568b1d31f097115a88d94fadd9
This commit is contained in:
parent
080014cbb6
commit
f7a29b6daa
@ -84,6 +84,7 @@ TipoImpuesto = CodeList(path_for_codelist('TipoImpuesto-2.1.gc'), 'code', 'name'
|
||||
.update(CodeList(path_for_codelist('TipoImpuesto-2.1.custom.gc'), 'code', 'name'))
|
||||
CodigoPrecioReferencia = CodeList(path_for_codelist('CodigoPrecioReferencia-2.1.gc'), 'code', 'name')
|
||||
MediosPago = CodeList(path_for_codelist('MediosPago-2.1.gc'), 'code', 'name')
|
||||
FormasPago = CodeList(path_for_codelist('FormasPago-2.1.gc'), 'code', 'name')
|
||||
RegimenFiscal = CodeList(path_for_codelist('RegimenFiscal-2.1.custom.gc'), 'code', 'name')
|
||||
TipoOperacionNC = CodeList(path_for_codelist('TipoOperacionNC-2.1.gc'), 'code', 'name')
|
||||
TipoOperacionND = CodeList(path_for_codelist('TipoOperacionND-2.1 - copia.gc'), 'code', 'name')
|
||||
|
@ -240,6 +240,40 @@ class Trabajador:
|
||||
CodigoTrabajador = self.codigo_trabajador
|
||||
)
|
||||
|
||||
|
||||
|
||||
@dataclass
|
||||
class FormaPago:
|
||||
code: str
|
||||
name: str = ''
|
||||
|
||||
def __post_init__(self):
|
||||
if self.code not in codelist.FormasPago:
|
||||
raise ValueError("code [%s] not found" % (self.code))
|
||||
self.name = codelist.FormasPago[self.code]['name']
|
||||
|
||||
@dataclass
|
||||
class MetodoPago:
|
||||
code: str
|
||||
name: str = ''
|
||||
|
||||
def __post_init__(self):
|
||||
if self.code not in codelist.MediosPago:
|
||||
raise ValueError("code [%s] not found" % (self.code))
|
||||
self.name = codelist.MediosPago[self.code]['name']
|
||||
|
||||
@dataclass
|
||||
class Pago:
|
||||
forma: FormaPago
|
||||
metodo: MetodoPago
|
||||
|
||||
def apply(self, fragment):
|
||||
fragment.set_attributes('./Pago',
|
||||
# NIE064
|
||||
Forma = self.forma.code,
|
||||
# NIE065
|
||||
Metodo = self.metodo.code)
|
||||
|
||||
class DIANNominaXML:
|
||||
def __init__(self, tag_document):
|
||||
self.tag_document = tag_document
|
||||
@ -251,6 +285,7 @@ class DIANNominaXML:
|
||||
self.fexml.placeholder_for('./InformacionGeneral')
|
||||
self.fexml.placeholder_for('./Empleador')
|
||||
self.fexml.placeholder_for('./Trabajador')
|
||||
self.fexml.placeholder_for('./Pago')
|
||||
self.fexml.placeholder_for('./Devengados/Basico')
|
||||
self.fexml.placeholder_for('./Devengados/Transporte', optional=True)
|
||||
|
||||
@ -259,6 +294,7 @@ class DIANNominaXML:
|
||||
self.numero_secuencia_xml = self.fexml.fragment('./NumeroSecuenciaXML')
|
||||
self.empleador = self.fexml.fragment('./Empleador')
|
||||
self.trabajador = self.fexml.fragment('./Trabajador')
|
||||
self.pago_xml = self.fexml.fragment('./Pago')
|
||||
self.devengados = self.fexml.fragment('./Devengados')
|
||||
self.deducciones = self.fexml.fragment('./Deducciones')
|
||||
|
||||
@ -275,6 +311,11 @@ class DIANNominaXML:
|
||||
self.informacion_general = general
|
||||
self.informacion_general.apply(self.informacion_general_xml)
|
||||
|
||||
def asignar_pago(self, pago):
|
||||
if not isinstance(pago, Pago):
|
||||
raise ValueError('se espera tipo Pago')
|
||||
pago.apply(self.pago_xml)
|
||||
|
||||
def asignar_empleador(self, empleador):
|
||||
if not isinstance(empleador, Empleador):
|
||||
raise ValueError('se espera tipo Empleador')
|
||||
@ -321,7 +362,12 @@ class DIANNominaXML:
|
||||
self.fexml.xpath_from_root('/Periodo'),
|
||||
'FechaIngreso',
|
||||
'se requiere Periodo')
|
||||
|
||||
|
||||
check_element(
|
||||
self.fexml.xpath_from_root('/Pago'),
|
||||
'se requiere Pago'
|
||||
)
|
||||
|
||||
check_element(
|
||||
self.fexml.xpath_from_root('/Devengados/Basico'),
|
||||
'se requiere DevengadoBasico'
|
||||
|
@ -185,3 +185,10 @@ def assert_error(errors, msg):
|
||||
|
||||
raise "wants error: %s" % (msg)
|
||||
|
||||
|
||||
def test_asignar_pago():
|
||||
nomina = fe.nomina.DIANNominaIndividual()
|
||||
nomina.asignar_pago(fe.nomina.Pago(
|
||||
forma = fe.nomina.FormaPago(code='1'),
|
||||
metodo = fe.nomina.MetodoPago(code='1')
|
||||
))
|
||||
|
Loading…
Reference in New Issue
Block a user