Skip to content

Commit 6a536ec

Browse files
[IMP] account_payment_order: filters account_id and analytic_account_id
1 parent fa9c349 commit 6a536ec

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

account_payment_order/tests/test_payment_order_outbound.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,76 @@ def order_creation(self, date_prefered):
233233
self.assertEqual(order.move_ids[0].date, order.payment_ids[0].date)
234234
self.assertEqual(order.state, "uploaded")
235235

236+
def test_wizard_filters_by_account_id(self):
237+
if self.invoice.state != "posted":
238+
self.invoice.action_post()
239+
order = self.env["account.payment.order"].create(
240+
{
241+
"payment_type": "outbound",
242+
"payment_mode_id": self.mode.id,
243+
}
244+
)
245+
other_payable_account = self.env["account.account"].create(
246+
{
247+
"name": "Other Payable Test",
248+
"code": "PAYTEST",
249+
"account_type": "liability_payable",
250+
"company_id": self.company.id,
251+
}
252+
)
253+
wizard_filtered = (
254+
self.env["account.payment.line.create"]
255+
.with_context(active_model="account.payment.order", active_id=order.id)
256+
.create(
257+
{
258+
"date_type": "move",
259+
"move_date": fields.Date.today(),
260+
"account_id": other_payable_account.id,
261+
}
262+
)
263+
)
264+
wizard_filtered.payment_mode = "any"
265+
wizard_filtered.populate()
266+
self.assertFalse(wizard_filtered.move_line_ids)
267+
268+
def test_wizard_filters_by_analytic_account(self):
269+
if self.invoice.state != "posted":
270+
self.invoice.action_post()
271+
order = self.env["account.payment.order"].create(
272+
{
273+
"payment_type": "outbound",
274+
"payment_mode_id": self.mode.id,
275+
}
276+
)
277+
plan = self.env["account.analytic.plan"].search(
278+
[("company_id", "=", self.company.id)], limit=1
279+
)
280+
if not plan:
281+
plan = self.env["account.analytic.plan"].create(
282+
{"name": "Wizard Analytic Plan", "company_id": self.company.id}
283+
)
284+
analytic_account = self.env["account.analytic.account"].create(
285+
{
286+
"name": "Wizard Analytic Test",
287+
"company_id": self.company.id,
288+
"plan_id": plan.id,
289+
}
290+
)
291+
wizard_analytic = (
292+
self.env["account.payment.line.create"]
293+
.with_context(active_model="account.payment.order", active_id=order.id)
294+
.create(
295+
{
296+
"date_type": "move",
297+
"move_date": fields.Date.today(),
298+
"analytic_account_id": analytic_account.id,
299+
}
300+
)
301+
)
302+
wizard_analytic.payment_mode = "any"
303+
wizard_analytic.populate()
304+
self.assertFalse(wizard_analytic.move_line_ids)
305+
236306
def _line_creation(self, outbound_order):
237307
vals = {
238308
"order_id": outbound_order.id,

account_payment_order/wizard/account_payment_line_create.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ class AccountPaymentLineCreate(models.TransientModel):
3838
payment_mode = fields.Selection(
3939
selection=[("same", "Same"), ("same_or_null", "Same or Empty"), ("any", "Any")],
4040
)
41+
account_id = fields.Many2one(
42+
comodel_name="account.account",
43+
string="Account",
44+
)
45+
analytic_account_id = fields.Many2one(
46+
comodel_name="account.analytic.account",
47+
string="Analytic Account",
48+
)
4149
move_line_ids = fields.Many2many(
4250
comodel_name="account.move.line", string="Move Lines"
4351
)
@@ -78,6 +86,12 @@ def _prepare_move_line_domain(self):
7886
domain += [("move_id.state", "=", "posted")]
7987
if not self.allow_blocked:
8088
domain += [("blocked", "!=", True)]
89+
if self.account_id:
90+
domain.append(("account_id", "=", self.account_id.id))
91+
if self.analytic_account_id:
92+
domain.append(
93+
("analytic_line_ids.account_id", "=", self.analytic_account_id.id)
94+
)
8195
if self.date_type == "due":
8296
domain += [
8397
"|",
@@ -173,6 +187,8 @@ def populate(self):
173187
"allow_blocked",
174188
"payment_mode",
175189
"partner_ids",
190+
"account_id",
191+
"analytic_account_id",
176192
)
177193
def move_line_filters_change(self):
178194
domain = self._prepare_move_line_domain()

account_payment_order/wizard/account_payment_line_create_view.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
widget="many2many_tags"
3232
placeholder="Keep empty to use all partners"
3333
/>
34+
<field name="account_id" />
35+
<field name="analytic_account_id" />
3436
<field name="payment_mode" />
3537
<field name="target_move" widget="radio" />
3638
<field name="invoice" />

0 commit comments

Comments
 (0)