mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-01 04:28:27 +00:00
Merge pull request #51083 from aerele/mr-customer-provided-status
This commit is contained in:
@@ -130,7 +130,7 @@ status_map = {
|
||||
],
|
||||
[
|
||||
"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",
|
||||
@@ -138,11 +138,11 @@ status_map = {
|
||||
],
|
||||
[
|
||||
"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",
|
||||
"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": [
|
||||
|
||||
@@ -21,7 +21,8 @@ frappe.listview_settings["Material Request"] = {
|
||||
} else if (
|
||||
doc.docstatus == 1 &&
|
||||
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"];
|
||||
} 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.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):
|
||||
from erpnext.controllers.status_updater import OverAllowanceError
|
||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||
|
||||
Reference in New Issue
Block a user