What is cron job?
Wiki: https://en.wikipedia.org/wiki/Cron
Use of Cron in UltimatePOS
Cron Jobs are used for the following purposes:
- Automatic Backup: If you want to automate the backup process to take place every day.
- Subscription invoice: If you use a recurring invoice or subscription invoice feature in ultimatepos.
- WooCommerce Module: Used in WooCommerce module only if you want to enable auto-synchronization of orders from WooCommerce to UltimatePOS.
- Superadmin Module: Notify the user when the subscription gets expired.
Any other features as mentioned throughout the documentation.
Setting up a cron job
- You will find cron job command in Administrator Backup screen(available since V2.13) or WooCommerce module API settings or Superadmin Cron Jobs Menu.
It will be in this format:
* * * * * php /path_to_pos_folder schedule:run >> /dev/null 2>&1 - Login into your Cpanel or direct admin or similar server management portal and Go into Cron Jobs or scheduler menu.
- In the “Add New Cron Job” section, select:
minutes = *
Hour = *
Day = *
Month = *
Weekday = *
Command = php /path_to_pos_folder schedule:run >> /dev/null 2>&1
The command is same as the command displayed above except removing all the * before it. - Click “Add New Cron Job” Button and it will be added.
NOTE: only one cron job is required for all features, don’t add it multiple times.
Setting cronjob interval in the code:
Follow the file path in the codebase pos\Modules\Woocommerce\Providers\WoocommerceServiceProvider.php
Search for the line twiceDaily(1, 13) and change it as per required.
Refer to the laravel official document below.
https://laravel.com/docs/9.x/scheduling#schedule-frequency-options
Cron job errors & Fixes:
ArgvInput.php ‘Invalid argument supplied for foreach()’
To fix this error, go to edit php.ini and enable/turn-on register_argc_argv ini settings. And it will start to work fine