Skip to content

Commit c7e924c

Browse files
fix: delivery note store dept issue
1 parent 49fd8ee commit c7e924c

File tree

3 files changed

+74
-31
lines changed

3 files changed

+74
-31
lines changed

d2h/hooks.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@
232232
"on_trash": "d2h.overrides.on_delete_purchase_receipt",
233233
"after_insert": "d2h.overrides.after_insert_purchase_receipt"
234234
},
235+
"Delivery Note": {
236+
"validate": "d2h.overrides.validate_delivery_note",
237+
},
235238
"*": {
236239
"before_print": "d2h.api.before_print"
237240
}

d2h/overrides.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ def validate_purchase_receipt(doc, method):
8888
new_item.use_serial_batch_fields = item.use_serial_batch_fields
8989
new_item.original_quantity = item.original_quantity
9090

91+
def validate_delivery_note(doc, method):
92+
user_roles = frappe.get_roles(frappe.session.user)
93+
if "Store Dept" in user_roles and "Administrator" not in user_roles:
94+
for ind in range(len(doc.custom_delivery_note_item_duplicate)):
95+
duplicate_item = doc.custom_delivery_note_item_duplicate[ind]
96+
item = doc.items[ind]
97+
if duplicate_item.item_code == item.item_code:
98+
item.qty = duplicate_item.qty
99+
item.serial_and_batch_bundle = duplicate_item.serial_and_batch_bundle
100+
item.use_serial_batch_fields = duplicate_item.use_serial_batch_fields
101+
91102
def on_delete_purchase_receipt(doc, method):
92103
on_submit_purchase_receipt(doc, method)
93104

d2h/public/js/delivery_note.js

Lines changed: 60 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,24 @@
11
frappe.ui.form.on("Delivery Note", {
2+
refresh: function (frm) {
3+
frm.fields_dict["custom_delivery_note_item_duplicate"].grid.wrapper.on(
4+
"change",
5+
'input[data-fieldname="qty"]',
6+
function () {
7+
roles = frappe.user_roles;
8+
if (roles.includes("Store Dept") && !roles.includes("Administrator")) {
9+
frm.doc.custom_item_duplicate.map((item) => {
10+
frm.doc.items.map((new_item) => {
11+
if (new_item.item_code == item.item_code) {
12+
new_item.qty = item.qty;
13+
}
14+
});
15+
});
16+
frm.refresh_field("items");
17+
}
18+
}
19+
);
20+
update_duplicate_items(frm);
21+
},
222
onload: function (frm) {
323
if (
424
frappe.user_roles.includes("Store Dept") &&
@@ -17,44 +37,53 @@ frappe.ui.form.on("Delivery Note", {
1737
frm.set_df_property("total", "hidden", true);
1838
frm.set_df_property("custom_section_break_jwbcu", "hidden", false);
1939
}
40+
frm.fields_dict["custom_delivery_note_item_duplicate"].grid.wrapper
41+
.find(".grid-add-row")
42+
.hide();
43+
frm.fields_dict["custom_delivery_note_item_duplicate"].grid.wrapper
44+
.find(".grid-remove-rows")
45+
.hide();
46+
47+
frm.fields_dict[
48+
"custom_delivery_note_item_duplicate"
49+
].grid.cannot_add_rows = true;
50+
frm.fields_dict[
51+
"custom_delivery_note_item_duplicate"
52+
].grid.only_sortable = false;
53+
54+
frm.fields_dict["custom_delivery_note_item_duplicate"].grid.refresh();
2055
},
2156
validate(frm) {
2257
if (
2358
frappe.user_roles.includes("Store Dept") &&
2459
!frappe.user_roles.includes("Administrator")
2560
) {
26-
frm.doc.items = [];
27-
frm.refresh_field("items");
28-
frm.doc.custom_delivery_note_item_duplicate.map((item) => {
29-
const new_item = frm.add_child("items");
30-
new_item.item_code = item.item_code;
31-
new_item.item_name = item.item_code;
32-
new_item.qty = item.qty;
33-
new_item.uom = item.uom;
34-
new_item.stock_uom = item.stock_uom;
35-
new_item.conversion_factor = item.conversion_factor;
36-
new_item.stock_qty = item.stock_qty;
37-
new_item.serial_no = item.serial_no;
38-
new_item.serial_and_batch_bundle = item.serial_and_batch_bundle;
39-
new_item.use_serial_batch_fields = item.use_serial_batch_fields;
40-
});
41-
frm.refresh_field("items");
4261
} else {
43-
frm.doc.custom_delivery_note_item_duplicate = [];
44-
frm.refresh_field("custom_delivery_note_item_duplicate");
45-
frm.doc.items.map((item) => {
46-
const new_item = frm.add_child("custom_delivery_note_item_duplicate");
47-
new_item.item_code = item.item_code;
48-
new_item.qty = item.qty;
49-
new_item.uom = item.uom;
50-
new_item.stock_uom = item.stock_uom;
51-
new_item.conversion_factor = item.conversion_factor;
52-
new_item.stock_qty = item.stock_qty;
53-
new_item.serial_no = item.serial_no;
54-
new_item.serial_and_batch_bundle = item.serial_and_batch_bundle;
55-
new_item.use_serial_batch_fields = item.use_serial_batch_fields;
56-
});
57-
frm.refresh_field("custom_delivery_note_item_duplicate");
62+
update_duplicate_items(frm);
5863
}
5964
},
6065
});
66+
67+
frappe.ui.form.on("Delivery Note Item", {
68+
item_code: function (frm, cdt, cdn) {
69+
update_duplicate_items(frm);
70+
},
71+
});
72+
73+
function update_duplicate_items(frm, row) {
74+
frm.doc.custom_delivery_note_item_duplicate = [];
75+
frm.refresh_field("custom_delivery_note_item_duplicate");
76+
frm.doc.items.map((item) => {
77+
const new_item = frm.add_child("custom_delivery_note_item_duplicate");
78+
new_item.item_code = item.item_code;
79+
new_item.qty = item.qty;
80+
new_item.uom = item.uom;
81+
new_item.stock_uom = item.stock_uom;
82+
new_item.conversion_factor = item.conversion_factor;
83+
new_item.stock_qty = item.stock_qty;
84+
new_item.serial_no = item.serial_no;
85+
new_item.serial_and_batch_bundle = item.serial_and_batch_bundle;
86+
new_item.use_serial_batch_fields = item.use_serial_batch_fields;
87+
});
88+
frm.refresh_field("custom_delivery_note_item_duplicate");
89+
}

0 commit comments

Comments
 (0)