From 85cd66c9237cb3a0287bcb8f1fcc3ee4b8d4ed12 Mon Sep 17 00:00:00 2001 From: Wilson Gomez Date: Fri, 10 Mar 2023 15:08:45 -0500 Subject: [PATCH] minor fix for print tickect and invoice --- sale.py | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/sale.py b/sale.py index 607585b..6930a5e 100644 --- a/sale.py +++ b/sale.py @@ -208,8 +208,87 @@ class Sale(metaclass=PoolMeta): response_process_pay = process_response(response) if response_process_pay is not None: break - print(response_process_pay) - return get_dict_response_pay(response_process_pay) if response_process_pay else {'status': 'error al procesar pago'} + if response_process_pay: + data_pay = get_dict_response_pay(response_process_pay) + result = { + 'pay': data_pay, + 'status': 'ok', + 'msg': 'Pago exitoso' + } + else: + result = { + 'pay': None, + 'status': 'error', + 'msg': 'error al procesar pago' + } + + return result + + @classmethod + def process_pay_sale(cls, args): + pool = Pool() + Device = pool.get('sale.device') + StatementLine = pool.get('account.statement.line') + Date = pool.get('ir.date') + + payment = args['pay'] + sale_id = args['sale_id'] + + sale, = cls.browse([sale_id]) + if sale.residual_amount == sale.total_amount: + device, = Device.search([ + ('shop', '=', sale.shop.id), + ]) + sale.sale_device = device + + payment_means_code = '48' if payment['tipo_cuenta'] == 'CR' else '49' + journal_id = None + for journal in device.journals: + if journal.payment_means_code == payment_means_code: + journal_id = journal.id + break + + statement_open_id = cls.is_statement_open( + journal_id, sale.sale_device.id) + to_create = { + 'sale': sale_id, + 'date': Date.today(), + 'statement': statement_open_id, + 'amount': sale.total_amount, + 'party': sale.party.id, + 'account': sale.party.account_receivable.id, + 'description': sale.invoice_number or '', + 'number': payment['consecutivo_transaccion'] + } + line, = StatementLine.create([to_create]) + line.create_move() + cls.wizard_generate_invoice([sale]) + qr_code = sale.number + ' ' + str(sale.sale_date) + data_order = cls.get_order2print({'sale_id': sale_id, 'repeat': True}) + data_invoice = cls.get_data({'sale_id': sale_id, 'type_doc': 'invoice'}) + data_invoice['qr_code'] = qr_code + for d in data_order[0].values(): + d['qr_code'] = qr_code + shop = sale.shop + ctx = { + 'company': sale.company.party.name, + 'sale_device': sale.sale_device.name, + 'shop': shop.name, + 'street': shop.address.street, + 'user': "app.user", + 'city': shop.address.city_code.name, + 'zip': "00000", + 'phone': sale.company.party.phone, + 'id_number': sale.company.party.id_number, + 'tax_regime': "NA", + } + + return { + 'status': 'ok', + 'data_order': data_order[0], + 'data_invoice': data_invoice, + 'ctx': ctx, + } @classmethod def dash_get_line(cls, args, ctx):