mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-08 15:42:52 +00:00
Merge pull request #51083 from aerele/mr-customer-provided-status
This commit is contained in:
@@ -130,7 +130,7 @@ status_map = {
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Received",
|
"Received",
|
||||||
"eval:self.status != 'Stopped' and self.per_received == 100 and self.docstatus == 1 and self.material_request_type == 'Purchase'",
|
"eval:self.status != 'Stopped' and self.docstatus == 1 and ((self.per_received == 100 and self.material_request_type == 'Purchase') or (self.per_ordered == 100 and self.material_request_type == 'Customer Provided'))",
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Partially Received",
|
"Partially Received",
|
||||||
@@ -138,11 +138,11 @@ status_map = {
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Partially Received",
|
"Partially Received",
|
||||||
"eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type == 'Material Transfer'",
|
"eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type in ['Material Transfer', 'Customer Provided']",
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Partially Ordered",
|
"Partially Ordered",
|
||||||
"eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type != 'Material Transfer'",
|
"eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type not in ['Material Transfer', 'Customer Provided']",
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
"POS Opening Entry": [
|
"POS Opening Entry": [
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ frappe.listview_settings["Material Request"] = {
|
|||||||
} else if (
|
} else if (
|
||||||
doc.docstatus == 1 &&
|
doc.docstatus == 1 &&
|
||||||
flt(doc.per_ordered, precision) < 100 &&
|
flt(doc.per_ordered, precision) < 100 &&
|
||||||
doc.material_request_type == "Material Transfer"
|
(doc.material_request_type == "Material Transfer" ||
|
||||||
|
doc.material_request_type == "Customer Provided")
|
||||||
) {
|
) {
|
||||||
return [__("Partially Received"), "yellow", "per_ordered,<,100"];
|
return [__("Partially Received"), "yellow", "per_ordered,<,100"];
|
||||||
} else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) < 100) {
|
} else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) < 100) {
|
||||||
|
|||||||
@@ -934,6 +934,33 @@ class TestMaterialRequest(IntegrationTestCase):
|
|||||||
self.assertEqual(mr.per_ordered, 100)
|
self.assertEqual(mr.per_ordered, 100)
|
||||||
self.assertEqual(mr.status, "Ordered")
|
self.assertEqual(mr.status, "Ordered")
|
||||||
|
|
||||||
|
def test_customer_provided_received_status(self):
|
||||||
|
create_item("CUST-0989", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0)
|
||||||
|
|
||||||
|
mr = make_material_request(item_code="CUST-0989", material_request_type="Customer Provided")
|
||||||
|
se = make_stock_entry(mr.name)
|
||||||
|
se.insert()
|
||||||
|
se.submit()
|
||||||
|
|
||||||
|
mr.reload()
|
||||||
|
|
||||||
|
self.assertEqual(mr.per_ordered, 100)
|
||||||
|
self.assertEqual(mr.status, "Received")
|
||||||
|
|
||||||
|
def test_customer_provided_partially_received_status(self):
|
||||||
|
create_item("CUST-0990", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0)
|
||||||
|
|
||||||
|
mr = make_material_request(item_code="CUST-0990", qty=10, material_request_type="Customer Provided")
|
||||||
|
se = make_stock_entry(mr.name)
|
||||||
|
se.get("items")[0].qty = 5
|
||||||
|
se.insert()
|
||||||
|
se.submit()
|
||||||
|
|
||||||
|
mr.reload()
|
||||||
|
|
||||||
|
self.assertEqual(mr.per_ordered, 50)
|
||||||
|
self.assertEqual(mr.status, "Partially Received")
|
||||||
|
|
||||||
def test_material_request_qty_over_sales_order_limit(self):
|
def test_material_request_qty_over_sales_order_limit(self):
|
||||||
from erpnext.controllers.status_updater import OverAllowanceError
|
from erpnext.controllers.status_updater import OverAllowanceError
|
||||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
|
|||||||
Reference in New Issue
Block a user