86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| from __future__ import unicode_literals
 | |
| import webnotes
 | |
| from webnotes.utils import nowdate, nowtime, cstr
 | |
| from accounts.utils import get_fiscal_year
 | |
| 
 | |
| def execute():
 | |
| 	item_map = {}
 | |
| 	for item in webnotes.conn.sql("""select * from tabItem""", as_dict=1):
 | |
| 		item_map.setdefault(item.name, item)
 | |
| 	
 | |
| 	warehouse_map = get_warehosue_map()
 | |
| 	naming_series = "STE/13/"
 | |
| 	
 | |
| 	for company in webnotes.conn.sql("select name from tabCompany"):
 | |
| 		stock_entry = [{
 | |
| 			"doctype": "Stock Entry",
 | |
| 			"naming_series": naming_series,
 | |
| 			"posting_date": nowdate(),
 | |
| 			"posting_time": nowtime(),
 | |
| 			"purpose": "Material Transfer",
 | |
| 			"company": company[0],
 | |
| 			"remarks": "Material Transfer to activate perpetual inventory",
 | |
| 			"fiscal_year": get_fiscal_year(nowdate())[0]
 | |
| 		}]
 | |
| 		expense_account = "Cost of Goods Sold - NISL"
 | |
| 		cost_center = "Default CC Ledger - NISL"
 | |
| 		
 | |
| 		for bin in webnotes.conn.sql("""select * from tabBin bin where ifnull(item_code, '')!='' 
 | |
| 				and ifnull(warehouse, '') in (%s) and ifnull(actual_qty, 0) != 0
 | |
| 				and (select company from tabWarehouse where name=bin.warehouse)=%s""" %
 | |
| 				(', '.join(['%s']*len(warehouse_map)), '%s'), 
 | |
| 				(warehouse_map.keys() + [company[0]]), as_dict=1):
 | |
| 			item_details = item_map[bin.item_code]
 | |
| 			new_warehouse = warehouse_map[bin.warehouse].get("fixed_asset_warehouse") \
 | |
| 				if cstr(item_details.is_asset_item) == "Yes" \
 | |
| 				else warehouse_map[bin.warehouse].get("current_asset_warehouse")
 | |
| 				
 | |
| 			if item_details.has_serial_no == "Yes":
 | |
| 				serial_no = "\n".join([d[0] for d in webnotes.conn.sql("""select name 
 | |
| 					from `tabSerial No` where item_code = %s and warehouse = %s 
 | |
| 					and status in ('Available', 'Sales Returned')""", 
 | |
| 					(bin.item_code, bin.warehouse))])
 | |
| 			else:
 | |
| 				serial_no = None
 | |
| 			
 | |
| 			stock_entry.append({
 | |
| 				"doctype": "Stock Entry Detail",
 | |
| 				"parentfield": "mtn_details",
 | |
| 				"s_warehouse": bin.warehouse,
 | |
| 				"t_warehouse": new_warehouse,
 | |
| 				"item_code": bin.item_code,
 | |
| 				"description": item_details.description,
 | |
| 				"qty": bin.actual_qty,
 | |
| 				"transfer_qty": bin.actual_qty,
 | |
| 				"uom": item_details.stock_uom,
 | |
| 				"stock_uom": item_details.stock_uom,
 | |
| 				"conversion_factor": 1,
 | |
| 				"expense_account": expense_account,
 | |
| 				"cost_center": cost_center,
 | |
| 				"serial_no": serial_no
 | |
| 			})
 | |
| 		
 | |
| 		webnotes.bean(stock_entry).insert()
 | |
| 		
 | |
| def get_warehosue_map():
 | |
| 	return {
 | |
| 		"MAHAPE": {
 | |
| 			"current_asset_warehouse": "Mahape-New - NISL",
 | |
| 			"fixed_asset_warehouse": ""
 | |
| 		},
 | |
| 		"DROP SHIPMENT": {
 | |
| 			"current_asset_warehouse": "Drop Shipment-New - NISL",
 | |
| 			"fixed_asset_warehouse": ""
 | |
| 		},
 | |
| 		"TRANSIT": {
 | |
| 			"current_asset_warehouse": "Transit-New - NISL",
 | |
| 			"fixed_asset_warehouse": ""
 | |
| 		},
 | |
| 		"ASSET - MAHAPE": {
 | |
| 			"current_asset_warehouse": "",
 | |
| 			"fixed_asset_warehouse": "Assets-New - NISL"
 | |
| 		}
 | |
| 	} |