2013-10-04 07:24:16 +00:00
|
|
|
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
|
|
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import webnotes
|
2013-10-04 09:00:33 +00:00
|
|
|
from webnotes.utils import nowdate, nowtime, cstr
|
2013-10-04 07:24:16 +00:00
|
|
|
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()
|
2013-10-04 09:00:33 +00:00
|
|
|
naming_series = "STE/13/"
|
|
|
|
|
2013-10-04 07:24:16 +00:00
|
|
|
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",
|
2013-10-04 09:00:33 +00:00
|
|
|
"fiscal_year": get_fiscal_year(nowdate())[0]
|
2013-10-04 07:24:16 +00:00
|
|
|
}]
|
|
|
|
expense_account = "Cost of Goods Sold - NISL"
|
|
|
|
cost_center = "Default CC Ledger - NISL"
|
|
|
|
|
2013-10-04 09:00:33 +00:00
|
|
|
for bin in webnotes.conn.sql("""select * from tabBin bin where ifnull(item_code, '')!=''
|
2013-10-08 11:41:33 +00:00
|
|
|
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):
|
2013-10-04 09:00:33 +00:00
|
|
|
item_details = item_map[bin.item_code]
|
2013-10-04 07:24:16 +00:00
|
|
|
new_warehouse = warehouse_map[bin.warehouse].get("fixed_asset_warehouse") \
|
2013-10-04 09:00:33 +00:00
|
|
|
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
|
2013-10-04 09:59:36 +00:00
|
|
|
from `tabSerial No` where item_code = %s and warehouse = %s
|
2013-10-08 11:41:33 +00:00
|
|
|
and status in ('Available', 'Sales Returned')""",
|
|
|
|
(bin.item_code, bin.warehouse))])
|
2013-10-04 09:00:33 +00:00
|
|
|
else:
|
|
|
|
serial_no = None
|
2013-10-04 07:24:16 +00:00
|
|
|
|
|
|
|
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,
|
2013-10-04 09:00:33 +00:00
|
|
|
"cost_center": cost_center,
|
|
|
|
"serial_no": serial_no
|
2013-10-04 07:24:16 +00:00
|
|
|
})
|
2013-10-04 09:00:33 +00:00
|
|
|
|
2013-10-04 07:24:16 +00:00
|
|
|
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": ""
|
|
|
|
},
|
2013-10-04 09:00:33 +00:00
|
|
|
"ASSET - MAHAPE": {
|
2013-10-04 07:24:16 +00:00
|
|
|
"current_asset_warehouse": "",
|
|
|
|
"fixed_asset_warehouse": "Assets-New - NISL"
|
|
|
|
}
|
|
|
|
}
|