Skip to content

Commit c7f4947

Browse files
feat: new receipt for updated qnty logic
1 parent 9ff5be4 commit c7f4947

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

d2h/d2h/doctype/purchase_receipt_item_duplicate/purchase_receipt_item_duplicate.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"conversion_factor",
1515
"qty",
1616
"rejected_qty",
17+
"original_quantity",
1718
"serial_no",
1819
"purchase_order",
1920
"serial_and_batch_no_section",
@@ -154,12 +155,20 @@
154155
"fieldname": "use_serial_batch_fields",
155156
"fieldtype": "Check",
156157
"label": "Use Serial No / Batch Fields"
158+
},
159+
{
160+
"default": "0",
161+
"fieldname": "original_quantity",
162+
"fieldtype": "Float",
163+
"hidden": 1,
164+
"label": "original_quantity",
165+
"non_negative": 1
157166
}
158167
],
159168
"index_web_pages_for_search": 1,
160169
"istable": 1,
161170
"links": [],
162-
"modified": "2025-03-16 21:18:58.738406",
171+
"modified": "2025-04-01 06:43:07.787928",
163172
"modified_by": "Administrator",
164173
"module": "D2H",
165174
"name": "Purchase Receipt Item Duplicate",

d2h/fixtures/custom_field.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -988,5 +988,17 @@
988988
"translatable": 0,
989989
"unique": 0,
990990
"width": null
991+
},
992+
{
993+
"doctype": "Custom Field",
994+
"dt": "Purchase Receipt Item",
995+
"module": "D2H",
996+
"name": "original_quantity",
997+
"fieldname": "original_quantity",
998+
"fieldtype": "Float",
999+
"label": "Original Quantity",
1000+
"default": 0,
1001+
"hidden": 1,
1002+
"non_negative": 0
9911003
}
9921004
]

d2h/overrides.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import json
2+
from d2h.api import create_purchase_receipt
13
import frappe
24

35
def on_submit_purchase_receipt(doc, method):
@@ -12,8 +14,30 @@ def on_submit_purchase_receipt(doc, method):
1214
else:
1315
item_order.custom_good_in_transit_qty = 0
1416
item_order.save(ignore_permissions=True)
17+
new_purchase_receipt_required = False
18+
new_items = []
19+
purchase_order = None
20+
for item in doc.items:
21+
if item.original_quantity - item.qty > 0:
22+
new_purchase_receipt_required = True
23+
purchase_order = item.purchase_order
24+
item_order = frappe.get_doc("Purchase Order Item", {
25+
"item_code": item.item_code,
26+
"parent": item.purchase_order
27+
})
28+
new_items.append({
29+
"item_code": item.item_code,
30+
"qty": item.original_quantity - item.qty,
31+
"uom": item.uom,
32+
"item_name": item.item_name,
33+
"name": item_order.name,
34+
})
35+
if new_purchase_receipt_required:
36+
create_purchase_receipt(purchase_order, json.dumps(new_items))
1537

1638
def after_insert_purchase_receipt(doc, method):
39+
for item in doc.items:
40+
item.original_quantity = item.qty
1741
doc.custom_item_duplicate = []
1842
for item in doc.items:
1943
new_item = doc.append("custom_item_duplicate", {})
@@ -30,6 +54,9 @@ def after_insert_purchase_receipt(doc, method):
3054
new_item.serial_and_batch_bundle = item.serial_and_batch_bundle
3155
new_item.rejected_serial_and_batch_bundle = item.rejected_serial_and_batch_bundle
3256
new_item.use_serial_batch_fields = item.use_serial_batch_fields
57+
new_item.original_quantity = item.original_quantity
58+
59+
doc.save(ignore_permissions=True)
3360

3461
def validate_purchase_receipt(doc, method):
3562
user_roles = frappe.get_roles(frappe.session.user)
@@ -59,6 +86,7 @@ def validate_purchase_receipt(doc, method):
5986
new_item.serial_and_batch_bundle = item.serial_and_batch_bundle
6087
new_item.rejected_serial_and_batch_bundle = item.rejected_serial_and_batch_bundle
6188
new_item.use_serial_batch_fields = item.use_serial_batch_fields
89+
new_item.original_quantity = item.original_quantity
6290

6391
def on_delete_purchase_receipt(doc, method):
6492
on_submit_purchase_receipt(doc, method)

0 commit comments

Comments
 (0)