Dolibarr 20 Beta (Freeze)

dolibarr It's time to start the beta of Dolibarr ERP CRM version 20.0

All developers and users are invited to test the 20.0 BETA version from github sources (branch develop to get files).

Now the freeze period is started, I won't add new features during few days, until i think things are stable enough to start to work both in branch develop and in branch 20.0 (available soon).
You can have a look on the "Freeze definition" on this page to know what you CAN DO or NOT during the Freeze period.

Because we entered the beta period, please, if you work on Dolibarr code, spend your time to fix bugs and only fix bugs, as much as you can.
The project need your fixes. This is a list of reported issues on our Github bug tracker.

Laurent, Aka Eldy.

This is the exhaustive generated list of changes available into this version compared to the previous one:

***** ChangeLog for 20.0.0 compared to 19.0 *****

For users:
NEW: Compatibility with PHP 8.2 (with no need to disable warnings)
NEW: Font param Look and Feel THEME_FONT_FAMILY (#29302)
NEW: Param to show main menu logo in color (#29305)
NEW: #27048 add form to globally set "VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT" variable (#27049)
NEW: #29274 Add possibility to have different mail for autocopy for holiday (#29275)
NEW: WebPortal module
NEW: Module Bookcal is now experimental (TimeZone not yet supported)
NEW: #24031 add option MAIN_GRANDTOTAL_LIST_SHOW to always show grand total to lists (#27247)
NEW: #28070 Adding mobile phone to thirdparty
NEW: Accept the __NOW__ and __USER_ID__key into filters
NEW: Accountancy - Add possibility for specific format FEC to sort with the fec name (#29722)
NEW: Accountancy - Expense report - Add an option to use end period for transfer (#26706)
NEW: Accountancy - Show accounting result on balance
NEW: Accountancy - Show import key if exist (#29265)
NEW: Add a default limit in nb to agenda export
NEW: Add a Feedback-ID into email headers
NEW: Add a link "Fill with layout"
NEW: Add a link to add a website category in edit page properties
NEW: Add ALT+s to save a website page in edit mode
NEW: Add a protection in inventory when a product has stock of lot and is
NEW: Add a warning if invoice payment is Credit Transfer on newpayment.php (#29685)
NEW: Add Categorie filter for ActionComm (#28041)
NEW: Add code+label of payment mode and term in purchase invoice export
NEW: Add column data payment on VAT list
NEW: add column for barcode in ticket
NEW: add column to store a label for a supplier price (#27238)
NEW: add const PROJECT_HIDE_OPEN_PROJECTS_LIST_ON_PROJECT_AREA to have the ability to hide the potentially very long list of open projects in any case
NEW: add data type 'project' to blockedlog
NEW: Add default User roles for Thirdparties (#29242)
NEW: Added a configuration in workflows (#26959)
NEW: added address, zip & town to resource object
NEW: add field Reply to in emailing
NEW: Add Filter on product referring object status(Order and Order Supplier) (#28275)
NEW: add geometrics extrafield (#28239)
NEW: Add global PRODUCT_STOCK_LIST_SHOW_WITH_COMPILED_PHYSICAL_STOCK for this is based on compiled physical stock, not the sum of product stocks on existing links. (#28171)
NEW: Add id of last page accessed in website
NEW: Add import ID in list of products
NEW: Adding a recipient on emails sent, change status to sent partially.
NEW: Add invoice subtype (some countries need this like greece)
NEW: Add link to export ICS file of an event.
NEW: Add maintenance tool to switch utf8 -> utf8mb4
NEW: Add option position['find'] to DolEditor (#29546)
NEW: Add option TICKET_INCLUDE_SUSPENDED_STATUS (Suspended status no more
NEW: Add option to open files in new tab (#29604)
NEW: Add picto favicon
NEW: add position column in category table  (#27425)
NEW: add position field into category add view
NEW: add relation type on element_element (#29329)
NEW: Add shipments and reception stats on product stat tab (#29395)
NEW: add some bank info on odt
NEW: Adds payment terms and percent discount to the creation of an invoice from time entries in projects (#29694)
NEW: add state province filter field
NEW: Add support of [IF] tag other than in the core content (ex: headers who is in stylesXml) (#29357)
NEW: add table to store product relation with thirdparty
NEW: Allow smileys into emailing html content
NEW: Allow to set a default project for POS sales (#27042)
NEW: animation for display spinner when waiting response
NEW: Asset Module - make asset model creation in a single step (#26982)
NEW: auto-determine piece number in FEC import (#29672)
NEW: auto fill infos in template email
NEW: Automatically fill matching extra fields of object on line creation. (#27240)
NEW: Can add documents on a payment (#29660)
NEW: Can create new membership type from the create member form
NEW: Can export security events.
NEW: Can force language of a page in website module with xx/pagename
NEW: Can force position of signature on PDF using a setup constant (#29676)
NEW: Can generate the email selector file
NEW: Can setup phone mobile for the main company (#28410)
NEW: Can show legal form of company into the list
NEW: Can show the legal form in address of recipient in PDF
NEW: Can show the list of projects having at least one contact that is a contact of the third party
NEW: Complete the thirdparty index page with last modified contacts
NEW: Constant to select if typent helps define whether the thirdparty is a company
NEW: contact type on auto add contributor (#26077)
NEW: contenteditable is supported on table,header,footer and menu tags
NEW: cronjob: deny to launch a method from a deactivated module
NEW: determine multi-currency price on object line create tpl (#28021)
NEW: dev: Add tool to update license with developer info
NEW: Dev documentation about setting up pre-commit locally
NEW: Develop new quick edit opportunity status (#27892)
NEW: display product and qty in stock_movement table in project overview (#29296)
NEW: dol_copy added to forbidden functions
NEW: Dolibarr can now re-open ticket upon customer reply on the same ticket via email#28303  (#28451)
NEW: Edit ticket (#29497)
NEW: Expense Report: Add conf to block line creation if line date is out of range (#29427)
NEW: Expense Report: new line add conf to Block if line date out of range
NEW: export invoice source id (backport v17)
NEW: export order client code
NEW: Export RSS of event can be filter on action type and code (useful for smartphone notification with feeder)
NEW: feature to merge 2 tasks (#29214)
NEW: fetch object by element for website account card
NEW: filter on sale representative in contact list
NEW: Filter shipments by selecting multiple shipping methods (#28376)
NEW: Font param Look and Feel (#29302)
NEW: fuctionnality for stock configuration prompt in AI module (#28030)
NEW: functionality to delete contact of company list
NEW: functionality to display codebar on pdf files  (#29623)
NEW: functionality to list event for user
NEW: functionality for salaries massaction (bank-transfer)
NEW: function for removing company contacts
NEW: get html template example for each model
NEW: hide external and non employee users in combobox
NEW: hide external user in combobox
NEW: Implement EPC QR Code on Invoices (#29445)
NEW: in project overview, stock movement section, we only stock movement ref, but not the product and not the quantity
NEW: input in emailForm to put AI instructions
NEW: input reason label in customer proposal and order export (#29540)
NEW: intervention list date filter
NEW: Invoice Creditor Reference and banking barcode (FI) (#29328)
NEW: Invoice PDF If bank account is empty, not print "Bank" and "Account"
NEW: Label on Price fix:#28544
NEW: layout and prompt AI on create emailing
NEW: Look and feel v20 - add picto to full list on summaries tables.
NEW: Look and field: The operator 'or' on category filter visible only
NEW: make "sell" or "eat by" mandatory in product lot
NEW: Management of the In-Reply-To and References for ticket answers.
NEW: module user rights enhancement (#29150)
NEW: Module Website: Can link/unlink translation between web pages
NEW: Move dir of cache for widgets
NEW: multiselect with checkbox in categories/tags search for thirdparty list (#28335)
NEW: new consts to redirect from massaction createbills (#29436)
NEW: new global string to preselect yes for one bill per thirparty in orderlist massaction (#29359)
NEW: notification action triggers for cancelling orders and invoices
NEW: now button when editing an event
NEW: online signature of shipments (#29559)
NEW: On OAuth Google login, no prompt at all if already logged in Google
NEW: Option to transfer only reconciliated lines from bank (#29408)
NEW: Param to show main menu logo in color look and feel (#29305)
NEW: Payment page received from donations
NEW: possibility to define a completely inactive module (#29289)
NEW: preview example page in website when create page
NEW: propal canceled status
NEW: receptions in dolibarr search box (#29700)
NEW: redirect link in the config module in the event of an error client
NEW: remove auto selected user for taxes-charges by default
NEW: resource address, phone, email & maxusers (#28185)
NEW: Script for fast identification of missing/unused/duplicate translations
NEW: search member by date
NEW: See the documents of my subordinates  (#28318)
NEW: separation of expense report from salary accounting code
NEW: Show error on ical parse
NEW: Show the profit per attendee on events
NEW: signed status CRUD to contract and fichinter
NEW: Simplify the verification of context in hook (#27105)
NEW: Sort variants list by product ref on combinations page (#27969)
NEW: Statistic page donation (#28463)
NEW: Supplier Invoice - List - Selector with choice on ECC country
NEW: supplier order submit method message (#27855)
NEW: Supplier Proposal API extended with DELETE, POST and PUT possibilities
NEW: Support $moreinheader with SwiftMailer
NEW: Support a date selector with type 'html'
NEW: Support Reply-To tracking in emails sending (tickets only for the
NEW: Take image from content for RSS
NEW: TakePOS - add buttons to allow keyboard usage for discounts (#24819)
NEW: TakePOS - add constant to show line subprices
NEW: TAKEPOS - Clear search results
NEW: TAkePOS - don't allow payment if no thirdparty selected
NEW: TakePOS - Option TAKEPOS_NO_GENERIC_THIRDPARTY to disallow payment if no specific thirdparty selected (generic not allowed)
NEW: Test send triggercode to url (#29675)
NEW: Trigger for Knowledge (#29645)
NEW: Add branches into apstats security report (
NEW: updated resource list for new fields (#28705)
NEW: Update expense report card.php to allow pdf preview even without thumbnail (#29491)
NEW: update price with auto to use const for rounding prices (#29350)
NEW: Use a nicer combo list to select the export accounting format
NEW: users can set their own length for short lists
NEW: Various payment - Use list of account when edit (#27992)
NEW: warning message when cloning a product whose status is not to sell (#28374)
PERF: Performance enhancement on Invoice/Paiement area page
PERF: Use cache for loaded users/contact on project list
SEC: add some dolibarr functions to dol_eval forbidden functions (#29459)
SEC: #28168 Correct protocol limitations (PHP7.4/Win) (#28172)
SEC: Add a protection against installation of external module bypassing
SEC: A user with export permission can export module data without
SEC: Reduce nb of var without WAF used when using the website module

For developers or integrators:
NEW: $noescapetags param of dol_escape_html works if attributes
NEW: Add createInvoiceFromContract to API invoice (#27277)
NEW: add debugging info to api/status if non-production
NEW: Add functions to manipulate emojisNEW: add hook addMoreCategoryList to list category from external module
NEW: Add hook on printsheet barcode page
NEW: adding online_payment_url to invoices API (#28107)
NEW: Add method getPublicImageOfObject() for website module
NEW: Add sql stddev_pop db function.
NEW: Show the process ID and user ID into log files
NEW: Add trigger on modify of user bank account
NEW: Add Windows ci workflow
NEW: All apis has a hook context of "api" initialized
NEW: All fetchAll() method now support the USF syntax.
NEW: allow [] in dol_eval (#27290)
NEW: API Add some api endpoints (#25126)
NEW: API can create, get and update extrafields #29249 (#29270)
NEW: Api can force invoice ref (#28547)
NEW: API can Post extrafields #29249 v2
NEW: API delete extrafields from name and elementtype
NEW: API GET projects by REF and by email_msgid
NEW: Api parameters are sanitized by the WAF, same code than GET/POST
NEW: API setup delete extrafields from name and elementtype v2 (#29269)
NEW: API setup update extrafields from name, elementtype and json
NEW: API setup update extrafields from name, elementtype and json (#29273)
NEW: api_thirdparties add and delete representatives (#27943)
NEW: Extend of module options Setup
NEW: Factoring and Fix external module elementType (#28666)
NEW: class ai for generate content with api
NEW: consider document lines in element properties
NEW: DolDeprecationHandler for deprecations
NEW: Execute the doAction hook on other ticket pages (#29701)
NEW: FormSetupItem: show picto in front of confs applied across all entities (#28024)
NEW: Global constant for deprecated module mapping (#28348)
NEW: Hook after total Table on PDF (#28092)
NEW: Hooks tab in debugbar (#24992)
NEW: Init of a module with a website template copy also the preview
NEW: llxHeader body css for asset, for command see #26856, for donation
NEW: ModuleBuilder : add type genericpassword entry types
NEW: Makes it possible to update html text fields besides integer and alpha fields for a custom build module.
NEW: method to help declare dictionaries more easily
NEW: Upgrade jsChantImproved to 2.8.10
NEW: Upgrade Sabre lib to 4.6.0
QUAL: Add sqlfluff (SQL code and style check) (#29097)
QUAL: Check lang files does not contains 'notranslate'
QUAL: Clean code around dol_eval use
QUAL: clean deprecated code
QUAL: Deprecated "domiciliation". Replaced with "address"
QUAL: DiscountAbsolute: inherit CommonObject to implement errorsToString
QUAL: Enhance API description - BOM, Documents (#27492), Setup
QUAL: extend api/status
QUAL: feature parity between vendor and customer template invoice (#26588)
QUAL: FichinterTest: add errorsToString()
QUAL: Force subclass MINVERSION (#26314)
QUAL: Make the same condition only once.
QUAL: phpstan github action
QUAL: professional identifiers - remove TODO by adding profid.lib.php
QUAL: Properties ->date_update and ->date_modification were merged
QUAL: removed duplicate language file
QUAL: Remove the external js library jstimezonedetect
QUAL: Remove use of customurl filter. Must use the USF syntax.
QUAL: Rename all input fields "tel" into "phone"
QUAL: Rename column fk_origin_line on shipment lines into fk_elementdet to match a generic use. (#28989)
QUAL: replace $conf->global with getDolGlobalString()
QUAL: Send API response data before completing post-processing tasks
QUAL: Sending API response data to clients before completing post-processing tasks.
QUAL: Start to rewrite the export of accountancy. Misconception generates
QUAL: the config_extended of phpstan will be kept on apstats only for the
QUAL: The signature for all ->delete() method has been modified to match
QUAL: Use phan to help detect new issues (#27706)
QUAL: use real time when creating action from list
QUAL: replace hard-coded dictionary IDs with constants (#29501)


The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
* Ldap class methods connect_bind() & dump_content() have been renamed
* More class properties (with old name in french) are now deprecated in favor of the property name in english.
* Some API HTTP return code were moved from 401 to 403 to better follow REST specification.
* dolibarrtriggers class VERSION_XXX constants have been deprecated. Please use array dictionary VERSIONS['XXX'].
* Properties ->date_update and ->date_modification were merged into date_modification.
* All CLI tools (into /scripts) return a positive value to the shell if error (0 remains success) for a better
  cross platform compatibility. On linux the exit(-1) was caught as 255, it may be now exit(1) so will be caught as 1.
* The parameter $filter of method fetchAll does not accept array of SQL but must be a string of an Universal Search Filter syntax.
* Use of dol_eval with parameter $returnvalue=0 is deprecated.
* The signature for all ->delete() method has been modified to match the modulebuilder template (so first param is now always $user), except
  the delete for thirdparty (still accept the id of thirdparty to delete as first parameter). Will probably be modified into another version.
* Route for API /thirdparties/gateways has been renamed into /thirdparties/accounts to better match the api object name.
* The AGENDA_ENABLE_DONEBY hidden option has been removed. So $userdoneid in actioncomm class is deprecated. Please use $userownerid instead. Also,
  the deprecated field $fk_user_done in actioncomm table is removed. Please use $fk_user_action instead.
* The table commande_fournisseur_dispatch has been renamed into receptiondet_batch to better match its goal and the field fk_commande
  and fk_commandefourndet were renamed into fk_element and fk_elementdet
* Removed trigger BILLREC_CREATEBILL. This trigger was not a CRUD event. If you used it, you can already use the trigger BILL_CREATE and
  test that ($object->fac_rec > 0) to know if creation trigger is from a recurring invoice or not. Also this old trigger was never enabled
  into table llx_c_action_trigger.
* Renamings in expedition line table and class, fk_origin_line is now fk_elementdet in table and class.
* The signature of method fetch() of class CompanyBankAccount has been modified to match the signature of method Account->fetch()

Dolibarr ERP & CRM is Open Source software. You can download, use and redistribute it at any time. Do you want to test the latest version of Dolibarr?