Module version: auto
Publisher / License: CAP-REL / Eric Seigne - GPL-v3
Languages: Français, English, Español, Deutsch, Italiano, Nederlands, Português (Brasil)
Support: sav@doliscan.fr
Dolibarr: auto to auto - PHP: 7.4+
Read this before buying. This module is a connector: it does not work on its own. It needs a DoliSCAN server to receive and process the receipt pictures sent by the mobile application. There are two ways to get one, and only one of them is simple:
- a subscription to the doliscan.fr service, billed separately from this module (see the pricing);
- or hosting your own DoliSCAN server, which requires system administration skills and dedicated infrastructure. This is not a checkbox: the real cost, in hardware as well as in time, is far above that of a subscription.
Buying this module includes neither of them.
Overview
DoliSCAN is the complete expense report management solution for Dolibarr. With the doliscan.fr mobile application, your employees photograph their receipts in the field, and the DoliSCAN module for Dolibarr takes care of the rest: automatic synchronization, supplier invoice creation, expense report generation, VAT management according to current tax regulations.
The principle is simple:
➔ Any expense paid with a professional payment method (company credit card) is automatically converted into a supplier invoice in Dolibarr, with the PDF receipt attached.
➔ Any expense paid with a personal payment method is automatically added to the current expense report of the relevant user.
An important difference between standalone DoliSCAN and DoliSCAN connected to Dolibarr: everything related to accounting (special tax rule management) implemented in DoliSCAN is disabled during import into Dolibarr, to avoid conflicts with Dolibarr's accounting.
Main features
Automatic synchronization
- Configurable automatic daily synchronization via scheduled task (cron)
- Import of expense reports from the DoliSCAN mobile application to Dolibarr
- Automatic download of PDF receipts and attachment to Dolibarr entries (DMS/ECM)
- Forced resynchronization of missing receipts
- Bidirectional synchronization of Dolibarr projects to DoliSCAN (keywords)
Professional expense management
- Automatic creation of supplier invoices from professional expenses
- Configurable mapping: each type of professional expense (fuel, meals, accommodation...) is linked to a Dolibarr supplier
- Automatic creation of "generic" supplier records if needed
- Automatic validation and payment recording (optional)
- Application of default payment methods configured on the supplier record
- List of supplier invoices linked to each DoliSCAN import
Personal expense management
- Automatic addition of personal expense lines to the user's Dolibarr expense report
- Configurable mapping of personal expense types to Dolibarr expense report entries
- Special capping rules for meals (meal allowance only, meal with client guest)
- Activation of special rules by user group
Advanced VAT management
- Automatic verification and correction of VAT / net amounts during import
- Support for French tax rules for fuel (VAT recoverable at 80% or 100% depending on vehicle type)
- Handling of receipts with inconsistent VAT data (switch to manual mode)
- Support for multiple VAT rates on a single receipt (meals)
Multi-entity support
- Compatible with the Dolibarr Multi-Entity (multicompany) module
- Each entity has its own DoliSCAN accounts, supplier mappings, and expense reports
- Multi-entity user mapping: the same user can have different DoliSCAN emails depending on the entity
- Dedicated diagnostics page to automatically detect and fix entity inconsistencies
User account management
- Automatic creation of a DoliSCAN account when creating a Dolibarr user (optional)
- Account creation directly from Dolibarr without going through the DoliSCAN server
- Synchronized activation/deactivation between Dolibarr and DoliSCAN (via triggers)
- Support for external users (optional)
- Each user can have a professional credit card in different banks/accounts
Projects
- Linking expense reports to Dolibarr projects
- Automatic synchronization of Dolibarr projects to the DoliSCAN mobile application
- Use of project label if the DoliSCAN code is empty (optional)
- Option to hide closed projects
Permissions and security
- 9 granular permissions organized in 3 categories:
- Personal account: read, create, delete your own DoliSCAN account
- My expenses: read, delete your own expense reports, download other users' expenses (administrator)
- Administration: read, create, delete all user accounts
- CAP-REL adaptive firewall management (automatic unblocking procedure if your server is blacklisted)
Compatibility
- Dolibarr 18.x and above
- PHP 7.4 and above (compatible with PHP 8+)
- MySQL / MariaDB and PostgreSQL
- Support for France and Belgium (Belgian business identification numbers BCE/KBO)
- Interface available in French, English, Spanish, German, Italian, Dutch and Brazilian Portuguese
Module configuration
The module is set up in eight numbered tabs. Every setup page carries an Online documentation link that opens the documentation page of the tab on screen.
- Server - choice of the DoliSCAN server (production, free test, self-hosted), with no server imposed by default
- Administrator - creation or link of the administrator account, connection check, import start date
- Supplier Links - Dolibarr supplier of each professional expense type
- Type of Fee - Dolibarr expense type of each personal expense type
- Payment methods - bank account and payment mode of each professional payment method, business card per user
- Miscellaneous - automatic account creation, automatic payment, automatic validation and approval, projects
- Fuel - French tax rule: VAT recoverable at 100 % or 80 % depending on the vehicle category
- Special rules - restaurant caps per user group
On top of them come the Multi-Company tab (with the Multicompany module) and three maintenance pages for the super administrator: diagnostics, catch-up of missing expenses and removal of duplicate supplier payments.
Required Dolibarr modules
Proper operation of DoliSCAN requires the following Dolibarr modules to be enabled:
- Suppliers - For creating supplier invoices (professional expenses)
- Third parties - For supplier management
- Banks/Cash - For payment methods
- Expense reports - For creating expense reports
- Invoices - For invoice management
- DMS/ECM - For attaching receipts
- Scheduled tasks - For automatic daily synchronization
Optional modules: Multi-Entity (multi-company), Projects (project linking).
What's new in version 2.2.30
Multi-company set right
- Each company gets its own DoliSCAN notes back and only imports those of its employees, including in Multicompany transverse mode
- Receipts are filed with the expense report or supplier invoice of the right company
- A button on the diagnostics page moves each note back to its company and removes duplicates, never touching a validated, approved or paid document
- Diagnostics no longer report what Multicompany shares between companies, and in transverse mode they name the group to grant a missing right to
Receipts better tracked
- On Dolibarr 20 and later, receipts of a draft expense report are imported without a duplicate error
- A receipt the DoliSCAN server does not have is no longer requested every day: requests are spaced out up to one month, and a manual resync asks for it again at once
A more talkative scheduled sync
- The scheduled jobs list says why a run failed and sums up what a successful run did
- A note that does not contain any expense yet no longer puts the account in error
- The right to create supplier invoices is no longer required from employees who never pay with a professional payment method
Interface and installation
- The tabs of a DoliSCAN note card show again, and the full deletion of an account no longer ends on a blank page
- The module is translated into Dutch and Brazilian Portuguese, and the Italian screens get their accents back
- The folders of the archive are no longer writable by every account of the server
No reactivation and no new right are needed. Details in the release notes of version 2.2.30 (in French).
Installation
Warning: Training and installation assistance for the module are not included in the price.
Warning: If you do not host your own DoliSCAN server, a subscription to the doliscan.fr service is required (and helps fund the development of the Dolibarr module, the doliscan.fr engine, and the smartphone application). Visit doliscan.fr for more information.
Demo
A fictitious company "devtemp" allows you to test the various possible accounts and the DoliSCAN application: doliscan.devtemp.fr
Full documentation (in French): doc.cap-rel.fr/doliscan
Included in the purchase
- Access to module updates and all future developments with no time limit.
- Functional corrections to the module based on your feedback and bug reports.
Updates
- An email will be sent to you each time a new version of this module is published.
- Module patches will be published on DoliStore.
Contact
Through our contact form on the cap-rel.fr website
What the purchase covers
- The module, and access to its updates for the period stated on this sheet
- Bug fixes, including the ones you report
- An email on every new release
To be told automatically about new versions, of this module and of the Dolibarr ecosystem at large, subscribe on dolinews.com: that is where our release announcements are published.
Support
Support goes through our support form, not through the comments on this sheet.
Support is not free. You want competent people on the other side: it is fair that they are paid for that time. The price shown covers the module and its updates. It covers neither installing nor configuring your Dolibarr, nor training your teams, nor specific developments, nor investigating an environment we do not host.
A reproducible bug in the module is fixed at no charge, as part of the updates above.
Before buying
- Check the Dolibarr and PHP versions stated at the top of this sheet: beyond them, the module is not tested
- Modules are deployed from Home > Setup > Modules > Deploy an external module, which requires an active custom directory on your installation
- When a module relies on an online service, the subscription to that service is separate from buying the module, and is stated above
Publisher
Module developed by CAP-REL, under the GPL-3.0-or-later licence. Online documentation at doc.cap-rel.fr.
Version history
2.2.30 -- 20261113
- Point to the company group when a DoliSCAN right is missing in multicompany transverse mode
- Install the module with safe folder permissions instead of folders writable by everyone
- See the tabs of a DoliSCAN expense report card again
- Delete a DoliSCAN account completely without a blank error page
- Read in the scheduled job list why a DoliSCAN run failed and what it did
- Use DoliSCAN in Dutch and Brazilian Portuguese
- Read the Italian screens with their accents
- Import the receipts of draft expense reports on Dolibarr 20+ without duplicate errors
- Stop reporting receipts already in Dolibarr 20+ as missing when fetching missing receipts
- See the DoliSCAN expense reports of every company again in multicompany
- Pick only the users of the current company in the user filter of the DoliSCAN lists
- Fix in one click the DoliSCAN expense reports left twice or in the wrong company
- Stop the diagnostics flagging users, products and third parties shared in multicompany
- Get the missing receipts in the expense report of the right company in multicompany
- Stop importing the expense reports of another company when synchronising in multicompany
- Browse DoliSCAN accounts with the previous and next arrows of the account card
- Stop counting an account in error because one of its expense reports has no expense yet
- Stop rerunning the full synchronisation at every cron pass after an empty expense report
- Stop asking the supplier invoice right from employees who never pay with a pro payment method
- Read one count of receipts already present instead of one line per file when checking receipts
2.2.28 -- 20261026
- Use DoliSCAN on Dolibarr 24, bank account choice and diagnostics fix buttons included
- Replace the "document unavailable" images saved as PDF receipts with the real receipts
- Find and remove those images in one go from the diagnostics page
- See "receipt not available on the server" instead of a generic download error
2.2.26 -- 20261022
- Open the matching documentation page from every DoliSCAN setup page
- Read a full user guide for each setup tab, fuel VAT rules included
- See which expense was not imported for lack of a mapped type, and get it at the next sync
- Keep the company card account for users whose own card row is left empty
- Import a fuel receipt without vehicle category or VAT rate instead of an empty invoice
- See new expense types and payment methods of the server when you edit the mappings
- Hide closed projects in the app when the option says so
- Stop creating an account for external users unless you allow them
- Choose the DoliSCAN server yourself, the billed one is no longer picked by default
- Save a self-hosted server address in one go
- Confirm before diagnostics replaces the supplier of an invoice
- Cap restaurant expenses with the lowest cap of the listed groups only, cents included
- Use the duplicate catch-up page in English, Spanish, German and Italian
- Read payment modes and setup labels in your language
- Keep the exact VAT of each rate on a receipt with several VAT rates
- Stop a log line and a warning on every Dolibarr event (thanks to contrib from Adrien)
- Keep a renewed account in the company that issued it (thanks to contrib from Nicolas)
2.2.24 -- 20261006
- Stop logging a PHP 8.2 deprecation when the info tab of a report is opened on Dolibarr 23
2.2.22 -- 20261005
- Stop writing API tokens and security codes to the Dolibarr log
- Refuse a report or an account whose company is unknown when multicompany is on
- Only list the DoliSCAN accounts of the company being browsed
- Stop a resynchronisation from writing into the expense report of a colleague
- Keep the reports of two companies apart when they share a server identifier
- Stop deleting the DoliSCAN account of another employee when a user is removed
- Keep a receipt download inside the folder of its own expense report
- Store the main DoliSCAN token encrypted, and never print it in a page
- Reserve the diagnostics, catch-up and entity mapping pages to the super administrator
- Ask for a confirmation token before launching a DoliSCAN synchronisation
- Ask for a confirmation token before any call to the server from the setup page
- Ask for a confirmation token before creating or deleting a remote account
- Check every selected report before a mass import or validation
- Gate the deletion of an account on the delete right, not on the write right
- Gate each menu entry on the right it needs
- Stop running MySQL-only statements on a PostgreSQL or SQLite database
- Escape the values typed in the mobile app before showing them in a page
- Escape the user columns of the account list
- Filter the identifiers posted by the entity mapping pages
- Stop a receipt label from becoming a formula when the list is opened in a spreadsheet
- Refuse to reach the DoliSCAN server over plain http, and warn when security is lowered
- Make the creation of the default suppliers repeatable without duplicating them
- Fix the recoverable VAT on a fuel receipt for a utility vehicle (HT and VAT were swapped)
- Spot and repair the expense report lines whose VAT is wrong, from the diagnostics page
- Stop dropping an expense line when the app declares a VAT amount at a rate of zero
- Look for an existing line only in the report being filled, never in an older one
- Show the total line at the bottom of the expense report list
- Keep the expense report list, the resync and the sync marker inside the current company
- Push to DoliSCAN only the logins of the current company
- Look for a linked supplier invoice only in the current company
- Skip an expense report with an unusable date instead of stopping the whole nightly sync
- Tell an unusable date from a date simply older than the import start date
- Report a failed import in the result of the account synchronisation
- Report every failed write, payment and update instead of staying silent
- Show a message instead of a blank page when a database read fails
- Stop a failed supplier invoice from breaking the transaction of its caller
- Change the project code of a project again, even when Dolibarr omits the previous value
- Open the info tab of a DoliSCAN account again: it read columns that do not exist
- Name the unknown users of a diagnostic instead of showing a Dolibarr error page
- Let the owner of a report validate it again, once granted the write right
- Validate the import start date before saving it, and stop echoing the server answer
- Wait after a DoliSCAN call only when the server asks to slow down, which speeds up a sync
- Index the import key and the expense report link, for a faster sync on a large base
- Send the feedback mail from the configured address and answer to the one typed in
- Check the module version from the pages instead of at every include
- Remove the mass action that silently did nothing
- List the DoliSCAN trigger as a production trigger, no longer as a demo under development
- Freeze an expense report through its status method, so the change is logged like the others
- Show the module interface in English, Spanish, German and Italian, not only in French
- Display the labels that carried stray quotation marks correctly
- Translate the field labels, the status values and the payment deduplication page
- Load the translation file the module really ships
- Read every module setting through its accessor, with a default when it is not set yet
- Make the address of the DoliSCAN side channel configurable
- Address the DoliSCAN API with the account login, encoded per url segment
2.2.20 -- 20260924
- enforce ownership and permissions on the module pages: an employee can no longer open, download or delete the expense report of a colleague
- declare the missing doliscan->myndf->write permission, and offer to reinstall the module permissions from the diagnostics page
- isolate duplicate lookups and the draft purge per entity (multicompany)
- raise the floor to Dolibarr 18 / PHP 7.4 and drop the backport layer
- partner configuration and permissions warning banner on the admin page
- prevent double submit on the admin forms
- user documentation rewritten with screenshots, README in English and French
- static analysis green on Dolibarr 18 to 23, tests migrated to PHPUnit 11
2.2.18 -- 20260803
- fix loop call on triggers / doliscan cron
2.2.16 -- 20260702
- force recompute of total for dolibarr expense reports
2.2.14 -- 20260616
- better token auto recovery tests
- better cron tests
2.2.12 -- 20260601
2.2.4 -- 20260530
- add a cron test to display message to end user "no cron ... no cron" :)
- tool to relink accounts on entity with multicompany module
- add a test for invalid token
- better logs for debug
- better error handler on api requests
- new admin page for dedup payments
2.2.2 -- 20260513
- improve admin connection diagnostics
- surface the actual check-result message on admincreate failure
- log full checkAdmin result in LOG_ERR when admincreate is aborted
- clearer handleDoliscanTimeoutBlacklist traces
2.2.1 -- 20260428
- auto fix duplicates ER
- auto fix date/time settings due to servers dates
2.2.0 -- 20260426
- big rework on base code
- fix multi-VAT rounding
- fix MyAccount::validate()
- fix mod_myndf_standard / mod_myaccount_standard getNextValue
- fix MyNDF::getNextNumRef / MyAccount::getNextNumRef
- fix ds_vat_from_ttc
- fix create_fact_fournisseur_common
- fix MyDoliSCAN::syncAccount
- DoliSCAN API keys storage
- Re-enabled permission checks
- add 73 unit tests (139 assertions)
- add 142 integration tests
- add HTTP tests
2.0.114 -- 20260407
- fix php warnings
- force resync missing files or temporary doliscan pdf files
2.0.113 -- 20260324
2.0.110 -- 20260317
- fix json_decode
- fix multicompany settings
- change search filter on ndf list
- add mass action to validate dolibarr expense reports linked to doliscan ndf
2.0.102 -- 20260310
- better checks on downloads & api key renew
2.0.98 -- 20260302
- re-download file if status "is prov"
2.0.96 -- 20260220
- add new tests and quality checks
- better force resync system
- better multicompany support
- add a new tests to handle admin token errors
2.0.94 -- 20251129
- do not sync validated expenses documents (new option for 12 month)
- correct entity on missing documents while sync
2.0.92 -- 20251031
- add new options to disable sync of paid or cancelled invoices
- add new option to disable expense repports when dolibarr one is mark as validated
2.0.90 -- 20250901
- fix siren/siret idprof1/idprof2 preflight check
2.0.88 -- 20250701
- fix race condition ht/vat reverted values [PRIORITY]
2.0.86 -- 20250630
- fix vat rate values on some race conditions
- add more debug entry points for dev
- fix include priority on files for dolibarr < 16 setup
2.0.84 -- 20250616
- fix multicompany support thanks to InfraS
2.0.83 -- 20250522
- fix filter syntax when multicompany thirdparties sharing is activated
2.0.82 -- 20250430
- display user entity AND doliscan entity on all account listing
2.0.80 -- 20250425
- better handle json_decode data as array
- add entity number in all accounts list
2.0.76 -- 20250321
- fix bank setup (object vs array)
2.0.74 -- 20250318
- apply default payment rules on supplier invoices
- add list of supplier invoices on doliscan import page of each people
- one more check on resync missing documents to get main doliscan pdf
2.0.72 -- 20250306
- add special rules on expenses "restaurant"
2.0.70 -- 20250303
- code cleanup (getDolGlobalString)
- cleanup syntax typo (double $$, single % and so on)
- cleanup function call
- cleanup objects and vars types
- fix some undef vars warnings
- switch to next phpstan value
- fix sql for PostGreSQL thanks to Thomas
- allow loopback setup
- remove some debug messages
2.0.68 -- 20250213
- add an other check to avoid expense multi-payment
- better log messages
2.0.66 -- 20250107
- new refresh on synchro thanks to william mead (inovea) (DOLISCAN_REFRESH_DRAFT)
- use default payment configured on thirdpart in priority
- and fallback to module global setup
- better connectivity tests
- better multicompany compatibility
Truncated history, intermediate releases not shown: 50
The first release of this module dates from 2020-07-08.
1.0
The full changelog is on the "About" page of the module once it is installed.