Pessoal,
como disse em um e-mail anterior, achei a solução para tratamento
fiscal baseado no 'account.fiscal.position' muito complexa para
configuração. O problema nem é o fiscal.position em si, mas a
complexidade da nossa legislação que não se encaixa com o conceito,
exigindo literalmente centenas de objetos de configuração. Mas como
já disse o Linus Torvards, "Talk is cheap. Show me the code".
Eu criei uma branch separando toda a lógica dependente do
"fiscal.position" (e também do "fiscal.operation") em um módulo
l10n_br_tax_fiscal_position. A branch é tão somente uma refatoração
- ao se instalar esse módulo o resultado é (ou deveria ser)
exatamente o mesmo de usar a branch principal 6.1 da localização.
O endereço da branch:
bzr branch lp:~cjalmeida/openerp.pt-br-localiz/6.1-fiscalposition_split
A refatoração é pesada, o diff tem quase 10000 linhas! Os dados
de demo estão instalando direitinho, mas como não tenho uma base de
produção disponível, tenho dificuldade de testar além disso. Se
estiver estável e os líderes da comunidade aceitarem a ideia, faço
um merge proposal.
A vantagem é que permite implementações alternativas das regras
fiscais apenas criando um módulo "l10n_br_tax_???" sem, no entanto,
divergir o modelo de dados.
Na minha empresa, estou implementando as regras fiscais usando
"tabelas Python".
http://pastebin.com/raw.php?i=Hk09eE6z
Quando estiver mais maduro eu crio uma branch com o código completo.
Acho importante manter um modelo de dados coeso para não dispersar a
comunidade. Na minha opinião, os módulos "de dados" como
"l10n_br_account", "l10n_br_sale", etc. devem ter poucas regras de
negócios. Estas devem ser delegadas a módulos "de negócio" que
implementam as funcionalidades (regras fiscais, integração bancária,
NFe, etc.)
Abraço a todos e ótimo 2013!
Cloves Almeida