How to get today date

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()

You can get the full list of frappe.datetime functions with the following command placed in one of your client-side event handlers:

    console.dir(frappe.datetime);

Open console in Google Chrome “Developer Tools” with <ctrl>-<shift>-<I> ( I for Island ) to see the list. With that you can drill down and open the source code to your chosen function.

2 Likes

:+1: very nice option.