PDF for pays complement
This commit is contained in:
parent
210f50a7d7
commit
f14c1f74d8
|
@ -82,6 +82,7 @@ from settings import (
|
|||
EXT,
|
||||
MXN,
|
||||
PATHS,
|
||||
PRE_DEFAULT,
|
||||
)
|
||||
|
||||
|
||||
|
@ -2111,25 +2112,53 @@ def _nomina(doc, data, values, version_cfdi):
|
|||
return info
|
||||
|
||||
|
||||
def _get_info_pays_2(node):
|
||||
pre_pays = PRE_DEFAULT['PAGOS']['PRE']
|
||||
data = CaseInsensitiveDict(node.attrib.copy())
|
||||
|
||||
path = f"{pre_pays}Totales"
|
||||
totales = node.find(path)
|
||||
data.update(CaseInsensitiveDict(totales.attrib.copy()))
|
||||
|
||||
path = f"{pre_pays}Pago"
|
||||
node_pay = node.find(path)
|
||||
data.update(CaseInsensitiveDict(node_pay.attrib.copy()))
|
||||
|
||||
related = []
|
||||
for n in node_pay:
|
||||
attr = CaseInsensitiveDict(n.attrib.copy())
|
||||
if attr:
|
||||
attr['metododepagodr'] = ''
|
||||
related.append(attr)
|
||||
|
||||
data['related'] = related
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def _cfdipays(doc, data, version):
|
||||
#todo: Obtener versión de complemento
|
||||
if version == '4.0':
|
||||
node = doc.find(f"{PRE[version]}Complemento/{PRE['pagos20']}Pagos")
|
||||
pre_pays = PRE_DEFAULT['PAGOS']['PRE']
|
||||
path = f"{PRE[version]}Complemento/{pre_pays}Pagos"
|
||||
node = doc.find(path)
|
||||
else:
|
||||
node = doc.find('{}Complemento/{}Pagos'.format(PRE[version], PRE['pagos']))
|
||||
|
||||
if node is None:
|
||||
return {}
|
||||
|
||||
info = CaseInsensitiveDict(node.attrib.copy())
|
||||
if version == '4.0':
|
||||
info = _get_info_pays_2(node)
|
||||
else:
|
||||
info = CaseInsensitiveDict(node.attrib.copy())
|
||||
related = []
|
||||
for n1 in node:
|
||||
info.update(CaseInsensitiveDict(n1.attrib.copy()))
|
||||
for n2 in n1:
|
||||
related.append(CaseInsensitiveDict(n2.attrib.copy()))
|
||||
|
||||
related = []
|
||||
for n1 in node:
|
||||
info.update(CaseInsensitiveDict(n1.attrib.copy()))
|
||||
for n2 in n1:
|
||||
related.append(CaseInsensitiveDict(n2.attrib.copy()))
|
||||
|
||||
info['related'] = related
|
||||
info['related'] = related
|
||||
|
||||
data['comprobante']['totalenletras'] = to_letters(
|
||||
float(info['monto']), info['monedap'])
|
||||
|
|
|
@ -32,9 +32,9 @@ if __name__ == '__main__':
|
|||
|
||||
from controllers import util
|
||||
|
||||
from settings import log, COMPANIES, VERSION, PATH_CP, PRE, CURRENT_CFDI, \
|
||||
from settings import log, COMPANIES, VERSION, PATH_CP, PRE, \
|
||||
INIT_VALUES, DEFAULT_PASSWORD, DECIMALES, IMPUESTOS, DEFAULT_SAT_PRODUCTO, \
|
||||
CANCEL_SIGNATURE, PUBLIC, DEFAULT_SERIE_TICKET, CURRENT_CFDI_NOMINA, \
|
||||
CANCEL_SIGNATURE, PUBLIC, DEFAULT_SERIE_TICKET, \
|
||||
DEFAULT_SAT_NOMINA, DECIMALES_TAX, TITLE_APP, MV, DECIMALES_PRECIOS, \
|
||||
DEFAULT_CFDIPAY, CURRENCY_MN
|
||||
|
||||
|
@ -50,6 +50,7 @@ from settings import (
|
|||
IS_MV,
|
||||
MXN,
|
||||
PATHS,
|
||||
PRE_DEFAULT,
|
||||
URL,
|
||||
VALUES_PDF,
|
||||
VERSION as VERSION_EMPRESA_LIBRE,
|
||||
|
@ -4441,7 +4442,7 @@ class RangosPrecios(BaseModel):
|
|||
|
||||
class Facturas(BaseModel):
|
||||
cliente = ForeignKeyField(Socios)
|
||||
version = TextField(default=CURRENT_CFDI)
|
||||
version = TextField(default=PRE_DEFAULT['CFDI']['VERSION'])
|
||||
serie = TextField(default='')
|
||||
folio = BigIntegerField(default=0)
|
||||
fecha = DateTimeField(default=util.now, formats=['%Y-%m-%d %H:%M:%S'])
|
||||
|
@ -6575,7 +6576,7 @@ class PreFacturas(BaseModel):
|
|||
}
|
||||
|
||||
data['comprobante'] = obj
|
||||
data['comprobante']['version'] = CURRENT_CFDI
|
||||
data['comprobante']['version'] = PRE_DEFAULT['CFDI']['VERSION']
|
||||
data['comprobante']['folio'] = str(data['comprobante']['folio'])
|
||||
data['comprobante']['seriefolio'] = '{}-{}'.format(
|
||||
data['comprobante']['serie'], data['comprobante']['folio'])
|
||||
|
@ -9034,7 +9035,7 @@ class Empleados(BaseModel):
|
|||
|
||||
class CfdiNomina(BaseModel):
|
||||
empleado = ForeignKeyField(Empleados)
|
||||
version = TextField(default=CURRENT_CFDI)
|
||||
version = TextField(default=PRE_DEFAULT['CFDI']['VERSION'])
|
||||
serie = TextField(default='N')
|
||||
folio = IntegerField(default=0)
|
||||
fecha = DateTimeField(default=util.now, formats=['%Y-%m-%d %H:%M:%S'])
|
||||
|
@ -9075,7 +9076,7 @@ class CfdiNomina(BaseModel):
|
|||
acuse = TextField(default='')
|
||||
tipo_relacion = TextField(default='')
|
||||
error = TextField(default='')
|
||||
version_nomina = TextField(default=CURRENT_CFDI_NOMINA)
|
||||
version_nomina = TextField(default=PRE_DEFAULT['NOMINA']['VERSION'])
|
||||
registro_patronal = TextField(default='')
|
||||
rfc_patron_origen = TextField(default='')
|
||||
tipo_nomina = ForeignKeyField(SATTipoNomina)
|
||||
|
|
|
@ -128,6 +128,22 @@ if 'win' in sys.platform:
|
|||
PATH_XMLSEC = os.path.join(PATH_BIN, 'xmlsec.exe')
|
||||
|
||||
|
||||
PRE_DEFAULT = {
|
||||
'CFDI': {'VERSION': '4.0', 'PRE': '{http://www.sat.gob.mx/cfd/4}'},
|
||||
'NOMINA': {'VERSION': '1.2', 'PRE': '{http://www.sat.gob.mx/nomina12}'},
|
||||
'PAGOS': {'VERSION': '2.0', 'PRE': '{http://www.sat.gob.mx/Pagos20}'},
|
||||
'TIBRE': {'VERSION': '1.1', 'PRE': '{http://www.sat.gob.mx/TimbreFiscalDigital}'},
|
||||
}
|
||||
|
||||
pre2 ='{http://www.sat.gob.mx/cfd/2}'
|
||||
pre3 ='{http://www.sat.gob.mx/cfd/3}'
|
||||
PRE_HISTORY = {
|
||||
'CFDI': {'2.0': pre2, '2.2': pre2,
|
||||
'3.0': pre3, '3.2': pre3, '3.3': pre3},
|
||||
'NOMINA': {'1.1': '{http://www.sat.gob.mx/nomina}'},
|
||||
'PAGOS': {'1.0': '{http://www.sat.gob.mx/Pagos}'},
|
||||
}
|
||||
|
||||
PRE = {
|
||||
'2.0': '{http://www.sat.gob.mx/cfd/2}',
|
||||
'2.2': '{http://www.sat.gob.mx/cfd/2}',
|
||||
|
@ -141,14 +157,16 @@ PRE = {
|
|||
'LOCALES': '{http://www.sat.gob.mx/implocal}',
|
||||
'NOMINA': {
|
||||
'1.1': '{http://www.sat.gob.mx/nomina}',
|
||||
'1.2': '{http://www.sat.gob.mx/nomina12}',
|
||||
},
|
||||
'pagos': '{http://www.sat.gob.mx/Pagos}',
|
||||
'pagos20': '{http://www.sat.gob.mx/Pagos20}',
|
||||
'PAGOS': {
|
||||
'1.0': '{http://www.sat.gob.mx/Pagos}',
|
||||
}
|
||||
}
|
||||
|
||||
CURRENT_CFDI = '3.3'
|
||||
CURRENT_CFDI_NOMINA = '1.2'
|
||||
# To delete
|
||||
# ~ CURRENT_CFDI = '4.0'
|
||||
# ~ CURRENT_CFDI_NOMINA = '1.2'
|
||||
|
||||
DECIMALES = 2
|
||||
DECIMALES_TAX = 4
|
||||
DECIMALES_PRECIOS = 4
|
||||
|
|
Loading…
Reference in New Issue