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])
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])
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])
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])
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)
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
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
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)