def set_document_receipt(cls, receipts): def doc_exists(id_, docs): for dc in docs: if dc.id == id_: return True Document = Pool().get('cash_bank.document') lasts = {} for receipt in receipts: for doc in receipt.documents: if doc.last_receipt != receipt: doc.last_receipt = receipt doc.save() if receipt.transfer and \ receipt.transfer.state in ['confirmed', 'post']: pass else: if receipt.rec_name not in lasts: lasts[receipt.rec_name] = [] lasts[receipt.rec_name].append(doc) # Verify if any document have been deleted from list # so last_receipt must be updated documents = Document.search([ ('last_receipt', '=', receipt.id)]) for doc in documents: if not doc_exists(doc.id, receipt.documents): doc.set_previous_receipt() doc.save() for key, value in lasts.items(): write_log('Asigned to Receipt: ' + key, value)
def cancel(cls, transfers): Receipt = Pool().get('cash_bank.receipt') rcps = [] for transfer in transfers: rcps += [transfer.receipt_from, transfer.receipt_to] Receipt.cancel(rcps) write_log('Cancelled', transfers)
def post(cls, transfers): Receipt = Pool().get('cash_bank.receipt') rcps = [] for transfer in transfers: rcps += [transfer.receipt_from, transfer.receipt_to] Receipt.post(rcps) write_log('Posted', transfers)
def set_previous_receipt(self): Docs = Pool().get('cash_bank.document-cash_bank.receipt') cur_receipt = None if hasattr(self, 'last_receipt'): cur_receipt = self.last_receipt domain = [ ('document', '=', self.id) ] if cur_receipt: domain.append( ('receipt', '!=', cur_receipt.id) ) docs = Docs.search(domain, order=[('id', 'DESC')]) lg = 'Returned to Receipt: ' if not docs: self.last_receipt = None lg += 'None' else: self.last_receipt = docs[0].receipt lg += self.last_receipt.rec_name write_log(lg, [self])
def cancel(cls, closes): pool = Pool() Sale = pool.get('sale.sale') sales = [] for close in closes: sales += close.sales Sale.cancel(sales) write_log('Cancelled', closes, 'cancel')
def draft(cls, closes): pool = Pool() Sale = pool.get('sale.sale') sales = [] for close in closes: sales += close.sales Sale.draft(sales) write_log('Draft', closes)
def delete(cls, closes): for close in closes: if close.state not in ['draft']: write_log('Delete attempt', [close]) raise UserError( gettext('cashier.close_delete_draft', close=close.rec_name)) super(Close, cls).delete(closes)
def post(cls, receipts): Move = Pool().get('account.move') for receipt in receipts: for line in receipt.lines: line.reconcile() Move.post([r.move for r in receipts]) write_log('log_action.msg_posted', receipts)
def confirm(cls, transfers): for transfer in transfers: if transfer.total <= 0: raise UserError(gettext('cash_bank.msg_no_total_cash_bank')) transfer.create_receipts() cls.set_transfer([transfer.receipt_from, transfer.receipt_to], transfer) cls.save(transfers) # Update receipts values write_log('Confirmed', transfers)
def draft(cls, convertions): Document = Pool().get('cash_bank.document') docs = [] for convertion in convertions: for doc in convertion.documents: doc.convertion = None docs.append(doc) write_log('Convertion ' + convertion.rec_name + ' to Draft.', [doc]) Document.save(docs) write_log('Draft', convertions)
def delete(cls, reconciliations): for reconciliation in reconciliations: if reconciliation.state not in ['draft']: write_log('log_action.msg_deletion_attempt', [reconciliation]) raise UserError( gettext( 'cash_bank_reconciliation.' 'reconciliation_delete_draft', reconciliation=reconciliation.rec_name, state='Draft')) super(Reconciliation, cls).delete(reconciliations)
def confirm(cls, convertions): Document = Pool().get('cash_bank.document') docs = [] for convertion in convertions: for doc in convertion.documents: doc.convertion = convertion write_log('Convertion ' + convertion.rec_name + ' confirmed.', [doc]) docs.append(doc) Document.save(docs) cls.set_number(convertions) write_log('Confirmed', convertions)
def draft(cls, transfers): Receipt = Pool().get('cash_bank.receipt') for transfer in transfers: receipt_from = transfer.receipt_from receipt_to = transfer.receipt_to transfer.receipt_from = None transfer.receipt_to = None Receipt.draft([receipt_from, receipt_to]) Receipt.delete([receipt_to]) Receipt.delete([receipt_from]) cls.save(transfers) write_log('Draft', transfers)
def cancel(cls, reconciliations): pool = Pool() Receipt = pool.get('cash_bank.receipt') rps = [] for recon in reconciliations: recon.verify_is_last() recon.write_to_move_line(True) for line in recon.lines: if line.check and line.receipt: line.receipt.cash_bank_reconciliation = None rps.append(line.receipt) Receipt.save(rps) write_log('log_action.msg_cancelled', reconciliations)
def confirm(cls, receipts): for receipt in receipts: if not receipt.lines: raise UserError( gettext('cash_bank.msg_receipt_no_lines', receipt=receipt.rec_name )) if receipt.diff != 0: raise UserError( gettext('cash_bank.msg_diff_total_lines_cash_bank' )) if receipt.total < 0: raise UserError( gettext('cash_bank.msg_total_less_zero' )) if receipt.cash < 0: raise UserError( gettext('cash_bank.msg_cash_less_zero' )) for doc in receipt.documents: if doc.amount <= 0: raise UserError( gettext('cash_bank.msg_document_less_equal_zero' )) if receipt.type.party_required and not receipt.party: raise UserError( gettext('cash_bank.msg_party_required_cash_bank' )) move, period = receipt._get_move() move.save() receipt_line_move = receipt._get_move_line(period) receipt_line_move.move = move receipt_line_move.save() move_lines = [receipt_line_move] for line in receipt.lines: line.validate_line() move_line = line.get_move_line(period) move_line.move = move move_line.save() line.line_move = move_line line.save() move_lines.append(move_line) move.lines = move_lines move.save() receipt.move = move receipt.line_move = receipt_line_move receipt.save() cls.set_number(receipts) write_log('log_action.msg_confirmed', receipts)
def confirm(cls, reconciliations): pool = Pool() Receipt = pool.get('cash_bank.receipt') receipts = [] for recon in reconciliations: recon.verify() recon.write_to_move_line() for line in recon.lines: if line.check and line.receipt: line.receipt.cash_bank_reconciliation = line receipts.append(line.receipt) Receipt.save(receipts) cls.set_number(reconciliations) write_log('log_action.msg_confirmed', reconciliations)
def confirm(cls, closes): pool = Pool() Sale = pool.get('sale.sale') sales = [] for close in closes: if not close.sales: raise UserError( gettext( 'cashier.close_no_sales', close=close.rec_name, )) sales += close.sales Sale.quote(sales) cls.set_number(closes) write_log('Confirmed', closes, 'confirm')
def delete(cls, convertions): Document = Pool().get('cash_bank.document') docs = [] for convertion in convertions: if convertion.state != 'draft': raise UserError( gettext('cash_bank.msg_delete_document_cash_bank', doc_name='Convertion', doc_number=convertion.rec_name, state='Draft')) for doc in convertion.documents: doc.convertion = None docs.append(doc) write_log('Convertion ' + convertion.rec_name + ' deleted.', [doc]) Document.save(docs) super(Convertion, cls).delete(convertions)
def delete(cls, receipts): pool = Pool() Attachment = pool.get('ir.attachment') atts = [] for receipt in receipts: if receipt.state not in ['draft']: write_log('log_action.msg_deletion_attempt', [receipt]) raise UserError( gettext('cash_bank.msg_delete_document_cash_bank', doc_name='Receipt', doc_number=receipt.rec_name, state='Draft' )) for doc in receipt.documents: doc.set_previous_receipt() doc.save() for att in receipt.attachments: atts.append(att) Attachment.delete(atts) super(Receipt, cls).delete(receipts)
def draft(cls, reconciliations): write_log('log_action.msg_draft', reconciliations)
def create(cls, vlist): reconciliations = super(Reconciliation, cls).create(vlist) write_log('log_action.msg_created', reconciliations) return reconciliations
def post(cls, closes): pool = Pool() Config = pool.get('cashier.configuration') ConfigCashBank = pool.get('cash_bank.configuration') Sale = pool.get('sale.sale') Receipt = pool.get('cash_bank.receipt') config = Config(1) config_cash_bank = ConfigCashBank(1) receipts = [] ach_receipts = [] for close in closes: Sale.confirm(close.sales) Sale.process(close.sales) cls._sales_to_invoice(close.sales) msg = 'Cashier Close ' + close.rec_name lines = [] for sale in close.sales: invoice = sale.invoices[0] lines.append( cls._get_receipt_line('invoice_customer', msg, invoice.amount_to_pay, invoice.account, invoice.party, invoice)) for cct in close.ccterminals: lines.append( cls._get_receipt_line('move_line', msg + ' - ' + cct.creditcard.type, -cct.amount, cct.ccterminal.cash_bank.account, None, None)) if cct.commission and cct.creditcard.account: commission = cct.commission_amount if commission: lines.append( cls._get_receipt_line( 'move_line', msg + ' - ' + cct.creditcard.type + ' commission', -commission, cct.creditcard.account, None, None)) lines.append( cls._get_receipt_line( 'move_line', msg + ' - ' + cct.creditcard.type + ' commission', commission, cct.ccterminal.cash_bank.account, None, None)) for rcv in close.customers_receivable: lines.append( cls._get_receipt_line( 'move_line', msg + ' ' + rcv.description if rcv.description else '', -rcv.amount, rcv.party.account_receivable, rcv.party, None)) for rcv in close.customers_payable: lines.append( cls._get_receipt_line( 'move_line', msg + ' ' + rcv.description if rcv.description else '', rcv.amount, rcv.party.account_payable, rcv.party, None)) for ach in close.achs: lines.append( cls._get_receipt_line('move_line', msg + ' ' + ach.full_description(), -ach.amount, config_cash_bank.account_transfer, None, None)) ach_receipt = Receipt( date=ach.date, cash_bank=ach.bank, type=ach.receipt_type, reference=ach.reference, description=msg + ' ' + ach.full_description(), party=ach.party, cash=ach.amount, lines=[ cls._get_receipt_line( 'move_line', msg + ' ' + ach.full_description(), ach.amount, config_cash_bank.account_transfer, None, None) ]) ach_receipt.save() ach.bank_receipt = ach_receipt ach.save() ach_receipts.append(ach_receipt) if close.diff != 0: lines.append( cls._get_receipt_line('move_line', msg + ' Diff', -close.diff, config.diff_account, None, None)) lines += cls._get_extra_lines(close) cash_receipt = Receipt(date=close.date, cash_bank=close.cashier.cash_bank_cash, type=close.cashier.receipt_type_cash, description=msg, party=config.party_sale, cash=close.cash, documents=cls._get_documents( close.documents), lines=lines) cash_receipt.save() close.cash_bank_receipt = cash_receipt close.save() receipts.append(cash_receipt) Receipt.confirm(receipts) Receipt.post(receipts) if ach_receipts: Receipt.confirm(ach_receipts) Receipt.post(ach_receipts) write_log('ACH Bank receipts Posted', closes) write_log('Posted', closes, 'post')
def create(cls, vlist): receipts = super(Receipt, cls).create(vlist) write_log('log_action.msg_created', receipts) return receipts
def draft(cls, receipts): write_log('log_action.msg_draft', receipts)
def create(cls, vlist): transfers = super(Transfer, cls).create(vlist) write_log('Created', transfers) return transfers
def cancel(cls, convertions): write_log('Cancelled', convertions)
def cancel(cls, receipts): Move = Pool().get('account.move') Move.delete([r.move for r in receipts]) write_log('log_action.msg_cancelled', receipts)
def create(cls, vlist): documents = super(Document, cls).create(vlist) write_log('Created', documents) return documents
def create(cls, vlist): convertions = super(Convertion, cls).create(vlist) write_log('Created', convertions) return convertions
def create(cls, vlist): closes = super(Close, cls).create(vlist) write_log('Created', closes) return closes