~openerp-brazil-team/openerp.pt-br-localiz/migr-l10n-br-base

« back to all changes in this revision

Viewing changes to l10n_br_base/partner.py

  • Committer: Raphaël Valyi
  • Date: 2012-11-19 04:17:25 UTC
  • Revision ID: rvalyi@gmail.com-20121119041725-vkj2kxk47cpqomjz
[MIGR][l10n_br_base] replaced tipo_pessoa by is_company v7 native feature in partner.py, some PEP8, added my copyrights

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- encoding: utf-8 -*-
2
2
###############################################################################
3
3
#                                                                             #
4
 
# Copyright (C) 2009  Renato Lima - Akretion, Gabriel C. Stabel               #
 
4
# Copyright (C) 2009 Gabriel C. Stabel                                        #
 
5
# Copyright (C) 2009-2012  Renato Lima (Akretion)                             #
 
6
# Copyright (C) 2012 Raphaël Valyi (Akretion)                                 #
5
7
#                                                                             #
6
8
#This program is free software: you can redistribute it and/or modify         #
7
9
#it under the terms of the GNU Affero General Public License as published by  #
44
46
    'se': {'tam': 9}}
45
47
 
46
48
 
47
 
class res_partner(osv.osv):
 
49
class res_partner(osv.Model):
48
50
    _inherit = 'res.partner'
49
51
 
50
52
    def _get_partner(self, cr, uid, ids, context=None):
64
66
            #TODO shouldn't we get the default one if no invoice one is found?
65
67
 
66
68
            if partner_addr:
67
 
                partner_addr_default = self.pool.get('res.partner').browse(cr, uid, [partner_addr['invoice']])[0]
68
 
                addr_fs_code = partner_addr_default.state_id and partner_addr_default.state_id.code or ''
 
69
                partner_addr_default = self.pool.get('res.partner')\
 
70
                .browse(cr, uid, [partner_addr['invoice']])[0]
 
71
                addr_fs_code = partner_addr_default.state_id\
 
72
                and partner_addr_default.state_id.code or ''
69
73
                res[partner.id]['addr_fs_code'] = addr_fs_code.lower()
70
74
 
71
75
        return res
72
76
 
73
77
    _columns = {
74
 
        'tipo_pessoa': fields.selection([('F', 'Física'),
75
 
                                         ('J', 'Jurídica')],
76
 
                                        'Tipo de pessoa', required=True),
77
78
        'cnpj_cpf': fields.char('CNPJ/CPF', size=18),
78
79
        'inscr_est': fields.char('Inscr. Estadual/RG', size=16),
79
80
        'inscr_mun': fields.char('Inscr. Municipal', size=18),
89
90
            multi='all',
90
91
            store={
91
92
                   'res.partner': (
92
 
                        _get_partner, ['country_id',
93
 
                                               'state_id'], 20), }),
 
93
                                   _get_partner,
 
94
                                   ['country_id', 'state_id'], 20), }),
94
95
 
95
96
        # address fields:
96
 
        'l10n_br_city_id': fields.many2one('l10n_br_base.city',
97
 
                                           'Municipio',
98
 
                                           domain="[('state_id','=',state_id)]"),
 
97
        'l10n_br_city_id':\
 
98
        fields.many2one('l10n_br_base.city', 'Municipio',\
 
99
                        domain="[('state_id','=',state_id)]"),
99
100
        'district': fields.char('Bairro', size=32),
100
101
        'number': fields.char('Número', size=10)
101
102
                }
102
103
 
103
 
    _defaults = {
104
 
        'tipo_pessoa': lambda *a: 'J'}
105
 
 
106
104
    def _check_cnpj_cpf(self, cr, uid, ids):
107
105
 
108
106
        for partner in self.browse(cr, uid, ids):
109
107
            if not partner.cnpj_cpf:
110
108
                continue
111
109
 
112
 
            if partner.tipo_pessoa == 'J':
 
110
            if partner.is_company:
113
111
                if not self._validate_cnpj(partner.cnpj_cpf):
114
112
                    return False
115
 
            elif partner.tipo_pessoa == 'F':
116
 
                if not self._validate_cpf(partner.cnpj_cpf):
 
113
            elif not self._validate_cpf(partner.cnpj_cpf):
117
114
                    return False
118
115
 
119
116
        return True
220
217
        prod = PARAMETERS[uf].get('prod', [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2])
221
218
        prod = prod[-val_tam:]
222
219
        while len(nova_ie) < tam:
223
 
            r = sum([x * y for (x, y) in zip(nova_ie, prod)]) % PARAMETERS[uf].get('div', 11)
 
220
            r = sum([x * y for (x, y) in zip(nova_ie, prod)]) % PARAMETERS[uf]\
 
221
            .get('div', 11)
224
222
 
225
223
            if r > 1:
226
224
                f = 11 - r
250
248
        for partner in self.browse(cr, uid, ids):
251
249
            if not partner.inscr_est \
252
250
                or partner.inscr_est == 'ISENTO' \
253
 
                or partner.tipo_pessoa == 'F':
 
251
                or not partner.is_company:
254
252
                continue
255
253
 
256
254
            uf = partner.addr_fs_code
583
581
 
584
582
    _constraints = [
585
583
                    (_check_cnpj_cpf, u'CNPJ/CPF invalido!', ['cnpj_cpf']),
586
 
                    (_check_ie, u'Inscrição Estadual inválida!', ['inscr_est'])]
 
584
                    (_check_ie, u'Inscrição Estadual inválida!',
 
585
                     ['inscr_est'])]
587
586
 
588
587
    _sql_constraints = [
589
588
        ('res_partner_cnpj_cpf_uniq', 'unique (cnpj_cpf)',
591
590
        ('res_partner_inscr_est_uniq', 'unique (inscr_est)',
592
591
         u'Já existe um parceiro cadastrado com esta Inscrição Estadual/RG !')]
593
592
 
594
 
    def onchange_mask_cnpj_cpf(self, cr, uid, ids, tipo_pessoa, cnpj_cpf):
595
 
        if not cnpj_cpf or not tipo_pessoa:
 
593
    #TODO signature changed for v7, migrate view!
 
594
    def onchange_mask_cnpj_cpf(self, cr, uid, ids, is_company, cnpj_cpf):
 
595
        if cnpj_cpf:
 
596
            val = re.sub('[^0-9]', '', cnpj_cpf)
 
597
            if is_company and len(val) == 14:
 
598
                cnpj_cpf = "%s.%s.%s/%s-%s"\
 
599
                % (val[0:2], val[2:5], val[5:8], val[8:12], val[12:14])
 
600
            elif not is_company and len(val) == 11:
 
601
                cnpj_cpf = "%s.%s.%s-%s"\
 
602
                % (val[0:3], val[3:6], val[6:9], val[9:11])
 
603
            return {'value': {'cnpj_cpf': cnpj_cpf}}
 
604
        else:
596
605
            return {}
597
 
        val = re.sub('[^0-9]', '', cnpj_cpf)
598
 
 
599
 
        if tipo_pessoa == 'J' and len(val) == 14:
600
 
            cnpj_cpf = "%s.%s.%s/%s-%s" % (val[0:2], val[2:5], val[5:8], val[8:12], val[12:14])
601
 
 
602
 
        elif tipo_pessoa == 'F' and len(val) == 11:
603
 
            cnpj_cpf = "%s.%s.%s-%s" % (val[0:3], val[3:6], val[6:9], val[9:11])
604
 
 
605
 
        return {'value': {'tipo_pessoa': tipo_pessoa, 'cnpj_cpf': cnpj_cpf}}
606
606
 
607
607
    #TODO migrate
608
608
    def onchange_l10n_br_city_id(self, cr, uid, ids, l10n_br_city_id):
668
668
            else:
669
669
                domain.append(('street', '=', res_partner_address.street))
670
670
                domain.append(('district', '=', res_partner_address.district))
671
 
                domain.append(('country_id', '=', res_partner_address.country_id.id))
672
 
                domain.append(('state_id', '=', res_partner_address.state_id.id))
673
 
                domain.append(('l10n_br_city_id', '=', res_partner_address.l10n_br_city_id.id))
 
671
                domain.append(('country_id', '=', \
 
672
                               res_partner_address.country_id.id))
 
673
                domain.append(('state_id', '=', \
 
674
                               res_partner_address.state_id.id))
 
675
                domain.append(('l10n_br_city_id', '=', \
 
676
                               res_partner_address.l10n_br_city_id.id))
674
677
 
675
678
            zip_id = obj_zip.search(cr, uid, domain)
676
679
 
680
683
                                'zip': res_partner_address.zip,
681
684
                                'street': res_partner_address.street,
682
685
                                'district': res_partner_address.district,
683
 
                                'country_id': res_partner_address.country_id.id,
 
686
                                'country_id': \
 
687
                                res_partner_address.country_id.id,
684
688
                                'state_id': res_partner_address.state_id.id,
685
 
                                'l10n_br_city_id': res_partner_address.l10n_br_city_id.id,
 
689
                                'l10n_br_city_id': \
 
690
                                res_partner_address.l10n_br_city_id.id,
686
691
                                'address_id': ids,
687
692
                                'object_name': self._name,
688
693
                                })
706
711
                                                      'code',
707
712
                                                      'l10n_br_city_id',
708
713
                                                      'city', 'state_id',
709
 
                                                      'country_id'], context=context)[0]
 
714
                                                      'country_id'
 
715
                                                      ],
 
716
                                    context=context)[0]
710
717
 
711
718
            zip = re.sub('[^0-9]', '', zip_read['code'] or '')
712
719
            if len(zip) == 8:
713
720
                zip = '%s-%s' % (zip[0:5], zip[5:8])
714
721
 
715
 
            result['street'] = ((zip_read['street_type'] or '') + ' ' + (zip_read['street'] or ''))
 
722
            result['street'] = ((zip_read['street_type'] or '') + ' ' \
 
723
                                + (zip_read['street'] or ''))
716
724
            result['district'] = zip_read['district']
717
725
            result['zip'] = zip
718
 
            result['l10n_br_city_id'] = zip_read['l10n_br_city_id'] and zip_read['l10n_br_city_id'][0] or False
719
 
            result['city'] = zip_read['l10n_br_city_id'] and zip_read['l10n_br_city_id'][1] or ''
720
 
            result['state_id'] = zip_read['state_id'] and zip_read['state_id'][0] or False
721
 
            result['country_id'] = zip_read['country_id'] and zip_read['country_id'][0] or False
 
726
            result['l10n_br_city_id'] = zip_read['l10n_br_city_id'] \
 
727
            and zip_read['l10n_br_city_id'][0] or False
 
728
            result['city'] = zip_read['l10n_br_city_id'] \
 
729
            and zip_read['l10n_br_city_id'][1] or ''
 
730
            result['state_id'] = zip_read['state_id'] \
 
731
            and zip_read['state_id'][0] or False
 
732
            result['country_id'] = zip_read['country_id'] \
 
733
            and zip_read['country_id'][0] or False
722
734
            self.write(cr, uid, res_partner_address.id, result)
723
735
            return False
724
736
 
725
737
 
726
 
class res_partner_bank(osv.osv):
 
738
class res_partner_bank(osv.Model):
727
739
    """ Adiciona campos necessários para o cadastramentos de contas
728
740
    bancárias na brasil.
729
741
    """