check balance early; cierre caja always debe

This commit is contained in:
francesc 2016-06-19 08:54:36 +02:00
parent 1d14d231d4
commit 0fb696365a
1 changed files with 28 additions and 12 deletions

View File

@ -1,3 +1,4 @@
import logging
from retrofix.exception import RetrofixException from retrofix.exception import RetrofixException
from retrofix.fields import Char, Date, Field, Integer from retrofix.fields import Char, Date, Field, Integer
from retrofix.record import Record from retrofix.record import Record
@ -12,6 +13,7 @@ from trytond.transaction import Transaction
__all__ = ['AccountImportContaplus', 'AccountImportContaplusStart', __all__ = ['AccountImportContaplus', 'AccountImportContaplusStart',
'ImportRecord', 'Move', 'Invoice'] 'ImportRecord', 'Move', 'Invoice']
logger = logging.getLogger(__name__)
class DecimalField(Field): class DecimalField(Field):
# decimals in files are separated by period '.' # decimals in files are separated by period '.'
@ -88,7 +90,7 @@ def not_balance(move):
lambda t_cd, line: lambda t_cd, line:
add_tupla2(t_cd, (line.credit, line.debit)), add_tupla2(t_cd, (line.credit, line.debit)),
move.lines, move.lines,
[0,0]) [0, 0])
return credit_debit[0] != credit_debit[1] return credit_debit[0] != credit_debit[1]
@ -116,7 +118,7 @@ class Move:
@classmethod @classmethod
def _get_origin(cls): def _get_origin(cls):
'Return list of Model names for origin Reference' 'Return list of Model names for origin Reference'
return super(Move, cls)._get_origin() + ['import.record'] return super(Move, cls)._get_origin() + ['import.record']
class Invoice: class Invoice:
@ -126,7 +128,7 @@ class Invoice:
@classmethod @classmethod
def _get_origin(cls): def _get_origin(cls):
'Return list of Model names for origin Reference' 'Return list of Model names for origin Reference'
return super(Invoice, cls)._get_origin() + ['import.record'] return super(Invoice, cls)._get_origin() + ['import.record']
class ImportRecord(ModelSQL, ModelView): class ImportRecord(ModelSQL, ModelView):
@ -258,13 +260,14 @@ class AccountImportContaplus(Wizard):
# swap debe haber in some cases due to error. # swap debe haber in some cases due to error.
# in caja the concepto/clave determines if it is debe or haber. # in caja the concepto/clave determines if it is debe or haber.
if iline.concepto.strip() in ('', if iline.concepto.strip() in ('',
'TALON RTTE', 'TALON RTTE',
'CLAVE MANUAL', 'CLAVE MANUAL',
'PAGO ITV', 'PAGO ITV',
'DESEMBOLSO', 'DESEMBOLSO',
'TRASP. A BAN', 'TRASP. A BAN',
'TRASP. A BANC', 'TRASP. A BANC',
'ANTICP-VALES'): 'ANTICP-VALES',
'cierre de caja'):
line.debit = iline.euro_haber + iline.euro_debe line.debit = iline.euro_haber + iline.euro_debe
line.credit = 0 line.credit = 0
else: else:
@ -287,6 +290,11 @@ class AccountImportContaplus(Wizard):
def check_totals(self, invoices, totals): def check_totals(self, invoices, totals):
for invoice in invoices.values(): for invoice in invoices.values():
if not invoice.total_amount == totals[invoice.number]: if not invoice.total_amount == totals[invoice.number]:
logger.info('unmatch total')
logger.info(invoice.total_amount)
logger.info(totals[invoice.number])
for line in invoice.lines:
logger.info(line.unit_price)
self.raise_user_error('unmatch total invoice', self.raise_user_error('unmatch total invoice',
{'invoice': invoice.number}) {'invoice': invoice.number})
return True return True
@ -300,6 +308,7 @@ class AccountImportContaplus(Wizard):
def import_invoices(self, company, imp_record): def import_invoices(self, company, imp_record):
logger.info("start import invoice")
pool = Pool() pool = Pool()
Invoice = pool.get('account.invoice') Invoice = pool.get('account.invoice')
Line = pool.get('account.invoice.line') Line = pool.get('account.invoice.line')
@ -383,12 +392,19 @@ class AccountImportContaplus(Wizard):
self.add_tax_invoice(invoice, vat) self.add_tax_invoice(invoice, vat)
if to_create: if to_create:
logger.info("save")
Invoice.save(to_create.values()) Invoice.save(to_create.values())
logger.info("update_taxes")
Invoice.update_taxes(to_create.values()) Invoice.update_taxes(to_create.values())
logger.info("check total")
self.check_totals(to_create, totals)
logger.info("post")
# for inv in to_create.values():
# print("posting")
# print(inv.number)
# Invoice.post([inv])
Invoice.post(to_create.values()) Invoice.post(to_create.values())
self.check_totals(to_create, totals)
return to_create return to_create
def create_import_record(self): def create_import_record(self):