Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
1 ตอบกลับ
998 มุมมอง

When I create a new quotation or sales order, I want to set the delivery date automatically to the next weekday based on another field named "x_studio_delivery_day". I'm using Odoo Online, I went into Studio and into "Delivery Date" properties. I see the option to "Compute" in "Advanced Properties", but not able to figure out the code to put in there. Any help?

อวตาร
ละทิ้ง

Please explain more about this new field you added from studio - x_studio_delivery_day. What kind of data this field holds. After that I will be able to give you the code. 

ผู้เขียน

Hi Abhay,

x_studio_delivery_day is a field in the model x_delivery_route in Inventory module. It is a selection of values "Monday, Tuesday, Wednesday, Thursday, Friday". 

I have connected this related field into the sales.order, so the value shows up in the sales order.

ผู้เขียน คำตอบที่ดีที่สุด

Ok. I solved it myself.

I created a new automation rule in Settings > Automation Rules. 

Trigger: State is set to: "Sales Order"

Action: "Execute Code"

And used the below code

--

weekdays = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']


# Get today's date (in server time)

today = datetime.date.today()

today_name = today.strftime('%A')

target_day = record.x_studio_delivery_day


if target_day in weekdays:

    days_until = (weekdays.index(target_day) - weekdays.index(today_name) + 7) % 7

    days_until = days_until or 7

    new_date = today + datetime.timedelta(days=days_until)

    # Combine with 8:00 AM time

    new_datetime = datetime.datetime.combine(new_date, datetime.time(9, 0))

else:

    new_date = False


record.write({'commitment_date': new_datetime})

อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
3
ก.พ. 25
2678
1
ธ.ค. 24
2469
2
มี.ค. 24
2789
Managing orders from repeat customers แก้ไขแล้ว
2
มี.ค. 24
3309
0
ก.ย. 23
1820