← Back to team overview

openerp-brazil-team team mailing list archive

Re: Tropicalização

 

*"e neste caso voce quebrou a restrição unique do name do Partner?"
*Não chegamos a quebrar. Eles mexiam no nomes desta forma:
Partner 1: Universidade Federal do RS
Partner 2: Universidade Federal do RS - Departamento XXX

O nome do Partner não era a razão social, e sim um nome identificável pelo
usuário. Logo sempre era diferente (único). Por exemplo, ao invés de
"Vonpar" usariam "Coca-Cola".
A razão social ficava no nome do contato (partner.address) principal, mas
quem sabe faça mais sentido criar um campo só para isso em partner.

*"Como voce fez isto? por herança ou alterou o módulo base?"
*Criamos um módulo a parte, usando herança.*

"Outra coisa, estas modificações que voces fizeram são GPL? voce poderia
disponibilizar o código?"
*Vou pedir o código. Há muitas outras coisas no código. Não é um código
limpo.*
*
Abs,
Gabriel

2009/5/15 Luiz Franca <luiz@xxxxxxxxxxxxxxxxxxxxx>

> 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