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 |         # esten ordenados segun el anexo tecnico | ||||||
|         self.fexml.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent') |         self.fexml.placeholder_for('./ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent') | ||||||
|         self.fexml.placeholder_for('./TipoNota', optional=True) |         self.fexml.placeholder_for('./TipoNota', optional=True) | ||||||
|  |  | ||||||
|         self.root_fragment = self.fexml |         self.root_fragment = self.fexml | ||||||
|         if xpath_ajuste is not None: |         if xpath_ajuste is not None: | ||||||
|             self.root_fragment = self.fexml.fragment(xpath_ajuste) |             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('./Novedad', optional=True) | ||||||
|         self.root_fragment.placeholder_for('./Periodo') |         self.root_fragment.placeholder_for('./Periodo') | ||||||
|         self.root_fragment.placeholder_for('./NumeroSecuenciaXML') |         self.root_fragment.placeholder_for('./NumeroSecuenciaXML') | ||||||
| @@ -385,16 +388,60 @@ class DIANNominaIndividual(DIANNominaXML): | |||||||
| class DIANNominaIndividualDeAjuste(DIANNominaXML): | class DIANNominaIndividualDeAjuste(DIANNominaXML): | ||||||
|  |  | ||||||
|     class Reemplazar(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): |         def __init__(self): | ||||||
|             super().__init__('NominaIndividualDeAjuste', './Reemplazar') |             super().__init__('NominaIndividualDeAjuste', './Reemplazar') | ||||||
|             # NIAE214 |             # 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): |     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): |         def __init__(self): | ||||||
|             super().__init__('NominaIndividualDeAjuste', './Eliminar') |             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): |     def __init__(self): | ||||||
|         super().__init__('NominaIndividualDeAjuste') |         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' |     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(): | def test_adicionar_eliminar_devengado_comprobante_total(): | ||||||
|     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Eliminar() |     nomina = fe.nomina.DIANNominaIndividualDeAjuste.Eliminar() | ||||||
|  |  | ||||||
| @@ -283,3 +328,18 @@ def test_adicionar_eliminar_devengado_comprobante_total(): | |||||||
|     xml = nomina.toFachoXML() |     xml = nomina.toFachoXML() | ||||||
|  |  | ||||||
|     assert xml.get_element_text('/fe:NominaIndividualDeAjuste/Eliminar/ComprobanteTotal') == '1000000.00' |     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