Skip to content

Commit 65cf3af

Browse files
[IMP] l10n_br_account_payment_order: cnab discount date
1 parent 7552f56 commit 65cf3af

File tree

9 files changed

+73
-13
lines changed

9 files changed

+73
-13
lines changed

l10n_br_account_payment_order/data/cnab_codes/banco_ailos_cnab_240.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@
133133
eval="[Command.link(ref('payment_mode_type_cnab240'))]"
134134
/>
135135
</record>
136+
<record id="ailos_instruction_16" model="l10n_br_cnab.code">
137+
<field name="name">Alteração de Valor/Data de Desconto</field>
138+
<field name="code">16</field>
139+
<field name="code_type">instruction_move_code</field>
140+
<field
141+
name="bank_ids"
142+
eval="[Command.link(ref('l10n_br_base.res_bank_085'))]"
143+
/>
144+
<field
145+
name="payment_method_ids"
146+
eval="[Command.link(ref('payment_mode_type_cnab240'))]"
147+
/>
148+
</record>
136149
<record id="ailos_instruction_31" model="l10n_br_cnab.code">
137150
<field
138151
name="name"

l10n_br_account_payment_order/demo/l10n_br_cnab_config_demo.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@
295295
<field name="sending_code_id" ref="ailos_instruction_01" />
296296
<field name="write_off_code_id" ref="ailos_instruction_02" />
297297
<field name="change_maturity_date_code_id" ref="ailos_instruction_06" />
298+
<field name="change_discount_date_code_id" ref="ailos_instruction_16" />
298299
<field name="protest_title_code_id" ref="ailos_instruction_09" />
299300
<field name="suspend_protest_keep_wallet_code_id" ref="ailos_instruction_11" />
300301
<field name="suspend_protest_write_off_code_id" ref="ailos_instruction_10" />

l10n_br_account_payment_order/models/l10n_br_cnab_boleto_fields.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,14 @@ class L10nBrCNABBoletoFields(models.AbstractModel):
252252
tracking=True,
253253
)
254254

255+
# Código para Alteração da Data de Desconto
256+
change_discount_date_code_id = fields.Many2one(
257+
comodel_name="l10n_br_cnab.code",
258+
string="Change Discount Date Movement Instruction Code",
259+
help="CNAB Movement Instruction Code for Change Discount Date.",
260+
tracking=True,
261+
)
262+
255263
# Codigo para Protestar Título
256264
protest_title_code_id = fields.Many2one(
257265
comodel_name="l10n_br_cnab.code",

l10n_br_account_payment_order/models/l10n_br_cnab_change_methods.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def _identify_cnab_change(
3232
if change_type == "change_date_maturity":
3333
cnab_code = record._get_cnab_date_maturity(new_date)
3434
record._make_cnab_change(cnab_code, new_payorder, payorder, reason)
35+
elif change_type == "change_discount_date":
36+
cnab_code = record._get_cnab_discount_date(new_date)
37+
record._make_cnab_change(cnab_code, new_payorder, payorder, reason)
3538
elif change_type == "change_payment_mode":
3639
record._change_payment_mode(reason, **kwargs)
3740
elif change_type == "baixa":
@@ -202,13 +205,13 @@ def _get_cnab_date_maturity(self, new_date):
202205
:return: deveria retornar algo ? Uma mensagem de confirmação talvez ?
203206
"""
204207

205-
if new_date == self.date_maturity:
208+
if new_date == self.date:
206209
raise UserError(
207210
_(
208211
"New Date Maturity %(new_date)s is equal to actual Date "
209212
"Maturity %(date_maturity)s",
210213
new_date=new_date,
211-
date_maturity=self.date_maturity,
214+
date_maturity=self.date,
212215
)
213216
)
214217

@@ -217,10 +220,35 @@ def _get_cnab_date_maturity(self, new_date):
217220
if not cnab_config.change_maturity_date_code_id:
218221
self._msg_error_cnab_missing(self.payment_mode_id, "Date Maturity Code")
219222

220-
self.date_maturity = new_date
223+
self.date = new_date
221224

222225
return cnab_config.change_maturity_date_code_id
223226

227+
def _get_cnab_discount_date(self, new_date):
228+
"""
229+
CNAB - Instrução de Alteração da Data de Desconto.
230+
:param new_date: nova data de desconto
231+
:return: código CNAB de alteração da data de desconto
232+
"""
233+
234+
if new_date == self.date:
235+
raise UserError(
236+
_(
237+
"New Discount Date %(new_date)s is equal to current Discount "
238+
"Date %(date_discount)s",
239+
new_date=new_date,
240+
date_discount=self.date,
241+
)
242+
)
243+
244+
cnab_config = self.payment_mode_id.cnab_config_id
245+
if not cnab_config.change_discount_date_code_id:
246+
self._msg_error_cnab_missing(self.payment_mode_id, "Discount Date Code")
247+
248+
self.date = new_date
249+
250+
return cnab_config.change_discount_date_code_id
251+
224252
def _create_cnab_not_payment(self, payorder, new_payorder, reason):
225253
"""
226254
CNAB - Não Pagamento/Inadimplencia.

l10n_br_account_payment_order/tests/common.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,9 @@ def _send_new_cnab_code(
687687

688688
if warning_error and test_dates_are_equals:
689689
# Testa caso Sem Codigo
690-
new_date = aml_to_change.date_maturity
690+
new_date = aml_to_change.date
691691
# Testa caso com Codigo e Data de Vencimento igual
692-
f.date_maturity = new_date
692+
f.date = new_date
693693
if code_to_send == "grant_rebate":
694694
f.rebate_value = 10.00
695695
if code_to_send == "grant_discount":
@@ -732,7 +732,7 @@ def _send_new_cnab_instruction_code(
732732
if code_to_send == "change_date_maturity":
733733
new_date = date.today() + relativedelta(years=1)
734734
self.assertEqual(
735-
aml_to_change.date_maturity,
735+
aml_to_change.date,
736736
new_date,
737737
"Data não alterada",
738738
)

l10n_br_account_payment_order/tests/tools.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ def create_with_form_l10n_br_cnab_config(env, values):
125125
cnab_config.change_maturity_date_code_id = values.get(
126126
"change_maturity_date_code_id"
127127
)
128+
if values.get("change_discount_date_code_id"):
129+
cnab_config.change_discount_date_code_id = values.get(
130+
"change_discount_date_code_id"
131+
)
128132
if values.get("protest_title_code_id"):
129133
cnab_config.protest_title_code_id = values.get("protest_title_code_id")
130134
if values.get("suspend_protest_keep_wallet_code_id"):

l10n_br_account_payment_order/views/l10n_br_cnab_config_view.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,12 @@
261261
name="change_title_value_code_id"
262262
domain="['&amp;', ('payment_method_ids', 'in', payment_method_id), ('bank_ids', 'in', bank_id), ('code_type', '=', 'instruction_move_code')]"
263263
/>
264-
<field
264+
<field
265+
name="change_discount_date_code_id"
266+
domain="['&amp;', ('payment_method_ids', 'in', payment_method_id),
267+
('bank_ids', 'in', bank_id), ('code_type', '=', 'instruction_move_code')]"
268+
/>
269+
<field
265270
name="change_maturity_date_code_id"
266271
domain="['&amp;', ('payment_method_ids', 'in', payment_method_id), ('bank_ids', 'in', bank_id), ('code_type', '=', 'instruction_move_code')]"
267272
/>

l10n_br_account_payment_order/wizards/account_move_line_change.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ def default_get(self, fields_list):
1616
res["account_move_line_ids"] = [Command.set(active_ids)]
1717
if active_ids and len(active_ids) == 1:
1818
move_line_id = self.account_move_line_ids.browse(active_ids)
19-
if move_line_id.date_maturity:
20-
res["date_maturity"] = move_line_id.date_maturity
19+
if move_line_id.date:
20+
res["date"] = move_line_id.date
2121
if move_line_id.payment_mode_id:
2222
res["payment_mode_id"] = move_line_id.payment_mode_id.id
2323
return res
@@ -30,6 +30,7 @@ def default_get(self, fields_list):
3030
# Muitas opções são permitidas, verificar manual do respectivo CNAB usado.
3131
change_type = fields.Selection(
3232
selection=[
33+
("change_discount_date", "Data de Desconto"),
3334
("change_date_maturity", "Vencimento"),
3435
# TODO: É preciso mais detalhes dessa operação ao enviar fora o
3536
# codigo de alteração e carteira o que mais deve ir ?
@@ -53,7 +54,7 @@ def default_get(self, fields_list):
5354
],
5455
string="Tipo Alteração",
5556
)
56-
date_maturity = fields.Date()
57+
date = fields.Date()
5758
payment_mode_id = fields.Many2one(comodel_name="account.payment.mode")
5859
reason = fields.Text(string="Justificativa")
5960
rebate_value = fields.Float(string="Valor de Abatimento")
@@ -63,7 +64,7 @@ def doit(self):
6364
self.account_move_line_ids._identify_cnab_change(
6465
change_type=self.change_type,
6566
reason=self.reason,
66-
new_date=self.date_maturity,
67+
new_date=self.date,
6768
new_payment_mode_id=self.payment_mode_id,
6869
rebate_value=self.rebate_value,
6970
discount_value=self.discount_value,

l10n_br_account_payment_order/wizards/account_move_line_change.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<group>
1414
<field name="change_type" widget="radio" />
1515
<field
16-
name="date_maturity"
17-
attrs="{'invisible': [('change_type', '!=', 'change_date_maturity')], 'required': [('change_type', '=', 'change_date_maturity')]}"
16+
name="date"
17+
attrs="{'invisible': [('change_type', 'not in', ['change_date_maturity', 'change_discount_date'])]}"
1818
/>
1919
<field
2020
name="payment_mode_id"

0 commit comments

Comments
 (0)