1- import json
2-
31import frappe
4- from erpnext .selling .doctype .sales_order .sales_order import create_pick_list , make_sales_invoice , make_delivery_note
2+ from erpnext .selling .doctype .sales_order .sales_order import make_sales_invoice
53from erpnext .stock .doctype .batch .batch import get_batch_qty
64from frappe import _
75from frappe .utils import flt , getdate , today
@@ -20,125 +18,6 @@ def create_sales_invoice_against_contract():
2018 sales_invoice = make_sales_invoice (order .name )
2119 sales_invoice .save ()
2220
23-
24- @frappe .whitelist ()
25- def create_multiple_pick_lists (orders ):
26- orders = json .loads (orders )
27-
28- created_orders = []
29- for order in orders :
30- created = False
31- customer = frappe .db .get_value ("Sales Order" , order , "customer" )
32-
33- # check if a Pick List already exists against the order
34- pick_lists = frappe .get_all ("Pick List" ,
35- filters = [
36- ["Pick List" , "docstatus" , "<" , 2 ],
37- ["Pick List Item" , "sales_order" , "=" , order ]
38- ],
39- distinct = True )
40- pick_lists = [item .name for item in pick_lists if item .name ]
41-
42- # if none are found, then create a new Pick List
43- if not pick_lists :
44- order_doc = create_pick_list (order )
45-
46- # if no items can be picked, do not create an empty Pick List
47- if order_doc .get ("locations" ):
48- order_doc .save ()
49- pick_lists = [order_doc .name ]
50- created = True
51- else :
52- pick_lists = []
53-
54- created_orders .append ({
55- "sales_order" : order ,
56- "customer" : customer ,
57- "pick_lists" : pick_lists ,
58- "created" : created
59- })
60-
61- return created_orders
62-
63- @frappe .whitelist ()
64- def create_multiple_sales_invoices (orders ):
65- orders = json .loads (orders )
66-
67- created_orders = []
68- for order in orders :
69- created = False
70- customer = frappe .db .get_value ("Sales Order" , order , "customer" )
71-
72- # check if a Sales Invoice already exists against the order
73- sales_invoices = frappe .get_all ("Sales Invoice" ,
74- filters = [
75- ["Sales Invoice" , "docstatus" , "<" , 2 ],
76- ["Sales Invoice Item" , "sales_order" , "=" , order ]
77- ],
78- distinct = True )
79- sales_invoices = [item .name for item in sales_invoices if item .name ]
80-
81- # if none are found, then create a new Sales Invoice
82- if not sales_invoices :
83- order_doc = make_sales_invoice (order )
84-
85- # if no items can be avilable, do not create an empty Sales Invoice
86- if order_doc .get ("items" ):
87- order_doc .save ()
88- sales_invoices = [order_doc .name ]
89- created = True
90- else :
91- sales_invoices = []
92-
93- created_orders .append ({
94- "sales_order" : order ,
95- "customer" : customer ,
96- "sales_invoices" : sales_invoices ,
97- "created" : created
98- })
99-
100- return created_orders
101-
102- @frappe .whitelist ()
103- def create_muliple_delivery_notes (orders ):
104- orders = json .loads (orders )
105-
106- created_orders = []
107- for order in orders :
108- created = False
109- customer = frappe .db .get_value ("Sales Order" , order , "customer" )
110-
111- # check if a Delivery Note already exists against the order
112- delivery_notes = frappe .get_all ("Delivery Note" ,
113- filters = [
114- ["Delivery Note" , "docstatus" , "<" , 2 ],
115- ["Delivery Note Item" , "against_sales_order" , "=" , order ]
116- ],
117- distinct = True )
118- delivery_notes = [item .name for item in delivery_notes if item .name ]
119-
120- # if none are found, then create a new Pick List
121- if not delivery_notes :
122- order_doc = make_delivery_note (order )
123-
124- # if no items can be picked, do not create an empty Pick List
125- if order_doc .get ("items" ):
126- order_doc .save ()
127- delivery_notes = [order_doc .name ]
128- created = True
129- else :
130- delivery_notes = []
131-
132- created_orders .append ({
133- "sales_order" : order ,
134- "customer" : customer ,
135- "delivery_notes" : delivery_notes ,
136- "created" : created
137- })
138-
139- return created_orders
140-
141-
14221def validate_batch_item (sales_order , method ):
14322 for item in sales_order .items :
14423 qty = item .stock_qty or item .transfer_qty or item .qty or 0
0 commit comments