robin.keunen
5 years ago
3 changed files with 93 additions and 19 deletions
-
2beesdoo_stock_coverage/__manifest__.py
-
6beesdoo_stock_coverage/models/product_template.py
-
104beesdoo_stock_coverage/tests/test_stock_coverage.py
@ -1,22 +1,96 @@ |
|||||
# Copyright 2020 Coop IT Easy SCRL fs |
|
||||
# Robin Keunen <robin@coopiteasy.be> |
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). |
|
||||
|
|
||||
|
# Copyright (C) 2019 - Today: GRAP (http://www.grap.coop) |
||||
|
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) |
||||
|
# @author: Robin Keunen <robin@coopiteasy.be> |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
|
|
||||
|
from odoo import fields |
||||
|
from odoo.tools import float_compare |
||||
from odoo.tests.common import TransactionCase |
from odoo.tests.common import TransactionCase |
||||
|
from datetime import timedelta |
||||
|
|
||||
|
|
||||
class TestProductTemplate(TransactionCase): |
|
||||
|
class TestModule(TransactionCase): |
||||
def setUp(self): |
def setUp(self): |
||||
super(TestProductTemplate, self).setUp() |
|
||||
self.product1 = self.browse_ref( |
|
||||
"point_of_sale.whiteboard_pen" |
|
||||
).product_tmpl_id |
|
||||
|
super(TestModule, self).setUp() |
||||
|
|
||||
|
# Get Registry |
||||
|
self.PosOrder = self.env["pos.order"] |
||||
|
self.AccountPayment = self.env["account.payment"] |
||||
|
|
||||
|
# Get Object |
||||
|
self.pos_product = self.env.ref("product.product_product_25") |
||||
|
self.pos_template = self.pos_product.product_tmpl_id |
||||
|
self.pricelist = self.env.ref("product.list0") |
||||
|
self.partner = self.env.ref("base.res_partner_12") |
||||
|
|
||||
|
# Create a new pos config and open it |
||||
|
self.pos_config = self.env.ref("point_of_sale.pos_config_main").copy() |
||||
|
self.pos_config.open_session_cb() |
||||
|
|
||||
|
# Test Section |
||||
def test_compute_stock_coverage(self): |
def test_compute_stock_coverage(self): |
||||
self.product1._compute_stock_coverage() |
|
||||
print("***") |
|
||||
print(self.product1.range_sales) |
|
||||
print(self.product1.daily_sales) |
|
||||
print(self.product1.stock_coverage) |
|
||||
print("***") |
|
||||
|
self._create_order() |
||||
|
self.pos_template._compute_stock_coverage() |
||||
|
self.assertEquals(1.0, self.pos_template.range_sales) |
||||
|
self.assertEqual( |
||||
|
float_compare( |
||||
|
0.0714, self.pos_template.daily_sales, precision_digits=2 |
||||
|
), |
||||
|
0, |
||||
|
) |
||||
|
self.assertEquals(210.0, self.pos_template.stock_coverage) |
||||
|
|
||||
|
def _create_order(self): |
||||
|
date = fields.Date.today() - timedelta(days=1) |
||||
|
date_str = fields.Date.to_string(date) |
||||
|
order_data = { |
||||
|
"id": u"0006-001-0010", |
||||
|
"to_invoice": True, |
||||
|
"data": { |
||||
|
"pricelist_id": self.pricelist.id, |
||||
|
"user_id": 1, |
||||
|
"name": "Order 0006-001-0010", |
||||
|
"partner_id": self.partner.id, |
||||
|
"amount_paid": 0.9, |
||||
|
"pos_session_id": self.pos_config.current_session_id.id, |
||||
|
"lines": [ |
||||
|
[ |
||||
|
0, |
||||
|
0, |
||||
|
{ |
||||
|
"product_id": self.pos_product.id, |
||||
|
"price_unit": 0.9, |
||||
|
"qty": 1, |
||||
|
"price_subtotal": 0.9, |
||||
|
"price_subtotal_incl": 0.9, |
||||
|
}, |
||||
|
] |
||||
|
], |
||||
|
"statement_ids": [ |
||||
|
[ |
||||
|
0, |
||||
|
0, |
||||
|
{ |
||||
|
"journal_id": self.pos_config.journal_ids[0].id, |
||||
|
"amount": 0.9, |
||||
|
"name": fields.Datetime.now(), |
||||
|
"account_id": self.env.user.partner_id.property_account_receivable_id.id, |
||||
|
"statement_id": self.pos_config.current_session_id.statement_ids[ |
||||
|
0 |
||||
|
].id, |
||||
|
}, |
||||
|
] |
||||
|
], |
||||
|
"creation_date": date_str, |
||||
|
"amount_tax": 0, |
||||
|
"fiscal_position_id": False, |
||||
|
"uid": u"00001-001-0001", |
||||
|
"amount_return": 0, |
||||
|
"sequence_number": 1, |
||||
|
"amount_total": 0.9, |
||||
|
}, |
||||
|
} |
||||
|
|
||||
|
result = self.PosOrder.create_from_ui([order_data]) |
||||
|
order = self.PosOrder.browse(result[0]) |
||||
|
return order |
Write
Preview
Loading…
Cancel
Save
Reference in new issue