Código fonte para l10n_br_sale_service.models.sale

# -*- coding: utf-8 -*-
# Copyright (C) 2014  Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from openerp import models, api, _
from openerp.exceptions import Warning as UserError


[documentos]class SaleOrder(models.Model): _inherit = 'sale.order' @api.model def _prepare_invoice(self, order, lines): result = super(SaleOrder, self)._prepare_invoice(order, lines) result['fiscal_type'] = self.env.context.get('fiscal_type') return result @api.model def _make_invoice(self, order, lines): context = dict(self.env.context) obj_invoice_line = self.env['account.invoice.line'] lines_service = [] lines_product = [] inv_id_product = 0 inv_id_service = 0 def call_make_invoice(self, lines): self = self.with_context(context) return super(SaleOrder, self)._make_invoice(order, lines) if not order.fiscal_category_id.property_journal: raise UserError( _('Error !'), _("There is no journal defined for this company in Fiscal " "Category: %s Company: %s") % ( order.fiscal_category_id.name, order.company_id.name)) for inv_line in obj_invoice_line.browse(lines): if inv_line.product_id.fiscal_type == 'service': lines_service.append(inv_line.id) elif inv_line.product_id.fiscal_type == 'product': lines_product.append(inv_line.id) if lines_product: context['fiscal_type'] = 'product' inv_id_product = call_make_invoice(self, lines_product) if lines_service: context['fiscal_type'] = 'service' inv_id_service = call_make_invoice(self, lines_service) if inv_id_product and inv_id_service: self._cr.execute( 'insert into sale_order_invoice_rel ' '(order_id,invoice_id) values (%s,%s)', ( order.id, inv_id_service)) inv_id = inv_id_product or inv_id_service return inv_id