feat(WIP): Modificacion para emision de Nomina de Ajuste
This commit is contained in:
		| @@ -250,7 +250,7 @@ class InformacionGeneral: | ||||
|                                 # NIE202 | ||||
|                                 # TABLA 5.5.2 | ||||
|                                 # TODO(bit4bit) solo NominaIndividual | ||||
|                                 TipoXML = '102', | ||||
|                                 TipoXML = '103', | ||||
|                                 # NIE024 | ||||
|                                 CUNE = None, | ||||
|                                 # NIE025 | ||||
| @@ -313,11 +313,30 @@ class DIANNominaXML: | ||||
|         self.informacion_general_version = None | ||||
|  | ||||
|         self.tag_document = tag_document | ||||
|         self.fexml = fe.FeXML(tag_document, 'http://www.dian.gov.co/contratos/facturaelectronica/v1') | ||||
|         self.fexml = fe.FeXML(tag_document, "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste") | ||||
|  | ||||
|         if schemaLocation is not None: | ||||
|             self.fexml.root.set("SchemaLocation", "")             | ||||
|             self.fexml.root.set( | ||||
|                 "SchemaLocation", | ||||
|                 "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste NominaIndividualDeAjusteElectronicaXSD.xsd" | ||||
|             ) | ||||
|             self.fexml.root.set("change", schemaLocation) | ||||
|         else: | ||||
|             schemaLocation = "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste NominaIndividualDeAjusteElectronicaXSD.xsd" | ||||
|             self.fexml.root.set( | ||||
|                 "SchemaLocation", "") | ||||
|             self.fexml.root.set( | ||||
|                 "change", schemaLocation) | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|         # self.fexml.root.set( | ||||
|         #    "SchemaLocation", | ||||
|         #    "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste NominaIndividualDeAjusteElectronicaXSD.xsd" | ||||
|         #) | ||||
|         # self.fexml.root.set("change", schemaLocation) | ||||
|  | ||||
|  | ||||
|         # layout, la dian requiere que los elementos | ||||
|         # esten ordenados segun el anexo tecnico | ||||
| @@ -538,14 +557,11 @@ class DIANNominaXML: | ||||
| class DIANNominaIndividual(DIANNominaXML): | ||||
|  | ||||
|     def __init__(self): | ||||
|         schema = "dian:gov:co:facturaelectronica:NominaIndividual NominaIndividualElectronicaXSD.xsd" | ||||
|  | ||||
|         super().__init__('NominaIndividual', schemaLocation=schema) | ||||
|         self.informacion_general_version = 'V1.0: Documento Soporte de Pago de Nómina Electrónica' | ||||
|  | ||||
| # TODO(bit4bit) confirmar que no tienen en comun con NominaIndividual | ||||
| class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|  | ||||
|     class Reemplazar(DIANNominaXML): | ||||
|         @dataclass | ||||
|         class Predecesor: | ||||
| @@ -554,6 +570,7 @@ class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|             fecha_generacion: str | ||||
|  | ||||
|             def apply(self, fragment): | ||||
|                 fragment.set_element('./TipoNota', '1') | ||||
|                 fragment.set_element('./Reemplazar/ReemplazandoPredecesor', None, | ||||
|                                      # NIAE090 | ||||
|                                      NumeroPred = self.numero, | ||||
| @@ -566,7 +583,7 @@ class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|         def __init__(self): | ||||
|             super().__init__('NominaIndividualDeAjuste', './Reemplazar') | ||||
|             # NIAE214 | ||||
|             self.root_fragment.set_element('./TipoNota', '1') | ||||
|             # self.root_fragment.set_element('./TipoNota', '1') | ||||
|  | ||||
|         def asignar_predecesor(self, predecesor): | ||||
|             if not isinstance(predecesor, self.Predecesor): | ||||
| @@ -583,6 +600,7 @@ class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|             fecha_generacion: str | ||||
|  | ||||
|             def apply(self, fragment): | ||||
|                 fragment.set_element('./TipoNota', '2') | ||||
|                 fragment.set_element('./Eliminar/EliminandoPredecesor', None, | ||||
|                                      # NIAE090 | ||||
|                                      NumeroPred = self.numero, | ||||
| @@ -593,16 +611,17 @@ class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|                                      ) | ||||
|  | ||||
|         def __init__(self): | ||||
|             schema = "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste NominaIndividualDeAjusteElectronicaXSD.xsd" | ||||
|             super().__init__('NominaIndividualDeAjuste', './Eliminar') | ||||
|  | ||||
|             self.root_fragment.set_element('./TipoNota', '2') | ||||
|             # self.root_fragment.set_element('./TipoNota', '2') | ||||
|             self.informacion_general_version = "V1.0: Nota de Ajuste de Documento Soporte de Pago de Nómina Electrónica" | ||||
|  | ||||
|         def asignar_predecesor(self, predecesor): | ||||
|             if not isinstance(predecesor, self.Predecesor): | ||||
|                 raise ValueError("se espera tipo Eliminar.Predecesor") | ||||
|             predecesor.apply(self.fexml) | ||||
|              | ||||
|     def __init__(self): | ||||
|         super().__init__('NominaIndividualDeAjuste') | ||||
|  | ||||
|     def __init__(self): | ||||
|         schema = "dian:gov:co:facturaelectronica:NominaIndividualDeAjuste NominaIndividualDeAjusteElectronicaXSD.xsd" | ||||
|         super().__init__('NominaIndividualDeAjuste') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user