Dolibarr 19.0.0
21 February 2024
Dolibarr version 19.0.0 is now available (major release).
Upgrading to Dolibarr 19.0.0
Dolibarr 19.0.0 can be upgraded to (or installed) using any of Installatron's products. Use Installatron's optional Automatic Update feature to automatically apply Dolibarr updates as new versions are released, or use Installatron's Clone feature to duplicate an existing Dolibarr install to test the 19.0.0 upgrade prior to applying it live. Get started managing your Dolibarr installations with Installatron
What's New in Dolibarr 19.0.0
For users
- Compatibility with PHP 8.2
- Module Workstation (used to enhance the module BOM and Manufacturing Order) is now stable
- Add a CLI tool to regenerate all documents
- Add a confirmation popup when deleting extrafields
- Add type 'icon' type for extrafields
- #20930 Use ajax for state loading after country change
- #23331 Add support for parent projects (#24856)
- #22531 Expense report - Add two fields into export : Qty & Unit price (excl.) (#26309)
- #22626 date filter thirdparties contracts projects (#22707)
- #24085 Add the Project filter
- #25312 Support extrafields in selectForForms
- #26312 Manage intermediate BIC - SQL Part (#26325)
- Accountancy: Add quick navigation with keyboard shortcut on ledger (#26221)
- Accountancy: FEC/FEC2 format export with attachments (#26192)
- Accountancy: Option to choose length of lettering code
- Accountancy: Chart of accounts ES PCG08-PYME-CAT in catalan language
- added a button to create a product or a service from an order or an invoice (#26173)
- added a button to re-encrypt data of a dolcrypt extrafield password
- added a goto url from smartphone search page
- added all id prof checker on thirdparty for code compta customer and supplier
- added protection on purgeFiles
- added a constant to check if qty shipped not greater than qty ordered
- added context for the movement stock (role toconsume/toproduce) on mrp
- added contract link on ticket
- added column 'Technical ID' in list of details lines of an order (#26164)
- added custom compute for exports
- added custom text on footer total (#26334)
- added different picto for each type of extrafields (date, string, ...)
- added a popup on validation instead of a database field to know if the user wants to include subwarehouse
- added the field "include_sub_warehouse" in the table "llx_inventory"
- added VAT free & VAT amounts on payment input
- added ext payment system ID in the payment page with link to Stripe
- added field Technical ID in list of users
- added filter on status of line of a dictionary
- added get_substitutionarray_other() on shipping odt (#25080)
- added IdProfCheck on thirdparty for BE (xxxx.xxx.xxx)
- added index on prelevement_demande
- added invoice subtype in customer invoice (#26543) and template invoice (SQL part) (#26535)
- added a label to price level when changing price (#26240)
- added modifications of template invoices into agenda
- added more company information (ProfId7 to 10) (#25266)
- added more information to holiday mailings (#25461)
- added more param on fetch() to prepare perf optimization
- added more tables activated by module activation only
- added new field into $fields array + Creation of the function getChildWarehouse()
- added option for cancel consumed and produced lines (delete lines and rollback stocks) when delete or cancel an manufacturing order (#26254)
- added option in PDF for purchase order and quotation to hide prices
- added order supplier submit notif
- added parent product column on list
- added picto in product/service list in object lines (#25511)
- added possibility to choose separator #21426
- added preselected update keys attribute to import class and select it by default if filled
- added recurring behaviour
- added recursive deletion option for child MOs (#26102)
- added refactoring user permission (#26162)
- added sorting of product price list by customer (#26483)
- added tab Events/Agenda on recurring invoices
- added the formEditObjectLine hook on commande card and invoice card
- added the picto phone of thirdparty on the kanban view of projects
- added the status of partnership to select partnership for emailing
- added Ticket tab on contract
- Agenda: agenda per user use quarter hour split instead of half hour split
- Allow generation of delivery note through REST-API (#26226)
- Allow sync of currency rates with currency layer by default.
- Allow to have products not managed in stocks - SQL Part (#26190)
- Assign contact to a ticket message (#24735)
- Better protection against reserved words
- billing on shipment+reception. Can be done before or after delivery.
- can edit bomline workstation
- Can include product variants in list of products
- Can manage ODT documents for groups of users.
- Can restore product in stock when deleting the supplier invoice
- Can see the favicon file into setup of properties of a website
- Can switch product batch management to no management. (#21691)
- Can upload/delete ODT template for project and tasks
- clone skill object (#26526)
- column in table prelevement_lignes for fk_user (#26196)
- CONF allow modify ticket classification even if closed
- conf to display date entry stock exped and sort in date order (#22625)
- Contract: Merge the "Create ..." buttons on contract into one.
- create a product from a free line in a document (#22324)
- customize position in complete_head_from_modules (#26406)
- Date d'entree en stock sur les exped au moment de la création -> Stock date on exped at time of creation
- Date field for shipment export (#25574)
- Date format dayhoursec is using year on 2 char on smartphones
- do not add default value in list
- Donations: Generic doc template for donations (#26338)
- drop down for action button show a simple button if only 1 action
- Enhance github_commits_perversion to get more stats on git commits
- Enhance IPN to support payment_intent.succeeded for both card/ban
- Exports: added product barcode on stock exports
- extrafields password accepts 'dolcrypt' algorithm (reversible algo)
- Factorize a lot of code for numbering modules
- filter on from/to period rather than month/year (#26378)
- FontAwesome - added possibility to select another version
- Get list evaluation with skills details in user fiche (#26510)
- hidden conf to disable use of dns_get_record (which can become unresponsive) (#26339)
- HR: PDF Generation for each Human Resource Evaluations
- improved resource data structure
- Interventions: close notification for interventions
- Inventory: include sub warehouse in inventory
- Inventory: inventory without virtual products (kits)
- Invoices: subtypes for customers and vendors (#26233)
- Invoices: start and end date for due date filter on invoice list
- Invoice time from task, make task note better display in invoice line
- lazy load to substitute project variables (#26451)
- LDAP: Active Directory UserAccountControl (#25507)
- Library including math and financial functions (#25035)
- Loan: can upload a file with drag and drop
- Manage rate indirect. (#26449)
- Manufacturing Order: add edit line on MO (#26122)
- memorize model name for PDF hooks
- Menu editor is responsive
- ModuleBuilder: Can modify the picto into ModuleBuilder
- ModuleBuilder: Form for add object's property on ModuleBuilder
- More accurate tooltip on what admin permissions are
- (#24834) new option for hide the footer (#25464)
- (#25044) new option for choose project visibility
- new option for hide the footer of tickets on the public interface
- no need to create invoice supplier object on supplier card for standalone credit note
- Open-Surveys: Add a public page to list all open surveys
- Option to show label, ref+label or only ref of product in TakePOS
- payment full amount detail tooltip
- Payments: Can edit both the Test and Live stripe customer account on payment
- possibility to deselect line when create a recurring invoice + missing to use fk_parent_line
- Projects: List - use select2 multiselect for status
- Projects: massactions to delete projects
- Propagate invoice extrafields into template invoice (#26529)
- remove include_subwarehouse form llx_inventory database table
- resource improvements - data structure (#26285)
- Retrieve VAT details from the Greek Ministry of Finance GSIS SOAP web service and autocomplete third party fields
- Right for stats orders (#24607)
- rights and check access to create portal accounts
- Row in list higher height (#26177)
- Salaries: Can generate SEPA files for salaries (#26541)
- Save date of RUM creation when creating a Stripe SEPA mandate
- Shipments: can include service (for information and invoicing) (#26407)
- Show id of module on the tooltip module help page
- show VAT free amount on payment input close #26208 (#26209)
- Sub total in list (#26165)
- Support html content for combo list of email recipient
- TakePOS: add constant to check qty asked is available (#24820)
- TakePOS: add constant to choose contact instead of customer (#24807)
- TakePOS: amount label with or without tax in free product (#24829)
- TakePOS: compatibility with lots and serials (#26426)
- TakePOS: use default customer, category and product when enable TakePOS (#25031)
- TakePOS: added option TAKEPOS_HIDE_PRODUCT_PRICES to hide prices in TakePOS
- Tickets: add and list external contributors on ticket public interface
- Third-Parties: add total line to third-parties list (#26148)
- Tooltips are using ajax by default
- Website: Support of js into the Dolibarr server preview
- Top menu support picto of modules that are font awesome picto.
- updating by adding massactions for delete projects in societe tab
- updating by adding tooltip for api section in Modulebuilder
- updating by adjust request SQL for Salary invoice (#26279)
- updating for display Help title when try to delete Don (issue #25314)
- Upgrade in module builder in menu section
- use account address in sepa mandate (#23642)
- VAT rate - Add entity
- Website: Support of js into the Dolibarr server preview
- When an user unset the batch management of products, transformation of each batch stock movement in global stock movement
For developers or integrators:
- QUAL Reduce very seriously the technical debt (using PHPStan, Psalm and Rector)
- NEW Tool in dev/tools/rector to autofix code using style coding practice rules
SECURITY
- SEC: #25512 applicative anti bruteforce - security on too many login attempts (#25520)
- SEC: added action confirm_... as sensitive to need a CSRF token
- SEC: Disable not used PHP streams
- SEC: added option MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY
PERFORMANCE
- PERF: Removed a useless fetch_thirdparty
- PERF: Perf avoid 2 useless fetch into the triggers of agenda.
- PERF: performance & code quality enhancements template sections
QUALITY
- QUAL: Remove hardcoded code for OVH sms. Generic method is ok now.
- QUAL: Code fix using rector
- QUAL: Force subclass MINVERSION (#26314)
- QUAL: group all flag images into 1 sprite file. (#26459)
- QUAL: Move conf->global into getDolGlobal...
- QUAL: Refactor merging companies and fix #26272 with Reception objects (#26320)
- QUAL: Removed deprecated field remise, remise_percent, remise_absolute
- QUAL: Standardize code and look and feel for dictionaries
- QUAL: Standardize code. Renamed ID of user properties into ->user_xxx_id
- QUAL: Use dol_clone with parameter 2 for ->oldcopy
- QUAL: use switch case instead of if elseif statements for actions
- QUAL: Better respect of REST API RFC.
Hooks
- [Add hook in user bank page]
- #19501 Add two hooks in dolreceiptprinter.php (#26439)
- Accountancy - Add hooks on PrintFieldList for expensereportsjournal, purchasesjournal, sellsjournal
- add hook on selectLotDataList() function (#25368)
- add Hooks and prepare extrafields management for product invoices consumptions (#26280)
- add hooks on import, step 5 - 6 (#24915)
- add hook tabContentCreateSupplierOrder (#26418)
- add hook tabContentViewSupplierInvoice (#26431)
- add new hook AfterImportInsert
- add new hook OrderCard (#26380)
- add new hook tabContentCreateOrder (#26408)
Triggers
- Trigger: add trigger COMPANY_RIB_XXX already present in companybankaccount.class.php
- Trigger: add trigger on import success
- Trigger: add trigger when deleting a bank account line
- Trigger: subproduct triggers in product class (#25142)
ModuleBuilder
- ModuleBuilder: add section changeLog to Doc in MB
- ModuleBuilder: Add api url to documentation in ModuleBuilder
- ModuleBuilder: Checkin comments begin and end before each actions
- ModuleBuilder: edit properties in description tab for ModuleBuilder
- ModuleBuilder: remove dictionary in ModuleBuilder
- ModuleBuilder: add page for create dictionary
- ModuleBuilder: add badge for each tabs
- ModuleBuilder: for edit name of dictionary and delete it in MB
- add a $notrigger param to Product::updatePrice() method (#26404)
- add a rule to fix empty($conf->global->...) into !getDolGlobal...
- add column extraparams on societe_rib
- add phpunit for REST API of contacts
- add barcode function to check if EAN13 is valid
WARNING: The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
- Recheck the setup of your module Workflow to see if you need to enable the new setting to have shipment set to billed automatically when an invoice from a shipment is validated (and if your process is to make invoice on shipment and not on order), because this setup has changed.
- The hook changeHelpURL is replaced by llxHeader
- The property ->brouillon has been removed from all classes. It was not reliable and was a duplicate of ->status == self::STATUS_DRAFT.
- The duplicated and deprecated property ->date_livraison that was renamed into ->delivery_date has been completely removed.
- The property ->user_close to store ID of closing user has been renamed into ->user_closing_id.
- The property ->user_validation to store ID of user validating has been renamed into ->user_validation_id.
- The property ->user_creation to store ID of user of creation has been renamed into ->user_creation_id.
- The property ->user_modification to store ID of user of modification has been renamed into ->user_modification_id.
- The private array ->status_short, ->statuts and ->status_long are now array ->labelStatusShort and ->labelStatus everywhere.
- The duplicate property ->user_creat, ->date_creat, ->date_valid have been removed (use instead user_creation, date_creation, date_validation).
- The method get_substitutionarray_shipment_lines() has been removed. Use the generic get_substitutionarray_lines() instead.
- The method ProductcustomerPrice->fetch_all_log() has been renamed into camel case ->fetchAllLog()
- It was possible to use a variable $soc or $right inside a PHP code condition of some extrafields properties, this is no more true (this 2 variables are no more global variables).
- New hook files of modules actions_mymodule.class.php should now "extends CommonHookActions"
- Endpoint for API /partnershipapi and /recruitment has been renamed into /partnerships and /recruitments to follow name conventions.
- Hidden option ACCOUNTANCY_AUTOFIX_MISSING_LINK_TO_USER_ON_SALARY_BANK_PAYMENT has been renamed into ACCOUNTANCY_AUTOFIX_MISSING_LINK_TO_USER_ON_SALARY_BANK_PAYMENT
- The delete() method of AdherentType, Contact, Delivery, MultiCurrency, CurrencyRate now need $user as first parameter.
- A very high number of class properties (with old name in french) are now deprecated in favor of the property name in english.
- The load of hook context productdao has been removed before calling loadvirtualstock. Modules must use the context of main parent page or 'all' for all cases.