|
|
| Line 1: |
Line 1: |
| {{DISPLAYTITLE:Auto Reminder module by Stéphane Mallet Informatique}} | | {{TemplateDocUserEn}} |
| [[Category:Complementary modules]]
| |
| [[Category:Modules complémentaires]]
| |
|
| |
|
| =Information=
| | '''Auto Reminder''' automatically sends and follows up invoices and commercial proposals in Dolibarr. Everything is driven by a daily scheduled job. |
| {{TemplateModuleInfo
| |
| |modulename=Auto Reminder
| |
| |editor=Stéphane Mallet Informatique
| |
| |web=https://web-pilot.fr/offres/rsi
| |
| |status=stable
| |
| |prerequisites=Dolibarr 19 minimum - PHP 7.1 minimum - Scheduled jobs module enabled
| |
| |webbuy=https://www.dolistore.com/product.php?id=2770&l=en
| |
| |note=Free module, GPLv3 license. Source code and zip: https://framagit.org/Steph501/dolibarr-mod-autoreminder
| |
| }}
| |
|
| |
|
| '''Short description:''' Automatically sends invoices as soon as they are validated, and reminds unpaid invoices through configurable levels. One module, two automations, a single daily scheduled job.
| | = Features = |
|
| |
|
| =Features= | | == Invoices == |
|
| |
|
| ==Automatic sending of validated invoices==
| | * Automatic sending of validated invoices by email, with the invoice PDF attached and a configurable email template. |
| | * Automatic reminders for unpaid invoices, based on configurable levels. Each level defines a delay in days relative to the due date (or the invoice date if no due date) and an email template. Negative delays are allowed (preventive reminder before the due date). |
| | * Option to include or exclude partially paid invoices. |
|
| |
|
| *Every validated invoice is emailed without any action, with its PDF attached.
| | == Proposals (since 1.3.0) == |
| *The email template is picked among the existing Dolibarr templates.
| |
| *Each invoice is sent only once: the module keeps track of it in the agenda.
| |
| *'''Safeguard against mass sending''': only invoices validated after the option was enabled are concerned. Enabling the module on an existing database never mass-sends your invoice history. The reference date is shown on the setup page.
| |
|
| |
|
| ==Reminders for unpaid invoices==
| | * Automatic sending of validated proposals by email, with the proposal PDF attached. |
| | * Automatic reminders for proposals still unanswered (not signed, not refused, not billed). Levels are counted from the end of validity date of the proposal (or its date if none). |
| | * Settings are fully separate from invoices: the module setup page has one tab for invoices and one tab for proposals, each with its own switches, email template and reminder levels. |
|
| |
|
| *Reminders rely on levels you define: a delay in days and an email template for each level.
| | == Only the highest level reached is sent == |
| *Any number of levels.
| |
| *A negative delay sends the reminder '''before''' the due date, as a preventive notice.
| |
| *'''Only the highest level reached is sent.''' Lower levels that were missed are never sent afterwards: an invoice already overdue when the module is enabled receives one single reminder, the one matching its actual delay, with the right template. No burst of catch-up reminders.
| |
| *Option to include or exclude partially paid invoices.
| |
| *An invoice is never reminded twice for the same level.
| |
| *The delay is counted from the due date, or from the invoice date when no due date is set.
| |
|
| |
|
| ==Recipient of the emails==
| | For each document, only the highest reminder level reached is considered. Lower levels that were missed are never sent afterwards: a document already overdue when the module is enabled receives a single reminder, the one matching its actual delay, with the right template. Never a burst of reminders over several days. |
|
| |
|
| For both automations, the recipient is resolved in this order:
| | == Recipient of the emails == |
|
| |
|
| #The '''billing contact of the invoice''' (Contacts tab of the invoice, type "Customer invoice contact").
| | The recipient is determined in this order, for sending and for reminders: |
| #Otherwise, the '''default billing contact of the third party''' (Contacts/Addresses tab of the third party card).
| |
| #Otherwise, the '''email address of the third party'''.
| |
|
| |
|
| Disabled contacts are never used, and the module never falls back to a random contact of the third party. When no valid recipient is found, nothing is sent and the invoice is flagged (see below).
| | # The contact attached to the document (Contacts tab of the invoice or proposal), whatever its role. If several contacts are attached: billing then service then shipping for an invoice; follow-up then billing then shipping for a proposal. |
| | # Otherwise the default contact of the third party for this document type (Contacts/Addresses tab of the third party). |
| | # Otherwise the first active contact of the third party having an email. |
| | # Otherwise the email address of the third party. |
|
| |
|
| ==When an invoice cannot be processed==
| | Disabled contacts and contacts without email are never used. If no recipient is found, nothing is sent and an event is recorded in the document agenda. |
|
| |
|
| When an invoice is skipped (no valid recipient, PDF not found, email template not found, sending failure), the module records an '''event in the agenda of that invoice''' with the reason in plain words. Each reason is recorded only once per invoice: no clutter, and you can see at a glance why an invoice never received anything.
| | == Safety against mass sending == |
|
| |
|
| ==Excluding a customer or an invoice from reminders==
| | Only documents validated after the sending option was enabled are sent: enabling the module on an existing database never sends the historical documents. The reference date is stored when you enable the option, displayed in the settings, and editable: you can move it back knowingly to include part of the history. An explicit warning is shown next to the field: any document validated on or after that date and never sent will be sent on the next job run. |
|
| |
|
| *An "Exclude from automatic reminders" checkbox is added on the '''third party card''': this customer receives no reminder at all, while every other customer keeps being reminded.
| | == Exclusions == |
| *The same checkbox is added on the '''invoice card''': useful for a disputed invoice or a negotiated payment schedule, without stopping the reminders of the other invoices of that customer.
| |
| *These exclusions only apply to reminders. The initial invoice sending is not affected.<br />
| |
|
| |
|
| [[File:AutoReminder_exclude_thirdparty.png|thumb|center|700px|Third party card: tick "Exclure des relances automatiques" (Exclude from automatic reminders) and this customer is never reminded again. Screenshot taken on a French installation.]]
| | A checkbox "Exclude from automatic reminders" is available: |
| | * on the third party card: never remind this customer (invoices and proposals), |
| | * on the invoice card: never remind this invoice (dispute, negotiated payment schedule...), |
| | * on the proposal card: never remind this proposal. |
|
| |
|
| [[File:AutoReminder_exclude_invoice.png|thumb|center|700px|The same checkbox on the invoice card, to skip one single invoice without excluding the whole customer. Screenshot taken on a French installation.]]
| | The initial sending of documents is not affected by these checkboxes. |
|
| |
|
| ==Miscellaneous== | | == When a document cannot be processed == |
|
| |
|
| *The module interface is translated into English, French, Spanish, German and Italian.
| | When a document cannot be processed (no valid recipient, PDF not found, email template not found, send failure), the module records an event in the document agenda with the reason in plain words, once per document and per reason. Looking at the invoice or proposal, you immediately see why nothing was sent. |
| *Both automations are carried by a single daily scheduled job, created when the module is enabled.
| |
|
| |
|
| =Prerequisites= | | = Installation = |
|
| |
|
| *Dolibarr 19 or above.
| | # Download the module zip file. |
| *PHP 7.1 or above.
| | # Log in to Dolibarr as administrator, go to ''Home - Setup - Modules/Applications'', tab ''Deploy/install external app/module'', and upload the zip. |
| *The Dolibarr '''Scheduled jobs''' module enabled, and a system cron calling Dolibarr (on most shared hosting, this task has to be created in the hosting control panel). Without it, no automatic sending happens.
| | # Activate '''Auto Reminder''' in the ''Financial modules'' section. |
| *A working email setup in Dolibarr (Home - Setup - Emails).
| |
|
| |
|
| =Installation=
| | The module creates its database table, its extrafields and a daily scheduled job automatically. When upgrading from a 1.x version, existing reminder levels are kept as invoice levels. |
| {{InstallModuleEn}}
| |
|
| |
|
| The zip is available for free on Dolistore: https://www.dolistore.com/product.php?id=2770&l=en
| | = Setup = |
|
| |
|
| The source code is public: https://framagit.org/Steph501/dolibarr-mod-autoreminder
| | Before configuring the module, create your email templates in ''Home - Setup - Emails - Email templates'': type ''Send invoice'' for invoices, type ''Send commercial proposal'' for proposals. One template for the initial sending, one per reminder level. |
|
| |
|
| =Configuration=
| | Then open the module settings. There is one tab per document type (Invoices, Proposals), each with: |
| {{ActivationModuleEn}}
| |
|
| |
|
| Once the module is enabled, its setup page allows you to:
| | * the automatic sending switch and its email template. When enabled, today's date is stored: only documents validated from that date on will be sent. The date is editable (with a warning), |
| | * the automatic reminders switch (and, for invoices only, the partially paid option), |
| | * the reminder levels table: delay in days + email template, unlimited number of levels. |
|
| |
|
| *enable the automatic sending of validated invoices, and choose the email template used; when you enable it, the current date is stored and shown: only invoices validated from that day on will be sent;
| | The scheduled job ''AutoReminderJob'' runs once a day by default (see ''Home - Setup - Scheduled jobs''). |
| *enable the reminders, and decide whether partially paid invoices are concerned;
| |
| *create the reminder levels: for each level, a delay in days and an email template.
| |
|
| |
|
| With no level configured, no reminder is sent: the module says so on its setup page.
| | = Version history = |
|
| |
|
| [[File:AutoReminder_setup.png|thumb|center|700px|Setup page: automatic sending of validated invoices, reminders for unpaid invoices, and the list of reminder levels (here -1 and 6 days). Screenshot taken on a French installation.]]
| | * '''1.3.0''' (2026-07-21): proposals support (auto-send + reminders on end of validity, separate settings tabs, single engine), editable mass-send safety date with warning, new common recipient rule (document contact whatever its role, then third party default contact, then first active contact, then third party email), per-proposal exclusion checkbox. |
| | | * '''1.2.0''' (2026-07-20): strict recipient resolution (never a disabled contact, never an arbitrary contact), only the highest reminder level reached is sent, mass-send safety on initial sending, skipped invoices flagged in the invoice agenda. |
| =Usage=
| | * '''1.1.1''' (2026-07-16): Spanish, German and Italian translations. |
| | | * '''1.1.0''' (2026-07-16): exclusion checkboxes on third party and invoice; settings kept when the module is disabled. |
| There is nothing to do on a daily basis: the scheduled job takes care of the sendings.
| | * '''1.0.0''' (2026-02-14): initial release (invoice auto-send and reminder levels). |
| | |
| To stop reminding a customer, open the third party card, edit it, and tick '''Exclude from automatic reminders'''. To skip one specific invoice, tick the same checkbox on that invoice card.
| |
| | |
| To understand why an invoice was not sent or reminded, open the invoice and look at its '''Events''' tab: the module records there every sending and every skip with its reason.
| |
| | |
| =Upgrade=
| |
| | |
| Upload the new zip over the previous one (Home - Setup - Modules - Deploy external module), then '''disable and enable the module again'''. This last step is required for the new fields to be created. Since version 1.1.0, your settings and your reminder levels are kept during this operation.
| |
| | |
| =Version history=
| |
| | |
| *'''1.2.0''': recipient resolution reworked (invoice billing contact, then third party default billing contact, then third party email; disabled contacts are never used). Only the highest reminder level reached is sent, missed lower levels are no longer caught up. Safeguard on the automatic sending: only invoices validated after the option was enabled. Skipped invoices are flagged in the invoice agenda with the reason. | |
| *'''1.1.1''': module translated into Spanish, German and Italian. | |
| *'''1.1.0''': exclusion of reminders per third party and per invoice. Fix: settings are no longer lost when the module is disabled. | |
| *'''1.0.0''': initial release (automatic sending of validated invoices, reminders for unpaid invoices by levels). | |
| | |
| =Support=
| |
| | |
| By email: contact@stephane-mallet.fr
| |
| | |
| {{DEFAULTSORT:Auto Reminder}}
| |