1
1
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
+ } ,
2
22
onload : function ( frm ) {
3
23
if (
4
24
frappe . user_roles . includes ( "Store Dept" ) &&
@@ -17,44 +37,53 @@ frappe.ui.form.on("Delivery Note", {
17
37
frm . set_df_property ( "total" , "hidden" , true ) ;
18
38
frm . set_df_property ( "custom_section_break_jwbcu" , "hidden" , false ) ;
19
39
}
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 ( ) ;
20
55
} ,
21
56
validate ( frm ) {
22
57
if (
23
58
frappe . user_roles . includes ( "Store Dept" ) &&
24
59
! frappe . user_roles . includes ( "Administrator" )
25
60
) {
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" ) ;
42
61
} 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 ) ;
58
63
}
59
64
} ,
60
65
} ) ;
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