From 70549a31693b8be918c7436e84729d4478a87f80 Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Wed, 10 Jun 2020 00:28:08 -0300 Subject: [PATCH] Starting to fix the pep issues and cleanup the code --- .../models/sped_efd_contribuicoes.py | 325 ++++++++------- br_sped_efd_icms_ipi/models/sped_icms_ipi.py | 374 ++++++++++-------- requirements.txt | 3 +- 3 files changed, 389 insertions(+), 313 deletions(-) diff --git a/br_sped_efd_contribuicoes/models/sped_efd_contribuicoes.py b/br_sped_efd_contribuicoes/models/sped_efd_contribuicoes.py index b83d56543..7ad4fa094 100644 --- a/br_sped_efd_contribuicoes/models/sped_efd_contribuicoes.py +++ b/br_sped_efd_contribuicoes/models/sped_efd_contribuicoes.py @@ -45,14 +45,14 @@ class SpedEfdContribuicoes(models.Model): _description = "Cria o arquivo para o Sped Contribuicoes Pis/Cofins" _order = "date_start desc" - date_start= fields.Date(string='Inicio de') + date_start = fields.Date(string='Inicio de') date_end = fields.Date(string='até') tipo_escrit = fields.Selection([ ('0', 'Original'), ('1', 'Retificadora'), - ], string='Tipo Escrituração', default='0') + ], string='Tipo Escrituração', default='0') num_rec_anterior = fields.Char( - string=u"Número recibo anterior") + string=u"Número recibo anterior") ind_nat_pj = fields.Selection([ ('0', 'Sociedade empresárial geral'), ('1', 'Sociedade Cooperativa'), @@ -60,7 +60,7 @@ class SpedEfdContribuicoes(models.Model): ('3', 'Pessoa jurídica participante SCP como sócia ostensiva'), ('4', 'Sociedade cooperativa participante SCP como sócia ostensiva'), ('5', 'Sociedade em Conta de Participação - SCP'), - ], string='Indicador natureza pessoa jurídica', default='0') + ], string='Indicador natureza pessoa jurídica', default='0') ind_ativ = fields.Selection([ ('0', 'Industrial ou equiparado a industrial'), ('1', 'Prestador de serviços'), @@ -68,30 +68,30 @@ class SpedEfdContribuicoes(models.Model): ('3', 'Pessoas jurídicas Lei no 9.718, de 1998'), ('4', 'Atividade imobiliária'), ('9', 'Outros'), - ], string='Indicador atividade preponderante') + ], string='Indicador atividade preponderante') # 0110 cod_inc_trib = fields.Selection([ ('1', 'Escrit. oper. incid. exclus. regime não-cumulativo'), ('2', 'Escrit. oper. incid. exclus. regime cumulativo'), ('3', 'Escrit. oper. incid. regimes não-cumulativo e cumulativo'), - ], string='Cód. incidência tributária') + ], string='Cód. incidência tributária') ind_apro_cred = fields.Selection([ ('1', 'Método de Apropriação Direta'), ('2', 'Método de Rateio Proporcional (Receita Bruta)'), - ], string='Método apropriação de créditos') + ], string='Método apropriação de créditos') cod_tipo_cont = fields.Selection([ ('1', 'Apuração da Contribuição Exclusivamente a Alíquota Básica'), ('2', 'Apuração da Contribuição a Alíquotas Específicas (Diferenciadas e/ou por Unidade de Medida de Produto)'), - ], string='Tipo de Contribuição Apurada') + ], string='Tipo de Contribuição Apurada') ind_reg_cum = fields.Selection([ ('1', 'Regime de Caixa –Escrituração consolidada (Registro F500)'), ('2', 'Regime de Competência -Escrituração consolidada (Registro F550)'), ('9', 'Regime de Competência -Escrituração detalhada, com base nos registros dos Blocos “A”, “C”, “D” e “F”'), - ], string='Critério de Escrituração e Apuração Adotado') - + ], string='Critério de Escrituração e Apuração Adotado') + log_faturamento = fields.Html('Log de Faturamento') company_id = fields.Many2one('res.company', string='Empresa', required=True, - default=lambda self: self.env['res.company']._company_default_get('account.account')) + default=lambda self: self.env['res.company']._company_default_get('account.account')) sped_file = fields.Binary(string=u"Sped") sped_file_name = fields.Char( string=u"Arquivo Sped Contribuições") @@ -99,7 +99,8 @@ class SpedEfdContribuicoes(models.Model): @api.multi def create_file(self): if self.date_start > self.date_end: - raise UserError('Erro, a data de início é maior que a data de encerramento!') + raise UserError( + 'Erro, a data de início é maior que a data de encerramento!') self.log_faturamento = 'Gerando arquivo ..
' if self.date_start and self.date_end: self.registro0000() @@ -110,9 +111,9 @@ def create_file(self): } def versao(self): - #if fields.Datetime.from_string(self.dt_ini) >= datetime.datetime(2018, 1, 1): + # if fields.Datetime.from_string(self.dt_ini) >= datetime.datetime(2018, 1, 1): # return '012' - return '006' + return '006' def limpa_caracteres(self, data): if data: @@ -123,7 +124,7 @@ def limpa_caracteres(self, data): def limpa_formatacao(self, data): if data: - replace = ['-', ' ', '(', ')', '/', '.', ':','º'] + replace = ['-', ' ', '(', ')', '/', '.', ':', 'º'] for i in replace: data = data.replace(i, '') return data @@ -139,30 +140,32 @@ def junta_pipe(self, registro): def registro0000(self): arq = ArquivoDigital() - cod_mun = '%s%s' %(self.company_id.state_id.ibge_code, self.company_id.city_id.ibge_code) + cod_mun = '%s%s' % (self.company_id.state_id.ibge_code, + self.company_id.city_id.ibge_code) arq._registro_abertura.COD_VER = self.versao() - arq._registro_abertura.TIPO_ESCRIT = 0 # 0 - Original , 1 - Retificadora + arq._registro_abertura.TIPO_ESCRIT = 0 # 0 - Original , 1 - Retificadora arq._registro_abertura.DT_INI = self.date_start arq._registro_abertura.DT_FIN = self.date_end arq._registro_abertura.NOME = self.company_id.legal_name - arq._registro_abertura.CNPJ = self.limpa_formatacao(self.company_id.cnpj_cpf) + arq._registro_abertura.CNPJ = self.limpa_formatacao( + self.company_id.cnpj_cpf) arq._registro_abertura.UF = self.company_id.state_id.code arq._registro_abertura.COD_MUN = self.formata_cod_municipio(cod_mun) arq._registro_abertura.SUFRAMA = '' - arq._registro_abertura.IND_NAT_PJ = '00' # 00 – Pessoa jurídica em geral - arq._registro_abertura.IND_ATIV = '2' # 2 - Atividade de comércio; + arq._registro_abertura.IND_NAT_PJ = '00' # 00 – Pessoa jurídica em geral + arq._registro_abertura.IND_ATIV = '2' # 2 - Atividade de comércio; if self.company_id.accountant_id: contabilista = Registro0100() ctd = self.company_id.accountant_id if len(self.company_id.accountant_id.cnpj_cpf) > 14: if self.company_id.accountant_id.child_ids: ctd = self.company_id.accountant_id.child_ids[0] - else: + else: msg_err = 'Cadastre o contador Pessoa Fisica dentro do Contato da Contabilidade' raise UserError(msg_err) contador = ctd.name cpf = ctd.cnpj_cpf - cod_mun = '%s%s' %(ctd.state_id.ibge_code, ctd.city_id.ibge_code) + cod_mun = '%s%s' % (ctd.state_id.ibge_code, ctd.city_id.ibge_code) contabilista.NOME = contador contabilista.CPF = self.limpa_formatacao(cpf) contabilista.CRC = self.limpa_formatacao(ctd.rg_fisica) @@ -175,14 +178,17 @@ def registro0000(self): contabilista.EMAIL = ctd.email contabilista.COD_MUN = cod_mun arq._blocos['0'].add(contabilista) - + reg110 = Registro0110() - reg110.COD_INC_TRIB = self.cod_inc_trib # Cód. ind. da incidência tributária - reg110.IND_APRO_CRED = self.ind_apro_cred # Cód. ind. de método de apropriação de créditos comuns - reg110.COD_TIPO_CONT = self.cod_tipo_cont # Cód. ind. do Tipo de Contribuição Apurada - reg110.IND_REG_CUM = self.ind_reg_cum # Cód. ind. do critério de escrituração e apuração adotado + reg110.COD_INC_TRIB = self.cod_inc_trib # Cód. ind. da incidência tributária + # Cód. ind. de método de apropriação de créditos comuns + reg110.IND_APRO_CRED = self.ind_apro_cred + # Cód. ind. do Tipo de Contribuição Apurada + reg110.COD_TIPO_CONT = self.cod_tipo_cont + # Cód. ind. do critério de escrituração e apuração adotado + reg110.IND_REG_CUM = self.ind_reg_cum arq._blocos['0'].add(reg110) - + reg0140 = Registro0140() reg0140.COD_EST = str(self.company_id.id) reg0140.NOME = self.company_id.name @@ -192,16 +198,16 @@ def registro0000(self): reg0140.COD_MUN = cod_mun reg0140.IM = '' reg0140.SUFRAMA = '' - arq._blocos['0'].add(reg0140) + arq._blocos['0'].add(reg0140) dt = self.date_start - dta_s = '%s-%s-%s' %(str(dt.year),str(dt.month).zfill(2), - str(dt.day).zfill(2)) + dta_s = '%s-%s-%s' % (str(dt.year), str(dt.month).zfill(2), + str(dt.day).zfill(2)) dt = self.date_end - dta_e = '%s-%s-%s' %(str(dt.year),str(dt.month).zfill(2), - str(dt.day).zfill(2)) + dta_e = '%s-%s-%s' % (str(dt.year), str(dt.month).zfill(2), + str(dt.day).zfill(2)) periodo = 'date_trunc(\'day\', ie.data_fatura) \ - between \'%s\' and \'%s\'' %(dta_s, dta_e) + between \'%s\' and \'%s\'' % (dta_s, dta_e) # FORNECEDORES for item_lista in self.query_registro0150(periodo): arq.read_registro(self.junta_pipe(item_lista)) @@ -219,10 +225,10 @@ def registro0000(self): for item_unit in self.query_registro0220(item_lista.COD_ITEM): arq.read_registro(self.junta_pipe(item_unit)) """ - + for item_lista in self.query_registro0400(periodo): arq.read_registro(self.junta_pipe(item_lista)) - + # TODO - Colocar Na Tela pra ser informado a CONTA e DESCRICAO reg500 = Registro0500() reg500.DT_ALT = datetime.strptime('2017-11-01', '%Y-%m-%d') @@ -232,7 +238,7 @@ def registro0000(self): reg500.COD_CTA = '1.1.06.11.00.00' reg500.NOME_CTA = 'MERCADORIA REVENDA ISENTA' arq._blocos['0'].add(reg500) - + reg500 = Registro0500() reg500.DT_ALT = datetime.strptime('2017-11-01', '%Y-%m-%d') reg500.COD_NAT_CC = '01' @@ -241,7 +247,7 @@ def registro0000(self): reg500.COD_CTA = '1.1.06.05.00.00' reg500.NOME_CTA = 'MERCADORIA REVENDA TRIBUTADA' arq._blocos['0'].add(reg500) - + query = """ select distinct ie.id, ie.state, ie.emissao_doc @@ -270,23 +276,23 @@ def registro0000(self): if id[2] == '2' and id[1] == 'cancel': continue regC001.IND_MOV = '0' - # TODO C100 - Notas Fiscais - Feito + # TODO C100 - Notas Fiscais - Feito for item_lista in self.query_registroC100(id[0]): arq.read_registro(self.junta_pipe(item_lista)) - # TODO C101 - DIFAL - Feito - #for item_lista in self.query_registroC101(self.fatura): + # TODO C101 - DIFAL - Feito + # for item_lista in self.query_registroC101(self.fatura): # arq.read_registro(self.junta_pipe(item_lista)) # TODO C110 - Inf. Adiciontal - + # TODO C170 - Itens Nota Fiscal de Compras = Fazendo for item_lista in self.query_registroC170(id[0]): arq.read_registro(self.junta_pipe(item_lista)) - - # TODO BLOCO D - prestações ou contratações de serviços + + # TODO BLOCO D - prestações ou contratações de serviços # de comunicação, transporte interestadual e intermunicipa # TODO D100 - Periodo Apuracao - + query = """ select distinct ie.id, ie.state @@ -315,26 +321,26 @@ def registro0000(self): ('data_fatura','<=',g_intervalo[1]), ]) """ - #for cte in resposta_cte: - # TODO D100 - Documentos Transporte - #TODO DEIXAMOS FORA POIS NAO EXISTE NO ATS ADMIN - #for item_lista in self.query_registroD100(cte.invoice_id.id): - #arq.read_registro(self.junta_pipe(item_lista)) - - # TODO D190 - Totalizacao por CST - #for item_lista in self.query_registroD190(cte.invoice_id.id): - # arq.read_registro(self.junta_pipe(item_lista)) + # for cte in resposta_cte: + # TODO D100 - Documentos Transporte + # TODO DEIXAMOS FORA POIS NAO EXISTE NO ATS ADMIN + # for item_lista in self.query_registroD100(cte.invoice_id.id): + # arq.read_registro(self.junta_pipe(item_lista)) + + # TODO D190 - Totalizacao por CST + # for item_lista in self.query_registroD190(cte.invoice_id.id): + # arq.read_registro(self.junta_pipe(item_lista)) regF001 = RegistroF001() regF001.IND_MOV = '1' - + #regF990 = RegistroF990() #regF990.QTD_LIN_F = 1 - #arq._blocos['F'].add(regF001) + # arq._blocos['F'].add(regF001) regI001 = RegistroI001() regI001.IND_MOV = '1' - #arq._blocos['I'].add(regI990) - + # arq._blocos['I'].add(regI990) + # é gerados pelo VALIDADOR for item_lista in self.query_registroM200(periodo): arq.read_registro(self.junta_pipe(item_lista)) @@ -347,8 +353,7 @@ def registro0000(self): # é gerados pelo VALIDADOR for item_lista in self.query_registroM600(periodo): arq.read_registro(self.junta_pipe(item_lista)) - - + """ regM800 = RegistroM800() regM800.CST_COFINS = '06' @@ -361,21 +366,22 @@ def registro0000(self): arq.read_registro(self.junta_pipe(item_lista)) for item_lista in self.query_registroM810(item_lista.CST_COFINS, periodo): arq.read_registro(self.junta_pipe(item_lista)) - + regP001 = RegistroP001() regP001.IND_MOV = '1' - + #import pudb;pu.db registro_1001 = Registro1001() registro_1001.IND_MOV = '1' - #arq._blocos['1'].add(registro_1001) + # arq._blocos['1'].add(registro_1001) arq.prepare() - self.sped_file_name = 'PisCofins-%s_%s.txt' % ( + self.sped_file_name = 'PisCofins-%s_%s.txt' % ( str(dt.month).zfill(2), str(dt.year)) #arqxx = open('/opt/odoo/novo_arquivo.txt', 'w') - #arqxx.write(arq.getstring()) - #arqxx.close() - self.sped_file = base64.encodestring(bytes(arq.getstring(), 'iso-8859-1')) + # arqxx.write(arq.getstring()) + # arqxx.close() + self.sped_file = base64.encodestring( + bytes(arq.getstring(), 'iso-8859-1')) def query_registro0150(self, periodo): query = """ @@ -399,17 +405,20 @@ def query_registro0150(self, periodo): cod_pais = resposta_participante.country_id.bc_code registro_0150.COD_PAIS = cod_pais cpnj_cpf = self.limpa_formatacao(resposta_participante.cnpj_cpf) - cod_mun = '%s%s' %(resposta_participante.state_id.ibge_code, resposta_participante.city_id.ibge_code) + cod_mun = '%s%s' % (resposta_participante.state_id.ibge_code, + resposta_participante.city_id.ibge_code) if cod_pais == '01058': registro_0150.COD_MUN = self.formata_cod_municipio(cod_mun) if len(cpnj_cpf) == 11: registro_0150.CPF = cpnj_cpf else: registro_0150.CNPJ = cpnj_cpf - registro_0150.IE = self.limpa_formatacao(resposta_participante.inscr_est) + registro_0150.IE = self.limpa_formatacao( + resposta_participante.inscr_est) else: registro_0150.COD_MUN = '9999999' - registro_0150.SUFRAMA = self.limpa_formatacao(resposta_participante.suframa) + registro_0150.SUFRAMA = self.limpa_formatacao( + resposta_participante.suframa) if resposta_participante.street: registro_0150.END = resposta_participante.street.strip() if resposta_participante.number: @@ -460,12 +469,13 @@ def query_registro0190(self, periodo): unidade = id[0] unidade = unidade[:6] if un == unidade: - continue + continue lista_un.append(unidade) registro_0190.UNID = unidade desc = id[1] if not desc: - msg_err = 'Unidade de medida sem descricao - Un %s.' %(unidade) + msg_err = 'Unidade de medida sem descricao - Un %s.' % ( + unidade) raise UserError(msg_err) registro_0190.DESCR = desc.strip() lista.append(registro_0190) @@ -510,7 +520,8 @@ def query_registro0200(self, periodo): if resposta_produto.barcode != resposta_produto.default_code: registro_0200.COD_BARRA = resposta_produto.barcode if resposta_produto.uom_id.name.find('-') != -1: - unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find('-')] + unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find( + '-')] else: unidade = resposta_produto.uom_id.name unidade = unidade.strip() @@ -518,8 +529,9 @@ def query_registro0200(self, periodo): unidade = unidade[:6] registro_0200.UNID_INV = unidade[:6] registro_0200.TIPO_ITEM = resposta_produto.l10n_br_sped_type - registro_0200.COD_NCM = self.limpa_formatacao(resposta_produto.fiscal_classification_id.code) - lista.append(registro_0200) + registro_0200.COD_NCM = self.limpa_formatacao( + resposta_produto.fiscal_classification_id.code) + lista.append(registro_0200) return lista def query_registro0400(self, periodo): @@ -544,12 +556,13 @@ def query_registro0400(self, periodo): query_resposta = self._cr.fetchall() lista = [] for resposta in query_resposta: - resposta_nat = self.env['account.fiscal.position'].browse(resposta[0]) + resposta_nat = self.env['account.fiscal.position'].browse( + resposta[0]) registro_0400 = registros.Registro0400() registro_0400.COD_NAT = str(resposta_nat.id) registro_0400.DESCR_NAT = resposta_nat.natureza_operacao lista.append(registro_0400) - return lista + return lista def transforma_valor(self, valor): valor = ("%.2f" % (float(valor))) @@ -558,15 +571,15 @@ def transforma_valor(self, valor): def query_registroC100(self, doc): lista = [] nfe_ids = self.env['invoice.eletronic'].browse(doc) - for nf in nfe_ids: + for nf in nfe_ids: if (nf.state == 'done') and (nf.model == '55'): - cancel = False + cancel = False registro_c100 = registros.RegistroC100() if nf.tipo_operacao == 'entrada': registro_c100.IND_OPER = '0' else: registro_c100.IND_OPER = '1' - if nf.emissao_doc == '1': + if nf.emissao_doc == '1': registro_c100.IND_EMIT = '0' else: registro_c100.IND_EMIT = '1' @@ -580,27 +593,38 @@ def query_registroC100(self, doc): registro_c100.CHV_NFE = nf.chave_nfe registro_c100.NUM_DOC = self.limpa_formatacao(str(nf.numero)) if not cancel: - registro_c100.DT_DOC = nf.data_emissao + registro_c100.DT_DOC = nf.data_emissao if nf.data_fatura: - registro_c100.DT_E_S = nf.data_fatura + registro_c100.DT_E_S = nf.data_fatura else: - registro_c100.DT_E_S = nf.data_emissao + registro_c100.DT_E_S = nf.data_emissao if nf.metodo_pagamento: registro_c100.IND_PGTO = nf.metodo_pagamento - registro_c100.VL_MERC = self.transforma_valor(nf.valor_bruto) + registro_c100.VL_MERC = self.transforma_valor( + nf.valor_bruto) registro_c100.IND_FRT = str(nf.modalidade_frete) - registro_c100.VL_FRT = self.transforma_valor(nf.valor_frete) - registro_c100.VL_SEG = self.transforma_valor(nf.valor_seguro) - registro_c100.VL_OUT_DA = self.transforma_valor(nf.valor_despesas) - registro_c100.VL_DESC = self.transforma_valor(nf.valor_desconto) - registro_c100.VL_DOC = self.transforma_valor(nf.valor_final) - registro_c100.VL_BC_ICMS = self.transforma_valor(nf.valor_bc_icms) - registro_c100.VL_ICMS = self.transforma_valor(nf.valor_icms) - registro_c100.VL_BC_ICMS_ST = self.transforma_valor(nf.valor_bc_icmsst) - registro_c100.VL_ICMS_ST = self.transforma_valor(nf.valor_icmsst) + registro_c100.VL_FRT = self.transforma_valor( + nf.valor_frete) + registro_c100.VL_SEG = self.transforma_valor( + nf.valor_seguro) + registro_c100.VL_OUT_DA = self.transforma_valor( + nf.valor_despesas) + registro_c100.VL_DESC = self.transforma_valor( + nf.valor_desconto) + registro_c100.VL_DOC = self.transforma_valor( + nf.valor_final) + registro_c100.VL_BC_ICMS = self.transforma_valor( + nf.valor_bc_icms) + registro_c100.VL_ICMS = self.transforma_valor( + nf.valor_icms) + registro_c100.VL_BC_ICMS_ST = self.transforma_valor( + nf.valor_bc_icmsst) + registro_c100.VL_ICMS_ST = self.transforma_valor( + nf.valor_icmsst) registro_c100.VL_IPI = self.transforma_valor(nf.valor_ipi) registro_c100.VL_PIS = self.transforma_valor(nf.valor_pis) - registro_c100.VL_COFINS = self.transforma_valor(nf.valor_cofins) + registro_c100.VL_COFINS = self.transforma_valor( + nf.valor_cofins) registro_c100.COD_PART = str(nf.partner_id.id) lista.append(registro_c100) return lista @@ -608,18 +632,20 @@ def query_registroC100(self, doc): def query_registroC170(self, doc): lista = [] nfe_line = self.env['invoice.eletronic.item'].search([ - ('invoice_eletronic_id','=', doc), - ], order='num_item') + ('invoice_eletronic_id', '=', doc), + ], order='num_item') n_item = 1 for item in nfe_line: registro_c170 = registros.RegistroC170() if item.num_item > 1: registro_c170.NUM_ITEM = str(item.num_item) else: - registro_c170.NUM_ITEM = str(n_item) # str(item.num_item_xml or n_item) - cprod = item.product_id.default_code #.replace('.','') + # str(item.num_item_xml or n_item) + registro_c170.NUM_ITEM = str(n_item) + cprod = item.product_id.default_code # .replace('.','') registro_c170.COD_ITEM = cprod - registro_c170.DESCR_COMPL = self.limpa_caracteres(item.name.strip()) + registro_c170.DESCR_COMPL = self.limpa_caracteres( + item.name.strip()) registro_c170.QTD = self.transforma_valor(item.quantidade) if item.uom_id.name.find('-') != -1: unidade = item.uom_id.name[:item.uom_id.name.find('-')] @@ -633,63 +659,77 @@ def query_registroC170(self, doc): else: registro_c170.IND_MOV = '0' try: - registro_c170.CST_ICMS = '%s%s' %(str(item.origem), str(item.icms_cst)) + registro_c170.CST_ICMS = '%s%s' % ( + str(item.origem), str(item.icms_cst)) except: - msg_err = 'Sem CST na Fatura %s.
' %(str(resposta.number or resposta.id)) + msg_err = 'Sem CST na Fatura %s.
' % ( + str(resposta.number or resposta.id)) #raise UserError(msg_err) self.log_faturamento += msg_err if item.cfop: registro_c170.CFOP = str(item.cfop) else: registro_c170.CFOP = '0000' - #if r_nfe.id == 407: + # if r_nfe.id == 407: # import pudb;pu.db - registro_c170.COD_NAT = str(item.invoice_eletronic_id.fiscal_position_id.id) - registro_c170.VL_BC_ICMS = self.transforma_valor(item.icms_base_calculo) + registro_c170.COD_NAT = str( + item.invoice_eletronic_id.fiscal_position_id.id) + registro_c170.VL_BC_ICMS = self.transforma_valor( + item.icms_base_calculo) registro_c170.ALIQ_ICMS = '0' registro_c170.ALIQ_ICMS = self.transforma_valor(item.icms_aliquota) - + registro_c170.VL_ICMS = self.transforma_valor(item.icms_valor) - registro_c170.VL_BC_ICMS_ST = self.transforma_valor(item.icms_st_base_calculo) + registro_c170.VL_BC_ICMS_ST = self.transforma_valor( + item.icms_st_base_calculo) if item.icms_st_aliquota: - registro_c170.ALIQ_ST = self.transforma_valor(item.icms_st_aliquota) - registro_c170.VL_ICMS_ST = self.transforma_valor(item.icms_st_valor) + registro_c170.ALIQ_ST = self.transforma_valor( + item.icms_st_aliquota) + registro_c170.VL_ICMS_ST = self.transforma_valor( + item.icms_st_valor) # TODO incluir na empresa o IND_APUR registro_c170.IND_APUR = '0' registro_c170.CST_IPI = item.ipi_cst - registro_c170.VL_BC_IPI = self.transforma_valor(item.ipi_base_calculo) + registro_c170.VL_BC_IPI = self.transforma_valor( + item.ipi_base_calculo) if item.ipi_aliquota: - registro_c170.ALIQ_IPI = self.transforma_valor(item.ipi_aliquota) + registro_c170.ALIQ_IPI = self.transforma_valor( + item.ipi_aliquota) registro_c170.VL_IPI = self.transforma_valor(item.ipi_valor) registro_c170.CST_PIS = item.pis_cst - registro_c170.VL_BC_PIS = self.transforma_valor(item.pis_base_calculo) + registro_c170.VL_BC_PIS = self.transforma_valor( + item.pis_base_calculo) registro_c170.ALIQ_PIS = self.transforma_valor(item.pis_aliquota) - #registro_c170.QUANT_BC_PIS = self.transforma_valor( + # registro_c170.QUANT_BC_PIS = self.transforma_valor( registro_c170.VL_PIS = self.transforma_valor(item.pis_valor) registro_c170.CST_COFINS = item.cofins_cst - registro_c170.VL_BC_COFINS = self.transforma_valor(item.cofins_base_calculo) - registro_c170.ALIQ_COFINS = self.transforma_valor(item.cofins_aliquota) - #registro_c170.QUANT_BC_COFINS = self.transforma_valor( + registro_c170.VL_BC_COFINS = self.transforma_valor( + item.cofins_base_calculo) + registro_c170.ALIQ_COFINS = self.transforma_valor( + item.cofins_aliquota) + # registro_c170.QUANT_BC_COFINS = self.transforma_valor( registro_c170.VL_COFINS = self.transforma_valor(item.cofins_valor) n_item += 1 - + lista.append(registro_c170) return lista # transporte - #TODO DEIXAMOS FORA POIS NAO EXISTE NO ATS ADMIN + # TODO DEIXAMOS FORA POIS NAO EXISTE NO ATS ADMIN def query_registroD100(self, doc): lista = [] resposta_cte = self.env['account.invoice'].browse(fatura) for resposta in resposta_cte: - cte = self.env['invoice.eletronic'].search([('invoice_id','=',fatura)]) + cte = self.env['invoice.eletronic'].search( + [('invoice_id', '=', fatura)]) registro_d100 = registros.RegistroD100() - registro_d100.IND_OPER = '0' # Aquisicao - registro_d100.IND_EMIT = '1' # Terceiros + registro_d100.IND_OPER = '0' # Aquisicao + registro_d100.IND_EMIT = '1' # Terceiros registro_d100.COD_PART = str(resposta.partner_id.id) - registro_d100.COD_MOD = str(resposta.nfe_modelo) # or resposta_nfe.product_document_id.code).zfill(2) - #if cte.tp_emiss_cte == '1': + # or resposta_nfe.product_document_id.code).zfill(2) + registro_d100.COD_MOD = str(resposta.nfe_modelo) + # if cte.tp_emiss_cte == '1': registro_d100.COD_SIT = '00' """ elif cte.tp_emiss_cte == '2': @@ -709,22 +749,29 @@ def query_registroD100(self, doc): elif cte.tp_emiss_cte == '9': registro_d100.COD_SIT = '08' """ - registro_d100.SER = resposta.nfe_serie[:3] # resposta.product_serie_id.code + registro_d100.SER = resposta.nfe_serie[: + 3] # resposta.product_serie_id.code if resposta.nfe_chave: if len(resposta.nfe_chave) != 44: - msg_err = 'Tamanho da Chave NFe invalida - Fatura %s.' %(str(resposta.number or resposta.id)) + msg_err = 'Tamanho da Chave NFe invalida - Fatura %s.' % ( + str(resposta.number or resposta.id)) #raise UserError(msg_err) self.log_faturamento += msg_err - registro_d100.CHV_CTE = str(resposta.nfe_chave) # or resposta_nfe.chave_nfe - registro_d100.NUM_DOC = self.limpa_formatacao(str(cte.numero)) # or resposta_nfe.numero)) + # or resposta_nfe.chave_nfe + registro_d100.CHV_CTE = str(resposta.nfe_chave) + registro_d100.NUM_DOC = self.limpa_formatacao( + str(cte.numero)) # or resposta_nfe.numero)) registro_d100.DT_A_P = cte.data_fatura or resposta.date_invoice registro_d100.DT_DOC = cte.data_emissao or resposta.date_invoice - #registro_d100.TP_CT-e = '0' # NORMAL + # registro_d100.TP_CT-e = '0' # NORMAL registro_d100.VL_DOC = self.transforma_valor(resposta.amount_total) - registro_d100.VL_DESC = self.transforma_valor(resposta.total_desconto) - registro_d100.IND_FRT = '1' # Destinatario - registro_d100.VL_SERV = self.transforma_valor(resposta.amount_total) - registro_d100.VL_BC_ICMS = self.transforma_valor(resposta.icms_base) + registro_d100.VL_DESC = self.transforma_valor( + resposta.total_desconto) + registro_d100.IND_FRT = '1' # Destinatario + registro_d100.VL_SERV = self.transforma_valor( + resposta.amount_total) + registro_d100.VL_BC_ICMS = self.transforma_valor( + resposta.icms_base) registro_d100.VL_ICMS = self.transforma_valor(resposta.icms_value) registro_d100.VL_NT = '0' registro_d100.COD_INF = '' @@ -766,7 +813,7 @@ def query_registroD120(self, fatura): registro_d110.VL_SERV = self.transforma_valor(itens.price_subtotal) registro_d110.VL_OUT = '0' item += 1 - """ + """ # transporte - analitico def query_registroD190(self, fatura): @@ -893,8 +940,8 @@ def query_registroM200(self, periodo): regM210.COD_CONT = '51' regM210.VL_REC_BRT = self.transforma_valor(resposta[0]) regM210.VL_BC_CONT = self.transforma_valor(resposta[0]) - regM210.VL_AJUS_ACRES_BC_PIS = '0' - regM210.VL_AJUS_REDUC_BC_PIS = '0' + regM210.VL_AJUS_ACRES_BC_PIS = '0' + regM210.VL_AJUS_REDUC_BC_PIS = '0' regM210.VL_BC_CONT_AJUS = self.transforma_valor(resposta[0]) regM210.ALIQ_PIS = self.transforma_valor(resposta[1]) regM210.QUANT_BC_PIS = '0' @@ -906,7 +953,7 @@ def query_registroM200(self, periodo): regM210.VL_CONT_DIFER_ANT = '0' regM210.VL_CONT_PER = self.transforma_valor(resposta[2]) lista.append(regM210) - + return lista """ @@ -983,7 +1030,7 @@ def query_registroM410(self, cst_pis, periodo): registro_M410.NAT_REC = resposta[0] registro_M410.VL_REC = self.transforma_valor(resposta[1]) registro_M410.COD_CTA = '1.1.06.11.00.00' - lista.append(registro_M410) + lista.append(registro_M410) return lista def query_registroM600(self, periodo): @@ -1035,8 +1082,8 @@ def query_registroM600(self, periodo): regM610.COD_CONT = '51' regM610.VL_REC_BRT = self.transforma_valor(resposta[0]) regM610.VL_BC_CONT = self.transforma_valor(resposta[0]) - regM610.VL_AJUS_ACRES_BC_COFINS = '0' - regM610.VL_AJUS_REDUC_BC_COFINS = '0' + regM610.VL_AJUS_ACRES_BC_COFINS = '0' + regM610.VL_AJUS_REDUC_BC_COFINS = '0' regM610.VL_BC_CONT_AJUS = self.transforma_valor(resposta[0]) regM610.ALIQ_COFINS = self.transforma_valor(resposta[1]) regM610.QUANT_BC_COFINS = '0' @@ -1120,5 +1167,5 @@ def query_registroM810(self, cofins_cst, periodo): registro_M810.NAT_REC = cod_nat[:3] registro_M810.VL_REC = self.transforma_valor(resposta[1]) registro_M810.COD_CTA = '1.1.06.11.00.00' - lista.append(registro_M810) + lista.append(registro_M810) return lista diff --git a/br_sped_efd_icms_ipi/models/sped_icms_ipi.py b/br_sped_efd_icms_ipi/models/sped_icms_ipi.py index 1dca6dd8d..623f2e2db 100644 --- a/br_sped_efd_icms_ipi/models/sped_icms_ipi.py +++ b/br_sped_efd_icms_ipi/models/sped_icms_ipi.py @@ -48,20 +48,20 @@ class SpedEfdIcmsIpi(models.Model): _description = "Cria o arquivo para o Sped ICMS / IPI" _order = "date_start desc" - date_start= fields.Date(string='Inicio de') + date_start = fields.Date(string='Inicio de') date_end = fields.Date(string='até') data_vencimento_e316 = fields.Date(string='Vencimento E-316') - + cod_obrigacao = fields.Selection([ ('000', 'ICMS a recolher'), ('003', 'Antecipação do diferencial de alíquotas do ICMS'), ('004', 'Antecipação do ICMS da importação'), ('005', 'Antecipação tributária'), ('006', 'ICMS resultante da alíquota adicional dos itens incluídos no Fundo de Combate à Pobreza'), - ('090', 'Outras obrigações do ICMS'), - ], string= 'Código Obrigação', dafault='000') - - cod_receita = fields.Selection([ + ('090', 'Outras obrigações do ICMS'), + ], string='Código Obrigação', dafault='000') + + cod_receita = fields.Selection([ ('046-2', 'Regime Periódico de Apuração'), ('060-7', 'Regime de Estimativa'), ('063-2', 'Outros recolhimentos especiais'), @@ -98,31 +98,35 @@ class SpedEfdIcmsIpi(models.Model): ('154-5', 'Diferença de estimativa'), ('214-8', 'Mercadoria importada (desembaraçada em outra UF)'), ('246-0', 'Substituição tributária por apuração (contribuinte de outra UF )'), - ('247-1', 'Substituição tributária por operação (outra UF)'), - ], string='Código Receita') - + ('247-1', 'Substituição tributária por operação (outra UF)'), + ], string='Código Receita') + tipo_arquivo = fields.Selection([ ('0', 'Remessa do arquivo original'), ('1', 'Remessa do arquivo substituto'), - ], string='Finalidade do Arquivo', default='0') + ], string='Finalidade do Arquivo', default='0') ind_apur = fields.Selection([ ('0', 'Mensal'), ('1', 'Decendial'), - ], string='Período apuração IPI', default='0') + ], string='Período apuração IPI', default='0') ind_ativ = fields.Selection([ ('0', 'Industrial ou equiparado a industrial'), ('1', 'Outros'), - ], string='Indicador tipo atividade', default='0') + ], string='Indicador tipo atividade', default='0') log_faturamento = fields.Html('Log de Faturamento') company_id = fields.Many2one('res.company', string='Empresa', required=True, - default=lambda self: self.env['res.company']._company_default_get('account.account')) + default=lambda self: self.env['res.company']._company_default_get('account.account')) sped_file = fields.Binary(string=u"Sped") sped_file_name = fields.Char( string=u"Arquivo Sped") - vl_sld_cred_ant_difal = fields.Float('Saldo Credor per. ant. Difal', default=0.0) - vl_sld_cred_transp_difal = fields.Float('Saldo Credor per. seguinte Difal', default=0.0) - vl_sld_cred_ant_fcp = fields.Float('Saldo Credor per. ant. FCP', default=0.0) - vl_sld_cred_transp_fcp = fields.Float('Saldo Credor per. seguinte FCP', default=0.0) + vl_sld_cred_ant_difal = fields.Float( + 'Saldo Credor per. ant. Difal', default=0.0) + vl_sld_cred_transp_difal = fields.Float( + 'Saldo Credor per. seguinte Difal', default=0.0) + vl_sld_cred_ant_fcp = fields.Float( + 'Saldo Credor per. ant. FCP', default=0.0) + vl_sld_cred_transp_fcp = fields.Float( + 'Saldo Credor per. seguinte FCP', default=0.0) clas_estab_ind = fields.Selection([ ('00', 'Industrial - Transformação'), ('01', 'Industrial - Beneficiamento'), @@ -133,13 +137,14 @@ class SpedEfdIcmsIpi(models.Model): ('06', 'Equiparado a industrial - Importação Direta'), ('07', 'Equiparado a industrial - Por lei específica'), ('08', 'Equiparado a industrial - Não enquadrado nos códigos 05, 06 ou 07'), - ('09', 'Outros'), - ], string='Classif. estabelecimento') + ('09', 'Outros'), + ], string='Classif. estabelecimento') @api.multi def create_file(self): if self.date_start > self.date_end: - raise UserError('Erro, a data de início é maior que a data de encerramento!') + raise UserError( + 'Erro, a data de início é maior que a data de encerramento!') self.log_faturamento = 'Gerando arquivo ..
' self.registro0000() if not self.log_faturamento: @@ -165,7 +170,7 @@ def limpa_caracteres(self, data): def limpa_formatacao(self, data): if data: - replace = ['-', ' ', '(', ')', '/', '.', ':','º'] + replace = ['-', ' ', '(', ')', '/', '.', ':', 'º'] for i in replace: data = data.replace(i, '') return data @@ -181,24 +186,27 @@ def junta_pipe(self, registro): def registro0000(self): arq = ArquivoDigital() - cod_mun = '%s%s' %(self.company_id.state_id.ibge_code, self.company_id.city_id.ibge_code) + cod_mun = '%s%s' % (self.company_id.state_id.ibge_code, + self.company_id.city_id.ibge_code) arq._registro_abertura.COD_VER = self.versao() arq._registro_abertura.COD_FIN = self.tipo_arquivo arq._registro_abertura.DT_INI = self.date_start arq._registro_abertura.DT_FIN = self.date_end arq._registro_abertura.NOME = self.company_id.legal_name - arq._registro_abertura.CNPJ = self.limpa_formatacao(self.company_id.cnpj_cpf) + arq._registro_abertura.CNPJ = self.limpa_formatacao( + self.company_id.cnpj_cpf) arq._registro_abertura.UF = self.company_id.state_id.code - arq._registro_abertura.IE = self.limpa_formatacao(self.company_id.inscr_est) + arq._registro_abertura.IE = self.limpa_formatacao( + self.company_id.inscr_est) arq._registro_abertura.COD_MUN = self.formata_cod_municipio(cod_mun) arq._registro_abertura.IM = '' arq._registro_abertura.SUFRAMA = '' arq._registro_abertura.IND_PERFIL = 'A' arq._registro_abertura.IND_ATIV = self.ind_ativ #reg0001 = Registro0001() - #if inv: + # if inv: # reg0001.IND_MOV = '0' - #else: + # else: # reg0001.IND_MOV = '1' if self.ind_ativ == '0': reg0002 = Registro0002() @@ -213,7 +221,7 @@ def registro0000(self): reg0005.BAIRRO = self.company_id.district reg0005.FONE = self.limpa_formatacao(self.company_id.phone) reg0005.EMAIL = self.company_id.email - arq._blocos['0'].add(reg0005) + arq._blocos['0'].add(reg0005) if self.company_id.accountant_id: contabilista = Registro0100() @@ -221,12 +229,12 @@ def registro0000(self): if len(self.company_id.accountant_id.cnpj_cpf) > 14: if self.company_id.accountant_id.child_ids: ctd = self.company_id.accountant_id.child_ids[0] - else: + else: msg_err = 'Cadastre o contador Pessoa Fisica dentro do Contato da Contabilidade' raise UserError(msg_err) contador = ctd.name cpf = ctd.cnpj_cpf - cod_mun = '%s%s' %(ctd.state_id.ibge_code, ctd.city_id.ibge_code) + cod_mun = '%s%s' % (ctd.state_id.ibge_code, ctd.city_id.ibge_code) contabilista.NOME = contador contabilista.CPF = self.limpa_formatacao(cpf) contabilista.CRC = self.limpa_formatacao(ctd.rg_fisica) @@ -240,18 +248,18 @@ def registro0000(self): contabilista.COD_MUN = cod_mun arq._blocos['0'].add(contabilista) dt = self.date_start - dta_s = '%s-%s-%s' %(str(dt.year),str(dt.month).zfill(2), - str(dt.day).zfill(2)) + dta_s = '%s-%s-%s' % (str(dt.year), str(dt.month).zfill(2), + str(dt.day).zfill(2)) dt = self.date_end - dta_e = '%s-%s-%s' %(str(dt.year),str(dt.month).zfill(2), - str(dt.day).zfill(2)) + dta_e = '%s-%s-%s' % (str(dt.year), str(dt.month).zfill(2), + str(dt.day).zfill(2)) periodo = 'date_trunc(\'day\', ie.data_fatura) \ - between \'%s\' and \'%s\'' %(dta_s, dta_e) + between \'%s\' and \'%s\'' % (dta_s, dta_e) com_movimento = '1' for item_lista in self.query_registro0150(periodo): com_movimento = '0' arq.read_registro(self.junta_pipe(item_lista)) - + for item_lista in self.query_registro0190(periodo): arq.read_registro(self.junta_pipe(item_lista)) @@ -263,17 +271,16 @@ def registro0000(self): # 0220 - Conversão Unidade Medida for item_unit in self.query_registro0220(item_lista.COD_ITEM, periodo): arq.read_registro(self.junta_pipe(item_unit)) - - + for item_lista in self.query_registro0400(periodo): arq.read_registro(self.junta_pipe(item_lista)) - + regB001 = RegistroB001() - #arq._blocos['B'].add(regB001) - + # arq._blocos['B'].add(regB001) + regC001 = RegistroC001() regC001.IND_MOV = com_movimento - #arq._blocos['C'].add(regC001) + # arq._blocos['C'].add(regC001) query = """ select distinct ie.id, ie.state, ie.emissao_doc @@ -301,12 +308,11 @@ def registro0000(self): if id[2] == '2': for item_lista in self.query_registroC170(nf): arq.read_registro(self.junta_pipe(item_lista)) - + for item_lista in self.query_registroC190(nf): arq.read_registro(self.junta_pipe(item_lista)) - - # TODO BLOCO D - prestações ou contratações de serviços + # TODO BLOCO D - prestações ou contratações de serviços # de comunicação, transporte interestadual e intermunicipa # TODO D100 - Periodo Apuracao @@ -329,7 +335,7 @@ def registro0000(self): registro_D001.IND_MOV = '0' else: registro_D001.IND_MOV = '1' - #arq._blocos['D'].add(registro_D001) + # arq._blocos['D'].add(registro_D001) for cte_id in query_resposta: for item_lista in self.query_registroD100(cte_id[0]): @@ -343,24 +349,24 @@ def registro0000(self): arq._blocos['E'].add(registro_E100) for item_lista in self.query_registroE110(periodo): - arq.read_registro(self.junta_pipe(item_lista)) - + arq.read_registro(self.junta_pipe(item_lista)) + for item_lista in self.query_registroE200(periodo): arq.read_registro(self.junta_pipe(item_lista)) for item in self.query_registroE210(item_lista.UF, periodo): arq.read_registro(self.junta_pipe(item)) for item_lista in self.query_registroE300(periodo): - arq.read_registro(self.junta_pipe(item_lista)) + arq.read_registro(self.junta_pipe(item_lista)) for uf_lista in self.query_registroE310( - self.company_id.state_id.code, - item_lista.UF, - perido): + self.company_id.state_id.code, + item_lista.UF, + perido): arq.read_registro(self.junta_pipe(uf_lista)) for uf_lista in self.query_registroE316( - self.company_id.state_id.code, - item_lista.UF, - periodo): + self.company_id.state_id.code, + item_lista.UF, + periodo): arq.read_registro(self.junta_pipe(uf_lista)) if self.ind_ativ == '0': @@ -379,20 +385,20 @@ def registro0000(self): registro_K100.DT_INI = self.date_start registro_K100.DT_FIN = self.date_end arq._blocos['K'].add(registro_K100) - + # K200 for item_lista in self.query_registroK200(): arq.read_registro(self.junta_pipe(item_lista)) - + registro_1001 = Registro1001() registro_1001.IND_MOV = '0' - #arq._blocos['1'].add(registro_1001) + # arq._blocos['1'].add(registro_1001) - # TODO Colocar no cadastro da Empresa + # TODO Colocar no cadastro da Empresa registro_1010 = Registro1010() registro_1010.IND_EXP = 'N' registro_1010.IND_CCRF = 'N' - registro_1010.IND_COMB = 'N' + registro_1010.IND_COMB = 'N' registro_1010.IND_USINA = 'N' registro_1010.IND_VA = 'N' registro_1010.IND_EE = 'N' @@ -405,12 +411,13 @@ def registro0000(self): registro_1010.IND_REST_RESSARC_COMPL_ICMS = 'N' arq._blocos['1'].add(registro_1010) arq.prepare() - self.sped_file_name = 'Sped-%s_%s.txt' % ( + self.sped_file_name = 'Sped-%s_%s.txt' % ( str(dt.month).zfill(2), str(dt.year)) #arqxx = open('/opt/odoo/novo_arquivo.txt', 'w') - #arqxx.write(arq.getstring()) - #arqxx.close() - self.sped_file = base64.encodestring(bytes(arq.getstring(), 'iso-8859-1')) + # arqxx.write(arq.getstring()) + # arqxx.close() + self.sped_file = base64.encodestring( + bytes(arq.getstring(), 'iso-8859-1')) def query_registro0150(self, periodo): query = """ @@ -434,25 +441,30 @@ def query_registro0150(self, periodo): cod_pais = resposta_participante.country_id.bc_code registro_0150.COD_PAIS = cod_pais cpnj_cpf = self.limpa_formatacao(resposta_participante.cnpj_cpf) - cod_mun = '%s%s' %(resposta_participante.state_id.ibge_code, resposta_participante.city_id.ibge_code) + cod_mun = '%s%s' % (resposta_participante.state_id.ibge_code, + resposta_participante.city_id.ibge_code) if cod_pais == '01058': registro_0150.COD_MUN = self.formata_cod_municipio(cod_mun) if len(cpnj_cpf) == 11: registro_0150.CPF = cpnj_cpf else: registro_0150.CNPJ = cpnj_cpf - registro_0150.IE = self.limpa_formatacao(resposta_participante.inscr_est) + registro_0150.IE = self.limpa_formatacao( + resposta_participante.inscr_est) else: registro_0150.COD_MUN = '9999999' - registro_0150.SUFRAMA = self.limpa_formatacao(resposta_participante.suframa) + registro_0150.SUFRAMA = self.limpa_formatacao( + resposta_participante.suframa) registro_0150.END = resposta_participante.street registro_0150.NUM = resposta_participante.number registro_0150.COMPL = '' if resposta_participante.street2: - registro_0150.COMPL = str(resposta_participante.street2.split()) + registro_0150.COMPL = str( + resposta_participante.street2.split()) registro_0150.BAIRRO = '' if resposta_participante.district: - registro_0150.BAIRRO = str(resposta_participante.district.split()) + registro_0150.BAIRRO = str( + resposta_participante.district.split()) lista.append(registro_0150) return lista @@ -494,26 +506,27 @@ def query_registro0190(self, periodo): unidade = id[0] unidade = unidade[:6] if un == unidade: - continue + continue lista_un.append(unidade) registro_0190.UNID = unidade desc = id[1] if not desc: - msg_err = 'Unidade de medida sem descricao - Un %s.' %(unidade) + msg_err = 'Unidade de medida sem descricao - Un %s.' % ( + unidade) raise UserError(msg_err) registro_0190.DESCR = desc.strip() lista.append(registro_0190) un = unidade # adicionar Lista dos itens q tem estoque e nao estao aqui - data_estoque = '%s 23:59:00' %(datetime.strftime( - self.date_end, '%Y-%m-%d')) + data_estoque = '%s 23:59:00' % (datetime.strftime( + self.date_end, '%Y-%m-%d')) context = dict(self.env.context, to_date=data_estoque) product = self.env['product.product'].with_context(context) resposta_inv = product.search([]) produtos = [] for inv in resposta_inv: if inv.qty_available > 0.0 and \ - inv.l10n_br_sped_type in ('00','01','02','03','04','05','06','10'): + inv.l10n_br_sped_type in ('00', '01', '02', '03', '04', '05', '06', '10'): produtos.append(inv.id) un = '' lista_unk = [] @@ -524,11 +537,11 @@ def query_registro0190(self, periodo): if not resposta_produto: continue if un == resposta_produto.uom_id.name: - continue - if resposta_produto.uom_id.name in lista_unk: + continue + if resposta_produto.uom_id.name in lista_unk: continue lista_unk.append(resposta_produto.uom_id.name) - if resposta_produto.uom_id.name.upper() not in lista_un: + if resposta_produto.uom_id.name.upper() not in lista_un: registro_0190 = registros.Registro0190() registro_0190.UNID = resposta_produto.uom_id.name registro_0190.DESCR = resposta_produto.uom_id.l10n_br_description @@ -574,7 +587,8 @@ def query_registro0200(self, periodo): if resposta_produto.barcode != resposta_produto.default_code: registro_0200.COD_BARRA = resposta_produto.barcode if resposta_produto.uom_id.name.find('-') != -1: - unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find('-')] + unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find( + '-')] else: unidade = resposta_produto.uom_id.name unidade = unidade.strip() @@ -582,10 +596,11 @@ def query_registro0200(self, periodo): unidade = unidade[:6] registro_0200.UNID_INV = unidade[:6] registro_0200.TIPO_ITEM = resposta_produto.l10n_br_sped_type - registro_0200.COD_NCM = self.limpa_formatacao(resposta_produto.fiscal_classification_id.code) + registro_0200.COD_NCM = self.limpa_formatacao( + resposta_produto.fiscal_classification_id.code) lista.append(registro_0200) - # adicionar Lista dos itens q tem estoque e nao estao aqui - data_estoque = '%s 23:59:00' %(datetime.strftime( + # adicionar Lista dos itens q tem estoque e nao estao aqui + data_estoque = '%s 23:59:00' % (datetime.strftime( self.date_end, '%Y-%m-%d')) context = dict(self.env.context, to_date=data_estoque) product = self.env['product.product'].with_context(context) @@ -593,26 +608,29 @@ def query_registro0200(self, periodo): produtos = [] for inv in resposta_inv: if inv.qty_available > 0.0 and \ - inv.l10n_br_sped_type in ('00','01','02','03','04','05','06','10'): + inv.l10n_br_sped_type in ('00', '01', '02', '03', '04', '05', '06', '10'): produtos.append(inv.id) for prd in produtos: - if prd not in lista_item: + if prd not in lista_item: resposta_produto = self.env['product.product'].browse(prd) if not resposta_produto: continue registro_0200 = registros.Registro0200() cprod = resposta_produto.default_code registro_0200.COD_ITEM = cprod[:60] - registro_0200.DESCR_ITEM = unidecode(resposta_produto.name.strip()) + registro_0200.DESCR_ITEM = unidecode( + resposta_produto.name.strip()) if resposta_produto.barcode != resposta_produto.default_code: registro_0200.COD_BARRA = resposta_produto.barcode if resposta_produto.uom_id.name.find('-') != -1: - unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find('-')] + unidade = resposta_produto.uom_id.name[:resposta_produto.uom_id.name.find( + '-')] else: unidade = resposta_produto.uom_id.name registro_0200.UNID_INV = unidade[:6].upper() registro_0200.TIPO_ITEM = resposta_produto.l10n_br_sped_type - registro_0200.COD_NCM = self.limpa_formatacao(resposta_produto.fiscal_classification_id.code) + registro_0200.COD_NCM = self.limpa_formatacao( + resposta_produto.fiscal_classification_id.code) lista.append(registro_0200) return lista @@ -621,32 +639,32 @@ def query_registro0205(self, item): # alteração do item, deverá ser informada no primeiro período \ # em que houver movimentação do item ou no inventário. lista = [] - # O valor informado deve ser menor que no campo DT_FIN do registro 0000. + # O valor informado deve ser menor que no campo DT_FIN do registro 0000. # tem q buscar a partir do ultimo dia do mes anterior # pois, se alterou no ultimo dia nao entrou no arquivo anterior - data_final = datetime.strptime('%s 23:59:00' %(datetime.strftime( + data_final = datetime.strptime('%s 23:59:00' % (datetime.strftime( self.date_end, '%Y-%m-%d')), '%Y-%m-%d %H:%M:%S') - data_final = data_final - timedelta(days=1) - #data_final = datetime.strftime(data_final, '%Y-%m-%d %H:%M:%S') - data_ini = datetime.strptime('%s 01:00:00' %(datetime.strftime( + data_final = data_final - timedelta(days=1) + #data_final = datetime.strftime(data_final, '%Y-%m-%d %H:%M:%S') + data_ini = datetime.strptime('%s 01:00:00' % (datetime.strftime( self.date_end, '%Y-%m-%d')), '%Y-%m-%d %H:%M:%S') - data_ini = data_ini - timedelta(days=1) - #data_ini = datetime.strftime(data_ini, '%Y-%m-%d %H:%M:%S') + data_ini = data_ini - timedelta(days=1) + #data_ini = datetime.strftime(data_ini, '%Y-%m-%d %H:%M:%S') resposta_produto = self.env['l10n_br.product.changes'].search([ - ('product_id.default_code','=',item), + ('product_id.default_code', '=', item), ('changed_date', '>=', data_ini), ('changed_date', '<=', data_final) - ],limit=1,order='changed_date desc') + ], limit=1, order='changed_date desc') ultima_alteracao = data_ini for alterado in resposta_produto: ultima_mudanca = self.env['l10n_br.product.changes'].search([ - ('product_id.default_code','=',item), + ('product_id.default_code', '=', item), ('changed_date', '<', ultima_alteracao) - ],limit=1,order='changed_date desc') + ], limit=1, order='changed_date desc') if ultima_mudanca: data_inicio = ultima_mudanca.changed_date else: - data_inicio = alterado.product_id.create_date + data_inicio = alterado.product_id.create_date registro_0205 = registros.Registro0205() if not alterado.old_value: continue @@ -720,11 +738,12 @@ def query_registro0220(self, ITEM, periodo): registro_0220.UNID_CONV = str(resposta[4][:6]) registro_0220.FAT_CONV = conversao except: - x_error = 'Erro, fator conversao : %s - %s' %(str(resposta[4][:6]), str(conversao)) + x_error = 'Erro, fator conversao : %s - %s' % ( + str(resposta[4][:6]), str(conversao)) raise UserError(x_error) lista.append(registro_0220) return lista - + def query_registro0400(self, periodo): query = """ select distinct @@ -741,32 +760,33 @@ def query_registro0400(self, periodo): query_resposta = self._cr.fetchall() lista = [] for resposta in query_resposta: - resposta_nat = self.env['account.fiscal.position'].browse(resposta[0]) + resposta_nat = self.env['account.fiscal.position'].browse( + resposta[0]) registro_0400 = registros.Registro0400() registro_0400.COD_NAT = str(resposta_nat.id) registro_0400.DESCR_NAT = unidecode(resposta_nat.l10n_br_operation) lista.append(registro_0400) - return lista + return lista def transforma_valor(self, valor): #valor = ("%.2f" % (float(valor))) - #return str(valor).replace('.', ',') + # return str(valor).replace('.', ',') return valor def query_registroC100(self, nf): lista = [] nfe_ids = self.env['invoice.eletronic'].browse(nf) - for nfe in nfe_ids: + for nfe in nfe_ids: # removendo Emissao de Terceiros canceladas if nfe.emissao_doc == '2' and nfe.state == 'cancel': return True - cancel = False + cancel = False registro_c100 = registros.RegistroC100() if nfe.tipo_operacao == 'entrada': registro_c100.IND_OPER = '0' else: registro_c100.IND_OPER = '1' - if nfe.emissao_doc == '1': + if nfe.emissao_doc == '1': registro_c100.IND_EMIT = '0' else: registro_c100.IND_EMIT = '1' @@ -777,14 +797,14 @@ def query_registroC100(self, nf): elif nfe.finalidade_emissao == '1': registro_c100.COD_SIT = '00' elif nfe.finalidade_emissao == '2': - registro_c100.COD_SIT = '06' + registro_c100.COD_SIT = '06' elif nfe.finalidade_emissao == '4': - registro_c100.COD_SIT = '00' - elif nfe.state == 'denied': - registro_c100.COD_SIT = '04' + registro_c100.COD_SIT = '00' + elif nfe.state == 'denied': + registro_c100.COD_SIT = '04' if not nfe.state == 'cancel' and nfe.chave_nfe[6:20] != \ - self.limpa_formatacao(nfe.partner_id.cnpj_cpf): - registro_c100.COD_SIT = '08' + self.limpa_formatacao(nfe.partner_id.cnpj_cpf): + registro_c100.COD_SIT = '08' if nfe.serie_documento: registro_c100.SER = nfe.serie_documento if nfe.chave_nfe: @@ -799,7 +819,7 @@ def query_registroC100(self, nf): registro_c100.DT_E_S = nfe.data_emissao except: msg_err = 'Data Emissao Fatura %s , invalida. \ -
' %(str(nfe.numero or nfe.id)) +
' % (str(nfe.numero or nfe.id)) self.log_faturamento += msg_err if nfe.duplicata_ids: if len(nfe.duplicata_ids) == 1: @@ -817,7 +837,7 @@ def query_registroC100(self, nf): registro_c100.VL_SEG = nfe.valor_seguro registro_c100.VL_OUT_DA = nfe.valor_despesas registro_c100.VL_DESC = nfe.valor_desconto - registro_c100.VL_DOC = nfe.valor_final + registro_c100.VL_DOC = nfe.valor_final registro_c100.VL_BC_ICMS = nfe.valor_bc_icms registro_c100.VL_ICMS = nfe.valor_icms registro_c100.VL_BC_ICMS_ST = nfe.valor_bc_icmsst @@ -826,9 +846,9 @@ def query_registroC100(self, nf): registro_c100.VL_PIS = nfe.valor_pis registro_c100.VL_COFINS = nfe.valor_cofins registro_c100.COD_PART = str(nfe.partner_id.id) - lista.append(registro_c100) + lista.append(registro_c100) return lista - + def query_registroC101(self, nf): query = """ select @@ -853,7 +873,7 @@ def query_registroC101(self, nf): for id in query_resposta: registro_c101 = registros.RegistroC101() registro_c101.VL_FCP_UF_DEST = self.transforma_valor(id[2]) - if id[3] == 'entrada': + if id[3] == 'entrada': registro_c101.VL_ICMS_UF_DEST = self.transforma_valor(id[0]) registro_c101.VL_ICMS_UF_REM = self.transforma_valor(id[1]) else: @@ -865,8 +885,8 @@ def query_registroC101(self, nf): def query_registroC170(self, nf): lista = [] nfe_line = self.env['invoice.eletronic.item'].search([ - ('invoice_eletronic_id','=', nf), - ], order='num_item') + ('invoice_eletronic_id', '=', nf), + ], order='num_item') n_item = 1 for item in nfe_line: registro_c170 = registros.RegistroC170() @@ -878,11 +898,13 @@ def query_registroC170(self, nf): registro_c170.NUM_ITEM = str(n_item) cprod = item.product_id.default_code registro_c170.COD_ITEM = cprod - registro_c170.DESCR_COMPL = self.limpa_caracteres(item.name.strip()) + registro_c170.DESCR_COMPL = self.limpa_caracteres( + item.name.strip()) registro_c170.QTD = self.transforma_valor(item.quantidade) if not item.uom_id: - msg_err = 'Sem cadastro UN : %s, NF : %s' %(item.name.strip(), nf.numero) - raise UserError(msg_err) + msg_err = 'Sem cadastro UN : %s, NF : %s' % ( + item.name.strip(), nf.numero) + raise UserError(msg_err) if item.uom_id.name.find('-') != -1: unidade = item.uom_id.name[:item.uom_id.name.find('-')] else: @@ -897,15 +919,16 @@ def query_registroC170(self, nf): try: registro_c170.CST_ICMS = item.product_id.origin + item.icms_cst except: - msg_err = 'Sem CST na Fatura %s.
' %( - str(item.invoice_eletronic_id.numero or - item.invoice_eletronic_id.id)) + msg_err = 'Sem CST na Fatura %s.
' % ( + str(item.invoice_eletronic_id.numero or + item.invoice_eletronic_id.id)) self.log_faturamento += msg_err if item.cfop: registro_c170.CFOP = str(item.cfop) else: registro_c170.CFOP = '0000' - registro_c170.COD_NAT = str(item.invoice_eletronic_id.fiscal_position_id.id) + registro_c170.COD_NAT = str( + item.invoice_eletronic_id.fiscal_position_id.id) registro_c170.VL_BC_ICMS = item.icms_base_calculo registro_c170.ALIQ_ICMS = '0' registro_c170.ALIQ_ICMS = item.icms_aliquota @@ -933,7 +956,7 @@ def query_registroC170(self, nf): n_item += 1 lista.append(registro_c170) return lista - + def query_registroC190(self, nf): query = """ select distinct @@ -1030,33 +1053,33 @@ def query_registroD100(self, cte): for cte in cte_ids: registro_d100 = registros.RegistroD100() if cte.tipo_operacao == 'entrada': - registro_d100.IND_OPER = '0' # Aquisicao + registro_d100.IND_OPER = '0' # Aquisicao else: - registro_d100.IND_OPER = '1' # Prestação + registro_d100.IND_OPER = '1' # Prestação if cte.emissao_doc == 2: - registro_d100.IND_EMIT = '1' # Terceiros + registro_d100.IND_EMIT = '1' # Terceiros else: - registro_d100.IND_EMIT = '0' # Propria + registro_d100.IND_EMIT = '0' # Propria registro_d100.COD_PART = str(cte.partner_id.id) registro_d100.COD_MOD = str(cte.model) if cte.tp_emiss_cte == '1': - registro_d100.COD_SIT = '00' + registro_d100.COD_SIT = '00' elif cte.tp_emiss_cte == '2': - registro_d100.COD_SIT = '01' + registro_d100.COD_SIT = '01' elif cte.tp_emiss_cte == '3': - registro_d100.COD_SIT = '02' + registro_d100.COD_SIT = '02' elif cte.tp_emiss_cte == '4': - registro_d100.COD_SIT = '03' + registro_d100.COD_SIT = '03' elif cte.tp_emiss_cte == '5': - registro_d100.COD_SIT = '04' + registro_d100.COD_SIT = '04' elif cte.tp_emiss_cte == '6': - registro_d100.COD_SIT = '05' + registro_d100.COD_SIT = '05' elif cte.tp_emiss_cte == '7': - registro_d100.COD_SIT = '06' + registro_d100.COD_SIT = '06' elif cte.tp_emiss_cte == '8': - registro_d100.COD_SIT = '07' + registro_d100.COD_SIT = '07' elif cte.tp_emiss_cte == '9': - registro_d100.COD_SIT = '08' + registro_d100.COD_SIT = '08' registro_d100.SER = cte.serie_documento if cte.chave_nfe: registro_d100.CHV_CTE = str(cte.chave_nfe) @@ -1108,7 +1131,7 @@ def query_registroD120(self, fatura): registro_d110.VL_SERV = self.transforma_valor(itens.price_subtotal) registro_d110.VL_OUT = '0' item += 1 - """ + """ # transporte - analitico def query_registroD190(self, nf): @@ -1160,7 +1183,7 @@ def query_registroD190(self, nf): return lista def query_registroE110(self, periodo): - #SAIDA + # SAIDA query = """ select sum(COALESCE(ie.valor_icms,0.0)) as VL_ICMS @@ -1189,7 +1212,7 @@ def query_registroE110(self, periodo): if id[0]: sld_icms = id[0] sld_transp = id[0] - #ENTRADA + # ENTRADA query = """ select sum(COALESCE(ie.valor_icms,0.0)) as VL_ICMS @@ -1210,7 +1233,8 @@ def query_registroE110(self, periodo): for id in query_resposta: registro_E110.VL_TOT_CREDITOS = self.transforma_valor(id[0]) if not id[0]: - registro_E110.VL_ICMS_RECOLHER = self.transforma_valor(sld_icms) + registro_E110.VL_ICMS_RECOLHER = self.transforma_valor( + sld_icms) registro_E110.VL_SLD_APURADO = self.transforma_valor(sld_icms) continue if id[0] > sld_icms: @@ -1219,7 +1243,8 @@ def query_registroE110(self, periodo): registro_E110.VL_SLD_APURADO = '0' else: sld_icms = sld_icms - id[0] - registro_E110.VL_ICMS_RECOLHER = self.transforma_valor(sld_icms) + registro_E110.VL_ICMS_RECOLHER = self.transforma_valor( + sld_icms) registro_E110.VL_SLD_APURADO = self.transforma_valor(sld_icms) sld_transp -= id[0] if sld_transp > 0.0: @@ -1234,7 +1259,8 @@ def query_registroE110(self, periodo): registro_E110.VL_ESTORNOS_DEB = '0' registro_E110.VL_SLD_CREDOR_ANT = '0' registro_E110.VL_TOT_DED = '0' - registro_E110.VL_SLD_CREDOR_TRANSPORTAR = self.transforma_valor(sld_transp) + registro_E110.VL_SLD_CREDOR_TRANSPORTAR = self.transforma_valor( + sld_transp) registro_E110.DEB_ESP = '0' lista.append(registro_E110) registro_E116 = RegistroE116() @@ -1242,17 +1268,17 @@ def query_registroE110(self, periodo): registro_E116.VL_OR = self.transforma_valor(sld_icms) registro_E116.DT_VCTO = self.data_vencimento_e316 # remover - #'%s%s%s' %( - # str(self.data_vencimento_e316.day).zfill(2), - # str(self.data_vencimento_e316.month).zfill(2), + # '%s%s%s' %( + # str(self.data_vencimento_e316.day).zfill(2), + # str(self.data_vencimento_e316.month).zfill(2), # str(self.data_vencimento_e316.year)) registro_E116.COD_REC = self.cod_receita - #registro_E116.NUM_PROC - #registro_E116.IND_PROC - #registro_E116.PROC - #registro_E116.COMPL - registro_E116.MES_REF = '%s%s' %( - str(self.date_start.month).zfill(2), + # registro_E116.NUM_PROC + # registro_E116.IND_PROC + # registro_E116.PROC + # registro_E116.COMPL + registro_E116.MES_REF = '%s%s' % ( + str(self.date_start.month).zfill(2), str(self.date_start.year)) lista.append(registro_E116) return lista @@ -1362,7 +1388,8 @@ def query_registroE300(self, periodo): lista.append(registro_e300) if not uf_emitente and query_resposta: registro_e300 = registros.RegistroE300() - registro_e300.UF = self.limpa_formatacao(self.company_id.state_id.code) + registro_e300.UF = self.limpa_formatacao( + self.company_id.state_id.code) registro_e300.DT_INI = self.date_start registro_e300.DT_FIN = self.date_end lista.append(registro_e300) @@ -1394,7 +1421,7 @@ def query_registroE310(self, uf_informante, uf_dif, periodo): and rs.code = '%s' group by ie.tipo_operacao """ % (periodo, uf_dif) - else: + else: # mesmo uf tipo_mov = '0' query = """ @@ -1448,11 +1475,12 @@ def query_registroE310(self, uf_informante, uf_dif, periodo): registro_e310.VL_SLD_CRED_TRANSPORTAR_FCP = '0' registro_e310.DEB_ESP_FCP = '0' lista.append(registro_e310) - + registro_e316 = registros.RegistroE316() if not self.data_vencimento_e316: - raise UserError('Erro, a data de vencimento (E-316) não informada.') - + raise UserError( + 'Erro, a data de vencimento (E-316) não informada.') + for id in query_resposta: registro_e316.COD_OR = self.cod_obrigacao registro_e316.VL_OR = id[0]+id[2] @@ -1504,7 +1532,7 @@ def query_registroE316(self, uf_informante, uf_dif): and %s group by fp.fiscal_type """ % (uf_dif, periodo) - else: + else: # mesmo uf tipo_mov = '0' query = """ @@ -1565,7 +1593,7 @@ def query_registroE316(self, uf_informante, uf_dif): lista.append(registro_e316) return lista """ - + def query_registroE510(self, periodo): query = """ select distinct @@ -1625,7 +1653,7 @@ def query_registroE520(self, periodo): registro_E520.VL_DEB_IPI = self.transforma_valor(id[0]) if id[0]: sld_ipi = id[0] - registro_E520.VL_SD_ANT_IPI = '0' + registro_E520.VL_SD_ANT_IPI = '0' registro_E520.VL_OD_IPI = '0' registro_E520.VL_OC_IPI = '0' query = """ @@ -1644,31 +1672,31 @@ def query_registroE520(self, periodo): """ % (periodo) self._cr.execute(query) query_resposta = self._cr.fetchall() - for id in query_resposta: + for id in query_resposta: registro_E520.VL_CRED_IPI = self.transforma_valor(id[0]) if id[0] and id[0] > sld_ipi: - sld_ipi = id[0] - sld_ipi - registro_E520.VL_SC_IPI = self.transforma_valor(sld_ipi) - registro_E520.VL_SD_IPI = '0' + sld_ipi = id[0] - sld_ipi + registro_E520.VL_SC_IPI = self.transforma_valor(sld_ipi) + registro_E520.VL_SD_IPI = '0' else: - if id[0]: - sld_ipi = sld_ipi - id[0] - registro_E520.VL_SD_IPI = self.transforma_valor(sld_ipi) - registro_E520.VL_SC_IPI = '0' + if id[0]: + sld_ipi = sld_ipi - id[0] + registro_E520.VL_SD_IPI = self.transforma_valor(sld_ipi) + registro_E520.VL_SC_IPI = '0' lista.append(registro_E520) return lista def query_registroK200(self): lista = [] - data_estoque = '%s 23:59:00' %(datetime.strftime( + data_estoque = '%s 23:59:00' % (datetime.strftime( self.date_end, '%Y-%m-%d')) context = dict(self.env.context, to_date=data_estoque) product = self.env['product.product'].with_context(context) resposta_inv = product.search([]) for inv in resposta_inv: if inv.qty_available > 0.0 and \ - inv.l10n_br_sped_type in ('00','01','02','03','04','05','06','10'): - registro_K200 = RegistroK200() + inv.l10n_br_sped_type in ('00', '01', '02', '03', '04', '05', '06', '10'): + registro_K200 = RegistroK200() registro_K200.DT_EST = self.date_end registro_K200.COD_ITEM = inv.default_code registro_K200.QTD = inv.qty_available diff --git a/requirements.txt b/requirements.txt index 644d968ce..9db72998d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,5 @@ python3-boleto xmlsec lxml==4.2.3 pycnab240 -iugu \ No newline at end of file +iugu +unidecode \ No newline at end of file