se adicionan validaciones de requerimientos
FossilOrigin-Name: b070d78fc4c3ba5d247a54a8cc7e7305ea054ae2ce34eb9a5d9db38802e8c27c
This commit is contained in:
		| @@ -1,3 +1,11 @@ | |||||||
|  | # | ||||||
|  | # Para esta implementacion se usa BDD | ||||||
|  | # ver **test_nomina.py**. | ||||||
|  | # | ||||||
|  | # La idea en general es validar comportamiento desde el XML, | ||||||
|  | # creando las estructuras minimas necesaras. | ||||||
|  |  | ||||||
|  |  | ||||||
| from .. import fe | from .. import fe | ||||||
| from .. import form | from .. import form | ||||||
|  |  | ||||||
| @@ -87,7 +95,7 @@ class DIANNominaIndividual: | |||||||
|  |  | ||||||
|         self.devengados = self.fexml.fragment('./Devengados') |         self.devengados = self.fexml.fragment('./Devengados') | ||||||
|         self.deducciones = self.fexml.fragment('./Deducciones') |         self.deducciones = self.fexml.fragment('./Deducciones') | ||||||
|          |  | ||||||
|     def adicionar_devengado(self, devengado): |     def adicionar_devengado(self, devengado): | ||||||
|         if not isinstance(devengado, Devengado): |         if not isinstance(devengado, Devengado): | ||||||
|             raise ValueError('se espera tipo Devengado') |             raise ValueError('se espera tipo Devengado') | ||||||
| @@ -106,18 +114,36 @@ class DIANNominaIndividual: | |||||||
|         """ |         """ | ||||||
|         errors = [] |         errors = [] | ||||||
|  |  | ||||||
|         def add_error(xpath, msg): |         def check_element(xpath, msg): | ||||||
|             if not self.fexml.exist_element(xpath): |             if not self.fexml.exist_element(xpath): | ||||||
|                 errors.append(DIANNominaIndividualError(msg)) |                 errors.append(DIANNominaIndividualError(msg)) | ||||||
|  |  | ||||||
|         add_error('/fe:NominaIndividual/Devengados/Basico', |         def check_attribute(xpath, key, msg): | ||||||
|                   'se requiere DevengadoBasico') |             err = DIANNominaIndividualError(msg) | ||||||
|  |             elem = self.fexml.get_element(xpath) | ||||||
|  |  | ||||||
|         add_error('/fe:NominaIndividual/Deducciones/Salud', |             if elem is None: | ||||||
|                   'se requiere DeduccionSalud') |                 return errors.append(err) | ||||||
|  |  | ||||||
|         add_error('/fe:NominaIndividual/Deducciones/FondoPension', |             if elem.get(key, None) is None: | ||||||
|                   'se requiere DeduccionFondoPension') |                 return errors.append(err) | ||||||
|  |  | ||||||
|  |         check_attribute('/fe:NominaIndividual/Periodo', 'FechaIngreso', 'se requiere Periodo') | ||||||
|  |          | ||||||
|  |         check_element( | ||||||
|  |             '/fe:NominaIndividual/Devengados/Basico', | ||||||
|  |             'se requiere DevengadoBasico' | ||||||
|  |         ) | ||||||
|  |          | ||||||
|  |         check_element( | ||||||
|  |             '/fe:NominaIndividual/Deducciones/Salud', | ||||||
|  |             'se requiere DeduccionSalud' | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         check_element( | ||||||
|  |             '/fe:NominaIndividual/Deducciones/FondoPension', | ||||||
|  |             'se requiere DeduccionFondoPension' | ||||||
|  |         ) | ||||||
|  |  | ||||||
|         return errors |         return errors | ||||||
|  |  | ||||||
|   | |||||||
| @@ -65,6 +65,7 @@ def test_nomina_obligatorios_segun_anexo_tecnico(): | |||||||
|  |  | ||||||
|     errors = nomina.validate() |     errors = nomina.validate() | ||||||
|  |  | ||||||
|  |     assert_error(errors, 'se requiere Periodo') | ||||||
|     assert_error(errors, 'se requiere DevengadoBasico') |     assert_error(errors, 'se requiere DevengadoBasico') | ||||||
|     assert_error(errors, 'se requiere DeduccionSalud') |     assert_error(errors, 'se requiere DeduccionSalud') | ||||||
|     assert_error(errors, 'se requiere DeduccionFondoPension') |     assert_error(errors, 'se requiere DeduccionFondoPension') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user