Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 4
0
	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)
Esempio n. 5
0
	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
Esempio n. 6
0
	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
Esempio n. 7
0
	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)
Esempio n. 8
0
	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
Esempio n. 9
0
	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
Esempio n. 10
0
	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
Esempio n. 11
0
 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
Esempio n. 12
0
	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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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
Esempio n. 16
0
	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)
Esempio n. 17
0
	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)
Esempio n. 18
0
	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)
Esempio n. 19
0
 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)
Esempio n. 20
0
	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)
Esempio n. 21
0
 def autoname(self):
     from frappe.model.naming import set_name_by_naming_series
     set_name_by_naming_series(self)
Esempio n. 22
0
 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)
Esempio n. 23
0
	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)
Esempio n. 24
0
	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)
Esempio n. 26
0
	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)
Esempio n. 27
0
	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