Пример #1
0
def header_retorno_400(self, retorno):
    header = retorno.linhas[0]

    beneficiario = retorno.beneficiario

    #beneficiario.agencia.numero = header[26:30]
    #beneficiario.agencia.digito = header[30]
    beneficiario.codigo.numero = unicode(D(header[26:46]))
    #beneficiario.codigo.digito = header[39]
    beneficiario.nome = header[46:76]

    retorno.data_hora = parse_datetime(header[94:100]).date()
    retorno.sequencia = int(header[108:113])
Пример #2
0
def header_retorno_240(self, retorno):
    header = retorno.linhas[0]

    beneficiario = retorno.beneficiario

    beneficiario.cnpj_cpf = header[18:32]
    beneficiario.agencia.numero = str(D(header[52:57]))
    beneficiario.agencia.digito = header[57]
    beneficiario.conta.numero = str(D(header[58:70]))
    beneficiario.conta.digito = header[70]
    beneficiario.nome = header[72:102]
    retorno.data_hora = parse_datetime(header[143:151] + ' ' + header[151:157])
    retorno.sequencia = int(header[157:163])
Пример #3
0
def header_retorno_400(self, retorno):
    header = retorno.linhas[0]

    beneficiario = retorno.beneficiario

    beneficiario.agencia.numero = header[26:30]
    beneficiario.agencia.digito = header[30]
    beneficiario.codigo.numero = str(D(header[31:39])).zfill(6)
    beneficiario.codigo.digito = header[39]
    beneficiario.nome = header[46:76]

    retorno.data_hora = parse_datetime(header[94:100]).date()
    retorno.sequencia = int(header[100:107])
Пример #4
0
def header_retorno_400(self, retorno):
    header = retorno.linhas[0]

    beneficiario = retorno.beneficiario

    beneficiario.agencia.numero = header[27:30]
    beneficiario.agencia.digito = header[30]
    beneficiario.codigo.numero = str(D(header[31:39])).zfill(8)
    beneficiario.codigo.digito = header[36]
    beneficiario.nome = header[46:76]

    data =  header[94:98] + '20' + header[98:100]
    retorno.data_hora = parse_datetime(data).date()
    retorno.sequencia = int(header[101:107])
Пример #5
0
def linha_retorno_400(self, retorno):
    beneficiario = retorno.beneficiario
    linha = retorno.linhas[1]

    #
    # Beneficiario
    #
    beneficiario.cnpj_cpf = linha[3:17]
    beneficiario.conta.numero = str(D(linha[22:30]))
    beneficiario.conta.digito = linha[30]

    for i in range(1, len(retorno.linhas) - 1):
        linha = retorno.linhas[i]
        boleto = Boleto()
        boleto.beneficiario = retorno.beneficiario
        boleto.banco = self

        boleto.identificacao = linha[31:56]
        boleto.banco.modalidade = linha[56:58]
        boleto.nosso_numero = str(D(linha[58:73]))
        #boleto.nosso_numero_digito = linha[73]
        #boleto.parcela = int(linha[74:76])
        #boleto.documento.especie = linha[83:85]
        boleto.comando = linha[108:110]
        boleto.data_ocorrencia = parse_datetime(linha[110:116])
        boleto.data_credito = parse_datetime(linha[293:299])

        boleto.valor_despesa_cobranca = D(linha[175:188]) / D('100')

        boleto.valor_desconto = D(linha[240:253]) / D('100')
        boleto.documento.valor = D(linha[253:266]) / D('100')
        boleto.valor_juros = D(linha[266:279]) / D('100')
        boleto.valor_multa = D(linha[279:292]) / D('100')

        boleto.valor_recebido = boleto.documento.valor - boleto.valor_desconto + boleto.valor_juros + boleto.valor_multa

        retorno.boletos.append(boleto)
Пример #6
0
    def _compute_calcular_avos(self):
        for record in self:
            date_begin = record.inicio_aquisitivo

            # Pega data_fim do contexto se existir, para cálculo de simulações
            if "data_fim" in self.env.context:
                hoje = self.env.context['data_fim']
            else:
                hoje = fields.Date.today()

            if hoje < record.fim_aquisitivo:
                date_end = hoje
            else:
                date_end = record.fim_aquisitivo

            date_end2 = date_end
            date_end = fields.Date.from_string(date_end) + \
                       relativedelta(days=1)
            date_end = fields.Date.to_string(date_end)

            #
            # Calcula os avos
            #
            dias_para_adicionar = fields.Date.from_string(date_begin) - \
                                  primeiro_dia_mes(date_begin)
            ultimo_dia_primeiro_mes = ultimo_dia_mes(date_begin)
            if ultimo_dia_primeiro_mes - \
                    parse_datetime(date_begin).date() >= \
                    timedelta(days=14):
                avos_primeiro_mes = 1
            else:
                avos_primeiro_mes = 0

            #
            # Se for para cálculo de rescisão, calcule o avo do fim do
            # período aquisitivo de acordo com instruções abaixo.
            #
            """
            
O cálculo de férias usa a regra dos 15 dias trabalhados no mês, mas leva em 
consideração a data de "aniversário" do período aquisitivo, ou seja, dia 06 de 
cada mês no caso do Antônio, assim teremos; Mar (trabalhou mais de 15 dias), 
Abr, Mai, Jun, Jul, Ago, Set, Out, Nov e Dez/2016 totalizando 10 avos, 
para jan/2017, levando em consideração o dia 06 e a data da rescisão (16/01), 
dá menos que 15 dias trabalhados, não considera o avo.

Transcrevo abaixo o Art. 130 da CLT:

Art. 130 - Após cada período de 12 (doze) meses de vigência do contrato de 
trabalho, o empregado terá direito a férias, na seguinte proporção: (Redação 
dada pelo Decreto-lei nº 1.535, de 13.4.1977)

I - 30 (trinta) dias corridos, quando não houver faltado ao serviço mais de 5 
(cinco) vezes;  (Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

II - 24 (vinte e quatro) dias corridos, quando houver tido de 6 (seis) a 14 
(quatorze) faltas; (Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

III - 18 (dezoito) dias corridos, quando houver tido de 15 (quinze) a 23 
(vinte e três) faltas; (Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

IV - 12 (doze) dias corridos, quando houver tido de 24 (vinte e quatro) a 32 
(trinta e duas) faltas. (Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

§ 1º - É vedado descontar, do período de férias, as faltas do empregado ao 
serviço. (Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

§ 2º - O período das férias será computado, para todos os efeitos, como tempo 
de serviço.(Incluído pelo Decreto-lei nº 1.535, de 13.4.1977)

Como podemos observar, o artigo leva em consideração a vigência do contrato, 
isto é, a data de admissão do funcionário, e combinado com o Art. 146 da CLT, 
fica interpretado que os avos são considerados a partir da data de admissão e 
não do mês civil.

 Observação: Além das informações acima, consultamos o nosso apoio jurídico 
 trabalhista IOB.
 Carlos Eduardo Silva
            """
            # if date_end2 == record.contract_id.date_end:
            #     primeiro_dia_ultimo_mes = \
            #         primeiro_dia_mes(date_end) + dias_para_adicionar
            # else:
            primeiro_dia_ultimo_mes = primeiro_dia_mes(date_end)

            ultimo_dia_ultimo_mes = ultimo_dia_mes(date_end)
            avos_ultimo_mes = 0
            dias = parse_datetime(date_end).date() - primeiro_dia_ultimo_mes
            dias_mes = ultimo_dia_ultimo_mes - primeiro_dia_ultimo_mes
            if dias > timedelta(days=15):
                avos_ultimo_mes = 1
            elif dias == timedelta(days=15):
                if dias_mes != timedelta(days=30):
                    avos_ultimo_mes = 1

            primeiro_dia_mes_cheio = ultimo_dia_mes(date_begin) + \
                                     timedelta(days=1)
            ultimo_dia_mes_cheio = primeiro_dia_mes(date_end)
            avos_meio = idade_meses(parse_datetime(primeiro_dia_mes_cheio),
                                    parse_datetime(ultimo_dia_mes_cheio))

            avos = avos_primeiro_mes + avos_meio + avos_ultimo_mes

            # TODO: Essa correção foi criada para que o sistema não aceite
            # mais que 12 avos em um só período, mas deverá ser corrigido
            # por uma correção definitiva.
            if avos > 12:
                avos = 12

            record.avos = avos
Пример #7
0
    def atualizar_tabela(self):
        self.ensure_one()

        sped_ncm = self.env['sped.ncm']
        sped_nbs = self.env['sped.nbs']
        sped_servico = self.env['sped.servico']
        sped_icms = self.env['sped.aliquota.icms.proprio']
        ibptax_ncm = self.env['sped.ibptax.ncm']
        ibptax_nbs = self.env['sped.ibptax.nbs']
        ibptax_servico = self.env['sped.ibptax.servico']

        versao = '17.1.A'
        arquivo = '/home/ari/tauga/tauga_addons/sped/data/ibptax/' \
            'TabelaIBPTax{uf}{versao}.csv'.format(
                uf=self.estado_id.uf, versao=versao)

        ncm_ids = ibptax_ncm.search([('ibptax_id', '=', self.id)])
        ncm_ids.unlink()

        nbs_ids = ibptax_nbs.search([('ibptax_id', '=', self.id)])
        nbs_ids.unlink()

        servico_ids = ibptax_servico.search([('ibptax_id', '=', self.id)])
        servico_ids.unlink()

        arq = open(arquivo, 'r')

        for linha in arq.readlines():
            codigo, ex, tipo, descricao, nacionalfederal, importadosfederal, \
                estadual, municipal, vigenciainicio, vigenciafim, chave, \
                versao, fonte = linha.decode('iso-8859-1').split(';')

            if tipo == '0':
                ncm_ids = sped_ncm.search([('codigo', '=', codigo),
                                           ('ex', '=', ex)])

                if len(ncm_ids) == 0:
                    dados = {
                        'codigo': codigo,
                        'ex': ex,
                        'descricao': descricao,
                    }
                    ncm_ids = sped_ncm.create(dados)

                icms_ids = sped_icms.search([('al_icms', '=', D(estadual))])

                dados = {
                    'ibptax_id': self.id,
                    'ncm_id': ncm_ids[0].id,
                    'al_ibpt_nacional': D(nacionalfederal),
                    'al_ibpt_internacional': D(importadosfederal),
                    'al_ibpt_estadual': D(estadual),
                    'al_icms_id': icms_ids[0].id if len(icms_ids) else False,
                }
                ibptax_ncm.create(dados)

            elif tipo == '1':
                nbs_ids = sped_nbs.search([('codigo', '=', codigo)])

                if len(nbs_ids) == 0:
                    dados = {
                        'codigo': codigo,
                        'descricao': descricao,
                    }
                    nbs_ids = sped_nbs.create(dados)

                dados = {
                    'ibptax_id': self.id,
                    'nbs_id': nbs_ids[0].id,
                    'al_ibpt_nacional': D(nacionalfederal),
                    'al_ibpt_internacional': D(importadosfederal),
                    'al_ibpt_municipal': D(municipal),
                }
                ibptax_nbs.create(dados)

            elif tipo == '2' and descricao != 'Vetado':
                servico_ids = sped_servico.search([('codigo', '=', codigo)])

                if len(servico_ids) == 0:
                    dados = {
                        'codigo': codigo,
                        'descricao': descricao,
                    }
                    servico_ids = sped_servico.create(dados)

                dados = {
                    'ibptax_id': self.id,
                    'servico_id': servico_ids[0].id,
                    'al_ibpt_nacional': D(nacionalfederal),
                    'al_ibpt_internacional': D(importadosfederal),
                    'al_ibpt_municipal': D(municipal),
                }
                ibptax_servico.create(dados)

        arq.close()
        self.data_validade = str(parse_datetime(vigenciafim))[:10]
        self.versao = versao
Пример #8
0
def linha_retorno_400(self, retorno):
    beneficiario = retorno.beneficiario
    linha = retorno.linhas[1]

    #
    # Beneficiario
    #
    beneficiario.cnpj_cpf = linha[3:17]

    if linha[107] == '5':
        self.carteira = '101'
    else:
        self.carteira = '102'

    beneficiario.agencia.numero = linha[17:21]
    beneficiario.conta.numero = linha[21:29]
    #beneficiario.conta.digito = linha[36]

    for i in range(1, len(retorno.linhas) - 1):
        linha = retorno.linhas[i]
        boleto = Boleto()
        boleto.beneficiario = retorno.beneficiario
        boleto.banco = self

        boleto.identificacao = linha[37:62]

        #
        # Para pegar o último dígito (que não era o DV antes) - 01/06/2016 10:15
        # boleto.nosso_numero = str(D(linha[62:70]))
        #
        # Para ignorar o último dígito (que passou a ser o DV) - 01/06/2016 10:15
        # boleto.nosso_numero = str(D(linha[62:69]))
        #
        boleto.nosso_numero = str(D(linha[62:69]))
        #boleto.nosso_numero_digito = linha[82]

        if linha[107] == '5':
            boleto.banco.carteira = '101'
        else:
            boleto.banco.carteira = '102'

        boleto.comando = linha[108:110]
        boleto.data_ocorrencia = parse_datetime(linha[110:116]).date()
        boleto.documento.numero = linha[116:126]
        if linha[146:152].strip() != '000000':
            boleto.data_vencimento = parse_datetime(linha[146:152]).date()
        boleto.documento.valor = D(linha[152:165]) / D('100')
        boleto.valor_despesa_cobranca = D(linha[175:188]) / D('100')
        #boleto.valor_outras_despesas = D(linha[188:201]) / D('100')
        boleto.valor_multa = D(linha[188:201]) / D('100')
        boleto.valor_iof = D(linha[214:227]) / D('100')
        boleto.valor_abatimento = D(linha[227:240]) / D('100')
        boleto.valor_desconto = D(linha[240:253]) / D('100')
        boleto.valor_recebido = D(linha[253:266]) / D('100')
        boleto.valor_juros = D(linha[266:279]) / D('100')
        boleto.valor_outros_creditos = D(linha[279:292]) / D('100')

        if len(linha[295:301].strip()) > 0 and linha[295:301] != '000000':
            boleto.data_credito = parse_datetime(linha[295:301]).date()

        #boleto.pagador.cnpj_cpf = linha[342:357]

        retorno.boletos.append(boleto)