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 230ac661c869..39f41b5a6916 100644 --- a/l10n_br_account_payment_brcobranca/models/account_payment_line.py +++ b/l10n_br_account_payment_brcobranca/models/account_payment_line.py @@ -109,6 +109,39 @@ def _prepare_bank_line_santander(self, cnab_config, linhas_pagamentos): linhas_pagamentos["dias_baixa"] = str( cnab_config.write_off_devolution_number_of_days ) + # Os dados de multa, mora, desconto e protesto também são obrigatórios na + # baixa e abatimento Santander 240 + if self.instruction_move_code_id.code in [ + cnab_config.write_off_code_id.code, + cnab_config.grant_rebate_code_id.code, + ]: + if cnab_config.boleto_fee_perc: + linhas_pagamentos["codigo_multa"] = cnab_config.boleto_fee_code + linhas_pagamentos["percentual_multa"] = cnab_config.boleto_fee_perc + if cnab_config.boleto_interest_perc: + linhas_pagamentos["tipo_mora"] = cnab_config.boleto_interest_code + if cnab_config.boleto_interest_code == "1": + linhas_pagamentos[ + "valor_mora" + ] = self.company_currency_id.round( + self.amount_currency + * ((cnab_config.boleto_interest_perc / 100) / 30), + ) + if cnab_config.boleto_interest_code == "2": + linhas_pagamentos[ + "valor_mora" + ] = cnab_config.boleto_interest_perc + if self.discount_value: + linhas_pagamentos["data_desconto"] = self.date.strftime("%Y/%m/%d") + linhas_pagamentos["valor_desconto"] = self.discount_value + if cnab_config.boleto_protest_code: + linhas_pagamentos[ + "codigo_protesto" + ] = cnab_config.boleto_protest_code + if cnab_config.boleto_days_protest: + linhas_pagamentos[ + "dias_protesto" + ] = cnab_config.boleto_days_protest def prepare_bank_payment_line(self, bank_name_brcobranca): cnab_config = self.order_id.payment_mode_id.cnab_config_id