bmya/odoo-bmya-cl

View on GitHub
l10n_cl_pos_credit_card_voucher/models.py

Summary

Maintainability
A
0 mins
Test Coverage
# -*- coding: utf-8 -*-
from openerp import models, fields


class account_invoice(models.Model):
    _inherit = "account.invoice"

    ccvoucher_line_ids = fields.One2many('account.invoice.ccvoucher', 'invoice_id', string='Credit Card Voucher Lines',
                                     states={'draft': [('readonly', False)]}, readonly=True, copy=True)


class account_journal(models.Model):
    _inherit = "account.journal"

    add_credit_card_voucher_number = fields.Boolean("Add credit card voucher number", default=False)


class account_invoice_ccvoucher(models.Model):
    _name = "account.invoice.ccvoucher"
    _description = "Credit Card Voucher"

    invoice_id = fields.Many2one('account.invoice', string='Invoice Line', ondelete='cascade', index=True)
    voucher_number = fields.Char('Credit Card Voucher Number')


class pos_order_ccvoucher(models.Model):
    _name = "pos.order.ccvoucher"

    order_id = fields.Many2one('pos.order', 'order_id', ondelete='cascade', index=True)
    voucher_number = fields.Char('Credit Card Voucher Number')


class pos_order(models.Model):
    _inherit = "pos.order"

    ccvoucher_order_ids = fields.One2many('pos.order.ccvoucher', 'order_id', copy=True)

    def _process_order(self, cr, uid, order, context=None):
        order_id = super(pos_order, self)._process_order(cr, uid, order, context)
        for paymentline in order['statement_ids']:
            self.pool.get('pos.order.ccvoucher').create(cr, uid, {'order_id': order_id,
                                                                  'voucher_number': paymentline[2]['ccvoucher']
                                                                  })
        return order_id

    def action_invoice(self, cr, uid, ids, context=None):
        res = super(pos_order, self).action_invoice(cr, uid, ids, context)

        inv_voucher_ref = self.pool.get('account.invoice.ccvoucher')
        for order in self.pool.get('pos.order').browse(cr, uid, ids, context=context):
            invoice_id = self.pool.get('account.invoice').search(cr, uid, [('origin', '=', order.name)], context=context)
            for line in order.ccvoucher_order_ids:
                inv_voucher_ref.create(cr, uid, {'invoice_id': invoice_id[0],
                                                 'voucher_number': line.voucher_number,
                                                 }, context=context)
        return res