Código fonte para l10n_br_delivery.models.account_invoice
# -*- coding: utf-8 -*-
# Copyright (C) 2010  Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from openerp import api, fields, models
from openerp.tools.translate import _
from openerp.exceptions import Warning as UserError
[documentos]class AccountInvoice(models.Model):
    _inherit = 'account.invoice'
    carrier_id = fields.Many2one(
        'delivery.carrier', 'Método de transporte', readonly=True,
        states={'draft': [('readonly', False)]})
    vehicle_id = fields.Many2one(
        'l10n_br_delivery.carrier.vehicle', u'Veículo', readonly=True,
        states={'draft': [('readonly', False)]})
    incoterm = fields.Many2one(
        'stock.incoterms', 'Tipo do Frete', readonly=True,
        states={'draft': [('readonly', False)]},
        help="Incoterm which stands for 'International Commercial terms' "
             "implies its a series of sales terms which are used in the "
             "commercial transaction.")
    @api.onchange('carrier_id')
[documentos]    def onchange_carrier_id(self):
        self.partner_carrier_id = self.carrier_id.partner_id 
    @api.onchange('vehicle_id')
[documentos]    def onchange_vehicle_id(self):
        self.vehicle_plate = self.vehicle_id.plate
        self.vehicle_state_id = self.vehicle_id.state_id
        self.vehicle_l10n_br_city_id = self.vehicle_id.l10n_br_city_id 
    @api.onchange('incoterm')
[documentos]    def onchange_incoterm(self):
        self.freight_responsibility = self.incoterm.freight_responsibility 
[documentos]    def nfe_check(self, cr, uid, ids, context=None):
        result = super(AccountInvoice, self).nfe_check(cr, uid, ids, context)
        strErro = u''
        for inv in self.browse(cr, uid, ids, context=context):
            # Carrier
            if inv.carrier_id:
                if not inv.carrier_id.partner_id.legal_name:
                    strErro = u'Transportadora - Razão Social\n'
                if not inv.carrier_id.partner_id.cnpj_cpf:
                    strErro = 'Transportadora - CNPJ/CPF\n'
            # Carrier Vehicle
            if inv.vehicle_id:
                if not inv.vehicle_id.plate:
                    strErro = u'Transportadora / Veículo - Placa\n'
                if not inv.vehicle_id.state_id.code:
                    strErro = u'Transportadora / Veículo - UF da Placa\n'
                if not inv.vehicle_id.rntc_code:
                    strErro = u'Transportadora / Veículo - RNTC\n'
        if strErro:
            raise UserError(
                _('Error!'),
                _(u"Validação da Nota fiscal:\n '%s'") % (strErro))
        return result