diff --git a/manufacturing_overview/manufacturing_overview/api.py b/manufacturing_overview/manufacturing_overview/api.py index 03b02d6..bd24030 100644 --- a/manufacturing_overview/manufacturing_overview/api.py +++ b/manufacturing_overview/manufacturing_overview/api.py @@ -2,11 +2,8 @@ import frappe from functools import reduce from datetime import date -from erpnext.manufacturing.doctype.bom.bom import get_bom_items, BOM, get_bom_items_as_dict -from erpnext.stock.get_item_details import get_default_bom - -frappe.utils.logger.set_log_level("DEBUG") -logger = frappe.logger("manufacturing_overview", allow_site=True) +# frappe.utils.logger.set_log_level("DEBUG") +# logger = frappe.logger("manufacturing_overview", allow_site=True) #logger.debug(f"String") @@ -50,7 +47,7 @@ def generateProductionOverviewCacheData(): `tabSales Order Item`.qty, `tabSales Order Item`.actual_qty, `tabSales Order Item`.delivered_qty, - `tabSales Order Item`.delivery_date, + `tabSales Order Item`.delivery_date AS date, `tabSales Order Item`.item_code, `tabSales Order Item`.work_order_qty, `tabSales Order Item`.parent, @@ -66,19 +63,19 @@ def generateProductionOverviewCacheData(): status = 'To Deliver and Bill' and item_group = "Produkte" ORDER BY - delivery_date, item_code, name + date, item_code, name """, as_dict=1) currentWarehouseQtyList = [] - for soItem in salesOrderItems: + for soItem in salesOrderItems: soItem.currentWarehouseQty = calculateCurrentWarehouseQty( soItem.item_code, soItem.qty, currentWarehouseQtyList) soItem.totalWarehouseQty = getAmountInWarehouses(soItem.item_code) - soItem.due_in = getDueInDays(soItem.delivery_date) + soItem.due_in = getDueInDays(soItem.date) soItem.customer = shortenCustomerName(frappe.get_value( 'Sales Order', soItem.parent, 'customer')) @@ -104,6 +101,44 @@ def generateProductionOverviewCacheData(): return salesOrderItems +def generatePurchaseOrderOverviewCacheData(): + purchaseOrderItems = frappe.db.sql( + """ + SELECT + `tabPurchase Order Item`.name, + `tabPurchase Order Item`.item_name, + `tabPurchase Order Item`.item_group, + `tabPurchase Order Item`.qty, + `tabPurchase Order Item`.schedule_date AS date, + `tabPurchase Order Item`.item_code, + `tabPurchase Order Item`.parent, + `tabPurchase Order Item`.fg_item, + `tabPurchase Order`.status as parentStatus + FROM + `tabPurchase Order Item` + INNER JOIN `tabPurchase Order` + ON + `tabPurchase Order Item`.parent = `tabPurchase Order`.name + WHERE + status = 'To Receive and Bill' + ORDER BY + date, item_code, name + """, as_dict=1) + + for poItem in purchaseOrderItems: + poItem = formatDate(poItem) + poItem.customer = frappe.get_value("Purchase Order", poItem.parent, 'supplier_name') + + poItem.fg_item_name = frappe.get_value("Item", poItem.fg_item, 'item_name') + poItem.direct_po = poItem.parent + + poItem.link = '/app/purchase-order/' + poItem.parent + + poItem.status = 'Unknown' + + return purchaseOrderItems + + def calculateCurrentWarehouseQty(item_code, qty, currentWarehouseQtyList): for warehouseQty in currentWarehouseQtyList: @@ -119,8 +154,8 @@ def calculateCurrentWarehouseQty(item_code, qty, currentWarehouseQtyList): def formatDate(item): - item.delivery_date = frappe.utils.formatdate( - item.delivery_date, 'dd.MM.yyyy') + item.date = frappe.utils.formatdate( + item.date, 'dd.MM.yyyy') return item @@ -144,36 +179,16 @@ def getSalesorderOverviewList(): if salesOrderItems is None: salesOrderItems = generateProductionOverviewCacheData() - frappe.cache().set_value('production_overview', salesOrderItems, expires_in_sec=1) + frappe.cache().set_value('production_overview', salesOrderItems,expires_in_sec=600) return salesOrderItems @frappe.whitelist() -def get_bom_tree(item_code): - bom_name = get_default_bom(item_code) - root_bom = frappe.get_doc("BOM", bom_name) - if root_bom != None: - bom_tree = BOM.traverse_tree(root_bom) # Gets all BOM in correct order +def getPurchaseOrderOverviewList(): + purchaseOrderItems = frappe.cache().get_value('purchaseOrder_items', expires=True) - bomlist = [] + if purchaseOrderItems is None: + purchaseOrderItems = generatePurchaseOrderOverviewCacheData() + frappe.cache().set_value('purchaseOrder_items', purchaseOrderItems, expires_in_sec=600) - for bom_item in bom_tree: - bom = frappe.get_doc("BOM", bom_item) - bomlist.append(bom) - # item = frappe.get_doc("Item", bom) - - - # current_bom_item = frappe.get_doc("BOM", 'BOM-0815-3-001').get_tree_representation() - # bom_items = get_bom_items("BOM-0815-3-001", "Hans Prothmann GmbH") #Fetches all raw materials - - # routing = BOM.get_routing(frm) #Gets alls operations - - # test = get_bom_items_as_dict(bom_name, "Hans Prothmann GmbH") # Gets all rm items as a dict - - # bomtreeitem = BOM.get_tree_representation(bom_name) - logger.debug(bomlist) - - - - # logger.debug(bomtree) - return bomlist + return purchaseOrderItems \ No newline at end of file diff --git a/manufacturing_overview/public/js/manufacturing_overview_desk.vue b/manufacturing_overview/public/js/manufacturing_overview_desk.vue index d467121..6babebf 100644 --- a/manufacturing_overview/public/js/manufacturing_overview_desk.vue +++ b/manufacturing_overview/public/js/manufacturing_overview_desk.vue @@ -1,23 +1,96 @@