← Back to team overview

openerp-brazil-team team mailing list archive

Re: Tropicalização

 

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

Follow ups

References