mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-05 14:38:26 +00:00
Merge pull request #41898 from Nihantra-Patel/upd_mr_received_qty_v15
fix: update received qty in MR on purchase invoice submit with update stock
This commit is contained in:
@@ -684,6 +684,19 @@ class PurchaseInvoice(BuyingController):
|
|||||||
where name=`tabPurchase Invoice Item`.parent and update_stock = 1)""",
|
where name=`tabPurchase Invoice Item`.parent and update_stock = 1)""",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
self.status_updater.append(
|
||||||
|
{
|
||||||
|
"source_dt": "Purchase Invoice Item",
|
||||||
|
"target_dt": "Material Request Item",
|
||||||
|
"join_field": "material_request_item",
|
||||||
|
"target_field": "received_qty",
|
||||||
|
"target_parent_dt": "Material Request",
|
||||||
|
"target_parent_field": "per_received",
|
||||||
|
"target_ref_field": "stock_qty",
|
||||||
|
"source_field": "stock_qty",
|
||||||
|
"percent_join_field": "material_request",
|
||||||
|
}
|
||||||
|
)
|
||||||
if cint(self.is_return):
|
if cint(self.is_return):
|
||||||
self.status_updater.append(
|
self.status_updater.append(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ from erpnext.controllers.buying_controller import QtyMismatchError
|
|||||||
from erpnext.exceptions import InvalidCurrency
|
from erpnext.exceptions import InvalidCurrency
|
||||||
from erpnext.projects.doctype.project.test_project import make_project
|
from erpnext.projects.doctype.project.test_project import make_project
|
||||||
from erpnext.stock.doctype.item.test_item import create_item
|
from erpnext.stock.doctype.item.test_item import create_item
|
||||||
|
from erpnext.stock.doctype.material_request.material_request import make_purchase_order
|
||||||
|
from erpnext.stock.doctype.material_request.test_material_request import make_material_request
|
||||||
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
|
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
|
||||||
make_purchase_invoice as create_purchase_invoice_from_receipt,
|
make_purchase_invoice as create_purchase_invoice_from_receipt,
|
||||||
)
|
)
|
||||||
@@ -82,6 +84,31 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
|
|||||||
# teardown
|
# teardown
|
||||||
pi.delete()
|
pi.delete()
|
||||||
|
|
||||||
|
def test_update_received_qty_in_material_request(self):
|
||||||
|
from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_invoice
|
||||||
|
|
||||||
|
"""
|
||||||
|
Test if the received_qty in Material Request is updated correctly when
|
||||||
|
a Purchase Invoice with update_stock=True is submitted.
|
||||||
|
"""
|
||||||
|
mr = make_material_request(item_code="_Test Item", qty=10)
|
||||||
|
mr.save()
|
||||||
|
mr.submit()
|
||||||
|
po = make_purchase_order(mr.name)
|
||||||
|
po.supplier = "_Test Supplier"
|
||||||
|
po.save()
|
||||||
|
po.submit()
|
||||||
|
|
||||||
|
# Create a Purchase Invoice with update_stock=True
|
||||||
|
pi = make_purchase_invoice(po.name)
|
||||||
|
pi.update_stock = True
|
||||||
|
pi.insert()
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
# Check if the received quantity is updated in Material Request
|
||||||
|
mr.reload()
|
||||||
|
self.assertEqual(mr.items[0].received_qty, 10)
|
||||||
|
|
||||||
def test_gl_entries_without_perpetual_inventory(self):
|
def test_gl_entries_without_perpetual_inventory(self):
|
||||||
frappe.db.set_value("Company", "_Test Company", "round_off_account", "Round Off - _TC")
|
frappe.db.set_value("Company", "_Test Company", "round_off_account", "Round Off - _TC")
|
||||||
pi = frappe.copy_doc(test_records[0])
|
pi = frappe.copy_doc(test_records[0])
|
||||||
|
|||||||
@@ -105,6 +105,8 @@
|
|||||||
"purchase_receipt",
|
"purchase_receipt",
|
||||||
"pr_detail",
|
"pr_detail",
|
||||||
"sales_invoice_item",
|
"sales_invoice_item",
|
||||||
|
"material_request",
|
||||||
|
"material_request_item",
|
||||||
"item_weight_details",
|
"item_weight_details",
|
||||||
"weight_per_unit",
|
"weight_per_unit",
|
||||||
"total_weight",
|
"total_weight",
|
||||||
@@ -934,12 +936,34 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "column_break_vbbb",
|
"fieldname": "column_break_vbbb",
|
||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "material_request",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Material Request",
|
||||||
|
"no_copy": 1,
|
||||||
|
"options": "Material Request",
|
||||||
|
"print_hide": 1,
|
||||||
|
"read_only": 1,
|
||||||
|
"search_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "material_request_item",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
|
"label": "Material Request Item",
|
||||||
|
"no_copy": 1,
|
||||||
|
"oldfieldname": "pr_detail",
|
||||||
|
"oldfieldtype": "Data",
|
||||||
|
"print_hide": 1,
|
||||||
|
"read_only": 1,
|
||||||
|
"search_index": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2024-03-27 13:10:24.204495",
|
"modified": "2024-06-14 11:57:07.171700",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Purchase Invoice Item",
|
"name": "Purchase Invoice Item",
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ class PurchaseInvoiceItem(Document):
|
|||||||
manufacturer_part_no: DF.Data | None
|
manufacturer_part_no: DF.Data | None
|
||||||
margin_rate_or_amount: DF.Float
|
margin_rate_or_amount: DF.Float
|
||||||
margin_type: DF.Literal["", "Percentage", "Amount"]
|
margin_type: DF.Literal["", "Percentage", "Amount"]
|
||||||
|
material_request: DF.Link | None
|
||||||
|
material_request_item: DF.Data | None
|
||||||
net_amount: DF.Currency
|
net_amount: DF.Currency
|
||||||
net_rate: DF.Currency
|
net_rate: DF.Currency
|
||||||
page_break: DF.Check
|
page_break: DF.Check
|
||||||
|
|||||||
@@ -798,6 +798,8 @@ def get_mapped_purchase_invoice(source_name, target_doc=None, ignore_permissions
|
|||||||
"field_map": {
|
"field_map": {
|
||||||
"name": "po_detail",
|
"name": "po_detail",
|
||||||
"parent": "purchase_order",
|
"parent": "purchase_order",
|
||||||
|
"material_request": "material_request",
|
||||||
|
"material_request_item": "material_request_item",
|
||||||
"wip_composite_asset": "wip_composite_asset",
|
"wip_composite_asset": "wip_composite_asset",
|
||||||
},
|
},
|
||||||
"postprocess": update_item,
|
"postprocess": update_item,
|
||||||
|
|||||||
Reference in New Issue
Block a user