se adicionan validaciones de requerimientos

FossilOrigin-Name: b070d78fc4c3ba5d247a54a8cc7e7305ea054ae2ce34eb9a5d9db38802e8c27c
This commit is contained in:
bit4bit 2021-11-05 02:18:30 +00:00
parent 74d98e249d
commit 791d534653
2 changed files with 35 additions and 8 deletions

View File

@ -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
@ -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

View File

@ -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')