How to get today date

@mrmo, define your logic based on customer field change!

You can achive this, because you dont have the customer while onload, so you cant call the server to get the credit_days from the customer.

1 Like

@max_morais_dmm I am thankful for your help, maybe I have explained it wrong, let me try again.
I would like to add days based on days that I input in the custom field on the sales invoice document, which I call credit days. I am sorry for the confusion, below is a picture with screenshot for your reference, thank you so much.

frappe.ui.form.on('Sales Invoice', 'credit_days', function(frm){
frm.set_value("due_date", frappe.datetime.add_days(frappe.datetime.nowdate(), frm.doc.credit_days));
})
6 Likes

@max_morais_dmm I am very thankful for your help, you are awesome!
When I am finished with this customization project, I will share all for the rest to enjoy.
Thank you!

2 Likes

Hello,

How to get month’s first date for report module ?

Thanks,
Hardik Gadesha

@Hardik_Gadesha try with frappe.datetime.month_start()

Where can I find documentation on frappe.datetime methods?

2 Likes

Hi, @tmatteson!

frappe.utils.data and frappe.datetime have similar methods. You can find the documentation for frappe.utils in: https://frappe.github.io/frappe/current/api/utils/frappe.utils.data

However, we’re both in the same boat. I haven’t found the documentation for frappe datetime methods. I usually just rely on Pycharm’s autocomplete and code suggestion feature. :slight_smile: Sometimes, I run console on chrome or firefox just to figure out the different frappe methods.

Hope it helps.

Cheers!

Hera

1 Like

hi all

iv done the above steps while im trying to update item delivery date in sales order

i`v created a custom field in item and sales order item called delivery_days and fetched it successfully by

cur_frm.add_fetch(“item_code”,“delivery_days”,“delivery_days”);

and tried the followign script

frappe.ui.form.on(‘Sales Order Item’, ‘delivery_days’, function(frm){
frm.set_value(“delivery_date”, frappe.datetime.add_days(frappe.datetime.nowdate(), frm.doc.delivery_days));
})

it makes the item delivery date today not today + frm.doc.delivery_days

whats wrong with that ??

so sorry about repost

but i really need this script ASAP

Hey @Mahmoud_Ghoneem

The frappe.datetime.nowdate() and frappe.datetime.add_days are python/ server side code, so they won’t work in your javascript. Sorry, and I understand your confusion about it.

Frappe uses the moment library for client side datetime functionality. The documentation you need to do this is there. Moment.js | Docs

Thanks for your reply

but actually its working when i use th following code in custom script for sales order item

frappe.ui.form.on(‘Sales Order Item’, ‘delivery_days’, function(frm){
frm.set_value(“delivery_date”, frappe.datetime.add_days(frappe.datetime.nowdate(), 12);
})

and it works fine Today+12 Day

but actually what i need is to get custom field (delivery_days) instead of 12

what should i do ??

Expected input: delivery days = 12;
Expected output: delivery date = today + delivery_days;

Break this into two lines of code and console.log the intermediate step.

Look for frappe.utils.data.formatdate in the docs, I think that may be where you’re stuck.

They are already on two lines

cur_frm.add_fetch(“item_code”,“delivery_days”,“delivery_days”);

And

frappe.ui.form.on(‘Sales Order Item’, ‘delivery_days’, function(frm){
frm.set_value(“delivery_date”, frappe.datetime.add_days(frappe.datetime.nowdate(), frm.doc.delivery_days));
})

1 Like

Yes, you’re trying to do math inside the setter function, which makes it harder to debug. Pull the math out and log it so you can see where you’re going wrong; that’s what I meant by move it into two statements.

hi, i used your code

  1. when i input days like 10 in credit days, due date will automatically add 10 days;
  2. but if i “save” invoice, due date will become the same as posting date.

Please help.

My system:
Installed Apps
ERPNext: v10.0.4 (master)
Frappe Framework: v10.0.5 (master)

any updates yet !!!

HI @rmehta,

This syntax is giving an error in server script, can you suggest me the solution?
Please refer the below code and error.

frappe.datetime.now_datetime()

frappe.datetime.now_datetime()