Example #1
0
def execute():
    frappe.reload_doc('projects', 'doctype', 'timesheet')

    for data in frappe.get_all('Time Log',
                               fields=["*"],
                               filters=[["docstatus", "<", "2"]]):
        if data.task:
            company = frappe.db.get_value("Task", data.task, "company")
        elif data.production_order:
            company = frappe.db.get_value("Prodction Order",
                                          data.production_order, "company")
        else:
            company = frappe.db.get_single_value('Global Defaults',
                                                 'default_company')

        time_sheet = make_timesheet(data.production_order)
        args = get_timelog_data(data)
        add_timesheet_detail(time_sheet, args)
        time_sheet.note = data.note
        time_sheet.company = company

        time_sheet.set_status()
        time_sheet.update_cost()
        time_sheet.calculate_total_amounts()
        time_sheet.flags.ignore_validate = True
        time_sheet.save(ignore_permissions=True)

        # To ignore validate_mandatory_fields function
        if data.docstatus == 1:
            time_sheet.db_set("docstatus", 1)
            for d in time_sheet.get("time_logs"):
                d.db_set("docstatus", 1)
            time_sheet.update_production_order(time_sheet.name)
            time_sheet.update_task_and_project()
def execute():
	frappe.reload_doc('projects', 'doctype', 'timesheet')
	if not frappe.db.table_exists("Time Log"):
		return

	for data in frappe.db.sql("select * from `tabTime Log` where docstatus < 2", as_dict=1):
		if data.task:
			company = frappe.db.get_value("Task", data.task, "company")
		elif data.production_order:
			company = frappe.db.get_value("Prodction Order", data.production_order, "company")
		else:
			company = frappe.db.get_single_value('Global Defaults', 'default_company')
		
		time_sheet = make_timesheet(data.production_order)
		args = get_timelog_data(data)
		add_timesheet_detail(time_sheet, args)
		time_sheet.employee = data.employee
		time_sheet.note = data.note
		time_sheet.company = company

		time_sheet.set_status()
		time_sheet.set_dates()
		time_sheet.update_cost()
		time_sheet.calculate_total_amounts()
		time_sheet.flags.ignore_validate = True
		time_sheet.save(ignore_permissions=True)

		# To ignore validate_mandatory_fields function
		if data.docstatus == 1:
			time_sheet.db_set("docstatus", 1)
			for d in time_sheet.get("time_logs"):
				d.db_set("docstatus", 1)
			time_sheet.update_production_order(time_sheet.name)
			time_sheet.update_task_and_project()
    def test_make_time_sheet(self):
        from erpnext.manufacturing.doctype.production_order.production_order import make_timesheet
        prod_order = make_prod_order_test_record(item="_Test FG Item 2",
                                                 planned_start_date=now(),
                                                 qty=1,
                                                 do_not_save=True)

        prod_order.set_production_order_operations()
        prod_order.insert()
        prod_order.submit()

        d = prod_order.operations[0]
        d.completed_qty = flt(d.completed_qty)

        name = frappe.db.get_value('Timesheet',
                                   {'production_order': prod_order.name},
                                   'name')
        time_sheet_doc = frappe.get_doc('Timesheet', name)
        self.assertEqual(prod_order.company, time_sheet_doc.company)
        time_sheet_doc.submit()

        self.assertEqual(prod_order.name, time_sheet_doc.production_order)
        self.assertEqual(
            (prod_order.qty - d.completed_qty),
            sum([d.completed_qty for d in time_sheet_doc.time_logs]))

        manufacturing_settings = frappe.get_doc({
            "doctype":
            "Manufacturing Settings",
            "allow_production_on_holidays":
            0
        })

        manufacturing_settings.save()

        prod_order.load_from_db()
        self.assertEqual(prod_order.operations[0].status, "Completed")
        self.assertEqual(prod_order.operations[0].completed_qty,
                         prod_order.qty)

        self.assertEqual(prod_order.operations[0].actual_operation_time, 60)
        self.assertEqual(prod_order.operations[0].actual_operating_cost, 100)

        time_sheet_doc1 = make_timesheet(prod_order.name, prod_order.company)
        self.assertEqual(len(time_sheet_doc1.get('time_logs')), 0)

        time_sheet_doc.cancel()

        prod_order.load_from_db()
        self.assertEqual(prod_order.operations[0].status, "Pending")
        self.assertEqual(flt(prod_order.operations[0].completed_qty), 0)

        self.assertEqual(flt(prod_order.operations[0].actual_operation_time),
                         0)
        self.assertEqual(flt(prod_order.operations[0].actual_operating_cost),
                         0)
def execute():
	frappe.reload_doc('projects', 'doctype', 'timesheet')

	for data in frappe.get_all('Time Log', fields=["*"],
		filters = [["docstatus", "<", "2"]]):
		time_sheet = make_timesheet(data.production_order)
		args = get_timelog_data(data)
		add_timesheet_detail(time_sheet, args)
		time_sheet.docstatus = data.docstatus
		time_sheet.note = data.note
		time_sheet.company = frappe.db.get_single_value('Global Defaults', 'default_company')
		time_sheet.save(ignore_permissions=True)
def execute():
    frappe.reload_doc('projects', 'doctype', 'timesheet')

    for data in frappe.get_all('Time Log',
                               fields=["*"],
                               filters=[["docstatus", "<", "2"]]):
        time_sheet = make_timesheet(data.production_order)
        args = get_timelog_data(data)
        add_timesheet_detail(time_sheet, args)
        time_sheet.docstatus = data.docstatus
        time_sheet.note = data.note
        time_sheet.company = frappe.db.get_single_value(
            'Global Defaults', 'default_company')
        time_sheet.save(ignore_permissions=True)
	def test_make_time_sheet(self):
		from erpnext.manufacturing.doctype.production_order.production_order import make_timesheet
		prod_order = make_prod_order_test_record(item="_Test FG Item 2",
			planned_start_date=now(), qty=1, do_not_save=True)

		prod_order.set_production_order_operations()
		prod_order.insert()
		prod_order.submit()
		
		d = prod_order.operations[0]
		d.completed_qty = flt(d.completed_qty)

		name = frappe.db.get_value('Timesheet', {'production_order': prod_order.name}, 'name')
		time_sheet_doc = frappe.get_doc('Timesheet', name)
		self.assertEqual(prod_order.company, time_sheet_doc.company)
		time_sheet_doc.submit()
		

		self.assertEqual(prod_order.name, time_sheet_doc.production_order)
		self.assertEqual((prod_order.qty - d.completed_qty),
			sum([d.completed_qty for d in time_sheet_doc.time_logs]))

		manufacturing_settings = frappe.get_doc({
			"doctype": "Manufacturing Settings",
			"allow_production_on_holidays": 0
		})

		manufacturing_settings.save()

		prod_order.load_from_db()
		self.assertEqual(prod_order.operations[0].status, "Completed")
		self.assertEqual(prod_order.operations[0].completed_qty, prod_order.qty)

		self.assertEqual(prod_order.operations[0].actual_operation_time, 60)
		self.assertEqual(prod_order.operations[0].actual_operating_cost, 6000)
		
		time_sheet_doc1 = make_timesheet(prod_order.name, prod_order.company)
		self.assertEqual(len(time_sheet_doc1.get('time_logs')), 0)

		time_sheet_doc.cancel()

		prod_order.load_from_db()
		self.assertEqual(prod_order.operations[0].status, "Pending")
		self.assertEqual(flt(prod_order.operations[0].completed_qty), 0)

		self.assertEqual(flt(prod_order.operations[0].actual_operation_time), 0)
		self.assertEqual(flt(prod_order.operations[0].actual_operating_cost), 0)
Example #7
0
def execute():
    frappe.reload_doc('projects', 'doctype', 'task')
    frappe.reload_doc('projects', 'doctype', 'timesheet')
    if not frappe.db.table_exists("Time Log"):
        return

    for data in frappe.db.sql("select * from `tabTime Log`", as_dict=1):
        if data.task:
            company = frappe.db.get_value("Task", data.task, "company")
        elif data.production_order:
            company = frappe.db.get_value("Prodction Order",
                                          data.production_order, "company")
        else:
            company = frappe.db.get_single_value('Global Defaults',
                                                 'default_company')

        time_sheet = make_timesheet(data.production_order, company)
        args = get_timelog_data(data)
        add_timesheet_detail(time_sheet, args)
        if data.docstatus == 2:
            time_sheet.docstatus = 0
        else:
            time_sheet.docstatus = data.docstatus
        time_sheet.employee = data.employee
        time_sheet.note = data.note
        time_sheet.company = company

        time_sheet.set_status()
        time_sheet.set_dates()
        time_sheet.update_cost()
        time_sheet.calculate_total_amounts()
        time_sheet.flags.ignore_validate = True
        time_sheet.flags.ignore_links = True
        time_sheet.save(ignore_permissions=True)

        # To ignore validate_mandatory_fields function
        if data.docstatus == 1:
            time_sheet.db_set("docstatus", 1)
            for d in time_sheet.get("time_logs"):
                d.db_set("docstatus", 1)
            time_sheet.update_production_order(time_sheet.name)
            time_sheet.update_task_and_project()
        if data.docstatus == 2:
            time_sheet.db_set("docstatus", 2)
            for d in time_sheet.get("time_logs"):
                d.db_set("docstatus", 2)