Exemplo n.º 1
0
def calculate_next_due_date(periodicity,
                            start_date=None,
                            end_date=None,
                            last_completion_date=None,
                            next_due_date=None):
    if not start_date and not last_completion_date:
        start_date = dataent.utils.now()

    if last_completion_date and (last_completion_date > start_date
                                 or not start_date):
        start_date = last_completion_date
    if periodicity == 'Daily':
        next_due_date = add_days(start_date, 1)
    if periodicity == 'Weekly':
        next_due_date = add_days(start_date, 7)
    if periodicity == 'Monthly':
        next_due_date = add_months(start_date, 1)
    if periodicity == 'Yearly':
        next_due_date = add_years(start_date, 1)
    if periodicity == '2 Yearly':
        next_due_date = add_years(start_date, 2)
    if periodicity == 'Quarterly':
        next_due_date = add_months(start_date, 3)
    if end_date and (start_date >= end_date or last_completion_date >= end_date
                     or next_due_date):
        next_due_date = ""
    return next_due_date
Exemplo n.º 2
0
	def make_holiday_list(self):
		if not dataent.db.get_value("Holiday List", "Salary Structure Test Holiday List"):
			holiday_list = dataent.get_doc({
				"doctype": "Holiday List",
				"holiday_list_name": "Salary Structure Test Holiday List",
				"from_date": nowdate(),
				"to_date": add_years(nowdate(), 1),
				"weekly_off": "Sunday"
			}).insert()
			holiday_list.get_weekly_off_dates()
			holiday_list.save()
Exemplo n.º 3
0
def get_retirement_date(date_of_birth=None):
    ret = {}
    if date_of_birth:
        try:
            retirement_age = int(
                dataent.db.get_single_value("HR Settings", "retirement_age")
                or 60)
            dt = add_years(getdate(date_of_birth), retirement_age)
            ret = {'date_of_retirement': dt.strftime('%Y-%m-%d')}
        except ValueError:
            # invalid date
            ret = {}

    return ret
Exemplo n.º 4
0
def auto_create_fiscal_year():
    for d in dataent.db.sql(
            """select name from `tabFiscal Year` where year_end_date = date_add(current_date, interval 3 day)"""
    ):
        try:
            current_fy = dataent.get_doc("Fiscal Year", d[0])

            new_fy = dataent.copy_doc(current_fy, ignore_no_copy=False)

            new_fy.year_start_date = add_days(current_fy.year_end_date, 1)
            new_fy.year_end_date = add_years(current_fy.year_end_date, 1)

            start_year = cstr(new_fy.year_start_date.year)
            end_year = cstr(new_fy.year_end_date.year)
            new_fy.year = start_year if start_year == end_year else (
                start_year + "-" + end_year)
            new_fy.auto_created = 1

            new_fy.insert(ignore_permissions=True)
        except dataent.NameError:
            pass
Exemplo n.º 5
0
    def validate(self):
        if not self.member or not dataent.db.exists("Member", self.member):
            member_name = dataent.get_value('Member',
                                            dict(email=dataent.session.user))

            if not member_name:
                user = dataent.get_doc('User', dataent.session.user)
                member = dataent.get_doc(
                    dict(doctype='Member',
                         email=dataent.session.user,
                         membership_type=self.membership_type,
                         member_name=user.get_fullname())).insert(
                             ignore_permissions=True)
                member_name = member.name

            if self.get("__islocal"):
                self.member = member_name

        # get last membership (if active)
        last_membership = epaas.get_last_membership()

        # if person applied for offline membership
        if last_membership and not dataent.session.user == "Administrator":
            # if last membership does not expire in 30 days, then do not allow to renew
            if getdate(add_days(last_membership.to_date, -30)) > getdate(
                    nowdate()):
                dataent.throw(
                    _('You can only renew if your membership expires within 30 days'
                      ))

            self.from_date = add_days(last_membership.to_date, 1)
        elif dataent.session.user == "Administrator":
            self.from_date = self.from_date
        else:
            self.from_date = nowdate()

        self.to_date = add_years(self.from_date, 1)
Exemplo n.º 6
0
def get_timeline_data(doctype, name):
    '''returns timeline data for the past one year'''
    from dataent.desk.form.load import get_communication_data

    out = {}
    fields = 'date(creation), count(name)'
    after = add_years(None, -1).strftime('%Y-%m-%d')
    group_by = 'group by date(creation)'

    data = get_communication_data(doctype,
                                  name,
                                  fields=fields,
                                  after=after,
                                  group_by=group_by,
                                  as_dict=False)

    # fetch and append data from Activity Log
    data += dataent.db.sql("""select {fields}
		from `tabActivity Log`
		where reference_doctype="{doctype}" and reference_name="{name}"
		and status!='Success' and creation > {after}
		{group_by} order by creation desc
		""".format(doctype=dataent.db.escape(doctype),
             name=dataent.db.escape(name),
             fields=fields,
             group_by=group_by,
             after=after),
                           as_dict=False)

    timeline_items = dict(data)

    for date, count in iteritems(timeline_items):
        timestamp = get_timestamp(date)
        out.update({timestamp: count})

    return out