htdocs/core/class/cunits.class.php 88 Property CommonDict::$active (int) does not accept string.
htdocs/core/class/cunits.class.php 415 Method CUnits::getUnitFromCode() should return int but returns string.
* Qual: Backport pre-commit to 17.0
Backport the pre-commit tool to bring extra checks to the older versions
so that they are fixed earlier before merging in upper versions.
Other PRs will be created for backporting to 18.0 and 19.0.
The PRs should be accepted in reverse order:
- develop;
- 19.0:
- 18.0;
- 17.0.
That should avoid merge conflicts and ensure that options (and ignored
messages or steps) are adapted to the version branch.
* Qual: Backport pre-commit to 18.0
# Qual: Backport pre-commit to 18.0
Backport the pre-commit tool to bring extra checks to the older versions
so that they are fixed earlier before merging in upper versions.
Other PRs will be created for backporting to 18.0 and 19.0.
The PRs should be accepted in reverse order:
- develop;
- 19.0:
- 18.0;
- 17.0.
That should avoid merge conflicts and ensure that options (and ignored
messages or steps) are adapted to the version branch.
* Qual: Backport pre-commit to 19.0
# Qual: Backport pre-commit to 19.0
Backport the pre-commit tool to bring extra checks to the older versions
so that they are fixed earlier before merging in upper versions.
Other PRs will be created for backporting to 18.0 and 19.0.
The PRs should be accepted in reverse order:
- develop;
- 19.0:
- 18.0;
- 17.0.
That should avoid merge conflicts and ensure that options (and ignored
messages or steps) are adapted to the version branch.
I detected quite a few bugs, absence of token, error in class definition on certain page...
I don't understand how we could declare this module stable overnight without having a minimum of testing it.
# Fix: Change TCPDF::_out to public because of pdf.lib.php
TCPDF::_out is used 2 times as ->_out(...) in htdocs/core/lib/pdf.lib.php.
Changing php.lib.php requires more analysis. Making TCPDF::_out public is
the quick solution.
# Fix: formmail - add_attached_files - argument name consistency
Phan determined suspicious naming as arg #2 to add_attached_files is while
that was the name for the first argument by the caller.
Also, on examination, only the first parameter is needed as add_attached_files
handles the other two in the same manner.
# Fix: files.lib.php - Add optional sort parameter to array_multisort for static tool check
Phan flags the call to array_multisort as suspicious - adding the optional sort parameter
avoids this.
# Fix: Do not reuse same variable names in inner scope foreach.
Phan reports: PhanPluginLoopVariableReuse: Variable used in loop was also used in an outer loop
# Qual Add .phpcs.xml.dist
This configuration file at the root still references the configuration
file used in the CI flows, but it allows running 'phpcs' from the root
without having to specify anything else than the files you want to check.
The testContratCreate() is using the default value for Contrat::socid,
which is defined by Contrat::initAsSpecimen to `0`. But if no companies
have been created, the test will fail with the following error:
Failed asserting that 0 is less than -1.
Or with the additional logging:
UnknownError: ERROR: 23503: insert or update on table "llx_contrat" violates foreign key constraint "fk_contrat_fk_soc"
DETAIL: Key (fk_soc)=(1) is not present in table "llx_societe".
SCHEMA NAME: public
TABLE NAME: llx_contrat
CONSTRAINT NAME: fk_contrat_fk_soc
LOCATION: ri_ReportViolation, ri_triggers.c:2596 -,
Failed asserting that 0 is less than -1.
The test doesn't really depends on specific test data so we can create
the company directly instead.
The testCompanyBankAccountCreate() is using the default value for
CompanyBankAccount::socid, which is defined by
CompanyBankAccount::initAsSpecimen to `0`. But if no companies have been
created, the test will fail with the following error:
Failed asserting that 0 is less than -1.
Or with the additional logging:
ERROR: 23503: insert or update on table "llx_societe_rib" violates foreign key constraint "llx_societe_rib_fk_societe"
DETAIL: Key (fk_soc)=(1) is not present in table "llx_societe".
SCHEMA NAME: public
TABLE NAME: llx_societe_rib
CONSTRAINT NAME: llx_societe_rib_fk_societe
LOCATION: ri_ReportViolation, ri_triggers.c:2596, ERROR: 23503: insert or update on table "llx_societe_rib" violates foreign key constraint "llx_societe_rib_fk_societe"
DETAIL: Key (fk_soc)=(1) is not present in table "llx_societe".
SCHEMA NAME: public
TABLE NAME: llx_societe_rib
CONSTRAINT NAME: llx_societe_rib_fk_societe
LOCATION: ri_ReportViolation, ri_triggers.c:2596
Failed asserting that 0 is less than -1.
The test doesn't really depends on specific test data so we can create
the company directly instead.
The testCommandeCreate() is using the default value for Commande::socid,
which is defined by Command::initAsSpecimen to `0`. But if no companies
have been created, the test will fail with the following error:
Failed asserting that 0 is less than -1.
Or with the additional logging:
ERROR: 23503: insert or update on table "llx_commande" violates foreign key constraint "fk_commande_fk_soc"
DETAIL: Key (fk_soc)=(1) is not present in table "llx_societe".
SCHEMA NAME: public
TABLE NAME: llx_commande
CONSTRAINT NAME: fk_commande_fk_soc
LOCATION: ri_ReportViolation, ri_triggers.c:2596,
Failed asserting that 0 is less than -1.
The test doesn't really depends on specific test data so we can create
the company directly instead.
If the database triggered a failure, it wasn't reported in the tests
because $this->error was not set. Conversely, the error was always
printed through dol_print_error() whose documentation explicitely states
that it should not be used for class and $this->error should be used
instead.
https://github.com/sumup/sumup-android-api
VS https://github.com/sumup/sumup-ios-url-scheme
The amount field is deprecated on the Android API but not on the iOS API. The iOS API does not support the total field, only the Android API does support the total field. Hopefully, the Android API only supports the amount field that is only partially deprecated on the Android API. For maximum compatibility with both Android/iOS SumUp app, best to keep this field as "amount" rather than "total".
Should also make merge of #24911 after release easier. Note: Adding a
control on screen must be done after adding control into so we will
start by adding checkSellOrEatByMandatory() into create/update of
productlot.
* Translate comment
* Fix undefined variable
* Fix undefined variable
* Fix undefined variable - better fix
* Add translation of ProfId so that it is not displayed in admin
* Remove manual definition and call getDefaultImageSizes() instead
* fix bookcal public page
* fx booking link with calendar
* booking list on calendar_card
* fix display on wrong values
---------
Co-authored-by: Hystepik <lucas.marcouiller@gmail.com>
* New variable to accept a deposit invoice as available credit even unpaid
In many activities, the final invoice must be issued while the requested deposit has not yet been paid.
Often it is the payment deadlines which generate this situation (for example in the finishing work)
* Update card.php
* Update card.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW functionality for save movement reversed
* remove variable
* Fix variable to be properly validated or sanitized
* cast variable
* Fix for cast variable injection on SQL
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* fix PHP STAN error on MO class
* fix PHP STAN error on MO class
* Update mo.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* added recursive deletion option for child MOs + added recursive recovery method for child MOs
* add number of MOs in form_confirm
* update to delete number of mo childs if is null
* added checking of an infinity loop
* review PR
* add extrafields for mo lines
* update
* update for travis
* Update 18.0.0-19.0.0.sql
* Update functions.sql
* Delete htdocs/install/mysql/tables/llx_mrp_production_extrafields.key.sql
* Delete htdocs/install/mysql/tables/llx_mrp_production_extrafields.sql
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* fix select all availabilities days
* generate array all availabilities ranges
* booking with new way
---------
Co-authored-by: Hystepik <lucas.marcouiller@gmail.com>
* fix: add /build/phpstan/phpstan/phpstan/vendor/bin and custom bootstrap.php in gitingnore and review README
* add other custom files
* add other custom files
* NEW Accountancy - Added management of tax period closures
* Unlock function fiscal year & closure admin page
* Fix travis
* Fix Visibility function
* Fix indent & space
* Fix indent
* Fix travis
* Update text
* Add action to generate has new entry with sub-ledger accounts details
* Return code
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
Was reported by phan as:
htdocs/product/stock/stocktransfer/class/stocktransfer.class.php:483 PhanUndeclaredFunction Call to undeclared function \ empty()
* Correction On contract class files "Access to an undefined property"
* Correction On contract class files "Access to an undefined property"
* Update stocktransfer.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW: Add support for supplier recurring invoice
* NEW: Add support for supplier contract recurring invoice
* Add tests
* We must not force supplier to become customer
* FIX PHPCS
* fix wrong test
* NEW : extrafields based on fontawesome
allow to define a field contain a icon based on fontawesome
on input we have an icon picker
on ouput we display the icon
* Update extrafields.class.php
* Update extrafields.class.php
* Update extrafields.class.php
* added recursive deletion option for child MOs + added recursive recovery method for child MOs
* add number of MOs in form_confirm
* update to delete number of mo childs if is null
* added checking of an infinity loop
* review PR
* add extrafields for mo line with SQL
control and a change in priority of lines processed. This generated
conflicts in merge process with old version. So I try to report the most
important (the fix) manually.
* NEW: Propagate invoice extrafields into template invoice
Also rearrange form fields to be on par with other invoice creation screens look and feel
* fix PHPCS
* added sorting of product price list by customer
* add search and sort in same time
* Update price.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Add missing info for proper use and creation of template invoice
* Add missing info for proper use and creation of template invoice
* fix trans of generated invoice
As commented in #23782 this update is to clean and clarify the code for future evolution of stocktodate.
In fact the calculated value in the SQL request is the current stock value and not the estimated stock value at date value.
Therefore I changed in SQL request the estimatedvalue to currentvalue and reused as a variable for a better understanding and for future use (other PR) as it will be interesting to get a comparison between stockatdate value to currentstock value. Also some others changes are required to improve the page speed.
* New option to define the start period of a first subscription
add default date of starting (year, month or subscription payment)
add delay for subscription period
* Update member.php
* Fix period for statistique if delay is set
* NEW functionality for request_transfer
* fix problem
* fix problem in transferBank
* fix request sql
* ajust functions for salary invoices
* add badges for each onglet invoice and salary
* Fix update in table bon_prelevement for amount
* Fix in section virement_request list of bonPrelevements
* for prelevemts lignes
* for prelevemts lignes
* update sql for get lignes prelevement with correct info
* update sql for get lignes prelevement with correct info
* add function for check if invoice salaries
* adjust bonprelevement for get salaries
* fix incoherences in create function for class BonPrelevement
* fix request sql for insert in prelevement ligne table
* fix problems and incoherences
* remove parametre from function
* add parenthensises for cast in sql request
* disable button when make demande virement
* fix condition for type
* fix conflit "
* fix whitespace
* fix condition for sourcetype
* fix page demandes.php for list salaries invoices
* add prefix db
* fix incoherences for conditions
* Update virement_request.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Unit Management for products in bom and mo
* WIP
* Unit in to produce tab
* FIX wip
* float val
* Fix Travis
* fk_unit type int
* Clean code
* Clean code
* FIX code sniffer
* Update llx_mrp_production.sql
* Update 18.0.0-19.0.0.sql
---------
Co-authored-by: atm-lena <lena.papazian@atm-consulting.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* FIX handling of the $filter parameter for fetchAll: the previous version can result in invalid SQL
* Remove #[AllowDynamicProperties] attribute from Conf class (cf. PR #25931)
* Ensure sql-building strings are detectably sanitized to avoid PR rejection
* FIX#24367 - membership duration is the default duration adhtype
* avoid error for old database
* avoid error for old database
* Update paymentok.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW shipment can include service (for information and invoicing)
add an optionnal option for include service on shipment because some business need invoicing only from shipment so actually dont get services on invoice autmatically.
this is a first PR for validation of this secret option before upload other PR
* Update shipment.php
* Update card.php
* NEW : customize position in complete_head_from_modules
* fix parenthesis search
* fix position search
---------
Co-authored-by: Christophe Battarel <christophe@altairis.fr>
* added recursive deletion option for child MOs + added recursive recovery method for child MOs
* add number of MOs in form_confirm
* update to delete number of mo childs if is null
* added checking of an infinity loop
* review PR
* git init
* Fixing style errors.
* Add split of serial defaults
* Fix remaining part
* Fix on remaining decimal part
* Revert "Fix on remaining decimal part"
This reverts commit b91f884ddc.
* Revert "Fix remaining part"
This reverts commit 35a6631b29.
* Revert "Add split of serial defaults"
This reverts commit 37009afcbc.
* Remove split for serial numbers and replace by error message.
* Fix stickler CI
* Fix missing product id for lot number fetch
* Allow update for data consistency, but show warning in stock card and stocks by lot/serial list
---------
Co-authored-by: Francis Appels <francis@vps399724.ovh.net.novalocal>
Co-authored-by: stickler-ci <support@stickler-ci.com>
* Add a PDF option to show barcode number of product
* Add space before and after IF keyword
* fix error phpcs
* add barcode label before barcode number
* Use outputlangs and not langs
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* workflow: use setErrorsFromObject when suitable
* workflow: shipping: use early return in for loop
* workflow: shipping: combine to previous early return
* workflow: shipping: reindent after last changes
No functional changes.
* workflow: reception: use early return when suitable
* workflow: reception: use early return
* workflow: reception: reindent after last changes
No functional changes.
* workflow: ticket: use early return
* workflow: ticket: combine condition through an early return
* workflow: ticket: reindent after last changes
No functional changes.
* workflow: propal: remove else condition after terminal if
* Update interface_20_modWorkflow_WorkflowManager.class.php
* Update interface_20_modWorkflow_WorkflowManager.class.php
* Update interface_20_modWorkflow_WorkflowManager.class.php
* Update interface_20_modWorkflow_WorkflowManager.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Default customer, category and product when enable TakePOS
* Update cashdesk.lang
* Default category and product when enable TakePOS
Easy setup for TakePOS. Create a category and product when TakePOS is enabled. It checks if TakePOS has already been configured to avoid recreating the category and productif it has already been created.
* Update modTakePos.class.php
* Update modTakePos.class.php
* Update cashdesk.lang
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* societe: add missing model_pdf field
The field is used by the class but wasn't declared.
* societe: expose Societe::mergeCompany
The code is directly copied from societe/card.php with as less changes
as possible.
The original code came from deb91ad7c1.
* societe: remove fields from property copy
$phone_pro and $fk_project are not existing for societe. This was added
from deb91ad7c1.
* SocieteTest: test the merge functionality
This test is a simple smoke test to check that the mergeCompany() will
work correctly on simple case and actually merge the details of the
company.
More complex deduplication pattern with objects referencing the deleted
Societe object, will be written for each of the different object class
in their respective test file.
* societe: card: use the new mergeCompany function
Since the code is almost the same, there should be no differences in
behaviour right now.
* societe: api_thirdparties: use Societe::mergeCompany()
* societe: fix issue when merging companies
When a Societe object is merged against another, its related objects are
supposed to reference the new Societe object so that the databse doesn't
raise foreign key errors.
The list references the objects that need to be transformed, and
Reception objects weren't part of this list.
Fix#26272
* ReceptionTest: check company merge hook
Before a Societe object is destroyed from the database, every object
referencing the FK should be destroyed or should reference another
object.
In the case of two companies being merged, the case arises and Reception
objects need to be moved to the new company. This commit brings a
non-regression test for this case.
Refs #26272
* Update societe.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* FIX - Search product category on list det order
* Search for tag/category
* add search Operator
* Clean
---------
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW : Add custom Text on footer total
This function allows you to add a small text to each invoice below the total.
Just add a miscellaneous parameter to activate it
(to wish the happy new year or an indication of invoicing)
* Update pdf_crabe.modules.php
* Update pdf_crabe.modules.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW Generic doc template for donations
Can be used to create written acknowledgments to substantiate a charitable
contribution in the United States, but it is not specific to the United
States.
Multi-lingual.
If the global setting DONATION_NOTE_PUBLIC is greater than 0, the public
note for the donation is also included. This can be used in the United
States to notate if a donation is not entirely deductible.
* FIX Style errors.
* FIX A new typo
## Description:
This Pull Request fixes a typographical error in the README.md file.
## Changes Made:
- Corrected "recommanded" to "recommended" and "Receiption" to "Reception" in the README.md file.
## Additional Information:
This fix is not related to any existing issue. It's a minor typo that I noticed while reviewing the README.
Thank you for considering this contribution.
* QUAL use switch case instead of if elseif statements for actions
* Deleted unnecessary action comments
* Added default case
* Added contributor details
---------
Co-authored-by: William Mead <william.mead@manchenumerique.fr>
* NEW : When an user unset the batch management of products, transformation of each batch stock mouvement in global stock mouvement
* FIX : Alert on deserialize product
* FIX : Correction of the trad
* Fixing style errors.
* FIX : PR returns
* FIX : using llx_product_batch table
* FIX : langs
* Fixing style errors.
* FIX : $value must be an absolute value
* FIX : init $inventorycode before while loop
* Fixing style errors.
* FIX : "Yes (unique serial number required)" choice must not be available on product edit if its current status batch is "Yes (lot required)"
* Fixing style errors.
* FIX : Just display a message when we change from batch to serial
* Fixing style errors.
* Update card.php
* Update card.php
* Update product.class.php
* Update product.class.php
---------
Co-authored-by: Adrien Raze <adrien.raze@atm-consulting.fr>
Co-authored-by: stickler-ci <support@stickler-ci.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* reception: reOpen: mirror $this->statut in $this->status
$this->statut is the deprecated variable, $this->status should also get
the correct value.
* reception: setDraft: mirror $this->statut in $this->status
$this->statut is the deprecated variable, $this->status should also get
the correct value.
* reception: add missing $weight field
Fix warning:
Undefined property: Reception::$weight
* societe: add country_id field
* reception: use getDolGlobalInt when suitable
Using empty() implies that the value actually exists on the stdClass at
$conf->global, but it's not always the case. getDolGlobalInt will handle
this smoothly by checking first, which solves warnings like those:
Undefined property: stdClass::$STOCK_CALCULATE_ON_RECEPTION
* ReceptionTest: add new test
The test checks the usual workflow of the Reception class, with, on the
one hand, the common CRUD operations:
- create
- fetch
- update
- delete
And on the other hand, the status handling for Reception:
- valid: STATUS_DRAFT -> STATUS_VALID
- setClosed: STATUS_VALID -> STATUS_CLOSED
- reOpen: STATUS_CLOSED -> STATUS_VALID
- setDraft: STATUS_VALID -> STATUS_DRAFT
The stocks lines are not tested yet, and the error cases, like any other
transition not described above, are not tested either. The permissions
for some of the operations are hardcoded for the test and there is no
failure check when the permission is not set yet.
* Define DoliDB::VERSIONMIN as mandatory constant in subclass
See https://stackoverflow.com/a/43134924/6378634
This also helps static tool checks
* fixup! Define DoliDB::VERSIONMIN as mandatory constant in subclass
* NEW : Date d'entree en stock sur les exped au moment de la création
* add en trad
* Ajout conf pour la date d'entree en stock
* add trad
* trad
* Fixing style errors.
* modif for only full group by
---------
Co-authored-by: stickler-ci <support@stickler-ci.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW - Right for stats orders
* NEW: use account address in sepa mandate (#23642)
* New: allow to display account address in pdf sepa mandate. Fix: use ->proprio because ->account_owner does not exist.
* Stickler fix
---------
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
Co-authored-by: thomas-Ngr <tnegre@open-dsi.fr>
* NEW subproduct triggers in product class
* add notrigger parameter to functions
* add doc comment for new parameters
---------
Co-authored-by: Benjamin Falière <benjamin.faliere@altairis.fr>
* Position defined in dictionnary must be main sort criterion
The position defined in the dictionary must be the main sort criterion.
* Use AGENDA_SORT_EVENT_TYPE_BY_POSITION_FIRST hidden conf to sort by position
* Show product description
shows product-description on list of products when hover the product-ref
* Update product.class.php
limiting the display to 5 lines
* NEW - Line be most height in list
* Param for height row
* Update style.css.php
* Update style.css.php
---------
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* FIX (WIP) remove DISTINCT when MULTICOMPANY_TRANSVERSE_MODE is used
* FIX optimize code
* FIX replace with $this->db->prefix()
* FIX works on uniformize MULTICOMPANY_TRANSVERSE_MODE
* FIX syntax error
* add product and service from invoice object line
* Typo
* compatibility with other modules than billing
make "add production and service from invoice" compatible with modules other than billing
* using $object->id instead of param
making it usable with all modules and freshly created objects
---------
Co-authored-by: aetiom <8208943+aetiom@users.noreply.github.com>
* FIX - getDolGlobalInt('MAIN_CHECKBOX_LEFT_COLUMN') for list det order
* FIX $totalarray['nbfield']
---------
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
* Creation and modification date range filter for thierdparties
* Order for good looking
* Creation and modification date range filter for projects
* conflict
* Update list.php
* Update list.php
---------
Co-authored-by: Faustin <faustin.boitel@bordeaux-inp.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* NEW - create a product from a free line in a document
* Change
* clean code
* Update objectline_create.tpl.php
---------
Co-authored-by: Anthony Berton <34568357+bb2a@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
Constat : L'api ne renvoie pas le même resultat que l'interface dolibarr. la construction de la requete est incorrecte.
Requete obtenu avant correctif:
SELECT t.rowid, sc.fk_soc, sc.fk_user, t.fk_soc
FROM llx_commande_fournisseur as t,
llx_societe_commerciaux as sc
WHERE t.entity IN (1) AND t.fk_soc = sc.fk_soc AND t.rowid = sc.fk_soc AND sc.fk_user = 4
ORDER BY t.rowid ASC
LIMIT 101
Le t.rowid = sc.fk_soc compare des endives et des parpaings. => suppression de la ligne 143 à 145.
Et ensuite correction des conditionnelles pour construire une requete correcte.
htdocs/core/modules/printing/modules_printing.php 96 Access to an undefined property PrintingDriver::$name.
htdocs/core/modules/printing/modules_printing.php 100 Access to an undefined property PrintingDriver::$desc.
htdocs/core/modules/printing/printgcp.modules.php 246 Access to an undefined property printing_printgcp::$resprint.
htdocs/core/modules/printing/printgcp.modules.php 540 Access to an undefined property printing_printgcp::$resprint.
htdocs/core/modules/printing/printipp.modules.php 241 Access to an undefined property printing_printipp::$resprint.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=113,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=528,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=532,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=533,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=678,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=718,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=722,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=723,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=812,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=817,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=817,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=819,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/modules/expedition/doc/pdf_rouget.modules.php,line=820,col=0::Access to an undefined property pdf_rouget::$posxqtytoship.
::error file=htdocs/core/class/cunits.class.php,line=75,col=0::Access to an undefined property CUnits::$libelle.
::error file=htdocs/core/class/cunits.class.php,line=302,col=0::Access to an undefined property CUnits::$libelle.
'develop_add_all_id_prof_checker_for_code_compta_customer_and_supplier'
of https://github.com/OPEN-DSI/dolibarr into
OPEN-DSI-develop_add_all_id_prof_checker_for_code_compta_customer_and_supplier
company_default_bank_iban et
company_default_bank_bic ne sont pas substitué dans les templates, ces champs sont calculés dans get_substitutionarray_object, mais vide maintenant, sans doute suite à l'introduction de compte bancaire multiples pour les fiches clients
* product_card problem unexpected tocken
* new update for function generate_doc
* new function for create dictionnary
* add function for create new dictionary
* fix problem
* update function for building correct string
* optimize function and fix incoherences
* optimize function and fix incoherences
* Revert "optimize function and fix incoherences"
This reverts commit ecbd902a9f.
* first push : booking can be done
* add verification of booking aleardy booked
* add page after booking
---------
Co-authored-by: Hystepik <lucas.marcouiller@gmail.com>
* Fix#25416 :the email subject is not replaced when an email template is applied in tickets
* Update html.formticket.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Use SSL connection to MySQL server if server name starts with ssl://
* Update mysqli.class.php
---------
Co-authored-by: Olivier Lesueur <o.lesueur@crm.fnattp.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* product_card problem unexpected tocken
* add field employees for sort and select for hide & show fields
* button show & hide
* fix conflit
* fix conflit
* fix conflit
* Fix : set_as_client can't use prospect/customer value if disabled (#25380)
* fix missing { on societe.class.php
---------
Co-authored-by: Maxime Kohlhaas <maxime@atm-consulting.fr>
* New|NEW new option for hide the footer of tickets on the public interface
* fix condition in index
---------
Co-authored-by: FLIO <oflifli@nltechno.com>
* FIX: workflow for closing supplier order dn't work (wrong source type)
* FIX: sql error when passing origin and origin id, no need to pass theses values
$object->origin is set to "commandeFournisseur', and it's definitively not working with the setStatus method.
SQL error : Table 'dolibarr.llx_commandeFournisseur' doesn't exist
I suppose origin should never be set to commandeFournisseur, but 'order_supplier' instead. Also, setStatus() $elementType is meant to be a table_element value, not an element value.
* Update interface_20_modWorkflow_WorkflowManager.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* FIX Selection of customer on second or more parallel sell in TakePOS
* FIX Bad management of localtax on TakePOS due to typo error in var name
* FIX Missing localtaxes on receipt in TakePOS
* Show nb docs in list of suppliers invoices
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
* Fix:warehouses table name is entrepot which does not hold an fk_soc field, so _checkAccessToResource returns always false and must be disabled before fix.
* Fix:warehouses table name is entrepot which does not hold an fk_soc field, so _checkAccessToResource returns always false and must be disabled before fix.
* Fix check params
It is sufficient to fix check parameters to get it working
* Update api_warehouses.class.php
---------
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
@@ -7,18 +7,18 @@ Bug reports and feature requests
<aname="not-a-support-forum"></a>*Note*: **GitHub Issues is not a support forum.** If you have questions about Dolibarr / need help using the software, please use [the forums](https://www.dolibarr.org/forum.php). Forums exist in different languages.
Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/issues).
Default **language here is english**. So please prepare your contributions in english.
Default **language here is English**. So please prepare your contributions in English.
1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem.
2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request.
3. Tell us the version you are using! (look at /htdocs/admin/system/dolibarr.php? and check if you are using the latest version)
4. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible).
4. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging information whenever possible).
5. Delete unnecessary submissions.
6.**Check your Message at Preview before sending.**
<aname="code"></a>Code
<aname="code"></a>Submit code
---------------------
### Basic workflow
@@ -35,20 +35,22 @@ Default **language here is english**. So please prepare your contributions in en
Unless you're fixing a bug, all pull requests should be made against the *develop* branch.
If you're fixing a bug, it is preferred that you cook your fix and pull request it
against the oldest version affected that's still supported.
If you're fixing a bug, it is preferred that you cook your fix and pull request it against an oldest version affected.
We officially support versions N, N − 1 and N − 2 for N the latest version available.
We recommend to push it into N - 2 for N the latest version available, if not possible into version N - 1, and finally into develop.
This is just a recommendation, currently, if you push a bug fix on a very old version, it is still merged and propagated into
higher versions.
Choose your base branch accordingly.
The rule N - 2 is just a tip if you don't know which version to choose to get the best the best compromise between ease of correction
and number of potential beneficiaries of the correction.
### General rules
Please don't edit the ChangeLog file. File will be generated from all commit messages during release process by the project manager.
Please don't edit the ChangeLog file. This file is generated from all commit messages during release process by the project manager.
### <a name="commits"></a>Commits
Use clear commit messages with the following structure:
```
```plaintext
[KEYWORD] [ISSUENUM] DESC
LONGDESC
@@ -66,10 +68,13 @@ where
#### Keyword
In uppercase if you want to have the log comment appears into the generated ChangeLog file.
The keyword can be ommitted if your commit does not fit in any of the following categories:
The keyword can be omitted if your commit does not fit in any of the following categories:
- Fix/FIX: for a bug fix
- New/NEW: for an unreferenced new feature (Opening a feature request and using close is prefered)
- Close/CLOSE: for closing a referenced feature request
- New/NEW: for an unreferenced new feature (Opening a feature request and using close is preferred)
- Perf/PERF: for a performance enhancement
- Qual/QUAL: for quality code enhancement or re-engineering
#### Issuenum
If your commit fixes a referenced bug or feature request.
@@ -90,19 +95,19 @@ Feel free to express technical details, use cases or anything relevant to the cu
This section can span multiple lines.
Try to keep lines under 120 characters.
If your PR is a change on interface, you must also paste a screenshot showing the new screen.
#### Examples
<pre>
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
or
NEW|New Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #456)
or
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
or
NEW|New|QUAL|Qual|PERF|Perf Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #456)
or
Short description (when the commit is not introducing feature nor closing a bug)
Long description (Can span accross multiple lines).
Long description (Can span across multiple lines).
</pre>
### Pull Requests
@@ -119,7 +124,7 @@ Also, some code changes need a prior approbation:
* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-jedi in your issue) to see if such a library can be accepted.
* if you add a new tables or fields, you MUST first submit a standalone PR with the data structure changes you plan to add/modify (and only data structure changes). Start development only once this data structure has been accepted.
* if you add new tables or fields, you MUST first submit a standalone PR with the data structure changes you plan to add/modify (and only data structure changes). Start development only once this data structure has been accepted.
Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow every developer discuss about the PR (A label is added in such a case).
@@ -130,7 +135,8 @@ If your PR has errors reported by the Continuous Integration Platform, it means
If the PR is valid, and is kept open for a long time, a tag will also be added on the PR to describe the status of your PR and why the PR is kept open. By putting your mouse on the tag, you will get a full explanation of the tag/status that explain why your PR has not been integrated yet.
In most cases, it gives you information of things you have to do to have the PR taken into consideration (for example a change is requested, a conflict is expected to be solved, some questions were asked). If you have a yellow, red flag of purple flag, don't expect to have your PR validated. You must first provide the answer the tag ask you. The majority of open PR are waiting an action of the author of the PR.
Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source projects (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%. A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level.
Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source projects (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%.
A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level.
### Resources
@@ -144,7 +150,7 @@ All other translations are managed online at [Transifex](https://www.transifex.c
Translations done on transifex are available in the next major release.
Note: Sometimes, the source text (english) is modified. In such a case, the translation is reset. Transifex assume that if the original source
Note: Sometimes, the source text (English) is modified. In such a case, the translation is reset. Transifex assume that if the original source
has changed, the translation is surely no more correct so must be done again. But old translation is not lost and you can use the tab "History"
to retrieve all old translation of a source text, and restore the translation in one click with no need to retranslate it if there is no need to.
*This is a template to help you make good pull requests. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.*
*Please:*
- *only keep the "FIX", "CLOSE" or "NEW" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
- *only keep the "FIX", "CLOSE", "NEW", "PERF" or "QUAL" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
- *follow the project [contributing guidelines](/.github/CONTRIBUTING.md)*
- *replace the bracket enclosed texts with meaningful information*
# Disabled unused code. In most cases, we want to keep it.
unused_code:
enabled:false
deprecation_checks:
enabled:true
useless_function_calls:
enabled:true
metrics_lack_of_cohesion_methods:
enabled:true
metrics_coupling:
enabled:true
stable_code:
namespace_prefixes:[]
classes:[]
doctrine_parameter_binding:
enabled:false
doctrine_entity_manager_injection:
enabled:false
symfony_request_injection:
enabled:false
doc_comment_fixes:
enabled:true
reflection_fixes:
enabled:false
use_statement_fixes:
enabled:true
remove_unused:true
# Whether you would like multiple imports in one USE statement to be preserved, e.g. ``use A, B;``.
preserve_multiple:false
# Whether you would like to preserve blank lines between use statements.
preserve_blanklines:false
order_alphabetically:false
# To use specific config for a specific path, use path_configs: (see example on page https://scrutinizer-ci.com/docs/configuration/tool_config_structure)
***** ChangeLog for 19.0.1 compared to 19.0.0 *****
FIX: 16.0 - parent company gets emptied when updating a third party from the card in edit mode (#28269)
FIX: 17.0: $num doesn't take trigger-modified newref into account, leading to inconsistencies if BILL_SUPPLIER_VALIDATE changes the invoice's ref (#28684)
FIX: #22948
FIX: #24265 regression cannot see all product on takepos (#28753)
FIX: #28205
FIX: #28251 Fixing subpermission name on api_multicurrencies.class.php (#28252)
FIX: #28369
FIX: #28429
FIX: #28491 (#28522)
FIX: #28518 (#28520)
FIX: #28533 Mo::deleteLine removes the "main" MoLine if consumed line is delete (#28535)
FIX: #28564
FIX: Adding the dependencies list feature for extrafields "select" (#28549)
FIX: Add new hidden conf "DISABLE_QTY_OVERWRITTEN" (#28523)
FIX: Amount of localtaxes in foreign currency was wrong on screen and PDF
FIX: an error in a complex else condition
FIX: avoid error "Column 'entity' in where clause is ambiguous" (#28270)
FIX: avoid warning "error parsing attribute name in Entity" (#28543)
FIX: Bad column for total in bom list
FIX: Bad condition on button back to draft on recruitment job.
FIX: Bad CRLF when sending text only content. Fix dol_htmlwithnojs()
FIX: Bad picto on list of permission of a user when user not admin
FIX: bad timzeone for the start/end date of an event
FIX: Better test on validity of compute field syntax with parenthesis
FIX: close #28279
FIX: Count of virtual stock at Services and MoLine with disabled stock change (#28580)
FIX: disabled pito of menu must be greyed.
FIX: Don't display column when it's out of date (#28271)
FIX: duplicate with lines: 414-416 (#28358)
FIX: edit bank suggested for credit transfer payment in invoice setup
FIX: Error When cloning fourn price no default value for tva_tx (#28368)
FIX: fatal error Unsupported operand types when recording load payment
FIX: Fix create shipping with product who have negative stocks on warehouse but the negative stock transfert is allowed (#26217)
FIX: migration missing 2 columns in llx_resource and 1 in llx_user
FIX: missing trans
FIX: notification module: for supplier orders (any of the 3 triggers), user can choose an e-mail template in conf, but the conf is not used when sending the notification (#28216)
FIX: Not trancate the multicurrency rate shown on cards (even if the global MAIN_MAX_DECIMALS_SHOWN is set to 0) (#28211)
FIX: Option MAIN_DOC_USE_TIMING can be a string with date format
FIX: Payment on customer invoice - Remove accountid in url if empty for apply default value (#28156)
FIX: Pb in redirect of a website page in USEDOLIBARRSERVER mode
NEW: Add triggers COMPANY_RIB_XXX already present in companybankaccount.class.php
NEW: Add triggers on import success
NEW: Add trigger when deleting a bank account line
NEW: subproduct triggers in product class (#25142)
NEW: ModuleBuilder: add section changeLog to Doc in MB
NEW: ModuleBuilder: Add api url to documentation in ModuleBuilder
NEW: ModuleBuilder: Checkin comments begin and end before each actions
NEW: ModuleBuilder: edit properties in description tab for ModuleBuilder
NEW: ModuleBuilder: remove dictionary in ModuleBuilder
NEW: ModuleBuilder: add page for create dictionary
NEW: ModuleBuilder: add badge for each tabs
NEW: ModuleBuilder: for edit name of dictionnary and delete it in MB
NEW: 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.
***** ChangeLog for 18.0.5 compared to 18.0.4 *****
FIX: 17.0: deprecated field should only be a fallback
FIX: 17.0 - php8 warnings: test for $field existence before checking if it is null or empty
@@ -259,8 +575,8 @@ FIX: when adding new times on a survey, all hours would be erased.
***** ChangeLog for 18.0.0 compared to 17.0.0 *****
For uses:
---------
For users:
----------
NEW: PHP 8.2 compatibility (not yet complete).
NEW: Module Workstations Management upgraded to stable status.
NEW: Survey: Comment on survey is possible only after vote.
NEW: tables: llx_element_time to store time spent on several elements (mo, ticket...)
NEW: TakePOS: adapt category and product pictures sizes on TakePOS
NEW: TakePOS: limit load products in TakePOS
NEW: The batch for remind on due date can be setup for using validation date
NEW: The refresh link for imap collector is always visible
NEW: The upgrade process can be done by creating a file upgrade.unlock
NEW: Tickets: --Send an email when ticket assigned--
NEW: The refresh link for IMAP collector is always visible
NEW: Third-Party: use an ajax component to switch prospection status on thirdparty list
NEW: Tickets: Send a notification email when ticket assigned
NEW: Tickets: set ticket status to answered if the client has answered from the public interface
NEW: Tickets: added an option to display the progress of tickets on the public interface
NEW: Tickets: add link to thirdparty tickets history
NEW: Tickets: notify also the contributor affected to a ticket if a new message public is post (add global TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_ALSO_CONTRIBUTOR)
NEW: Upgrades: The upgrade process can be done by creating a file upgrade.unlock
NEW: Use a cache file for external RSS in calendar
NEW: Use by default the domain $dolibarr_main_url_root for SMTP HELO
NEW: use more recent model by default
NEW: Users: add a public virtual card page for each user
NEW: VAT can be modified during add of line
NEW: Website Module: Increment website counter on each page access in website module
NEW: write all fields and their properties in asciidoc format
NEW: Can add an array of several links in date selector
NEW: Option PDF_SHOW_PHONE_AFTER_USER_CONTACT to show phone after specific assigned contact on PDF
NEW: Option PDF_SHOW_EMAIL_AFTER_USER_CONTACT to show email after specific assigned contact on PDF
NEW: Website Module: Show counter of access of website in website list
NEW: Widgets: Show picto into the combobox of widgets
NEW: Widgets: Implement MAIN_ACTIVATE_FILECACHE on birthday widget
NEW: Widgets: Add widget "The next upcoming events"
NEW: Widgets: Add widget of open opportunities
NEW: use an ajax component to switch prospection status on thirdparty list
NEW: Add partial payment reason "withholding tax"
@@ -444,18 +751,28 @@ For developers or integrators:
NEW: Make it possible to select hours and minutes in form_confirm
NEW: add triggers on mailing
NEW: Add a trigger when create a shipping line batch and fix propagate missing errors
NEW: add function for listiong objects from directory
NEW: add function for listing objects from directory
NEW: add helplist property to describe fields of objects
NEW: add hook in loadLotStock() in html.formproduct.class.php file, add hook 'llxFooter', Add hook online sign
@@ -70,7 +70,7 @@ Note: *Le processus de migration peut être lancé manuellement et plusieurs foi
## CE QUI EST NOUVEAU
See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) file.
Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog).
## CE QUE DOLIBARR PEUT FAIRE
@@ -88,11 +88,11 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Gestion de contrats de services
- Gestion de stock et inventaires
- Gestion des expéditions
- Gestion des demandes de congès
- Gestion des demandes de congés
- Gestion des notes de frais
- Gestion de recrutement
- GED (Gestion Electronique de Documents)
- EMailings de masse
- E-Mailings de masse
- Réalisation de sondages
- Gestion d'adhérents
- Point de vente/Caisse enregistreuse
@@ -107,17 +107,17 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Support des codes barres
- Calcul des marges
- Connectivité LDAP
- Intégratn de ClickToDial
- Intégration de ClickToDial
- Intégration RSS
- Intégation Skype
- Intégration de système de paiements (Paypal, Stripe, Paybox...)
- Intégration Skype
- Intégration de système de paiements (PayPal, Stripe, Paybox...)
- …
### Divers
- Multi-langue.
- Multi-utilisateurs avec différents niveaux de permissions par module.
- Multi-devise.
- Multidevise.
- Peux être multi-société par ajout du module externe multi-société.
- Plusieurs thèmes visuels.
- Application simple à utiliser.
@@ -127,7 +127,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Génération PDF et ODT des éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
- Code simple et facilement personnalisable (pas de framework lourd; mécanisme de hook et triggers).
- Support natif de nombreuses fonctions spécifiques aux pays comme:
- La tax espagnole TE et ISPF
- La taxe espagnole TE et ISPF
- Gestion de la TVA NPR (non perçue récupérable - pour les utilisateurs français des DOM-TOM)
- La loi française Finance 2016 et logiciels de caisse
- La double taxe canadienne
@@ -139,7 +139,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
### Extension
Dolibarr peut aussi être étendu à volonté avec l'ajout de module/applications externes développées par des développeus tiers, disponible sur [DoliStore](https://www.dolistore.com).
Dolibarr peut aussi être étendu à volonté avec l'ajout de modules/applications externes développées par des développeurs tiers, disponible sur [DoliStore](https://www.dolistore.com).
## CE QUE DOLIBARR NE PEUT PAS (ENCORE) FAIRE
@@ -168,15 +168,15 @@ Voir le fichier [COPYRIGHT](https://github.com/Dolibarr/dolibarr/blob/develop/CO
## ACTUALITES ET RESEAUX SOCIAUX
Suivez le projet Dolibarr project sur les réseaux francophones
Suivez le projet Dolibarr sur les réseaux francophones
@@ -9,7 +9,7 @@ Dolibarr ERP & CRM is a modern software package that helps manage your organizat
It's an Open Source Software suite (written in PHP with optional JavaScript enhancements) designed for small, medium or large companies, foundations and freelancers.
You can freely use, study, modify or distribute it according to its licence.
You can freely use, study, modify or distribute it according to its license.
You can use it as a standalone application or as a web application to access it from the Internet or a LAN.
@@ -47,9 +47,9 @@ On GNU/Linux, first check if your distribution has already packaged Dolibarr.
- Check that your installed PHP version is supported [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
- Uncompress the downloaded .zip archive to copy the "dolibarr/htdocs" directory and all its files inside your web server root or get the files directly from GitHub (recommanded if you know git as it makes it easier if you want to upgrade later):
- Uncompress the downloaded .zip archive to copy the "dolibarr/htdocs" directory and all its files inside your web server root or get the files directly from GitHub (recommended if you know git as it makes it easier if you want to upgrade later):
`git clone https://github.com/dolibarr/dolibarr -b x.y` (where x.y is main version like 3.6, 9.0, ...)
`git clone https://github.com/dolibarr/dolibarr -b x.y` (where x.y is the main version like 3.6, 9.0, ...)
- Set up your web server to use "*dolibarr/htdocs*" as root if your web server does not have an already defined directory to point to.
@@ -57,7 +57,7 @@ On GNU/Linux, first check if your distribution has already packaged Dolibarr.
- From your browser, go to the dolibarr "install/" page
The URL will depends on how you web setup was setup to point to your dolibarr installation. It may looks like:
The URL will depends on how your web setup was setup to point to your dolibarr installation. It may look like:
`http://localhost/dolibarr/htdocs/install/`
@@ -71,7 +71,7 @@ On GNU/Linux, first check if your distribution has already packaged Dolibarr.
- Follow the installer instructions
### Saas/Cloud setup
### SaaS/Cloud setup
If you don't have time to install it yourself, you can try some commercial 'ready to use' Cloud offers (See [https://saas.dolibarr.org](https://saas.dolibarr.org)). However, this third solution is not free.
@@ -81,7 +81,7 @@ Dolibarr supports upgrading, usually without the need for any (commercial) suppo
- At first make a backup of your Dolibarr files & then [see](https://wiki.dolibarr.org/index.php/Installation_-_Upgrade#Upgrade_Dolibarr)
- Check that your installed PHP version is supported by the new version [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
- Overwrite all old files from 'dolibarr' directory with files provided into the new version's package.
- Overwrite all old files from the 'dolibarr' directory with files provided into the new version's package.
- At first next access, Dolibarr will redirect you to the "install/" page to follow the upgrade process.
If an `install.lock` file exists to lock any other upgrade process, the application will ask you to remove the file manually (you should find the `install.lock` file in the directory used to store generated and uploaded documents, in most cases, it is the directory called "*documents*").
@@ -98,13 +98,13 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
Product Management
- Products and/or Services catalog
- Products and/or Services catalogue
- Stock / Warehouse management + Inventory
- Barcodes
- Batches / Lots / Serials
- Product Variants
- Bill of Materials (BOM)
- Manufacturing Orders
- Manufacturing Orders (MO)
Customer/Sales Management
@@ -114,7 +114,8 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Customer Orders management
- Contracts/Subscription management
- Interventions management
- Ticket System
- Ticket System (+ Knowledge management)
- Partnership management
- Shipping management
- Customer Invoices/Credit notes and payment management
- Point of Sale (POS)
@@ -124,7 +125,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Suppliers/Vendors + Contacts
- Supplier (price) requests
- Purchase Orders management
- Delivery/Receiption
- Delivery/Reception
- Supplier Invoices/credit notes and payment management
- INCOTERMS
@@ -141,16 +142,18 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
Collaboration
- Shared calendar/agenda (with ical and vcal import/export for thirdparty tools integration)
- Shared calendar/agenda (with ical and vcal import/export for third-party tools integration)
- Projects & Tasks management
- Event organization
- Ticket System
- Surveys
HR
HR - Human Resources Management
- Employee's leaves management
- Expense reports
- Recruitment management
- Employee/staff management
- Timesheets
### Other application/modules
@@ -168,20 +171,20 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
(around 100 modules available by default, 1000+ on the addon marketplace)
(around 100 modules available by default, 1000+ addons at the official marketplace Dolistore.com)
### Other general features
- Multi-Language Support (Localization in most major languages)
- Multi-Users and groups with finelygrained rights
- Multi-users and groups with finely-grained rights
- Multi-Currency
- Multi-Company (by adding of an external module)
- Very userfriendly and easy to use
- Very user-friendly and easy to use
- Customizable dashboards
- Highly customizable: enable only the modules you need, add user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one)
- APIs (REST, SOAP)
- Code that is easy to understand, maintain and develop (PHP with no heavy framework; trigger and hook architecture)
- Support a lot of countryspecific features:
- Support a lot of country-specific features:
- Spanish Tax RE and ISPF
- French NPR VAT rate (VAT called "Non Perçue Récupérable" for DOM-TOM)
- Canadian double taxes (federal/province) and other countries using cumulative VAT
@@ -189,7 +192,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Argentina invoice numbering using A,B,C...
- ZATCA e-invoicing QR-Code
- Compatible with [European directives](https://europa.eu/legislation_summaries/taxation/l31057_en.htm) (2006/112/CE ... 2010/45/UE)
- Compatible with data privacy rules (europe GDPR, ...)
- Compatible with data privacy rules (Europe GDPR, ...)
- ...
- Flexible PDF & ODT generation for invoices, proposals, orders...
- ...
@@ -204,7 +207,7 @@ See exact requirements on the [Wiki](https://wiki.dolibarr.org/index.php/Prerequ
### Extending
Dolibarr can be extended with a lot of other external application or modules from thirdparty developers available at the [DoliStore](https://www.dolistore.com).
Dolibarr can be extended with a lot of other external applications or modules from third-party developers available at the [DoliStore](https://www.dolistore.com).
## WHAT DOLIBARR CAN'T DO YET
@@ -212,19 +215,19 @@ These are features that Dolibarr does **not** yet fully support:
- Tasks dependencies in projects
- Payroll module
- No native embedded Webmail, but you can send email to contacts in Dolibarr with e.g. offers, invoices, etc.
- No native embedded Webmail, but you can send emails to contacts in Dolibarr with e.g. offers, invoices, etc.
- Dolibarr can't do coffee (yet)
## DOCUMENTATION
Administrator, user, developer and translator's documentations are available along with other community resources in the [Wiki](https://wiki.dolibarr.org).
Administrator, user, developer and translator's documentation are available along with other community resources in the [Wiki](https://wiki.dolibarr.org).
## CONTRIBUTING
This project exists thanks to all the people who contribute.
Please read the instructions how to contribute (report a bug/error, a feature request, send code ...) [[Contribute](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md)]
Please read the instructions on how to contribute (report a bug/error, a feature request, send code ...) [[Contribute](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md)]
@@ -20,9 +20,9 @@ We believe that the future of software is online SaaS. This means software are m
If you believe you've found a security bug in our service, we are happy to work with you to resolve the issue promptly and ensure you are fairly rewarded for your discovery.
Any type of denialofservice attacks is strictly forbidden, as well as any interference with network equipment and Dolibarr infrastructure.
Any type of denial-of-service attack is strictly forbidden, as well as any interference with network equipment and Dolibarr infrastructure.
We recommand to install Dolibarr ERP CRM on your own server (as most Open Source software, download and use is free: [https://www.dolibarr.org/download](https://www.dolibarr.org/download)) to get access on every side of application.
We recommend to install Dolibarr ERP CRM on your own server (as most Open Source software, download and use is free: [https://www.dolibarr.org/download](https://www.dolibarr.org/download)) to get access on every side of application.
### User Agent
@@ -30,7 +30,7 @@ If you try to find bug on Dolibarr, we recommend to append to your user-agent he
### Account access
You can install the web application yourself on your own platform/server so you get full access to application and sources. Download the zip of the files to put into your own web server virtual host from [https://www.dolibarr.org/download](https://www.dolibarr.org/download)
You can install the web application yourself on your own platform/server so you get full access to application and sources. Download the zip of the files to put in your own web server virtual host from [https://www.dolibarr.org/download](https://www.dolibarr.org/download)
## Eligibility and Responsible Disclosure
@@ -38,7 +38,7 @@ We are happy to thank everyone who submits valid reports which help us improve t
You must be the first reporter of the vulnerability (duplicate reports are closed).
You must avoid tests that could cause degradation or interruption of our service (refrain from using automated tools, and limit yourself about requests per second), that's why we recommand to install software on your own platform.
You must avoid tests that could cause degradation or interruption of our service (refrain from using automated tools, and limit yourself about requests per second), that's why we recommend to install software on your own platform.
You must not leak, manipulate, or destroy any user data of third parties to find your vulnerability.
@@ -48,27 +48,31 @@ Reports are processed around once a month.
ONLY vulnerabilities discovered, when the following setup on test platform is used, are "valid":
* The version to analyze must be the last version available into "develop" branch or into last stable "vX.Y" released version.
* $dolibarr_main_prod must be set to 1 into conf.php
* $dolibarr_nocsrfcheck must be kept to the value 0 into conf.php (this is the default value)
* The version to analyze must be the last version available in the "develop" branch. Reports on vulnerabilities already fixed (so already reported) in the develop branch will not be validated.
* $dolibarr_main_prod must be set to 1 in conf.php
* $dolibarr_nocsrfcheck must be kept to the value 0 in conf.php (this is the default value)
* $dolibarr_main_force_https must be set to something else than 0.
*The constant MAIN_SECURITY_CSRF_WITH_TOKEN must be set to 3 into backoffice menu Home - Setup - Other (this protection should be set to 3 soon by default). CSRF attacks are accepted but
double check that you have set MAIN_SECURITY_CSRF_WITH_TOKEN to value 3.
* ONLY security reports on modules provided by default and with the "stable" status are valid (troubles into "experimental", "developement" or external modules are not valid vulnerabilities).
*Some constant must be set in the backoffice menu Home - Setup - Other
CSRF attacks and HTML injections are accepted but double check this setup that is experimental setup that already fix a lot of case and soon enabled by default.
* ONLY security reports on modules provided by default and with the "stable" status are valid (troubles in "experimental", "development" or external modules are not valid vulnerabilities).
* The root of web server must link to htdocs and the documents directory must be outside of the web server root (this is the default when using the default installer but may differs with external installer).
* The web server setup must be done so that only the documents directory is in write mode. The root directory called htdocs must be read-only.
* The modules DebugBar and ModuleBuilder must NOT be enabled. (by default, these modules are not enabled. They are developer tools)
* Ability for a highlevel user to edit web site pages into the CMS by including HTML or Javascript is an expected feature. Vulnerabilities into the website module are validated only if HTML or Javascript injection can be done by a nonallowed user.
* Fail2ban rules for rate limit on the login page,password forgotten page, api calls and all public pages (/public/*) must be installed as recommendend into the section "About - Admin tools - Section Access limits and mitigation".
* Ability for a high-level user to edit web site pages in the CMS by including HTML or JavaScript is an expected feature. Vulnerabilities in the website module are validated only if HTML or JavaScript injection can be done by a non-allowed user.
* Fail2ban rules for rate limit on the login page, forgotten password page, API calls and all public pages (/public/*) must be installed as recommended in the section "About - Admin tools - Section Access limits and mitigation".
Scope is the web application (backoffice) and the APIs.
Scope is the web application (backoffice) and the APIs.
## Examples of vulnerabilities that are Qualified for reporting.
* Remote code execution (RCE)
* Local files access and manipulation (LFI, RFI, XXE, SSRF, XSPA)
* Code injections (JS, SQL, PHP). HTML are covered only for fields that are not description, notes or comments fields (where rich content is allowed on purpose).
* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose) and except into module "Web site" when permission to edit website content is allowed (injecting any data in this case is allowed too).
* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose) and except in the module "Web site" when permission to edit website content is allowed (injecting any data in this case is allowed too).
* Cross-Site Requests Forgery (CSRF) with real security impact (when using GET URLs, CSRF are qualified only for creating, updating or deleting data from pages restricted to admin users)
* Open redirect
* Broken authentication & session management
@@ -76,24 +80,21 @@ Scope is the web application (back office) and the APIs.
* Cross-Origin Resource Sharing (CORS) with real security impact
* Horizontal and vertical privilege escalation
* "HTTP Host Header" XSS
* Software version disclosure (for nonadmin users only)
* Stack traces or path disclosure (for nonadmin users only)
* Software version disclosure (for non-admin users only)
* Stack traces or path disclosure (for non-admin users only)
## Examples of vulnerabilities that are Non-qualified for reporting.
* "Self" XSS
* SSL/TLS best practices
* Denial of Service attacks
* Clickjacking/UI redressing
* Physical or social engineering attempts or issues that require physical access to a victim’s computer/device
* Presence of autocomplete attribute on web forms
* Vulnerabilities affecting outdated browsers or platforms, or vulnerabilities inside browsers themself.
* Logout and other instances of low-severity Cross-Site Request Forgery
* Missing security-related HTTP headers which do not lead directly to a vulnerability
* Reports from automated web vulnerability scanners (Acunetix, Vega, etc.) that have not been validated
* Reports on features on modules flagged as "deprecated", "experimental" or "development" if the module needs to be enabled for that (this is not the case on production).
* Software or libraries versions, private IP disclosure, Stack traces or path disclosure when logged-in user is admin.
* Any vulnerabilities due to a configuration different than the one defined in chapter "Scope for qualified vulnerabilities".
* Vulnerabilities affecting outdated browsers or platforms, or vulnerabilities inside browsers themself.
* Brute force attacks on login page, password forgotten page or any public pages (/public/*) are not qualified if the recommended fail2ban rules were not installed.
* SSL/TLS best practices
* Invalid or missing SPF (Sender Policy Framework) records (Incomplete or missing SPF/DKIM/DMARC)
*Reports on features flagged as "experimental" or "development"
* Software version or private IP disclosure when logged-in user is admin
* Stack traces or path disclosure when logged-in user is admin
* Any vulnerabilities due to a configuration different than the one defined into chapter "Scope for qualified vulnerabilities".
* Brute force attacks on login page, password forgotten page or any public pages (/public/*) are not qualified if the fail2ban recommended fail2ban rules were not installed.
*Physical or social engineering attempts or issues that require physical access to a victim’s computer/device
@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=L'instal·lador DoliWamp intentarà iniciar o reini
OldVersionFoundAndMoveInNew=S'ha trobat una versió antiga de base de dades i ha estat moguda per a ser utilitzada per la nova versió de Dolibarr
OldVersionFoundButFailedToMoveInNew=S'ha trobat una versió antiga de base de dades, però no es pot moure per a ser utilitzada per la nova versió de Dolibarr
DLLMissing=La teva instal·lació windows no té el component "Microsoft Visual C++ Redistributable for Visual Studio 2015". Instal·la primer la versió de 32-bit (vcredist_x86.exe) (pots trobar-la a https://www.microsoft.com/en-us/download/) i reiniciar després la instal·lació/actualització de DoliWamp.
DLLMissing=La teva instal·lació windows no té el component "Microsoft Visual C++ Redistributable for Visual Studio 2017". Instal·la primer la versió de 32-bit (vcredist_x86.exe) (pots trobar-la a https://www.microsoft.com/en-us/download/) i reiniciar després la instal·lació/actualització de DoliWamp.
ContinueAnyway=Continua igualment (el procés d'instal·lació podria fallar sense aquest prerequisit)
@@ -44,5 +44,5 @@ DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by the new Dolibarr version
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with the new Dolibarr version
DLLMissing=Your Windows installation is missing The "Microsoft Visual C++ Redistributable for Visual Studio 2015" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
DLLMissing=Your Windows installation is missing The "Microsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170) and restart DoliWamp installation/upgrade after.
ContinueAnyway=Continue anyway (install process may fail without this prerequisite)
CreateDesktopIcon=Cr<EFBFBD>er une ic<EFBFBD>ne sur le &Bureau
CreateQuickLaunchIcon=Cr<EFBFBD>er une ic<EFBFBD>ne dans la barre de &Lancement rapide
AdditionalIcons=Icônes supplémentaires :
CreateDesktopIcon=Créer une icône sur le &Bureau
CreateQuickLaunchIcon=Créer une icône dans la barre de &Lancement rapide
ProgramOnTheWeb=Page d'accueil de %1
UninstallProgram=D<EFBFBD>sinstaller %1
LaunchProgram=Ex<EFBFBD>cuter %1
UninstallProgram=Désinstaller %1
LaunchProgram=Exécuter %1
AssocFileExtension=&Associer %1 avec l'extension de fichier %2
AssocingFileExtension=Associe %1 avec l'extension de fichier %2...
YouWillInstallDoliWamp=Vous allez installer DoliWamp sur votre ordinateur (donc Dolibarr + tous ses composants pr<EFBFBD>requis comme Apache, Mysql et PHP).
ThisAssistantInstallOrUpgrade=AVERTISSEMENT: L'utilisation d'un ERP CRM install<EFBFBD> sur un ordinateur local peut <EFBFBD>tre dangereuse: si votre ordinateur tombe en panne, vous pouvez perdre toutes vos donn<EFBFBD>es. Faites-le si vous <EFBFBD>tes pr<EFBFBD>t <EFBFBD> g<EFBFBD>rer les sauvegardes vous-m<EFBFBD>me s<EFBFBD>rieusement. Sinon, utilisez plut<EFBFBD>t une installation en Saas (voir https://saas.dolibarr.org).
IfYouHaveTechnicalKnowledge=De plus, si vous avez des comp<EFBFBD>tences techniques et envisagez de partager votre Apache, Mysql et PHP avec d''autres applications que Dolibarr, vous ne devriez pas utiliser cet assistant mais faire plut<EFBFBD>t une installation manuelle de Dolibarr sur un serveur existant <EFBFBD>quip<EFBFBD> de Apache, Mysql et PHP.
ButIfYouLook=Mais si vous recherchez une installation cl<EFBFBD> en main automatis<EFBFBD>e sur une poste local, vous <EFBFBD>tes sur la bonne voie...
DoYouWantToStart=Voulez-vous d<EFBFBD>marrer le processus d'installation ?
YouWillInstallDoliWamp=Vous allez installer DoliWamp sur votre ordinateur (donc Dolibarr + tous ses composants prérequis comme Apache, Mysql et PHP).
ThisAssistantInstallOrUpgrade=AVERTISSEMENT: L'utilisation d'un ERP CRM installé sur un ordinateur local peut être dangereuse: si votre ordinateur tombe en panne, vous pouvez perdre toutes vos données. Faites-le si vous êtes prêt à gérer les sauvegardes vous-même sérieusement. Sinon, utilisez plutôt une installation en Saas (voir https://saas.dolibarr.org).
IfYouHaveTechnicalKnowledge=De plus, si vous avez des compétences techniques et envisagez de partager votre Apache, Mysql et PHP avec d''autres applications que Dolibarr, vous ne devriez pas utiliser cet assistant mais faire plutôt une installation manuelle de Dolibarr sur un serveur existant équipé de Apache, Mysql et PHP.
ButIfYouLook=Mais si vous recherchez une installation clé en main automatisée sur une poste local, vous êtes sur la bonne voie...
DoYouWantToStart=Voulez-vous démarrer le processus d'installation ?
TechnicalParameters=Param<EFBFBD>tres techniques
IfFirstInstall=S'il s'agit de la premi<EFBFBD>re installation, merci de sp<EFBFBD>cifier ces quelques param<EFBFBD>tres techniques. Si vous ne les comprennez pas, <EFBFBD>tes non s<EFBFBD>r, ou proc<EFBFBD>dez <EFBFBD> une mise <EFBFBD> jour, laissez les champs avec les valeurs propos<EFBFBD>es par d<EFBFBD>faut.
TechnicalParameters=Paramètres techniques
IfFirstInstall=S'il s'agit de la première installation, merci de spécifier ces quelques paramètres techniques. Si vous ne les comprennez pas, êtes non sûr, ou procédez à une mise à jour, laissez les champs avec les valeurs proposées par défaut.
; WARNING !!! STRINGS FOR THIS 4 STRINGS MUST BE LOWER THAN 70 CHARACTERS
SMTPServer=Serveur SMTP (le votre ou de votre FAI, premi<EFBFBD>re installation uniquement):
ApachePort=Port Apache (premi<EFBFBD>re installation uniquement, le choix standard est 80):
MySqlPort=Port Mysql (premi<EFBFBD>re installation uniquement, le choix standard est 3306):
MySqlPassword=Mot de passe serveur+base MySql de root (premi<EFBFBD>re installation uniquement):
SMTPServer=Serveur SMTP (le votre ou de votre FAI, première installation uniquement):
ApachePort=Port Apache (première installation uniquement, le choix standard est 80):
MySqlPort=Port Mysql (première installation uniquement, le choix standard est 3306):
MySqlPassword=Mot de passe serveur+base MySql de root (première installation uniquement):
FailedToDeleteLock=Echec de la suppression du fichier %1/www/dolibarr/install.lock. Vous pouvez ignorer l'avertissement mais il est possible que vous deviez le supprimer manuellement plus tard. Dans ce cas, cela vous sera signal<EFBFBD>. Cliquez sur OK pour continuer...
FailedToDeleteLock=Echec de la suppression du fichier %1/www/dolibarr/install.lock. Vous pouvez ignorer l'avertissement mais il est possible que vous deviez le supprimer manuellement plus tard. Dans ce cas, cela vous sera signalé. Cliquez sur OK pour continuer...
PortAlreadyInUse=Le port %1 semble d<EFBFBD>j<EFBFBD> utilis<EFBFBD>. Il est recommand<EFBFBD> d'annuler pour revenir en arri<EFBFBD>re et sp<EFBFBD>cifier une autre valeur pour le port %2. Annuler le choix et choisir une autre valeur ?
PortAlreadyInUse=Le port %1 semble déjà utilisé. Il est recommandé d'annuler pour revenir en arrière et spécifier une autre valeur pour le port %2. Annuler le choix et choisir une autre valeur ?
FirefoxDetected=Firefox a <EFBFBD>t<EFBFBD> d<EFBFBD>tect<EFBFBD> sur votre ordinateur. Voulez-vous en faire votre navigateur par d<EFBFBD>faut pour Dolibarr ?
ChromeDetected=Chrome a <EFBFBD>t<EFBFBD> d<EFBFBD>tect<EFBFBD> sur votre ordinateur. Voulez-vous en faire votre navigateur par d<EFBFBD>faut pour Dolibarr ?
ChooseDefaultBrowser=Merci de choisir votre navigateur par d<EFBFBD>faut (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Si vous n'<EFBFBD>tes pas s<EFBFBD>r, cliquez simplement sur Ouvrir :
FirefoxDetected=Firefox a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
ChromeDetected=Chrome a été détecté sur votre ordinateur. Voulez-vous en faire votre navigateur par défaut pour Dolibarr ?
ChooseDefaultBrowser=Merci de choisir votre navigateur par défaut (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). Si vous n'êtes pas sûr, cliquez simplement sur Ouvrir :
LaunchNow=Lancer Dolibarr maintenant
ProgramHasBeenRemoved=Les fichiers du programme Dolibarr ont <EFBFBD>t<EFBFBD> supprim<EFBFBD>s. Toutefois, tous vos fichiers de donn<EFBFBD>es sont toujours dans le r<EFBFBD>pertoire %1. Vous devez supprimer ce r<EFBFBD>pertoire manuellement pour avoir une d<EFBFBD>sinstallation compl<EFBFBD>te.
ProgramHasBeenRemoved=Les fichiers du programme Dolibarr ont été supprimés. Toutefois, tous vos fichiers de données sont toujours dans le répertoire %1. Vous devez supprimer ce répertoire manuellement pour avoir une désinstallation complète.
DoliWampWillStartApacheMysql=L'installeur DoliWamp va maintenant d<EFBFBD>marrer ou red<EFBFBD>marrer Apache et Mysql, ceci peut durer de quelques secondes <EFBFBD> une minute apr<EFBFBD>s cette confirmation. D<EFBFBD>marrer l'installation ou mise <EFBFBD> jour du serveur web et base de donn<EFBFBD>es requis par Dolibarr ?
DoliWampWillStartApacheMysql=L'installeur DoliWamp va maintenant démarrer ou redémarrer Apache et Mysql, ceci peut durer de quelques secondes à une minute après cette confirmation. Démarrer l'installation ou mise à jour du serveur web et base de données requis par Dolibarr ?
OldVersionFoundAndMoveInNew=Une ancienne version de base a <EFBFBD>t<EFBFBD> trouv<EFBFBD>e et d<EFBFBD>plac<EFBFBD>e pour fonctionner avec la nouvelle version de Dolibarr.
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a <EFBFBD>t<EFBFBD> trouv<EFBFBD>e mais ne peut <EFBFBD>tre d<EFBFBD>plac<EFBFBD>e pour <EFBFBD>tre utilis<EFBFBD>e avec la nouvelle version de Dolibarr.
OldVersionFoundAndMoveInNew=Une ancienne version de base a été trouvée et déplacée pour fonctionner avec la nouvelle version de Dolibarr.
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a été trouvée mais ne peut être déplacée pour être utilisée avec la nouvelle version de Dolibarr.
DLLMissing=L'installation de votre Windows est incompl<EFBFBD>te. Il manque le composant "Micrsoft Visual C++ Redistributable for Visual Studio 2015". Installer la version 32-bit (vcredist_x86.exe) d'abord (vous pourrez le trouver <EFBFBD> https://www.microsoft.com/fr-fr/download/) puis relancer l'installation de DoliWamp apr<EFBFBD>s.
ContinueAnyway=Continuer malgr<EFBFBD> tout (le process d'installaton <EFBFBD>chouera)
DLLMissing=L'installation de votre Windows est incomplète. Il manque le composant "Micrsoft Visual C++ Redistributable for Visual Studio 2017". Installer la version 32-bit (vcredist_x86.exe) d'abord (vous pourrez le trouver à https://www.microsoft.com/fr-fr/download/) puis relancer l'installation de DoliWamp après.
ContinueAnyway=Continuer malgré tout (le process d'installaton échouera)
@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=Die DoliWamp-Installation wird nun starten oder Apa
OldVersionFoundAndMoveInNew=Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden.
OldVersionFoundButFailedToMoveInNew=Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden.
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2015" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
ContinueAnyway=Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen).
OldVersionFoundAndMoveInNew=Se ha encontrado una versión antigua de base de datos y ha sido movida para ser utilizada por la nueva versión de Dolibarr
OldVersionFoundButFailedToMoveInNew=Se ha encontrado una versión antigua de base de datos, pero no se pudo mover para ser utilizada por la nueva versión de Dolibarr
DLLMissing=Su instalación Windows no tiene el componente "Microsoft Visual C++ Redistributable for Visual Studio 2015". Instale primero la versión de 32-bit (vcredist_x86.exe) (puedes encontrarlo en https://www.microsoft.com/en-us/download/) y reiniciar después la instalación/actualización de DoliWamp.
DLLMissing=Su instalación Windows no tiene el componente "Microsoft Visual C++ Redistributable for Visual Studio 2017". Instale primero la versión de 32-bit (vcredist_x86.exe) (puedes encontrarlo en https://www.microsoft.com/en-us/download/) y reiniciar después la instalación/actualización de DoliWamp.
ContinueAnyway=Continua igualmente (el proceso de instalación podría fallar sin este prerequisito)
print'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
@@ -110,7 +110,7 @@ if (empty($includecustom)) {
exit-1;
}
}else{
$tmpverter=explode('-',DOL_VERSION,2);
$tmpverter=explode('-',DOL_VERSION,2);
if($tmpverter[0]!=$tmpverbis[0]){
print'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
print'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
@@ -215,27 +215,27 @@ $iterator2 = new RecursiveIteratorIterator($dir_iterator2);
// Need to ignore document custom etc. Note: this also ignore natively symbolic links.
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
"description": "Stripe payment from makeStripeSepaRequest: DID=31262-INV=123-CUS=123 did=123 ref=FA2312-123",
"invoice": null,
"last_payment_error": {
"code": "",
"decline_code": "generic_decline",
"message": "The transaction can't be processed because your customer's account information is missing or incorrect. Collect a new mandate and ask your customer to provide their name and address exactly as it appears on their bank account. After this, you can attempt the transaction again.",
--inputbox "Pass to set :"1655 dolibarrdemopass 2> $fichtemp
--inputbox "Pass to set :"1655 dolibarrdemopass 2> $fichtemp
valret=$?
case$valret in
0)
demopass=`cat $fichtemp`;;
1)
exit;;
255)
exit;;
0)
demopass=`cat $fichtemp`;;
1)
exit ;;
255)
exit ;;
esac
rm fichtemp
exportdocumentdir=`cat $mydir/../../htdocs/conf/conf.php | grep '^\$dolibarr_main_data_root'| sed -e 's/$dolibarr_main_data_root=//'| sed -e 's/;//'| sed -e "s/'//g"| sed -e 's/"//g'`
# ---------------------------- confirmation
DIALOG=${DIALOG=dialog}
$DIALOG --title "Reset login password" --clear \
--yesno "Do you confirm ? \n Mysql database : '$base' \n Mysql port : '$port' \n Demo login: '$demologin' \n Demo password : '$demopass'"1555
--yesno "Do you confirm ? \n Mysql database : '$base' \n Mysql port : '$port' \n Demo login: '$demologin' \n Demo password : '$demopass'"1555
print"Correct ".$tablekey." for year ".$year." and move them to current year ".$currentyear."";
$sql="select rowid from ".MAIN_DB_PREFIX.$tablekey." where ".$tableval[0]." between '".$year."-01-01' and '".$year."-12-31' and ".$tableval[0]." < DATE_ADD(NOW(), INTERVAL -1 YEAR)";
$sql="select rowid from ".MAIN_DB_PREFIX.$tablekey." where ".$tableval[0]." between '".$year."-01-01' and '".$year."-12-31' and ".$tableval[0]." < DATE_ADD(NOW(), INTERVAL -1 YEAR)";
//$sql="select rowid from ".MAIN_DB_PREFIX.$tablekey." where ".$tableval[0]." between '".$year."-01-01' and '".$year."-12-31' and ".$tableval[0]." > NOW()";
// Conversion du PDF en image png si fichier png non existant
// Save a stripe payment was done in realy life so later we will be able to force a commit on recorded payments
// To make a Stripe SEPA payment request, we must have the payment mode source already saved into societe_rib and retreived with ->sepaStripe
// If old value crypted in database is same than submited new value, it means we don't change it, so we don't update.
//break; // No break for sortfield and sortorder so we can cumulate fields (is it realy usefull ?)
$errmsg = 'Failed to retreive paymentintent or charge from id';
$minifile = getImageFileNameForSize($fileinfo['basename'], '_mini'); // For new thumbs using same ext (in lower case howerver) than original
@@ -35,15 +36,19 @@
// remove invalid value, as it didnt match anything
// we dont use the rank from orderline because we may have lines from several orders
dol_syslog("makeStripeSepaRequest get stripe connet account", LOG_DEBUG);
if (isset($this->oldcopy->array_options["options_".$key]) && $this->array_options["options_".$key] == $this->oldcopy->array_options["options_".$key]) { // If old value crypted in database is same than submited new value, it means we don't change it, so we don't update.
print '<input type="hidden" class="amount" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">'; // class is requied to be used by javascript callForResult();
print '<input type="text" size="8" class="amount" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">'; // class is requied to be used by javascript callForResult();
print 'jQuery("select[name=\''.$paramkey.'\']").focus();'."\n"; // Not really usefull, but we keep it in case of.
$filles[$obj->fk_categorie_fille] = 1; // Set record for this child
$i2++; // a criteria for 1 more field was added to string (we can add several citeria for the same field as it is a multiselect search criteria)
$invoiceid = -1; // There is more than one invoice payed by this payment
$line->pa_ht = $line->pa_ht; // we choosed to have buy/cost price always positive, so no revert of sign here
$mesg .= '<br>Unkown Error, please refers to your administrator';
$result = $adh->setPassword($user, $this->pass, (!getDolGlobalString('DATABASE_PWD_ENCRYPTED') ? 0 : 1), 1); // Cryptage non gere dans module adherent
$result = $adh->setPassword($user, $this->pass, (empty($conf->global->DATABASE_PWD_ENCRYPTED) ? 0 : 1), 1); // Cryptage non gere dans module adherent
$result = $line->insert(0, 1); // When creating credit note with same lines than source, we must ignore error if discount alreayd linked
$s = array(); // Array with size of each page. Exemple array(w'=>210, 'h'=>297);
$value = ((!empty($this->array_options) && array_key_exists("options_".$key.$keysuffix, $this->array_options)) ? $this->array_options["options_".$key.$keysuffix] : null); // Value may be cleaned or formated later
$ways = $c->print_all_ways(' >> ', 'none', 0, 1); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formated text
'capture' => true, // Charge immediatly
@@ -66,10 +71,13 @@
// Show subproducts of product (not recommanded)
// TODO Que faire si update echoue car on update avec un login deja existant pour un autre compte.
// dont try to send email if no recipient
// note: $cs->mandate contians ID of mandate on Stripe side
// nous avons au moins une reponse
// nous n'avons pas de reponse => n'existe pas
//'visible'=>$fille->visible,
break; // break for loop incase of error
dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ok - found old pass in database", LOG_WARNING);
dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ok - hash ".$cryptType." of pass is ok");
hide: { delay: 50 }, /* If I enable effect:\'toggle\' here, a bug appears: the tooltip is shown when collpasing a new dir if it was shown before */
if ($reg[1] == 'thi') { // Third-party
if (empty($objMod->dictionaries) && !empty($objMod->dictionnaries)) {
@@ -87,6 +95,7 @@
$repid[$obj->id] = $label;
$reponsesadd = str_split($obj->reponses);
$s = array(); // Array with size of each page. Exemple array(w'=>210, 'h'=>297);
$s = array(); // Array with size of each page. Exemple array(w'=>210, 'h'=>297);
$outprice_ht = price($objp->price); // formated for langage user because is inserted into input field
@@ -167,6 +180,7 @@
$this->user_closing = $cluser;
$this->user_cloture = $cluser;
$usertime = 0; // We dont modify date because we want to have date into memory datep and datef stored as GMT date. Compensation will be done during output.
$valuetoshow = ucfirst($value); // Par defaut
$ways = $c->print_all_ways(' >> ', 'none', 0, 1); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formated text
&& $obj->status != $tmpobject::STATUS_ABANDONED // Not abandonned
'adress'=>$obj->adress,
@@ -174,6 +188,7 @@
'transparency'=>$object->transparency, // Force transparency on onwer from preoperty of event
/* Remove selected id as soon as we type or delete a char (it means old selection is wrong). Use keyup/down instead of change to avoid loosing the product id. This is needed only for select of predefined product */
/*case 'select': // Not required, we chosed value='0' for undefined values
// Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller
// Batch number managment
// Calculcate number of days consumed
// Cas des factures liees par un autre objet (ex: commande)
@@ -183,6 +198,7 @@
// For exemple, we may have error: 'No such customer: cus_XXXXX; a similar object exists in live mode, but a test mode key was used to make this request.'
// For full day events, date are also GMT but they wont but converted using tz during output
// If translation exists, we use it, otherwise, we use tha had coded label
// If we want to closed payed invoices
// Line dates planed
// Message-ID=A, In-Reply-To=B, References=B and message can BE an answer or NOT (a transfer rewriten)
// Note: $obj->halfday is 0:Full days, 2:Sart afternoon end morning, -1:Start afternoon, 1:End morning
@@ -191,8 +207,10 @@
// On selectionne les groupes auquel fait parti le user
// On verifie l'emplacement du modele
// Onwer
// Option to reload page to retrieve customer informations. Note, this clear other input
// Produit non deja existant
// Search submenu fot this mainmenu entry
// Selection of all product stock mouvements that contains batchs
// Si safe_mode on et command hors du parametre exec, on a un fichier out vide donc errormsg vide
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
// Strip off the beggining '<'
@@ -213,6 +231,7 @@
// at a time, and thats just stupid, so lets just hope this doesnt appear anywhere in the actual data
// de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur).
// if we have a PROJECTLEADER contact and we dont use it as recipient we store the contact object for later use
// multiselect array convert html entities into options tags, even if we dont want this, so we encode them a second time
// save curent cell padding
//$sql .= " AND (status <> 3 OR close_code <> 'abandon')"; // Not abandonned for undefined reason
//Esle it's separated key/value and coma list
@@ -231,6 +250,7 @@
error="Database $dbname NOT successfully droped. You have to do it manually."
foreach ($cats as $fille) {
if (!empty($childrens)) {
if (!getDolGlobalString('PROJECT_DISABLE_UNLINK_FROM_OVERVIEW') || $user->admin) { // PROJECT_DISABLE_UNLINK_FROM_OVERVIEW is empty by defaut, so this test true
if (!isset($filles[$obj->fk_categorie_fille])) { // Only one record as child (a child has only on parent).
if ($conf->file->mailing_limit_sendbyweb != '-1') { // MAILING_LIMIT_SENDBYWEB was set to -1 in database, but it is allowed ot increase it.
if ($login && $login != '--bad-login-validity--') { // Login is successfull
@@ -246,20 +266,29 @@
jQuery("#mouvement").trigger("change");
print "ERROR: Failed to include file '".$filephp."'. Try to edit and re-save page ith this ID.";
print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
setEventMessages($langs->trans('Bad value for email, emai lwas not verified by Google'), null, 'errors');
} else { // Pour les autres schémas, les membres sont listés sous forme de DN complets
$paramfortooltiptd .= ' title="' . ($noencodehtmltext ? $htmltext : dol_escape_htmltag($htmltext, 1)) . '"'; // Attribut to put on td tag to store tooltip
$paramfortooltiptd .= ' title="'.($noencodehtmltext ? $htmltext : dol_escape_htmltag($htmltext, 1)).'"'; // Attribut to put on td tag to store tooltip
$showfield = 1; // Par defaut
$societe->note_private = "Default customer automaticaly created by Point Of Sale module activation. Can be used as the default generic customer in the Point Of Sale setup. Can also be edited or removed if you don't need a generic customer.";
$tagdatabase = true; // We don't know what it was before, so now we consider we are version choosed.
/*case 'select': // Not required, we chosed value='0' for undefined values
// $pdf->GetY() here can't be used. It is bottom of the second addresse box but first one may be higher
// Add a mention of caller so on trigger called after action, we can filter to avoid a loop if we try to sync back again whith the caller
// Add entry into bank accoun
// Add field of attribut
// Add link to the Direct Debit if invoice redused ('InvoiceRefused') in bank_url
// Ajout de l'utilisateur dans le groupe
// Batch number managment
// By default, electronic transfert from bank to bank
@@ -307,6 +341,7 @@
// Fonctions de conversion non presente dans ce PHP
// Get lines of sources alread delivered
// Get next free nuber for the ref of bon
// Get next free nunber for the ref of bon prelevement
// If create form is coming from same page, it means that post was sent but an error occured
// If not abandonned
// If option "one bill per third" is set, and an invoice for this thirdparty was already created, we re-use it.
@@ -323,10 +358,12 @@
// No temp directory provided, so we are not able to support convertion of data:image into physical images.
// On verifie l'emplacement du modele
// Option to reload page to retrieve customer informations. Note, this clear other input
// Or set status to "In porgress" if the client has answered and if the ticket has started
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
// Payment informations
// Proprietes particulieres a facture de remplacement
// Recursive call if there is childs to child
// Retreive lines
// See example with selectsearchbox.php. This case is reserverd for the selectesearchbox.php so we can
// Seperate "Real Name" from eMail address
// Should not happend. Entries are added
@@ -336,11 +373,13 @@
// Subscription informations
// TODO : if base exists in unit dictionary table, remove this convertion exception and update convertion infos in database.
// TODO Can we set it to submited ?
// TODO Replace this with a checkbox for each payment mode: "Send request to XXX immediatly..."
// TODO We can't, we dont' have full path of file, only last_main_doc and ->element, so we must first rebuild full path $destfull
// This convert an embedd file with src="/viewimage.php?modulepart... into a cid link
// This make 12 calls for each accountancy account (12 monthes M)
// Validate immediatly the order
// Warning, the function may add a LF so we are forced to trim to compare with old $out without having always a difference and an infinit loop.
// We chack if file exists
// We check if lines of invoice are not already transfered into accountancy
// We dont want on all entities, we delete all and current
// We must filter on assignement table
@@ -369,8 +408,10 @@
continue; // The field was not submited to be saved
dol_syslog("The user login has a validity between [".$user->datestartvalidity." and ".$user->dateendvalidity."], curren date is ".dol_now());
dol_syslog("functions_isallowed::check_user_api_key Authentication KO for '".$login."': The user login has a validity between [".$fuser->datestartvalidity." and ".$fuser->dateendvalidity."], curren date is ".dol_now());
dol_syslog('Bad password, connexion refused (see a previous notice message for more info)', LOG_NOTICE);
$this->db->query('INSERT INTO '.MAIN_DB_PREFIX.'c_type_contact(rowid, element, source, code, libelle, active, module, position) VALUES('.((int) $nextid).', "StockTransfer", "internal", "STRESP", "Responsable du transfert de stocks", 1, NULL, 0)');
$this->emetteur->country_code = substr($langs->defaultlang, -2); // Par defaut, si n'etait pas defini
$this->error = 'update_note was called on objet with property table_element not defined';
$this->modelpdf = $modelpdf; // For bakward compatibility
@@ -464,11 +513,13 @@
'sr.type' => "Type ban is defaut",
/* Disabled because bcc must remain by defintion not visible
// $_POST contains fk_commandefourndet_X_Y where Y is num of product line and X is number of splitted line
// $new_array_options will be used for direct update, so must contains formated data for the UPDATE.
// $opt['filter[id]'] contais list of product id that are result of search
// 1 - Association des utilisateurs du groupe LDAP au groupe Dolibarr
// 2 - Suppression des utilisateurs du groupe Dolibarr qui ne sont plus dans le groupe LDAP
// A redirect is added if API call successfull
// Action according to choosed sending method
// Action according to the choosed sending method
// Add entry into bank accoun
// Add personnal information
// Adding <b> may convert the original string into a HTML string. Sowe have to first
@@ -486,6 +537,7 @@
// Chercher un contact existant avec cette adresse email
// Color of earch arc
// Defaut
// Delivery date planed
// Discard check of mandatory fiedls for other fields
// Documents are stored above the web pages root to prevent being downloaded without authentification
// Dont't use entity if you use rowid
@@ -523,11 +575,13 @@
// On verifie si aucun paiement n'a ete effectue
// On verifie si la balise prefix est utilisee
// On verifie si la facture a des paiements
// Option to reload page to retrieve customer informations.
// Option to reload page to retrieve customer informations. Note, this clear other input
// Parameteres execution
// Programm next run
// Replace espacing \' by ''.
// Replace protected special codes with matching number of _ as wild card caracter
// Retained warranty : usualy use on construction industry
// Select des informations du projet
// Set default encryption to yes, generate a salt and set default encryption algorythm (but only if there is no user yet into database)
// Show var initialized by include fo paypal lib at begin of this file
@@ -562,6 +616,7 @@
// add variables subtitutions ticket
// count the orders to ship in theorical stock when some are already removed by invoice validation.
// de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur).
// employee informations
// et on met la quantité de la ligne dans la limite du "budget" indiqué par dispatch.qty
// if "frequency" is empty or = 0, the reccurence is disabled
// mise a jour des reponses utilisateurs dans la base
@@ -570,10 +625,13 @@
// on verifie si l'objet est utilisé
// only if socid not filled else it's allready done upper
// procédure de remplacement de la table pour ajouter la contrainte
// reload page to retrieve customer informations
// reload page to retrieve supplier informations
// save curent cell padding
// si le curseur est un booleen on retourne la valeur 0
// this conf is actually hidden, by default we use 10% for "be carefull or warning"
//Add hook to filter on user (for exemple on usergroup define in custom modules)
//Another call for easy debugg
//Calcultate new task end date with difference between origin proj end date and origin task end date
//Calcultate new task start date with difference between old proj start date and origin task start date
//Calcultate new task start date with difference between origin proj start date and origin task start date
@@ -585,9 +643,11 @@
//XXX: Should be done just befor commit no ?
//but the note is saved, so just add a notification will be enought
//if ($user->socid > 0) $socid = $user->socid; // For external user, no check is done on company because readability is managed by public status of project and assignement.
//print $langs->trans("Desription").' : ';
//print "connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name;
//si le sujet n'est pas celui qui a été effacé alors on concatene
//si on voit une erreur, le fond de la case est rouge
The selectForForms is called with parameter $objectfield defined, so tha app can retreive the filter inside the ajax component instead of being provided as parameters. The
console.log("Load desciption into text area : "+description);
continue; // We discard parametes starting with ?
dol_print_error('', get_class($this)."::load_previous_next_ref was called on objet with property table_element not defined");
@@ -643,6 +703,8 @@
if ($value) { // If we have -1 here, pb is into insert, not into ouptut (fix insert instead of changing code here to compensate)
if (empty($objimport->array_import_convertvalue[0][$tmpcode])) { // If source file does not need convertion
jQuery("#mouvement").change(function() {
let hours = hour.getHours().toString().padStart(2, "0"); // Formater pour obtenir deux chiffres
let mins = hour.getMinutes().toString().padStart(2, "0"); // Formater pour obtenir deux chiffres
preg_match('/\((.+)\)/i', $objp->label, $reg); // Si texte entoure de parenthese on tente recherche de traduction
print " - Error cant find payment mode for ".$condpayment."\n";
$buyingprice = (GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we muste keep this value
$buyingprice = price2num(GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we muste keep this value
$canbedeleted = $object->can_be_deleted(); // Renvoi vrai si compte sans mouvements
@@ -692,6 +757,7 @@
$keyval = substr($nvpstr, $intial, $keypos);
$ldap = new Ldap(); // Les parametres sont passes et recuperes via $conf
$localobject->date=dol_mktime(12, 0, 0, 1, 1, 1915); // we use year 1915 to be sure to not have existing invoice for this year (usefull only if numbering is {0000@1}
$localobject->date_creation = dol_mktime(12, 0, 0, 1, 1, 1980); // we use year 1915 to be sure to not have existing invoice for this year (usefull only if numbering is {0000@1}
$mail = 'bidon@unvalid.unvalid';
$myclone = clone $object; // PHP clone is a shallow copy only, not a real clone, so properties of references will keep the reference (refering to the same target/variable)
$nbofsubproducts = count($prodschild); // This include only first level of childs
@@ -724,6 +790,7 @@
$sql .= " AND mc.statut NOT IN (-1,0)"; // -1 erreur, 0 non envoye, 1 envoye avec succes
$sql .= " WHERE u.email != ''"; // u.email IS NOT NULL est implicite dans ce test
$sql .= " WHERE u.email <> ''"; // u.email IS NOT NULL est implicite dans ce test
$sql .= " label = 'Annulation mouvement ID ".((int) $this->id)."',";
$sql .= " tms = tms"; // La date de derniere modif doit changer sauf pour la mise a jour de date de derniere connexion
/* Liste des taches et role sur les projets ou taches */
/* width: ...px; If I use with, there is trouble on size of flex boxes solved with min + (max that is a little bit higer than min) */
@@ -821,8 +890,11 @@
// Exclude unsubscribed email adresses
// Files missings
// First, we get the max value (reponse immediate car champ indexe)
// For a string that is already HTML (contains HTML tags) but badly formated
// For a string that is already HTML (contains HTML tags) with special tags but badly formated
// For backward compatiblity, we detect file stored into an old path
// For each file build select list with PDF extention
// For exemple if element is project
// For external user, no check is done on company because readability is managed by public status of project and assignement.
// For external user, no check is done on company permission because readability is managed by public status of project and assignement.
// Forced filter on socid is similar to forced filter on project. TODO Use project assignement to allow to not use filter on project
@@ -831,6 +903,7 @@
// How the date for data are formated (format used bu jsgantt)
// How the date for data are formated (format used by dol_print_date)
// If lib not found in language file, we get label from cache/databse
// If on smartphone or optmized for small screen
// If option choosed, we create invoice
// If resultset not provided, we take the last used by connexion
// If stock increment is done on reception (recommanded choice)
@@ -844,6 +917,7 @@
// Links beetween objects are stored in this table
// Load extrafields if not allready done
// Load extrafiels if not allready does
// Load librairies to check BAN
// Log the init of hook but only for hooks thare are declared to be managed
// Loop on each line keword was found into file.
// Mis a jour contact
@@ -862,6 +936,7 @@
// Option to reload page to retrieve customer informations.
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
// Ouput page under the Dolibarr top menu
// Parameteres execution
// Permet de commencer l'impression de l'etiquette desiree dans le cas ou la page a deja servie
// Permettre l'exclusion de groupes
// Permettre l'inclusion de groupes
@@ -870,6 +945,7 @@
// Refresh / Reload web site (for non javascript browers)
// Remove '<' into remainging, so remove non closing html tags like '<abc' or '<<abc'. Note: '<123abc' is not a html tag (can be kept), but '<abc123' is (must be removed).
// Remove fields not relevent to categories
// Renaming can be done when we rename globaly a bank receipt but not when changing 1 line from one receipt into another one.
// Replace protected special codes with matching number of _ as wild card caracter
// Reset the substraction for this amount
// Retained warranty : usualy use on construction industry
@@ -893,7 +969,10 @@
// TODO Remove hooks with type 'output' (exemple createFrom). All hooks must be converted into 'addreplace' hooks.
// TODO Remove hooks with type 'output' (exemple getNomUrl). All hooks must be converted into 'addreplace' hooks.
// Tableau des parametres complementaires du post
// Test with restricthtml + MAIN_RESTRICTHTML_ONLY_VALID_HTML + MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY to test disabling of bad atrributes
// Test with restricthtml + MAIN_RESTRICTHTML_ONLY_VALID_HTML only to test disabling of bad atrributes
// Test with restricthtml + MAIN_RESTRICTHTML_ONLY_VALID_HTML to test disabling of bad atrributes
// Test with restricthtml + MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY only to test disabling of bad atrributes
// Test with restricthtml + MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES to test disabling of bad atrributes
// The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object
// This improvment as provided by 'SirSir' to
@@ -927,9 +1006,11 @@
// reload page to retrieve customer informations
// reload page to retrieve supplier informations
// save curent cell padding
// submited to nothing.
// substract 1 because array start from 0
// this conf is actually hidden, by default we use 10% for "be carefull or warning"
// to allow mask usage for dir, we shoul introduce a new param "isdir" to 1 to complete newmask like this
// variable submitted at all, so no way to make a difference between variable not submited and variable
//$array_selected = array("s.rowid"=>1, "s.nom"=>2); // Mut be fields found into declaration of dataset
//$signature_line = dol_hash($keyforsignature, '5'); // Not really usefull
//Add hook to filter on user (for exemple on usergroup define in custom modules)
dol_syslog("The user login has a validity between [".$user->datestartvalidity." and ".$user->dateendvalidity."], curren date is ".dol_now());
dol_syslog("Warning: Function form_constantes is calle with parameter strictw3c = 0, this is deprecated. Value must be 2 now.", LOG_DEBUG);
dol_syslog("line.php update bank line to set the new bank receipt nuber", LOG_DEBUG);
dol_syslog(get_class($this)."::getCustomerAccount Try to find the first system customer id for ".$site." of thirdparty id=".$id." (exemple: cus_.... for stripe)", LOG_DEBUG);
dol_syslog(get_class($this)."::setCategoriesCommon Oject Id:".$this->id.' type_categ:'.$type_categ.' nb tag add:'.count($categories), LOG_DEBUG);
foreach ($allways as $way) {
@@ -965,9 +1047,12 @@
http_response_code(202); // If we use 202, this is not really an error message, but this allow to ouput message on command line tools
if (!$login || (in_array('ldap', $authmode) && empty($passwordtotest))) { // With LDAP we refused empty password because some LDAP are "opened" for anonymous access so connexion is a success.
if (!empty($this->phone)) { // If a phone of thirdparty is defined, we add it ot mobile of contacts
if (!getDolGlobalString('PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN')) { // Note that some countries still need bank number, BIC/IBAN not enougth for them
if (!is_array($this->userassigned) && !empty($this->userassigned)) { // For backward compatibility when userassigned was an int instead fo array
if ($lines[$i]->fk_parent == $parent || $level < 0) { // if $level = -1, we dont' use sublevel recursion, we show all lines
if ($lines[$i]->fk_task_parent == $parent || $level < 0) { // if $level = -1, we dont' use sublevel recursion, we show all lines
if ($objectfield) { // We must retreive the objectdesc from the field or extrafield
if ($this->label == 'Annulation mouvement ID'.$this->id) {
if ($user->hasRight('stock', 'mouvement', 'creer')) {
if (GETPOST('import_name')) { // If we have submited a form, we take value used fot the update try
if (dol_strlen($phone) == 10) {// fixe 6 chiffres +352_AA_BB_CC
@@ -993,10 +1078,12 @@
print 'This website or feature is currently temporarly not available or failed after a technical error.<br><br>This may be due to a maintenance operation. Current status of operation ('.dol_print_date(dol_now(), 'dayhourrfc').') are on next line...<br><br>'."\n";
unset($object->supplierprices); // Mut use another API to get them
while ($i < $nblot) { // Loop on each serie
} else // We decrease agressiveness
} else { // If thirdparty unkown, output the waiting account
} else { // We decrease agressiveness
} else { // old method. deprecated because ot can't retrieve type
} elseif (!empty($this->childtables)) { // If object has childs linked with a foreign key field, we check all child tables.
} elseif (!empty($this->fk_element) && !empty($this->childtables)) { // If object has childs linked with a foreign key field, we check all child tables.
@@ -1043,6 +1130,7 @@
* @param int $socid Id ot third party or 0 for all or -1 for empty list
* @param int $id Id du paiement dont il faut afficher les infos
* @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ
* @param string $method Method of transmision to bank (0=Internet, 1=Api...)
* @param string $method method of transmision to bank
* @param string $method method of transmision to bank (0=Internet, 1=Api...)
* @param string $dolibarr_main_db_pass Mot de passe user a creer
@@ -1065,6 +1153,7 @@
* @param string $close_note Commentaire renseigne si on classe a payee alors que paiement incomplet (cas escompte par exemple)
* @return array Tableau info des attributs
* @return int < 0 if KO (infinit loop), >= 0 if OK
* @return int Return integer < 0 if KO (infinit loop), >= 0 if OK
* @return array Tableau des informations des champs de la table
* Charge indicateurs this->nb pour le tableau de bord
* Charge les informations d'ordre info dans l'objet commande
* Charge les informations d'ordre info dans l'objet facture
* Classify the reception as invoiced (used for exemple by trigger when WORKFLOW_RECEPTION_CLASSIFY_BILLED_INVOICE is on)
* Classify the shipping as invoiced (used for exemple by trigger when WORKFLOW_SHIPPING_CLASSIFY_BILLED_INVOICE is on)
* Connexion to server
* Define properties fullpath, fullrelativename, fulllabel of a directory of array this->cats and all its childs.
* For category id_categ and its childs available in this->cats, define property fullpath and fulllabel.
@@ -1119,6 +1210,7 @@
* Si le (pays vendeur = pays acheteur) alors la TVA par defaut=TVA du produit vendu. Fin de regle.
* Sinon la TVA proposee par defaut=0. Fin de regle.
* Si vendeur non assujeti a TVA, TVA par defaut=0. Fin de regle.
* - string (categories ids seprated by comma)
* - string (categories ids seprated by comma)
* - string (categories ids seprated by comma)
* All types can also return some values into an array ->results that will be finaly merged into this->resArray for caller.
@@ -1305,6 +1397,7 @@
* @param array $arrayofcriterias Array of available search criterias. Example: array($object->element => $object->fields, 'otherfamily' => otherarrayoffields, ...)
* @param array $search_component_params Array of selected search criterias
* @param bool $gm 1=Input informations are GMT values, otherwise local to server TZ
* @param int $fk_product_stock id product_stock for objet
* @param int $disabledoutputofmessages Clear all messages stored into session without diplaying them
* @param int $lineid Id of production line to filter childs
* @param int $noescapecommand 1=Do not escape command. Warning: Using this parameter needs you alreay have sanitized the $command parameter. If not, it will lead to security vulnerability.
@@ -1343,6 +1436,7 @@
* @param array $info content informations of field
* @param boolean $confirmnow false=default, true=try to confirm immediatly after create (if conditions are ok)
* @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise)
* @param int $fk_socpeople Id of thirdparty contact (if source = 'external') or id of user (if souce = 'internal') to link
* @param int $fk_socpeople Id of thirdparty contact (if source = 'external') or id of user (if souce = 'internal') to link
* @param int $default_font_size default siez of font
* @param int $id id du paiement dont il faut afficher les infos
@@ -1355,6 +1449,7 @@
* @param int $disablestockchangeforsubproduct Disable stock change for sub-products of kit (usefull only if product is a subproduct)
* @param int $nbmax Number maxium of photos (0=no maximum)
* @param int $id Id of product to search childs of
* @param string $extrafieldsobjectkey The key to use to store retreived data (commonly $object->table_element)
* @param string $extrafieldsobjectkey The key to use to store retreived data (for example $object->table_element)
* @param string $moreparam To add more parametes on html input tag
* @param string $moreparam To add more parametes on html input tag
@@ -1374,11 +1469,19 @@
* @param int $month Specifig month - Can be empty
* @param int $year Specifig year - Can be empty
* @param int $_type Interger value representing Mail Transport Type
* @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names
* @param string $properties Restrict the data returned to theses properties. Ignored if empty. Comma separated list of properties names
* @param string $str Original string to encode and optionaly truncate
* @param string $page Url of page to call if confirmation is OK. Can contains parameters (param 'action' and 'confirm' will be reformated)
* @param string $editvalue When in edit mode, use this value as $value instead of value (for example, you can provide here a formated price instead of numeric value, or a select combo). Use '' to use same than $value
* Flag to 1 if we must clean ambiguous charaters for the autogeneration of password (List of ambiguous char is in $this->Ambi)
* Function to know all custom groupd from an accounting account
* Function to shwo the combo select to chose a type of field (varchar, int, email, ...)
* Function used to return childs of Mo
* If paid completelly, this->close_code will be null
* Inserts all informations into database.
@@ -1492,6 +1602,7 @@
* Return connexion ID
* Return direct childs id of a category into an array
* Return list of auxilary accounts. Cumulate list from customers, suppliers and users.
* Return list of categories having choosed type
* Return list of product formated for output
* Return the addtional SQL JOIN query for filtering a list by a category
* Return the addtional SQL SELECT query for filtering a list by a category
@@ -1509,6 +1620,7 @@
* ete definit dans la configuration
* or a COMMA delimted string, and inserts them into a highly
* reload conf value from databases is an aliase of loadValueFromConf
* reverse mouvement for object by updating infos
* statique et publique. Le nombre de parametres est determine automatiquement.
* the tagret is useful with hooks : that allow externals modules to add setup items on good place
* the underlaying array is destroyed and reconstructed.
@@ -1520,6 +1632,7 @@
# Log directoves
$IBS_RETOUR = "montant:M;ref:R;auto:A;trans:T"; // Format des parametres du get de validation en reponse (url a definir sous paybox)
$alwaysuncheckedmodules = array('dav', 'dynamicprices', 'incoterm', 'loan', 'multicurrency', 'paybox', 'paypal', 'stripe', 'google', 'printing', 'scanner', 'skype', 'website'); // Module we dont want by default
$alwaysuncheckedmodules = array('dav', 'dynamicprices', 'incoterm', 'loan', 'multicurrency', 'paybox', 'paypal', 'stripe', 'google', 'printing', 'scanner', 'socialnetworks', 'website'); // Module we dont want by default
$amount = (is_numeric($amount) ? $amount : 0); // Check if amount is numeric, for example, an error occured when amount value = o (letter) instead 0 (number)
print '<tr><td colspan="2"><br>*** Force modules not found physicaly to be disabled (only modules adding js, css or hooks can be detected as removed physicaly)</td></tr>';
print 'Failed to open '.$outputfile.' for ouput.'."\n";
print 'Missing paramater s, c or a';
print 'Sorry, it seems your internet connexion is off.<br>';
print ajax_combobox("mouvement");
@@ -1687,6 +1806,7 @@
public $date_delivery; // Date delivery planed
public $debug_api; // usefull if no dialog
public $emetteur; // Objet societe qui emet
public $fk_origin_stock; // rowid in llx_product_batch table (not usefull)
public $graph; // Objet Graph (Artichow, Phplot...)
public $infofiles; // Used to return informations by function getDocumentsLink
public $lastsearch_values; // To store last saved search criterias for user
@@ -1878,6 +1998,7 @@
* \brief Onglet informations personnelles d'un contact
* \brief Page fiche LDAP groupe
* \brief Tab to manage contacts/adresses of proposal
* @return boolean True if informations are valid, false otherwise
* @return boolean True if informations are valid, false otherwise
* @return string Formated string
* @return string Return list fo image format
@@ -1930,8 +2051,10 @@
* @return string String with formated amounts ('19,6' or '19,6%' or '8.5% (NPR)' or '8.5% *' or '19,6 (CODEX)')
* @return array|int Array with details of VATs (per rate), -1 if no accountancy module, -2 if not yet developped, -3 if error
* @return array|int Array with details of VATs (per third parties), -1 if no accountancy module, -2 if not yet developped, -3 if error
* Classe mere des modeles de numerotation des references de bon de livraison
* Classe mere des modeles de numerotation des references de members
* Classe mere des modeles de numerotation des references de projets
* Classe mere des modeles de numerotation des tickets de caisse
* Classe permettant la gestion des stats des expensereports et notes de frais
* Delete files into database index using search criterias.
* Get formated error messages to output (Used to show messages on html output).
@@ -1996,6 +2119,7 @@
* @param string $objectname name of object whant to remove
* @retun boolean
* @return array returns an associtive array containing the response from the server.
* @return string Formated string
* @return string A HTML table that conatins a list with open (unpaid) supplier invoices
* @return string Formated value
* @return array Array of mesures
@@ -2018,6 +2142,7 @@
* Correspondance des livraisons et des commandes clients dans la table llx_co_liv
* Creation objet $langs (must be before all other code)
* For action=add, use: $var = GETPOST('var'); // No GETPOSTISSET, so GETPOST always called and default value is retreived if not a form POST, and value of form is retreived if it is a form POST.
* Generate Urls and add them to documentaion module
* It is usefull to search for a particular key and displaying arrays.
* Lattest modified orders
* Les catégories filles, sous tableau dez la catégorie
@@ -2072,14 +2197,17 @@
$FULLTAG = GETPOST("fulltag", 'alpha'); // fulltag is tag with more informations
$array = array(1=>'Value 1', 2=>'Value 2', 3=>'Value 3 ith a very long text. aze eazeae e ae aeae a e a ea ea ea e a e aea e ae aeaeaeaze.');
$conf = new stdClass(); // instantiate $conf explicitely
// We keep it with value ForceBuyingPriceIfNull = 2 for retroactive effect but results are unpredicable.
// We must filter on assignement table
// badge color ajustement for color blind
// chek if salary pl
// current rule: uptodate = the end date is in future or no subcription required
// librarie core
// librarie jobs
// reverse mouvement of stock
// status color ajustement for color blind
//Activate Set adress in list
//Another call for easy debugg
@@ -2363,6 +2495,7 @@ NEW: Add SQL contraint on product_stock table to allow only exsting product and
NEW: Add email in event history, for reminder email of expired subsription
NEW: Add exemple of setup for multitail to render dolibarr log files
NEW: Add hidden option MAIN_EMAIL_SUPPORT_ACK to restore Email ack checkbox (feature abandonned by mailers)
NEW: Add more company informations (ProfId7 to 10) (#25266)
NEW: Add option to disable globaly some notifications emails.
NEW: Add option to display thirdparty adress in combolist
NEW: Add ressource extrafields.
@@ -2394,15 +2527,20 @@ NEW: Implement option SUPPLIER_ORDER_USE_DISPATCH_STATUS to add a status into ea
NEW: Introduce position of records into dictionnary of type of contacts
NEW: Introduce use of cache for thumbs images of users to save bandwith.
NEW: Look and feel v11: Some setup pages are by default direclty in edit mode.
NEW: Menu editor is reponsive
NEW: Merge all boxes "related objects" into one. This save a lot of room on most card and avoid often horizontal scoll.
NEW: ModuleBuilder - More feature that can be modifed after module generation
NEW: ModuleBuilder: for edit name of dictionnary and delete it in MB
NEW: On page to see/edit contact of an ojbect, the status of contact is visible (for both external and internal users).
NEW: Page to check if the operations/items created between two dates have attached item(s) and possibility to download all attachements
NEW: Payment: Can edit account on miscellaneous payment (if not transfered)
NEW: Product stock and subproduct stock are independant
NEW: Products: Add SQL contraint on product_stock table to allow only existing product and warehouse #23543
NEW: Remove tooltip tipTip library replaced with standatd jquery tooltip
NEW: Start to introduce search filters on dictionnaries for vat list.
NEW: Support of deployement of metapackages
NEW: When a new field to show into lists is selected, the form is automatically submited and field added.
NEW: When an user unset the batch management of products, transformation of each batch stock mouvement in global stock mouvement
NEW: X-Axis on graph are shown verticaly when there is a lot of values.
NEW: add API shipment mode dictionnary
NEW: add a prospect status for the contact with managment of custom icon
@@ -2430,11 +2568,13 @@ Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test
Store, search and retreive any article to keep your knowledge into a database. It can be used to manage a list of FAQ, or a database
The keyword can be ommitted if your commit does not fit in any of the following categories:
The output patch file can then be submited on Dolibarr
The output patch file can then be submited on Dolibarr dev mailing-list, with explanation on its goal, for inclusion in main branch.
This directory contains ruleset files to use to develop Dolibarr EPR & CRM.
This directory contains several subdirectories with entries for informations on Dolibarr.<br>
This docker image intended for developpement usage.
This docker image is intended for developpement usage.
This module provides a sheduled job that scan regularly one or several IMAP email boxes, with filtering rules, to automatically record data in your application, like
Une ligne represente un element : data[$x]
Upgrading to any other version or database system is abolutely required BEFORE trying to
We recommand to install Dolibarr ERP CRM on your own server (as most Open Source software, download and use is free: [https://www.dolibarr.org/download](https://www.dolibarr.org/download)) to get access on every side of application.
You must avoid tests that could cause degradation or interruption of our service (refrain from using automated tools, and limit yourself about requests per second), that's why we recommand to install software on your own platform.
if (!$user->hasRight('stock', 'mouvement', 'lire')) {
if (!empty($conf->variants->eabled) && !getDolGlobalString('VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT')) { // Add test to exclude products that has variants
if (!empty($conf->variants->eabled) && empty($conf->global->VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT)) { // Add test to exclude products that has variants
if (!empty($contactname)) { // acces a partir du module de recherche
if ($action == "transfert") {
@@ -2462,3 +2603,4 @@ print '<div class="div-table-responsive-no-min">'; // You can use div-table-resp
print_barre_liste($langs->trans("Sessions"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num, ($num ? $num : ''), 'setup'); // Do not show numer (0) if no session found (it means we can't know)
echo"Inserting new record {URL= ".$link.", Title = '$title', Description = '".$metaData['description']."', Keywords = ' ".$metaData['keywords']."'}<br/><br/><br/>";
//print "Key $key differs (aSecondary=".$aSecondary[$key].", aPrimary=".$aPrimary[$key].", aEnglish=".$aEnglish[$key].") so we add it into new secondary language (line: $cnt).\n";
if((GETPOST('valid_change_chart','alpha')&&GETPOST('chartofaccounts','int')>0)// explicit click on button 'Change and load' with js on
||(GETPOST('chartofaccounts','int')>0&&GETPOST('chartofaccounts','int')!=getDolGlobalInt('CHARTOFACCOUNTS'))){// a submit of form is done and chartofaccounts combo has been modified
$error=0;
if($chartofaccounts>0&&$permissiontoadd){
// Get language code for this $chartofaccounts
$sql='SELECT code FROM '.MAIN_DB_PREFIX.'c_country as c, '.MAIN_DB_PREFIX.'accounting_system as a';
$sql.=" a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2";
// Add fields from hooks
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters,$object,$action);// Note that $action and $object may have been modified by hook
$sql.=$hookmanager->resPrint;
$sql=preg_replace('/,\s*$/','',$sql);
$sql.=" FROM ".MAIN_DB_PREFIX."accounting_account as aa";
$sql.=" LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version AND aa.entity = ".((int)$conf->entity);
$sql.=" LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as a2 ON a2.rowid = aa.account_parent AND a2.entity = ".((int)$conf->entity);
// Add table from hooks
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldListFrom',$parameters,$object);// Note that $action and $object may have been modified by hook
$reshook=$hookmanager->executeHooks('printFieldListSearchParam',$parameters,$object,$action);// Note that $action and $object may have been modified by hook
$param.=$hookmanager->resPrint;
if(!empty($conf->use_javascript_ajax)){
print'<!-- Add javascript to reload page when we click "Change plan" -->
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$accounting,$action);// Note that $action and $object may have been modified by hook
$parameters=array();
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters,$object,$action);// Note that $action and $object may have been modified by hook
$reshook=$hookmanager->executeHooks('printFieldListOption',$parameters,$object,$action);// Note that $action and $object may have been modified by hook
$reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters,$object,$action);// Note that $action and $object may have been modified by hook
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters,$obj,$tmpaction);// Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj,$tmpaction);// Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj,$tmpaction);// Note that $action and $object may have been modified by some hooks
* @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.