mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
[IMP] account_payment_partner: Make payment mode editable on entry
Complement of 998f8df6aa254266c015fab144ba290e1a386cf0 Extend the editability to the journal entry (account.move), taking as criteria if there's no reconciliation made, which is the definitory one. It includes test for this new feature, both the mode propagation and the editability check. TT39850
This commit is contained in:
@@ -33,6 +33,10 @@ class AccountMove(models.Model):
|
||||
ondelete="restrict",
|
||||
readonly=False,
|
||||
)
|
||||
has_reconciled_items = fields.Boolean(
|
||||
help="Technical field for supporting the editability of the payment mode",
|
||||
compute="_compute_has_reconciled_items",
|
||||
)
|
||||
|
||||
@api.depends("move_type")
|
||||
def _compute_payment_mode_filter_type_domain(self):
|
||||
@@ -94,6 +98,18 @@ class AccountMove(models.Model):
|
||||
continue
|
||||
return res
|
||||
|
||||
@api.depends("line_ids.matched_credit_ids", "line_ids.matched_debit_ids")
|
||||
def _compute_has_reconciled_items(self):
|
||||
for record in self:
|
||||
lines_to_consider = record.line_ids.filtered(
|
||||
lambda x: x.account_id.account_type
|
||||
in ("asset_receivable", "liability_payable")
|
||||
)
|
||||
record.has_reconciled_items = bool(
|
||||
lines_to_consider.matched_credit_ids
|
||||
+ lines_to_consider.matched_debit_ids
|
||||
)
|
||||
|
||||
def _reverse_moves(self, default_values_list=None, cancel=False):
|
||||
if not default_values_list:
|
||||
default_values_list = [{} for _ in self]
|
||||
|
||||
@@ -258,6 +258,10 @@ class TestAccountPaymentPartner(TransactionCase):
|
||||
mode = self.supplier_payment_mode.copy()
|
||||
aml.payment_mode_id = mode
|
||||
self.assertEqual(invoice.payment_mode_id, mode)
|
||||
# Test payment mode editability on account move
|
||||
self.assertFalse(invoice.has_reconciled_items)
|
||||
invoice.payment_mode_id = self.supplier_payment_mode
|
||||
self.assertEqual(aml.payment_mode_id, self.supplier_payment_mode)
|
||||
|
||||
def test_invoice_create_out_invoice(self):
|
||||
invoice = self._create_invoice(
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
name="payment_mode_id"
|
||||
domain="[('payment_type', '=', payment_mode_filter_type_domain), ('company_id', '=', company_id)]"
|
||||
widget="selection"
|
||||
attrs="{'readonly': [('state', '!=', 'draft')], 'invisible': [('move_type', 'not in', ('out_invoice','out_refund','in_invoice','in_refund'))]}"
|
||||
attrs="{'readonly': [('has_reconciled_items', '=', True)], 'invisible': [('move_type', 'not in', ('out_invoice','out_refund','in_invoice','in_refund'))]}"
|
||||
/>
|
||||
<field name="has_reconciled_items" invisible="1" />
|
||||
<field name="bank_account_required" invisible="1" />
|
||||
<field name="payment_mode_filter_type_domain" invisible="1" />
|
||||
<field name="partner_bank_filter_type_domain" invisible="1" />
|
||||
|
||||
Reference in New Issue
Block a user