github Dolibarr/dolibarr 20.0.0

4 hours ago

***** 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: Module WebPortal experimental
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: Accountancy - Auto-determine piece number in FEC import (#29672)
NEW: Accountancy - Option to transfer only reconciled lines from bank (#29408)
NEW: Accountancy - Separation of accounting default account for salary and expense report
NEW: Various payment - Use list of accounting account when edit (#27992)
NEW: Add option to change all service dates at once
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 constant TAKEPOS_ALTERNATIVE_PAYMENT_SCREEN
NEW: add constant TICKETS_NO_COMPANY_ON_FORM
NEW: add constant VATUPDATE_NO_TRANSACTION
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 MAIN_USE_FULL_TEXT_INDEXATION
NEW: Add option PDF_ADD_POSITION
NEW: Add option position['find'] to DolEditor (#29546)
NEW: Add option THIRDPARTY_MIN_NB_PROF_ID and THIRDPARTY_MAX_NB_PROF_ID
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 SMTP AUTH method PLAIN
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 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 MAIN_DISCARD_NEWD_PROJECTS_IN_SELECT
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: functionality 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: 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: 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 (cti.dolibarr.org)
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: 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: Situation invoice - Add new official progressive mode - (constant INVOICE_USE_SITUATION = 2)
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 AFTER_VAT_UPDATE
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)

WARNING:

The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:

  • If a filter is defined into and extrafields "Select from a table", this filter MUST use the Universai Search Filter syntax (field:=:value) instead of field=value.
    See https://wiki.dolibarr.org/index.php?title=Universal_Search_Filter_Syntax
  • The parameter $filter of methods fetchAll() does not accept array of SQL commands but must be a string of an Universal Search Filter syntax.
    See https://wiki.dolibarr.org/index.php?title=Universal_Search_Filter_Syntax
  • Some API HTTP return code were moved from 401 to 403 to better follow REST specification.
  • More class properties (with old name in french) are now deprecated in favor of the property name in english.
  • 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.
  • Ldap class methods connect_bind() & dump_content() have been renamed
  • 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()

Don't miss a new dolibarr release

NewReleases is sending notifications on new releases.