Skip to content

Commit 5d6dbe7

Browse files
committed
[IMP] l10n_it_ricevute_bancarie: Propagate supplier company bank account to bill and Show company account used for supplier
1 parent 68826e6 commit 5d6dbe7

File tree

5 files changed

+127
-1
lines changed

5 files changed

+127
-1
lines changed

l10n_it_ricevute_bancarie/models/account.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ class ResPartnerBankAdd(models.Model):
3838
help="Identification Code of the Company in the Interbank System.",
3939
)
4040

41+
@api.model
42+
def _domain_riba_partner_bank_id(self):
43+
"""Domain to select accounts linked to current company"""
44+
company = self.env.company
45+
return [
46+
("partner_id", "=", company.partner_id.id),
47+
]
48+
4149
def _check_protected_records(self):
4250
protected_records = (
4351
self.env["account.move"]
@@ -130,6 +138,41 @@ def _compute_open_amount(self):
130138
states={"draft": [("readonly", False)]},
131139
)
132140

141+
def _domain_riba_supplier_company_bank_id(self):
142+
"""Allow to select bank accounts linked to the current company."""
143+
return self.env["res.partner.bank"]._domain_riba_partner_bank_id()
144+
145+
riba_supplier_company_bank_id = fields.Many2one(
146+
comodel_name="res.partner.bank",
147+
compute="_compute_riba_supplier_company_bank_id",
148+
domain=_domain_riba_supplier_company_bank_id,
149+
help="Bank account used for the RiBa of this vendor bill.",
150+
readonly=False,
151+
states={
152+
"posted": [
153+
("readonly", True),
154+
],
155+
},
156+
store=True,
157+
string="Company Bank Account for Supplier",
158+
)
159+
160+
@api.depends(
161+
"is_riba_payment",
162+
)
163+
def _compute_riba_supplier_company_bank_id(self):
164+
for move in self:
165+
is_riba_payment = move.is_riba_payment
166+
is_purchase_document = move.is_purchase_document(include_receipts=True)
167+
partner_riba_bank_account = (
168+
move.partner_id.property_riba_supplier_company_bank_id
169+
)
170+
if is_riba_payment and is_purchase_document and partner_riba_bank_account:
171+
riba_bank_account = partner_riba_bank_account
172+
else:
173+
riba_bank_account = False
174+
move.riba_supplier_company_bank_id = riba_bank_account
175+
133176
@api.model
134177
def create(self, vals):
135178
invoice = super().create(vals)

l10n_it_ricevute_bancarie/models/partner.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ class ResPartner(models.Model):
1818
riba_exclude_expenses = fields.Boolean(
1919
string="Exclude expenses Ri.Ba.",
2020
)
21+
is_supplier_payment_riba = fields.Boolean(
22+
string="Is Riba Paymnet",
23+
related="property_supplier_payment_term_id.riba",
24+
readonly=True,
25+
)
2126
riba_policy_expenses = fields.Selection(
2227
[
2328
("one_a_month", "More invoices, one expense per Month"),
@@ -26,3 +31,15 @@ class ResPartner(models.Model):
2631
default="one_a_month",
2732
string="Ri.Ba. Policy expenses",
2833
)
34+
35+
def _domain_property_riba_supplier_company_bank_id(self):
36+
"""Allow to select bank accounts linked to the current company."""
37+
return self.env["res.partner.bank"]._domain_riba_partner_bank_id()
38+
39+
property_riba_supplier_company_bank_id = fields.Many2one(
40+
comodel_name="res.partner.bank",
41+
company_dependent=True,
42+
string="Company Bank Account for Supplier",
43+
domain=_domain_property_riba_supplier_company_bank_id,
44+
help="Bank account used for the Riba of this suplier.",
45+
)

l10n_it_ricevute_bancarie/tests/test_riba.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,3 +746,49 @@ def test_past_due_fee_amount_flow(self):
746746
.create({})
747747
)
748748
self.assertEqual(wizard.past_due_fee_amount, 15.0)
749+
750+
def test_supplier_company_bank_account_domain(self):
751+
"""The domain for Company Bank Account for Supplier
752+
only shows bank accounts of current company."""
753+
# Arrange
754+
current_company, other_company = self.env.company, self.company2
755+
current_bank_account = self.company_bank
756+
other_bank_account = self.company2_bank
757+
# pre-condition: Bank accounts belong to different companies
758+
self.assertNotEqual(current_company, other_company)
759+
self.assertEqual(current_bank_account.partner_id, current_company.partner_id)
760+
self.assertEqual(other_bank_account.partner_id, other_company.partner_id)
761+
762+
# Act: Search bank accounts
763+
domain = self.env["res.partner"].fields_get(
764+
allfields=["property_riba_supplier_company_bank_id"],
765+
attributes=["domain"],
766+
)["property_riba_supplier_company_bank_id"]["domain"]
767+
bank_accounts = self.env["res.partner.bank"].search(domain)
768+
769+
# Assert: only the bank account of current company is found
770+
self.assertIn(current_bank_account, bank_accounts)
771+
self.assertNotIn(other_bank_account, bank_accounts)
772+
773+
def test_supplier_to_bill_company_bank_account(self):
774+
"""A supplier has a company bank account,
775+
it is propagated to its vendor bill."""
776+
# Arrange
777+
bank_account = self.company_bank
778+
payment_term = self.payment_term1
779+
supplier = self.partner
780+
supplier.property_supplier_payment_term_id = payment_term
781+
supplier.property_riba_supplier_company_bank_id = bank_account
782+
self.assertTrue(payment_term.riba)
783+
784+
# Act: Create the vendor bill
785+
bill = self.env["account.move"].create(
786+
{
787+
"move_type": "in_invoice",
788+
"partner_id": supplier.id,
789+
"invoice_payment_term_id": payment_term.id,
790+
}
791+
)
792+
793+
# Assert
794+
self.assertEqual(bill.riba_supplier_company_bank_id, bank_account)

l10n_it_ricevute_bancarie/views/account_view.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,16 @@
151151
/>
152152
</div>
153153

154+
<field
155+
name="riba_supplier_company_bank_id"
156+
attr="{'invisible':[
157+
'|',
158+
('is_riba_payment','=',False),
159+
('move_type','!=','in_invoice'),
160+
],
161+
}"
162+
/>
154163
</xpath>
155-
156164
<xpath expr="//label[@for='invoice_payment_term_id']" position="before">
157165
<field
158166
name="is_unsolved"

l10n_it_ricevute_bancarie/views/partner_view.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@
2020
/>
2121
</group>
2222
</group>
23+
<field name="property_supplier_payment_term_id" position="after">
24+
<field name="is_supplier_payment_riba" invisible="True" />
25+
<field
26+
name="property_riba_supplier_company_bank_id"
27+
string="Company Bank Account"
28+
attrs="{
29+
'invisible':[
30+
('is_supplier_payment_riba','=',False),
31+
],
32+
}"
33+
/>
34+
</field>
2335
</field>
2436
</record>
2537

0 commit comments

Comments
 (0)