无法使用odoo11在薪资规则中获取日期对象

2024-09-23 16:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在这些对象中定义一个将根据date_to和date_from But计算员工工资的薪资规则。我只能有几天。通过使用天数,我可以从中获得工作日。我无法在那里得到一个月一年的时间。在

datej = str(payslip.date_to)
datek = str(payslip.date_from)
dj = datej[-2:]
dk = datek[-2:]
working_days=dj-dk
one_daySalary=contract.wage/30
salary=working_days*one_daySalary
result = salary

我只能按每月固定的30天计算工资。在


Tags: to对象fromdatedjdaysoneworking
3条回答

我发现这个月工资条名称。然后我简单地尝试了是否使用该工资条名称来表示月份,但在这个解决方案中,我们必须强制用户不要更改工资条名称模式。为了达到这个目的,我把工资单的名字改为只读

 datej = str(payslip.date_to)
    datek = str(payslip.date_from)
    dj = int(datej[-2:])
    dk = int(datek[-2:])
    working_days=dj - dk
    month=0
    if "January" in payslip.name: month= 31
    if "February" in payslip.name: month= 28
    if "March" in payslip.name: month= 31
    if "April" in payslip.name: month= 30
    if "May" in payslip.name: month= 31
    if "June" in payslip.name: month= 30
    if "July" in payslip.name: month= 31
    if "August" in payslip.name: month= 31
    if "September" in payslip.name: month= 30
    if "October" in payslip.name: month= 31
    if "November" in payslip.name: month= 30
    if "December" in payslip.name: month= 31
    one_daySalary=contract.wage/month
    salary=one_daySalary*working_days
    result = salary

如果导入datetime库并将日期转换为datetime对象,则可以同时获得月份和年份。我猜payslip.date_to应该是一个字符串,然后再执行str(payslip.date_to),因此可以使用Odoo特殊方法来完成此操作:

datej = fields.Date.from_string(payslip.date_to)
datek = fields.Date.from_string(payslip.date_from)

现在您有两个datetime对象,您可以使用datetime方法来获得您想要的。在

^{pr2}$

在程序的顶部,import datetime库。如果您接收到的日期对象是字符串格式,则使用它的方法,使用以下函数将其转换为正确的格式。在

timeFormattedObject = timeObject.strftime("%Y-%m-%d %H:%M:%S")
timeFormattedObject = datetime.strptime(timeFormattedObject ,DEFAULT_SERVER_DATETIME_FORMAT)

要获取该对象的年份,请使用以下函数。在

^{pr2}$

相关问题 更多 >