diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 9637b32..a73090d 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -864,8 +864,17 @@ def get_qr(data): return path -def _comprobante(values, options): - data = CaseInsensitiveDict(values) +def _get_relacionados(doc, version): + node = doc.find('{}CfdiRelacionados'.format(PRE[version])) + if node is None: + return '' + + uuids = ['UUID: {}'.format(n.attrib['UUID']) for n in node.getchildren()] + return '\n'.join(uuids) + + +def _comprobante(doc, options): + data = CaseInsensitiveDict(doc.attrib.copy()) del data['certificado'] data['totalenletras'] = to_letters(float(data['total']), data['moneda']) @@ -884,6 +893,8 @@ def _comprobante(values, options): data['condicionesdepago'] = \ 'Condiciones de pago: {}'.format(data['condicionesdepago']) data['moneda'] = options['moneda'] + data['tiporelacion'] = options.get('tiporelacion', '') + data['relacionados'] = _get_relacionados(doc, data['version']) else: fields = { 'formaDePago': 'Forma de Pago: {}\n', @@ -1052,7 +1063,7 @@ def _timbre(doc, version, values): def get_data_from_xml(invoice, values): data = {'cancelada': invoice.cancelada} doc = parse_xml(invoice.xml) - data['comprobante'] = _comprobante(doc.attrib.copy(), values) + data['comprobante'] = _comprobante(doc, values) version = data['comprobante']['version'] data['emisor'] = _emisor(doc, version, values) data['receptor'] = _receptor(doc, version, values) diff --git a/source/app/models/main.py b/source/app/models/main.py index c37721a..2a353a1 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -1309,6 +1309,12 @@ class Facturas(BaseModel): obj = SATMonedas.get(SATMonedas.key==invoice.moneda) values['moneda'] = str(obj) + if invoice.tipo_relacion: + obj = SATTipoRelacion.get(SATTipoRelacion.key==invoice.tipo_relacion) + values['tiporelacion'] = str(obj) + + print ('\nTR', invoice.tipo_relacion) + return values @classmethod