← Back to team overview

openerp-brazil-team team mailing list archive

Re: Tropicalização

 

Gabriel,

e neste caso voce quebrou a restrição unique do name do Partner?

Como voce fez isto? por herança ou alterou o módulo base?

Outra coisa, estas modificações que voces fizeram são GPL? voce poderia
disponibilizar o código?

[]s

-- 
Luiz Fernando Maciel França
Sig Informática Ltda.
Rua João Pereira Amorim, 700
Bairro Jardim Arizona
35.700-373 - Sete Lagoas - MG - Brasil
(31)3773-1043
Skype: lfmfsig


2009/5/15 Gabriel C. Stabel <gstabel@xxxxxxxxx>

> Tive que resolver esse problema do CPF/CNPJ no serviço que eu fiz, e pude
> discutir com alguns engenheiros e administradores que usavam o sistema.
>
> 5) Pensamos no começo em colocar no "res.partner.address", como foi
> sugerido, pelo mesmo motivo; a questão matriz/filial. Entretanto depois de
> refletir melhor colocamos em "res.partner", e resolvemos a questão
> matriz/filial usando o campo "parent_id".
> Pois se usarmos o "parent_id" (Main Company), podemos ver e estruturar a
> organização de empresas maiores (ou governamentais) usando o "Company
> Architecture" que já existe (é um tree view) dentro de Partner. (Ao que me
> lembro os Cases já buscam de forma recursiva dentro desta árvore de
> parceiros, que nos indicou também ser um exemplo da intenção original de
> quem fez).
> Entendemos que o "res.partner.address" deveria ser usado como se fosse os
> diversas pessoas de contato, e/ou endereços de um dado parceiro. E que o
> parceiro (que conteria o CPF/CNPJ) é que deveria centralizar as notas
> fiscais (invoces), vendas, cases, etc, e logo ter os dados fiscais (como
> CPF/CNPJ).
>
> Fica aí minha experiência nessa questão, e minha sugestão. :)
> Grato.
>
> Abraços,
> Gabriel
>
> 2009/5/14 Luiz Franca <luiz@xxxxxxxxxxxxxxxxxxxxx>
>
>> Boa Noite Pessoal!
>>
>> Agradeço a todos pela manifestação, é assim que esta grupo precisa andar.
>>
>> Vamos enumerar para ficar mais fácil:
>>
>> 1) Quanto ao nome, acho que não resta dúvidas, será necessário quebrar a
>> restrição. O problema é como fazer isto por herança? Não podemos
>> simplesmente alterar o módulo 'base', precisamos fazer por herança num novo
>> módulo. Se alguem souber como fazer, por favor me dê o caminho das pedras,
>> enquanto isto vou procurando por aqui.
>>
>> 2) Acho que o CNPJ/CPF tambem não podem ter restrição pelo que foi dito
>> por alguns de voces, temos ai casos de prefeituras / autarquias com o mesmo
>> cnpj, embora ele possa ser chave para identificação.
>>
>> 3)Não temos que necessáriamente ter uma restrição(unique), uma vez que
>> todo objeto do OpenERP tem seu ID, que já é único, portanto outra restrição
>> seria apenas pela regra do negócio, que no caso do cnpj/cpf e nome/razão
>> social é dispensável pelo que deduzimos das respostas.
>>
>> 4) Para quem pediu, o código o preliminar está em:
>> https://code.launchpad.net/openerp.pt-br-localiz, mas já adianto que ele
>> tem alguns problemas. De qualquer maneira, me comprometo a disponibilizar
>> novamente assim que terminar as alterações que estou fazendo, entrego em no
>> máximo 1 semana. Se alquem quizer a alteração que estou fazendo antes que eu
>> termine é só falar que eu mando, não tenho nenhuma restrição, o código é GPL
>>
>> 5) Pela questão de Matriz/Filiais acho que o cnpj/cpf devem realmente ir
>> para o objeto Partner.Address.
>>
>> 6) Considerando que um partner no OpenERP pode ter vários endereços, isto
>> não resolveria o caso das Prefeituras/autarquias? Se resolver, acredito que
>> finalmente poderemos ter uma restrição Unique no CPF/CNPJ. O que acham?
>>
>> Para voces entenderem melhor o que estou fazendo, coloco a seguir parte
>> dos atributos dos objetos.
>>
>> class res_partner_address(osv.osv):
>>     """Partner Addresses"""
>>     _name = 'res.partner.address'
>>     _inherit = 'res.partner.address'
>>     _columns = {
>>         'location': fields.many2one('res.country.state.city',
>> 'Localidade', domain="[('state_id', '=', state_id)]"),
>>         'numero': fields.char('Número', size=10),
>>         'state_id': fields.many2one("res.country.state", 'Estado',
>> domain="[('country_id', '=', country_id)]"),
>>         'country_id': fields.many2one("res.country", 'País'),
>>         'tipo_pessoa': fields.selection([('F', 'Física'), ('J',
>> 'Jurídica')], 'Tipo de pessoa', required=True),
>>         'cpf_cnpj': fields.char('Cpf/CNPJ', size=15),
>>         'pessoa_fisica': fields.one2many('res.partner.fisica',
>> 'address_id', 'Pessoa_Fisica'),
>>         'pessoa_juridica': fields.one2many('res.partner.juridica',
>> 'address_id', 'Pessoa_Juridica'),
>>      }
>>
>> class res_partner_juridica(osv.osv):
>>     """Cadastro de pessoas juridica """
>>     _name = 'res.partner.juridica'
>>     _columns = {
>>         'address_id' : fields.many2one('res.partner.address','Contato',
>> ondelete='set null', select=True, domain=[('tipo_pessoa', '=', 'J')]),
>>         'city' : fields.related
>> ('partner_id','city',type='many2one',relation='res.country.state.city',string='Cidade'),
>>
>>         'state' : fields.related
>> ('partner_id','state',type='many2one',relation='res.country.state',
>> string='Estado'),
>>         'country' : fields.related
>> ('partner_id','country',type='char',string='País'),
>>         'fantasia' : fields.char('Nome Fantasia', size=25),
>>         'inscr_estadual': fields.char('Inscrição Estadual', size=20,
>> required="1"),
>>         'inscr_municipal': fields.char('Inscrição Municipal', size=20),
>>         'suframa': fields.char('Suframa', size=10),
>>         'data_fundacao': fields.date("Data da fundação"),
>>         'tipo_empresa': fields.selection([('I','Individual'),
>> ('L','Limitada'), ('S','Sociedade Anônima'), ('P','Administração Pública')],
>> 'Tipo de Empresa', required="1"),
>>      }
>> class res_partner_fisica(osv.osv):
>>     """Cadastro de pessoas fisicas """
>>     _name = 'res.partner.fisica'
>>     _columns = {
>>         'address_id' : fields.many2one('res.partner.address','Contato',
>> ondelete='set null', select=True, domain=[('tipo_pessoa', '=', 'F')]),
>>         'city' : fields.related
>> ('partner_id','city',type='many2one',relation='res.country.state.city',string='Cidade'),
>>
>>         'state' : fields.related
>> ('partner_id','state',type='many2one',relation='res.country.state',
>> string='Estado'),
>>         'country' : fields.related
>> ('partner_id','country',type='char',string='País'),
>>         'apelido': fields.char('Apelido', size=25),
>>         'identidade': fields.char('Identidade', size=20),
>>         'data_emissao_identidade': fields.date("Data de emissão"),
>>         'orgao_emissor_identidade': fields.char('Orgão emissor', size=6),
>>         'data_nascimento': fields.date("Data de Nascimento"),
>>         'estado_civil': fields.selection([('C', 'Casado'), ('S',
>> 'Solteiro'), ('E', 'Desquitado'), ('D','Divorciado'), ('V','Viúvo')],
>> 'Estado Civil'),
>>         'sexo': fields.selection([('M', 'Masculino'), ('F', 'Feminino')],
>> 'Sexo', required="1"),
>>         'foto': fields.binary('Foto'),
>>      }
>>
>>
>> Como podem ver o cnpj/cpf eu inclui na classe "res.partner.address" e crie
>> mais duas classes complementares para os dados de pessoa física e jurídica.
>>
>> Na verdade do que pretendia fazer a parte das classes já está pronta,
>> falta apenas acertas as telas(o xml).
>>
>>
>> []s
>> --
>> Luiz Fernando Maciel França
>> Sig Informática Ltda.
>> Rua João Pereira Amorim, 700
>> Bairro Jardim Arizona
>> 35.700-373 - Sete Lagoas - MG - Brasil
>> (31)3773-1043
>> Skype: lfmfsig
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openerp-brazil-team<https://launchpad.net/%7Eopenerp-brazil-team>
>> Post to     : openerp-brazil-team@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openerp-brazil-team<https://launchpad.net/%7Eopenerp-brazil-team>
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>

Follow ups

References