mirror of
https://github.com/bringout/oca-workflow-process.git
synced 2026-04-21 17:12:00 +02:00
Initial commit: OCA Workflow Process packages (456 packages)
This commit is contained in:
commit
d366e42934
18799 changed files with 1284507 additions and 0 deletions
|
|
@ -0,0 +1,4 @@
|
|||
# Copyright 2022 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import test_purchase_merge
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
from odoo.exceptions import UserError
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestPurchaseMerge(common.TransactionCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestPurchaseMerge, cls).setUpClass()
|
||||
cls.PurchaseMerge = cls.env["purchase.merge.automatic.wizard"]
|
||||
cls.product_1 = cls.env["product.product"].create({"name": "Product 1"})
|
||||
cls.product_2 = cls.env["product.product"].create({"name": "Product 2"})
|
||||
cls.partner = cls.env["res.partner"].create({"name": "Partner"})
|
||||
cls.partner_2 = cls.env["res.partner"].create({"name": "Partner 2"})
|
||||
cls.PurchaseOrder = cls.env["purchase.order"]
|
||||
cls.purchase_order_1 = cls.PurchaseOrder.create(
|
||||
{
|
||||
"partner_id": cls.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": cls.product_1.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.purchase_order_2 = cls.PurchaseOrder.create(
|
||||
{
|
||||
"partner_id": cls.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": cls.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.purchase_order_eur = cls.PurchaseOrder.create(
|
||||
{
|
||||
"partner_id": cls.partner.id,
|
||||
"currency_id": cls.env.ref("base.EUR").id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": cls.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.purchase_order_usd = cls.PurchaseOrder.create(
|
||||
{
|
||||
"partner_id": cls.partner.id,
|
||||
"currency_id": cls.env.ref("base.USD").id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": cls.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.fiscal_position_1 = cls.env["account.fiscal.position"].create(
|
||||
{"name": "Fiscal Position 1"}
|
||||
)
|
||||
cls.fiscal_position_2 = cls.env["account.fiscal.position"].create(
|
||||
{"name": "Fiscal Position 2"}
|
||||
)
|
||||
cls.incoterm_1 = cls.env["account.incoterms"].create(
|
||||
{"name": "Incoterm 1", "code": "INC1"}
|
||||
)
|
||||
cls.incoterm_2 = cls.env["account.incoterms"].create(
|
||||
{"name": "Incoterm 2", "code": "INC2"}
|
||||
)
|
||||
|
||||
def test_count_purchase_order_lines(self):
|
||||
self.purchase_merge_1 = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [self.purchase_order_1.id, self.purchase_order_2.id])
|
||||
],
|
||||
"dst_purchase_id": self.purchase_order_2.id,
|
||||
}
|
||||
)
|
||||
self.purchase_merge_1.action_merge()
|
||||
self.purchase_order_line_1 = len(self.purchase_order_2.order_line)
|
||||
self.assertEqual(self.purchase_order_line_1, 2)
|
||||
|
||||
def test_purchase_ids(self):
|
||||
self.purchase_merge_2 = self.PurchaseMerge.create(
|
||||
{
|
||||
"dst_purchase_id": self.purchase_order_2.id,
|
||||
}
|
||||
)
|
||||
self.assertEqual(self.purchase_merge_2.action_merge(), False)
|
||||
|
||||
def test_default_purchase_ids(self):
|
||||
context = {
|
||||
"active_ids": [self.purchase_order_1.id, self.purchase_order_2.id],
|
||||
"active_model": self.PurchaseOrder._name,
|
||||
}
|
||||
self.purchase_merge_3 = self.PurchaseMerge.with_context(**context).create({})
|
||||
self.assertEqual(len(self.purchase_merge_3.dst_purchase_id), 1)
|
||||
self.assertEqual(len(self.purchase_merge_3.purchase_ids), 2)
|
||||
|
||||
def test_purchase_order_states(self):
|
||||
self.purchase_order_3 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
self.purchase_order_3.write({"state": "sent"})
|
||||
self.purchase_merge_4 = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [self.purchase_order_1.id, self.purchase_order_3.id])
|
||||
],
|
||||
"dst_purchase_id": self.purchase_order_3.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders that aren't in draft state like: .+",
|
||||
):
|
||||
self.purchase_merge_4._check_state(self.purchase_merge_4.purchase_ids)
|
||||
|
||||
def test_purchase_order_currency(self):
|
||||
purchase_order_dst = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst.write({"state": "sent"})
|
||||
purchase_merge_4 = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [self.purchase_order_eur.id, self.purchase_order_usd.id])
|
||||
],
|
||||
"dst_purchase_id": purchase_order_dst.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders with different currencies: .+",
|
||||
):
|
||||
purchase_merge_4._check_all_values(purchase_merge_4.purchase_ids)
|
||||
|
||||
def test_purchase_order_fiscal_position(self):
|
||||
purchase_order_fp_1 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"fiscal_position_id": self.fiscal_position_1.id,
|
||||
}
|
||||
)
|
||||
purchase_order_fp_2 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"fiscal_position_id": self.fiscal_position_2.id,
|
||||
}
|
||||
)
|
||||
purchase_order_dst = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst.write({"state": "sent"})
|
||||
purchase_merge = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [purchase_order_fp_1.id, purchase_order_fp_2.id])
|
||||
],
|
||||
"dst_purchase_id": purchase_order_dst.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders with different fiscal positions: .+",
|
||||
):
|
||||
purchase_merge._check_all_values(purchase_merge.purchase_ids)
|
||||
|
||||
def test_purchase_order_incoterms(self):
|
||||
purchase_order_inc_1 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"incoterm_id": self.incoterm_1.id,
|
||||
}
|
||||
)
|
||||
purchase_order_inc_2 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"incoterm_id": self.incoterm_2.id,
|
||||
}
|
||||
)
|
||||
purchase_order_dst = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst.write({"state": "sent"})
|
||||
purchase_merge = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [purchase_order_inc_1.id, purchase_order_inc_2.id])
|
||||
],
|
||||
"dst_purchase_id": purchase_order_dst.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders with different incoterms: .+",
|
||||
):
|
||||
purchase_merge._check_all_values(purchase_merge.purchase_ids)
|
||||
|
||||
def test_purchase_order_payment_terms(self):
|
||||
purchase_order_pt_1 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"payment_term_id": self.env.ref(
|
||||
"account.account_payment_term_end_following_month"
|
||||
).id,
|
||||
}
|
||||
)
|
||||
purchase_order_pt_2 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
"payment_term_id": self.env.ref(
|
||||
"account.account_payment_term_15days"
|
||||
).id,
|
||||
}
|
||||
)
|
||||
purchase_order_dst = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst.write({"state": "sent"})
|
||||
purchase_merge = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [purchase_order_pt_1.id, purchase_order_pt_2.id])
|
||||
],
|
||||
"dst_purchase_id": purchase_order_dst.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders with different payment terms: .+",
|
||||
):
|
||||
purchase_merge._check_all_values(purchase_merge.purchase_ids)
|
||||
|
||||
def test_purchase_order_partners(self):
|
||||
purchase_order_partner1 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_partner2 = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner_2.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst = self.env["purchase.order"].create(
|
||||
{
|
||||
"partner_id": self.partner.id,
|
||||
"order_line": [
|
||||
(0, 0, {"product_id": self.product_2.id, "price_unit": 10})
|
||||
],
|
||||
}
|
||||
)
|
||||
purchase_order_dst.write({"state": "sent"})
|
||||
purchase_merge = self.PurchaseMerge.create(
|
||||
{
|
||||
"purchase_ids": [
|
||||
(6, 0, [purchase_order_partner1.id, purchase_order_partner2.id])
|
||||
],
|
||||
"dst_purchase_id": purchase_order_dst.id,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(
|
||||
UserError,
|
||||
r"You can't merge purchase orders with different suppliers: .+",
|
||||
):
|
||||
purchase_merge._check_all_values(purchase_merge.purchase_ids)
|
||||
Loading…
Add table
Add a link
Reference in a new issue