Skip to content

Instantly share code, notes, and snippets.

@rvalyi
Created March 1, 2019 14:29
Show Gist options
  • Save rvalyi/734e291e01f40a5e1068de2c54336727 to your computer and use it in GitHub Desktop.
Save rvalyi/734e291e01f40a5e1068de2c54336727 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
from odoo import fields, models, api
from .spec_models import SpecModel, StackedModel
import inspect
class ResPartner(SpecModel):
# TODO inherit these abstract models before and make their fields computed
_inherit = ["res.partner", "nfe.v4_00.tendereco", "nfe.v4_00.tlocal",
"nfe.v4_00.dest", "nfe.v4_00.tenderemi"]
_name = "res.partner"
class ResCompany(SpecModel):
_inherit = ['res.company', 'nfe.v4_00.emit']
_name = "res.company"
nfe_enderEmit = fields.Many2one("res.partner", related='partner_id')
class FleetVehicle(SpecModel):
_inherit = ["fleet.vehicle", "nfe.v4_00.veicprod", "nfe.v4_00.tveiculo"]
_name = "fleet.vehicle"
class AccountInvoiceLine(StackedModel):
_inherit = ["account.invoice.line", "nfe.v4_00.det"]
_name = "account.invoice.line"
_stacked = 'nfe.v4_00.det'
@api.one
@api.depends('sequence')
def _compute_nitem(self):
self.nfe_nItem = str(self.sequence or 0)
@api.model
def _default_nitem(self):
return '-'
nfe_xProd = fields.Text(string='Nome',
related='name', readonly=True)
nfe_NCM = fields.Char(string='NCM',
related='product_id.categ_id.name', readonly=True) # TODO real NCM
nfe_veicProd = fields.Many2one('fleet.vehicle')
nfe_nItem = fields.Char('Numero da Linha', compute='_compute_nitem',
default=_default_nitem)
# automatic label is too long...
# nfe_choice11 = fields.Selection(string="Tipo de ICMS")
nfe_choice11 = fields.Selection([
('nfe_ICMS00', 'ICMS00'),
('nfe_ICMS10', 'ICMS10'),
('nfe_ICMS20', 'ICMS20'),
('nfe_ICMS30', 'ICMS30'),
('nfe_ICMS40', 'ICMS40'),
('nfe_ICMS51', 'ICMS51'),
('nfe_ICMS60', 'ICMS60'),
('nfe_ICMS70', 'ICMS70'),
('nfe_ICMS90', 'ICMS90'),
('nfe_ICMSPart', 'ICMSPart'),
('nfe_ICMSST', 'ICMSST'),
('nfe_ICMSSN101', 'ICMSSN101'),
('nfe_ICMSSN102', 'ICMSSN102'),
('nfe_ICMSSN201', 'ICMSSN201'),
('nfe_ICMSSN202', 'ICMSSN202'),
('nfe_ICMSSN500', 'ICMSSN500'),
('nfe_ICMSSN900', 'ICMSSN900')],
"Tipo de IMCS",
default="nfe_ICMS00")
class AccountInvoice(StackedModel):#, models.Model): # TODO add Model dynamically
_inherit = ["account.invoice", "nfe.v4_00.infnfe"]
_name = "account.invoice"
_stacked = 'nfe.v4_00.infnfe'
_concrete_skip = ('nfe.v4_00.det',) # will be mixed in later
nfe_emit = fields.Many2one("res.company", related='company_id')
nfe_dest = fields.Many2one("res.partner", related='partner_id')
nfe_det = fields.One2many("account.invoice.line", related='invoice_line_ids')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment