def payslip_autonomo_report(pool, cr, uid, local_context, context):
    payslip_autonomo_pool = pool['hr.payslip.autonomo']
    payslip_id = payslip_autonomo_pool.browse(cr, uid, context['active_id'])

    print("\n\n\n Vai report")
    company_logo = payslip_id.company_id.logo
    company_nfe_logo = payslip_id.company_id.nfe_logo

    local_context['company_logo'] = \
        company_nfe_logo if company_nfe_logo else company_logo
    local_context['company_logo2'] = \
        company_nfe_logo if company_nfe_logo else company_logo

    # CPF DO Autonomo
    if payslip_id.employee_id.cpf:
        local_context['cpf'] = formata_cpf(payslip_id.employee_id.cpf)
    else:
        local_context['cpf'] = ''

    # Formatar Data da emissao do do RG
    local_context['rg_emission'] = \
        formata_data(payslip_id.employee_id.rg_emission)

    # Campo de conta bancária no formato para exibição do relatório
    conta_bancaria = ''
    if payslip_id.employee_id.address_home_id.bank_ids:
        conta_bancaria_id = payslip_id.employee_id.address_home_id.bank_ids[0]

        conta_bancaria = conta_bancaria_id.bank.bic + ' / ' + \
                         conta_bancaria_id.bra_number + ' / ' + \
                         conta_bancaria_id.acc_number

    local_context['conta_bancaria'] = conta_bancaria

    # Data de pagamento
    if payslip_id.data_pagamento_autonomo:

        local_context['data_pagamento'] = \
            'Data de Pagamento: ' + \
            formata_data(payslip_id.data_pagamento_autonomo)
    else:
        local_context['data_pagamento'] = ''

    # Numero maximo de linhas por holerites, se ultrapassar esse limite será
    # dividido em 2 grupos para ser exibido em uma segunda pagina
    max_linhas = 10
    local_context['grupo_rubricas_1'] = payslip_id.line_resume_ids[:max_linhas]
    local_context['grupo_rubricas_2'] = False
    if len(payslip_id.line_resume_ids) > max_linhas:
        local_context['grupo_rubricas_2'] = \
            payslip_id.line_resume_ids[max_linhas:]
    def _valida_cnpj_cpf(self):
        self.ensure_one()

        valores = {}
        res = {'value': valores}

        if not self.cnpj_cpf:
            return res

        cnpj_cpf = limpa_formatacao(self.cnpj_cpf or '')

        if cnpj_cpf[:2] != 'EX':
            if not valida_cnpj(cnpj_cpf) and not valida_cpf(cnpj_cpf):
                raise ValidationError(_(u'CNPJ/CPF inválido'))

        if len(cnpj_cpf) == 14:
            valores['cnpj_cpf'] = formata_cnpj(cnpj_cpf)
            valores['tipo_pessoa'] = TIPO_PESSOA_JURIDICA
            valores['regime_tributario'] = REGIME_TRIBUTARIO_SIMPLES
            valores['contribuinte'] = INDICADOR_IE_DESTINATARIO_ISENTO

        else:
            valores['cnpj_cpf'] = formata_cpf(cnpj_cpf)
            valores['tipo_pessoa'] = TIPO_PESSOA_FISICA
            valores['regime_tributario'] = REGIME_TRIBUTARIO_LUCRO_PRESUMIDO
            valores['contribuinte'] = \
                INDICADOR_IE_DESTINATARIO_NAO_CONTRIBUINTE

        if cnpj_cpf[:2] == 'EX':
            valores['tipo_pessoa'] = TIPO_PESSOA_ESTRANGEIRO
            valores['regime_tributario'] = REGIME_TRIBUTARIO_LUCRO_PRESUMIDO
            valores['contribuinte'] = \
                INDICADOR_IE_DESTINATARIO_NAO_CONTRIBUINTE

        if self.id:
            cnpj_ids = self.search([('cnpj_cpf', '=', cnpj_cpf),
                                    ('id', '!=', self.id),
                                    ('eh_empresa', '=', False),
                                    ('eh_grupo', '=', False)])
        else:
            cnpj_ids = self.search([('cnpj_cpf', '=', cnpj_cpf),
                                    ('eh_empresa', '=', False),
                                    ('eh_grupo', '=', False)])

        if len(cnpj_ids) > 0:
            raise ValidationError(_(u'CNPJ/CPF já existe no cadastro!'))

        return res
예제 #3
0
    def _check_certificado(self):
        for certificado in self:
            if certificado.tipo != TIPO_CERTIFICADO_A1:
                continue

            cert = certificado.certificado_nfe()

            certificado.numero_serie = str(cert.numero_serie)
            certificado.data_inicio_validade = str(cert.data_inicio_validade)
            certificado.data_fim_validade = str(cert.data_fim_validade)
            certificado.proprietario = cert.proprietario_nome

            if valida_cpf(cert.proprietario_cnpj):
                certificado.cnpj_cpf = formata_cpf(cert.proprietario_cnpj)
            elif valida_cnpj(cert.proprietario_cnpj):
                certificado.cnpj_cpf = formata_cnpj(cert.proprietario_cnpj)
            else:
                certificado.cnpj_cpf = cert.proprietario_cnpj
    def _valida_cnpj_cpf(self):
        self.ensure_one()

        valores = {}
        res = {'value': valores}

        if not self.cnpj_cpf:
            return res

        cnpj_cpf = limpa_formatacao(self.cnpj_cpf or '')

        if cnpj_cpf[:2] != 'EX':
            if not valida_cnpj(cnpj_cpf) and not valida_cpf(cnpj_cpf):
                raise ValidationError('CNPJ/CPF inválido')

        if len(cnpj_cpf) == 14:
            valores.update(cnpj_cpf=formata_cnpj(cnpj_cpf))
            valores.update(tipo_pessoa='J')
            valores.update(regime_tributario='1')
        else:
            valores.update(cnpj_cpf=formata_cpf(cnpj_cpf))
            valores.update(tipo_pessoa='F')
            valores.update(regime_tributario='3')

        if cnpj_cpf[:2] == 'EX':
            valores.update(tipo_pessoa='E')
            valores.update(regime_tributario='3')

        if self.id:
            cnpj_ids = self.search([('cnpj_cpf', '=', cnpj_cpf),
                                    ('id', '!=', self.id),
                                    ('eh_empresa', '=', False),
                                    ('eh_grupo', '=', False)])
        else:
            cnpj_ids = self.search([('cnpj_cpf', '=', cnpj_cpf),
                                    ('eh_empresa', '=', False),
                                    ('eh_grupo', '=', False)])

        if len(cnpj_ids) > 0:
            raise ValidationError(u'CNPJ/CPF já existe no cadastro!')

        return res
예제 #5
0
    def constrains_certificado(self):
        if self.tipo != TIPO_CERTIFICADO_A1:
            return

        open('/tmp/cert.pfx', 'w').write(self.arquivo.decode('base64'))
        cert = pysped.xml_sped.certificado.Certificado()
        cert.arquivo = '/tmp/cert.pfx'
        cert.senha = self.senha

        cert.prepara_certificado_arquivo_pfx()

        self.numero_serie = str(cert.numero_serie)
        self.data_inicio_validade = str(cert.data_inicio_validade)
        self.data_fim_validade = str(cert.data_fim_validade)
        self.proprietario = cert.proprietario_nome

        if valida_cpf(cert.proprietario_cnpj):
            self.cnpj_cpf = formata_cpf(cert.proprietario_cnpj)
        elif valida_cnpj(cert.proprietario_cnpj):
            self.cnpj_cpf = formata_cnpj(cert.proprietario_cnpj)
        else:
            self.cnpj_cpf = cert.proprietario_cnpj