From 4a0fed16305c681bb1d9bb7ef2d2ea2603084f78 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 4 Jan 2018 17:12:22 -0600 Subject: [PATCH 1/3] Fix - Validar impuestos incorrectos --- source/app/controllers/util.py | 2 ++ source/app/models/main.py | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 5ad942f..4ea557c 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -2317,6 +2317,8 @@ class ImportFacturaLibre(object): nombre = 'COMERCIALIZADORA PECOLLA SA DE CV' elif rfc == 'SMA850101TQ4': nombre = 'SECRETARIA DE MARINA ARMADA DE MEXICO DRAGA BAHIA CHAMELA ADR-05' + elif rfc == 'GTR0610314Z0': + nombre = 'GRUPO TORQUE SA DE CV' tipo_persona = 1 if rfc == 'XEXX010101000': diff --git a/source/app/models/main.py b/source/app/models/main.py index b743ffe..f183076 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -5085,6 +5085,8 @@ def _importar_facturas(rows): detalles = row.pop('detalles') impuestos = row.pop('impuestos') cliente = row.pop('cliente') + if cliente['rfc'] == 'GTR0610314Z0': + cliente['slug'] = 'grupo_torque_sa_de_cv' row['cliente'] = Socios.get(**cliente) with database_proxy.atomic() as txn: if _existe_factura(row): @@ -5472,14 +5474,18 @@ def _importar_productos(archivo): taxes = [SATImpuestos.select().where(SATImpuestos.id==6)] else: taxes = [] - for i in range(0, len(impuestos), 4): - w = { - 'key': impuestos[i], - 'name': impuestos[i+1], - 'tipo': impuestos[i+2], - 'tasa': float(impuestos[i+3]), - } - taxes.append(SATImpuestos.get_o_crea(w)) + try: + for i in range(0, len(impuestos), 4): + w = { + 'key': impuestos[i], + 'name': impuestos[i+1], + 'tipo': impuestos[i+2], + 'tasa': float(impuestos[i+3]), + } + taxes.append(SATImpuestos.get_o_crea(w)) + except IndexError: + print (data) + continue with database_proxy.transaction(): try: From ca9fe39f5e041958c95ef5d0135e2a701c934328 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 4 Jan 2018 21:20:14 -0600 Subject: [PATCH 2/3] Fix - al importar producto exento --- source/app/models/main.py | 6 +++++- source/app/settings.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/source/app/models/main.py b/source/app/models/main.py index f183076..104d42d 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -5159,10 +5159,14 @@ def _get_id_unidad(unidad): def _get_impuestos(impuestos): lines = '|' for impuesto in impuestos: + # ~ print (dict(impuesto)) if impuesto['tasa'] == '-2/3': tasa = str(round(2/3, 6)) else: - tasa = str(round(float(impuesto['tasa']) / 100.0, 6)) + if impuesto['tasa'] == 'EXENTO': + tasa = '0.00' + else: + tasa = str(round(float(impuesto['tasa']) / 100.0, 6)) info = ( IMPUESTOS.get(impuesto['nombre']), diff --git a/source/app/settings.py b/source/app/settings.py index 37d027f..8c4d106 100644 --- a/source/app/settings.py +++ b/source/app/settings.py @@ -109,6 +109,7 @@ IMPUESTOS = { 'ISR': '001', 'IVA': '002', 'IEPS': '003', + 'EXENTO': '000', 'ISH': '000', 'INSPECCION DE OBRA': '000', 'ICIC': '000', From d88caeb8c6f43b99e835b12aaf865305faf6ccef Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 4 Jan 2018 21:29:40 -0600 Subject: [PATCH 3/3] Fix - Pasar notas de ticket a factura --- source/app/models/main.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/app/models/main.py b/source/app/models/main.py index 104d42d..24ea30e 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -4099,6 +4099,11 @@ class Tickets(BaseModel): else: return user.sucursal.serie_tickets or default_serie + @classmethod + def get_notes(cls, tickets): + rows = Tickets.select(Tickets.notas).where(Tickets.id.in_(tickets)) + return '\n'.join([r.notas for r in rows]) + @classmethod def add(cls, values, user): productos = util.loads(values.pop('productos')) @@ -4153,6 +4158,7 @@ class Tickets(BaseModel): totals_tax = {} total_trasladados = None total_retenciones = None + notes = Tickets.get_notes(tickets) details = TicketsDetalle.select().where(TicketsDetalle.ticket.in_(tickets)) @@ -4226,6 +4232,7 @@ class Tickets(BaseModel): 'total_mn': total_mn, 'total_trasladados': total_trasladados, 'total_retenciones': total_retenciones, + 'notas': notes, } return data @@ -4277,6 +4284,7 @@ class Tickets(BaseModel): obj.total = totals['total'] obj.saldo = totals['total'] obj.total_mn = totals['total_mn'] + obj.notas = totals['notas'] obj.save() cls._cancel_tickets(cls, obj, tickets)