From b70fac7872dd6a5bb04e8a41f14a76e65ff0cafb Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sun, 19 Nov 2017 21:26:54 -0600 Subject: [PATCH] Fix - impuestos locales --- source/app/controllers/cfdi_xml.py | 2 ++ source/app/models/main.py | 26 +++++++++++++------------ source/static/js/controller/admin.js | 2 +- source/static/js/controller/invoices.js | 13 +++++++++++++ 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/source/app/controllers/cfdi_xml.py b/source/app/controllers/cfdi_xml.py index 6520c5a..03c2270 100644 --- a/source/app/controllers/cfdi_xml.py +++ b/source/app/controllers/cfdi_xml.py @@ -89,6 +89,8 @@ class CFDI(object): return xml def _validate(self, datos): + print (datos['impuestos']['total_locales_trasladados']) + print (datos['impuestos']['total_locales_retenciones']) if datos['impuestos']['total_locales_trasladados'] or \ datos['impuestos']['total_locales_retenciones']: self._impuestos_locales = True diff --git a/source/app/models/main.py b/source/app/models/main.py index 2c7fb0a..9aee95e 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -2197,8 +2197,6 @@ class Facturas(BaseModel): 'UsoCFDI': invoice.uso_cfdi, } - #~ descuento = 0 - #~ tax_locales = False conceptos = [] rows = FacturasDetalle.select().where(FacturasDetalle.factura==invoice) for row in rows: @@ -2214,7 +2212,6 @@ class Facturas(BaseModel): } if row.descuento: concepto['Descuento'] = FORMAT.format(row.descuento) - #~ descuento += row.descuento taxes = {} traslados = [] @@ -2225,7 +2222,6 @@ class Facturas(BaseModel): continue if impuesto.key == '000': - #~ tax_locales = True continue base = row.importe - row.descuento @@ -2271,19 +2267,21 @@ class Facturas(BaseModel): .where(FacturasImpuestos.factura==invoice)) for tax in taxes: if tax.impuesto.key == '000': + tasa = str(round(tax.impuesto.tasa * 100, 2)) + simporte = FORMAT.format(tax.importe) if tax.impuesto.tipo == 'T': traslado = { 'ImpLocTrasladado': tax.impuesto.name, - 'TasadeTraslado': str(round(tax.impuesto.tasa, 2)), - 'Importe': FORMAT.format(tax.importe), + 'TasadeTraslado': tasa, + 'Importe': simporte, } locales_trasladados.append(traslado) total_locales_trasladados += tax.importe else: retencion = { 'ImpLocRetenido': tax.impuesto.name, - 'TasadeRetencion': str(round(tax.impuesto.tasa, 2)), - 'Importe': FORMAT.format(tax.importe), + 'TasadeRetencion': tasa, + 'Importe': simporte, } locales_retenciones.append(retencion) total_locales_retenciones += tax.importe @@ -2309,10 +2307,14 @@ class Facturas(BaseModel): impuestos['traslados'] = traslados impuestos['retenciones'] = retenciones - impuestos['total_locales_trasladados'] = \ - FORMAT.format(total_locales_trasladados) - impuestos['total_locales_retenciones'] = \ - FORMAT.format(total_locales_retenciones) + impuestos['total_locales_trasladados'] = '' + if total_locales_trasladados: + impuestos['total_locales_trasladados'] = \ + FORMAT.format(total_locales_trasladados) + impuestos['total_locales_retenciones'] = '' + if total_locales_retenciones: + impuestos['total_locales_retenciones'] = \ + FORMAT.format(total_locales_retenciones) impuestos['locales_trasladados'] = locales_trasladados impuestos['locales_retenciones'] = locales_retenciones diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 121eaa4..cfbdc49 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -298,7 +298,7 @@ function get_config_values(opt){ }, success: function(text, data, xhr) { var values = data.json() - showvar(values) + //~ showvar(values) Object.keys(values).forEach(function(key){ $$(key).setValue(values[key]) }) diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index 10ede99..eb742dd 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -280,6 +280,19 @@ function validate_invoice(values){ } } + donativo = $$('chk_cfdi_donativo').getValue() + if(donativo){ + query = table_totals.chain().data() + for(var t of query){ + tax = table_taxes.findOne({'id': t.tax}) + if(tax.tipo != 'E'){ + msg = 'Los donativos deben de ser exentos' + msg_error(msg) + return false + } + } + } + return true }