# This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. from datetime import date from trytond.pool import PoolMeta, Pool class Invoice(metaclass=PoolMeta): __name__ = 'account.invoice' def auto_reconcile(self): reconcile_lines = [] Reconciliation = Pool().get('account.move.reconciliation') account_reconcile_id = self.account.id balance = [] for ml in self.payment_lines: if not ml.reconciliation and ml.account.id == account_reconcile_id: reconcile_lines.append(ml) balance.append(ml.debit - ml.credit) for ml in self.move.lines: if ml.account.id == account_reconcile_id: reconcile_lines.append(ml) balance.append(ml.debit - ml.credit) if sum(balance) != 0: return if reconcile_lines: Reconciliation.create([{ 'lines': [('add', reconcile_lines)], 'date': date.today(), }]) @classmethod def post(cls, invoices): super(Invoice, cls).post(invoices) for invoice in invoices: if invoice.type == 'out' and invoice.origin and \ invoice.origin.__class__ == 'hotel.booking': booking = invoice.origin move_line = booking.set_offset_commssion_move() cls.write([invoice], {'payment_lines': [('add', [move_line])]}) # cls.set_advances_from_origin(invoice) # invoice.set_booking_payments() # FIXME: esta creando notas en ceros # for invoice in invoices: def set_booking_payments(self): for line in self.lines: if line.origin and line.origin.__name__ == 'hotel.booking': booking = line.origin for payline in booking.payments: if not payline.invoice and payline.party == self.party: payline.invoice = self.id payline.save() # advances_lines = [] # if self.state == 'paid': # return # # for line in invoice.lines: # if line.origin and line.origin.__name__ == 'hotel.booking': # booking = line.origin # for payline in booking.payments: # if payline.move and payline.party == self.party: # for mline in payline.move.lines: # if mline.account == self.account: # advances_lines.append(mline) # if advances_lines: # invoice.add_payments(set(advances_lines)) @classmethod def set_advances_from_origin(cls, invoice): vouchers = [] for line in invoice.lines: if line.origin and line.origin.__name__ == 'hotel.booking': booking = line.origin if booking.vouchers: for voucher in booking.vouchers: if invoice.party.id == voucher.party.id: vouchers.append(voucher) # FIXME must pass lines of move if vouchers: invoice.create_move_advance(set(vouchers)) class InvoiceLine(metaclass=PoolMeta): __name__ = 'account.invoice.line' @classmethod def _get_origin(cls): return super(InvoiceLine, cls)._get_origin() + [ 'hotel.booking', 'hotel.folio' ]