def test_time_log_on_holiday(self): prod_order = make_prod_order_test_record(item="_Test FG Item 2", qty=1, planned_start_date="2014-11-25 00:00:00", do_not_save=True) prod_order.set_production_order_operations() prod_order.save() prod_order.submit() time_log = frappe.get_doc({ "doctype": "Time Log", "for_manufacturing": 1, "production_order": prod_order.name, "operation": prod_order.operations[0].operation, "operation_id": prod_order.operations[0].name, "qty": 1, "activity_type": "_Test Activity Type", "from_time": "2013-02-01 10:00:00", "to_time": "2013-02-01 20:00:00", "workstation": "_Test Workstation 1" }) self.assertRaises(WorkstationHolidayError , time_log.save) time_log.update({ "from_time": "2013-02-02 09:00:00", "to_time": "2013-02-02 20:00:00" }) self.assertRaises(NotInWorkingHoursError , time_log.save) time_log.from_time= "2013-02-02 10:30:00" time_log.save() time_log.submit() time_log.cancel()
def test_time_log_on_holiday(self): prod_order = make_prod_order_test_record(item="_Test FG Item 2", qty=1, planned_start_date=now(), do_not_save=True) prod_order.set_production_order_operations() prod_order.save() prod_order.submit() time_log = make_time_log_test_record( from_time="2013-02-01 10:00:00", to_time="2013-02-01 20:00:00", for_manufacturing=1, production_order=prod_order.name, qty=1, operation=prod_order.operations[0].operation, operation_id=prod_order.operations[0].name, workstation="_Test Workstation 1", do_not_save=True) self.assertRaises(WorkstationHolidayError, time_log.save) time_log.update({ "from_time": "2013-02-02 09:00:00", "to_time": "2013-02-02 20:00:00" }) self.assertRaises(NotInWorkingHoursError, time_log.save) time_log.from_time = "2013-02-02 10:30:00" time_log.save() time_log.submit() time_log.cancel()
def test_production_order_status(self): prod_order = make_prod_order_test_record(item= "_Test FG Item 2", qty= 1, do_not_submit= True) prod_order.set_production_order_operations() prod_order.save() time_log = make_time_log_test_record(for_manufacturing= 1, production_order= prod_order.name, qty= 1, employee= "_T-Employee-0003", do_not_save= True, simulate=1) self.assertRaises(NotSubmittedError, time_log.save)
def work(): frappe.set_user(frappe.db.get_global('demo_manufacturing_user')) from erpnext.projects.doctype.timesheet.timesheet import OverlapError ppt = frappe.get_doc("Production Planning Tool", "Production Planning Tool") ppt.company = erpnext.get_default_company() ppt.use_multi_level_bom = 1 ppt.get_items_from = "Sales Order" ppt.purchase_request_for_warehouse = "Stores - WPL" ppt.run_method("get_open_sales_orders") ppt.run_method("get_items") ppt.run_method("raise_production_orders") ppt.run_method("raise_material_requests") frappe.db.commit() # submit production orders for pro in frappe.db.get_values("Production Order", {"docstatus": 0}, "name"): b = frappe.get_doc("Production Order", pro[0]) b.wip_warehouse = "Work in Progress - WPL" b.submit() frappe.db.commit() # submit material requests for pro in frappe.db.get_values("Material Request", {"docstatus": 0}, "name"): b = frappe.get_doc("Material Request", pro[0]) b.submit() frappe.db.commit() # stores -> wip if random.random() < 0.3: for pro in query_report.run("Open Production Orders")["result"][:how_many("Stock Entry for WIP")]: make_stock_entry_from_pro(pro[0], "Material Transfer for Manufacture") # wip -> fg if random.random() < 0.3: for pro in query_report.run("Production Orders in Progress")["result"][:how_many("Stock Entry for FG")]: make_stock_entry_from_pro(pro[0], "Manufacture") for bom in frappe.get_all('BOM', fields=['item'], filters = {'with_operations': 1}): pro_order = make_prod_order_test_record(item=bom.item, qty=2, source_warehouse="Stores - WPL", wip_warehouse = "Work in Progress - WPL", fg_warehouse = "Stores - WPL", company = erpnext.get_default_company(), stock_uom = frappe.db.get_value('Item', bom.item, 'stock_uom'), planned_start_date = frappe.flags.current_date) # submit time logs for timesheet in frappe.get_all("Timesheet", ["name"], {"docstatus": 0, "production_order": ("!=", ""), "to_time": ("<", frappe.flags.current_date)}): timesheet = frappe.get_doc("Timesheet", timesheet.name) try: timesheet.submit() frappe.db.commit() except OverlapError: pass except WorkstationHolidayError: pass
def test_production_order_status(self): prod_order = make_prod_order_test_record(item="_Test FG Item 2", qty=1, do_not_submit=True) prod_order.set_production_order_operations() prod_order.save() time_log = frappe.get_doc({ "doctype": "Time Log", "for_manufacturing": 1, "production_order": prod_order.name, "qty": 1, "from_time": "2014-12-26 00:00:00", "to_time": "2014-12-26 00:00:00" }) self.assertRaises(NotSubmittedError, time_log.save)
def test_time_log_on_holiday(self): prod_order = make_prod_order_test_record(item= "_Test FG Item 2", qty= 1, planned_start_date= now(), do_not_save= True) prod_order.set_production_order_operations() prod_order.save() prod_order.submit() time_log = make_time_log_test_record(from_time= "2013-02-01 10:00:00", to_time= "2013-02-01 20:00:00", for_manufacturing= 1, production_order= prod_order.name, qty= 1, operation= prod_order.operations[0].operation, operation_id= prod_order.operations[0].name, workstation= "_Test Workstation 1", do_not_save= True) self.assertRaises(WorkstationHolidayError , time_log.save) time_log.update({ "from_time": "2013-02-02 09:00:00", "to_time": "2013-02-02 20:00:00" }) self.assertRaises(NotInWorkingHoursError , time_log.save) time_log.from_time= "2013-02-02 10:30:00" time_log.save() time_log.submit() time_log.cancel()