2
0
forked from Wavyzz/dolibarr

Compare commits

...

1767 Commits

Author SHA1 Message Date
Dolibot
ceada6c888 PHPStan > Update baseline 2025-10-05 12:08:48 +00:00
Jon Bendtsen
76916ad1cf Add fk_project to Mass Emailings (#35635)
* Add fk_project to Mass Emailings

* Mass Mailing fk_project SQL definition dispre

* mailing typecasting fk_project

* mailing using correct variable name

* more type casting to fix phpstan errors related to fk_project in mass mailing

* mailing fk_project NULL better default in DB

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-10-04 20:08:27 +02:00
MDW
234fa7690f Qual: Update phan baseline & minor fix (#35638)
# Qual: Update phan baseline & minor fix

Fix new phan notice using cast of potential null value.
Remove unneeded exceptions from baseline.
2025-10-04 20:03:38 +02:00
Frédéric FRANCE
a15c3a4ff2 fix members cards (#35639)
* fix members cards

* fix

* fix members cards
2025-10-04 20:02:49 +02:00
Charlène Benke
d1e0efc466 NEW Add getcontacts on api of interventional and proposal (#35589)
* Add getContacts method to retrieve contact information

* Implement getContacts method for proposals

Added a method to retrieve contacts associated with a proposal, including access checks and data cleaning.

* Implement getContacts method for invoices

Added a method to retrieve contacts associated with a specific invoice, including access checks and error handling.

* Update api_proposals.class.php

* Update api_invoices.class.php

* Update api_interventions.class.php

* Update api_interventions.class.php

* Add method to set invoice as draft

* Return contacts directly instead of cleaned data

* Return raw contacts instead of cleaned data

* Combine external and internal contacts in order list

Merge external and internal contacts for orders.

* Change return type from Object to array in API doc

Updated return type in API documentation for contact information.

* Change return type in api_orders.class.php docblock

Updated return type in docblock to reflect array return.

* Change return type from Object to array in API doc

* Update api_orders.class.php

* Update api_interventions.class.php

* Update api_proposals.class.php

* Update api_orders.class.php

* Update api_interventions.class.php

* Update api_interventions.class.php

* Update api_interventions.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-04 20:01:57 +02:00
ldestailleur
900fa67c9e Clean code 2025-10-04 15:12:02 +02:00
ldestailleur
8ba14e9e18 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-04 14:13:08 +02:00
ldestailleur
fbfeb5c978 Clean code 2025-10-04 14:12:46 +02:00
Frédéric FRANCE
6afec608a3 fix CI (#35631)
* fix CI

* fix CI

* fix CI

* fix CI

* fix CI

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-10-04 13:29:57 +02:00
ldestailleur
597088f030 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-04 02:33:41 +02:00
ldestailleur
783dbd5ccf Fix missing where on rowid 2025-10-04 02:33:28 +02:00
sonikf
bc9199e58f NEW Add tpl files for standalone shipment (#35624)
* NEW Add option to create simple shipment of non origin

* try to fix phan

* try to fix phan

* fix phan
2025-10-04 01:14:14 +02:00
ldestailleur
8b0d4f82a5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-04 00:51:06 +02:00
ldestailleur
62d05df912 Look and feel v23 2025-10-04 00:50:49 +02:00
Frédéric FRANCE
ebca8345b0 add tables missing (#35628)
* add tables missing

* add tables missing

* add tables missing

* add tables missing

* add tables missing

* add tables missing

* Update 22.0.0-23.0.0.sql
2025-10-04 00:08:32 +02:00
Frédéric FRANCE
a90c222f73 clean code (#35626)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-10-04 00:07:24 +02:00
Frédéric FRANCE
a20fac32a6 enhance setup captcha (#35627)
* enhance setup captcha

* add oddeven
2025-10-04 00:07:15 +02:00
ldestailleur
b9daf82a44 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-03 19:20:40 +02:00
ldestailleur
31394457f1 Typo 2025-10-03 19:20:28 +02:00
Vincent Maury
66e88bc761 NEW Add tasks card hooks (#35616)
* Hooks missing in some task cards

* Add  hook in contact of task card

* Update contact.php

* Some hook missing

* Update contact.php

* Update document.php

* Update contact.php

* Update document.php

* Update contact.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-03 19:07:29 +02:00
Frédéric FRANCE
ac7fe765ae add doc (#35625) 2025-10-03 19:06:34 +02:00
sonikf
86578bd625 NEW Create simple shipment of non origin (#35604)
* NEW Add option to create simple shipment of non origin

* NEW Add option to create simple shipment of non origin

* avoid 2nd update and revert origin change

* remove 2nd update
2025-10-03 19:06:01 +02:00
Alexandre R
01d854e44e FIX invoices payments on multicurrencies being converted as int (#35622)
* fix invoices payments on multicurrencies being converted as int

* Update paiement.php

---------

Co-authored-by: A.R <alexandre.rivas69@gmail.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-03 19:03:52 +02:00
Mohamed DAOUD
5e94b60916 fix cat warning (#35623) 2025-10-03 19:01:52 +02:00
ldestailleur
406f722cf9 Removed confirmation to close task 2025-10-03 18:39:48 +02:00
ldestailleur
e203684464 Fix ip if '' 2025-10-03 17:29:54 +02:00
ldestailleur
21ff19cec3 Add another way to know if local ta must be used or not. 2025-10-03 15:43:55 +02:00
ldestailleur
e903cf122c CSS 2025-10-03 14:40:30 +02:00
ldestailleur
456530c6c8 Fix CSS 2025-10-03 13:56:53 +02:00
ldestailleur
14d5666477 Add ref in create form 2025-10-03 13:48:31 +02:00
ldestailleur
9d4391f581 Missing table in migration 2025-10-03 13:39:56 +02:00
ldestailleur
8b82ff4fd1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-03 13:01:15 +02:00
ldestailleur
a9c0a59d59 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-03 13:00:22 +02:00
ldestailleur
8d96062feb Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-03 12:58:38 +02:00
ldestailleur
1eeee0ab80 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-03 12:58:31 +02:00
ldestailleur
8df759d0ab Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-10-03 12:58:05 +02:00
ldestailleur
5d3e2078a6 Disable not used github workflow 2025-10-03 12:57:54 +02:00
HENRY Florian
79d223cca4 fix: Do not display sign status buttonis signed status is not displayed in header (#35619) 2025-10-03 12:56:59 +02:00
ldestailleur
e0df46e5c4 Comment to discourage use of always_enabled to true. 2025-10-03 12:39:33 +02:00
ldestailleur
00143a8368 Fix constant 2025-10-03 11:59:27 +02:00
John BOTELLA
5031572102 Fix trigger (#35610) 2025-10-03 11:44:53 +02:00
Christophe Battarel
4f75fb7f8a FIX : bad name for target import table (#35615)
Co-authored-by: Christophe Battarel <christophe@altairis.fr>
2025-10-03 11:38:46 +02:00
ldestailleur
6a009f95dc Add a error log but does not block if trigger name is wrong 2025-10-03 11:27:39 +02:00
ldestailleur
16ee8858b4 Fix trigger PAYMENTONLINE 2025-10-03 10:46:40 +02:00
ldestailleur
88825c460b Spellcheck 2025-10-03 10:22:58 +02:00
ldestailleur
84f9065881 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-10-03 10:11:04 +02:00
ldestailleur
6244ab52a9 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-03 10:07:29 +02:00
ldestailleur
c6bf35779f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-03 10:04:50 +02:00
ThomasNgr-OpenDSI
de49d24d1b QUAL Remove duplicate code block (#35591)
* QUAL Remove duplicate code block

* fix PHPStan

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-03 10:04:27 +02:00
Frédéric FRANCE
4dcdabf275 fix create extrafields of type email (no more mail) (#35599)
86f5db7aa9

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-03 10:02:25 +02:00
ldestailleur
658741c072 Fix avoid rolback when no transaction open 2025-10-03 09:41:49 +02:00
emilisev
6054cd6311 NEW execute hook addMoreActionsButtons on bank card (#35598)
* execute hook addMoreActionsButtons on bank card

* fix code formatting

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-03 09:23:09 +02:00
Frédéric FRANCE
9ff1bc423d clean code (#35602)
* clean code

* clean code

* clean code

* clean code and baseline

* clean code and baseline

* clean code and baseline
2025-10-03 09:20:09 +02:00
Francis Appels
9b071f22c2 Use trigger prefix product also for supplier product. (#35566)
* Use trigger prefix product also for supplier product.

* Add explication TRIGGER_PREFIX for developers
2025-10-03 09:00:39 +02:00
Laurent Destailleur
ae11ad4e72 Fix duplicate test 2025-10-02 18:23:59 +02:00
Laurent Destailleur
049eb31665 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-02 18:11:50 +02:00
Laurent Destailleur
bec4068a22 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-02 18:05:29 +02:00
Laurent Destailleur
e429fdec87 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-02 18:04:58 +02:00
Laurent Destailleur
0bca7ac7a4 Fix CI 2025-10-02 18:01:18 +02:00
Laurent Destailleur
2cb9f21259 Fix space 2025-10-02 17:54:37 +02:00
Laurent Destailleur
65f997585b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-02 17:39:26 +02:00
Laurent Destailleur
b0636bf78c Fix CI 2025-10-02 17:38:39 +02:00
Yoan Mollard
81894fa6ac Restore the accountancy report by project to the eldy menu (#35596)
* Restore the accountancy report by project to the menus

* Side menu: show by-project view only if isModEnabled('comptabilite')

* tabs fix
2025-10-02 16:39:05 +02:00
Laurent Destailleur
d26fb57e52 Fix CI 2025-10-02 16:28:29 +02:00
Frédéric FRANCE
c18c6fe8dc use TRIGGER_PREFIX if available when updating notes (#35585) 2025-10-02 16:14:27 +02:00
ThomasNgr-OpenDSI
b12695db76 FIX : when creating a ticken on backend and adding a linked file, the 'notify thirdparty at creation' chackbox disappears. (#35595) 2025-10-02 16:12:54 +02:00
ThomasNgr-OpenDSI
b18f2f4fda FIX : thirdparty was never notified. Passing of contact ID information was not coherent. (#35590) 2025-10-02 16:11:53 +02:00
Laurent Destailleur
ba2466a008 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-02 16:00:44 +02:00
Laurent Destailleur
2e9ec3a9da Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-02 15:59:53 +02:00
Laurent Destailleur
a046419145 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-02 15:59:08 +02:00
Laurent Destailleur
b0d08278f0 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-10-02 15:53:12 +02:00
Laurent Destailleur
def8495513 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-10-02 15:52:20 +02:00
Laurent Destailleur
b2fce5052f Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-10-02 15:52:05 +02:00
Regis Houssin
b1d57a6bd1 FIX sql syntax error (#35588) 2025-10-02 15:45:30 +02:00
Regis Houssin
6a68e9f53a FIX sql syntax error (#35588) 2025-10-02 15:36:47 +02:00
ldestailleur
0ef81c4c0e PERF Avoid SQL on localtax in list of project 2025-10-02 13:58:32 +02:00
ldestailleur
dec9d861bf PERF Reduce number of SQL call to get local tax. 2025-10-02 13:50:47 +02:00
ldestailleur
3c8ea21911 Removed size="" 2025-10-02 12:49:00 +02:00
ldestailleur
9743be92cb NEW Add column thirdparty ref_customer and ref_supplier in project list 2025-10-02 12:28:27 +02:00
ldestailleur
6856b66d85 Clean code 2025-10-02 10:56:12 +02:00
ldestailleur
da79b3bc4c Add tms field into table llx_document_model 2025-10-02 10:35:28 +02:00
ldestailleur
16904d12f8 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-02 03:18:10 +02:00
ldestailleur
1525b9c85e Rename label 2025-10-02 03:17:57 +02:00
Marc de Lima Lucio
ffe07999cf FIX: pgsql: error when calculating depreciations (#34213)
* FIX: pgsql: error when calculating depreciations

* FIX: asset deprectiation: optimize sql

* FIX: travis
2025-10-02 02:39:29 +02:00
ldestailleur
af371b828f Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-02 02:17:55 +02:00
ldestailleur
b7e58f6ec1 Fix default language in demo. 2025-10-02 02:17:21 +02:00
ldestailleur
4ed605e31e Fix error message 2025-10-02 01:47:05 +02:00
ldestailleur
869aab8960 Removed no more required file 2025-10-01 20:02:36 +02:00
ldestailleur
fcb55feb50 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-01 19:57:33 +02:00
ldestailleur
8d7052ee50 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-01 19:57:24 +02:00
ldestailleur
b4ff2c4fe3 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-01 19:57:04 +02:00
Regis Houssin
24146d89c5 FIX #35568 (#35569)
* FIX #35568

* FIX clear "thirdparty" object before or during the fetch

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-01 19:54:50 +02:00
ldestailleur
0d1fa3cec0 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-01 19:51:51 +02:00
ldestailleur
57930b3abd Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-10-01 19:51:29 +02:00
ldestailleur
1dd2cc36e4 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-10-01 19:51:11 +02:00
ldestailleur
477d755bbc Clean CI files 2025-10-01 19:32:40 +02:00
ldestailleur
f85b53a4ca Test CI 2025-10-01 19:29:30 +02:00
ldestailleur
a6e01fe7b7 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 19:28:46 +02:00
ldestailleur
43c2336683 Log 2025-10-01 19:28:36 +02:00
Thomas C.
e1b919366e FIX : To have only the sender's entity when sending mail (#31053)
* fix

* Update html.formmail.class.php

* Update html.formmail.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
Co-authored-by: lvessiller-opendsi <lvessiller@open-dsi.fr>
2025-10-01 19:18:31 +02:00
ldestailleur
40e4a6959f Fix CI 2025-10-01 19:17:22 +02:00
Pierre Ardoin
30d66bcdd8 UIUX adds a new permission that restricts the user to seeing their salaries and only those. (#35293)
* Update admin.lang

Add translate "Permission511=Lire les salaires et leur paiement (les vôtres et ceux de vos subordonnées)" and move old 511->512 and 512->513.

* Update modSalaries.class.php

Add the new permission 'Read employee salaries and payments (yours only)'

* Update list.php

add the new permission filter "read child"

* Update payments.php

Add the new permission "readchild"

* Update index.php

Add support off new permission

* Update index.php

* Update index.php

* Update index.php

* Update list.php

* Update list.php

* Update list.php

* Update payments.php
2025-10-01 17:49:35 +02:00
Jon Bendtsen
8f52485172 NEW Api mass emailing (#35531)
* adding function to set it to draft mode

* New API endpoint for controlling mass mailings

* report which id we could not find + unset some fields not on this object + write that source was com/propal/class/api_propal.class.php

* extending the fetch function for the mailing object so the API can show all columns in the database

* filling more data into the object and don't unset it later

* adding notrigger to clone creation

* still some cleaning up from when cloning api_proposals.class.php

* do not unset the ID, because we want the ID so we can use it

* adding endpoint to clone a mass mailing

* extending count function with 'all' that just returns all rows, no matter the status

* API endpoints to delete all targets of a mass mailing

* setting which http method to use

* pretty print clone endpoint in API explorer

* endpoint resetTargetsStatus of mass mailing

* Typo receipients fixed

* Update api_mailings.class.php

* Update api_mailings.class.php

* Update api_mailings.class.php

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-01 17:37:43 +02:00
Yamil Esteban Garcia
fc1364db56 NEW add tags on proposals and supplier proposals and in statistics (#35553)
* add own supplier invoice tag filter and bulk insert

add own supplier invoice tag filter and bulk insert

* Update list.php

change format

* Bulk edit commande tags

Bulk edit commande tags

* Label filter orders and supplier order statistics

Label filter orders and supplier order statistics

* Supplier Order Label Filter and Mass Action for Supplier Order Labels

Supplier Order Label Filter and Mass Action for Supplier Order Labels

* Update index.php

change format

* Update list.php

change format

* Update index.php

change format

* Update index.php

change format

* create categories proposal and supplier proposal

create categories proposal and supplier proposal

* adds category insertion to budget

adds category insertion to budget

* Create  table llx_categorie_propal

Create  table llx_categorie_propal

* setCategories method


setCategories method

* bulk add tag and filter tag actions

bulk add tag and filter tag actions

* labels in supplier budget statistics and budgets

labels in supplier budget statistics and budgets

* change format

* adds category insertion to supplier budget

* create supplier budget category table

create supplier budget category table

* create setCategories method

create setCategories method

* add tags in bulk and filter tag actions

add tags in bulk and filter tag actions

* Update card.php

* Update card.php

* Update propal.class.php

* Update index.php

* Update index.php

* Update card.php

* Update supplier_proposal.class.php

* Update list.php

* Update supplier_proposal.class.php

* Update supplier_proposal.class.php

* Update list.php

* Update list.php

* Update card.php

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-01 17:37:08 +02:00
ldestailleur
54dc4452aa Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-10-01 17:27:12 +02:00
ldestailleur
746e4865d8 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-01 17:23:53 +02:00
ldestailleur
84eaa17791 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-01 17:21:40 +02:00
ldestailleur
07dfde2bf6 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-10-01 17:20:39 +02:00
ldestailleur
e9869bb5da Fix yml 2025-10-01 17:19:57 +02:00
ldestailleur
0ef519f2f6 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-10-01 17:18:29 +02:00
ldestailleur
22995dae99 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-10-01 17:16:24 +02:00
ldestailleur
b0406165ae Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-10-01 17:07:38 +02:00
ldestailleur
7eb18a140f By default an extrafields is not on on PDF 2025-10-01 17:07:27 +02:00
ldestailleur
62c009d440 Code comment 2025-10-01 17:04:30 +02:00
ldestailleur
52ae202aff Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 16:59:49 +02:00
ldestailleur
2ca2fe7f28 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 16:55:23 +02:00
ldestailleur
140310c508 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 16:55:05 +02:00
ldestailleur
64cf2513bd Clean CI 2025-10-01 16:54:52 +02:00
Frédéric FRANCE
6c207f78d8 fix llx_actioncomm.sql (#35583) 2025-10-01 16:24:54 +02:00
David Beniamine
7419604955 Allow search on date in don (#35581)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-01 16:21:28 +02:00
Marc de Lima Lucio
a3969c1d2c FIX: php 8+ warnings when creating deposits (#35582) 2025-10-01 16:21:05 +02:00
ldestailleur
9c0b3d70cc Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-10-01 16:13:56 +02:00
ldestailleur
8b54c7f2b7 FIX Label shown when value is empty 2025-10-01 16:13:16 +02:00
ldestailleur
5c14e454ad FIX #35573 FIX #35241 2025-10-01 16:13:01 +02:00
Frédéric FRANCE
0c176bc5df clean code (#35579) 2025-10-01 15:02:42 +02:00
Mohamed DAOUD
7d55a1a41a NEW Paymentok validate invoice if not already done (#35564)
* paymentok validate invoice

* add test
2025-10-01 14:51:20 +02:00
Regis Houssin
d9563ac0ed Update pr-18.yaml (#35577)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-10-01 14:49:29 +02:00
Yoan Mollard
73fe50af10 Bugfix data validation of is_numeric for subscription start_date (#35578) 2025-10-01 14:48:38 +02:00
ldestailleur
bea2f674f0 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 14:34:04 +02:00
ldestailleur
80494870c0 Try to fix CI 18 2025-10-01 14:33:56 +02:00
Eric - CAP-REL
d25847602b missing fk_user_creat value (#35576) 2025-10-01 13:59:27 +02:00
Frédéric FRANCE
1280d404ab check if file exists before include (#35570)
* check if file exists before include

* check if file exists before include

* fix
2025-10-01 13:58:20 +02:00
ldestailleur
283efbbffe Test CI 2025-10-01 13:57:10 +02:00
ldestailleur
2e430a71a3 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-10-01 13:54:19 +02:00
ldestailleur
faf2971ff7 Try to fix Ci 18 2025-10-01 13:54:11 +02:00
Frédéric FRANCE
573f951ac9 clean code (#35541)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-10-01 13:44:36 +02:00
Dylan Bourdere
6de28e5719 Fix status commande (#35563) 2025-10-01 13:44:19 +02:00
Mohamed DAOUD
cb23873769 NEW Public donation page (#35565)
* public page invoice

* trans keys

* FIX CI

* FIX phpstan

* fix CI

* fix stan
2025-10-01 13:40:41 +02:00
Frédéric FRANCE
3785dd2d17 clean code (#35567)
* clean code

* clean code

* clean code
2025-10-01 13:30:02 +02:00
Laurent Destailleur
1bedddf113 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-10-01 01:02:54 +02:00
Laurent Destailleur
4d5d72cdb5 Fix download of zip should be ok if no installmodule.lock file exists 2025-10-01 01:02:21 +02:00
ldestailleur
3bab3fd349 NEW Can show both currency code and symbol into the select of currency 2025-09-30 19:02:15 +02:00
ldestailleur
54eaa1f106 More spellcheck 2025-09-30 18:30:59 +02:00
ldestailleur
9458392ae1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-30 02:50:38 +02:00
ldestailleur
a3ee1b0c11 Check there is no dolcrypt data into demo files. 2025-09-30 02:50:17 +02:00
ldestailleur
9fd37b308e CSS install 2025-09-30 02:36:47 +02:00
ldestailleur
a546806788 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-30 02:26:51 +02:00
ldestailleur
a5ff29ebce Fix demo data 2025-09-30 02:26:29 +02:00
ldestailleur
d372f0d1f8 Look and feel v23 2025-09-30 01:20:25 +02:00
ldestailleur
d6a579f437 CSS 2025-09-30 00:43:18 +02:00
Florian Mortgat
89757d5cbf NEW: hooks showInputExtraField and showOutputExtraField to override ExtraFields::show(Input|Output)Field (#35496)
* NEW: hooks `showInputExtraField` and `showOutputExtraField` to override `ExtraFields::showInputField` and `ExtraFields::showOutputField`

* Fix inter-hook interference with 'showOptionals' because resPrint isn't output right after calling executeHooks

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-29 23:31:26 +02:00
Norbert Penel
d96de728ea Update project selection with additional parameters (#35542)
Fix #35500
2025-09-29 23:19:04 +02:00
Charlène Benke
420f4ff416 add MAIN_DOCUMENTS_LIST_IN_TWOCOLUMNS params (#35532)
* add MAIN_DOCUMENTS_LIST_IN_TWOCOLUMNS params

Display documents lists on two columns instead two following table

* Update document_actions_post_headers.tpl.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-29 21:45:10 +02:00
Charlène Benke
a91cf6086a Add hook on expense api (#35438)
* Add hook on expense api

* Fix SQL query construction in api_shipments.class.php

* Add global hookmanager declaration in api_shipments

* Remove unnecessary blank lines in api_shipments.class.php

* Remove unnecessary blank lines in api_shipments.class.php

* Update api_shipments.class.php

* Update api_shipments.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-29 21:26:41 +02:00
Mohamed DAOUD
c222bf1f85 ip protection for invoice creation (#35557) 2025-09-29 21:13:01 +02:00
Frédéric FRANCE
925d6f450d add country and custom code in fetch line (#35554)
* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

* add country and custom code in fetch line

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-29 21:09:06 +02:00
Frédéric FRANCE
dd67cab64f fix set project for actioncomm (#35543) 2025-09-29 21:07:00 +02:00
kkhelifa-opendsi
b84969a548 NEW : Add missing parameters for menus on webportal hook (#35550) 2025-09-29 20:44:13 +02:00
Frédéric FRANCE
700463596e verify if file exists before trying to include (#35548)
* verify if file exists before trying to include

* verify if file exists before trying to include
2025-09-29 20:42:44 +02:00
Frédéric FRANCE
66f9bfb764 fix typos in ChangeLog (#35546) 2025-09-29 20:41:52 +02:00
Frédéric FRANCE
e0fd1bdd3e clean code (#35545) 2025-09-29 20:41:32 +02:00
kkhelifa-opendsi
341a88f48a FIX : Fix variable typos in Context class or webportal (#35551) 2025-09-29 20:41:20 +02:00
Frédéric FRANCE
4657b5f02c fix CI (#35556) 2025-09-29 20:40:36 +02:00
ldestailleur
d2e101bafe css 2025-09-29 19:13:57 +02:00
ldestailleur
5bbfc5e025 Hide phpinfo link during upgrade process (already forbidden) 2025-09-29 16:06:16 +02:00
ldestailleur
e8aac4e17d Trans 2025-09-29 15:19:37 +02:00
ldestailleur
efd5e48f78 NEW The PHP info is in a popup in install page. 2025-09-29 13:56:43 +02:00
ldestailleur
c05004415b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-29 12:27:23 +02:00
ldestailleur
254924712d Better error messgae 2025-09-29 12:04:56 +02:00
Frédéric FRANCE
164f2c4414 clean code (#35539)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-28 23:19:33 +02:00
Laurent Destailleur
e73ca1d749 Better error management 2025-09-28 23:17:26 +02:00
Laurent Destailleur
3c57870e31 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-28 22:44:37 +02:00
Charlène Benke
277c01a432 Implement CRUD operations for interventional lines and contacts (#35457)
* Implement CRUD operations for interventional lines and contacts

Added methods to manage interventional lines and contacts.

* Update api_interventions.class.php

* Fix variable references in api_interventions.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-28 22:41:42 +02:00
Regis Houssin
ef21145b1f FIX #35519 (security) missing check user rights (#35527)
* FIX (security) missing check user rights

* FIX remove unnecessary check
2025-09-28 22:40:03 +02:00
Frédéric FRANCE
f5dab1a3b6 clean code (#35535)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-28 22:27:15 +02:00
Jon Bendtsen
f3a62ae0b1 If the number of categories are smaller than the limit and the page is not 0, then we should not return anything (#35509)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-09-28 22:26:48 +02:00
Laurent Destailleur
131d1390bc Debug v23 2025-09-28 22:20:44 +02:00
Laurent Destailleur
0564b44678 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-28 21:47:12 +02:00
Laurent Destailleur
4de515c4df Debug v23 2025-09-28 21:45:37 +02:00
Frédéric FRANCE
29db95a8b3 clean code (#35538)
* clean code

* clean code

* clean code
2025-09-28 21:44:41 +02:00
HENRY Florian
b117b315a2 fix: if MAXREFONDOC is set to -1 do not output Orders in Pulbic note (#35493)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-28 21:01:10 +02:00
Frédéric FRANCE
c4068211c5 add missing translation (#35536)
* add missing translation

* add missing translation
2025-09-28 20:59:52 +02:00
Frédéric FRANCE
a8b4ae7dfb clean code (#35534)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-28 20:58:18 +02:00
Frédéric FRANCE
7fb7d38ffc clean code (#35533) 2025-09-28 20:56:54 +02:00
Laurent Destailleur
38a7524846 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-28 20:01:36 +02:00
Laurent Destailleur
f30fb7a6a5 Test 2025-09-28 19:01:48 +02:00
Laurent Destailleur
54ad6ee3c9 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-28 18:44:05 +02:00
Laurent Destailleur
8db1c3eec2 Code comment 2025-09-28 18:42:49 +02:00
Laurent Destailleur
83ae0eedab Code comment 2025-09-28 18:37:40 +02:00
ldestailleur
33dbb293ea Fix comment 2025-09-28 15:39:37 +02:00
ldestailleur
67e185a30f Better tooltip 2025-09-28 15:33:56 +02:00
ldestailleur
752e06f5fc FIX #35520 FIX #35522 2025-09-28 15:21:20 +02:00
Günter Lukas
4cb5fba913 NEW #31723 - Improve project overview: Hide paid orders (#35524)
* Add PaidHidden and PaidShown language entries

* Add functionality to show/hide paid lines

* Add copyright notice for Guenter Lukas

* Fix spelling of 'Guenter' to 'Günter' in copyright

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-28 14:40:06 +02:00
ldestailleur
94e76ab91f css 2025-09-28 14:38:24 +02:00
ldestailleur
824e35fe04 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-28 14:25:40 +02:00
ldestailleur
bd217b025f Fix CSS 2025-09-28 14:25:28 +02:00
Frédéric FRANCE
8fa1df6560 clean code (#35518)
* clean code

* fix

* fix

* clean code
2025-09-28 13:58:30 +02:00
Joachim Kueter
d286de5684 odd optional column for VAT reverse charge flag (#35530) 2025-09-28 13:57:36 +02:00
MDW
a161c5fb67 Qual: Fix phan notices, update baseline (#35528)
# Qual: Fix phan notices, update baseline

Fix some new phan notices and update baseline
2025-09-28 13:55:39 +02:00
Frédéric FRANCE
6441c42323 clean code (#35529)
* clean code

* clean code

* clean code
2025-09-28 13:54:39 +02:00
Laurent Destailleur
1466698553 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-28 01:43:10 +02:00
Laurent Destailleur
65a04831a9 Fix height 2025-09-28 01:42:50 +02:00
Anthony Damhet
c17f13316a UIUX - More intuitive select table (#35485)
* More intuitive select table

Added for objects:
- Members
- ActionComm
- Mailing
- Bank Accounts
- Various Payments
- Cash Control
- Paiement
- Contacts
- VAT
- Contracts
- Cron
- Gifts (Dons)
- Expedition
- Expense Reports
- FichInter
- Supplier Proposals
- Supplier Orders
- Supplier Invoices
- Supplier Paiements
- Products and supplier products
- Holidays
- Knowledge record
- Partnership
- Inventory
- Stock
- Projects
- Tasks
- Tickets
- Societes
- Salaries
- Resource
- Users

* Add Status message on documentation

* Remove intuitive select experimetns

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-28 01:21:40 +02:00
Frédéric FRANCE
33ca6820a2 add doc (#35516)
* add doc

* add doc

* add doc

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-27 22:08:13 +02:00
Laurent Destailleur
d3bef6ee32 Debug v23 2025-09-27 18:28:35 +02:00
ldestailleur
e45fe1f988 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-27 15:57:27 +02:00
ldestailleur
6a70e29274 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-27 15:48:51 +02:00
ldestailleur
8b58b215b4 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-27 15:48:40 +02:00
ldestailleur
ed2c5a6e80 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-27 15:42:56 +02:00
ldestailleur
fe28e36638 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-27 15:42:44 +02:00
ldestailleur
4906ad29d6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-27 15:38:07 +02:00
ldestailleur
488b7d88a2 Enhance output for unalterable logs 2025-09-27 15:37:53 +02:00
Regis Houssin
bca094a6a8 FIX avoid php warnings (#35492)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-27 13:28:04 +02:00
Frédéric FRANCE
0afc7eed80 clean code (#35515)
* clean code

* add doc

* add doc
2025-09-27 12:28:31 +02:00
Frédéric FRANCE
c2210c542f clean code (#35514) 2025-09-27 12:23:48 +02:00
Alexandre SPANGARO
b4a88253eb UIUX - More intuitive select table - Module builder (#35490)
Module builder

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-27 12:10:48 +02:00
Joachim Kueter
16c9d4005f Fix #35208 - Multicurrency fix for discount in invoice (Sponge) (#35506)
* Multicurrency fix for discount

* removed empty line
2025-09-27 12:10:15 +02:00
Frédéric FRANCE
43e3ebde1a clean code (#35512) 2025-09-27 12:08:02 +02:00
Regis Houssin
acf5e30b30 FIX missing entity filter (#35517) 2025-09-27 12:07:43 +02:00
ldestailleur
76b5540124 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-09-27 12:06:49 +02:00
ldestailleur
8bb63c5963 Test on autoassign 2025-09-27 12:06:40 +02:00
Frédéric FRANCE
ac54639668 fix CI branch 21.0 (#35513) 2025-09-27 11:57:17 +02:00
Joachim Kueter
13be852eac Fix #35354 (#35502)
* Changed param from int

* Use float
2025-09-27 04:12:07 +02:00
Joachim Kueter
c2e6aa3999 Fix to cover arrays (#35499) 2025-09-27 04:11:31 +02:00
Norbert Penel
5c043937f3 fix webhook with bad MRP trigger call (#35507)
* fix webhook with bad MRP trigger call

fix #35258

* Update functions.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-27 04:04:38 +02:00
Frédéric FRANCE
95e2a7690c clean phpstan baseline for branch 22 (#35511)
* clean phpstan baseline

* upgrade phpstan version

* fix phan

* fix phan

* fix phan

* fix phan

* fix phan
2025-09-27 03:58:59 +02:00
ldestailleur
9763762ce8 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-27 03:35:47 +02:00
ldestailleur
5caed6d133 Fix search in website pages 2025-09-27 03:33:35 +02:00
ldestailleur
481572f37a Fix label of search field 2025-09-27 03:30:27 +02:00
ldestailleur
7c989f9d74 Fix search in website pages 2025-09-27 03:27:49 +02:00
ldestailleur
bf21674d27 Fix search in website pages 2025-09-27 03:26:23 +02:00
ldestailleur
3f1709123c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-27 02:29:07 +02:00
ldestailleur
8696b0ab6f Try to add PRODUIT_SOUSPRODUITS_ALSO_ENABLE_PARENT_STOCK_MOVE to restore
an old behaviour.
2025-09-27 02:28:41 +02:00
ldestailleur
7e77994cec Rename hidden constant for a better understanding 2025-09-27 02:20:40 +02:00
ldestailleur
f70b6b43ec Prepare 22.0.2 2025-09-27 01:09:20 +02:00
ldestailleur
964aca7c84 Prepare 22.0.2 2025-09-27 01:06:54 +02:00
kkhelifa-opendsi
21af311344 NEW : Change the path for the mailing files (#34878)
* NEW : Change the path for the mailing files because if you have more than 100 mailing you have the files of the previous mailing show in the newest.
Only activate if the global MAILING_USE_NEW_PATH_FOR_FILES is set to 1.
Add a script for move files to new path.

* Place migration script into repair.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
Co-authored-by: tnegre <tnegre@open-dsi.fr>
2025-09-27 00:08:56 +02:00
kkhelifa-opendsi
a9cd1d2bb9 New : Copy support of the deposit percent of the payment mode found in customer proposal, customer order and customer invoice to supplier proposal, order and invoice (#35432)
* New : Copy support of the deposit percent of the payment mode found in customer proposal, customer order and customer invoice to supplier proposal, order and invoice

* Correction pre-commit / travis CI

* Correction pre-commit / travis CI

* Correction pre-commit / travis CI

* Correction pre-commit / travis CI
2025-09-26 23:59:51 +02:00
Charlène Benke
a633c1db81 NEW Add contact management on project Api (#35459)
* Add contact management on project Api

* Update api_projects.class.php

* Update api_projects.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-26 23:56:51 +02:00
Frédéric FRANCE
3ed79a2055 Fix warning in mo_production.php if no extrafields (#35482) 2025-09-26 23:56:23 +02:00
Frédéric FRANCE
55f4c8f7ae clean code (#35486)
* clean code

* clean baseline
2025-09-26 23:55:58 +02:00
John BOTELLA
f8b9748d49 New doc for intuitive table line selection (#35491)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-26 23:55:43 +02:00
Vincent Maury
2aa57c3ce2 Add mp4 and webm to previews (#35494)
So simple to do ...

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-26 23:54:19 +02:00
Frédéric FRANCE
01b917c0a1 clean code (#35505) 2025-09-26 23:53:49 +02:00
Frédéric FRANCE
5ae9e3fc51 add TRIGGER_PREFIX in workstation.class.php (#35508) 2025-09-26 23:52:51 +02:00
Frédéric FRANCE
6b433afab1 clean code (#35510) 2025-09-26 23:52:29 +02:00
Günter Lukas
ee0dd8b672 fix #35503 - Wrong format of buying price in dispatch.php / reception.php (#35504)
* Change price calculation method in dispatch.php

In output field price should be used instead of price2num, other formatting does not work (esp. when you use German langugae settings)

* Format cost price before displaying in input field

In output field price should be used, otherwise formatting does not work (esp. when you use German langugae settings)

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-26 23:50:57 +02:00
HENRY Florian
0b69ed1612 fix: display of chkbxlst in edit with filter (#35480) 2025-09-26 21:01:45 +02:00
HENRY Florian
f532f85d8c fix: remove space in global conf test (#35484) 2025-09-26 20:54:21 +02:00
Dylan Bourdere
56a73c5cd9 fix: PHP warning in mail and card presend (#35474)
* fix: PHP warning in mail and card presend

* phpstan

* fix: PHP warning in mail and card presend
2025-09-26 20:48:54 +02:00
Frédéric FRANCE
680f4b6c31 fix CI (#35481)
* fix CI

* Update paymentsalary.class.php

* clean phpstan baseline

* clean code

* clean code
2025-09-26 20:47:34 +02:00
Frédéric FRANCE
343e05efc5 update phpstan (#35487) 2025-09-26 20:46:46 +02:00
Laurent Destailleur
4284d147bf Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-26 19:17:09 +02:00
Laurent Destailleur
ae8ed29ce2 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-26 19:12:41 +02:00
Laurent Destailleur
fa466150cb Fix CSS 2025-09-26 19:11:59 +02:00
Frédéric FRANCE
1427895a62 fix CI branch 21 (#35495) 2025-09-26 18:31:49 +02:00
ldestailleur
75438c60c7 Add try catch 2025-09-26 01:56:19 +02:00
ldestailleur
a43bf46a75 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-26 01:27:00 +02:00
ldestailleur
f65903d006 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-26 01:23:02 +02:00
ldestailleur
369b9510e0 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-26 01:21:57 +02:00
ldestailleur
deeca91581 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-26 01:21:12 +02:00
ldestailleur
1ed840384a Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-26 01:21:01 +02:00
ldestailleur
f93fdc641a Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-26 01:16:30 +02:00
ldestailleur
0226d75ec6 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-26 01:16:17 +02:00
ldestailleur
66aa736629 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-26 01:12:41 +02:00
ldestailleur
13cdc20266 Fix warning 2025-09-26 01:12:30 +02:00
Charlène Benke
debdeb071d add current date link on Date Delivery Planned (#29876)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-25 12:24:09 +02:00
Marc de Lima Lucio
8428a5ccfa NEW: extrafields: add field to link a field to a module (#34416)
* NEW: extrafields: add field to link a field to a module

* Update 22.0.0-23.0.0.sql

* Update llx_extrafields.sql

* Update 22.0.0-23.0.0.sql

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-25 12:20:46 +02:00
Norbert Penel
4bcb7e16da FIX price.php (#32181)
* FIX price.php

https://github.com/Dolibarr/dolibarr/issues/32180

* Update price.php

* Update price.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-25 12:07:36 +02:00
Dylan Bourdere
a63eae7903 Fix: property api dir_temp (#35439)
* fix undefined property

* rename key
2025-09-25 11:59:09 +02:00
atm-GregM
35bb894393 FIX check commande liste validate (#35479) 2025-09-25 11:57:49 +02:00
ldestailleur
79210c0120 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-09-25 11:57:12 +02:00
ldestailleur
d87ebbf926 Merge branch '17.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-09-25 11:55:28 +02:00
ldestailleur
08b105502e Merge branch '16.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-09-25 11:55:21 +02:00
ldestailleur
bd2aba1a2f Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into 16.0 2025-09-25 11:54:59 +02:00
ldestailleur
a4601686a6 Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2025-09-25 11:54:18 +02:00
ldestailleur
46900b8a37 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-25 11:53:53 +02:00
ldestailleur
a4d9b335ce Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-25 11:53:03 +02:00
Dylan Bourdere
b43524e467 add deprecated properties code_compta to remove some undefined properties warning (#35473) 2025-09-25 11:52:32 +02:00
VIAL-GOUTEYRON Quentin
049cbbfb4d Fix MRP: Add hook calculateCostsBomAfter to alter BOM costs (#35465)
* fix doc (#35416)

* fix doc

* Update commonobject.class.php

* Update mo.class.php

* FIX missing entity filter (#35461)

* Add post-processing hook `calculateCostsBomAfter` in BOM cost calculations

---------

Co-authored-by: Frédéric FRANCE <frederic34@users.noreply.github.com>
Co-authored-by: Regis Houssin <regis.houssin@inodbox.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-25 11:48:19 +02:00
lvessiller-opendsi
bcf6d6a7a2 FIX api orders : forward database error on failure (backpot commit d9e81cb) (#35478) 2025-09-25 11:47:51 +02:00
Dylan Bourdere
6916ca7ac8 fix: PHP warning: use getDolGlobalString (#35475) 2025-09-25 11:47:19 +02:00
ldestailleur
023e3081a4 Fix link to ref of salary payment 2025-09-25 11:09:00 +02:00
ldestailleur
9dd0c922da Fix CI 2025-09-24 18:53:58 +02:00
Dylan Bourdere
0ba4c17e66 Fix some undefined array key warning (#35471)
* fix some undefined array key warning

* fix some undefined array key warning
2025-09-24 18:39:38 +02:00
ldestailleur
0e9d5cfda0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-24 18:29:32 +02:00
ldestailleur
bb65d07c3d Fix log message 2025-09-24 18:29:20 +02:00
ldestailleur
38082f52c5 Doc 2025-09-24 18:25:08 +02:00
ldestailleur
4bc5892544 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-24 17:00:53 +02:00
Regis Houssin
b0e0c9d17e FIX wrong extrafield template in create mode (#35241) (#35470) 2025-09-24 17:00:31 +02:00
ldestailleur
3b5d1eb315 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-24 16:35:44 +02:00
ldestailleur
77d956ce92 Clean code 2025-09-24 16:35:25 +02:00
Bradley Jarvis
4f81ffb308 FIX: Error on add contact (#35460)
* FIX: Error on add contact

Trigger COMMANDE_ADD_CONTACT causing error when adding a contact to and
order, this fix updates the COMMANDE prefix to ORDER

* FIX: delete contact

This fixes the trigger call for delete contact on orders

* FIX: Update patch

Updated to reflect recent PR to add TRIGGER_PREFIX to commande class

* Update commonobject.class.php

Reduce risk of regression

---------

Co-authored-by: brad <brad@endurotags.com.au>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-24 16:33:40 +02:00
Dylan Bourdere
22bd69f9fe FIX: Remove perms to access commerce tab when the only active permission is fournisseur:lire (#35467) 2025-09-24 16:11:51 +02:00
ldestailleur
db5f33442a Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-09-24 15:25:33 +02:00
ldestailleur
84ba1852aa Another try to have autoassignement on v18 2025-09-24 15:25:15 +02:00
ldestailleur
75925aee71 Debug v23 2025-09-24 12:05:30 +02:00
ldestailleur
20875dead9 Use fields into the list of events 2025-09-24 12:01:52 +02:00
ldestailleur
0351057ef2 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-24 11:13:43 +02:00
ldestailleur
16a7431168 Add fields for actioncomm to fix #35422 2025-09-24 11:13:24 +02:00
Regis Houssin
161d0e4fdf FIX missing entity filter (#35461) 2025-09-24 10:38:16 +02:00
John BOTELLA
cd69b8deb1 Fix history tooltip display (#35464) 2025-09-24 10:37:53 +02:00
Frédéric FRANCE
e65b5575b9 clean code (#35462)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-24 10:37:26 +02:00
Laurent Destailleur
e85c2d70b9 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-24 00:56:29 +02:00
Jean Traullé
5432834836 FIX #35425 (#35426)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-23 23:26:25 +02:00
Dylan Bourdere
59ec1a2811 fix ui on multi line subtotal & fix text contrast (#35449)
* fix ui on multi line subtotal & fix text contrast

* extract subtotal pdf logic

* phpcs

* lint

* lint

* refactor

* phpcs

* phpcs

* phpcs

* Update pdf.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-23 23:24:37 +02:00
Frédéric FRANCE
bb9899085e clean code (#35451)
* clean code

apiroute is interventions

* Update api_interventions.class.php

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* fix bad condition

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-23 23:22:57 +02:00
Alexandre SPANGARO
5df20007bc NEW API User - Remove user from group (#35453)
* NEW API User - Remove user from group

* Update api_users.class.php

* Update api_users.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-23 23:22:38 +02:00
ldestailleur
ce6bd7146b NEW Make the public contact form with experimental status 2025-09-23 23:15:13 +02:00
ldestailleur
55fe8b09e3 NEW Make the public contact form with experimental status 2025-09-23 23:13:42 +02:00
ldestailleur
79cf1410b3 Test CI 2025-09-23 22:10:57 +02:00
ldestailleur
6f15fcc66c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-23 22:03:24 +02:00
ldestailleur
2a7ce987c3 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-23 22:03:09 +02:00
ldestailleur
35f6a98665 Fix CI 2025-09-23 22:00:54 +02:00
Charlène Benke
cd03e9fc36 Add check for invoice status before line deletion (#35456)
* Add check for invoice status before line deletion

* Change invoice status check from fk_statut to status
2025-09-23 21:44:47 +02:00
Charlène Benke
496fef63a3 contact deletion in api_orders class for internal and external (#35455)
* contact deletion in api_orders class for internal and external

* Update api_orders.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-23 21:43:39 +02:00
Frédéric FRANCE
ca8a6c9c45 clean code (#35447)
* clean code

* clean code

* clean code
2025-09-23 21:42:20 +02:00
kaantopkaya
985b6f258a new: add otherCurlOptions to getURLContent (#35454) 2025-09-23 21:41:32 +02:00
github-actions[bot]
d5c61d07ba PHPStan > Update baseline (#35452)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-23 21:39:51 +02:00
ldestailleur
5879968e60 Clean code 2025-09-23 18:15:40 +02:00
ldestailleur
ad830a346e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-23 16:50:17 +02:00
ldestailleur
6ead2839d0 Fix missing several test on permission on actions 2025-09-23 16:41:53 +02:00
ldestailleur
bf006a28be Fix permission to cancel 2025-09-23 13:47:33 +02:00
ldestailleur
f045761826 Fix missing trans 2025-09-23 13:04:42 +02:00
ldestailleur
7ced36c991 Fix delete of holiday 2025-09-23 12:37:57 +02:00
ldestailleur
6bae5b2538 Avoid fatal error 2025-09-23 10:37:53 +02:00
ldestailleur
bde100bf9d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-23 10:18:26 +02:00
ldestailleur
c063eea63d Debug v23 2025-09-23 10:18:08 +02:00
Frédéric FRANCE
c08c7170d2 clean code (#35427)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-22 22:25:00 +02:00
Anthony Damhet
1df61bbd98 Add intuitive table selection (#35444)
Add intuitive table selection with class .row-with-select
Added to propal, order and invoice list
2025-09-22 22:20:52 +02:00
Frédéric FRANCE
00fe10a75f clean code (#35442)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-22 22:16:20 +02:00
github-actions[bot]
21100454f6 PHPStan > Update baseline (#35433)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-22 20:32:02 +02:00
Dylan Bourdere
65a3b0893d fix undefined properties (#35435) 2025-09-22 20:31:50 +02:00
Dylan Bourdere
669c939bcd use getDolGlobalString to avoid getting undefined property (#35436) 2025-09-22 20:30:47 +02:00
Frédéric FRANCE
a7cebb70a9 fix usage of recipient translation (#35437)
* fix usage of recipient translation

* fix usage of recipient translation

* fix usage of recipient translation
2025-09-22 20:30:23 +02:00
John BOTELLA
f135c22cd1 Fix tootltip (#35441) 2025-09-22 20:28:04 +02:00
ldestailleur
fdb1564e18 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-22 13:41:11 +02:00
ldestailleur
b8353936b6 Fix column setup 2025-09-22 13:40:59 +02:00
ldestailleur
17d3a35a51 Fix select technical id 2025-09-22 13:38:27 +02:00
Dylan Bourdere
92454d671f rename tab name in comment of modulebuilder (#35431) 2025-09-22 12:11:32 +02:00
ldestailleur
6ddc9eb796 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-22 11:56:18 +02:00
Frédéric FRANCE
0dde113a71 fix CI v22 (#35430) 2025-09-22 11:55:36 +02:00
ldestailleur
f4d3c63332 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-22 10:50:45 +02:00
ldestailleur
401d1dcdc0 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-22 10:42:52 +02:00
ldestailleur
f6ac3eda7d spellcheck war 2025-09-22 10:33:50 +02:00
Bradley Jarvis
6c8b4da445 FIX - MRP MO Product to Consume (#35424)
* FIX - MRP MO Product to Consume

Fixes MO Product to Consume when recursive BOM's are used, the product
to consume only includes the BOM line items instead of BOM product

* fix php-stan errors

* fix phan analysis errors

* fix phan analysis errors take 2

---------

Co-authored-by: brad <brad@endurotags.com.au>
2025-09-22 10:18:14 +02:00
ldestailleur
838e6efd5f Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-22 09:56:59 +02:00
ldestailleur
83f1825b63 Fix avoid fatal error 2025-09-22 09:56:32 +02:00
Laurent Destailleur
7ef5b4d427 Code comment 2025-09-22 02:39:45 +02:00
Laurent Destailleur
a2640829ca Better sanitization of url and email 2025-09-22 02:38:48 +02:00
Chloe-Moreau-2009
f8376320aa QUAL replace $conf->XXX->dir_output by getMultidiroutput (#34446)
* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

---------

Co-authored-by: Theobald <f.moreau@theobald-groupe.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-22 00:53:15 +02:00
Vincent Maury
1abb76dc2e Fix 34301 Project selector on supplier proposal filters incorrectly by thirdparty, ignoring global constant (#34498)
* Fix 34301

* Fix issue #34301

* Fix issue #34301

* Update card.php

* Update card.php

---------

Co-authored-by: vmaury <vmaury@vmaury-ThinkPad-X240>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 23:49:46 +02:00
Charlène Benke
e02991ed7f NEW Add hook initialization for interventions API (#35203)
* NEW Add hook initialization for interventions API

the goal is to enhance the search function on the api (by sample add linked contact or user name)

* Clean up whitespace in api_interventions.class.php

* Fix parameter reference in executeHooks call

* Update api_interventions.class.php

* Update action name in API intervention hooks

* Add 'apimethod' to parameters in API hook

* Update api_interventions.class.php

* Update api_interventions.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 23:23:39 +02:00
Frédéric FRANCE
8fd4d0332d clean code (#35423)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-21 23:22:33 +02:00
ldestailleur
6a97704644 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-21 17:11:03 +02:00
ldestailleur
1008b0f3e4 Fix CI 2025-09-21 17:10:53 +02:00
ldestailleur
137d3e579b CSS 2025-09-21 17:10:07 +02:00
ChristosK.
45336e50a4 Update recap-fourn.php (#35417)
* Update recap-fourn.php

The key improvement is that now the balance calculation works correctly with descending order of movements. The balance will show the most recent transaction with the cumulative total of all transactions, and older transactions will show their respective balances as of that time.
This implementation now matches the behavior of compta\recap-compta.php where the balance is calculated from bottom to top when the movements are displayed in descending order.

* Update recap-fourn.php

The key improvement is that now the balance calculation works correctly with descending order of movements. The balance will show the most recent transaction with the cumulative total of all transactions, and older transactions will show their respective balances as of that time.
This implementation now matches the behavior of compta\recap-compta.php where the balance is calculated from bottom to top when the movements are displayed in descending order.

* Update recap-fourn.php

fix reordering by date column

* Update recap-fourn.php

* Update recap-fourn.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 16:52:43 +02:00
ldestailleur
fdf3b9057a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-21 16:51:32 +02:00
ldestailleur
31b9e008fe Fix color of status 2025-09-21 16:51:20 +02:00
ldestailleur
13b3e15503 Fix CI 2025-09-21 16:04:29 +02:00
github-actions[bot]
e169718b4c PHPStan > Update baseline (#35420)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-21 15:32:44 +02:00
Frédéric FRANCE
86f20799bc clean code (#35419)
* clean code

* clean code
2025-09-21 15:32:34 +02:00
ldestailleur
b783743b10 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-21 15:31:55 +02:00
ldestailleur
700cbfb19c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-21 15:28:41 +02:00
ldestailleur
842f57b866 Fix hack to avoid infinite loop in restler when xdebug is on 2025-09-21 15:26:47 +02:00
ldestailleur
49051ff165 Removed deprecated property ->projet (replace with ->project) 2025-09-21 15:08:56 +02:00
ldestailleur
15f34dbbb0 QUAL: Removed deprecated properties user_valid, user->creation,
user_modification replaced with user_ceation_id, user_validation_id and
user_modification_id.
2025-09-21 14:58:38 +02:00
ldestailleur
27c725f5ca Clean code 2025-09-21 14:29:34 +02:00
ldestailleur
e45352bd11 Clean code. Replace property with local variable. 2025-09-21 14:21:38 +02:00
Charlène Benke
9e3d909570 add getTimespent on api task (#35263)
* add getTimespent on api task

* Fix return statement in api_tasks.class.php

* Fix return statement in api_tasks.class.php

* Fix formatting and spacing in getTimespent method

* Fix formatting of if statement in getTimespent method

* Update api_tasks.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 12:30:48 +02:00
ldestailleur
35e720354e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-21 12:22:19 +02:00
ldestailleur
82917d2b75 Complete parameter for api hook 2025-09-21 12:22:08 +02:00
Frédéric FRANCE
b8cda55d26 fix bad test (#35418) 2025-09-21 12:13:09 +02:00
Frédéric FRANCE
1d56ed09f4 fix doc (#35416)
* fix doc

* Update commonobject.class.php

* Update mo.class.php
2025-09-21 12:12:37 +02:00
Frédéric FRANCE
8753595903 fix translation member (#35415) 2025-09-21 12:12:29 +02:00
Frédéric FRANCE
e7ddb684e0 clean code (#35387)
* clean code

* clean code

* clean code

* clean code

* clean code

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 12:12:09 +02:00
Frédéric FRANCE
5c2344cca8 clean code (#35396)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-21 12:11:36 +02:00
Frédéric FRANCE
4e7954b85c fix CI v19 (#35414) 2025-09-21 12:10:43 +02:00
ldestailleur
bf98e2b1d5 Debug setup reminders v23 2025-09-20 19:33:05 +02:00
ldestailleur
8390a19d59 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-20 19:13:26 +02:00
ldestailleur
297d43d514 Debug v23 2025-09-20 19:12:43 +02:00
webmaster67
7dd1e5a95f NEW More webportal fonctions - Can add shared files and thirdparty documents (#35391)
* Create documentlist.controller.class.php

Intégration de mon portail client personnalisé avec GED
attention 
class/sontext.class.php devra aussi être modifier.

* Update context.class.php

ajout du ged 
pour les fichiers joints par tiers.

* Update context.class.php

ajout d'accès à fichiers joints du tiers.

* Update menu.tpl.php

ajout du menu accès au GED

* Update README.md

* Update README.md

* Update README.md

* Add files via upload

document utile sert a partager via le GED de dolibarr des fichiers avec tous les clients utilisateur du webportal.

* Update context.class.php

ajout dans le menu de deux controleur suplémentaire.

* Update menu.tpl.php

ajoute des deux chapitre dans le menu

* Update README.md

* Update README.md

* Update menu.tpl.php

document format change

* Add files via upload

mises à jour et normalisation fichiers

* Add files via upload

ajout webportal.lang

* Update README.md

* Delete htdocs/webportal/documentutile.controller.class.php

* Update menu.tpl.php

* Update README.md

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update README.md

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update README.md

* Create webportal.lang

* Update webportal.lang

* Update webportal.lang

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update website.lang

* Delete htdocs/langs/fr_FR/webportal.lang

* Delete htdocs/langs/en_US/webportal.lang

* Update README.md

* Update README.md

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Create abstractdocument.controller.class.php

* Update website.lang

* Update website.lang

* Update website.lang

* Update README.md

* Update README.md

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update README.md

* Update context.class.php

* Update README.md

* Update abstractdocument.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update menu.tpl.php

* Update documentlist.controller.class.php

* Update abstractdocument.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update shareddocuments.controller.class.php

* Update documentlist.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update README.md

* Update context.class.php

* Update documentlist.controller.class.php

* Update menu.tpl.php

* Update menu.tpl.php

* Update context.class.php

* Update documentlist.controller.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 19:11:31 +02:00
ldestailleur
73f1b50ea1 Fix default mode is edit 2025-09-20 18:47:10 +02:00
Frédéric FRANCE
b9776e8a83 fix reminders sms (#35398)
* fix reminders sms

* fix reminders sms

* fix reminders sms

* fix reminders sms

* fix durations

* fix durations

* fix durations

* fix durations

* fix durations

* fix durations

* fix durations

* fix durations

* fix

* fix

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 18:38:10 +02:00
Frédéric FRANCE
41e914f9ac fix CI v19 (#35413)
* fix CI v19

* Update ProductCombination.class.php

* Update combinations.php

* Update combinations.php

* Update actions_massactions.inc.php
2025-09-20 18:37:01 +02:00
Carlos Herrera
10c7a67ac1 Problem in Gantt view. Tasks in project (#35412)
Fixes #35411
2025-09-20 16:53:32 +02:00
ldestailleur
f9cd8367ad Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-20 16:23:22 +02:00
ldestailleur
ca878b2d76 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-20 16:19:57 +02:00
ldestailleur
048b0f98e6 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-20 16:15:15 +02:00
ldestailleur
37c119d51d Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-20 16:11:36 +02:00
ldestailleur
5614def20b Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-20 16:06:08 +02:00
ldestailleur
f33fe1036f Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-09-20 16:05:06 +02:00
Frédéric FRANCE
f43f2909ff rule is deprecated (#35410) 2025-09-20 16:02:39 +02:00
PsyCrow
3a8f36d185 FIX: #35407 After updating to version 22, local taxes were no longer applied (#35408)
FIX: #35407
$tva_tx could be string so should not be casted to float
2025-09-20 16:02:20 +02:00
ldestailleur
02809d5901 Fix syntax 2025-09-20 16:00:51 +02:00
MDW
b3228aa7ce Qual: Fix phan notices (#35406)
* fix CI

* fix

* Qual: Fix newly appeard phan notices

# Qual: Fix newly appeard phan notices

Fix notices that appearce sin a previous phan report - some of these
notices are masked by the current baseline.

---------

Co-authored-by: Frédéric FRANCE <frederic34@users.noreply.github.com>
Co-authored-by: Frédéric FRANCE <frederic.france@free.fr>
2025-09-20 15:59:05 +02:00
Frédéric FRANCE
d1572fc3ea fix CI (#35409)
* fix CI

* fix
2025-09-20 15:57:39 +02:00
ldestailleur
d3de333f54 Trans 2025-09-20 15:56:19 +02:00
ldestailleur
acd694914b FIX Bad management of carriage return when requesting IA API. 2025-09-20 15:24:45 +02:00
ldestailleur
caac9a5218 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-20 15:01:36 +02:00
ldestailleur
34a34efec5 Enhance AI setup and log report 2025-09-20 15:01:26 +02:00
ldestailleur
9148dcfe45 Enhance AI setup and log report 2025-09-20 14:58:04 +02:00
ldestailleur
53e1d3630f Clean code 2025-09-20 12:13:24 +02:00
ldestailleur
0b93c10df9 Clean code 2025-09-20 12:12:28 +02:00
ldestailleur
706b9f47d8 Move doc for git commit template 2025-09-20 03:10:33 +02:00
ldestailleur
e4d10caf33 Trans 2025-09-20 02:53:00 +02:00
ldestailleur
5ac469634e Clean code for PDF invoices 2025-09-20 02:48:27 +02:00
Carlos Herrera
57157db2b7 Cehojac/issue35362 (#35364)
* intervencions api call dont show the objects relations
Fixes #35362

* feat: add loadlinkedobjects parameter to control linked object loading in interventions API

thank you for the recomendarion @eldy !!!!
2025-09-20 01:11:19 +02:00
ldestailleur
cb2d22e016 Fix roundind using stock accuracy ('MS') 2025-09-20 01:08:54 +02:00
Bradley Jarvis
7e712cd368 Fix sub BOM quantities (#35371)
* FIX: reqursive bom quantities

Correctly handle quantities on BOM recursion. Current behavior is that
sub BOM total quantity is multiplied by parent quantity for that line,
the expected behaviour is that the parent BOM would be including sub BOM
on a per unit base.

* Simplified code

* Update objectline_view.tpl.php

* Update bom.class.php

* Update bom.class.php

* Update bom.class.php

* Update bom.class.php

---------

Co-authored-by: brad <brad@endurotags.com.au>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 01:00:39 +02:00
Vincent de Grandpré
2d76f12dae Repair recalculateinvoicetotal (#35381)
* PHPStan > Update baseline

* FIX#33963 - Enabling foreign key field to allow mandatory parameter saving

* Added author to copyright

* Correction calcul du total des taxes

* Travis

* code format

* espaces superflus

* bis

* Update repair.php

* Update repair.php

* PHPStan > Update baseline

* set paid = 1 when total_ttc equals sum of payments

* current upstream file

---------

Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 00:49:52 +02:00
Yamil Esteban Garcia
8037974241 NEW add supplier invoice, order and supplier order tag filter and bulk insert and statistics order and supplier order (#35399)
* add own supplier invoice tag filter and bulk insert

add own supplier invoice tag filter and bulk insert

* Update list.php

change format

* Bulk edit commande tags

Bulk edit commande tags

* Label filter orders and supplier order statistics

Label filter orders and supplier order statistics

* Supplier Order Label Filter and Mass Action for Supplier Order Labels

Supplier Order Label Filter and Mass Action for Supplier Order Labels

* Update index.php

change format

* Update list.php

change format

* Update index.php

change format

* Update index.php

change format

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 00:46:32 +02:00
MDW
decd14c735 Qual: Update phan baseline (#35405) 2025-09-20 00:45:43 +02:00
Carlos Herrera
b732fd2ed7 feat: add contact list parameter to ticket API endpoints to control contact data retrieval (#35404) 2025-09-20 00:45:30 +02:00
Frédéric FRANCE
74596bbdc2 fix Objectlink api (#35402)
* fix objectlink api

* fix objectlink api

* fix objectlink api

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 00:27:11 +02:00
Frédéric FRANCE
318e0362c4 fix Objectlink api (#35402)
* fix objectlink api

* fix objectlink api

* fix objectlink api

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-20 00:26:38 +02:00
Charlène Benke
ad4f4fb619 Refactor VAT array handling in PDF generation (#35395)
$this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] is present on 2 part of the if
2025-09-20 00:01:19 +02:00
Frédéric FRANCE
3adedc23d9 fix CI 🐛 (#35392)
* add picto

* fix padding

* fix CI

* Update user.class.php

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2025-09-19 23:38:52 +02:00
Frédéric FRANCE
6a8d983f34 clean code for v20 - fix pre-commit (#35397)
* clean code

* Update ruleset.xml

* Update CMailFile.class.php
2025-09-19 23:36:53 +02:00
ldestailleur
977f552d8b Fix warning and missing unit of delay 2025-09-19 16:19:06 +02:00
ldestailleur
daa98872eb Fix trans 2025-09-19 16:09:43 +02:00
ldestailleur
7658c08f01 Fix class not found on smartphone 2025-09-19 15:46:37 +02:00
ldestailleur
d9d6192eaf Fix css 2025-09-19 15:43:29 +02:00
ldestailleur
65336ae956 FIX vat detection when country of buyer is unknown. 2025-09-19 13:43:07 +02:00
ldestailleur
25a59cb869 Doc 2025-09-19 13:33:37 +02:00
ldestailleur
00095c904d FIX vat detection when country of buyer is unknown. 2025-09-19 13:25:33 +02:00
ldestailleur
63c8857be7 FIX vat detection when country of buyer is unknown. 2025-09-19 13:23:46 +02:00
ldestailleur
02d485ce4b FIX can't reset intracomm transport mode 2025-09-19 12:21:21 +02:00
ldestailleur
43cf29d2e1 Clean corrupted data 2025-09-19 12:20:22 +02:00
ldestailleur
b292c3d631 Add constant MAIN_USE_TITLE_FOR_USER to show a property that is not used 2025-09-18 22:28:14 +02:00
ldestailleur
074e249e48 FIX Can't edit tags of a user. 2025-09-18 22:13:53 +02:00
ldestailleur
2a6064b755 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-18 21:49:58 +02:00
ldestailleur
134243550b Try to restore options for stock inc/dev like in v21 2025-09-18 21:49:09 +02:00
ldestailleur
e9bd32e66c FIX can't save setup of odt template for stock 2025-09-18 20:35:09 +02:00
ldestailleur
f87fc4d9e3 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-18 19:49:45 +02:00
ldestailleur
8f4d36c1e8 Fix bad text for tooltip on stock increase/decrease option 2025-09-18 19:49:22 +02:00
ldestailleur
958bca6223 Fix bad var 2025-09-18 16:30:30 +02:00
ldestailleur
4a363478ae Clean code with rector 2025-09-18 16:26:38 +02:00
ldestailleur
02ec4cf421 Test 2025-09-18 15:41:47 +02:00
ldestailleur
b30aa97ba9 Clean code 2025-09-18 15:00:47 +02:00
ldestailleur
f665a0301e Clean code 2025-09-18 14:52:39 +02:00
ldestailleur
a441b412cc Clean code 2025-09-18 14:04:48 +02:00
ldestailleur
6c8e2a1320 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-18 13:54:44 +02:00
ldestailleur
8bd82c0b67 Clean code 2025-09-18 13:54:23 +02:00
ldestailleur
65f865b843 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-18 13:33:54 +02:00
ldestailleur
09240c30c7 FIX CI 2025-09-18 13:33:32 +02:00
VIAL-GOUTEYRON Quentin
1874deef49 FIX delivery triggers and mail templates: correct inconsistencies in email triggers and templates` (#35264)
* `fix(delivery): correct inconsistencies in email triggers and templates`

**Body:**
- Adjusted email trigger names from `RECEPTION_*` to `SHIPPING_*`.
- Updated parameters and placeholders for shipment email tracking.
- Removed redundant `reception_send` entry in mail templates for shipping.

* `fix(delivery): update email triggers and templates for deliveries`

**Body:**
- Replaced email trigger `SHIPPING_SENTBYMAIL` with `DELIVERY_SENTBYMAIL`.
- Updated template references from `shipping_*` to `delivery_*` for consistency.
- Modified tracking ID format from `shi` to `del` in `card.php`.
- Added `MailToSendDelivery` language entry for email labels.
- Adjusted mail templates to include `delivery_send` entries.
2025-09-18 13:23:57 +02:00
ldestailleur
42edd8f22d Clean code 2025-09-18 12:19:29 +02:00
Yamil Esteban Garcia
6329e03c7d add filter by invoice categories in the statistics module (#35388)
add filter by invoice categories in the statistics module
2025-09-18 12:09:39 +02:00
ldestailleur
6ed764bedf Clean code 2025-09-18 11:40:56 +02:00
HENRY Florian
9af7b44714 fix: display seleted log level if warning (#35377) 2025-09-18 11:23:45 +02:00
Regis Houssin
fc8b0a80c0 FIX missing check constant PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS (#33277)
* FIX missing check constant PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS

* use getDolGlobalString

like eldy suggest

* use getDolGlobalString

* Use getDolGlobalString

* use getDolGlobalString

* Use getDolGlobalString

---------

Co-authored-by: Eric - CAP-REL <1468823+rycks@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-18 11:22:36 +02:00
Frédéric FRANCE
d6dce86061 clean code (#35379)
* clean code

* clean code

* clean code

* clean code
2025-09-18 11:08:06 +02:00
Frédéric FRANCE
af47262f4f fix missing translation (#35378) 2025-09-18 10:52:47 +02:00
Eric - CAP-REL
4adc4a31e2 Merge pull request #35262 from SylvainLegrand/Fix_rights_for_user_creer
Fix rights for bank tab on user card
2025-09-18 09:31:22 +02:00
ldestailleur
333e977bf9 Allowed commit 2025-09-17 23:25:33 +02:00
ldestailleur
cd0fd6f466 CSS 2025-09-17 23:24:25 +02:00
ldestailleur
2572847b2a Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-17 18:29:07 +02:00
ldestailleur
6df2e2d236 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-17 18:28:29 +02:00
ldestailleur
7e93fe7a5c Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-17 18:28:18 +02:00
ldestailleur
09eefb5031 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-17 18:26:27 +02:00
ldestailleur
c0c1ef276f Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-17 18:26:07 +02:00
ldestailleur
3fc6410b5f Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-17 18:24:24 +02:00
ldestailleur
70f6a23e6f Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-17 18:24:17 +02:00
ldestailleur
8c6ecd1144 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-17 18:23:37 +02:00
Francis Appels
7920cf8596 Fix option SERVICE_ARE_ECOMMERCE_200238EC (#35372) 2025-09-17 18:19:52 +02:00
Frédéric FRANCE
2505c3755b clean code (#35367)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 18:18:16 +02:00
HENRY Florian
bf5a0c9ce7 fix: php 8 warning (#35363)
* fix: php 8 warning

* fix: php 8 warning

* fix: php 8 warning

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 18:16:48 +02:00
ldestailleur
ea00719449 Fix default sort order in bom list 2025-09-17 15:55:33 +02:00
Bahfir Abbes
ce46611031 Fix:prevent handling update action by generic include of actions_addupdatedelete.inc.php (#35369)
* Fix:prevent handling update action by  generic include of actions_addupdatedelete.inc.php

Fix:
To prevent handling update action by generic post update action in inventories at /core/actions_addupdatedelete.inc.php, we need to unset $action variable, otherwise $object fileds are filled with with empty values.

* Update inventory.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 15:11:34 +02:00
Bahfir Abbes
93973e13c5 Fix:prevent handling update action by generic include of actions_addupdatedelete.inc.php (#35369)
* Fix:prevent handling update action by  generic include of actions_addupdatedelete.inc.php

Fix:
To prevent handling update action by generic post update action in inventories at /core/actions_addupdatedelete.inc.php, we need to unset $action variable, otherwise $object fileds are filled with with empty values.

* Update inventory.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 15:11:09 +02:00
ldestailleur
073f7f3620 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-17 15:04:35 +02:00
ldestailleur
4e83087e28 Fix complete #35368 2025-09-17 15:04:01 +02:00
Yamil Esteban Garcia
161b73bf7b FIX The write_file function should return -1 if an error exists (#35368)
* Error: When creating an invoice for a supplier order with a negative value #30516

Error: When creating an invoice for a supplier order with a negative value #30516

* Update html.form.class.php

Modifications made related to the issue
Search for variants by EAN #34567

* Update html.form.class.php

I change :

if(getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')){
with
if (getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')) {

and 

SEARCH_VARIANTS_OF_EAN13
into
PRODUIT_ATTRIBUTES_HIDECHILD_BUT_ALLOW_SEARCH_IN_EAN13

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* added tag mass action

added tag mass action

* Update list.php

* Update pdf_crabe.modules.php

The write_file function as its own documentation describes returns 1 0 a value minus 0 if an error exists. Therefore, if there is an error in the hook more than saving the error, it must return 0 since an error occurred

* Update pdf_crabe.modules.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 14:59:51 +02:00
Frédéric FRANCE
69c65c5f4d fix CI v22 (#35370)
* fix CI v22

* Update cron_run_jobs.php

* Update files.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 14:47:51 +02:00
Charlène Benke
c5451242e7 Add default values for database configuration (#35366)
warning error yet correct on old version
2025-09-17 14:46:32 +02:00
ldestailleur
41dd77959a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-17 14:45:48 +02:00
ldestailleur
86ceb63f91 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-17 14:45:11 +02:00
ldestailleur
0b7acfae9b Fix CI 2025-09-17 14:45:02 +02:00
ldestailleur
1cea5220da Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-17 14:25:15 +02:00
Frédéric FRANCE
c8458c22e8 clean code (#35358)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-17 14:22:58 +02:00
ldestailleur
f2f5f23f8f Fix syntax error 2025-09-17 14:22:53 +02:00
John BOTELLA
776b9422e4 Fix WAF alert ModSecurity: Access denied with code 403 (phase 4). (#35360) 2025-09-17 14:20:33 +02:00
atm-GregM
c84d4c53e5 New develop import export product customer price (#35349)
* NEW import/export product customer price

* back travis and more

* back travis 2
2025-09-17 14:19:36 +02:00
ldestailleur
f5d7d165b0 Debug script 2025-09-17 14:17:29 +02:00
Frédéric FRANCE
be6c3df029 fix CI (#35361)
* fix CI

* Update msg-commit

* Update ruleset.xml
2025-09-17 14:12:39 +02:00
Frédéric FRANCE
078da229c8 clean code (#35352)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* Clean code

* Clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-17 14:11:32 +02:00
Frédéric FRANCE
612248a9e9 clean code (#35365)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-17 14:10:48 +02:00
ldestailleur
e0073b000d Debug v23 2025-09-17 14:03:09 +02:00
ldestailleur
c7407473c1 Fix try to work on multientity even if cron disable don entity 1. 2025-09-17 13:54:21 +02:00
ldestailleur
5df4a90edb Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-17 13:43:23 +02:00
ldestailleur
549cb48e8f Fix sort first on entity then on priority 2025-09-17 13:17:25 +02:00
ldestailleur
f2ff34d573 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-17 12:59:19 +02:00
ldestailleur
27b38e3194 Fix title 2025-09-17 12:58:19 +02:00
ldestailleur
ee39ef632a FIX Generation of member cards (file not found and substitution broken) 2025-09-17 12:38:20 +02:00
ldestailleur
99efb68f79 Fix tab name 2025-09-16 12:58:49 +02:00
ldestailleur
910443eccb Fix hook doAction in contact tab 2025-09-16 12:37:39 +02:00
ldestailleur
568b47cb4a Clean code 2025-09-16 12:33:04 +02:00
ldestailleur
433793aff0 Fix hook name 2025-09-16 12:27:08 +02:00
ldestailleur
872cb213bf Fix name of tab 2025-09-16 12:21:33 +02:00
ldestailleur
760a808a5d Fix warnings 2025-09-16 12:03:37 +02:00
ldestailleur
067d4e332e CSS 2025-09-16 11:59:01 +02:00
ldestailleur
d121d7e173 Try git commit 2025-09-16 11:42:39 +02:00
ldestailleur
29ccbb43d5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-16 11:17:22 +02:00
ldestailleur
111e319be8 Fix changelog 2025-09-16 11:16:54 +02:00
ldestailleur
142fbf93b0 QUAL: The library timepicker.js has been removed. Was not used by
Dolibarr.
2025-09-16 11:16:34 +02:00
Frédéric FRANCE
4c4b344510 fix CI (#35359)
* fix CI

* Update card.php
2025-09-16 10:16:09 +02:00
Laurent Destailleur
d4f39889f5 FIX #34678 2025-09-16 02:44:02 +02:00
Laurent Destailleur
e89421068d Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-16 02:25:00 +02:00
Laurent Destailleur
f39fde3f43 Fix corrupted type of vat -1. 2025-09-16 02:24:28 +02:00
Laurent Destailleur
ea7152a818 Fix phan 2025-09-16 01:23:16 +02:00
Laurent Destailleur
2142860685 Fix warning 2025-09-16 01:14:43 +02:00
Laurent Destailleur
a55a57d0ce Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-16 00:57:09 +02:00
Laurent Destailleur
8e1cf72de0 Debug v23 2025-09-16 00:56:18 +02:00
Frédéric FRANCE
83407ec49f clean code (#35355) 2025-09-16 00:55:58 +02:00
Frédéric FRANCE
f03f54d406 clean code (#35350)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-16 00:54:59 +02:00
Laurent Destailleur
349930ff03 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-16 00:24:10 +02:00
Laurent Destailleur
0625eef99a Fix conditions on module missing 2025-09-16 00:21:29 +02:00
Laurent Destailleur
b757f3392f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-15 23:29:19 +02:00
Laurent Destailleur
7d7994aa1d Clean code 2025-09-15 23:28:18 +02:00
Frédéric FRANCE
d685f1e529 fix CI (#35353)
* fix CI

* Update header.tpl.php

* Update style.css.php

* Update webportal.main.inc.php

* Update files.lib.php
2025-09-15 22:45:42 +02:00
Laurent Destailleur
8a87de9112 CSS 2025-09-15 22:44:11 +02:00
Laurent Destailleur
9095bc46ef Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-15 22:26:56 +02:00
Laurent Destailleur
31c97e3991 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-15 22:26:54 +02:00
Laurent Destailleur
0b605bffba CSS 2025-09-15 22:26:19 +02:00
ldestailleur
818f6b1555 Fix warning 2025-09-15 19:36:49 +02:00
ldestailleur
e8d2095816 NEW dol_sort_array can be used with 2 sorting criteria. 2025-09-15 19:28:38 +02:00
ldestailleur
761804ce55 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-15 18:14:29 +02:00
ldestailleur
74cc569329 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-15 18:14:11 +02:00
ldestailleur
c3cb5e1c12 Fix css 2025-09-15 18:09:52 +02:00
Yamil Esteban Garcia
fde6056176 added tag mass action (#35347)
* Error: When creating an invoice for a supplier order with a negative value #30516

Error: When creating an invoice for a supplier order with a negative value #30516

* Update html.form.class.php

Modifications made related to the issue
Search for variants by EAN #34567

* Update html.form.class.php

I change :

if(getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')){
with
if (getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')) {

and 

SEARCH_VARIANTS_OF_EAN13
into
PRODUIT_ATTRIBUTES_HIDECHILD_BUT_ALLOW_SEARCH_IN_EAN13

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* added tag mass action

added tag mass action

* Update list.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-15 16:19:36 +02:00
Frédéric FRANCE
a6c98599ec clean code (#35346)
* clean code

* clean code
2025-09-15 16:18:51 +02:00
Frédéric FRANCE
eda0b8950b add doc (#35345)
* clean code

* clean code
2025-09-15 16:18:01 +02:00
github-actions[bot]
9d3799f337 PHPStan > Update baseline (#35342)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-15 16:17:42 +02:00
Charlène Benke
175eea301f NEW add private and public note on ticket (#35303)
* Update copyright and add note fields in SQL

* Add note_public and note_private columns to llx_ticket

* Implement notes tab in ticket details

* Add fk_user_modif column to llx_ticket table

* Add fk_user_modif column to llx_ticket table

* Add files via upload

* Add private and public note fields to ticket class

* Update ticket.class.php

* Update ticket.class.php

* Update note.php

* Update note.php

* Update note.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-15 16:17:28 +02:00
Frédéric FRANCE
924e024db3 clean code (#35344)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-15 16:16:42 +02:00
Frédéric FRANCE
f8d3713c1c clean code (#35343)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-15 16:16:32 +02:00
Frédéric FRANCE
21d50f1a58 clean code expedition class (#35327)
* clean code expedition class

* clean code expedition class

* clean code expedition class

* clean code expedition class

* clean code expedition class

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* clean code
2025-09-15 16:16:22 +02:00
Frédéric FRANCE
4c80eee890 clean code (#35341)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-15 16:15:49 +02:00
ldestailleur
bae2a91727 Fix css 2025-09-15 16:08:06 +02:00
ldestailleur
e69ff3428b css 2025-09-15 16:05:42 +02:00
ldestailleur
6ee8db9f3f Fix css 2025-09-15 16:05:35 +02:00
ldestailleur
c12764e81f Debug webportal 2025-09-15 15:38:42 +02:00
ldestailleur
33ed1b2f1a Fix bad recording of custom CSS in webportal 2025-09-15 15:33:15 +02:00
ldestailleur
361169b896 Fix bad tab underlined in display setup 2025-09-15 15:16:36 +02:00
ldestailleur
db32812476 css 2025-09-15 14:45:02 +02:00
ldestailleur
b87f18cb4f css 2025-09-15 14:42:21 +02:00
ldestailleur
8456749135 Clean code. Removed octicons directory. 2025-09-15 14:40:34 +02:00
ldestailleur
e1e47034d5 FIX webportal must not use resources out public dir neither external
files.
2025-09-15 13:26:47 +02:00
ldestailleur
bf3a2c1e01 CSS 2025-09-14 23:45:49 +02:00
ldestailleur
0958108721 Fix date update 2025-09-14 20:29:14 +02:00
ldestailleur
fa935c8820 bcmath is used by swiftmail authent, not implemented. 2025-09-14 20:13:11 +02:00
ldestailleur
cf5caa80b2 FIX Debug bad path used into webportal. Missing http headers in login. 2025-09-14 19:45:41 +02:00
ldestailleur
a3881ef67b Clean code 2025-09-14 12:01:35 +02:00
Frédéric FRANCE
933ce868df add check in dolibarr phpinfo page (#35332)
* add check in phpinfo page

* Update phpinfo.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-14 11:59:26 +02:00
Frédéric FRANCE
f14bc0bfbe clean code (#35340)
* clean code

* clean code

* clean code
2025-09-14 11:57:52 +02:00
Frédéric FRANCE
62a7756a43 fix civility_id for webportal member (#35339)
* fix civility_id for webportal member

* Update html.formcardwebportal.class.php

* fix

* fix

* fix

* fix date

* fix translation

* add doc
2025-09-14 11:17:01 +02:00
Frédéric FRANCE
e1931b2967 clean code (#35338)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-14 11:14:34 +02:00
Frédéric FRANCE
063a6b8938 fix pictos (#35337) 2025-09-13 21:00:01 +02:00
Frédéric FRANCE
c500febdc4 fix pictos (#35335) 2025-09-13 20:59:52 +02:00
github-actions[bot]
e5ed2c83f0 PHPStan > Update baseline (#35336)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-13 20:57:42 +02:00
Frédéric FRANCE
207d13c365 fix pictos (#35334) 2025-09-13 20:57:35 +02:00
Frédéric FRANCE
c25aa82fc6 clean code (#35333)
* clean code

* clean code

* clean code
2025-09-13 20:57:27 +02:00
ldestailleur
60f0813520 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-12 23:05:15 +02:00
ldestailleur
20c189b55c Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-12 19:28:03 +02:00
ldestailleur
70d5454bfb Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-12 19:27:04 +02:00
ldestailleur
a54c5fcdcb Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-12 19:26:28 +02:00
Vincent Maury
e541438b7e Fix bug #35330 (#35331)
in table header, instead of extrafield filters, this message appears
ERROR : selectForForms: Error bad setup of field objectdescorig=
2025-09-12 18:57:44 +02:00
Frédéric FRANCE
ec23fc54f8 add picto (#35329)
* add picto

* fix padding
2025-09-12 18:57:23 +02:00
Frédéric FRANCE
1bc100a082 fix missing translation (#35323)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-12 18:56:54 +02:00
kkhelifa-opendsi
f580bb85a5 NEW : Add hooks in webportal (#35326) 2025-09-12 15:20:32 +02:00
Florian Mortgat
60f089c015 FIX 17.0: ContratLigne::fetch() returns 1 even if the line doesn't exist (#35324) 2025-09-12 15:19:20 +02:00
Frédéric FRANCE
9f90c9d371 Fix missing translation (#35322)
* fix missing translation

* fix missing translation

* fix missing translation

* fix missing translation
2025-09-12 15:17:18 +02:00
Bradley Jarvis
75c306c05d FIX: Update order line (#35321)
Co-authored-by: brad <brad@endurotags.com.au>
2025-09-12 15:17:05 +02:00
Frédéric FRANCE
7986c02711 fix CI (#35328)
* fix CI

* Update interfaces.class.php

* Update interfaces.class.php

* Update interfaces.class.php

* Update interfaces.class.php

* Update interfaces.class.php

* fix

* fix
2025-09-12 15:16:42 +02:00
Lucas Marcouiller
d0b7e27ca5 NEW Feature to merge duplicate members (#35308)
* New merge members

* fix fields

* add trans

* fix CI

* fix Ci

* fix Ci

* fix CI

* Fix CI

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-12 15:14:45 +02:00
Frédéric FRANCE
1bbbd96690 clean code (#35317)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-12 15:12:55 +02:00
ldestailleur
8b57bb2e41 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-12 13:30:12 +02:00
ldestailleur
13407fe5ee Prepare code for Loi Finance 2025-09-12 13:29:19 +02:00
Laurent Destailleur
59dadae226 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-12 03:08:32 +02:00
Laurent Destailleur
320f02ed27 Prepare ci for tag check 2025-09-12 03:05:48 +02:00
Bradley Jarvis
89dda279a0 FIX: setShippingMethod tigger throwing error (#35320)
* FIX: setShippingMethod tigger throwing error

* Update commonobject.class.php

---------

Co-authored-by: brad <brad@endurotags.com.au>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-12 02:49:58 +02:00
Frédéric FRANCE
554d2baa32 clean code adherent (member) class (#35259)
* clean code adherent (member) class

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* fix

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-12 02:40:35 +02:00
Frédéric FRANCE
4414bf3b95 fix fatal error (#35284)
* fix fatal error

* Update card.php

* Update product.class.php
2025-09-12 02:34:50 +02:00
Frédéric FRANCE
408ea58858 fix fatal error (#35284)
* fix fatal error

* Update card.php

* Update product.class.php
2025-09-12 02:34:17 +02:00
Fabian Volkers
a0fc45d523 🐛 Use reception email templates for receptions (#35310) 2025-09-12 02:30:59 +02:00
Fabian Volkers
934fe08921 🐛 Use reception email templates for receptions (#35310) 2025-09-12 02:30:24 +02:00
ThomasNgr-OpenDSI
acc3a47272 NEW add fields usage_opportunity, usage_task, usage_bill_time for project import (#35301) 2025-09-12 02:29:43 +02:00
Eric - CAP-REL
1f8b5db2c7 exit code must be >= 0 (#35311) 2025-09-12 02:29:23 +02:00
Laurent Destailleur
8e689c1479 Complete #35313 2025-09-12 02:26:21 +02:00
Laurent Destailleur
a0116f6cd8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-12 02:23:13 +02:00
Laurent Destailleur
d8fc4d4ceb Fix exclusion of files is not consistent 2025-09-12 02:22:42 +02:00
Eric - CAP-REL
8efe6d477e exclude escpos-php/doc from filelist_xml (#35313) 2025-09-12 02:15:56 +02:00
Eric - CAP-REL
607e13b83f makepack : exit if filelist fail (#35312) 2025-09-12 01:53:22 +02:00
Frédéric FRANCE
53e7810db4 fix missing translations (#35315)
* fix missing translations

* fix missing translations
2025-09-12 01:52:45 +02:00
Frédéric FRANCE
b7d9342992 fix translation missing (#35316)
* fix translation missing

* fix translation missing
2025-09-12 01:52:31 +02:00
Frédéric FRANCE
e4cafd3428 fix missing translation (#35314) 2025-09-12 01:52:18 +02:00
github-actions[bot]
97bd4852af PHPStan > Update baseline (#35305)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-12 01:34:58 +02:00
ldestailleur
e3de2dddb7 Fix spellcheck 2025-09-11 16:43:59 +02:00
ldestailleur
70768832c5 FIX Edit of email in emailing. Property messtype not set. 2025-09-11 16:40:54 +02:00
ldestailleur
e3bf8bcb47 FIX Edit of email in emailing. Property messtype not set. 2025-09-11 16:40:20 +02:00
ldestailleur
89f36faced NEW public and private note can be shown on contact list 2025-09-11 16:03:25 +02:00
ldestailleur
19feb7c533 Clean code 2025-09-11 15:42:12 +02:00
ldestailleur
5fdfa79e56 Fix missing field migration, fix select2 2025-09-11 15:35:23 +02:00
ldestailleur
d69e0b4a5d Fix size of popup 2025-09-11 15:10:29 +02:00
ldestailleur
5e74b622bd Fix size of popup 2025-09-11 15:10:01 +02:00
ldestailleur
333c96ddd6 Sync transifex 2025-09-11 14:17:35 +02:00
ldestailleur
0919cc37e0 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-11 13:32:00 +02:00
ldestailleur
92ffba11ca Remove old lang files that are too small (moved into other lang files) 2025-09-11 13:31:34 +02:00
Liammer
d55551ee3c Add "__EVENT_DESCRIPTION__" variable (#35302)
To be able to add the event's description in reminder emails.
2025-09-11 12:52:22 +02:00
ldestailleur
2760f0a6d9 Fix do not show value of last activation module if na 2025-09-11 12:48:52 +02:00
ldestailleur
24f7903123 Fix trans in list of technical services of a module 2025-09-11 12:43:52 +02:00
ldestailleur
b4a2e14fa8 Clean code 2025-09-11 12:32:01 +02:00
ldestailleur
6586feb3ef Clean code 2025-09-11 12:30:19 +02:00
ldestailleur
4416bcb3ee Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-11 12:25:34 +02:00
ldestailleur
702d91c65d Clean code 2025-09-11 12:25:22 +02:00
Eric - CAP-REL
870c2a8f50 Prepare 18.0.8 (#35299)
* Prepare 18.0.8

* Update filefunc.inc.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-11 12:21:33 +02:00
Frédéric FRANCE
0e79fa36ee clean code contact class (#35260)
* clean code contact class

* clean code contact class

* clean code

* clean code

* clean code

* clean code

* clean code

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2025-09-11 12:14:53 +02:00
HENRY Florian
6ee966d64d feat: Subtotal module (#35290) 2025-09-11 12:14:32 +02:00
HENRY Florian
214ab20b76 fix: with PRODUCT_USE_UNIT preset the unit in document (#35288) 2025-09-11 12:13:46 +02:00
Frédéric FRANCE
fd2ea78e9b clean code bookcal class (#35279)
* clean code bookcal class

* clean code bookcal class

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2025-09-11 12:12:53 +02:00
github-actions[bot]
13dbe2ea58 PHPStan > Update baseline (#35285)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-11 12:12:32 +02:00
Fabian Volkers
db103f37df Add POST /supplierorders/{id}/line endpoint to REST API (#35286)
* ✏️ Fix spelling

*  Add postLine endpoint to supplier_orders

* 🐛 Fix accessing this->commande instead of this->order
2025-09-11 12:12:18 +02:00
HENRY Florian
644a9ea179 fix: Filter event in agenda par Type (#35287)
* fix filter event per Type

* fix filter event per Type

* fix: php code sniffer

* fix: php code sniffer

* fix: php code sniffer

* fix: php code sniffer
2025-09-11 12:09:33 +02:00
Frédéric FRANCE
a44fc7d843 clean code (#35295)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* fix

* fix

* fix

* fix

* fix
2025-09-11 12:08:29 +02:00
Frédéric FRANCE
f4fe07b98a delete ecmfiles entry when deleting image (#35289) 2025-09-11 12:08:09 +02:00
Frédéric FRANCE
6378a99e5a add src and id when create ecmfiles (#35292) 2025-09-11 11:22:11 +02:00
ldestailleur
af74f2c057 Lang file paybox is too small for deprecated moduel. Moved inside
stripe.
2025-09-11 11:20:13 +02:00
Frédéric FRANCE
d81baf8f53 add source for subtotals lang file (#35296) 2025-09-11 11:11:06 +02:00
Frédéric FRANCE
1263054fba fix doc (#35298) 2025-09-11 11:10:45 +02:00
Frédéric FRANCE
a64b36cec4 add doc (#35294)
* add doc

* clean code
2025-09-11 11:10:24 +02:00
ldestailleur
fa59daea62 Fix spellcheck 2025-09-10 19:23:24 +02:00
ldestailleur
ab6fbf253d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-10 17:40:56 +02:00
ldestailleur
3b6b7fec5a Tooltip to help debug vat pb 2025-09-10 17:40:46 +02:00
ldestailleur
9c296c8d81 Fix object 2025-09-10 16:48:23 +02:00
ldestailleur
c2257b0d28 Show info to help debug 2025-09-10 16:47:31 +02:00
ldestailleur
df1262ace5 Show info to help debug 2025-09-10 16:43:18 +02:00
ldestailleur
8f0d2b1f7b Fix missing __THIRDPARTY_URL__ 2025-09-10 12:59:01 +02:00
ldestailleur
b667bc0f13 Fix missing __THIRDPARTY_URL__ 2025-09-10 12:57:29 +02:00
ldestailleur
05e29b5ae6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-10 11:53:39 +02:00
ldestailleur
46276ba216 Doc 2025-09-10 11:53:17 +02:00
ldestailleur
fd08708d6a Doc 2025-09-10 11:50:46 +02:00
ldestailleur
8ee974488b SQL 2025-09-10 11:49:09 +02:00
Frédéric FRANCE
e81d5378cd clean code contract class (#35245)
* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code contract class

* clean code

* clean code

* clean code

* clean code

* clean code

* fix typo

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2025-09-10 11:13:18 +02:00
Nicolas Domenech
1583d69cda #35271 [SQL] add: mandatory signature fields (#35273)
* #35271 [SQL] add: mandatory signature fields

Data model for add feature we want add checkbox on for tell who c can sign in contact
Ex: On contract card we want 2/3 signatories
-- Later we add feature for link external signature link with mandatory signautre fields on contact.

* Update llx_element_contact.sql

* Update 22.0.0-23.0.0.sql

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 11:12:26 +02:00
VIAL-GOUTEYRON Quentin
eb3d752047 Fix (ecm): support for custom entity in file operations (#35283)
* fix(ecm): add support for custom entity in file operations

This commit addresses missing support for specifying custom `entity` values during file operations, ensuring proper handling of multi-entity configurations. Changes include:

- Adding an `entity` parameter to the `fetch` method of `EcmFiles` and ensuring proper filtering based on the provided entity.
- Modifying `dol_move`, `deleteFilesIntoDatabaseIndex`, and other file-related functions to support the `entity` parameter.
- Ensuring entity propagation in operations like file indexing, renaming, and deletion.

This resolves issues where operations were limited to the default entity value (`$conf->entity`), improving flexibility and correctness in multi-entity setups.

* fix(ecm): improve code formatting for entity checks

Ensure consistent coding style for entity-related conditions across file operations by adding spacing around `empty()` calls.

This improves code readability and maintains uniformity in the handling of multi-entity configurations within the `EcmFiles` class and related modules.

* fix(ecm): cast entity to int in SQL queries

Ensure `entity` values are explicitly cast to integers in SQL conditions, improving type safety and preventing potential SQL injection vulnerabilities.

This change applies consistent casting in multiple entity-related checks within the `EcmFiles` class to enhance code security and reliability.
2025-09-10 10:59:09 +02:00
MDW
caf6363995 Qual: Update phan baseline (#35261)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 10:54:26 +02:00
Frédéric FRANCE
ddbae0f6ad Add TRIGGER_PREFIX in order (commande) class (#35268)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 10:53:54 +02:00
Frédéric FRANCE
e1f9eee9a5 Add TRIGGER_PREFIX in delivery class (#35267)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 10:53:39 +02:00
Frédéric FRANCE
0f7c375df7 fix CI (#35269)
* fix CI

* Update mod_codeproduct_elephant.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 10:53:28 +02:00
Charlène Benke
5bdfbdceab Fix ID reference in extrafield lines area (#35276) 2025-09-10 10:53:14 +02:00
Frédéric FRANCE
04f3568d4a fix missing translations (#35282)
* fix missing translations

* fix missing translations
2025-09-10 10:52:02 +02:00
Frédéric FRANCE
a2df638c34 fix missing translations (#35280)
* fix missing translations

* fix missing translations
2025-09-10 10:51:42 +02:00
John BOTELLA
601d1b986e Fix : sql filter for batch stats (#35272)
* Fix : sql filter for batch stats

* Fix : sql filter for batch stats

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-10 10:51:31 +02:00
ldestailleur
328058c571 Fix ci 2025-09-09 19:36:08 +02:00
ldestailleur
d634d3fc4c Fix ci 2025-09-09 19:33:27 +02:00
atm-lucas
7d898184b5 Modify condition display button (#35257) 2025-09-09 19:30:14 +02:00
Alexandre SPANGARO
b03c12c129 FIX Societe - Problem of date on outstanding opened late (#35266) 2025-09-09 19:25:09 +02:00
ThomasNgr-OpenDSI
eb64e83563 FIX right to modify a product price by customer (#35256)
IF the user has the right to create/modify a product, they have the right to add a product price by customer (if parameter is set).
BUT they don't have the right to edit the product price by customer (the 'edit') button is not displayed.

This commit fixes this.
2025-09-09 19:22:02 +02:00
ldestailleur
bce059e2fa Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-09 19:21:41 +02:00
ldestailleur
42e59c9370 Fix ci 2025-09-09 19:21:29 +02:00
github-actions[bot]
6b3602c3eb PHPStan > Update baseline (#35255)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-09 19:17:43 +02:00
Frédéric FRANCE
03fe13d93d fix template and fix CI (#35254)
* fix adminnotification

* Update notify.class.php

* Update html.formmail.class.php

* fix

* fix

* fix
2025-09-09 19:17:32 +02:00
ldestailleur
133bf410c0 Fix css 2025-09-09 13:47:53 +02:00
ldestailleur
be97a6ccee Fix css 2025-09-09 13:46:32 +02:00
ldestailleur
ff20572c72 Fix CSS 2025-09-09 13:42:02 +02:00
ldestailleur
cbf63e5e93 Fix CSS 2025-09-09 13:39:03 +02:00
Sylvain Legrand
bba84133e7 Update bank.php 2025-09-09 07:00:19 +03:00
ldestailleur
05937c43ca Update doc 2025-09-09 03:04:49 +02:00
ldestailleur
bdef24de08 Avoid false positive 2025-09-09 03:03:08 +02:00
ldestailleur
1ea9614877 Sync transifex 2025-09-09 02:59:44 +02:00
ldestailleur
cdbf362096 Sync transifex 2025-09-09 02:54:42 +02:00
ldestailleur
8dc1ac2cdc Fix order of product templates 2025-09-09 02:16:06 +02:00
ldestailleur
bc61123efe Trans 2025-09-09 01:58:29 +02:00
ldestailleur
d1e4d393ce Fix trans 2025-09-09 01:47:16 +02:00
ldestailleur
824fd01a1f Doc 2025-09-09 01:40:32 +02:00
ldestailleur
0def25c38f css 2025-09-09 01:22:30 +02:00
ldestailleur
90fb029050 FIX invoice not set to closed when we add a credit note to close it 2025-09-08 15:25:22 +02:00
ldestailleur
5490afcf72 FIX invoice not set to closed when we add a credit note to close it 2025-09-08 15:24:47 +02:00
ldestailleur
0afe735cdc Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-08 13:25:37 +02:00
ldestailleur
ef15577d40 Add br 2025-09-08 13:25:28 +02:00
ldestailleur
6428028305 Clean visible value 2025-09-08 13:11:12 +02:00
Alexandre SPANGARO
bacdee81a8 NEW Accountancy - Analytical axis (SQL Structure) (#34738)
* NEW Accountancy - Analytical axis (SQL Structure)

* Add analytic account & distribution

* Remove UNIQUE

* Update unique Index

* Rename

* Error on REFERENCES of CONTRAINT

* Remove _c

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 12:50:54 +02:00
Frédéric FRANCE
f9a93552b2 fix adminnotification (#35252) 2025-09-08 12:45:27 +02:00
ldestailleur
e2c317a7cd Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-08 12:15:20 +02:00
ldestailleur
8fb71ef010 Clean setup page 2025-09-08 12:15:01 +02:00
ldestailleur
d27940dd8b NEW Can have a tooltip picto on title of column and keep autotruncation
of label. Tooltip is show at begin of text.
2025-09-08 11:58:32 +02:00
dependabot[bot]
2d7579c6e2 Bump actions/setup-python from 5 to 6 (#35251)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-08 11:05:10 +02:00
R0ck3n
6334fa5bea NEW: Add prepare() method to DoliDB class (rebuild) (#35249)
* feat:prepared sql for mysqli and postgres

* refactor:remove whitespace

* Update DoliDB.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 02:37:42 +02:00
PsyCrow
686de5271a Update admin.lib.php (#35246)
Fix PHP Error:
Undefined array key "login" (/admin/tools/listsessions.php:161)

The error is triggered when the user name conatins '_' or '.'

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 02:12:00 +02:00
Frédéric FRANCE
0e1478206a clean code (#35229)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 01:48:52 +02:00
Laurent Destailleur
42ce30fab7 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-08 01:48:02 +02:00
Laurent Destailleur
148574fe4e Fix CI 2025-09-08 01:47:44 +02:00
Lenin Rivas
2fbda7b4f4 NEW line input multicurrency price with tax (#35064)
* Multicurrency input price with tax

* Multicurrency input price with tax

* Multicurrency input price with tax - line tittle

* Multicurrency input price with tax - line view

* PriceUTTCCurrency in lang

* Multicurrency input price with tax - line view

* Multicurrency input price with tax - line edit

* Update objectline_edit.tpl.php

* Update objectline_view.tpl.php

* Update objectline_edit.tpl.php

* Update objectline_title.tpl.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 01:37:33 +02:00
Laurent Destailleur
51a4c97c46 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-08 01:29:45 +02:00
Laurent Destailleur
8beb61ef7f Set mysoc 2025-09-08 01:27:38 +02:00
Frédéric FRANCE
59afaf1d70 clean code (#35211)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* test

* test

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-08 01:04:57 +02:00
Frédéric FRANCE
140da6caa7 fix CI (#35242) 2025-09-08 01:03:48 +02:00
Frédéric FRANCE
1596fe56ae fix warnings (#35244)
* fix warnings

* fix warnings
2025-09-08 01:01:24 +02:00
Frédéric FRANCE
73073a5bf0 Knowledge tms (#35243)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-08 01:00:43 +02:00
Laurent Destailleur
21d28a745f Fix warning 2025-09-08 00:57:29 +02:00
Laurent Destailleur
68fa305655 Better detection of duplicates 2025-09-08 00:51:42 +02:00
ldestailleur
f095528260 Clean code 2025-09-07 19:58:59 +02:00
ldestailleur
73eea16744 Better detection of duplicate 2025-09-07 19:33:22 +02:00
ldestailleur
e460fffcf9 Better detection of duplicate 2025-09-07 19:32:24 +02:00
ldestailleur
870906daac Better detection of duplicate 2025-09-07 19:28:32 +02:00
ldestailleur
e8fed29ed0 Better detection of duplicate 2025-09-07 19:20:03 +02:00
ldestailleur
5efd3264c7 Fix merging of similar CVE on same line in security report 2025-09-07 19:16:31 +02:00
ldestailleur
dd9d92013b Fix merging of similar CVE on same line in security report 2025-09-07 19:04:28 +02:00
ldestailleur
97d5025c08 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-07 18:51:58 +02:00
ldestailleur
1458e963ab Trans 2025-09-07 18:50:46 +02:00
Laurent Destailleur
16c019532f Fix insert 2025-09-06 01:34:05 +02:00
Laurent Destailleur
e45299b891 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-06 01:26:19 +02:00
Laurent Destailleur
9f12de428c Fix insert 2025-09-06 01:25:49 +02:00
ldestailleur
f160e23918 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-05 17:23:25 +02:00
ldestailleur
63dc33617f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-05 17:20:14 +02:00
ldestailleur
d048766373 NEW Can sort on employee in holiday balance. Add link to go to history. 2025-09-05 17:20:00 +02:00
ldestailleur
eca129a433 FIX Date planned of delivery is not propagated from order to shipment
when creating a new shipment from an order.
2025-09-05 16:27:06 +02:00
ldestailleur
0140d1e7cb Clean SQL 2025-09-05 16:18:06 +02:00
github-actions[bot]
6e13f4fc6a PHPStan > Update baseline (#35240)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-05 15:42:19 +02:00
Frédéric FRANCE
1b83c39cc0 NEW Add sms reminder in reminder of agenda events (#35239)
* add reminder by sms

* fix url dolistore

* add cron task to send sms reminder

* add cron task to send sms reminder

* add cron task to send sms reminder

* add cron task to send sms reminder

* Update sms.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-05 15:38:15 +02:00
ldestailleur
2489a922d5 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-05 15:34:28 +02:00
ldestailleur
6c0873708a Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-05 15:34:13 +02:00
ldestailleur
0f08412e7a CSS 2025-09-05 15:31:21 +02:00
ldestailleur
0d51fd9b6f Add link to category edit page from picto 2025-09-05 15:20:50 +02:00
ldestailleur
17b1c5aa9d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-05 15:14:09 +02:00
ldestailleur
80eb325a91 Trans 2025-09-05 15:13:37 +02:00
ldestailleur
8317030809 Fix label 2025-09-05 15:08:28 +02:00
ldestailleur
2a1c7a91da Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-05 14:54:12 +02:00
ldestailleur
2dbc0db9dd Clean code 2025-09-05 14:54:01 +02:00
Pratush Raj
4d23d3f77c #35230 (#35231)
* #35230

* Update massstockmove.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-05 14:33:09 +02:00
ldestailleur
17f35be9c9 Better name for var 2025-09-05 14:32:41 +02:00
ldestailleur
cd7de255bc Fix CI 2025-09-05 14:03:42 +02:00
ldestailleur
343ec2684b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-05 12:08:25 +02:00
ldestailleur
300b840311 Fix warning 2025-09-05 12:08:13 +02:00
MDW
71423292e0 Qual: Update phan baseline (#35237)
# Qual: Update phan baseline
2025-09-05 12:04:03 +02:00
Frédéric FRANCE
a1be1ff6bd add reminder by sms (#35236)
* add reminder by sms

* fix url dolistore
2025-09-05 12:03:14 +02:00
Frédéric FRANCE
617e922a3a fix broken workflows (#35226)
* fix broken workflows

* Update ci-on-push.yml

* Update fournisseur.commande.class.php

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-05 12:01:57 +02:00
HENRY Florian
a69bd1ba56 fix: divided by zero with customer packaging (#35224)
* fix: divided by zero with customer packaging

* fix: divided by zero with customer packaging

* fix: divided by zero with customer packaging

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-05 12:01:26 +02:00
HENRY Florian
5ba8c69e63 FIX: allow to create First Sutuation Invoice (#35228)
* FIX: allow to create First Sutuation Invoice

* Update card.php

* FIX: allow to create First Sutuation Invoice

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-05 12:00:59 +02:00
HENRY Florian
63a1d58e2a FIX: save the packaging qty on update buying price (#35234)
* FIX: save the packaging qty on update buying price

* FIX: save the packaging qty on update buying price
2025-09-05 12:00:13 +02:00
ldestailleur
c2ed4519b1 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-05 11:38:30 +02:00
ldestailleur
93cc83ec4c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 21:07:09 +02:00
Frédéric FRANCE
bcbcf30959 fix CI v22 (#35227)
* fix CI v22

* Update time.php

* Update card.php

* Update card.php

* Update card.php

* Update card.php

* Update card.php

* Update card.php

* Update card.php

* Update card.php
2025-09-04 20:58:40 +02:00
ldestailleur
94d24d48d9 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 20:57:28 +02:00
ldestailleur
e17a179467 Fix warning 2025-09-04 20:57:13 +02:00
ldestailleur
fc04023095 Fix warning 2025-09-04 20:57:06 +02:00
ldestailleur
91664a34db Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-04 20:47:24 +02:00
ldestailleur
781adf507b Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-04 20:47:13 +02:00
ldestailleur
05f2232b72 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 17:58:02 +02:00
ldestailleur
e63ab139cc Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-04 17:57:38 +02:00
Vincent Maury
50f39de966 Fix 24338 In expense report list, all expense reports are a warning icon (#35225)
Co-authored-by: vmaury <vmaury@vmaury-Lafite-Pro-16-AMD>
2025-09-04 17:57:08 +02:00
ldestailleur
bdf62918e5 Fix label of tooltip not complete 2025-09-04 17:55:09 +02:00
ldestailleur
cd24808bbf Fix label of tooltip not complete 2025-09-04 17:54:29 +02:00
ldestailleur
2fb0cc7414 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 17:33:02 +02:00
ldestailleur
d7204bbb19 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 17:32:58 +02:00
ldestailleur
f82283a22e Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-04 17:32:04 +02:00
Pratush Raj
dd05531744 #35216 (#35217)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-04 16:44:41 +02:00
ldestailleur
5832cfc198 Fix CI 2025-09-04 15:36:54 +02:00
ldestailleur
5977e95200 Rename github workflow files 2025-09-04 15:10:23 +02:00
ldestailleur
d0a4541b28 Fix CI 2025-09-04 15:00:47 +02:00
ThomasNgr-OpenDSI
01aa901f93 18.0 fix CVE 2024 40137 (#34762)
* Sec: Remove all functions that accept callable params - CVE-2024-40137

* FIX #34746 - More complete fix for CVE-2024-40137

---------

Co-authored-by: ldestailleur <eldy@destailleur.fr>
2025-09-04 14:59:44 +02:00
ldestailleur
2791d3ccf5 Fix warning 2025-09-04 14:44:23 +02:00
ldestailleur
cef6eb34c1 Remove warnings 2025-09-04 14:39:41 +02:00
ldestailleur
68544e9bf7 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 14:39:08 +02:00
ldestailleur
d33682e9b4 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-04 14:37:49 +02:00
ldestailleur
72a24de948 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-04 14:36:11 +02:00
ldestailleur
cf536abe2e Fix warning 2025-09-04 14:35:44 +02:00
ldestailleur
9e2e6eea92 Fix warning 2025-09-04 14:35:02 +02:00
Frédéric FRANCE
6f763f4d16 add value to make update of object easier (#35222) 2025-09-04 14:28:26 +02:00
Frédéric FRANCE
df7538a42f fix modulebuilder editorconfig (#35221)
to be the same than in dolibarr root
2025-09-04 14:27:23 +02:00
VIAL-GOUTEYRON Quentin
75ee26c3ed Add HRM module support in dol_check_secure_access_document() function to manage file access rights. (#35218)
* Add HRM module support in `dol_check_secure_access_document()` function to manage file access rights.

* fix space

* Update files.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-04 14:26:42 +02:00
MDW
40ea0fd469 Qual: Update phan baseline (#35214)
# Qual: Update phan baseline

Update phan baseline by removing fixed exceptions

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-04 14:20:49 +02:00
ldestailleur
83f27af4c7 Fix CI 2025-09-04 14:19:56 +02:00
ldestailleur
96a74c4976 Disable this test where result is not predicable 2025-09-04 14:13:13 +02:00
ldestailleur
c5eb60da97 Avoid phpstan warning 2025-09-04 14:08:37 +02:00
ldestailleur
25e761bfa5 Avoid phpstan error 2025-09-04 14:08:11 +02:00
ldestailleur
9085f37593 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 14:01:51 +02:00
ldestailleur
8089334670 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-04 14:01:27 +02:00
ldestailleur
05f3111134 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-04 13:51:56 +02:00
ldestailleur
5ae358d5b5 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-04 13:49:07 +02:00
ldestailleur
258fe1124b Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-09-04 13:38:03 +02:00
kkhelifa-opendsi
a69ba88857 FIX: Correct the calculation of the amount of the current period between the period provided (#35083) 2025-09-04 13:27:49 +02:00
bohdanpotuzhnyi
c6b62915f6 support RFC5789 (patch) (#35213) 2025-09-04 13:26:47 +02:00
Frédéric FRANCE
006a12d191 fix CI (#35215)
* fix CI

* Update fournisseur.commande.class.php
2025-09-04 13:22:32 +02:00
ldestailleur
74a775f0e1 Fix CI 2025-09-04 13:22:00 +02:00
ldestailleur
1ea5683cfc Fix CI warnings 2025-09-04 13:16:55 +02:00
Sylvain Legrand
b05be5e1df Fix discount applied 2 times on contract (#35219)
on update line the discount was apply 2 times !
no problem on insert line.

Already solved on v22
2025-09-04 12:01:26 +02:00
ldestailleur
f35e7f6c4c Fix CI 2025-09-04 11:51:10 +02:00
ldestailleur
5f6e8b98b1 Try to fix ci 2025-09-04 11:44:45 +02:00
ldestailleur
e4c8d91d69 Fix CI warnings 2025-09-04 11:34:45 +02:00
ldestailleur
0262da0d20 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-04 11:30:51 +02:00
ldestailleur
3b668903b5 Clean code. Show how to use TRIGGER_PREFIX in modulebuilder template. 2025-09-04 11:30:24 +02:00
Frédéric FRANCE
f88f7136c3 clean code (#35210) 2025-09-03 22:33:43 +02:00
Frédéric FRANCE
87c94e1a31 fix parameters (#35209) 2025-09-03 22:33:25 +02:00
ldestailleur
8a1ec5634f Clean code between subprice/pu_ht and subprice_ttc/pu_ttc 2025-09-03 22:29:36 +02:00
ldestailleur
f84f01af30 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-03 21:53:53 +02:00
ldestailleur
d6fa374d84 QUAL: Removed no more used deprecated code 2025-09-03 21:53:43 +02:00
Frédéric FRANCE
5b104f4625 clean test code (#35205)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 21:43:23 +02:00
ldestailleur
ca1c3d3781 Enhance template to allow hook printFieldListWhere 2025-09-03 19:46:05 +02:00
ldestailleur
7e6b37fcd4 Fix CI 2025-09-03 19:29:26 +02:00
ldestailleur
b62c6fa8a9 Fix CI 2025-09-03 19:27:50 +02:00
ldestailleur
d7a59530de Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-09-03 19:24:39 +02:00
ldestailleur
a165bf56ad Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-03 19:23:09 +02:00
ldestailleur
6cb1eaef92 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-03 19:22:53 +02:00
ldestailleur
68e239efe4 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-03 19:21:14 +02:00
ldestailleur
0d599fae44 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-09-03 19:20:05 +02:00
ldestailleur
e3abe90ee0 FIX Restore decimal quantity for stock correction/transfer 2025-09-03 19:19:49 +02:00
ldestailleur
0ab63de622 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-03 19:00:35 +02:00
ldestailleur
7fbbb99ef8 Fix trans 2025-09-03 19:00:25 +02:00
Frédéric FRANCE
d4601a26ff fix CI (#35204) 2025-09-03 18:58:06 +02:00
ldestailleur
564d245d23 Fix phpunit 2025-09-03 18:54:48 +02:00
ldestailleur
61a10cf58d NEW Can view/list/edit the dispute status of an invoice 2025-09-03 18:27:40 +02:00
kkhelifa-opendsi
247c38923f FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
* FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call

* Modification to take into account the value saved in the cookie

* Update invoice.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 16:36:18 +02:00
ldestailleur
648fd1e809 Doc 2025-09-03 16:33:09 +02:00
ldestailleur
f5d71fac3f Doc 2025-09-03 16:31:30 +02:00
Lucas Marcouiller
5fa3ecd41a Fix impossibility to validate objects (#35202)
* Fix impossibility to validate objects

* fix pre commit

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
2025-09-03 16:28:10 +02:00
ldestailleur
3ba272b2fb Try CI fix 2025-09-03 16:26:54 +02:00
ldestailleur
b7135a24e5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-03 16:09:40 +02:00
ldestailleur
0255512c1c The signature of the Sale order ->cancel() method and shipment
->cancel() has been modified to introduce the $user param like for other
methods that modify a status.
2025-09-03 16:08:09 +02:00
Mathieu Pellegrin
582151ad82 FIX #35007 (#35010)
* Fix #35007

* Update pay.php

* Update pay.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 15:44:16 +02:00
MDW
d57d471a9f Qual: remove fixed phan notice from exceptions (#35201)
# Qual: remove fixed phan notice from exceptions

The pdf.lib.php has one type of exception less.
2025-09-03 15:39:54 +02:00
Benjamin Chanudet
355021adb8 FIX #35181 Cancelled purchase orders now shown as such in Project Overview (#35186)
* exclude "cancelled" purchase orders from total

* show cancelled purchase order as cancelled

* show cancelled order by default, as the visibility button is "cancelled shown" by default
2025-09-03 14:51:50 +02:00
Frédéric FRANCE
974f4e273e clean code (#35191)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 14:50:09 +02:00
Frédéric FRANCE
bce53ec123 clean code (#35180)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* fix display

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 14:49:11 +02:00
github-actions[bot]
07f2760dbd PHPStan > Update baseline (#35200)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-03 14:46:43 +02:00
ldestailleur
c2cd2bcaf9 Fix warning 2025-09-03 14:41:23 +02:00
Frédéric FRANCE
a1d7b11324 fix doc (#35196) 2025-09-03 12:54:17 +02:00
ldestailleur
cc6f43493c Clean code 2025-09-03 12:53:38 +02:00
ldestailleur
a5a947a570 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-03 12:44:59 +02:00
ldestailleur
78618f8771 Clean code 2025-09-03 12:44:49 +02:00
Pierre Ardoin
bc90498ecd FIX MULTICOMPANY Error (#35195)
Without it, We have a "error 500" on this tab when Multicomany is active.
2025-09-03 12:44:19 +02:00
Pratush Raj
3291d78de8 #35192 (#35193) 2025-09-03 12:41:11 +02:00
Frédéric FRANCE
d8b167851c add a combining character in dol_string_unaccent test (#35153)
* add a combining character in dol_string_unaccent test

* fix
2025-09-03 12:14:33 +02:00
ldestailleur
abd736e632 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-03 12:06:58 +02:00
ldestailleur
9dd5307c1b Clean code 2025-09-03 12:06:29 +02:00
Alexandre SPANGARO
2ec41b630e NEW Accountancy - Add hook on export filename (#35188)
* NEW Accountancy - Add hook on export filename

* FIX CI
2025-09-03 11:54:37 +02:00
Frédéric FRANCE
d4b93b662c clean code (#35189)
* clean code

* clean code
2025-09-03 11:53:37 +02:00
hermans
d7761168ea Improve setOrigin on Receipt for line_id_object_src & line_id_object_origin (#35091)
In Receipt validate, close... we have setOrigin that not set data line_id_object_src & line_id_object_origin, that variable is very important when we working with custom hook. I checked also on shipment it already implemented.
2025-09-03 00:29:45 +02:00
Jyhere
2e8bf5eb94 NEW: add combining characters (accents, cedilla...) codes in dol_string_unaccent() (#35130)
* NEW: add combining characters (accents, cedilla...) codes in dol_string_unaccent()

* NEW: add combining characters (accents, cedilla...) codes in dol_string_unaccent()
2025-09-03 00:28:49 +02:00
boudet jean pascal
9a0e0a53b1 fix bug div added without value (#35178)
Co-authored-by: jpb <jean-pascal.boudet@atm-consulting>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 00:04:54 +02:00
Clément
69850016d9 FIX Quick search sellist extrafield (#35070)
* FIX Quick search sellist extrafield

* Update functions.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 00:03:09 +02:00
atm-lucas
88699a02cd FIX - Return False with return code 200 on API (#35172)
* Return false in API

* Update api_contracts.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-03 00:02:21 +02:00
MDW
8042d15e3e Qual: Update phan baseline (#35174)
# Qual: Update phan baseline

Remove exceptions that were fixed

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-02 23:59:32 +02:00
ldestailleur
eb20f6f009 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 23:59:09 +02:00
ldestailleur
0d70325cc5 Fix CI warning 2025-09-02 23:58:47 +02:00
ldestailleur
3385a09dab FIX color of late warning for nb of bank account reconciliation lines 2025-09-02 23:40:18 +02:00
ldestailleur
1bd94582be FIX color of late warning for nb of bank account reconciliation lines 2025-09-02 23:38:56 +02:00
ldestailleur
dbf686d0ba Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 23:21:52 +02:00
ldestailleur
149d4974a9 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 23:21:36 +02:00
ldestailleur
4ae58db7c0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 23:21:20 +02:00
ldestailleur
3a97767b62 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 23:21:09 +02:00
ldestailleur
9dacc2cad1 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-02 23:19:02 +02:00
ldestailleur
4123e70f0f FIX #35142 FIX #35143 2025-09-02 23:18:51 +02:00
atm-jonathan
99195bf935 Fix load extrafields list task (#35135)
* load extrafieds task

* load extrafieds task

* restore commentaire

---------

Co-authored-by: Jonathan <x@x.x>
2025-09-02 22:56:39 +02:00
Frédéric FRANCE
4aeda8adcf add doc (#35185)
* add doc

* add doc

* add doc

* add doc

* add doc

* add doc
2025-09-02 22:55:29 +02:00
Frédéric FRANCE
7e9d2a94f4 clean code (#35170)
* clean code

* clean code
2025-09-02 22:52:11 +02:00
Frédéric FRANCE
ab1e5c403f fix CI v22 (#35173) 2025-09-02 22:51:49 +02:00
Frédéric FRANCE
568c65568a clean code (#35175)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-02 22:51:34 +02:00
github-actions[bot]
04d2e19bc0 PHPStan > Update baseline (#35176)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-09-02 22:50:25 +02:00
MDW
cab15ca58e Fix: Fix typo in user_modifcation_id (#35179)
# Fix: Fix typo in user_modifcation_id

Thes fixes the modification id initialisation.
2025-09-02 22:50:15 +02:00
Frédéric FRANCE
76a399abf2 add doc (#35182) 2025-09-02 22:49:53 +02:00
ldestailleur
c07bc61aad Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 22:49:22 +02:00
ldestailleur
fc1af7b87e Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 22:49:15 +02:00
ldestailleur
4030a7141f Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 22:48:53 +02:00
ldestailleur
e415fb7efa Fix CI 2025-09-02 22:48:34 +02:00
Frédéric FRANCE
24bd6d918a clean code (#35183)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code
2025-09-02 22:46:55 +02:00
ldestailleur
5b4295912e Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 22:39:16 +02:00
ldestailleur
3696a543e7 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 22:37:29 +02:00
ldestailleur
5a8aff9e79 Sec: Update doc to trigger alert of vulnerability fix in commit
bb0974add9
2025-09-02 22:37:08 +02:00
ldestailleur
dc38a0a84d Better virtual host file 2025-09-02 22:30:29 +02:00
ldestailleur
b5de7be8a8 Clean code 2025-09-02 17:32:38 +02:00
ldestailleur
0350e2687c FIX fallback of "from" email when sending email in member module 2025-09-02 13:47:01 +02:00
ldestailleur
5e38d0134e Trans 2025-09-02 12:51:51 +02:00
ldestailleur
dc00877d94 Fix position in changelog 2025-09-02 12:08:27 +02:00
ldestailleur
62f761ac71 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-02 12:07:15 +02:00
ldestailleur
ee38ff0aaf Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 12:02:40 +02:00
ldestailleur
55d177883f Doc 2025-09-02 12:00:46 +02:00
ldestailleur
557e830aae Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-09-02 11:58:45 +02:00
ldestailleur
a1b99da514 Prepare 21.0.4 2025-09-02 11:58:35 +02:00
ldestailleur
0315ad9381 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-02 03:52:35 +02:00
ldestailleur
6727d0c361 FIX we saw links to object on private not just after a save. 2025-09-02 03:51:08 +02:00
ldestailleur
3ff7e03ddf NEW Button to create a proposal and sale order from a contract always on 2025-09-01 23:17:56 +02:00
Noé Cendrier
887e7442d9 NEW: generate renewal proposal for contracts (#35120)
* NEW: generate renewal proposal for contracts

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-01 23:10:44 +02:00
Frédéric FRANCE
bc92afe403 add doc (#35168)
* add doc

* add doc

* add doc

* add doc

* add doc

* add doc

* add doc
2025-09-01 22:27:36 +02:00
Frédéric FRANCE
d8ec14bc46 clean code (#35167)
* clean code

* clean code
2025-09-01 22:26:41 +02:00
Frédéric FRANCE
f9bf9d4888 add doc (#35166)
* add doc

* add doc

* add doc
2025-09-01 22:26:11 +02:00
ldestailleur
f60dac9a62 Comment 2025-09-01 21:33:45 +02:00
ldestailleur
49ef8e87ea Fix HTML escaping 2025-09-01 21:26:02 +02:00
Benjamin Chanudet
53aae1a4b8 FIX #35147 SQL Error on Beluga Export when ExpenseReport is enabled (#35149)
* Fix SQL error when ExpenseReport module is enabled (#35147)

* fix date filtering that prevents data to be displayed

* add date and amount for expense reports

* Update pdf_beluga.modules.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-01 20:33:12 +02:00
ldestailleur
eb47c73001 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-01 20:01:25 +02:00
ldestailleur
dd667a30b2 Fix warning 2025-09-01 20:01:14 +02:00
ldestailleur
c2b7c8712f Fix warning 2025-09-01 20:00:58 +02:00
lvessiller-opendsi
e818bf732d FIX extra field list depend on parent list when editing a card (#35165) 2025-09-01 19:55:00 +02:00
lvessiller-opendsi
2d55195982 FIX missing quick edit for extrafields (baclport commit 4fc66c6) (#35160) 2025-09-01 19:50:48 +02:00
Sébastien NASSIET
3a27b44f95 FIX #35154 - Massaction createbills in reception list don't mind about order and/or thirdparty currency (#35156)
* FIX#35154

Massaction createbills in reception list don't mind about order and/or thirdparty currency

* FIX#35154

* FIX#35154

* Delete white space line 406

* Correcting typing error
2025-09-01 19:49:50 +02:00
Frédéric FRANCE
a643a8456b fix Variable $statut might not be defined (#35161) 2025-09-01 19:35:53 +02:00
sonikf
4fd4f0e1d9 fix grammar (#35158)
* Update company birth date label to establishment date

* Simplify default bank account description

* Fix wording in discount split labels

* fix grammar

* Fix typo
2025-09-01 19:32:46 +02:00
Frédéric FRANCE
c6145d7723 clean code (#35151)
* clean code

* Update mod_barcode_thirdparty_standard.php

* Update mod_barcode_product_standard.php
2025-09-01 19:32:03 +02:00
sonikf
b1fe717d1a fix #34872 (#35150)
* Remove fk_product check brakes addition of free product lines

* Handle potential null for detail_children array
2025-09-01 19:31:39 +02:00
ldestailleur
dd09cb5f69 Fix CI 2025-09-01 19:29:28 +02:00
Frédéric FRANCE
58d2ba225d clean code (#35148)
* clean code

* fix

* fix

* fix
2025-09-01 19:24:57 +02:00
Frédéric FRANCE
34498d3437 fetch greatest tms for user and fix user creation and modification (#35145)
* fetch greatest tms for user and fix user creation and modification

* fetch greatest tms for user and fix user creation and modification

* fetch greatest tms for user and fix user creation and modification

* fetch greatest tms for user and fix user creation and modification

* fetch greatest tms for user and fix user creation and modification

* fetch greatest tms for user and fix user creation and modification
2025-09-01 19:21:54 +02:00
Alexandre SPANGARO
5788438864 FIX Missing sentence part (#35144) 2025-09-01 19:21:22 +02:00
ldestailleur
4e89f046d1 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-01 16:47:39 +02:00
ldestailleur
bb0974add9 FIX Security when using feature Advanced Target of emailing (hidden in
v21, default in v22+). Possible SQL injection by users with permissions
to make mass emailing. Reported by Simon Perdrisat.
2025-09-01 16:38:01 +02:00
ldestailleur
1e98b14a75 FIX default doc template on supplier proposal 2025-09-01 12:12:48 +02:00
ldestailleur
9be9f6d0e6 FIX changin status on proposal need a refresh of page to be visible 2025-09-01 12:07:01 +02:00
ldestailleur
44ccc0f284 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-01 11:40:14 +02:00
ldestailleur
3e2b962c1d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-09-01 11:40:04 +02:00
ldestailleur
399ad121eb Fix default order in list of supplier proposals 2025-09-01 11:35:37 +02:00
ldestailleur
e9879b2b10 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-09-01 11:10:54 +02:00
ldestailleur
c1fb41e5d9 FIX setup of default doc template for supplier proposal when none. 2025-09-01 11:10:36 +02:00
Regis Houssin
2840ebeedf FIX wrong country code (#35152) 2025-08-31 11:53:35 +02:00
Thatoo
5338607237 auto_subscription_member_form_types_nature (#35033) 2025-08-31 11:52:53 +02:00
github-actions[bot]
2d809652bd PHPStan > Update baseline (#35146)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-30 18:06:54 +02:00
ldestailleur
1fe5099f1e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-30 17:15:20 +02:00
ldestailleur
f729d33dcc Clean setup of antivirus 2025-08-30 17:14:57 +02:00
ldestailleur
aadaf44ec1 Trans 2025-08-30 16:49:05 +02:00
Romain
6d441f89a4 FIX: #33911 active services are reported as expired on the homepage (#35125) 2025-08-30 15:49:25 +02:00
HENRY Florian
644cb00136 new: add fitid columnin llx_bank_import (#35128) 2025-08-30 15:36:55 +02:00
John BOTELLA
b25814cb58 fix experimental intuitive select (#35131) 2025-08-30 15:35:48 +02:00
Frédéric FRANCE
c567e55b5e fetch greatest tms for members (#35133)
* fetch greatest tms for members

* fetch greatest tms for members
2025-08-30 15:34:39 +02:00
ldestailleur
6e3de32c36 FIX error when using a code too large in dictionary 2025-08-29 17:44:18 +02:00
Frédéric FRANCE
96130d7562 wip workstation tms (#35126)
* wip workstation tms

* wip workstation tms

* setup

* setup

* setup

* setup

* setup
2025-08-29 17:20:20 +02:00
github-actions[bot]
b09cfab271 PHPStan > Update baseline (#35134)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-29 17:19:36 +02:00
ldestailleur
1443f35cf1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-29 02:20:14 +02:00
ldestailleur
d4ff562fc2 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-29 02:20:05 +02:00
ldestailleur
4f40278987 Fix bad index 2025-08-29 02:19:47 +02:00
lemmings67
35c101ff9a fix #35118 (#35119)
OpenID doesn't work when $dolibarr_main_authentication contains "ldap"

Co-authored-by: Pascal EISELE <peisele@appligos.fr>
2025-08-28 23:10:27 +02:00
Frédéric FRANCE
e6cb3039c0 fetch greatest tms (#35123)
* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms
2025-08-28 23:07:51 +02:00
ldestailleur
83dcc8fb54 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-28 23:04:49 +02:00
ldestailleur
5abb379f63 Fix message 2025-08-28 23:03:39 +02:00
ldestailleur
6a4c7398a7 Fix message 2025-08-28 23:02:35 +02:00
ldestailleur
c0274e4e5a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 22:54:50 +02:00
ldestailleur
f44a243cc9 Add icon for apple-touch-icon.png 2025-08-28 22:54:40 +02:00
Frédéric FRANCE
252b68cbcf fetch greatest tms (#35122)
* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms

* fetch greatest tms
2025-08-28 19:28:48 +02:00
ldestailleur
2efb61dbd1 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 19:24:01 +02:00
ldestailleur
6f1ebfb69e NEW add a limit to avoid too many answer in agenda view. Add warning if
limit has been reached.
2025-08-28 19:23:51 +02:00
Frédéric FRANCE
1648b43481 fix box_last_modified_ticket.php (#35121) 2025-08-28 17:31:33 +02:00
William Mead
83898f9454 Fixed intervention line duration add (#35117) 2025-08-28 17:29:04 +02:00
ldestailleur
4a3383e46c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 16:40:57 +02:00
ldestailleur
ae20554a4d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 16:40:48 +02:00
ldestailleur
088856ad50 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-28 16:40:14 +02:00
ldestailleur
c91f5caac4 Prepare 21.0.3 2025-08-28 16:37:13 +02:00
Mohamed DAOUD
4637214644 Prepare SEPA payments for supplier invoices via Stripe (#35078)
* preparation for supplier invoice payment via SEPA Stripe

* use stripe cynematic

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 16:33:54 +02:00
ldestailleur
8631c1722f FIX #35115 2025-08-28 15:20:59 +02:00
Frédéric FRANCE
ab4d49af61 Translation fields (#35114)
* translations fields

* translations fields
2025-08-28 14:55:24 +02:00
ldestailleur
68baff6630 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 14:53:56 +02:00
ldestailleur
5ffb29d21c Fix reposition 2025-08-28 14:53:38 +02:00
ldestailleur
affaa5da9b FIX #35071 2025-08-28 14:50:44 +02:00
ldestailleur
f7a3d295cc Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-28 14:04:47 +02:00
ldestailleur
8c582358f4 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-28 14:01:41 +02:00
ldestailleur
c1d76182b8 FIX #34981 2025-08-28 14:01:16 +02:00
Frédéric FRANCE
b4e01be091 translations fields (#35112) 2025-08-28 13:51:30 +02:00
Frédéric FRANCE
d63e68bbcb Update box_last_modified_ticket.php (#35111) 2025-08-28 13:51:07 +02:00
Charlène Benke
8fa13f68bf fix translation of $fields on interventional (#35106)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 13:49:34 +02:00
Frédéric FRANCE
37aaad6810 avoid untranslated dol_print_error (#35104)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 04:04:41 +02:00
github-actions[bot]
8cfe643e68 PHPStan > Update baseline (#35102)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 04:04:16 +02:00
Alexandre SPANGARO
c120446561 FIX Treasury accountancy - Accounting errors for members (#35097)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 04:03:58 +02:00
Laurent Destailleur
f30b2ef8aa NEW More index for memberships table 2025-08-28 04:02:16 +02:00
Laurent Destailleur
058b87fe29 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 03:22:47 +02:00
Laurent Destailleur
2619ee7696 FIX #35105 2025-08-28 03:22:17 +02:00
Sylvain Legrand
4f684df12f Fix supplier invoice API (#35100)
* Fix supplier invoice API

We can't modify mode_reglement_id from API on supplier invoice !

* Update fournisseur.facture.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-28 03:05:05 +02:00
Laurent Destailleur
883686f5f9 CSS 2025-08-28 03:01:45 +02:00
lvessiller-opendsi
adbbf9e3b2 FIX set global mysoc and load langs in API access (#35041)
* FIX set global mysoc and load langs in API access

* FIX reset mysoc and langs only if entity of API has changed
2025-08-28 02:50:38 +02:00
Laurent Destailleur
35bfe71b79 FIX #35098 2025-08-28 02:37:27 +02:00
Frédéric FRANCE
7d04067b4e fix CI (Travis) (#35099)
* fix test

* fix test

* fix test

* fix test

* fix test

* fix

* fix

* fix
2025-08-28 02:15:41 +02:00
Laurent Destailleur
0582694eb3 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-28 02:12:37 +02:00
Laurent Destailleur
d16a66f269 Better management of how we store localtax vat rate for customer price. 2025-08-28 02:11:53 +02:00
ldestailleur
13e24a7097 Fix css 2025-08-27 21:06:23 +02:00
ldestailleur
b512daf798 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-27 20:59:22 +02:00
ldestailleur
f5ec334c30 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-27 20:58:49 +02:00
ldestailleur
819dd701fe Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-27 19:32:45 +02:00
ldestailleur
77ab826478 Increase period for alert to 6 monthes. 2025-08-27 19:32:33 +02:00
ldestailleur
1938bbf63b Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-27 19:30:16 +02:00
ldestailleur
5fe7b972c7 Update changelog 2025-08-27 19:30:05 +02:00
Marc de Lima Lucio
1f29c7758c FIX: accountancy general ledger: bad handling of hook return (#34029)
* FIX: accountancy general ledger: bad handling of hook return

* FIX: accountancy balance: bad handling of hook return
2025-08-27 11:30:26 +02:00
Frédéric FRANCE
c5f9f35ea9 add doc (#35095)
* add doc

* add doc
2025-08-27 03:12:48 +02:00
Frédéric FRANCE
aa8ddce4d8 can use DOL_DATA_ROOT in geoipmaxmind config (#35085) 2025-08-27 03:10:23 +02:00
Frédéric FRANCE
cd80cbc632 add doc (#35067)
* add doc

* add doc

* add doc

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-27 03:08:15 +02:00
Frédéric FRANCE
103bfd9051 update user_modification_id when updating invoice (#35082) 2025-08-27 03:07:17 +02:00
kkhelifa-opendsi
07512d1dad FIX - Fix missing token for disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084) 2025-08-27 03:06:19 +02:00
Frédéric FRANCE
d5591e3cbf fix warning in box_actions_future.php (#35087) 2025-08-27 03:05:57 +02:00
Frédéric FRANCE
b8c66a650e add doc (#35094) 2025-08-27 03:03:58 +02:00
Frédéric FRANCE
a3839a69a2 add doc (#35093) 2025-08-27 03:03:23 +02:00
Frédéric FRANCE
0074e1ab58 add doc (#35092) 2025-08-27 03:03:06 +02:00
github-actions[bot]
22b90515ec PHPStan > Update baseline (#35089)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-27 03:02:30 +02:00
ldestailleur
d8c2e61e43 Fix error on captcha when function GD does not exists 2025-08-27 02:50:11 +02:00
ldestailleur
38f1f77c70 Fix error on captcha when function GD does not exists 2025-08-27 02:49:52 +02:00
ldestailleur
16e1890130 Debug v23 2025-08-27 02:26:38 +02:00
ldestailleur
7deaf2db94 Label 2025-08-27 01:42:18 +02:00
ldestailleur
8179a02221 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-27 01:39:33 +02:00
ldestailleur
5f2fd17f62 Fix hide info 2025-08-27 01:39:15 +02:00
ldestailleur
1fc8d3dcb5 Debug v23 2025-08-27 01:33:55 +02:00
ldestailleur
0bbbdabea4 Debug v23 2025-08-27 01:31:34 +02:00
ldestailleur
f357e61773 Debug v23 2025-08-27 01:30:01 +02:00
ldestailleur
1f32b88f68 Debug v23 2025-08-27 01:25:48 +02:00
ldestailleur
791046c6bf Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-27 01:08:20 +02:00
ldestailleur
ccc26d0ad0 Doc 2025-08-27 01:08:10 +02:00
Laurent Destailleur
6745e086d3 Fix CI 2025-08-26 05:49:08 +02:00
Laurent Destailleur
21fca23b1d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-26 05:47:11 +02:00
Laurent Destailleur
0af854e355 Log 2025-08-26 05:46:26 +02:00
Laurent Destailleur
81fe80c509 Fix CI 2025-08-26 05:40:24 +02:00
Laurent Destailleur
ff00f13c8f Fix travis 2025-08-26 05:33:23 +02:00
Laurent Destailleur
4932cd5f7e Execute phpunit for functionsbe in all tests 2025-08-26 05:27:02 +02:00
Laurent Destailleur
4a30325361 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-26 05:21:51 +02:00
Laurent Destailleur
ca835cb92d Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-26 05:21:20 +02:00
Laurent Destailleur
cfbafcc31f Fix CI 2025-08-26 05:20:54 +02:00
Laurent Destailleur
0d58e1ce05 Fix CSS 2025-08-26 05:20:31 +02:00
Benjamin Chanudet
d81f8e539d FIX #34857 Structured communication number checksum is now always correct (#35081)
* FIX #34857 Structured communication number now works correctly

* make sure we follow Dolibarr code chart

* fix last CI warning
2025-08-26 05:16:32 +02:00
Laurent Destailleur
571e436f2f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-26 05:12:25 +02:00
Laurent Destailleur
438b7d2eb0 Fix CI 2025-08-26 05:12:04 +02:00
Pichinov-Jose
21b194999f FIX Update card_group.php : missing letter in Fistname (#35077) 2025-08-26 05:03:34 +02:00
Frédéric FRANCE
8de7d4dd94 add doc (#35068) 2025-08-26 04:51:12 +02:00
Laurent Destailleur
b19ac8c38c Clean code 2025-08-26 04:49:15 +02:00
Laurent Destailleur
834c0dc1dd Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-26 04:37:40 +02:00
Laurent Destailleur
88e3dd1d5d Fix concat 2025-08-26 04:37:20 +02:00
Frédéric FRANCE
fc2786cd35 fix missing fetch entity in don.class.php (#35075) 2025-08-26 04:34:21 +02:00
Frédéric FRANCE
1a630cef85 fix missing fetch entity in loan.class.php (#35074) 2025-08-26 04:33:57 +02:00
Frédéric FRANCE
3a23318ed8 add doc (#35079)
* add doc

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-26 04:33:05 +02:00
Laurent Destailleur
e610c7ed06 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-26 04:25:00 +02:00
Laurent Destailleur
4d6b05954d Try fix #35080 2025-08-26 04:24:32 +02:00
Laurent Destailleur
af68f7c8a5 Fix CI 2025-08-26 04:20:30 +02:00
Laurent Destailleur
336c3bce3f Debug Fix CI 2025-08-26 04:12:51 +02:00
Laurent Destailleur
ac5156d81f Fix CI 2025-08-26 02:44:34 +02:00
Laurent Destailleur
2be336da69 Fix CI 2025-08-25 23:42:27 +02:00
Mathieu Pellegrin
3b422177f5 Fix #33374 (#35066) 2025-08-25 23:11:42 +02:00
ldestailleur
6e435f6be8 Fix CI 2025-08-25 22:26:15 +02:00
ldestailleur
5fe445c0da Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-25 21:53:35 +02:00
ldestailleur
40e014d487 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-25 21:53:13 +02:00
ldestailleur
0f036f4f6e Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-25 21:52:43 +02:00
ldestailleur
f710eaa2a4 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-25 21:51:28 +02:00
ldestailleur
edf07d40b3 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-08-25 21:51:10 +02:00
ldestailleur
7e2f7e0296 Doc 2025-08-25 21:22:00 +02:00
ldestailleur
c63090fee7 Fix warning 2025-08-25 20:13:23 +02:00
ldestailleur
82ac5b3ea2 Clean code 2025-08-25 20:12:20 +02:00
ldestailleur
2e925dfa40 Fix CI 2025-08-25 14:49:13 +02:00
ldestailleur
b3d3a7176f Clean code 2025-08-25 14:27:07 +02:00
ldestailleur
f12d6d3a8e Fix CI 2025-08-25 14:20:35 +02:00
ldestailleur
8725024f29 Fix CI 2025-08-25 14:15:39 +02:00
ldestailleur
0003b64b93 Fix warnings 2025-08-25 14:13:17 +02:00
ldestailleur
49ecc3f00a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-25 12:46:48 +02:00
ldestailleur
7a15aababa NEW Better navigation and report into database admin tools 2025-08-25 12:46:32 +02:00
ldestailleur
7c30968ed1 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-24 22:16:14 +02:00
ldestailleur
a21e896dbe Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-24 22:10:12 +02:00
ldestailleur
36a69fdfe3 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-24 22:09:41 +02:00
ldestailleur
583c4b3270 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-24 22:09:30 +02:00
ldestailleur
381c6fbecf Fix CI 2025-08-24 22:05:46 +02:00
ldestailleur
e6255edc26 Fix warning 2025-08-24 21:50:41 +02:00
Charlène Benke
a954c3e338 Remove fetchObjectLinked calls in expense report methods (#35063)
they are no link on expense report
2025-08-24 20:25:03 +02:00
Charlène Benke
4ed8630c3f Change permission checks from 'expensereport' to 'holiday' (#35062)
error on class holiday
2025-08-24 20:23:11 +02:00
Charlène Benke
8a3b0d3eda Change permission checks from 'expensereport' to 'holiday' (#35062)
error on class holiday
2025-08-24 20:22:46 +02:00
Frédéric FRANCE
b58ea39b87 fix warnings (#35056) 2025-08-24 20:22:13 +02:00
Frédéric FRANCE
3b3274e15e Fix asset (#35058)
* fix missing field definition

* fix warnings

* fix warnings

* fix warnings
2025-08-24 20:21:21 +02:00
Frédéric FRANCE
26e3f864cc fix warnings (#35055)
* fix warnings

* fix warnings

* fix warnings
2025-08-24 20:20:55 +02:00
Frédéric FRANCE
a860e7b70e add doc (#35049) 2025-08-24 20:20:21 +02:00
Frédéric FRANCE
0ae86c8d12 add doc (#35048) 2025-08-24 20:20:07 +02:00
Frédéric FRANCE
5c4b15965b add doc (#35047) 2025-08-24 20:19:53 +02:00
Frédéric FRANCE
b7fb3d5136 fix warning (#35045) 2025-08-24 20:19:06 +02:00
Frédéric FRANCE
0960243a43 add optional elements linked block (#35042) 2025-08-24 20:18:46 +02:00
github-actions[bot]
e2d38e788b PHPStan > Update baseline (#35044)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-24 20:14:50 +02:00
Frédéric FRANCE
e39a7a5dbc add doc (#35043) 2025-08-24 19:53:39 +02:00
Frédéric FRANCE
0bb5efe027 add doc (#35040)
* add doc

* add doc

* add doc

* add doc

* add doc
2025-08-24 19:53:22 +02:00
ldestailleur
d41ce132f3 Save more information into exp_payment_id for Stripe payments. 2025-08-24 19:50:38 +02:00
ldestailleur
4c0972ef26 FIX link to stripe dashboard in stripe payment 2025-08-24 16:44:10 +02:00
ldestailleur
00881030a3 FIX link to stripe dashboard in stripe payment 2025-08-24 16:44:05 +02:00
ldestailleur
9c24707a90 FIX link to stripe dashboard in stripe payment 2025-08-24 16:42:39 +02:00
ldestailleur
ba941876ed FIX link to stripe dashboard in stripe payment 2025-08-24 16:41:33 +02:00
Regis Houssin
672cd7e263 FIX #35053 (#35054)
* FIX #35053

* FIX avoid php warning
2025-08-22 22:35:21 +02:00
Regis Houssin
595582b1d0 FIX user socid is fk_soc (#35046) 2025-08-22 22:33:08 +02:00
ldestailleur
bd25b293b4 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-22 16:31:20 +02:00
ldestailleur
8ac72c7435 Fix move dir 2025-08-22 16:29:26 +02:00
ldestailleur
9fbd0b33d3 Label of column 2025-08-22 16:21:54 +02:00
ldestailleur
c1affb4e43 Fix apstats 2025-08-22 16:10:38 +02:00
ldestailleur
f5ae12fb4d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-22 15:31:37 +02:00
ldestailleur
b9a2c81bfe Removed useless exclude 2025-08-22 15:31:11 +02:00
ldestailleur
7c756a35b3 Note 2025-08-22 14:59:15 +02:00
ldestailleur
1246eaee17 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-22 05:22:32 +02:00
ldestailleur
377d240415 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-22 05:22:10 +02:00
ldestailleur
ed9b2fcabc Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-22 05:21:05 +02:00
ldestailleur
dd8d243fda Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-22 05:20:57 +02:00
Benjamin Chanudet
a8d4067af2 FIX #35011 Computed extrafield on tasks list now display correct values (#35038)
The functions assigns value to `$obj` on line 976, but doesn't assign value to `$object`, that is then assigned to `$objectoffield` in line 75 of `extrafields_list_print_fields.tpl.php`. Also `$objectoffield` is the recommended value to use for computed extrafields, according to the docs.
But assigning `$object` is not enough, because `$objectoffield` at this moment is not grabbed from the global scope, so the value stays local and `dol_eval()` doesn't find it. So it also needs to grab the variable from the global scope to affect it correctly.
The changed function, `projectLinesa()` is called only twice in the project: by itself recursively to go through all subtasks, and on the page where I detected the bug initially, `tasks.php`, so the impact should be minimal.
2025-08-22 05:18:25 +02:00
ldestailleur
9c582ba76d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-22 04:50:20 +02:00
Laurent Destailleur
28fe94b6a1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-22 03:10:56 +02:00
Laurent Destailleur
5d7381e156 Fix CSS 2025-08-22 03:10:07 +02:00
ldestailleur
a9469b0410 NEW Upgrade ACE editor to 1.43.12 2025-08-21 23:54:11 +02:00
hermans
c929bf5964 Update some ID Language translation (#35021)
Co-authored-by: hermans <hermans@users.noreply.github.com>
2025-08-21 23:28:53 +02:00
Frédéric FRANCE
cd5df0bd68 try to fix doc (#35036)
* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc

* try to fix doc
2025-08-21 23:13:00 +02:00
ldestailleur
c95ecef559 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 21:45:46 +02:00
ldestailleur
ffce43a808 Fix json 2025-08-21 21:45:38 +02:00
Frédéric FRANCE
1f232edc2f add doc (#35035) 2025-08-21 21:33:19 +02:00
ldestailleur
7b4d21e353 Fix dependabot 2025-08-21 21:25:18 +02:00
ldestailleur
4604f14ca6 Fix json file 2025-08-21 21:14:25 +02:00
ldestailleur
66030b6c9e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-08-21 21:11:10 +02:00
ldestailleur
b6a3d871b1 Update dependabot 2025-08-21 21:10:33 +02:00
Laurent Destailleur
2b73f8e678 Update dependabot.yml 2025-08-21 21:05:42 +02:00
ldestailleur
a9c6069478 Implement Strict-Transport-Security and Permissions-Policy for
backoffice pages.
2025-08-21 20:52:07 +02:00
Laurent Destailleur
fb515cdf2d Update dependabot.yml 2025-08-21 19:57:49 +02:00
Frédéric FRANCE
daa71f89f2 add doc (#35034)
* add doc

* add doc

* add doc
2025-08-21 19:36:58 +02:00
Frédéric FRANCE
7b5e9faa83 clean code (#35032) 2025-08-21 19:36:30 +02:00
Frédéric FRANCE
5652a01f59 Expensereport linkedobject tpl (#35027)
* add doc

* add doc

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-21 19:36:04 +02:00
ldestailleur
d4cc80f18d Debug the printing of TakePos. Disabe custom receipt print in some
cases.
2025-08-21 19:34:10 +02:00
ldestailleur
7d09790261 FIX Disable the auto print on setup page of TakePOS 2025-08-21 18:25:52 +02:00
ldestailleur
8f95698dfd Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 17:33:48 +02:00
ldestailleur
1253086c8b Fix print on printer IP when port not defined. 2025-08-21 17:33:32 +02:00
Frédéric FRANCE
455831d00e add doc (#35031)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-21 17:20:51 +02:00
ldestailleur
118d5aee35 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 16:12:13 +02:00
ldestailleur
b0db2c604a Fix CI 2025-08-21 16:12:03 +02:00
Frédéric FRANCE
f626e4e85f fix Undefined variable $outputlangs (#35029) 2025-08-21 15:52:41 +02:00
Frédéric FRANCE
af4db51885 add doc (#35026)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-21 15:49:45 +02:00
ldestailleur
2ccd961f97 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 15:49:19 +02:00
ldestailleur
1578615cf5 Fix CI 2025-08-21 15:49:05 +02:00
Frédéric FRANCE
1a5e41c917 fix resource agenda (#35028)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-21 15:46:17 +02:00
Frédéric FRANCE
b51468f556 fix resource agenda (#35028)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-21 15:46:02 +02:00
Frédéric FRANCE
9f87233a61 add doc (#35025) 2025-08-21 15:42:04 +02:00
Frédéric FRANCE
aa33a71c62 add doc (#35024) 2025-08-21 15:41:42 +02:00
Frédéric FRANCE
78f14f525f add doc (#35023) 2025-08-21 15:41:24 +02:00
ldestailleur
83d55d4f23 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 15:41:00 +02:00
ldestailleur
44ca0a7aff Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-21 15:40:32 +02:00
ldestailleur
165272d0e1 Fix CI 2025-08-21 15:39:06 +02:00
ldestailleur
c93d94e2a5 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 15:07:19 +02:00
ldestailleur
c389d40148 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-21 15:06:56 +02:00
ldestailleur
9fc2382d23 FIX bad test making blank page 2025-08-21 15:03:09 +02:00
ldestailleur
6d7dc74cab WIP Page to edit credentials like TOTP, APi key, ... 2025-08-21 14:20:27 +02:00
ldestailleur
61f907c347 NEW Add option API_ENABLE_COUNT_CALLS 2025-08-21 13:05:47 +02:00
ldestailleur
385efad2a4 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 11:20:18 +02:00
ldestailleur
a1661e35e4 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 11:12:35 +02:00
ldestailleur
de3597394c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-21 11:09:22 +02:00
ldestailleur
dd0679db44 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-21 11:09:10 +02:00
ldestailleur
7878d81e33 FIX #34986 2025-08-21 11:02:48 +02:00
Frédéric FRANCE
1a9d42d49c fix agenda with AGENDA_ALL_CALENDARS (#35020) 2025-08-21 09:43:16 +02:00
Laurent Destailleur
80590f4118 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-21 00:05:10 +02:00
Laurent Destailleur
ab3642d8fb Fix test 2025-08-21 00:03:02 +02:00
ldestailleur
6e62ccc62f Table for variant module must be created at module activation only 2025-08-20 20:36:02 +02:00
ldestailleur
23fe2c7f47 FIX Option low memory mode in backup was broken 2025-08-20 20:11:45 +02:00
ldestailleur
efcd392bb8 FIX Option low memory mode in backup was broken 2025-08-20 20:11:33 +02:00
ldestailleur
1751358fe4 FIX Option low memory mode in backup was broken 2025-08-20 20:08:58 +02:00
ldestailleur
1f7a3b156d FIX Option low memory mode in backup was broken 2025-08-20 20:07:19 +02:00
ldestailleur
eb43a9378a Fix spellcheck 2025-08-20 19:49:24 +02:00
ldestailleur
ac1ad4e904 CSS 2025-08-20 19:45:41 +02:00
ldestailleur
770cc4c1ff Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 19:43:21 +02:00
ldestailleur
4e90457cd6 CSS 2025-08-20 19:43:08 +02:00
kevin147147
9c8e7e5ab6 Update commondocgenerator.class.php (#35019) 2025-08-20 19:05:07 +02:00
Frédéric FRANCE
83b42a024a add doc (#35018) 2025-08-20 19:04:01 +02:00
lvessiller-opendsi
3362a6b06d FIX The combo of custom groups has disappeared (backport v19) (#35016) 2025-08-20 19:03:18 +02:00
Frédéric FRANCE
cc03c92614 fix update resource (#35015)
* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource

* fix update resource
2025-08-20 19:02:08 +02:00
Frédéric FRANCE
926defb22c add more parameters to restrictedArea hook (#35013)
* add more parameters to hook

* add more parameters to hook

* add more parameters to hook

* add more parameters to hook

* add more parameters to hook

* add more parameters to hook

* add more parameters to hook

* add more parameters to hook
2025-08-20 18:57:52 +02:00
Frédéric FRANCE
751dfd561e fix parameters (#35012) 2025-08-20 18:56:14 +02:00
Frédéric FRANCE
b9d02e16cc fix parameters (#35012) 2025-08-20 18:51:55 +02:00
ldestailleur
73823bbe35 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-20 18:50:41 +02:00
ldestailleur
fe0acbe6e6 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 18:50:14 +02:00
ldestailleur
dabc704ba6 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 18:50:07 +02:00
ldestailleur
c33a72a4d7 Trans 2025-08-20 18:49:27 +02:00
ldestailleur
7cdb8a230f CSS 2025-08-20 18:44:26 +02:00
ldestailleur
3557c7efa9 Trans 2025-08-20 18:25:24 +02:00
ldestailleur
30a47b174c Fix trans 2025-08-20 18:25:04 +02:00
ldestailleur
514c4ca72b Duplicate help 2025-08-20 17:59:50 +02:00
ldestailleur
9b365c97b8 Fix when help is shown 2025-08-20 17:57:08 +02:00
ldestailleur
79d933c2e7 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 17:51:31 +02:00
ldestailleur
70bbb36d22 Fix trans 2025-08-20 17:51:02 +02:00
ldestailleur
0512428c53 Help missing 2025-08-20 17:47:24 +02:00
ldestailleur
23acc5ad7c Fix spellcheck 2025-08-20 17:36:37 +02:00
ldestailleur
f2d33716f6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-20 17:17:18 +02:00
ldestailleur
27ceadeaf6 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 17:17:03 +02:00
ldestailleur
dea330b52d FIX ##35005 FIX #35006 SQL error when using external user 2025-08-20 17:14:03 +02:00
ldestailleur
924204ac29 LEFT JOIN syntax 2025-08-20 17:09:43 +02:00
Frédéric FRANCE
013d8c6c91 clean code (#35009) 2025-08-20 17:05:35 +02:00
ldestailleur
ec1658b95a FIX #35008 2025-08-20 17:04:25 +02:00
github-actions[bot]
55fb75dadd PHPStan > Update baseline (#35004)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-20 17:02:22 +02:00
Kusco
8075cb8dba FIX Updated rights management in ModuleBuilder Tabs (#34989)
* Update modMyModule.class.php

Actualisation de la gestion des droits dans les Tabs du ModuleBuilder

* Update modMyModule.class.php

* Update modMyModule.class.php

* Update modMyModule.class.php

* Update modMyModule.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-20 17:02:09 +02:00
Frédéric FRANCE
55a4b23217 clean module subtotal (#35003)
* clean module subtotal

* Update commonsubtotal.class.php

* Update subtotals.php
2025-08-20 17:00:13 +02:00
Frédéric FRANCE
b31e85f00a clean code (#35002) 2025-08-20 16:59:17 +02:00
ldestailleur
cd43d46006 Prepare 22.0.1 2025-08-20 16:58:11 +02:00
ldestailleur
2944e19391 Prepare 22.0.1 2025-08-20 16:54:41 +02:00
ldestailleur
ef5f825667 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-20 16:52:22 +02:00
ldestailleur
45cff5ad90 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 16:51:39 +02:00
ldestailleur
263626b2fd Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-20 16:51:05 +02:00
ldestailleur
e351f7bcd5 FIX a Fatal error when a trigger files is not correctly named. 2025-08-20 16:26:29 +02:00
ldestailleur
f722602402 Fix comparison on version to show the warning to upgrade database 2025-08-20 16:02:46 +02:00
Frédéric FRANCE
ac17198af6 clean module subtotal (#35001) 2025-08-19 13:14:11 +02:00
ldestailleur
0d4df1e762 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-19 11:52:09 +02:00
ldestailleur
c34f3c07fd css 2025-08-19 11:51:53 +02:00
atm-lucas
cfd64ff70a FIX - Removal of accents in searches via comboxbox (#34933)
* accents and lower case on combobox

* Fix type

* adding conf

* remove comment

---------

Co-authored-by: ldestailleur <eldy@destailleur.fr>
2025-08-19 11:50:44 +02:00
sonikf
481e3108a1 remove duplicate (#35000) 2025-08-19 11:44:18 +02:00
sonikf
8682fe81af fix typo (#34999) 2025-08-19 11:43:47 +02:00
Frédéric FRANCE
1d5af9200a add doc (#34997) 2025-08-19 11:43:18 +02:00
Frédéric FRANCE
b70418100e add doc (#34996) 2025-08-19 11:42:59 +02:00
Frédéric FRANCE
96464b9130 add doc (#34995)
* add doc

* Update linkedobjectblock.tpl.php
2025-08-19 11:42:38 +02:00
hermans
63924e2f94 Fix facture haader title on dolibar-21 (#34993)
* Fix facture haader title on dolibar-21

* fix error - No space found after comma in argument list

---------

Co-authored-by: hermans <hermans@users.noreply.github.com>
2025-08-19 11:41:03 +02:00
Frédéric FRANCE
b8010a63c2 clean module subtotal (#34991)
* clean module subtotal

* clean module subtotal
2025-08-19 11:40:31 +02:00
Frédéric FRANCE
0189c5cb0c clean module subtotal (#34990) 2025-08-19 11:40:16 +02:00
Frédéric FRANCE
e0861b922f normalise doc (#34987)
* normalise doc

* normalise doc

* normalise doc
2025-08-19 11:24:38 +02:00
dependabot[bot]
790377c0bc Bump actions/checkout from 4 to 5 (#34985)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-19 11:23:40 +02:00
Frédéric FRANCE
c992ac8955 clean code (#34984) 2025-08-19 11:23:12 +02:00
ldestailleur
1285e79c50 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-18 16:35:13 +02:00
ldestailleur
1d8b31b06c Clean code 2025-08-18 16:35:01 +02:00
Frédéric FRANCE
7fb6fc7e62 can set extrafields in project elements (#34923)
* can set extrafields in project elements

* can set extrafields in project elements

* Update element.php

* test

* test

* test

* test

* test

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-18 15:52:11 +02:00
github-actions[bot]
9e1c0a0a29 PHPStan > Update baseline (#34988)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-18 15:50:37 +02:00
github-actions[bot]
7ce6b2ce54 PHPStan > Update baseline (#34983)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-18 03:39:00 +02:00
Charlène Benke
e70357c63b FIX : add map_type_title_area on category class hook (#34971)
* add map_type_title_area on category class hook

need on new categorie feature if we use specific categories on external module

* Update categorie.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-18 03:38:21 +02:00
ldestailleur
3ac25e9581 Fix phpunit 2025-08-17 17:43:20 +02:00
ldestailleur
2629119365 Fix missing defaultvalue 2025-08-17 17:12:54 +02:00
ldestailleur
2a9f9960f0 Fix warnings 2025-08-17 17:03:55 +02:00
ldestailleur
17cf416489 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-17 16:58:43 +02:00
ldestailleur
b188c89f74 NEW Add the "Dispute status" in list of invoice. 2025-08-17 16:58:29 +02:00
Frédéric FRANCE
8e0b1eb606 fix object reference (#34928)
* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* merge

* fix doc

* fix doc

* fix doc

* fix doc

* fix doc

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-17 16:32:09 +02:00
ldestailleur
1f8486611c Better log 2025-08-17 16:29:03 +02:00
ldestailleur
4dd00f5370 Disable a test that may be wrong to manage charge back 2025-08-17 16:25:21 +02:00
ldestailleur
2d97709644 Fix var name 2025-08-17 16:22:21 +02:00
ldestailleur
2ebb814b67 More logs 2025-08-17 16:14:36 +02:00
ldestailleur
b1b1504111 Enhance the stripe IPN on dispute 2025-08-17 16:10:14 +02:00
ldestailleur
c041ce5f41 Add field dispute_status to follow invoice in dispute mode 2025-08-17 16:06:28 +02:00
ldestailleur
ff5fd02913 Clean code to fix CI 2025-08-17 13:19:24 +02:00
ldestailleur
82d477f4df Fix CI 2025-08-17 04:02:17 +02:00
ldestailleur
8aa82857f0 Fix depraceted var 2025-08-17 03:56:48 +02:00
ldestailleur
4aea1c00c8 Fix CI 2025-08-17 03:48:43 +02:00
ldestailleur
225b839e71 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-17 03:46:15 +02:00
ldestailleur
f07206b6c0 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-17 03:45:53 +02:00
ldestailleur
9ccede6c90 Removed the deprecated array $MAP_ID_TO_CODE that was a duplicate of
array "array_flip($categ->MAP_ID)"
2025-08-17 03:45:36 +02:00
ldestailleur
9c9e5de7c8 FIX trigger mailmanspip when un/linking categories 2025-08-17 03:45:18 +02:00
ldestailleur
f436a1da0b Clean code comment 2025-08-17 02:29:45 +02:00
ldestailleur
2d848e5512 Parameters $maxlen and $notooltip of Contract have been inverted to
follow the standard.
2025-08-17 02:20:52 +02:00
Frédéric FRANCE
1c6a40acbe Contact statut -> status (#34968)
* deprecate contact statut for status

* deprecate contact statut for status

* fix

* fix
2025-08-17 02:00:29 +02:00
github-actions[bot]
a51d9d2398 PHPStan > Update baseline (#34980)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-17 01:58:28 +02:00
Frédéric FRANCE
83259d9ddc clean code (#34979) 2025-08-17 01:58:17 +02:00
ldestailleur
5e7d50a312 Add option PDF_PURCHASE_INVOICE_HIDE_PRICE_EXCL_TAX and
PDF_PURCHASE_INVOICE_SHOW_PRICE_INCL_TAX
2025-08-17 01:56:53 +02:00
ldestailleur
86e10756f9 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-17 01:54:38 +02:00
ldestailleur
d74fa57b6c NEW Add option PDF_PURCHASE_INVOICE_HIDE_VAT 2025-08-17 01:54:28 +02:00
Frédéric FRANCE
c6b8f88f18 clean code (#34977) 2025-08-17 01:47:48 +02:00
ldestailleur
8d5c3b1246 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-17 01:45:46 +02:00
ldestailleur
01d168afb7 Add doc comment, and add field date_reception in commande_fournisseur
for #34975
2025-08-17 01:45:34 +02:00
Frédéric FRANCE
b8561b40d1 fix conf global replacement (#34972) 2025-08-17 01:29:53 +02:00
Frédéric FRANCE
73c1868384 typo in doc (#34976) 2025-08-17 01:29:01 +02:00
ldestailleur
a9c827d811 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-08-17 01:08:10 +02:00
ldestailleur
01861c26b9 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-16 22:14:47 +02:00
ldestailleur
273e82a566 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-16 22:14:23 +02:00
ldestailleur
677e5a7cb9 Fix css and missing replyto into the banner 2025-08-16 21:59:41 +02:00
ldestailleur
f2e5ce6bf5 Trans 2025-08-16 21:13:42 +02:00
ldestailleur
3a6b0f5853 css 2025-08-16 21:10:29 +02:00
Laurent Destailleur
6fd796d5bf NEW More information on the user credential section 2025-08-16 05:22:04 +02:00
Laurent Destailleur
6cf4174b22 Prepare to allow management of different credentials 2025-08-16 04:21:40 +02:00
Laurent Destailleur
21f6e25242 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-16 03:07:16 +02:00
Laurent Destailleur
1487a1fd72 Fix warning 2025-08-16 03:06:44 +02:00
Frédéric FRANCE
98e9dc2e47 add doc (#34950) 2025-08-16 02:41:48 +02:00
Laurent Destailleur
2931aad17e Fix CI 2025-08-16 02:14:52 +02:00
ldestailleur
c8e1749d5a Trans 2025-08-15 19:05:34 +02:00
ldestailleur
ad61c9312a Trans 2025-08-15 18:57:53 +02:00
ldestailleur
a49e11c7b8 Debug v23 2025-08-15 18:50:26 +02:00
ldestailleur
e8d4ef4115 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-15 18:46:02 +02:00
ldestailleur
ee52d31f18 NEW On invoice, show also nb of credit notes notyet converted for
consumption
2025-08-15 18:43:58 +02:00
ldestailleur
e54ff79f42 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-15 17:35:04 +02:00
ldestailleur
cafd255b0c Fix warning 2025-08-15 17:34:54 +02:00
Frédéric FRANCE
e98fc8feb9 deprecate contact statut for status (#34967) 2025-08-15 17:31:44 +02:00
Frédéric FRANCE
51034c05f9 clean code (#34966) 2025-08-15 17:31:07 +02:00
Francis Appels
765a576bae FIX: Create public ticket if email need exist. (#34965) 2025-08-15 17:30:09 +02:00
github-actions[bot]
ab546b123f PHPStan > Update baseline (#34963)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-15 17:28:33 +02:00
Frédéric FRANCE
18ddceb65f fix doc (#34962)
* fix doc

* ref_client doesn't exists on Ticket

* no lines in Ticket
2025-08-15 17:28:21 +02:00
Frédéric FRANCE
03c6352505 clean code (#34961) 2025-08-15 17:27:37 +02:00
Frédéric FRANCE
fd970ed5a9 add doc (#34960) 2025-08-15 17:27:18 +02:00
hermans
1fb37db6f6 Bug Fix for issue 34898, default warehause and obj->endbrowid not exist on receipt.class (#34959)
* bug fix for: https://github.com/Dolibarr/dolibarr/issues/34939

* Bug fix for: Dolibarr Issue #34939

* Revert "bug fix for: https://github.com/Dolibarr/dolibarr/issues/34939"

This reverts commit bd4c1ccc41.

* Revert "Bug fix for: Dolibarr Issue #34939"

This reverts commit 8e46f863b9.

* Bug fix for issue https://github.com/Dolibarr/dolibarr/issues/34898

* fix bug on reception setClosed: ->edbrowid is not exist

* Fix missing variable for obj->endbrowid in etDraft,valid,setClosed

* fix white space

* remove white space
2025-08-15 17:26:39 +02:00
ldestailleur
4edb50855f Enhance datapoliciy module 2025-08-15 17:20:28 +02:00
ldestailleur
478245a138 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-15 16:05:16 +02:00
ldestailleur
f4ae5136c8 Debug v23 2025-08-15 16:05:05 +02:00
ldestailleur
aee08051c8 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-15 15:54:35 +02:00
ldestailleur
d7b7149425 Fix trans 2025-08-15 15:48:41 +02:00
Frédéric FRANCE
e2fea4b17a fix doc (#34958) 2025-08-15 00:14:30 +02:00
Frédéric FRANCE
980b50dd8d add doc (#34956) 2025-08-15 00:14:05 +02:00
Frédéric FRANCE
90a45830a1 fix v22 (#34957)
* fix v22

* Update extrafields_view.tpl.php
2025-08-14 19:27:52 +02:00
Frédéric FRANCE
905ee464eb add doc and fix CI (#34955)
* add doc

* fix

* fix

* fix
2025-08-14 19:27:14 +02:00
Frédéric FRANCE
515fc47422 can insert import_key at order create (#34954)
* can insert import_key at order create

* Update commande.class.php
2025-08-14 19:11:03 +02:00
Frédéric FRANCE
110ff324da fix doc (#34953) 2025-08-14 19:08:56 +02:00
Frédéric FRANCE
6b4ec088cf fix doc (#34952) 2025-08-14 19:08:12 +02:00
github-actions[bot]
b362abdd43 PHPStan > Update baseline (#34951)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-14 19:07:42 +02:00
Frédéric FRANCE
e0f1a334e2 add doc (#34949) 2025-08-14 19:06:00 +02:00
HENRY Florian
e3953f684b fix: with MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS and multicompany image are not find on send mail (#34946) 2025-08-14 19:03:37 +02:00
ldestailleur
275040b2cb Doc 2025-08-14 17:51:49 +02:00
ldestailleur
b1e99a9811 Fix bad return code 2025-08-14 17:33:44 +02:00
ldestailleur
feeaf19e6d Debug the signature feature (broken) for shipment 2025-08-14 16:24:53 +02:00
ldestailleur
b0d218c1c6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-14 15:26:45 +02:00
ldestailleur
54439b6fcd Clean code 2025-08-14 15:26:32 +02:00
ldestailleur
4b9ebb0e6a Fix #26682 and complete #34396 2025-08-14 15:26:13 +02:00
ldestailleur
aab6d0085d Fix bad tab 2025-08-14 14:51:21 +02:00
hermans
7f64095048 Bug fix on fourniseur commande kanban view (#34945)
* bug fix for: https://github.com/Dolibarr/dolibarr/issues/34939

* Bug fix for: Dolibarr Issue #34939

* Revert "bug fix for: https://github.com/Dolibarr/dolibarr/issues/34939"

This reverts commit bd4c1ccc41.

* Revert "Bug fix for: Dolibarr Issue #34939"

This reverts commit 8e46f863b9.
2025-08-14 13:52:32 +02:00
Frédéric FRANCE
73e5f5dcb3 add phpdoc (#34948) 2025-08-14 13:51:35 +02:00
Francis Appels
90bc3d74e7 FIX mailing destination list title (#34929)
* Fix mailing destination list title

* Some more fix on checkbox column

* $conf->main_checkbox_left_column is available in V21.0.3

* Right selector has less option the left selector.

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 13:50:53 +02:00
thomasjulie
997e548a58 NEW We added a hook to allow us to modify the Prospect Customer drop down… (#25635)
* We added a hook to allow us to modify the Prospect Customer drop down list in Third Party

* modification of the hook on third party card and adding hooks on third party list

---------

Co-authored-by: root <root@dolibarr17.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 05:06:18 +02:00
Laurent Destailleur
2d8a187e5d Debug v23 2025-08-14 04:46:03 +02:00
Laurent Destailleur
7c917ef07c Trans 2025-08-14 04:34:26 +02:00
Charlène Benke
9019e10971 NEW Display company logo on kanban view (#34520)
* Display company logo on kanban view

(like product)

* Update societe.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 04:32:31 +02:00
Lucas Marcouiller
cbd600ec8c NEW Add a page to edit http security headers of application (#34941)
* New main http security headers page

* fix CI

* Fix CI

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 04:06:11 +02:00
Francis Appels
5ee1d43db0 FIx virtual stock when stock decrease on invoice validate. (#34925)
* FIx virtual stock when stock decrease on invoice validate if product in invoice but not in linked order.

* $this->db->prefix()

* Replace join by exists

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 03:52:03 +02:00
MDW
df40738195 Qual: Use new phan output target "github" (#34943)
# Use new phan output target "github"

Using checkstyle is no longer needed, "github" is now available as an
output printer.
This PR uses that, cs2pr is no longer needed.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 03:34:22 +02:00
MDW
9c4aa4aea7 Qual: Update phan baseline (#34944)
# Qual: Update phan baseline

Remove solved exceptions from the phan baseline.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 03:33:36 +02:00
Francis Appels
3c174ef95c Fix webportal search by date (#34934)
* Webportal fix search by date

* Webportal formlist - add sortList to parameters hook printFieldListTitle

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 01:49:49 +02:00
ldestailleur
0722a11e25 Fix versions detection of phan 2025-08-14 01:48:19 +02:00
ldestailleur
4a13db91e7 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-14 01:41:57 +02:00
ldestailleur
e1732a675e Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-14 01:41:49 +02:00
seyfcom
dec921a29f fix undefine $line with php 8.1 (#34938)
Co-authored-by: Audio Media Assist sarl <licences@a-m-a.ch>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 01:38:01 +02:00
seyfcom
5ae7f53ef4 fix undefine $line with php 8.1 (#34938)
Co-authored-by: Audio Media Assist sarl <licences@a-m-a.ch>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-14 01:37:44 +02:00
ldestailleur
c337f5943b Fix translation files 2025-08-14 01:37:06 +02:00
ldestailleur
a9a0aaec41 Add phan version 2025-08-14 01:14:33 +02:00
ldestailleur
c339254a6b Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-14 00:54:22 +02:00
ldestailleur
2c2f085b5c FIX #34936 2025-08-14 00:49:56 +02:00
Frédéric FRANCE
ccafcd6f91 fix CI v22 (#34935)
* fix CI v22

* Update admin.lang
2025-08-14 00:32:56 +02:00
ldestailleur
c407609695 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-14 00:28:39 +02:00
ldestailleur
7c710a91d7 Sync transifex 2025-08-14 00:24:14 +02:00
ldestailleur
0804ebe08a Fix type 2025-08-14 00:14:04 +02:00
ldestailleur
c4ca358e25 Debug v23 2025-08-13 23:36:17 +02:00
ldestailleur
cda2717155 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-13 19:54:21 +02:00
ldestailleur
300928b2c8 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-13 19:53:27 +02:00
ldestailleur
6d564c0e43 Fix use same encoding for all strings in email ack of payment. 2025-08-13 19:53:16 +02:00
ldestailleur
447f9f1ea6 Fix use same encoding for all strings in email ack of payment. 2025-08-13 19:51:27 +02:00
ldestailleur
d4ee3a2122 Doc 2025-08-13 18:51:45 +02:00
ldestailleur
fcd4150696 Fix size of image popup for small images 2025-08-13 15:37:46 +02:00
ldestailleur
b016944824 Fix status colors 2025-08-12 18:10:55 +02:00
ldestailleur
66e420bc9d FIX Can edit status of tasks 2025-08-12 18:01:34 +02:00
ldestailleur
b9230e00c0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-12 13:48:48 +02:00
ldestailleur
7572a8966d Trans 2025-08-12 13:46:32 +02:00
ldestailleur
44a3d9d544 Sync transifex 2025-08-12 13:37:33 +02:00
ldestailleur
21a2e051bf Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-12 13:31:26 +02:00
ldestailleur
733cbff07a Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-12 13:31:21 +02:00
ldestailleur
e545d224db Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-12 13:29:33 +02:00
ldestailleur
a9c07569fb FIX Logo on company is no more visible. 2025-08-12 13:28:56 +02:00
ldestailleur
7f6faf309d Clean removed permissions 2025-08-12 05:23:39 +02:00
Lucas Marcouiller
74fee3403d Fix webhook trigger history implementation (#34748)
* Fix webhook trigger hioistory implementation

* add lang + fix Ci

* fix Ci

* fix CI

* add param comment

* Fix CI

* Fix CI

* try fix CI

* Fix CI phan

* fix phan

* fix phan

* fix CI

* fix CI

* Fix phpstan

* fix stan

* fix stan on,card

* fix CI

* Update admin.lang

* Update admin.lang

* Fix CI

* fix CI

* Fix permissions of webhook + Webhook trigger history tooltip

* Fix CI

* fix php-stan=

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-12 05:18:23 +02:00
ldestailleur
a6627d7612 Add entity in llx_webhook_target table - #34748 2025-08-12 04:54:55 +02:00
ldestailleur
2fc3101388 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-12 04:14:12 +02:00
ldestailleur
1da6ead1e9 Try to FIX #34880 FIX #34910 differently because in higher version the
retained var is totalpaid and not sumpayed.
2025-08-12 04:14:02 +02:00
ldestailleur
2427553211 The property $sumpayed (duplicate of $totalpaid), $sumdeposit
(duplicate of $totaldeposits) and $sumcreditnote (duplicate of
$totalcreditnotes) has been removed (there are replaced with the
property that was a duplication of (same for $sumpayed_multicurrency,
$sumdeposit_multicurrency, $sumcreditnote_multicurrency).
2025-08-12 04:08:38 +02:00
Laurent Destailleur
a89bfc09cb Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-12 02:03:44 +02:00
Laurent Destailleur
05d0edd994 Fix html tag balance 2025-08-12 02:03:07 +02:00
ldestailleur
bb27ff9707 Clean code 2025-08-11 19:48:03 +02:00
ldestailleur
ddbe0427b7 Doc 2025-08-11 19:36:44 +02:00
ldestailleur
85076f856b Picto 2025-08-11 19:19:30 +02:00
ldestailleur
4a66837536 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-11 19:15:03 +02:00
Charlène Benke
aac2ff7b5b add ticket on list document by api (#34909) 2025-08-11 19:09:12 +02:00
Frédéric FRANCE
0bb025a733 clean code (#34913)
* clean code

* Update box_funnel_of_prospection.php

* Update box_funnel_of_prospection.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-11 19:05:21 +02:00
ldestailleur
3ac1e54b29 Add error code in message 2025-08-11 19:05:05 +02:00
Lucas Marcouiller
c74080f689 Fix phan and stan errors in develop (#34917)
* FIx phan and stan errors

* fix stan

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-11 19:03:02 +02:00
Frédéric FRANCE
69b3235b3f clean code (#34916) 2025-08-11 18:46:09 +02:00
Frédéric FRANCE
cc0a0e7492 clean code (#34915) 2025-08-11 18:44:58 +02:00
Frédéric FRANCE
f05353705e clean code (#34914) 2025-08-11 18:44:25 +02:00
ldestailleur
4155233ad6 Fix warning 2025-08-11 18:43:02 +02:00
ldestailleur
e4c023b3c4 Clean setup pages 2025-08-11 15:14:16 +02:00
ldestailleur
cebc46c42a Make setup of pdf concat easier on proposal and order setup 2025-08-11 15:01:31 +02:00
ldestailleur
d5db70b887 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-11 12:29:20 +02:00
ldestailleur
4dac3ac7d1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-11 12:28:55 +02:00
ldestailleur
f27f265271 CSS 2025-08-11 12:28:46 +02:00
ldestailleur
c083499a35 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-11 03:38:57 +02:00
ldestailleur
f77be4a072 CSS 2025-08-11 03:38:45 +02:00
Laurent Destailleur
d4469f34e0 Fix error message 2025-08-11 00:26:19 +02:00
Laurent Destailleur
654d3eda8a Fix error message 2025-08-11 00:25:37 +02:00
Laurent Destailleur
6d66e46cef Fix must show "no line message" if nothing found 2025-08-10 20:45:34 +02:00
ldestailleur
5671ef55ff NEW Add event when installing a module in the security event list. 2025-08-10 19:30:58 +02:00
ldestailleur
80d269f24d NEW Show the link to download the zip of a module on module setup 2025-08-10 17:18:25 +02:00
ldestailleur
0957ad7dab Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-10 16:11:41 +02:00
ldestailleur
f667d5a5a6 Fix missing token 2025-08-10 16:11:16 +02:00
ldestailleur
34ef499da4 Clean code 2025-08-10 12:17:50 +02:00
ldestailleur
92542ac528 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-10 12:02:27 +02:00
ldestailleur
9153a938ed NEW Add the widget funnel of opportunities 2025-08-10 12:01:27 +02:00
Yamil Esteban Garcia
2823b9d0d6 Modifications made to allow search by EAN even when selecting in the product variants module to hide product variants #34567 (#34612)
* Error: When creating an invoice for a supplier order with a negative value #30516

Error: When creating an invoice for a supplier order with a negative value #30516

* Update html.form.class.php

Modifications made related to the issue
Search for variants by EAN #34567

* Update html.form.class.php

I change :

if(getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')){
with
if (getDolGlobalString('SEARCH_VARIANTS_OF_EAN13')) {

and 

SEARCH_VARIANTS_OF_EAN13
into
PRODUIT_ATTRIBUTES_HIDECHILD_BUT_ALLOW_SEARCH_IN_EAN13

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

* Update html.form.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-10 10:31:26 +02:00
ldestailleur
0f69530cb4 Fix phpstan rules 2025-08-10 03:52:56 +02:00
ldestailleur
aa0e5c57a0 Fix CI 2025-08-10 03:49:12 +02:00
ldestailleur
1ae767d8a6 Fix warnings 2025-08-10 03:42:27 +02:00
ldestailleur
7cbe50d926 More complete phpstan rule 2025-08-10 03:35:30 +02:00
ldestailleur
6bcc159d8a Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-10 03:29:25 +02:00
ldestailleur
2ab75ef240 Fix CI 2025-08-10 03:23:46 +02:00
ldestailleur
aca71e1573 Standardize code 2025-08-10 03:22:19 +02:00
ldestailleur
8dbd59a71b Look and feel v23 - Add an arrow back to module page 2025-08-09 20:44:30 +02:00
ldestailleur
1ac9179323 NEW Enhanced layout feature for emailing 2025-08-09 19:39:03 +02:00
ldestailleur
f852e32393 Rename the route 2025-08-09 17:37:48 +02:00
ldestailleur
3313e34797 Fix deprecated var 2025-08-09 17:31:27 +02:00
ldestailleur
20805044b6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-09 17:30:54 +02:00
ldestailleur
8fb9ca9488 Fix deprecated var 2025-08-09 17:30:28 +02:00
Charlène Benke
025e478945 bank api : add direct fetch on accountline (#34885)
* bank api : add direct fetch on accountline

* Update api_bankaccounts.class.php

* Update api_bankaccounts.class.php

* Update api_bankaccounts.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-09 17:28:55 +02:00
ldestailleur
ab700b1601 Removed a TODO to add a DDOS protection 2025-08-09 17:27:40 +02:00
ldestailleur
2bdf8b7d07 Fix warnings 2025-08-09 17:15:50 +02:00
ldestailleur
dc0e28d9c5 Removed not valid copyright line (missing email, name and date) 2025-08-09 17:13:57 +02:00
ldestailleur
598ce78b06 Fix warning 2025-08-09 17:10:42 +02:00
ldestailleur
929dbe94e7 Fix CI warnings 2025-08-09 16:53:09 +02:00
ldestailleur
117548cc31 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-09 16:24:05 +02:00
ldestailleur
963beef90f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-09 16:23:50 +02:00
ldestailleur
0ad2e968e8 Doc 2025-08-09 16:23:39 +02:00
ldestailleur
d194130ee1 Add missing trigger 2025-08-09 16:21:06 +02:00
Pichinov-Valentin
ea4c964ed8 Add messaging to ordersupplier and fix info.php (#34900)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-09 15:30:43 +02:00
Regis Houssin
9666a96d8c FIX #34893 (#34897)
* FIX #34893

* FIX change error code to USERNOTALLOWEDTOCHANGEPASS
2025-08-09 15:19:02 +02:00
Frédéric FRANCE
170c44317b clean code (#34899)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-09 15:18:46 +02:00
Frédéric FRANCE
403d8cc38a fix CI v22 (#34902)
* fix CI v22

* Update test.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-09 14:55:11 +02:00
ldestailleur
f786f30c26 Doc 2025-08-09 14:54:54 +02:00
ldestailleur
b13b1a7666 Doc duplicate line 2025-08-09 14:52:47 +02:00
ldestailleur
9c47f00a81 Fix warnings 2025-08-09 14:29:47 +02:00
ldestailleur
50e4e9fa2f Fix warnings 2025-08-09 14:27:52 +02:00
ldestailleur
7506fd006e Fix CI 2025-08-09 14:24:59 +02:00
ldestailleur
c1944d9224 Fix CI warning 2025-08-09 14:18:14 +02:00
ldestailleur
4f0c24aedc Fix warning 2025-08-09 14:14:59 +02:00
ldestailleur
a23e79f081 Fix warning 2025-08-09 14:12:23 +02:00
ldestailleur
27e96b88b3 Fix warning 2025-08-09 14:11:29 +02:00
ldestailleur
12743f30e4 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-09 14:09:21 +02:00
ldestailleur
1390c34a23 Fix CI 2025-08-09 14:02:49 +02:00
ldestailleur
1ddf739183 Fix CI 2025-08-09 13:56:11 +02:00
ldestailleur
f33cc75ead Fix CI 2025-08-09 13:52:31 +02:00
ldestailleur
bbc3c061c0 Fix CI 2025-08-09 13:29:53 +02:00
ldestailleur
92a2c2a2e0 Fix CI 2025-08-09 13:27:23 +02:00
ldestailleur
04241d4f83 Fix trans 2025-08-09 13:21:49 +02:00
ldestailleur
5cec27525e Fix CI 2025-08-09 13:18:29 +02:00
ldestailleur
e33ae1afef Fix look and feel v22 (must use formconsumeproduce for action form) 2025-08-09 13:14:48 +02:00
ldestailleur
9cbeff83a4 FIX Test on mandatory product or thirdparty barcode 2025-08-09 11:46:41 +02:00
ldestailleur
53ee283828 Solve hang on setup page when the dns_get_record call is blocked by the
firewall.
2025-08-08 23:11:56 +02:00
ldestailleur
6ad20950a7 Fix trans 2025-08-08 15:59:02 +02:00
ldestailleur
35d52b0fb2 Add a field format to allow a different format per line in the
blockedlog.
2025-08-08 15:35:42 +02:00
ldestailleur
a0b3a9b0da Fix missing load lang 2025-08-08 12:55:18 +02:00
ldestailleur
0707ff5130 FIX bad consistency on test on permission to disable service 2025-08-08 12:15:46 +02:00
ldestailleur
b34d7ec086 FIX Missing a column on group permissions 2025-08-08 12:15:41 +02:00
ldestailleur
3c0ecfc916 FIX bad consistency on test on permission to disable service 2025-08-08 12:15:17 +02:00
ldestailleur
ec337a8847 FIX Missing a column on group permissions 2025-08-08 12:03:34 +02:00
ldestailleur
48ae4d4a10 Drop deprecated column egroupware_id 2025-08-08 11:35:03 +02:00
ldestailleur
394bde1da1 Clean code 2025-08-08 02:43:36 +02:00
ldestailleur
9a66d14c80 Fix remove non expected column 2025-08-08 01:28:02 +02:00
ldestailleur
556959e824 Fix remove non expected column 2025-08-08 01:27:28 +02:00
ldestailleur
dea09e6e36 Clean code 2025-08-08 01:03:34 +02:00
ldestailleur
3abad41f87 Clean code 2025-08-07 23:50:05 +02:00
ldestailleur
4252d54268 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-07 20:03:42 +02:00
ldestailleur
040f67e393 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-07 20:03:30 +02:00
ldestailleur
c2f5830cd5 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-07 20:02:26 +02:00
Florian Mortgat
0e7770dc71 FIX: extrafields of type "int" not displayed on projet/tasks.php (#34896)
+ fix warning "Undefined variable $object"
2025-08-07 20:01:06 +02:00
Florian Mortgat
2c073b37c0 FIX DA026536: missing <br> in automatic e-mail (#34895)
* FIX DA026536: missing <br> in automatic e-mail

* Update ticket.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-07 19:51:24 +02:00
ldestailleur
944c47c876 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-07 19:31:18 +02:00
kkhelifa-opendsi
e85e15b4fd FIX - The test for fetch the third party is not necessary because the thirdparty is not required on a event and it's not required for send the reminder by email to the user. (#34731)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-07 16:22:35 +02:00
ldestailleur
15681e8bd5 Duplicate lines 2025-08-07 16:18:46 +02:00
ldestailleur
ec669eef2a Duplicate lines 2025-08-07 16:18:45 +02:00
ldestailleur
990462fb9a Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-07 16:18:25 +02:00
ldestailleur
30e262fd2d Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-07 16:17:24 +02:00
ldestailleur
c064540d4b Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-08-07 16:17:11 +02:00
ldestailleur
18109e8ba5 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-08-07 16:15:25 +02:00
ldestailleur
364cd0042c Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-08-07 16:15:18 +02:00
ldestailleur
1b59bcfadb Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-08-07 16:14:17 +02:00
ldestailleur
347bf3e4d6 Merge branch '16.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-08-07 16:14:00 +02:00
Frédéric FRANCE
ba09a8ee84 add trigger prefix in reception class (#34888)
* add trigger prefix in reception class

* add trigger prefix in reception class

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-07 15:54:21 +02:00
ldestailleur
267871e805 Prepare code for simplification 2025-08-07 15:26:57 +02:00
HENRY Florian
5024aee975 fix: with MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS and multicompany image are not find on send mail (#34894) 2025-08-07 14:42:20 +02:00
ldestailleur
c7edb6af2f Fix CI warnings 2025-08-07 14:38:30 +02:00
ldestailleur
eb14f15a5c Fix undef var in CLI context 2025-08-07 13:58:03 +02:00
ldestailleur
06991a4e85 Fix undef var in CLI context 2025-08-07 13:50:47 +02:00
ldestailleur
3af041a5b2 Standardize code 2025-08-07 13:42:11 +02:00
ldestailleur
567b60765e NEW User/Date in the Follow tab are more condensed. 2025-08-07 13:19:18 +02:00
ldestailleur
a19aaf8aa7 Fix debug 2025-08-07 12:32:54 +02:00
Pichinov-Valentin
49a6995fa1 NEW(propal): Add messaging and agenda features to proposals (#34883) 2025-08-07 12:28:09 +02:00
Joachim Kueter
da56360404 Fix for issue #34891 - wrong Skonto/Escompte calculation (#34892)
When foreign currency is involved, the wrong total was used, mixing two currencies when calculating the sum.
2025-08-07 12:25:59 +02:00
ldestailleur
9bd8fe4e46 Update currency 2025-08-07 12:22:42 +02:00
kollibar
13767a614d [NEW] Add function to split a discount in 2 by API REST (#34786)
* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

* Revert "Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :"

This reverts commit 80e67e665a.

* Correction for the generation of the bankjournal for a payment for different third parties party (in case of payment multi third partie is active, ie option "Allow payments on different third parties bills but same parent company" = true).

correction for the bug issue https://github.com/Dolibarr/dolibarr/issues/34755

* Revert "Correction for the generation of the bankjournal for a payment for different third parties party (in case of payment multi third partie is active, ie option "Allow payments on different third parties bills but same parent company" = true)."

This reverts commit 12ccfa60fa.

* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

(Sorry for the 2 failed pull request: I'm begginer in use of git)

* Revert "Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :"

This reverts commit 6fb35a6d2e.

* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

(Sorry for the 2 failed pull request: I'm begginer in use of git)

* correction commit for phan

* Correction for Travis CI

* I forgot to correct a line

* Correction for phpcs

* ajout d'un test si la requete sql de recherche d'un total pour la ligne échoue

* activation of this fix only if option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on

* spelling correction in comment that don't pass pre-commit check

* trailing whitespace forget

* Add function to split a discount in 2 by API REST

* correction for phan & php-stan

* correction for phan & php-stan

* correction for phan & php-stan

* Update api_thirdparties.class.php

* Update api_thirdparties.class.php

* Update api_thirdparties.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 23:11:10 +02:00
Maxime Kohlhaas
43227d215f Fix : missing value in form of new birth field (#34874)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 22:18:05 +02:00
Frédéric FRANCE
944cc36b9c clean code (#34886)
* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 22:01:32 +02:00
Maxime Kohlhaas
b3a2257638 Fix : contract line activation error when duration not defined (#34813)
* Fix : contract line activation error when duration not defined

* Fix of fix

* Update card.php

---------

Co-authored-by: x <x@x.x>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 21:22:47 +02:00
ldestailleur
5599b72603 Fix CI 2025-08-06 20:44:25 +02:00
ldestailleur
08c868e041 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-06 20:22:46 +02:00
ldestailleur
6b25d7d69c Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-06 20:22:26 +02:00
ldestailleur
7e4c46c838 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-06 20:22:00 +02:00
ldestailleur
a15eb33719 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-06 20:21:50 +02:00
ldestailleur
2a91c86d12 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-06 20:21:31 +02:00
ldestailleur
bd999c21a2 Fix CI 2025-08-06 19:49:31 +02:00
HENRY Florian
91e88af806 fix: backport fix PR #34833 for next version (#34884) 2025-08-06 19:40:20 +02:00
ldestailleur
1d61cd75f2 Fix CI 2025-08-06 19:39:58 +02:00
Frédéric FRANCE
e95235b977 clean code (#34882)
* clean code

* clean code

* clean code

* clean code

* clean code
2025-08-06 19:25:15 +02:00
ldestailleur
f54e684e98 Fix trans 2025-08-06 19:22:22 +02:00
ldestailleur
d03af36d95 Fix use of const trigger to avoid compatibility pb in future. 2025-08-06 19:08:01 +02:00
ldestailleur
285e697e6c Doc on TRIGGER_PREFIX 2025-08-06 18:47:21 +02:00
ldestailleur
8bf946dab0 Doc on TRIGGER_PREFIX 2025-08-06 18:47:18 +02:00
ldestailleur
e06e53a2b2 Fix color on graph and label in legend 2025-08-06 17:49:07 +02:00
ldestailleur
635e010cd6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-06 16:46:17 +02:00
ldestailleur
4c05d48117 NEW Save the BAN and RUM for SEPA into database not just file. 2025-08-06 16:45:53 +02:00
Laurent Destailleur
1a3397071f fix: dev/examples/zapier/package.json to reduce vulnerabilities (#34877)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-FORMDATA-10841150

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-08-06 15:35:08 +02:00
ldestailleur
539761c90e Fix CI 2025-08-06 14:37:01 +02:00
ldestailleur
829054a653 Fix phan error 2025-08-06 14:30:59 +02:00
ldestailleur
fe8c21c2d4 Fix warnings 2025-08-06 13:46:55 +02:00
ldestailleur
2bd0ab34b4 Try to fix warning 2025-08-06 13:33:15 +02:00
ldestailleur
16e7c54947 Fix warnings 2025-08-06 13:19:01 +02:00
ldestailleur
96708d985b Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-06 12:47:55 +02:00
ldestailleur
da4b339641 Fix CI 2025-08-06 12:47:10 +02:00
ldestailleur
9e4eb43dbc Fix CI 2025-08-06 12:46:49 +02:00
ldestailleur
73a67e0ab2 Fix warnings 2025-08-06 12:45:49 +02:00
ldestailleur
a8173ff888 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-08-06 12:39:32 +02:00
ldestailleur
d0aa0df4f6 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-06 12:37:00 +02:00
Regis Houssin
618e455ca3 FIX avoid php warning with "$forceFullTextIndexation" (#34881)
* FIX avoid php warning, "$forceFullTextIndexation" not used in
"dol_add_file_process()" function, maybe deprecated ?

* FIX missing $forceFullTextIndexation parameter

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 12:33:08 +02:00
ldestailleur
86b0457d34 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-06 12:31:37 +02:00
ldestailleur
e7228fc213 Complete list of file for unalterable process. 2025-08-06 12:30:04 +02:00
Marc
1dbe6e579a FIX #34843 (#34875)
* FIX #34564

* FIX #34843

* Fix code formating

* Fix php-stan

* Code improvement

* Correcting formating

* Last correction (i hope!)
2025-08-06 12:12:09 +02:00
ldestailleur
26a020fae6 Fix CI 2025-08-06 12:10:08 +02:00
ldestailleur
aa376fe333 Try fix to solve pb with xml tag with MAIN_RESTRICTHTML_ONLY_VALID_HTML 2025-08-06 11:55:44 +02:00
Charlène Benke
9cef7814d1 php warning error (use old $conf->global ...) (#34879)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-06 04:23:56 +02:00
Laurent Destailleur
99ac7bcfa9 Fix prefix of table 2025-08-06 04:10:02 +02:00
ldestailleur
f4c0cfa4e3 Rewrite SQL to match Dolibarr best practices 2025-08-06 03:55:16 +02:00
ldestailleur
5a39714ce3 Enhance generation script 2025-08-06 02:40:21 +02:00
ldestailleur
8766b34dac Fix php warnings 2025-08-06 01:48:18 +02:00
ldestailleur
101f1f271f Clean code 2025-08-06 01:28:49 +02:00
ldestailleur
3298062561 Fix regression 2025-08-06 01:20:57 +02:00
ldestailleur
982850b160 Fix CI warning 2025-08-05 15:28:13 +02:00
ldestailleur
969f0315df Clean code 2025-08-05 13:47:44 +02:00
ldestailleur
866effcad2 Fix warnings 2025-08-05 13:25:18 +02:00
ldestailleur
3dbf9ad759 FIX Filter on the balance of leave 2025-08-05 13:06:26 +02:00
ldestailleur
48ddff1b2c FIX Filter on the balance of leave 2025-08-05 13:05:56 +02:00
ldestailleur
a06c0b444c Doc 2025-08-05 12:43:42 +02:00
ldestailleur
20d2bda9ae Fix holiday trans 2025-08-05 12:31:31 +02:00
ldestailleur
8cfc3d1306 Fix MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY 2025-08-05 12:20:46 +02:00
ldestailleur
af615ec603 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-08-05 12:20:17 +02:00
ldestailleur
1d00912fed Fix MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY 2025-08-05 12:19:53 +02:00
ldestailleur
9f8b3c863e Fix css 2025-08-05 03:04:22 +02:00
ldestailleur
ead55c3457 Fix left column of edit/select checkbox column 2025-08-05 03:00:35 +02:00
ldestailleur
f1d341238d Clean dev dir 2025-08-05 02:45:24 +02:00
ldestailleur
53683a6a3a FIX several minor troubles with modulebuilder 2025-08-05 02:44:52 +02:00
ldestailleur
22de4342ad FIX array for arrayofkeyval is lost in module builder edit of property 2025-08-05 01:04:58 +02:00
ldestailleur
ecf73afe86 FIX array for arrayofkeyval is lost in module builder edit of property 2025-08-05 01:04:22 +02:00
ldestailleur
86f5db7aa9 Fix better comaptibilty for extrafield email/mail 2025-08-05 00:45:00 +02:00
ldestailleur
eab3227ea0 Fix title missing in click tooltip 2025-08-05 00:08:56 +02:00
ldestailleur
59f20d914b Fix avoid to overwrite an alreayd pushed tag 2025-08-04 18:27:33 +02:00
Maxime Kohlhaas
1a4226ff64 NEW : add extrafield option "empty on clone" (#34866)
* NEW : add extrafield option "empty on clone"

* NEW : empty extrafield value on clone

* Fix : missing parameter in function call

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 16:48:11 +02:00
Maxime Kohlhaas
b954bc7386 New update country list (#34873)
* NEW : update country list

* Update llx_00_c_country.sql

* Update 22.0.0-23.0.0.sql

* Update llx_00_c_country.sql

* Update 22.0.0-23.0.0.sql

* Fix : forget to remove eec update after country list update

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 16:46:43 +02:00
ldestailleur
a486c64387 Move common trigger code into a dedicated file 2025-08-04 16:32:44 +02:00
ldestailleur
c1affcc070 Fix upgrade to v22 2025-08-04 15:08:15 +02:00
ldestailleur
30be3f9c49 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-04 14:58:04 +02:00
ldestailleur
80999ed6fd QUAL: Clean/Standardize hook response of hook printFieldListHaving 2025-08-04 14:57:44 +02:00
github-actions[bot]
c5c656a1ba PHPStan > Update baseline (#34871)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-04 14:12:12 +02:00
ldestailleur
1e386099ff Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-04 13:55:27 +02:00
ldestailleur
3b8df77a86 Clean code 2025-08-04 13:54:40 +02:00
Maxime Kohlhaas
edd2f599cc NEW : add company date birth (UI) (#34861)
* NEW : add company date birth (SQL structure)

* NEW : add company date birth (UI)

* Rename date_birth in birth

* Rename date_birth in birth (UI)

* Update societe.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 13:50:05 +02:00
ldestailleur
b0925c7e5f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-04 13:18:21 +02:00
ldestailleur
a132cabd4c Add upgrade for v23 2025-08-04 13:17:58 +02:00
Pichinov-Valentin
db1552e27d NEW Added Messaging and agenda tabs on order and shipments (#34859)
* feat: Messaging and agenda core modifications

* feat: Core modifications for messaging and agenda

* fix(expedition): Décris ici la correction ou l'ajout fait à card.php

* Update company.lib.php

---------

Co-authored-by: Lou31 <valentingrimal2@gmail.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 13:12:22 +02:00
sonikf
30b4796385 NEW: PDF Show customer balance on invoice date (#34800)
* NEW: PDF Invoice show customer balance

* NEW: PDF Invoice show customer balance

* NEW: PDF Invoice show customer balance

* NEW: PDF Invoice show customer balance

* NEW: PDF Invoice show customer balance

* NEW: PDF Invoice show customer balance

* fix pre-commit

* fix pre-commit

* fix pre-commit

* fix pre-commit

* fix pre-commit

* fix PhanPluginDuplicateExpressionAssignmentOperation

* fix PhanPluginDuplicateExpressionAssignmentOperation

* fix PhanPluginDuplicateExpressionAssignmentOperation

* fix Travis CI

* fix Travis CI

* fix Travis CI

* fix Travis CI

* fix Travis CI

* fix Travis CI

* remove global $db

* remove global $db

* remove global $db

* fix $multicurrency_tx (array<float>|float) in isset() is not nullable.

* fix $multicurrency_tx (array<float>|float) in isset() is not nullable.
2025-08-04 13:11:57 +02:00
ldestailleur
293b2b17d1 Doc 2025-08-04 13:06:33 +02:00
Maxime Kohlhaas
1692430ed4 NEW : update country list (#34865)
* NEW : update country list

* Update llx_00_c_country.sql

* Update 22.0.0-23.0.0.sql

* Update llx_00_c_country.sql

* Update 22.0.0-23.0.0.sql

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 12:24:42 +02:00
ldestailleur
17c48207c4 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-04 12:22:19 +02:00
ldestailleur
1477d95ada Fix warning 2025-08-04 12:22:10 +02:00
Artem Chernitsov
4d7c836e37 Fix multi-currency payments and holiday events in Agenda (#34821)
* fix calendar holiday link

* fix bug with multicurrency payments, change GETPOSTINT() to GETPOSTFLOAT() function

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 12:07:58 +02:00
ldestailleur
22c7da02e3 Doc 2025-08-04 12:06:44 +02:00
ldestailleur
de4bb424a6 Add region 2025-08-04 11:53:10 +02:00
ldestailleur
00101c0e9c Countries already as Regions not enabled by default 2025-08-04 11:46:16 +02:00
ldestailleur
6363022c6b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-08-04 11:17:18 +02:00
ldestailleur
24d2e83be1 Doc 2025-08-04 11:15:06 +02:00
Charlène Benke
7c3168e95a Add contact on list document api (#34864)
* Add contact on list document api

* Update api_documents.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 11:10:49 +02:00
Lenin Rivas
c67e5f70c0 Forever update user and date modified (#34862) 2025-08-04 11:08:53 +02:00
Maxime Kohlhaas
705e7a602b NEW : add company date birth (SQL structure) (#34854)
* NEW : add company date birth (SQL structure)

* Rename date_birth in birth

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-04 10:41:36 +02:00
ldestailleur
e9b50374d6 Add birth place 2025-08-04 10:40:52 +02:00
github-actions[bot]
af758b0bff PHPStan > Update baseline (#34863)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-08-04 10:36:13 +02:00
ldestailleur
b04c7c3fbd Doc 2025-08-04 05:38:31 +02:00
ldestailleur
b402bf6b19 Rename dir 2025-08-03 00:09:00 +02:00
ldestailleur
7eeef6b77a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-02 00:56:02 +02:00
ldestailleur
37afaf6bf8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-08-02 00:55:51 +02:00
Marc de Lima Lucio
24652ec722 FIX: asset: could not select invoice in disposal pop-in (#34725) 2025-08-02 00:50:07 +02:00
Maxime Kohlhaas
f16c550016 NEW : add hidden const to get response header in geturlcontent function (#34781) (#34824)
Co-authored-by: x <x@x.x>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:49:19 +02:00
noec764
cff91b03d2 FIX: SQL query too heavy (#34250)
* FIX: Too heavy sql query

* FIX: Add index in user table and update SQL for user::fetchall()

* FIX: Add also index on llx_user on migrate

---------

Co-authored-by: Noé <noe@scopen.fr>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:42:03 +02:00
atm-lucas
0c044c8349 NEW - Add a boolean for lines in api and $properties (#34293)
* Add a boolean for lines in api

* Upgrade
2025-08-02 00:35:16 +02:00
Clément
5e38c5ab38 FIX Bug isTimestamp (#34365)
* FIX Bug

* Update validate.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:32:48 +02:00
Marc de Lima Lucio
883933c73c QUAL: stop supporting old tab entries (#34377)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:28:48 +02:00
Aurélien BISOTTI
2635c20b53 NEW add shipping address to propal (#34441)
* Update pdf_cyan.modules.php

* Update pdf_other.php

* Update propal.lang

traduction en_us

* Update propal.lang

* Update propal.lang

pb de copié collé

* Update pdf_other.php

* Update pdf_other.php

removed blank space

* Update pdf_cyan.modules.php

remove blank space

* Update propal.lang

ajout PROPOSAL_SHOW_SHIPPING_ADDRESSMore

* Update propal.lang

add PROPOSAL_SHOW_SHIPPING_ADDRESSMore

* Update pdf_cyan.modules.php

test declaration variable shipp_shift

* Update pdf_cyan.modules.php

test declaration variable shipp_shift

* Update pdf_cyan.modules.php

shipp_shift

* Update pdf_cyan.modules.php

shipp_shift

* Update pdf_cyan.modules.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:26:39 +02:00
moreauftheobald
6bc70788ba replace $conf->module->XXX->gwarning_delay by new function getwarning… (#34452)
* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* Update card.php

update typo

---------

Co-authored-by: Theobald <f.moreau@theobald-groupe.com>
2025-08-02 00:25:41 +02:00
Chloe-Moreau-2009
bcbc940cb6 QUAL replace $conf->XXX->dir_output by getMultidiroutput (#34455)
* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

* replace $conf->XXX->dir output by GetMultidir0utput

---------

Co-authored-by: Theobald <f.moreau@theobald-groupe.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:25:10 +02:00
Florian Mortgat
e8cb259d05 NEW hook allowing external modules to replace the behavior of fetchObjectLinked() (#34724)
Note: if subclasses overload fetchObjectLinked, adding the same hook should be considered as well if deemed useful.
2025-08-02 00:21:53 +02:00
Frédéric FRANCE
eba8736515 fix #34792 (#34848)
* fix #34792

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-02 00:01:06 +02:00
Laurent Destailleur
b748bf1fc0 Fix warning 2025-08-01 19:49:07 +02:00
Maxime Kohlhaas
c0ad262944 FIX : main checkbox left column was before global conf (#34858) 2025-08-01 19:41:37 +02:00
Frédéric FRANCE
5029b95078 fix translation (#34855)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-08-01 19:38:21 +02:00
Laurent Destailleur
9793eb17df Fix warning 2025-08-01 19:11:25 +02:00
Laurent Destailleur
18089bbdb7 Fix case of ismultientitymanaged that is key@table 2025-08-01 18:49:05 +02:00
Laurent Destailleur
602b9c26ae Fix case of ismultientitymanaged that is key@table 2025-08-01 18:37:20 +02:00
Laurent Destailleur
e8a17bd1e3 Fix warning 2025-08-01 17:42:58 +02:00
Laurent Destailleur
6ff0a3c2d8 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-01 17:24:02 +02:00
ldestailleur
95ae04c26f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-01 14:53:46 +02:00
ldestailleur
50da1f64a0 Move tool 2025-08-01 14:53:33 +02:00
ldestailleur
c3106986f4 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-08-01 13:49:13 +02:00
ldestailleur
a75572db5c Fix preview of image in document tab of thirdparty. 2025-08-01 13:49:01 +02:00
Laurent Destailleur
8581d9a7b3 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-01 00:15:23 +02:00
Laurent Destailleur
179af48c51 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-08-01 00:14:43 +02:00
Sébastien NASSIET
73d7f755c1 NEW Add tpl loader for discounts.tpl.php (#34798)
* Add tpl loader for discounts.tpl.php

* Update card.php
2025-07-31 22:28:45 +02:00
Laurent Destailleur
d929240ed0 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-31 22:14:20 +02:00
Laurent Destailleur
82098594a6 Fix warning 2025-07-31 22:13:45 +02:00
atm-GregM
e081e3be33 NEW ADD Send mail for reception / Delivery (#34829)
* Send mail for reception

* back pre-commit

* empty reshook
2025-07-31 21:59:35 +02:00
Frédéric FRANCE
94ec228978 use same modulepart on card and document (#34834) 2025-07-31 21:58:26 +02:00
Frédéric FRANCE
9b071a5153 translation (#34832) 2025-07-31 21:55:47 +02:00
cephos
5d934fdcb3 Added Swiss KMU Accounting Plan (#34841)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-31 21:53:16 +02:00
github-actions[bot]
5a6654890c PHPStan > Update baseline (#34838)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-07-31 21:49:42 +02:00
Laurent Destailleur
d6e0d9ad34 Fix dolPrintHTML 2025-07-31 21:44:09 +02:00
Laurent Destailleur
f40649c068 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-31 21:17:24 +02:00
ldestailleur
499dd4a153 Trans 2025-07-30 16:39:22 +02:00
ldestailleur
be17a2a106 Debug 2025-07-30 16:34:34 +02:00
ldestailleur
bc1de6d6b8 Debug sql 2025-07-30 16:33:08 +02:00
ldestailleur
9b65140632 Debug v22 2025-07-30 16:25:21 +02:00
ldestailleur
871672983b Debug compare 2025-07-30 16:10:36 +02:00
ldestailleur
f9a867b294 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-30 15:43:22 +02:00
ldestailleur
7d3b88cc16 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-30 15:43:12 +02:00
ldestailleur
3db8ca05f0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-30 15:37:57 +02:00
ldestailleur
6ce78d0961 Debug v23 2025-07-30 15:37:44 +02:00
ldestailleur
423c52b07c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-30 15:11:32 +02:00
ldestailleur
974039423a Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-30 14:51:31 +02:00
boudet jean pascal
3b560cfa4a New add printFieldListWhere hook in checkmargin.php (#34828)
* add where hook on checkmargin.php

* remove global

* change hookName

* add rector

* clean code

* mend

---------

Co-authored-by: jpb <jean-pascal.boudet@atm-consulting>
2025-07-29 21:09:29 +02:00
Frédéric FRANCE
935c326eee Update box_produits.php (#34827) 2025-07-29 21:09:07 +02:00
Mohamed DAOUD
3fdc9de178 fix use delivery date (#34830) 2025-07-29 21:08:24 +02:00
Frédéric FRANCE
7f173724ef NEW can admin payments extrafields (#34822)
* add admin for payments extrafields

* add admin for payments extrafields

* add admin for payments extrafields

* add admin for payments extrafields

* add admin for payments extrafields
2025-07-29 13:51:58 +02:00
ldestailleur
0860e8886c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-29 13:36:43 +02:00
ldestailleur
bdddb38878 Debug v22 2025-07-29 13:36:33 +02:00
Sébastien NASSIET
f4c6e2495c Hook for getAvailableDiscounts (#34799)
* Update discount.class.php

Add a hook to change the sql request in function getAvailableDiscounts

* Update discount.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-29 13:25:07 +02:00
ldestailleur
8c155ab728 Fix warnings 2025-07-29 13:05:29 +02:00
ldestailleur
f9a72ba2ac Add info into database to track api or token usage 2025-07-29 12:51:42 +02:00
ldestailleur
c791ea205e Fix warnings 2025-07-29 12:33:49 +02:00
ldestailleur
31d8bbc75c Fix CI 2025-07-29 12:03:53 +02:00
ldestailleur
6d791919ea Fix CI 2025-07-29 11:49:03 +02:00
ldestailleur
af1948b681 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-29 11:34:16 +02:00
ldestailleur
d34e0b5305 Try fix CI 2025-07-29 11:04:32 +02:00
Laurent Destailleur
5cf504fa90 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-29 02:24:47 +02:00
Laurent Destailleur
835cb2b244 Debug v22 2025-07-29 02:22:20 +02:00
Laurent Destailleur
149869ca5b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-07-29 01:51:08 +02:00
Laurent Destailleur
f64848921c Fix regression on pass encryption in conf 2025-07-29 01:46:04 +02:00
Laurent Destailleur
53badefb2d Fix regression on pass encryption in conf 2025-07-29 01:14:42 +02:00
Laurent Destailleur
dc7ad394ab Add tool to unobfuscate conf file. 2025-07-29 00:22:06 +02:00
Laurent Destailleur
9fe51c656a Add tool to unobfuscate conf file. 2025-07-29 00:00:53 +02:00
ldestailleur
5ea9be671c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-28 18:42:58 +02:00
ldestailleur
d96d61d161 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-28 15:27:25 +02:00
ldestailleur
96e38e6584 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-27 14:03:22 +02:00
ldestailleur
7b8c2c5e9c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-26 13:16:15 +02:00
ldestailleur
cfba25b857 Total prices 2025-07-26 11:10:38 +02:00
ldestailleur
2f8b5b805f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-26 10:46:04 +02:00
iouston
03e4da4a42 Update holiday.lang (#34806) 2025-07-25 21:35:12 +02:00
Anthony Damhet
3399a6dad5 add links to home info-box (#34803) 2025-07-25 21:34:54 +02:00
Anthony Damhet
b66fd8daef UIUX Add titles to documentation (#34801) 2025-07-25 21:20:26 +02:00
ldestailleur
cd938aea5e Doc 2025-07-25 21:14:42 +02:00
ldestailleur
ea47bc4548 Doc 2025-07-25 21:05:33 +02:00
ldestailleur
7ea3c419aa Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-25 17:00:22 +02:00
ldestailleur
33301fa762 css 2025-07-25 10:17:01 +02:00
ldestailleur
1f1e41ae7f Parenthesis 2025-07-25 01:45:15 +02:00
ldestailleur
9d32a5218e Add log 2025-07-25 01:37:48 +02:00
ldestailleur
c4633cfe76 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-24 19:20:34 +02:00
ldestailleur
d66811e473 CSS 2025-07-24 19:20:24 +02:00
Lenin Rivas
14dd86d75d NEW Withholdingtax how VatRefund (#34649)
* Withholdingtax VatRefund

* Withholdingtax VatRefund

* Withholding save VatRefund

* Use $this->db->escape() label in Where

* Use GETPOSTFLOAT of resteapayer

* Fix Whitespace

* Update card.php

* Update card.php

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 19:18:06 +02:00
ldestailleur
c3fa113305 NEW Module datapolicy moved as stable (for anonimization features) 2025-07-24 18:34:17 +02:00
ldestailleur
7002897dab QUAL: Removed a not/never used table 2025-07-24 18:30:21 +02:00
ldestailleur
cc132ba9e5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-24 17:58:12 +02:00
ldestailleur
5157ae2bd6 Move action code to change ustomer at the good place. 2025-07-24 17:57:48 +02:00
Yannis Hoareau
7f7923c24f New: SQL for api rest tokens (#34671)
* feat: query to import old user token to new implement with perms

* feat: replaced sql migration file by php upgrade2

* feat: leave state field empty

* Update upgrade2.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 16:11:43 +02:00
ldestailleur
d8eebcafda Fix regression 2025-07-24 15:39:37 +02:00
ldestailleur
03165e5cae Remove duplicate definition table. 2025-07-24 14:42:45 +02:00
ldestailleur
ab8b4feca0 Enhance module datapolicy 2025-07-24 12:35:41 +02:00
ldestailleur
6b0f6f4b3a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-24 12:22:08 +02:00
ldestailleur
e4662d0e5c Debug v23 2025-07-24 12:21:39 +02:00
Anthony Damhet
3e0df45f30 NEW | Discount split more than two parts (#34782)
* Discount split more than two parts

* fix spaces

* remove set action split and type variables

* Condition if javascript is disabled

* Update remx.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 11:53:11 +02:00
ldestailleur
724cb85c9a Fix trans 2025-07-24 11:45:43 +02:00
ldestailleur
5841cee655 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-07-24 11:45:13 +02:00
VIAL-GOUTEYRON Quentin
5cf613a269 NEW : Major overhaul of DataPolicyCron and add Recruitment policy (#34704)
* refactor(datapolicy): redesign setup and logic for GDPR compliance

- Introduced a data-driven configuration structure for setup.php.
- Added support for a new "recruitment" GDPR datapolicy configuration.
- Streamlined code for managing anonymization and deletion delays.
- Enhanced dropdown generation logic to improve maintainability.
- Simplified data anonymization and deletion methods in cron execution.

This change provides more flexibility and modularity while ensuring compliance with GDPR standards.

* refactor(datapolicy): enhance data cleaning logic and add modular handlers

- Refactored `cleanDataForDataPolicy` method for better readability and efficiency.
- Implemented modular handlers for deletion and anonymization (_handleDelete and _handleAnonymize).
- Added dynamic argument building for method calls based on policy configurations.
- Improved SQL query preparation with placeholders for better database compatibility.
- Enhanced error handling and outcome recording in data processing.

This update simplifies extensibility and ensures robust handling of datapolicies.

* fix precommit

* fix

* fix(datapolicy): resolve uninitialized langs object and improve type hints

- Added a check to ensure `$langs` object is properly initialized, preventing runtime errors.
- Improved type hints in `datapolicycron.class.php` for stronger type checking and clarity.
- Replaced `empty` checks with `isset` for better null safety in setup.php dropdown logic.
- Adjusted SQL placeholders to cast values as strings for compatibility.

These changes enhance code robustness, type safety, and error handling.

* fix(datapolicy): improve type hints and streamline dropdown logic

- Added precise type hints (`string`, `array`) to enhance code clarity and type safety.
- Removed redundant condition in dropdown generation for improved maintainability.
- Added type specification for `$paramName` in `array_map` to strengthen type checking.
- Inserted missing class docblock for `CommonObject` in `datapolicycron.class.php`.

These updates lead to cleaner, safer, and more robust code.

* fix(datapolicy): improve type hints and streamline form submission logic

- Added return type hints (`: int`, `: void`, `: array`) in `datapolicycron.class.php` for better type safety and clarity.
- Simplified loop structures in `setup.php` by removing unnecessary variables.
- Revised `buttonsSaveCancel` method usage to eliminate redundant cancel parameter logic.
- Enhanced maintainability through refactoring `_processPolicyAction`, `_handleDelete`, and `_handleAnonymize` methods.

These refinements improve code readability, maintainability, and robustness.

* refactor(datapolicy): replace custom dropdown generation with `Form::selectarray`

- Removed the custom `$generateSelectHtml` function, simplifying code by using the existing `Form::selectarray` method.
- Updated dropdown generation for 'anonymize' and 'delete' actions to align with Dolibarr's standard practices.
- Enhances maintainability by leveraging built-in utilities and reducing custom logic.

* Update datapolicycron.class.php

* Try to fix CI

* Update datapolicycron.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 11:41:05 +02:00
MDW
dff2bd9d7c qual: Update FTP stub for phan (#34796)
# qual: Update FTP stub for phan

Phan did not find the FTP/Connection type, so updated the ftp stub for phan
which fixes some notices that were new

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 11:30:54 +02:00
MDW
15924c3a14 qual: Update phan baseline (#34795)
Update phan baseline with regards to exceptions that were fixed.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 11:25:14 +02:00
ldestailleur
256b1b705e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-24 11:17:44 +02:00
ldestailleur
d83dcb98f3 Fix warnings 2025-07-24 11:17:32 +02:00
brice.l
789293c78a Update contrat.class.php (#34784)
* Update contrat.class.php

Fix the function getListOfContracts with a missing LEFT JOIN when using $line_status

* Update contrat.class.php

add the left join in both cases and the inner join only for the product_categorie filter

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-24 11:01:32 +02:00
ldestailleur
6a18353eb0 Fix CI 2025-07-24 11:00:42 +02:00
ldestailleur
0187d1fcfc Fix CI 2025-07-23 16:31:09 +02:00
ldestailleur
2aa30381c6 FIX warning for too many %s 2025-07-23 14:48:32 +02:00
ldestailleur
3844c65e89 NEW Enhance popup for image preview (show size in title, can restore
small view, always show the Rotate button).
2025-07-23 14:43:51 +02:00
ldestailleur
8f3b65976a Fix emailcollector 2025-07-22 03:43:10 +02:00
ldestailleur
453c0bff06 Fix missing update of replyto 2025-07-22 01:54:01 +02:00
ldestailleur
af321bab80 Debug v22 - FIX Message-ID not set with SMTPs 2025-07-22 01:25:40 +02:00
ldestailleur
fb32860001 Debug v22 - FIX Message-ID not set with SMTPs 2025-07-22 01:23:28 +02:00
ldestailleur
4fa7e0f610 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-22 00:59:25 +02:00
ldestailleur
fe9ca39253 css 2025-07-22 00:45:11 +02:00
ldestailleur
5f7424bfed CSS 2025-07-22 00:42:58 +02:00
ldestailleur
0ea94b2a5f Clean code 2025-07-22 00:40:10 +02:00
ldestailleur
795ee53c88 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-21 23:27:15 +02:00
ldestailleur
4d0aad7d48 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-21 23:20:42 +02:00
ldestailleur
7a076eead2 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-21 22:14:38 +02:00
ldestailleur
4d74dc6380 NEW Show full date with seconds in the tooltip of date of event 2025-07-21 19:56:43 +02:00
ldestailleur
fa12e7ddeb Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-21 18:47:46 +02:00
ldestailleur
5beab40b92 CSS 2025-07-21 18:25:53 +02:00
ldestailleur
04ce65c613 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-20 21:05:24 +02:00
ldestailleur
c9cef40a2b Add ip and user_agent into order table 2025-07-20 21:04:57 +02:00
moreauftheobald
d4f9fd424f QUAL: OpenID Setup fused in Security Setup + Module removed -- WIP (#34422)
* FIX: OpenID Setup fused in Security Setup + Module removed...

* FIX: OpenID Setup fused in Security Setup + Module removed... WIP

* FIX: OpenID Setup fused in Security Setup + Module removed... WIP

---------

Co-authored-by: Theobald <f.moreau@theobald-groupe.com>
2025-07-20 20:09:53 +02:00
ldestailleur
0277aff89d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-07-20 20:05:40 +02:00
ldestailleur
9195f9be36 Debug getWarningDelay 2025-07-20 19:57:15 +02:00
moreauftheobald
6c86ad3eae FIX-Develop correct getwarningdelay (#34497)
* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* replace $conf->module->XXX->gwarning_delay by new function getwarningdelay

* FIX- Correct function GetwarningDelay

---------

Co-authored-by: Theobald <f.moreau@theobald-groupe.com>
2025-07-20 19:54:06 +02:00
Charlène Benke
348b562e95 NEW Can force_install_dolibarrpassword for automatic installation (#34537)
* add force_install_dolibarrpassword for automatised install

* Update install.forced.sample.php

* Update step4.php
2025-07-20 18:50:26 +02:00
Yannis Hoareau
c9073e95c7 NEW : search all facture rec (#34563)
* feat: new search all in facture rec

* feat: search all working without distinct

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-20 18:47:57 +02:00
github-actions[bot]
dd80eab17c PHPStan > Update baseline (#34772)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-07-20 17:15:58 +02:00
ldestailleur
4c14b35602 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-20 17:15:31 +02:00
ldestailleur
449109d0ba FIX use of a google print oauth token restored. No more conflict with
other tokens.
2025-07-20 17:15:14 +02:00
kollibar
87cb738eb5 Correction for the generation of the bankjournal for a paiement for different third parties (#34760)
* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

* Revert "Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :"

This reverts commit 80e67e665a.

* Correction for the generation of the bankjournal for a payment for different third parties party (in case of payment multi third partie is active, ie option "Allow payments on different third parties bills but same parent company" = true).

correction for the bug issue https://github.com/Dolibarr/dolibarr/issues/34755

* Revert "Correction for the generation of the bankjournal for a payment for different third parties party (in case of payment multi third partie is active, ie option "Allow payments on different third parties bills but same parent company" = true)."

This reverts commit 12ccfa60fa.

* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

(Sorry for the 2 failed pull request: I'm begginer in use of git)

* Revert "Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :"

This reverts commit 6fb35a6d2e.

* Correction for the generation of the bankjournal for a paiement for different third parties party (in case of paiement multi third partie is active :
option "Allow payments on different third parties bills but same parent company" = true)

I've made a bug issu about it : https://github.com/Dolibarr/dolibarr/issues/34755

(Sorry for the 2 failed pull request: I'm begginer in use of git)

* correction commit for phan

* Correction for Travis CI

* I forgot to correct a line

* Correction for phpcs

* ajout d'un test si la requete sql de recherche d'un total pour la ligne échoue

* activation of this fix only if option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on

* spelling correction in comment that don't pass pre-commit check

* trailing whitespace forget
2025-07-20 15:41:11 +02:00
ldestailleur
689ca56d8f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-19 18:23:47 +02:00
ldestailleur
4d22a52afb Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-19 18:20:46 +02:00
github-actions[bot]
ee5e558812 PHPStan > Update baseline (#34763)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-07-19 00:16:52 +02:00
Lenin Rivas
5aa5f88997 NEW Constant ORDER_MASS_ACTION_BILLED_LINK_EXPEDITIONS (#34617)
* NEW Constant ORDER_MASS_ACTION_BILLED_LINK_EXPEDITIONS

* NEW Constant ORDER_MASS_ACTION_BILLED_LINK_EXPEDITIONS

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 03:04:42 +02:00
Charlène Benke
54b359ab8a NEW implement box on product and interventional index page (#34629)
* implement box on product and interventional index page

* Update index.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 03:01:36 +02:00
Frédéric FRANCE
bb294eef95 NEW add hook getListOfModels (#34626)
* add hook getListOfModels

* Update functions2.lib.php

* Update functions2.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 02:59:19 +02:00
ldestailleur
6339eaf879 Fix date variables must be in UTC in memory. 2025-07-18 02:57:49 +02:00
VIAL-GOUTEYRON Quentin
7f9b477401 Fix(core): Ensure tms field is always updated in updateCommon (#34723)
* fix(commonobject): ensure `tms` field is updated with current timestamp

- Added logic to automatically update the `tms` field with the current timestamp when it exists in `$fieldvalues`.
- Aligns `tms` behavior with other timestamp fields like `date_modification`.

Improves consistency in timestamp handling across the codebase.

* fix(commonobject): set timezone for `dol_now()` call

- Updated `dol_now()` to use the user's timezone (`tz_user`).
- Ensures timestamps are consistent with user-specific settings.

* fix(commonobject): correct parameter for `dol_now()` function

- Updated `dol_now()` to use 'tzuser' instead of 'tz_user'.
- Fixes incorrect parameter causing potential timezone inconsistencies.

* fix(commonobject): respect `MAIN_DISABLE_AUTO_UPDATE_OF_TMS_FIELDS` setting

- Added a check for `MAIN_DISABLE_AUTO_UPDATE_OF_TMS_FIELDS` in the logic updating the `tms` field.
- Ensures the `tms` field is not auto-updated when this global setting is enabled.
- Retains the update behavior for `date_modification` and `fk_user_modif` fields.

Improves flexibility by honoring user-defined global settings for timestamp management.

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 02:54:07 +02:00
Charlène Benke
4ef0c91006 NEW add upload api feature for shipment (#34639)
* add upload api feature for shipment

* Update phpstan-baseline.neon

* Update phpstan-baseline.neon

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 02:45:38 +02:00
ldestailleur
5b6eb72f4a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-18 02:44:03 +02:00
ldestailleur
30b1827317 Trans 2025-07-18 02:41:31 +02:00
Charlène Benke
1df5ea8456 NEW Add thirdparty search on api list (#34634)
* Add thirdparty search on api list

this change allow to seach element with filter on thirdparty (ex : list of bill of with name of thidparty)

* Update api_orders.class.php

* Update api_invoices.class.php

* Update api_contracts.class.php

* Update api_shipments.class.php

* Update api_interventions.class.php

* Update api_projects.class.php

* Update api_tickets.class.php

* Update api_tickets.class.php

* Update api_projects.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 02:35:50 +02:00
Charlène Benke
dbd5912658 NEW Add Sign feature on shipments (#34640)
* Add Sign feature on shipping

* Update card.php

* Update sendings.lang

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 02:29:54 +02:00
splohmer
f369730adc Make mail id more unique (#34683)
The current solutions only uses time() which is a timestamp based on seconds. In some scenarios like automizing mails this is not enough. Even with the mt_rand there could be more likely collisions of the ids which is not allowed as it should be overall unique.
The newly used uniqid used a timestamp based on milliseconds and adds additionally a bit randomness which reduces the collision changes much more.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 01:33:24 +02:00
Alexandre SPANGARO
b4914420fa NEW Accountancy - Accounting by payment type (#34729)
* NEW Accountancy - Accounting by payment type

* Better SQL request
2025-07-18 01:01:28 +02:00
Jyhere
91dd2e87ee NEW: API GET endpoint for thirdparties types listing (c_typent) (#34751)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-18 00:56:10 +02:00
F-Node-Karlsruhe
e59f2447e7 fix purchase order refernece key in pdf generation (#34757)
* fix refernece key in pdf generation

Signed-off-by: F-Node-Karlsruhe <christian.fries@eecc.de>

* Update pdf.lib.php

---------

Signed-off-by: F-Node-Karlsruhe <christian.fries@eecc.de>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-17 22:20:45 +02:00
ldestailleur
de8c7f3c6e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 21:48:55 +02:00
ldestailleur
487633c117 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 21:48:46 +02:00
Charlène Benke
2bd22cc7c6 NEW : add api_paiements.class.php (#34756)
* NEW : add api_paiements.class.php

* Update functions2.lib.php

add payement api folder

* Update api_paiements.class.php

* Update api_paiements.class.php
2025-07-17 21:34:26 +02:00
ldestailleur
080585aca1 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:34 +02:00
ldestailleur
fd36861c17 Fix doc 2025-07-17 19:26:24 +02:00
ldestailleur
66c8f356e9 Sync transifex 2025-07-17 19:26:24 +02:00
ldestailleur
79acce8711 Update makepack 2025-07-17 19:26:24 +02:00
ldestailleur
d365595685 Fix link 2025-07-17 19:26:24 +02:00
ldestailleur
42c0e26b3b Fix link 2025-07-17 19:26:24 +02:00
ldestailleur
beea58cae6 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:24 +02:00
ldestailleur
c7edba6b80 Sync transifex 2025-07-17 19:26:24 +02:00
ldestailleur
6bd29ed4d6 Prepare dev for v23 2025-07-17 19:26:24 +02:00
ldestailleur
66ceb9911d Debug v22 - Fix bad trans and setup for Cash acocunting. 2025-07-17 19:26:24 +02:00
ldestailleur
03bd45a505 Debug 2025-07-17 19:26:24 +02:00
ldestailleur
5940007f00 Debug v22 2025-07-17 19:26:24 +02:00
ldestailleur
d9c56d586b Simplify regex 2025-07-17 19:26:24 +02:00
ldestailleur
144846eef5 Debug v22 2025-07-17 19:26:24 +02:00
ldestailleur
65fabdaf38 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:24 +02:00
ldestailleur
e8b2664921 Debug v22 2025-07-17 19:26:24 +02:00
ldestailleur
5f4ff4d472 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:24 +02:00
Alexandre SPANGARO
478ac4a1b4 UX Repair install script (#34663)
* UX Repair install script

* Presentation

* Fix language

* FIX CI
2025-07-17 19:26:24 +02:00
ldestailleur
a0dc36b613 Debug v22 2025-07-17 19:26:24 +02:00
ldestailleur
1f6a9d54e8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:24 +02:00
ldestailleur
f1cef8ec80 FIX mass action "Merge PDF" with high number of objects. 2025-07-17 19:26:24 +02:00
ldestailleur
d8a07f6fd6 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 19:26:24 +02:00
ldestailleur
24fcc2803f Fix warning 2025-07-17 19:26:24 +02:00
ldestailleur
43b05c56b6 Debug v22 2025-07-17 19:26:24 +02:00
ldestailleur
462090421f Trans 2025-07-17 19:26:24 +02:00
ldestailleur
890f5e1c7b Clean code 2025-07-17 19:26:24 +02:00
ldestailleur
acb3e1d397 Trans 2025-07-17 19:26:24 +02:00
ldestailleur
f0a0aeb3a4 FIX #34746 - More complete fix for CVE-2024-40137 2025-07-17 19:26:24 +02:00
ldestailleur
df88659105 Fix doc 2025-07-17 19:03:39 +02:00
ldestailleur
28545de94f Sync transifex 2025-07-17 18:56:16 +02:00
ldestailleur
4409b188ab Fix link 2025-07-17 18:55:28 +02:00
ldestailleur
92f12873d0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 18:32:58 +02:00
ldestailleur
fd4d0b4b11 Prepare dev for v23 2025-07-17 16:43:14 +02:00
ldestailleur
a94f99a8a5 Debug 2025-07-17 16:41:02 +02:00
ldestailleur
c3bdf64b86 Simplify regex 2025-07-17 16:17:48 +02:00
ldestailleur
3867da9ace Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 16:17:00 +02:00
ldestailleur
d1aa8aa235 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 16:16:50 +02:00
Alexandre SPANGARO
013e8fd8c9 UX Repair install script (#34663)
* UX Repair install script

* Presentation

* Fix language

* FIX CI
2025-07-17 11:06:29 +02:00
ldestailleur
755bde63b5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 02:07:52 +02:00
ldestailleur
2950084ac9 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-17 02:07:45 +02:00
Noé Cendrier
241a919da1 NEW: New hook mergePdf (#34707)
* ADD: New hook mergePdf (#32)

* Update actions_massactions.inc.php

* Rename hook

---------

Co-authored-by: altairis-melina <91946767+altairis-melina@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-15 18:48:01 +02:00
ldestailleur
1832675c96 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-15 18:44:45 +02:00
ldestailleur
8a79e957c6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-15 17:20:13 +02:00
ldestailleur
1dd83c65aa Doc 2025-07-15 16:15:59 +02:00
Frédéric FRANCE
12781d7ccd add tables for paiement extrafields (#34695)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-15 15:43:21 +02:00
Clément
1e6b70a09a NEW Customized step in duration select (#34652)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-15 15:41:23 +02:00
ldestailleur
daf901dfed Doc 2025-07-15 15:36:54 +02:00
ldestailleur
4a696a6dba Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-15 15:22:52 +02:00
ldestailleur
deb758f023 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-15 12:54:06 +02:00
ldestailleur
034804aa42 Doc 2025-07-15 12:36:15 +02:00
Francis Appels
55567c9e8e WebPortal: Make controller form objects accessable in hookPrintPageView (#34742)
* Make formList public in list controller to allow modify properties by hook.

* WebPortal: Make controller form objects accessable in hookPrintPageView
2025-07-15 11:44:08 +02:00
Alexandre SPANGARO
6cd43995f8 FIX Fiscal year - Translation error on status (#34743) 2025-07-15 11:41:20 +02:00
Noé Cendrier
8ccb6634c9 FIX: we should ensure Commande::$lines array contains OrderLine objects (#34727) 2025-07-15 06:20:06 +02:00
github-actions[bot]
af61bc7644 PHPStan > Update baseline (#34734)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-07-15 06:16:56 +02:00
ldestailleur
091b9c4f8c Comment 2025-07-11 14:24:22 +02:00
ldestailleur
5362770117 Clean code 2025-07-11 09:20:21 +02:00
ldestailleur
ecb4762a0b Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-10 19:49:35 +02:00
ldestailleur
7c305761ae Fix CI 2025-07-10 17:48:36 +02:00
ldestailleur
3d5f6b820f Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-10 17:45:35 +02:00
Francis Appels
6e96cd2118 fix takepos console error (#34709)
* fix console error

* exit early

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-07-10 16:45:26 +02:00
ldestailleur
94abc07a1f Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-07-10 15:21:51 +02:00
Lucas Marcouiller
d060962bae Fix bad value fourn paiement process (#34722)
* Fix bad value  fourn paiement process

* best fix
2025-07-10 14:54:29 +02:00
Deefaze
f21b5290f4 Update functions.lib.php (#34718)
Add __MYCOMPANY_URL__ & __MYCOMPANY_PHONEMOBILE__ in getCommonSubstitutionArray
2025-07-10 14:54:04 +02:00
ldestailleur
d5db68430c Fix name of option for supplier 2025-07-10 14:49:45 +02:00
3755 changed files with 89334 additions and 389044 deletions

View File

@@ -1,3 +0,0 @@
# Add this tag for any changes for more than 1 line
"Pending analysis of PR (maintenance team)":
min: 1

View File

@@ -1,6 +1,19 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
allow:
# Allow production updates only (can do a AND, several entries are doing a OR)
- dependency-type: "production"
#- dependency-type: "direct"
exclude-paths:
- 'dev'
- 'tests/acceptance'
- 'tests/selenium'

View File

@@ -20,10 +20,10 @@ See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workf
The other worklows are:
-----------------------
- stale-issues-safe to autoclose old issues.
- phpstan_baseline to update the phpstan baseline file.
- cache-clean-pr to clean cache when closing a PR.
- ci-stale-issues-safe to autoclose old issues.
- ci-phpstan_baseline to update the phpstan baseline file.
- ci-cache-clean-pr to clean cache when closing a PR.
- ci-test to make CI tests
Some tests workflows are:
------------------------

View File

@@ -16,7 +16,7 @@ jobs:
contents: read
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache

View File

@@ -25,15 +25,15 @@ jobs:
# uses: ./.github/workflows/windows-ci.yml
# with:
# gh_event: ${{ github.event_name }}
gh-travis: # Runs travis script on github runner (not on travis)
if: false
# needs: [pre-commit, phan]
# needs: [windows-ci]
secrets: inherit
needs: [pre-commit, phan, phpstan]
uses: ./.github/workflows/gh-travis.yml
with:
gh_event: ${{ github.event_name }}
#gh-travis: # Runs travis script on github runner (not on travis)
# if: false
# # needs: [pre-commit, phan]
# # needs: [windows-ci]
# secrets: inherit
# needs: [pre-commit, phan, phpstan]
# uses: ./.github/workflows/gh-travis.yml
# with:
# gh_event: ${{ github.event_name }}
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
# To cancel jobs if one fails, the following action may help

View File

@@ -25,15 +25,15 @@ jobs:
uses: ./.github/workflows/windows-ci.yml
with:
gh_event: ${{ github.event_name }}
gh-travis: # Runs travis script on github runner (not on travis)
if: false
# needs: [pre-commit, phan]
# needs: [windows-ci]
secrets: inherit
needs: [pre-commit, phan, phpstan]
uses: ./.github/workflows/gh-travis.yml
with:
gh_event: ${{ github.event_name }}
# gh-travis: # Runs travis script on github runner (not on travis)
# if: false
# # needs: [pre-commit, phan]
# # needs: [windows-ci]
# secrets: inherit
# needs: [pre-commit, phan, phpstan]
# uses: ./.github/workflows/gh-travis.yml
# with:
# gh_event: ${{ github.event_name }}
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
# To cancel jobs if one fails, the following action may help

View File

@@ -33,13 +33,13 @@ jobs:
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none # disable xdebug, pcov
tools: phpstan:2.1.8, cs2pr
tools: phpstan:2.1.12, cs2pr
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
mysql, pgsql, sqlite3, ldap, xml, mcrypt
env:

View File

@@ -0,0 +1,24 @@
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: "Check tag branch"
on:
push:
tags:
- "18.*"
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Verify tag is on main
run: |
TAG_COMMIT=$(git rev-list -n 1 $GITHUB_REF)
if ! git branch --contains $TAG_COMMIT | grep -q "18.0"; then
echo "The tag must be on branch 18.0"
exit 1
fi

View File

@@ -27,15 +27,15 @@ jobs:
runs-on: ubuntu-latest
strategy:
fail-fast: false
# matrix:
# php-version:
matrix:
php-version:
# # PHPStan requires PHP >= 7.2.
# #- "7.2"
# - "8.2"
- "8.2"
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout travis file
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Run .travis.yml build script
uses: ktomk/run-travis-yml@v1
with:

View File

@@ -30,26 +30,14 @@ jobs:
github.repository == 'Dolibarr/dolibarr'
|| github.event.schedule == false
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none # disable xdebug, pcov
tools: cs2pr,phan
tools: phan
- name: Run Phan analysis
run: |
# shellcheck disable=2086
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=checkstyle -o _phan.xml
- name: Add results to PR
if: ${{ always() }}
run: |
cs2pr --prepend-filename --prepend-source --notices-as-warnings _phan.xml
- name: Provide phan log as artifact
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: phan-srcrt
# path: ${{ github.workspace }}/phan.log
path: ${{ github.workspace }}/_phan.xml
retention-days: 2
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github

View File

@@ -35,7 +35,7 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- uses: actions/checkout@v5
# Get PHP and addons
- name: Setup PHP
id: setup-php
@@ -43,7 +43,7 @@ jobs:
with:
php-version: ${{ matrix.php-version }}
coverage: none # disable xdebug, pcov
tools: phpstan:2.1.8, cs2pr
tools: phpstan:2.1.12, cs2pr
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
mysql, pgsql, sqlite3, ldap, xml, mcrypt

View File

@@ -28,7 +28,7 @@ jobs:
# if: false
# Checkout git sources to analyze
- uses: actions/checkout@v4
- uses: actions/checkout@v5
# Try to get the list of modified files into steps.changed-php.outputs.all_changed_files
#- name: Get changed files
@@ -66,7 +66,7 @@ jobs:
run: |-
[ -r requirements.txt ] || [ -r pyproject.toml ] || touch requirements.txt
# Install python and pre-commit tool
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
cache: pip
python-version: "3.11"

View File

@@ -1,30 +0,0 @@
name: Test github actions
on:
workflow_dispatch:
pull_request:
types: [opened, reopened, synchronize]
push:
env:
ENVGHT: ${{ secrets.GITHUB_TOKEN }}
ENVGHU: ${{ github.token }}
TEST_ACCESS_KEY: ${{ secrets.TEST_ACCESS_KEY }}
TEST_VAR_REPO: ${{ vars.TEST_VAR_REPO }}
TEST_VAR_ORGA: ${{ vars.TEST_VAR_ORGA }}
ENVLOCAL: "varenvlocal"
jobs:
testjob:
runs-on: ubuntu-latest
steps:
- name: Log
run: |
echo "Run action by ${{ github.actor }}"
echo "github.token=${{ github.token }}"
echo "secrets.GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}"
echo "GITHUB_EVENT_PATH=$GITHUB_EVENT_PATH"
echo "repo-token: ${{secrets.GITHUB_TOKEN}}"
echo "secret repository TEST_ACCESS_KEY: ${{secrets.TEST_ACCESS_KEY}}"
echo "variable repository : ${{vars.TEST_VAR_REPO}}"
echo "variable organization : ${{vars.TEST_VAR_ORGA}}"
echo "ENVLOCAL: ${{env.ENVLOCAL}}"

View File

@@ -35,7 +35,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:

View File

@@ -522,6 +522,9 @@ script:
php upgrade.php 21.0.0 22.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade21002200.log || cat $TRAVIS_BUILD_DIR/upgrade21002200.log
php upgrade2.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-2.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-2.log
php step5.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-3.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-3.log
php upgrade.php 22.0.0 23.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade22002300.log || cat $TRAVIS_BUILD_DIR/upgrade22002300.log
php upgrade2.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-2.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-2.log
php step5.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-3.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-3.log
set +e
echo

View File

@@ -44,12 +44,6 @@ source_file = htdocs/langs/en_US/blockedlog.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:bookmarks]
file_filter = htdocs/langs/<lang>/bookmarks.lang
source_file = htdocs/langs/en_US/bookmarks.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:boxes]
file_filter = htdocs/langs/<lang>/boxes.lang
source_file = htdocs/langs/en_US/boxes.lang
@@ -104,12 +98,6 @@ source_file = htdocs/langs/en_US/datapolicy.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:deliveries]
file_filter = htdocs/langs/<lang>/deliveries.lang
source_file = htdocs/langs/en_US/deliveries.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:dict]
file_filter = htdocs/langs/<lang>/dict.lang
source_file = htdocs/langs/en_US/dict.lang
@@ -146,12 +134,6 @@ source_file = htdocs/langs/en_US/exports.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:help]
file_filter = htdocs/langs/<lang>/help.lang
source_file = htdocs/langs/en_US/help.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:holiday]
file_filter = htdocs/langs/<lang>/holiday.lang
source_file = htdocs/langs/en_US/holiday.lang
@@ -284,12 +266,6 @@ source_file = htdocs/langs/en_US/partnership.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:paybox]
file_filter = htdocs/langs/<lang>/paybox.lang
source_file = htdocs/langs/en_US/paybox.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:paypal]
file_filter = htdocs/langs/<lang>/paypal.lang
source_file = htdocs/langs/en_US/paypal.lang
@@ -380,6 +356,12 @@ source_file = htdocs/langs/en_US/stripe.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:subtotals]
file_filter = htdocs/langs/<lang>/subtotals.lang
source_file = htdocs/langs/en_US/subtotals.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:supplier_proposal]
file_filter = htdocs/langs/<lang>/supplier_proposal.lang
source_file = htdocs/langs/en_US/supplier_proposal.lang

View File

@@ -53,7 +53,7 @@ TCPDI 1.1.0 LGPL-3+ / Apache 2.0 Yes
bacon, dasprid, swiss-qr-bill, kmukku, symfony/validator
JS libraries:
Ace 1.4.14 BSD Yes JS library to get code syntaxique coloration in a textarea.
Ace 1.43.12 BSD Yes JS library to get code syntaxique coloration in a textarea (Must take src dir into https://github.com/ajaxorg/ace-builds/).
ChartJS 3.7.1 MIT License Yes JS library for graph
CKEditor 4.22.1 LGPL-2.1+ Yes Editor WYSIWYG
jQuery 3.6.4 MIT License Yes JS library

164
ChangeLog
View File

@@ -2,6 +2,99 @@
English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 23.0.0 compared to 22.0 *****
For users:
----------
For developers:
---------------
* Introducing the TRIGGER_PREFIX property to force developers to use unique triggerkey per business object, limit also code to business CRUD events and identity when it is not.
WARNING:
--------
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
* The deprecated column egroupware_id has been dropped.
* The property $sumpayed (duplicated of $totalpaid), $sumdeposit (duplicate of $totaldeposits) and $sumcreditnote (duplicate of $totalcreditnotes) has
been removed (there are replaced with the property that was a duplication of (same for $sumpayed_multicurrency, $sumdeposit_multicurrency, $sumcreditnote_multicurrency).
* Parameters $maxlen and $notooltip of Contract have been inverted to follow the standard. It was breaking the common use of getNomUrl() but if you were using the parameter
maxlen (rare) by using the old signature, result may be a tooltip that is no more visible on ref printed by you module.
* Removed array $MAP_ID_TO_CODE that was a duplicate of array "array_flip($categ->MAP_ID)"
* The signature of the Sale order ->cancel() method and shipment ->cancel() has been modified to introduce the $user param like for other methods that modify a status.
* Adding new document templates must be done by adding files into the mymodule/core/modules/xxx/doc directory. Adding files into custom directory with the
same path than the core path without using a mymodule directory is now forbidden.
* The directory theme/common/octicons has been removed
* The library timepicker.js has been removed. Was not used by Dolibarr.
* Because of new TRIGGER_PREFIX property triggers SUPPLIER_PRODUCT_BUYPRICE_XXX are renamed to PRODUCT_BUYPRICE_XXX.
***** ChangeLog for 22.0.2 compared to 22.0.1 *****
FIX: ContratLigne::fetch() returns 1 even if the line doesn't exist (#35324)
FIX: #34678
FIX: #35142 FIX: #35143
FIX: #35154 - Massaction createbills in reception list don't mind about order and/or thirdparty currency (#35156)
FIX: #35181 Cancelled purchase orders now shown as such in Project Overview (#35186)
FIX: #35407 After updating to version 22, local taxes were no longer applied (#35408)
FIX: #35425 (#35426)
FIX: accountancy general ledger: bad handling of hook return (#34029)
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
FIX: allow to create First Situation Invoice (#35228)
FIX: api orders : forward database error on failure (backport commit d9e81cb) (#35478)
FIX: Can't edit tags of a user.
FIX: can't reset intracomm transport mode
FIX: can't save setup of odt template for stock
FIX: check commande liste validate (#35479)
FIX: color of late warning for nb of bank account reconciliation lines
FIX: Correct the calculation of the amount of the current period between the period provided (#35083)
FIX: Date planned of delivery is not propagated from order to shipment
FIX: Edit of email in emailing. Property messtype not set.
FIX: extra field list depend on parent list when editing a card (#35165)
FIX: fallback of "from" email when sending email in member module
FIX: missing token to disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084)
FIX: Generation of member cards (file not found and substitution broken)
FIX: invoice not set to closed when we add a credit note to close it
FIX: missing check constant PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS (#33277)
FIX: missing entity filter (#35461)
FIX: missing quick edit for extrafields (backport commit 4fc66c6) (#35160)
FIX: Missing sentence part (#35144)
FIX: Remove perms to access commerce tab when the only active permission is fournisseur:lire (#35467)
FIX: Restore decimal quantity for stock correction/transfer
FIX: save the packaging qty on update buying price (#35234)
FIX: set global mysoc and load langs in API access (#35041)
FIX: Societe - Problem of date on outstanding opened late (#35266)
FIX: vat detection when country of buyer is unknown.
FIX: wrong extrafield template in create mode (#35241) (#35470)
***** ChangeLog for 22.0.1 compared to 22.0.0 *****
FIX: #34843 (#34875)
FIX: #34936
FIX: a Fatal error when a trigger files is not correctly named.
FIX: array for arrayofkeyval is lost in module builder edit of property
FIX: asset: could not select invoice in disposal pop-in (#34725)
FIX: avoid php warning with "$forceFullTextIndexation" (#34881)
FIX: bad consistency on test on permission to disable service
FIX: Can edit status of tasks
FIX: Create public ticket if email need exist. (#34965)
FIX: DA026536: missing <br> in automatic e-mail (#34895)
FIX: extrafields of type "int" not displayed on `projet/tasks.php` (#34896)
FIX: Filter on the balance of leave
FIX: Logo on company is no more visible.
FIX: mailing destination list title (#34929)
FIX: main checkbox left column was before global conf (#34858)
FIX: Missing a column on group permissions
FIX: several minor troubles with modulebuilder
FIX: Test on mandatory product or thirdparty barcode
FIX: trigger mailmanspip when un/linking categories
FIX: Security when using Advanced Target page of emailing (feature hidden in v21, default in v22+). Possible
SQL injection by users with permission to make and send mass emailing.
***** ChangeLog for 22.0.0 compared to 21.0 *****
@@ -14,7 +107,6 @@ NEW: ticket : display files linked to actioncomm (#32325)
NEW: Support of monthly or weekly recurring events
NEW: AI feature to autofill extrafields
NEW: Introduce the view "Kanban Grouped By" opportunity status in projects
NEW: #22848
NEW: #32706 - Treasury accountancy (#33701)
NEW: #33506 Add a constant to apply a ratio to resize images in ODT templates (#33543)
NEW: Accountancy - Add centralized account (SQL & migration part) (#33384) (#33577)
@@ -51,7 +143,7 @@ NEW: Add Shared links on links in attachments (#33459)
NEW: Add tags / category on supplier invoice (#33490)
NEW: Add the possibility to merge PDF from the product list (#33723)
NEW: allow stock management by product (#32326)
NEW: attendee status Used - to ensure that only one attendee gets in on a ticket (#33987)
NEW: attendee status "Showed up" - to ensure that only one attendee gets in on a ticket (#33987)
NEW: auto-detect country from code in creation (follow-up)
NEW: autofix mysqldump command for backup when path is wrong
NEW: Better presentation of list of user approver.
@@ -120,7 +212,7 @@ NEW: Add note public and private on order export
NEW: Finish dev for API_ENABLE_COUNT_CALLS (count of API use is visible on user API key field)
For developers:
----------
---------------
NEW: Add an API endpoint to get properties of a single line of an order (#34045)
NEW: add const to not include default CSS in top_htmlhead with DISABLE_CSS_DEFAULT_THEME
NEW: add const to not include default lib_head.js in top_htmlhead with DISABLE_LIB_HEAD_JS
@@ -147,7 +239,6 @@ NEW: expense report API deny
WARNING:
--------
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
* The use of GETPOST function is not allowed inside extrafields conditions or any strings that contains dynamic code evaluated with dol_eval().
* The deprecated variable $trigger_name (duplicate of variable $triggersendname) has been removed. You must use $triggersendname everywhere now.
@@ -164,6 +255,38 @@ The following changes may create regressions for some external modules, but were
* The property ->price_ht of an object line that was a duplicate of ->subprice has been standardized. Use ->subprice everywhere now.
***** ChangeLog for 21.0.4 compared to 21.0.3 *****
FIX: #35147 SQL Error on Beluga Export when ExpenseReport is enabled (#35149)
FIX: error when using a code too large in dictionary
FIX: Security when using Advanced Target page of emailing (feature hidden in v21, default in v22+). Possible
SQL injection by users with permission to make and send mass emailing.
***** ChangeLog for 21.0.3 compared to 21.0.2 *****
FIX: #34843 (#34875)
FIX: #34936
FIX: #35005
FIX: #35006 SQL error when using external user
FIX: a Fatal error when a trigger files is not correctly named.
FIX: array for arrayofkeyval is lost in module builder edit of property
FIX: asset: could not select invoice in disposal pop-in (#34725)
FIX: avoid php warning with "$forceFullTextIndexation" (#34881)
FIX: bad consistency on test on permission to disable service
FIX: Can edit status of tasks
FIX: Create public ticket if email need exist. (#34965)
FIX: DA026536: missing <br> in automatic e-mail (#34895)
FIX: extrafields of type "int" not displayed on `projet/tasks.php` (#34896)
FIX: Filter on the balance of leave
FIX: Logo on company is no more visible.
FIX: mailing destination list title (#34929)
FIX: main checkbox left column was before global conf (#34858)
FIX: Missing a column on group permissions
FIX: several minor troubles with modulebuilder
FIX: Test on mandatory product or thirdparty barcode
FIX: trigger mailmanspip when un/linking categories
SEC: Remove functions accepting callable params - Reported by phdwg1410 - CVE-2024-40137
***** ChangeLog for 21.0.2 compared to 21.0.1 *****
FIX: 21.0: $height and $width can be ints, but also 'auto' (#34636)
@@ -1149,6 +1272,7 @@ FIX: when qty is not an integer, apply price() (#31138)
FIX: Wrong default PDF model when creating the second situation invoice (#30843)
FIX: wrong subprice if price base type is TTC (#30887)
***** ChangeLog for 19.0.3 compared to 19.0.2 *****
FIX: #29403 HRM - Unable to delete a skill in a job Profile (#29779)
FIX: #29439 incomplete API return (#29796)
@@ -1712,7 +1836,39 @@ The following changes may create regressions for some external modules, but were
* 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.
* booking.class.php was removed, please have a look at calendar.class.php
***** ChangeLog for 18.0.8 compared to 18.0.7 *****
35 files changed, 647 insertions(+), 298 deletions(-)
FIX: #34746 - More complete fix for CVE-2024-40137
FIX: Correct the calculation of the amount of the current period between the period provided (#35083)
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call
FIX: missing quick edit for extrafields (baclport commit 4fc66c6) (#35160)
FIX: Missing sentence part (#35144)
FIX: set global mysoc and load langs in API access (#35041)
FIX: set global mysoc and load langs in API access
FIX: reset mysoc and langs only if entity of API has changed
FIX: accountancy general ledger: bad handling of hook return (#34029)
FIX: accountancy general ledger: bad handling of hook return
FIX: accountancy balance: bad handling of hook return
FIX: - Fix missing token for disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084)
FIX: The combo of custom groups has disappeared (backport v19) (#35016)
FIX: #34893 (#34897)
FIX: #34893
FIX: change error code to USERNOTALLOWEDTOCHANGEPASS
FIX: asset: could not select invoice in disposal pop-in (#34725)
FIX: 17.0 SQL syntax error and/or constraint error when calling Facture::update() after a clone (e.g. in a trigger) (#34778)
FIX: 17.0: when you clone an invoice that was created from a template invoice, the clone should not be linked to the template invoice (#34777)
FIX: pre-send mail mass action: keep __EMAIL__ substitution (#34522)
FIX: pre-send mail mass action: keep __EMAIL__ substitution
FIX: comment
FIX: massaction email tpl: keep preset
FIX: loop interrupt if an error occurs in sendEmailsRemindersOnInvoiceDueDate (#34657)
FIX: #34654
***** ChangeLog for 18.0.7 compared to 18.0.6 *****
138 files changed, 1622 insertions(+), 530 deletions(-)
FIX: 17.0 API endpoints "PUT": prevent overwriting all extrafields if only some are supplied in the request cf. PR #29237
FIX: 17.0 - collisions in cache for dol_getIdFromCode
FIX: 17.0 - missing error handling for FactureRec::fetch in card-rec.php

View File

@@ -1,9 +1,9 @@
# How to use it ?
# How to use or run Dolibarr with Docker (for a development environment) ?
The docker-compose.yml file is a sample of a config file to use to build and run Dolibarr in the
current workspace with Docker. This docker image is intended for **development usage**.
For a production usage you should consider official packages on https://hub.docker.com/r/dolibarr/dolibarr.
The docker-compose.yml file is a sample of a config file to use to build and run
Dolibarr in the current workspace with Docker. This docker image is intended for
**development usage**. For production usage you should consider other
contributor reference like https://hub.docker.com/r/dolibarr/dolibarr.
Before build/run, define the variable HOST_USER_ID as following:
@@ -22,18 +22,13 @@ or
docker compose -f docker-compose.yml -f postgres.yml up
This will run 4 containers Docker : Dolibarr, MariaDB, PhpMyAdmin and MailDev.
In the case of PostgreSQL, only Dolibarr, MailDev and the PostgreSQL database
will be running.
This will run the following Docker containers : Dolibarr, MariaDB, MailDev.
In the case of PostgreSQL, only Dolibarr, MailDev and the PostgreSQL database will be running.
The URL to go to the Dolibarr is :
The URL to go to the installed Dolibarr is :
http://0.0.0.0
The URL to go to PhpMyAdmin is (login/password is root/root) :
http://0.0.0.0:8080
In Dolibarr configuration Email let PHP mail function, To see all mail send by
Dolibarr go to maildev
@@ -42,6 +37,7 @@ Dolibarr go to maildev
Setup the database connection during the installation process, please use
mariadb or postgres (name of the database container) as database host.
## Setup your custom modules
You can setup your own modules from your development folder by using volume
@@ -61,8 +57,4 @@ will automatically be synced with your development environment.
Then, you can start by extending one of the commands above, for instance for
mariadb:
docker compose \
-f docker-compose.yml \
-f postgres.yml \
-f yourmodule.yml \
up
docker compose -f docker-compose.yml -f postgres.yml -f yourmodule.yml up

View File

@@ -1,18 +1,21 @@
# How to use run Dolibarr with docker ?
# How to use or run Dolibarr with Docker ?
## For a fast run of a demo of the local version, you can build the docker image from this current repository by running
## For a fast run of a demo of the local version, you can build the docker image from the source repository by running
git clone https://github.com/Dolibarr/dolibarr.git dolibarr
cd dolibarr/docker
sudo docker-compose build
sudo docker-compose build
sudo -s
sudo -s
export HOST_USER_ID=$(id -u)
export HOST_GROUP_ID=$(id -g)
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
docker-compose up -d
export HOST_USER_ID=$(id -u)
export HOST_GROUP_ID=$(id -g)
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
docker-compose up -d
Warning: There is no persistency of data. This process is for dev purpose only.
@@ -20,4 +23,6 @@ Warning: There is no persistency of data. This process is for dev purpose only.
## For a more robust or a production usage
If you want to execute an official Docker package, you can find it and read the doc on ihttps://hub.docker.com/r/dolibarr/dolibarr
If you want to execute an official Docker package, you can find it and read the doc on
*https://hub.docker.com/r/dolibarr/dolibarr*

View File

@@ -41,7 +41,7 @@ PROJECT_NUMBER = x.y.z
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = build
OUTPUT_DIRECTORY = dev/build
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output

View File

@@ -3,11 +3,8 @@
DoliWamp is a special all in one package installer for Windows (Dolibarr+Mysql+Apache+PHP).
It's a dedicated Dolibarr version for Windows newbies with no technical knowledge. This package will install or upgrade Dolibarr but also all prerequisites like the web server, and the database in one auto-install process.
This directory contains files used by *makepack-dolibarr.pl* script to build the all-in-on .EXE package DoliWamp, ready
to be distributed (for Windows).
The build of .exe files need to have some windows executable files already installed (Apache, MariaDb). The package to install to get this files are defined into the file *doliwamp.iss* (searhc line starting with "; Value OK:")
If you have technical knowledge in web administration and plan to share your server instance (Apache, Mysql or PHP) with other projects than Dolibarr or want to use Dolibarr other components (PostgreSQL), you should not use this assistant and make a manual installation of Dolibarr on your existing server by downloading the standard package (.tgz or .zip file).
If you have technical knowledge in web administration and plan to share your server instance (Apache, Mysql or PHP) with other projects than Dolibarr, or want to use Dolibarr with a different technical layer (PostgreSQL instead of MariaDB for exemple), you should not use this auto-installer assistant and make a manual installation of Dolibarr on your existing server by downloading the standard package (the .zip file).
!!! See file ../../makepack-howto.md
This directory contains files used by *makepack-dolibarr.pl* script to build DoliWamp, the all-in-one .EXE package of Dolibarr, ready to be distributed on Windows (See file ../../makepack-howto.md)
The build of .exe files need to have some windows executable files already installed (Apache, MariaDb). The package to install to get this files are defined into the file *doliwamp.iss* (search line starting with "; Value OK:")

View File

@@ -38,8 +38,8 @@ DefaultGroupName=Dolibarr
;Compression=none
Compression=lzma
SolidCompression=yes
WizardImageFile=build\exe\doliwamp\doliwamp.bmp
WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp
WizardImageFile=dev\build\exe\doliwamp\doliwamp.bmp
WizardSmallImageFile=dev\build\exe\doliwamp\doliwampsmall.bmp
SetupIconFile=doc\images\dolibarr_favicon.ico
;To say the installer must be ran as admin
PrivilegesRequired=admin

View File

@@ -50,6 +50,13 @@ $includeconstants = array();
$buildzip = 0;
if (empty($argv[1])) {
print '***** '.$script_file.' *****'."\n";
print "Generate the file filelist-x.y.z[-mybuild].xml with signature of files. ";
print "This includes the 3 sections:\n";
print "- dolibarr_htdocs_dir\n";
print "- dolibarr_scripts_dir\n";
print "- dolibarr_unalterable_files (only files inside the scope of the unalterable module)\n";
print "\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
exit(1);
@@ -78,7 +85,7 @@ while ($i < $argc) {
$tmp = explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
if (count($tmp) != 3) {
print "Error: Bad parameter includeconstant=".$result['includeconstant'] ."\n";
exit -1;
exit(1);
}
$includeconstants[$tmp[0]][$tmp[1]] = $tmp[2];
}
@@ -97,7 +104,7 @@ $savrelease = $release;
$tmpver = explode('-', $release, 2);
if ($tmpver[0] == 'auto') {
$release = DOL_VERSION;
if ($tmpver[1] && $tmpver[0] == 'auto') {
if (!empty($tmpver[1]) && $tmpver[0] == 'auto') {
$release .= '-'.$tmpver[1];
}
}
@@ -126,10 +133,10 @@ if (empty($includecustom)) {
}
}
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
print "Release : ".$release."\n";
print "Include custom in signature : ".$includecustom."\n";
print "Include constants in signature : ";
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
print "Release : ".$release."\n";
print "Include custom dir in signature : ".(empty($includecustom) ? 'no' : 'yes')."\n";
print "Include constants in signature : ".(empty($includeconstants) ? 'none' : '');
foreach ($includeconstants as $countrycode => $tmp) {
foreach ($tmp as $constname => $constvalue) {
print $constname.'='.$constvalue." ";
@@ -155,9 +162,12 @@ $gitcommit = 'seetag';
$branchname = preg_replace('/^(\d+\.\d+)\..*$/', '\1', $release); // Keep only x.y into x.y.z
$fileforgit = dirname(dirname(dirname(__FILE__))).'/.git/refs/heads/'.$branchname;
print "Try to get last commit ID from file ".$fileforgit."\n";
$fileforgitcontent = file_get_contents($fileforgit);
$fileforgitcontent = '';
if (file_exists($fileforgit)) {
$fileforgitcontent = file_get_contents($fileforgit);
}
if (empty($fileforgitcontent)) {
print "Failed to get the last commit ID. Are you on the branch for the release (branch name '.$branchname.') ?\n";
print "Failed to get the last commit ID. Are you on the branch for the release (branch name ".$branchname.") ?\n";
}
$gitcommit = trim($fileforgitcontent);
@@ -180,7 +190,7 @@ fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
// Define qualified files (must be same than into generate_filelist_xml.php and in api_setup.class.php)
$regextoinclude = '\.(php|php3|php4|php5|phtml|phps|phar|inc|css|scss|html|xml|js|json|tpl|jpg|jpeg|png|gif|ico|sql|lang|txt|yml|bak|md|mp3|mp4|wav|mkv|z|gz|zip|rar|tar|less|svg|eot|woff|woff2|ttf|manifest)$';
$regextoexclude = '('.($includecustom ? '' : 'custom|').'documents|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/example|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
$regextoexclude = '('.($includecustom ? '' : 'custom|').'documents|escpos-php\/doc|escpos-php\/example|escpos-php\/test|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
$dir = '';
@@ -339,6 +349,54 @@ if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
// Add the interfaces.class.php file
$file = dirname(__FILE__).'/../../htdocs/core/class/interfaces.class.php';
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
//$needtoclose = 1; // close will be done in next filethat is in same dir
}
if (filetype($file) == "file") {
$md5 = md5_file($file);
$checksumconcat[] = $md5;
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
// Add the commontrigger.class.php file
$file = dirname(__FILE__).'/../../htdocs/core/class/commontrigger.class.php';
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
$needtoclose = 1;
}
$needtoclose = 1; // This is the last file
if (filetype($file) == "file") {
$md5 = md5_file($file);
$checksumconcat[] = $md5;
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, '</dolibarr_unalterable_files>'."\n");
asort($checksumconcat); // Sort list of checksum

View File

@@ -446,6 +446,15 @@ if ($nboftargetok) {
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/dev/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
$ret=`php $SOURCE/dev/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
my $retcode=$?;
if ($retcode!=0)
{
print "Error running generate_filelist_xml.php please check\n";
print $ret;
print "Canceled.\n";
exit;
}
print $ret."\n";
# Copy to final dir
$NEWDESTI=$DESTI;
@@ -477,14 +486,14 @@ if ($nboftargetok) {
{
print 'Run git tag -a -f -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
$ret=`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`;
print 'Run git push $GITREMOTENAME -f --tags'."\n";
$ret=`git push $GITREMOTENAME -f --tags`;
print 'Run git push '.$GITREMOTENAME.' -f "$MAJOR.$MINOR.$BUILD"'."\n";
$ret=`git push $GITREMOTENAME -f -"$MAJOR.$MINOR.$BUILD"`;
#$ret=`git push -f origin "$MAJOR.$MINOR.$BUILD"`;
}
}
else
{
print 'Run git push $GITREMOTENAME --tags'."\n";
print "Run git push $GITREMOTENAME --tags\n";
$ret=`git push $GITREMOTENAME --tags`;
#$ret=`git push origin "$MAJOR.$MINOR.$BUILD"`;
}

View File

@@ -24,10 +24,9 @@ Prerequisites to build autoexe DoliWamp package from Linux (solution seems broke
- Add path to ISCC.exe into the PATH windows var (You can do this by launching wine cmd, then regedit and add entry int `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH`)
- To manually build the .exe from Windows :
- To manually build the .exe from Windows (Note: running from makepack-dolibarr.pl script is however recommended):
Note: running from makepack-dolibarr.pl script is however recommended
open file dev/build/exe/doliwamp.iss and click on button "Compile".
Open the file dev/build/exe/doliwamp.iss and click on button "Compile".
The .exe file will be build into directory build.
@@ -58,7 +57,8 @@ Prerequisites to build autoexe DoliWamp package from Windows:
This section describes steps made by Dolibarr packaging team to make a beta version of Dolibarr, step by step.
- Check all files are committed.
- Check that all files on local working repository are committed.
- Update version/info in ChangeLog, for this you can:
To generate a changelog of a **major new version** x.y.0 (from a repo on branch develop), you can do
@@ -92,7 +92,7 @@ git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //
- Run `makepack-dolibarr.pl` to check the generation of all packages. No need to publish them.
- Post a news message on dolibarr.org about the freeze by cloning a past news + relay the news url on social networks
- Post a news message on dolibarr.org about the freeze by cloning a past news + relay the news url on social networks. Include the content of the previously generated ChangeLog file into the news.
- Create a branch x.y (but only when version seems stable enough).
@@ -108,7 +108,7 @@ We suppose the branch x.y has already been created during the beta (see previous
- Check there is no pending open security issue: List can be found here: https://github.com/Dolibarr/dolibarr/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Priority%20-%20Critical%20or%20Security%22
- Check all files are committed.
- Check that all files on local working repository are committed.
- Update version/info in ChangeLog, for this:

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@
"npm": ">=5.6.0"
},
"dependencies": {
"zapier-platform-core": "15.0.1"
"zapier-platform-core": "17.5.0"
},
"devDependencies": {
"mocha": "^5.2.0",

View File

@@ -26,7 +26,7 @@
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path=dirname(__FILE__).'/';
$path = dirname(__FILE__).'/';
// Test si mode batch
$sapi_type = php_sapi_name();
@@ -41,12 +41,26 @@ require __DIR__. '/../../htdocs/master.inc.php';
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
// Global variables
$version = DOL_VERSION;
/*
* Parameters
* Main
*/
define('GEN_NUMBER_FACTURE', $argv[1] ?? 1);
@set_time_limit(0);
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
dol_syslog($script_file." launched with arg ".implode(',', $argv));
if (empty($argv[1])) {
print "Usage: $script_file nbofrecord\n";
print "Usage: $script_file 100\n";
print "\n";
exit(1);
}
define('GEN_NUMBER_FACTURE', ((int) $argv[1]) ?? 1);
$year = 2016;
$dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 1, 9, $year),
@@ -100,7 +114,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 12, 13, $year),
);
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -27,7 +27,7 @@
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path=dirname(__FILE__).'/';
$path = dirname(__FILE__).'/';
// Test si mode batch
$sapi_type = php_sapi_name();
@@ -47,12 +47,28 @@ include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
// Global variables
$version = DOL_VERSION;
/*
* Parameter
* Main
*/
define('GEN_NUMBER_COMMANDE', $argv[1] ?? 10);
@set_time_limit(0);
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
dol_syslog($script_file." launched with arg ".implode(',', $argv));
if (empty($argv[1])) {
print "Usage: $script_file nbofrecord\n";
print "Usage: $script_file 100\n";
print "\n";
exit(1);
}
define('GEN_NUMBER_COMMANDE', ((int) $argv[1]) ?? 10);
$year = 2016;
$dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 1, 9, $year),
@@ -106,7 +122,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 12, 13, $year),
);
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if ($ret <= 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -27,7 +27,7 @@
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path=dirname(__FILE__).'/';
$path = dirname(__FILE__).'/';
// Test si mode batch
$sapi_type = php_sapi_name();
@@ -46,15 +46,28 @@ include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
// Global variables
$version = DOL_VERSION;
/*
* Parameters
* Main
*/
define('GEN_NUMBER_PRODUIT', $argv[1] ?? 100);
@set_time_limit(0);
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
dol_syslog($script_file." launched with arg ".implode(',', $argv));
if (empty($argv[1])) {
print "Usage: $script_file nbofrecord\n";
print "Usage: $script_file 100\n";
print "\n";
exit(1);
}
$ret=$user->fetch('', 'admin');
define('GEN_NUMBER_PRODUIT', ((int) $argv[1]) ?? 100);
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;
@@ -106,15 +119,22 @@ if ($resql) {
print "Generates ".GEN_NUMBER_PRODUIT." products\n";
for ($s = 0; $s < GEN_NUMBER_PRODUIT; $s++) {
print "Product ".$s;
$produit = new Product($db);
$produit->type = mt_rand(0, 1);
$produit->status = 1;
$produit->status = mt_rand(0, 1);
$produit->status_buy = mt_rand(0, 1);
$produit->finished = mt_rand(0, 1);
$produit->stockable_product = mt_rand(0, 1);
$produit->ref = ($produit->type ? 'S' : 'P').time().$s;
$produit->label = 'Label '.time().$s;
$produit->description = 'Description '.time().$s;
$produit->description = 'This is a long description of '.$produit->ref;
$produit->price = mt_rand(1, 999.99);
$produit->tva_tx = "20.0";
$ret=$produit->create($user);
$ret = $produit->create($user);
if ($ret < 0) {
print "Error $ret - ".$produit->error."\n";
} else {

View File

@@ -27,7 +27,7 @@
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
$path=dirname(__FILE__).'/';
$path = dirname(__FILE__).'/';
// Test si mode batch
$sapi_type = php_sapi_name();
@@ -44,11 +44,27 @@ require_once DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php";
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
// Global variables
$version = DOL_VERSION;
/*
* Parameters
* Main
*/
define('GEN_NUMBER_PROPAL', $argv[1] ?? 10);
@set_time_limit(0);
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
dol_syslog($script_file." launched with arg ".implode(',', $argv));
if (empty($argv[1])) {
print "Usage: $script_file nbofrecord\n";
print "Usage: $script_file 100\n";
print "\n";
exit(1);
}
define('GEN_NUMBER_PROPAL', ((int) $argv[1]) ?? 10);
$year = 2016;
$dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 1, 9, $year),
@@ -102,7 +118,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
mktime(12, 0, 0, 12, 13, $year),
);
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -49,15 +49,29 @@ include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
$listoftown = array("Auray","Baden","Vannes","Pirouville","Haguenau","Souffelweiersheim","Illkirch-Graffenstaden","Lauterbourg","Picauville","Sainte-Mère Eglise","Le Bono");
$listoflastname = array("Joe","Marc","Steve","Laurent","Nico","Isabelle","Dorothee","Saby","Brigitte","Karine","Jose-Anne","Celine","Virginie");
// Global variables
$version = DOL_VERSION;
/*
* Parameter
* Main
*/
define('GEN_NUMBER_SOCIETE', $argv[1] ?? 10);
@set_time_limit(0);
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
dol_syslog($script_file." launched with arg ".implode(',', $argv));
if (empty($argv[1])) {
print "Usage: $script_file nbofrecord\n";
print "Usage: $script_file 100\n";
print "\n";
exit(1);
}
define('GEN_NUMBER_SOCIETE', ((int) $argv[1]) ?? 10);
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$delimiter=',';
$enclosure='"';
$linelength=10000;
$escape='/';
$delimiter = ',';
$enclosure = '"';
$linelength = 10000;
$escape = '/';
// Global variables
$version=DOL_VERSION;
$confirmed=1;
$error=0;
$version = DOL_VERSION;
$confirmed = 1;
$error = 0;
/*
@@ -71,15 +71,15 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [defaultlang] [startlinenb] [endlinenb]\n";
print "Usage: $script_file test myfilepath.csv fr_FR 2 1002\n";
print "\n";
exit(-1);
exit(1);
}
if (! file_exists($filepath)) {
print "Error: File ".$filepath." not found.\n";
print "\n";
exit(-1);
exit(1);
}
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$delimiter=',';
$enclosure='"';
$linelength=10000;
$escape='/';
$delimiter = ',';
$enclosure = '"';
$linelength = 10000;
$escape = '/';
// Global variables
$version=DOL_VERSION;
$confirmed=1;
$error=0;
$version = DOL_VERSION;
$confirmed = 1;
$error = 0;
/*
@@ -71,15 +71,15 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
print "Usage: $script_file test myfilepath.csv 2 1002\n";
print "\n";
exit(-1);
exit(1);
}
if (! file_exists($filepath)) {
print "Error: File ".$filepath." not found.\n";
print "\n";
exit(-1);
exit(1);
}
$ret=$user->fetch('', 'admin');
$ret = $user->fetch('', 'admin');
if (! $ret > 0) {
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
exit;

View File

@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
$delimiter=',';
$enclosure='"';
$linelength=10000;
$escape='/';
$delimiter = ',';
$enclosure = '"';
$linelength = 10000;
$escape = '/';
// Global variables
$version=DOL_VERSION;
$confirmed=1;
$error=0;
$version = DOL_VERSION;
$confirmed = 1;
$error = 0;
/*
@@ -71,12 +71,12 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
print "Usage: $script_file test myfilepath.csv 2 1002\n";
print "\n";
exit(-1);
exit(1);
}
if (! file_exists($filepath)) {
print "Error: File ".$filepath." not found.\n";
print "\n";
exit(-1);
exit(1);
}
$ret=$user->fetch('', 'admin');

View File

@@ -32,7 +32,7 @@ $path=__DIR__.'/';
// Test si mode batch
if (substr($sapi_type, 0, 3) == 'cgi') {
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
exit(-1);
exit(1);
}
// Recupere root dolibarr
@@ -187,13 +187,13 @@ if (empty($mode) || ! in_array($mode, array('test','confirm'))) {
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
print "\n";
print "option can be ".implode(',', array_keys($sqls))."\n";
exit(-1);
exit(1);
}
if (empty($option)) {
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
print "\n";
print "option must be defined with a value in list ".implode(',', array_keys($sqls))."\n";
exit(-1);
exit(1);
}
if ($option != 'all') {
$listofoptions=explode(',', $option);
@@ -202,7 +202,7 @@ if ($option != 'all') {
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
print "\n";
print "option '".$cursoroption."' must be in list ".implode(',', array_keys($sqls))."\n";
exit(-1);
exit(1);
}
}
}
@@ -211,7 +211,7 @@ if (empty($date) || (! preg_match('/\d\d\d\d\-\d\d\-\d\d$/', $date) && $date !=
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
print "\n";
print "date can be 'all' or 'YYYY-MM-DD' to delete record before YYYY-MM-DD\n";
exit(-1);
exit(1);
}
if ($date == 'all') {

View File

@@ -65051,7 +65051,7 @@ INSERT INTO `llx_const` VALUES
(11890,'MAIN_AGENDA_ACTIONAUTO_USER_CREATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11891,'MAIN_AGENDA_ACTIONAUTO_USER_MODIFY',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11892,'MAIN_AGENDA_ACTIONAUTO_USER_DELETE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11893,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'dolcrypt:AES-256-CTR:9eebc9ac2c57a4ec:ww==','chaine',0,'','2023-03-01 16:57:33'),
(11893,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11894,'MAIN_AGENDA_ACTIONAUTO_USER_ENABLEDISABLE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11895,'MAIN_AGENDA_ACTIONAUTO_BOM_VALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
(11896,'MAIN_AGENDA_ACTIONAUTO_BOM_UNVALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
@@ -65205,7 +65205,6 @@ INSERT INTO `llx_const` VALUES
(14411,'MARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
(14412,'MARKETPLACE_SELLERS_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
(14413,'MARKETPLACE_MINIMUM_PAYOUT_AMOUNT',1,'50','chaine',0,'','2025-02-05 14:08:06'),
(14417,'MARKETPLACE_SECRET_KEY',1,'dolcrypt:AES-256-CTR:a113efb19906f2be:q6ZG+E22cA==','chaine',0,'','2025-02-05 14:09:55'),
(14459,'MARKETPLACE_PAYMENT_IN_FRAME',1,'1','chaine',0,'','2025-02-05 14:33:21'),
(14491,'HELLOASSO_BANK_ACCOUNT_FOR_PAYMENTS',1,'6','chaine',0,'','2025-02-06 12:52:19'),
(14521,'MAIN_MAIL_SENDMODE_PASSWORDRESET',1,'default','chaine',0,'','2025-02-12 18:07:29'),
@@ -65251,7 +65250,7 @@ INSERT INTO `llx_const` VALUES
(15001,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'','2025-03-03 02:52:32'),
(15002,'PROPOSAL_FREE_TEXT',1,'Ceci est <a href=\"https://www.dolibarr.org\">un lien</a>','chaine',0,'','2025-03-03 02:52:32'),
(15004,'PDF_SECURITY_ENCRYPTION',1,'0','chaine',1,'','2025-03-03 02:53:28'),
(15007,'MARKETPLACE_PUBLIC_API_KEY',1,'dolcrypt:AES-256-CTR:d515f8d303aad816:+32sG1DvuxkMOYlMzFOY6Y1VhKf5r+dvMfz2e+6EjHU=','chaine',0,'','2025-03-03 16:22:48'),
(15007,'MARKETPLACE_PUBLIC_API_KEY',1,'demokey','chaine',0,'','2025-03-03 16:22:48'),
(15011,'MAIN_ENABLE_COMMUNITY_REPO',1,'1','chaine',1,'','2025-03-03 16:54:48'),
(15020,'MAIN_ENABLE_DOLISTORE',1,'0','chaine',1,'','2025-03-04 22:03:12'),
(15161,'MAIN_MODULE_OPENIDCONNECT',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-03-06 15:18:21'),
@@ -65304,7 +65303,7 @@ INSERT INTO `llx_const` VALUES
(15630,'MULTICURRENCY_APP_ID',1,'knJn9aj77LqcGtHp9m6rRWB5iD1yhfRO','chaine',0,'','2025-03-21 12:43:49'),
(15726,'EMAILING_USE_ADVANCED_SELECTOR',1,'1','chaine',0,'','2025-03-25 11:08:47'),
(15731,'CONTRACT_ALLOW_ONLINESIGN',1,'0','chaine',0,'','2025-03-25 12:47:09'),
(15746,'MULTICURRENCY_APP_KEY',1,'dolcrypt:AES-256-CTR:a972ff0c9e92c932:dqOrWexGkIENOk0Fen4hKMCN+jxY2ou0EDwmV1pk2uQ=','chaine',0,'','2025-03-25 15:03:23'),
(15746,'MULTICURRENCY_APP_KEY',1,'demokey','chaine',0,'','2025-03-25 15:03:23'),
(15747,'MULTICURRENCY_APP_ENDPOINT',1,'https://api.apilayer.com/currency_data/live?base=__MULTICURRENCY_APP_SOURCE__','chaine',0,'','2025-03-25 15:03:23'),
(15752,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_CREATE',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
(15753,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_MODIFY',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
@@ -65447,12 +65446,12 @@ INSERT INTO `llx_const` VALUES
(17506,'ACCOUNTING_PRODUCT_MODE',1,'ACCOUNTANCY_SELL','chaine',0,'','2025-04-03 18:15:02'),
(17586,'FACTURE_ADDON',1,'mod_facture_mars','chaine',0,'','2025-04-05 14:25:19'),
(17777,'AI_API_SERVICE',1,'mistral','chaine',0,'','2025-04-07 23:24:36'),
(17778,'AI_API_CHATGPT_KEY',1,'dolcrypt:AES-256-CTR:9613a045bab6c491:GZp61Q3TMSMF/iTVCl/0QXXkGcMsTJetGBR5Zy6nLac=','chaine',0,'','2025-04-07 23:24:36'),
(17778,'AI_API_CHATGPT_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
(17779,'AI_API_CHATGPT_URL',1,'https://api.openai.com/v1/','chaine',0,'','2025-04-07 23:24:36'),
(17780,'AI_API_GROQ_URL',1,'https://api.groq.com/openai/','chaine',0,'','2025-04-07 23:24:36'),
(17781,'AI_API_MISTRAL_KEY',1,'dolcrypt:AES-256-CTR:1abe518475f89cfa:LNtWUSvYyIf8LQ/JEtpuu2ZrorjJMUxRFZG4VmmEn7o=','chaine',0,'','2025-04-07 23:24:36'),
(17781,'AI_API_MISTRAL_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
(17782,'AI_API_MISTRAL_URL',1,'https://api.mistral.ai/v1/','chaine',0,'','2025-04-07 23:24:36'),
(17783,'AI_API_CUSTOM_KEY',1,'dolcrypt:AES-256-CTR:9733d785d0113ed2:+KXzk7ILKPq99LL2g9dpxGlprEWAScO26jEeFnpJBxQ=','chaine',0,'','2025-04-07 23:24:36'),
(17783,'AI_API_CUSTOM_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
(17784,'AI_API_CUSTOM_URL',1,'https://mydomainofapi.com/v1','chaine',0,'','2025-04-07 23:24:36'),
(17788,'SOCIETE_RIB_ALLOW_ONLINESIGN',1,'1','chaine',0,'','2025-04-08 08:59:48'),
(17803,'SOCIETE_ENABLE_PUBLIC',1,'1','chaine',1,'','2025-04-08 10:55:06'),
@@ -65506,7 +65505,7 @@ INSERT INTO `llx_const` VALUES
(18204,'MAIN_INFO_SOCIETE_OBJECT',1,'A company demo to show how Dolibarr ERP CRM is wonderfull','chaine',0,'','2025-04-16 19:50:19'),
(18205,'SOCIETE_FISCAL_MONTH_START',1,'4','chaine',0,'','2025-04-16 19:50:19'),
(18206,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2025-04-16 19:50:19'),
(18234,'MAIN_MODULE_DOLISTORE_API_KEY',1,'dolcrypt:AES-256-CTR:d4169f5ecebe9852:mSXcyJujXRYwvP1DmsaFgevA','chaine',1,'','2025-04-17 10:04:08'),
(18234,'MAIN_MODULE_DOLISTORE_API_KEY',1,'dolistorepublicapi','chaine',1,'','2025-04-17 10:04:08'),
(18241,'PROJET_VISIBILITY',1,'0','chaine',0,'','2025-04-18 11:17:47'),
(18242,'PROJECT_ENABLE_PUBLIC',1,'1','chaine',0,'','2025-04-18 11:17:47'),
(18243,'PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD',1,'-1','chaine',0,'','2025-04-18 11:17:47'),
@@ -65517,7 +65516,7 @@ INSERT INTO `llx_const` VALUES
(18256,'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT',1,'34','chaine',0,'','2025-04-18 11:21:49'),
(18257,'SERVICE_BOOTH_LOCATION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
(18258,'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
(18260,'EVENTORGANIZATION_SECUREKEY',1,'dolcrypt:AES-256-CTR:83f6e644d47eaf29:GIDq0w==','chaine',0,'','2025-04-18 13:46:59'),
(18260,'EVENTORGANIZATION_SECUREKEY',1,'demokey','chaine',0,'','2025-04-18 13:46:59'),
(18271,'MAIN_ENABLE_OVERWRITE_TRANSLATION',1,'1','chaine',0,'','2025-04-21 12:59:49'),
(18273,'RESOURCE_USED_IN_EVENT_CHECK',1,'1','chaine',0,'','2025-04-22 17:20:40'),
(18275,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2025-04-24 12:08:27'),
@@ -65556,8 +65555,6 @@ INSERT INTO `llx_const` VALUES
(18588,'TAWKTO_WIDGET_ID',1,'123','chaine',0,'','2025-05-12 08:36:50'),
(18678,'SELLYOURSAAS_ALLOW_SELECTION_OF_SERVICE',1,'1','chaine',0,'','2025-05-26 12:57:33'),
(18719,'SELLYOURSAAS_ALLOW_RESELLER_PROGRAM',1,'1','chaine',0,'','2025-05-26 13:41:52'),
(18722,'STRIPE_TEST_PUBLISHABLE_KEY',1,'dolcrypt:AES-256-CTR:d484ce93b5b8497d:T5UVYovfd4RjjYBmTt7Xipdly/dt5R7A/7TwBytAV6E=','chaine',0,'','2025-05-26 15:26:42'),
(18723,'STRIPE_TEST_SECRET_KEY',1,'dolcrypt:AES-256-CTR:eebc90c2ac9810a9:87fh2hsZr7l+dExy/ngsDP25FaoEkRfHkjdqKGulFBU=','chaine',0,'','2025-05-26 15:26:42'),
(18724,'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS',1,'4','chaine',0,'','2025-05-26 15:26:42'),
(18725,'STRIPE_USER_ACCOUNT_FOR_ACTIONS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
(18726,'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
@@ -65824,12 +65821,12 @@ LOCK TABLES `llx_contrat_extrafields` WRITE;
/*!40000 ALTER TABLE `llx_contrat_extrafields` DISABLE KEYS */;
INSERT INTO `llx_contrat_extrafields` VALUES
(1,'2023-01-19 12:39:56',2,NULL,NULL,NULL,'done',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(5,'2025-01-03 14:13:54',8,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:13:54',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:13:54',NULL,NULL,NULL,NULL,NULL,'testldr1d.with1.home.lan','osuo724k4hqa','dolcrypt:AES-256-CTR:ce01e4a8ade3c2ee:Rn1kmDfhbw0Eb8zpBI8=','0','testldr1d.with1.home.lan','dbntq7Wk89Mt','3306','dbuZe76P3B70','dolcrypt:AES-256-CTR:e0775c31971de7f3:YsE0Bi6lWG63zd537qc=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(6,'2025-01-03 14:17:40',9,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:17:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:17:40',NULL,NULL,NULL,NULL,NULL,'testldre.with1.home.lan','osuky642i38n','dolcrypt:AES-256-CTR:402192d99e39c190:5DrzVbVS5kac7ZQUchU=','0','testldre.with1.home.lan','dbnd3X892MlO','3306','dbuCbWmMi7O8','dolcrypt:AES-256-CTR:b22360d10ff565a0:DXpgecqzOn7X/3PQCo0=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(7,'2025-03-25 23:57:06',7,NULL,'DOLICLOUD','testldr1b-ABC','undeployed','127.0.0.1','2025-01-03 15:08:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-23 15:08:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1c.with1.home.lan','osu6viclw5if','dolcrypt:AES-256-CTR:281a87e3e9c5fccb:O/N7kTAeXiZaHqlEupE=','0','testldr1c.with1.home.lan','dbnrC5ydd7GC','3306','dbub5pLDMaTw','dolcrypt:AES-256-CTR:2e4a79eda1bf538a:PS7p579ZNsDQAycuq8o=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(8,'2025-01-03 14:26:46',5,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 14:59:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 14:59:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1.with1.home.lan','osu07jp64r9z','dolcrypt:AES-256-CTR:d94d86baf2f8483b:Op7TNgxhUwrSgbilZDo=','0','testldr1.with1.home.lan','dbnL4N55fzF6','3306','dbuH73bA3QfX','dolcrypt:AES-256-CTR:535b648bbae2f12a:VEc+yVQFXPbxOqhIItQ=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(9,'2025-03-25 21:53:24',6,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 15:05:10',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2026-01-19 15:05:10','2025-01-03 15:27:11','127.0.0.1',NULL,NULL,NULL,'testldr1b.with1.home.lan','osu7xkedfm24','dolcrypt:AES-256-CTR:fa3d910f3fbfdad2:o+C4Ksn2W5veGS5R5Ag=','0','testldr1b.with1.home.lan','dbnVmeQT2M8i','3306','dbuK7VsLk5c8','dolcrypt:AES-256-CTR:ccb4d385381f4b4b:lDR/2Y6QjlNt3onLr3U=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(10,'2025-01-28 16:39:40',10,NULL,'DOLICLOUD','Azerty01','processing','127.0.0.1','2025-01-28 17:39:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-02-12 17:39:40',NULL,NULL,NULL,NULL,NULL,'aaa.with1.home.lan','osuy6m0f5xtl','dolcrypt:AES-256-CTR:54fed010c0ce1d1c:8eXkLuQl7gNbC9RZEPM=','0','aaa.with1.home.lan','dbnSE8YB6jGm','3306','dbu8MhF1Dwcl','dolcrypt:AES-256-CTR:44f9f66acc719394:Bi7LNv+Vf6cf2ySF2aw=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(5,'2025-01-03 14:13:54',8,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:13:54',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:13:54',NULL,NULL,NULL,NULL,NULL,'testldr1d.with1.home.lan','osuo724k4hqa','demokey','0','testldr1d.with1.home.lan','dbntq7Wk89Mt','3306','dbuZe76P3B70','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(6,'2025-01-03 14:17:40',9,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:17:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:17:40',NULL,NULL,NULL,NULL,NULL,'testldre.with1.home.lan','osuky642i38n','demokey','0','testldre.with1.home.lan','dbnd3X892MlO','3306','dbuCbWmMi7O8','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(7,'2025-03-25 23:57:06',7,NULL,'DOLICLOUD','testldr1b-ABC','undeployed','127.0.0.1','2025-01-03 15:08:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-23 15:08:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1c.with1.home.lan','osu6viclw5if','demokey','0','testldr1c.with1.home.lan','dbnrC5ydd7GC','3306','dbub5pLDMaTw','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(8,'2025-01-03 14:26:46',5,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 14:59:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 14:59:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1.with1.home.lan','osu07jp64r9z','demokey','0','testldr1.with1.home.lan','dbnL4N55fzF6','3306','dbuH73bA3QfX','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(9,'2025-03-25 21:53:24',6,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 15:05:10',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2026-01-19 15:05:10','2025-01-03 15:27:11','127.0.0.1',NULL,NULL,NULL,'testldr1b.with1.home.lan','osu7xkedfm24','demokey','0','testldr1b.with1.home.lan','dbnVmeQT2M8i','3306','dbuK7VsLk5c8','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(10,'2025-01-28 16:39:40',10,NULL,'DOLICLOUD','Azerty01','processing','127.0.0.1','2025-01-28 17:39:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-02-12 17:39:40',NULL,NULL,NULL,NULL,NULL,'aaa.with1.home.lan','osuy6m0f5xtl','demokey','0','aaa.with1.home.lan','dbnSE8YB6jGm','3306','dbu8MhF1Dwcl','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(13,'2025-06-26 17:54:04',14,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `llx_contrat_extrafields` ENABLE KEYS */;
UNLOCK TABLES;
@@ -78962,10 +78959,10 @@ INSERT INTO `llx_societe_rib` VALUES
(2,1,'ban',10,'2023-02-06 14:28:24','2025-04-08 08:59:57','NLTechno','aaaa','','','','','LIABLT2XXXX',NULL,'FR76 1223 9000 0740 4608 0100 091',NULL,'','','',1,NULL,NULL,NULL,'sepamandate','societe/10/Mandat SEPA 10-NLTechno-UMR-CU1212-0005-2-1675704504.pdf','UMR-CU1212-0005-2-1675704504',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
(3,1,'ban',33,'2023-02-21 21:33:04','2023-02-22 00:33:04','aaainlux','aaa','','','','','aaa',NULL,'aaa',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'UMR-2302212133-3-CU2212-00026',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
(4,1,'card',33,'2023-02-21 22:26:00','2023-02-22 01:26:00','aa','',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'aa',NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'',1,2032,'FR',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(5,1,'ban',1,'2023-03-08 06:41:28','2025-06-26 22:04:48','Indian SAS RIB','dfgdfgfd','','','','','LIABLT2XXXX',NULL,'dolcrypt:AES-256-CTR:6c5e3bcfba8c0873:sGWo/KYhvG8bw/oDC1uxal95cpvQLuKdzDGk86DYpdV2',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2303080641-5-CU1212-0007',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
(6,1,'ban',39,'2025-01-03 16:11:35','2025-01-03 15:11:37','test','test','','','','','LIABLT2XXXX',NULL,'dolcrypt:AES-256-CTR:d0fbb5f8f1882d9f:QruV8ONPL6fQK4ew6aDzI4VSdBU=',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'8ANKF3PEOTZ53TR4','2025-01-03','RCUR',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdCXECxfvxGwHdwPnN4agJk',0,'mandate_1QdCXECxfvxGwHdwIdo2yLTd',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
(7,1,'ban',39,'2025-01-03 16:21:39','2025-01-03 15:21:56','Bank Testldr1','test2','','','','','',NULL,'dolcrypt:AES-256-CTR:2143648571f74d32:ohNxpDnLCHNMP97+7XVn5i7zLNc=',NULL,'','','',0,NULL,NULL,NULL,NULL,NULL,'SDB8CASXISKK0R7L','2025-01-03','FRST',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdChDCxfvxGwHdw57zEzGtC',1,'mandate_1QdChDCxfvxGwHdwvIt0244D',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
(9,1,'ban',62,'2025-06-26 21:41:42','2025-06-26 21:41:42','Banque ddd','Banque ddd','','','','','aaa',NULL,'dolcrypt:AES-256-CTR:ef6a60cae760f8d1:Q8YW',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2506262141-9-CU2506-0003',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL);
(5,1,'ban',1,'2023-03-08 06:41:28','2025-06-26 22:04:48','Indian SAS RIB','dfgdfgfd','','','','','LIABLT2XXXX',NULL,'val1',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2303080641-5-CU1212-0007',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
(6,1,'ban',39,'2025-01-03 16:11:35','2025-01-03 15:11:37','test','test','','','','','LIABLT2XXXX',NULL,'val2',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'8ANKF3PEOTZ53TR4','2025-01-03','RCUR',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdCXECxfvxGwHdwPnN4agJk',0,'mandate_1QdCXECxfvxGwHdwIdo2yLTd',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
(7,1,'ban',39,'2025-01-03 16:21:39','2025-01-03 15:21:56','Bank Testldr1','test2','','','','','',NULL,'val3',NULL,'','','',0,NULL,NULL,NULL,NULL,NULL,'SDB8CASXISKK0R7L','2025-01-03','FRST',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdChDCxfvxGwHdw57zEzGtC',1,'mandate_1QdChDCxfvxGwHdwvIt0244D',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
(9,1,'ban',62,'2025-06-26 21:41:42','2025-06-26 21:41:42','Banque ddd','Banque ddd','','','','','aaa',NULL,'val4',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2506262141-9-CU2506-0003',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `llx_societe_rib` ENABLE KEYS */;
UNLOCK TABLES;
@@ -79918,13 +79915,13 @@ CREATE TABLE `llx_user` (
LOCK TABLES `llx_user` WRITE;
/*!40000 ALTER TABLE `llx_user` DISABLE KEYS */;
INSERT INTO `llx_user` VALUES
(1,'2012-07-08 13:20:11','2025-03-13 09:13:00',NULL,NULL,'aeinstein',0,'','',NULL,1,NULL,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,'dolcrypt:AES-256-CTR:10fbb3f05469219f:vCpWlcfDIoN6yOj2yGQ1WsOCfB8i2cjEKOAhNzPwf/A=','Einstein','Albert','','123456789','','','','aeinstein@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,'',0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(1,'2012-07-08 13:20:11','2025-03-13 09:13:00',NULL,NULL,'aeinstein',0,'','',NULL,1,NULL,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,'demokey','Einstein','Albert','','123456789','','','','aeinstein@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,'',0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(2,'2012-07-08 13:54:48','2025-05-05 12:08:56',NULL,NULL,'demo',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Doe','David','Trainee','09123123','','','','daviddoe@example.com','','[]','',0,NULL,NULL,NULL,'','2018-07-30 23:10:54','2018-07-30 23:04:17',NULL,'',1,'person9.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,35.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(3,'2012-07-11 16:18:59','2025-05-05 14:48:17',NULL,NULL,'pcurie',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','','[]','',0,NULL,NULL,2,'','2014-12-21 17:38:55',NULL,NULL,'',1,'dolicloud_avent_saas.png',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,39.00000000,'','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(4,'2015-01-23 17:52:27','2025-05-05 14:48:18',NULL,NULL,'bbookkeeper',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','bbookkeeper@example.com','','{\"skype\":\"skypebbookkeeper\"}','',0,17,6,NULL,'','2015-02-25 10:18:41','2015-01-23 17:53:20',NULL,'',1,'person8.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,16.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(10,'2017-10-03 11:47:41','2023-03-15 15:07:13',NULL,NULL,'mcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Marie','','','','','','mcurie@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,NULL,0,NULL,NULL,NULL,44.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(11,'2017-10-05 09:07:52','2023-03-15 15:07:13',NULL,NULL,'zzeceo',1,NULL,'',NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Zeceo','Zack','President - CEO','','','','','zzeceo@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'','2017-10-05 22:48:08','2017-10-05 21:18:46',NULL,'',1,'person4.jpeg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,NULL,NULL,NULL,39.00000000,NULL,'','2019-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(12,'2017-10-05 09:09:46','2025-03-27 23:27:43',NULL,12,'admin',0,'','',NULL,1,NULL,NULL,'$2y$10$MiDs0GVn0ksYbOHw8XgAf.oEihYvLI0ZYd0PSVq7/6ret6gifWSh6',NULL,'dolcrypt:AES-256-CTR:10fbb3f05469219f:5nJ/t5SbepR61dTsy2pTYfGEZS5j+bj3Ds0FN0OVM5M=','Adminson','Alice','Admin Technical','','','','','laurent@destailleur.fr','','[]','Alice - 123',1,NULL,NULL,NULL,'kmlk','2025-07-10 13:00:34','2025-07-09 16:26:18',NULL,'',1,NULL,NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,'127.0.0.1','127.0.0.1','2025-03-27 23:27:43',NULL,NULL,'',NULL,'2025-03-27 23:27:38',NULL),
(12,'2017-10-05 09:09:46','2025-03-27 23:27:43',NULL,12,'admin',0,'','',NULL,1,NULL,NULL,'$2y$10$MiDs0GVn0ksYbOHw8XgAf.oEihYvLI0ZYd0PSVq7/6ret6gifWSh6',NULL,'demokey','Adminson','Alice','Admin Technical','','','','','laurent@destailleur.fr','','[]','Alice - 123',1,NULL,NULL,NULL,'kmlk','2025-07-10 13:00:34','2025-07-09 16:26:18',NULL,'',1,NULL,NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,'127.0.0.1','127.0.0.1','2025-03-27 23:27:43',NULL,NULL,'',NULL,'2025-03-27 23:27:38',NULL),
(13,'2017-10-05 21:29:35','2025-04-15 13:30:44',NULL,NULL,'ccommercy',1,'','',NULL,1,NULL,NULL,'$2y$10$KTaKE0NyYyJSCogsxtwR.eADst17XYMrOWlsFfVLR60IbjANIVLHK',NULL,NULL,'Commercy','Coraly','Commercial leader','','','','','ccommercy@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person7.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,1890.00000000,NULL,NULL,25.00000000,'woman','','2018-09-11 00:00:00',NULL,NULL,'1998-12-08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
(14,'2017-10-05 21:33:33','2023-03-15 15:07:36',NULL,NULL,'sscientol',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Scientol','Sam','Scientist leader','','','','','sscientol@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person3.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,3500.00000000,NULL,NULL,39.00000000,NULL,NULL,'2018-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(16,'2017-10-05 22:47:52','2025-01-30 14:37:22',NULL,NULL,'ccommerson',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Charle1','Commerson','Sale representative','','','','','ccommerson@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 23:46:24','2017-10-05 23:37:31',NULL,'',0,'person1.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,2900.00000000,NULL,NULL,39.00000000,NULL,NULL,'2019-09-01 00:00:00',NULL,NULL,'1976-02-05',NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
@@ -80120,7 +80117,7 @@ INSERT INTO `llx_user_param` VALUES
(12,1,'MAIN_BOXES_11','1'),
(12,1,'MAIN_BOXES_2','1'),
(12,1,'MAIN_BOXES_27','1'),
(12,1,'MAIN_LANG_DEFAULT','fr_FR'),
(12,1,'MAIN_LANG_DEFAULT','auto'),
(12,1,'MAIN_SELECTEDFIELDS_/dolibarr_4.0/htdocs/adherents/list.php','d.zip,d.ref,d.lastname,d.firstname,d.company,d.login,d.morphy,t.libelle,d.email,d.datefin,d.statut,'),
(12,1,'MAIN_SELECTEDFIELDS_accountancycustomerlist','l.rowid,f.ref,f.datef,p.ref,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.data_suggest,aa.account_number,'),
(12,1,'MAIN_SELECTEDFIELDS_accountancysupplierlines','l.rowid,f.ref,f.datef,p.ref,l.description,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.account_number,'),

View File

@@ -84,7 +84,7 @@ if (empty($sourceserver) || empty($server) || empty($login) || empty($sourcefile
print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh databaseserver databasename loginbase passbase\n";
print "Return code: 0 if success, <>0 if error\n";
print "Warning, this script may take a long time.\n";
exit(-1);
exit(1);
}
@@ -106,7 +106,7 @@ $connection = ssh2_connect($server, 22);
if ($connection) {
if (!@ssh2_auth_password($connection, $login, $password)) {
dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password), LOG_ERR);
exit(-5);
exit(5);
} else {
//$stream = ssh2_exec($connection, '/usr/bin/php -i');
/*
@@ -143,7 +143,7 @@ if ($connection) {
}
} else {
print 'Failed to connect to ssh2 to '.$server;
exit(-6);
exit(6);
}

View File

@@ -72,7 +72,7 @@ print "Update dates to current year for database name = ".$db->database_name."\n
if (empty($confirm)) {
print "Usage: $script_file confirm\n";
print "Return code: 0 if success, <>0 if error\n";
exit(-1);
exit(1);
}

View File

@@ -2,33 +2,33 @@
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i"
#php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com"
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com"
php_admin_value open_basedir /tmp/:/home/.../htdocs:/home/.../dolibarr_documents:
# Add this to use a custom apparmor profile when using apache php handler
<IfModule mod_apparmor.c>
AADefaultHatName sellyoursaas-instances
</IfModule>
# The URLs of the web site
ServerName myvirtualalias
ServerAlias myvirtualalias
UseCanonicalName On
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 20
AddDefaultCharset UTF-8
# Detect if we are using DoliDroid
#SetEnvIf User-Agent DoliDroid dolidroid
# The directory and permissions for the web site
DocumentRoot "/home/.../htdocs"
<Directory /home/.../htdocs/>
@@ -36,24 +36,19 @@
Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
Require all granted
# To restrict access by a HTTP basic auth
# To restrict access by a HTTP basic auth
#AuthType Basic
#AuthName "Authenticate to backoffice"
#AuthUserFile /etc/apache2/.htpasswd
#require valid-user
</Directory>
# Leaving /public and /api, /dav, .well_known but also wrappers for document, viewimage and public json/img accessible to everyone
# Leaving /public, /dav and /.well_known directory accessible to everyone
<Directory /home/admin/wwwroot/dolibarr/htdocs/public/>
AuthType None
Satisfy any
Require all granted
</Directory>
<Directory /home/admin/wwwroot/dolibarr/htdocs/api/>
AuthType None
Satisfy any
Require all granted
</Directory>
<Directory /home/admin/wwwroot/dolibarr/htdocs/dav/>
AuthType None
Satisfy any
@@ -64,6 +59,14 @@
Satisfy any
Require all granted
</Directory>
# You may also want to allow access to everyone to wrappers for api, document, viewimage, manifest and public json/img
# but if you can avoid it, it is better.
<Files /home/admin/wwwroot/dolibarr/htdocs/api/index.php>
AuthType None
Satisfy any
Require all granted
</Files>
<Files ~ "(document\.php|viewimage\.php|\.js\.php|\.json\.php|\.js|\.css\.php|\.css|\.gif|\.png|\.svg|\.woff2|favicon\.ico)$">
AuthType None
Satisfy any
@@ -71,11 +74,11 @@
</Files>
# Log directives
# Log directives
ErrorLog /var/log/apache2/myvirtualalias_error_log
TransferLog /var/log/apache2/myvirtualalias_access_log
# Compress is done on resources of type php pages, text file export, css and javascript
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
AddType text/javascript .jgz
@@ -92,21 +95,21 @@
ExpiresByType text/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/javascript A2592000
# To enable the SSL if the certificate file exists
<IfFile "/etc/letsencrypt/live/www.mydomain.com/cert.pem">
SSLEngine On
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem
#RewriteEngine on
#RewriteCond %{SERVER_PORT} ^80$
#RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</IfFile>
</VirtualHost>

View File

@@ -1,6 +0,0 @@
= To install Bruno on Ubuntu =
sudo snap install bruno
Then create a project.
Then you can import the definition of all API from Bruno by using the URL provided in Dolibarr API module.

View File

@@ -1,9 +0,0 @@
{
"version": "1",
"name": "Dolibarr API Explorer",
"type": "collection",
"ignore": [
"node_modules",
".git"
]
}

View File

@@ -1,7 +0,0 @@
headers {
DOLAPIKEY: {{DOLAPIKEY}}
}
auth {
mode: bearer
}

View File

@@ -1,6 +0,0 @@
vars {
base_url: http://localhost/dolibarr_dev/htdocs/api/index.php
}
vars:secret [
DOLAPIKEY
]

View File

@@ -1,11 +0,0 @@
meta {
name: Get status -Dolibarr version- --
type: http
seq: 1
}
get {
url: {{base_url}}/status
body: none
auth: none
}

View File

@@ -28,8 +28,15 @@
<rule ref="Internal.NoCodeFound" />
<!-- Rules from Generic Standard -->
<!--
<rule ref="PSR12.Files.OpenTag">
<properties>
<property name="ignoreIndent" value="true"/>
</properties>
</rule>
<exclude name="PSR12.WhiteSpace.ScopeIndent"/>
-->
<!-- We want to allow empty statement: It allows to put some code comments into the else for examples -->
<rule ref="Generic.CodeAnalysis.EmptyStatement">
@@ -134,7 +141,7 @@
<rule ref="Generic.Formatting.SpaceAfterCast" />
<rule ref="Generic.Functions.CallTimePassByReference" />
<!-- <rule ref="Generic.Functions.CallTimePassByReference" /> This rule does not exists anymore -->
<rule ref="Generic.Functions.FunctionCallArgumentSpacing" />

5
dev/setup/git/README.md Normal file
View File

@@ -0,0 +1,5 @@
To enable a default git commit template:
git config --local commit.template gitmessage
To enable the git hook pre-commit, to make CI validation at commit:
See the file pre-commit/README.md

12
dev/setup/git/hooks/msg-commit Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/sh
# Hook to force a prefix on commits
commit_msg_file=$1
first_line=$(head -n1 "$commit_msg_file")
if echo "$first_line" | grep -Eqi '^(QUAL|SEC|PERF|FIX|CLOSE|NEW|Clean code|Debug[CSS)'; then
exit 0
else
echo "The commit message must start with QUAL, SEC, PERF, FIX, CLOSE, NEW, Clean code, Debug, CSS ..."
exit 1
fi

View File

@@ -12,10 +12,10 @@ HERE="$(cd "$(dirname "$0")" && pwd)"
ARGS+=(--hook-dir "$HERE" -- "$@")
if [ -x "$INSTALL_PYTHON" ]; then
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" 1>&2
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" 1>&2
elif command -v pre-commit > /dev/null; then
exec pre-commit "${ARGS[@]}" 1>&2
exec pre-commit "${ARGS[@]}" 1>&2
else
echo 'pre-commit not found. Did you forget to activate your virtualenv?' 1>&2
exit 1
echo 'pre-commit not found. Did you forget to activate your virtualenv?' 1>&2
exit 1
fi

View File

@@ -0,0 +1,12 @@
# Example of logrotate file to put into /etc/logrotate.d to make the rotation of
# the dolibarr log files.
/home/admin/wwwroot/dolibarr_documents/*.log {
su admin www-data
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 660 admin www-data
}

View File

@@ -124,38 +124,47 @@ $urlgit = 'https://github.com/Dolibarr/dolibarr/blob/develop/';
$output_arrproj = array();
$output_arrdep = array();
if ($dirscc != 'disabled') {
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc . --exclude-dir=htdocs/includes,htdocs/custom,htdocs/theme/common/fontawesome-5,htdocs/theme/common/octicons';
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc . --exclude-dir=htdocs/custom,htdocs/includes,htdocs/public/includes,htdocs/theme/common/fontawesome-5,htdocs/public/theme/common/fontawesome-5';
print 'Execute SCC to count lines of code in project: '.$commandcheck."\n";
$resexecproj = 0;
exec($commandcheck, $output_arrproj, $resexecproj);
// Count lines of code of dependencies
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc htdocs/includes htdocs/theme/common/fontawesome-5 htdocs/theme/common/octicons';
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc htdocs/includes htdocs/public/includes htdocs/theme/common/fontawesome-5 htdocs/public/theme/common/fontawesome-5';
print 'Execute SCC to count lines of code in dependencies: '.$commandcheck."\n";
$resexecdep = 0;
exec($commandcheck, $output_arrdep, $resexecdep);
}
// Get technical debt with PHPStan
$output_arrtd = array();
$output_arrver = array();
if ($dirphpstan != 'disabled') {
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --version';
print 'Execute PHPStan to get the version: '.$commandcheck."\n";
$resexectd = 0;
exec($commandcheck, $output_arrtd, $resexectd);
$resexecver = 0;
exec($commandcheck, $output_arrver, $resexecver);
}
$phpstanversion = $output_arrtd[0];
$phpstanversion = $output_arrver[0];
$output_arrtd = array();
if ($dirphpstan != 'disabled') {
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --level='.$PHPSTANLEVEL.' -v analyze -a dev/build/phpstan/bootstrap.php --memory-limit 5G --error-format=github -c ~/preview.dolibarr.org/dolibarr/phpstan_apstats.neon';
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --level='.$PHPSTANLEVEL.' -v analyze -a dev/build/phpstan/bootstrap.php --memory-limit 5G --error-format=github -c phpstan_apstats.neon';
print 'Execute PHPStan to get the technical debt: '.$commandcheck."\n";
$resexectd = 0;
exec($commandcheck, $output_arrtd, $resexectd);
}
// Get technical debt with Phan
$output_arrverphan = array();
if ($dirphpstan != 'disabled') {
$commandcheck = ($dir_phan ? $dir_phan.DIRECTORY_SEPARATOR : '') .'phan --version';
print 'Execute Phan to get the version: '.$commandcheck."\n";
$resexecverphan = 0;
exec($commandcheck, $output_arrverphan, $resexecverphan);
}
$phpphanversion = $output_arrverphan[0];
$output_phan_json = array();
$res_exec_phan = 0;
if ($dir_phan != 'disabled') {
@@ -245,19 +254,20 @@ foreach (array('proj', 'dep') as $source) {
}
// Get stats on nb of commits
/*
$nbofmonth = 2;
$delay = (3600 * 24 * 30 * $nbofmonth);
// Get stats on nb of commits
$commandcheck = "git log --all --shortstat --no-renames --no-merges --use-mailmap --pretty=".escapeshellarg('format:%cI;%H;%aN;%aE;%ce;%s')." --since=".dol_print_date(dol_now() - $delay, '%Y-%m-%d'); // --since= --until=...
print 'Execute git log to get list of commits: '.$commandcheck."\n";
$output_arrglpu = array();
$resexecglpu = 0;
//exec($commandcheck, $output_arrglpu, $resexecglpu);
*/
// Get git information for security alerts
$nbofmonth = 3;
$nbofmonth = 6;
$delay = (3600 * 24 * 30 * $nbofmonth);
$arrayofalerts = array();
@@ -266,14 +276,14 @@ print 'Execute git log to get commits related to security: '.$commandcheck."\n";
$output_arrglpu = array();
$resexecglpu = 0;
exec($commandcheck, $output_arrglpu, $resexecglpu);
foreach ($output_arrglpu as $val) {
foreach ($output_arrglpu as $valgitlog) { // The most recent lines are first.
// Parse the line to split interesting data
$tmpval = cleanVal2($val);
$tmpval = cleanVal2($valgitlog);
if (preg_match('/(#yogosha|CVE|Sec:|Sec\s|Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Sec: Fix #..."
if (preg_match('/(#yogosha|CVE[\s\-]*\d|Sec:|Sec\s|Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Sec: Fix #..."
$alreadyfound = '';
$alreadyfoundcommitid = '';
foreach ($arrayofalerts as $val) {
foreach ($arrayofalerts as $val) { // Loop on already found alerts
if ($val['issueidyogosha'] && $val['issueidyogosha'] == $tmpval['issueidyogosha']) { // Already in list
$alreadyfound = 'yogosha';
$alreadyfoundcommitid = $val['commitid'];
@@ -289,7 +299,9 @@ foreach ($output_arrglpu as $val) {
$alreadyfoundcommitid = $val['commitid'];
break;
}
if ($val['title'] && $val['title'] == $tmpval['title']) { // Already in list
if ($val['title'] && $tmpval['title'] &&
(strpos($val['title'], $tmpval['title']) === 0 || strpos($val['title'], $tmpval['title']) > 0
|| strpos($tmpval['title'], $val['title']) === 0 || strpos($tmpval['title'], $val['title']) > 0)) { // Already in list
$alreadyfound = 'title';
$alreadyfoundcommitid = $val['commitid'];
break;
@@ -337,70 +349,22 @@ foreach ($output_arrglpu as $val) {
/*var_dump($tmpval['commitid'].' '.$alreadyfoundcommitid);
var_dump($arrayofalerts[$alreadyfoundcommitid]['branch']);
var_dump($tmpval);*/
$arrayofalerts[$alreadyfoundcommitid]['commitidbis'][] = $tmpval['commitid']; // Concat the new commitid to the list of commitidbis array of the already found case.
if (empty($arrayofalerts[$alreadyfoundcommitid]['issueid']) && !empty($tmpval['issueid'])) { // If not Github was defined, we set it.
$arrayofalerts[$alreadyfoundcommitid]['issueid'] = $tmpval['issueid'];
}
if ($arrayofalerts[$alreadyfoundcommitid]['title'] != $tmpval['title']) { // Concat label of the new line to the already found one (if it differs)
$arrayofalerts[$alreadyfoundcommitid]['title'] .= ', '.preg_replace('/\.$/', '', $tmpval['title']);
}
$arrayofalerts[$alreadyfoundcommitid]['branch'] = array_merge($arrayofalerts[$alreadyfoundcommitid]['branch'], $tmpval['branch']);
$arrayofalerts[$alreadyfoundcommitid]['commitidbis'][] = $tmpval['commitid'];
}
}
}
/*
//$urlgit = 'https://api.github.com/search/issues?q=is:pr+repo:Dolibarr/dolibarr+created:>'.dol_print_date(dol_now() - $delay, "%Y-%m");
$urlgit = 'https://api.github.com/search/commits?q=repo:Dolibarr/dolibarr+yogosha+created:>'.dol_print_date(dol_now() - $delay, "%Y-%m");
// Count lines of code of application
$newurl = $urlgit.'+CVE';
$result = getURLContent($newurl);
print 'Execute GET on github for '.$newurl."\n";
if ($result && $result['http_code'] == 200) {
$arrayofalerts1 = json_decode($result['content']);
foreach ($arrayofalerts1->items as $val) {
$tmpval = cleanVal($val);
if (preg_match('/CVE/i', $tmpval['title'])) {
$arrayofalerts[$tmpval['number']] = $tmpval;
}
}
} else {
print 'Error: failed to get github response';
exit(-1);
}
$newurl = $urlgit.'+yogosha';
$result = getURLContent($newurl);
print 'Execute GET on github for '.$newurl."\n";
if ($result && $result['http_code'] == 200) {
$arrayofalerts2 = json_decode($result['content']);
foreach ($arrayofalerts2->items as $val) {
$tmpval = cleanVal($val);
if (preg_match('/yogosha:/i', $tmpval['title'])) {
$arrayofalerts[$tmpval['number']] = $tmpval;
}
}
} else {
print 'Error: failed to get github response';
exit(-1);
}
$newurl = $urlgit.'+Sec:';
$result = getURLContent($newurl);
print 'Execute GET on github for '.$newurl."\n";
if ($result && $result['http_code'] == 200) {
$arrayofalerts3 = json_decode($result['content']);
foreach ($arrayofalerts3->items as $val) {
$tmpval = cleanVal($val);
if (preg_match('/Sec:/i', $tmpval['title'])) {
$arrayofalerts[$tmpval['number']] = $tmpval;
}
}
} else {
print 'Error: failed to get github response';
exit(-1);
}
*/
$timeend = time();
@@ -607,7 +571,7 @@ $html .= '<th class="right">Lines</th>';
$html .= '<th></th>';
$html .= '<th class="right">Blanks</th>';
$html .= '<th class="right">Comments</th>';
$html .= '<th class="right">Code</th>';
$html .= '<th class="right nowrap">Code (SLOC)</th>';
//$html .= '<td class="right">'.$val['Complexity'].'</td>';
$html .= '</tr>';
foreach (array('proj', 'dep') as $source) {
@@ -724,12 +688,6 @@ $html .= <<<END
END;
$html .= '<!-- ';
foreach ($output_arrglpu as $line) {
$html .= $line."\n";
}
$html .= ' -->';
$html .= '</div>';
$html .= '</section>'."\n";
@@ -877,7 +835,7 @@ if (count($output_phan_json) != 0) {
$title_security_short = "Last security issues";
$title_security = ($project ? "[".$project."] " : "").$title_security_short;
$html .= '<section class="chapter" id="linesofcode">'."\n";
$html .= '<section class="chapter" id="securityalerts">'."\n";
$html .= '<h2><span class="fas fa-code pictofixedwidth"></span>'.$title_security_short.' <span class="opacitymedium">(last '.($nbofmonth != 1 ? $nbofmonth.' months' : 'month').')</span></h2>'."\n";
$html .= '<div class="boxallwidth">'."\n";
@@ -953,7 +911,7 @@ foreach ($arrayofalerts as $key => $alert) {
}
$html .= '</td>';
// Description
// Title - Description
$html .= '<td class="tdoverflowmax300" title="'.dol_escape_htmltag($alert['title']).'">'.dol_escape_htmltag($alert['title']).'</td>';
// Branches
@@ -974,7 +932,7 @@ $html .= '</div>';
$html .= '</div>';
$html .= '<br>';
$html .= 'Note:Search is done in git repository on regexstring #yogosha|CVE|Sec:|Sec\s<br>';
$html .= 'Note:Search is done in git repository on regex string "#yogosha|CVE[\s\-]*\d|Sec:|Sec\s" (not case sensitive)<br>';
$html .= 'You can use this URL for RSS notifications: <a href="/'.$outputfilerss.'">'.$outputfilerss.'</a><br><br>';
$html .= '</section>';
@@ -1082,7 +1040,7 @@ if ($dir_phan != 'disabled') {
]});
';
$html .= '<section class="chapter" id="technicaldebtphan">'."\n";
$html .= '<h2><span class="fas fa-book-dead pictofixedwidth"></span>Technical debt <span class="opacitymedium">(PHAN '.$phan_nblines.' warnings)</span></h2>'."\n";
$html .= '<h2><span class="fas fa-book-dead pictofixedwidth"></span>Technical debt <span class="opacitymedium">('.$phpphanversion.' -> '.$phan_nblines.' warnings)</span></h2>'."\n";
$html .= '<div class="boxallwidth">'."\n";
$html .= '<div class="div-table-responsive">'."\n";
@@ -1179,7 +1137,7 @@ function cleanVal2($val)
$tmpval['issueid'] = '';
$tmpval['issueidyogosha'] = '';
$tmpval['issueidcve'] = '';
$tmpval['title'] = array_key_exists(5, $tmp) ? $tmp[5] : '';
$tmpval['title'] = array_key_exists(5, $tmp) ? preg_replace('/\.$/', '', $tmp[5]) : '';
$tmpval['created_at'] = array_key_exists(0, $tmp) ? $tmp[0] : '';
$tmpval['updated_at'] = '';
@@ -1188,7 +1146,7 @@ function cleanVal2($val)
$tmpval['issueid'] = $reg[1];
}
if (preg_match('/CVE([0-9\-\s]+)/', $tmpval['title'], $reg)) {
$tmpval['issueidcve'] = preg_replace('/^\-/', '', trim($reg[1]));
$tmpval['issueidcve'] = preg_replace('/^\-/', '', preg_replace('/\s+/', '-', trim($reg[1])));
}
if (preg_match('/#yogosha(\d+)/i', $tmpval['title'], $reg)) {
$tmpval['issueidyogosha'] = $reg[1];

View File

@@ -10,7 +10,10 @@ postgresql
# ZAR currency
zar
# Name of contributores
# Need as part of some PHP keys for some array variables
referer
# Name of contributors
noe
udo
tim
@@ -87,7 +90,7 @@ espace
methode
datee
# Some string found because part of a text the is html entities escaped into file
# Some string found because it is part of text that is html entities escaped into files
tre
activ

View File

@@ -9,66 +9,41 @@
*/
return [
// # Issue statistics:
// PhanUndeclaredProperty : 440+ occurrences
// PhanUndeclaredProperty : 420+ occurrences
// PhanTypeMismatchProperty : 100+ occurrences
// PhanUndeclaredGlobalVariable : 90+ occurrences
// PhanTypeMismatchArgument : 85+ occurrences
// PhanTypeMismatchArgumentNullable : 30+ occurrences
// PhanTypeExpectedObjectPropAccess : 20+ occurrences
// PhanTypeInvalidDimOffset : 20+ occurrences
// PhanTypeMismatchArgument : 70+ occurrences
// PhanUndeclaredGlobalVariable : 70+ occurrences
// PhanTypeMismatchArgumentNullable : 40+ occurrences
// PhanTypeInvalidDimOffset : 15+ occurrences
// PhanTypeMismatchDimFetch : 15+ occurrences
// PhanUndeclaredConstant : 15+ occurrences
// PhanTypeMismatchArgumentProbablyReal : 9 occurrences
// PhanUndeclaredMethod : 9 occurrences
// PhanPossiblyUndeclaredGlobalVariable : 6 occurrences
// PhanTypeArraySuspiciousNull : 6 occurrences
// PhanTypeComparisonFromArray : 6 occurrences
// PhanPluginUndeclaredVariableIsset : 5 occurrences
// PhanParamTooMany : 4 occurrences
// PhanTypeExpectedObjectPropAccess : 5 occurrences
// PhanTypeMismatchArgumentProbablyReal : 5 occurrences
// PhanPluginDuplicateArrayKey : 4 occurrences
// PhanPluginDuplicateExpressionBinaryOp : 4 occurrences
// PhanTypeMismatchDimAssignment : 2 occurrences
// PhanTypeMismatchReturn : 2 occurrences
// PhanTypeSuspiciousStringExpression : 2 occurrences
// PhanParamTooMany : 3 occurrences
// PhanPluginUndeclaredVariableIsset : 3 occurrences
// PhanPossiblyUndeclaredVariable : 1 occurrence
// PhanTypeExpectedObjectPropAccessButGotNull : 1 occurrence
// PhanTypeMismatchArgumentNullableInternal : 1 occurrence
// PhanTypeMismatchReturn : 1 occurrence
// Currently, file_suppressions and directory_suppressions are the only supported suppressions
'file_suppressions' => [
'htdocs/accountancy/class/accountancyexport.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/api/class/api_setup.class.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchReturn'],
'htdocs/asset/class/asset.class.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanTypeInvalidDimOffset'],
'htdocs/asset/class/assetdepreciationoptions.class.php' => ['PhanTypeInvalidDimOffset'],
'htdocs/asset/class/assetmodel.class.php' => ['PhanUndeclaredProperty'],
'htdocs/asset/tpl/depreciation_options_edit.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/asset/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/barcode/printsheet.php' => ['PhanPluginDuplicateExpressionBinaryOp'],
'htdocs/bom/bom_card.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/bom/tpl/objectline_create.tpl.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/bom/tpl/objectline_edit.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/bom/tpl/objectline_view.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/bookcal/availabilities_card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/bookcal/calendar_card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/bookcal/class/availabilities.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
'htdocs/bookcal/class/calendar.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
'htdocs/categories/viewcat.php' => ['PhanUndeclaredProperty'],
'htdocs/collab/index.php' => ['PhanUndeclaredProperty'],
'htdocs/comm/action/index.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
'htdocs/comm/action/pertype.php' => ['PhanTypeComparisonFromArray', 'PhanTypeExpectedObjectPropAccess', 'PhanTypeMismatchDimFetch'],
'htdocs/comm/action/peruser.php' => ['PhanTypeComparisonFromArray', 'PhanTypeMismatchArgument'],
'htdocs/comm/card.php' => ['PhanTypeMismatchArgument'],
'htdocs/comm/mailing/index.php' => ['PhanUndeclaredProperty'],
'htdocs/comm/mailing/targetemailing.php' => ['PhanUndeclaredProperty'],
'htdocs/comm/propal/card.php' => ['PhanTypeMismatchProperty'],
'htdocs/comm/propal/list.php' => ['PhanUndeclaredProperty'],
'htdocs/comm/propal/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/commande/class/api_orders.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/commande/class/commande.class.php' => ['PhanUndeclaredProperty'],
'htdocs/commande/customer.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/commande/list.php' => ['PhanUndeclaredProperty'],
'htdocs/commande/list_det.php' => ['PhanTypeInvalidDimOffset'],
'htdocs/commande/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/bank/account_statement_document.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/compta/bank/class/account.class.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/bank/class/paymentvarious.class.php' => ['PhanTypeMismatchArgument'],
@@ -76,16 +51,13 @@ return [
'htdocs/compta/bank/various_payment/card.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/bank/various_payment/document.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/compta/bank/various_payment/info.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/compta/cashcontrol/cashcontrol_card.php' => ['PhanPluginDuplicateExpressionBinaryOp'],
'htdocs/compta/clients.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/compta/facture/card-rec.php' => ['PhanTypeMismatchArgument'],
'htdocs/compta/facture/card.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/facture/class/api_invoices.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/compta/facture/class/facture-rec.class.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/facture/class/facture.class.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/compta/localtax/card.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/compta/localtax/clients.php' => ['PhanTypeExpectedObjectPropAccess', 'PhanTypeMismatchArgument'],
'htdocs/compta/localtax/index.php' => ['PhanTypeMismatchArgument'],
'htdocs/compta/localtax/list.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/compta/paiement/card.php' => ['PhanUndeclaredProperty'],
@@ -110,7 +82,7 @@ return [
'htdocs/core/class/canvas.class.php' => ['PhanParamTooMany', 'PhanUndeclaredMethod'],
'htdocs/core/class/ccountry.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/cgenericdic.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/commonobject.class.php' => ['PhanParamTooMany', 'PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentProbablyReal', 'PhanUndeclaredProperty'],
'htdocs/core/class/commonobject.class.php' => ['PhanParamTooMany', 'PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/core/class/commonpeople.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/conf.class.php' => ['PhanTypeMismatchArgumentNullableInternal', 'PhanTypeMismatchProperty'],
'htdocs/core/class/ctyperesource.class.php' => ['PhanUndeclaredProperty'],
@@ -118,7 +90,6 @@ return [
'htdocs/core/class/emailsenderprofile.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/extrafields.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/class/html.formcompany.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/html.formfile.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/class/html.formmail.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/core/class/notify.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/openid.class.php' => ['PhanTypeMismatchArgument'],
@@ -128,14 +99,12 @@ return [
'htdocs/core/lib/company.lib.php' => ['PhanTypeMismatchArgumentNullable'],
'htdocs/core/lib/files.lib.php' => ['PhanUndeclaredProperty'],
'htdocs/core/lib/functions2.lib.php' => ['PhanUndeclaredProperty'],
'htdocs/core/lib/pdf.lib.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
'htdocs/core/lib/pdf.lib.php' => ['PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
'htdocs/core/lib/product.lib.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/lib/project.lib.php' => ['PhanUndeclaredProperty'],
'htdocs/core/lib/xcal.lib.php' => ['PhanUndeclaredProperty'],
'htdocs/core/menus/standard/auguria.lib.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/modules/asset/mod_asset_advanced.php' => ['PhanUndeclaredProperty'],
'htdocs/core/modules/barcode/mod_barcode_product_standard.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/modules/bom/mod_bom_advanced.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/core/modules/cheque/doc/pdf_blochet.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/core/modules/cheque/modules_chequereceipts.php' => ['PhanTypeMismatchArgument'],
@@ -185,7 +154,6 @@ return [
'htdocs/core/tpl/resource_view.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php' => ['PhanUndeclaredProperty'],
'htdocs/datapolicy/class/datapolicycron.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/delivery/class/delivery.class.php' => ['PhanUndeclaredProperty'],
'htdocs/don/admin/donation.php' => ['PhanUndeclaredMethod'],
'htdocs/don/class/don.class.php' => ['PhanParamTooMany'],
@@ -201,18 +169,14 @@ return [
'htdocs/expedition/class/expedition.class.php' => ['PhanUndeclaredProperty'],
'htdocs/expensereport/card.php' => ['PhanUndeclaredProperty'],
'htdocs/expensereport/class/expensereport.class.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentNullable'],
'htdocs/expensereport/payment/card.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/expensereport/payment/info.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/expensereport/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/externalsite/frames.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/fichinter/card-rec.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/fichinter/class/api_interventions.class.php' => ['PhanUndeclaredProperty'],
'htdocs/fichinter/class/fichinterrec.class.php' => ['PhanUndeclaredProperty'],
'htdocs/fichinter/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/filefunc.inc.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/fourn/class/api_supplier_orders.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/fourn/class/fournisseur.commande.class.php' => ['PhanUndeclaredProperty'],
'htdocs/fourn/commande/card.php' => ['PhanTypeMismatchDimAssignment', 'PhanTypeSuspiciousStringExpression', 'PhanUndeclaredProperty'],
'htdocs/fourn/commande/card.php' => ['PhanUndeclaredProperty'],
'htdocs/fourn/facture/card-rec.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/fourn/facture/card.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
'htdocs/fourn/facture/rapport.php' => ['PhanTypeMismatchArgument'],
@@ -220,7 +184,6 @@ return [
'htdocs/holiday/card_group.php' => ['PhanTypeMismatchArgument'],
'htdocs/holiday/list.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/hrm/class/evaluation.class.php' => ['PhanUndeclaredProperty'],
'htdocs/hrm/class/evaluationdet.class.php' => ['PhanUndeclaredProperty'],
'htdocs/hrm/class/job.class.php' => ['PhanUndeclaredProperty'],
'htdocs/hrm/class/position.class.php' => ['PhanUndeclaredProperty'],
'htdocs/hrm/class/skill.class.php' => ['PhanUndeclaredProperty'],
@@ -254,7 +217,6 @@ return [
'htdocs/product/reassort.php' => ['PhanTypeExpectedObjectPropAccessButGotNull'],
'htdocs/product/stock/info.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/list.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/movement_card.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/product/stock/movement_list.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/product/stock/productlot_card.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/stats/commande_fournisseur.php' => ['PhanUndeclaredProperty'],
@@ -263,7 +225,6 @@ return [
'htdocs/product/stock/stats/reception.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/stocktransfer/class/stocktransferline.class.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/tpl/stockcorrection.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/product/stock/tpl/stocktransfer.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/projet/admin/project.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/projet/card.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/projet/tasks.php' => ['PhanTypeMismatchArgument'],
@@ -272,7 +233,7 @@ return [
'htdocs/public/eventorganization/subscriptionok.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/public/members/new.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/public/payment/newpayment.php' => ['PhanUndeclaredProperty'],
'htdocs/public/payment/paymentok.php' => ['PhanTypeMismatchArgumentProbablyReal', 'PhanUndeclaredGlobalVariable'],
'htdocs/public/payment/paymentok.php' => ['PhanTypeMismatchArgumentProbablyReal'],
'htdocs/public/project/suggestbooth.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/public/project/suggestconference.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/public/project/viewandvote.php' => ['PhanUndeclaredGlobalVariable'],
@@ -280,7 +241,7 @@ return [
'htdocs/public/webportal/tpl/menu.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/reception/card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/reception/class/reception.class.php' => ['PhanUndeclaredProperty'],
'htdocs/reception/list.php' => ['PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
'htdocs/reception/list.php' => ['PhanUndeclaredProperty'],
'htdocs/recruitment/class/recruitmentcandidature.class.php' => ['PhanUndeclaredProperty'],
'htdocs/recruitment/class/recruitmentjobposition.class.php' => ['PhanUndeclaredProperty'],
'htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php' => ['PhanUndeclaredProperty'],
@@ -319,19 +280,7 @@ return [
'htdocs/webportal/class/html.formcardwebportal.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/webportal/class/html.formlistwebportal.class.php' => ['PhanUndeclaredProperty'],
'htdocs/webportal/class/webportalpropal.class.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_actioncomm.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_category.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_contact.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_invoice.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_order.php' => ['PhanTypeInvalidDimOffset', 'PhanTypeMismatchArgument', 'PhanTypeSuspiciousStringExpression', 'PhanUndeclaredProperty'],
'htdocs/webservices/server_payment.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_productorservice.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_project.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_supplier_invoice.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_thirdparty.php' => ['PhanUndeclaredProperty'],
'htdocs/webservices/server_user.php' => ['PhanUndeclaredProperty'],
'htdocs/website/websiteaccount_card.php' => ['PhanUndeclaredProperty'],
'internal' => ['PhanUndeclaredConstant'],
],
// 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed.
// (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases)

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
*
* This is the phan config file used by .github/workflows/phan.yml
*/
@@ -35,7 +35,8 @@ $sanitizeRegex
'restricthtmlallowclass',
'restricthtmlallowunvalid',
'restricthtmlnolink',
'restricthtmlallowlinkscript'
'restricthtmlallowlinkscript',
'url',
)
).')*$/';

View File

@@ -1,53 +1,93 @@
<?php
// These stubs were generated by the phan stub generator.
// @phan-stub-for-extension ftp@7.4.12
namespace {
function ftp_alloc($ftp, $size, &$response = null) {}
function ftp_append($ftp, $remote_file, $local_file, $mode = null) {}
function ftp_cdup($ftp) {}
function ftp_chdir($ftp, $directory) {}
function ftp_chmod($ftp, $mode, $filename) {}
function ftp_close($ftp) {}
function ftp_connect($host, $port = null, $timeout = null) {}
function ftp_delete($ftp, $file) {}
function ftp_exec($ftp, $command) {}
function ftp_fget($ftp, $fp, $remote_file, $mode = null, $resumepos = null) {}
function ftp_fput($ftp, $remote_file, $fp, $mode = null, $startpos = null) {}
function ftp_get($ftp, $local_file, $remote_file, $mode = null, $resume_pos = null) {}
function ftp_get_option($ftp, $option) {}
function ftp_login($ftp, $username, $password) {}
function ftp_mdtm($ftp, $filename) {}
function ftp_mkdir($ftp, $directory) {}
function ftp_mlsd($ftp, $directory) {}
function ftp_nb_continue($ftp) {}
function ftp_nb_fget($ftp, $fp, $remote_file, $mode = null, $resumepos = null) {}
function ftp_nb_fput($ftp, $remote_file, $fp, $mode = null, $startpos = null) {}
function ftp_nb_get($ftp, $local_file, $remote_file, $mode = null, $resume_pos = null) {}
function ftp_nb_put($ftp, $remote_file, $local_file, $mode = null, $startpos = null) {}
function ftp_nlist($ftp, $directory) {}
function ftp_pasv($ftp, $pasv) {}
function ftp_put($ftp, $remote_file, $local_file, $mode = null, $startpos = null) {}
function ftp_pwd($ftp) {}
function ftp_quit($ftp) {}
function ftp_raw($ftp, $command) {}
function ftp_rawlist($ftp, $directory, $recursive = null) {}
function ftp_rename($ftp, $src, $dest) {}
function ftp_rmdir($ftp, $directory) {}
function ftp_set_option($ftp, $option, $value) {}
function ftp_site($ftp, $cmd) {}
function ftp_size($ftp, $filename) {}
function ftp_ssl_connect($host, $port = null, $timeout = null) {}
function ftp_systype($ftp) {}
const FTP_ASCII = 1;
const FTP_AUTORESUME = -1;
const FTP_AUTOSEEK = 1;
const FTP_BINARY = 2;
const FTP_FAILED = 0;
const FTP_FINISHED = 1;
const FTP_IMAGE = 2;
const FTP_MOREDATA = 2;
const FTP_TEXT = 1;
const FTP_TIMEOUT_SEC = 0;
const FTP_USEPASVADDRESS = 2;
const FTP_ASCII = 1;
const FTP_TEXT = 1;
const FTP_BINARY = 2;
const FTP_IMAGE = 2;
const FTP_AUTORESUME = -1;
const FTP_TIMEOUT_SEC = 0;
const FTP_AUTOSEEK = 1;
const FTP_USEPASVADDRESS = 2;
const FTP_FAILED = 0;
const FTP_FINISHED = 1;
const FTP_MOREDATA = 2;
function ftp_connect(string $hostname, int $port = 21, int $timeout = 90): FTP\Connection|false {}
function ftp_ssl_connect(string $hostname, int $port = 21, int $timeout = 90): FTP\Connection|false {}
function ftp_login(FTP\Connection $ftp, string $username, #[\SensitiveParameter] string $password): bool {}
function ftp_pwd(FTP\Connection $ftp): string|false {}
function ftp_cdup(FTP\Connection $ftp): bool {}
function ftp_chdir(FTP\Connection $ftp, string $directory): bool {}
function ftp_exec(FTP\Connection $ftp, string $command): bool {}
/**
* @return array<int, string>|null
*/
function ftp_raw(FTP\Connection $ftp, string $command): ?array {}
function ftp_mkdir(FTP\Connection $ftp, string $directory): string|false {}
function ftp_rmdir(FTP\Connection $ftp, string $directory): bool {}
function ftp_chmod(FTP\Connection $ftp, int $permissions, string $filename): int|false {}
/** @param string $response */
function ftp_alloc(FTP\Connection $ftp, int $size, &$response = null): bool {}
/**
* @return array<int, string>|false
*/
function ftp_nlist(FTP\Connection $ftp, string $directory): array|false {}
/**
* @return array<int, string>|false
*/
function ftp_rawlist(FTP\Connection $ftp, string $directory, bool $recursive = false): array|false {}
/**
* @return array<int, array>|false
*/
function ftp_mlsd(FTP\Connection $ftp, string $directory): array|false {}
function ftp_systype(FTP\Connection $ftp): string|false {}
/** @param resource $stream */
function ftp_fget(FTP\Connection $ftp, $stream, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
/** @param resource $stream */
function ftp_nb_fget(FTP\Connection $ftp, $stream, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): int {}
function ftp_pasv(FTP\Connection $ftp, bool $enable): bool {}
function ftp_get(FTP\Connection $ftp, string $local_filename, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
function ftp_nb_get(FTP\Connection $ftp, string $local_filename, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): int|false {}
function ftp_nb_continue(FTP\Connection $ftp): int {}
/** @param resource $stream */
function ftp_fput(FTP\Connection $ftp, string $remote_filename, $stream, int $mode = FTP_BINARY, int $offset = 0): bool {}
/** @param resource $stream */
function ftp_nb_fput(FTP\Connection $ftp, string $remote_filename, $stream, int $mode = FTP_BINARY, int $offset = 0): int {}
function ftp_put(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
function ftp_append(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool {}
function ftp_nb_put(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY, int $offset = 0): int|false {}
function ftp_size(FTP\Connection $ftp, string $filename): int {}
function ftp_mdtm(FTP\Connection $ftp, string $filename): int {}
function ftp_rename(FTP\Connection $ftp, string $from, string $to): bool {}
function ftp_delete(FTP\Connection $ftp, string $filename): bool {}
function ftp_site(FTP\Connection $ftp, string $command): bool {}
function ftp_close(FTP\Connection $ftp): bool {}
function ftp_quit(FTP\Connection $ftp): bool {}
/** @param int|bool $value */
function ftp_set_option(FTP\Connection $ftp, int $option, $value): true {}
function ftp_get_option(FTP\Connection $ftp, int $option): int|bool {}
}
namespace FTP {
/**
* @strict-properties
* @not-serializable
*/
final class Connection
{
}
}

View File

@@ -23,7 +23,6 @@ parameters:
- htdocs/install/doctemplates/*
- htdocs/langs/*
- htdocs/modulebuilder/template/test/*
- htdocs/support/*
analyse:
- htdocs/includes/geoPHP/*
- htdocs/includes/markrogoyski/*
@@ -67,8 +66,14 @@ parameters:
reportMagicMethods: false
reportMagicProperties: false
treatPhpDocTypesAsCertain: false
# if you want to exclude something, generate the baseline to do that, add here give only pattern that does not give the opportunity to introduce new errors
# or pattern to avoid false positive of some bugged or allowed phpstan checks
ignoreErrors:
- '#.*phan-var#'
- '#^Expression "''…" on a separate line does not do anything#'
- '#Empty array passed to foreach#'
- '#Unable to resolve the template type T#'
- '#in empty\(\) always exists and is always falsy#'
- '#is always#'
internalErrorsCountLimit: 50
cache:

View File

@@ -16,15 +16,15 @@ composer install
#### Usage
##### To make changes (Add --dry-run for test mode only)
##### To make changes (remove --dry-run for real run)
```shell
cd dev/tools/rector
./vendor/bin/rector process --dry-run
./vendor/bin/rector process --debug --dry-run
```
##### To make changes on a given directory
```shell
cd dev/tools/rector
./vendor/bin/rector process [--dry-run] [--clear-cache] ../../../htdocs/core/
./vendor/bin/rector process --debug [--dry-run] [--clear-cache] ../../../htdocs/core/
```

View File

@@ -18,7 +18,7 @@
/**
* \file dev/tools/rector/rector.php
* \ingroup core
* \brief Toolt to run rector
* \brief Tool to run rector
*
* cd dev/tools/rector
* ./vendor/bin/rector process [--dry-run] [--clear-cache] ../../../htdocs/core/
@@ -33,17 +33,22 @@ use Rector\Set\ValueObject\SetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->phpVersion(PhpVersion::PHP_71);
//$rectorConfig->indent(' ', 4);
$rectorConfig->indent(' ', 4);
// Traits seems not supported correctly by rector without declaring them as bootstrapFiles
$arrayoftraitfiles = array(
__DIR__ . '/../../../htdocs/core/class/commonincoterm.class.php',
__DIR__ . '/../../../htdocs/core/class/commonpeople.class.php',
__DIR__ . '/../../../htdocs/core/class/commonsocialnetworks.class.php'
__DIR__ . '/../../../htdocs/core/class/commonsignedobject.class.php',
__DIR__ . '/../../../htdocs/core/class/commonsocialnetworks.class.php',
__DIR__ . '/../../../htdocs/core/class/commontrigger.class.php',
__DIR__ . '/../../../htdocs/core/class/doldeprecationhandler.class.php',
__DIR__ . '/../../../htdocs/subtotals/class/commonsubtotal.class.php',
);
$rectorConfig->bootstrapFiles($arrayoftraitfiles);
$rectorConfig->paths([
__DIR__ . '/../../../dev/',
__DIR__ . '/../../../htdocs/',
__DIR__ . '/../../../scripts/',
__DIR__ . '/../../../test/phpunit/',
@@ -54,7 +59,8 @@ return static function (RectorConfig $rectorConfig): void {
'**/custom/**',
'**/vendor/**',
'**/rector/**', // Disable this line to test the "test.php" file.
__DIR__ . '/../../../htdocs/custom/',
__DIR__ . '/../../../dev/tools/phan/stubs/*',
__DIR__ . '/../../../htdocs/custom/*',
__DIR__ . '/../../../htdocs/install/doctemplates/*'
//'test.php',
]);
@@ -82,12 +88,18 @@ return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rule(Dolibarr\Rector\Renaming\EmptyUserRightsToFunction::class);
$rectorConfig->rule(Dolibarr\Rector\Renaming\GlobalToFunction::class);
$rectorConfig->rule(Dolibarr\Rector\Renaming\UserRightsToFunction::class);
//$rectorConfig->rule(Dolibarr\Rector\Renaming\UsePositiveExit::class);
$rectorConfig->rule(Dolibarr\Rector\Renaming\UsePositiveExit::class);
// This fix <> into != but it breaks other rules, so added at end.
$rectorConfig->rule(Rector\CodeQuality\Rector\NotEqual\CommonNotEqualRector::class);
//$rectorConfig->rule(Rector\CodeQuality\Rector\NotEqual\CommonNotEqualRector::class);
/*
$rectorConfig->skip([
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser::class,
Dolibarr\Rector\Renaming\GlobalToFunction::class
]);
*/
// Add all predefined rules to migrate to up to php 71.
// Warning this break tab spacing of arrays on several lines

View File

@@ -63,7 +63,7 @@ class GlobalToFunction extends AbstractRector
'Change $conf->global to getDolGlobal in context (1) conf->global Operator Value or (2) function(conf->global...)',
[new CodeSample(
'$conf->global->CONSTANT',
'getDolGlobalInt(\'CONSTANT\')'
'getDolGlobalString|Int(\'CONSTANT\')'
)]
);
}
@@ -228,14 +228,36 @@ class GlobalToFunction extends AbstractRector
return new Concat($leftConcat, $rightConcat);
}
// If a && b and a or b is conf->global, we replace a or/and b
if ($node instanceof BooleanAnd) {
$nodes = $this->resolveTwoNodeMatch($node);
if (!isset($nodes)) {
return;
// Transformation sur le nœud gauche
$changedone = 0;
if ($this->isGlobalVar($node->left)) {
$constName = $this->getConstName($node->left);
if (empty($constName)) {
return;
}
$node->left = new FuncCall(
new Name('getDolGlobalString'),
[new Arg($constName)]
);
$changedone++;
}
if ($this->isGlobalVar($node->right)) {
$constName = $this->getConstName($node->right);
if (empty($constName)) {
return;
}
$node->right = new FuncCall(
new Name('getDolGlobalString'),
[new Arg($constName)]
);
$changedone++;
}
/** @var Equal $node */
$node = $nodes->getFirstExpr();
if ($changedone) {
return $node;
}
}
@@ -270,9 +292,42 @@ class GlobalToFunction extends AbstractRector
return;
}
// Now we process a comparison
$isconfglobal = $this->isGlobalVar($node->left);
if (!$isconfglobal) {
// The left side is not conf->global->xxx, so we leave
$isconfglobal = $this->isGlobalVar($node->right);
if (!$isconfglobal) {
// The left side and right side is not conf->global->xxx, so we leave
return;
}
// Right side is conf->global->xxx, but we can't know if we must use getDolGlobalInt or String,
// so we use getDolGlobalString if comparison is ==
if ($typeofcomparison == 'Equal') {
$constName = $this->getConstName($node->right);
if (empty($constName)) {
return;
}
// Test the type after the comparison conf->global->xxx to know the name of function
$typeleft = $node->left->getType();
switch ($typeleft) {
case 'Scalar_LNumber':
$funcName = 'getDolGlobalInt';
break;
case 'Scalar_String':
$funcName = 'getDolGlobalString';
break;
default: // Can be Expr_FuncCall
$funcName = 'getDolGlobalString';
break;
}
$node->right = new FuncCall(
new Name($funcName),
[new Arg($constName)]
);
return $node;
}
return;
}
@@ -360,36 +415,6 @@ class GlobalToFunction extends AbstractRector
}
}
/**
* Get nodes with check empty
*
* @param BooleanAnd $booleanAnd A BooleandAnd
* @return TwoNodeMatch|null
*/
private function resolveTwoNodeMatch(BooleanAnd $booleanAnd): ?TwoNodeMatch
{
return $this->binaryOpManipulator->matchFirstAndSecondConditionNode(
$booleanAnd,
// Function to check if we are in the case $conf->global->... == $value
function (Node $node): bool {
if (!$node instanceof Equal) {
return \false;
}
return $this->isGlobalVar($node->left);
},
// !empty(...) || isset(...)
function (Node $node): bool {
if ($node instanceof BooleanNot && $node->expr instanceof Empty_) {
return $this->isGlobalVar($node->expr->expr);
}
if (!$node instanceof Isset_) {
return $this->isGlobalVar($node);
}
return \true;
}
);
}
/**
* Check if node is a global access with format conf->global->XXX
*

View File

@@ -24,6 +24,10 @@ DATAPOLICY_TIERS_NIPROSPECT_NICLIENT
DATAPOLICY_TIERS_PROSPECT
DATAPOLICY_TIERS_PROSPECT_CLIENT
#
TOKEN_EXPIRE_AT
TOKEN_EXPIRED
# fournisseur
CodePaymentTerm
IdPaymentTerm
@@ -36,6 +40,15 @@ Reservation
CompletePage
PortionOfPage
#
AccountancyGroupCAPIT
AccountancyGroupEXPENSE
AccountancyGroupFINAN
AccountancyGroupIMMO
AccountancyGroupINCOME
AccountancyGroupSTOCK
AccountancyGroupTHIRDPARTY
# Others
ACCOUNTING_ACCOUNT_CUSTOMER
ACCOUNTING_ACCOUNT_CUSTOMER_Desc
@@ -95,6 +108,14 @@ ACCOUNTING_VAT_BUY_REVERSE_CHARGES_DEBIT
ACCOUNTING_VAT_PAY_ACCOUNT
ACCOUNTING_VAT_SOLD_ACCOUNT
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT
AI_API_MODEL_AUDIO
AI_API_MODEL_IMAGE
AI_API_MODEL_TEXT
AI_API_MODEL_TRANSCRIPT
AI_API_MODEL_TRANSLATE
AI_API_MODEL_VIDEO
AGENDA_EVENT_CURRENT_COLOR
AGENDA_EVENT_FUTURE_COLOR
AGENDA_EVENT_PAST_COLOR
@@ -887,6 +908,8 @@ DirectPrint
Disassemble
Dispatch
DispatchVerb
DocumentSigned
DocumentUnsigned
DoCreditTransferBeforePayments3
DoNotAutofillButAutoConcat
DoNotRemovePreviousCombinations

View File

@@ -9,7 +9,8 @@
# files. These should be fixed but are ignored for now
# so that continuous integration does not complain about it
# in order to detect newly introduced issues with the keys.
#
# ██████╗ █████╗ ██████╗ ████████╗ ██╗
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝███║
# ██████╔╝███████║██████╔╝ ██║ ╚██║
@@ -76,6 +77,7 @@ ViewPageInNewTab
WEBSITE_PAGE_EXAMPLE
WebpageContent
YourTicketSuccessfullySaved
#
# ██████╗ █████╗ ██████╗ ████████╗██████╗
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝╚════██╗
@@ -94,8 +96,6 @@ AADE_WEBSERVICE_USER
API
Accept
AccountancyErrorMismatchLetteringCode
AccountingAccount
AccountingCode
AccountingJournalType
ActionAC_
ActionAC_ALL_
@@ -145,14 +145,12 @@ Banque
Barcode
BarcodeDesc
BarcodeStickersMask
BatchInformationNotfound
BillOfMaterialsLine
BlockLogNeedAmountsValue
BlockLogNeedElement
BlockedLogAuthorityNeededToStoreYouFingerprintsInNonAlterableRemote
BlockedLogAuthorityUrl
BlockedLogSetup
BookCalSystem
Bookings
BoxTitleLast
BoxTitleLatest
@@ -200,8 +198,6 @@ ConfirmActionMyObject
ConfirmActionTarget
ConfirmCloneMyObject
ConfirmCloneTask
ConfirmCreateAdherent
ConfirmDeleteAdherent
ConfirmDeleteIndividual
ConfirmDeleteReport
ConfirmDeleteWebsiteAccount
@@ -289,7 +285,6 @@ EmailcollectorFilter
EmailingTargetSelector
Empty
End
EnterAnIP
EnterNameOfDictionnaryToDeleteDesc
Entries
ErrSCAAuthentication
@@ -307,7 +302,6 @@ ErrorBadSocialNetworkValue
ErrorBadStatus
ErrorBadValue
ErrorBadValueForBatch
ErrorBadValueForDate
ErrorCanNotDeleteDir
ErrorCantSplitAUsedDiscount
ErrorChartOfAccountSystemNotSelected
@@ -360,7 +354,6 @@ ErrorTechnicalError
ErrorThirdPartyIdIsMandatory
ErrorTicketIsNotValid
ErrorTitreAlreadyExists
ErrorUpdatingUsersCP
ErrorUserFetch
ErrorValueMustBeInteger
ErrorValueTooHigh
@@ -432,7 +425,6 @@ Gzip
HTTPBasicPassword
HelpAbandonProductReturned
HideVersionLink
HolidayStarted
Hook
Hooks
IBANNotDefined
@@ -618,7 +610,6 @@ PaymentCondition
PaymentConditionShort
PaymentDonation
PaymentHigherThanReminderToPaySupplier
PaymentSalary
PaymentSendToStripeTerminal
PaymentType
PaymentTypeShort
@@ -642,10 +633,7 @@ PrintModule
PrintUserConfDesc
PrinterId
PrinterIdEmpty
PrinterLocation
PrinterNameEmpty
PrinterParameterEmpty
Printers
Printing
ProductCodeDesc
ProductFournisseurPrice
@@ -809,7 +797,6 @@ Templates
TestPrinterTemplate
TestTemplateToPrinter
Theme
ThirdpartyHasNoDefaultBanAccount
ThisIsInformationOnDocumentToSign
ThisScreenAllowsYouToSignDocFrom
TicketCategoryShort
@@ -846,8 +833,6 @@ UpdateUser
UpgradeHasBeenUnlocked
Url
Use of API for currency update is disabled by option MULTICURRENCY_DISABLE_SYNC_CURRENCYLAYER
UserRemovedFromGroup
UserSetInGroup
VCard
Vacant
ValidateAndSign
@@ -873,7 +858,6 @@ Widgets
Windows
WorkingBoard
Workload
WrongAmount
XDebug
XmlCorrupted
Y
@@ -1030,10 +1014,6 @@ PDF/A-3b
PartnershipSentByEMail
PdfTitle
ProcessingError
PurchaseOrder
PurchaseOrders
ReceptionSentByEMail
ReceptionValidated
Recruited
Ref. Product
RefNewContract
@@ -1041,7 +1021,6 @@ Stable
Suggested
TicketMessageMailSignatureText
TicketSetupPage
Tiers
Timeline
Transfer
TryAnotherConnectionMode

View File

@@ -1,6 +1,7 @@
#!/bin/bash
#
# Find unused translations pretty fast...
# Go into the root of the git directory, then launch the shell.
#
# Principle:
#
@@ -35,7 +36,7 @@ DYNAMIC_KEYS_FILE=${TMP}/dynamic_keys
MISSING_AND_UNUSED_FILE=${TMP}/missing_and_unused
MISSING_FILE=${TMP}/missing
UNUSED_FILE=${TMP}/unused
EXPECTED_REGEX='(Country..|ExportDataset_.*|Language_.._..|MonthVeryShort\d\d|PaperFormat.*||Permission.*|ProfId\d(..)?|unit.*)'
EXPECTED_REGEX='(Country..|ExportDataset_.*|Language_.._..|MonthVeryShort\d\d|PaperFormat.*||Permission.*|ProfId\d(..)?|TypeContact_shipping_external_.*|unit.*)'
DYNAMIC_KEYS_SRC_FILE=${MYDIR}/dynamic_translation_keys.lst
EXCLUDE_KEYS_SRC_FILE=${MYDIR}/ignore_translation_keys.lst
DUPLICATE_KEYS_SRC_FILE=${MYDIR}/duplicate_translation_keys.lst

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -61,7 +61,7 @@ $search_import_key = GETPOST('search_import_key', 'alpha');
$search_reconcilable = GETPOST("search_reconcilable", 'int');
$search_centralized = GETPOST("search_centralized", 'int');
$search_active = GETPOST("search_active", 'int');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
$confirm = GETPOST('confirm', 'alpha');
@@ -98,20 +98,22 @@ if (!$sortorder) {
$sortorder = "ASC";
}
$object = new AccountingAccount($db);
$arrayfields = array(
'aa.account_number' => array('label' => "AccountNumber", 'checked' => '1'),
'aa.label' => array('label' => "Label", 'checked' => '1'),
'aa.labelshort' => array('label' => "LabelToShow", 'checked' => '1'),
'aa.labelshort' => array('label' => "ShortLabel", 'checked' => '1'),
'aa.account_parent' => array('label' => "Accountparent", 'checked' => '1'),
'aa.pcg_type' => array('label' => "Pcgtype", 'checked' => '1', 'help' => 'PcgtypeDesc'),
'categories' => array('label' => "AccountingCategories", 'checked' => '-1', 'help' => 'AccountingCategoriesDesc'),
'aa.reconcilable' => array('label' => "Reconcilable", 'checked' => '1'),
'aa.centralized' => array('label' => "Centralized", 'checked' => '1'),
'aa.centralized' => array('label' => "Centralized", 'checked' => '1', 'help' => 'CentralizedAccountHelp'),
'aa.import_key' => array('label' => "ImportId", 'checked' => '-1', 'help' => ''),
'aa.active' => array('label' => "Activated", 'checked' => '1')
);
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
if (!getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) {
unset($arrayfields['categories']);
unset($arrayfields['aa.reconcilable']);
}
@@ -350,7 +352,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$resql = $db->query($sql);
$nbtotalofrecords = $db->num_rows($resql);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}
@@ -557,12 +559,10 @@ if ($resql) {
}
// Reconcilable
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print '<td class="liste_titre center">';
print $form->selectyesno('search_reconcilable', $search_reconcilable, 1, false, 1, 1, 'search_status onrightofpage width75');
print '</td>';
}
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print '<td class="liste_titre center">';
print $form->selectyesno('search_reconcilable', $search_reconcilable, 1, false, 1, 1, 'search_status onrightofpage width75');
print '</td>';
}
// Centralized
@@ -574,10 +574,11 @@ if ($resql) {
// Active
if (!empty($arrayfields['aa.active']['checked'])) {
print '<td class="liste_titre center">';
print '<td class="liste_titre center parentonrightofpage">';
print $form->selectyesno('search_active', $search_active, 1, false, 1, 1, 'search_status onrightofpage width75');
print '</td>';
}
// Action column
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="liste_titre center maxwidthsearch">';
@@ -614,12 +615,14 @@ if ($resql) {
print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
$totalarray['nbfield']++;
}
// Main group
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help'], 1);
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, 'right ', $arrayfields['aa.pcg_type']['help'].'::-1', 1);
$totalarray['nbfield']++;
}
// Number of custom groups
if (!empty($arrayfields['categories']['checked'])) {
print_liste_field_titre($arrayfields['categories']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, '', $arrayfields['categories']['help'], 1);
print_liste_field_titre($arrayfields['categories']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, '', $arrayfields['categories']['help'].'::-1', 1);
$totalarray['nbfield']++;
}
@@ -629,21 +632,19 @@ if ($resql) {
print $hookmanager->resPrint;
if (!empty($arrayfields['aa.import_key']['checked'])) {
print_liste_field_titre($arrayfields['aa.import_key']['label'], $_SERVER["PHP_SELF"], 'aa.import_key', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.import_key']['help'], 1);
print_liste_field_titre($arrayfields['aa.import_key']['label'], $_SERVER["PHP_SELF"], 'aa.import_key', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.import_key']['help'].'::-1', 1);
$totalarray['nbfield']++;
}
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder, 'center ');
$totalarray['nbfield']++;
}
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder, 'center ');
$totalarray['nbfield']++;
}
if (!empty($arrayfields['aa.centralized']['checked'])) {
print_liste_field_titre($arrayfields['aa.centralized']['label'], $_SERVER["PHP_SELF"], 'aa.centralized', '', $param, '', $sortfield, $sortorder);
print_liste_field_titre($arrayfields['aa.centralized']['label'], $_SERVER["PHP_SELF"], 'aa.centralized', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.centralized']['help'].'::-1', 1);
$totalarray['nbfield']++;
}
if (!empty($arrayfields['aa.active']['checked'])) {
print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder);
print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder, 'center ');
$totalarray['nbfield']++;
}
// Action column
@@ -759,7 +760,7 @@ if ($resql) {
}
// Custom accounts
if (!empty($arrayfields['categories']['checked'])) {
print "<td>";
print '<td class="right">';
// TODO Get all custom groups labels the account is in
print dol_escape_htmltag($obj->fk_accounting_category);
print "</td>\n";
@@ -783,23 +784,21 @@ if ($resql) {
}
}
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
// Activated or not reconciliation on an accounting account
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print '<td class="center">';
if (empty($obj->reconcilable)) {
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=enable&mode=1&token='.newToken().'">';
print img_picto($langs->trans("Disabled"), 'switch_off');
print '</a>';
} else {
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=disable&mode=1&token='.newToken().'">';
print img_picto($langs->trans("Activated"), 'switch_on');
print '</a>';
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;
}
// Activated or not reconciliation on an accounting account
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
print '<td class="center">';
if (empty($obj->reconcilable)) {
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=enable&mode=1&token='.newToken().'">';
print img_picto($langs->trans("Disabled"), 'switch_off');
print '</a>';
} else {
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=disable&mode=1&token='.newToken().'">';
print img_picto($langs->trans("Activated"), 'switch_on');
print '</a>';
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;
}
}

View File

@@ -12,7 +12,7 @@
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -92,6 +92,8 @@ $search_country_id = GETPOST('search_country_id', 'int');
if ($user->socid > 0) {
accessforbidden();
}
$permissiontoeditchart = $user->hasRight('accounting', 'chartofaccount');
if (!$user->hasRight('accounting', 'chartofaccount')) {
accessforbidden();
}
@@ -143,7 +145,6 @@ $tabhelp = array();
$tabhelp[31] = array('pcg_version' => $langs->trans("EnterAnyCode"));
/*
* Actions
*/
@@ -198,32 +199,15 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
// Si verif ok et action add, on ajoute la ligne
if ($ok && GETPOST('actionadd', 'alpha')) {
$newid = 0;
if ($tabrowid[$id]) {
// Get free id for insert
$sql = "SELECT MAX(".$db->sanitize($tabrowid[$id]).") as newid FROM ".$db->sanitize($tabname[$id]);
$result = $db->query($sql);
if ($result) {
$obj = $db->fetch_object($result);
$newid = ($obj->newid + 1);
} else {
dol_print_error($db);
}
}
// Add new entry
$sql = "INSERT INTO ".$db->sanitize($tabname[$id])." (";
// List of fields
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
$sql .= $db->sanitize($tabrowid[$id]).",";
}
$sql .= $db->sanitize($tabfieldinsert[$id]);
$sql .= ",active)";
$sql .= " VALUES(";
// List of values
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
$sql .= $newid.",";
}
$i = 0;
foreach ($listfieldinsert as $f => $value) {
if ($value == 'price' || preg_match('/^amount/i', $value) || $value == 'taux') {
@@ -259,19 +243,10 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
// Si verif ok et action modify, on modifie la ligne
if ($ok && GETPOST('actionmodify', 'alpha')) {
if ($tabrowid[$id]) {
$rowidcol = $tabrowid[$id];
} else {
$rowidcol = "rowid";
}
// Modify entry
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET ";
// Modifie valeur des champs
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldmodify)) {
$sql .= $db->sanitize($tabrowid[$id])." = ";
$sql .= "'".$db->escape($rowid)."', ";
}
$i = 0;
foreach ($listfieldmodify as $field) {
if ($field == 'price' || preg_match('/^amount/i', $field) || $field == 'taux') {
@@ -290,7 +265,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
}
$i++;
}
$sql .= " WHERE ".$rowidcol." = ".((int) $rowid);
$sql .= " WHERE rowid = ".((int) $rowid);
dol_syslog("actionmodify", LOG_DEBUG);
//print $sql;
@@ -301,14 +276,9 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
}
}
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
if ($tabrowid[$id]) {
$rowidcol = $tabrowid[$id];
} else {
$rowidcol = "rowid";
}
$sql = "DELETE from ".$db->sanitize($tabname[$id])." WHERE ".$db->sanitize($rowidcol)." = ".((int) $rowid);
// delete
if ($action == 'confirm_delete' && $confirm == 'yes' && $permissiontoeditchart) {
$sql = "DELETE from ".$db->sanitize($tabname[$id])." WHERE rowid = ".((int) $rowid);
dol_syslog("delete", LOG_DEBUG);
$result = $db->query($sql);
@@ -322,7 +292,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
}
// activate
if ($action == 'activate') {
if ($action == 'activate' && $permissiontoeditchart) {
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 1 WHERE rowid = ".((int) $rowid);
$result = $db->query($sql);
if (!$result) {
@@ -331,7 +301,7 @@ if ($action == 'activate') {
}
// disable
if ($action == $acts[1]) {
if ($action == $acts[1] && $permissiontoeditchart) {
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 0 WHERE rowid = ".((int) $rowid);
$result = $db->query($sql);
if (!$result) {
@@ -607,36 +577,19 @@ if ($resql) {
}
}
// Can an entry be erased or disabled ?
$iserasable = 1;
$canbedisabled = 1;
$canbemodified = 1; // true by default
$url = $_SERVER["PHP_SELF"].'?token='.newToken().($page ? '&page='.$page : '').'&sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
$url .= '&'.$param.'&';
// Active
print '<td class="center nowrap">';
if ($canbedisabled) {
print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
} else {
print $langs->trans("AlwaysActive");
}
print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
print "</td>";
// Modify link
if ($canbemodified) {
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
} else {
print '<td>&nbsp;</td>';
}
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
// Delete link
if ($iserasable) {
print '<td class="center"><a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a></td>';
} else {
print '<td>&nbsp;</td>';
}
print '<td class="center"><a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a></td>';
print "</tr>\n";
}
@@ -700,16 +653,8 @@ function fieldListAccountModel($fieldlist, $obj = null, $tabname = '', $context
print '</td>';
}
} elseif ($fieldlist[$field] == 'type_cdr') {
if ($fieldlist[$field] == 'type_cdr') {
print '<td class="center">';
} else {
print '<td>';
}
if ($fieldlist[$field] == 'type_cdr') {
print $form->selectarray($fieldlist[$field], array(0 => $langs->trans('None'), 1 => $langs->trans('AtEndOfMonth'), 2 => $langs->trans('CurrentNext')), (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''));
} else {
print $form->selectyesno($fieldlist[$field], (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''), 1);
}
print '<td class="center">';
print $form->selectarray($fieldlist[$field], array(0 => $langs->trans('None'), 1 => $langs->trans('AtEndOfMonth'), 2 => $langs->trans('CurrentNext')), (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''));
print '</td>';
} elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
print '<td><input type="text" class="flat" value="'.(!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : '').'" size="10" name="'.$fieldlist[$field].'"></td>';

View File

@@ -1,9 +1,9 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -77,7 +77,7 @@ if (GETPOST('cancel', 'alpha')) {
exit;
}
if ($action == 'add' && $user->hasRight('accounting', 'chartofaccount')) {
if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // already checked */) {
if (!$cancel) {
if (!$account_number) {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
@@ -132,7 +132,7 @@ if ($action == 'add' && $user->hasRight('accounting', 'chartofaccount')) {
}
}
}
} elseif ($action == 'edit' && $user->hasRight('accounting', 'chartofaccount')) {
} elseif ($action == 'edit' /* && $user->hasRight('accounting', 'chartofaccount') // already checked */) {
if (!$cancel) {
if (!$account_number) {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
@@ -245,7 +245,7 @@ if ($action == 'create') {
print '<td><input name="label" size="70" value="'.$object->label.'"></td></tr>';
// Label short
print '<tr><td>'.$langs->trans("LabelToShow").'</td>';
print '<tr><td>'.$langs->trans("ShortLabel").'</td>';
print '<td><input name="labelshort" size="70" value="'.$object->labelshort.'"></td></tr>';
// Account parent
@@ -314,15 +314,15 @@ if ($action == 'create') {
// Account number
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">'.$langs->trans("AccountNumber").'</span></td>';
print '<td><input name="account_number" size="30" value="'.$object->account_number.'"></td></tr>';
print '<td><input class="minwidth300" name="account_number" value="'.$object->account_number.'"></td></tr>';
// Label
print '<tr><td><span class="fieldrequired">'.$langs->trans("Label").'</span></td>';
print '<td><input name="label" size="70" value="'.$object->label.'"></td></tr>';
print '<td><input class="minwidth500" name="label" value="'.$object->label.'"></td></tr>';
// Label short
print '<tr><td>'.$langs->trans("LabelToShow").'</td>';
print '<td><input name="labelshort" size="70" value="'.$object->labelshort.'"></td></tr>';
print '<tr><td>'.$langs->trans("ShortLabel").'</td>';
print '<td><input class="minwidth300" name="labelshort" value="'.$object->labelshort.'"></td></tr>';
// Account parent
print '<tr><td>'.$langs->trans("Accountparent").'</td>';
@@ -386,7 +386,7 @@ if ($action == 'create') {
print '<td colspan="2">'.$object->label.'</td></tr>';
// Label to show
print '<tr><td class="titlefield">'.$langs->trans("LabelToShow").'</td>';
print '<tr><td class="titlefield">'.$langs->trans("ShortLabel").'</td>';
print '<td colspan="2">'.$object->labelshort.'</td></tr>';
// Account parent
@@ -419,11 +419,11 @@ if ($action == 'create') {
*/
print '<div class="tabsAction">';
if ($user->hasRight('accounting', 'chartofaccount')) {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=update&token='.newToken().'&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
} else {
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">'.$langs->trans('Modify').'</a>';
}
// if ($user->hasRight('accounting', 'chartofaccount')) { // already checked
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=update&token='.newToken().'&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
// } else {
// print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">'.$langs->trans('Modify').'</a>';
// }
// Delete
$permissiontodelete = $user->hasRight('accounting', 'chartofaccount');

View File

@@ -909,6 +909,7 @@ if ($resql) {
print '<td class="center" class="nowrap">';
if ($canbedisabled) {
print '<a class="reposition" href="'.$url.'action='.urlencode($acts[$obj->active]).'&token='.newToken().'">'.$actl[$obj->active].'</a>';
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
} else {
print $langs->trans("AlwaysActive");
}

View File

@@ -131,7 +131,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2014-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
@@ -82,7 +82,7 @@ $permissiontoadd = $user->hasRight('accounting', 'fiscalyear', 'write');
if ($user->socid > 0) {
accessforbidden();
}
if (!$permissiontoadd) {
if (!$permissiontoadd) { // after this test $permissiontoadd is always true
accessforbidden();
}
@@ -97,7 +97,7 @@ if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
}
if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
if ($action == 'confirm_delete' && $confirm == "yes" /* && $permissiontoadd // always true */) {
$result = $object->delete($user);
if ($result >= 0) {
header("Location: fiscalyear.php");
@@ -105,7 +105,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
} else {
setEventMessages($object->error, $object->errors, 'errors');
}
} elseif ($action == 'add' && $permissiontoadd) {
} elseif ($action == 'add' /* && $permissiontoadd // always true */) {
if (!GETPOST('cancel', 'alpha')) {
$error = 0;
@@ -147,7 +147,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
header("Location: ./fiscalyear.php");
exit();
}
} elseif ($action == 'update' && $permissiontoadd) {
} elseif ($action == 'update' /* && $permissiontoadd // always true */) {
// Update record
if (!GETPOST('cancel', 'alpha')) {
$result = $object->fetch($id);
@@ -169,7 +169,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
exit();
}
} elseif ($action == 'reopen' && $permissiontoadd && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) {
} elseif ($action == 'reopen' /* && $permissiontoadd // always true */ && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) {
$result = $object->fetch($id);
$object->status = GETPOSTINT('status');

View File

@@ -8,7 +8,7 @@
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2017 Laurent Destailleur <eldy@destailleur.fr>
* Copyright (C) 2021 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -69,6 +69,7 @@ $formSetup = new FormSetup($db);
// Main options
$formSetup->newItem('BANK_DISABLE_DIRECT_INPUT')->setAsYesNo();
$formSetup->newItem('ACCOUNTANCY_COMBO_FOR_AUX')->setAsYesNo();
$item = $formSetup->newItem('ACCOUNTING_MANAGE_ZERO')->setAsYesNo();
@@ -179,75 +180,73 @@ if ($action == 'updatemode') {
if ($action == 'update2') {
$error = 0;
if (!$error) {
foreach ($list as $constname) {
$constvalue = GETPOST($constname, 'alpha');
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
if ($error) {
setEventMessages($langs->trans("Error"), null, 'errors');
}
// option in section binding
foreach ($list_binding as $constname) {
$constvalue = GETPOST($constname, 'alpha');
if ($constname == 'ACCOUNTING_DATE_START_BINDING') {
$constvalue = dol_mktime(0, 0, 0, GETPOSTINT($constname.'month'), GETPOSTINT($constname.'day'), GETPOSTINT($constname.'year'));
}
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
// options in section other
if (GETPOSTISSET('ACCOUNTING_LETTERING_NBLETTERS')) {
if (!dolibarr_set_const($db, 'ACCOUNTING_LETTERING_NBLETTERS', GETPOST('ACCOUNTING_LETTERING_NBLETTERS'), 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
// Export options
$modelcsv = GETPOSTINT('ACCOUNTING_EXPORT_MODELCSV');
if (!empty($modelcsv)) {
if (!dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
$error++;
}
//if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
// dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
//}
} else {
foreach ($list as $constname) {
$constvalue = GETPOST($constname, 'alpha');
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
if ($error) {
setEventMessages($langs->trans("Error"), null, 'errors');
}
foreach ($main_option as $constname) {
$constvalue = GETPOST($constname, 'alpha');
// option in section binding
foreach ($list_binding as $constname) {
$constvalue = GETPOST($constname, 'alpha');
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
if ($constname == 'ACCOUNTING_DATE_START_BINDING') {
$constvalue = dol_mktime(0, 0, 0, GETPOSTINT($constname.'month'), GETPOSTINT($constname.'day'), GETPOSTINT($constname.'year'));
}
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
// options in section other
if (GETPOSTISSET('ACCOUNTING_LETTERING_NBLETTERS')) {
if (!dolibarr_set_const($db, 'ACCOUNTING_LETTERING_NBLETTERS', GETPOST('ACCOUNTING_LETTERING_NBLETTERS'), 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
// Export options
$modelcsv = GETPOSTINT('ACCOUNTING_EXPORT_MODELCSV');
if (!empty($modelcsv)) {
if (!dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
$error++;
}
//if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
// dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
//}
} else {
$error++;
}
foreach ($main_option as $constname) {
$constvalue = GETPOST($constname, 'alpha');
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
foreach ($listparam[$modelcsv] as $key => $value) {
$constante = $key;
if (strpos($constante, 'ACCOUNTING') !== false) {
$constvalue = GETPOST($key, 'alpha');
if (!dolibarr_set_const($db, $constante, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
}
foreach ($listparam[$modelcsv] as $key => $value) {
$constante = $key;
if (strpos($constante, 'ACCOUNTING') !== false) {
$constvalue = GETPOST($key, 'alpha');
if (!dolibarr_set_const($db, $constante, $constvalue, 'chaine', 0, '', $conf->entity)) {
$error++;
}
}
}
if (!$error) {
// reload
$configuration = $accountancyexport->getTypeConfig();
$listparam = $configuration['param'];
}
if (!$error) {
// reload
$configuration = $accountancyexport->getTypeConfig();
$listparam = $configuration['param'];
}
if (!$error) {
@@ -460,9 +459,10 @@ if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 1) {
}
// Show form main options
// Show form for main parameters
print $formSetup->generateOutput(true);
print '<br><br><br>';
@@ -498,7 +498,7 @@ foreach ($list_binding as $key) {
1=>$langs->trans("ThirdPartyName") . ' - ' . $langs->trans("NumPiece"),
2=>$langs->trans("ThirdPartyName")
);
print $form->selectarray($key, $array, getDolGlobalInt('ACCOUNTING_LABEL_OPERATION_ON_TRANSFER', 0), 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage width200');
print $form->selectarray($key, $array, getDolGlobalInt('ACCOUNTING_LABEL_OPERATION_ON_TRANSFER', 0), 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage width300');
} else {
print '<input type="text" class="maxwidth100" id="'.$key.'" name="'.$key.'" value="'.getDolGlobalString($key).'">';
}
@@ -579,8 +579,10 @@ print '</div>';
print '<div class="center"><input type="submit" class="button reposition" value="'.dol_escape_htmltag($langs->trans('Save')).'" name="button"></div>';
// Show numbering options
print '<br><br>';
print '<br><br><br>';
// Accountancy Numbering model
$dirmodels = array_merge(array('/'), $conf->modules_parts['models']);
@@ -695,7 +697,8 @@ print '</div>';
// Show advanced options
print '<br><br>';
print '<br><br><br>';
// Advanced params
print '<div class="div-table-responsive-no-min">';
@@ -786,7 +789,8 @@ print '</div>';
print '<div class="center"><input type="submit" class="button button-edit reposition" name="button" value="'.$langs->trans('Save').'"></div>';
print '<br><br>';
print '<br><br><br>';
// Export options

View File

@@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2017-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -366,12 +366,9 @@ llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-accountancy page-adm
$titre = $langs->trans("DictionarySetup");
$linkback = '';
if ($id) {
$titre .= ' - '.$langs->trans($tablib[$id]);
$titlepicto = 'title_accountancy';
} else {
$titlepicto = '';
}
$titre .= ' - '.$langs->trans($tablib[$id]);
$titlepicto = 'title_accountancy';
print load_fiche_titre($titre, $linkback, $titlepicto);
@@ -384,309 +381,297 @@ if ($action == 'delete') {
/*
* Show a dictionary
*/
if ($id) {
// Complete requete recherche valeurs avec critere de tri
$sql = $tabsql[$id];
$sql .= " WHERE a.entity = ".((int) $conf->entity);
// If sort order is "country", we use country_code instead
if ($sortfield == 'country') {
$sortfield = 'country_code';
}
$sql .= $db->order($sortfield, $sortorder);
$sql .= $db->plimit($listlimit + 1, $offset);
// Complete requete recherche valeurs avec critere de tri
$sql = $tabsql[$id];
$sql .= " WHERE a.entity = ".((int) $conf->entity);
// If sort order is "country", we use country_code instead
if ($sortfield == 'country') {
$sortfield = 'country_code';
}
$sql .= $db->order($sortfield, $sortorder);
$sql .= $db->plimit($listlimit + 1, $offset);
$fieldlist = explode(',', $tabfield[$id]);
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
print '<div class="div-table-responsive">';
print '<table class="noborder centpercent">';
// Form to add a new line
if ($tabname[$id]) {
$fieldlist = explode(',', $tabfield[$id]);
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
// Line for title
print '<tr class="liste_titre">';
foreach ($fieldlist as $field => $value) {
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$valuetoshow = ucfirst($fieldlist[$field]); // By default
$valuetoshow = $langs->trans($valuetoshow); // try to translate
$class = "left";
if ($fieldlist[$field] == 'code') {
$valuetoshow = $langs->trans("Code");
}
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
$valuetoshow = $langs->trans("Label");
}
if ($fieldlist[$field] == 'nature') {
$valuetoshow = $langs->trans("NatureOfJournal");
}
print '<div class="div-table-responsive">';
print '<table class="noborder centpercent">';
// Form to add a new line
if ($tabname[$id]) {
$fieldlist = explode(',', $tabfield[$id]);
// Line for title
print '<tr class="liste_titre">';
foreach ($fieldlist as $field => $value) {
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$valuetoshow = ucfirst($fieldlist[$field]); // By default
$valuetoshow = $langs->trans($valuetoshow); // try to translate
$class = "left";
if ($fieldlist[$field] == 'code') {
$valuetoshow = $langs->trans("Code");
}
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
$valuetoshow = $langs->trans("Label");
}
if ($fieldlist[$field] == 'nature') {
$valuetoshow = $langs->trans("NatureOfJournal");
if ($valuetoshow != '') {
print '<td class="'.$class.'">';
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
print '<a href="'.$tabhelp[$id][$value].'">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
} elseif (!empty($tabhelp[$id][$value])) {
print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
} else {
print $valuetoshow;
}
print '</td>';
}
}
if ($valuetoshow != '') {
print '<td class="'.$class.'">';
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
print '<a href="'.$tabhelp[$id][$value].'">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
} elseif (!empty($tabhelp[$id][$value])) {
print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
} else {
print $valuetoshow;
print '<td>';
print '<input type="hidden" name="id" value="'.$id.'">';
print '</td>';
print '<td></td>';
print '<td></td>';
print '<td></td>';
print '</tr>';
// Line to enter new values
print '<tr class="oddeven nodrag nodrop nohover">';
$obj = new stdClass();
// If data was already input, we define them in obj to populate input fields.
if (GETPOST('actionadd', 'alpha')) {
foreach ($fieldlist as $key => $val) {
if (GETPOST($val) != '') {
$obj->$val = GETPOST($val);
}
}
}
$tmpaction = 'create';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
if (empty($reshook)) {
fieldListJournal($fieldlist, $obj, $tabname[$id], 'add');
}
print '<td colspan="4" class="right">';
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'">';
print '</td>';
print "</tr>";
print '<tr><td colspan="7">&nbsp;</td></tr>'; // Keep &nbsp; to have a line with enough height
}
// List of available record in database
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
$resql = $db->query($sql);
if ($resql) {
$num = $db->num_rows($resql);
$i = 0;
$param = '&id='.((int) $id);
if ($search_country_id > 0) {
$param .= '&search_country_id='.urlencode((string) ($search_country_id));
}
$paramwithsearch = $param;
$paramwithsearch .= '&sortorder='.$sortorder;
$paramwithsearch .= '&sortfield='.$sortfield;
if (GETPOST('from', 'alpha')) {
$paramwithsearch .= '&from='.GETPOST('from', 'alpha');
}
// There is several pages
if ($num > $listlimit) {
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit ? 1 : 0), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
print '</td></tr>';
}
// Title line with search boxes
/*print '<tr class="liste_titre_filter liste_titre_add">';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre center">';
$searchpicto=$form->showFilterButtons();
print $searchpicto;
print '</td>';
print '</tr>';
*/
// Title of lines
print '<tr class="liste_titre liste_titre_add">';
foreach ($fieldlist as $field => $value) {
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$class = "left";
$sortable = 1;
$valuetoshow = '';
/*
$tmparray=getLabelOfField($fieldlist[$field]);
$valuetoshow=$tmp['valuetoshow'];
$align=$tmp['align'];
$sortable=$tmp['sortable'];
*/
$valuetoshow = ucfirst($fieldlist[$field]); // By default
$valuetoshow = $langs->trans($valuetoshow); // try to translate
if ($fieldlist[$field] == 'code') {
$valuetoshow = $langs->trans("Code");
}
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
$valuetoshow = $langs->trans("Label");
}
if ($fieldlist[$field] == 'nature') {
$valuetoshow = $langs->trans("NatureOfJournal");
}
// Affiche nom du champ
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "", $sortfield, $sortorder, $class.' ');
}
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, '', $sortfield, $sortorder, 'center ');
print getTitleFieldOfList('');
print getTitleFieldOfList('');
print getTitleFieldOfList('');
print '</tr>';
if ($num) {
// Lines with values
while ($i < $num) {
$obj = $db->fetch_object($resql);
//print_r($obj);
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
$tmpaction = 'edit';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
// Show fields
if (empty($reshook)) {
fieldListJournal($fieldlist, $obj, $tabname[$id], 'edit');
}
print '<td class="center" colspan="4">';
print '<input type="hidden" name="page" value="'.$page.'">';
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
print '<input type="submit" class="button button-edit" name="actionmodify" value="'.$langs->trans("Modify").'">';
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
print '<div name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"></div>';
print '</td>';
} else {
$tmpaction = 'view';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
if (empty($reshook)) {
$langs->load("accountancy");
foreach ($fieldlist as $field => $value) {
$class = "left";
$tmpvar = $fieldlist[$field];
$valuetoshow = $obj->$tmpvar;
if ($valuetoshow == 'all') {
$valuetoshow = $langs->trans('All');
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
$key = $langs->trans("AccountingJournalType".strtoupper($obj->nature));
$valuetoshow = ($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature)) ? $key : $obj->{$fieldlist[$field]});
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
$valuetoshow = $langs->trans($obj->label);
}
$class = 'tddict';
// Show value for field
print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.dol_escape_htmltag($valuetoshow).'</td>';
}
}
// Can an entry be erased or disabled ?
$iserasable = 1;
$canbedisabled = 1;
$canbemodified = 1; // true by default
if (isset($obj->code) && $id != 10) {
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) {
$iserasable = 0;
$canbedisabled = 0;
}
}
$canbemodified = $iserasable;
$url = $_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
$url .= '&'.$param;
$url .= '&';
// Active
print '<td class="nowrap center">';
if ($canbedisabled) {
print '<a href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
} else {
print $langs->trans("AlwaysActive");
}
print "</td>";
// Modify link
if ($canbemodified) {
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
} else {
print '<td>&nbsp;</td>';
}
// Delete link
if ($iserasable) {
print '<td class="center">';
if ($user->admin) {
print '<a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a>';
}
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
print '</td>';
} else {
print '<td>&nbsp;</td>';
}
print '<td></td>';
print '</td>';
}
print "</tr>\n";
$i++;
}
print '<td>';
print '<input type="hidden" name="id" value="'.$id.'">';
print '</td>';
print '<td></td>';
print '<td></td>';
print '<td></td>';
print '</tr>';
// Line to enter new values
print '<tr class="oddeven nodrag nodrop nohover">';
$obj = new stdClass();
// If data was already input, we define them in obj to populate input fields.
if (GETPOST('actionadd', 'alpha')) {
foreach ($fieldlist as $key => $val) {
if (GETPOST($val) != '') {
$obj->$val = GETPOST($val);
}
}
}
$tmpaction = 'create';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
if (empty($reshook)) {
fieldListJournal($fieldlist, $obj, $tabname[$id], 'add');
}
print '<td colspan="4" class="right">';
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'">';
print '</td>';
print "</tr>";
print '<tr><td colspan="7">&nbsp;</td></tr>'; // Keep &nbsp; to have a line with enough height
}
// List of available record in database
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
$resql = $db->query($sql);
if ($resql) {
$num = $db->num_rows($resql);
$i = 0;
$param = '&id='.((int) $id);
if ($search_country_id > 0) {
$param .= '&search_country_id='.urlencode((string) ($search_country_id));
}
$paramwithsearch = $param;
if ($sortorder) {
$paramwithsearch .= '&sortorder='.$sortorder;
}
if ($sortfield) {
$paramwithsearch .= '&sortfield='.$sortfield;
}
if (GETPOST('from', 'alpha')) {
$paramwithsearch .= '&from='.GETPOST('from', 'alpha');
}
// There is several pages
if ($num > $listlimit) {
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit ? 1 : 0), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
print '</td></tr>';
}
// Title line with search boxes
/*print '<tr class="liste_titre_filter liste_titre_add">';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre center">';
$searchpicto=$form->showFilterButtons();
print $searchpicto;
print '</td>';
print '</tr>';
*/
// Title of lines
print '<tr class="liste_titre liste_titre_add">';
foreach ($fieldlist as $field => $value) {
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$showfield = 1; // By default
$class = "left";
$sortable = 1;
$valuetoshow = '';
/*
$tmparray=getLabelOfField($fieldlist[$field]);
$showfield=$tmp['showfield'];
$valuetoshow=$tmp['valuetoshow'];
$align=$tmp['align'];
$sortable=$tmp['sortable'];
*/
$valuetoshow = ucfirst($fieldlist[$field]); // By default
$valuetoshow = $langs->trans($valuetoshow); // try to translate
if ($fieldlist[$field] == 'code') {
$valuetoshow = $langs->trans("Code");
}
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
$valuetoshow = $langs->trans("Label");
}
if ($fieldlist[$field] == 'nature') {
$valuetoshow = $langs->trans("NatureOfJournal");
}
// Affiche nom du champ
if ($showfield) {
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "", $sortfield, $sortorder, $class.' ');
}
}
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, '', $sortfield, $sortorder, 'center ');
print getTitleFieldOfList('');
print getTitleFieldOfList('');
print getTitleFieldOfList('');
print '</tr>';
if ($num) {
// Lines with values
while ($i < $num) {
$obj = $db->fetch_object($resql);
//print_r($obj);
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
$tmpaction = 'edit';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
// Show fields
if (empty($reshook)) {
fieldListJournal($fieldlist, $obj, $tabname[$id], 'edit');
}
print '<td class="center" colspan="4">';
print '<input type="hidden" name="page" value="'.$page.'">';
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
print '<input type="submit" class="button button-edit" name="actionmodify" value="'.$langs->trans("Modify").'">';
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
print '<div name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"></div>';
print '</td>';
} else {
$tmpaction = 'view';
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
$reshook = $hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager->error;
$errors = $hookmanager->errors;
if (empty($reshook)) {
$langs->load("accountancy");
foreach ($fieldlist as $field => $value) {
$showfield = 1;
$class = "left";
$tmpvar = $fieldlist[$field];
$valuetoshow = $obj->$tmpvar;
if ($valuetoshow == 'all') {
$valuetoshow = $langs->trans('All');
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
$key = $langs->trans("AccountingJournalType".strtoupper($obj->nature));
$valuetoshow = ($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature)) ? $key : $obj->{$fieldlist[$field]});
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
$valuetoshow = $langs->trans($obj->label);
}
$class = 'tddict';
// Show value for field
if ($showfield) {
print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.dol_escape_htmltag($valuetoshow).'</td>';
}
}
}
// Can an entry be erased or disabled ?
$iserasable = 1;
$canbedisabled = 1;
$canbemodified = 1; // true by default
if (isset($obj->code) && $id != 10) {
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) {
$iserasable = 0;
$canbedisabled = 0;
}
}
$canbemodified = $iserasable;
$url = $_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
if ($param) {
$url .= '&'.$param;
}
$url .= '&';
// Active
print '<td class="nowrap center">';
if ($canbedisabled) {
print '<a href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
} else {
print $langs->trans("AlwaysActive");
}
print "</td>";
// Modify link
if ($canbemodified) {
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
} else {
print '<td>&nbsp;</td>';
}
// Delete link
if ($iserasable) {
print '<td class="center">';
if ($user->admin) {
print '<a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a>';
}
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
print '</td>';
} else {
print '<td>&nbsp;</td>';
}
print '<td></td>';
print '</td>';
}
print "</tr>\n";
$i++;
}
}
} else {
dol_print_error($db);
}
print '</table>';
print '</div>';
print '</form>';
} else {
dol_print_error($db);
}
print '</table>';
print '</div>';
print '</form>';
print '<br>';
// End of page

View File

@@ -199,15 +199,13 @@ if ($action == 'update' && $permissiontobind) {
}
if (!empty($toselect) && $massaction === 'changeaccount') {
//$msg = '<div><span class="accountingprocessing">' . $langs->trans("Processing") . '...</span></div>';
$ok = 0;
$ko = 0;
$msg = '';
$sql = '';
if (!empty($toselect) && in_array($accounting_product_mode, $accounting_product_modes)) {
if (!empty($toselect) && in_array($accounting_product_mode, $accounting_product_modes)) { // @phpstan-ignore-line Bug phpstan thinking that empty(array()) is always true
$accounting = new AccountingAccount($db);
//$msg .= '<div><span class="accountingprocessing">' . count($toselect) . ' ' . $langs->trans("SelectedLines") . '</span></div>';
$arrayofdifferentselectedvalues = array();
$cpt = 0;
@@ -424,7 +422,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$resql = $db->query($sql);
$nbtotalofrecords = $db->num_rows($resql);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -41,15 +41,16 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("accountancy", "admin", "bills", "compta", "errors", "hrm", "salaries"));
$mesg = '';
$action = GETPOST('action', 'aZ09');
$cancel = GETPOST('cancel', 'alpha');
$id = GETPOSTINT('id');
$rowid = GETPOSTINT('rowid');
$massaction = GETPOST('massaction', 'aZ09');
$optioncss = GETPOST('optioncss', 'alpha');
$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...)
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountingsubaccountlist'; // To manage different context of search
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
$id = GETPOSTINT('id');
$rowid = GETPOSTINT('rowid');
$search_subaccount = GETPOST('search_subaccount', 'alpha');
$search_label = GETPOST('search_label', 'alpha');
@@ -298,7 +299,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$resql = $db->query($sql);
$nbtotalofrecords = $db->num_rows($resql);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -352,7 +352,7 @@ if ($action != 'export') {
$newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?type=sub' . $url_param, '', 1, array('morecss' => 'marginleftonly'));
}
$newcardbutton .= dolGetButtonTitle($langs->trans('ExportToCsv'), '', 'fa fa-file-csv paddingleft', $_SERVER['PHP_SELF'], 'exportcsvbutton', 1, array('morecss' => 'marginleftonly'));
$newcardbutton .= dolGetButtonTitle($langs->trans("Export").' (' . getDolGlobalString('ACCOUNTING_EXPORT_FORMAT').')', '', 'fa fa-file-csv paddingleft', $_SERVER['PHP_SELF'], 'exportcsvbutton', 1, array('morecss' => 'marginleftonly'));
print '<script type="text/javascript">
jQuery(document).ready(function() {

View File

@@ -52,13 +52,13 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("accountancy", "compta"));
$socid = GETPOSTINT('socid');
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'bookkeepinglist';
$socid = GETPOSTINT('socid');
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
$search_doc_type = GETPOST("search_doc_type", 'alpha');
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
@@ -764,7 +764,7 @@ if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
dol_print_error($db);
}
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}
@@ -865,8 +865,8 @@ if ($action == 'export_file') {
// Print form confirm
print $formconfirm;
//$param=''; param started before
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
//$param=''; param started in action part
if ($contextpage != $_SERVER["PHP_SELF"]) {
$param .= '&contextpage='.urlencode($contextpage);
}
if ($limit > 0 && $limit != $conf->liste_limit) {

View File

@@ -63,8 +63,8 @@ $massdate = dol_mktime(0, 0, 0, GETPOSTINT('massdatemonth'), GETPOSTINT('massdat
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'bookkeepinglist';
$toselect = GETPOST('toselect', 'array:int');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php'));
// Search Parameters
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
@@ -785,7 +785,7 @@ if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
dol_print_error($db);
}
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}
@@ -1306,6 +1306,7 @@ while ($i < min($num, $limit)) {
// Document ref
$modulepart = ''; // may be used by include*.tpl.php
if (!empty($arrayfields['t.doc_ref']['checked'])) {
$documentlink = '';
$objectstatic = null;
if ($line->doc_type === 'customer_invoice') {
@@ -1317,7 +1318,7 @@ while ($i < min($num, $limit)) {
//$modulepart = 'facture';
$filename = dol_sanitizeFileName($line->doc_ref);
$filedir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($line->doc_ref);
$filedir = $conf->invoice->dir_output.'/'.dol_sanitizeFileName($line->doc_ref);
$urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id;
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
} elseif ($line->doc_type === 'supplier_invoice') {

View File

@@ -60,7 +60,7 @@ $socid = GETPOSTINT('socid');
$mode = (GETPOST('mode', 'alpha') ? GETPOST('mode', 'alpha') : 'customer'); // Only for tab view
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$type = GETPOST('type', 'alpha');
if ($type == 'sub') {
$context_default = 'bookkeepingbysubaccountlist';
@@ -902,7 +902,7 @@ if (empty($reshook)) {
$newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create'.(!empty($type) ? '&type=sub' : '').'&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd);
}
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
if ($contextpage != $_SERVER["PHP_SELF"]) {
$param .= '&contextpage='.urlencode($contextpage);
}
if ($limit > 0 && $limit != $conf->liste_limit) {

View File

@@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
@@ -69,47 +69,47 @@ class AccountancyCategory // extends CommonObject
public $id;
/**
* @var string Accountancy code
* @var ?string Accountancy code
*/
public $code;
/**
* @var string Accountancy Category label
* @var ?string Accountancy Category label
*/
public $label;
/**
* @var string Accountancy range account
* @var ?string Accountancy range account
*/
public $range_account;
/**
* @var int Sens of the account: 0: credit - debit, 1: debit - credit
* @var ?int Sens of the account: 0: credit - debit, 1: debit - credit
*/
public $sens;
/**
* @var int Category type of accountancy
* @var ?int Category type of accountancy
*/
public $category_type;
/**
* @var string Formula
* @var ?string Formula
*/
public $formula;
/**
* @var int Position
* @var ?int Position
*/
public $position;
/**
* @var int country id
* @var ?int country id
*/
public $fk_country;
/**
* @var int Is active
* @var ?int Is active
*/
public $active;
@@ -399,7 +399,6 @@ class AccountancyCategory // extends CommonObject
*/
public function delete($user, $notrigger = 0)
{
global $conf, $langs;
$error = 0;
$sql = "DELETE FROM ".$this->db->prefix().$this->table_element;
@@ -438,6 +437,7 @@ class AccountancyCategory // extends CommonObject
public function display($id)
{
global $conf;
$sql = "SELECT t.rowid, t.account_number, t.label";
$sql .= " FROM ".$this->db->prefix()."accounting_account as t";
$sql .= " WHERE t.fk_accounting_category = ".((int) $id);

View File

@@ -1412,14 +1412,14 @@ class AccountancyExport
$invoice = new Facture($this->db);
$invoice->fetch($line->fk_doc);
$refInvoice = $invoice->ref;
$refInvoice = (string) $invoice->ref;
} elseif ($line->doc_type == 'supplier_invoice') {
// Supplier invoice
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
$invoice = new FactureFournisseur($this->db);
$invoice->fetch($line->fk_doc);
$refInvoice = $invoice->ref_supplier;
$refInvoice = (string) $invoice->ref_supplier;
}
$tab = array();
@@ -1632,14 +1632,14 @@ class AccountancyExport
$invoice = new Facture($this->db);
$invoice->fetch($line->fk_doc);
$refInvoice = $invoice->ref;
$refInvoice = (string) $invoice->ref;
} elseif ($line->doc_type == 'supplier_invoice') {
// Supplier invoice
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
$invoice = new FactureFournisseur($this->db);
$invoice->fetch($line->fk_doc);
$refInvoice = $invoice->ref_supplier;
$refInvoice = (string) $invoice->ref_supplier;
}
$tab = array();

View File

@@ -1,5 +1,6 @@
<?php
/* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
/* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2025 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -66,22 +67,22 @@ class AccountancyReport // extends CommonObject
public $id;
/**
* @var string Accountancy code
* @var ?string Accountancy code
*/
public $code;
/**
* @var string Accountancy Category label
* @var ?string Accountancy Category label
*/
public $label;
/**
* @var int country id
* @var ?int country id
*/
public $fk_country;
/**
* @var int Is active
* @var ?int Is active
*/
public $active;
@@ -229,7 +230,6 @@ class AccountancyReport // extends CommonObject
*/
public function update($user = null, $notrigger = 0)
{
global $conf, $langs;
$error = 0;
// Clean parameters

View File

@@ -1,11 +1,11 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -80,17 +80,17 @@ class AccountingAccount extends CommonObject
public $datec;
/**
* @var string pcg version
* @var ?string pcg version
*/
public $fk_pcg_version;
/**
* @var string pcg type
* @var ?string pcg type
*/
public $pcg_type;
/**
* @var string account number
* @var ?string account number
*/
public $account_number;
@@ -115,12 +115,12 @@ class AccountingAccount extends CommonObject
public $status;
/**
* @var string Label of account
* @var ?string Label of account
*/
public $label;
/**
* @var string Label short of account
* @var ?string Label short of account
*/
public $labelshort;
@@ -358,7 +358,7 @@ class AccountingAccount extends CommonObject
$sql = "UPDATE " . $this->db->prefix() . $this->table_element;
$sql .= " SET fk_pcg_version = " . ($this->fk_pcg_version ? "'" . $this->db->escape($this->fk_pcg_version) . "'" : "null");
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
$sql .= " , pcg_type = '" . $this->db->escape($this->pcg_type) . "'";
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
$sql .= " , account_parent = " . (int) $this->account_parent;
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
@@ -436,16 +436,14 @@ class AccountingAccount extends CommonObject
if ($result > 0) {
$this->db->begin();
if (!$error) {
$sql = "DELETE FROM " . $this->db->prefix() . $this->table_element;
$sql .= " WHERE rowid=" . ((int) $this->id);
$sql = "DELETE FROM " . $this->db->prefix() . $this->table_element;
$sql .= " WHERE rowid=" . ((int) $this->id);
dol_syslog(get_class($this) . "::delete sql=" . $sql);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = "Error " . $this->db->lasterror();
}
dol_syslog(get_class($this) . "::delete sql=" . $sql);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = "Error " . $this->db->lasterror();
}
// Commit or rollback
@@ -737,7 +735,7 @@ class AccountingAccount extends CommonObject
* @param FactureLigne|SupplierInvoiceLine $factureDet Facture Det
* @param array<string,int> $accountingAccount Array of Accounting account
* @param string $type Customer / Supplier
* @return array{suggestedaccountingaccountbydefaultfor:string,suggestedaccountingaccountfor:string,suggestedid:?int,code_l:string,code_p:string,code_t:string}|int<-1,-1> Array of accounting accounts suggested or < 0 if technical error.
* @return array{suggestedaccountingaccountbydefaultfor:''|'eec'|'eecwithoutvatnumber'|'eecwithvat'|'export',suggestedaccountingaccountfor:'deposit'|'eec'|'eecwithoutvatnumber'|'eecwithvat'|'export'|'prodserv'|'thirdparty',suggestedid:?int,code_l:string,code_p:?string,code_t:string}|int<-1,-1> Array of accounting accounts suggested or < 0 if technical error.
* 'suggestedaccountingaccountbydefaultfor'=>Will be used for the label to show on tooltip for account by default on any product
* 'suggestedaccountingaccountfor'=>Is the account suggested for this product
*/
@@ -889,10 +887,10 @@ class AccountingAccount extends CommonObject
return -1;
}
$code_l = $accountdeposittoventilated->ref;
$code_l = (string) $accountdeposittoventilated->ref;
$code_p = '';
$code_t = '';
$suggestedid = $accountdeposittoventilated->rowid;
$suggestedid = (int) $accountdeposittoventilated->rowid;
$suggestedaccountingaccountfor = 'deposit';
}
@@ -908,10 +906,10 @@ class AccountingAccount extends CommonObject
} elseif ($type == 'supplier') {
$accountdeposittoventilated->fetch(0, getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'), 1);
}
$code_l = $accountdeposittoventilated->ref;
$code_l = (string) $accountdeposittoventilated->ref;
$code_p = '';
$code_t = '';
$suggestedid = $accountdeposittoventilated->rowid;
$suggestedid = (int) $accountdeposittoventilated->rowid;
$suggestedaccountingaccountfor = 'deposit';
}
}

View File

@@ -49,11 +49,6 @@ class BookKeeping extends CommonObject
*/
public $table_element = 'accounting_bookkeeping';
/**
* @var int Entity
*/
public $entity;
/**
* @var BookKeepingLine[] Lines
*/
@@ -75,27 +70,27 @@ class BookKeeping extends CommonObject
public $date_lim_reglement;
/**
* @var string Doc type
* @var ?string Doc type
*/
public $doc_type;
/**
* @var string Doc ref
* @var ?string Doc ref
*/
public $doc_ref;
/**
* @var int ID
* @var ?int ID
*/
public $fk_doc;
/**
* @var int ID
* @var ?int ID
*/
public $fk_docdet;
/**
* @var string Thirdparty code
* @var ?string Thirdparty code
*/
public $thirdparty_code;
@@ -110,69 +105,69 @@ class BookKeeping extends CommonObject
public $subledger_label;
/**
* @var string doc_type
* @var ?string doc_type
*/
public $numero_compte;
/**
* @var string label compte
* @var ?string label compte
*/
public $label_compte;
/**
* @var string label operation
* @var ?string label operation
*/
public $label_operation;
/**
* @var float FEC:Debit
* @var ?float FEC:Debit
*/
public $debit;
/**
* @var float FEC:Credit
* @var ?float FEC:Credit
*/
public $credit;
/**
* @var float FEC:Amount (Not necessary)
* @var ?float FEC:Amount (Not necessary)
* @deprecated No more used (we have info into debit/credit and sens)
*/
public $montant;
/**
* @var float FEC:Amount (Not necessary)
* @var ?float FEC:Amount (Not necessary)
* @deprecated No more used (we have info into debit/credit and sens)
*/
public $amount;
/**
* @var string FEC:Sens (Not necessary)
* @var ?string FEC:Sens (Not necessary)
*/
public $sens;
/**
* @var int ID
* @var ?int ID
*/
public $fk_user_author;
/**
* @var string key for import
* @var ?string key for import
*/
public $import_key;
/**
* @var string code journal
* @var ?string code journal
*/
public $code_journal;
/**
* @var string label journal
* @var ?string label journal
*/
public $journal_label;
/**
* @var int accounting transaction id
* @var ?int accounting transaction id
*/
public $piece_num;
@@ -1016,23 +1011,23 @@ class BookKeeping extends CommonObject
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
$sqlwhere[] = $this->db->sanitize($key).' LIKE \''.$this->db->escape($this->db->escapeforlike($value)).'%\'';
$sqlwhere[] = $this->db->sanitize($key)." LIKE '".$this->db->escape($this->db->escapeforlike($value))."%'";
} elseif ($key == 't.date_creation>=') {
$sqlwhere[] = 't.date_creation >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_creation >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_creation<=') {
$sqlwhere[] = 't.date_creation <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_creation <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_export>=') {
$sqlwhere[] = 't.date_export >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_export >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_export<=') {
$sqlwhere[] = 't.date_export <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_export <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_validated>=') {
$sqlwhere[] = 't.date_validated >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_validated >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_validated<=') {
$sqlwhere[] = 't.date_validated <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_validated <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_lim_reglement>=') {
$sqlwhere[] = 't.date_lim_reglement>=\''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_lim_reglement>='".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_lim_reglement<=') {
$sqlwhere[] = 't.date_lim_reglement<=\''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_lim_reglement<='".$this->db->idate((int) $value)."'";
} elseif ($key == 't.credit' || $key == 't.debit') {
$sqlwhere[] = natural_search($key, $value, 1, 1);
} elseif ($key == 't.reconciled_option') {
@@ -1044,7 +1039,7 @@ class BookKeeping extends CommonObject
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
}
} elseif ($key == 't.search_accounting_code_in' && !empty($value)) {
$sqlwhere[] = 't.numero_compte IN ('.$this->db->sanitize($value, 1).')';
$sqlwhere[] = "t.numero_compte IN (".$this->db->sanitize($value, 1).")";
} else {
$sqlwhere[] = natural_search($key, $value, 0, 1);
}
@@ -1060,7 +1055,7 @@ class BookKeeping extends CommonObject
$sql .= " AND t.subledger_account IS NOT NULL";
$sql .= " AND t.subledger_account <> ''";
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
} else {
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
@@ -1198,7 +1193,7 @@ class BookKeeping extends CommonObject
if (count($filter) > 0) {
foreach ($filter as $key => $value) {
if ($key == 't.doc_date') {
$sqlwhere[] = $this->db->sanitize($key).' = \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = $this->db->sanitize($key)." = '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.doc_date>=') {
$sqlwhere[] = "t.doc_date >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.doc_date<=') {
@@ -1218,23 +1213,23 @@ class BookKeeping extends CommonObject
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
$sqlwhere[] = $this->db->sanitize($key).' LIKE \''.$this->db->escape($value).'%\'';
$sqlwhere[] = $this->db->sanitize($key)." LIKE '".$this->db->escape($value)."%'";
} elseif ($key == 't.date_creation>=') {
$sqlwhere[] = 't.date_creation >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_creation >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_creation<=') {
$sqlwhere[] = 't.date_creation <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_creation <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.tms>=') {
$sqlwhere[] = 't.tms >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.tms >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.tms<=') {
$sqlwhere[] = 't.tms <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.tms <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_export>=') {
$sqlwhere[] = 't.date_export >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_export >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_export<=') {
$sqlwhere[] = 't.date_export <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_export <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_validated>=') {
$sqlwhere[] = 't.date_validated >= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_validated >= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.date_validated<=') {
$sqlwhere[] = 't.date_validated <= \''.$this->db->idate((int) $value).'\'';
$sqlwhere[] = "t.date_validated <= '".$this->db->idate((int) $value)."'";
} elseif ($key == 't.credit' || $key == 't.debit') {
$sqlwhere[] = natural_search($key, $value, 1, 1);
} elseif ($key == 't.code_journal' && !empty($value)) {
@@ -1251,7 +1246,7 @@ class BookKeeping extends CommonObject
}
}
if (count($sqlwhere) > 0) {
$sql .= ' AND '.implode(" ".$this->db->sanitize($filtermode)." ", $sqlwhere);
$sql .= " AND ".implode(" ".$this->db->sanitize($filtermode)." ", $sqlwhere);
}
$filter = '';
@@ -1421,16 +1416,15 @@ class BookKeeping extends CommonObject
$sql .= " AND t.subledger_account <> ''";
$sql .= " GROUP BY t.numero_compte, t.subledger_account, t.subledger_label";
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
} else {
$sql .= ' GROUP BY t.numero_compte';
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
}
if (!empty($sortfield)) {
$sql .= $this->db->order($sortfield, $sortorder);
}
$sql .= $this->db->order($sortfield, $sortorder);
if (!empty($limit)) {
$sql .= $this->db->plimit($limit + 1, $offset);
}
@@ -1828,7 +1822,7 @@ class BookKeeping extends CommonObject
$this->db->begin();
// Call triggers
if (! $error && ! $notrigger) {
if (!$notrigger) {
$result = $this->call_trigger('BOOKKEEPING_DELETE', $user);
if ($result < 0) {
$error++;
@@ -2301,14 +2295,12 @@ class BookKeeping extends CommonObject
}
}
} elseif ($direction == 1) {
if (!$error) {
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = 'Error '.$this->db->lasterror();
dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR);
}
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->errors[] = 'Error '.$this->db->lasterror();
dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR);
}
if (!$error) {

View File

@@ -49,6 +49,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("bills", "compta", "accountancy", "productbatch", "products"));
$action = GETPOST('action');
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
$account_parent = GETPOST('account_parent');
@@ -112,6 +113,7 @@ $contextpage = 'accountancycustomerlines';
$hookmanager->initHooks([$contextpage ]);
$formaccounting = new FormAccounting($db);
$object = new stdClass();
$arrayfields = array(
'fd.rowid' => array('label' => "LineId", 'position' => 1, 'checked' => '1', 'enabled' => '1'),
@@ -129,6 +131,7 @@ $arrayfields = array(
// @phpstan-ignore-next-line
$arrayfields = dol_sort_array($arrayfields, 'position');
/*
* Actions
*/
@@ -355,7 +358,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -55,14 +55,14 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancycustomerlist'; // To manage different context of search
$optioncss = GETPOST('optioncss', 'alpha');
$default_account = GETPOSTINT('default_account');
// Select Box
$mesCasesCochees = GETPOST('toselect', 'array');
$mesCasesCochees = GETPOST('toselect', 'array:int');
// Search Getpost
$search_societe = GETPOST('search_societe', 'alpha');
@@ -401,7 +401,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -298,7 +298,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -51,13 +51,13 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancyexpensereportlist'; // To manage different context of search
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
// Select Box
$mesCasesCochees = GETPOST('toselect', 'array');
$mesCasesCochees = GETPOST('toselect', 'array:int');
// Search Getpost
$search_login = GETPOST('search_login', 'alpha');
@@ -330,7 +330,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -196,6 +196,21 @@ if ($only_rappro == 2) {
$sql .= " ORDER BY b.datev";
//print $sql;
// Preload payment account codes by payment type from c_paiement
$accountancy_code_by_payment = array();
$sql2 = "SELECT code, accountancy_code";
$sql2 .= " FROM ".MAIN_DB_PREFIX."c_paiement";
$sql2 .= " WHERE entity IN (".getEntity('c_paiement').")";
$sql2 .= " AND active = 1";
$resql = $db->query($sql2);
if ($resql) {
while ($objp = $db->fetch_object($resql)) {
if (!empty($objp->code) && !empty($objp->accountancy_code)) {
$accountancy_code_by_payment[$objp->code] = $objp->accountancy_code;
}
}
}
$object = new Account($db);
$paymentstatic = new Paiement($db);
$paymentsupplierstatic = new PaiementFourn($db);
@@ -295,6 +310,11 @@ if ($result) {
// Set accountancy code for bank
$compta_bank = $obj->account_number;
// Determining the bank account by payment method
if (!empty($obj->fk_type) && !empty($accountancy_code_by_payment[$obj->fk_type])) {
$compta_bank = $accountancy_code_by_payment[$obj->fk_type];
}
// Set accountancy code for thirdparty (example: '411CU...' or '411' if no subledger account defined on customer)
$compta_soc = 'NotDefined';
$accountancy_code_general = 'NotDefined';
@@ -362,6 +382,32 @@ if ($result) {
$amounttouse = $obj->amount_main_currency;
}
// in case option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on, payment could be for more than one third-partie
// so we have to find which part of the payment is affected to each third-parties
// (because in this case $obj-amount = the total of the paiement and not the paiement for each third-parties)
if (getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') && ($lineisapurchase == 1 || $lineisasale == 1) ) {
if ($lineisapurchase == 1) {
$sqlamount = "SELECT SUM(pf.amount) as amount";
$sqlamount .= " FROM ".MAIN_DB_PREFIX."paiementfounr_facturefourn AS pf";
$sqlamount .= " INNER JOIN ".MAIN_DB_PREFIX."paiementfourn AS p ON pf.fk_paiementfourn = p.rowid";
$sqlamount .= " RIGHT JOIN ".MAIN_DB_PREFIX."facture AS f ON pf.fk_facturefourn = f.rowid";
$sqlamount .= " WHERE p.fk_bank = ".((int) $obj->rowid);
$sqlamount .= " AND f.fk_soc = ".((int) $obj->socid);
} else {
$sqlamount = "SELECT SUM(pf.amount) as amount";
$sqlamount .= " FROM ".MAIN_DB_PREFIX."paiement_facture AS pf";
$sqlamount .= " INNER JOIN ".MAIN_DB_PREFIX."paiement AS p ON pf.fk_paiement = p.rowid";
$sqlamount .= " RIGHT JOIN ".MAIN_DB_PREFIX."facture AS f ON pf.fk_facture = f.rowid";
$sqlamount .= " WHERE p.fk_bank = ".((int) $obj->rowid);
$sqlamount .= " AND f.fk_soc = ".((int) $obj->socid);
}
$resultamount = $db->query($sqlamount);
if ($resultamount) {
$objamount = $db->fetch_object($resultamount);
if (!empty($objamount->amount)) $amounttouse = $objamount->amount;
}
}
// get_url may return -1 which is not traversable
if (is_array($links) && count($links) > 0) {
// Test if entry is for a social contribution, salary or expense report.
@@ -427,10 +473,17 @@ if ($result) {
$societestatic->email = $tabcompany[$obj->rowid]['email'];
$tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30);
if ($compta_soc) {
if (empty($tabtp[$obj->rowid][$compta_soc])) {
$tabtp[$obj->rowid][$compta_soc] = $amounttouse;
} else {
$tabtp[$obj->rowid][$compta_soc] += $amounttouse;
// because we are in 2 loop (loop on the line from the sql queries and loop on $links)
// and in case of option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on,
// we will pass here n times for each payment line
// so we have to add $amoutouse only if the line $links[$key] correspond to the payment line we are in used ( socid correspondinf at the payment line $links)
// if FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is off we add $amounttouse
if (!getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') || $obj->socid == $links[$key]['url_id']){
if (empty($tabtp[$obj->rowid][$compta_soc])) {
$tabtp[$obj->rowid][$compta_soc] = $amounttouse;
} else {
$tabtp[$obj->rowid][$compta_soc] += $amounttouse;
}
}
}
} elseif ($links[$key]['type'] == 'user') {
@@ -626,7 +679,7 @@ if ($result) {
}
// If no links were found to know the amount on thirdparty, we try to guess it.
// This may happens on bank entries without the links lines to 'company'.
// This may happen on bank entries without the links lines to 'company'.
if (empty($tabtp[$obj->rowid]) && !empty($tabmoreinfo[$obj->rowid]['withdraw'])) { // If we don't find 'company' link because it is an old 'withdraw' record
foreach ($links as $key => $val) {
if ($links[$key]['type'] == 'payment') {

View File

@@ -4,11 +4,12 @@
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2013-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2017-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2025 Hannes Hieronimi <hannes@innwerk.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -976,7 +977,7 @@ if ($resql) {
$sql .= " bu.fk_bank, bu.url_id AS bu_url_id, bu.type AS bu_type";
$sql .= " FROM ".$db->prefix()."subscription as su";
$sql .= " INNER JOIN ".$db->prefix()."adherent as adh ON adh.rowid = su.fk_adherent";
$sql .= " INNER JOIN ".$db->prefix()."bank_url as bu ON bu.url_id = su.rowid AND bu.type = '".$db->escape($type)."'";
$sql .= " INNER JOIN ".$db->prefix()."bank_url as bu ON bu.fk_bank = su.fk_bank AND bu.type = '".$db->escape($type)."'";
// Already in bookkeeping or not
if ($in_bookkeeping == 'already') {
$sql .= " INNER JOIN ".$db->prefix()."accounting_bookkeeping as ab ON ab.fk_doc=bu.fk_bank AND ab.fk_docdet=su.rowid";
@@ -1004,7 +1005,7 @@ if ($resql) {
// Add object in payment
if (!isset($tabpay[$obj->fk_bank]['objects'][$object_key])) {
$tabpay[$obj->fk_bank]['objects'][$object_key] = array(
'amount' => -$obj->amount_payment,
'amount' => $obj->amount_payment,
'bu_url_id' => $obj->bu_url_id,
);
}

View File

@@ -355,7 +355,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -56,14 +56,14 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$toselect = GETPOST('toselect', 'array:int');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancysupplierlist'; // To manage different context of search
$optioncss = GETPOST('optioncss', 'alpha');
$default_account = GETPOSTINT('default_account');
// Select Box
$mesCasesCochees = GETPOST('toselect', 'array');
$mesCasesCochees = GETPOST('toselect', 'array:int');
// Search Getpost
$search_lineid = GETPOST('search_lineid', 'alpha'); // Can be '> 100'
@@ -409,7 +409,7 @@ $nbtotalofrecords = '';
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
$result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result);
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
$page = 0;
$offset = 0;
}

View File

@@ -1,10 +1,10 @@
<?php
/* Copyright (C) 2015-2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.fr>
/* Copyright (C) 2015-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.fr>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -33,6 +33,7 @@
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var int $formatexportset
* @var string $type_export
* @var string $filename
@@ -89,6 +90,38 @@ if ((substr($accountancyexport->getFormatCode($formatexportset), 0, 3) == 'fec')
$completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
}
// --- Hook: allow external modules to override export filename ---
if (is_object($hookmanager)) {
// Dedicated context (non-blocking if other hooks are already initialized)
$hookmanager->initHooks(array('accountancyexportfilename'));
$parameters = array(
'type_export' => $type_export ?? '',
'format' => $format ?? '',
'format_code' => $accountancyexport->getFormatCode($formatexportset),
'code' => $code ?? '',
'prefix' => $prefix ?? '',
'filename' => $filename ?? '',
'period_start' => $startaccountingperiod ?? '',
'period_end' => $endaccountingperiod ?? '',
'siren' => $siren ?? '',
'ndate_in_filename' => $nodateexport ?? 0,
'now_datetime' => $date_export,
// Value by default
'defaultfilename' => $completefilename
);
// Hook called by modules: setExportFilename
$reshook = $hookmanager->executeHooks('setExportFilename', $parameters, $accountancyexport, $action);
if ($reshook > 0) {
if (!empty($hookmanager->resArray['filename'])) {
$completefilename = $hookmanager->resArray['filename'];
} elseif ($hookmanager->resPrint !== '') {
$completefilename = $hookmanager->resPrint;
}
}
}
if (empty($downloadMode)) {
header('Content-Disposition: attachment;filename=' . $completefilename);
}

View File

@@ -8,7 +8,7 @@
* Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2020-2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2020-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2023 Waël Almoman <info@almoman.com>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
@@ -91,11 +91,7 @@ if ($action == 'set_default') {
$res = true;
} elseif ($action == 'setdoc') {
// Set default model
if (dolibarr_set_const($db, "MEMBER_ADDON_PDF_ODT", $value, 'chaine', 0, '', $conf->entity)) {
// The constant that was read ahead of the new set
// we therefore go through a variable to have a consistent display
$conf->global->MEMBER_ADDON_PDF_ODT = $value;
}
dolibarr_set_const($db, "MEMBER_ADDON_PDF_ODT", $value, 'chaine', 0, '', $conf->entity);
// We activate the model
$ret = delDocumentModel($value, $type);
@@ -242,8 +238,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_M
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin');
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
@@ -268,7 +264,7 @@ print ' <td>'.$langs->trans("Name").'</td>';
print ' <td>'.$langs->trans("Description").'</td>';
print ' <td>'.$langs->trans("Example").'</td>';
print ' <td class="center" width="80">'.$langs->trans("Status").'</td>';
print ' <td class="center" width="60">'.$langs->trans("ShortInfo").'</td>';
print ' <td class="center" width="60"></td>';
print "</tr>\n";
$arrayofmodules = array();
@@ -351,12 +347,14 @@ print "<br>";
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
// Defined model definition table
$def = array();
// TODO Replace with $def = getListOfModels($db, $type);
$sql = "SELECT nom as name";
$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
$sql .= " WHERE type = '".$db->escape($type)."'";
$sql .= " AND entity = ".$conf->entity;
$sql .= " AND entity = ".((int) $conf->entity);
$resql = $db->query($sql);
if ($resql) {
$i = 0;
@@ -633,10 +631,52 @@ print '<input type="hidden" name="page_y" value="">';
print load_fiche_titre($langs->trans("MembersCards"), '', '');
$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, ';
$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, ';
$helptext .= '__YEAR__, __MONTH__, __DAY__';
$helptext = $langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
// Set list of substitution variables (must be the same list than into the core/modules/member/doc/pdf_standard_member.class.php
$helptext .= '<small>';
$now = dol_now();
$year = dol_print_date($now, '%Y');
$month = dol_print_date($now, '%m');
$day = dol_print_date($now, '%d');
// List of values to scan for a replacement (Must be samevalues than into adherents/cartes/carte.php and pdf_standard_members.class.php)
$substitutionarray = array(
'__MEMBER_ID__' => 'MemberID',
'__MEMBER_REF__' => 'MemberRef',
'__MEMBER_LOGIN__' => 'MemberLogin',
'__MEMBER_TITLE__' => 'MemberLogin',
'__MEMBER_FIRSTNAME__' => 'MemberFirstname',
'__MEMBER_LASTNAME__' => 'MemberLastname',
'__MEMBER_FULLNAME__' => 'MemberFullname',
'__MEMBER_COMPANY__' => 'Company',
'__MEMBER_ADDRESS__' => 'MemberAddress',
'__MEMBER_ZIP__' => 'MemberZip',
'__MEMBER_TOWN__' => 'MemberTown',
'__MEMBER_COUNTRY__' => 'MemberCountry',
'__MEMBER_COUNTRY_CODE__' =>'MemberCountryCode',
'__MEMBER_EMAIL__' => 'MemberEmail',
'__MEMBER_BIRTH__' => 'MemberBirthdate',
'__MEMBER_TYPE__' => 'MemberType',
'__MEMBER_PHOTO__' => 'MemberPhoto',
'__YEAR__' => $year,
'__MONTH__' => $month,
'__DAY__' => $day,
'__DOL_MAIN_URL_ROOT__' => (string) DOL_MAIN_URL_ROOT,
'__SERVER__' => "https://".$_SERVER["SERVER_NAME"]."/"
);
foreach ($substitutionarray as $key => $val) {
$helptext .= $key.' => '.$val.'<br>';
}
// Make substitutions for new variables
/*
$array_member = $this->getSubstitutionarrayMember($object, $outputlangs);
$array_soc = $this->get_substitutionarray_mysoc($mysoc, $outputlangs);
$array_other = $this->get_substitutionarray_other($outputlangs);
$substitutionarray = array_merge($substitutionarray, $array_member, $array_soc, $array_other);
*/
$helptext .= '</small>';
print '<div class="div-table-responsive-no-min">';
print '<table class="noborder centpercent">';
@@ -653,32 +693,32 @@ $arrayoflabels = array();
foreach (array_keys($_Avery_Labels) as $codecards) {
$arrayoflabels[$codecards] = $_Avery_Labels[$codecards]['name'];
}
print $form->selectarray('ADHERENT_CARD_TYPE', $arrayoflabels, getDolGlobalString('ADHERENT_CARD_TYPE') ? getDolGlobalString('ADHERENT_CARD_TYPE') : 'CARD', 1, 0, 0);
print $form->selectarray('ADHERENT_CARD_TYPE', $arrayoflabels, getDolGlobalString('ADHERENT_CARD_TYPE', 'CARD'), 1, 0, 0);
print "</td></tr>\n";
// Text printed on top of member cards
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_HEADER_TEXT").'</td><td>';
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_HEADER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_HEADER_TEXT')).'">';
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_HEADER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_HEADER_TEXT')).'" spellcheck="false">';
print "</td></tr>\n";
// Text printed on member cards (align on left)
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT").'</td><td>';
print '<textarea class="flat" name="ADHERENT_CARD_TEXT" cols="50" rows="5" wrap="soft">'."\n";
print '<textarea class="flat" name="ADHERENT_CARD_TEXT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
print getDolGlobalString('ADHERENT_CARD_TEXT');
print '</textarea>';
print "</td></tr>\n";
// Text printed on member cards (align on right)
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT_RIGHT").'</td><td>';
print '<textarea class="flat" name="ADHERENT_CARD_TEXT_RIGHT" cols="50" rows="5" wrap="soft">'."\n";
print '<textarea class="flat" name="ADHERENT_CARD_TEXT_RIGHT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
print getDolGlobalString('ADHERENT_CARD_TEXT_RIGHT');
print '</textarea>';
print "</td></tr>\n";
// Text printed on bottom of member cards
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_FOOTER_TEXT").'</td><td>';
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_FOOTER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_FOOTER_TEXT')).'">';
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_FOOTER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_FOOTER_TEXT')).'" spellcheck="false">';
print "</td></tr>\n";
print '</table>';
@@ -702,11 +742,6 @@ print '<input type="hidden" name="page_y" value="">';
print load_fiche_titre($langs->trans("MembersTickets"), '', '');
$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, ';
$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, ';
$helptext .= '__YEAR__, __MONTH__, __DAY__';
print '<div class="div-table-responsive-no-min">';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';
@@ -728,7 +763,7 @@ print "</td></tr>\n";
// Text printed on member address sheets
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_ETIQUETTE_TEXT").'</td><td>';
print '<textarea class="flat" name="ADHERENT_ETIQUETTE_TEXT" cols="50" rows="5" wrap="soft">'."\n";
print '<textarea class="flat" name="ADHERENT_ETIQUETTE_TEXT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
print getDolGlobalString('ADHERENT_ETIQUETTE_TEXT');
print '</textarea>';
print "</td></tr>\n";

View File

@@ -150,8 +150,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_M
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_emails');
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');

View File

@@ -76,8 +76,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_M
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_extrafields');
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');

View File

@@ -79,8 +79,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_M
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_type_extrafields');
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');

View File

@@ -129,8 +129,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_M
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_website');
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($title, $linkback, 'title_setup');
$head = member_admin_prepare_head();

View File

@@ -1,7 +1,8 @@
<?php
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2012 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2012 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2025 Frédéric France <frederic.france@free.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -249,7 +250,7 @@ abstract class ActionsAdherentCardCommon
array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login),
array('label' => $langs->trans("Password"), 'type' => 'text', 'name' => 'password', 'value' => $password));
$this->tpl['action_create_user'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id, $langs->trans("CreateDolibarrLogin"), $langs->trans("ConfirmCreateAdherent"), "confirm_create_user", $formquestion, 'no');
$this->tpl['action_create_user'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id, $langs->trans("CreateDolibarrLogin"), $langs->trans("ConfirmCreateMember"), "confirm_create_user", $formquestion, 'no');
}
}
@@ -269,8 +270,8 @@ abstract class ActionsAdherentCardCommon
$this->object->fk_soc = GETPOSTINT("fk_soc");
$this->object->socid = GETPOSTINT("fk_soc");
$this->object->lastname = GETPOST("lastname");
$this->object->firstname = GETPOST("firstname");
$this->object->lastname = GETPOST("lastname");
$this->object->firstname = GETPOST("firstname");
$this->object->civility_id = GETPOST("civility_id");
$this->object->address = GETPOST("address");
$this->object->zip = GETPOST("zipcode");

Some files were not shown because too many files have changed in this diff Show More