se adicionan pruebas para Ajuste Reemplazar y Eliminar
FossilOrigin-Name: 750ed4cb15a88abfe296f1d9b2e4013df95b76bf1dfd4ecca22e07b3c12aacf2
This commit is contained in:
		| @@ -192,9 +192,12 @@ class DIANNominaXML: | ||||
|         # esten ordenados segun el anexo tecnico | ||||
|         self.fexml.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent') | ||||
|         self.fexml.placeholder_for('./TipoNota', optional=True) | ||||
|  | ||||
|         self.root_fragment = self.fexml | ||||
|         if xpath_ajuste is not None: | ||||
|             self.root_fragment = self.fexml.fragment(xpath_ajuste) | ||||
|         self.root_fragment.placeholder_for('./ReemplazandoPredecesor', optional=True) | ||||
|         self.root_fragment.placeholder_for('./EliminandoPredecesor', optional=True) | ||||
|         self.root_fragment.placeholder_for('./Novedad', optional=True) | ||||
|         self.root_fragment.placeholder_for('./Periodo') | ||||
|         self.root_fragment.placeholder_for('./NumeroSecuenciaXML') | ||||
| @@ -385,16 +388,60 @@ class DIANNominaIndividual(DIANNominaXML): | ||||
| class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||
|  | ||||
|     class Reemplazar(DIANNominaXML): | ||||
|         @dataclass | ||||
|         class Predecesor: | ||||
|             numero: str | ||||
|             cune: str | ||||
|             fecha_generacion: str | ||||
|  | ||||
|             def apply(self, fragment): | ||||
|                 fragment.set_element('./Reemplazar/ReemplazandoPredecesor', None, | ||||
|                                      # NIAE090 | ||||
|                                      NumeroPred = self.numero, | ||||
|                                      # NIAE191 | ||||
|                                      CUNEPred = self.cune, | ||||
|                                      # NIAE192 | ||||
|                                      FechaGenPred = self.fecha_generacion | ||||
|                                      ) | ||||
|  | ||||
|         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): | ||||
|                 raise ValueError("se espera tipo Predecesor") | ||||
|             predecesor.apply(self.fexml) | ||||
|  | ||||
|          | ||||
|     class Eliminar(DIANNominaXML): | ||||
|          | ||||
|         @dataclass | ||||
|         class Predecesor: | ||||
|             numero: str | ||||
|             cune: str | ||||
|             fecha_generacion: str | ||||
|  | ||||
|             def apply(self, fragment): | ||||
|                 fragment.set_element('./Eliminar/EliminandoPredecesor', None, | ||||
|                                      # NIAE090 | ||||
|                                      NumeroPred = self.numero, | ||||
|                                      # NIAE191 | ||||
|                                      CUNEPred = self.cune, | ||||
|                                      # NIAE192 | ||||
|                                      FechaGenPred = self.fecha_generacion | ||||
|                                      ) | ||||
|  | ||||
|         def __init__(self): | ||||
|             super().__init__('NominaIndividualDeAjuste', './Eliminar') | ||||
|             # NIAE214 | ||||
|             self.root_fragment.set_element('TipoNota', '2') | ||||
|  | ||||
|             self.root_fragment.set_element('./TipoNota', '2') | ||||
|  | ||||
|         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') | ||||
|   | ||||
| @@ -267,6 +267,51 @@ def test_adicionar_reemplazar_devengado_comprobante_total(): | ||||
|     assert xml.get_element_text('/fe:NominaIndividualDeAjuste/Reemplazar/ComprobanteTotal') == '1000000.00' | ||||
|  | ||||
|  | ||||
| def test_adicionar_reemplazar_asignar_predecesor(): | ||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Reemplazar() | ||||
|  | ||||
|     nomina.asignar_predecesor(fe.nomina.DIANNominaIndividualDeAjuste.Reemplazar.Predecesor( | ||||
|         numero = '123456', | ||||
|         cune = 'ABC123456', | ||||
|         fecha_generacion = '2021-11-16' | ||||
|     )) | ||||
|  | ||||
|     xml = nomina.toFachoXML() | ||||
|     print(xml.tostring()) | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Reemplazar/ReemplazandoPredecesor/@NumeroPred') == '123456' | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Reemplazar/ReemplazandoPredecesor/@CUNEPred') == 'ABC123456' | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Reemplazar/ReemplazandoPredecesor/@FechaGenPred') == '2021-11-16' | ||||
|  | ||||
|  | ||||
| def test_adicionar_reemplazar_eliminar_predecesor_opcional(): | ||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Reemplazar() | ||||
|  | ||||
|     nomina.asignar_predecesor(fe.nomina.DIANNominaIndividualDeAjuste.Reemplazar.Predecesor( | ||||
|         numero = '123456', | ||||
|         cune = 'ABC123456', | ||||
|         fecha_generacion = '2021-11-16' | ||||
|     )) | ||||
|  | ||||
|     xml = nomina.toFachoXML() | ||||
|     print(xml.tostring()) | ||||
|  | ||||
|     assert xml.get_element('/fe:NominaIndividualDeAjuste/Reemplazar/ReemplazandoPredecesor') is not None | ||||
|     assert xml.get_element('/fe:NominaIndividualDeAjuste/Eliminar/EliminandoPredecesor') is None | ||||
|  | ||||
| def test_adicionar_eliminar_reemplazar_predecesor_opcional(): | ||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Eliminar() | ||||
|  | ||||
|     nomina.asignar_predecesor(fe.nomina.DIANNominaIndividualDeAjuste.Eliminar.Predecesor( | ||||
|         numero = '123456', | ||||
|         cune = 'ABC123456', | ||||
|         fecha_generacion = '2021-11-16' | ||||
|     )) | ||||
|  | ||||
|     xml = nomina.toFachoXML() | ||||
|     print(xml.tostring()) | ||||
|     assert xml.get_element('/fe:NominaIndividualDeAjuste/Eliminar/EliminandoPredecesor') is not None | ||||
|     assert xml.get_element('/fe:NominaIndividualDeAjuste/Reemplazar/ReemplazandoPredecesor') is None | ||||
|  | ||||
| def test_adicionar_eliminar_devengado_comprobante_total(): | ||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Eliminar() | ||||
|  | ||||
| @@ -283,3 +328,18 @@ def test_adicionar_eliminar_devengado_comprobante_total(): | ||||
|     xml = nomina.toFachoXML() | ||||
|  | ||||
|     assert xml.get_element_text('/fe:NominaIndividualDeAjuste/Eliminar/ComprobanteTotal') == '1000000.00' | ||||
|  | ||||
| def test_adicionar_eliminar_asignar_predecesor(): | ||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Eliminar() | ||||
|  | ||||
|     nomina.asignar_predecesor(fe.nomina.DIANNominaIndividualDeAjuste.Eliminar.Predecesor( | ||||
|         numero = '123456', | ||||
|         cune = 'ABC123456', | ||||
|         fecha_generacion = '2021-11-16' | ||||
|     )) | ||||
|  | ||||
|     xml = nomina.toFachoXML() | ||||
|     print(xml.tostring()) | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Eliminar/EliminandoPredecesor/@NumeroPred') == '123456' | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Eliminar/EliminandoPredecesor/@CUNEPred') == 'ABC123456' | ||||
|     assert xml.get_element_text_or_attribute('/fe:NominaIndividualDeAjuste/Eliminar/EliminandoPredecesor/@FechaGenPred') == '2021-11-16' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user