Timesheet popup reminder

dears :slight_smile:

users always forgot to close their timesheet daily

so how can we show a popup to let notice them to close their timesheet before leaving work at 5pm

thank u dears

Hi @sheno

Currently such feature is not available in the system, but this can be a good feature request. Maybe we can make generic reminder feature in which we can set the reminder for the particular doctype with the conditions. Can you make github issue for the same?

1 Like

Thank u dear

https://github.com/frappe/erpnext/issues/9966

2 Likes

We have adopted the Calendar … by creating a reminder for everyone and every Thursday to fill the Timesheet…
As most have emails on the Phone.

1 Like

i will try your method dear

thank u

umairsy

thank u dear

@Helio_Jesus
But it display pop up reminder or only it depends on the email?
Regards
Bilal

In our case and experience is better to have emailed as pop messages if user clicks quickly in something he was reading or doing can dissappear… While email and if sent twice is hard to be forgotten. You could combine both.

Do you mean to configure outlook to give popup?
Regards
Bilal

On ERPNext Tools->Calendar you set this …

You can even set the Repeat events …

Thanks for your kindly reply.
Fine, but still there are two problems:
You can not do email notification for example before the event time by 15 min or 30 min and this is a problem. Because we need the reminder to be just before some duration. How can you control this?

Another problem, where do you place the popup? At the outlook email client or at erpnext?
Appreciate your kindly advise.
Regards
Bilal

Hi,
This is not supported by ERPNext out of the box in which I advise you to do a bounty… OR if you have any Programmer ask him to have a look at this and implement for you… As pop-up message can be done on outlook, Gmail or other email service / application… GitHub - carlsednaoui/add-to-calendar-buttons: Easily add a "add to calendar" button to your websites. This JavaScript library supports Google Calendar, iCal, Outlook and Yahoo Calendar.

Now for you to pop-up a message on the user screen you will also need a custom script… I have never had a request of this type from my customers but I might have a look

@Helio_Jesus
Let us think together about doing it in the following way and let me know your opinion:
First of all, we can use hook to add even who is going to do check always (every 3 minute), the hook will call a script which will check the schedule time and how much the required time to pop up the message before the event time.

The second part, why we do not check how the ERPNext did a pop up for Note in tools as show in the below picture, and then we can use the pop up method that is used in the Note script to be used in the script that will be called by the hook event.

What is your opinion and I would to hear the advise.

Regards
Bilal

Hi,
Create a custom field on the Calendar (warn before XXXX hours/minutes)

Add on hooks “ALL” your script from API.Check_timesheet
check_timesheet should check the times and if less than warn before
executes this

frappe.publish_realtime(event=‘msgprint’, message=‘Please complete your Timesheet’, user=frappe.session.user,doctype=‘timesheet’)

This will be executed every time by the system

This will popup a message on the user every XXX you define on the script until the Timesheet is completed.

Hello @Helio_Jesus

  • Can this message be displayed even if there is no user is logged in to erpnext?
  • By the way: the argument doctype=‘timesheet’ is to display the message only if I opened the document of the doctype timesheet?
  • How to make this message stayed on the display until the user click on OK button and not to disappear by clicking on any place on the screen? Because it might be displayed and the user in fast, so he will click on any place in the screen and the message will disappear without reading it, so I believe it is required to click “OK” button on the message to disappear.
  • How to display the message with “Confirm” button and “Remind Me Later” button, and by capturing the selected option, then an action will be taken?
  • So it will be required to add field that contains when it was the last time for the displayed message and based on the defined XXX, I can check if to play it again or not?
    I am asking this because I need to check if there is a method that can automatically display the message based on given XXX duration as long the condition is valid (the timesheet is still not completed)?

Regards
Bilal

Hi, Sorry for the late reply … for sure you have already tested and found out the answers …

If the user is not logged if not mistaken it will show when he logs in.
For the second question please have a look
def publish_realtime(event=None, message=None, room=None,
user=None, doctype=None, docname=None, task_id=None,
after_commit=False):
“”"Publish real-time updates

:param event: Event name, like `task_progress` etc. that will be handled by the client (default is `task_progress` if within task or `global`)
:param message: JSON message object. For async must contain `task_id`
:param room: Room in which to publish update (default entire site)
:param user: Transmit to user
:param doctype: Transmit to doctype, docname
:param docname: Transmit to doctype, docname

Third Question
Need to look for … but if you email plus this screen message for sure user will not forget to do his Timesheet.

Fourth Question:
For that you would have to create something … as this is not available …

Last Question

Correct custom field is required.
As i said you will add that to a API module that will run on Hourly/Daily and your Rotine will just check the time or days required to show the message to user.

You can also create a custom method to check on spec days(thur/Fri) for Timesheets not done and email all …

Hope this helps you.

Rgds,
HJ

Hello;

The problem that frappe.session.user is always return Administrator even if the logged is another user !
How can I get the current logged in user?
And how I can send the message for all users?
And how I can send the message for two or three users instead of writing frappe.publish_realtime 2 or 3 times and each time to pass the needed user?

Regards
Bilal