diff --git a/l10n_br_account_payment_brcobranca/__manifest__.py b/l10n_br_account_payment_brcobranca/__manifest__.py index 2a6d5c0d83b0..9a64dc9b7631 100644 --- a/l10n_br_account_payment_brcobranca/__manifest__.py +++ b/l10n_br_account_payment_brcobranca/__manifest__.py @@ -3,10 +3,11 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - "name": "L10n Br Account Payment BRCobranca", - "version": "14.0.5.2.5", + "name": "Boletos e CNAB de cobrança", + "summary": "receivable Boletos and CNAB using the brcobranca lib", + "version": "14.0.6.0.0", "license": "AGPL-3", - "author": "Akretion, " "Odoo Community Association (OCA)", + "author": "Akretion, Odoo Community Association (OCA)", "maintainers": ["rvalyi", "mbcosta"], "website": "https://github.com/OCA/l10n-brazil", "depends": [ diff --git a/l10n_br_account_payment_brcobranca/models/account_payment_line.py b/l10n_br_account_payment_brcobranca/models/account_payment_line.py index d46020b2042d..85caee0880b2 100644 --- a/l10n_br_account_payment_brcobranca/models/account_payment_line.py +++ b/l10n_br_account_payment_brcobranca/models/account_payment_line.py @@ -134,10 +134,7 @@ def prepare_bank_payment_line(self, bank_name_brcobranca): bank_method(payment_mode_id, linhas_pagamentos) # Cada Banco pode possuir seus Codigos de Instrução - if ( - self.mov_instruction_code_id.code - == payment_mode_id.cnab_sending_code_id.code - ): + if self.instruction_move_code_id.code == payment_mode_id.sending_code_id.code: if payment_mode_id.boleto_fee_perc: linhas_pagamentos["codigo_multa"] = payment_mode_id.boleto_fee_code linhas_pagamentos["percentual_multa"] = payment_mode_id.boleto_fee_perc diff --git a/l10n_br_account_payment_brcobranca/models/account_payment_order.py b/l10n_br_account_payment_brcobranca/models/account_payment_order.py index 7d27ebe3b1ec..be37a2f6152a 100644 --- a/l10n_br_account_payment_brcobranca/models/account_payment_order.py +++ b/l10n_br_account_payment_brcobranca/models/account_payment_order.py @@ -40,7 +40,7 @@ def _prepare_remessa_banco_brasil(self, remessa_values, cnab_type): def _prepare_remessa_santander(self, remessa_values, cnab_type): remessa_values.update( { - "codigo_carteira": self.payment_mode_id.boleto_wallet_code_id.code, + "codigo_carteira": self.payment_mode_id.wallet_code_id.code, "codigo_transmissao": self.payment_mode_id.cnab_company_bank_code, "conta_corrente": misc.punctuation_rm( self.journal_id.bank_account_id.acc_number diff --git a/l10n_br_account_payment_brcobranca/parser/cnab_file_parser.py b/l10n_br_account_payment_brcobranca/parser/cnab_file_parser.py index a741df308aee..5f4c6421f679 100644 --- a/l10n_br_account_payment_brcobranca/parser/cnab_file_parser.py +++ b/l10n_br_account_payment_brcobranca/parser/cnab_file_parser.py @@ -320,9 +320,7 @@ def process_return_file(self, data): # Codigos de Movimento de Retorno - Liquidação cnab_liq_move_code = [] - for ( - move_code - ) in account_move_line.payment_mode_id.cnab_liq_return_move_code_ids: + for move_code in account_move_line.payment_mode_id.liq_return_move_code_ids: cnab_liq_move_code.append(move_code.code) favored_bank_account = ( @@ -388,11 +386,12 @@ def process_return_file(self, data): return result_row_list def _get_description_occurrence(self, payment_method_cnab, cod_ocorrencia): - cnab_return_move_code = self.env["l10n_br_cnab.return.move.code"].search( + cnab_return_move_code = self.env["l10n_br_cnab.code"].search( [ ("bank_ids", "in", self.bank.id), ("payment_method_ids", "in", payment_method_cnab.id), ("code", "=", cod_ocorrencia), + ("code_type", "=", "return_move_code"), ] ) if cnab_return_move_code: diff --git a/l10n_br_account_payment_order/__manifest__.py b/l10n_br_account_payment_order/__manifest__.py index 55d9236dc558..3e4e4f6f2ebd 100644 --- a/l10n_br_account_payment_order/__manifest__.py +++ b/l10n_br_account_payment_order/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Brazilian Payment Order", - "version": "14.0.5.4.2", + "version": "14.0.6.0.0", "license": "AGPL-3", "author": "KMEE, Akretion, Odoo Community Association (OCA)", "maintainers": ["mbcosta"], @@ -51,6 +51,8 @@ "views/l10n_br_cnab_mov_instruction_code_view.xml", "views/account_move_view.xml", "views/l10n_br_cnab_boleto_wallet_code_view.xml", + # Códigos CNAB + "views/l10n_br_cnab_code_view.xml", ], "demo": [ "demo/account_payment_method.xml", diff --git a/l10n_br_account_payment_order/data/cnab_codes/banco_ailos_cnab_240.xml b/l10n_br_account_payment_order/data/cnab_codes/banco_ailos_cnab_240.xml index 27d2b2cef645..b70139d02be0 100644 --- a/l10n_br_account_payment_order/data/cnab_codes/banco_ailos_cnab_240.xml +++ b/l10n_br_account_payment_order/data/cnab_codes/banco_ailos_cnab_240.xml @@ -3,155 +3,172 @@ - + Entrada Títulos 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Concessão de Abatimento 04 + instruction_move_code - + Cancelamento de Abatimento 05 + instruction_move_code - + Alteração de Vencimento 06 + instruction_move_code - + Concessão de Desconto 07 + instruction_move_code - + Cancelamento de Desconto 08 + instruction_move_code - + Protesto 09 + instruction_move_code - + Sustar Protesto e Baixar Título 10 + instruction_move_code - + Sustar Protesto e Manter em Carteira 11 + instruction_move_code - + Alteração de outros dados (Somente endereço do pagador) 31 + instruction_move_code - + Cancelar instrução automática de protesto 41 + instruction_move_code - + Alterar tipo de emissão - Cooperativa/EE 90 + instruction_move_code - + Inclusão Negativação via Serasa 93 + instruction_move_code - + Exclusão Negativação via Serasa 94 + instruction_move_code - + Envio de SMS ao pagador 95 + instruction_move_code - + Cancelamento Instrução de SMS 96 + instruction_move_code - + Entrada Confirmada 02 + return_move_code - + Entrada Rejeitada 03 + return_move_code - + Liquidação 06 + return_move_code - + Confirmação do Recebimento da Instrução de Desconto 07 + return_move_code - + Confirmação do Recebimento do Cancelamento do Desconto 08 + return_move_code - + Baixa 09 + return_move_code - + Confirmação Recebimento Instrução de Abatimento 12 + return_move_code - + Confirmação Recebimento Instrução de Cancelamento Abatimento 13 + return_move_code - + Confirmação Recebimento Instrução Alteração de Vencimento 14 + return_move_code - + Liquidação Após Baixa ou Liquidação Título Não Registrado 17 + return_move_code - + Confirmação Recebimento Instrução de Protesto 19 + return_move_code - + Confirmação Recebimento Instrução de Sustação/Cancelamento de Protesto 20 + return_move_code - + Título Enviado ao Cartório 22 + return_move_code - + Remessa a Cartório (Aponte em Cartório) 23 + return_move_code - + Retirada de Cartório e Manutenção em Carteira 24 + return_move_code - + Protestado e Baixado (Baixa por Ter Sido Protestado) 25 + return_move_code - + Instrução Rejeitada 26 + return_move_code - + Confirmação do Pedido de Alteração de Outros Dados 27 + return_move_code - + Débito de Tarifas/Custas 28 + return_move_code - + Confirmação de Envio de SMS 36 + return_move_code - + Envio de SMS rejeitado 37 + return_move_code - + Confirmação da alteração dos dados do Sacado 42 + return_move_code - + Instrução para cancelar protesto confirmada 46 + return_move_code - + Cancelamento de SMS 64 + return_move_code - + Liquidação de boleto cooperativa emite e expede 76 + return_move_code - + Liquidação de boleto após baixa ou não registrado cooperativa emite e expede 77 + return_move_code - + Rejeição cartorária (Visualizar motivo na última página deste manual) 89 + return_move_code - + Título em aberto não enviado ao pagador 91 + return_move_code - + Inconsistência Negativação Serasa 92 + return_move_code - + Inclusão Negativação via Serasa 93 + return_move_code - + Exclusão Negativação Serasa 94 + return_move_code - + Excluir Protesto com carta de anuência 98 + return_move_code - + Cobrança Simples 1 + wallet_code - + Cobrança Vinculada 2 + wallet_code - + Cobrança Caucionada 3 + wallet_code - + Cobrança Descontada 4 + wallet_code - + Cobrança Vendor 5 + wallet_code - + Entrada de Títulos 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Protesto para Fins Falimentares 03 + instruction_move_code - + Concessão de Abatimento 04 + instruction_move_code - + Cancelamento de Abatimento 05 + instruction_move_code - + Alteração de Vencimento 06 + instruction_move_code - + Concessão de Desconto 07 + instruction_move_code - + Cancelamento de Desconto 08 + instruction_move_code - + Protestar 09 + instruction_move_code - + Sustar Protesto e Baixar Título 10 + instruction_move_code - + Sustar Protesto e Manter em Carteira 11 + instruction_move_code - + Alteração de Juros de Mora 12 + instruction_move_code - + Dispensar Cobrança de Juros de Mora 13 + instruction_move_code - + Alteração de Valor/Percentual de Multa 14 + instruction_move_code - + Dispensar Cobrança de Multa 15 + instruction_move_code - + Alteração do Valor de Desconto 16 + instruction_move_code - + Não conceder Desconto 17 + instruction_move_code - + Alteração do Valor de Abatimento 18 + instruction_move_code - + Prazo Limite de Recebimento - Alterar 19 + instruction_move_code - + Prazo Limite de Recebimento - Dispensar 20 + instruction_move_code - + Alterar número do título dado pelo cedente 21 + instruction_move_code - + Alterar número controle do Participante 22 + instruction_move_code - + Alterar dados do Sacado 23 + instruction_move_code - + Alterar dados do Sacador/Avalista 24 + instruction_move_code - + Recusa da Alegação do Sacado 30 + instruction_move_code - + Alteração de Outros Dados 31 + instruction_move_code - + Alteração dos Dados do Rateio de Crédito 33 + instruction_move_code - + Pedido de Cancelamento dos Dados do Rateio de Crédito 34 + instruction_move_code - + Pedido de Desagendamento do Débito Automático 35 + instruction_move_code - + Alteração de Carteira 40 + instruction_move_code - + Cancelar protesto 41 + instruction_move_code - + Alteração de Espécie de Título 42 + instruction_move_code - + Transferência de carteira/modalidade de cobrança 43 + instruction_move_code - + Alteração de contrato de cobrança 44 + instruction_move_code - + Negativação Sem Protesto 45 + instruction_move_code - + Solicitação de Baixa de Título Negativado Sem Protesto 46 + instruction_move_code - + Entrada Confirmada 02 + return_move_code - + Entrada Rejeitada 03 + return_move_code - + Transferência de Carteira/Entrada 04 + return_move_code - + Transferência de Carteira/Baixa 05 + return_move_code - + Liquidação 06 + return_move_code - + Confirmação do Recebimento da Instrução de Desconto 07 + return_move_code - + Confirmação do Recebimento do Cancelamento do Desconto 08 + return_move_code - + Baixa 09 + return_move_code - + Títulos em Carteira (Em Ser) 11 + return_move_code - + Confirmação Recebimento Instrução de Abatimento 12 + return_move_code - + Confirmação Recebimento Instrução de Cancelamento Abatimento 13 + return_move_code - + Confirmação Recebimento Instrução Alteração de Vencimento 14 + return_move_code - + Franco de Pagamento 15 + return_move_code - + Liquidação Após Baixa ou Liquidação Título Não Registrado 17 + return_move_code - + Confirmação Recebimento Instrução de Protesto 19 + return_move_code - + Confirmação Recebimento Instrução de Sustação/Cancelamento de Protesto 20 + return_move_code - + Remessa a Cartório (Aponte em Cartório) 23 + return_move_code - + Retirada de Cartório e Manutenção em Carteira 24 + return_move_code - + Protestado e Baixado (Baixa por Ter Sido Protestado) 25 + return_move_code - + Instrução Rejeitada 26 + return_move_code - + Confirmação do Pedido de Alteração de Outros Dados 27 + return_move_code - + Débito de Tarifas/Custas 28 + return_move_code - + Ocorrências do Sacado 29 + return_move_code - + Alteração de Dados Rejeitada 30 + return_move_code - + Confirmação da Alteração dos Dados do Rateio de Crédito 33 + return_move_code - + Confirmação do Cancelamento dos Dados do Rateio de Crédito 34 + return_move_code - + Confirmação do Desagendamento do Débito Automático 35 + return_move_code - + Confirmação de envio de e-mail/SMS 36 + return_move_code - + Envio de e-mail/SMS rejeitado 37 + return_move_code - + Confirmação de alteração do Prazo Limite de Recebimento (a data deve ser informada no campo 28.3.p) 38 + return_move_code - + Confirmação de Dispensa de Prazo Limite de Recebimento 39 + return_move_code - + Confirmação da alteração do número do título dado pelo cedente 40 + return_move_code - + Confirmação da alteração do número controle do Participante 41 + return_move_code - + Confirmação da alteração dos dados do Sacado 42 + return_move_code - + Confirmação da alteração dos dados do Sacador/Avalista 43 + return_move_code - + Título pago com cheque devolvido 44 + return_move_code - + Título pago com cheque compensado 45 + return_move_code - + Instrução para cancelar protesto confirmada 46 + return_move_code - + Instrução para protesto para fins falimentares confirmada 47 + return_move_code - + Confirmação de instrução de transferência de carteira/modalidade de cobrança 48 + return_move_code - + Alteração de contrato de cobrança 49 + return_move_code - + Título pago com cheque pendente de liquidação 50 + return_move_code - + Título DDA reconhecido pelo sacado 51 + return_move_code - + Título DDA não reconhecido pelo sacado 52 + return_move_code - + Título DDA recusado pela CIP 53 + return_move_code - + Confirmação da Instrução de Baixa de Título Negativado sem Protesto 54 + return_move_code - + Confirmação de pedido de dispensa de multa 55 + return_move_code - + Confirmação de pedido de cobrança de multa 56 + return_move_code - + Confirmação de pedido de alteração de cobrança de juros 57 + return_move_code - + Confirmação de pedido de alteração de valor/data de desconto 58 + return_move_code - + Confirmação de pedido de alteração do cedente do título 59 + return_move_code - + Confirmação de pedido de dispensa de juros de mora 60 + return_move_code - + Remessa 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Pedido de Protesto Falimentar 03 + instruction_move_code - + Concessão de Abatimento 04 + instruction_move_code - + Cancelamento de Abatimento Concedido 05 + instruction_move_code - + Alteração de Vencimento 06 + instruction_move_code - + Alteração do Controle do Participante 07 + instruction_move_code - + Alteração de seu Número 08 + instruction_move_code - + Pedido de Protesto 09 + instruction_move_code - + Ped. Exc. de Cadastro Pagador Débito 12 + instruction_move_code - + Inclusão de Cadastro Pagador 13 + instruction_move_code - + Alteração Cadastro Pagador 14 + instruction_move_code - + Sustar Protesto e Baixar Título 18 + instruction_move_code - + Sustar Protesto e Manter em Carteira 19 + instruction_move_code - + Alteração de Valor* 20 + instruction_move_code - + Transferência Cessão Crédito ID. Prod.10 22 + instruction_move_code - + Transferência entre Carteiras 23 + instruction_move_code - + Dev. Transferência entre Carteiras 24 + instruction_move_code - + Alteração de Outros Dados 31 + instruction_move_code - + Instrução de Negativação 32 + instruction_move_code - + Pedido de Negativação 45 + instruction_move_code - + Excluir Negativação com Baixa 46 + instruction_move_code - + Excluir Negativação e Manter Pendente 47 + instruction_move_code - + Acerto nos Dados do Rateio de Crédito 68 + instruction_move_code - + Cancelamento do Rateio de Crédito 69 + instruction_move_code - + Entrada Confirmada 02 + return_move_code - + Entrada Rejeitada 03 + return_move_code - + Liquidação Normal * 06 + return_move_code - + Conf. Exc. Cadastro Pagador Débito 07 + return_move_code - + Rej. Ped. Exc. Cadastro de Pagador Débito 08 + return_move_code - + Baixado Automat. via Arquivo 09 + return_move_code - + Baixado conforme instruções da Agência 10 + return_move_code - + Em Ser - Arquivo de Títulos pendentes 11 + return_move_code - + Abatimento Concedido 12 + return_move_code - + Abatimento Cancelado 13 + return_move_code - + Vencimento Alterado 14 + return_move_code - + Liquidação em Cartório 15 + return_move_code - + Título Pago em Cheque – Vinculado 16 + return_move_code - + Liquidação após baixa ou Título não registrado 17 + return_move_code - + Acerto de Depositária 18 + return_move_code - + Confirmação Receb. Inst. de Protesto 19 + return_move_code - + Confirmação Recebimento Instrução Sustação de Protesto 20 + return_move_code - + Acerto do Controle do Participante (sem motivo) 21 + return_move_code - + Título Com Pagamento Cancelado 22 + return_move_code - + Entrada do Título em Cartório (sem motivo) 23 + return_move_code - + Entrada rejeitada por CEP Irregular 24 + return_move_code - + Confirmação Receb.Inst.de Protesto Falimentar 25 + return_move_code - + Baixa Rejeitada 27 + return_move_code - + Débito de tarifas/custas 28 + return_move_code - + Ocorrências do Pagador 29 + return_move_code - + Alteração de Outros Dados Rejeitados 30 + return_move_code - + Confirmado Inclusão Cadastro Pagador 31 + return_move_code - + Instrução Rejeitada 32 + return_move_code - + Confirmação Pedido Alteração Outros Dados 33 + return_move_code - + Retirado de Cartório e Manutenção Carteira 34 + return_move_code - + Desagendamento do débito automático 35 + return_move_code - + Rejeitado Inclusão Cadastro Pagador 37 + return_move_code - + Confirmado Alteração Pagador 38 + return_move_code - + Rejeitado Alteração Cadastro Pagador 39 + return_move_code - + Estorno de pagamento 40 + return_move_code - + Sustado judicial 55 + return_move_code - + Acerto dos dados do rateio de Crédito 68 + return_move_code - + Cancelamento de Rateio 69 + return_move_code - + Confirmação Receb. Pedido de Negativação 73 + return_move_code - + Confir Pedido de Excl de Negat (com ou sem baixa) 74 + return_move_code - + Nota: Para as ocorrências sem motivos, as posições serão informadas com Zeros. 00 + return_move_code - + Entrada de Título 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Concessão de Abatimento 04 + instruction_move_code - + Cancelamento de Abatimento 05 + instruction_move_code - + Alteração de Vencimento 06 + instruction_move_code - + Concessão de Desconto 07 + instruction_move_code - + Cancelamento de Desconto 08 + instruction_move_code - + Protestar (transferir de Devolução para Protesto) 09 + instruction_move_code - + Sustar Protesto e Baixar Título 10 + instruction_move_code - + Sustar Protesto e Manter em Carteira 11 + instruction_move_code - + Alteração de Outros Dados 31 + instruction_move_code - + Alteração dos Dados do Rateio de Crédito 33 + instruction_move_code - + Inclusão no Banco de Pagadores 36 + instruction_move_code - + Alteração no Banco de Pagadores 37 + instruction_move_code - + Exclusão no Banco de Pagadores 38 + instruction_move_code - + Serviços 40 + instruction_move_code - + Alteração do Valor Nominal do Título 47 + instruction_move_code - + Alteração valor/percentual mínimo/máximo 48 + instruction_move_code - + Solicitação de Impressão de Títulos Confirmada 01 + return_move_code - + Entrada Confirmada 02 + return_move_code - + Entrada Rejeitada 03 + return_move_code - + Transferência de Carteira/Entrada 04 + return_move_code - + Transferência de Carteira/Baixa 05 + return_move_code - + Liquidação 06 + return_move_code - + Confirmação do Recebimento da Instrução de Desconto 07 + return_move_code - + Confirmação do Recebimento do Cancelamento do Desconto 08 + return_move_code - + Baixa 09 + return_move_code - + Confirmação Recebimento Instrução de Abatimento 12 + return_move_code - + Confirmação Recebimento Instrução de Cancelamento Abatimento 13 + return_move_code - + Confirmação Recebimento Instrução Alteração de Vencimento 14 + return_move_code - + Confirmação Recebimento Instrução de Protesto 19 + return_move_code - + Confirmação Recebimento Instrução de Sustação/Cancelamento de Protesto 20 + return_move_code - + Remessa a Cartório 23 + return_move_code - + Retirada de Cartório 24 + return_move_code - + Protestado e Baixado (Baixa por Ter Sido Protestado) 25 + return_move_code - + Instrução Rejeitada 26 + return_move_code - + Confirmação do Pedido de Alteração de Outros Dados 27 + return_move_code - + Débito de Tarifas/Custas 28 + return_move_code - + Alteração de Dados Rejeitada 30 + return_move_code - + Confirmação de Inclusão Banco de Pagador 35 + return_move_code - + Confirmação de Alteração Banco de Pagador 36 + return_move_code - + Confirmação de Exclusão Banco de Pagador 37 + return_move_code - + Emissão de Boletos de Banco de Pagador 38 + return_move_code - + Manutenção de Pagador Rejeitada 39 + return_move_code - + Entrada de Título via Banco de Pagador Rejeitada 40 + return_move_code - + Manutenção de Banco de Pagador Rejeitada 41 + return_move_code - + Estorno de Baixa / Liquidação 44 + return_move_code - + Alteração de Dados 45 + return_move_code - + Liquidação On-line 46 + return_move_code - + Estorno de Liquidação On-line 47 + return_move_code - + Título DDA reconhecido pelo pagador 51 + return_move_code - + Título DDA não reconhecido pelo pagador 52 + return_move_code - + Título DDA recusado pela CIP 53 + return_move_code - + Confirmação de alteração do valor nominal do título 61 + return_move_code - + Confirmação de alteração do valor/percentual mínimo/máximo 62 + return_move_code - + Registro de títulos 01 + instruction_move_code - + Solicitação de baixa 02 + instruction_move_code - + Pedido de débito em conta 03 + instruction_move_code - + Concessão de abatimento 04 + instruction_move_code - + Cancelamento de abatimento 05 + instruction_move_code - + Alteração de vencimento de título 06 + instruction_move_code - + Alteração do número de controle do participante 07 + instruction_move_code - + Alteração do número do titulo dado pelo Beneficiário 08 + instruction_move_code - + Instrução para protestar (Nota 09) 09 + instruction_move_code - + Instrução para sustar protesto 10 + instruction_move_code - + Instrução para dispensar juros 11 + instruction_move_code - + Alteração de nome e endereço do Pagador 12 + instruction_move_code - + Alterar Juros de Mora (Vide Observações) 16 + instruction_move_code - + Conceder desconto 31 + instruction_move_code - + Não conceder desconto 32 + instruction_move_code - + Retificar dados da concessão de desconto 33 + instruction_move_code - + Alterar data para concessão de desconto 34 + instruction_move_code - + Cobrar multa (Nota 11) 35 + instruction_move_code - + Dispensar multa (Nota 11) 36 + instruction_move_code - + Dispensar indexador 37 + instruction_move_code - + Dispensar prazo limite de recebimento (Nota 11) 38 + instruction_move_code - + Alterar prazo limite de recebimento (Nota 11) 39 + instruction_move_code - + Alterar modalidade (Vide Observações) 40 + instruction_move_code - + Alteração de Valor Nominal do Boleto 47 + instruction_move_code - + Inclusão de Negativação Sem Protesto (campo “Seu número” diferencia a negativação para o mesmo pagador) (Nota 09) 85 + instruction_move_code - + Exclusão de Negativação Sem Protesto (Nota 09) 86 + instruction_move_code - + Confirmação de Entrada de Boleto 02 + return_move_code - + Comando recusado (Motivo indicado na posição 087/088) 03 + return_move_code - + Liquidado sem registro (carteira 17-tipo4) 05 + return_move_code - + Liquidação Normal) 06 + return_move_code - + Liquidação por Conta/Parcial 07 + return_move_code - + Liquidação por Saldo 08 + return_move_code - + Baixa de Titulo 09 + return_move_code - + Baixa Solicitada 10 + return_move_code - + Boletos em Ser (constara somente do arquivo de existência de cobrança, fornecido mediante solicitação do cliente) 11 + return_move_code - + Abatimento Concedido 12 + return_move_code - + Abatimento Cancelado 13 + return_move_code - + Alteração de Vencimento do boleto 14 + return_move_code - + Liquidação em Cartório 15 + return_move_code - + Confirmação de alteração de juros de mora 16 + return_move_code - + Confirmação de recebimento de instruções para protesto 19 + return_move_code - + Débito em Conta 20 + return_move_code - + Alteração do Nome do Sacado 21 + return_move_code - + Alteração do Endereço do Sacado 22 + return_move_code - + Indicação de encaminhamento a cartório 23 + return_move_code - + Sustar Protesto 24 + return_move_code - + Dispensar Juros de mora 25 + return_move_code - + Alteração do número do boleto dado pelo Cedente (Seu número) – 10 e 15 posições 26 + return_move_code - + Manutenção de titulo vencido 28 + return_move_code - + Conceder desconto 31 + return_move_code - + Não conceder desconto 32 + return_move_code - + Retificar desconto 33 + return_move_code - + Cobrar Multa 35 + return_move_code - + Dispensar Multa 36 + return_move_code - + Dispensar Indexador 37 + return_move_code - + Dispensar prazo limite para recebimento 38 + return_move_code - + Alterar prazo limite para recebimento 39 + return_move_code - + Alteração do número do controle do participante (25 posições) 41 + return_move_code - + Alteração do número do documento do sacado (CNPJ/CPF) 42 + return_move_code - + Boleto pago com cheque devolvido) 44 + return_move_code - + Boleto pago com cheque, aguardando compensação) 46 + return_move_code - + Alteração de valor nominal do boleto 47 + return_move_code - + Registrado QR Code Pix 61 + return_move_code - + Alteração de tipo de cobrança (específico para boletos das carteiras 11 e 17) 72 + return_move_code - + Confirmação de Instrução de Parâmetro de Pagamento Parcial 73 + return_move_code - + Inclusão de Negativação 85 + return_move_code - + Exclusão de Negativação 86 + return_move_code - + Baixa Operacional 93 + return_move_code - + Despesas de Protesto 96 + return_move_code - + Despesas de Sustação de Protesto 97 + return_move_code - + Débito de Custas Antecipadas 98 + return_move_code - + REMESSA 01 + instruction_move_code - + PEDIDO DE BAIXA 02 + instruction_move_code - + CONCESSÃO DE ABATIMENTO 04 + instruction_move_code - + CANCELAMENTO DE ABATIMENTO 05 + instruction_move_code - + ALTERAÇÃO DO VENCIMENTO 06 + instruction_move_code - + PROTESTAR 09 + instruction_move_code - + NÃO PROTESTAR (INIBE O PROTESTO AUTOMÁTICO) 10 + instruction_move_code - + SUSTAR O PROTESTO 18 + instruction_move_code - + ALTERAÇÃO DE OUTROS DADOS CAMPOS A ALTERAR 31 + instruction_move_code - + BENEFICIÁRIO NÃO CONCORDA COM A ALEGAÇÃO DO PAGADOR CÓDIGO DA ALEGAÇÃO 38 + instruction_move_code - + EXCLUSÃO DE SACADOR AVALISTA 41 + instruction_move_code - + ALTERAÇÃO DE DADOS EXTRAS (REGISTRO DE MULTA) 49 + instruction_move_code - + ENTRADA EM NEGATIVAÇÃO EXPRESSA 66 + instruction_move_code - + NÃO NEGATIVAR (INIBE ENTRADA EM NEGATIVAÇÃO EXPRESSA) 67 + instruction_move_code - + EXCLUIR NEGATIVAÇÃO EXPRESSA (ATÉ 15 DIAS CORRIDOS APÓS A ENTRADA EM NEGATIVAÇÃO EXPRESSA) 68 + instruction_move_code - + CANCELAR NEGATIVAÇÃO EXPRESSA (APÓS TÍTULO TER SIDO NEGATIVADO) 69 + instruction_move_code - + DESCONTAR TÍTULOS ENCAMINHADOS NO DIA 93 + instruction_move_code - + ENTRADA CONFIRMADA (COM POSSIBILIDADE DE MENSAGEM – NOTA 23 – TABELA 8) 02 + return_move_code - + ENTRADA REJEITADA (NOTA 23 - TABELA 1) 03 + return_move_code - + ALTERAÇÃO DE DADOS – NOVA ENTRADA OU ALTERAÇÃO/EXCLUSÃOADOS ACATADA 04 + return_move_code - + ALTERAÇÃO DE DADOS – BAIXA 05 + return_move_code - + LIQUIDAÇÃO NORMAL 06 + return_move_code - + LIQUIDAÇÃO EM CARTÓRIO 08 + return_move_code - + BAIXA SIMPLES 09 + return_move_code - + BAIXA POR TER SIDO LIQUIDADO 10 + return_move_code - + EM SER (SÓ NO RETORNO MENSAL) 11 + return_move_code - + ABATIMENTO CONCEDIDO 12 + return_move_code - + ABATIMENTO CANCELADO 13 + return_move_code - + VENCIMENTO ALTERADO 14 + return_move_code - + BAIXAS REJEITADAS (NOTA 23 - TABELA 4) 15 + return_move_code - + INSTRUÇÕES REJEITADAS (NOTA 23 – TABELA 3) 16 + return_move_code - + ALTERAÇÃO/EXCLUSÃO DE DADOS REJEITADA (NOTA 23 - TABELA 2) 17 + return_move_code - + COBRANÇA CONTRATUAL – INSTRUÇÕES/ALTERAÇÕES REJEITADAS/PENDENTES (NOTA 23 - TABELA 5) 18 + return_move_code - + CONFIRMAÇÃO RECEBIMENTO DE INSTRUÇÃO DE PROTESTO 19 + return_move_code - + CONFIRMAÇÃO RECEBIMENTO DE INSTRUÇÃO DE SUSTAÇÃO DE PROTESTO /TARIFA 20 + return_move_code - + CONFIRMAÇÃO RECEBIMENTO DE INSTRUÇÃO DE NÃO PROTESTAR 21 + return_move_code - + PROTESTO ENVIADO A CARTÓRIO/TARIFA 23 + return_move_code - + INSTRUÇÃO DE PROTESTO SUSTADA (NOTA 23 - TABELA 7) 24 + return_move_code - + ALEGAÇÕES DO PAGADOR (NOTA 23 - TABELA 6) 25 + return_move_code - + TARIFA DE AVISO DE COBRANÇA 26 + return_move_code - + TARIFA DE EXTRATO POSIÇÃO (B40X) 27 + return_move_code - + TARIFA DE RELAÇÃO DAS LIQUIDAÇÕES 28 + return_move_code - + TARIFA DE MANUTENÇÃO DE TÍTULOS VENCIDOS 29 + return_move_code - + DÉBITO MENSAL DE TARIFAS (PARA ENTRADAS E BAIXAS) 30 + return_move_code - + BAIXA POR TER SIDO PROTESTADO 32 + return_move_code - + CUSTAS DE PROTESTO 33 + return_move_code - + CUSTAS DE SUSTAÇÃO 34 + return_move_code - + CUSTAS DE CARTÓRIO DISTRIBUIDOR 35 + return_move_code - + CUSTAS DE EDITAL 36 + return_move_code - + TARIFA DE EMISSÃO DE BOLETO/TARIFA DE ENVIO DE DUPLICATA 37 + return_move_code - + TARIFA DE INSTRUÇÃO 38 + return_move_code - + TARIFA DE OCORRÊNCIAS 39 + return_move_code - + TARIFA MENSAL DE EMISSÃO DE BOLETO/TARIFA MENSAL DE ENVIO DE DUPLICATA 40 + return_move_code - + DÉBITO MENSAL DE TARIFAS – EXTRATO DE POSIÇÃO (B4EP/B4OX) 41 + return_move_code - + DÉBITO MENSAL DE TARIFAS – OUTRAS INSTRUÇÕES 42 + return_move_code - + DÉBITO MENSAL DE TARIFAS – MANUTENÇÃO DE TÍTULOS VENCIDOS 43 + return_move_code - + DÉBITO MENSAL DE TARIFAS – OUTRAS OCORRÊNCIAS 44 + return_move_code - + DÉBITO MENSAL DE TARIFAS – PROTETO 45 + return_move_code - + DÉBITO MENSAL DE TARIFAS – SUSTAÇÃO DE PROTESTO 46 + return_move_code - + BAIXA COM TRANSFERÊNCIA PARA DESCONTO 47 + return_move_code - + CUSTAS DE SUSTAÇÃO JUDICIAL 48 + return_move_code - + TARIFA MENSAL REFERENTE A ENTRADAS BANCOS CORRESPONDENTES NA CARTEIRA 51 + return_move_code - + TARIFA MENSAL BAIXAS NA CARTEIRA 52 + return_move_code - + TARIFA MENSAL BAIXAS EM BANCOS CORRESPONDENTES NA CARTEIRA 53 + return_move_code - + TARIFA MENSAL DE LIQUIDAÇÕES NA CARTEIRA 54 + return_move_code - + TARIFA MENSAL DE LIQUIDAÇÕES EM BANCOS CORRESPONDENTES NA CARTEIRA 55 + return_move_code - + CUSTAS DE IRREGULARIDADE 56 + return_move_code - + INSTRUÇÃO CANCELADA (NOTA 23 – TABELA 8) 57 + return_move_code - + ENTRADA REJEITADA CARNÊ (NOTA 20 – TABELA 1) 60 + return_move_code - + TARIFA EMISSÃO AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154) 61 + return_move_code - + DÉBITO MENSAL DE TARIFA – AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154) 62 + return_move_code - + TÍTULO SUSTADO JUDICIALMENTE 63 + return_move_code - + INSTRUÇÃO DE NEGATIVAÇÃO EXPRESSA REJEITADA (NOTA 25 – TABELA 3) 74 + return_move_code - + CONFIRMA O RECEBIMENTO DE INSTRUÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA 75 + return_move_code - + CONFIRMA O RECEBIMENTO DE INSTRUÇÃO DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA 77 + return_move_code - + CONFIRMA O RECEBIMENTO DE INSTRUÇÃO DE CANCELAMENTO DA NEGATIVAÇÃO EXPRESSA 78 + return_move_code - + NEGATIVAÇÃO EXPRESSA INFORMACIONAL (NOTA 25 – TABELA 12) 79 + return_move_code - + CONFIRMAÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA – TARIFA 80 + return_move_code - + CONFIRMAÇÃO O CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA - TARIFA 82 + return_move_code - + CONFIRMAÇÃO DA EXCLUSÃO/CANCELAMENTO DA NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO - TARIFA 83 + return_move_code - + TARIFA POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA 85 + return_move_code - + TARIFA EMAIL COBRANÇA ATIVA ELETRÔNICA 86 + return_move_code - + TARIFA SMS COBRANÇA ATIVA ELETRÔNICA 87 + return_move_code - + TARIFA MENSAL POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA 88 + return_move_code - + TARIFA MENSAL EMAIL COBRANÇA ATIVA ELETRÔNICA 89 + return_move_code - + TARIFA MENSAL SMS COBRANÇA ATIVA ELETRÔNICA 90 + return_move_code - + TARIFA MENSAL DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA 91 + return_move_code - + TARIFA MENSAL DE CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA 92 + return_move_code - + TARIFA MENSAL DE EXCLUSÃO/CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO 93 + return_move_code - + CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE NÃO NEGATIVAR 94 + return_move_code - + REMESSA 01 + instruction_move_code - + PEDIDO DE BAIXA 02 + instruction_move_code - + CONCESSÃO DE ABATIMENTO 04 + instruction_move_code - + CANCELAMENTO DE ABATIMENTO VALOR DO ABATIMENTO 05 + instruction_move_code - + ALTERAÇÃO DO VENCIMENTO 06 + instruction_move_code - + ALTERAÇÃO DO USO DA EMPRESA USO DA EMPRESA 07 + instruction_move_code - + ALTERAÇÃO DO SEU NÚMERO SEU NÚMERO 08 + instruction_move_code - + PROTESTAR 09 + instruction_move_code - + NÃO PROTESTAR 10 + instruction_move_code - + PROTESTO PARA FINS FALIMENTARES 11 + instruction_move_code - + SUSTAR O PROTESTO 18 + instruction_move_code - + EXCLUSÃO DE SACADOR AVALISTA 30 + instruction_move_code - + ALTERAÇÃO DE OUTROS DADOS CAMPOS A ALTERAR 31 + instruction_move_code - + BAIXA POR TER SIDO PAGO DIRETAMENTE AO BENEFICIÁRIO 34 + instruction_move_code - + CANCELAMENTO DE INSTRUÇÃO CÓDIGO DA INSTRUÇÃO 35 + instruction_move_code - + ALTERAÇÃO DO VENCIMENTO E SUSTAR PROTESTO VENCIMENTO 37 + instruction_move_code - + BENEFICIÁRIO NÃO CONCORDA COM ALEGAÇÃO DO PAGADOR CÓDIGO DA ALEGAÇÃO 38 + instruction_move_code - + BENEFICIÁRIO SOLICITA DISPENSA DE JUROS 47 + instruction_move_code - + ALTERAÇÃO DE DADOS EXTRAS (REGISTRO DE MULTA) 49 + instruction_move_code - + ENTRADA EM NEGATIVAÇÃO EXPRESSA 66 + instruction_move_code - + NÃO NEGATIVAR (INIBE A ENTRADA EM NEGATIVAÇÃO EXPRESSA) 67 + instruction_move_code - + EXCLUIR NEGATIVAÇÃO EXPRESSA (ATÉ 15 DIAS CORRIDOS APÓS A ENTRADA EM NEGATIVAÇÃO EXPRESSA) 68 + instruction_move_code - + CANCELAR NEGATIVAÇÃO EXPRESSA (APÓS TÍTULO TER SIDO NEGATIVADO)) 69 + instruction_move_code - + DESCONTAR TÍTULOS ENCAMINHADOS NO DIA 93 + instruction_move_code - + ENTRADA CONFIRMADA COM POSSIBILIDADE DE MENSAGEM 02 + return_move_code - + ENTRADA REJEITADA 03 + return_move_code - + ALTERAÇÃO DE DADOS – NOVA ENTRADA OU ALTERAÇÃO/EXCLUSÃO DE DADOS ACATADA 04 + return_move_code - + ALTERAÇÃO DE DADOS – BAIXA 05 + return_move_code - + Liquidação Normal 06 + return_move_code - + LIQUIDAÇÃO PARCIAL – COBRANÇA INTELIGENTE (B2B) 07 + return_move_code - + LIQUIDAÇÃO EM CARTÓRIO 08 + return_move_code - + BAIXA SIMPLES 09 + return_move_code - + BAIXA POR TER SIDO LIQUIDADO 10 + return_move_code - + EM SER (SÓ NO RETORNO MENSAL) 11 + return_move_code - + ABATIMENTO CONCEDIDO 12 + return_move_code - + ABATIMENTO CANCELADO 13 + return_move_code - + VENCIMENTO ALTERADO 14 + return_move_code - + BAIXAS REJEITADAS (NOTA 20 – TABELA 4) 15 + return_move_code - + INSTRUÇÕES REJEITADAS (NOTA 20 – TABELA 3) 16 + return_move_code - + ALTERAÇÃO/EXCLUSÃO DE DADOS REJEITADOS (NOTA 20 – TABELA 2) 17 + return_move_code - + COBRANÇA CONTRATUAL – INSTRUÇÕES/ALTERAÇÕES REJEITADAS/PENDENTES (NOTA 20 – TABELA 5) 18 + return_move_code - + CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE PROTESTO 19 + return_move_code - + CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE SUSTAÇÃO DE PROTESTO /TARIFA 20 + return_move_code - + CONFIRMA RECEBIMENTO DE INSTRUÇÃO DE NÃO PROTESTAR 21 + return_move_code - + TÍTULO ENVIADO A CARTÓRIO/TARIFA 23 + return_move_code - + INSTRUÇÃO DE PROTESTO REJEITADA / SUSTADA / PENDENTE (NOTA 20 – TABELA 7) 24 + return_move_code - + ALEGAÇÕES DO PAGADOR (NOTA 20 – TABELA 6) 25 + return_move_code - + TARIFA DE AVISO DE COBRANÇA 26 + return_move_code - + TARIFA DE EXTRATO POSIÇÃO (B40X) 27 + return_move_code - + TARIFA DE RELAÇÃO DAS LIQUIDAÇÕES 28 + return_move_code - + TARIFA DE MANUTENÇÃO DE TÍTULOS VENCIDOS 29 + return_move_code - + DÉBITO MENSAL DE TARIFAS (PARA ENTRADAS E BAIXAS) 30 + return_move_code - + BAIXA POR TER SIDO PROTESTADO 32 + return_move_code - + CUSTAS DE PROTESTO 33 + return_move_code - + CUSTAS DE SUSTAÇÃO 34 + return_move_code - + CUSTAS DE CARTÓRIO DISTRIBUIDOR 35 + return_move_code - + CUSTAS DE EDITAL 36 + return_move_code - + TARIFA DE EMISSÃO DE BOLETO/TARIFA DE ENVIO DE DUPLICATA 37 + return_move_code - + TARIFA DE INSTRUÇÃO 38 + return_move_code - + TARIFA DE OCORRÊNCIAS 39 + return_move_code - + TARIFA MENSAL DE EMISSÃO DE BOLETO/TARIFA MENSAL DE ENVIO DE DUPLICATA 40 + return_move_code - + DÉBITO MENSAL DE TARIFAS – EXTRATO DE POSIÇÃO (B4EP/B4OX) 41 + return_move_code - + DÉBITO MENSAL DE TARIFAS – OUTRAS INSTRUÇÕES 42 + return_move_code - + DÉBITO MENSAL DE TARIFAS – MANUTENÇÃO DE TÍTULOS VENCIDOS 43 + return_move_code - + DÉBITO MENSAL DE TARIFAS – OUTRAS OCORRÊNCIAS 44 + return_move_code - + DÉBITO MENSAL DE TARIFAS – PROTESTO 45 + return_move_code - + DÉBITO MENSAL DE TARIFAS – SUSTAÇÃO DE PROTESTO 46 + return_move_code - + BAIXA COM TRANSFERÊNCIA PARA DESCONTO 47 + return_move_code - + CUSTAS DE SUSTAÇÃO JUDICIAL 48 + return_move_code - + TARIFA MENSAL REF A ENTRADAS BANCOS CORRESPONDENTES NA CARTEIRA 51 + return_move_code - + TARIFA MENSAL BAIXAS NA CARTEIRA 52 + return_move_code - + TARIFA MENSAL BAIXAS EM BANCOS CORRESPONDENTES NA CARTEIRA 53 + return_move_code - + TARIFA MENSAL DE LIQUIDAÇÕES NA CARTEIRA 54 + return_move_code - + TARIFA MENSAL DE LIQUIDAÇÕES EM BANCOS CORRESPONDENTES NA CARTEIRA 55 + return_move_code - + CUSTAS DE IRREGULARIDADE 56 + return_move_code - + INSTRUÇÃO CANCELADA (NOTA 20 – TABELA 8) 57 + return_move_code - + BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG 59 + return_move_code - + ENTRADA REJEITADA CARNÊ (NOTA 20 – TABELA 1) 60 + return_move_code - + TARIFA EMISSÃO AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154) 61 + return_move_code - + DÉBITO MENSAL DE TARIFA – AVISO DE MOVIMENTAÇÃO DE TÍTULOS (2154) 62 + return_move_code - + TÍTULO SUSTADO JUDICIALMENTE 63 + return_move_code - + ENTRADA CONFIRMADA COM RATEIO DE CRÉDITO 64 + return_move_code - + PAGAMENTO COM CHEQUE – AGUARDANDO COMPENSAÇÃO 65 + return_move_code - + CHEQUE DEVOLVIDO (NOTA 20 – TABELA 9) 69 + return_move_code - + ENTRADA REGISTRADA, AGUARDANDO AVALIAÇÃO 71 + return_move_code - + BAIXA POR CRÉDITO EM C/C ATRAVÉS DO SISPAG SEM TÍTULO CORRESPONDENTE 72 + return_move_code - + CONFIRMAÇÃO DE ENTRADA NA COBRANÇA SIMPLES – ENTRADA NÃO ACEITA NA COBRANÇA CONTRATUAL 73 + return_move_code - + INSTRUÇÃO DE NEGATIVAÇÃO EXPRESSA REJEITADA (NOTA 20 – TABELA 11) 74 + return_move_code - + CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA 75 + return_move_code - + CHEQUE COMPENSADO 76 + return_move_code - + CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA 77 + return_move_code - + CONFIRMAÇÃO DE RECEBIMENTO DE INSTRUÇÃO DE CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA 78 + return_move_code - + NEGATIVAÇÃO EXPRESSA INFORMACIONAL (NOTA 20 – TABELA 12) 79 + return_move_code - + CONFIRMAÇÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA – TARIFA 80 + return_move_code - + CONFIRMAÇÃO DO CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA – TARIFA 82 + return_move_code - + CONFIRMAÇÃO DE EXCLUSÃO DE ENTRADA EM NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO – TARIFA 83 + return_move_code - + TARIFA POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA 85 + return_move_code - + TARIFA EMAIL COBRANÇA ATIVA ELETRÔNICA 86 + return_move_code - + TARIFA SMS COBRANÇA ATIVA ELETRÔNICA 87 + return_move_code - + TARIFA MENSAL POR BOLETO (ATÉ 03 ENVIOS) COBRANÇA ATIVA ELETRÔNICA 88 + return_move_code - + TARIFA MENSAL EMAIL COBRANÇA ATIVA ELETRÔNICA 89 + return_move_code - + TARIFA MENSAL SMS COBRANÇA ATIVA ELETRÔNICA 90 + return_move_code - + TARIFA MENSAL DE EXCLUSÃO DE ENTRADA DE NEGATIVAÇÃO EXPRESSA 91 + return_move_code - + TARIFA MENSAL DE CANCELAMENTO DE NEGATIVAÇÃO EXPRESSA 92 + return_move_code - + TARIFA MENSAL DE EXCLUSÃO DE NEGATIVAÇÃO EXPRESSA POR LIQUIDAÇÃO 93 + return_move_code - + Cobrança Simples (Eletrônica com Registro) 1 + wallet_code - + Cobrança Caucionada (Eletrônica com Registro) 3 + wallet_code - + Cobrança Simples (Rápida com Registro) 5 + wallet_code - + Cobrança Caucionada (Rápida com Registro) 6 + wallet_code - + Cobrança Descontada (Eletrônica com Registro) 7 + wallet_code - + Cobrança Cessão (Eletrônica com Registro)* 8 + wallet_code - + Cobrança Simples (Sem Registro e Eletrônica com Registro) 1 + wallet_code - + Cobrança Caucionada (Eletrônica com Registro e Convencional com Registro) 3 + wallet_code - + Cobrança Descontada (Eletrônica com Registro) 4 + wallet_code - + Cobrança Simples (Rápida com Registro)* 5 + wallet_code *Carteira específica para registro do Boleto com QR CODE. - + Cobrança Caucionada (Rápida com Registro) 6 + wallet_code - + Transferência de Titularidade - Sem Devolução (Cobrança Simples - Eletrônica com Registro e Rápida com Registro)** 7 + wallet_code **Carteira específica para FIDC (Fundo de Direitos Creditórios) - + Cobrança Cessão (Eletrônica com Registro)**** 8 + wallet_code - + Transferência de Titularidade - Com Devolução (Cobrança Simples - Eletrônica com Registro e Rápida com Registro) 9 + wallet_code - + Cobrança Simples (Sem Registro sem pré-impresso e com pré-impresso)*** B + wallet_code - + Entrada de boleto 01 + instruction_move_code - + Pedido de baixa 02 + instruction_move_code - + Concessão de abatimento 04 + instruction_move_code - + Cancelamento do abatimento 05 + instruction_move_code - + Alteração do vencimento 06 + instruction_move_code - + Alteração da identificação do boleto na empresa (Controle Participante) 07 + instruction_move_code - + Alteração seu Número 08 + instruction_move_code - + Pedido de Protesto 09 + instruction_move_code - + Concessão de Desconto 10 + instruction_move_code - + Cancelamento de Desconto 11 + instruction_move_code - + Transferência de Titularidade automática 12 + instruction_move_code - + Transferência da carteira Simples para a carteira Cessão** 15 + instruction_move_code - + Baixa de Cessão por Descaracterização*** 16 + instruction_move_code - + Baixa de Cessão por Pagamento*** 17 + instruction_move_code - + Pedido de Sustação de Protesto 18 + instruction_move_code - + Alteração de outros dados* 31 + instruction_move_code - + Alteração do valor nominal do boleto 47 + instruction_move_code - + Alteração do valor mínimo/percentual 48 + instruction_move_code - + Alteração do valor máximo/percentual 49 + instruction_move_code - + Não Protestar (Antes de iniciar o ciclo de protesto) 98 + instruction_move_code - + Entrada confirmada 02 + return_move_code - + Entrada rejeitada 03 + return_move_code - + Transferência para carteira Simples 04 + return_move_code - + Transferência para Carteira Desconto/Penhor/Vendor/FIDC/Cessão 05 + return_move_code - + Liquidação 06 + return_move_code - + Confirmação do Recebimento do Cancelamento do Desconto 08 + return_move_code - + Baixa 09 + return_move_code - + Boletos em carteira (em ser) 11 + return_move_code - + Confirmação recebimento instrução de abatimento 12 + return_move_code - + Confirmação recebimento instrução de cancelamento abatimento 13 + return_move_code - + Confirmação recebimento instrução alteração de vencimento 14 + return_move_code - + Liquidado após baixa ou liquidação boleto não registrado 17 + return_move_code - + Confirmação recebimento instrução de protesto 19 + return_move_code - + Confirmação recebimento instrução de sustação/Não Protestar 20 + return_move_code - + Remessa a cartório (aponte em cartório) 23 + return_move_code - + Retirada de cartório e manutenção em carteira 24 + return_move_code - + Protestado e baixado (baixa por ter sido protestado) 25 + return_move_code - + Instrução rejeitada 26 + return_move_code - + Confirmação do pedido de alteração de outros dados 27 + return_move_code - + Debito de tarifas/custas 28 + return_move_code - + Ocorrências do Pagador 29 + return_move_code - + Alteração de dados rejeitada 30 + return_move_code - + Código de IOF inválido 32 + return_move_code - + Boleto DDA reconhecido pelo Pagador 51 + return_move_code - + Boleto DDA nâo reconhecido pelo Pagador 52 + return_move_code - + Boleto DDA recusado pela CIP 53 + return_move_code - + Confirmação de Alteração do Valor Nominal do Boleto 61 + return_move_code - + Confirmação de Alteração do Valor ou Percentual Mínimo 91 + return_move_code - + Confirmação de Alteração do Valor ou Percentual Máximo 92 + return_move_code - + Baixa Operacional 93 + return_move_code - + Cancelamento da Baixa Operacional 94 + return_move_code - + Pagador DDA A4 + return_move_code - + Entrada de boleto 01 + instruction_move_code - + Baixa de boleto 02 + instruction_move_code - + Concessão de abatimento 04 + instruction_move_code - + Cancelamento do abatimento 05 + instruction_move_code - + Alteração do vencimento 06 + instruction_move_code - + Alteração do número controle beneficiário 07 + instruction_move_code - + Alteração do Seu Número 08 + instruction_move_code - + Protestar 09 + instruction_move_code - + Transferência da carteira Simples para Cessão* 15 + instruction_move_code - + Baixa de Cessão por Descaracterização** 16 + instruction_move_code - + Baixa de Cessão por Pagamento** 17 + instruction_move_code - + Sustar o protesto (Após início do ciclo de protesto) 18 + instruction_move_code - + Alteração do valor nominal do boleto 47 + instruction_move_code - + Alteração do valor mínimo/percentual 48 + instruction_move_code - + Alteração do valor máximo/percentual 49 + instruction_move_code - + Boleto não existe 01 + return_move_code - + Entrada boleto confirmada 02 + return_move_code - + Entrada boleto rejeitada 03 + return_move_code - + Transferência para carteira Simples 04 + return_move_code - + Transferência para Carteira Penhor/Desconto/Cessão 05 + return_move_code - + Liquidação 06 + return_move_code - + Liquidação por Conta 07 + return_move_code - + Liquidação por Saldo 08 + return_move_code - + Baixa Automática 09 + return_move_code - + Boleto Baixado Conforme Instrução 10 + return_move_code - + Boletos em carteira (em ser) 11 + return_move_code - + Abatimento Concedido 12 + return_move_code - + Abatimento Cancelado 13 + return_move_code - + Alteração de Vencimento 14 + return_move_code - + Confirmação de Protesto* 15 + return_move_code - + Boleto Baixado/Liquidado 16 + return_move_code - + Liquidado em Cartório 17 + return_move_code - + Boleto Enviado a Cartório 21 + return_move_code - + Boleto Retirado do Cartório 22 + return_move_code - + Custas de Cartório 24 + return_move_code - + Boleto Protestado 25 + return_move_code - + Sustar Protesto* 26 + return_move_code - + Cancelar Boleto Protestado 27 + return_move_code - + Boleto DDA Reconhecido pelo Pagador 35 + return_move_code - + Boleto DDA Não Reconhecido pelo Pagador 36 + return_move_code - + Boleto DDA Recusado pela CIP 37 + return_move_code - + Não Protestar (antes de iniciar o ciclo de protesto) 38 + return_move_code - + Espécie de Boleto não permite a instrução 39 + return_move_code - + Confirmação de Alteração do Valor Nominal do Boleto 61 + return_move_code - + Confirmação de Alteração do Valor ou Percentual mínimo 62 + return_move_code - + Confirmação de Alteração do Valor ou Percentual máximo 63 + return_move_code - + Baixa Operacional Enviado pela CIP 93 + return_move_code - + Cancelamento da Baixa Operacional Enviado pela Cip 94 + return_move_code - + Entrada de títulos 01 + instruction_move_code - + Pedido de baixa 02 + instruction_move_code - + Concessão de abatimento 04 + instruction_move_code - + Cancelamento de abatimento 05 + instruction_move_code - + Alteração de vencimento 06 + instruction_move_code - + Concessão de desconto 07 + instruction_move_code - + Cancelamento de desconto 08 + instruction_move_code - + Protestar 09 + instruction_move_code - + Sustar protesto e baixar título 10 + instruction_move_code - + Sustar protesto e manter em carteira 11 + instruction_move_code - + Alteração de juros de mora 12 + instruction_move_code - + Dispensar cobrança de juros de mora 13 + instruction_move_code - + Alteração do valor de desconto 16 + instruction_move_code - + Não conceder desconto 17 + instruction_move_code - + Alteração de outros dados 31 + instruction_move_code - + Negativação sem protesto 45 + instruction_move_code - + Excluir negativação e manter em carteira 75 + instruction_move_code - + Excluir negativação e baixar 76 + instruction_move_code - + Entrada confirmada 02 + return_move_code - + Entrada rejeitada 03 + return_move_code - + Liquidação 06 + return_move_code - + Confirmação do recebimento da instrução de desconto 07 + return_move_code - + Confirmação do recebimento do cancelamento do desconto 08 + return_move_code - + Baixa 09 + return_move_code - + Confirmação do recebimento instrução de abatimento 12 + return_move_code - + Confirmação do recebimento instrução de cancelamento abatimento 13 + return_move_code - + Confirmação do recebimento instrução alteração de vencimento 14 + return_move_code - + Liquidação após baixa ou liquidação título não registrado 17 + return_move_code - + Confirmação do recebimento instrução de protesto 19 + return_move_code - + Confirmação do recebimento instrução de sustação/cancelamento de protesto 20 + return_move_code - + Remessa a cartório (aponte em cartório) 23 + return_move_code - + Retirada de cartório e manutenção em carteira 24 + return_move_code - + Protestado e baixado (baixa por ter sido protestado) 25 + return_move_code - + Instrução rejeitada 26 + return_move_code - + Confirmação do pedido de alteração de outros dados 27 + return_move_code - + Débito de tarifas custas 28 + return_move_code - + Alteração de dados rejeitada 30 + return_move_code - + Baixa rejeitada 36 + return_move_code - + Título DDA reconhecido pelo pagador 51 + return_move_code - + Título DDA não reconhecido pelo pagador 52 + return_move_code - + Confirmação de recebimento de pedido de negativação 78 + return_move_code - + Confirmação de recebimento de pedido de exclusão de negativação 79 + return_move_code - + Confirmação de entrada de negativação 80 + return_move_code - + Entrada de negativação rejeitada 81 + return_move_code - + Confirmação de exclusão de negativação 82 + return_move_code - + Exclusão de Negativação rejeitada 83 + return_move_code - + Exclusão de negativação por outros motivos 84 + return_move_code - + Ocorrência informacional por outros motivos 85 + return_move_code - + Intenção de pagamentos 91 + return_move_code - + Remessa* 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Concessão de Abatimento* 04 + instruction_move_code Necessário ao enviar esta instrução 4 e também inserir 206 a 218 Valor do Abatimento. - + Cancelamento de Abatimento 05 + instruction_move_code - + Alteração de vencimento 06 + instruction_move_code - + Alteração de Seu Número 08 + instruction_move_code - + Protestar* 09 + instruction_move_code - + Sustar Protesto e Manter em Carteira 11 + instruction_move_code - + Sustar Protesto e Baixar Título 25 + instruction_move_code - + Protesto automático 26 + instruction_move_code - + Alteração de outros dados (Alteração de dados do pagador) 31 + instruction_move_code - + Alteração de Carteira 40 + instruction_move_code - + Pago (Título protestado pago em cartório) 01 + return_move_code - + Instrução Confirmada* 02 + return_move_code - + Instrução Rejeitada* 03 + return_move_code - + Sustado Judicial (Título protestado sustado judicialmente) 04 + return_move_code - + Liquidação Normal * 06 + return_move_code - + Liquidação em Condicional (Título liquidado em cartório com cheque do próprio devedor) 07 + return_move_code - + Sustado Definitivo (Título protestado sustado judicialmente) 08 + return_move_code - + Liquidação de Título Descontado 09 + return_move_code - + Protesto solicitado 10 + return_move_code - + Protesto Em cartório 11 + return_move_code - + Sustação solicitada 12 + return_move_code - + + - + - + + - - @@ -110,45 +98,33 @@ name="not_payment_account_id" ref="1_account_template_32333_avoid_travis_error" /> - - + + + - + + - - @@ -233,32 +209,26 @@ 0001222130126 1 - - - - - + + + + + - - + + @@ -272,7 +242,7 @@ True 3 - + DM 19 S @@ -302,34 +272,31 @@ /> 0001222130126 - - + + + + - - - - - - + + + + @@ -379,27 +346,27 @@ 92035760 - - + + - + - - + + @@ -444,27 +411,27 @@ ref="1_account_template_32333_avoid_travis_error" /> - - + + - + - - + + @@ -506,23 +473,17 @@ ref="1_account_template_32333_avoid_travis_error" /> - - - - - - - - + + + + + + + + @@ -566,15 +527,15 @@ 12345 - - - - - + + + + + @@ -618,14 +579,14 @@ 12345 - - - - + + + + @@ -669,26 +630,23 @@ 000122 - - - - - + + + + + - - - - - + + + + + @@ -777,29 +735,26 @@ ref="1_account_template_32333_avoid_travis_error" /> - - - - - + + + + + - - - - + + + + @@ -844,27 +799,24 @@ 1234 7654321 - - - + + + + + - - - - - - + + + + @@ -921,7 +873,7 @@ True 101 - + DM 35 S @@ -954,36 +906,30 @@ 1234567 - - - - - + + + + + - - + + @@ -998,7 +944,7 @@ True 101 - + DM 35 S @@ -1030,28 +976,22 @@ 123456789012345 1234567 - - - - - + + + + + - - - - + + + + diff --git a/l10n_br_account_payment_order/demo/mov_instruction_code.xml b/l10n_br_account_payment_order/demo/mov_instruction_code.xml index 9472cabad346..c1554eb85c86 100644 --- a/l10n_br_account_payment_order/demo/mov_instruction_code.xml +++ b/l10n_br_account_payment_order/demo/mov_instruction_code.xml @@ -1,216 +1,180 @@ - + Entrada de Título 01 + instruction_move_code - + Pedido de Baixa 02 + instruction_move_code - + Concessão de Abatimento 04 + instruction_move_code - + Cancelamento de Abatimento 05 + instruction_move_code - + Alteração de Vencimento 06 + instruction_move_code - + Concessão de Desconto 07 + instruction_move_code - + Cancelamento de Desconto 08 + instruction_move_code - + Protestar (transferir de Devolução para Protesto) 09 + instruction_move_code - + Sustar Protesto e Baixar Título 10 + instruction_move_code - + Sustar Protesto e Manter em Carteira 11 + instruction_move_code - + Alteração de Outros Dados 31 + instruction_move_code - + Alteração dos Dados do Rateio de Crédito 33 + instruction_move_code - + Inclusão no Banco de Pagadores 36 + instruction_move_code - + Alteração no Banco de Pagadores 37 + instruction_move_code - + Exclusão no Banco de Pagadores 38 + instruction_move_code - + Serviços 40 + instruction_move_code - + Alteração do Valor Nominal do Título 47 + instruction_move_code - + Alteração valor/percentual mínimo/máximo 48 + instruction_move_code ). +# @author Magno Costa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +def unifying_cnab_codes(env): + "Unifica os Codigos CNAB" + + # Codigo de Instrução do Movimento + env.cr.execute( + """ + SELECT id FROM l10n_br_cnab_mov_instruction_code + """ + ) + for row in env.cr.fetchall(): + mov_instruction = env["l10n_br_cnab.mov.instruction.code"].browse(row[0]) + existing_code = env["l10n_br_cnab.code"].search( + [("code", "=", mov_instruction.code)], limit=1 + ) + if existing_code: + continue # Skip + env["l10n_br_cnab.code"].create( + { + "name": mov_instruction.name, + "code": mov_instruction.code, + "code_type": "instruction_move_code", + "bank_ids": mov_instruction.bank_ids, + "payment_method_ids": mov_instruction.payment_method_ids, + } + ) + + # Codigo de Retorno do Movimento + env.cr.execute( + """ + SELECT id FROM l10n_br_cnab_return_move_code + """ + ) + for row in env.cr.fetchall(): + return_code = env["l10n_br_cnab.return.move.code"].browse(row[0]) + existing_code = env["l10n_br_cnab.code"].search( + [("code", "=", return_code.code)], limit=1 + ) + if existing_code: + continue # Skip + env["l10n_br_cnab.code"].create( + { + "name": return_code.name, + "code": return_code.code, + "code_type": "return_move_code", + "bank_ids": return_code.bank_ids, + "payment_method_ids": return_code.payment_method_ids, + } + ) + + # Codigo da Carteira + env.cr.execute( + """ + SELECT id FROM l10n_br_cnab_boleto_wallet_code + """ + ) + for row in env.cr.fetchall(): + wallet_code = env["l10n_br_cnab.boleto.wallet.code"].browse(row[0]) + existing_code = env["l10n_br_cnab.code"].search( + [("code", "=", wallet_code.code)], limit=1 + ) + if existing_code: + continue # Skip + env["l10n_br_cnab.code"].create( + { + "name": wallet_code.name, + "code": wallet_code.code, + "code_type": "wallet_code", + "bank_ids": wallet_code.bank_ids, + "payment_method_ids": wallet_code.payment_method_ids, + } + ) + + +def get_new_code(env, payment_mode, payment_mode_code, code_type): + """Retorna o Codigo no novo objeto""" + new_code = env["l10n_br_cnab.code"].search( + [ + ("bank_ids", "in", payment_mode.bank_id.ids), + ("payment_method_ids", "in", payment_mode.payment_method_id.ids), + ("code", "=", payment_mode_code.code), + ("code_type", "=", code_type), + ] + ) + return new_code + + +def update_payment_mode_inbound(env): + """Atualiza o Modo de Pagamento""" + env.cr.execute( + """ + SELECT id FROM account_payment_mode WHERE payment_method_id IN + (SELECT id FROM account_payment_method WHERE code IN ('240', '400', '500') + AND payment_type = 'inbound'); + """ + ) + for row in env.cr.fetchall(): + payment_mode = env["account.payment.mode"].browse(row[0]) + + # Atualizando os Codigos CNAB + + # Instrução de Envio + sending_code = get_new_code( + env, + payment_mode, + payment_mode.cnab_sending_code_id, + "instruction_move_code", + ) + payment_mode.sending_code_id = sending_code + + # Solicitação de Baixa + write_off = get_new_code( + env, + payment_mode, + payment_mode.cnab_write_off_code_id, + "instruction_move_code", + ) + payment_mode.write_off_code_id = write_off + + # Alteração do Valor do título + change_title = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_change_title_value_id, + "instruction_move_code", + ) + payment_mode.change_title_value_code_id = change_title + + # Alteração da Data de Vencimento + change_maturity = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_change_maturity_date_id, + "instruction_move_code", + ) + payment_mode.change_maturity_date_code_id = change_maturity + + # Protesta o Título + protest_title = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_protest_title_id, + "instruction_move_code", + ) + payment_mode.protest_title_code_id = protest_title + + # Suspende o Protesto e mantem a Carteira + suspend_protest_keep_wallet = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_suspend_protest_keep_wallet_id, + "instruction_move_code", + ) + payment_mode.suspend_protest_keep_wallet_code_id = suspend_protest_keep_wallet + + # Suspende o Protesto e Baixa + suspend_protest_write_off = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_suspend_protest_write_off_id, + "instruction_move_code", + ) + payment_mode.suspend_protest_write_off_code_id = suspend_protest_write_off + + # Concede Abatimento + grant_rebate = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_grant_rebate_id, + "instruction_move_code", + ) + payment_mode.grant_rebate_code_id = grant_rebate + + # Cancela Abatimento + cancel_rebate = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_cancel_rebate_id, + "instruction_move_code", + ) + payment_mode.cancel_rebate_code_id = cancel_rebate + + # Concede Desconto + grant_discount = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_grant_discount_id, + "instruction_move_code", + ) + payment_mode.grant_discount_code_id = grant_discount + + # Cancela Desconto + cancel_discount = get_new_code( + env, + payment_mode, + payment_mode.cnab_code_cancel_discount_id, + "instruction_move_code", + ) + payment_mode.cancel_discount_code_id = cancel_discount + + # Codigo da Carteira + wallet_code = get_new_code( + env, + payment_mode, + payment_mode.boleto_wallet_code_id, + "wallet_code", + ) + payment_mode.wallet_code_id = wallet_code + + # Codigos de Return + if payment_mode.cnab_liq_return_move_code_ids: + liq_codes = env["l10n_br_cnab.code"] + for code in payment_mode.cnab_liq_return_move_code_ids: + + liq_code = get_new_code(env, payment_mode, code, "return_move_code") + liq_codes |= liq_code + + payment_mode.liq_return_move_code_ids = liq_codes + + +def update_move_lines(env): + """ + Atualiza as account move lines + """ + env.cr.execute( + """ + SELECT id FROM account_move_line WHERE payment_mode_id IN ( + SELECT id FROM account_payment_mode WHERE payment_method_id IN + (SELECT id FROM account_payment_method WHERE code IN ('240', '400', '500') + AND payment_type = 'inbound')); + """ + ) + for row in env.cr.fetchall(): + line = env["account.move.line"].browse(row[0]) + new_code = get_new_code( + env, + line.payment_mode_id, + line.mov_instruction_code_id, + "instruction_move_code", + ) + line.instruction_move_code_id = new_code + + +def update_payment_lines(env): + """ + Atualiza as account payment lines + """ + env.cr.execute( + """ + SELECT id FROM account_payment_line WHERE mov_instruction_code_id IS NOT NULL; + """ + ) + for row in env.cr.fetchall(): + line = env["account.payment.line"].browse(row[0]) + new_code = get_new_code( + env, + line.payment_mode_id, + line.mov_instruction_code_id, + "instruction_move_code", + ) + line.instruction_move_code_id = new_code + + +@openupgrade.migrate() +def migrate(env, version): + if not version: + return + unifying_cnab_codes(env) + update_payment_mode_inbound(env) + update_move_lines(env) + update_payment_lines(env) diff --git a/l10n_br_account_payment_order/models/__init__.py b/l10n_br_account_payment_order/models/__init__.py index 618d71ee4c61..cad515931773 100644 --- a/l10n_br_account_payment_order/models/__init__.py +++ b/l10n_br_account_payment_order/models/__init__.py @@ -16,3 +16,4 @@ from . import l10n_br_cnab_return_move_code from . import l10n_br_cnab_mov_intruction_code from . import l10n_br_cnab_boleto_wallet_code +from . import l10n_br_cnab_code diff --git a/l10n_br_account_payment_order/models/account_move.py b/l10n_br_account_payment_order/models/account_move.py index ba533e65dbc7..c195c2588c74 100644 --- a/l10n_br_account_payment_order/models/account_move.py +++ b/l10n_br_account_payment_order/models/account_move.py @@ -132,9 +132,7 @@ def load_cnab_info(self): interval.instructions = instructions # Codigo de Instrução do Movimento pode variar, # mesmo no CNAB 240 - interval.mov_instruction_code_id = ( - self.payment_mode_id.cnab_sending_code_id.id - ) + interval.instruction_move_code_id = self.payment_mode_id.sending_code_id filtered_invoice_ids = self.filtered( lambda s: ( s.payment_mode_id and s.payment_mode_id.auto_create_payment_order diff --git a/l10n_br_account_payment_order/models/account_move_line.py b/l10n_br_account_payment_order/models/account_move_line.py index fee84425f565..df442be835d7 100644 --- a/l10n_br_account_payment_order/models/account_move_line.py +++ b/l10n_br_account_payment_order/models/account_move_line.py @@ -98,12 +98,20 @@ class AccountMoveLine(models.Model): copy=False, ) + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code mov_instruction_code_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Código da Instrução para Movimento", help="Campo G061 do CNAB", copy=False, ) + instruction_move_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Código da Instrução para Movimento", + help="Campo G061 do CNAB", + copy=False, + ) # Usados para deixar invisiveis/somente leitura # os campos relacionados ao CNAB @@ -144,7 +152,7 @@ def _prepare_payment_line_vals(self, payment_order): "document_number": self.document_number, "company_title_identification": self.company_title_identification, # Codigo de Instrução do Movimento - "mov_instruction_code_id": self.mov_instruction_code_id.id, + "instruction_move_code_id": self.instruction_move_code_id.id, "communication_type": "cnab", # Campos abaixo estão sendo adicionados devido ao problema de # Ordens de Pagto vinculadas devido o ondelete=restrict no @@ -163,9 +171,9 @@ def _prepare_payment_line_vals(self, payment_order): # Se for uma solicitação de baixa do título é preciso informar o # campo debit o codigo original coloca o amount_residual if ( - self.payment_mode_id.cnab_write_off_code_id - and self.mov_instruction_code_id.id - == self.payment_mode_id.cnab_write_off_code_id.id + self.payment_mode_id.write_off_code_id + and self.instruction_move_code_id + == self.payment_mode_id.write_off_code_id ): vals["amount_currency"] = self.credit or self.debit diff --git a/l10n_br_account_payment_order/models/account_payment_line.py b/l10n_br_account_payment_order/models/account_payment_line.py index 89b40423695a..9b3517e546a1 100644 --- a/l10n_br_account_payment_order/models/account_payment_line.py +++ b/l10n_br_account_payment_order/models/account_payment_line.py @@ -136,11 +136,18 @@ class AccountPaymentLine(models.Model): default="0", ) + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code mov_instruction_code_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Código da Instrução para Movimento", help="Campo G061 do CNAB", ) + instruction_move_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Código da Instrução para Movimento", + help="Campo G061 do CNAB", + ) # Usados para deixar invisiveis/somente leitura # os campos relacionados ao CNAB @@ -276,5 +283,5 @@ def _prepare_boleto_line_vals(self): # ex.: UNICRED 240/400 é 01 - Remessa*, 02 - Pedido de Baixa e # 06 - Alteração de vencimento . Veja que está sendo informado # o campo Code do objeto. - "identificacao_ocorrencia": self.mov_instruction_code_id.code, + "identificacao_ocorrencia": self.instruction_move_code_id.code, } diff --git a/l10n_br_account_payment_order/models/account_payment_mode.py b/l10n_br_account_payment_order/models/account_payment_mode.py index 7d31190133e4..0edf0cb4652e 100644 --- a/l10n_br_account_payment_order/models/account_payment_mode.py +++ b/l10n_br_account_payment_order/models/account_payment_mode.py @@ -89,6 +89,9 @@ def _selection_cnab_processor(self): # TODO: Ligação com o payment_mode_id não permite extrair para o objeto # l10n_br_cnab.boleto.fields, teria alguma forma de fazer ? # Podem existir diferentes codigos, mesmo no 240 + + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_liq_return_move_code_ids = fields.Many2many( comodel_name="l10n_br_cnab.return.move.code", relation="l10n_br_cnab_return_liquidity_move_code_rel", @@ -97,6 +100,14 @@ def _selection_cnab_processor(self): string="CNAB Liquidity Return Move Code", tracking=True, ) + liq_return_move_code_ids = fields.Many2many( + comodel_name="l10n_br_cnab.code", + relation="l10n_br_cnab_liq_return_move_code_rel", + column1="liq_return_move_code_id", + column2="payment_mode_id", + string="CNAB Liquidity Return Move Code", + tracking=True, + ) @api.constrains( "cnab_company_bank_code", diff --git a/l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py b/l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py index a7534ef6d037..0df4d7f001ec 100644 --- a/l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py +++ b/l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py @@ -228,46 +228,88 @@ class L10nBrCNABBoletoFields(models.AbstractModel): # Codigos de Instrução do Movimento # Codigo de Remessa/Inclusão de Registro Detalhe Liberado + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_sending_code_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Sending Movement Instruction Code", help="Sending Movement Instruction Code", tracking=True, ) + sending_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Sending Movement Instruction Code", + help="Sending Movement Instruction Code", + tracking=True, + ) # Codigo para Título/Pagamento Direto ao Fornecedor -Baixar + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_write_off_code_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Write Off Movement Instruction Code", help="Write Off Movement Instruction Code", tracking=True, ) + write_off_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Write Off Movement Instruction Code", + help="Write Off Movement Instruction Code", + tracking=True, + ) # Codigo para Alteração do Valor do Titulo + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_change_title_value_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Change Title Value Movement Instruction Code", help="CNAB Movement Instruction Code for Change Title Value.", tracking=True, ) + change_title_value_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Change Title Value Movement Instruction Code", + help="CNAB Movement Instruction Code for Change Title Value.", + tracking=True, + ) # Codigo para Alteração da Data de Vencimento + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_change_maturity_date_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Change Maturity Date Movement Instruction Code", help="CNAB Movement Instruction Code for Change Maturity Date.", tracking=True, ) + change_maturity_date_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Change Maturity Date Movement Instruction Code", + help="CNAB Movement Instruction Code for Change Maturity Date.", + tracking=True, + ) # Codigo para Protestar Título + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_protest_title_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Protest Tittle Instruction Code", help="CNAB Movement Instruction Code for Protest Tittle.", tracking=True, ) + protest_title_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Protest Tittle Instruction Code", + help="CNAB Movement Instruction Code for Protest Tittle.", + tracking=True, + ) # Codigo para Suspender Protesto e Manter em Carteira + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_suspend_protest_keep_wallet_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Suspend Protest an Keep in Wallet Instruction Code", @@ -275,44 +317,91 @@ class L10nBrCNABBoletoFields(models.AbstractModel): " Suspend Protest and Keep in Wallet.", tracking=True, ) + suspend_protest_keep_wallet_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Suspend Protest an Keep in Wallet Instruction Code", + help="CNAB Movement Instruction Code for" + " Suspend Protest and Keep in Wallet.", + tracking=True, + ) # Codigo para Suspender Protesto e Baixar Título + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_suspend_protest_write_off_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Suspend Protest an Writte Off Instruction Code", help="CNAB Movement Instruction Code for" " Suspend Protest and Writte Off.", tracking=True, ) + suspend_protest_write_off_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Suspend Protest an Writte Off Instruction Code", + help="CNAB Movement Instruction Code for Suspend Protest and Writte Off.", + tracking=True, + ) # Codigo para Conceder Abatimento + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_grant_rebate_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Grant Rebate Instruction Code", help="CNAB Movement Instruction Code for" " Grant Rebate.", tracking=True, ) + grant_rebate_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Grant Rebate Instruction Code", + help="CNAB Movement Instruction Code for Grant Rebate.", + tracking=True, + ) # Codigo para Cancelar Abatimento + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_cancel_rebate_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Cancel Rebate Instruction Code", help="CNAB Movement Instruction Code for" " Cancel Rebate.", tracking=True, ) + cancel_rebate_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Cancel Rebate Instruction Code", + help="CNAB Movement Instruction Code for Cancel Rebate.", + tracking=True, + ) # Codigo para Conceder Desconto + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_grant_discount_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Grant Discount Instruction Code", help="CNAB Movement Instruction Code for" " Grant Discount.", tracking=True, ) + grant_discount_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Grant Discount Instruction Code", + help="CNAB Movement Instruction Code for Grant Discount.", + tracking=True, + ) - # Codigo para Cancelar Abatimento + # Codigo para Cancelar Desconto + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code cnab_code_cancel_discount_id = fields.Many2one( comodel_name="l10n_br_cnab.mov.instruction.code", string="Cancel Discount Instruction Code", - help="CNAB Movement Instruction Code for" " Cancel Discount.", + help="CNAB Movement Instruction Code for Cancel Discount.", + tracking=True, + ) + cancel_discount_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Cancel Discount Instruction Code", + help="CNAB Movement Instruction Code for Cancel Discount.", tracking=True, ) @@ -339,8 +428,15 @@ class L10nBrCNABBoletoFields(models.AbstractModel): # Código da Carteira ou Tipo de Cobrança usado por # Santanter 400 e 240 # Bradesco 240 + # TODO: Remover o campo na próxima versão, + # usando apenas para migração para o l10n_br_cnab.code boleto_wallet_code_id = fields.Many2one( comodel_name="l10n_br_cnab.boleto.wallet.code", string="Boleto Wallet Code", tracking=True, ) + wallet_code_id = fields.Many2one( + comodel_name="l10n_br_cnab.code", + string="Boleto Wallet Code", + tracking=True, + ) diff --git a/l10n_br_account_payment_order/models/l10n_br_cnab_change_methods.py b/l10n_br_account_payment_order/models/l10n_br_cnab_change_methods.py index bceab4ee01dd..a34063f51b6a 100644 --- a/l10n_br_account_payment_order/models/l10n_br_cnab_change_methods.py +++ b/l10n_br_account_payment_order/models/l10n_br_cnab_change_methods.py @@ -122,9 +122,9 @@ def _msg_cnab_payment_order_at_invoice(self, new_payorder, payorder, reason): """ cnab_instruction = ( - self.mov_instruction_code_id.code + self.instruction_move_code_id.code + " - " - + self.mov_instruction_code_id.name + + self.instruction_move_code_id.name ) if new_payorder: self.move_id.message_post( @@ -211,14 +211,14 @@ def _get_cnab_date_maturity(self, new_date): ) # Modo de Pagto usado precisa ter o codigo de alteração do vencimento - if not self.move_id.payment_mode_id.cnab_code_change_maturity_date_id: + if not self.move_id.payment_mode_id.change_maturity_date_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Date Maturity Code" ) self.date_maturity = new_date - return self.payment_mode_id.cnab_code_change_maturity_date_id + return self.payment_mode_id.change_maturity_date_code_id def _create_cnab_not_payment(self, payorder, new_payorder, reason): """ @@ -233,12 +233,12 @@ def _create_cnab_not_payment(self, payorder, new_payorder, reason): self.payment_mode_id.name, "the Account to Not Payment" ) - if not self.move_id.payment_mode_id.cnab_write_off_code_id: + if not self.move_id.payment_mode_id.write_off_code_id: self._msg_error_cnab_missing(self.payment_mode_id.name, "Writte Off Code") # TODO: O codigo usado seria o mesmo do writte off ? # Em todos os casos? - self.mov_instruction_code_id = self.payment_mode_id.cnab_write_off_code_id + self.instruction_move_code_id = self.payment_mode_id.write_off_code_id # Reconciliação e Baixa do Título move_obj = self.env["account.move"] @@ -339,7 +339,7 @@ def create_cnab_write_off(self, reason, payment_situation): self.remove_payment_line(reason, payment_situation) payment_lines_removed = True - if not self.move_id.payment_mode_id.cnab_write_off_code_id: + if not self.move_id.payment_mode_id.write_off_code_id: self._msg_error_cnab_missing(self.payment_mode_id.name, "Write Off Code") if not payment_lines_removed: @@ -348,7 +348,7 @@ def create_cnab_write_off(self, reason, payment_situation): payorder, new_payorder = self._get_payment_order(self.move_id) - self.mov_instruction_code_id = self.payment_mode_id.cnab_write_off_code_id + self.instruction_move_code_id = self.payment_mode_id.write_off_code_id self.payment_situation = payment_situation self.create_payment_line_from_move_line(payorder) @@ -361,7 +361,7 @@ def create_cnab_change_tittle_value(self): """ CNAB - Alteração do Valor do Título. """ - if not self.payment_mode_id.cnab_code_change_title_value_id: + if not self.payment_mode_id.change_title_value_code_id: self._msg_error_cnab_missing(self.payment_mode_id.name, "Tittle Value Code") # Checar se existe uma Instrução de CNAB ainda a ser enviada @@ -369,9 +369,7 @@ def create_cnab_change_tittle_value(self): payorder, new_payorder = self._get_payment_order(self.move_id) - self.mov_instruction_code_id = ( - self.payment_mode_id.cnab_code_change_title_value_id - ) + self.instruction_move_code_id = self.payment_mode_id.change_title_value_code_id reason = ( "Movement Instruction Code Updated for Request to " "Change Title Value, because partial payment " @@ -389,23 +387,23 @@ def _get_cnab_protest_tittle(self): """ CNAB - Protestar Título. """ - if not self.payment_mode_id.cnab_code_protest_title_id: + if not self.payment_mode_id.protest_title_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Protest Tittle Code" ) - return self.payment_mode_id.cnab_code_protest_title_id + return self.payment_mode_id.protest_title_code_id def _get_cnab_suspend_protest_keep_wallet(self): """ CNAB - Sustar Protesto e Manter em Carteira. """ - if not self.payment_mode_id.cnab_code_suspend_protest_keep_wallet_id: + if not self.payment_mode_id.suspend_protest_keep_wallet_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Suspend Protest and Keep in Wallet Code" ) - return self.payment_mode_id.cnab_code_suspend_protest_keep_wallet_id + return self.payment_mode_id.suspend_protest_keep_wallet_code_id def _get_cnab_suspend_protest_writte_off(self): """ @@ -414,12 +412,12 @@ def _get_cnab_suspend_protest_writte_off(self): # TODO: Deveria chamar a função de Não # Pagamento( _create_cnab_not_payment ) ? - if not self.payment_mode_id.cnab_code_suspend_protest_write_off_id: + if not self.payment_mode_id.suspend_protest_write_off_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Suspend Protest and Writte Off Code" ) - return self.payment_mode_id.cnab_code_suspend_protest_write_off_id + return self.payment_mode_id.suspend_protest_write_off_code_id def _get_cnab_grant_rebate(self): """ @@ -427,22 +425,22 @@ def _get_cnab_grant_rebate(self): :param rebate_value: Valor do Abatimento :param reason: Descrição sobre alteração """ - if not self.payment_mode_id.cnab_code_grant_rebate_id: + if not self.payment_mode_id.grant_rebate_code_id: self._msg_error_cnab_missing(self.payment_mode_id.name, "Grant Rebate Code") - return self.payment_mode_id.cnab_code_grant_rebate_id + return self.payment_mode_id.grant_rebate_code_id def _get_cnab_cancel_rebate(self): """ CNAB - Cancelar Abatimento. :param reason: Descrição sobre alteração """ - if not self.payment_mode_id.cnab_code_cancel_rebate_id: + if not self.payment_mode_id.cancel_rebate_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Cancel Rebate Code" ) - return self.payment_mode_id.cnab_code_cancel_rebate_id + return self.payment_mode_id.cancel_rebate_code_id def _get_cnab_grant_discount(self): """ @@ -450,24 +448,24 @@ def _get_cnab_grant_discount(self): :param discount_value: Valor do Desconto :param reason: Descrição sobre alteração """ - if not self.payment_mode_id.cnab_code_grant_discount_id: + if not self.payment_mode_id.grant_discount_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Grant Discount Code" ) - return self.payment_mode_id.cnab_code_grant_discount_id + return self.payment_mode_id.grant_discount_code_id def _get_cnab_cancel_discount(self): """ CNAB - Cancelar Desconto. :param reason: Descrição sobre alteração """ - if not self.payment_mode_id.cnab_code_cancel_discount_id: + if not self.payment_mode_id.cancel_discount_code_id: self._msg_error_cnab_missing( self.payment_mode_id.name, "Cancel Discount Code" ) - return self.payment_mode_id.cnab_code_cancel_discount_id + return self.payment_mode_id.cancel_discount_code_id def _make_cnab_change(self, cnab_code, new_payorder, payorder, reason): """ @@ -486,7 +484,7 @@ def _make_cnab_change(self, cnab_code, new_payorder, payorder, reason): if self.env.context.get("discount_value"): discount_value = self.env.context.get("discount_value") - self.mov_instruction_code_id = cnab_code + self.instruction_move_code_id = cnab_code self.with_context( rebate_value=rebate_value, discount_value=discount_value ).create_payment_line_from_move_line(payorder) diff --git a/l10n_br_account_payment_order/models/l10n_br_cnab_code.py b/l10n_br_account_payment_order/models/l10n_br_cnab_code.py new file mode 100644 index 000000000000..8f9524c10900 --- /dev/null +++ b/l10n_br_account_payment_order/models/l10n_br_cnab_code.py @@ -0,0 +1,146 @@ +# Copyright 2024-TODAY - Akretion (). +# @author Magno Costa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class L10nBrCNABCode(models.Model): + _name = "l10n_br_cnab.code" + _inherit = "mail.thread" + _description = "CNAB Code" + + name = fields.Char( + index=True, + tracking=True, + required=True, + ) + + code = fields.Char( + index=True, + tracking=True, + required=True, + ) + + code_type = fields.Selection( + index=True, + tracking=True, + required=True, + selection=[ + ("instruction_move_code", "Instruction Move Code"), + ("return_move_code", "Return Move Code"), + ("wallet_code", "Wallet Code"), + ("discount_code", "Discount Code"), + ("protest_code", "Protest Code"), + ("fee_code", "Fee Code"), + ("interest_code", "Interest Code"), + ("boleto_species", "Boleto Species"), + ("boleto_accept", "Boleto Accept"), + ("doc_finality_code", "DOC Finality Code"), + ("ted_finality_code", "TED Finality Code"), + ("complementary_finality_code", "Complementary Finality Code"), + ("service_type", "Service Type"), + ("release_form", "Release Form"), + ("boleto_wallet", "Boleto Wallet"), + ("boleto_modality", "Boleto Modality"), + ("boleto_variation", "Boleto Variation"), + ], + ) + + bank_ids = fields.Many2many( + string="Banks", + comodel_name="res.bank", + relation="l10n_br_cnab_code_bank_rel", + column1="bank_id", + column2="l10n_br_cnab_code_id", + tracking=True, + required=True, + ) + + payment_method_ids = fields.Many2many( + comodel_name="account.payment.method", + string="Payment Methods", + relation="l10n_br_cnab_code_payment_method_rel", + column1="payment_method_id", + column2="l10n_br_cnab_code_id", + tracking=True, + required=True, + ) + + comment = fields.Text() + + # TODO: Forma encontrada para pode fazer o Group By, na v15 + # parece já ser possivel usar campos many2many. + # Também deve ser considerado em apagar o campo many2many e deixar + # apenas o many2one já que, por enquanto, não há bancos diferentes + # usando o mesmo conjunto de codigos apenas diferentes cnab( 240/400 + # são iguais no caso Unicred ) + bank_id = fields.Many2one( + comodel_name="res.bank", compute="_compute_bank_id", store=True + ) # it is possible to search only among stored fields + + payment_method_id = fields.Many2one( + comodel_name="account.payment.method", + compute="_compute_payment_method_id", + store=True, + ) # it is possible to search only among stored fields + + def name_get(self): + result = [] + for record in self: + result.append((record.id, "%s - %s" % (record.code, record.name))) + return result + + @api.depends("bank_ids") + def _compute_bank_id(self): + for record in self: + record.bank_id = record.bank_ids and record.bank_ids[0] or False + + @api.depends("payment_method_ids") + def _compute_payment_method_id(self): + for record in self: + record.payment_method_id = ( + record.payment_method_ids and record.payment_method_ids[0] or False + ) + + @api.constrains("code") + def check_code(self): + for record in self: + # Mesmo o record que está sendo alterado não ter sido ainda salvo + # a pesquisa acaba trazendo ele, por isso o filtro 'id' + code_already_exist = record.search( + [ + ("id", "!=", record.id), + ("code", "=", record.code), + ("code_type", "=", record.code_type), + ("payment_method_ids", "in", record.payment_method_ids.ids), + ("bank_ids", "in", record.bank_ids.ids), + ] + ) + if code_already_exist: + code_name_exist = ( + code_already_exist.code + " - " + code_already_exist.name + ) + raise ValidationError( + _( + "The Code %s already exist %s for Bank %s and CNAB %s type.", + record.code, + code_name_exist, + code_already_exist.bank_id.name, + code_already_exist.payment_method_id.code, + ) + ) + + # Tamanho do campo é padrão 2 p/ todos + # os codigos de Instrução CNAB ? + if len(record.code) != 2 and record.code_type in ( + "instruction_move_code", + "return_move_code", + ): + raise ValidationError( + _( + "The field Code in 'Instruction and Return Move Code'" + " should have two characters." + ) + ) diff --git a/l10n_br_account_payment_order/security/ir.model.access.csv b/l10n_br_account_payment_order/security/ir.model.access.csv index 134583be1d17..fd4912187ee0 100644 --- a/l10n_br_account_payment_order/security/ir.model.access.csv +++ b/l10n_br_account_payment_order/security/ir.model.access.csv @@ -18,3 +18,5 @@ access_l10n_br_cnab_payment_fields_manager,l10n_br_cnab.payment.fields manager,m access_account_move_line_cnab_change_user,access_account_move_line_cnab_change_user,model_account_move_line_cnab_change,group_cnab_user,1,1,1,1 access_l10n_br_cnab_boleto_wallet_code_manager,access_l10n_br_cnab_boleto_wallet_code manager,model_l10n_br_cnab_boleto_wallet_code,group_cnab_manager,1,1,1,1 access_l10n_br_cnab_boleto_wallet_code_user,access_l10n_br_cnab_boleto_wallet_code user,model_l10n_br_cnab_boleto_wallet_code,group_cnab_user,1,0,0,0 +access_l10n_br_cnab_code_manager,access_l10n_br_cnab_code manager,model_l10n_br_cnab_code,group_cnab_manager,1,1,1,1 +access_l10n_br_cnab_code_user,access_l10n_br_cnab_code user,model_l10n_br_cnab_code,group_cnab_user,1,0,0,0 diff --git a/l10n_br_account_payment_order/tests/test_cnab_codes.py b/l10n_br_account_payment_order/tests/test_cnab_codes.py index 9ac53583822e..615d6c465205 100644 --- a/l10n_br_account_payment_order/tests/test_cnab_codes.py +++ b/l10n_br_account_payment_order/tests/test_cnab_codes.py @@ -39,11 +39,12 @@ def test_cnab_instruction_move_code(self): # Testa o caso do Codigo Duplicado instruction_code_new_form = Form( - self.env["l10n_br_cnab.mov.instruction.code"], - "l10n_br_account_payment_order.l10n_br_cnab_mov_instruction_code_form_view", + self.env["l10n_br_cnab.code"], + "l10n_br_account_payment_order.l10n_br_cnab_code_form_view", ) - instruction_code_new_form.code = "01" + instruction_code_new_form.code = "02" + instruction_code_new_form.code_type = "instruction_move_code" instruction_code_new_form.name = "Remessa*" instruction_code_new_form.bank_ids.add( self.env.ref("l10n_br_base.res_bank_136") @@ -77,11 +78,12 @@ def test_cnab_return_move_code(self): # Caso Codigo Duplicado return_move_code_new_form = Form( - self.env["l10n_br_cnab.return.move.code"], - "l10n_br_account_payment_order.l10n_br_cnab_return_move_code_form_view", + self.env["l10n_br_cnab.code"], + "l10n_br_account_payment_order.l10n_br_cnab_code_form_view", ) - return_move_code_new_form.code = "01" + return_move_code_new_form.code = "02" + return_move_code_new_form.code_type = "return_move_code" return_move_code_new_form.name = "Pago (Título protestado pago em cartório)" return_move_code_new_form.bank_ids.add( self.env.ref("l10n_br_base.res_bank_136") @@ -109,11 +111,12 @@ def test_cnab_boleto_wallet_code(self): # Caso Codigo Duplicado boleto_wallet_code_new_form = Form( - self.env["l10n_br_cnab.boleto.wallet.code"], - "l10n_br_account_payment_order.l10n_br_cnab_boleto_wallet_code_form_view", + self.env["l10n_br_cnab.code"], + "l10n_br_account_payment_order.l10n_br_cnab_code_form_view", ) boleto_wallet_code_new_form.code = "1" + boleto_wallet_code_new_form.code_type = "wallet_code" boleto_wallet_code_new_form.name = ( "Cobrança Simples (Sem Registro e Eletrônica com Registro)" ) diff --git a/l10n_br_account_payment_order/tests/test_payment_order_change.py b/l10n_br_account_payment_order/tests/test_payment_order_change.py index e48edc318cfa..659abddc90d0 100644 --- a/l10n_br_account_payment_order/tests/test_payment_order_change.py +++ b/l10n_br_account_payment_order/tests/test_payment_order_change.py @@ -60,9 +60,9 @@ def test_change_date_maturity_multiple(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_06" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_date_maturity_one(self): """Test Creation of a Payment Order an change ONE due date""" @@ -101,9 +101,9 @@ def test_change_date_maturity_one(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_06" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" # def test_change_payment_mode(self): # invoice = self.invoice_auto @@ -145,9 +145,9 @@ def test_change_not_payment(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_02" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_protest_tittle(self): """Test Creation of a Payment Order an change protest_tittle""" @@ -173,9 +173,9 @@ def test_change_protest_tittle(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_09" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_suspend_protest_keep_wallet(self): """Test Creation of a Payment Order an change suspend_protest_keep_wallet""" @@ -201,9 +201,9 @@ def test_change_suspend_protest_keep_wallet(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_11" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_suspend_grant_rebate(self): """Test Creation of a Payment Order an change grant_rebate""" @@ -230,9 +230,9 @@ def test_change_suspend_grant_rebate(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_04" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_suspend_grant_discount(self): """Test Creation of a Payment Order an change grant_discount""" @@ -259,9 +259,9 @@ def test_change_suspend_grant_discount(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_07" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_suspend_cancel_rebate(self): """Test Creation of a Payment Order an change cancel_rebate""" @@ -287,9 +287,9 @@ def test_change_suspend_cancel_rebate(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_05" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_change_suspend_cancel_discount(self): """Test Creation of a Payment Order an change cancel_discount""" @@ -315,6 +315,6 @@ def test_change_suspend_cancel_discount(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_08" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" diff --git a/l10n_br_account_payment_order/tests/test_payment_order_inbound.py b/l10n_br_account_payment_order/tests/test_payment_order_inbound.py index 15d4f1c44709..3e51217797d4 100644 --- a/l10n_br_account_payment_order/tests/test_payment_order_inbound.py +++ b/l10n_br_account_payment_order/tests/test_payment_order_inbound.py @@ -76,8 +76,8 @@ def test_create_payment_order(self): assert ( line.own_number ), "own_number field is not filled in created Move Line." - assert line.mov_instruction_code_id, ( - "mov_instruction_code_id field is not filled" " in created Move Line." + assert line.instruction_move_code_id, ( + "instruction_move_code_id field is not filled" " in created Move Line." ) # testar com a parcela 700 if line.debit == 700.0: @@ -93,8 +93,8 @@ def test_create_payment_order(self): for line in payment_order.payment_line_ids: assert line.own_number, "own_number field is not filled in Payment Line." assert ( - line.mov_instruction_code_id - ), "mov_instruction_code_id field are not filled in Payment Line." + line.instruction_move_code_id + ), "instruction_move_code_id field are not filled in Payment Line." # Ordem de Pagto CNAB não pode ser apagada with self.assertRaises(UserError): @@ -115,8 +115,8 @@ def test_create_payment_order(self): for line in payment_order.payment_line_ids: assert line.own_number, "own_number field is not filled in Payment Line." assert ( - line.mov_instruction_code_id - ), "mov_instruction_code_id field are not filled in Payment Line." + line.instruction_move_code_id + ), "instruction_move_code_id field are not filled in Payment Line." # Ordem de Pagto CNAB não pode ser Cancelada with self.assertRaises(UserError): @@ -322,9 +322,9 @@ def test_payment_inbound_payment_in_cash_full(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_02" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_payment_inbound_payment_in_cash_twice(self): """Pay a invoice in cash, with a payment already registred to in the bank. @@ -411,9 +411,9 @@ def test_payment_inbound_payment_in_cash_twice(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_02" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" def test_payment_inbound_cancel_invoice_alread_registred(self): """Cancel the invoice with a payment that is already registred at the bank. @@ -459,6 +459,6 @@ def test_payment_inbound_cancel_invoice_alread_registred(self): "l10n_br_account_payment_order.manual_test_mov_instruction_code_02" ).id in change_payment_order.payment_line_ids.mapped( - "mov_instruction_code_id" + "instruction_move_code_id" ).ids - ), "Payment Order with wrong mov_instruction_code_id" + ), "Payment Order with wrong instruction_move_code_id" diff --git a/l10n_br_account_payment_order/views/account_move_line.xml b/l10n_br_account_payment_order/views/account_move_line.xml index 25d69c9e9635..997421728fd3 100644 --- a/l10n_br_account_payment_order/views/account_move_line.xml +++ b/l10n_br_account_payment_order/views/account_move_line.xml @@ -17,7 +17,11 @@ show - + + @@ -54,7 +58,11 @@ + + @@ -72,7 +80,11 @@ + + diff --git a/l10n_br_account_payment_order/views/account_payment_line.xml b/l10n_br_account_payment_order/views/account_payment_line.xml index 5edad37afa06..4ef6fefdb3b9 100644 --- a/l10n_br_account_payment_order/views/account_payment_line.xml +++ b/l10n_br_account_payment_order/views/account_payment_line.xml @@ -91,7 +91,11 @@ name="movement_type" attrs="{'invisible': [('payment_method_code', '!=', '240')]}" /> + + + + + + @@ -186,71 +201,174 @@ name="return_move_code" string="Códigos de Retorno do Movimento" > - --> + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_br_account_payment_order/views/l10n_br_cnab_boleto_wallet_code_view.xml b/l10n_br_account_payment_order/views/l10n_br_cnab_boleto_wallet_code_view.xml index b72d1798c943..0cb43661cc26 100644 --- a/l10n_br_account_payment_order/views/l10n_br_cnab_boleto_wallet_code_view.xml +++ b/l10n_br_account_payment_order/views/l10n_br_cnab_boleto_wallet_code_view.xml @@ -74,12 +74,14 @@ {'group_by':['bank_id', 'payment_method_id']} + diff --git a/l10n_br_account_payment_order/views/l10n_br_cnab_code_view.xml b/l10n_br_account_payment_order/views/l10n_br_cnab_code_view.xml new file mode 100644 index 000000000000..83a391a79c63 --- /dev/null +++ b/l10n_br_account_payment_order/views/l10n_br_cnab_code_view.xml @@ -0,0 +1,101 @@ + + + + + + l10n_br_cnab.code.tree + l10n_br_cnab.code + + + + + + + + + + + + + l10n_br_cnab.code.search + l10n_br_cnab.code + + + + + + + + + + + + + + + + + + + + + l10n_br_cnab.code.form.view + l10n_br_cnab.code + +
+ + + + + + + + + + +
+ +
+
+
+
+ + + CNAB Code + l10n_br_cnab.code + tree,form + {'group_by':['bank_id', 'payment_method_id', 'code_type']} + + + + +
diff --git a/l10n_br_account_payment_order/views/l10n_br_cnab_mov_instruction_code_view.xml b/l10n_br_account_payment_order/views/l10n_br_cnab_mov_instruction_code_view.xml index 1ed140cd4868..8c511fbe8615 100644 --- a/l10n_br_account_payment_order/views/l10n_br_cnab_mov_instruction_code_view.xml +++ b/l10n_br_account_payment_order/views/l10n_br_cnab_mov_instruction_code_view.xml @@ -74,12 +74,14 @@ {'group_by':['bank_id', 'payment_method_id']}
+ diff --git a/l10n_br_account_payment_order/views/l10n_br_cnab_return_move_code_view.xml b/l10n_br_account_payment_order/views/l10n_br_cnab_return_move_code_view.xml index db86a178047d..485fa73ad7dd 100644 --- a/l10n_br_account_payment_order/views/l10n_br_cnab_return_move_code_view.xml +++ b/l10n_br_account_payment_order/views/l10n_br_cnab_return_move_code_view.xml @@ -73,12 +73,14 @@ {'group_by':['bank_id', 'payment_method_id']}
+