def autoname(self): cust_master_name = frappe.defaults.get_global_default( "cust_master_name") if cust_master_name == "Customer Name": self.name = self.get_customer_name() elif cust_master_name == "Naming Series": set_name_by_naming_series(self) else: self.name = set_name_from_naming_options( frappe.get_meta(self.doctype).autoname, self)
def autoname(self): supp_master_name = frappe.defaults.get_global_default( 'supp_master_name') if supp_master_name == 'Supplier Name': self.name = self.supplier_name elif supp_master_name == 'Naming Series': set_name_by_naming_series(self) else: self.name = set_name_from_naming_options( frappe.get_meta(self.doctype).autoname, self)
def autoname(self): from frappe.model.naming import set_name_by_naming_series if self.student_admission: naming_series = frappe.db.get_value( 'Student Admission', self.student_admission, 'naming_series_for_student_applicant') if naming_series: self.naming_series = naming_series set_name_by_naming_series(self)
def autoname(self): from frappe.model.naming import set_name_by_naming_series if self.student_admission: naming_series = frappe.db.get_value('Student Admission', self.student_admission, 'naming_series_for_student_applicant') print(naming_series) if naming_series: self.naming_series = naming_series set_name_by_naming_series(self)
def autoname(self): naming_method = frappe.db.get_value("Education Settings", None, "instructor_created_by") if not naming_method: frappe.throw(_("Please setup Instructor Naming System in Education > Education Settings")) else: if naming_method == 'Naming Series': set_name_by_naming_series(self) elif naming_method == 'Employee Number': if not self.employee: frappe.throw(_("Please select Employee")) self.name = self.employee elif naming_method == 'Full Name': self.name = self.instructor_name
def autoname(self): if frappe.db.get_default("item_naming_by") == "Naming Series": if self.variant_of: if not self.item_code: template_item_name = frappe.db.get_value("Item", self.variant_of, "item_name") self.item_code = make_variant_item_code(self.variant_of, template_item_name, self) else: from frappe.model.naming import set_name_by_naming_series set_name_by_naming_series(self) self.item_code = self.name self.item_code = strip(self.item_code) self.name = self.item_code
def autoname(self): from frappe.model.naming import set_name_by_naming_series if self.student_admission: if self.program: student_admission = get_student_admission_data(self.student_admission, self.program) if student_admission: naming_series = student_admission.get("applicant_naming_series") else: frappe.throw(_("Select the program first")) if naming_series: self.naming_series = naming_series set_name_by_naming_series(self)
def autoname(self): naming_method = frappe.db.get_value("HR Settings", None, "emp_created_by") if not naming_method: throw(_("Please setup Employee Naming System in Human Resource > HR Settings")) else: if naming_method == 'Naming Series': set_name_by_naming_series(self) elif naming_method == 'Employee Number': self.name = self.employee_number elif naming_method == 'Full Name': self.set_employee_name() self.name = self.employee_name self.employee = self.name
def autoname(self): naming_method = frappe.db.get_value("HR Settings", None, "emp_created_by") if not naming_method: throw(_("Please setup Employee Naming System in Human Resource > HR Settings")) else: if naming_method == 'Naming Series': set_name_by_naming_series(self) elif naming_method == 'Employee Number': self.name = self.employee_number elif naming_method == 'Full Name': self.set_employee_name() self.name = self.employee_name self.employee = self.name
def autoname(self): if frappe.db.get_default("item_naming_by") == "Naming Series": if self.variant_of: if not self.item_code: template_item_name = frappe.db.get_value("Item", self.variant_of, "item_name") self.item_code = make_variant_item_code(self.variant_of, template_item_name, self) else: from frappe.model.naming import set_name_by_naming_series set_name_by_naming_series(self) self.item_code = self.name elif not self.item_code: msgprint(_("Item Code is mandatory because Item is not automatically numbered"), raise_exception=1) self.item_code = strip(self.item_code) self.name = self.item_code
def autoname(self): naming_method = frappe.db.get_value("Education Settings", None, "instructor_created_by") if not naming_method: frappe.throw( _("Please setup Instructor Naming System in Education > Education Settings" )) else: if naming_method == 'Naming Series': set_name_by_naming_series(self) elif naming_method == 'Employee Number': if not self.employee: frappe.throw(_("Please select Employee")) self.name = self.employee elif naming_method == 'Full Name': self.name = self.instructor_name
def autoname(self): from frappe.model.naming import set_name_by_naming_series if self.student_admission: naming_series = None if self.program: # set the naming series from the student admission if provided. student_admission = get_student_admission_data(self.student_admission, self.program) if student_admission: naming_series = student_admission.get("applicant_naming_series") else: naming_series = None else: frappe.throw(_("Select the program first")) if naming_series: self.naming_series = naming_series set_name_by_naming_series(self)
def autoname(self): if self.contract_series == "Customer": series = "Con-{0}-{1}-{2}-".format(self.issue_date, "C", self.customer_name) self.naming_series = series elif self.contract_series == "Supplier": series = "Con-{0}-{1}-{2}-".format(self.issue_date, "S", self.supplier_name) self.naming_series = series elif self.contract_series == "Employee": series = "Con-{0}-{1}-{2}-".format(self.issue_date, "E", self.employee_name) self.naming_series = series elif self.contract_series == "Sales Partner": series = "Con-{0}-{1}-{2}-".format(self.issue_date, "SP", self.employee_name) self.naming_series = series set_name_by_naming_series(self)
def autoname(self): if frappe.db.get_single_value("Selling Settings", "contract_naming_by") == "Naming Series": set_name_by_naming_series(self) else: name = self.party_name if self.contract_template: name = f"{name} - {self.contract_template} Agreement" # If identical, append contract name with the next number in the iteration if frappe.db.exists("Contract", name): count = frappe.db.count( "Contract", filters={ "name": ("like", f"%{name}%"), }, ) name = f"{name} - {count}" self.name = _(name)
def update_leave_quota(self, year, month, employee_ids): errors = list() if len(employee_ids) == 0: return False _df_start_time = get_config_by_name("default_shift_start_time", "09:00:00") _df_end_time = get_config_by_name("default_shift_end_time", "18:00:00") _sql = """ SELECT `eap`.*, SUM(eap.penalty) AS `calculated_val`, app.name as processed_id, `apr`.*, `emp`.`department`, `emp`.`employee_name`, `emp`.`date_of_joining`, HOUR(TIMEDIFF( if(shift.end_time IS NOT NULL,shift.end_time, "{3}"), if(shift.start_time IS NOT NULL,shift.start_time, "{4}") )) as working_hours FROM `tabEmployee Attendance Penalties` AS `eap` INNER JOIN `tabAttendance Policy Rules` AS `apr` ON eap.attendance_policy_rules = apr.name INNER JOIN `tabEmployee` AS `emp` ON eap.employee = emp.employee LEFT JOIN `tabShift Type` as shift ON shift.name = emp.shift_type LEFT JOIN `tabAttendance Penalties Processed` app on app.employee = emp.employee AND app.month = eap.month AND app.year = eap.year WHERE (eap.year = '{0}' AND eap.month = '{1}' AND eap.employee IN ({2})) GROUP BY `eap`.`employee` """.format(year, month, "'" + "','".join(employee_ids) + "'", _df_end_time, _df_start_time) employee_list = frappe.db.sql(_sql, as_dict=True) date_start = datetime.today() from_date = posting_date = str_to_date(date_start, "%Y-%m-%d") month_start_date = str_to_date(datetime(int(year), int(month), 01),'%Y-%m-%d') for emp in employee_list: penalty_min = emp["calculated_val"] penalty_days = round((penalty_min/60) / int(emp["working_hours"]) , 2) response = self.create_earned_leave_quota(emp["employee"]) if(response): errors.append("{0} ---> {1}.".format(response,emp["employee"])) continue if emp["policy_multiplier"] > 0: _itr = 20 date_of_joining = str_to_date(emp["date_of_joining"],'%Y-%m-%d') if(date_of_joining > month_start_date): month_start_date = date_of_joining while penalty_days > 0 and _itr > 0: leaves = self.get_prioritized_pending_leaves(emp["employee"], month_start_date) if bool(leaves): _quota = 0 if leaves["remaining_leaves"] <= 0 : break elif leaves["remaining_leaves"] > penalty_days: _quota = penalty_days penalty_days = 0 else: # if remaining leaves < penalty days _quota = leaves["remaining_leaves"] penalty_days = penalty_days - leaves["remaining_leaves"] to_date = datetime.strftime(month_start_date + timedelta(days=math.ceil(_quota) -1), "%Y-%m-%d") try : leave_application = frappe.get_doc({"doctype" : "Leave Application"}) set_name_by_naming_series(leave_application) leave_approver = get_report_to(emp["employee"],True) _sql = """ INSERT INTO `tabLeave Application` (name, employee, employee_name, from_date, to_date, status, total_leave_days, docstatus, leave_type, description, department, leave_balance, follow_via_email, leave_approver, posting_date, creation, modified) VALUES ("{}", "{}", "{}", "{}", "{}", "Approved", "{}", 1, "{}", "Penalty Deduction", "{}", "{}", 0, "{}", "{}", NOW(), NOW() ) """.format(leave_application.name, emp["employee"], emp["employee_name"], month_start_date, to_date, _quota, leaves["leave_type"], emp["department"], leaves["leave_balance"],leave_approver ,posting_date) frappe.db.sql(_sql) except Exception as err: frappe.log_error(err) errors.append("{0} ---> {1}.".format(_("Unable to update quota"),emp["employee"])) break try : frappe.get_doc({ "doctype" : "Employee Penalty Leaves", "leave_application" : leave_application.name, "attendance_penalties_processed" : emp["processed_id"] }).submit() except Exception as err: frappe.log_error(err) errors.append("{0} ---> {1}.".format(_("Unable to log quota updation"),emp["employee"])) break else: errors.append("{0} ---> {1}.".format(_("didn't find any leave to deduct quota"),emp["employee"])) break _itr -= 1 else: reward_minutes = emp["unit_value_to"] - emp["value"] reward_days = round(float(reward_minutes/60) / int(emp["working_hours"]) , 2) start_date, end_date = get_monthly_diff_dates() earned_leaves = get_leave_allocation_detail(emp["employee"], "Earned Leave", start_date, end_date) if len(earned_leaves) > 0: try : leave_allocation = frappe.get_doc("Leave Allocation", earned_leaves[0]["name"]) leave_allocation_log = frappe.get_doc({ "doctype" : "Leave Allocation Log", }) leave_allocation_log.total_leaves_allocated = leave_allocation.total_leaves_allocated leave_allocation_log.employee = leave_allocation.employee leave_allocation_log.leave_type = leave_allocation.leave_type leave_allocation_log.to_date = leave_allocation.to_date leave_allocation_log.from_date = leave_allocation.from_date leave_allocation_log.insert() leave_allocation.update({"new_leaves_allocated": float(reward_days) + float(earned_leaves[0]["total_leaves_allocated"])}) leave_allocation.flags.ignore_permissions = True leave_allocation.save() except Exception as err: errors.append("{0} ---> {1}.".format(_("Unable to update quota"),emp["employee"])) return errors
def autoname(self): patient_name_by = frappe.db.get_single_value('Healthcare Settings', 'patient_name_by') if patient_name_by == 'Patient Name': self.name = self.get_patient_name() else: set_name_by_naming_series(self)
def autoname(self): supp_master_name = frappe.defaults.get_global_default('supp_master_name') if supp_master_name == 'Supplier Name': self.name = self.supplier_name else: set_name_by_naming_series(self)
def autoname(self): if frappe.defaults.get_global_default('campaign_naming_by') != 'Naming Series': self.name = self.campaign_name else: set_name_by_naming_series(self)
def autoname(self): if frappe.defaults.get_global_default( 'campaign_naming_by') != 'Naming Series': self.name = self.campaign_name else: set_name_by_naming_series(self)
def autoname(self): patient_master_name = frappe.defaults.get_global_default('patient_master_name') if patient_master_name == 'Patient Name': self.name = self.get_patient_name() else: set_name_by_naming_series(self)
def autoname(self): from frappe.model.naming import set_name_by_naming_series set_name_by_naming_series(self)
def autoname(self): if frappe.defaults.get_global_default( "campaign_naming_by") != "Naming Series": self.name = self.campaign_name else: set_name_by_naming_series(self)
def autoname(self): supp_master_name = frappe.defaults.get_global_default('supp_master_name') if supp_master_name == 'Supplier Name': self.name = self.supplier_name else: set_name_by_naming_series(self)
def autoname(self): cust_master_name = frappe.defaults.get_global_default('cust_master_name') if cust_master_name == 'Customer Name': self.name = self.get_customer_name() else: set_name_by_naming_series(self)
def autoname(self, method): set_name_by_naming_series(self)
def autoname(self): cust_master_name = frappe.defaults.get_global_default('cust_master_name') if cust_master_name == 'Customer Name': self.name = self.get_customer_name() else: set_name_by_naming_series(self)
def autoname(self): project_naming_by = frappe.defaults.get_global_default('project_naming_by') if project_naming_by == 'Naming Series': set_name_by_naming_series(self) else: self.name = self.project_name