Compare commits

..

2069 Commits

Author SHA1 Message Date
Laurent Destailleur
275b82e51e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-20 14:57:32 +01:00
Laurent Destailleur
6f8a8834b8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2026-01-20 14:57:22 +01:00
Laurent Destailleur
9aa5bf4aef Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-20 14:54:01 +01:00
Laurent Destailleur
aee871f0b5 Debug v23 2026-01-20 14:53:50 +01:00
lvessiller-opendsi
d51a5a9068 FIX color of ajax on/off button on setup page (#36917)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-20 14:51:43 +01:00
Laurent Destailleur
4ee6eb2e2d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-20 14:04:47 +01:00
Laurent Destailleur
7d13c12252 Fix CI 2026-01-20 14:01:09 +01:00
Alexandre SPANGARO
3913f4418e Asset - Simplify menu (#36911)
* Asset - Simplify menu

* Asset - Simplify menu

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-20 13:57:33 +01:00
Laurent Destailleur
ff4b7c54d8 Fix CI 2026-01-20 13:56:52 +01:00
Laurent Destailleur
1e8fdd41c9 Fix CI 2026-01-20 13:35:31 +01:00
Laurent Destailleur
7b9a485f17 Fix CI 2026-01-20 13:22:48 +01:00
Laurent Destailleur
8af405a3e8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-20 12:36:29 +01:00
Laurent Destailleur
ae52d75335 NEW Can add more tags to default tags in dolPrintHTML 2026-01-20 12:30:08 +01:00
Vincent Penel
20dfc743e0 Update DB (#36925) 2026-01-20 11:36:00 +01:00
Alexandre SPANGARO
b2c5ee5c4a FIX Accountancy - Chart of account - Some problem on backtopage (#36910)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-20 11:35:02 +01:00
Laurent Destailleur
6571096107 Merge 2026-01-20 02:37:16 +01:00
Laurent Destailleur
99d1aad0b2 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-20 02:11:52 +01:00
Laurent Destailleur
cba8ccaa32 Fix PROPAL_ENABLE_NEGATIVE_QTY and ORDER_ENABLE_NEGATIVE_QTY 2026-01-20 02:11:14 +01:00
Laurent Destailleur
6e6779f401 Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop 2026-01-20 00:30:09 +01:00
Laurent Destailleur
b79ade4c1f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2026-01-19 21:18:00 +01:00
Laurent Destailleur
61f90ab20c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 21:16:07 +01:00
Laurent Destailleur
9c899899f3 Fix CI 2026-01-19 21:15:46 +01:00
Laurent Destailleur
3e3e2a3759 Fix CI 2026-01-19 21:06:51 +01:00
Frédéric FRANCE
3401bd6249 fetchAll ecm_files load extrafields (#36894) 2026-01-19 20:53:30 +01:00
Laurent Destailleur
92048de0f5 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 20:52:09 +01:00
Laurent Destailleur
8757990a52 Try to force phan version 2026-01-19 20:46:11 +01:00
Laurent Destailleur
dec35ff489 Merge manually #36851 emailcollector phpimap in reply to oauth v22. 2026-01-19 20:33:47 +01:00
Laurent Destailleur
01e37657a6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 19:48:50 +01:00
Laurent Destailleur
f7e688f580 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 19:48:43 +01:00
Laurent Destailleur
28cdf7d121 Close #36889 manually, too many conflict due to non atomic PR. 2026-01-19 19:47:36 +01:00
William Mead
566aec36c6 Added since tags to orders api PHPDoc (#36919) 2026-01-19 19:10:44 +01:00
Charlène Benke
eeaa02390e Rename expense report to holiday in API class (#36920) 2026-01-19 19:10:20 +01:00
Laurent Destailleur
2893311770 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 19:08:15 +01:00
Laurent Destailleur
9790bf61c6 Fix CI 2026-01-19 19:08:02 +01:00
Laurent Destailleur
3f14dc0562 Fix CI 2026-01-19 19:07:29 +01:00
Laurent Destailleur
1175f20f97 Fix CI 2026-01-19 19:07:14 +01:00
Laurent Destailleur
13d872a265 Fix warning 2026-01-19 18:39:34 +01:00
Laurent Destailleur
94217e800d Fix CI 2026-01-19 18:28:06 +01:00
Laurent Destailleur
3b23e76237 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 18:18:27 +01:00
Laurent Destailleur
7d62a04fda Fix CI 2026-01-19 18:16:57 +01:00
Laurent Destailleur
6cde33dfd1 Try to fix ci 2026-01-19 18:00:48 +01:00
Laurent Destailleur
07d10fdb22 CI 2026-01-19 17:36:11 +01:00
Laurent Destailleur
e00086d057 Fix ci 2026-01-19 17:34:05 +01:00
Laurent Destailleur
7b12b10f9b Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 17:31:48 +01:00
Laurent Destailleur
68d92e59d2 Fix CI 2026-01-19 17:29:02 +01:00
Laurent Destailleur
e3d1e21df3 Fix ci 2026-01-19 17:21:45 +01:00
Laurent Destailleur
8dd729af9a Fix id ci 2026-01-19 17:18:57 +01:00
Laurent Destailleur
9857539204 Fix ci 2026-01-19 17:11:42 +01:00
Laurent Destailleur
76a2945d88 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 17:06:06 +01:00
Laurent Destailleur
abb256212a Ci 2026-01-19 17:05:01 +01:00
Laurent Destailleur
fd1b690813 ci 2026-01-19 16:53:17 +01:00
Laurent Destailleur
05f8d70c39 ci 2026-01-19 16:46:00 +01:00
Laurent Destailleur
e6c735b66e cs 2026-01-19 16:42:25 +01:00
Laurent Destailleur
d4860519a6 ci 2026-01-19 16:36:47 +01:00
Laurent Destailleur
af24facf4a Ci 2026-01-19 16:20:55 +01:00
Laurent Destailleur
2a2bc335c8 Fix ci 2026-01-19 16:14:20 +01:00
Laurent Destailleur
b12b20221b Fix CI 2026-01-19 16:10:30 +01:00
Laurent Destailleur
0fb5a9b3e9 Fix CI 2026-01-19 16:05:31 +01:00
Laurent Destailleur
b46b8b4476 Fix shellcheck 2026-01-19 16:00:11 +01:00
Laurent Destailleur
22283af99c Fix CI 2026-01-19 15:55:51 +01:00
Laurent Destailleur
6a103a9ac9 Fix CI 2026-01-19 15:50:45 +01:00
Laurent Destailleur
3043cf65d1 Fix CI 2026-01-19 15:48:01 +01:00
Laurent Destailleur
99f5ede0ec Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 15:39:48 +01:00
Laurent Destailleur
5ab2014e09 Try to run phan and phpstan on modified files only 2026-01-19 15:34:28 +01:00
Laurent Destailleur
5c63541097 Fix CI 2026-01-19 15:12:57 +01:00
Laurent Destailleur
99c7effb9b Fix civility_code vs civility_id 2026-01-19 15:04:13 +01:00
Laurent Destailleur
e61c8989f3 Ignore phan false positive 2026-01-19 14:55:37 +01:00
Laurent Destailleur
3a01cd9002 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 14:48:21 +01:00
Laurent Destailleur
60fbdb1bc9 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 14:48:06 +01:00
Laurent Destailleur
e52bd93ce0 Fix #36896 2026-01-19 14:46:58 +01:00
Laurent Destailleur
f4693352ca Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-19 14:36:39 +01:00
Laurent Destailleur
a85e25c807 Fix warning 2026-01-19 14:36:29 +01:00
Laurent Destailleur
6ed576bc9f Debug v23 2026-01-19 14:28:33 +01:00
Laurent Destailleur
6a5a8ad951 FIX #36902 2026-01-19 13:36:48 +01:00
Charlène Benke
76399298dc fix field name for create update payement (#36903) 2026-01-19 13:27:50 +01:00
Charlène Benke
b79aaf99d7 Add setpaid call on api expensereport (#36904) 2026-01-19 13:27:22 +01:00
Laurent Destailleur
27aa36b537 Fix div balance 2026-01-19 03:50:15 +01:00
Laurent Destailleur
a7e54c5e36 Better title for stipe pages 2026-01-19 01:17:36 +01:00
Laurent Destailleur
f2455704d2 NEW Button to close/reopen bank account status 2026-01-19 01:07:33 +01:00
Laurent Destailleur
354559aa19 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 00:27:30 +01:00
Laurent Destailleur
820f3f44c7 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-19 00:26:48 +01:00
Laurent Destailleur
a42ce189ea Trans 2026-01-19 00:22:15 +01:00
Laurent Destailleur
a9abf5c9f2 Trans 2026-01-19 00:21:31 +01:00
Laurent Destailleur
47c4ebeb14 WIP Upload file with AI parsing 2026-01-18 21:29:19 +01:00
Laurent Destailleur
e26c965b7c Doc 2026-01-18 14:23:52 +01:00
Laurent Destailleur
3ba8daab0c Work on AI doc parsing protopype 2026-01-18 14:21:09 +01:00
Laurent Destailleur
f99df3ddc8 Fix position of html components 2026-01-17 18:32:25 +01:00
Laurent Destailleur
2e3d1b0ccd CSS 2026-01-17 16:03:14 +01:00
Laurent Destailleur
5d18db5aea Disable remote access in test 2026-01-16 18:15:51 +01:00
Laurent Destailleur
ec27124e24 Log message 2026-01-16 18:08:48 +01:00
Laurent Destailleur
c3e043d656 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-16 16:51:37 +01:00
Laurent Destailleur
f94e1c24fc Fix status of dispute 2026-01-16 16:51:15 +01:00
Laurent Destailleur
06a5ea19c4 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-16 16:43:45 +01:00
Laurent Destailleur
062f6d18a4 Fix label in list 2026-01-16 16:43:00 +01:00
Laurent Destailleur
3cc2f1b146 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-16 16:37:56 +01:00
Laurent Destailleur
8b79913f6f Fix no translate 2026-01-16 16:36:36 +01:00
Laurent Destailleur
7dee283762 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2026-01-16 16:34:32 +01:00
Laurent Destailleur
949c111f68 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-16 16:32:40 +01:00
Laurent Destailleur
d953f0caf8 Fix color of status 2026-01-16 16:29:26 +01:00
Laurent Destailleur
a7d0206156 Debug v23 - Fix label of dispute status 2026-01-16 16:28:07 +01:00
Laurent Destailleur
5bb00b827a Fix trans 2026-01-16 16:17:14 +01:00
Laurent Destailleur
f240f53e8c Sync transifex 2026-01-16 16:00:55 +01:00
Laurent Destailleur
020895f404 Doc 2026-01-16 15:13:33 +01:00
Laurent Destailleur
d378d1f8cc Debug v23 2026-01-16 14:51:32 +01:00
Frédéric FRANCE
d07ce2bd08 enhance actioncomm reminder (#36316)
* enhance actioncomm reminder

* fix
2026-01-16 11:32:43 +01:00
Alexandre SPANGARO
8838ad7636 UX Accountancy - Card - Add link to element (#36452)
* UX Accountancy - Card - Add link to element

* CI
2026-01-16 11:31:20 +01:00
Francis
5180d59fc3 Update visibility logic for individual and professional lines (#36449)
Hi
It is a long time that I modify my Dolibarr to erase some items which are not interesting for individual customer...
I decided to post my solution !!!
A css class call professionalline to allow to erase some items !
A simple switch show/hide...
Francis
2026-01-16 11:29:41 +01:00
Frédéric FRANCE
723df03c0d clean printipp (#36472)
* clean printipp

* clean printipp

* clean printipp

* clean printipp

* clean printipp

* clean printipp

* Update functions.lib.php
2026-01-16 11:28:47 +01:00
Frédéric FRANCE
b5394f763a time to init modules (#36526)
* time to init modules

* time to init modules

* Update modules.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-16 11:14:27 +01:00
atm-corentin
9c04379799 NEW : add support for label field in addline method In supplier order (#36544)
* add support for label field in addline method to set description when empty

* update
2026-01-16 11:12:47 +01:00
Eric - CAP-REL
7f6966ee06 add hooks on extrafields (#36536) 2026-01-16 11:12:22 +01:00
Lucas Marcouiller
0aa629cfe0 fix change some conf->global to getdolglobal (#36874)
* fix change some conf->global to getdolglobal

* revert some changes

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-16 02:55:21 +01:00
Alexandre SPANGARO
bd4b90eadf NEW Supplier invoice - List - use select2 multiselect for status (#36887) 2026-01-16 02:51:21 +01:00
Frédéric FRANCE
b6a49cb4bd fix french doc (#36895)
* fix french doc

* fix french

* Update sync_members_types_dolibarr2ldap.php

* fix french doc

* Update translate.class.php

* Update export-bank-receipts.php

* Update product.class.php

* Update product.class.php
2026-01-16 02:32:37 +01:00
Laurent Destailleur
79d5c0c418 Debug v23 2026-01-15 16:12:14 +01:00
Laurent Destailleur
8ed279a488 Missing PGK currency 2026-01-15 16:10:15 +01:00
Frédéric FRANCE
d770d37e29 add phpcs rule extension (#36561)
* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* add phpcs rule extension

* test

* test

* test

* test

* test

* test

* fix

* fix

* fix

* fix

* fix

* fix

* fix translations

* fix translations

* translate

* translate

* translate

* translate

* translate

* translate

* translate

* Update propal.class.php
2026-01-15 16:05:06 +01:00
Laurent Destailleur
7abf0cfe68 Add PGK currency 2026-01-15 15:49:38 +01:00
Laurent Destailleur
f8e0ff19da Debug v23 2026-01-15 15:44:03 +01:00
Laurent Destailleur
24d7e4f24d Debug v23 - PDF generation error if additional PDF name not set 2026-01-15 15:37:33 +01:00
Laurent Destailleur
87c01a3371 Debug v23 - migrate_reload_modules was broken 2026-01-15 15:22:33 +01:00
Laurent Destailleur
7f2d0efa22 Debug v23 2026-01-15 11:52:04 +01:00
Laurent Destailleur
bedf25f1f4 Debug v23 2026-01-15 11:19:07 +01:00
Laurent Destailleur
1be0b12b3f Debug v23 2026-01-15 11:00:57 +01:00
Charlène Benke
2c5be593c4 Add includepermissions parameter to infoGroups api method (#36856)
Added parameter to include permissions in infoGroups method.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 03:19:59 +01:00
Laurent Destailleur
5929de443e Debug v24 2026-01-15 03:18:50 +01:00
William Mead
7b9a878af2 NEW IP restriction to CIDR range (#36855)
* Added IP in CIDR range check

* Cleaned code

* Cleaned code

* Updated conf example

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 03:16:10 +01:00
Charlène Benke
d37d84b66e add user table on api holiday index (#36862)
added a join to the user table in the SQL query.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 03:14:24 +01:00
Laurent Destailleur
89d380db67 Fix description 2026-01-15 03:12:15 +01:00
Charlène Benke
a994dbf674 NEW : Fichinter model on stable version (#36873)
* fichinter model on stable version

* Simplify menu addition for ListOfTemplates

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 03:04:27 +01:00
Laurent Destailleur
a5dd3cf63b Fix css regression 2026-01-15 02:44:23 +01:00
Lucas Marcouiller
69de2e8cdd Fix agenda search for holiday or birthday (#36878)
Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 02:05:33 +01:00
Lucas Marcouiller
f1b4379a0e Fix agenda search for holiday or birthday (#36878)
Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 02:04:57 +01:00
tcesar
200c88a55b New Add day selection for payment reports (#36799)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 02:04:41 +01:00
Charlène Benke
417bdc88ce Fix warning : add test on $key_fields['default'] is set (#36870)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 01:57:41 +01:00
github-actions[bot]
35602c6ff4 PHPStan > Update baseline (#36876)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-15 01:28:31 +01:00
Laurent Destailleur
4b9b0877b1 Debug v23 2026-01-15 01:10:28 +01:00
Laurent Destailleur
091b2b3f77 Fix trans 2026-01-15 00:46:33 +01:00
Laurent Destailleur
4126329f3d Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-15 00:39:06 +01:00
Laurent Destailleur
f17cc801b6 css 2026-01-15 00:38:35 +01:00
Laurent Destailleur
4af57f9f46 CSS 2026-01-14 22:09:56 +01:00
Laurent Destailleur
4255228273 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-14 21:39:25 +01:00
Laurent Destailleur
d4051faf35 Fix CI 2026-01-14 21:38:45 +01:00
Laurent Destailleur
e510043ade css 2026-01-14 19:44:19 +01:00
Laurent Destailleur
c39939fb21 Log travis 2026-01-14 17:48:49 +01:00
Laurent Destailleur
263cba5c0e Fix CI 2026-01-14 17:40:43 +01:00
Laurent Destailleur
4cffb37310 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-14 16:23:52 +01:00
Laurent Destailleur
9ff559a0ad Fix demo file 2026-01-14 16:07:56 +01:00
Laurent Destailleur
6a80ef4019 Demo template 2026-01-14 16:01:25 +01:00
Laurent Destailleur
0a12caf313 Debug v23 2026-01-14 15:59:58 +01:00
Laurent Destailleur
e2cd37a178 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-14 15:42:21 +01:00
Laurent Destailleur
c940376446 Clean sql 2026-01-14 15:41:44 +01:00
Laurent Destailleur
efdbf9a95c Trans 2026-01-14 14:28:30 +01:00
Laurent Destailleur
b487a95d86 Fix export for quadratus 2026-01-14 14:27:16 +01:00
Laurent Destailleur
053cd4e020 Init var 2026-01-14 14:13:13 +01:00
Laurent Destailleur
3e2598f8ff FIX Debug v23 - Pb in export accountancy. Var not defined. Missing
conditions for dol_dir_list. Pb cache not used when not found. Header
set at end.
2026-01-14 14:04:53 +01:00
Laurent Destailleur
e266a42545 Fix warning 2026-01-14 12:22:11 +01:00
Laurent Destailleur
dec9dfc06b FIX css 2026-01-14 12:01:22 +01:00
Laurent Destailleur
4d65ce61d6 Clean code 2026-01-13 23:25:12 +01:00
Laurent Destailleur
e9ac39c031 Fix CI 2026-01-13 23:06:07 +01:00
Laurent Destailleur
cb99921d7c Fix include 2026-01-13 21:51:01 +01:00
Laurent Destailleur
b02d1e0ada Fix error code 2026-01-13 21:48:45 +01:00
Laurent Destailleur
8e4762b2e1 Fix generic password type 2026-01-13 19:00:22 +01:00
Laurent Destailleur
7a93278cb7 Fix generic password type 2026-01-13 19:00:00 +01:00
Laurent Destailleur
02656bbcb8 Doc 2026-01-13 18:50:10 +01:00
Laurent Destailleur
1eda4e6157 Fix name of Oauth entry must not have special chars 2026-01-13 16:37:18 +01:00
Laurent Destailleur
750e1ccc90 NEW Global option do diable email is on each email setup page 2026-01-13 16:10:34 +01:00
Laurent Destailleur
85c8612c87 Fix warning oauth 2026-01-13 15:57:09 +01:00
Laurent Destailleur
72b746ddd3 Fix CI 2026-01-13 15:56:03 +01:00
Laurent Destailleur
4abad0b347 Fix warning oauth 2026-01-13 15:55:56 +01:00
Laurent Destailleur
dc5b719065 Fix add missing message once token has been saved 2026-01-13 15:39:04 +01:00
Laurent Destailleur
58d1254212 Fix missing state 2026-01-13 15:38:58 +01:00
Laurent Destailleur
f1e45a3f69 Fix add missing message once token has been saved 2026-01-13 15:24:26 +01:00
Laurent Destailleur
f373c65b08 Fix missing state 2026-01-13 14:53:31 +01:00
Laurent Destailleur
5c43f8a2cf Fix CI 2026-01-13 11:34:25 +01:00
Laurent Destailleur
8531f6a2aa Fix CI 2026-01-13 11:33:09 +01:00
Laurent Destailleur
509e93e425 Fix CI 2026-01-13 11:31:48 +01:00
Laurent Destailleur
6ca16f700d Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-13 11:21:00 +01:00
Laurent Destailleur
ab9c1a80e6 CSS 2026-01-13 11:20:42 +01:00
Laurent Destailleur
8ed5f73a71 Add registration number into file 2026-01-12 19:44:43 +01:00
Laurent Destailleur
98a179f638 Fix filter 2026-01-12 19:18:52 +01:00
Laurent Destailleur
9cd99ba4d2 Fix warning 2026-01-12 16:15:17 +01:00
Laurent Destailleur
9464f88162 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-12 16:14:28 +01:00
Laurent Destailleur
1d37667947 Fix warning 2026-01-12 16:14:19 +01:00
github-actions[bot]
84ac2a32ee PHPStan > Update baseline (#36852)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2026-01-12 16:05:40 +01:00
Laurent Destailleur
e1345e225f Fix css 2026-01-12 15:55:34 +01:00
Laurent Destailleur
fcedaa150e CSS 2026-01-12 14:34:14 +01:00
Laurent Destailleur
9140e0599a Debug v23 2026-01-12 14:32:59 +01:00
Laurent Destailleur
9f151233be Clean code 2026-01-12 14:14:19 +01:00
Laurent Destailleur
c92b7874a3 Enhance modify control of invoices 2026-01-12 14:13:37 +01:00
Laurent Destailleur
91c35d4e40 NEW Add a protection against total change on a validated invoice. 2026-01-12 13:44:30 +01:00
Laurent Destailleur
15054810ba Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop
Debug v23
2026-01-12 13:42:02 +01:00
Laurent Destailleur
8dd0aeb1c8 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-12 01:36:19 +01:00
Laurent Destailleur
2754b6485d Debug v23 2026-01-12 01:34:27 +01:00
Laurent Destailleur
041f50a438 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-12 01:00:32 +01:00
Laurent Destailleur
544f4971bc Debug v23 2026-01-12 01:00:05 +01:00
Laurent Destailleur
fb99d6e736 Debug v23 2026-01-12 00:59:17 +01:00
Laurent Destailleur
8d1cb356c3 Link to societe_rib into llx_facture 2026-01-11 19:16:22 +01:00
Laurent Destailleur
9403eb5aab Copy some field of customer invoices into supplier invoices 2026-01-11 19:12:19 +01:00
Laurent Destailleur
94c75d399d Add field thirdparty_payment_id 2026-01-11 19:08:28 +01:00
Laurent Destailleur
a56645784c Prepare 23.0 2026-01-11 18:58:17 +01:00
Laurent Destailleur
b533548caa Prepare 23.0 2026-01-11 18:57:40 +01:00
Laurent Destailleur
aa0563a54a Debug v23 2026-01-11 18:41:11 +01:00
Laurent Destailleur
9c68ba8759 Debug v23 2026-01-11 18:17:21 +01:00
Laurent Destailleur
d280468216 Debug v23 2026-01-11 18:12:45 +01:00
Laurent Destailleur
c019159f05 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-11 17:57:29 +01:00
Laurent Destailleur
2759d409e4 Debug v23 2026-01-11 17:57:15 +01:00
Laurent Destailleur
a303b97330 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-11 17:53:32 +01:00
Laurent Destailleur
049fcba06a Doc 2026-01-11 17:53:04 +01:00
Laurent Destailleur
342a6f754b Fix CI 2026-01-11 17:51:13 +01:00
Laurent Destailleur
a96bba2199 CSS v23 2026-01-11 17:40:21 +01:00
Laurent Destailleur
382a211962 Try to fix warning 2026-01-11 16:25:10 +01:00
Laurent Destailleur
a4852508e3 Clean code 2026-01-11 16:19:47 +01:00
Laurent Destailleur
d803fc5f28 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-11 16:18:52 +01:00
Laurent Destailleur
6e9225ce8b Debug v23 2026-01-11 16:17:12 +01:00
Laurent Destailleur
a41e9941f9 CSS 2026-01-11 16:00:00 +01:00
Laurent Destailleur
99b88e876f css 2026-01-11 14:26:55 +01:00
Laurent Destailleur
4d23bfbffa Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-11 13:13:14 +01:00
Laurent Destailleur
3fbee82d99 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-11 13:13:06 +01:00
Laurent Destailleur
c698f4dc28 Backport some fixes of #36851 2026-01-11 13:12:38 +01:00
Laurent Destailleur
391fd8dab6 FIX icon of mastodon social network 2026-01-11 12:55:58 +01:00
spsolauv
8e37e310e0 CLOSE issue 36744 fix user can delete some actioncomm on which he has not the right (#36747)
* CLOSE issue 36744 fix user can delete some actioncomm on which he has not the right

* Fix whitespace

* Refactor delete confirmation logic for user access

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-11 12:34:47 +01:00
spsolauv
ca52029551 CLOSE issue 36744 fix user can delete some actioncomm on which he has not the right (#36747)
* CLOSE issue 36744 fix user can delete some actioncomm on which he has not the right

* Fix whitespace

* Refactor delete confirmation logic for user access

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-11 12:33:17 +01:00
Expresion
9fa9d395dc Fix numeric input parsing to support comma as decimal separator (#36845)
* Fix numeric input parsing to support comma as decimal separator

GETPOSTINT()  only handles integer values and fails when input uses a comma as decimal

* Update dispatch.php

* Change GETPOST to GETPOSTFLOAT for price input

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-10 18:24:19 +01:00
Laurent Destailleur
cf621642fb Revert "NEW : allow to save stocks as 0 on a stock movement. (#36812)" (#36848)
This reverts commit 5662bfad31.
2026-01-10 18:21:41 +01:00
ThomasNgr-OpenDSI
5662bfad31 NEW : allow to save stocks as 0 on a stock movement. (#36812)
* NEW: Add global STOCK_MOVEMENT_FORCE_DO_NOT_CLEAN_EMPTY_LINES to force do not clean empty lines on movement stock. Because customer need to see the warehouse when the product previously even if the stock is at 0. And when in the reassort page, the product with a stock at 0 don't display and block the repleinishment of the stock of the product

* Fix un code manquant pour l'affichage des entrepots avec un stock a 0 lorsque la globale STOCK_MOVEMENT_FORCE_DO_NOT_CLEAN_EMPTY_LINES est activé

---------

Co-authored-by: Kamel Khelifa <kkhelifa@open-dsi.fr>
2026-01-10 18:21:22 +01:00
William Mead
dcbccdc0eb NEW concatenate PDF to strato contract model (#36803)
* Added option to concatenate terms of sale PDF to end of strato contract model

* Cleaned code

* Cleaned code

* Fix module name from 'contrat' to 'contract'

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-10 17:50:08 +01:00
Lucas Marcouiller
489197f1a5 NEW import process by removing some steps (#36811)
* Fix import process by removing some steps

* fix Ci

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
2026-01-10 17:49:28 +01:00
Laurent Destailleur
984e3d88d8 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-10 17:48:24 +01:00
Laurent Destailleur
502106384c Fix CI 2026-01-10 17:48:08 +01:00
Laurent Destailleur
e8d12c8448 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-10 17:29:30 +01:00
Laurent Destailleur
03099babed Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-10 17:29:22 +01:00
Laurent Destailleur
8f12d3d0de Debug 2026-01-10 17:29:01 +01:00
Laurent Destailleur
0c49c8298e Fix case 2026-01-10 17:28:44 +01:00
lvessiller-opendsi
8e58606559 NEW webportal hooks on form list (#36844) 2026-01-10 17:09:01 +01:00
Laurent Destailleur
da20d5100a Trans 2026-01-10 16:49:33 +01:00
Laurent Destailleur
f35a9b65e9 Debug v23 2026-01-10 16:20:57 +01:00
Laurent Destailleur
089800e477 Add try catch 2026-01-10 15:14:28 +01:00
Laurent Destailleur
0f48d5badf Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-10 15:12:39 +01:00
Laurent Destailleur
8149b907a3 Debug v23 2026-01-10 14:06:10 +01:00
Laurent Destailleur
1cc14e9942 Trans 2026-01-10 13:18:27 +01:00
Laurent Destailleur
e81cac68ec Debug v23 2026-01-10 13:14:01 +01:00
Laurent Destailleur
5faccd7216 Debug v23 2026-01-10 12:47:13 +01:00
Laurent Destailleur
0bf75fcc93 Debug v23 2026-01-09 20:01:26 +01:00
Laurent Destailleur
9469ba672b Add log 2026-01-09 19:22:46 +01:00
Laurent Destailleur
cfc3787dbf Debug 2026-01-09 15:25:26 +01:00
Laurent Destailleur
28b2b0c1d6 Debug v23 2026-01-09 13:38:27 +01:00
Laurent Destailleur
2208c49082 Debug tracking 2026-01-09 00:04:56 +01:00
Laurent Destailleur
e69290ee22 Implement the ping of last rowid 2026-01-08 23:58:34 +01:00
Laurent Destailleur
a32c92c8ad Debug track 2026-01-08 23:51:19 +01:00
Laurent Destailleur
d24cb36841 Debug sending message 2026-01-08 23:20:56 +01:00
Laurent Destailleur
5d07856182 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 23:14:20 +01:00
Laurent Destailleur
d3fab3540e css 2026-01-08 23:06:01 +01:00
Laurent Destailleur
82ee93e2c2 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 22:55:36 +01:00
Laurent Destailleur
f47c6bbce8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 22:55:15 +01:00
Laurent Destailleur
08c909195a Add tracking of event 2026-01-08 22:55:03 +01:00
Laurent Destailleur
375b81434c Debug v23 2026-01-08 22:54:22 +01:00
Laurent Destailleur
5eb088cbfc Debug v23 2026-01-08 21:45:10 +01:00
Laurent Destailleur
aa0b793f78 Debug v23 2026-01-08 21:39:02 +01:00
Laurent Destailleur
0f324ff91d Trans 2026-01-08 21:18:56 +01:00
Laurent Destailleur
af77d738be Trans 2026-01-08 21:13:11 +01:00
Laurent Destailleur
a9601e81a6 Doc 2026-01-08 21:11:00 +01:00
Laurent Destailleur
bb9cdca711 Trans 2026-01-08 21:01:52 +01:00
Laurent Destailleur
42f161421e css 2026-01-08 19:40:47 +01:00
Laurent Destailleur
e08f9eaebd css 2026-01-08 19:15:21 +01:00
Anthony Berton
d5a6f92e0d Ajout d'une div responsive autour du formulaire pour améliorer la mise en page (#36825)
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
2026-01-08 18:56:32 +01:00
Anthony Berton
4eeb3cfaae Ajout d'une div responsive autour du formulaire pour améliorer la mise en page (#36825)
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
2026-01-08 18:56:13 +01:00
Jyhere
9a7a660b66 FIX: getCombination response is way too big (even db object is serialized) (#36830) 2026-01-08 18:55:41 +01:00
Laurent Destailleur
6d48c9f36f Fix CI 2026-01-08 18:24:21 +01:00
Laurent Destailleur
f66ba35226 Clean code 2026-01-08 15:20:08 +01:00
Laurent Destailleur
3a0c8114f9 Fix CI 2026-01-08 15:07:56 +01:00
Laurent Destailleur
2e064b4015 Fix fatal error 2026-01-08 14:52:25 +01:00
Laurent Destailleur
235725b157 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 14:38:01 +01:00
Laurent Destailleur
99cf740f47 Debug v23 2026-01-08 14:28:53 +01:00
Laurent Destailleur
c26a10fbb8 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 13:07:44 +01:00
Laurent Destailleur
681d25dd54 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-08 13:06:54 +01:00
Laurent Destailleur
0e6db7d7ea Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-08 13:06:47 +01:00
Laurent Destailleur
2e47d661e5 Fix CI 2026-01-08 13:06:30 +01:00
Laurent Destailleur
aab17ffe0c Fix CI 2026-01-08 13:00:26 +01:00
Laurent Destailleur
52e3830618 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 03:47:32 +01:00
Laurent Destailleur
41de9c48c6 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-08 03:07:05 +01:00
Laurent Destailleur
d94fe28c6d Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-08 03:01:39 +01:00
Laurent Destailleur
78bb09d3a7 Clean code 2026-01-08 03:01:18 +01:00
Laurent Destailleur
f535b0efc9 Fix warning 2026-01-08 02:40:44 +01:00
Laurent Destailleur
e46a31a6ab Code clean 2026-01-08 01:41:55 +01:00
Laurent Destailleur
95d18194f3 NEW Switch default value of nature of a thirdparty. Individual if no
data to guess instead of company by default.
2026-01-08 01:38:32 +01:00
Laurent Destailleur
16506899eb Include last id in answer 2026-01-08 01:00:17 +01:00
Laurent Destailleur
b95e35b392 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-07 20:21:46 +01:00
Laurent Destailleur
d175489fde Add more phpunits 2026-01-07 20:21:35 +01:00
Zakaria Boushaba
efb87f011c FIX: Correct due date calculation for payment term 45J FDM on 15th (#36808)
Co-authored-by: Zakaria Boushaba <z.boushaba@vold.africa>
2026-01-07 20:21:07 +01:00
ThomasNgr-OpenDSI
74f3cedaf5 Manage THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_PROPAL (#36810) 2026-01-07 19:16:45 +01:00
Laurent Destailleur
48fab7528f Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 19:15:36 +01:00
Laurent Destailleur
66989d4fef Clean files 2026-01-07 19:15:06 +01:00
Laurent Destailleur
448385ceb2 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-07 19:09:09 +01:00
Laurent Destailleur
99e08613f1 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-07 19:08:58 +01:00
Laurent Destailleur
8e5c5782bd Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2026-01-07 19:04:04 +01:00
Laurent Destailleur
ca387ab576 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 19:02:52 +01:00
Laurent Destailleur
aeeb88ac19 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 19:02:45 +01:00
Laurent Destailleur
578a1ef568 Clean files 2026-01-07 19:01:54 +01:00
Laurent Destailleur
807db03167 Fix #36709 2026-01-07 18:46:28 +01:00
Laurent Destailleur
61bd956fe0 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2026-01-07 18:40:40 +01:00
Laurent Destailleur
39fe5e85e5 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2026-01-07 18:36:51 +01:00
Laurent Destailleur
05c11e71e2 Fix CI 2026-01-07 18:33:22 +01:00
ThomasNgr-OpenDSI
c4dc8b9276 NEW : Add global MAIL_MASS_ACTION_SEARCH_MOST_RECENT_FILE_IF_NOT_FOUND for search and attach the most recent file if none file found when send email in mass action (#36813)
Co-authored-by: Kamel Khelifa <kkhelifa@open-dsi.fr>
2026-01-07 18:30:16 +01:00
atm-corentin
224aab4265 FIX - Add validation for manufacturing order date changes (#36823)
* Add validation for manufacturing order date changes and update translations

* Fix indentation in manufacturing order date handling logic
2026-01-07 18:28:58 +01:00
Laurent Destailleur
a35d180c16 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 18:25:36 +01:00
Laurent Destailleur
b4b602cdbc Fix var not used 2026-01-07 18:25:27 +01:00
Jérémy
76f6048ba4 NEW : Add “Bank Account” column in invoicing views (customer & supplier invoice lists) (#36718)
* Fix: avoid empty from_template id on first email form display

* first try

* work now

* work with fourn

* perfect.

* perfect.

* Update list.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-07 18:23:39 +01:00
Laurent Destailleur
5c00048630 Trans 2026-01-07 18:23:32 +01:00
Laurent Destailleur
103d350fb8 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-07 15:46:27 +01:00
Laurent Destailleur
adf788b38e Doc 2026-01-07 15:11:44 +01:00
Laurent Destailleur
4bfda08f7f Fix #GHSA-px39-mwcr-hvxp 2026-01-07 15:10:47 +01:00
Laurent Destailleur
b493ed7f96 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 14:16:49 +01:00
Laurent Destailleur
2ff2ee02ed Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-07 14:16:39 +01:00
Laurent Destailleur
3aff6cded3 More phpuint tests 2026-01-07 14:14:37 +01:00
Laurent Destailleur
70a4de6394 Fix with accent like é are allowed in path 2026-01-07 13:28:56 +01:00
Laurent Destailleur
1a363037b3 FIX #GHSA-w5j3-8fcr-h87w 2026-01-07 13:19:08 +01:00
Laurent Destailleur
71293d00c7 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-07 11:51:59 +01:00
Laurent Destailleur
4d26c3c553 Fix pb with a bad file 2026-01-07 11:42:51 +01:00
atm-corentin
515e095e27 NEW add Tags & Categories on MOs (#36816) 2026-01-07 11:23:20 +01:00
Frédéric FRANCE
fda736be6f can use an extrafield value in filter (#36822) 2026-01-07 11:14:27 +01:00
HENRY Florian
2dbc4c5e01 fix: if holiday type have bock if negative, it is ignored when balance is 0 (#36817)
* fix: backport of holiday approval if block_if_negative

* fix: backport of holiday approval if block_if_negative
2026-01-07 11:08:40 +01:00
Frédéric FRANCE
5509203cef clean code (#36819) 2026-01-07 11:07:31 +01:00
Laurent Destailleur
55a17a33c3 Debug v23 2026-01-07 02:35:53 +01:00
Laurent Destailleur
9ab0d26e71 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-07 01:14:42 +01:00
Laurent Destailleur
e12e15d89f CSS 2026-01-07 01:12:10 +01:00
Laurent Destailleur
4c6c654cd9 Fix exemple 2026-01-07 01:07:30 +01:00
ThomasNgr-OpenDSI
bf8575698d NEW : chose which payment request to include in bank transfer (#36814)
* Add checkboxes to bank transfer screen

* make checked lines be used when creating the SEPA mandate
2026-01-06 16:02:35 +01:00
Frédéric FRANCE
b369576a9d NEW add support of subtotals on more objects (#34125)
* add more subtotals

* add more subtotals

* class

* class

* wip

* wip

* wip

* wip

* doc

* 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

* fix

* fix

* fix

* fix

* fix

* fix

* clean code

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix

* fix

* fix

* fix

* fix

* fix

* fetch extraparams

* add confirms

* add options

* add options

* add options

* add options

* add options

* add options

* add options

* fix

* wip

* wip

* fix

* fix

* fix

* fix

* fix

* fix
2026-01-06 15:58:06 +01:00
Alexandre SPANGARO
55ba9fc1f9 NEW Accountancy - Add transaction model (SQL Part) (#36807)
* NEW Accountancy - Add transaction model

* FIX CI

* Fix name & length
2026-01-06 14:49:22 +01:00
github-actions[bot]
192b5525af PHPStan > Update baseline (#36809)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2026-01-06 14:48:25 +01:00
Laurent Destailleur
938903a836 css 2026-01-06 11:48:51 +01:00
Laurent Destailleur
9edc85b0be Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-06 11:22:47 +01:00
Laurent Destailleur
a703aa6b0f css 2026-01-06 11:22:36 +01:00
Alexandre SPANGARO
d112d09a52 Missing translation (#36806)
* Missing link to language file

* Missing link to language file
2026-01-06 10:52:34 +01:00
Laurent Destailleur
3a1892e0cd css 2026-01-06 10:34:53 +01:00
Laurent Destailleur
76cebeca39 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-06 10:26:32 +01:00
Laurent Destailleur
7f73d92dc8 Fix select of product and last date in list of time spent 2026-01-06 10:25:39 +01:00
Laurent Destailleur
925381937a Add last date of change 2026-01-06 10:05:59 +01:00
PsyCrow
c4ca165970 NEW Add condition to exclude unpaid invoices from profit (#36693)
* Add condition to exclude unpaid invoices from profit

Only qualify paid invoices to profit calculation

* Fix condition to check invoice status instead of type

Fix condition to check invoice status instead of type.
FIX #36692 issue
2026-01-06 07:44:58 +01:00
Adnan RIHAN
a8ec96baf5 CLOSE #36727 Add ability to objectlink invoice_supplier (#36728)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-06 00:12:05 +01:00
Lucas Marcouiller
e0f3ee85ca Fix fill news & product on email template (#36756)
* Fix fill news & product on email template

* fix CI

* Update mailtemplate.php

---------

Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-06 00:09:37 +01:00
spsolauv
ac36cda432 ActionComm clone also categories when cloning object (#36761)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-06 00:04:59 +01:00
spsolauv
d6abd9305f Make CommonObject::cloneCategories() generic (#36758)
It was working only for products

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 23:45:26 +01:00
Laurent Destailleur
b957f768cb Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-05 20:29:24 +01:00
Laurent Destailleur
b5e265524c Fix CI 2026-01-05 20:29:15 +01:00
Jyhere
00d2d24fe5 Add printFieldListWhere / printFieldListTitle missing hooks in invoice template list (#36778)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 20:21:08 +01:00
Laurent Destailleur
41caa96dd8 CSS 2026-01-05 19:52:34 +01:00
Laurent Destailleur
4d2c86aa8d NEW Can use colored switch in setup factory 2026-01-05 19:34:31 +01:00
Laurent Destailleur
8873639379 Debug v23 2026-01-05 19:21:18 +01:00
Frédéric FRANCE
619a2a6d65 list product and service categories (#36779)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 19:01:11 +01:00
Laurent Destailleur
23930ca58e Fix CI 2026-01-05 18:52:32 +01:00
Laurent Destailleur
340e969120 css 2026-01-05 18:50:38 +01:00
Maxime Kohlhaas
bfe8f57c03 Fix : updateline was not possible because of wrong status test (#36802)
* Fix : updateline was not possible because of wrong status test

* Fix : better fix, remove useless test to work like on customer facrec
2026-01-05 18:44:55 +01:00
lvessiller-opendsi
eecc4a901d FIX height of shipping address box in proposal PDF model (#36775)
* FIX height of shipping adress box in proposal PDF model

* Update pdf_cyan.modules.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 18:39:27 +01:00
Laurent Destailleur
9f7a5da7c2 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-05 18:05:59 +01:00
Laurent Destailleur
7bc72d348c Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-05 18:05:44 +01:00
Laurent Destailleur
729ea3afcc Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-05 18:05:33 +01:00
Laurent Destailleur
263362069f Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-01-05 18:05:17 +01:00
ThomasNgr-OpenDSI
a648ec6670 FIX: inventory qty is not saved if page > 1 (#36804)
* FIX: inventory quantities were not saved when on page != 1

* Add sorting by batch number
2026-01-05 17:55:11 +01:00
ptibogxiv
285a67ad3b FIX API content-type assignment (#36771)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 17:53:14 +01:00
Laurent Destailleur
ec88bf8426 Fix warnings 2026-01-05 17:52:57 +01:00
Jyhere
05f010a655 FIX: reception reopening lacks of message when an error occurs (#36752)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 17:47:02 +01:00
Jyhere
d88730174c FIX: reception reopening lacks of message when an error occurs (#36752)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 17:46:45 +01:00
Frédéric FRANCE
7f06060592 fix getTooltipContentArray in myobject.class.php (#36755) 2026-01-05 17:45:24 +01:00
Francis Appels
21f4769c6c Fix missing line number when bom card in sub bom mode (#36805) 2026-01-05 17:43:22 +01:00
Francis Appels
007f8d6ea8 Fix missing line number when bom card in sub bom mode (#36805) 2026-01-05 17:43:08 +01:00
Laurent Destailleur
8734fb9f3b Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-05 17:41:33 +01:00
Laurent Destailleur
01884525f8 Fix warning 2026-01-05 17:40:13 +01:00
Laurent Destailleur
67e4c0e72b Fix warning 2026-01-05 17:39:54 +01:00
Laurent Destailleur
3b4cc79749 Fix warning 2026-01-05 17:37:35 +01:00
Laurent Destailleur
4efd32a0d6 Fix merge on wrong branch 2026-01-05 17:34:06 +01:00
Laurent Destailleur
993f74ac3e Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-05 17:18:15 +01:00
Laurent Destailleur
eef19fe761 Fix warnings 2026-01-05 17:12:38 +01:00
Laurent Destailleur
cf712df213 Fix warning 2026-01-05 17:04:59 +01:00
Laurent Destailleur
d2b68aac97 Fix warning 2026-01-05 16:46:10 +01:00
Laurent Destailleur
c6da6763de Fix warnings 2026-01-05 16:43:00 +01:00
Laurent Destailleur
f97f73aa2a Debug v23 2026-01-05 16:34:39 +01:00
Laurent Destailleur
26c3e3a1af Debug v23 2026-01-05 16:17:40 +01:00
Laurent Destailleur
910a1a03d8 Fix warning 2026-01-05 15:24:05 +01:00
Laurent Destailleur
ba2661a3a9 Debug v23 2026-01-05 15:21:35 +01:00
Laurent Destailleur
a5f76c6a47 Debug v23 2026-01-05 15:13:34 +01:00
Laurent Destailleur
0b172e0d27 Debug v23 2026-01-05 15:13:05 +01:00
Laurent Destailleur
a22d481f9e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-05 14:57:18 +01:00
Laurent Destailleur
6af3e5f278 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-05 14:57:06 +01:00
Laurent Destailleur
fe09149661 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-05 14:44:04 +01:00
Maxime Kohlhaas
5179e05cbd Fix : wrong html end of fiche section (#36793)
* Fix : wrong html end of fiche section

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 14:43:52 +01:00
Maxime Kohlhaas
ff8a8f5bb4 Fix : presend on reception resulted in fatal error (#36794) 2026-01-05 14:39:42 +01:00
Laurent Destailleur
ba816b847d Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0
Debug v23
2026-01-05 14:36:23 +01:00
Josep Lluís
b04d1dedb1 Fix qty 'tobuy' from INT to FLOAT type (#36780)
Change qty 'tobuy' from INT to FLOAT type

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 13:33:26 +01:00
Josep Lluís
a833788378 Fix qty 'tobuy' from INT to FLOAT type (#36780)
Change qty 'tobuy' from INT to FLOAT type

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-01-05 13:33:07 +01:00
Zakaria Boushaba
2a8df9e3b1 Fix : Set empty td at the correct position when product use unit (#36787)
Co-authored-by: Zakaria Boushaba <z.boushaba@vold.africa>
2026-01-05 13:29:21 +01:00
Alexandre SPANGARO
39b251f3ca FIX #36735 Invoice & Supplier invoice - Inconsistency of fk_code_ventilation for lines (FactureLigne & SupplierInvoiceLine) (#36792) 2026-01-05 13:28:09 +01:00
Alexandre SPANGARO
70a03a60a5 FIX Accountancy - Not being able to reopen a closed fiscal year by simply editing its information (#36798) 2026-01-05 13:23:12 +01:00
Laurent Destailleur
3b6d803bbd Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-05 13:18:07 +01:00
Laurent Destailleur
bdcfe3f131 Debug v23 and migration 2026-01-05 13:17:36 +01:00
Vincent Maury
d66d02cd63 Fix bug #36800 (#36801)
mod_syslog_chromephp still present in syslog folder and crashes syslog admin page
2026-01-05 12:59:04 +01:00
Frédéric FRANCE
e6249eee32 fix phpstan for v23 (#36774)
* fix phpstan

* Update functions.lib.php

* Update admin.lang

* Update errors.lang

* Update fournisseur.commande.class.php

* Update fournisseur.commande.class.php

* Update blockedlog_archives.php

* Update blockedlog_archives.php

* Update blockedlog_archives.php

* Update blockedlog_archives.php
2026-01-05 12:48:07 +01:00
Laurent Destailleur
47091a7d37 Fix warning 2026-01-05 12:47:51 +01:00
Laurent Destailleur
2dfc343450 Fix warnings 2026-01-05 12:44:52 +01:00
Laurent Destailleur
1739a6ec5f Fix warning 2026-01-05 12:42:09 +01:00
Zakaria Boushaba
ecb14aecf2 Fix text overflow in linked object table lists (v22) (#36776)
Co-authored-by: Zakaria Boushaba <z.boushaba@vold.africa>
2026-01-05 11:31:55 +01:00
Alexandre SPANGARO
6882e26638 FIX Accountancy - On annual closing, propose the last exercise not closing (#36797)
* FIX Accountancy - On annual closing, propose the last exercise not closing

* Fix CI
2026-01-05 11:30:33 +01:00
Laurent Destailleur
7aecfb0988 Debug v23 2026-01-05 04:18:03 +01:00
Laurent Destailleur
047cf65fc9 Debug v23 2026-01-05 04:15:08 +01:00
Laurent Destailleur
e61c2d21f1 Trans 2026-01-05 03:26:09 +01:00
Laurent Destailleur
ec2131a354 css 2026-01-05 01:18:47 +01:00
Laurent Destailleur
1d188ec199 Fix sql 2026-01-05 01:12:16 +01:00
Laurent Destailleur
85d5f90cc0 Debug v23 2026-01-05 01:11:10 +01:00
Laurent Destailleur
d558db5eca Debug v23 2026-01-05 00:59:50 +01:00
Laurent Destailleur
136c8a4e95 Debug v23 2026-01-05 00:32:32 +01:00
Laurent Destailleur
32d303690f Fix default sort 2026-01-05 00:24:30 +01:00
Laurent Destailleur
548a1f1636 Fix reopen button 2026-01-05 00:21:44 +01:00
Laurent Destailleur
362f37d783 Finish cash control feature of v23 2026-01-05 00:18:43 +01:00
Laurent Destailleur
c1a9c5469a Solve pb to manage cash control 2026-01-04 19:28:34 +01:00
Laurent Destailleur
1ed288539f Debug cash control 2026-01-04 19:23:18 +01:00
Laurent Destailleur
4ce4b3eb57 css 2026-01-04 19:12:07 +01:00
Laurent Destailleur
ab6d868a0f Debug cash control feature 2026-01-04 18:55:36 +01:00
Laurent Destailleur
65f1c23541 Debug blockedlog module 2026-01-04 16:11:13 +01:00
Laurent Destailleur
e4cecad00d Debug v23 2026-01-04 15:36:32 +01:00
Laurent Destailleur
2e50d64ccc Debug v23 2026-01-04 13:49:58 +01:00
Laurent Destailleur
0258fea095 Show ID of payment request 2026-01-03 19:03:44 +01:00
Laurent Destailleur
86e6baf1cf Doc 2026-01-03 18:52:09 +01:00
Laurent Destailleur
6bb6c916c8 Finish tracking of event BLOCKEDLOG_EXPORT 2026-01-03 18:48:58 +01:00
Laurent Destailleur
a16a787669 Debug v23 2026-01-03 18:35:59 +01:00
Laurent Destailleur
da7a14b606 Doc 2026-01-03 18:26:46 +01:00
Laurent Destailleur
55cadd47f0 Debug v23 2026-01-03 18:18:06 +01:00
Laurent Destailleur
3b9aa7d85c Debug v23 2026-01-03 17:24:43 +01:00
Laurent Destailleur
9772dff1b5 Debug v23 2026-01-03 16:50:59 +01:00
Laurent Destailleur
eaa3976b2c Maxi debug blockedlog module 2026-01-03 16:36:12 +01:00
Laurent Destailleur
08f3fbd5fd Fix maxi debug blockedlog 2026-01-03 14:00:21 +01:00
Laurent Destailleur
80365a0dac Maxi debug blockedlog 2026-01-03 13:59:26 +01:00
Laurent Destailleur
676e27d32b Fix maxi debug blockedlog 2026-01-03 13:59:09 +01:00
Laurent Destailleur
1f4f660110 Missing filter on pos source 2026-01-03 13:34:50 +01:00
Laurent Destailleur
3f16ed2b1c Debug 2026-01-02 21:10:41 +01:00
Laurent Destailleur
ed023e8b22 Missing amount lifetime (legal requirement) 2026-01-02 20:31:45 +01:00
Laurent Destailleur
7cf76e6da3 Debug v23 2026-01-02 20:20:11 +01:00
Laurent Destailleur
489dfba69f Trans 2026-01-02 19:42:15 +01:00
Laurent Destailleur
4c7f6d5949 Fix v23 - missing control 2026-01-02 18:54:26 +01:00
Laurent Destailleur
fdbebb089a Debug v23 2026-01-02 18:31:48 +01:00
Laurent Destailleur
07efadaa86 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-01-02 18:16:47 +01:00
Laurent Destailleur
5eed4e6d2e Look and feel v23 2026-01-02 18:16:21 +01:00
Laurent Destailleur
edab31d2bf Fix regression 2026-01-02 17:58:38 +01:00
Laurent Destailleur
01d504c8ea Trans 2026-01-02 17:52:31 +01:00
Laurent Destailleur
c981cadfd8 Fix text 2026-01-02 17:28:51 +01:00
Laurent Destailleur
4e458fa949 Debug v23 2026-01-02 17:03:36 +01:00
Laurent Destailleur
3a4221f78d Debug v23 2026-01-02 17:00:43 +01:00
Laurent Destailleur
97b7897e8e Add legal mention in TakePOS setup. 2026-01-02 16:53:08 +01:00
Laurent Destailleur
242245b59e Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-01-02 16:16:12 +01:00
Laurent Destailleur
e9f6db629f Debug v23 2026-01-02 16:15:52 +01:00
Laurent Destailleur
08ea100f1a Debug v23 2026-01-02 04:21:46 +01:00
Laurent Destailleur
9e2a70e9a3 CSS 2026-01-02 04:19:06 +01:00
Laurent Destailleur
0624f388f1 Debug v23 2026-01-02 04:11:20 +01:00
Laurent Destailleur
b2e609d8dc CSS v23 2026-01-02 04:05:03 +01:00
Laurent Destailleur
e3f7947cc5 Debug v23 2026-01-02 02:49:33 +01:00
Laurent Destailleur
b348745b42 Debug v23 2026-01-01 23:24:39 +01:00
Laurent Destailleur
ea9eddffa5 Debug v23 2026-01-01 23:21:17 +01:00
Laurent Destailleur
ca91994294 Debug v23 2026-01-01 23:15:16 +01:00
Laurent Destailleur
ada7bd2fd8 Debug v23 2026-01-01 16:43:14 +01:00
Laurent Destailleur
3da7cceb81 Debug v23 - Missing cumulative total in export 2026-01-01 12:26:35 +01:00
Laurent Destailleur
3a09c7cfd9 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-31 15:00:40 +01:00
Laurent Destailleur
dfd745f77e FIX date saving when using html dates (like with blind-user mode). 2025-12-31 14:58:24 +01:00
Laurent Destailleur
952c1146e0 FIX date saving when using html dates (like with blind-user mode). 2025-12-31 14:54:54 +01:00
Laurent Destailleur
ebd018a476 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-31 14:42:02 +01:00
Laurent Destailleur
7030684812 Debug v23 2025-12-31 14:40:26 +01:00
Laurent Destailleur
285360f67c Debug v23 2025-12-31 14:06:19 +01:00
Laurent Destailleur
8e257a3a8c Debug v23 2025-12-31 14:06:14 +01:00
Laurent Destailleur
a18a544ca2 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-31 14:05:35 +01:00
Laurent Destailleur
9c43e00ed8 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2025-12-31 14:05:11 +01:00
Laurent Destailleur
954b661b84 Sync transifex 2025-12-31 14:04:59 +01:00
Laurent Destailleur
ca103df7f2 Sync transifex 2025-12-31 14:03:38 +01:00
Laurent Destailleur
39cff81fd3 CSS 2025-12-31 13:49:42 +01:00
Laurent Destailleur
f5aff05704 Debug v23 2025-12-31 01:30:20 +01:00
Laurent Destailleur
e7a6f779de Debug v23 2025-12-31 01:16:37 +01:00
Laurent Destailleur
f6ca154c4a Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-31 00:51:13 +01:00
Laurent Destailleur
c4c86470e5 Debug v23 2025-12-31 00:50:52 +01:00
Laurent Destailleur
670dde1074 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-31 00:24:15 +01:00
Laurent Destailleur
0d9850819f Debug v23 2025-12-31 00:21:29 +01:00
Laurent Destailleur
1cee678067 Debug v23 2025-12-31 00:21:00 +01:00
Laurent Destailleur
bc7d5d21e3 Clean code 2025-12-30 16:21:15 +01:00
Laurent Destailleur
d500a4a4d9 Sync transifex 2025-12-30 15:14:31 +01:00
Laurent Destailleur
17f6d584ce Debug v23 2025-12-30 14:53:03 +01:00
Laurent Destailleur
aacf34b3b5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-30 14:52:44 +01:00
Laurent Destailleur
32ed90740c Debug v23 2025-12-30 14:51:28 +01:00
Laurent Destailleur
d6687819d9 Debug v23 2025-12-30 13:12:01 +01:00
Laurent Destailleur
4e7c6aae75 Debug v23 2025-12-30 13:09:47 +01:00
Laurent Destailleur
b474c07d48 Debug v23 2025-12-30 13:08:23 +01:00
Laurent Destailleur
0f3e61db47 Doc 2025-12-30 12:58:36 +01:00
Laurent Destailleur
548b89a612 Debug v23 2025-12-30 12:57:23 +01:00
Laurent Destailleur
a5d95ae8e6 Debug v23 2025-12-30 12:55:39 +01:00
Laurent Destailleur
cc5a6cd76b Debug v23 2025-12-30 12:06:39 +01:00
Laurent Destailleur
6177dccc05 Debug v23 2025-12-30 11:57:29 +01:00
Laurent Destailleur
99b685ce2a Debug v23 2025-12-30 11:57:01 +01:00
atm-lucas
70348f8c85 Supplier Proposal line option (#36753) 2025-12-30 11:09:38 +01:00
Anthony Berton
64e5b9569b FIX - Change of email to send backup (#36742)
Co-authored-by: Anthony Berton <anthony.berton@bb2a.fr>
2025-12-30 11:06:26 +01:00
Zakaria Boushaba
3e9cc69433 FIX: Prevent default payment term/type from auto-filling list filters (#36765)
Co-authored-by: Zakaria Boushaba <z.boushaba@vold.africa>
2025-12-30 11:05:01 +01:00
Laurent Destailleur
0953156549 Debug v23 2025-12-29 22:58:32 +01:00
Laurent Destailleur
a009bf4ef7 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-29 18:38:17 +01:00
Laurent Destailleur
5f70077cc6 Fix version 2025-12-29 18:31:00 +01:00
Laurent Destailleur
60c98ddc30 Prepare v24 2025-12-29 17:52:21 +01:00
Laurent Destailleur
e06888e02a Debug v23 2025-12-29 17:34:10 +01:00
Laurent Destailleur
feeda2ab58 CSS 2025-12-29 17:01:08 +01:00
Laurent Destailleur
3be8bd3692 Look and feel v23 2025-12-29 16:53:04 +01:00
Laurent Destailleur
a8f369c4cf Prepare 23.0.0 2025-12-29 16:34:08 +01:00
Laurent Destailleur
0133ee3f54 Debug v23 2025-12-29 16:27:38 +01:00
Laurent Destailleur
4fc39f65bf Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-29 16:18:00 +01:00
Laurent Destailleur
0cf9cec3f3 Typo 2025-12-29 16:17:48 +01:00
Laurent Destailleur
74c3a45daa Fix url 2025-12-29 16:07:13 +01:00
Laurent Destailleur
71648323ea css 2025-12-29 14:17:38 +01:00
Laurent Destailleur
b740ad545d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-29 13:20:58 +01:00
Laurent Destailleur
817b32399b Trans 2025-12-29 13:20:38 +01:00
Laurent Destailleur
169b74b7bd Debug v23 2025-12-29 02:42:50 +01:00
Laurent Destailleur
e61d80c847 CSS 2025-12-29 00:43:50 +01:00
Laurent Destailleur
30da90b5a1 CSS 2025-12-29 00:33:24 +01:00
Laurent Destailleur
1400d0dd93 Debug v23 2025-12-28 19:59:23 +01:00
Laurent Destailleur
87e05c4aee css 2025-12-28 18:39:01 +01:00
Laurent Destailleur
1f70132be7 Debug v23 2025-12-28 17:57:37 +01:00
Laurent Destailleur
5f8e20f0f1 css 2025-12-28 17:48:58 +01:00
Laurent Destailleur
c4dd2f5895 CSS 2025-12-28 17:25:12 +01:00
Laurent Destailleur
a1b2e40d38 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-28 16:09:00 +01:00
Laurent Destailleur
514964d015 Debug v23 2025-12-28 16:08:38 +01:00
Laurent Destailleur
d2eee5491c Fix phpstan 2025-12-28 03:12:44 +01:00
Laurent Destailleur
9aefeb074b CSS 2025-12-28 02:43:16 +01:00
Laurent Destailleur
e3876f3295 Debug v23 - restore geoipmaxmind 2025-12-28 02:19:01 +01:00
Laurent Destailleur
d44361eb67 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-28 00:08:05 +01:00
Laurent Destailleur
898a2a21bb Debug v23 2025-12-28 00:07:18 +01:00
Laurent Destailleur
e2dac4c6d9 CSS 2025-12-27 23:18:39 +01:00
Eric - CAP-REL
2e22f9e75a fix concat for a undef entry of array (#36754) 2025-12-27 23:04:40 +01:00
Laurent Destailleur
1644430d62 Doc 2025-12-24 13:27:05 +01:00
Laurent Destailleur
2b4416f063 CSS 2025-12-24 03:45:45 +01:00
Laurent Destailleur
4da5441e27 Clean code 2025-12-24 03:20:22 +01:00
Laurent Destailleur
4f6e636e7e Clean file 2025-12-23 20:21:40 +01:00
Laurent Destailleur
10bde49cbd Trans 2025-12-23 20:19:51 +01:00
Laurent Destailleur
c7ce560031 Trans 2025-12-23 20:17:16 +01:00
Laurent Destailleur
4a36a73d04 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-23 20:12:03 +01:00
Laurent Destailleur
5bc8578523 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-23 20:07:24 +01:00
Laurent Destailleur
6634e5a610 Prepare 22.0.4 2025-12-23 20:07:13 +01:00
Laurent Destailleur
af0c8bd5a1 CSS 2025-12-23 16:08:18 +01:00
Laurent Destailleur
1c6fa4e8ba Fix v23has no more duplicate menu entry for each view mode 2025-12-23 16:03:56 +01:00
Laurent Destailleur
34c93d82ce Debug v23 2025-12-23 13:56:59 +01:00
Laurent Destailleur
33acfc6963 Debug v23 2025-12-23 12:02:10 +01:00
Laurent Destailleur
96583a11fc Debug v23 2025-12-23 11:48:56 +01:00
Laurent Destailleur
6de709d6bd Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-23 10:39:46 +01:00
Laurent Destailleur
3853b469ab Debug v23 2025-12-23 10:39:34 +01:00
Laurent Destailleur
c75e5fd607 Merge pull request #36704 from leninrivas/patch-35
NEW In Facture fetch_lines() first param only products or services
2025-12-22 20:43:38 +01:00
Laurent Destailleur
d9ad1bae8c Merge pull request #36720 from leninrivas/patch-36
NEW substitutions values
2025-12-22 20:40:56 +01:00
Laurent Destailleur
7afdff3e7d Rename constant 2025-12-22 20:09:06 +01:00
Laurent Destailleur
befd5e93c8 Merge pull request #36689 from thersane-john/fix_data_exposure
Fix: prevent data exposure between customer and supplier
2025-12-22 19:57:05 +01:00
Laurent Destailleur
4cbfb4829c Rename TVAINTRA to VATNUMBER in functions.lib.php 2025-12-22 19:22:03 +01:00
Laurent Destailleur
a775249aed Merge pull request #36706 from frederic34/set_share_key_generic_case
add more case to set share key
2025-12-22 19:15:10 +01:00
Laurent Destailleur
d7f9c0157e Merge pull request #36699 from W1W1-M/fix-document-api-agenda-event-list-download
FIX document API agenda event list and download
2025-12-22 19:08:55 +01:00
Laurent Destailleur
834784ac29 Merge pull request #36711 from fappels/23_fix_print_sql
Fix print $sql
2025-12-22 19:06:59 +01:00
Laurent Destailleur
594dad2652 Update facture.class.php 2025-12-22 19:02:49 +01:00
Laurent Destailleur
5615034b01 Merge pull request #36729 from aspangaro/24_Quadra
Update Quadra Export
2025-12-22 18:56:10 +01:00
Laurent Destailleur
f9db010918 Merge pull request #36707 from atm-corentin/FIX/addFRLangsTrans
FIX|Fix # Add fr langs trans
2025-12-22 18:53:33 +01:00
Laurent Destailleur
06cf0c95fd Merge pull request #36705 from thersane-john/fix_css_webportal_duration
Fix css duration input for webportal
2025-12-22 18:53:01 +01:00
Laurent Destailleur
4c020a9a04 Merge pull request #36708 from FHenry/dev_fix_fatal
fix: Fatal in WebHook Triggers ($this->errors is null in array merge)
2025-12-22 18:52:18 +01:00
Laurent Destailleur
f7474b2ee5 Merge pull request #36737 from will2022/patch-1
FIX - Improve Danish legal forms and fix typos
2025-12-22 18:50:01 +01:00
Laurent Destailleur
e1643ac5b8 Merge pull request #36719 from frederic34/phpstan_config
align phpstan config files
2025-12-22 18:49:42 +01:00
Laurent Destailleur
8625218d49 Merge pull request #36740 from defrance/patch-697941
fix warning $filters['search_complete'] maybe empty
2025-12-22 18:40:48 +01:00
Laurent Destailleur
79b813efe4 Merge branch 'develop' into patch-36 2025-12-22 18:33:18 +01:00
Frédéric FRANCE
9cce445ece Merge branch 'develop' into set_share_key_generic_case 2025-12-22 18:23:59 +01:00
Laurent Destailleur
8e0dd5560d Merge branch 'develop' into 23_fix_print_sql 2025-12-22 18:21:31 +01:00
Laurent Destailleur
7228c1f1c0 Merge branch 'develop' into 24_Quadra 2025-12-22 18:11:38 +01:00
Laurent Destailleur
34d9b41e40 Merge branch 'develop' into patch-1 2025-12-22 18:10:00 +01:00
Frédéric FRANCE
6e6202dbd5 Merge remote-tracking branch 'origin/phpstan_config' into phpstan_config 2025-12-22 18:08:45 +01:00
Frédéric FRANCE
33c8ce48d1 Merge remote-tracking branch 'upstream/develop' into phpstan_config 2025-12-22 18:08:31 +01:00
Laurent Destailleur
6ac509da5d Merge branch 'develop' into patch-697941 2025-12-22 18:08:14 +01:00
Laurent Destailleur
310fd1bd12 Fix CI 2025-12-22 18:07:33 +01:00
Laurent Destailleur
1b6263a672 Merge branch 'develop' into phpstan_config 2025-12-22 17:44:42 +01:00
Laurent Destailleur
761977b28f Merge branch 'develop' into patch-697941 2025-12-22 17:44:26 +01:00
Laurent Destailleur
e8d9c2da58 Merge branch 'develop' into patch-1 2025-12-22 17:42:29 +01:00
Laurent Destailleur
5eaa2b3265 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-22 17:42:01 +01:00
Laurent Destailleur
e265c2938f Fix CI 2025-12-22 17:40:50 +01:00
Charlène Benke
056929639a fix warning $filters['search_complete'] maybe empty 2025-12-22 17:27:17 +01:00
Laurent Destailleur
b50858e6a3 Merge branch 'develop' into 24_Quadra 2025-12-22 17:24:48 +01:00
Laurent Destailleur
8ac7f73d4f Merge branch 'develop' into patch-36 2025-12-22 17:24:22 +01:00
Laurent Destailleur
7717b0a35e Merge branch 'develop' into phpstan_config 2025-12-22 17:24:03 +01:00
Laurent Destailleur
5184c71a26 Merge pull request #36733 from AlainCis/fix/improve-limits-precision-error-message
FIX #36246 Clarify decimal precision validation error message in ../htdocs/admin/limits.php
2025-12-22 17:22:47 +01:00
Laurent Destailleur
6f65af18ac Merge pull request #36738 from atm-corentin/FIX/project-opportunity-null-thirdparty
FIX : project opportunity null thirdparty
2025-12-22 17:21:51 +01:00
Laurent Destailleur
3a370803e4 Merge branch 'develop' into patch-1 2025-12-22 17:17:59 +01:00
Laurent Destailleur
e7ffea07e7 Fix CI 2025-12-22 17:16:37 +01:00
Laurent Destailleur
321d20da71 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-22 16:36:01 +01:00
Laurent Destailleur
ba82c1cb30 Merge branch '22.0' into FIX/project-opportunity-null-thirdparty 2025-12-22 16:33:33 +01:00
Laurent Destailleur
93fdf6c487 Fix CI 2025-12-22 16:33:10 +01:00
Laurent Destailleur
3068a03aa4 Merge branch '22.0' into FIX/project-opportunity-null-thirdparty 2025-12-22 16:20:44 +01:00
Laurent Destailleur
74e52260e5 Restore param 2025-12-22 16:12:31 +01:00
Laurent Destailleur
8abeb47da1 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-22 16:06:05 +01:00
Laurent Destailleur
3d55a7a792 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-22 15:11:32 +01:00
Laurent Destailleur
7990b182d1 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-12-22 15:04:37 +01:00
Laurent Destailleur
dddbe3f462 Update gitattributes 2025-12-22 14:48:46 +01:00
atm-corentin
a41622707e Fix crash when opportunity won without third-party 2025-12-22 14:26:38 +01:00
Laurent Destailleur
230634721d Merge branch 'develop' into phpstan_config 2025-12-22 14:03:57 +01:00
Laurent Destailleur
a50394e4df Merge pull request #36734 from Boushabazakaria/fix/reassort-category-text-colspan-22
FIX|Fix reassort page colspan and category/tag text color when filtering
2025-12-22 13:55:09 +01:00
Laurent Destailleur
73b534a9eb Merge branch 'develop' into patch-1 2025-12-22 13:54:01 +01:00
Laurent Destailleur
69adf182d3 Fix lockfile 2025-12-22 13:53:39 +01:00
Laurent Destailleur
53b07f760b Merge pull request #36730 from fappels/20_fix_regression
FIX getOutstandingBills regression from #35266
2025-12-22 13:50:29 +01:00
Laurent Destailleur
eb633abef0 Merge pull request #36731 from fpiccinali/refacto_initdemo
refacto initdemo.sh
2025-12-22 13:49:53 +01:00
Laurent Destailleur
254d4ac882 Merge pull request #36736 from atm-lucasmantegari/FIX/HolidaysWithoutDays
# FIX - Asking Holidays When Negative Balance
2025-12-22 13:41:03 +01:00
William
312efc09c1 Fix: Improve Danish legal forms and fix typos 2025-12-22 13:11:36 +01:00
ATM-Lucas
c6a6d14627 False balance 2025-12-22 12:08:00 +01:00
Alexandre SPANGARO
e8d573cf33 Merge branch 'develop' into 24_Quadra 2025-12-22 12:01:11 +01:00
Laurent Destailleur
256443a904 Solve hardcoded title 2025-12-22 11:17:18 +01:00
Laurent Destailleur
38b691c5bb Trans 2025-12-22 10:53:16 +01:00
Zakaria Boushaba
103d77d332 FIX | Fix colspan rendering and category/tag text color in reassort page 2025-12-22 10:27:07 +01:00
Laurent Destailleur
8db3a2e4fc Move algo for checksum file 2025-12-22 04:52:12 +01:00
Laurent Destailleur
a6d1b2235e Try to fix CI for pgsql 2025-12-22 03:45:20 +01:00
Laurent Destailleur
b4a5167e78 Log of migration 2025-12-22 03:27:48 +01:00
alain.cisirika
c3451192d9 FIX: Clarify decimal precision validation error message in ../htdocs/admin/limits.php 2025-12-22 04:18:00 +02:00
Laurent Destailleur
edd53e41b3 Debug v23 2025-12-22 03:14:22 +01:00
Laurent Destailleur
0f30eb5f34 CSS 2025-12-22 01:16:07 +01:00
Fabrice Piccinali
657d02bc38 refacto initdemo.sh 2025-12-21 19:00:12 +01:00
Laurent Destailleur
16a7229d85 Doc 2025-12-21 17:32:47 +01:00
Laurent Destailleur
f88bb0bd59 Debug v23 2025-12-21 17:00:04 +01:00
Laurent Destailleur
94c06cca90 css 2025-12-21 16:34:22 +01:00
Laurent Destailleur
db7cccd588 css 2025-12-21 16:18:52 +01:00
Francis Appels
3243126ab6 Fix getOutstandingBills regression from #35266 2025-12-21 16:11:35 +01:00
Laurent Destailleur
f133fce841 Debug v23 2025-12-21 16:04:12 +01:00
Laurent Destailleur
c57eb789b4 Debug v23 2025-12-21 14:46:13 +01:00
Laurent Destailleur
69cea28a14 Debug v23 2025-12-21 14:33:25 +01:00
Laurent Destailleur
3a4cf15857 Debug v23 no propagation of warnings 2025-12-21 13:32:32 +01:00
Laurent Destailleur
c2930e768e Debug v23 2025-12-21 12:54:03 +01:00
Laurent Destailleur
78ad7b3857 Fix hard coded value 2025-12-21 12:17:00 +01:00
Laurent Destailleur
26962aeefb Debug v23 2025-12-21 11:43:44 +01:00
Laurent Destailleur
02bc402ae6 Debug v23 2025-12-21 11:26:14 +01:00
Alexandre SPANGARO
b8fd5f83b1 Update Quadra Export 2025-12-21 07:55:28 +01:00
Lenin Rivas
89b515a884 NEW substitutions values
__AMOUNT_MULTICURRENCY_FORMATED__
__MYCOMPANY_TVAINTRA__
2025-12-20 11:39:56 -05:00
Laurent Destailleur
d9532c5c3e css 2025-12-20 17:02:39 +01:00
Laurent Destailleur
b6c2a6509d Debug v23 2025-12-20 16:24:52 +01:00
Laurent Destailleur
d191e1060c Debug v23 2025-12-20 14:28:36 +01:00
Laurent Destailleur
684e726ec5 Debug v23 2025-12-20 13:53:43 +01:00
Laurent Destailleur
81248447d0 Debug v23 2025-12-20 13:37:09 +01:00
Laurent Destailleur
adb3ceee2b Debug v23 2025-12-20 13:10:50 +01:00
Frédéric FRANCE
270c025eb6 clean code 2025-12-20 10:42:00 +01:00
Frédéric FRANCE
f138005d73 clean code 2025-12-20 10:39:39 +01:00
Frédéric FRANCE
e33376d10e align config files 2025-12-20 09:30:54 +01:00
Laurent Destailleur
46e98cf02a Trans 2025-12-20 02:06:39 +01:00
Laurent Destailleur
764dbcf940 Fix bad default param 2025-12-20 01:49:45 +01:00
Frédéric FRANCE
4b323ea1fa Merge branch 'develop' into set_share_key_generic_case 2025-12-19 23:21:37 +01:00
Frédéric FRANCE
d7fe40a512 add more case to set share key 2025-12-19 19:19:11 +01:00
Laurent Destailleur
6089925a06 Trans 2025-12-19 18:26:23 +01:00
Laurent Destailleur
7bfd4a5844 Debug v23 - Pb with timezone on cash control 2025-12-19 18:13:12 +01:00
William Mead
1d32ded07f Refactored and cleaned code 2025-12-19 16:26:35 +01:00
Laurent Destailleur
6222b83104 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-19 13:00:05 +01:00
Laurent Destailleur
85f9d620ac Fix print 2025-12-19 12:59:58 +01:00
Francis Appels
49d37793e2 Fix print $sql 2025-12-19 11:28:03 +01:00
John BOTELLA
8863233f96 Fix radio 2025-12-19 10:54:25 +01:00
Frédéric FRANCE
fa86ca7c88 add more case to set share key 2025-12-19 10:39:29 +01:00
Frédéric FRANCE
36d982682d add more case to set share key 2025-12-19 10:37:52 +01:00
Frédéric FRANCE
e24e7c4713 add more case to set share key 2025-12-19 10:35:04 +01:00
Florian HENRY
1269313304 fix: Fatal in WebHook Triggers (->errors is null in array merge 2025-12-19 10:15:23 +01:00
Frédéric FRANCE
bb5931c592 add more case to set share key 2025-12-19 10:10:42 +01:00
Frédéric FRANCE
289e696a38 add more case to set share key 2025-12-19 10:10:31 +01:00
Frédéric FRANCE
407201c5c4 Merge remote-tracking branch 'upstream/develop' into set_share_key_generic_case 2025-12-19 10:05:19 +01:00
Frédéric FRANCE
028a5ca076 add more case to set share key 2025-12-19 10:04:09 +01:00
atm-corentin
d09aab2718 add langs trans which was in US but not in FR 2025-12-19 10:03:46 +01:00
John BOTELLA
7ac9baefd4 Fix css duration input for webportal 2025-12-19 09:47:27 +01:00
William Mead
a31e01bd77 Refactored to use getMultidirOutput 2025-12-19 08:50:50 +01:00
Lenin Rivas
ebc48db9b8 NEW fetch_lines() first param only products or services 2025-12-18 19:26:29 -05:00
Laurent Destailleur
26b73201fc Merge pull request #36702 from le-reparateur/patch-5
Add hidden input for socid in card.php
2025-12-18 21:06:25 +01:00
Laurent Destailleur
cf63b68b75 Merge pull request #36686 from LePat/anomalieboutonsactiontakepos
FIX : TakePOS action button panel display (partial)
2025-12-18 21:04:57 +01:00
Laurent Destailleur
3f67ddf071 FIX missing p.default_vat_code in product import profile. 2025-12-18 19:36:03 +01:00
Laurent Destailleur
aca83a0c85 FIX missing p.default_vat_code in product import profile. 2025-12-18 19:32:39 +01:00
Francis
377a567e4b Add hidden input for socid in card.php
In creation mode from an origin order, the socid is not input
2025-12-18 17:09:30 +01:00
Laurent Destailleur
0d368fc41d Merge branch 'develop' into anomalieboutonsactiontakepos 2025-12-18 16:40:19 +01:00
Laurent Destailleur
565ea4d065 Code comment 2025-12-18 16:38:26 +01:00
Laurent Destailleur
23be021550 Code comment 2025-12-18 16:35:06 +01:00
Laurent Destailleur
cdf2464076 Doc 2025-12-18 16:33:09 +01:00
Laurent Destailleur
810cb6774c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-18 16:29:31 +01:00
Laurent Destailleur
5d2f951281 Fix Remove the DISTINCT 2025-12-18 16:29:17 +01:00
Laurent Destailleur
2cf6269caf Merge pull request #36694 from bradley-jarvis/fix-mo-production-dissassembly
Fix - Error when producing dissassembly MO
2025-12-18 15:57:11 +01:00
Laurent Destailleur
1d4fc65fbe Update mo_production.php 2025-12-18 15:56:54 +01:00
Laurent Destailleur
5873a61562 Merge pull request #36697 from W1W1-M/new-document-api-stock-warehouse-upload
NEW document API upload stock warehouse
2025-12-18 15:55:56 +01:00
Laurent Destailleur
b624c35f12 Merge pull request #36701 from frederic34/fix_search_import_key
fix search import key filter not working
2025-12-18 15:53:09 +01:00
Laurent Destailleur
5ebbf9a70f Code comment 2025-12-18 15:07:54 +01:00
Laurent Destailleur
b7d7f6be3d Label 2025-12-18 14:37:34 +01:00
Laurent Destailleur
9c5f323b55 Clean code 2025-12-18 14:10:05 +01:00
Frédéric FRANCE
ec46ff9b10 fix search import key filter not working 2025-12-18 13:28:16 +01:00
William Mead
86328e840e Cleaned code 2025-12-18 11:25:31 +01:00
William Mead
a66a897a07 Fixed document API agenda event list and download 2025-12-18 11:22:33 +01:00
Laurent Destailleur
e4e3990703 Doc 2025-12-18 10:35:48 +01:00
Laurent Destailleur
fcefef410c Compatibility with the GHSA VDP 2025-12-18 10:35:06 +01:00
Laurent Destailleur
b2718dc80e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-18 10:11:57 +01:00
Laurent Destailleur
6ff315bfb3 Trans 2025-12-18 10:11:40 +01:00
William Mead
0ea4a4d071 Added stock warehouse document upload 2025-12-18 09:41:43 +01:00
brad
475d719014 Fix - Error when producing dissassembly MO
Trying to product a dissassembly MO causes the produced SQL insert
statement to fail on a database constraint related to fk_stock_movement,
the consume statement was successful. The consume statement was checking
for a '0' and setting the value to 'null' but the produce line was not
doing this check. Adding this check to fk_stock_movement fixes the error
and generates the database entries
2025-12-18 15:36:12 +11:00
pat
400c31def6 FIX : action button panel display (partial)
- simplify function which simulates navigating to the next/previous panel
- call the hook only after all original buttons have been added
- Remove button hiding at positions %3 == 2 depending on Dolibarr configuration
2025-12-17 23:06:58 +01:00
Laurent Destailleur
cf828d6223 Merge pull request #36691 from W1W1-M/new-document-api-builddoc-intervention
NEW document API build doc intervention
2025-12-17 19:15:44 +01:00
Laurent Destailleur
d57f2872c8 Merge pull request #36687 from W1W1-M/fix-document-api-expense-report-generate
FIX document API expense report generation
2025-12-17 19:15:18 +01:00
Laurent Destailleur
06afb92901 Merge pull request #36688 from FHenry/21_fix_auguria
fix perms in auguria menu handler
2025-12-17 19:02:31 +01:00
Laurent Destailleur
34f4ad5c5d FIX Selection of email when prefilled from a template 2025-12-17 18:22:21 +01:00
Laurent Destailleur
8aeff05512 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-17 17:26:08 +01:00
Laurent Destailleur
c30ebc08fd Fix missing message popup 2025-12-17 17:25:57 +01:00
William Mead
b0e10d67b6 Added intervention document generation 2025-12-17 16:59:04 +01:00
John BOTELLA
d6adb66789 fix(data): prevent data exposure between customer and supplier 2025-12-17 14:53:49 +01:00
Florian HENRY
6684ea7074 fix perms in auguria 2025-12-17 14:27:51 +01:00
Laurent Destailleur
5b66035f23 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-17 14:23:34 +01:00
Laurent Destailleur
549bc5cc04 css 2025-12-17 14:23:23 +01:00
Laurent Destailleur
54e5ab5e0a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-17 13:41:50 +01:00
William Mead
c8b4ad24bd Fixed expense report document generation. Cleaned error messages. 2025-12-17 13:41:41 +01:00
Laurent Destailleur
96162564a3 Try fix for #36513 2025-12-17 13:41:35 +01:00
Laurent Destailleur
45c4f4fa3c Merge pull request #36572 from aspangaro/22_asset5
FIX Accountancy - Problem calculating fiscal year with different periods on fixed assets
2025-12-17 13:25:41 +01:00
Laurent Destailleur
0c2b34be80 Merge pull request #36683 from W1W1-M/new-document-api-generate-builddoc-warehouse
NEW document API builddoc warehouse
2025-12-17 13:24:16 +01:00
Laurent Destailleur
9ec8d30692 Merge pull request #36682 from W1W1-M/new-document-api-warehouse
NEW document API stock warehouse
2025-12-17 13:23:56 +01:00
Laurent Destailleur
f563fe9256 Merge pull request #36666 from frederic34/duplicate_api_key_in_demo_data
remove duplicate api key in demo db 22
2025-12-17 12:59:21 +01:00
Laurent Destailleur
6d477a0f7b Merge pull request #36669 from atm-maxime/fix_tag_services
Fix : tags were not available if product module is disabled
2025-12-17 12:59:08 +01:00
Laurent Destailleur
179cf4e043 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-17 12:58:00 +01:00
Laurent Destailleur
56452b122d Debug v23 pb with height of popup 2025-12-17 12:57:44 +01:00
Laurent Destailleur
3caa7ffd93 Merge pull request #36673 from nateogroup-antoine/develop
Filter on "all deposits" on quotes was not possible
2025-12-17 12:53:48 +01:00
Laurent Destailleur
b2260457d7 Merge pull request #36674 from atm-vincent-p/FIX_Warning
FIX : warning on select
2025-12-17 12:52:51 +01:00
Laurent Destailleur
71d55d86e7 Merge pull request #36684 from W1W1-M/qual-intervention-api-duplicate-draft-route
QUAL intervention API merged duplicate routes/methods
2025-12-17 12:51:13 +01:00
William Mead
239f036252 Deleted duplicate route. Cleaned settodraft method. Updated changelog. 2025-12-17 10:11:50 +01:00
William Mead
c0503d1e89 Updated modulepart check 2025-12-17 09:08:00 +01:00
William Mead
46cc35faff Added warehouse document generation 2025-12-17 09:07:32 +01:00
William Mead
969b4e68d4 Added warehouse document download 2025-12-17 08:58:24 +01:00
William Mead
7ab079d0f0 Added stock warehouse documents 2025-12-17 08:39:46 +01:00
Laurent Destailleur
cf309ecc87 Merge pull request #36675 from ATM-Consulting/FIX/APIProductLot
FIX : ProductLot API does not work
2025-12-16 21:25:30 +01:00
Laurent Destailleur
90000a24ea Trans 2025-12-16 20:38:11 +01:00
Laurent Destailleur
b64ae7eb55 Fix script for windows 2025-12-16 20:08:42 +01:00
Laurent Destailleur
591eb02d4b Prepare 22.0.4 2025-12-16 20:05:34 +01:00
Stéphanie Arrestier
35ba9dc47a Fix doliwamp packager 2025-12-16 19:36:51 +01:00
Stéphanie Arrestier
70903d32d7 Fix doliwamp packager 2025-12-16 18:51:59 +01:00
Adrien Raze
55b20bfdb9 FIX : displaing errors 2025-12-16 16:54:24 +01:00
Adrien Raze
74bfc0af71 FIX : ProductLot API does not work 2025-12-16 16:30:30 +01:00
Laurent Destailleur
ee0e2e5e16 FIX #36667 2025-12-16 16:05:27 +01:00
nateogroup-antoine
205251d4b9 If an item in the order is not managed in stock, the default quantity offered during shipping is 0 rather than the quantity ordered.
If an item in the order is not managed in stock, the default quantity offered during shipping is 0 rather than the quantity ordered.
2025-12-16 15:48:35 +01:00
Laurent Destailleur
f9f4e3d890 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-16 15:04:44 +01:00
Laurent Destailleur
1601e35696 Clean code 2025-12-16 15:04:28 +01:00
=
975514f3c4 FIX : warning on select 2025-12-16 14:54:35 +01:00
nateogroup-antoine
6c2359ad53 Merge pull request #2 from nateogroup-antoine/nateogroup-antoine-patch-3
Filter on "all warehouse " on proposals
2025-12-16 14:47:54 +01:00
nateogroup-antoine
37da2c2630 Filter on "all warehouse " on proposals
Filter on "all deposits" on quotes
It was no longer possible to filter on “all deposits” on quotes.

Style harmonization with the order list
2025-12-16 14:45:17 +01:00
Laurent Destailleur
edaa8e1bb6 Merge branch '22.0' into fix_tag_services 2025-12-16 14:31:18 +01:00
Laurent Destailleur
2e0ada7d51 Merge pull request #36668 from thersane-john/fix_missing_css
Fix missing css rules for special inputs in WebPortal
2025-12-16 14:25:35 +01:00
Laurent Destailleur
d0dd4cdd57 Merge pull request #36671 from frederic34/patch-8
fix missing import_key fetch in categories class
2025-12-16 14:24:55 +01:00
Laurent Destailleur
4edfad3295 Merge branch '22.0' into duplicate_api_key_in_demo_data 2025-12-16 14:24:13 +01:00
Laurent Destailleur
abdc086993 Fix CI 2025-12-16 14:23:59 +01:00
John BOTELLA
86a8172571 Fix form price currency 2025-12-16 11:32:03 +01:00
John BOTELLA
4140591621 Fix form price currency 2025-12-16 11:31:33 +01:00
Frédéric FRANCE
3edf615d08 fix missing import_key fetch in categories class 2025-12-16 11:21:03 +01:00
John BOTELLA
ac3c8df5e6 fix select 2 multi select 2025-12-16 10:50:36 +01:00
Maxime Kohlhaas
52646b1dca Fix : tags were not available if product module is disabled 2025-12-16 10:43:51 +01:00
John BOTELLA
03728dec47 Fix missing css rules for special inputs 2025-12-16 10:06:06 +01:00
Frédéric FRANCE
86ded33b51 Merge remote-tracking branch 'upstream/22.0' into duplicate_api_key_in_demo_data 2025-12-16 08:40:55 +01:00
Frédéric FRANCE
619a9719c5 remove duplicate api key in demo db 22 2025-12-16 08:39:28 +01:00
Laurent Destailleur
e10354bed0 Merge pull request #36632 from braito4/patch-10
FIX Check if lines are structured HTML before processing
2025-12-16 02:29:37 +01:00
Laurent Destailleur
efdd99c854 Merge pull request #36654 from hregis/fix_21_missing_extrafield_search_input
FIX missing search tasks extrafields input and title
2025-12-16 02:24:29 +01:00
Laurent Destailleur
26c4204df7 Merge pull request #36664 from nicolas-eoxia/fix_check_create_action
Fix: Need to check strict on default value on create action
2025-12-16 02:24:02 +01:00
Laurent Destailleur
da39a6a394 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-16 01:33:36 +01:00
Laurent Destailleur
ec91c8ddd2 Merge pull request #36661 from atm-lucasmantegari/FIX/CanValidatedHolidaysWhenNegativeBalance
FIX - Can Validated Holidays When Negative Balance
2025-12-16 01:32:09 +01:00
Laurent Destailleur
de58e5cbcf Merge branch '21.0' into FIX/CanValidatedHolidaysWhenNegativeBalance 2025-12-16 01:10:45 +01:00
Laurent Destailleur
bb7502d880 Fix condition check for negative balance 2025-12-16 01:10:28 +01:00
Laurent Destailleur
2b7346bf97 Fix link formatting in SECURITY.md 2025-12-16 01:06:54 +01:00
Laurent Destailleur
4b824a82ef Update SECURITY.md 2025-12-16 01:06:01 +01:00
Laurent Destailleur
52f71b5faf Update security reporting instructions in SECURITY.md
Clarified instructions for reporting security vulnerabilities via email.
2025-12-16 00:49:27 +01:00
Laurent Destailleur
442e1ea3e0 Update SECURITY.md 2025-12-16 00:48:04 +01:00
Laurent Destailleur
7902e31177 Fix RSS 2025-12-16 00:24:48 +01:00
Laurent Destailleur
a450967efa Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-16 00:10:49 +01:00
Laurent Destailleur
ac4a110ca5 Sec: Fix Dolibarr Stored XSS via Meta Tag Injection GHSA-59gv-36h7-qwh8 2025-12-16 00:10:28 +01:00
Laurent Destailleur
2e2438084a Update SECURITY.md 2025-12-15 23:36:16 +01:00
Laurent Destailleur
a039d200fa Merge branch '21.0' into fix_21_missing_extrafield_search_input 2025-12-15 22:50:37 +01:00
Laurent Destailleur
f5cae96280 Complete blacklist. 2025-12-15 17:06:18 +01:00
Laurent Destailleur
b2e73c9bd7 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-15 16:57:20 +01:00
Laurent Destailleur
e80a9929c0 Debug v23. dolChmod required after file_puts_content 2025-12-15 16:57:06 +01:00
Nicolas Domenech
c2cc34f630 Fix: Need to check strict on default value on create action
In php7.4 we need to check strict because with default value 0 we have true on bool check instead of false in php8.0 >
2025-12-15 16:44:51 +01:00
Braito
ab53b28c1b Simplify lines substitution logic
Removed unnecessary check for structured HTML in default lines.
2025-12-15 16:30:16 +01:00
Laurent Destailleur
31e1ce2ca6 Merge pull request #36556 from thersane-john/fix_webportal_missing_hooks
WebPortal missing hooks
2025-12-15 16:29:42 +01:00
Braito
cf0642e53c Remove unused variable 'linesisstructuredhtml' 2025-12-15 16:28:51 +01:00
Laurent Destailleur
591feefa15 Merge pull request #36584 from Pcauderlier/fix-trigger-prospect-status
Fix: Fire COMPANY_MODIFY trigger when updating prospect status via ajaxstatusprospect.php
2025-12-15 16:24:04 +01:00
Laurent Destailleur
7ae333c51e Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-12-15 16:15:45 +01:00
ATM-Lucas
e40c6b7c5f user num open day 2025-12-15 15:57:24 +01:00
Laurent Destailleur
3690babb73 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-12-15 15:57:01 +01:00
Laurent Destailleur
e1b5e024f5 Merge 2025-12-15 15:56:34 +01:00
Laurent Destailleur
a0be2c8890 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-12-15 15:54:00 +01:00
Laurent Destailleur
77d7ec8a2b Merge branch '16.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-12-15 15:53:38 +01:00
Laurent Destailleur
cc37c778dc Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into 16.0 2025-12-15 15:53:00 +01:00
Laurent Destailleur
722c31d182 Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2025-12-15 15:52:34 +01:00
Laurent Destailleur
ba2c173936 Merge pull request #36203 from Easya-Solutions/14.0_fix-purge-files-api-temp
FIX re-create API temp dir after purging temp files
2025-12-15 15:51:52 +01:00
Laurent Destailleur
03151795a4 Merge pull request #36611 from aspangaro/22_fixasset6
FIX Accountancy - Verify fiscal year on last hour to enable the integration of asset entries
2025-12-15 15:48:38 +01:00
Laurent Destailleur
454eb415ca Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-15 15:43:55 +01:00
Laurent Destailleur
dc14e43e5d Fix for #36144 2025-12-15 15:41:23 +01:00
ATM-Lucas
89f254eb35 Can Validated Holidays When Negative Balance 2025-12-15 15:21:57 +01:00
Laurent Destailleur
474e21dc6f Debug v23 2025-12-15 15:15:41 +01:00
Laurent Destailleur
4c092da9d6 FIX #36576 - date creation is empty on import 2025-12-15 14:57:25 +01:00
Laurent Destailleur
7ce1e893de FIX #36576 - date creation is empty on import 2025-12-15 14:56:16 +01:00
Laurent Destailleur
5a4c10a2de Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-15 14:26:08 +01:00
Laurent Destailleur
dea8957ec0 Merge pull request #36622 from rlaurent-alb/22.0
FIX | Fixing addPayment /invoices/id/payments
2025-12-15 14:25:24 +01:00
Laurent Destailleur
836a50489d Merge pull request #36635 from W1W1-M/new-document-api-builddoc-expense-report
NEW document API builddoc expense report
2025-12-15 14:21:06 +01:00
Laurent Destailleur
39f6b71f99 Merge pull request #36642 from aspangaro/22_cat3
Problem on request for category on account
2025-12-15 14:18:18 +01:00
Laurent Destailleur
c933408763 Doc 2025-12-15 14:14:02 +01:00
Laurent Destailleur
e29c9c6f3e Merge pull request #36633 from mdeweerd/n/baseline20251213
Qual: Update Phan baseline and fix type mismatch
2025-12-15 14:02:19 +01:00
Laurent Destailleur
124c304677 Update api_documents.class.php 2025-12-15 13:59:56 +01:00
Laurent Destailleur
6f88117ab8 Merge branch 'develop' into new-document-api-builddoc-expense-report 2025-12-15 13:59:15 +01:00
Laurent Destailleur
a4627eb0cd Merge pull request #36644 from W1W1-M/fix-document-api-contact-document-download
FIX document API contact document download
2025-12-15 13:57:14 +01:00
Laurent Destailleur
9dde4495f0 Merge pull request #36643 from W1W1-M/fix-document-api-post-third-party
FIX document API third party document POST
2025-12-15 13:56:31 +01:00
Laurent Destailleur
1bb057e046 Merge pull request #36646 from W1W1-M/new-document-api-builddoc-product
NEW document API builddoc product
2025-12-15 13:54:38 +01:00
Laurent Destailleur
9d5074d303 Merge pull request #36647 from sonikf/sonikf-fix-reception
fix reception card regression broken layout
2025-12-15 13:53:59 +01:00
Laurent Destailleur
159f498122 Merge pull request #36648 from sonikf/sonikf-patch-typos
fix typos
2025-12-15 13:53:39 +01:00
Laurent Destailleur
b1cbe96f36 Merge pull request #36649 from mdeweerd/qual/phpdoc
Qual: Update type hints in supplier order class
2025-12-15 13:53:03 +01:00
Laurent Destailleur
d9f54b7bae Merge pull request #36653 from Dolibarr/dependabot/github_actions/actions/upload-artifact-6
Bump actions/upload-artifact from 5 to 6
2025-12-15 13:52:32 +01:00
Laurent Destailleur
c07d4629dc Merge pull request #36652 from Dolibarr/dependabot/github_actions/actions/cache-5
Bump actions/cache from 4 to 5
2025-12-15 13:52:09 +01:00
Laurent Destailleur
17024b3278 Merge pull request #36655 from splohmer/patch-1
FIX: Search all for supplier proposals via object reference
2025-12-15 13:51:55 +01:00
Laurent Destailleur
c92a347c5e Merge pull request #36657 from splohmer/patch-2
FIX: SQL error for LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED
2025-12-15 13:51:09 +01:00
Laurent Destailleur
35ad674345 Debug v23 2025-12-15 13:14:04 +01:00
Regis Houssin
ab19aa8d13 FIX avoid sql error with search option pattern 2025-12-15 12:33:37 +01:00
Laurent Destailleur
8a74a72d55 Trans 2025-12-15 12:18:42 +01:00
splohmer
65134e0746 FIX: SQL error for LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED
sql error fix for mentioned secret parameter
2025-12-15 11:12:07 +01:00
splohmer
a658b7fe89 FIX: Search all function for supplier proposals
In commit 6c8ae0b2a6 the behavior of searching all functionality for supplier proposals via the list.php was changed a bit. It was provided that the supplier_proposal.class.php defines the array of $fields with the flag if a search all is allowed in this field. This short fix adds only the two fields to the list to make the function again working. Without this you cannot search after the reference via the search all functionality.
2025-12-15 11:07:06 +01:00
Regis Houssin
da2d1e6e38 FIX missing search extrafields input and title 2025-12-15 10:41:22 +01:00
dependabot[bot]
491711b283 Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 05:02:35 +00:00
dependabot[bot]
7112f510c1 Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 05:02:30 +00:00
Alexandre SPANGARO
a9d41338d0 Problem on request for category on account 2025-12-14 22:06:13 +01:00
MDW
479000631d Qual: Update type hints in supplier order class
# Qual: Update type hints in supplier order class

- Update type hints for `$price_base_type` to be either 'HT' or 'TTC'
- Update type hints for `$type` and `$notrigger` to be integers between 0 and 1
2025-12-14 21:39:56 +01:00
sonikf
c05dc10da3 fix regression broken layout
Removed call to dol_get_fiche_end() in card.php.
2025-12-14 20:45:30 +02:00
William Mead
f7078da238 Updated PHPDoc 2025-12-14 18:21:39 +01:00
William Mead
117aedfede Added product document generation 2025-12-14 18:20:29 +01:00
William Mead
00e48957eb Fixed contact document download 2025-12-14 15:23:15 +01:00
William Mead
aa3f357064 Cleaned code 2025-12-14 13:47:53 +01:00
William Mead
fa6e85fbed Cleaned code 2025-12-14 13:19:02 +01:00
William Mead
96b8515b3d Fixed type 2025-12-14 12:49:34 +01:00
William Mead
905040e5ab Updated PHPDoc 2025-12-14 12:06:41 +01:00
William Mead
8885393940 Fixed document upload for third party 2025-12-14 11:54:09 +01:00
Alexandre SPANGARO
ecfbc8293b Problem on request for category on account 2025-12-14 07:03:17 +01:00
William Mead
af55f4efe7 Added expense report to document API builddoc 2025-12-13 17:44:14 +01:00
Laurent Destailleur
dca2685042 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-13 14:13:49 +01:00
Laurent Destailleur
c1790d758f Comment 2025-12-13 14:13:30 +01:00
Laurent Destailleur
b3f7ffdaed Fix translate buttons 2025-12-13 13:54:16 +01:00
Laurent Destailleur
71a090388b Debug v23, the cancel button was lost. 2025-12-13 13:47:19 +01:00
MDW
7456c119e5 Qual: Update Phan baseline and fix type mismatch in conferenceorbooth_list.php
# Qual: Update Phan baseline and fix type mismatch in conferenceorbooth_list.php

- Updated the Phan baseline to reflect the reduced number of PhanUndeclaredMethod occurrences
- Fixed a type mismatch in conferenceorbooth_list.php by changing the values from integers to strings in the editfieldkey and editfieldval functions
2025-12-13 13:46:45 +01:00
Braito
97043d0ce0 Fix HTML check for __LINES__ substitution 2025-12-13 12:34:09 +01:00
Braito
88760d71c3 Fix line formatting for HTML content handling 2025-12-13 12:29:16 +01:00
sonikf
2b32856c7d fix typo 2025-12-13 13:18:25 +02:00
sonikf
8d62cbe912 Fix typo 2025-12-13 13:15:19 +02:00
sonikf
dd314257e6 Fix typo 2025-12-13 13:13:04 +02:00
Braito
48bebca965 Check if lines are structured HTML before processing 2025-12-13 12:12:39 +01:00
sonikf
9d0e061bf3 Translate error message to English 2025-12-13 13:08:54 +02:00
sonikf
f76605866b Fix description wording for public interface
Updated description for public interface company page.
2025-12-13 12:59:21 +02:00
sonikf
3f53aa073a Fix typos 2025-12-13 12:57:04 +02:00
Laurent Destailleur
3dfdd0fbee Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-13 11:04:24 +01:00
Laurent Destailleur
7bd0a8a76e CSS 2025-12-13 11:04:16 +01:00
Laurent Destailleur
0a1db227ad Merge pull request #36583 from aspangaro/22_fixcat
FIX Accountancy - No limit on chart of account to define category on account
2025-12-12 23:56:36 +01:00
Laurent Destailleur
095f7f6e81 Merge pull request #36617 from Dolibarr/phpstan-baseline
PHPStan > Update baseline
2025-12-12 23:51:31 +01:00
Laurent Destailleur
f4b3b2870f Merge pull request #36620 from frederic34/fix_bad_trgger_name
fix bad trigger name
2025-12-12 23:51:10 +01:00
Laurent Destailleur
6f677cf83b Merge pull request #36621 from frederic34/patch-8
fix warning in company.lib.php
2025-12-12 23:49:56 +01:00
Laurent Destailleur
66e4aff401 Merge pull request #36623 from frederic34/patch-12
fix parameter of search product
2025-12-12 23:49:38 +01:00
Laurent Destailleur
2bf6ae5050 Merge pull request #36629 from defrance/patch-333432
Fix SQL condition for project calendar filtering
2025-12-12 23:49:06 +01:00
Laurent Destailleur
9fbdb66194 Merge pull request #36625 from Hystepik/fix-blog-email-template
Fix blog email template selection
2025-12-12 23:48:01 +01:00
Laurent Destailleur
9a4029174d Merge pull request #36627 from AlainCis/fix/36624-adding-line-to-intervention-impossible
FIX #36624 SQL syntax error when adding line to intervention
2025-12-12 23:12:02 +01:00
Charlène Benke
8c692cec85 Fix SQL condition for project calendar filtering 2025-12-12 16:10:31 +01:00
alain.cisirika
edc077c1a4 FIX #36624 SQL syntax error when adding line to intervention 2025-12-12 15:15:56 +02:00
Lucas Marcouiller
6c33fe6b7c Fix blog email template selection 2025-12-12 13:12:45 +01:00
Dolibot
5f89a4a2d2 PHPStan > Update baseline 2025-12-12 12:10:57 +00:00
Frédéric FRANCE
b58394fbaa fix parameter of search product 2025-12-12 09:19:17 +01:00
Frédéric FRANCE
825f719217 Merge branch 'develop' into patch-8 2025-12-12 08:22:40 +01:00
Laurent Destailleur
f7befc2385 Fix massaction list 2025-12-12 00:15:36 +01:00
Laurent Destailleur
13c7aaf2f8 Merge pull request #36501 from Danelif/add-rang-in-import
improve purchase order line import by adding rang and flexible key se…
2025-12-11 22:17:47 +01:00
Rayan LAURENT
77f4fc7b76 FIX | Fixing addPayment /invoices/id/payments
Fixing the API route as it is currently impossible to pay a Facture::TYPE_CREDIT_NOTE with this route (it keeps negating the ttc amount used as resteapayer), inspired by the other route /paymentsdistributed, line 1717.
2025-12-11 18:48:18 +01:00
Frédéric FRANCE
938e0ec34c fix warning in company.lib.php 2025-12-11 18:33:11 +01:00
Frédéric FRANCE
cd3fd5f9c7 fix bad trigger name 2025-12-11 18:17:00 +01:00
lvessiller-opendsi
3c2e85bdb1 Merge pull request #36541 from rycks/18_fix_deposit_backport_43f551e270a00165dcb7274c0904b66b9eaf30b8
backport of PR36378 : Problem with deposit line on Type of operation
2025-12-11 10:18:58 +01:00
Eric Seigne
18f85df343 remove spaces from prev fix 2025-12-11 10:11:58 +01:00
Eric - CAP-REL
9afa5c713d Merge pull request #36585 from Easya-Solutions/18.0_fix-invoice-card-variables2
FIX undefined variables on create invoice card from order (backport f…
2025-12-11 09:30:15 +01:00
Pcauderlier
4e9370b89d Merge branch 'develop' into fix-trigger-prospect-status 2025-12-11 09:14:59 +01:00
Pcauderlier
75bf0f7d1e FIX php-stan erros 2025-12-11 09:02:15 +01:00
Alexandre SPANGARO
621625e082 FIX Accountancy - Verify fiscal year on last hour to enable the integration of asset entries 2025-12-11 05:44:15 +01:00
Alexandre SPANGARO
8995247192 Merge branch '22.0' into 22_asset5 2025-12-11 04:29:53 +01:00
Alexandre SPANGARO
e36c34b48d Update request 2025-12-11 04:25:53 +01:00
Alexandre SPANGARO
9bab3ba7e4 Merge branch '22.0' into 22_fixcat 2025-12-11 04:22:37 +01:00
Laurent Destailleur
6b00f41fed Merge pull request #36571 from W1W1-M/new-expense-report-api-update-line
NEW expense report API update line method
2025-12-11 03:25:32 +01:00
Laurent Destailleur
83dca9b93f Merge pull request #36574 from Hystepik/fix-some-phpstan-warnings
Fix some php stan warnings
2025-12-11 03:19:48 +01:00
Laurent Destailleur
22c595057d Merge pull request #36581 from aspangaro/21_fixacc1
FIX #35375 Accountancy - SQL error on empty filter account category
2025-12-11 03:19:18 +01:00
Laurent Destailleur
4b8a3be9b4 Merge pull request #36593 from mdeweerd/qual/phan20251209
Qual: Update phan baseline
2025-12-11 03:18:31 +01:00
Laurent Destailleur
48d3b2d953 Merge pull request #36607 from Boushabazakaria/fix/filter-closed-thirdparty-contacts
FIX|Fix Exclude closed third parties from contacts selection
2025-12-11 03:18:14 +01:00
Laurent Destailleur
18af96d910 Merge pull request #36586 from frederic34/fix_project
fix read property client on null
2025-12-11 03:13:22 +01:00
Laurent Destailleur
fa18c4a5ae Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-11 03:08:53 +01:00
Laurent Destailleur
5598bc066a FIX List is filtered on task status when it should not 2025-12-11 03:06:44 +01:00
Laurent Destailleur
5a81106174 Merge pull request #36522 from lippoliv/fix-accelerated-depreciation-lines-when-disabled
do not create accelerated deprecation lines if disabled
2025-12-11 02:01:00 +01:00
Laurent Destailleur
75748b9280 Merge branch '22.0' into 22_asset5 2025-12-11 01:58:42 +01:00
Laurent Destailleur
fe123327bc Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-11 01:58:16 +01:00
Laurent Destailleur
20b6250e57 Merge pull request #36547 from thersane-john/fix_select2_missing
FIX :  missing public select2 and fix public url usage by introduce  CDN url for webportal
2025-12-11 01:56:44 +01:00
Laurent Destailleur
4640f4e6cd Merge pull request #36558 from thersane-john/fix-dialog-patch-02-grab-to-scroll
UIUX : Add real-size image dialog with drag-to-scroll support in WebPortal
2025-12-11 01:54:15 +01:00
Laurent Destailleur
ade51d30ee Merge pull request #36580 from defrance/patch-712763
partnership add info to use dictionnary on type
2025-12-11 01:52:27 +01:00
Laurent Destailleur
d42f5c0eaf Merge branch '21.0' into 21_fixacc1 2025-12-11 01:51:46 +01:00
Laurent Destailleur
c9a2f53ff4 Merge pull request #36594 from AlainCis/fix/stock-card-sort-link
#FIX #35136
2025-12-11 01:49:35 +01:00
Laurent Destailleur
613b576367 Merge branch 'develop' into fix_project 2025-12-11 01:48:45 +01:00
Laurent Destailleur
7e052e5852 Merge branch 'develop' into new-expense-report-api-update-line 2025-12-11 01:48:10 +01:00
Laurent Destailleur
6349c6641b Merge pull request #36606 from defrance/patch-606226
add new route on api holiday (and change since in comment)
2025-12-11 01:47:40 +01:00
Laurent Destailleur
c07d53993d Merge pull request #36573 from frederic34/patch-8
fix do not hide errors
2025-12-11 01:38:19 +01:00
Laurent Destailleur
b4b78bc5e7 Merge pull request #36598 from Hystepik/fix-phan-warnings-on-calendar.class
fix phan warnings on calendar class
2025-12-11 01:37:14 +01:00
Laurent Destailleur
9c9244d780 Merge branch 'develop' into fix-some-phpstan-warnings 2025-12-11 01:35:22 +01:00
Laurent Destailleur
a4a439b4ff Merge branch 'develop' into fix-trigger-prospect-status 2025-12-11 01:30:50 +01:00
Laurent Destailleur
8bd3838194 Merge pull request #36588 from frederic34/patch-12
fix warnings
2025-12-11 01:30:03 +01:00
Laurent Destailleur
da981d9486 Merge pull request #36590 from W1W1-M/fix-product-card-creation-reload
FIX field reset on product creation form reload
2025-12-11 01:29:31 +01:00
Laurent Destailleur
bc79dddaee Merge pull request #36592 from Hystepik/fix-path-traversal
Fix path traversal  with $_SERVER["CONTEXT_DOCUMENT_ROOT"] variable for modulebuilder modules
2025-12-11 01:28:24 +01:00
Laurent Destailleur
5576da754f Merge pull request #36600 from Danelif/add-source-field-export-purchase
Add source field export purchase
2025-12-11 01:26:33 +01:00
Laurent Destailleur
1deba3a482 Merge branch 'develop' into add-source-field-export-purchase 2025-12-11 01:25:42 +01:00
Laurent Destailleur
3dabe3f0c3 Merge branch 'develop' into qual/phan20251209 2025-12-11 01:24:47 +01:00
Laurent Destailleur
f9ea66a205 Merge pull request #36599 from frederic34/patch-14
Fix CI v21 Update commonobject.class.php with same phpdoc than in develop
2025-12-11 01:21:53 +01:00
Laurent Destailleur
4f5918a9c9 Merge branch 'develop' into fix/filter-closed-thirdparty-contacts 2025-12-11 01:20:22 +01:00
Laurent Destailleur
6023aae923 Merge branch 'develop' into patch-606226 2025-12-11 01:19:53 +01:00
Laurent Destailleur
c892df2d40 Update api_holidays.class.php 2025-12-11 01:19:20 +01:00
Laurent Destailleur
46312053db Merge branch 'develop' into fix-phan-warnings-on-calendar.class 2025-12-11 01:17:31 +01:00
Laurent Destailleur
3ad84da873 Merge pull request #36595 from mdeweerd/fix/ci/phan/20251209
Fix(ci/phan): Fix several phan notices
2025-12-11 01:17:10 +01:00
Laurent Destailleur
971fbbfd77 Merge branch 'develop' into fix/ci/phan/20251209 2025-12-11 01:15:36 +01:00
Laurent Destailleur
852f5c66ad Merge pull request #36601 from ibuiv/patch-13
FIX Enhance VAT loading logic for supplier and buyer
2025-12-11 01:12:33 +01:00
Laurent Destailleur
b15889139e Merge branch 'develop' into patch-13 2025-12-11 01:10:21 +01:00
Laurent Destailleur
420a4d6199 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-11 01:09:58 +01:00
Laurent Destailleur
9b4b25fc0f Fix CI 2025-12-11 01:09:40 +01:00
Laurent Destailleur
d1c829a79f Fix CI 2025-12-11 01:07:44 +01:00
Laurent Destailleur
392862ad23 Merge pull request #36578 from HB9HIL/develop
UIUX: Small Typo in German Language
2025-12-11 00:55:45 +01:00
Laurent Destailleur
258722e545 Merge pull request #36575 from Dolibarr/phpstan-baseline
PHPStan > Update baseline
2025-12-11 00:55:05 +01:00
Laurent Destailleur
365c5b1015 Fix test on negative balance 2025-12-11 00:50:37 +01:00
Charlène Benke
f9dbe91c3f Update api_holidays.class.php 2025-12-10 17:38:42 +01:00
Charlène Benke
34f78f581b Set holiday status to approved before approval 2025-12-10 17:33:10 +01:00
Zakaria Boushaba
dd7a76b1b5 Fix: exclude closed third parties from contacts selection 2025-12-10 16:57:22 +01:00
Charlène Benke
da6dfebc70 Remove unnecessary blank lines in api_holidays.class.php 2025-12-10 16:52:52 +01:00
Charlène Benke
3dc2731e0e Set holiday status to validated on specific actions 2025-12-10 16:36:34 +01:00
Charlène Benke
9289383cfa Change permission check from 'write' to 'approve' 2025-12-10 16:17:00 +01:00
Charlène Benke
8ef1b5756b add new route on api holiday (and change since in comment) 2025-12-10 16:09:42 +01:00
Laurent Destailleur
2d0c554011 Debug v23 Missing button for Prepare Credit Transfer 2025-12-10 15:33:33 +01:00
alain.cisirika
4585f4e157 [FIX] Fixed sorting links in /product/stock/card.php by correcting print_liste_field_titre arguments (passing warehouse ID to the 5th argument instead of the 4th) and replacing &amp; with & to prevent double-encoding. 2025-12-10 14:32:39 +02:00
antonin_tdj
e8bb08ea47 FIX Enhance VAT loading logic for supplier and buyer
Refactor VAT loading to handle supplier and buyer roles dynamically.
2025-12-10 10:50:52 +01:00
Danelif
629a66ce9d Add source field to export purchase 2025-12-10 11:19:34 +02:00
Danelif
cd4c555af8 improve purchase order line import by adding rang and flexible key selection 2025-12-10 10:52:28 +02:00
Lucas Marcouiller
16ea5afd31 Merge branch 'develop' into fix-some-phpstan-warnings 2025-12-10 09:38:20 +01:00
Lucas Marcouiller
81988d5be8 Merge branch 'develop' into fix-path-traversal 2025-12-10 09:38:13 +01:00
Lucas Marcouiller
021c7da3c5 Merge branch 'develop' into fix-phan-warnings-on-calendar.class 2025-12-10 09:38:00 +01:00
Frédéric FRANCE
06f29c559e Update propal.class.php 2025-12-09 21:23:31 +01:00
Laurent Destailleur
64f966eddf Debug v23 2025-12-09 21:14:03 +01:00
Frédéric FRANCE
70f7a21ad1 Update commonobject.class.php with same phpdoc than in develop 2025-12-09 21:04:23 +01:00
Laurent Destailleur
332662aeaa WIP LNE 2025-12-09 20:56:05 +01:00
Lucas Marcouiller
8b4d4f0512 Merge branch 'develop' into fix-phan-warnings-on-calendar.class 2025-12-09 16:48:54 +01:00
Lucas Marcouiller
c6b8c03137 fix phan warnings on calendar class 2025-12-09 16:45:24 +01:00
Laurent Destailleur
d400c0d89a Debug v23 - Pbwith high number of products
Add filter on country into partnership selector.
2025-12-09 16:27:49 +01:00
MDW
6f4516f310 Qual: Allow null for $outputlangs in get_date_range
# Qual: Allow null for $outputlangs in get_date_range

`null` is already the default for $outputlangs so allow it as an
argument value (fixes phan notice)
2025-12-09 15:03:04 +01:00
MDW
245fdda75b Qual: Update deleteLine method parameter type for $fuser
The parameter `$fuser` in the `deleteLine` method has been updated to explicitly accept a `?User` type, which is the type that is expected by ExpenseReport::call_trigger
2025-12-09 15:02:57 +01:00
MDW
9d39ac76de Qual(menu): Replace str_pad with str_repeat (fix phan notices)
The changes replace instances of `str_pad('', $level)` with `str_repeat(' ', $level)`.
This fixes suspicious argument order notices for str_pad (in phan).
2025-12-09 15:02:51 +01:00
Laurent Destailleur
2bdcec1e63 Doc 2025-12-09 14:51:03 +01:00
Laurent Destailleur
add2758316 CSS 2025-12-09 14:30:40 +01:00
Lucas Marcouiller
b7a3dab010 Merge branch 'develop' into fix-some-phpstan-warnings 2025-12-09 14:07:57 +01:00
MDW
32ab4f1217 Qual: Update phan baseline 2025-12-09 13:46:55 +01:00
Lucas Marcouiller
3f406a994f Fix path traversal with $_SERVER["CONTEXT_DOCUMENT_ROOT"] variable for new modulebuilder modules 2025-12-09 13:36:20 +01:00
Dolibot
56c6b48eff PHPStan > Update baseline 2025-12-09 12:11:04 +00:00
Laurent Destailleur
f5903feb53 CSS 2025-12-09 11:57:09 +01:00
Laurent Destailleur
b4d659d8d9 CSS 2025-12-09 11:46:30 +01:00
William Mead
c464a2d5b2 Fixed field reset on reload. Updated contributor details. 2025-12-09 11:38:24 +01:00
Laurent Destailleur
0e42497112 Debug v23 2025-12-09 11:20:21 +01:00
Laurent Destailleur
e8ac6cddd0 Fix Replace of__[xx]__ variables. 2025-12-09 11:09:19 +01:00
Frédéric FRANCE
8c55ffd324 fix warnings 2025-12-09 11:01:22 +01:00
Frédéric FRANCE
39baead02d fix read property client on null 2025-12-09 10:45:06 +01:00
Frédéric FRANCE
6ce7ba17f4 fix read property client on null 2025-12-09 10:42:51 +01:00
VESSILLER
157aa32e0a FIX undefined variables on create invoice card from order (backport from v19) 2025-12-09 10:12:10 +01:00
Pcauderlier
4bb5a0cdf1 Fix: Correct implementation of update() call in ajaxstatusprospect.php 2025-12-09 09:30:42 +01:00
Pcauderlier
40a789f42e Fix: Use Societe->update() in ajaxstatusprospect.php to fire COMPANY_MODIFY trigger 2025-12-09 09:05:20 +01:00
William Mead
3304ae0819 Merge branch 'develop' into new-expense-report-api-update-line 2025-12-09 08:54:52 +01:00
Alexandre SPANGARO
f8c66e9199 FIX Accountancy - No limit on chart of account to define category on account 2025-12-09 06:50:15 +01:00
Alexandre SPANGARO
23a01f78d0 FIX #35375 Accountancy - SQL error on empty filter account category 2025-12-09 04:25:37 +01:00
Charlène Benke
064b6e2d2d partnership add info to use dictionnary on type 2025-12-08 23:29:34 +01:00
HB9HIL
97b811f170 Fixed Typo in German Language 2025-12-08 21:44:47 +01:00
Laurent Destailleur
29a157f8ee Debug v23 2025-12-08 20:58:03 +01:00
Laurent Destailleur
c5ddb76fd7 Debug v23. Bad balance ul/li in menu. 2025-12-08 20:33:48 +01:00
Laurent Destailleur
8b98a5a019 CSS 2025-12-08 18:39:42 +01:00
William Mead
0590d45a12 Cleaned code 2025-12-08 15:52:12 +01:00
Lucas Marcouiller
5998e20030 fix Ci 2025-12-08 15:51:50 +01:00
Lucas Marcouiller
9331445266 fix missing change 2025-12-08 15:27:45 +01:00
Lucas Marcouiller
67a60aac44 Fix some php stan warnings 2025-12-08 12:02:31 +01:00
Alexandre SPANGARO
75b357ff70 Translate 2025-12-08 10:12:02 +01:00
Frédéric FRANCE
c02f768bda Update commonsubtotal.class.php 2025-12-08 10:11:04 +01:00
Alexandre SPANGARO
2abd7a561f CI 2025-12-08 10:10:39 +01:00
Frédéric FRANCE
5484235993 fix do not hide errors 2025-12-08 10:01:37 +01:00
Alexandre SPANGARO
a60f0a9dda FIX Accountancy - Problem calculating exercises with different tax periods on fixed assets 2025-12-08 09:56:42 +01:00
William Mead
118ab320a1 Fixed line unit price 2025-12-08 08:41:22 +01:00
William Mead
4da1fb91df Added expense report line update method. Fixed line unit price. 2025-12-08 08:40:20 +01:00
Laurent Destailleur
bd1927a3ee Merge pull request #36564 from W1W1-M/new-expense-report-api-delete-line
NEW expense report API delete line method
2025-12-08 00:14:54 +01:00
Laurent Destailleur
b9923592b7 Merge pull request #36549 from Hystepik/fix-phan-warnings
Fix some phan warnings
2025-12-07 23:58:29 +01:00
Laurent Destailleur
9772f8e211 Merge pull request #36552 from priojk/patch-1
Fix #36550 - Multiline-text from substitution variables in ODT has arbitrary spaces at beginnings of some lines
2025-12-07 23:58:02 +01:00
Laurent Destailleur
5822887d32 Merge pull request #36555 from noec764/17_FIX_missing_product_ref
FIX: Missing Product ref in Bom stats
2025-12-07 23:50:13 +01:00
Laurent Destailleur
58e0131e98 Merge pull request #36557 from thersane-john/fix-dialog-patch-02
FIX : WebPortal dialog for objects
2025-12-07 23:49:39 +01:00
Laurent Destailleur
3a18ab8285 Merge pull request #36563 from W1W1-M/new-expense-report-api-add-line
NEW expense report API post line method
2025-12-07 23:42:20 +01:00
Laurent Destailleur
459109c7e5 Merge pull request #36565 from W1W1-M/new-expense-report-api-get-lines
NEW expense report API get lines method
2025-12-07 23:42:02 +01:00
Laurent Destailleur
520cd52784 Merge pull request #36566 from W1W1-M/new-expense-report-api-reopen
NEW expense report API settodraft method
2025-12-07 23:38:24 +01:00
Laurent Destailleur
d4a2d10db6 Merge pull request #36567 from W1W1-M/new-expense-report-api-cancel
NEW expense report API cancel method
2025-12-07 23:38:11 +01:00
Laurent Destailleur
6b1ce0c63c CSS 2025-12-07 19:34:35 +01:00
Laurent Destailleur
91aecad64c CSS 2025-12-07 19:33:21 +01:00
Laurent Destailleur
df0db5beb2 CSS 2025-12-07 19:13:16 +01:00
Laurent Destailleur
73947be822 Fix CI 2025-12-07 17:46:24 +01:00
Laurent Destailleur
f3d3969ed8 Fix CI 2025-12-07 16:34:33 +01:00
Laurent Destailleur
c3b56f928f CSS 2025-12-07 16:28:00 +01:00
Laurent Destailleur
0a03dae12e CSS 2025-12-07 16:18:29 +01:00
William Mead
7693c23fde Added return object 2025-12-07 14:36:06 +01:00
William Mead
df1c9694cb Added cancel exepense report method 2025-12-07 14:32:27 +01:00
William Mead
bd9a97e196 Updated PHPDoc 2025-12-07 14:21:23 +01:00
William Mead
a1a4b2a43b Updated PHPDoc 2025-12-07 14:16:11 +01:00
William Mead
aa29430af0 Updated PHPDoc 2025-12-07 14:15:26 +01:00
William Mead
4ac6fc5c2b Cleaned code 2025-12-07 14:14:52 +01:00
William Mead
df4e4bf8ff Added setToDraft method 2025-12-07 14:10:57 +01:00
Laurent Destailleur
0a0c61ca8c Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-07 14:08:38 +01:00
William Mead
8c4b346174 Added getLines method 2025-12-07 13:58:04 +01:00
William Mead
0a8a9e5f4d Added deleteLine method. Updated contributor details. 2025-12-07 13:40:02 +01:00
William Mead
3e16fac9ea Added postLine method to expense report API. Added mandatory expense report line fields check. 2025-12-07 11:52:13 +01:00
Joachim Kueter
e226a94399 Update odf.php 2025-12-06 23:04:10 +01:00
Laurent Destailleur
a0960d78b4 Fix CI 2025-12-06 14:22:56 +01:00
John BOTELLA
b7fabfda68 add grab to scroll behavior 2025-12-06 14:21:15 +01:00
Laurent Destailleur
89c568ccb7 Fix picto 2025-12-06 13:53:34 +01:00
John BOTELLA
fe0dce8072 fix modal css and display 2025-12-06 13:16:53 +01:00
Elifeleti Mukisa Dan
6ebbcb0162 Merge branch 'develop' into add-rang-in-import 2025-12-06 12:33:31 +02:00
John BOTELLA
161d1de917 Merge branch 'develop' into fix_webportal_missing_hooks 2025-12-06 10:48:10 +01:00
Laurent Destailleur
20ecee89d5 Debug v23 - hide field with unknown meaning. 2025-12-06 05:20:32 +01:00
Laurent Destailleur
f7114175ab Merge v22 2025-12-06 05:06:24 +01:00
Laurent Destailleur
418188f37b Debug v23 - fix link social networks 2025-12-06 05:01:27 +01:00
Laurent Destailleur
8f99ea3e67 Fix bad consistency when price_base_type is undefined. Must use the same
default value everywhere (so use price without tax).
2025-12-06 04:34:19 +01:00
Laurent Destailleur
b4589e846d FIX info on supplier payment card on v22 and payment link 2025-12-06 04:18:38 +01:00
Laurent Destailleur
feae915293 Fix var_dump 2025-12-06 04:04:55 +01:00
Laurent Destailleur
38932da470 Debug v23 2025-12-06 03:51:59 +01:00
Laurent Destailleur
40a6eb31ec Debug v23 2025-12-06 03:50:22 +01:00
Laurent Destailleur
fcd6b4ce6b Debug v23 2025-12-06 03:27:49 +01:00
Laurent Destailleur
05c52317b2 Translation 2025-12-06 02:15:47 +01:00
Laurent Destailleur
b3c0daab13 CSS 2025-12-06 02:10:33 +01:00
John BOTELLA
2637e554fb Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into fix_webportal_missing_hooks 2025-12-05 18:18:24 +01:00
John BOTELLA
2556543ec8 add missing hooks 2025-12-05 17:59:26 +01:00
Noé
aa6ef5ae11 FIX: Missing Product ref in Bom stats 2025-12-05 17:22:18 +01:00
Laurent Destailleur
c32cae4051 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-05 16:42:25 +01:00
Laurent Destailleur
4ea6af9535 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-05 16:38:15 +01:00
Laurent Destailleur
2e46ac45c5 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-12-05 16:34:02 +01:00
Laurent Destailleur
5db0825b49 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-12-05 16:28:27 +01:00
Laurent Destailleur
a098185476 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-12-05 16:27:07 +01:00
Laurent Destailleur
7cd529a179 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-12-05 16:22:11 +01:00
Laurent Destailleur
82c3849baa Fix CI 2025-12-05 16:21:15 +01:00
Joachim Kueter
62aee70f9f Fix for #36550
there are \n and other characters that need to get handled here, otherwise they will get replaced with space character later.
2025-12-05 16:14:48 +01:00
Lucas Marcouiller
02037dd0cc remove var_dump 2025-12-05 15:37:50 +01:00
Lucas Marcouiller
4f093be492 Merge branch 'develop' into fix-phan-warnings 2025-12-05 15:29:56 +01:00
Lucas Marcouiller
ffd6a45550 Fix some phan warnings 2025-12-05 15:29:23 +01:00
Laurent Destailleur
6ccec8fcbf Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-05 12:55:31 +01:00
Laurent Destailleur
13e6a7b936 Debug v23 2025-12-05 12:55:20 +01:00
John BOTELLA
76dd1bae4b Fix missing public select2 and Add CDN url for webportal 2025-12-05 12:13:24 +01:00
Laurent Destailleur
7f6737845e Merge pull request #36546 from defrance/patch-835467
Update holiday api methods from setValidate/setApproved to validate/a…
2025-12-05 12:09:23 +01:00
Laurent Destailleur
b36d6b4f06 Merge pull request #36529 from thersane-john/fix_css_display_webportal_card
Fix :  webportal css for cards + responsive behavior
2025-12-05 12:04:38 +01:00
Laurent Destailleur
d3d02d90f1 Merge pull request #36545 from BenjaminFlr/betterissue36514
FIX(propal): values lost when editing HT price
2025-12-05 12:02:44 +01:00
Laurent Destailleur
c4dc7b6fdb Doc 2025-12-05 11:57:45 +01:00
Laurent Destailleur
4f6c7f6168 CSS 2025-12-05 11:55:29 +01:00
Charlène Benke
5149d567e1 Update holiday api methods from setValidate/setApproved to validate/approve 2025-12-05 11:47:40 +01:00
Laurent Destailleur
11a89e218d Typo 2025-12-05 11:32:08 +01:00
Laurent Destailleur
8e79dfd84b Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-05 11:30:56 +01:00
Laurent Destailleur
54f767f48a Allow to define if data is user input or not into GETPOSTFLOAT. 2025-12-05 11:30:21 +01:00
Benjamin Falière
2050a657cf FIX(propal): values lost when editing HT price 2025-12-05 11:23:31 +01:00
John BOTELLA
181b0c1156 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into fix_css_display_webportal_card 2025-12-05 11:16:46 +01:00
Laurent Destailleur
bc0a3ddca3 Merge pull request #36543 from thersane-john/fix_webportal_iframe_dialog
FIX : WebPortal  dialog for iframe
2025-12-05 11:15:46 +01:00
John BOTELLA
da6cbf88a6 Fix isset usage 2025-12-05 11:01:28 +01:00
John BOTELLA
12969ff1bd Merge branch 'fix_css_display_webportal_card' of github.com:thersane-john/dolibarr into fix_css_display_webportal_card 2025-12-05 10:55:16 +01:00
John BOTELLA
4d0d2249c5 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into fix_css_display_webportal_card 2025-12-05 10:54:57 +01:00
John BOTELLA
844e3996b3 Fix isset usage 2025-12-05 10:54:35 +01:00
John BOTELLA
9cfab852b8 restaure times 2025-12-05 10:47:03 +01:00
John BOTELLA
8041cdee1a Fix dialog for iframe 2025-12-05 10:27:29 +01:00
Laurent Destailleur
ae0d704aa0 Merge pull request #36508 from defrance/patch-259291
Update addTimeSpent api method to use default progress
2025-12-05 09:57:19 +01:00
Laurent Destailleur
d2acb6010f Merge pull request #36537 from aspangaro/22_asset1
FIX Accountancy - #36090 Inconsistent date on various journal
2025-12-05 09:50:28 +01:00
Laurent Destailleur
b2fe08cd3b Merge pull request #36538 from aspangaro/22_asset2
FIX Accountancy - Not propose to write operation on draft asset
2025-12-05 09:49:08 +01:00
Laurent Destailleur
c932a1c878 Merge pull request #36542 from ATM-Consulting/FIX/155/18.0/regression-variable-renaming
FIX: fix #36401 (for v17.0) doesn't work in v18.0+ because of variable renaming
2025-12-05 09:48:32 +01:00
Laurent Destailleur
f2f8278603 Merge pull request #36539 from W1W1-M/backport-fix-propal-update-shipping-availability
FIX propal shipping and availability update (v18+)
2025-12-05 09:47:25 +01:00
Laurent Destailleur
59aa76e475 Merge pull request #36540 from aspangaro/22_asset4
FIX Accountancy - Reverse accounting account in depreciation expense entries for fixed assets
2025-12-05 09:46:45 +01:00
Eric Seigne
c6ed34ebcc backport of PR36378 : Problem with deposit line on Type of operation 2025-12-05 09:32:03 +01:00
atm-florian
cc5a8fd15a FIX: PR#36401 fixed a missing GETPOSTISSET() but the check involves a variable ($taskid) that was renamed ($tmptaskid) in 18.0 2025-12-05 09:29:15 +01:00
Alexandre SPANGARO
c480cd4801 FIX Accountancy - Reverse accounting account in depreciation expense entries for fixed assets 2025-12-05 08:58:00 +01:00
William Mead
a567cade7d Fixed shipping and availability updating. Updated contributor details. 2025-12-05 08:56:14 +01:00
Alexandre SPANGARO
67d7fa8f78 FIX Accountancy - Not propose to write operation on draft asset 2025-12-05 06:47:49 +01:00
Alexandre SPANGARO
77e8924c93 FIX #36090 Accountancy - Inconsistent date on various journal 2025-12-05 06:41:39 +01:00
Laurent Destailleur
550db706dc Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-05 02:13:27 +01:00
Laurent Destailleur
d6ae74b3a9 CSS 2025-12-05 02:12:35 +01:00
Laurent Destailleur
a5729bc6e9 Merge branch 'develop' into fix_css_display_webportal_card 2025-12-04 22:16:00 +01:00
Laurent Destailleur
dff6319ffd Merge pull request #36503 from atm-florianm/FIX/155/DA027405/situation-percent-two-modes
FIX: when INVOICE_USE_SITUATION === 2, some libs still use the old algorithms
2025-12-04 22:13:47 +01:00
Laurent Destailleur
5648a23027 Merge branch 'develop' into patch-259291 2025-12-04 22:02:50 +01:00
Laurent Destailleur
8b51ff85fd Fix CI 2025-12-04 21:58:10 +01:00
Laurent Destailleur
764bb3791b Fix CI 2025-12-04 21:51:03 +01:00
Laurent Destailleur
9ac82f488e Fix CI 2025-12-04 21:50:26 +01:00
Laurent Destailleur
8fe5d2758a Fix CI 2025-12-04 21:48:44 +01:00
Laurent Destailleur
a9d2c95fdd Fix CI 2025-12-04 21:47:02 +01:00
Laurent Destailleur
b4c374fd48 Fix CI 2025-12-04 21:45:34 +01:00
Laurent Destailleur
c9d1f3baa3 Merge pull request #36527 from FHenry/22_fix_subtotal_attribute_copy
fix: when create invoices from orders list, title and subtotal attribute is now copied
2025-12-04 21:26:01 +01:00
Laurent Destailleur
ab18e9d647 Merge branch 'develop' into patch-259291 2025-12-04 21:12:26 +01:00
Laurent Destailleur
810ac047dc Fix CI 2025-12-04 21:08:17 +01:00
Laurent Destailleur
dc0656bf02 Merge branch 'develop' into patch-259291 2025-12-04 21:01:15 +01:00
Laurent Destailleur
757e01eaaa Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 20:58:00 +01:00
Laurent Destailleur
1cd7de6e21 Better compatibility 2025-12-04 20:57:43 +01:00
Laurent Destailleur
e49f907cdc Merge pull request #36511 from lelex86/lelex86-patch-1
FIX: use suspended status in FactureFournisseurRec::updateline()
2025-12-04 20:57:04 +01:00
Laurent Destailleur
e350886c15 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 20:38:22 +01:00
HENRY Florian
a3dfae7792 Merge branch '22.0' into 22_fix_subtotal_attribute_copy 2025-12-04 20:30:17 +01:00
Laurent Destailleur
78316a577d Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-04 20:26:59 +01:00
Florian HENRY
7e264b0097 Merge branch '22.0' of https://github.com/Dolibarr/dolibarr into 22_fix_subtotal_attribute_copy 2025-12-04 19:58:49 +01:00
Florian HENRY
12936afb13 review 2025-12-04 19:58:42 +01:00
Laurent Destailleur
3068a778da Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-12-04 19:51:48 +01:00
Laurent Destailleur
9d307a4238 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-12-04 19:07:33 +01:00
Laurent Destailleur
193a42cd47 Fix #36520 2025-12-04 19:02:57 +01:00
Laurent Destailleur
222cd76799 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-12-04 18:53:04 +01:00
Laurent Destailleur
47799b88cf Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-12-04 18:40:23 +01:00
Laurent Destailleur
78ca968db6 Merge pull request #36517 from atm-florianm/SEC/commented-out-restrictedArea
SEC: FIX #36430 permissions not checked on other tabs of HRM evaluation card
2025-12-04 18:37:46 +01:00
Laurent Destailleur
880eaa4592 Merge pull request #36530 from W1W1-M/fix-propal-update-shipping-availability
FIX propal shipping and availability update
2025-12-04 18:35:57 +01:00
Laurent Destailleur
4b2b01b1cd Merge branch 'develop' into fix_css_display_webportal_card 2025-12-04 18:34:43 +01:00
Laurent Destailleur
e6f9741987 Merge pull request #36521 from JonBendtsen/BUG_35655_API_Contract_Creation_Fails_for_Non-Admin_Users_in_Version_22.0.2
FIX #35655 API Contract Creation Fails for Non-Admin Users in Version 22.0.2
2025-12-04 18:32:46 +01:00
Laurent Destailleur
9c038b6bbb Merge branch 'develop' into add-rang-in-import 2025-12-04 18:32:24 +01:00
Laurent Destailleur
46e509448d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 18:31:52 +01:00
Laurent Destailleur
bb9f381e9f Fix CI 2025-12-04 18:31:31 +01:00
Laurent Destailleur
5155b65263 Merge branch 'develop' into add-rang-in-import 2025-12-04 18:23:42 +01:00
Laurent Destailleur
50db4e6499 Merge pull request #36518 from JonBendtsen/fix_36507_commit_9801f02
Fix broken commit 9801f02 mentioned in issue #36507
2025-12-04 18:15:43 +01:00
Laurent Destailleur
b4309adb23 Merge pull request #36534 from JonBendtsen/BUG__API_POST_contact_to_a_non-existing_socid_gives_DB_error__36407
FIX #36407 BUG: API POST contact to a non-existing socid gives DB error
2025-12-04 18:09:59 +01:00
Laurent Destailleur
c2902827a9 Fix CI 2025-12-04 18:09:43 +01:00
Laurent Destailleur
0235e86f64 Merge pull request #36484 from Hystepik/fix-#36475
Fix #36475 bad value for project  gantt start
2025-12-04 17:43:03 +01:00
Laurent Destailleur
c0bb5d2d77 Merge pull request #36499 from frederic34/patch-8
clean code
2025-12-04 17:42:16 +01:00
William Mead
7f68370536 Merge branch 'develop' into fix-propal-update-shipping-availability 2025-12-04 17:37:37 +01:00
Frédéric FRANCE
50c27b304e Update blockedlog.php 2025-12-04 17:27:15 +01:00
Jon Bendtsen
3d2a826865 FIX #36407 BUG: API POST contact to a non-existing socid gives DB error 2025-12-04 17:09:59 +01:00
Laurent Destailleur
adf3ca572c Merge pull request #36509 from defrance/patch-781201
Fix permission check from 'lire' to 'read'
2025-12-04 16:53:43 +01:00
Laurent Destailleur
bdb4a66088 Merge branch 'develop' into patch-781201 2025-12-04 16:53:26 +01:00
Laurent Destailleur
a578757389 Merge branch 'develop' into patch-8 2025-12-04 16:38:03 +01:00
Laurent Destailleur
526da8e5a7 Merge pull request #36505 from otcesar/22.0
Fix translation for import error
2025-12-04 16:37:31 +01:00
Jon Bendtsen
8deec3f918 it returns an Object, but it can not be TimeSpent because that creates a infinite loop 2025-12-04 16:23:13 +01:00
William Mead
8be39d4f5a Fixed shipping and availability updating. Updated contributor details. 2025-12-04 15:05:10 +01:00
Laurent Destailleur
9257e5e3bd Merge branch 'develop' into fix_css_display_webportal_card 2025-12-04 14:53:52 +01:00
Laurent Destailleur
998d8c4b50 Fix warning 2025-12-04 14:53:33 +01:00
Laurent Destailleur
966bdc84e5 Fix warning 2025-12-04 14:46:10 +01:00
Laurent Destailleur
23db225ec3 Merge pull request #36523 from FHenry/22_fix_subtotal_feature
FIX: subtotal feature button availablity according setup
2025-12-04 14:30:43 +01:00
Laurent Destailleur
d647a95de8 Merge pull request #36525 from BenjaminFlr/issue36514
FIX(propal): Incorrect HT/TTC recalculation when editing proposal lines #36514
2025-12-04 14:24:08 +01:00
Laurent Destailleur
863dd31ab1 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 14:20:24 +01:00
Laurent Destailleur
9e63298b2e CSS 2025-12-04 14:20:08 +01:00
Laurent Destailleur
0a45c9b368 Merge pull request #36524 from FHenry/22_feat_subtotal_defaut_values
new: defaut to True show unit price on title and sub total
2025-12-04 14:06:47 +01:00
Laurent Destailleur
39e200eb50 Debug v23 2025-12-04 14:00:34 +01:00
John BOTELLA
e80752edfd Fix webportal css 2025-12-04 13:16:46 +01:00
Laurent Destailleur
e329c11e82 Fix warning 2025-12-04 12:54:56 +01:00
Laurent Destailleur
03f26d3a6d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 12:51:59 +01:00
Laurent Destailleur
c635f5f9c5 Fix detection of security commit 2025-12-04 12:51:49 +01:00
Laurent Destailleur
69cfb09b62 Fix detection of security commit 2025-12-04 12:42:02 +01:00
Laurent Destailleur
11787eb4ff Trans 2025-12-04 12:30:17 +01:00
Laurent Destailleur
47896f320a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-04 12:23:17 +01:00
Laurent Destailleur
b530ab7e5d Debug v23 - Navigation in timespent and style 2025-12-04 12:22:44 +01:00
Florian HENRY
7f3ac106fc fix: when create bills from orders list, title and subtotal attribute is now copied 2025-12-04 11:00:58 +01:00
Florian HENRY
c39cba8395 fix: when create bills from orders list, title and subtotal attribute is now copied 2025-12-04 10:57:24 +01:00
Laurent Destailleur
aa8fac1deb Merge pull request #36429 from atm-adrien/FIX/MulticompanyStockCompatibility
FIX : Implementation of multi-company compatibility with inventory/warehouse management
2025-12-04 10:42:35 +01:00
Benjamin Falière
68004a4009 FIX(propal): Incorrect HT/TTC recalculation when editing proposal lines 2025-12-04 10:35:42 +01:00
Florian HENRY
6b05561ee8 new: defaut to True show unit price on title and sub total 2025-12-04 10:22:47 +01:00
lippoliv
959308c910 fix line indentation 2025-12-04 10:20:38 +01:00
Florian HENRY
a38ffa02ac fix: subtotal feature button availablity according setup 2025-12-04 10:18:01 +01:00
lippoliv
bb06e850f1 do not create accelerated deprecation lines if disabled 2025-12-04 10:15:50 +01:00
Eric - CAP-REL
2ebdcfda5c Merge pull request #35788 from Easya-Solutions/18_allow_credit_invoice_on_situation
FIX : remove useless condition to create credit on situation invoice …
2025-12-04 09:56:30 +01:00
Eric - CAP-REL
70431043af Merge pull request #36398 from Easya-Solutions/18.0_fix-invoice-card-variables
FIX undefined variables on create invoice from shipment card (backport from v20)
2025-12-04 09:30:56 +01:00
lvessiller-opendsi
ad37ece7bc Merge pull request #36494 from atm-florianm/FIX/155/date/minute-second-vs-min-sec
FIX 18.0: `GETPOSTDATE()` and `buildParamDate()` assumed wrong HTTP param names
2025-12-04 09:27:44 +01:00
Frédéric FRANCE
23694d67f1 Update blockedlog.php 2025-12-04 08:48:01 +01:00
Frédéric FRANCE
5701aa4b35 Merge branch 'develop' into patch-8 2025-12-04 08:36:15 +01:00
Jon Bendtsen
11cd186e9a remove debugging dol_syslog 2025-12-03 21:54:33 +01:00
Jon Bendtsen
8dc2eb0fe4 Checking for access to both new and old socid 2025-12-03 21:52:35 +01:00
Laurent Destailleur
1c367a59d3 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-03 21:39:57 +01:00
Laurent Destailleur
9392e0a9b6 CSS 2025-12-03 21:39:31 +01:00
Jon Bendtsen
66d3df4cc6 Fix broken commit 9801f02 mentioned in issue #36507 2025-12-03 21:06:13 +01:00
Laurent Destailleur
3f0ec8dc78 Fix setup margin 2025-12-03 18:39:34 +01:00
Laurent Destailleur
caf65afa7e WIP LNE 2025-12-03 18:19:06 +01:00
atm-florian
a1476fd221 SEC: permissions not checked on other tabs of HRM evaluation card 2025-12-03 17:11:14 +01:00
atm-florian
a49047b0d8 phpdoc: wrong return type 2025-12-03 16:57:09 +01:00
atm-florian
c464150b4b FIX bad ratio calculation 2025-12-03 16:43:11 +01:00
atm-florian
a2b1d1ed02 FIX missing space before cast 2025-12-03 16:01:11 +01:00
Laurent Destailleur
7847408006 WIP LNE 2025-12-03 15:40:42 +01:00
atm-florian
9737acc75a FIX wrong indentation 2025-12-03 15:34:12 +01:00
atm-florian
0c4fbc5270 Merge branch 'FIX/155/DA027405/situation-percent-two-modes' of github.com:atm-florianm/dolibarr into FIX/155/DA027405/situation-percent-two-modes 2025-12-03 15:14:38 +01:00
atm-florian
c5b0c1c318 FIX: INVOICE_USE_SITUATION (1 = legacy, 2 = new): some functions still use only the legacy algorithm 2025-12-03 15:13:39 +01:00
Charlène Benke
656255eecd Fix progress assignment in addTimeSpent method 2025-12-03 13:03:09 +01:00
Laurent Destailleur
a4114d61be Fix replace DISTINCT 2025-12-03 12:35:09 +01:00
lelex86
f6e667da1a FIX: use suspended status in FactureFournisseurRec::updateline()
- The method checks `$this->status == self::STATUS_SUSPENDED`.
- For recurring **supplier** invoices, `$this->status` is not populated (it is always `null`).
- The real field used to store the suspended flag of the template is `$this->suspended`.
2025-12-03 09:59:03 +01:00
Lucas Marcouiller
59ccde0087 Merge branch '22.0' into fix-#36475 2025-12-03 09:49:23 +01:00
Charlène Benke
dc6c593187 Fix permission check from 'lire' to 'read' 2025-12-03 09:29:48 +01:00
Charlène Benke
4c597d650b Update addTimeSpent api method to use default progress
with null parameters, swagger validator fail
2025-12-03 07:40:57 +01:00
Laurent Destailleur
e2595b5117 Fix LNE 2025-12-02 22:37:49 +01:00
Laurent Destailleur
793d846d94 Debug v23 2025-12-02 21:40:15 +01:00
Laurent Destailleur
10b087e209 Fix yearly events and duplicate recurring events 2025-12-02 21:33:09 +01:00
Frédéric FRANCE
0c6b16060f Merge branch 'develop' into patch-8 2025-12-02 20:59:27 +01:00
Laurent Destailleur
e60de6525b WIP Loi finance 2025-12-02 20:29:20 +01:00
Jon Bendtsen
268996c672 testing for access to the thirdpartytmp 2025-12-02 17:26:53 +01:00
Jon Bendtsen
ddd2927e31 This commit has errors, if you use PUT in the API with a new socid that the user does not have permission to, then it STILL updates the contract, and then it gets the contract after update and tells me I do not have access 2025-12-02 17:23:26 +01:00
Jon Bendtsen
b48fed1719 PUT now checks both existing socid and any potentially updated socid for access 2025-12-02 17:23:26 +01:00
Jon Bendtsen
26a39d1cc8 creating Thirdparties object takes no arguments 2025-12-02 17:23:26 +01:00
Jon Bendtsen
6f18235bab both socid exists and access to is checked in api_thirdparty GET :-) 2025-12-02 17:23:26 +01:00
Jon Bendtsen
1c697607b1 default deny access, allow access if user has the right combination of permissions and/or is the sales representative for the thirdparty 2025-12-02 17:23:26 +01:00
Jon Bendtsen
36415f1fd2 giving a slight better error message 2025-12-02 17:23:26 +01:00
Jon Bendtsen
9941a20fa8 Check if API user has rights to see all thirdparties
Check if API user has rights to see all thirdparties - though perhaps we should check if the user has rights to this particular thirdparty in this contract?
2025-12-02 17:23:26 +01:00
tcesar
6545957cbd Fix traduction for import error 2025-12-02 16:37:30 +01:00
Danelif
5ef3998a54 improve purchase order line import by adding rang and flexible key selection 2025-12-02 16:19:18 +02:00
Laurent Destailleur
5bcd5db58f Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-02 15:11:40 +01:00
atm-florian
c48b719473 FIX: now there are two values for INVOICE_USE_SITUATION (1 = legacy, 2 = new), leading to two interpretations of situation_percent; in some algorithms, only the old algorithm was applied even when the new mode was on 2025-12-02 15:10:43 +01:00
Laurent Destailleur
7828311250 Fix export pb in br 2025-12-02 15:04:14 +01:00
Laurent Destailleur
efd58a5f48 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-12-02 14:54:22 +01:00
Laurent Destailleur
6fbc380e52 FIX Export of extrafield in organized events 2025-12-02 14:54:10 +01:00
atm-florian
c27146f44c FIX: now there are two values for INVOICE_USE_SITUATION (1 = legacy, 2 = new), leading to two interpretations of situation_percent; in some algorithms, only the old algorithm was applied even when the new mode was on 2025-12-02 14:42:15 +01:00
Laurent Destailleur
307eaf0321 Trans 2025-12-02 14:07:24 +01:00
Laurent Destailleur
14c949c8c9 Merge pull request #36408 from JonBendtsen/security.lib.php_checkUserAccessToObject_moduleEnabled_0permissions
Qual: DENY access to Thirdparty when module is enabled, but no permissions at all
2025-12-02 10:46:46 +01:00
Frédéric FRANCE
a560d4f886 clean code 2025-12-02 09:11:56 +01:00
Lucas Marcouiller
894bbd5786 Merge branch '22.0' into fix-#36475 2025-12-02 08:36:25 +01:00
Lucas Marcouiller
55977d16f1 fix warning 2025-12-02 08:35:53 +01:00
Lucas Marcouiller
792070b5f5 fix a potential warning 2025-12-02 08:34:41 +01:00
Laurent Destailleur
d8a4e774bd Debug v23 2025-12-01 21:19:51 +01:00
Laurent Destailleur
2487e7ca5c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-01 18:56:50 +01:00
Laurent Destailleur
36fc03aa49 FIX must not allow deletion of invoice if printed or sent by email. 2025-12-01 18:56:18 +01:00
Laurent Destailleur
759c4ba5a9 Merge pull request #36496 from ATM-NicolasV/FIX/FAMILY_VARCHAR
Modification of the family VARCHAR field to VARCHAR(64), causing the failure of module re-activation.
2025-12-01 16:48:29 +01:00
Laurent Destailleur
64bab261a9 Merge pull request #36495 from mapiolca/patch-67
Backport: fix intervention “Signed” confirmation when no status is selected
2025-12-01 16:47:51 +01:00
atm-nicolasV
6b6a4163b8 Modification of the family VARCHAR field to VARCHAR(64), causing the failure of module re-activation. 2025-12-01 15:56:29 +01:00
Laurent Destailleur
8980392d8c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-01 15:40:57 +01:00
Laurent Destailleur
967865dfe5 CSS 2025-12-01 15:40:42 +01:00
Laurent Destailleur
854adf45f7 Merge pull request #36487 from le-reparateur/patch-4
Add default supplier type handling in card.php in creation mode
2025-12-01 15:24:07 +01:00
Laurent Destailleur
14eab317ef Fix formatting and add new line in card.php 2025-12-01 14:08:11 +01:00
Laurent Destailleur
ca30a6d692 Update card.php 2025-12-01 14:07:28 +01:00
Pierre Ardoin
1c94462405 Update copyright year for Pierre Ardoin 2025-12-01 14:03:40 +01:00
Pierre Ardoin
dad4bbddd2 Report fix on 21.0
Fix an issue that have been fixed by Charlene Benke on v22
2025-12-01 14:00:38 +01:00
Laurent Destailleur
f40e88d67a Merge pull request #36477 from atm-jonathan/FIX_TICKET_RANDOM_ID_ENTROPY
FIX: ticket module - use random_int() for secure ID generation instea…
2025-12-01 13:55:47 +01:00
Laurent Destailleur
153d750d9c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-12-01 13:55:35 +01:00
Laurent Destailleur
41fc03c63b Fix: Do not transform [__XXX__] string when
MAIN_RESTRICTHTML_ONLY_VALID_HTML is on.
2025-12-01 13:54:27 +01:00
atm-florian
0e1c580f11 FIX 18.0: GETPOSTDATE and buildParamDate assumed HTTP param names 'minute' and 'second' instead of 'min' and 'sec' 2025-12-01 13:47:50 +01:00
Laurent Destailleur
47aa1b4001 Update ticket.lib.php 2025-12-01 13:20:45 +01:00
Laurent Destailleur
a96727726e Merge pull request #36488 from BenjaminFlr/35411
FIX(tasks): dates in ganttview
2025-12-01 13:14:03 +01:00
Laurent Destailleur
9cd4c05f5b Merge pull request #36486 from JonBendtsen/API_Timespent_Service_Field_33899
FIX: API task getTimeSpent to actually return data
2025-12-01 13:13:03 +01:00
Laurent Destailleur
4223ff08ce Merge pull request #36491 from Easya-Solutions/18.0_fix-update-extras
FIX not remove value of others extra-fields on update extras action
2025-12-01 13:10:08 +01:00
Laurent Destailleur
ebacc05fe3 Comment 2025-12-01 13:09:18 +01:00
lvessiller-opendsi
0beee0bec5 Merge branch '14.0' into 14.0_fix-purge-files-api-temp 2025-12-01 11:53:59 +01:00
Laurent Destailleur
db6c1cd87f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-01 11:43:22 +01:00
Laurent Destailleur
ab3204a88a Debug v23 2025-12-01 11:42:20 +01:00
VESSILLER
d16f8b68db FIX not remove value of others extra-fields on update extras action 2025-12-01 11:14:16 +01:00
Laurent Destailleur
edb73dcaf3 Comment 2025-12-01 11:11:16 +01:00
Laurent Destailleur
b83a13656f Add new phpunit tests 2025-11-30 18:37:58 +01:00
Laurent Destailleur
e932bc0722 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-30 14:48:55 +01:00
Laurent Destailleur
2eee5bf2a1 CSS 2025-11-30 14:48:33 +01:00
Benjamin Falière
819453b546 FIX (tasks): dates in gantt view 2025-11-30 13:21:13 +01:00
Francis
7b2ceaf177 Add default supplier type handling in card.php in creation mode 2025-11-30 12:11:16 +01:00
Jon Bendtsen
9801f022f9 PHPStan fix 2025-11-30 12:09:08 +01:00
Jon Bendtsen
f7fee10e23 1 more pre-commit check fix 2025-11-30 12:03:57 +01:00
Francis
190da9cb8c Add default supplier type handling in card.php in creation mode
Hi
By default supplier is a professional in creation mode.
2025-11-30 12:01:46 +01:00
Jon Bendtsen
579f1ab1f7 actual pre-commit fix 2025-11-30 11:59:59 +01:00
Jon Bendtsen
bd31e922c8 letting API TASK PUT timespent update the product 2025-11-30 11:59:47 +01:00
Jon Bendtsen
6676171146 fix pre-commit CI check 2025-11-30 11:35:39 +01:00
Jon Bendtsen
58afc38ec4 API POST can now include a product_id 2025-11-30 11:30:01 +01:00
Jon Bendtsen
9a47931329 FIX: API task getTimeSpent to actually return data 2025-11-30 11:04:34 +01:00
Laurent Destailleur
dbd98af0c3 Merge pull request #36485 from JonBendtsen/API_Timespent_Service_Field_33899
FIX #33899 API Timespent Service Field
2025-11-30 10:25:51 +01:00
Jon Bendtsen
18d8cfd510 making a more general fix for checking access to projet_task 2025-11-30 09:35:05 +01:00
Jon Bendtsen
9b0732dd49 FIX: #33899 API Timespent Service Field 2025-11-30 00:02:34 +01:00
Lucas Marcouiller
8664f74154 Fix #36475 bad value for project gantt start 2025-11-29 21:55:45 +01:00
Laurent Destailleur
f255dba783 Merge pull request #36481 from BenjaminFlr/accessibility
ENH: Accessibility on modulebuilder setup page
2025-11-29 19:16:09 +01:00
Laurent Destailleur
f4475746c3 Update supported versions for security reports 2025-11-29 16:54:56 +01:00
Laurent Destailleur
62ebfd6f5e Clarify supported versions for security reports 2025-11-29 16:53:58 +01:00
Benjamin Falière
5932aaa9db ENH: Accessibility on modulebuilder setup page
Add label for input fields
2025-11-29 16:39:06 +01:00
atm-jonathan
4a96baed9b FIX: ticket module - use random_int() for secure ID generation instead of microtime 2025-11-29 15:20:15 +01:00
Laurent Destailleur
83fe760c0f Merge pull request #36474 from Dolibarr/phpstan-baseline
PHPStan > Update baseline
2025-11-29 14:50:27 +01:00
Dolibot
b31f16c18f PHPStan > Update baseline 2025-11-29 12:09:23 +00:00
Laurent Destailleur
6af8022be1 Merge pull request #36460 from Hystepik/fix-webhook-history-on-error
Fix webhook history record save on error
2025-11-29 11:30:18 +01:00
Laurent Destailleur
f4bcf47008 Merge pull request #36467 from emheyarssi/35061
FIX #35061
2025-11-29 11:28:03 +01:00
Laurent Destailleur
c62ba31c50 Merge pull request #36433 from mdeweerd/fix/public_const
Qual: Update PHP-CS-Fixer configuration and DolibarrModules class
2025-11-28 23:34:42 +01:00
Laurent Destailleur
65fe121acf Merge pull request #36437 from aspangaro/23_accpicto2
UX Accountancy - Ledger - Add icon for more comprehension
2025-11-28 23:33:06 +01:00
Laurent Destailleur
45e4c29e25 Merge pull request #36439 from frederic34/patch-8
fix warning in upgrade2.php
2025-11-28 23:31:12 +01:00
Laurent Destailleur
e4e5af0adf Merge pull request #36442 from frederic34/patch-11
add modulepart for direct print capabilities
2025-11-28 23:30:22 +01:00
Laurent Destailleur
27161bd309 Merge pull request #36450 from mdeweerd/phpstan/dol_sort_array
Qual: Improve type hinting for phpstan in dol_sort_array()
2025-11-28 23:18:26 +01:00
Laurent Destailleur
682f00dd00 Merge pull request #36451 from Steph501/fix/emailcollector-subject-exclusion-filter
Fix: Email Collector subject/body exclusion filters not working
2025-11-28 23:15:26 +01:00
Laurent Destailleur
b839599f25 Merge pull request #36468 from frederic34/missing_specialcode
missing db migration
2025-11-28 22:54:11 +01:00
Frédéric France
16f47cd9ae Merge remote-tracking branch 'upstream/develop' into patch-11 2025-11-28 20:45:05 +01:00
Frédéric France
65af9e2591 add more 2025-11-28 20:44:34 +01:00
Frédéric France
b39eb2bc9e add more 2025-11-28 20:43:17 +01:00
Frédéric France
d7597d72d2 add more 2025-11-28 20:39:32 +01:00
Frédéric France
15124c1bf3 add more 2025-11-28 20:10:00 +01:00
Frédéric France
2afb048dfb add more 2025-11-28 19:57:10 +01:00
Frédéric France
4a42d5d8bc add more 2025-11-28 19:52:10 +01:00
Frédéric France
123af65139 add more 2025-11-28 19:42:56 +01:00
Frédéric France
8ba7fca18a fix missing migration 2025-11-28 18:55:29 +01:00
Frédéric France
c8cffbc3b5 fix missing migration 2025-11-28 18:53:03 +01:00
marc
5c6b4f62c8 FIX #35061
Signed-off-by: marc <marc.baur@ptmsoft.fr>
2025-11-28 18:25:00 +01:00
Laurent Destailleur
d8891130f5 Merge pull request #36463 from vold-lu/18.0
NEW: Automatically release docker image for each GitHub release
2025-11-28 18:13:47 +01:00
Aloïs Micard
b2f9de7489 Add new workflow to trigger Docker build 2025-11-28 17:27:32 +01:00
Lucas Marcouiller
03cdf34cea Merge branch 'develop' into fix-webhook-history-on-error 2025-11-28 16:49:05 +01:00
Laurent Destailleur
30659bfadc Merge pull request #36459 from vold-lu/api_supplier_discounts
NEW : Third Parties API can get supplier fixed discounts
2025-11-28 16:24:10 +01:00
Lucas Marcouiller
e6fa97f3ad Merge branch 'fix-webhook-history-on-error' of github.com:Hystepik/dolibarr into fix-webhook-history-on-error 2025-11-28 16:21:12 +01:00
Lucas Marcouiller
0ce80ab5e6 fix CI 2025-11-28 16:20:55 +01:00
Frédéric FRANCE
3c3345abdd Merge remote-tracking branch 'upstream/develop' into patch-11 2025-11-28 16:19:59 +01:00
Laurent Destailleur
0d5c63e6d4 Merge pull request #36455 from Hystepik/fix-prevent-use-of-trace-method
Fix prevent use of TRACE REQUEST_METHOD in waf
2025-11-28 16:19:52 +01:00
Laurent Destailleur
dd68602e31 Merge pull request #36458 from altairisfr/fix_shipment_with_origin
FIX: shipment with origin
2025-11-28 16:18:26 +01:00
Lucas Marcouiller
941606a48a Merge branch 'develop' into fix-webhook-history-on-error 2025-11-28 16:05:14 +01:00
Lucas Marcouiller
165d047bf6 Fix webhook history record save on error 2025-11-28 16:02:55 +01:00
Laurent Destailleur
3616b229bb CSS 2025-11-28 16:00:36 +01:00
Rémi Champlon
e3fbe0943e fix space 2025-11-28 15:40:57 +01:00
Frédéric FRANCE
991b867047 add another 2025-11-28 15:26:10 +01:00
Rémi Champlon
7ffb16abef fix space 2025-11-28 15:25:15 +01:00
Frédéric FRANCE
e6f9529364 Merge remote-tracking branch 'upstream/develop' into patch-11 2025-11-28 15:15:56 +01:00
Rémi Champlon
d43e697a10 implem 2025-11-28 15:14:29 +01:00
Frédéric FRANCE
cb4ed97867 Merge remote-tracking branch 'origin/patch-11' into patch-11 2025-11-28 15:09:21 +01:00
Frédéric FRANCE
1807269202 add another 2025-11-28 15:05:13 +01:00
Alexandre SPANGARO
9e993b8126 Merge branch 'develop' into 23_accpicto2 2025-11-28 14:58:27 +01:00
Mélina JOUM
206e636756 FIX: reinstate shipment with origin 2025-11-28 14:41:53 +01:00
Lucas Marcouiller
621da6eb0d Fix prevent use of TRACE method in waf 2025-11-28 11:19:16 +01:00
Laurent Destailleur
66d79d69af Doc 2025-11-28 10:28:25 +01:00
Laurent Destailleur
65c199fbf1 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-28 09:44:45 +01:00
Laurent Destailleur
6c54e4792b CSS 2025-11-28 09:17:34 +01:00
Laurent Destailleur
cd5e0b7e9d Doc 2025-11-28 09:05:14 +01:00
Laurent Destailleur
09aca511e8 Debug v23 2025-11-28 08:55:11 +01:00
Frédéric FRANCE
87fbbce618 Update upgrade2.php 2025-11-28 07:59:10 +01:00
MDW
b362b6d395 Qual: Add types for $workflow and $workflowcodes. 2025-11-28 03:14:15 +01:00
MDW
05c32bb12d Qual: Cast label to string to ensure type consistency (phpstan) 2025-11-28 02:23:46 +01:00
MDW
19637c1996 qual: Update type hints and casting in select_juridicalstatus method
- Changed type hint for $arraydata
- Added explicit casting for `code` and `country_code` in the array assignment
2025-11-28 02:23:40 +01:00
MDW
44acb8eb47 qual: Add type hint for group_list array
Add a type hint for the $group_list array for phpstan.
2025-11-28 02:23:33 +01:00
MDW
04ec188cb6 fix: Improve type casting and array initialization in user.class.php
- Added explicit type casting for array values
- Improved array initialization syntax for better readability and maintainability
2025-11-28 02:19:12 +01:00
MDW
b37aa3d1c6 Qual: Type casting in select_country and loadCacheInputReason methods 2025-11-28 02:19:05 +01:00
MDW
5117e09959 Qual: Cast properties to string in get_full_arbo method 2025-11-28 02:18:59 +01:00
MDW
55b6364bf6 Qual: Change array assignment for phpstan type deduction 2025-11-28 02:18:53 +01:00
MDW
e68b0f23d4 Qual: Change array assignment for phpstan type deduction 2025-11-28 02:18:46 +01:00
MDW
bacfd43079 qual: Add type hint for $arraydata in select_juridicalstatus method
This change adds a type hint for the $arraydata variable in the select_juridicalstatus method for phpstan
2025-11-28 02:18:40 +01:00
MDW
53baeeaf67 Qual: Improve type hinting for phpstan in dol_sort_array()
#Qual: Improve type hinting for phpstan in dol_sort_array()

- Improve phpdoc for phpstan in dol_sort_array()
2025-11-28 02:18:33 +01:00
Steph501
04bc3ee058 FIX #36447 Email Collector subject/body exclusion filters not working
The '!' prefix was removed at line 1369-1373 before being tested
at lines 1398 and 1406, causing exclusion filters to never work.

This fix uses the $not variable (already set correctly) instead of
re-testing for '!' on the modified rulevalue.
2025-11-27 23:27:36 +01:00
MDW
b33386ba0d qual: Update phpstan-baseline.neon to remove unresolvable type issues
Removed multiple entries related to unresolvable types in dol_sort_array function calls and property assignments.
2025-11-27 22:38:56 +01:00
Frédéric France
4f3e23516f add ficheuinter 2025-11-27 21:27:59 +01:00
Frédéric France
dc85a6756b add more 2025-11-27 20:55:45 +01:00
Frédéric FRANCE
9ffc224897 add project 2025-11-27 14:53:18 +01:00
Frédéric FRANCE
f757b08f97 add project 2025-11-27 14:50:14 +01:00
Frédéric FRANCE
889a716aee add modulepart for direct print capabilities 2025-11-27 12:49:00 +01:00
Laurent Destailleur
b17f37bc93 Debug v23 2025-11-27 10:47:50 +01:00
Frédéric FRANCE
57431464f5 fix warning in upgrade2.php 2025-11-27 09:30:31 +01:00
Laurent Destailleur
adae01854f Merge pull request #35552 from Easya-Solutions/develop_new_rework_webportal_lists
NEW : Rework of the webportal list for more flexibility and more templating
2025-11-27 01:33:34 +01:00
MDW
0333daa8a8 Qual: Update PHP-CS-Fixer configuration and DolibarrModules class
- Update PHP-CS-Fixer configuration to replace deprecated 'visibility_required' rule with 'modifier_keywords'
- Update DolibarrModules class to use const instead of public const for PHP 7.0 compatibility (revert recent change)
2025-11-27 01:08:46 +01:00
Laurent Destailleur
a6070c190d Merge branch 'develop' into develop_new_rework_webportal_lists 2025-11-27 00:57:48 +01:00
Laurent Destailleur
8bcf8d472a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-27 00:55:59 +01:00
Laurent Destailleur
cd98a3a6ca Fix CI 2025-11-27 00:55:30 +01:00
Laurent Destailleur
6fd4a59b55 Merge pull request #35586 from Easya-Solutions/develop_NEW_create_ticket_mail_linked_files
NEW : when creating a ticket with linked files, send files as mail attachment to notification emails.
2025-11-27 00:37:28 +01:00
Laurent Destailleur
ef331fea2d Merge branch 'develop' into develop_new_rework_webportal_lists 2025-11-27 00:36:18 +01:00
Laurent Destailleur
32a61447a1 Merge branch 'develop' into 23_accpicto2 2025-11-27 00:23:19 +01:00
Laurent Destailleur
8ebf973745 Merge pull request #36426 from frederic34/patch-8
weight and size of shippings are float
2025-11-27 00:23:00 +01:00
Laurent Destailleur
01a6c14350 Debug v23 2025-11-27 00:21:50 +01:00
Laurent Destailleur
ce01e1d95f Debug v23 2025-11-27 00:05:04 +01:00
Laurent Destailleur
02824e8012 Merge branch 'develop' into patch-8 2025-11-26 23:41:36 +01:00
Laurent Destailleur
81ac5bddf9 Fix phpunit 2025-11-26 23:37:10 +01:00
Laurent Destailleur
2dcdf773d0 Merge pull request #36400 from atm-jonathan/FIX/ADD_NOCRFCHECK_TO_PASSWORD_FORGOTTEN
Fix: Allow password reset link when CSRF protection is strict
2025-11-26 22:43:31 +01:00
Alexandre SPANGARO
2ee7b4be95 UX Accountancy - Ledger - Add icon for more comprehension 2025-11-26 22:36:23 +01:00
Laurent Destailleur
7071a3f5a9 Merge branch 'develop' into patch-8 2025-11-26 22:32:13 +01:00
Laurent Destailleur
b52c5a0ffa Fix CI 2025-11-26 22:31:51 +01:00
Laurent Destailleur
63cc9127ba Merge pull request #36434 from atm-lucasmantegari/FIX/ErrorFieldFilterInEvaluation
FIX - Missing AND on fields filter on evaluation class
2025-11-26 22:27:03 +01:00
Laurent Destailleur
84e9d0bbc5 Merge branch 'develop' into patch-8 2025-11-26 22:18:36 +01:00
Laurent Destailleur
07c486ef16 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 22:18:11 +01:00
Laurent Destailleur
ac7c98a180 Fix perms 2025-11-26 22:17:45 +01:00
Laurent Destailleur
097168cb05 Merge branch '21.0' into FIX/ErrorFieldFilterInEvaluation 2025-11-26 22:12:22 +01:00
Laurent Destailleur
f1971e1d14 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-26 22:11:31 +01:00
Laurent Destailleur
5103e2d846 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-26 22:11:31 +01:00
Laurent Destailleur
9e44c0a5c9 Fix CI 2025-11-26 22:11:09 +01:00
Laurent Destailleur
c046ddf813 Merge pull request #36425 from aspangaro/23_accpicto2
UX Accountancy - Ledger - Add icon for more comprehension
2025-11-26 22:05:44 +01:00
Laurent Destailleur
8d1320a604 Merge pull request #36424 from aspangaro/23_accpicto
UX Accountancy - Transaction - Add icon for more comprehension
2025-11-26 22:05:01 +01:00
Laurent Destailleur
945ac1aba0 Merge pull request #36423 from aspangaro/23_fixvalidation
FIX Accountancy - A validated transaction (blocked) can received new line
2025-11-26 22:04:24 +01:00
Laurent Destailleur
f3b467a9ba Merge branch '21.0' into FIX/ErrorFieldFilterInEvaluation 2025-11-26 22:03:40 +01:00
Laurent Destailleur
0c2ecb9eee Merge branch 'develop' into patch-8 2025-11-26 22:02:39 +01:00
Laurent Destailleur
0ac1fd39ef Fix CI 2025-11-26 22:00:55 +01:00
Laurent Destailleur
3f8f9752ae Merge branch 'develop' into patch-8 2025-11-26 21:50:00 +01:00
Laurent Destailleur
c295be762e Fix CI 2025-11-26 21:49:07 +01:00
Laurent Destailleur
6284de7c6a Merge branch 'develop' into patch-8 2025-11-26 21:36:07 +01:00
Laurent Destailleur
8c934a7560 Debug v23 2025-11-26 21:35:49 +01:00
Laurent Destailleur
4aa3306534 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 21:19:36 +01:00
Laurent Destailleur
cd01b3897e Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-26 21:18:26 +01:00
Laurent Destailleur
b85cd4c329 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-26 21:17:30 +01:00
Laurent Destailleur
6775fa611d Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-26 21:16:36 +01:00
Laurent Destailleur
17ff2bea5d Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-26 21:16:11 +01:00
Laurent Destailleur
1002557746 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-11-26 21:12:58 +01:00
Laurent Destailleur
6d4708914d Deug v23 2025-11-26 21:07:41 +01:00
Laurent Destailleur
5f437d983a Debug v23 2025-11-26 19:24:25 +01:00
Laurent Destailleur
b497016e63 Fix typo in filter name 2025-11-26 17:19:38 +01:00
Frédéric FRANCE
bca2fbdf3b Merge branch 'develop' into patch-8 2025-11-26 17:00:53 +01:00
Laurent Destailleur
c26e37cd9b Fix edit color 2025-11-26 16:59:10 +01:00
Laurent Destailleur
4bf2dde21d Merge pull request #36420 from frederic34/clean_code_trigger
clean code trigger
2025-11-26 16:48:12 +01:00
Laurent Destailleur
725cc837c8 Merge pull request #36414 from hregis/fix_dev_multicompany
FIX multicompany dictionary sharing
2025-11-26 16:47:43 +01:00
ATM-Lucas
4585facfcc Missing AND on fields filter on evaluation class 2025-11-26 16:47:32 +01:00
Laurent Destailleur
53337fb848 Fix type 2025-11-26 15:51:44 +01:00
Laurent Destailleur
908880c82c SEC: fix IDOR attack on employee evaluation. Missing permision test 7ed0af2a13
SEC: empty commit for CI automata
2025-11-26 15:41:53 +01:00
Laurent Destailleur
95c89b6b86 Trans 2025-11-26 15:13:06 +01:00
Laurent Destailleur
27f4fef048 Solve confusion between tag of project/user and thirdparty in project
list
2025-11-26 15:04:22 +01:00
atm-florian
3608e9b102 SEC: 7ed0af2a13 2025-11-26 14:44:38 +01:00
Laurent Destailleur
5ac31bb84e css 2025-11-26 14:39:48 +01:00
Laurent Destailleur
b78e8faeab Debug v23 2025-11-26 14:16:06 +01:00
Laurent Destailleur
4b5c4f13ca Debug v23 2025-11-26 13:47:14 +01:00
Laurent Destailleur
f0f2afd7a3 Fix action type for button action Email 2025-11-26 13:41:16 +01:00
Laurent Destailleur
1d4333a1ac Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 13:29:33 +01:00
Laurent Destailleur
5c9bf0221c Increase print counter 2025-11-26 13:29:23 +01:00
Laurent Destailleur
9349de974d Fix: missing the increase of pos_counter_print 2025-11-26 13:14:19 +01:00
Adrien Raze
c1c2358e75 FIX : Implementation of multi-company compatibility with inventory/warehouse management 2025-11-26 12:30:22 +01:00
Frédéric FRANCE
2430355039 Merge remote-tracking branch 'upstream/develop' into patch-8 2025-11-26 11:28:45 +01:00
Frédéric FRANCE
a342bd7672 fix 2025-11-26 11:22:03 +01:00
Frédéric FRANCE
9dee0f2fd6 fix 2025-11-26 11:13:32 +01:00
atm-jonathan
b2bb2fea1b Fix: use main.inc.php whitelist instead of defining NOCSRFCHECK locally 2025-11-26 11:11:56 +01:00
Laurent Destailleur
baa7e5c8c6 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 10:58:46 +01:00
Laurent Destailleur
77e681ce81 Debug v23 2025-11-26 10:58:27 +01:00
Frédéric FRANCE
5f8729b553 weight and size are float 2025-11-26 10:56:37 +01:00
Alexandre SPANGARO
96685bf37c Language 2025-11-26 08:28:30 +01:00
Alexandre SPANGARO
1c39885581 UX Accountancy - Ledger - Add icon for more comprehension 2025-11-26 08:27:51 +01:00
Alexandre SPANGARO
9247b1f02b Fix CI 2025-11-26 08:09:05 +01:00
Alexandre SPANGARO
e3fea5ac56 UX Accountancy - Transaction - Add icon for more comprehension 2025-11-26 08:07:16 +01:00
Frédéric FRANCE
cbb9244255 Merge branch 'develop' into clean_code_trigger 2025-11-26 07:51:35 +01:00
Alexandre SPANGARO
2e9db19bed Use $object 2025-11-26 06:46:30 +01:00
Alexandre SPANGARO
a54c233130 FIX Accountancy - A validated transaction (blocked) can received new line 2025-11-26 06:41:16 +01:00
Laurent Destailleur
cf2df65231 CI 2025-11-26 02:23:18 +01:00
Laurent Destailleur
b1a50ccef1 Merge branch 'develop' into clean_code_trigger 2025-11-26 02:18:40 +01:00
Laurent Destailleur
4ad432788f Merge branch 'develop' into fix_dev_multicompany 2025-11-26 02:18:29 +01:00
Laurent Destailleur
00024048ca Fix CI 2025-11-26 02:18:14 +01:00
Laurent Destailleur
d453d4d410 Merge branch 'develop' into clean_code_trigger 2025-11-26 02:09:04 +01:00
Laurent Destailleur
19e0d9ab51 Merge branch 'develop' into fix_dev_multicompany 2025-11-26 02:07:55 +01:00
Laurent Destailleur
41d103446a Rename file 2025-11-26 02:06:26 +01:00
Laurent Destailleur
809c889251 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 02:03:15 +01:00
Laurent Destailleur
63ba5a3938 Merge branch 'develop' into clean_code_trigger 2025-11-26 01:59:16 +01:00
Expresion
bab874a669 Fix: update buying price during receipt (#36419)
Fix bad SQL when batch product

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-26 01:57:17 +01:00
Laurent Destailleur
a3dadbf2c5 Merge branch 'develop' into fix_dev_multicompany 2025-11-26 01:56:02 +01:00
Laurent Destailleur
1d9313200d Fix CI 2025-11-26 01:55:38 +01:00
Aksanti Bahiga tacite
1432588fa9 FIX: Resolve JS error on country change in public member form (#36422) 2025-11-26 01:50:15 +01:00
Laurent Destailleur
c976a4baef Merge branch 'develop' into fix_dev_multicompany 2025-11-26 01:47:32 +01:00
Laurent Destailleur
08125548dd Merge branch 'develop' into clean_code_trigger 2025-11-26 01:46:12 +01:00
Laurent Destailleur
ed8fc3ab30 Fix CI 2025-11-26 01:45:45 +01:00
Laurent Destailleur
0d4ec110dc Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-26 01:44:57 +01:00
Laurent Destailleur
e486d22b61 Fix CI 2025-11-26 01:43:23 +01:00
Laurent Destailleur
54cba89bc5 Fix CI 2025-11-26 01:40:45 +01:00
Laurent Destailleur
0027e0c126 Fix CI 2025-11-26 01:35:10 +01:00
Laurent Destailleur
c6d882b484 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 23:35:32 +01:00
Laurent Destailleur
10b546db1c Fix warning 2025-11-25 23:35:15 +01:00
Laurent Destailleur
fb4d1c0ecc Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:13:31 +01:00
Laurent Destailleur
bd5884a874 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:13:24 +01:00
Laurent Destailleur
749586792b Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-25 21:13:01 +01:00
Laurent Destailleur
3890968fbc Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-25 21:12:38 +01:00
Laurent Destailleur
b01bbd5c8f Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-25 21:09:55 +01:00
Laurent Destailleur
69ac8cebbf Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-25 21:09:26 +01:00
Laurent Destailleur
1e16bf5160 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-11-25 21:09:04 +01:00
Frédéric France
9f03147a38 Merge remote-tracking branch 'upstream/develop' into clean_code_trigger 2025-11-25 21:06:36 +01:00
Frédéric France
1da3e19bc2 clean code trigger 2025-11-25 21:05:16 +01:00
Laurent Destailleur
332efe2434 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:04:55 +01:00
Laurent Destailleur
cb221fa2b8 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:04:24 +01:00
Laurent Destailleur
5e67e15e1b Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-25 21:04:09 +01:00
Laurent Destailleur
427122ce7c Fix merge 2025-11-25 21:03:52 +01:00
Laurent Destailleur
9abb1b7211 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:03:02 +01:00
Laurent Destailleur
1b9dcf200a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 21:00:30 +01:00
Laurent Destailleur
955bf9db10 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-25 21:00:16 +01:00
Laurent Destailleur
8354d0a361 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-25 20:57:53 +01:00
Laurent Destailleur
adbcf9b2d8 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-25 20:57:32 +01:00
Laurent Destailleur
e920456149 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-25 20:57:22 +01:00
Laurent Destailleur
c77220da52 Doc 2025-11-25 20:42:28 +01:00
Laurent Destailleur
3218e19091 Debug v23 2025-11-25 19:51:09 +01:00
Laurent Destailleur
6d42410dac Debug v23 2025-11-25 19:39:21 +01:00
Jon Bendtsen
5a5764d73c remove whitespace 2025-11-25 19:28:34 +01:00
Regis Houssin
e4070aeb97 FIX avoid php warnings (or not ?) (#36411)
* FIX avoid php warnings (or not ?)

* FIX wrong check
2025-11-25 18:52:45 +01:00
Laurent Destailleur
e9a8a4efca Update security.lib.php 2025-11-25 18:50:47 +01:00
Jon Bendtsen
3f90e51792 fix too many parentasies 2025-11-25 18:50:47 +01:00
Jon Bendtsen
966a69bab0 Qual: DENY access to Thirdparty when module is enabled, but no permissions at all 2025-11-25 18:50:47 +01:00
Laurent Destailleur
9b0fd0ec5c Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 18:30:42 +01:00
Laurent Destailleur
c5c0b85498 Debug v23 2025-11-25 18:18:02 +01:00
Jon Bendtsen
5044b3a102 Qual: Undefined variable $errormessage in /var/www/html/core/customreports.php on line 951 (#36392)
* checking if variable is set before testing the contents

* more PHP warnings fixes detected during #35096

* using the fixed set above

* backport eldy's fix

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-25 17:40:07 +01:00
Regis Houssin
8621eb21fa FIX multicompany dictionary sharing 2025-11-25 14:58:33 +01:00
Regis Houssin
1e484dda55 NEW webportal member authentication only with WEBPORTAL_LOGIN_BY_MEMBER_ACCOUNT (#36259)
* NEW webportal member authentication only

* FIX missing translation

* FIX php-stan errors

* FIX php-stan : cryptType is always "auto" !

* FIX remove CrypType

* FIX php-stan error

* FIX phan error

* FIX CI versions

* FIX remove wrong fix

* FIX pre-commit error

* FIX phan error

* FIX php-stan error

* FIX avoid php warning

* FIXME this check is not valid
2025-11-25 14:39:30 +01:00
Jon Bendtsen
280ca20600 more API endpoints checks multicompany auth with the same error message (#36409)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-25 14:32:28 +01:00
Charlène Benke
712da5b172 NEW : api setup - Add dictionnary holiday lists (#36402)
* Add methods to retrieve holiday and public holiday lists

* Fix SQL query formatting in api_setup.class.php

* Add user permission checks for API access

Added permission checks for user access rights before fetching data for expense reports, holidays, and HR public holidays.
2025-11-25 14:21:58 +01:00
Alexandre SPANGARO
d9b8abe3e4 FIX #36310 Accountancy - Data - Wrong account labels (cache) on write bookkeeping action (#36410)
* FIX #36310 Accountancy - Data - Wrong account labels (cache) on writebookkeeping action (#36379)

* Fix
2025-11-25 14:20:05 +01:00
Florian Mortgat
7f27552a95 FIX: empty origin type passed to addline when creating invoices from expeditions using massaction (confirm_createbills) (#36413) 2025-11-25 14:18:12 +01:00
Jakub Stříbrný
244b6f0473 FIX do not force rowid to int (#36412)
* do not force rowid to int

* Update commonobject.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-25 14:16:13 +01:00
Jakub Stříbrný
d24b8b6221 FIX do not force rowid to int (#36412)
* do not force rowid to int

* Update commonobject.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-25 14:15:36 +01:00
Jakub Stříbrný
5377df3ba7 FIX do not force rowid to int (#36412)
* do not force rowid to int

* Update commonobject.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-25 14:14:58 +01:00
Laurent Destailleur
b739a69741 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-25 12:17:05 +01:00
Laurent Destailleur
2580d0dd7f Fix missing email 2025-11-25 12:16:55 +01:00
Laurent Destailleur
2fb94f3d18 Doc 2025-11-24 20:14:20 +01:00
Jon Bendtsen
a40c97ec9c NEW: API set contact for any type in proposal, order or invoice dictionary (breaks API proposal) (#36269)
* NEW: Setting proposal contact to any in proposal contact dicitonary

* hurl tests and a little general cleanup of proposals api

* testing if the supplied type is in the dictionary

* Unique error codes

* Giving better error messages

* Making hurl tests reasonably identical for: proposals, orders and invoices

* BREAKING proposals, to make it identical with order and invoice + support for non default contacts for orders and invoices just like proposals

* adding the missing global  to order and invoice

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-24 20:12:35 +01:00
Jyhere
0ad7e52119 FIX : load_stats_commande() commande sql join (#36403) 2025-11-24 20:04:44 +01:00
Charlène Benke
3ddbcf8d9e Continue Implement new title line addition for subtotals on interventional (#36376)
* Implement new title line addition for subtotals

Added functionality to handle adding a new title line for the subtotals module, including input processing and document generation.

* Add parameters to addline method in fichinter class

* Add special_code to fichinterligne class

* Update copyright notices in commonsubtotal.class.php

Added copyright notice for Charlene Benke for 2025.

* Remove extra blank line in fichinterligne.class.php

* Change special_code to be an integer in SQL query

* Refactor intervention detail display logic

Refactor code for better readability and maintainability by removing duplicate lines and organizing the logic for displaying intervention details.

* Decode extraparams to get subtotal options

* Change default value of special_code to 0
2025-11-24 19:47:07 +01:00
Frédéric FRANCE
d2ed8fed4f can specify user timezone if no session (#36344)
* can specify user timezone if no session

* Update functions.lib.php

* Update functions.lib.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-24 19:43:48 +01:00
Alexandre SPANGARO
07f49f2a35 FIX #36310 Accountancy - Data - Wrong account labels (cache) on writebookkeeping action (#36379) 2025-11-24 19:36:00 +01:00
Evann DREUMONT
b6862f5f59 Add REST API support for listing template invoices (#36397) 2025-11-24 19:19:39 +01:00
Laurent Destailleur
71dc6dc1db Fix #35096 #36393 2025-11-24 19:18:31 +01:00
Regis Houssin
7d403a2fff FIX getEntity use element instead table_element (#36405) 2025-11-24 19:15:04 +01:00
Laurent Destailleur
85b03e227d Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-24 19:13:58 +01:00
Laurent Destailleur
ca80d82248 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-24 19:13:37 +01:00
Laurent Destailleur
ca1a9c9155 Complete #35096 #36393 2025-11-24 19:13:13 +01:00
Laurent Destailleur
111ba82936 Debug v23 2025-11-24 18:58:50 +01:00
Laurent Destailleur
e707544cca Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-24 18:26:03 +01:00
Laurent Destailleur
79b2056d39 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-24 18:25:41 +01:00
Laurent Destailleur
112028aa7e FIX #35096 #36393 Add minimal fields required asthe class is used by
custom reports
2025-11-24 18:24:15 +01:00
Alexandre SPANGARO
8181e2d3e2 FIX - Accountancy - In each transaction, it's possible to modify informations (Journal, date, ref) on transaction who are validated (blocked) (#36377) 2025-11-24 17:37:00 +01:00
Florian Mortgat
c2635f5242 FIX 17.0: perweek.php resets task progress to 0% when: (#36401)
* FIX 17.0: perweek.php resets task progress to 0% when:
1. the column "Declared real progress" is hidden (which means the corresponding form inputs won't be displayed)
2. and the user doesn't enter any time for that task (= leaves the input empty)

If the column is shown, the bug doesn't occur because the correct value is sent with $_POST.
If the user enters time, the bug doesn't occur because there is a GETPOSTISSET test for that case.

* Apply suggestion from @atm-florianm

variable name ($taskid vs $tmptaskid)
2025-11-24 16:32:27 +01:00
Laurent Destailleur
b61ff7d17a Devug v23 2025-11-24 16:29:21 +01:00
Laurent Destailleur
0c8581f80d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-24 16:23:07 +01:00
Laurent Destailleur
c096fd29e4 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-24 16:18:01 +01:00
Laurent Destailleur
d5a438ff00 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-24 16:17:38 +01:00
Laurent Destailleur
b9e6243ec8 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-24 16:16:00 +01:00
Laurent Destailleur
9394f24cf7 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-24 16:15:26 +01:00
Laurent Destailleur
b1a4520059 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-11-24 16:10:29 +01:00
Laurent Destailleur
2935a245a3 Merge branch '16.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-11-24 16:07:46 +01:00
Laurent Destailleur
5589ed71b2 Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into 16.0 2025-11-24 16:07:22 +01:00
Laurent Destailleur
32f160355b Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2025-11-24 16:03:52 +01:00
Regis Houssin
0aa6652005 FIX #35141 (#36390)
* FIX #35141

* FIX avoid problem with chinese language
2025-11-24 16:03:38 +01:00
Laurent Destailleur
bfa695e7c5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-24 15:52:13 +01:00
Laurent Destailleur
6894ba851b Removed deprecated comment 2025-11-24 15:52:02 +01:00
Alexandre SPANGARO
236d45547b FIX Invoice - Problem with deposit line on Type of operation (#36378) 2025-11-24 15:08:01 +01:00
Charlène Benke
aae74dac7f fix subtotal column number displayed if margin enabled (#36383) 2025-11-24 15:07:07 +01:00
x
b4b202cb18 add nocrfcheck 2025-11-24 15:06:34 +01:00
Jon Bendtsen
ff44d3ce3c fixing hurl test for api users (#36380)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-24 15:06:17 +01:00
MDW
4f5c32973f Qual: Improve type hints and cache arrays in html.form.class.php (#36384)
* Qual: Improve type hints and cache arrays in html.form.class.php

- Added detailed type hints for cache arrays
- Fixed a typo in the comment for the 'num' property
- Ensured consistent type casting for integer values in cache arrays

(fixes phpstan notices)

* Qual: Add type casting in donation modules

Following cache type improvement:
- Added type casting in donation modules
2025-11-24 15:05:55 +01:00
MDW
9db4c30918 Qual: Add automatic_activation property (DolibarrModules) (#36386)
* Qual: Add automatic_activation property (DolibarrModules)

- Add `automatic_activation` property to store country-specific activation reasons
- Add public to class constants (PSR-2/php-cs-fixer)

* Qual: Simplify $module_activation test in admin.lib.php

The test for $module_activation has been simplified after declaring the property in DolibarrModules.
2025-11-24 15:05:05 +01:00
MDW
287ee92cb7 Qual: Fix nullable value by cast (for phan) (#36381)
# Qual: Fix nullable value by cast (for phan)

The update method now explicitly casts the eatby and sellby fields to integers before passing them to the idate function.

Otherwise phan considers the arguments as nullable (as it can not determine the impact of dol_strlen).
2025-11-24 15:00:15 +01:00
Charlène Benke
ee261b5a66 Adjust checkbox input style in subtotal_edit.tpl.php (#36387) 2025-11-24 14:59:34 +01:00
Florian Mortgat
5a61cc9393 FIX DA027383: permissions not checked on HRM evaluation card (#36328) (#36399)
Permissions involved:
- hrm->evaluation->readall: the user can view anyone's evaluations
- hrm->evaluation->read: the user can only view their or their subordinates' evaluations
2025-11-24 14:57:20 +01:00
dependabot[bot]
a2814f3d62 Bump actions/checkout from 5 to 6 (#36394)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [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/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  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-11-24 14:55:54 +01:00
Laurent Destailleur
e465d748f3 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-24 13:00:49 +01:00
Laurent Destailleur
0870e00503 Debug v23 2025-11-24 13:00:38 +01:00
Florian Mortgat
7ed0af2a13 FIX DA027383: permissions not checked on HRM evaluation card (#36328)
Permissions involved:
- hrm->evaluation->readall: the user can view anyone's evaluations
- hrm->evaluation->read: the user can only view their or their subordinates' evaluations
2025-11-24 12:21:51 +01:00
VESSILLER
1cd3ca3222 FIX undefined variables on create invoice from shipment card (backport from v20) 2025-11-24 10:30:08 +01:00
Laurent Destailleur
2734f0a032 CSS 2025-11-24 09:50:31 +01:00
Laurent Destailleur
6199c5f31e CSS 2025-11-24 09:47:37 +01:00
Laurent Destailleur
1b9f546dce Debug v23 2025-11-24 01:46:27 +01:00
Laurent Destailleur
83f9d2cab7 Debug v23 2025-11-23 22:43:19 +01:00
Laurent Destailleur
70b264715f Debug v23 2025-11-23 22:31:07 +01:00
Laurent Destailleur
7af079a87f Debug v23 2025-11-23 22:18:12 +01:00
Laurent Destailleur
8a2faed41f Debug v23 2025-11-23 22:14:34 +01:00
Laurent Destailleur
9f73e65767 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-23 21:29:58 +01:00
Laurent Destailleur
c8e12d9cb9 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-23 21:29:44 +01:00
Laurent Destailleur
fffb21b741 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-23 21:10:52 +01:00
Laurent Destailleur
3ced7b6de7 CSS 2025-11-23 21:10:40 +01:00
John BOTELLA
7494d8c2d1 UIUX : Experiment Dolibarr JS context and tools - Add tool for langs (#36389)
* Add more doc and simplify hook systeme uasge

* doc

* doc

* lang tool

* lang tool

* lang tool
2025-11-23 19:11:46 +01:00
Laurent Destailleur
e35028646e Debug v23 2025-11-23 16:33:38 +01:00
Laurent Destailleur
3ab0d148b5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-23 16:16:27 +01:00
Laurent Destailleur
53e926371b Debug v23 2025-11-23 16:15:59 +01:00
Laurent Destailleur
b00baadb79 Start beta 2025-11-23 12:27:26 +01:00
iLLixM
852f9eeb77 FIX #36368 - avoid overlaying of EPC-QR Code and payment information (#36369)
* FIX #36368 - avoid overlaying of EPC-QR Code and payment information

The position of an EPC-QR code on an invoice is adjusted based on information about payments already made.
The EPC-QR code is only displayed on invoices if a balance remains due.

* FIX #36368 - avoid overlaying of EPC-QR Code and payment information

place EPC-QR Code on left-hand side of invoice PDF

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-23 03:44:55 +01:00
Laurent Destailleur
f96905c1f0 Fix CI 2025-11-23 03:19:11 +01:00
Laurent Destailleur
6904df8a45 Fix CI 2025-11-23 03:05:28 +01:00
Jon Bendtsen
78f90982c4 Fix: API users/groups + fix hurl tests for those (#36337)
* Fix: API users/groups + fix hurl tests for those

* we only check for the login during user creation

* restoring test/hurl/api/users/10_users.hurl from develop branch

* changing error code to 500

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-23 01:59:02 +01:00
John BOTELLA
c0c1c45680 UIUX : Experiment Dolibarr JS context and tools - More doc and simplify hook usage systeme (#36373)
* Add more doc and simplify hook systeme uasge

* doc

* doc
2025-11-23 01:54:37 +01:00
Charlène Benke
0ed2d559f8 Update directory references for product batch (#36367) 2025-11-23 01:53:51 +01:00
MDW
63a78d8c00 Qual: Add perltidy & perlcritic + updates to fix notices. (#36370)
* Qual: Add pre-commit hooks for Perl code formatting and linting

- Added perltidy hook to format Perl code
- Added perlcritic hook to lint Perl code

* Qual: Update file opening syntax in build scripts (perltidy)

The changes update the syntax for opening files in several build scripts to use the three-argument form of the `open` function, which is more secure and recommended in modern Perl practices.

* Qual: Improve file handling and add strict/warnings pragmas (perlcritic)

The changes include:
- Adding 'use strict' and 'use warnings' pragmas to enforce better coding practices
- Improving file handling by using lexical filehandles (my $IN, my $SPECFROM, etc.)
- Fixing file opening and closing operations to use proper error handling
- Updating various file operations to use the new lexical filehandles
- Fixing indentation and formatting issues in the code

* Qual: Add strict and warnings pragmas to Perl scripts (perlcritic)

The changes add 'use strict;' and 'use warnings;' pragmas
- dev/build/doxygen/dolibarr-doxygen-build.pl
- dev/build/doxygen/dolibarr-doxygen-filter.pl
- dev/build/doxygen/dolibarr-doxygen-getversion.pl
- dev/build/gource/getavatars.pl
- dev/tools/dolibarr-mysql2pgsql.pl

* Qual: Add Perl no critic pragmas (perlcritic)

- Ignore some perlcritic notices

* Qual: Improve code formatting and readability

Perltidy:

- Indentation and spacing
- Improved variable naming and alignment
- Better code organization and structure
- Enhanced readability of conditional statements and loops

These changes do not alter the functionality of the script but make it more maintainable and easier to understand.

* qual: Exclude virtualmin from perltidy and perlcritic hooks

Exclude the virtualmin directory from both perltidy and perlcritic hooks due to specific reasons mentioned in the comment. This change ensures that these hooks do not process files in the virtualmin directory.

* Qual: Add installation of perltidy and perlcritic for pre-commit workflow

This commit adds the installation of perltidy and perlcritic as part of the pre-commit hooks workflow.

* Fix: Update version detection in dolibarr-doxygen-build.pl

- Add support for detecting version from DOL_MAJOR_VERSION and DOL_MINOR_VERSION constants
- Fix undefined variable issue in version detection

* Fix: Update getavatars.pl to use HTTPS and reverse git log

- Changed the URL from HTTP to HTTPS for Gravatar
- Added `--reverse` flag to git log command to process commits in chronological order (faster)
- Updated error message to indicate .git repository instead of .git directory (+ correct test)

* fix: Correct spelling in error messages and prompts

- Fixed typo in error message for missing environment variables
- Corrected spelling in prompt for module name input
- Improved clarity in comment for target checking
2025-11-23 01:52:07 +01:00
Laurent Destailleur
8facedc1b6 Fix CI 2025-11-23 01:47:00 +01:00
Laurent Destailleur
3a40fe5d79 Fix CI 2025-11-23 01:36:54 +01:00
Laurent Destailleur
aaa5e7aeb2 Fix CI 2025-11-23 01:30:40 +01:00
Laurent Destailleur
6a23983969 Fix warning 2025-11-23 01:06:58 +01:00
Laurent Destailleur
0f6b9f5841 Fix CI 2025-11-23 01:03:54 +01:00
Jon Bendtsen
54134eb0fa Hurl checks update Friday November 21st 2025 (#36366)
* Hurl checks update Friday November 21st 2025

* Looks like someone changed how to handle the multi entity tests that I used earlier

* updating warehouse check

* same update for users api

* and for group api

* fix GUI admin/mails_template.php checks

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-22 19:49:58 +01:00
MDW
b57495f745 Qual: Update phan baseline (#36362)
* Qual: Update Phan baseline

# Qual: Update Phan baseline

- Updated Phan baseline to reflect reduced occurrences of PhanTypeMismatchProperty and PhanUndeclaredMethod
- Fixed syntax error in card.php by adding missing closing parenthesis

* Qual: Fix PhanPluginRedundantReturnComment

# Qual: Fix PhanPluginRedundantReturnComment

- Add return type description for the getmsg method.
2025-11-22 19:49:22 +01:00
Regis Houssin
9ac7851073 QUAL update dolibarr script for Virtualmin (#36371) 2025-11-22 19:48:37 +01:00
Jon Bendtsen
8cf937e82f Qual: detect malformed DOLAPIKEY when run.sh hurl tests (#36372)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-22 19:48:02 +01:00
github-actions[bot]
853c7a2c8d PHPStan > Update baseline (#36374)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-11-22 19:47:22 +01:00
Laurent Destailleur
aac48b7f01 Close TODO 2025-11-22 16:51:45 +01:00
Laurent Destailleur
89d8b553c1 Debug v23 2025-11-22 16:23:07 +01:00
Laurent Destailleur
d571285a37 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-21 19:14:00 +01:00
Laurent Destailleur
f170d926f6 Debug v23 2025-11-21 19:12:22 +01:00
Laurent Destailleur
424484a4c3 Debug v23 2025-11-21 19:11:32 +01:00
Jacobus Gerards
8a7bfd737d Update llx_accounting_account_nl.sql (#36361)
Fix a typo in account sql for nl (otherwise this will produce a foreign key constraint error when loading the schema)

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-21 18:53:32 +01:00
John BOTELLA
7415ae1597 UIUX : Experiment Dolibarr JS context and tools - Add context variables and improve documentation. (#36360)
* Add context variables and improve documentation.

* fix hook execution and add sequential await hook

* fix hook execution and add sequential await hook

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-21 18:35:01 +01:00
iLLixM
0e8d4461c4 Fix: Prevent negative payment amount in EPC-QR Code (#36364) 2025-11-21 18:34:24 +01:00
Frédéric FRANCE
561d4deb06 clean code (#36363)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-21 18:34:09 +01:00
Frédéric FRANCE
9d4260c858 fix Ci (#36354)
* fix Ci

* Update html.form.class.php

* fix

* remove duplicate
2025-11-21 17:26:29 +01:00
Laurent Destailleur
70b3ca43da Debug v23 2025-11-21 16:17:28 +01:00
Laurent Destailleur
bb26ca6ee7 Fix makepack 2025-11-21 15:19:49 +01:00
Laurent Destailleur
b8190e137e Merge branch '22.0' of github.com:Dolibarr/dolibarr into develop 2025-11-21 15:18:08 +01:00
Laurent Destailleur
0e4bfeead7 Fix CI 2025-11-21 14:41:31 +01:00
Laurent Destailleur
1d6f8d5cbd Debug v23 2025-11-21 14:40:33 +01:00
Laurent Destailleur
705211a5f4 Doc 2025-11-21 14:35:04 +01:00
Laurent Destailleur
3e612275e8 Clean code 2025-11-21 14:25:34 +01:00
Laurent Destailleur
99d44d9cf8 spellcheck war 2025-11-21 12:38:53 +01:00
Regis Houssin
0e1ac03fb0 FIX #36347 (#36358) 2025-11-21 11:15:34 +01:00
Laurent Destailleur
7b351e1df8 Fix CI 2025-11-21 01:29:45 +01:00
Laurent Destailleur
99b656c3c2 Fix CI 2025-11-21 01:19:14 +01:00
Laurent Destailleur
839759979a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-21 01:15:04 +01:00
Laurent Destailleur
f68f7c3da8 Debug v23 2025-11-21 01:02:48 +01:00
Laurent Destailleur
6e6253f40d Close #36120 2025-11-21 00:16:06 +01:00
Laurent Destailleur
6dcaede8fc Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-21 00:07:49 +01:00
Laurent Destailleur
bbc100b6d3 Close #36120 2025-11-21 00:07:31 +01:00
Eric - CAP-REL
c8acd48e34 setErrors does not exists, same solution as dolibarr v19.0 (#36107)
* setErrors does not exists, same solution as dolibarr v19.0

* reload ci

* reload ci 2

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
Co-authored-by: lvessiller-opendsi <lvessiller@open-dsi.fr>
2025-11-20 23:58:15 +01:00
Jakub Stříbrný
20cf710caf NEW Add country ID resolution from country code for thirdparty api (#36345)
* NEW Add country ID resolution from country code

NEW Add country ID resolution from country code

* NEW add extrafield support when creating thirdparty via API

NEW add extrafield support when creating thirdparty via API

* Update api_thirdparties.class.php

* remove whitespace at end of line

* remove whitespaces

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 23:56:03 +01:00
John BOTELLA
243e38ba46 UIUX : Experiment Dolibarr JS context and tools - SetEventMessage Tool (#36351)
* Add new experioement tool for dolibarr context

* Add new experioement tool for dolibarr context

* fix comment

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 23:55:23 +01:00
Jakub Stříbrný
72646a4261 NEW add hook when printing new card button on thirdparty list (#36350)
to be able to use canvas on thirdparty creation

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 23:54:25 +01:00
tcesar
1875d07bb2 New Adding the possibility to import the extrafields of warehouse (#36349)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 23:52:31 +01:00
Laurent Destailleur
09da2b2365 Merge manually to close #34719. Need to add API_IN_TOKEN_TABLE=1 for the
transition to use several API tokens per user.
2025-11-20 23:51:37 +01:00
Laurent Destailleur
74eb89869e Fix globalvar 2025-11-20 22:28:38 +01:00
Laurent Destailleur
106cc684d8 Merge branch 'YannisHoareau-new-api-rest-tokens' into develop 2025-11-20 21:44:07 +01:00
Laurent Destailleur
b77e3a4cca Merge branch 'develop' into new-api-rest-tokens 2025-11-20 21:31:20 +01:00
Laurent Destailleur
d07581555a Fix travis 2025-11-20 21:13:14 +01:00
Laurent Destailleur
cf3b3f5e94 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 21:01:37 +01:00
Laurent Destailleur
3ea601d4c2 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-20 21:00:12 +01:00
Laurent Destailleur
bf7be58e10 Fix CI 2025-11-20 20:59:37 +01:00
Laurent Destailleur
ae3260eb0b Fix CI 2025-11-20 20:55:10 +01:00
Laurent Destailleur
342ff228d1 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 20:49:44 +01:00
Laurent Destailleur
f4798ee87f Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-20 20:48:14 +01:00
Laurent Destailleur
9997e8ea44 Fix CI 2025-11-20 20:41:20 +01:00
Laurent Destailleur
e43d252b91 Fix CI 2025-11-20 20:35:11 +01:00
Laurent Destailleur
c27f85d405 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-20 20:32:53 +01:00
Laurent Destailleur
1c6cc1a554 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-20 20:32:40 +01:00
Laurent Destailleur
fbe30ebfc3 Fix CI 2025-11-20 20:30:44 +01:00
Laurent Destailleur
99efd1acec Fix CI 2025-11-20 20:29:45 +01:00
Laurent Destailleur
934536a1e1 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-20 20:28:30 +01:00
Laurent Destailleur
734ef58a2a Fix CI 2025-11-20 20:27:43 +01:00
Laurent Destailleur
ae4522c152 Fix CI 2025-11-20 20:14:52 +01:00
Josep Lluís
3f58b064c6 Update redirect location for single record found (#36352)
Update redirect location for single record found in v22. In develop version is resolved
2025-11-20 19:53:59 +01:00
Laurent Destailleur
13bcab94c5 Debug v23 2025-11-20 19:53:05 +01:00
Laurent Destailleur
a94ab3874d Close #35819 by using a new function dol_clone_in_array() 2025-11-20 19:40:57 +01:00
Laurent Destailleur
141fa57511 Debug v23 2025-11-20 17:05:34 +01:00
Laurent Destailleur
18c30daf11 Debug v23 2025-11-20 17:04:53 +01:00
Laurent Destailleur
211f215a8f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 16:46:08 +01:00
Laurent Destailleur
bb8953edaa Show message only if required 2025-11-20 16:45:58 +01:00
Laurent Destailleur
5328433f0d Debug v23 2025-11-20 16:38:56 +01:00
Frédéric FRANCE
a43e7ae58c clean phpdoc (#36342)
* clean phpdoc

* Update actioncomm.class.php
2025-11-20 16:24:38 +01:00
Laurent Destailleur
c94b977000 Fix CI 2025-11-20 16:23:47 +01:00
Laurent Destailleur
52ae79095f Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 16:20:25 +01:00
Laurent Destailleur
41526eaabd Fix CI 2025-11-20 16:20:07 +01:00
Laurent Destailleur
0648af5e11 Fix CI 2025-11-20 16:19:06 +01:00
Charlène Benke
7d3dedbfc4 Continue to integrate subtotals on fichinter (#36325)
* add CommonSubtotal usage on fichinter class

* Add 'fichinter' to element check in subtotal_create

* Implement subtotal line addition in card.php

Added functionality to handle subtotal lines in the card.

* Update card.php

* Update permission checks for intervention module

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 16:13:56 +01:00
Laurent Destailleur
9e5043bed6 Restore view in one page without scrolling. TODO Must migrate this page
with modulebuilder.
2025-11-20 16:12:57 +01:00
Laurent Destailleur
1caeaa9827 Debug v23 2025-11-20 15:37:00 +01:00
ldestailleur
9e8460c3dc Fix CI 2025-11-20 15:17:01 +01:00
ldestailleur
70f5e20572 Fix CI 2025-11-20 15:16:04 +01:00
Laurent Destailleur
3a617ed772 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-20 15:14:27 +01:00
Laurent Destailleur
f32386208d Fix CI 2025-11-20 15:14:09 +01:00
Laurent Destailleur
1adf4ce67f Fix CI 2025-11-20 15:13:52 +01:00
Laurent Destailleur
900646a848 CSS 2025-11-20 15:05:13 +01:00
Laurent Destailleur
2e52ef2552 Doc 2025-11-20 14:00:18 +01:00
Laurent Destailleur
ce6dc7edce Doc 2025-11-20 13:59:36 +01:00
Laurent Destailleur
288283bf36 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-20 13:59:03 +01:00
Laurent Destailleur
d9e1973edb Update blockedlog 2025-11-20 13:55:48 +01:00
Regis Houssin
f1bad6fa69 QUAL update mysql workbench (#35955)
* QUAL update mysql workbench

* NEW add link to mac api rest client for test

* FIX add apple

* FIX Mister D

* FIX Brian is in the kitchen

* FIX modeste

* Revert "FIX modeste"

This reverts commit a268f6265f.

* FIX youhou
2025-11-20 12:01:41 +01:00
Laurent Destailleur
0bfd72a995 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 12:00:49 +01:00
Laurent Destailleur
10c0de4467 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-20 11:55:18 +01:00
Laurent Destailleur
ae131796d6 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-20 11:51:51 +01:00
Laurent Destailleur
ecda16a5f6 Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-20 11:48:23 +01:00
Laurent Destailleur
515a615915 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-20 11:44:40 +01:00
noec764
ac4820b4cb FIX: TakePOS Missing Thirdparty Id when getting more products (#36341)
Co-authored-by: Noé <noe@scopen.fr>
2025-11-20 11:34:06 +01:00
Laurent Destailleur
cc52434fa3 Clean code 2025-11-20 11:33:26 +01:00
Laurent Destailleur
3fe6795b15 Clean code 2025-11-20 11:28:00 +01:00
Laurent Destailleur
a8ed7e50f4 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-20 11:20:10 +01:00
Laurent Destailleur
cef8905f02 Clean code 2025-11-20 11:19:49 +01:00
Alain Cis
01dcb2c4aa [NEW] Add regions for CONGO, THE DEMOCRATIC REPUBLIC OF THE;CD (#36340) 2025-11-20 11:14:35 +01:00
Jakub Stříbrný
6c842a1219 NEW Allow creating contact via api with ISO code (#36322)
* Allow creating contact via api with ISO code

Add handling for country code to country ID mapping for api.

* use dol_getIdFromCode

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 11:03:08 +01:00
MDW
2d7d492bea New: Add quiet mode to hurl test runner (#36339)
- Added `--quiet` or `-q` option to disable informational output
- Updated help message to include the new option
- Modified print functions to respect quiet mode
2025-11-20 11:01:14 +01:00
tcesar
b485556c3a FIX Concat of PDF to invoices (#36329)
* Fix Concat of PDF to invoices

* Fix Concat of PDF to invoices

* Fix Concat of PDF to invoices

---------

Co-authored-by: tcesar <tcesar@albalogic.fr>
2025-11-20 11:00:04 +01:00
tcesar
7b08aab461 FIX Concat of PDF to invoices (#36329)
* Fix Concat of PDF to invoices

* Fix Concat of PDF to invoices

* Fix Concat of PDF to invoices

---------

Co-authored-by: tcesar <tcesar@albalogic.fr>
2025-11-20 10:56:08 +01:00
Eric Seigne
f9d285c416 Merge branch '18.0' of https://github.com/Dolibarr/dolibarr into 18.0 2025-11-20 10:09:57 +01:00
Eric Seigne
f1f7ea93b0 fix assign-and-label-v18 2025-11-20 10:09:29 +01:00
lvessiller-opendsi
1f6cec841f Merge pull request #35795 from hregis/fix_18_multicompany_compatibility
FIX Multicompany compatibility with "project_task"
2025-11-20 10:03:38 +01:00
lvessiller-opendsi
4dcbd826e6 Merge pull request #35812 from Easya-Solutions/18__fix_situation_remove_from_cycle
FIX remove situation invoice from cycle
2025-11-20 10:03:02 +01:00
Eric Seigne
fd5c9b0562 update github actions for race conditions of author/reviewer 2025-11-20 09:46:59 +01:00
iLLixM
8d038f32bc FIX #33148 - partial payments are taken into account in EPC QR codes (#36338)
When generating EPC QR codes on an invoice, any partial payments already made are taken into account. The remaining balance (the value of "Remaining unpaid") is then entered as the amount in the EPC QR code.
2025-11-20 01:49:24 +01:00
Frédéric FRANCE
46d6714fe0 clean code (#36317)
* clean code

* clean code

* clean doc

* clean doc

* clean doc

* clean doc

* fix

* fix

* fix

* fix

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-20 01:47:46 +01:00
Jon Bendtsen
111dce3854 Qual: fix 2 hurl tests: Contract and Emailtemplates (#36332)
* remove hurl test that requires a contract to exist

* change emailtemplates hurl tests to work when there is debug information in the API response

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-20 01:46:55 +01:00
iLLixM
346828071f FIX #36334 - reload invoice data before pdf-creation in process of generating a new member contribution (#36335) 2025-11-20 01:46:11 +01:00
Jon Bendtsen
ff2d9e987a Qual/Fix: remove entity=2 hurl test which doesn't work (#36336)
JonSweet16:hurl jonbendtsen$ ./run.sh module

----- Run hurl test on APIs ---
::notice::1. Running tests (API,GUI,public) that do not require authentication
::notice::Using existing DOLAPIKEY.
::notice::2.a. Running API tests that do require authentication
Success api/setup/10_setup_modules.hurl (13 request(s) in 2547 ms)
--------------------------------------------------------------------------------
Executed files:    1
Executed requests: 13 (5.1/s)
Succeeded files:   1 (100.0%)
Failed files:      0 (0.0%)
Duration:          2548 ms

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-20 01:45:09 +01:00
Jon Bendtsen
d9814738e1 Qual: Fix broken hurl test for project GUI (#36333)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-20 01:44:27 +01:00
Laurent Destailleur
c3f4f02f63 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-19 21:46:00 +01:00
Laurent Destailleur
88f184bcb0 Trans 2025-11-19 21:44:34 +01:00
Laurent Destailleur
71fd5f2f62 Merge branch 'develop' into new-api-rest-tokens 2025-11-19 21:26:41 +01:00
Jon Bendtsen
50c7ccd053 Fix: test for existing DOLAPIKEY before trying to get it using username and password (#36331)
* Fix: test for existing DOLAPIKEY before trying to get it using username and password

* remove the print statement that made the API key be wrong

* writing print_info to stderr

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-19 21:03:12 +01:00
John BOTELLA
ec6219c183 UIUX : Experiment Dolibarr JS context and tools (#36327)
* UX experiment Dolibarr JS tools

* collapse help

* improuve logs
2025-11-19 19:42:00 +01:00
Regis Houssin
bd51548638 FIX avoid php warning error (#36330) 2025-11-19 19:35:02 +01:00
Jon Bendtsen
12c0f73682 Fix hurl assert for API warehouses to new reply from Dolibarr (#36274)
* Fix hurl assert for API warehouses to new reply from Dolibarr

* Asserting with jsonpath can handle if there are extra keys in the json like debug which mdeweerd experienced

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 19:34:11 +01:00
Jon Bendtsen
dfb19ddc6b New thorough Hurl tests for pages under /projet/ in Dolibarr's GUI (#36275)
* New throrough Hurl tests for pages under /projet/ in Dolibarr's GUI

* fix spelling typo

---------

Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-19 19:33:29 +01:00
Jon Bendtsen
c0bf718df3 using different hurl test to verify we are in the homescreen and that it works (#36294)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-19 19:32:37 +01:00
Frédéric FRANCE
d5e641e248 fix doc subtotal tpl (#36326)
* fix subtotal create tpl

* fix subtotal create tpl

* property errors is always set

* clean baseline
2025-11-19 19:21:19 +01:00
Florian Mortgat
c0850d9a3f FIX DA027383: permissions not checked on HRM evaluation card (#36328)
Permissions involved:
- hrm->evaluation->readall: the user can view anyone's evaluations
- hrm->evaluation->read: the user can only view their or their subordinates' evaluations
2025-11-19 19:19:55 +01:00
Laurent Destailleur
918443562e Fix warning 2025-11-19 16:25:16 +01:00
Laurent Destailleur
c1699eed56 Debug v23 2025-11-19 16:18:09 +01:00
Laurent Destailleur
7645a6dc87 Debug v23 2025-11-19 16:16:53 +01:00
Laurent Destailleur
34dc9a9cfd Debug 2025-11-19 16:07:03 +01:00
Laurent Destailleur
6c9a70ebdf CI 2025-11-19 15:52:47 +01:00
Laurent Destailleur
46fb9826d2 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-19 15:40:10 +01:00
Laurent Destailleur
3b74f64d00 Add checkmajorversion.yml 2025-11-19 15:39:59 +01:00
Charlène Benke
b45ee47907 NEW : add product_type field on fichinter (preparing subtotal) (#36196)
* NEW : add product_type field on fichinter (preparing subtotal)

Added product_type to SQL queries for fetch, insert, and update methods.
field already present on table, so let start add subtotal on interventionals

* Update fichinterligne.class.php

* Update copyright information in card-rec.php

Updated copyright year and name for Charlie Benke.

* Update fichinterligne.class.php

* Update fichinterligne.class.php

* Update fichinterligne.class.php

* Update fichinterligne.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 15:27:26 +01:00
ThomasNgr-OpenDSI
eaa05a482f Allow to view ticket linked files from public interface (#32410) 2025-11-19 15:26:59 +01:00
Laurent Destailleur
a605244dea css 2025-11-19 15:23:07 +01:00
kkhelifa-opendsi
548bb94e4f NEW: Rework of the management of the card and fields on the web portal (#36076)
* NEW: Rework of the management of the card and fields on the web portal

* Correction pre-commit check

* Correction affichage logo login

* Ajout hook

* Ajout params fonction FormWebPortal::convertAllLink()

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction phpstan

* Correction travis

* Correction travis

* Correction travis

* Correction travis

* Correction

* Fix get options of sellist by AJAX in webportal scope

* Correction pre-commit

* Correction pre-commit

* Add hook and change hook name for viewImage controller

* Correction phan

* Corrections

* Corrections
2025-11-19 15:14:53 +01:00
Charlène Benke
da77a93205 extrafields type link fail if object not internal (#36315)
without send the classpath we have an error on selectforforms function

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:55:37 +01:00
Günter Lukas
eb2d345330 Fix #36282: Update shipment reference handling in commondocgenerator (#36283)
* Update shipment reference handling in commondocgenerator

* Refactor order reference assignment for clarity

* Refactor origin object handling in shipment array

* Refactor origin object handling in shipment array

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:49:16 +01:00
Frédéric FRANCE
b449edad3a enhance reminders create (#36321)
* enhance reminders create

* enhance reminders create

* enhance reminders create

* enhance reminders create

* enhance reminders create

* clean js

* clean js

* clean js

* clean js

* clean js

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:47:41 +01:00
Alexandre SPANGARO
7e2f7f163d Accountancy - Resolve some problem on new function "Discount in accountancy" (#36285)
* FIX Accountancy - Discount wrong function & problem HTML injection

* FIX Accountancy - Wrong base for already / not yet function - Piece_num is not enough strong et editable

* FIX Accountancy - Discount - Use closing date rather than the invoice date

* FIX

* PHPPhan

* Update accountingjournal.class.php

* Update accountingjournal.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:43:27 +01:00
github-actions[bot]
3cd79f4497 PHPStan > Update baseline (#36305)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-11-19 14:16:21 +01:00
MDW
96e35c7a33 Fix: PhanTypeMismatchProperty error in invoice creation (#36323)
* 🐛 Fix PhanTypeMismatchProperty error in invoice creation

The error occurred due to incorrect type handling in the invoice creation process. The changes fix this by properly handling the subtype field as an integer. This ensures type consistency and prevents potential runtime errors.

* FIX: Correct assignment to linkedObjectsIds  in card.php

# FIX: Correct assignment to linkedObjectsIds  in card.php

Modified the structure of linkedObjectsIds to include the rowid as a key to match the property type.

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:16:00 +01:00
Laurent Destailleur
4989c9c3b1 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-19 14:09:14 +01:00
Yamil Esteban Garcia
6d5835e90f FIX Move 'holiday' from old path array to new one (#36308)
* Remove 'supplier_invoice' from old path array

* Update module path in arrayforoldpath

Sorry Eldy, I was confused. You are absolutely right, it is already corrected.

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 14:09:05 +01:00
Laurent Destailleur
56f2cdab10 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-19 14:07:56 +01:00
Laurent Destailleur
f7f0b408e2 Migrate holiday files 2025-11-19 14:06:07 +01:00
iouston
c4f1dbddbb Add product type check in line validation (#36319)
* Add product type check in line validation

needed by sous total plugins style which use line with type 9 for title, subtitle or free text. without the chek inb line validation, title, sub title or free text disappears

* Update card.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 13:17:48 +01:00
Laurent Destailleur
292b235241 Fix CI 2025-11-19 13:14:48 +01:00
Laurent Destailleur
c65e03ecb6 Fix CSS 2025-11-19 13:01:35 +01:00
Laurent Destailleur
50de292f51 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-19 12:50:45 +01:00
Laurent Destailleur
fc8cc70d7e Clean code 2025-11-19 12:50:32 +01:00
John BOTELLA
33d65c19dd Fix css login page patch 02 (#36320)
* fix css login page patch 01

* fix css login page patch 02

* fix css login page patch 02

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-19 12:40:52 +01:00
Laurent Destailleur
77e66216dc Fix ci 2025-11-19 12:15:48 +01:00
Laurent Destailleur
5ccab94697 Fix CI 2025-11-19 12:12:07 +01:00
Laurent Destailleur
0a6489a55f Fix CI 2025-11-19 11:59:33 +01:00
Laurent Destailleur
dd39b91e5a Fix ci 2025-11-19 11:40:02 +01:00
Laurent Destailleur
8a8ed7fa67 Fix CI 2025-11-19 11:28:58 +01:00
Laurent Destailleur
75d1f27730 Fix CI 2025-11-19 11:16:24 +01:00
Laurent Destailleur
37dca42aee Doc 2025-11-19 11:05:26 +01:00
MDW
45184e9741 Qual: Update phan baseline (#36318)
# Qual: Update phan baseline

Remove fixed notices from exceptions.
2025-11-19 10:58:00 +01:00
Laurent Destailleur
613a4bab2d Fix CI 2025-11-19 10:57:11 +01:00
Laurent Destailleur
d858764b15 Add config param $dolibarr_main_restrict_eval_methods with whitelist of
functionsallowed in dol_eval. Advisory GHSA-x3w7-24rq-gvc5
2025-11-19 03:44:24 +01:00
Laurent Destailleur
63cca7f128 Doc 2025-11-18 23:36:26 +01:00
Laurent Destailleur
9818c76f7f MAIN_DISALLOW_STRING_OBFUSCATION_IN_DOL_EVAL replaced with
MAIN_ALLOW_OBFUSCATION_METHODS_IN_DOL_EVAL
2025-11-18 23:34:23 +01:00
Laurent Destailleur
af0fcb0c24 Doc 2025-11-18 22:51:24 +01:00
Laurent Destailleur
845514af35 Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop 2025-11-18 22:47:04 +01:00
Laurent Destailleur
947389b072 NEW Disable by default obfuscation methods and function in extrafields
evaluable strings. Can re-enable with
MAIN_ALLOW_OBFUSCATION_METHODS_IN_DOL_EVAL=1
2025-11-18 22:45:56 +01:00
Marc
d9ec700a3e FIX #36306 (#36307) 2025-11-18 22:06:40 +01:00
Laurent Destailleur
bbbb958dc0 Fix CI 2025-11-18 22:03:57 +01:00
John BOTELLA
312ea7d9eb fix css login page patch 01 (#36313)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-18 22:03:49 +01:00
Laurent Destailleur
bcde1eb545 NEW Add filter on agenda event progression on agenda page 2025-11-18 21:59:47 +01:00
Laurent Destailleur
b748ffd528 Secure the dol_eval 2025-11-18 18:57:17 +01:00
John BOTELLA
b9b8fc5bbe Fix import lines (#36303) 2025-11-18 18:01:07 +01:00
Laurent Destailleur
78384eca54 Clean code 2025-11-18 17:14:42 +01:00
Laurent Destailleur
ac2fe3e991 Comment 2025-11-18 16:59:24 +01:00
Laurent Destailleur
5aaf9cd565 NEW Add hook on calcula_price() and get_default_tva() 2025-11-18 16:57:50 +01:00
Laurent Destailleur
4dd05e0199 Debug v23 2025-11-18 15:45:45 +01:00
Laurent Destailleur
235233eaf8 WIP LNE 2025-11-18 15:37:37 +01:00
kkhelifa-opendsi
e8349a97e6 Merge branch 'develop' into develop_new_rework_webportal_lists 2025-11-18 15:22:53 +01:00
Laurent Destailleur
81527a9fe9 Clean code 2025-11-18 12:03:23 +01:00
Laurent Destailleur
bba8884d13 Clean code 2025-11-18 11:48:33 +01:00
Frédéric FRANCE
8d459e469d clean code (#36260)
* clean code

* clean code

* clean code

* clean code

* fix $val might not be defined

* fix phpstan errors reported

* fix phpstan errors reported

* fix phpstan errors reported

* fix phpstan errors reported

* fix phpstan errors reported

* fix phpstan errors reported

* ignore phpstan reported for later

* clean code

* clean code

* clean code

* clean

* test
2025-11-18 11:41:28 +01:00
MDW
785753bbee Qual: Change field name to let phan warn about argument order (#36261)
* FIX wrong $param parameter position

* FIX ok it's good ! ;-)

* Qual: Change field name to let phan warn about argument order

# Qual: Change field name to let phan warn about argument order

Most of the time print_liste_field_titre() is called with $param instead of $moreparam.
By changing the argument name, phan will warn if the position is likely incorrect.

* Fix: Fix parameter order in print_liste_field_titre calls

- Fixed parameter order in print_liste_field_titre calls to maintain consistency

---------

Co-authored-by: Regis Houssin <regis.houssin@inodbox.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-18 11:40:32 +01:00
Florian Mortgat
8e30fc0bd1 FIX 19.0 - attachments upload dir for invoices not always determined correctly (doesn't always take multi-entity into account) (#36302) 2025-11-18 11:39:45 +01:00
Laurent Destailleur
f05f5af59e Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-18 11:38:31 +01:00
Laurent Destailleur
61a849090b Close #36298 2025-11-18 11:36:45 +01:00
Regis Houssin
2027f9c951 FIX avoid php warnings (#36301) 2025-11-18 11:31:38 +01:00
Regis Houssin
21843e68b0 FIX #36149 (#36150) 2025-11-18 10:12:05 +01:00
Laurent Destailleur
3badbe94ab Debug v23 2025-11-18 03:12:08 +01:00
Laurent Destailleur
9f555e03bd Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-18 02:52:44 +01:00
Laurent Destailleur
e96db77fda Look and feel Debug v23 2025-11-18 02:49:47 +01:00
John BOTELLA
0d1fd4b9ff New tooltip freeze from experimental to develop branch (#36266)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 22:36:21 +01:00
Frédéric FRANCE
8f52c44e5f can edit color in dict.php (#36270)
* can edit color in dict.php

* Update html.form.class.php

* Update html.form.class.php
2025-11-17 22:25:06 +01:00
William Mead
24e519c5a0 FIX QUAL intervention API close (#36278)
* Refactored close method

* Updated PHPDoc

* Updated PHPDoc

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 22:15:44 +01:00
MDW
991706e731 FIX: Fix version extraction in setup_conf.sh (#36281)
# FIX: Fix version extraction in setup_conf.sh

The version extraction regex was updated to handle both DOL_VERSION and DOL_MAJOR_VERSION constants in version.inc.php.
The version is now available as DOL_MAJOR_VERSION since 29b1e75

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 22:05:33 +01:00
MDW
c92b87dfec Qual: (commonnumrefgenerator): Add abstract method getExample (#36271)
- `getExample()`: Returns an example of the numbering format

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 22:03:08 +01:00
MDW
b2d30053b4 Qual: Enhance hurl test documentation and run script (#36291)
- Added detailed documentation for running specific tests, including options and exclusions
- Improved installation instructions with platform-specific guidance
- Enhanced error handling and user feedback
- Added support for GitHub-compatible messages
- Improved script structure and readability

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 21:52:13 +01:00
MDW
1072419141 Qual: Update pre-commit hooks (#36262)
* Qual: Update pre-commit hooks

# Qual: Update pre-commit hook

Updated several pre-commit hooks as long as the new ones are not alpha or beta versions

* Qual: Fix/ignore some shellcheck issues
2025-11-17 21:50:29 +01:00
MDW
f5d6533c5b Qual: (v22)Change field name to let phan warn about argument order (#36263)
* FIX wrong $param parameter position

* FIX ok it's good ! ;-)

* Qual: Change field name to let phan warn about argument order

# Qual: Change field name to let phan warn about argument order

Most of the time print_liste_field_titre() is called with $param instead of $moreparam.
By changing the argument name, phan will warn if the position is likely incorrect when '$param' is used - it will not warn for cases where $option or another
name is used.

---------

Co-authored-by: Regis Houssin <regis.houssin@inodbox.com>
2025-11-17 21:49:31 +01:00
Regis Houssin
309c2eff93 FIX wrong $param parameter position (#36265)
* FIX wrong $param parameter position

* FIX ok it's good ! ;-)
2025-11-17 21:48:32 +01:00
github-actions[bot]
f799113fac PHPStan > Update baseline (#36264)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 21:47:22 +01:00
Frédéric FRANCE
3a3785c92d Update SecurityTest.php (#36295)
* Update SecurityTest.php

* Update SecurityTest.php

* Update SecurityTest.php
2025-11-17 21:43:53 +01:00
Laurent Destailleur
e54cc9ab28 Fix phpunit 2025-11-17 21:40:36 +01:00
Laurent Destailleur
25b9782227 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-17 21:32:49 +01:00
Laurent Destailleur
bdb6c47b0b Fix CI 2025-11-17 21:32:29 +01:00
sweetcorreze
f66cb5ddd5 Update loanschedule.class.php (#36272)
Solve Error when schedule loans : "ERROR: 55000: currval of sequence "llx_payment_loan_rowid_seq" is not yet defined in this session LOCATION: currval_oid, sequence.c:884"

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-17 21:19:58 +01:00
noec764
cd984fa6c5 FIX: Object should be cloned here (#36289)
Co-authored-by: Noé <noe@scopen.fr>
2025-11-17 21:18:28 +01:00
Laurent Destailleur
278983c4e7 Fix CI 2025-11-17 21:16:46 +01:00
Frédéric FRANCE
a88f5d9d41 Update admin.lang (#36293) 2025-11-17 21:08:50 +01:00
dependabot[bot]
ea511792d3 Bump mdeweerd/logToCheckStyle from 2025.1.1 to 2025.11.2 (#36284)
Bumps [mdeweerd/logToCheckStyle](https://github.com/mdeweerd/logtocheckstyle) from 2025.1.1 to 2025.11.2.
- [Commits](https://github.com/mdeweerd/logtocheckstyle/compare/v2025.1.1...v2025.11.2)

---
updated-dependencies:
- dependency-name: mdeweerd/logToCheckStyle
  dependency-version: 2025.11.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 20:04:53 +01:00
Laurent Destailleur
a7c82c020d Fix CI 2025-11-17 20:01:07 +01:00
Laurent Destailleur
92ad672272 Fix CI 2025-11-17 19:42:38 +01:00
Laurent Destailleur
1abc87ff03 Clean code 2025-11-17 19:35:10 +01:00
Laurent Destailleur
10921598cb Simple way to trap error to Close #36292 2025-11-17 19:10:58 +01:00
Laurent Destailleur
d1f53517e6 Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop 2025-11-17 18:15:25 +01:00
Laurent Destailleur
0631cd61e0 Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop 2025-11-17 17:21:52 +01:00
Laurent Destailleur
4703344acc Debug 2025-11-17 16:50:53 +01:00
Laurent Destailleur
7b6186c137 Doc 2025-11-17 16:45:04 +01:00
Laurent Destailleur
e8e61605da Doc 2025-11-17 16:41:58 +01:00
Laurent Destailleur
68e6bedd27 The script generate_filelist_xml.php can check integrity from command
line.
2025-11-17 16:39:27 +01:00
Laurent Destailleur
e9a3b65e04 Trans 2025-11-17 15:16:00 +01:00
Laurent Destailleur
6161c491ae Trans 2025-11-17 15:10:05 +01:00
Laurent Destailleur
c0de8f6b53 Fight against optionflation. 2025-11-17 14:52:46 +01:00
Laurent Destailleur
72afda872d WIP LNE 2025-11-17 13:53:53 +01:00
Laurent Destailleur
642feb78d2 NEW Invert logic of default date in proposal/order/invoice creation:
Need option to NOT autofill instead of the opposite.
2025-11-17 10:57:06 +01:00
Laurent Destailleur
ed08d6389a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-17 10:44:03 +01:00
Laurent Destailleur
6376f11f27 Trans tooltip 2025-11-17 10:43:08 +01:00
Laurent Destailleur
90ec9f7de2 Doc 2025-11-17 10:34:51 +01:00
Laurent Destailleur
22440127e1 Doc 2025-11-17 10:33:31 +01:00
Laurent Destailleur
1dd28e352a NEW Introduce getCurrency(). $conf is no more allowed into computed
formulae.
2025-11-17 10:29:55 +01:00
Laurent Destailleur
bb53a368fc CSS 2025-11-15 23:00:02 +01:00
atm-lucas
bdd8dc0046 NEW - Add a new API "product lots" (#36243)
* Add new API product lots

* fix precommit
2025-11-14 16:06:59 +01:00
Gigarun ingénierie
f837fb4fa8 Fix: Correct unit comparison bug in webportal document download (#36256)
The file size check was comparing bytes (from dol_filesize) directly with
kilobytes (from MAIN_SECURITY_MAXFILESIZE_DOWNLOADED config), causing false
positives that blocked downloads of small files.

Example: A 94 KB file (96678 bytes) was rejected because 96678 > 20480,
even though the limit was actually 20480 KB (20 MB).

Changes:
- Convert KB limit to bytes before comparison: $fileSizeMax * 1024
- Improve error message to display file size in KB for consistency
- Add detailed logging with both bytes and KB values

Fixes: Files under the configured limit are now correctly allowed to download
2025-11-14 16:05:18 +01:00
Laurent Destailleur
545a0f5532 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-14 16:00:08 +01:00
Laurent Destailleur
aa49882be0 Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-14 15:59:50 +01:00
Regis Houssin
d028d0d81b FIX $param is the 5th parameter of print_liste_field_titre ($moreparam) (#36250)
* FIX $param is the 5th parameter of print_liste_field_titre ($moreparam)

* FIX phan error

* FIX other errors
2025-11-14 15:55:35 +01:00
Rudi Herouard
664b0acfb7 NEW Add SQL table for expensereport line extrafields support (#36251) 2025-11-14 15:53:49 +01:00
lvessiller-opendsi
30ecf80732 FIX keep user who validate proposal on update (#36257) 2025-11-14 15:53:31 +01:00
Laurent Destailleur
e57703a6b6 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-14 15:42:25 +01:00
Marc de Lima Lucio
4528a3dac0 FIX: customer invoices: bad totals because of situation progress (#36253) 2025-11-14 15:39:07 +01:00
Laurent Destailleur
fbbcb22d95 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-14 15:38:49 +01:00
Laurent Destailleur
0f57e9897c Fix CI 2025-11-14 15:38:37 +01:00
HeilDenDus
0f297eea96 add show and filter in fields public and private notes (#36255) 2025-11-14 15:36:22 +01:00
Laurent Destailleur
cb2428486f Fix label of status 2025-11-14 15:20:38 +01:00
Laurent Destailleur
dc689f1410 CSS 2025-11-14 15:14:02 +01:00
Laurent Destailleur
84db871954 Doc 2025-11-14 14:53:17 +01:00
Laurent Destailleur
2f02e7441f Prepare 22.0.3 2025-11-14 14:52:47 +01:00
Laurent Destailleur
e0c75b2f35 Prepare 22.0.3 2025-11-14 14:48:01 +01:00
Laurent Destailleur
29b1e75826 WIP LNE 2025-11-14 12:02:16 +01:00
Laurent Destailleur
db7b669d2a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-14 11:47:27 +01:00
Laurent Destailleur
9c85cb4be4 WIP LNE 2025-11-14 11:47:05 +01:00
Lucas Marcouiller
81e5e0a3cb New import profile for leave requests (#36244)
Co-authored-by: Lucas Marcouiller <lmarcouiller@dolicloud.com>
2025-11-13 17:53:06 +01:00
github-actions[bot]
1578715f54 PHPStan > Update baseline (#36242)
Co-authored-by: Dolibot <dolibarr-bot@users.noreply.github.com>
2025-11-13 16:57:26 +01:00
Laurent Destailleur
059f272b16 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-13 16:26:56 +01:00
Frédéric FRANCE
593926125a clean code (#36241)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-13 16:26:31 +01:00
Eric - CAP-REL
189f9fc0be add gps position for files (#36240)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-13 16:26:18 +01:00
Laurent Destailleur
b2661d617a Trans 2025-11-13 16:25:53 +01:00
VESSILLER
c2ae7d2da1 FIX create API temp directory in Dolibarr API constructor 2025-11-13 14:01:34 +01:00
Laurent Destailleur
008443305a Fix CI 2025-11-13 13:22:28 +01:00
Laurent Destailleur
cb40305764 Fix CI 2025-11-13 13:12:34 +01:00
Laurent Destailleur
ed9f3ca915 Fix CI 2025-11-13 13:11:59 +01:00
Laurent Destailleur
cba1bcdb84 Fix CI 2025-11-13 13:11:30 +01:00
Laurent Destailleur
61a194f57e Fix CI 2025-11-13 13:10:32 +01:00
Laurent Destailleur
c26c4571d8 Fix CI GETPOST -> GETPOSTINT 2025-11-13 13:09:28 +01:00
Laurent Destailleur
5c353d5f0a Fix CI 2025-11-13 13:09:06 +01:00
Laurent Destailleur
b022194600 Fix CI GETPOST -> GETPOSTINT 2025-11-13 13:09:00 +01:00
Laurent Destailleur
be48f98961 Fix CI 2025-11-13 13:02:52 +01:00
Laurent Destailleur
cb6ffabc42 Fix CI 2025-11-13 13:00:55 +01:00
Laurent Destailleur
c32be1c055 Fix CI 2025-11-13 12:48:53 +01:00
Laurent Destailleur
44beed0a94 Fix CI 2025-11-13 12:44:39 +01:00
Laurent Destailleur
3bb348ba9a CSS 2025-11-13 12:39:04 +01:00
Laurent Destailleur
faa8c0dbaf Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-13 12:31:16 +01:00
Laurent Destailleur
66d6b13278 Fix warning 2025-11-13 12:31:06 +01:00
kkhelifa-opendsi
7ce308350f Merge branch 'develop' into develop_new_rework_webportal_lists 2025-11-13 12:28:03 +01:00
lvessiller-opendsi
9de04b1c48 Merge pull request #35809 from marc-dll/18.0_FIX_expensereport_bankaccount_access
FIX: expense report card: do not show bank account if user cannot see them
2025-11-13 09:39:39 +01:00
Eric - CAP-REL
7e7939d234 Merge pull request #35893 from RyAbn/18.0_FIX_Email_collector_no_msg_parts_fatal_error
FIX: Email Collector Module
2025-11-13 09:22:44 +01:00
Laurent Destailleur
6b675eeb81 Fix error reporting 2025-11-13 04:22:58 +01:00
Laurent Destailleur
557c3c5d18 Fix SQL 2025-11-13 04:22:35 +01:00
Laurent Destailleur
0ddcc03d71 Fix GETPOST 2025-11-13 03:42:29 +01:00
Laurent Destailleur
66ae002541 Fix GETPOST 2025-11-13 03:38:48 +01:00
Laurent Destailleur
957c5645e2 Fix type 2025-11-13 03:33:42 +01:00
Laurent Destailleur
f6783b35fd Fix type 2025-11-13 03:25:20 +01:00
Laurent Destailleur
9dc4f6bc5d Fix type 2025-11-13 03:25:00 +01:00
Laurent Destailleur
c4abf5d3ca Fix regression 2025-11-13 02:12:15 +01:00
Laurent Destailleur
d03ab90be2 Close #34750 by backport of code from v22 2025-11-13 00:34:23 +01:00
Laurent Destailleur
cea7734ddf Fix $$ 2025-11-13 00:18:55 +01:00
Noé Cendrier
e5480945bc FIX: Mo::deleteLine() - stock movement correction (#34733)
* FIX: Mo::deleteLine() - stock movement correction should not rely on linked lines

* FIX: do not permit product line to consume removal if product consumption started
2025-11-12 23:59:15 +01:00
Laurent Destailleur
34bd3f5755 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-11-12 22:02:50 +01:00
Laurent Destailleur
8c394c70b8 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2025-11-12 21:56:01 +01:00
Laurent Destailleur
1affd67437 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-12 21:54:29 +01:00
Laurent Destailleur
2db335dd0e Merge branch '19.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-12 21:51:30 +01:00
Laurent Destailleur
dba065c222 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into 19.0 2025-11-12 21:50:04 +01:00
Laurent Destailleur
29edc77dd5 Merge branch '17.0' of git@github.com:Dolibarr/dolibarr.git into 18.0 2025-11-12 21:46:53 +01:00
Laurent Destailleur
99fe044868 Merge branch '16.0' of git@github.com:/Dolibarr/dolibarr.git into 17.0 2025-11-12 21:44:49 +01:00
Laurent Destailleur
8ae27c3a5f Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into 16.0 2025-11-12 21:44:34 +01:00
Laurent Destailleur
07db28496d Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-12 21:39:30 +01:00
Laurent Destailleur
935e21c5e1 Close #35917 2025-11-12 21:39:20 +01:00
Regis Houssin
8d2d3986f3 FIX add constant for the member photo width in web portal + avoid error (#36221) 2025-11-12 21:35:18 +01:00
Laurent Destailleur
9ec8762307 Fix CI 2025-11-12 21:33:35 +01:00
Laurent Destailleur
7fe7bfa7bb Doc 2025-11-12 19:45:09 +01:00
Laurent Destailleur
5bc299922c Debug v23 2025-11-12 19:37:19 +01:00
Marc de Lima Lucio
ba0a7fe17a FIX: categories: sql error in link extrafields targettings categories (#36236) 2025-11-12 19:09:03 +01:00
Marc de Lima Lucio
aa9d5da575 FIX: resize iban column to support encryption (#36237) 2025-11-12 19:08:13 +01:00
Laurent Destailleur
2595aa5ab8 css 2025-11-12 19:07:09 +01:00
Benjamin Chanudet
e83d3a830b FIX Select correct approver when making a leave request for someone else (#36118)
* select correct approver when creating a leave request for someone else

* Clarify comments regarding default approver logic

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 19:05:50 +01:00
Laurent Destailleur
48a14b26b4 Debug v23 2025-11-12 18:42:14 +01:00
Laurent Destailleur
71b25742ae css 2025-11-12 18:06:50 +01:00
Laurent Destailleur
7fe8eb0884 css 2025-11-12 17:41:18 +01:00
Laurent Destailleur
55a5f4b4a2 CSS 2025-11-12 17:40:34 +01:00
Laurent Destailleur
46839dc869 Fix trans 2025-11-12 17:35:56 +01:00
Laurent Destailleur
65024ebf63 Fix bad translation string 2025-11-12 17:34:53 +01:00
Laurent Destailleur
9c72afd95b Short version of Go back 2025-11-12 17:30:39 +01:00
Laurent Destailleur
05c624f1cd WIP 2025-11-12 17:25:40 +01:00
Laurent Destailleur
5356cd9b93 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-12 16:02:15 +01:00
Laurent Destailleur
71d129c70a Debug v23 2025-11-12 16:02:03 +01:00
Laurent Destailleur
33f771e548 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-11-12 15:52:10 +01:00
Ryad ABANI
ea28972862 FIX: dol_escape_htmltag in extrafields_view (#36136)
Co-authored-by: Ryad ABANI <ryad.abani@scopen.fr>
2025-11-12 15:44:40 +01:00
atm-adrien
3ddf7305bd FIX : The order closing date was not filled in during the shipment validation (workflow module). (#36235) 2025-11-12 15:39:44 +01:00
Laurent Destailleur
da08b2f5c3 Update status 2025-11-12 15:39:37 +01:00
Frédéric FRANCE
2ba87e0d32 add phone mobile of target (#36234) 2025-11-12 15:33:56 +01:00
Laurent Destailleur
c5eb12393d Fix case 2025-11-12 15:33:14 +01:00
Frédéric FRANCE
8cb1af4fcb clean code (#36233)
* clean code

* Update html_cerfafr.modules.php

* Update interface_50_modEventOrganization_EventOrganization.class.php
2025-11-12 15:32:29 +01:00
Laurent Destailleur
392fb33587 Tipo 2025-11-12 15:29:42 +01:00
Laurent Destailleur
ad91cdbe48 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-12 15:04:02 +01:00
Laurent Destailleur
9e7fedfec5 Debug v23 2025-11-12 15:03:31 +01:00
Laurent Destailleur
ad165e3712 Clean permissions 2025-11-12 12:55:21 +01:00
Maxime Kohlhaas
bd2183ac7c New : action to clone ticket (#36231) 2025-11-12 11:02:12 +01:00
Frédéric FRANCE
96707ab431 clean code (#36230) 2025-11-12 10:03:39 +01:00
Frédéric FRANCE
06c4c9e8b7 check access doc for massfilesarea_stock (#36229) 2025-11-12 10:03:14 +01:00
Charlène Benke
fb92ebb4e7 Implement setCategories method in task class (#36218)
Added setCategories method to manage task categories.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 09:49:45 +01:00
Frédéric FRANCE
d07e8c03a0 avoid changing object after call (#36159)
* avoid changing object after call

* avoid changing object after call

* avoid changing object after call

* avoid changing object after call

* avoid changing object after call

* avoid changing object after call

* avoid changing object after call

* clean code

* clean code

* clean code

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* clean code

* clean

* clean

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 09:44:39 +01:00
Frédéric FRANCE
feccc7d4f5 Update header_login.tpl.php (#36220)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 09:39:55 +01:00
Charlène Benke
b4a01b3f63 harmonize fields orders between holiday and expensereport (#36222)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 09:39:39 +01:00
PierrickV
6e3fabeeab Fix typo in DLLMissing message for MyGerman.isl (#36223)
* Fix typo in DLLMissing message for MyGerman.isl

Typos:
- s/Mcrsoft/Microsoft/g
- s/credist_x86.exe/vc_redist.x86.exe/g
- dl link

* Fix DLLMissing message link for Visual C++ Redistributable

Updated the link for the Microsoft Visual C++ Redistributable installation instructions.

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-12 09:38:55 +01:00
Regis Houssin
2ea3c1bc21 FIX conflict between $user->id and $object->id (#36225)
* FIX conflict between $user->id and $object->id

* FIX better fix

* FIX arfff
2025-11-12 09:38:06 +01:00
Frédéric FRANCE
43c15cb1b9 clean code (#36228) 2025-11-12 09:36:57 +01:00
Frédéric FRANCE
e6e65d4989 Update commondocgenerator.class.php (#36227) 2025-11-12 09:36:40 +01:00
Laurent Destailleur
f0cd8d4281 Fix autogenerate login 2025-11-11 21:59:31 +01:00
Laurent Destailleur
540e5effac Responsive 2025-11-11 21:49:48 +01:00
Laurent Destailleur
2e72a9d14d Trans 2025-11-11 21:37:11 +01:00
Charlène Benke
5886abaf6f add date_c update on project_task (#36217)
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-11 20:19:25 +01:00
Regis Houssin
f2e4ac5bfe FIX use $this->db instead $db (#36219)
* FIX use $this->db instead $db

* FIX use $db with static function

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-11 20:18:00 +01:00
Laurent Destailleur
3b38422977 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-11 19:52:04 +01:00
Jon Bendtsen
f2b823f6e7 Fix PHP Warning: Undefined array key "nblinesnull" in /var/www/html/projet/element.php (#36198)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-11 19:47:04 +01:00
Jon Bendtsen
d53aa65d1c NEW Add Type, Description columns to Project Overview Expense Reports (#36214)
Co-authored-by: Jon Bendtsen <xcodeauthor@jonb.dk>
2025-11-11 19:46:30 +01:00
Laurent Destailleur
548f1fdac3 Fix CI 2025-11-11 19:36:11 +01:00
Laurent Destailleur
90f00f8042 Fix CI 2025-11-11 19:36:10 +01:00
Laurent Destailleur
c07f116105 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-11-11 19:31:28 +01:00
Laurent Destailleur
554354b151 Fi CI 2025-11-11 19:31:18 +01:00
Charlène Benke
307227de53 add interventional feature on subtotal admin (#36207) 2025-11-11 19:04:19 +01:00
splohmer
b35994bf93 FIX late customer orders are not shown on start page (#36200)
due to an mismatch of the used variable in hasDelay (status) and the setted variable (statut) the late orders where never shown in the start page as the count was always wrongly zero.
2025-11-11 17:53:40 +01:00
Frédéric FRANCE
768ca25615 fix typo in interface_20_modWorkflow_WorkflowManager.class.php (#36212) 2025-11-11 17:48:50 +01:00
Francis Appels
079a55153f Fix php warning in order list (#36202)
* Fix order list php warning

* missing td
2025-11-11 17:42:03 +01:00
Francis Appels
0da7ae7bed Fix missing multiprices arraykey (#36204) 2025-11-11 17:41:44 +01:00
Laurent Destailleur
6de355b7d2 Fix error on triggers not propagated 2025-11-10 22:43:23 +01:00
VESSILLER
71ec381d3e FIX re-create API temp dir after purging temp files 2025-11-10 10:56:07 +01:00
Alexandre SPANGARO
c9d1179ba8 FIX Import/Export - Do not list imports or exports of Builder module backups of module descriptor files (#36192)
* FIX Import/Export - Do not list imports or exports of Builder module backups of module descriptor files

* FIX
2025-11-09 19:29:02 +01:00
Laurent Destailleur
a7ec88c2ac Fix update of color when using HTML5 2025-11-09 02:41:10 +01:00
HENRY Florian
d5a9fe97a9 FIX: when display in view mode HTML extrafeilds content doubled (#36127)
* FIX: when display in view mode HTML extrafeilds content doubled

* review

* Update extrafields_view.tpl.php

* Update extrafields_view.tpl.php

* Update extrafields_view.tpl.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-11-09 01:24:02 +01:00
Regis Houssin
8d63609c14 FIX missing check if partership is enabled (#36169) 2025-11-08 14:01:56 +01:00
MDW
093bbcdec2 Qual: Fix false phan positive in export.php (#36147)
* Qual: Type cast for field parameter

# Qual: Type cast for field parameter

Cast to string to ensure the value is not interpreted as a potential
array.

* Qual: Backport typing hint to fix typing in 20.0
2025-11-07 18:48:05 +01:00
Frédéric FRANCE
5fa475a074 fix directory was always overwritten (#36148) 2025-11-07 18:43:26 +01:00
Regis Houssin
3ad30f8622 FIX use array_intersect instead in_array 2025-11-07 12:07:50 +01:00
Regis Houssin
3b7cda03f3 Merge branch '18.0' of git@github.com:Dolibarr/dolibarr.git into fix_18_multicompany_compatibility 2025-11-07 12:04:44 +01:00
Laurent Destailleur
25b1004c7b Fix getObjectsInCateg 2025-11-06 17:45:25 +01:00
Laurent Destailleur
583cc1f15f Fix warning 2025-11-06 17:38:36 +01:00
Kamel Khelifa
65744012a2 Correction declaration variables 2025-11-06 15:00:03 +01:00
Kamel Khelifa
9f86f70574 Ajout property in AbstractListController class 2025-11-06 14:13:22 +01:00
Kamel Khelifa
c97aee6e97 Correction phpstan 2025-11-06 12:33:41 +01:00
Kamel Khelifa
87d102417a Correction phpstan 2025-11-06 12:31:45 +01:00
Kamel Khelifa
8d88810b17 Correction phpstan 2025-11-06 12:25:03 +01:00
Kamel Khelifa
d6ad677c9c Correction phpstan 2025-11-06 11:56:56 +01:00
Kamel Khelifa
da5233547c Correction phpstan 2025-11-06 11:44:39 +01:00
Kamel Khelifa
e41ab4b17b Merge branch 'develop_new_rework_webportal_lists' of github.com:Easya-Solutions/dolibarr into develop_new_rework_webportal_lists 2025-11-06 11:20:50 +01:00
Kamel Khelifa
09d4118be2 Correction phpstan 2025-11-06 11:20:16 +01:00
kkhelifa-opendsi
5ea54ea63b Merge branch 'develop' into develop_new_rework_webportal_lists 2025-11-06 10:55:55 +01:00
Eric - CAP-REL
e5f3c2c117 Merge pull request #35963 from hregis/fix_18_wrong_hook_check
FIX wrong check of hook return
2025-11-06 09:28:56 +01:00
lvessiller-opendsi
1d24cf5ea5 Merge pull request #36027 from Easya-Solutions/18_fix_list_on_societe_price_tab
Fix listincsv on tab societe/price.php
2025-11-06 09:26:08 +01:00
Laurent Destailleur
b0e8b9650b Fix CI 2025-11-06 04:01:46 +01:00
Laurent Destailleur
484700e2d4 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 2025-11-06 02:31:09 +01:00
ldestailleur
027b6f060d Fix CI 2025-11-06 02:30:59 +01:00
Laurent Destailleur
689b992afb Split tasks 2025-11-05 22:40:50 +01:00
noec764
1c7cb37e74 FIX: Add missing left join to filter by extrafields (#36092)
Co-authored-by: Noé <noe@scopen.fr>
2025-11-04 18:43:20 +01:00
Florian Mortgat
a16f3bdf31 FIX 16.0: extrafield of type link to category causes SQL error in selectForFormsList() (#36074)
* FIX 16.0 (up to 19.0): extrafield of type link to category causes SQL error in selectForFormsList

* Apply suggestion from @atm-florianm
2025-11-04 13:06:58 +01:00
atm-GregM
dc7932700b Fix TICKET_ENABLE_PUBLIC_INTERFACE (#36073) 2025-11-04 12:25:57 +01:00
Kamel Khelifa
3688dd0a71 Correction list filter 2025-11-03 15:54:46 +01:00
Kamel Khelifa
fd6a397383 Correction php phan test 2025-11-03 15:49:33 +01:00
Kamel Khelifa
a4991ee551 Correction php phan test 2025-11-03 15:48:02 +01:00
Marc de Lima Lucio
223326610e FIX: expense report card: use correct bank module designator for detection 2025-10-31 13:43:21 +01:00
tnegre
2555b14f9c Fix listincsv on tab societe/price.php 2025-10-31 09:39:09 +01:00
Regis Houssin
edd4565921 FIX wrong check of hook return 2025-10-27 12:09:49 +01:00
Ryad ABANI
38980a935c FIX: Email Collector Module: manage error when imap_fetchstructure return false. Previously it generated warning and fatal error because the returned value was not of type class 2025-10-22 11:56:07 +02:00
Laurent Destailleur
20a73086e9 Merge branch 'develop' into develop_NEW_create_ticket_mail_linked_files 2025-10-21 00:05:56 +02:00
tnegre
3ce1b6bb4f NEW : On ticket creation from backend, send linked files in the email. 2025-10-20 16:08:04 +02:00
Laurent Destailleur
f99cbafd64 Merge branch 'develop' into develop_new_rework_webportal_lists 2025-10-18 12:25:14 +02:00
tnegre
66d72d0bba FIX allow a situation with credit to be removed from cycle 2025-10-17 14:13:25 +02:00
Marc de Lima Lucio
403dad1660 FIX: expense report card: do not show bank account if user cannot see them 2025-10-17 13:56:07 +02:00
Regis Houssin
12d078c651 FIXX clean code 2025-10-16 19:33:38 +02:00
Regis Houssin
0dbbd453e5 FIX Multicompany compatibility with "project_task" 2025-10-16 19:10:32 +02:00
tnegre
8ddf9f6075 FIX : remove useless condition to create credit on situation invoice (#35786) 2025-10-16 11:57:49 +02:00
Laurent Destailleur
40fdd49b05 Update card.php 2025-10-15 04:46:19 +02:00
Laurent Destailleur
39f84d5baa Merge branch 'develop' into new-api-rest-tokens 2025-10-15 04:38:48 +02:00
Laurent Destailleur
80e7c42e3d Update card.php 2025-10-15 04:38:25 +02:00
Laurent Destailleur
634e27d1f1 Merge branch 'develop' into new-api-rest-tokens 2025-10-15 03:41:05 +02:00
Laurent Destailleur
8e3ae42cdf Merge branch 'develop' into develop_new_rework_webportal_lists 2025-10-15 03:37:57 +02:00
Laurent Destailleur
1028ff9efe Merge branch 'develop' into develop_new_rework_webportal_lists 2025-10-01 20:04:34 +02:00
Laurent Destailleur
e230c0e0ad Merge branch 'develop' into develop_new_rework_webportal_lists 2025-10-01 20:00:10 +02:00
Kamel Khelifa
0100d37944 Correction phpstan 2025-09-29 15:32:29 +02:00
Kamel Khelifa
b567c2d011 Correction phpstan 2025-09-29 15:14:30 +02:00
Kamel Khelifa
c41602e6ec Correction phpstan 2025-09-29 14:47:45 +02:00
Kamel Khelifa
297818c775 NEW : Rework of the webportal list for more flexibility and more templating 2025-09-29 14:19:11 +02:00
Laurent Destailleur
15cedfe5de Update user.class.php 2025-08-21 01:35:40 +02:00
Laurent Destailleur
4404e8fd35 Update usergroup.class.php 2025-08-21 01:31:46 +02:00
Laurent Destailleur
afa14a9e4b Update usergroup.class.php 2025-08-21 01:29:18 +02:00
Laurent Destailleur
171ffb8f0d Update card.php 2025-08-21 01:23:16 +02:00
Laurent Destailleur
0e9cbad4f6 Update card.php 2025-08-21 00:57:57 +02:00
Laurent Destailleur
6227aac04c Update card.php 2025-08-21 00:19:44 +02:00
Laurent Destailleur
b6b34404cf Merge branch 'develop' into new-api-rest-tokens 2025-08-21 00:07:08 +02:00
Laurent Destailleur
d93184f955 Update token_list.php 2025-08-20 23:42:16 +02:00
Laurent Destailleur
8dadeddb4a Merge branch 'develop' into new-api-rest-tokens 2025-08-20 23:26:51 +02:00
Laurent Destailleur
f5e5c5c110 Update card.php 2025-08-16 04:14:17 +02:00
Laurent Destailleur
eb8868f2b2 Merge branch 'develop' into new-api-rest-tokens 2025-08-16 03:12:40 +02:00
Laurent Destailleur
8edfa3a1ab Merge branch 'develop' into new-api-rest-tokens 2025-08-16 02:44:17 +02:00
Marc de Lima Lucio
fda975970c Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-29 11:58:15 +02:00
Marc de Lima Lucio
bd89c1987f Merge branch 'develop' into new-api-rest-tokens 2025-07-28 09:22:30 +02:00
Laurent Destailleur
55da46989d Merge branch 'develop' into new-api-rest-tokens 2025-07-24 16:30:23 +02:00
Laurent Destailleur
ea9dbec6cf Merge branch 'develop' into new-api-rest-tokens 2025-07-24 11:26:20 +02:00
Laurent Destailleur
3bf263e675 Update apitoken_list.tpl.php 2025-07-15 12:54:43 +02:00
yannis
d88bf9e527 feat: remove unecessary test
permsgroupbyentitypluszero is set as an array before so cond is always
true
2025-07-10 11:29:19 +02:00
yannis
dd87b8fb9c fix: typo 2025-07-10 11:19:26 +02:00
yannis
c2f9206341 Merge branch 'new-api-rest-tokens-sql' of github.com:YannisHoareau/dolibarr into new-api-rest-tokens 2025-07-10 11:05:56 +02:00
yannis
99483364ed Merge branch 'new-api-rest-tokens-sql' of github.com:YannisHoareau/dolibarr into new-api-rest-tokens-sql 2025-07-10 11:05:11 +02:00
yannis
3e01b64543 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens-sql 2025-07-10 11:04:41 +02:00
yannis
743f699497 feat: remove unreachable code
permsgroupbyentitypluszero is set as an array before so cond is always
true
2025-07-10 11:03:43 +02:00
yannis
5806ff6887 refactor: clean code + comments 2025-07-10 10:34:04 +02:00
yannis
84a033d146 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-10 09:30:40 +02:00
yannis
88da28b5d5 feat: add comment for understanding 2025-07-09 17:27:17 +02:00
yannis
b1ba40ccbb fix: php phan 2025-07-09 17:20:51 +02:00
yannis
e9f42ce507 fix: php stan 2025-07-09 17:05:15 +02:00
yannis
b7a004372c fix: php phan 2025-07-09 16:44:21 +02:00
yannis
462c5f4d5e fix: php phan 2025-07-09 14:43:44 +02:00
yannis
185ac842d1 feat: not showing token tab if access forbidden 2025-07-09 14:21:56 +02:00
yannis
aa645d80ba fix: php phan 2025-07-09 12:05:07 +02:00
yannis
add2172540 feat: improve arrows for switching user in token card 2025-07-09 11:33:42 +02:00
yannis
be949278ff feat: cant access document of entity if different of token entity 2025-07-09 11:15:07 +02:00
yannis
641f2a9513 feat: improve permission managment 2025-07-09 09:25:57 +02:00
yannis
9617dcafd3 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-08 17:31:00 +02:00
yannis
1b346b5ed2 feat: removed unecessaty line 2025-07-08 17:25:13 +02:00
yannis
ba91e23f31 feat: correct state if it was empty (not 0) + delete 0 if adding perm 2025-07-08 17:24:20 +02:00
yannis
f039ad4052 feat: show all token for user whichever entity he uses 2025-07-08 17:03:05 +02:00
yannis
16e84d0fa9 feat: use all user perms if empty state (not if 0) 2025-07-08 16:29:46 +02:00
yannis
cdb3021ce7 feat: default state to 0 when creating a token 2025-07-08 16:23:18 +02:00
yannis
dd8c2b9c3f feat: dont defaut grant admin perms for token 2025-07-08 16:21:12 +02:00
yannis
975b35ab1e feat: avoid load of user perms if admin token + dont load user perms if state is 0 2025-07-08 16:15:47 +02:00
yannis
6206a6110c feat: not retrieving tokens if user does not use api 2025-07-08 15:55:38 +02:00
yannis
d328436786 feat: better calculation for nb user perms 2025-07-08 15:42:53 +02:00
yannis
3078c0800f feat: set 0 in state for no perms
This is because if empty state it means all current user perms so we
have to distinguish
2025-07-08 15:21:48 +02:00
yannis
61560e0101 feat: filter on user working for list of all tokens 2025-07-08 15:10:34 +02:00
yannis
f54678fc2f feat: load all user rights if token has no perms (empty state) 2025-07-08 11:45:57 +02:00
yannis
7f492d4a5e feat: update tms for postgre compatibility 2025-07-08 11:17:04 +02:00
yannis
b884f9aa67 feat: change translation 2025-07-07 17:07:39 +02:00
yannis
256eea24ea feat: add nonce for js script 2025-07-07 17:05:27 +02:00
yannis
39a6cadf11 feat: add picto for titles 2025-07-07 17:04:39 +02:00
yannis
9107c86c89 feat: Not showing API operations if use api not defined for user 2025-07-07 16:28:39 +02:00
yannis
fa3f46113a feat: change trans for understandability 2025-07-07 16:16:19 +02:00
yannis
2707e0660e feat: improve tab titles and trans 2025-07-07 16:12:24 +02:00
yannis
c24877a641 feat: add link back to list of token and to list of users 2025-07-07 15:59:42 +02:00
yannis
f211cc832d feat: added tpl for token lists 2025-07-07 15:54:52 +02:00
yannis
a118d9cb91 Merge branch 'new-api-rest-tokens-sql' of github.com:YannisHoareau/dolibarr into new-api-rest-tokens-sql 2025-07-07 14:21:40 +02:00
yannis
debd336f96 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens-sql 2025-07-07 14:20:41 +02:00
yannis
625c323f76 feat: leave state field empty 2025-07-07 14:20:24 +02:00
yannis
58c3439abb Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-07 12:17:58 +02:00
yannis
9af9bbfa3b feat: disable choosing token user for admin if creating from his list 2025-07-07 12:14:32 +02:00
yannis
366b0f231e feat: disable token filter in lists 2025-07-07 11:39:15 +02:00
yannis
2d7526a53f feat: remove unecessary url param 2025-07-07 11:06:56 +02:00
yannis
d9892a907c feat: improve display of user in admin token list 2025-07-07 10:57:12 +02:00
yannis
0cc77bb35d feat: disable token tab if api mod not enabled 2025-07-07 10:39:50 +02:00
Laurent Destailleur
fcad7d7a4b Merge branch 'develop' into new-api-rest-tokens-sql 2025-07-05 12:14:09 +03:00
yannis
d720fa80ff fix: php phan/stan 2025-07-04 16:38:02 +02:00
yannis
73ac786cbc feat: show all perms but disable button for not owned 2025-07-04 16:06:48 +02:00
yannis
8883c2e038 fix: showing bad entity 2025-07-04 14:50:07 +02:00
yannis
55fc93fdee fix: showing perms of other entity 2025-07-04 14:43:17 +02:00
yannis
fab6619cbb fix: change only tokens in related entity 2025-07-04 14:21:50 +02:00
yannis
dcd4049a9a fix: precommit 2025-07-04 11:11:46 +02:00
yannis
c2ab33cfae fix: precommit 2025-07-04 10:17:00 +02:00
yannis
18068419de fix: php phan/stan 2025-07-04 09:54:34 +02:00
yannis
3d65bb7ed6 fix: precommit 2025-07-04 09:44:32 +02:00
yannis
e6ab4caf50 fix: trans 2025-07-04 09:39:37 +02:00
yannis
37e55af4bd Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-04 09:39:12 +02:00
yannis
0dce11a4f1 feat: improve delrights that remove perms to tokens 2025-07-04 09:35:42 +02:00
yannis
7a498c0c91 feat: remove perms when removed group 2025-07-03 17:13:39 +02:00
yannis
1ffdd5736a fix: error if user had no perms (himself/group) 2025-07-03 16:03:48 +02:00
yannis
b503f10c11 feat: not erasing token perms if user stil has them (himself<->group) 2025-07-03 15:43:59 +02:00
yannis
04609c0728 feat: avoid modif on token that is not for api service 2025-07-03 14:42:43 +02:00
yannis
0d75748e01 feat: ungrant perm to tokens if lost in group 2025-07-03 14:40:44 +02:00
yannis
598cac8d99 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-03 12:18:30 +02:00
yannis
25ca6582b2 feat: ungrant perm to tokens if lost in global 2025-07-03 12:10:19 +02:00
yannis
8b4c3ef80c fix: bad test that unable to create token 2025-07-03 12:08:46 +02:00
yannis
3efe26ac47 feat: replaced sql migration file by php upgrade2 2025-07-03 11:38:33 +02:00
yannis
f0be6e458c fix: php phan/stan 2025-07-02 16:58:44 +02:00
yannis
00187b3d7c feat: auto selected user at token creation if id set 2025-07-02 15:51:24 +02:00
yannis
bb32b29c4e Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-02 15:34:58 +02:00
yannis
4c51a4309e feat: api loading rights of specified token 2025-07-02 15:22:13 +02:00
yannis
389715777e feat: improve display entity name 2025-07-02 11:21:38 +02:00
yannis
e97a1f8efd feat: encrypt/decrypt token 2025-07-02 09:20:54 +02:00
yannis
ef96314026 fix: cancel button not working when comming from admin token list 2025-07-01 16:52:26 +02:00
yannis
f7f7532665 feat: show tokens from all entities if in master entity in admin 2025-07-01 16:18:00 +02:00
yannis
ec79241dc2 feat: multicompany display for token list 2025-07-01 16:09:12 +02:00
yannis
0814fb0201 feat: multicompany display for admin token list 2025-07-01 16:04:07 +02:00
yannis
61601c43d6 feat: multicompany display for token card 2025-07-01 15:56:10 +02:00
yannis
df3e872d3a feat: disable display when multicompany is not enable 2025-07-01 14:48:53 +02:00
yannis
d57ca1f2a7 feat: mass delete from admi token list 2025-07-01 14:46:13 +02:00
yannis
74acc59da5 feat: create token for choosen user as admin 2025-07-01 14:39:27 +02:00
yannis
40f838ba58 refactor: remove useless missing translation 2025-07-01 12:15:56 +02:00
yannis
2a452876b3 refactor: clean query and add missing filter 2025-07-01 12:11:37 +02:00
yannis
79d8b9a63e feat: all users token list tab in api admin page 2025-07-01 12:03:22 +02:00
yannis
f401767cc7 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens-sql 2025-07-01 10:07:56 +02:00
yannis
833bba723c refactor: change table name in sql query for pre-commit 2025-07-01 10:06:53 +02:00
yannis
c2ef82645a feat: protection from perm in token that user don't have 2025-07-01 09:56:24 +02:00
yannis
3d9a7fa894 feat: tokens list massaction delete 2025-07-01 09:33:12 +02:00
yannis
e67d3095ed Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-07-01 09:10:41 +02:00
yannis
deea6c174e feat: check if duplicate token key 2025-06-30 17:32:13 +02:00
yannis
61e24d82fc feat: query to import old user token to new implement with perms 2025-06-30 16:49:52 +02:00
yannis
dc01e804fa feat: update fields and date format display 2025-06-27 15:46:01 +02:00
yannis
d3ac2ed53b feat: manage display of massaction buttons 2025-06-27 10:21:08 +02:00
yannis
7f3b8abdc8 feat: show back missing add button 2025-06-27 09:58:29 +02:00
yannis
dcf300b4f8 feat: multicompany managing and list improve display 2025-06-27 09:38:28 +02:00
yannis
35ecdeb9c9 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-06-27 09:13:20 +02:00
yannis
f2bdfcecdb feat: token list sort/filter/page and improvments 2025-06-26 17:04:42 +02:00
yannis
7e163656ea feat: creation form and database storage 2025-06-26 10:57:52 +02:00
yannis
526de3276a feat: disable prev/next nav in token card 2025-06-26 09:23:24 +02:00
yannis
4a1fea5e07 feat: change token modif form to only delete button 2025-06-25 17:29:05 +02:00
yannis
eece31093d feat: avoid dupe perms 2025-06-25 16:47:21 +02:00
yannis
d44aa146f4 feat: loadRights now loads rights of token if specified 2025-06-25 16:37:48 +02:00
yannis
357eaeb53f feat: change place of api tab 2025-06-25 15:22:10 +02:00
yannis
98fd331085 feat: improve list display and show numperms and not string 2025-06-25 15:17:13 +02:00
yannis
01296323d8 feat: enabling all perms will not enable unallowed global perms 2025-06-25 15:08:29 +02:00
yannis
d157ebc27b feat: auto add/delete perm if needed lower disabled 2025-06-25 14:42:42 +02:00
yannis
de1e05e618 feat: changed redirect url that was not working 2025-06-25 14:39:59 +02:00
yannis
2c7f86151d Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-06-25 12:22:51 +02:00
yannis
931121dc22 feat: only show user perms in token perms settings 2025-06-25 12:18:45 +02:00
yannis
94bf6ed9fa feat: add delete rights working 2025-06-25 11:15:53 +02:00
yannis
5404bd6b16 feat: change var names for understandability 2025-06-25 11:12:38 +02:00
yannis
d597762f18 Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-06-24 17:33:22 +02:00
yannis
fa016210de feat: add card of token in user with token permission edition 2025-06-24 17:33:02 +02:00
yannis
a6e9a9ac14 fix: unique key violated when enabling api keys for user 2025-06-24 16:38:12 +02:00
yannis
2143f303fa Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into new-api-rest-tokens 2025-06-24 12:13:40 +02:00
yannis
336a4c57e0 refactor: clean code 2025-06-24 11:40:42 +02:00
yannis
b770bd01b3 feat: added massaction option 2025-06-24 11:21:15 +02:00
yannis
42fceb4d05 feat: token list tab working 2025-06-23 16:32:34 +02:00
yannis
c46f09cac8 feat: change token to checkbox for api on user 2025-06-23 14:11:02 +02:00
3404 changed files with 97432 additions and 34138 deletions

10
.gitattributes vendored
View File

@@ -39,20 +39,20 @@
# Export ignores to generate clean production tarballs
/build export-ignore
/dev export-ignore
/doc export-ignore
/test export-ignore
/.github export-ignore
/.phan export-ignore
/.tx export-ignore
.buildpath export-ignore
/build.xml export-ignore
.codeclimate.yml export-ignore
Dockerfile export-ignore
.dockerignore export-ignore
.editorconfig export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.mailmap export-ignore
.scrutinizer.yml export-ignore
.pre-commit-config.yaml export-ignore
.settings export-ignore
.travis.yml export-ignore
.tx export-ignore
Dockerfile export-ignore

View File

@@ -136,9 +136,9 @@ If your PR is a change on interface, you must also paste a screenshot showing th
#### Examples
<pre>
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
FIX|Fix #456 Short description (where #456 is number of bug fix, if an issue ID exists, or #xxx456 with xxx as the name of the VDP platform in lower case for security issues. The "Fix" must be in upper case to appear into ChangeLog)
or
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. The "Close" must be in upper case to appear into ChangeLog)
or
NEW|New|QUAL|Qual|PERF|Perf Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #xxx)
or

View File

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

View File

@@ -0,0 +1,29 @@
---
# This is a basic workflow to check the lock on major version (to lock some files on certified versions)
name: Check fileset lock
on: [push, pull_request]
concurrency:
group: check-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
checkmajorversion:
name: Check lock on fileset unalterable_files with generate_filelist_xml.php
runs-on: ubuntu-latest
# Do not run schedule on forks
if: |
github.repository == 'Dolibarr/dolibarr'
|| github.event.schedule == false
steps:
- uses: actions/checkout@v6
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none # disable xdebug, pcov
- name: Run generate_filelist_xml.php
run: |
# shellcheck disable=2086
dev/build/generate_filelist_xml.php checklock=auto unalterable_files

24
.github/workflows/ci-on-release.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: "CI-RELEASE"
on:
release:
types: [published]
jobs:
trigger-docker:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.RELEASE_DOCKER_ID }}
private-key: ${{ secrets.RELEASE_DOCKER_SECRET }}
- uses: peter-evans/repository-dispatch@v4
with:
token: ${{ steps.generate-token.outputs.token }}
repository: Dolibarr/dolibarr-docker
event-type: new-release
client-payload: '{"version": "${{ github.event.release.tag_name }}"}'

View File

@@ -33,7 +33,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
@@ -47,7 +47,7 @@ jobs:
# Restore old cache
- name: Restore phpstan cache
id: cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: ./.github/tmp
key: phpstan-cache-${{ env.PHP_VERSION }}-${{ env.CACHE_KEY_PART }}-${{

View File

@@ -13,7 +13,7 @@ on:
workflow_dispatch:
concurrency:
group: phan-${{ github.workflow }}-${{ github.ref }}
group: phan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
@@ -33,14 +33,33 @@ jobs:
github.repository == 'Dolibarr/dolibarr'
|| github.event.schedule == false
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
# Another method to get the list of changed files
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
- name: Get all changed php files (if PR)
id: changed-php
if: env.gh_event == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/scripts/get_changed_php.sh
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none # disable xdebug, pcov
tools: phan
tools: phan:5.5.2
- name: Run Phan analysis
if: "! cancelled() && steps.changed-php.outputs.any_changed == 'true'"
env:
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
# shellcheck disable=2086
run: |
# shellcheck disable=2086
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github
> /tmp/phpstan-files.txt
for f in $ALL_CHANGED_FILES; do echo "$f" >> /tmp/phan-files.txt; done
cat /tmp/phan-files.txt
echo phan --file-list /tmp/phan-files.txt $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github
phan --file-list /tmp/phan-files.txt $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github

View File

@@ -37,7 +37,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@v5
- uses: actions/checkout@v6
# Get PHP and addons
- name: Setup PHP
id: setup-php
@@ -52,7 +52,7 @@ jobs:
# Restore old cache
- name: Restore phpstan cache
id: cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: ./.github/tmp
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{
@@ -62,31 +62,61 @@ jobs:
phpstan-cache-${{ matrix.php-version }}-${{ github.head_ref }}-
phpstan-cache-${{ matrix.php-version }}-${{ github.base_ref }}-
phpstan-cache-${{ matrix.php-version }}-
- name: Show debug into
run: cd ./.github/tmp && ls -al
# Another method to get the list of changed files
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
- name: Get all changed php files (if PR)
id: changed-php
if: env.gh_event == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/scripts/get_changed_php.sh
#- name: Get changed PHP files
# id: files
# run: |
# git fetch origin ${{ github.base_ref }}
# FILES=$(git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep '\.php$' || true)
# {
# echo "files<<EOF"
# echo "$FILES"
# echo "EOF"
# } > "$GITHUB_OUTPUT"
# Run PHPStan
- name: Run PHPStan
id: phpstan
if: "! cancelled() && steps.changed-php.outputs.any_changed == 'true'"
env:
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
# shellcheck disable=2086
run: |
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php | tee _stan.xml | cs2pr --graceful-warnings
# shellcheck disable=2086
> /tmp/phpstan-files.txt
echo "$ALL_CHANGED_FILES" >> /tmp/phpstan-files.txt
cat /tmp/phpstan-files.txt
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES} | tee _stan.xml | cs2pr --graceful-warnings
# continue-on-error: true
# Save cache
- name: Save phpstan cache
uses: actions/cache/save@v4
uses: actions/cache/save@v5
if: ${{ success() || ( ! cancelled() && steps.cache.outputs.cache-hit != 'true' ) }}
with:
path: ./.github/tmp
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{
github.run_id }}
- name: Provide phpstan log as artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: ${{ always() }}
with:
name: phpstan-srcrt
path: ${{ github.workspace }}/_stan.xml
retention-days: 2
# Run PHPStan generate baseline
# - name: Run PHPStan generate baseline
# id: phpstan-baseline

View File

@@ -12,8 +12,7 @@ on:
workflow_dispatch:
concurrency:
group: pre-commit-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref
}}
group: pre-commit-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
gh_event: ${{ inputs.gh_event || github.event_name }}
@@ -30,7 +29,7 @@ jobs:
# if: false
# Checkout git sources to analyze
- uses: actions/checkout@v5
- uses: actions/checkout@v6
# Try to get the list of modified files into steps.changed-php.outputs.all_changed_files
#- name: Get changed files
@@ -75,7 +74,7 @@ jobs:
- run: python -m pip install pre-commit
# Restore previous cache of precommit
- uses: actions/cache/restore@v4
- uses: actions/cache/restore@v5
with:
path: ~/.cache/pre-commit/
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
@@ -109,12 +108,16 @@ jobs:
coverage: none # disable xdebug, pcov
tools: phpcs
# Install perltidy and perlcritic
#- name: Install perltidy and perlcritic
# run: sudo apt-get update && sudo apt-get install -y perltidy libperl-critic-perl
# Run all the precommit tools (defined into pre-commit-config.yaml).
# We can force exclusion of some of them here.
- name: Run pre-commit hooks
env:
# SKIP is used by pre-commit to not execute certain hooks
SKIP: no-commit-to-branch,php-cs,php-cbf,trailing-whitespace,end-of-file-fixer
SKIP: no-commit-to-branch,php-cs,php-cbf,trailing-whitespace,end-of-file-fixer,shellcheck
run: |
set -o pipefail
pre-commit gc
@@ -153,20 +156,20 @@ jobs:
ls -l ~/.cache/pre-commit/
- name: Convert Raw Log to Annotations
uses: mdeweerd/logToCheckStyle@v2025.1.1
uses: mdeweerd/logToCheckStyle@v2025.11.2
if: ${{ failure() }}
with:
in: ${{ env.RAW_LOG }}
# Save the precommit cache
- uses: actions/cache/save@v4
- uses: actions/cache/save@v5
if: ${{ ! cancelled() }}
with:
path: ~/.cache/pre-commit/
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
# Upload result log files of precommit into the Artifact shared store
- name: Provide log as artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: ${{ ! cancelled() }}
with:
name: precommit-logs

View File

@@ -37,7 +37,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
@@ -57,7 +57,7 @@ jobs:
# Restore cache
- name: Restore cache
id: cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
env:
HASH: ${{ hashFiles('htdocs/install/**', 'htdocs/filefunc.inc.php', 'htdocs/version.inc.php') }}
KEY_ROOT: ${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}
@@ -167,13 +167,13 @@ jobs:
for /f "tokens=2 delims==" %%A in ('doskey /m:err') do EXIT /B %%A
- name: Convert Raw Log to Annotations
uses: mdeweerd/logToCheckStyle@v2025.1.1
uses: mdeweerd/logToCheckStyle@v2025.11.2
if: ${{ failure() }}
with:
in: ${{ env.PHPUNIT_LOG }}
- name: Provide dolibarr and phpunit logs as artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: ${{ ! cancelled() }}
with:
name: win-ci-logs
@@ -187,7 +187,7 @@ jobs:
# Save cache
- name: Save cache
uses: actions/cache/save@v4
uses: actions/cache/save@v5
if: ${{ ! cancelled() }}
with:
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178

View File

@@ -1,9 +1,9 @@
---
exclude: (?x)^( htdocs/includes/ckeditor/.*|(\.(?!github/workflows)[^/]*/.*))$
exclude: (?x)^( htdocs/includes/ckeditor/.*|htdocs/public/includes/ckeditor/.*|(\.(?!github/workflows)[^/]*/.*))$
repos:
# Several miscellaneous checks and fix (on yaml files, end of files fix)
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
# This hook tests the name of the branch and return an error if the name is
# 'develop' or an official version 'x.y'
@@ -60,15 +60,15 @@ repos:
# Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys, and tokens in git repos
- repo: https://github.com/gitleaks/gitleaks.git
rev: v8.24.0
rev: v8.29.0
hooks:
- id: gitleaks
# Check github actions
- repo: https://github.com/rhysd/actionlint
rev: v1.7.7
hooks:
- id: actionlint
#- repo: https://github.com/rhysd/actionlint
# rev: v1.7.8
# hooks:
# - id: actionlint
# Beautify shell scripts
- repo: https://github.com/lovesegfault/beautysh.git
@@ -193,7 +193,7 @@ repos:
# Check format of yaml files
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.36.2
rev: v1.37.1
hooks:
- id: yamllint
args:
@@ -245,11 +245,11 @@ repos:
- ned
# Check some shell scripts
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
args: [-W, "100"]
#- repo: https://github.com/shellcheck-py/shellcheck-py
# rev: v0.11.0.1
# hooks:
# - id: shellcheck
# args: [-W, "100"]
# Check sql file syntax
- repo: https://github.com/sqlfluff/sqlfluff
@@ -274,3 +274,22 @@ repos:
|htdocs/install/pgsql/functions/functions.*\.sql
|htdocs/modulebuilder/template/sql/.*\.sql
)$
#- repo: https://github.com/perltidy/perltidy
# rev: '20250105.03'
# hooks:
# - id: perltidy
# # virtualmin excuded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823
# exclude: (?x)^
# (dev/build/perl/virtualmin/dolibarr.pl
# )$
# args: [ --tabs, --nola ]
#- repo: https://github.com/henryykt/pre-commit-perl
# rev: v0.0.5
# hooks:
# - id: perlcritic
# # virtualmin excluded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823
# exclude: (?x)^
# (dev/build/perl/virtualmin/dolibarr.pl
# )$

View File

@@ -535,9 +535,9 @@ script:
echo
- |
echo Show some debug info like table content or log
#echo '\d llx_adherent' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
cat $TRAVIS_BUILD_DIR/upgrade18001900.log
echo Show some debug info, like table content, or migration log from some versions
echo '\d llx_blockedlog' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
cat $TRAVIS_BUILD_DIR/upgrade500600.log
cat $TRAVIS_BUILD_DIR/upgrade19002000.log
echo
@@ -557,6 +557,7 @@ script:
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_RECEPTION,MAIN_MODULE_RECRUITMENT >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_KnowledgeManagement,MAIN_MODULE_EventOrganization,MAIN_MODULE_PARTNERSHIP >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_EmailCollector >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_BlockedLog >> $TRAVIS_BUILD_DIR/enablemodule.log
echo $?
cd -
set +e
@@ -570,6 +571,8 @@ script:
# Execute phpunit, check its exit status and that the phpunit output shows a test summary
phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php | tee /dev/tty | grep -qE "(OK .*[0-9]+ tests.*[0-9]+ assertions|Tests: [0-9]+)" ; phpunitresult=$((PIPESTATUS[0]?PIPESTATUS[0]:PIPESTATUS[2]))
echo "Phpunit return code = $phpunitresult"
echo "Content of end of apache error.log"
sudo tail -n 200 /var/log/apache2/travis_error_log
# Comment next line if you want to go to the end to see the dolibarr.log file.
[ $phpunitresult == 0 ] || exit $phpunitresult
echo

401
ChangeLog
View File

@@ -6,34 +6,407 @@ English Dolibarr ChangeLog
For users:
----------
NEW: Need PHP 7.2 as minimum version
NEW: Module datapolicy moved as stable (for anonimization features)
NEW: #31723 - Improve project overview: Hide paid orders (#35524)
NEW: #35700 : Throw an error when validating a propal, order, supplier with a product no more in sale/purchase… (#35709)
NEW: Accountancy - Accounting by payment type (#34729)
NEW: Accountancy - Add accounting for discounts (#35977)
NEW: Accountancy - Add a protection on various payment for auxiliary account on general account not centralized (#35720)
NEW: Accountancy - Add field centralized on import/export (#35872)
NEW: Accountancy - Add hook on export filename (#35188)
NEW: Accountancy - Add reconcile on general accounting account - SQL part (#35994)
NEW: Accountancy - Analytical axis (SQL Structure) (#34738)
NEW: Accountancy - Manual input - Add script to greyed out subledger_account if general ledger is not centralized (#35855)
NEW: Accountancy - Transaction - Add verification on centralized account (#35824)
NEW: Accountancy - Various payment - Add script to greyed out subledger_account if general ledger is not centralized (#35842)
NEW: Add a boolean for lines in api and $properties (#34293)
NEW: Add accounting export mode for ISTEA (#36006)
NEW: add a limit to avoid too many answer in agenda view. Add warning if limit has been reached.
NEW: Add a page to edit http security headers of application (#34941)
NEW: Add auto-reference generation for tasks (like in project) in API (#35981)
NEW: Add column ref_ext and note_private for membership
NEW: Add column thirdparty ref_customer and ref_supplier in project list
NEW: Add column title in emailing and add more filters
NEW: add combining characters (accents, cedilla...) codes in dol_string_unaccent() (#35130)
NEW: add company date birth (SQL structure) (#34854) (UI) (#34861)
NEW: add conditional supplier price display (#35900)
NEW: Add configuration for default timesheet menu (#35805)
NEW: Add contact tab on product service (#35914)
NEW: Add directory navigation to Web Portal Shared Documents (#35443)
NEW: Added Messaging and agenda tabs on order and shipments (#34859)
NEW: Add event when installing a module in the security event list.
NEW: add extrafield option "empty on clone" (#34866)
NEW: add fields usage_opportunity, usage_task, usage_bill_time for project import (#35301)
NEW: Add filter on agenda event progression on agenda page
NEW: add free numbering module for members (#35636)
NEW: add global search for resource object (#36043)
NEW: add hidden const to get response header in geturlcontent function (#34781) (#34824)
NEW: add hook getListOfModels (#34626)
NEW: Add hook on calcula_price() and get_default_tva()
NEW: Add hooks in webportal (#35326)
NEW: add hook when printing new card button on thirdparty list (#36350)
NEW: add hourly rate in list of users
NEW: Add missing parameters for menus on webportal hook (#35550)
NEW: Add option PDF_PURCHASE_INVOICE_HIDE_VAT
NEW: Add option PROJECT_CAN_ALWAYS_LINK_TO_ALL_CUSTOMERS
NEW: Add option to create simple standalone shipment of non origin (#35651)
NEW: Add option to create standalone reception (#36134)
NEW: add private and public note on ticket (#35303)
NEW: add product_type field on fichinter (preparing subtotal) (#36196)
NEW: Add regions for CONGO, THE DEMOCRATIC REPUBLIC OF THE;CD (#36340)
NEW: ADD Send mail for reception / Delivery (#34829)
NEW: Add setup page to concat natively files on invoice PDF.
NEW: add shipping address to propal (#34441)
NEW: Add Sign feature on shipments (#34640)
NEW: Add sms reminder in reminder of agenda events (#35239)
NEW: Add SQL table for expensereport line extrafields support (#36251)
NEW: add supplier invoice, order and supplier order tag filter and bulk insert and statistics order and supplier order (#35399)
NEW: add supplier payment mail template (#35877)
NEW: add tags on proposals and supplier proposals and in statistics (#35553)
NEW: Add task categories 1/3 (#35848)
NEW: Add tasks card hooks (#35616)
NEW: Add the "Dispute status" in list of invoice.
NEW: add the option to not synchronize thirdparty <--> member (#36033)
NEW: Add the widget funnel of opportunities
NEW: Add tpl files for standalone shipment (#35624)
NEW: Add tpl loader for discounts.tpl.php (#34798)
NEW: Add Transfer Number (#35665)
NEW: Add Type, Description columns to Project Overview Expense Reports (#36214)
NEW: Add user permission for create/edit/delete supplier prices (#35940)
NEW: Allow omission of ODT template name when generating ODT and PDF (#35701)
NEW: Better navigation and report into database admin tools
NEW: Button to create a proposal and sale order from a contract always on
NEW: Can add info of main IT service provider in setup.
NEW: can admin payments extrafields (#34822)
NEW: Can drag and drop in BOM card
NEW: Can force_install_dolibarrpassword for automatic installation (#34537)
NEW: Can have a tooltip picto on title of column and keep autotruncation of label. Tooltip is show at begin of text.
NEW: Can show both currency code and symbol into the select of currency
NEW: Can sort on employee in holiday balance. Add link to go to history.
NEW: Can update value of timespent with last task hourly rate (#36018)
NEW: Can urlencode substitution variable of constants
NEW: Can view/list/edit the dispute status of an invoice
NEW: Change the path for the mailing files (#34878)
NEW: Constant ORDER_MASS_ACTION_BILLED_LINK_EXPEDITIONS (#34617)
NEW: const MENU_HIDE_EMAIL_TEMPLATES to hide email templates setup in Tools menu (#35739)
NEW: Create simple shipment of non origin (#35604)
NEW: Currency for the Democratic Republic of Congo added. (#36104)
NEW: Customized step in duration select (#34652)
NEW: Dashboard - Add option in ihm to disable MRP thumb (#36185)
NEW: date function related to holiday can accept country id in addition to country code
NEW: DEV Can set color of the on/off button.
NEW: Disable by default obfuscation methods and function in extrafields evaluable strings. Can re-enable with MAIN_ALLOW_OBFUSCATION_METHODS_IN_DOL_EVAL=1
NEW: Discount split more than two parts (#34782)
NEW: Display company logo on kanban view (#34520)
NEW: dol_sort_array can be used with 2 sorting criteria.
NEW: Enhanced layout feature for emailing
NEW: Enhance popup for image preview (show size in title, can restore small view, always show the Rotate button).
NEW: Enhance the system for warnings on module activation
NEW: execute hook addMoreActionsButtons on bank card (#35598)
NEW: extrafields: add field to link a field to a module (#34416)
NEW: Feature to merge duplicate members (#35308)
NEW: generate renewal proposal for contracts (#35120)
NEW: Holiday - Allow to specify a specific mail address from (#36184)
NEW: hook allowing external modules to replace the behavior of fetchObjectLinked() (#34724)
NEW: hooks `showInputExtraField` and `showOutputExtraField` to override ExtraFields::show(Input|Output)Field (#35496)
NEW: implement box on product and interventional index page (#34629)
NEW: import subscriptions (#35612)
NEW: Introduce getCurrency(). $conf is no more allowed into computed formulae.
NEW: Invert logic of default date in proposal/order/invoice creation: Need option to NOT autofill instead of the opposite.
NEW: line input multicurrency price with tax (#35064)
NEW: Major overhaul of DataPolicyCron and add Recruitment policy (#34704)
NEW: Make the public contact form with experimental status
NEW: Minimal version of PHP is now 7.2
NEW: More index for memberships table
NEW: More information on the user credential section
NEW: More webportal feature - Can add shared files and thirdparty documents (#35391)
NEW: New hook mergePdf (#34707)
NEW: On invoice, show also nb of credit notes notyet converted for consumption
NEW: Option to clone parent categories on variant creation (#35806)
NEW: Output of category tag is nicer for long subcategories.
NEW: Parent project column in list of projects (#36177)
NEW: Paymentok validate invoice if not already done (#35564)
NEW: PDF Show customer balance on invoice date (#34800)
NEW: possibility to define global entity in user param (#35908)
NEW: Add messaging and agenda features to proposals (#34883)
NEW: public and private note can be shown on contact list
NEW: Public donation page (#35565)
NEW: public pages donation, ticket and member use captcha setup (#35913)
NEW: Rework of the management of the card and fields on the web portal (#36076)
NEW: Save the BAN and RUM for SEPA into database not just file.
NEW: search all facture rec (#34563)
NEW: Show cron last result and output in info (#36028)
NEW: Show full date with seconds in the tooltip of date of event
NEW: Show the link to download the zip of a module on module setup
NEW: Show warning on banner when an email is not valid
NEW: The check file feature can limit check on unalterable files only
NEW: The flag "Dispute open" make the status in Red.
NEW: The PHP info is in a popup in install page.
NEW: update country list (#34865)
NEW: Update Incoterms to 2025 standards and add new terms (#36041)
NEW: Upgrade ACE editor to 1.43.12
NEW: User/Date in the Follow tab are more condensed.
NEW: We added a hook to allow us to modify the Prospect Customer drop down… (#25635)
NEW: Withholdingtax how VatRefund (#34649)
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.
NEW: Introducing the TRIGGER_PREFIX property to force developers to use unique triggerkey per business object, to limit code to business CRUD events and report warning when it is not.
NEW: add extraparams field in llx_categorie (#35975)
NEW: Add prepare() method to DoliDB class (rebuild) (#35249)
NEW: Add function to split a discount in 2 by API REST (#34786)
NEW: Add a new API "product lots" (#36243)
NEW: Add API for Holidays/Leaves
NEW: add api for members statistics (#35851)
NEW: add api List VAT (#35920)
NEW: add api_paiements.class.php (#34756)
NEW: document API builddoc product
NEW: Add contact management on project Api (#35459)
NEW: Add contact support on products in REST API (#35925)
NEW: Add country ID resolution from country code for thirdparty api (#36345)
NEW: Add getcontacts on api of interventional and proposal (#35589)
NEW: Add hook initialization for interventions API (#35203)
NEW: Add option API_ENABLE_COUNT_CALLS
NEW: Add thirdparty search on api list (#34634)
NEW: add timespent API endpoints for projects and tasks add also cascading assignment of contacts to tasks (#35897)
NEW: add upload api feature for shipment (#34639)
NEW: Allow creating contact via api with ISO code (#36322)
NEW: API endpoint for getting products in a warehouse (#35918)
NEW: API for getting, adding, deleting and/or modifying email templates (#35853)
NEW: API for handling mass mailing targets (#35603)
NEW: API GET endpoint for thirdparties types listing (c_typent) (#34751)
NEW: Api mass emailing (#35531)
NEW: API user/groups/ POST, PUT, DELETE + some hurl tests (#35903)
NEW: API User - Remove user from group (#35453)
NEW: Implement listTimespent method in api_projects.class.php (#36093)
NEW: qual fixes on api contract (#36066)
NEW: stock API GET movement (#36193)
NEW: action to clone ticket
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 deprecated column "egroupware_id" has been dropped from table llx_user.
* 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)"
* 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 just a tooltip that is no more visible when mous over the contract ref shown by your module.
* Removed array $MAP_ID_TO_CODE that was a duplicate of the 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.
* Function img_pdf() has been removed. Replace it with img_picto('', 'pdf.png') if you were using it.
* Adding new "document generation 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. No resource was used by Dolibarrfrom this directory.
* The library timepicker.js has been removed. Was no more used by Dolibarr since a long time.
* Because of the new TRIGGER_PREFIX property, the triggers SUPPLIER_PRODUCT_BUYPRICE_XXX are renamed into PRODUCT_BUYPRICE_XXX.
* Function img_pdf() has been removed. Replace it with img_picto('', 'pdf') if you were using it.
* The method run_trigger() was deprecated 10+ years ago in favor of runTrigger(). It has been removed. Change your trigger file if you still use it.
* Property ->picto of module descriptors must contains the image extension if it is not a font awesome tag. Example: $this->picto="mymoduleimg.png";
* Stock movement API GET method output variable names have been harmonized with POST input parameter names
* Stock movement API GET method output variable names has been harmonized with POST input parameter names
* Concatenation into computed property of extrafields is off by default. You can enable it from conf.php file by adding dol_concat to list of allowed function in $dolibarr_main_restrict_eval_methods,
For example: $dolibarr_main_restrict_eval_methods='getDolGlobalString,getDolGlobalInt,getDolCurrency,fetchNoCompute,hasRight,isModEnabled,isStringVarMatching,abs,min,max,round,dol_now,dol_concat,preg_match';
* Old variable $obj and $object are no more allowed into on the fly evaluated strings like computed or conditions on extrafields. Use $objectoffield to get current object
Also if you were using temporary variables int a computed extrafields, the nameot temporary variable must match $var123.
* The hidden constant MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL in database has been replaced with the
variable $dolibarr_main_allow_unsecured_special_chars_in_dol_eval into file conf/conf.php
* $conf use into "computed formulae" of etrafields is now deprecated (not yet forbidden). You can replace use of $conf->currency by the new method getCurrency() and $conf->global->xxx by getDolGlobalString('xxx').
* $user->rights->module->perms is also deprecated. You can use $user->hasRight() instead.
* The API endpoint /proposals/{id}/contact/{contactid}/{type}/{source} is now {id}/contact/{contactid}/{type} to match same behaviour than order and invoices.
* The API endpoint /interventions/{id}/reopen hase been removed in favor of /interventions/{id}/settodraft
* If the module geoipmaxmind is used, you must resubmit the geoip data file as it is now stored differently.
***** ChangeLog for 22.0.4 compared to 22.0.3 *****
FIX: $param is the 5th parameter of print_liste_field_titre ($moreparam) (#36250)
FIX: 17.0: perweek.php resets task progress to 0% when: (#36401)
FIX: 18.0: GETPOSTDATE and buildParamDate assumed HTTP param names 'minute' and 'second' instead of 'min' and 'sec'
FIX: 19.0 - attachments upload dir for invoices not always determined correctly (doesn't always take multi-entity into account) (#36302)
FIX: #33148 - partial payments are taken into account in EPC QR codes (#36338)
FIX: #33899 API Timespent Service Field
FIX: #35061
FIX: #35096 #36393 Add minimal fields required asthe class is used by
FIX: #35141 (#36390)
FIX: #35375 Accountancy - SQL error on empty filter account category
FIX: #35655 API Contract Creation Fails for Non-Admin Users in Version 22.0.2
FIX: #36090 Accountancy - Inconsistent date on various journal
FIX: #36149 (#36150)
FIX: #36310 Accountancy - Data - Wrong account labels (cache) on write bookkeeping action (#36410)
FIX: #36334 - reload invoice data before pdf-creation in process of generating a new member contribution (#36335)
FIX: #36347 (#36358)
FIX: #36368 - avoid overlaying of EPC-QR Code and payment information (#36369)
FIX: #36576 - date creation is empty on import
FIX: Accountancy - #36090 Inconsistent date on various journal
FIX: Accountancy - No limit on chart of account to define category on account
FIX: Accountancy - Not propose to write operation on draft asset
FIX: Accountancy - Problem calculating exercises with different tax periods on fixed assets
FIX: Accountancy - Problem calculating fiscal year with different periods on fixed assets
FIX: Accountancy - Reverse accounting account in depreciation expense entries for fixed assets
FIX: Accountancy - Verify fiscal year on last hour to enable the integration of asset entries
FIX: allow a situation with credit to be removed from cycle
FIX: API task getTimeSpent to actually return data
FIX: avoid php warning error (#36330), avoid php warnings (#36301), (#36411)
FIX: Can Validated Holidays When Negative Balance
FIX: Concat of PDF to invoices (#36329)
FIX: create API temp directory in Dolibarr API constructor
FIX: DA027383: permissions not checked on HRM evaluation card (#36328) (#36399)
FIX: do not force rowid to int (#36412)
FIX: Email Collector Module: manage error when imap_fetchstructure return false. Previously it generated warning and fatal error because the returned value was not of type class
FIX: empty origin type passed to addline when creating invoices from expeditions using massaction (confirm_createbills) (#36413)
FIX: expense report card: do not show bank account if user cannot see them
FIX: expense report card: use correct bank module designator for detection
FIX: Export of extrafield in organized events
FIX: fix #36401 (for v17.0) doesn't work in v18.0+ because of variable renaming
FIX: | Fixing addPayment /invoices/id/payments
FIX: getEntity use element instead table_element (#36405)
FIX: Implementation of multi-company compatibility with inventory/warehouse management
FIX: info on supplier payment card on v22 and payment link
FIX: keep user who validate proposal on update (#36257)
FIX: List is filtered on task status when it should not
FIX: Missing AND on fields filter on evaluation class
FIX: missing p.default_vat_code in product import profile.
FIX: Missing Product ref in Bom stats
FIX: Mo::deleteLine() - stock movement correction (#34733)
FIX: Multicompany compatibility with "project_task"
FIX: not remove value of others extra-fields on update extras action
FIX: Object should be cloned here (#36289)
FIX: PR#36401 fixed a missing GETPOSTISSET() but the check involves a variable ($taskid) that was renamed ($tmptaskid) in 18.0
FIX: (propal): Incorrect HT/TTC recalculation when editing proposal lines #36514
FIX: (propal): values lost when editing HT price
FIX: propal shipping and availability update (v18+)
FIX: re-create API temp dir after purging temp files
FIX: remove situation invoice from cycle
FIX: remove useless condition to create credit on situation invoice (#35786)
FIX: Search all for supplier proposals via object reference
FIX: Selection of email when prefilled from a template
FIX: SQL error for LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED
FIX: subtotal feature button availability according setup
FIX: TakePOS Missing Thirdparty Id when getting more products (#36341)
FIX: (tasks): dates in gantt view
FIX: undefined variables on create invoice card from order (backport from v19) or shipment card (backport from v20)
FIX: use array_intersect instead in_array
FIX: warning on select
FIX: wrong $param parameter position (#36265)
SEC: 7ed0af2a138a34e7c7005b95c85ffc791976a6cf
SEC: empty commit for CI automata
SEC: FIX: #36430 permissions not checked on other tabs of HRM evaluation card
SEC: fix IDOR attack on employee evaluation. Missing permission test https://github.com/atm-florianm/dolibarr/commit/7ed0af2a138a34e7c7005b95c85ffc791976a6cf
SEC: permissions not checked on other tabs of HRM evaluation card
***** ChangeLog for 22.0.3 compared to 22.0.2 *****
FIX: 16.0: extrafield of type link to category causes SQL error in selectForFormsList() (#36074)
FIX: 20.0 ajax_constantonoff + FormSetup were ignoring custom css class (cssClass / $morecss) (#36039)
FIX: #33741 FIX: #35632
FIX: #35247 FIX: #35950 Using same option for landing page and home page
FIX: #35519 (security) missing check user rights (#35527)
FIX: #35520 FIX: #35522
FIX: #35568 (#35569)
FIX: #35573 FIX: #35241
FIX: #35634 (#35912)
FIX: #35766: Update buying price INT Float (#35769)
FIX: #35780
FIX: #35782
FIX: #35784
FIX: #35922 Lines of orders - Status filter unexpected beahavior (#35924)
FIX: #36025 Accountancy - Error when cloning directly from accounting entry (#36034)
FIX: #36046 enabling extrafieldmanaged to enable deletion of records from the llx_salay_extrafields table
FIX: #36113 (#36116)
FIX: access problem when label is used for next/prev (#35933)
FIX: Accountancy - Admin personalized report - Remove duplicate button (#35721)
FIX: Accountancy - General setup - Missing form on UpdateMask (#35735)
FIX: Accountancy - Missing subledger information on mass cloning (#35777)
FIX: Accountancy - Printing the subsidiary ledger returns the general ledger (#35719)
FIX: Accountancy - Print subledger balance return general balance (#35712)
FIX: Accountancy - Problem with general setup (#36067)
FIX: Accountancy - Return on wrong page on y/n button (#35978)
FIX: Add missing left join to filter by extrafields (#36092)
FIX: add possibility to override authoritative dns (#35699)
FIX: Allow decimals on services duration (#36031)
FIX: avoid link problem with employee list context (#36125)
FIX: avoid NULL value (#36126)
FIX: avoid php warning (#35756)
FIX: avoid php warning (#35953)
FIX: avoid php warnings (#35492)
FIX: Bad label for column title on multicurency
FIX: bad name for target import table (#35615)
FIX: broken feature ! (#35906)
FIX: Can approve holidays when negative balance (#36144)
FIX: categories: sql error in link extrafields targettings categories (#36236)
FIX: check if category module is enabled (#35770)
FIX: check if service is activated only for api product (#35911)
FIX: check if zip file of website exists (#35879)
FIX: Clear filter
FIX: clone of cron tasks
FIX: conflict between $user->id and $object->id (#36225)
FIX: create invoice from order using API and multi-entity (#35654)
FIX: day of ticket on takePOS. Backport 6abdb6e. (#35745)
FIX: Deletion of a donation. Button was disabled.
FIX: detection of setup not done with
FIX: dol_escape_htmltag in extrafields_view (#36136)
FIX: doubled display of PRoduct Stokable checkbox when STOCK_SUPPORTS_SERVICES on service edit card (#36138)
FIX: Email template fetching (#35738)
FIX: Error 500 on api if cache is on and directory does not exists
FIX: extra-field list depend on parent extra-filed list on direct edit (#35803)
FIX: filter on note lost when sorting company list
FIX: Hide AWP if product has no stock managed
FIX: Import/Export - Do not list imports or exports of Builder module backups of module descriptor files (#36192)
FIX: In shipment creation process, if product is not manage in stock, Dolibarr should not display a "low stock warning" (#36139)
FIX: in shippement creation with SHIPMENT_SUPPORTS_SERVICES and/or STOCK_DISALLOW_NEGATIVE_TRANSFER and/or stockable_product there are inconsistencies (#36140)
FIX: Invoice Situation - Octopus - Column offset for amounts greater than 5 digits (#36124)
FIX: Invoice Situation - Octopus - Shipping block overlap issue (#36122)
FIX: Invoice Situation - Octopus - Show remaintopay at bottom (#36121)
FIX: invoices payments on multicurrencies being converted as int (#35622)
FIX: Knowledge management - Button ReOpen show in draft mode (#36008)
FIX: Label shown when value is empty
FIX: late customer orders are not shown on start page (#36200)
FIX: link to sort of target email page
FIX: MAIN_AUTOFILL_DATE in supplier invoice display 01/01/1970 (#36087)
FIX: MAIN_SEE_SUBORDONATES sql request error (#35896)
FIX: Missing begin transaction, The status of customer was not
FIX: missing check if partership is enabled (#36169)
FIX: missing entity field (#36086)
FIX: missing entity filter (#35517)
FIX: missing entity filter (#35857)
FIX: missing entity filters + wrong widget name (#35873)
FIX: missing "printFieldListValue" hook (#35990)
FIX: missing prospect/customer category translation (#35814)
FIX: Must show unit price when price is not for quantity 1
FIX: muticompany compatibility (wrong sharing name) (#36013)
FIX: my previous fix was incompatible with Thomas' fix from PR#35590 (#35890)
FIX: no emails sent when closing a ticket (#35874)
FIX: notification email not sent : NOTIFICATION_EMAIL_FROM is replaced with MAIN_MAIL_EMAIL_FROM if it's empty (#35881)
FIX: notifications: correctly report email delivery errors (#35864)
FIX: not possible to search for billed and not billed supplier orders in the list (#35680)
FIX: Perf for bom select (#35871)
FIX: Performance Problem on load stats command (#35785)
FIX: pgsql: error when calculating depreciations (#34213)
FIX: php 8+ warnings when creating deposits (#35582)
FIX: prices must be HT in dolistore browser
FIX: product stock lists: prevent SQL error when filtering on physical stock (#36038)
FIX: resize iban column to support encryption (#36237)
FIX: Select correct approver when making a leave request for someone else (#36118)
FIX: Situation percent set as 0 when adding line on situation invoices (#35999)
Fix: sql error if LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED is used (#36135)
FIX: sql syntax error (#35588)
FIX: Status if thirdparty not synchronized with status WON of
FIX: substitutions on subject of the sent email reminder of the event (#35621)
FIX: The IBAN into EPC qr code must use the default bank account if not
FIX: The order closing date was not filled in during the shipment validation (workflow module). (#36235)
FIX: The status of customer was not synchronized with opportunity status
FIX: thirdparty was never notified. Passing of contact ID information was not coherent. (#35590)
FIX: To have only the sender's entity when sending mail (#31053)
FIX: when creating a ticken on backend and adding a linked file, the 'notify thirdparty at creation' chackbox disappears. (#35595)
FIX: when display in view mode HTML extrafeilds content doubled (#36127)
FIX: Wrong cast on TVA rate when updating supplier order lines (#36106)
FIX: wrong check of hook return
FIX: wrong entity alias (#35821)
FIX: wrong entity filter (#35691)
FIX: wrong field name (#35728)
FIX: wrong getEntiy element name (#35771)
FIX: wrong number of categories by entity (#36111)
FIX: wrong socpeople id when multiple assigned + avoid php warnings (#35878)
***** ChangeLog for 22.0.2 compared to 22.0.1 *****

View File

@@ -2,7 +2,7 @@
![Downloads per day](https://img.shields.io/sourceforge/dw/dolibarr.svg)
![Docker hub pulls](https://img.shields.io/docker/pulls/dolibarr/dolibarr.svg)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![GitHub release](https://img.shields.io/github/v/release/Dolibarr/dolibarr)](https://github.com/Dolibarr/dolibarr)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5521/badge)](https://bestpractices.coreinfrastructure.org/projects/5521)

View File

@@ -5,19 +5,19 @@ This file contains some policies about the security reports on Dolibarr ERP CRM
## Supported Versions for security reports
Security report are valid only on current stable version (see https://dolibarr.org web site to get current stable version) or on development version (branch "develop" on https://github.com/Dolibarr/dolibarr).
Security report are valid only on any current stable version for the last 5 major versions (see https://dolibarr.org web site to get current stable version) or on development version (branch "develop" on https://github.com/Dolibarr/dolibarr).
## Reporting a Vulnerability
To report a vulnerability, for a private report, you can:
- Send your report on Vulnerability Disclosure Program (VDP): Link will be updated soon (recommended for everybody)
- Send your report as an issue on https://github.com/Dolibarr/dolibarr/issues or on GitHub Vulnerability Disclosure Program tool (VDP): https://github.com/Dolibarr/dolibarr/security/advisories (recommended)
<!--
- Send your report on Vulnerability Disclosure Program (VDP) [https://app.yogosha.com/cvd/dolibarr/10VxeNx6Ui3rSEhAgX63US](https://app.yogosha.com/cvd/dolibarr/10VxeNx6Ui3rSEhAgX63US) (recommended for everybody)
- Or if you have permissions, use GitHub security advisory at [https://github.com/Dolibarr/dolibarr/security/advisories/new](https://github.com/Dolibarr/dolibarr/security/advisories/new)
-->
- Or send an email to security@dolibarr.org with clear textual description of the report along with steps to reproduce the issue, include attachments such as screenshots or proof of concept code as necessary.
- Or send an email to security@dolibarr.org with clear textual description of the report along with steps to reproduce the issue, include attachments such as screenshots or proof of concept code as necessary (in such a case, the issue may be created by the developer that will fix the vulnerability or the Release Manager).
## Hunting vulnerabilities on Dolibarr
@@ -114,3 +114,8 @@ Scope is the web application (backoffice) and the APIs.
* Invalid or missing SPF (Sender Policy Framework) records (Incomplete or missing SPF/DKIM/DMARC)
* Physical or social engineering attempts or issues that require physical access to a victims computer/device
* Vulnerabilities of type XSS exploited by using javascript into a website page of the website module or by using php code into a website page (being able to set javascript or php code is the expected behaviour in the website module), except if the user does not have the permission to edit page or php code.
## Be informed of a new vulnerability
You can get more information on how to be informed on a new vulnerability on the page https://wiki.dolibarr.org/index.php/Security_information

View File

@@ -7,3 +7,4 @@
/dolibarr-*.zip
/*.exe
/html
/*.bak

View File

@@ -30,5 +30,3 @@ services:
networks:
- internal-pod
- external-pod

View File

@@ -1,54 +1,94 @@
#!/usr/bin/perl
##no critic (InputOutput::RequireBriefOpen)
use strict;
use warnings;
#--------------------------------------------------------------------
# Start the generation of the development documentation with doxygen
#--------------------------------------------------------------------
# Determine the patho of this script
($DIR=$0) =~ s/([^\/\\]+)$//;
$DIR||='.';
( my $DIR = $0 ) =~ s/([^\/\\]+)$//;
$DIR ||= '.';
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
$OPTIONS="";
my $OPTIONS = "";
#$OPTIONS="-d Preprocessor";
$CONFFILE="dolibarr-doxygen.doxyfile";
my $CONFFILE = "dolibarr-doxygen.doxyfile";
use Cwd;
my $dir = getcwd;
print "Current dir is: $dir\n";
#print "Running dir for doxygen must be: $DIR\n";
if (! -s "dev/build/doxygen/$CONFFILE")
{
print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n";
print "\n";
if ( !-s "dev/build/doxygen/$CONFFILE" ) {
print
"Error: current directory for building Dolibarr doxygen documentation is not correct.\n";
print "\n";
print "Change your current directory then, to launch the script, run:\n";
print '> perl .\dolibarr-doxygen-build.pl (on Windows)'."\n";
print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)'."\n";
sleep 4;
exit 1;
print '> perl .\dolibarr-doxygen-build.pl (on Windows)' . "\n";
print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)' . "\n";
sleep 4;
exit 1;
}
$SOURCE=".";
my $SOURCE = ".";
# Get version $MAJOR, $MINOR and $BUILD
$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" );
if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; }
while (<IN>) {
if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; }
my $result = open( my $IN, "<", $SOURCE . "/htdocs/filefunc.inc.php" );
if ( !$result ) {
die "Error: Can't open descriptor file " . $SOURCE
. "/htdocs/filefunc.inc.php\n";
}
close IN;
($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; }
my $PROJVERSION = "";
while (<$IN>) {
if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) {
$PROJVERSION = $1;
last;
}
}
close $IN;
if ( $PROJVERSION eq "" ) {
my $DOL_MAJOR_VERSION;
my $DOL_MINOR_VERSION;
my @VERSION_FILES = ( "filefunc.inc.php", "version.inc.php" );
foreach my $file (@VERSION_FILES) {
$result = open( my $IN, "<", $SOURCE . "/htdocs/$file" );
if ( !$result ) {
die "Error: Can't open descriptor file " . $SOURCE
. "/htdocs/$file\n";
}
while (<$IN>) {
if ( $_ =~ /define\('DOL_MAJOR_VERSION', '([\d\.a-z\-]+)'\)/ ) {
$DOL_MAJOR_VERSION = $1;
}
if ( $_ =~ /define\('DOL_MINOR_VERSION', '([\d\.a-z\-]+)'\)/ ) {
$DOL_MINOR_VERSION = $1;
}
}
close $IN;
}
$PROJVERSION = $DOL_MAJOR_VERSION . '.' . $DOL_MINOR_VERSION;
}
$version=$MAJOR.".".$MINOR.".".$BUILD;
( my $MAJOR, my $MINOR, my $BUILD ) = split( /\./, $PROJVERSION, 3 );
if ( !defined($MINOR) || $MINOR eq '' ) {
die "Error can't detect version from " . $SOURCE
. "/htdocs/filefunc.inc.php";
}
my $version = $MAJOR . "." . $MINOR . "." . $BUILD;
print "Running doxygen for version ".$version.", please wait...\n";
print "cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n";
$result=`cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`;
print "Running doxygen for version " . $version . ", please wait...\n";
print "cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/" . $version
. "/' | doxygen $OPTIONS - 2>&1\n";
$result =
`cat dev/build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`;
print $result;

View File

@@ -4,85 +4,79 @@
# on PHP source files before running Doxygen.
# \author Laurent Destailleur
#--------------------------------------------------------------------
## no critic (InputOutput::RequireBriefOpen)
use strict;
use warnings;
# Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot
$file=$ARGV[0];
if (! $file)
{
my $file = $ARGV[0];
if ( !$file ) {
print "Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot\n";
exit;
}
open(FILE,$file) || die "Failed to open file $file";
while (<FILE>)
{
if ($_ =~ /\\version\s/i)
{
open( my $fh, "<", $file ) || die "Failed to open file $file";
while (<$fh>) {
if ( $_ =~ /\\version\s/i ) {
$_ =~ s/\$Id://i;
$_ =~ s/(Exp|)\s\$$//i;
$_ =~ s/(\\version\s+)[^\s]+\s/$1/i;
$_ =~ s/(\w)\s(\w)/$1_$2/g;
}
$_ =~ s/exit\s*;/exit(0);/i;
$i=0;
$len=length($_);
$s="";
$insidequote=0;
$insidedquote=0;
$ignore="";
while ($i < $len)
{
$c=substr($_,$i,1);
if ($c eq "\\")
{
if ($insidequote) { $ignore="'"; };
if ($insidedquote) { $ignore="\""; };
my $i = 0;
my $len = length($_);
my $s = "";
my $insidequote = 0;
my $insidedquote = 0;
my $ignore = "";
while ( $i < $len ) {
my $c = substr( $_, $i, 1 );
if ( $c eq "\\" ) {
if ($insidequote) { $ignore = "'"; }
if ($insidedquote) { $ignore = "\""; }
}
else
{
if ($c eq "'")
{
if (! $insidedquote)
{
$c="\"";
else {
if ( $c eq "'" ) {
if ( !$insidedquote ) {
$c = "\"";
#print "X".$ignore;
if ($ignore ne "'")
{
if ( $ignore ne "'" ) {
#print "Z".$ignore;
$insidequote++;
if ($insidequote == 2)
{
$insidequote=0;
if ( $insidequote == 2 ) {
$insidequote = 0;
}
}
}
#print "X".$insidequote;
}
elsif ($c eq "\"")
{
elsif ( $c eq "\"" ) {
#print "Y".$insidequote;
if ($insidequote)
{
$c="'";
if ($insidequote) {
$c = "'";
}
else
{
if ($ignore ne "\"")
{
else {
if ( $ignore ne "\"" ) {
$insidedquote++;
if ($insidedquote == 2)
{
$insidedquote=0;
if ( $insidedquote == 2 ) {
$insidedquote = 0;
}
}
}
}
$ignore="";
$ignore = "";
}
$s.=$c;
$s .= $c;
$i++;
}
print $s;
}
close(FILE);
close($fh);

View File

@@ -1,4 +1,7 @@
#!/usr/bin/perl
use strict;
use warnings;
#--------------------------------------------------------------------
# Script to get version of a source file
# Does not work with cygwin cvs command on Windows.
@@ -7,15 +10,18 @@
# Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot
$file=$ARGV[0];
if (! $file)
{
$file = $ARGV[0];
if ( !$file ) {
print "Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot\n";
exit;
}
$commande='cvs status "'.$file.'" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\'';
$commande =
'cvs status "'
. $file
. '" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\'';
#print $commande;
$result=`$commande 2>&1`;
$result = `$commande 2>&1`;
print $result;

View File

@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=Die DoliWamp-Installation wird nun starten oder Apa
OldVersionFoundAndMoveInNew=Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden.
OldVersionFoundButFailedToMoveInNew=Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden.
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
DLLMissing=Your Windows installation is missing The "Microsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vc_redist.x86.exe) first (you can find it at https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version) and restart DoliWamp installation/upgrade after.
ContinueAnyway=Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen).

View File

@@ -21,7 +21,7 @@ AppVerName=__FILENAMEEXEDOLIWAMP__
; Replace key with DoliWamp-x.x x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
OutputBaseFilename=__FILENAMEEXEDOLIWAMP__
; ----- End of change
;OutputManifestFile=build\doliwampbuild.log
;OutputManifestFile=dev\build\doliwampbuild.log
; Define full path from which all relative path are defined
; You must modify this to put here your dolibarr root directory
SourceDir=..\..\..\..
@@ -48,28 +48,28 @@ ChangesEnvironment=no
CreateUninstallRegKey=yes
;UseSetupLdr=no
;UninstallDisplayIcon={app}\bidon
OutputDir=build
OutputDir=dev\build
ShowLanguageDialog=auto
ShowUndisplayableLanguages=no
LanguageDetectionMethod=uilanguage
;SignedUninstaller=yes
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl,build\exe\doliwamp\Languages\MyEnglish.isl"
Name: "br"; MessagesFile: "compiler:Languages\Portuguese.isl,build\exe\doliwamp\Languages\MyBrazilianPortuguese.isl"
Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl,build\exe\doliwamp\Languages\MyCatalan.isl"
Name: "da"; MessagesFile: "compiler:Languages\Danish.isl,build\exe\doliwamp\Languages\MyDanish.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl,build\exe\doliwamp\Languages\MySpanish.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,build\exe\doliwamp\Languages\MyDutch.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl,build\exe\doliwamp\Languages\MyFinnish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl,build\exe\doliwamp\Languages\MyFrench.isl"
Name: "ge"; MessagesFile: "compiler:Languages\German.isl,build\exe\doliwamp\Languages\MyGerman.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl,build\exe\doliwamp\Languages\MyItalian.isl"
Name: "nb"; MessagesFile: "compiler:Languages\Norwegian.isl,build\exe\doliwamp\Languages\MyNorwegian.isl"
Name: "po"; MessagesFile: "compiler:Languages\Polish.isl,build\exe\doliwamp\Languages\MyPolish.isl"
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl,build\exe\doliwamp\Languages\MyPortuguese.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl,build\exe\doliwamp\Languages\MyRussian.isl"
Name: "sv"; MessagesFile: "compiler:Languages\Slovenian.isl,build\exe\doliwamp\Languages\MySlovenian.isl"
Name: "en"; MessagesFile: "compiler:Default.isl,dev\build\exe\doliwamp\Languages\MyEnglish.isl"
Name: "br"; MessagesFile: "compiler:Languages\Portuguese.isl,dev\build\exe\doliwamp\Languages\MyBrazilianPortuguese.isl"
Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl,dev\build\exe\doliwamp\Languages\MyCatalan.isl"
Name: "da"; MessagesFile: "compiler:Languages\Danish.isl,dev\build\exe\doliwamp\Languages\MyDanish.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl,dev\build\exe\doliwamp\Languages\MySpanish.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,dev\build\exe\doliwamp\Languages\MyDutch.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl,dev\build\exe\doliwamp\Languages\MyFinnish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl,dev\build\exe\doliwamp\Languages\MyFrench.isl"
Name: "ge"; MessagesFile: "compiler:Languages\German.isl,dev\build\exe\doliwamp\Languages\MyGerman.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl,dev\build\exe\doliwamp\Languages\MyItalian.isl"
Name: "nb"; MessagesFile: "compiler:Languages\Norwegian.isl,dev\build\exe\doliwamp\Languages\MyNorwegian.isl"
Name: "po"; MessagesFile: "compiler:Languages\Polish.isl,dev\build\exe\doliwamp\Languages\MyPolish.isl"
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl,dev\build\exe\doliwamp\Languages\MyPortuguese.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl,dev\build\exe\doliwamp\Languages\MyRussian.isl"
Name: "sv"; MessagesFile: "compiler:Languages\Slovenian.isl,dev\build\exe\doliwamp\Languages\MySlovenian.isl"
[Tasks]
;Name: "autostart"; Description: "Automatically launch DoliWamp server on startup. If you check this option, Services will be installed as automatic. Otherwise, services will be installed as manual and will start and stop with the service manager."; GroupDescription: "Auto Start:" ;Flags: unchecked;
@@ -84,19 +84,19 @@ Name: "{app}\bin\apache\apache2.4.51\logs"
[Files]
; Stop/start
Source: "build\exe\doliwamp\stopdoliwamp.bat"; DestDir: "{app}\"; Flags: ignoreversion; AfterInstall: close()
Source: "build\exe\doliwamp\startdoliwamp.bat"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\install_services.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\uninstall_services.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\removefiles.bat"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\rundoliwamp.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\rundolihelp.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\rundoliadmin.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\mysqlinitpassword.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\mysqltestinstall.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\startdoliwamp_manual_donotuse.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\builddemosslfiles.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\stopdoliwamp.bat"; DestDir: "{app}\"; Flags: ignoreversion; AfterInstall: close()
Source: "dev\build\exe\doliwamp\startdoliwamp.bat"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\install_services.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\uninstall_services.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\removefiles.bat"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\rundoliwamp.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\rundolihelp.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\rundoliadmin.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\mysqlinitpassword.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\mysqltestinstall.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\startdoliwamp_manual_donotuse.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\builddemosslfiles.bat.install"; DestDir: "{app}\"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversion;
; Apache, Php, Mysql
; Put here path of Wampserver applications
@@ -117,16 +117,16 @@ Source: "scripts\*.*"; DestDir: "{app}\www\dolibarr\scripts"; Flags: ignoreversi
Source: "*.*"; DestDir: "{app}\www\dolibarr"; Flags: ignoreversion; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,default.properties,install.lock"
; Config files
Source: "build\exe\doliwamp\dolibarr.conf.install"; DestDir: "{app}\alias"; Flags: ignoreversion;
Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.51\conf"; Flags: ignoreversion;
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion;
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion;
Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.4.26"; Flags: ignoreversion;
Source: "build\exe\doliwamp\index.php.install"; DestDir: "{app}\www"; Flags: ignoreversion;
Source: "build\exe\doliwamp\install.forced.php.install"; DestDir: "{app}\www\dolibarr\htdocs\install"; Flags: ignoreversion;
Source: "build\exe\doliwamp\openssl.conf"; DestDir: "{app}"; Flags: ignoreversion;
Source: "build\exe\doliwamp\ca_demo_dolibarr.crt"; DestDir: "{app}"; Flags: ignoreversion;
Source: "build\exe\doliwamp\ca_demo_dolibarr.key"; DestDir: "{app}"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\dolibarr.conf.install"; DestDir: "{app}\alias"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.51\conf"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.4.26"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\index.php.install"; DestDir: "{app}\www"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\install.forced.php.install"; DestDir: "{app}\www\dolibarr\htdocs\install"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\openssl.conf"; DestDir: "{app}"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\ca_demo_dolibarr.crt"; DestDir: "{app}"; Flags: ignoreversion;
Source: "dev\build\exe\doliwamp\ca_demo_dolibarr.key"; DestDir: "{app}"; Flags: ignoreversion;
; Licence
Source: "COPYRIGHT"; DestDir: "{app}"; Flags: ignoreversion;

View File

@@ -26,6 +26,7 @@
if (!defined('NOREQUIREDB')) {
define('NOREQUIREDB', '1'); // Do not create database handler $db
}
define('NOREQUIREVIRTUALURL', 1);
$sapi_type = php_sapi_name();
$script_file = basename(__FILE__);
@@ -37,6 +38,11 @@ if (substr($sapi_type, 0, 3) == 'cgi') {
exit(1);
}
define('DOL_DOCUMENT_ROOT', dirname(dirname($path)).'/htdocs');
//$algo = 'md5'; // Old algorithm
$algo = 'sha256';
require_once $path."../../htdocs/master.inc.php";
require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
@@ -48,11 +54,15 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
$includecustom = 0;
$includeconstants = array();
$buildzip = 0;
$release = '';
$checklock = '';
print '***** '.$script_file.' *****'."\n";
if (empty($argv[1])) {
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
print "Usage: ".$script_file." checklock=auto[-mybuild]|x.y.z[-mybuild] unalterable_files\n";
print "\n";
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=ES:CONST_XX_IS_ON includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
print "\n";
print "Generate the file filelist-x.y.z[-mybuild].xml with signature of files. ";
@@ -63,6 +73,8 @@ if (empty($argv[1])) {
print "and if a specific setup/parameter need to be included into the signature for check:\n";
print "- dolibarr_constants\n";
print "\n";
print "If used with parameter 'check_unalterable_files', it will validate that the signature generated is the samethan the one found into lockedfiles.txt";
print "\n";
exit(1);
}
@@ -76,9 +88,15 @@ while ($i < $argc) {
if (!empty($result["release"])) {
$release = $result["release"];
}
if (!empty($result["checklock"])) {
$checklock = $result["checklock"];
}
if (!empty($result["includecustom"])) {
$includecustom = $result["includecustom"];
}
if (preg_match('/unalterable_files/', strval($argv[$i]))) {
$checksource = 'unalterable_files';
}
if (preg_match('/includeconstant=/', strval($argv[$i]))) {
$tmp = explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
if (count($tmp) != 3) {
@@ -93,9 +111,10 @@ while ($i < $argc) {
$i++;
}
if (empty($release)) {
print "Error: Missing release parameter\n";
if (empty($release) && empty($checklock)) {
print "Error: Missing release or checklock parameter\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
print "Usage: ".$script_file." checklock=auto[-mybuild]|x.y.z[-mybuild] unalterable_files\n";
exit(2);
}
@@ -109,170 +128,219 @@ if ($tmpver[0] == 'auto') {
$release .= '-'.$tmpver[1];
}
}
// If release is auto, we take current version
$tmpver = explode('-', $checklock, 2);
if ($tmpver[0] == 'auto') {
$checklock = DOL_VERSION;
if (!empty($tmpver[1]) && $tmpver[0] == 'auto') {
$checklock .= '-'.$tmpver[1];
}
}
if (empty($includecustom)) {
$tmpverbis = explode('-', $release, 2);
if (empty($tmpverbis[1])) {
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto') {
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
exit(3);
$checklockmajorversion = '';
if ($checklock) {
$checklockmajorversion = preg_replace('/-.*$/', '', $checklock);
$checklockmajorversion = preg_replace('/\..*/', '', $checklockmajorversion);
$checklockmajorversion .= '.0.0';
}
if ($release) {
if (empty($includecustom)) {
$tmpverbis = explode('-', $release, 2);
if (empty($tmpverbis[1])) {
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto') {
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exactly the same value than "release" parameter ('.$tmpverbis[0].')'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
print "\n";
exit(3);
}
} else {
$tmpverter = explode('-', DOL_VERSION, 2);
if ($tmpverter[0] != $tmpverbis[0]) {
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
print "\n";
exit(4);
}
}
} else {
$tmpverter = explode('-', DOL_VERSION, 2);
if ($tmpverter[0] != $tmpverbis[0]) {
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
exit(4);
if (!preg_match('/'.preg_quote(DOL_VERSION, '/').'-/', $release)) {
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
print "\n";
exit(5);
}
}
} else {
if (!preg_match('/'.preg_quote(DOL_VERSION, '/').'-/', $release)) {
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
exit(5);
}
}
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." ";
}
}
print "\n";
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
$outputdir = dirname(dirname(dirname(__FILE__))).'/htdocs/install';
print 'Delete current files '.$outputdir.'/filelist*.xml*'."\n";
dol_delete_file($outputdir.'/filelist*.xml*', 0, 1, 1);
$checksumconcat = array();
$outputfile = $outputdir.'/filelist-'.$release.'.xml';
$fp = fopen($outputfile, 'w');
if (empty($fp)) {
print 'Failed to open file '.$outputfile."\n";
if ($checklock && empty($checksource)) {
print 'Error: When action "checklock" is set, second parameter must be the scope family to check, for example "unalterable_files"'."\n";
print "Usage: ".$script_file." checklock=auto[-mybuild]|x.y.z[-mybuild] unalterable_files\n";
print "\n";
exit(6);
}
$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 = '';
if (file_exists($fileforgit)) {
$fileforgitcontent = file_get_contents($fileforgit);
if ($release) {
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
print "Version of target release : ".$release."\n";
print "Algo : ".$algo."\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." ";
}
}
print "\n";
print "\n";
}
if (empty($fileforgitcontent)) {
print "Failed to get the last commit ID (are you on the branch for the release branch name ".$branchname." ?). We will use an empty value for gitcommit.\n";
if ($checklock) {
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
print "Version to check in lockedfiles.txt : ".$checklockmajorversion."\n";
print "Check source : ".$checksource."\n";
}
if ($release) {
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
$outputdir = dirname(dirname(dirname(__FILE__))).'/htdocs/install';
print 'Delete current files '.$outputdir.'/filelist*.xml*'."\n";
dol_delete_file($outputdir.'/filelist*.xml*', 0, 1, 1);
}
$gitcommit = trim($fileforgitcontent);
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now(), 'dayhourrfc').'" generator="'.$script_file.'" gitcommit="'.$gitcommit.'">'."\n");
$needtoclose = 0;
foreach ($includeconstants as $countrycode => $tmp) {
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
foreach ($tmp as $constname => $constvalue) {
$valueforchecksum = (empty($constvalue) ? '0' : $constvalue);
$checksumconcat[] = $valueforchecksum;
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
// Build the XML file
if ($release) {
$checksumconcat = array();
$outputfile = $outputdir.'/filelist-'.$release.'.xml';
$fp = fopen($outputfile, 'w');
if (empty($fp)) {
print 'Failed to open file '.$outputfile."\n";
exit(7);
}
fputs($fp, '</dolibarr_constants>'."\n\n");
}
fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
$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 = '';
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." ?). We will use an empty value for gitcommit.\n";
}
$gitcommit = trim($fileforgitcontent);
// 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|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');
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now(), 'dayhourrfc').'" generator="'.$script_file.'" algo="'.$algo.'" gitcommit="'.$gitcommit.'">'."\n");
$dir = '';
foreach ($files as $filetmp) {
$file = $filetmp['fullname'];
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
foreach ($includeconstants as $countrycode => $tmp) {
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
foreach ($tmp as $constname => $constvalue) {
$valueforchecksum = (empty($constvalue) ? '0' : $constvalue);
$checksumconcat[] = $valueforchecksum;
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
$needtoclose = 1;
fputs($fp, '</dolibarr_constants>'."\n\n");
}
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_htdocs_dir>'."\n");
asort($checksumconcat); // Sort list of checksum
fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
fputs($fp, '<dolibarr_htdocs_dir_checksum>'."\n");
fputs($fp, md5(join(',', $checksumconcat))."\n");
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n\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|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');
// Add the checksum for the part in scripts
$checksumconcat = array();
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
$regextoinclude = '\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
$regextoexclude = '(custom|documents|conf|install)$'; // Exclude dirs
$files = dol_dir_list(dirname(__FILE__).'/../../scripts/', 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
$dir = '';
foreach ($files as $filetmp) {
$file = $filetmp['fullname'];
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
$newdir = str_replace(dirname(__FILE__).'/../../scripts', '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
$dir = '';
foreach ($files as $filetmp) {
$file = $filetmp['fullname'];
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
$needtoclose = 1;
}
if (filetype($file) == "file") {
$hashoffile = hash_file($algo, $file);
$checksumconcat[] = $hashoffile;
fputs($fp, ' <'.$algo.'file name="'.basename($file).'" size="'.filesize($file).'">'.$hashoffile.'</'.$algo.'file>'."\n");
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
$needtoclose = 1;
}
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;
}
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, '</dolibarr_script_dir>'."\n");
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
asort($checksumconcat); // Sort list of checksum
$hashhtdocsdir = hash($algo, join(',', $checksumconcat));
fputs($fp, '<dolibarr_htdocs_dir_checksum>'."\n");
fputs($fp, $hashhtdocsdir."\n");
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n\n");
// Add the checksum for the part in scripts
$checksumconcat = array();
fputs($fp, '<dolibarr_scripts_dir version="'.$release.'">'."\n");
$regextoinclude = '\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
$regextoexclude = '(custom|documents|conf|install)$'; // Exclude dirs
$files = dol_dir_list(dirname(__FILE__).'/../../scripts/', 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
$dir = '';
foreach ($files as $filetmp) {
$file = $filetmp['fullname'];
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
$newdir = str_replace(dirname(__FILE__).'/../../scripts', '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
$dir = $newdir;
$needtoclose = 1;
}
if (filetype($file) == "file") {
$hashoffile = hash_file($algo, $file);
$checksumconcat[] = $hashoffile;
fputs($fp, ' <'.$algo.'file name="'.basename($file).'" size="'.filesize($file).'">'.$hashoffile.'</'.$algo.'file>'."\n");
}
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
$needtoclose = 0;
}
fputs($fp, '</dolibarr_scripts_dir>'."\n");
asort($checksumconcat); // Sort list of checksum
$hashscriptsdir = hash($algo, join(',', $checksumconcat));
fputs($fp, '<dolibarr_scripts_dir_checksum>'."\n");
fputs($fp, $hashscriptsdir."\n");
fputs($fp, '</dolibarr_scripts_dir_checksum>'."\n\n");
}
asort($checksumconcat); // Sort list of checksum
fputs($fp, '<dolibarr_script_dir_checksum>'."\n");
fputs($fp, md5(join(',', $checksumconcat))."\n");
fputs($fp, '</dolibarr_script_dir_checksum>'."\n\n");
// Add the checksum for the files into the scope of the unalterable system (record, read, export)
$checksumconcat = array();
fputs($fp, '<dolibarr_unalterable_files version="'.$release.'">'."\n");
if ($release) {
fputs($fp, '<dolibarr_unalterable_files version="'.$release.'">'."\n");
}
// Array of dir/files to include in the section
$arrayofunalterablefiles = array(
@@ -296,25 +364,34 @@ foreach ($arrayofunalterablefiles as $entry) {
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
if ($release) {
fputs($fp, ' </dir>'."\n");
}
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
if ($release) {
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
}
$dir = $newdir;
$needtoclose = 1;
}
if (filetype($file) == "file") {
$md5 = md5_file($file);
$checksumconcat[] = $md5;
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
$hashoffile = hash_file($algo, $file);
$checksumconcat[] = $hashoffile;
if ($release) {
fputs($fp, ' <'.$algo.'file name="'.basename($file).'" size="'.filesize($file).'">'.$hashoffile.'</'.$algo.'file>'."\n");
}
}
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
if ($release) {
fputs($fp, ' </dir>'."\n");
}
$needtoclose = 0;
}
} else {
$file = $entry['dir'].'/'.$entry['file'];
$dir = '';
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
if (!file_exists($file)) {
@@ -323,60 +400,105 @@ foreach ($arrayofunalterablefiles as $entry) {
}
if ($newdir != $dir) {
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
if ($release) {
fputs($fp, ' </dir>'."\n");
}
$needtoclose = 0;
}
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
if ($release) {
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
}
$dir = $newdir;
$needtoclose = 1;
}
if (filetype($file) == "file") {
$md5 = md5_file($file);
$checksumconcat[] = $md5;
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
$hashoffile = hash_file($algo, $file);
$checksumconcat[] = $hashoffile;
if ($release) {
fputs($fp, ' <'.$algo.'file name="'.basename($file).'" size="'.filesize($file).'">'.$hashoffile.'</'.$algo.'file>'."\n");
}
}
if ($needtoclose) {
fputs($fp, ' </dir>'."\n");
if ($release) {
fputs($fp, ' </dir>'."\n");
}
$needtoclose = 0;
}
}
}
fputs($fp, '</dolibarr_unalterable_files>'."\n");
asort($checksumconcat); // Sort list of checksum
fputs($fp, '<dolibarr_unalterable_files_checksum>'."\n");
fputs($fp, md5(join(',', $checksumconcat))."\n");
fputs($fp, '</dolibarr_unalterable_files_checksum>'."\n\n");
$hashunalterable_files = hash($algo, join(',', $checksumconcat));
if ($release) {
fputs($fp, '</dolibarr_unalterable_files>'."\n");
fputs($fp, '<dolibarr_unalterable_files_checksum>'."\n");
fputs($fp, $hashunalterable_files."\n");
fputs($fp, '</dolibarr_unalterable_files_checksum>'."\n\n");
// End of file
// End of file
fputs($fp, '</checksum_list>'."\n");
fclose($fp);
fputs($fp, '</checksum_list>'."\n");
fclose($fp);
}
print "\n";
if (empty($buildzip)) {
print "File ".$outputfile." generated.\n";
} else {
if ($buildzip == '1' || $buildzip == 'zip') {
$result = dol_compress_file($outputfile, $outputfile.'.zip', 'zip');
if ($result > 0) {
dol_delete_file($outputfile);
print "File ".$outputfile.".zip generated.\n";
if ($release) {
if (empty($buildzip)) {
print "File ".$outputfile." generated.\n";
print "Signature for htdocs files: ".$hashhtdocsdir."\n";
print "Signature for scripts files: ".$hashscriptsdir."\n";
print "Signature for the ".count($checksumconcat)." unalterable files: ".$hashunalterable_files."\n";
} else {
if ($buildzip == '1' || $buildzip == 'zip') {
$result = dol_compress_file($outputfile, $outputfile.'.zip', 'zip');
if ($result > 0) {
dol_delete_file($outputfile);
print "File ".$outputfile.".zip generated.\n";
}
} elseif ($buildzip == '2' || $buildzip == 'gz') {
$result = dol_compress_file($outputfile, $outputfile.'.gz', 'gz');
if ($result > 0) {
dol_delete_file($outputfile);
print "File ".$outputfile.".gz generated.\n";
}
}
} elseif ($buildzip == '2' || $buildzip == 'gz') {
$result = dol_compress_file($outputfile, $outputfile.'.gz', 'gz');
if ($result > 0) {
dol_delete_file($outputfile);
print "File ".$outputfile.".gz generated.\n";
}
}
if ($checklock) {
print "Signature for unalterable files: ".$algo." ".$hashunalterable_files."\n";
$lockedfile = DOL_DOCUMENT_ROOT.'/../dev/lockedfiles.txt';
$checksuminlockedfile = '';
if (!file_exists($lockedfile)) {
print "Can't find the file ".$lockedfile.". No checksum to check\n";
} else {
// Now we check the content of lockedfiles.txt
$arraylocked = file($lockedfile);
foreach ($arraylocked as $line) {
$tmparray = preg_split("/\s+/", $line, 4);
if ($tmparray[0] == $checklockmajorversion && $tmparray[2] == $algo) {
$checksuminlockedfile = $tmparray[3];
}
}
if (empty($checksuminlockedfile)) {
print "The major version ".$checklockmajorversion." is not locked on the scope '".$checksource."' (file found but no matching entry found into dev/lockedfiles.txt).\n";
} elseif ($checksuminlockedfile != $hashunalterable_files) {
print "The major version ".$checklockmajorversion." is locked on scope '".$checksource."' to checksum ".$algo." ".$checksuminlockedfile."\n";
if ($checklockmajorversion != $checksource) {
print "The checksum now differs from the locked one, so we return an error.\n";
print "\n";
exit(10);
}
}
}
}
print "\n";
exit(0);

View File

@@ -1,4 +1,5 @@
#!/usr/bin/perl
## no critic (InputOutput::RequireBriefOpen)
#fetch Gravatars
use strict;
@@ -10,39 +11,44 @@ use Digest::MD5 qw(md5_hex);
my $size = 90;
my $output_dir = './avatars';
die("no .git/ directory found in current path\n") unless -d './avatars';
die("no .git repository found in current path\n") unless -r './.git';
mkdir($output_dir) unless -d $output_dir;
open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $!\n");
open( my $GITLOG, '-|', q/git log --pretty=format:"%ae|%an" --reverse/ )
or die("failed to read git-log: $!\n");
my %processed_authors;
while(<GITLOG>) {
chomp;
my($email, $author) = split(/\|/, $_);
while (<$GITLOG>) {
chomp;
my ( $email, $author ) = split( /\|/, $_ );
next if $processed_authors{$author}++;
next if $processed_authors{$author}++;
my $author_image_file = $output_dir . '/' . $author . '.png';
my $author_image_file = $output_dir . '/' . $author . '.png';
#skip images we have
next if -e $author_image_file;
#skip images we have
next if -e $author_image_file;
#try and fetch image
#try and fetch image
my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size;
my $grav_url =
"https://www.gravatar.com/avatar/"
. md5_hex( lc $email )
. "?d=404&size="
. $size;
warn "fetching image for '$author' $email ($grav_url)...\n";
warn "fetching image for '$author' $email ($grav_url)...\n";
my $rc = getstore($grav_url, $author_image_file);
my $rc = getstore( $grav_url, $author_image_file );
sleep(1);
sleep(1);
if($rc != 200) {
unlink($author_image_file);
next;
}
if ( $rc != 200 ) {
unlink($author_image_file);
next;
}
}
close GITLOG;
close $GITLOG;

File diff suppressed because it is too large Load Diff

View File

@@ -5,223 +5,288 @@
# \author (c)2005-2014 Laurent Destailleur <eldy@users.sourceforge.net>
# \contributor (c)2017 Nicolas ZABOURI <info@inovea-conseil.com>
#----------------------------------------------------------------------------
## no critic (InputOutput::ProhibitExplicitStdin,InputOutput::RequireBriefOpen)
#use strict;
use warnings;
use Cwd;
use Term::ANSIColor;
$OWNER="ldestailleur";
$GROUP="ldestailleur";
my $OWNER = "ldestailleur";
my $GROUP = "ldestailleur";
@LISTETARGET=("ZIP"); # Possible packages
%REQUIREMENTTARGET=( # Tool requirement for each package
"TGZ"=>"tar",
"ZIP"=>"7z"
my @LISTETARGET = ("ZIP"); # Possible packages
my %REQUIREMENTTARGET = ( # Tool requirement for each package
"TGZ" => "tar",
"ZIP" => "7z"
);
%ALTERNATEPATH=(
);
my %ALTERNATEPATH = ();
use vars qw/ $REVISION $VERSION /;
$REVISION='1.0';
$VERSION="3.5 (build $REVISION)";
my $REVISION = '1.0';
my $VERSION = "3.5 (build $REVISION)";
#------------------------------------------------------------------------------
# MAIN
#------------------------------------------------------------------------------
($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/;
( $DIR = $0 ) =~ s/([^\/\\]+)$//;
( $PROG = $1 ) =~ s/\.([^\.]*)$//;
$Extension = $1;
$DIR ||= '.';
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
# Detect OS type
# --------------
if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; }
elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
if (! $OS) {
print "$PROG.$Extension was not able to detect your OS.\n";
if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) {
$OS = 'linux';
$CR = '';
}
elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; }
elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) {
$OS = 'windows';
$CR = "\r";
}
if ( !$OS ) {
print "$PROG.$Extension was not able to detect your OS.\n";
print "Can't continue.\n";
print "$PROG.$Extension aborted.\n";
sleep 2;
sleep 2;
exit 1;
}
# Define buildroot
# ----------------
if ($OS =~ /linux/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
if ( $OS =~ /linux/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
}
if ($OS =~ /macos/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
if ( $OS =~ /macos/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
}
if ($OS =~ /windows/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp";
$PROGPATH=$ENV{"ProgramFiles"};
if ( $OS =~ /windows/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp";
$PROGPATH = $ENV{"ProgramFiles"};
}
if (! $TEMP || ! -d $TEMP) {
print "Error: A temporary directory can not be find.\n";
print "Check that TEMP or TMP environment variable is set correctly.\n";
if ( !$TEMP || !-d $TEMP ) {
print "Error: A temporary directory can not be find.\n";
print "Check that TEMP or TMP environment variable is set correctly.\n";
print "$PROG.$Extension aborted.\n";
sleep 2;
exit 2;
sleep 2;
exit 2;
}
$BUILDROOT="$TEMP/dolibarr-buildroot";
$BUILDROOT = "$TEMP/dolibarr-buildroot";
my $copyalreadydone = 0;
my $batch = 0;
my $copyalreadydone=0;
my $batch=0;
for (0..@ARGV-1) {
if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; }
if ($ARGV[$_] =~ /^-*desti=(.+)/i) { $DESTI=$1; }
if ($ARGV[$_] =~ /^-*prefix=(.+)/i) {
$PREFIX=$1;
$FILENAMESNAPSHOT.="-".$PREFIX;
}
for ( 0 .. @ARGV - 1 ) {
if ( $ARGV[$_] =~ /^-*target=(\w+)/i ) { $target = $1; $batch = 1; }
if ( $ARGV[$_] =~ /^-*desti=(.+)/i ) { $DESTI = $1; }
if ( $ARGV[$_] =~ /^-*prefix=(.+)/i ) {
$PREFIX = $1;
$FILENAMESNAPSHOT .= "-" . $PREFIX;
}
}
$SOURCE="$DIR/../..";
$DESTI="$SOURCE/dev/build";
if ($ENV{"DESTIMODULES"}) { $DESTI = $ENV{"DESTIMODULES"}; } # Force output dir if env DESTIMODULES is defined
$NEWDESTI=$DESTI;
$SOURCE = "$DIR/../..";
$DESTI = "$SOURCE/dev/build";
if ( $ENV{"DESTIMODULES"} ) {
$DESTI = $ENV{"DESTIMODULES"};
} # Force output dir if env DESTIMODULES is defined
$NEWDESTI = $DESTI;
print "Makepack for modules version $VERSION\n";
print "Source directory: $SOURCE\n";
print "Target directory: $NEWDESTI\n";
# Ask module
print "Enter name for your module (mymodule, mywonderfulmondule, ... or 'all') : ";
$PROJECTINPUT=<STDIN>;
print
"Enter name for your module (mymodule, mywonderfullmodule, ... or 'all') : ";
my $PROJECTINPUT = <STDIN>;
chomp($PROJECTINPUT);
print "Move to ".$DIR." directory.\n";
print "Move to " . $DIR . " directory.\n";
chdir($DIR);
my @PROJECTLIST=();
if ($PROJECTINPUT eq "all")
{
opendir(DIR, $DIR) || return;
local @rv = grep { /^makepack\-(.*)\.conf$/ } sort readdir(DIR);
closedir(DIR);
foreach my $xxx (0..@rv-1) {
if ($rv[$xxx] =~ /^makepack\-(.*)\.conf$/)
{
@PROJECTLIST[$xxx]=$1;
}
}
my @PROJECTLIST = ();
if ( $PROJECTINPUT eq "all" ) {
opendir( my $DIR, $DIR ) or return;
local @rv = grep { /^makepack\-(.*)\.conf$/ } sort readdir($DIR);
closedir($DIR);
foreach my $xxx ( 0 .. @rv - 1 ) {
if ( $rv[$xxx] =~ /^makepack\-(.*)\.conf$/ ) {
@PROJECTLIST[$xxx] = $1;
}
}
}
else
{
@PROJECTLIST=($PROJECTINPUT);
else {
@PROJECTLIST = ($PROJECTINPUT);
}
# Loop on each projects
foreach my $PROJECT (@PROJECTLIST) {
$PROJECTLC=lc($PROJECT);
$PROJECTLC = lc($PROJECT);
if (! -f "makepack-".$PROJECT.".conf")
{
print "Error: can't open conf file makepack-".$PROJECT.".conf\n";
if ( !-f "makepack-" . $PROJECT . ".conf" ) {
print "Error: can't open conf file makepack-" . $PROJECT . ".conf\n";
print "\n";
print "For help on building a module package, see web page\n";
print "http://wiki.dolibarr.org/index.php/Module_development#Create_a_package_to_distribute_and_install_your_module\n";
print
"http://wiki.dolibarr.org/index.php/Module_development#Create_a_package_to_distribute_and_install_your_module\n";
print "makepack-dolibarrmodule.pl aborted.\n";
sleep 2;
exit 2;
sleep 2;
exit 2;
}
# Get version $MAJOR, $MINOR and $BUILD
print "Version detected for module ".$PROJECT." in file ".$SOURCE."/htdocs/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php";
$result=open(IN,"<".$SOURCE."/htdocs/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php");
$custom=false;
if (! $result) {
$result=open(IN,"<".$SOURCE."/htdocs/custom/".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php");
if (! $result) {
die "Error: Can't open descriptor file ".$SOURCE."/htdocs/(or /htdocs/custom/)".$PROJECTLC."/core/modules/mod".ucfirst($PROJECT).".class.php for reading.\n";
}else{
$custom = true;
}
}
while(<IN>)
{
if ($_ =~ /this->version\s*=\s*'([\d\.]+)'/) { $PROJVERSION=$1; break; }
}
close IN;
print $PROJVERSION."\n";
print "Version detected for module "
. $PROJECT
. " in file "
. $SOURCE
. "/htdocs/"
. $PROJECTLC
. "/core/modules/mod"
. ucfirst($PROJECT)
. ".class.php";
$result = open(
my $IN,
"<",
$SOURCE
. "/htdocs/"
. $PROJECTLC
. "/core/modules/mod"
. ucfirst($PROJECT)
. ".class.php"
);
$custom = false;
if ( !$result ) {
$result = open(
my $IN,
"<",
$SOURCE
. "/htdocs/custom/"
. $PROJECTLC
. "/core/modules/mod"
. ucfirst($PROJECT)
. ".class.php"
);
if ( !$result ) {
die "Error: Can't open descriptor file "
. $SOURCE
. "/htdocs/(or /htdocs/custom/)"
. $PROJECTLC
. "/core/modules/mod"
. ucfirst($PROJECT)
. ".class.php for reading.\n";
}
}
else {
$custom = true;
}
while (<$IN>) {
if ( $_ =~ /this->version\s*=\s*'([\d\.]+)'/ ) {
$PROJVERSION = $1;
last;
}
}
close $IN;
print $PROJVERSION. "\n";
($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
if ($MINOR eq '')
{
print "Enter value for minor version for module ".$PROJECT.": ";
$MINOR=<STDIN>;
chomp($MINOR);
( $MAJOR, $MINOR, $BUILD ) = split( /\./, $PROJVERSION, 3 );
if ( $MINOR eq '' ) {
print "Enter value for minor version for module " . $PROJECT . ": ";
$MINOR = <STDIN>;
chomp($MINOR);
}
$FILENAME="$PROJECTLC";
$FILENAMETGZ="module_$PROJECTLC-$MAJOR.$MINOR".($BUILD ne ''?".$BUILD":"");
$FILENAMEZIP="module_$PROJECTLC-$MAJOR.$MINOR".($BUILD ne ''?".$BUILD":"");
if (-d "/usr/src/redhat") {
# redhat
$RPMDIR="/usr/src/redhat";
}
if (-d "/usr/src/RPM") {
# mandrake
$RPMDIR="/usr/src/RPM";
}
$FILENAME = "$PROJECTLC";
$FILENAMETGZ =
"module_$PROJECTLC-$MAJOR.$MINOR" . ( $BUILD ne '' ? ".$BUILD" : "" );
$FILENAMEZIP =
"module_$PROJECTLC-$MAJOR.$MINOR" . ( $BUILD ne '' ? ".$BUILD" : "" );
if ( -d "/usr/src/redhat" ) {
# redhat
$RPMDIR = "/usr/src/redhat";
}
if ( -d "/usr/src/RPM" ) {
# mandrake
$RPMDIR = "/usr/src/RPM";
}
# Choose package targets
#-----------------------
$target="ZIP"; # Dolibarr modules are this format
$CHOOSEDTARGET{uc($target)}=1;
$target = "ZIP"; # Dolibarr modules are this format
$CHOOSEDTARGET{ uc($target) } = 1;
# Test if requirement is ok
#--------------------------
foreach my $target (keys %CHOOSEDTARGET) {
foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) {
# Test
print "Test requirement for target $target: Search '$req'... ";
$ret=`"$req" 2>&1`;
$coderetour=$?; $coderetour2=$coderetour>>8;
if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) {
# Not found error, we try in PROGPATH
$ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
$coderetour=$?; $coderetour2=$coderetour>>8;
$REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req";
}
foreach my $target ( keys %CHOOSEDTARGET ) {
foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) {
if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) {
# Not found error
print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
$CHOOSEDTARGET{$target}=-1;
last;
} else {
# Pas erreur ou erreur autre que programme absent
print " Found ".$REQUIREMENTTARGET{$target}."\n";
}
}
# Test
print "Test requirement for target $target: Search '$req'... ";
$ret = `"$req" 2>&1`;
$coderetour = $?;
$coderetour2 = $coderetour >> 8;
if (
$coderetour != 0
&& (
(
$coderetour2 == 1
&& $OS =~ /windows/
&& $ret !~ /Usage/i
)
|| ( $coderetour2 == 127 && $OS !~ /windows/ )
)
&& $PROGPATH
)
{
# Not found error, we try in PROGPATH
$ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
$coderetour = $?;
$coderetour2 = $coderetour >> 8;
$REQUIREMENTTARGET{$target} =
"$PROGPATH/$ALTERNATEPATH{$req}/$req";
}
if (
$coderetour != 0
&& (
(
$coderetour2 == 1
&& $OS =~ /windows/
&& $ret !~ /Usage/i
)
|| ( $coderetour2 == 127 && $OS !~ /windows/ )
)
)
{
# Not found error
print
"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
$CHOOSEDTARGET{$target} = -1;
last;
}
else {
# Pas erreur ou erreur autre que programme absent
print " Found " . $REQUIREMENTTARGET{$target} . "\n";
}
}
}
print "\n";
# Check if there is at least on target to build
# Check if there is at least one target to build
#----------------------------------------------
$nboftargetok=0;
$nboftargetneedbuildroot=0;
$nboftargetneedcvs=0;
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) { next; }
if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP')
{
$nboftargetok = 0;
$nboftargetneedbuildroot = 0;
$nboftargetneedcvs = 0;
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
if ( $target ne 'EXE' && $target ne 'EXEDOLIWAMP' ) {
$nboftargetneedbuildroot++;
}
if ($target eq 'SNAPSHOT')
{
if ( $target eq 'SNAPSHOT' ) {
$nboftargetneedcvs++;
}
$nboftargetok++;
@@ -229,178 +294,211 @@ foreach my $PROJECT (@PROJECTLIST) {
if ($nboftargetok) {
# Update CVS if required
#-----------------------
if ($nboftargetneedcvs)
{
print "Go to directory $SOURCE\n";
$olddir=getcwd();
chdir("$SOURCE");
print "Run cvs update -P -d\n";
$ret=`cvs update -P -d 2>&1`;
chdir("$olddir");
# Update CVS if required
#-----------------------
if ($nboftargetneedcvs) {
print "Go to directory $SOURCE\n";
$olddir = getcwd();
chdir("$SOURCE");
print "Run cvs update -P -d\n";
$ret = `cvs update -P -d 2>&1`;
chdir("$olddir");
}
# Update buildroot if required
#-----------------------------
if ($nboftargetneedbuildroot)
{
if (! $copyalreadydone) {
print "Delete directory $BUILDROOT\n";
$ret=`rm -fr "$BUILDROOT"`;
# Update buildroot if required
#-----------------------------
if ($nboftargetneedbuildroot) {
if ( !$copyalreadydone ) {
print "Delete directory $BUILDROOT\n";
$ret = `rm -fr "$BUILDROOT"`;
mkdir "$BUILDROOT";
mkdir "$BUILDROOT/$PROJECTLC";
mkdir "$BUILDROOT";
mkdir "$BUILDROOT/$PROJECTLC";
print "Now, we will copy all files declared in the makepack-".$PROJECT.".conf into the directory $BUILDROOT\n";
print "Now, we will copy all files declared in the makepack-"
. $PROJECT
. ".conf into the directory $BUILDROOT\n";
$result=open(IN,"<makepack-".$PROJECT.".conf");
if (! $result) { die "Error: Can't open conf file makepack-".$PROJECT.".conf for reading.\n"; }
while(<IN>)
{
$entry=$_;
open( my $IN2, "<", "makepack-" . $PROJECT . ".conf" )
or die "Error: Can't open conf file makepack-"
. $PROJECT
. ".conf for reading.\n";
while (<$IN2>) {
$entry = $_;
if ($entry =~ /^#/) { next; } # Do not process comments
if ( $entry =~ /^#/ ) { next; } # Do not process comments
$entry =~ s/\n//;
if ($entry =~ /^!(.*)$/) # Exclude so remove file/dir
{
print "Remove $BUILDROOT/$PROJECTLC/$1\n";
$ret=`rm -fr "$BUILDROOT/$PROJECTLC/"$1`;
if ($? != 0) { die "Failed to delete a file to exclude declared into makepack-".$PROJECT.".conf file (Failed on the line ".$entry.")\n"; }
next;
}
if ( $entry =~ /^!(.*)$/ ) # Exclude so remove file/dir
{
print "Remove $BUILDROOT/$PROJECTLC/$1\n";
$ret = `rm -fr "$BUILDROOT/$PROJECTLC/"$1`;
if ( $? != 0 ) {
die
"Failed to delete a file to exclude declared into makepack-"
. $PROJECT
. ".conf file (Failed on the line "
. $entry . ")\n";
}
next;
}
$entry =~ /^(.*)\/[^\/]+/;
print "Create directory $BUILDROOT/$PROJECTLC/$1\n";
$ret=`mkdir -p "$BUILDROOT/$PROJECTLC/$1"`;
if ($entry !~ /version\-/)
{
print "Copy $SOURCE/$entry into $BUILDROOT/$PROJECTLC/$entry\n";
$ret=`cp -pr "$SOURCE/$entry" "$BUILDROOT/$PROJECTLC/$entry"`;
if ($? != 0) { die "Failed to make copy of a file declared into makepack-".$PROJECT.".conf file (Failed on the line '".$entry."')\n"; }
}
print "Create directory $BUILDROOT/$PROJECTLC/$1\n";
$ret = `mkdir -p "$BUILDROOT/$PROJECTLC/$1"`;
if ( $entry !~ /version\-/ ) {
print
"Copy $SOURCE/$entry into $BUILDROOT/$PROJECTLC/$entry\n";
$ret =
`cp -pr "$SOURCE/$entry" "$BUILDROOT/$PROJECTLC/$entry"`;
if ( $? != 0 ) {
die
"Failed to make copy of a file declared into makepack-"
. $PROJECT
. ".conf file (Failed on the line '"
. $entry . "')\n";
}
}
}
close IN;
close $IN2;
@timearray=localtime(time());
$fulldate=($timearray[5]+1900).'-'.($timearray[4]+1).'-'.$timearray[3].' '.$timearray[2].':'.$timearray[1];
#open(VF,">$BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt");
#print "Create version file $BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt with date ".$fulldate."\n";
#$ret=`mkdir -p "$BUILDROOT/$PROJECTLC/dev/build"`;
#print VF "Version: ".$MAJOR.".".$MINOR.($BUILD ne ''?".$BUILD":"")."\n";
#print VF "Build : ".$fulldate."\n";
#close VF;
}
print "Clean $BUILDROOT\n";
$ret=`rm -fr $BUILDROOT/$PROJECTLC/.cache`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/.git`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/.project`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/.settings`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/index.php`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/dev/build/html`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/documents`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/document`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.mysql`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.old`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.postgres`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf*sav*`;
if ($custom) {
$ret=`cp -r $BUILDROOT/$PROJECTLC/htdocs/custom/* $BUILDROOT/$PROJECTLC/htdocs/.`;
}
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom2`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/test`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/Thumbs.db $BUILDROOT/$PROJECTLC/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/*/Thumbs.db`;
$ret=`rm -fr $BUILDROOT/$PROJECTLC/CVS* $BUILDROOT/$PROJECTLC/*/CVS* $BUILDROOT/$PROJECTLC/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/*/CVS*`;
@timearray = localtime( time() );
$fulldate =
( $timearray[5] + 1900 ) . '-'
. ( $timearray[4] + 1 ) . '-'
. $timearray[3] . ' '
. $timearray[2] . ':'
. $timearray[1];
#open(VF,">$BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt");
#print "Create version file $BUILDROOT/$PROJECTLC/dev/build/version-".$PROJECTLC.".txt with date ".$fulldate."\n";
#$ret=`mkdir -p "$BUILDROOT/$PROJECTLC/dev/build"`;
#print VF "Version: ".$MAJOR.".".$MINOR.($BUILD ne ''?".$BUILD":"")."\n";
#print VF "Build : ".$fulldate."\n";
#close VF;
}
print "Clean $BUILDROOT\n";
$ret = `rm -fr $BUILDROOT/$PROJECTLC/.cache`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/.git`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/.project`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/.settings`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/index.php`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/dev/build/html`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/documents`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/document`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.mysql`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.old`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf.php.postgres`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/conf/conf*sav*`;
if ($custom) {
$ret =
`cp -r $BUILDROOT/$PROJECTLC/htdocs/custom/* $BUILDROOT/$PROJECTLC/htdocs/.`;
}
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/htdocs/custom2`;
$ret = `rm -fr $BUILDROOT/$PROJECTLC/test`;
$ret =
`rm -fr $BUILDROOT/$PROJECTLC/Thumbs.db $BUILDROOT/$PROJECTLC/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/Thumbs.db $BUILDROOT/$PROJECTLC/*/*/*/*/Thumbs.db`;
$ret =
`rm -fr $BUILDROOT/$PROJECTLC/CVS* $BUILDROOT/$PROJECTLC/*/CVS* $BUILDROOT/$PROJECTLC/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/CVS* $BUILDROOT/$PROJECTLC/*/*/*/*/*/CVS*`;
}
# Build package for each target
#------------------------------
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) { next; }
# Build package for each target
#------------------------------
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
print "\nBuild package for target $target\n";
print "\nBuild package for target $target\n";
if ($target eq 'TGZ') {
$NEWDESTI=$DESTI;
if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; }
if ( $target eq 'TGZ' ) {
$NEWDESTI = $DESTI;
if ( -d $DESTI . '/../modules' ) {
$NEWDESTI = $DESTI . '/../modules';
}
print "Remove target $FILENAMETGZ.tgz...\n";
unlink("$NEWDESTI/$FILENAMETGZ.tgz");
print "Compress $BUILDROOT/* into $FILENAMETGZ.tgz...\n";
$cmd="tar --exclude-vcs --exclude *.tgz --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" .";
$ret=`$cmd`;
if ($OS =~ /windows/i) {
print "Move $FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n";
$ret=`mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`;
}
else
{
$ret=`mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`;
}
next;
}
print "Remove target $FILENAMETGZ.tgz...\n";
unlink("$NEWDESTI/$FILENAMETGZ.tgz");
print "Compress $BUILDROOT/* into $FILENAMETGZ.tgz...\n";
$cmd =
"tar --exclude-vcs --exclude *.tgz --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" .";
$ret = `$cmd`;
if ( $OS =~ /windows/i ) {
print
"Move $FILENAMETGZ.tgz to $NEWDESTI/$FILENAMETGZ.tgz\n";
$ret = `mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`;
}
else {
$ret = `mv "$FILENAMETGZ.tgz" "$NEWDESTI/$FILENAMETGZ.tgz"`;
}
next;
}
if ($target eq 'ZIP') {
$NEWDESTI=$DESTI;
if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; }
if ( $target eq 'ZIP' ) {
$NEWDESTI = $DESTI;
if ( -d $DESTI . '/../modules' ) {
$NEWDESTI = $DESTI . '/../modules';
}
print "Remove target $FILENAMEZIP.zip...\n";
unlink "$NEWDESTI/$FILENAMEZIP.zip";
print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n";
print "Remove target $FILENAMEZIP.zip...\n";
unlink "$NEWDESTI/$FILENAMEZIP.zip";
print "Compress $FILENAMEZIP into $FILENAMEZIP.zip...\n";
print "Go to directory $BUILDROOT/$PROJECTLC\n";
$olddir=getcwd();
chdir("$BUILDROOT/$PROJECTLC");
$cmd= "7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip *";
print $cmd."\n";
$ret= `$cmd`;
chdir("$olddir");
print "Go to directory $BUILDROOT/$PROJECTLC\n";
$olddir = getcwd();
chdir("$BUILDROOT/$PROJECTLC");
$cmd = "7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip *";
print $cmd. "\n";
$ret = `$cmd`;
chdir("$olddir");
print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n";
$ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`;
$ret=`chown $OWNER:$GROUP "$NEWDESTI/$FILENAMEZIP.zip"`;
next;
}
print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n";
$ret =
`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`;
$ret = `chown $OWNER:$GROUP "$NEWDESTI/$FILENAMEZIP.zip"`;
next;
}
if ($target eq 'EXE') {
$NEWDESTI=$DESTI;
if (-d $DESTI.'/../modules') { $NEWDESTI=$DESTI.'/../modules'; }
if ( $target eq 'EXE' ) {
$NEWDESTI = $DESTI;
if ( -d $DESTI . '/../modules' ) {
$NEWDESTI = $DESTI . '/../modules';
}
print "Remove target $FILENAMEEXE.exe...\n";
unlink "$NEWDESTI/$FILENAMEEXE.exe";
print "Compress into $FILENAMEEXE.exe by $FILENAMEEXE.nsi...\n";
$command="\"$REQUIREMENTTARGET{$target}\" /DMUI_VERSION_DOT=$MAJOR.$MINOR.$BUILD /X\"SetCompressor bzip2\" \"$SOURCE\\dev\\build\\exe\\$FILENAME.nsi\"";
print "$command\n";
$ret=`$command`;
print "Move $FILENAMEEXE.exe to $NEWDESTI\n";
rename("$SOURCE\\dev\\build\\exe\\$FILENAMEEXE.exe","$NEWDESTI/$FILENAMEEXE.exe");
next;
}
print "Remove target $FILENAMEEXE.exe...\n";
unlink "$NEWDESTI/$FILENAMEEXE.exe";
print "Compress into $FILENAMEEXE.exe by $FILENAMEEXE.nsi...\n";
$command =
"\"$REQUIREMENTTARGET{$target}\" /DMUI_VERSION_DOT=$MAJOR.$MINOR.$BUILD /X\"SetCompressor bzip2\" \"$SOURCE\\dev\\build\\exe\\$FILENAME.nsi\"";
print "$command\n";
$ret = `$command`;
print "Move $FILENAMEEXE.exe to $NEWDESTI\n";
rename( "$SOURCE\\dev\\build\\exe\\$FILENAMEEXE.exe",
"$NEWDESTI/$FILENAMEEXE.exe" );
next;
}
}
}
}
print "\n----- Summary -----\n";
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) {
print "Package $target not built (bad requirement).\n";
} else {
print "Package $target built successfully in $NEWDESTI\n";
}
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) {
print "Package $target not built (bad requirement).\n";
}
else {
print "Package $target built successfully in $NEWDESTI\n";
}
}
}
if (! $batch) {
print "\nPress key to finish...";
my $WAITKEY=<STDIN>;
if ( !$batch ) {
print "\nPress key to finish...";
my $WAITKEY = <STDIN>;
}
0;

View File

@@ -4,268 +4,294 @@
# \brief Script to build a theme Package for Dolibarr
# \author (c)2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
#-----------------------------------------------------------------------------
## no critic (InputOutput::ProhibitExplicitStdin)
use strict;
use warnings;
use Cwd;
use Term::ANSIColor;
$PROJECT="dolibarr";
$PROJECT = "dolibarr";
@LISTETARGET=("TGZ"); # Possible packages
%REQUIREMENTTARGET=( # Tool requirement for each package
"TGZ"=>"tar",
"ZIP"=>"7z",
"RPM"=>"rpmbuild",
"DEB"=>"dpkg-buildpackage",
"EXE"=>"makensis.exe"
@LISTETARGET = ("TGZ"); # Possible packages
%REQUIREMENTTARGET = ( # Tool requirement for each package
"TGZ" => "tar",
"ZIP" => "7z",
"RPM" => "rpmbuild",
"DEB" => "dpkg-buildpackage",
"EXE" => "makensis.exe"
);
%ALTERNATEPATH=(
"7z"=>"7-ZIP",
"makensis.exe"=>"NSIS"
%ALTERNATEPATH = (
"7z" => "7-ZIP",
"makensis.exe" => "NSIS"
);
use vars qw/ $REVISION $VERSION /;
$REVISION='1.11';
$VERSION="1.0 (build $REVISION)";
$REVISION = '1.11';
$VERSION = "1.0 (build $REVISION)";
#------------------------------------------------------------------------------
# MAIN
#------------------------------------------------------------------------------
($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/;
( $DIR = $0 ) =~ s/([^\/\\]+)$//;
( $PROG = $1 ) =~ s/\.([^\.]*)$//;
$Extension = $1;
$DIR ||= '.';
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
# Detect OS type
# --------------
if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; }
elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
if (! $OS) {
print "$PROG.$Extension was not able to detect your OS.\n";
if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) {
$OS = 'linux';
$CR = '';
}
elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; }
elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) {
$OS = 'windows';
$CR = "\r";
}
if ( !$OS ) {
print "$PROG.$Extension was not able to detect your OS.\n";
print "Can't continue.\n";
print "$PROG.$Extension aborted.\n";
sleep 2;
sleep 2;
exit 1;
}
# Define buildroot
# ----------------
if ($OS =~ /linux/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
if ( $OS =~ /linux/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
}
if ($OS =~ /macos/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"/tmp";
if ( $OS =~ /macos/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
}
if ($OS =~ /windows/) {
$TEMP=$ENV{"TEMP"}||$ENV{"TMP"}||"c:/temp";
$PROGPATH=$ENV{"ProgramFiles"};
if ( $OS =~ /windows/ ) {
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp";
$PROGPATH = $ENV{"ProgramFiles"};
}
if (! $TEMP || ! -d $TEMP) {
print "Error: A temporary directory can not be find.\n";
print "Check that TEMP or TMP environment variable is set correctly.\n";
if ( !$TEMP || !-d $TEMP ) {
print "Error: A temporary directory can not be find.\n";
print "Check that TEMP or TMP environment variable is set correctly.\n";
print "makepack-dolibarrtheme.pl aborted.\n";
sleep 2;
exit 2;
sleep 2;
exit 2;
}
$BUILDROOT="$TEMP/dolibarr-buildroot";
$BUILDROOT = "$TEMP/dolibarr-buildroot";
my $copyalreadydone=0;
my $batch=0;
my $copyalreadydone = 0;
my $batch = 0;
print "Makepack theme version $VERSION\n";
print "Enter name of theme(s) to package (separated with space): ";
$PROJECT=<STDIN>;
$PROJECT = <STDIN>;
chomp($PROJECT);
@PROJECTLIST=split(/ /,$PROJECT);
$PROJECT=join('',@PROJECTLIST);
@PROJECTLIST = split( / /, $PROJECT );
$PROJECT = join( '', @PROJECTLIST );
# Ask and set version $MAJOR and $MINOR
print "Enter value for version: ";
$PROJVERSION=<STDIN>;
$PROJVERSION = <STDIN>;
chomp($PROJVERSION);
($MAJOR,$MINOR)=split(/\./,$PROJVERSION,2);
if ($MINOR eq '')
{
( $MAJOR, $MINOR ) = split( /\./, $PROJVERSION, 2 );
if ( $MINOR eq '' ) {
print "Enter value for minor version: ";
$MINOR=<STDIN>;
$MINOR = <STDIN>;
chomp($MINOR);
}
$FILENAME = "$PROJECT";
$FILENAMETGZ = "theme_$PROJECT-$MAJOR.$MINOR";
$FILENAMEZIP = "theme_$PROJECT-$MAJOR.$MINOR";
$FILENAME="$PROJECT";
$FILENAMETGZ="theme_$PROJECT-$MAJOR.$MINOR";
$FILENAMEZIP="theme_$PROJECT-$MAJOR.$MINOR";
if ( -d "/usr/src/redhat" ) {
if (-d "/usr/src/redhat") {
# redhat
$RPMDIR="/usr/src/redhat";
# redhat
$RPMDIR = "/usr/src/redhat";
}
if (-d "/usr/src/RPM") {
# mandrake
$RPMDIR="/usr/src/RPM";
if ( -d "/usr/src/RPM" ) {
# mandrake
$RPMDIR = "/usr/src/RPM";
}
$SOURCE="$DIR/../..";
$DESTI="$SOURCE/build";
$SOURCE = "$DIR/../..";
$DESTI = "$SOURCE/build";
# Choose package targets
#-----------------------
$target="ZIP"; # Packages uses this format
$target = "ZIP"; # Packages uses this format
if ($target) {
$CHOOSEDTARGET{uc($target)}=1;
$CHOOSEDTARGET{ uc($target) } = 1;
}
else {
my $found=0;
my $NUM_SCRIPT;
while (! $found) {
my $cpt=0;
printf(" %d - %3s (%s)\n",$cpt,"All","Need ".join(",",values %REQUIREMENTTARGET));
foreach my $target (@LISTETARGET) {
$cpt++;
printf(" %d - %3s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target});
}
my $found = 0;
my $NUM_SCRIPT;
while ( !$found ) {
my $cpt = 0;
printf( " %d - %3s (%s)\n",
$cpt, "All", "Need " . join( ",", values %REQUIREMENTTARGET ) );
foreach my $target (@LISTETARGET) {
$cpt++;
printf( " %d - %3s (%s)\n",
$cpt, $target, "Need " . $REQUIREMENTTARGET{$target} );
}
# Are asked to select the file to move
print "Choose one package number or several separated with space: ";
$NUM_SCRIPT=<STDIN>;
chomp($NUM_SCRIPT);
if ($NUM_SCRIPT =~ s/-//g) {
# Do not do copy
$copyalreadydone=1;
}
if ($NUM_SCRIPT !~ /^[0-$cpt\s]+$/)
{
print "This is not a valid package number list.\n";
$found = 0;
}
else
{
$found = 1;
}
}
print "\n";
if ($NUM_SCRIPT) {
foreach my $num (split(/\s+/,$NUM_SCRIPT)) {
$CHOOSEDTARGET{$LISTETARGET[$num-1]}=1;
}
}
else {
foreach my $key (@LISTETARGET) {
$CHOOSEDTARGET{$key}=1;
}
}
# Are asked to select the file to move
print "Choose one package number or several separated with space: ";
$NUM_SCRIPT = <STDIN>;
chomp($NUM_SCRIPT);
if ( $NUM_SCRIPT =~ s/-//g ) {
# Do not do copy
$copyalreadydone = 1;
}
if ( $NUM_SCRIPT !~ /^[0-$cpt\s]+$/ ) {
print "This is not a valid package number list.\n";
$found = 0;
}
else {
$found = 1;
}
}
print "\n";
if ($NUM_SCRIPT) {
foreach my $num ( split( /\s+/, $NUM_SCRIPT ) ) {
$CHOOSEDTARGET{ $LISTETARGET[ $num - 1 ] } = 1;
}
}
else {
foreach my $key (@LISTETARGET) {
$CHOOSEDTARGET{$key} = 1;
}
}
}
# Test if requirement is ok
#--------------------------
foreach my $target (keys %CHOOSEDTARGET) {
foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) {
# Test
print "Test requirement for target $target: Search '$req'... ";
$ret=`"$req" 2>&1`;
$coderetour=$?; $coderetour2=$coderetour>>8;
if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) {
# Not found error, we try in PROGPATH
$ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
$coderetour=$?; $coderetour2=$coderetour>>8;
$REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req";
}
foreach my $target ( keys %CHOOSEDTARGET ) {
foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) {
if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) {
# Not found error
print "Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
$CHOOSEDTARGET{$target}=-1;
last;
} else {
# Pas erreur ou erreur autre que programme absent
print " Found ".$REQUIREMENTTARGET{$target}."\n";
}
}
# Test
print "Test requirement for target $target: Search '$req'... ";
$ret = `"$req" 2>&1`;
$coderetour = $?;
$coderetour2 = $coderetour >> 8;
if (
$coderetour != 0
&& ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i )
|| ( $coderetour2 == 127 && $OS !~ /windows/ ) )
&& $PROGPATH
)
{
# Not found error, we try in PROGPATH
$ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
$coderetour = $?;
$coderetour2 = $coderetour >> 8;
$REQUIREMENTTARGET{$target} = "$PROGPATH/$ALTERNATEPATH{$req}/$req";
}
if (
$coderetour != 0
&& ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i )
|| ( $coderetour2 == 127 && $OS !~ /windows/ ) )
)
{
# Not found error
print
"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
$CHOOSEDTARGET{$target} = -1;
last;
}
else {
# Pas erreur ou erreur autre que programme absent
print " Found " . $REQUIREMENTTARGET{$target} . "\n";
}
}
}
print "\n";
# Check if there is at least on target to build
#----------------------------------------------
$nboftargetok=0;
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) { next; }
$nboftargetok++;
$nboftargetok = 0;
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
$nboftargetok++;
}
if ($nboftargetok) {
# Update buildroot
#-----------------
if (! $copyalreadydone) {
print "Delete directory $BUILDROOT\n";
$ret=`rm -fr "$BUILDROOT"`;
mkdir "$BUILDROOT";
mkdir "$BUILDROOT/htdocs";
mkdir "$BUILDROOT/htdocs/theme";
# Update buildroot
#-----------------
if ( !$copyalreadydone ) {
print "Delete directory $BUILDROOT\n";
$ret = `rm -fr "$BUILDROOT"`;
mkdir "$BUILDROOT";
mkdir "$BUILDROOT/htdocs";
mkdir "$BUILDROOT/htdocs/theme";
print "Copy $SOURCE into $BUILDROOT\n";
mkdir "$BUILDROOT";
foreach my $tmp (@PROJECTLIST)
{
$ret=`cp -pr "$SOURCE/htdocs/theme/$tmp" "$BUILDROOT/htdocs/theme"`;
print "Copy $SOURCE into $BUILDROOT\n";
mkdir "$BUILDROOT";
foreach my $tmp (@PROJECTLIST) {
$ret =
`cp -pr "$SOURCE/htdocs/theme/$tmp" "$BUILDROOT/htdocs/theme"`;
}
}
print "Clean $BUILDROOT\n";
$ret=`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/Thumbs.db`;
$ret=`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/*/CVS*`;
}
print "Clean $BUILDROOT\n";
$ret =
`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/Thumbs.db $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/Thumbs.db`;
$ret =
`rm -fr $BUILDROOT/htdocs/theme/$PROJECT/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/CVS* $BUILDROOT/htdocs/theme/$PROJECT/*/*/*/*/*/CVS*`;
# Build package for each target
#------------------------------
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
# Build package for each target
#------------------------------
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) { next; }
print "\nBuild package for target $target\n";
print "\nBuild package for target $target\n";
if ( $target eq 'TGZ' ) {
unlink $FILENAMETGZ . tgz;
print "Compress $BUILDROOT/htdocs into $FILENAMETGZ.tgz...\n";
$cmd =
"tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" htdocs";
$ret = `$cmd`;
if ( $OS =~ /windows/i ) {
print "Move $FILENAMETGZ.tgz to $DESTI/$FILENAMETGZ.tgz\n";
$ret = `mv "$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`;
}
next;
}
if ($target eq 'TGZ') {
unlink $FILENAMETGZ.tgz;
print "Compress $BUILDROOT/htdocs into $FILENAMETGZ.tgz...\n";
$cmd="tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" htdocs";
$ret=`$cmd`;
if ($OS =~ /windows/i) {
print "Move $FILENAMETGZ.tgz to $DESTI/$FILENAMETGZ.tgz\n";
$ret=`mv "$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`;
}
next;
}
if ($target eq 'ZIP') {
unlink $FILENAMEZIP.zip;
print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n";
chdir("$BUILDROOT");
$ret=`7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip htdocs`;
if ( $target eq 'ZIP' ) {
unlink $FILENAMEZIP . zip;
print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n";
chdir("$BUILDROOT");
$ret = `7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip htdocs`;
print "Move $FILENAMEZIP.zip to $DESTI\n";
$ret=`mv "$FILENAMEZIP.zip" "$DESTI/$FILENAMEZIP.zip"`;
next;
}
$ret = `mv "$FILENAMEZIP.zip" "$DESTI/$FILENAMEZIP.zip"`;
next;
}
}
}
}
print "\n----- Summary -----\n";
foreach my $target (keys %CHOOSEDTARGET) {
if ($CHOOSEDTARGET{$target} < 0) {
print "Package $target not built (bad requirement).\n";
} else {
print "Package $target built successfully in $DESTI\n";
}
foreach my $target ( keys %CHOOSEDTARGET ) {
if ( $CHOOSEDTARGET{$target} < 0 ) {
print "Package $target not built (bad requirement).\n";
}
else {
print "Package $target built successfully in $DESTI\n";
}
}
if (! $btach) {
print "\nPress key to finish...";
my $WAITKEY=<STDIN>;
if ( !$btach ) {
print "\nPress key to finish...";
my $WAITKEY = <STDIN>;
}
0;

View File

@@ -1,7 +1,7 @@
#----------------------------------------------------------------------------
# \file dolibarr.pl
# \brief Dolibarr script install for Virtualmin Pro
# \author (c)2009-2020 Regis Houssin <regis.houssin@inodbox.com>
# \author (c)2009-2025 Regis Houssin <regis.houssin@inodbox.com>
#----------------------------------------------------------------------------
@@ -30,7 +30,15 @@ return "Regis Houssin";
# script_dolibarr_versions()
sub script_dolibarr_versions
{
return ( "14.0.5", "13.0.5", "12.0.5", "11.0.5", "10.0.7", "9.0.4", "8.0.6", "7.0.5" );
return ( "22.0.3", "21.0.4", "20.0.4", "19.0.4", "18.0.8", "17.0.4", "16.0.5" );
}
sub script_dolibarr_version_desc
{
local ($ver) = @_;
my ($major_ver) = $ver =~ /^(\d+)\..*/;
return $major_ver == 22 ? "$ver (Latest)" :
$major_ver == 18 ? "$ver (LTS)" : "$ver";
}
sub script_dolibarr_release
@@ -38,6 +46,11 @@ sub script_dolibarr_release
return 2; # for mysqli fix
}
sub script_dolibarr_testable
{
return 1;
}
sub script_dolibarr_category
{
return "Commerce";
@@ -45,14 +58,23 @@ return "Commerce";
sub script_dolibarr_php_vers
{
return ( 5 );
return ( 7 );
}
sub script_dolibarr_php_vars
{
return ( [ 'memory_limit', '128M', '+' ] );
}
sub script_dolibarr_php_modules
{
local ($d, $ver, $phpver, $opts) = @_;
local ($dbtype, $dbname) = split(/_/, $opts->{'db'}, 2);
return $dbtype eq "mysql" ? ("mysql") : ("pgsql");
local @modules = ("xml", "mbstring", "gd", "iconv",
"curl", "intl", "zip");
push(@modules, ($dbtype eq "mysql" ? "mysql" : "pgsql"));
return @modules;
}
sub script_dolibarr_dbs
@@ -61,34 +83,10 @@ local ($d, $ver) = @_;
return ("mysql", "postgres");
}
# script_dolibarr_depends(&domain, version)
sub script_dolibarr_depends
sub script_dolibarr_php_fullver
{
local ($d, $ver, $sinfo, $phpver) = @_;
local @rv;
if ($ver >= 3.6) {
# Check for PHP 5.3+
local $phpv = &get_php_version($phpver || 5, $d);
if (!$phpv) {
push(@rv, "Could not work out exact PHP version");
}
elsif ($phpv < 5.3) {
push(@rv, "Dolibarr requires PHP version 5.3 or later");
}
}
if ($ver >= 12.0) {
# Check for PHP 5.6+
local $phpv = &get_php_version($phpver || 5, $d);
if (!$phpv) {
push(@rv, "Could not work out exact PHP version");
}
elsif ($phpv < 5.6) {
push(@rv, "Dolibarr requires PHP version 5.6 or later");
}
}
return @rv;
local ($d, $ver, $sinfo) = @_;
return "7.1";
}
# script_dolibarr_params(&domain, version, &upgrade-info)
@@ -195,7 +193,7 @@ local $dbpass = $dbtype eq "mysql" ? &mysql_pass($d) : &postgres_pass($d, 1);
local $dbphptype = $dbtype eq "mysql" && $version < 3.6 ? "mysql" :
$dbtype eq "mysql" ? "mysqli" : "pgsql";
local $dbhost = &get_database_host($dbtype, $d);
local $dberr = &check_script_db_connection($dbtype, $dbname, $dbuser, $dbpass);
local $dberr = &check_script_db_connection($d, $dbtype, $dbname, $dbuser, $dbpass);
return (0, "Database connection failed : $dberr") if ($dberr);
# Extract tar file to temp dir and copy to target
@@ -295,6 +293,9 @@ else {
[ "db_name", $dbname ],
[ "db_user", $dbuser ],
[ "db_pass", $dbpass ],
[ "db_prefix", 'llx_' ],
[ "db_port", '3306' ],
[ "selectlang", 'en_US' ],
[ "action", "set" ],
[ "main_force_https", $opts->{'forcehttps'} ],
[ "dolibarr_main_db_character_set", $charset ],
@@ -400,24 +401,32 @@ sub script_dolibarr_check_latest
{
local ($ver) = @_;
local @vers = &osdn_package_versions("dolibarr",
$ver >= 14.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 13.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 12.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 11.0 ? "dolibarr\\-(11\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 10.0 ? "dolibarr\\-(10\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 9.0 ? "dolibarr\\-(9\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 8.0 ? "dolibarr\\-(8\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 7.0 ? "dolibarr\\-(7\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 6.0 ? "dolibarr\\-(6\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 5.0 ? "dolibarr\\-(5\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 4.0 ? "dolibarr\\-(4\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.9 ? "dolibarr\\-(3\\.9\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.8 ? "dolibarr\\-(3\\.8\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.7 ? "dolibarr\\-(3\\.7\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.6 ? "dolibarr\\-(3\\.6\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.5 ? "dolibarr\\-(3\\.5\\.[0-9\\.]+)\\.tgz" :
$ver >= 2.9 ? "dolibarr\\-(2\\.9\\.[0-9\\.]+)\\.tgz" :
"dolibarr\\-(2\\.8\\.[0-9\\.]+)\\.tgz");
$ver >= 22.0 ? "dolibarr\\-(22\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 21.0 ? "dolibarr\\-(21\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 20.0 ? "dolibarr\\-(20\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 19.0 ? "dolibarr\\-(19\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 18.0 ? "dolibarr\\-(18\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 17.0 ? "dolibarr\\-(17\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 16.0 ? "dolibarr\\-(16\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 15.0 ? "dolibarr\\-(15\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 14.0 ? "dolibarr\\-(14\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 13.0 ? "dolibarr\\-(13\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 12.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 11.0 ? "dolibarr\\-(11\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 10.0 ? "dolibarr\\-(10\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 9.0 ? "dolibarr\\-(9\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 8.0 ? "dolibarr\\-(8\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 7.0 ? "dolibarr\\-(7\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 6.0 ? "dolibarr\\-(6\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 5.0 ? "dolibarr\\-(5\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 4.0 ? "dolibarr\\-(4\\.0\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.9 ? "dolibarr\\-(3\\.9\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.8 ? "dolibarr\\-(3\\.8\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.7 ? "dolibarr\\-(3\\.7\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.6 ? "dolibarr\\-(3\\.6\\.[0-9\\.]+)\\.tgz" :
$ver >= 3.5 ? "dolibarr\\-(3\\.5\\.[0-9\\.]+)\\.tgz" :
$ver >= 2.9 ? "dolibarr\\-(2\\.9\\.[0-9\\.]+)\\.tgz" :
"dolibarr\\-(2\\.8\\.[0-9\\.]+)\\.tgz");
return "Failed to find versions" if (!@vers);
return $ver eq $vers[0] ? undef : $vers[0];
}
@@ -432,4 +441,26 @@ sub script_dolibarr_passmode
return 2;
}
sub script_dolibarr_db_conn_desc
{
my $db_conn_desc =
{ 'conf/conf.php' =>
{
'dbpass' =>
{
'func' => 'php_quotemeta',
'func_params' => 1,
'replace' => [ '\$dolibarr_main_db_pass\s*=' =>
'$dolibarr_main_db_pass=\'$$sdbpass\';' ],
},
'dbuser' =>
{
'replace' => [ '\$dolibarr_main_db_user\s*=' =>
'$dolibarr_main_db_user=\'$$sdbuser\';' ],
},
}
};
return $db_conn_desc;
}
1;

File diff suppressed because it is too large Load Diff

View File

@@ -30,27 +30,17 @@ Alias /dolibarr /usr/share/dolibarr/htdocs
ErrorDocument 404 /public/error-404.php
# OPTIMIZE: To use gzip compressed files (for Dolibarr already compressed files).
# Note that constant MAIN_OPTIMIZE_SPEED must have a value with bit 0 set.
#AddType text/javascript .jgz
#AddEncoding gzip .jgz
# OPTIMIZE: To use gzip compression (on the fly).
# Note that you must also enable the module mod_deflate.
# You can also set this with constant MAIN_OPTIMIZE_SPEED and bit 2 set.
#TODO
# OPTIMIZE: To use cache on static pages (A259200 = 1 month).
# Note that you must also enable the module mod_expires.
#ExpiresActive On
#ExpiresByType image/x-icon A2592000
#ExpiresByType image/gif A2592000
#ExpiresByType image/png A2592000
#ExpiresByType image/jpeg A2592000
#ExpiresByType text/css A2592000
#ExpiresByType text/javascript A2592000
#ExpiresByType application/x-javascript A2592000
#ExpiresByType application/javascript A2592000
# OPTIMIZE: To use cache on static pages (A259200 = 1 month).
# Note that you must also enable the module mod_expires.
#ExpiresActive On
#ExpiresByType image/x-icon A2592000
#ExpiresByType image/gif A2592000
#ExpiresByType image/png A2592000
#ExpiresByType image/jpeg A2592000
#ExpiresByType text/css A2592000
#ExpiresByType text/javascript A2592000
#ExpiresByType application/x-javascript A2592000
#ExpiresByType application/javascript A2592000
</DirectoryMatch>

View File

@@ -1,6 +1,6 @@
This file describes changes made on external libraries after being included
in Dolibarr root.
This file describes the changes made on external libraries to fix some bugs, after they were included
in Dolibarr external vendor dir (htdocs/includes).
@@ -267,6 +267,18 @@ PHP JQUERYFILETREE:
PHP Mobile_DETECT:
------------------
Remplacer:
array $headers = null,
par
$headers = null,
PHP RESTLER:
------------

View File

@@ -1,4 +1,4 @@
README (english)
--------------------------------
This directory contains some sample files to test ldap command on command line.
They are used to help developmement and debugging of Dolibarr LDAP features.
They are used to help developmement and debugging of Dolibarr LDAP features.

View File

@@ -8,4 +8,4 @@
dn: ou=contacts,dc=my-domain,dc=com
objectClass: organizationalUnit
ou: contacts
ou: contacts

View File

@@ -24,6 +24,5 @@
# ldapsearch -h hostname -p 389 -x -D "cn=manager,o=somecompany.com" -w password -b "ou=people,dc=teclib,dc=infra"
# ldapsearch -h hostname -p 389 -x -D "cn=manager,o=somecompany.com" -w password -b "o=somecompany.com" "(objectclass=*)"
#
# Example to test a ldap search:
# Example to test a ldap search:
# ldapsearch -h hostname -p 389 -x -z 5 -b 'OU=Collaborateurs,OU=Utilisateurs,OU=MyCompany,DC=bocal,DC=lan' -D 'CN=UserAdmin,OU=Informatique,OU=Utilisateurs,OU=MyCompany,DC=bocal,DC=lan' -w password

View File

@@ -65,4 +65,4 @@ o9CFUO94RUiiEpmahN6IfgQXpQJUft9yuDseAluyCkKif5QkQA3IvwVYD2mv0R1uc9gY
fZt0uru+Tc93cnQQ82A5KVrVVvvahsyxtQFRMOgFLl8ct3wu6NVPyQPby9YUk2J4dpQr
R5X+bCaMew5mDNsdjMV95GesdhT3n3y32Az+XZsuecMoxePVX5S+GRSu/9XVL9Z+w7Ki
--468358388441498ebb24096bfda88a45--
--468358388441498ebb24096bfda88a45--

View File

@@ -46,4 +46,4 @@ Content-Transfer-Encoding: quoted-printable
... attach-file ...
--------------090104020208060008040809-- (end multipart/mixed)
--------------090104020208060008040809-- (end multipart/mixed)

View File

@@ -45,4 +45,4 @@ VEImZGI9b2Rvb192OCc+UGFydG5lciBBZ3JvbGFpdDwvYT48L3NtYWxsPjwvc3Bhbj4K
--===============8764907306434163361==--
--===============4543832834454763172==--
--===============4543832834454763172==--

View File

@@ -71,7 +71,7 @@ Content-Type: text/plain; charset="UTF-8"
adfsdfsdfds
--
--
Laurent.
------------------------------------------------------------------------------------
Twitter: https://www.twitter.com/eldy10

View File

@@ -3,4 +3,3 @@
Take a look at the dolibarr wiki page of Zapier module:
https://wiki.dolibarr.org/index.php?title=Module_Zapier

View File

@@ -1,56 +1,25 @@
{
"table_rowid": "id",
"id": 6764,
"ref": null,
"type_id": "5",
"type_code": "AC_RDV",
"type": null,
"type_color": null,
"code": null,
"label": "azerty",
"datec": null,
"datem": null,
"authorid": null,
"usermodid": null,
"datep": 1555365600,
"datef": 1555538399,
"durationp": 172799,
"fulldayevent": 1,
"punctual": 1,
"percentage": "-1",
"location": "",
"transparency": 1,
"priority": 0,
"userassigned": {
"1": {
"id": "1",
"transparency": 1
}
},
"userownerid": "1",
"userdoneid": null,
"usertodo": null,
"userdone": null,
"socid": null,
"contactid": null,
"elementtype": "",
"icalname": null,
"icalcolor": null,
"actions": [],
"email_msgid": null,
"email_from": null,
"email_sender": null,
"email_to": null,
"email_tocc": null,
"email_tobcc": null,
"email_subject": null,
"errors_to": null,
"import_key": null,
"linkedObjectsIds": null,
"fk_project": 0,
"modelpdf": null,
"note_public": null,
"note_private": null,
"note": "wxcvbn",
"duree": 0
}
"table_rowid" : "id",
"id" : 6764,
"type_id" : "5",
"type_code" : "AC_RDV",
"label" : "azerty",
"datep" : 1555365600,
"datef" : 1555538399,
"durationp" : 172799,
"fulldayevent" : 1,
"punctual" : 1,
"percentage" : "-1",
"transparency" : 1,
"priority" : 0,
"userassigned" : {
"1" : {
"id" : "1",
"transparency" : 1
}
},
"userownerid" : "1",
"fk_project" : 0,
"note" : "wxcvbn",
"duree" : 0
}

View File

@@ -46,6 +46,8 @@ passwd=$6
if [ "$confirm" != "confirm" ]
then
echo "----- $0 -----"
echo "Usage: initdemo.sh confirm "
echo " or"
echo "Usage: initdemo.sh confirm [mysqldump_dolibarr_x.x.x.sql database port login pass]"
exit
fi
@@ -56,6 +58,8 @@ command -v dialog >/dev/null 2>&1 || {
echo "Error: command dialog not found. On Linux, you can install it with: apt install dialog"
exit
}
DIALOG=${DIALOG:=dialog}
DIALOG="$DIALOG --ascii-lines"
# ----------------------------- if no params on command line
@@ -67,8 +71,7 @@ then
dumpfile=$(basename "$dumpfile")
# ----------------------------- input file
DIALOG=${DIALOG:=dialog}
DIALOG="$DIALOG --ascii-lines"
fichtemp=$(mktemp 2>/dev/null) || fichtemp=/tmp/test$$
# shellcheck disable=2064,2172
trap "rm -f $fichtemp" 0 1 2 5 15
@@ -85,8 +88,6 @@ then
rm "$fichtemp"
# ----------------------------- database name
DIALOG=${DIALOG:=dialog}
DIALOG="$DIALOG --ascii-lines"
fichtemp=$(mktemp 2>/dev/null) || fichtemp=/tmp/test$$
# shellcheck disable=2064,2172
trap "rm -f '$fichtemp'" 0 1 2 5 15
@@ -103,13 +104,10 @@ then
rm "$fichtemp"
# ---------------------------- database port
DIALOG=${DIALOG:=dialog}
fichtemp=$(mktemp 2>/dev/null) || fichtemp=/tmp/test$$
# shellcheck disable=2064,2172
trap "rm -f '$fichtemp'" 0 1 2 5 15
$DIALOG --title "Init Dolibarr with demo values" --clear \
--inputbox "Mysql port (ex: 3306):" 16 55 3306 2> "$fichtemp"
$DIALOG --title "Init Dolibarr with demo values" --clear --inputbox "Mysql port (ex: 3306):" 16 55 3306 2> "$fichtemp"
valret=$?
case $valret in
@@ -123,13 +121,10 @@ then
rm "$fichtemp"
# ---------------------------- compte admin mysql
DIALOG=${DIALOG:=dialog}
fichtemp=$(mktemp 2>/dev/null) || fichtemp=/tmp/test$$
# shellcheck disable=2064,2172
trap "rm -f '$fichtemp'" 0 1 2 5 15
$DIALOG --title "Init Dolibarr with demo values" --clear \
--inputbox "Mysql user login (ex: root):" 16 55 root 2> "$fichtemp"
$DIALOG --title "Init Dolibarr with demo values" --clear --inputbox "Mysql user login (ex: root):" 16 55 root 2> "$fichtemp"
valret=$?
case $valret in
@@ -143,13 +138,10 @@ then
rm "$fichtemp"
# ---------------------------- password admin mysql (root)
DIALOG=${DIALOG:=dialog}
fichtemp=$(mktemp 2>/dev/null) || fichtemp=/tmp/test$$
# shellcheck disable=2064,2172
trap "rm -f '$fichtemp'" 0 1 2 5 15
$DIALOG --title "Init Dolibarr with demo values" --clear \
--passwordbox "Password for Mysql user login :" 16 55 2> "$fichtemp"
$DIALOG --title "Init Dolibarr with demo values" --clear --passwordbox "Password for Mysql user login :" 16 55 2> "$fichtemp"
valret=$?
case $valret in
@@ -169,9 +161,7 @@ then
# ---------------------------- confirmation
DIALOG=${DIALOG:=dialog}
$DIALOG --title "Init Dolibarr with demo values" --clear \
--yesno "Do you confirm ? \n Dump file : '$dumpfile' \n Dump dir : '$mydir' \n Document dir : '$documentdir' \n Mysql database : '$base' \n Mysql port : '$port' \n Mysql login: '$admin' \n Mysql password : --hidden--" 15 55
$DIALOG --title "Init Dolibarr with demo values" --clear --yesno "Do you confirm ? \n Dump file : '$dumpfile' \n Dump dir : '$mydir' \n Document dir : '$documentdir' \n Mysql database : '$base' \n Mysql port : '$port' \n Mysql login: '$admin' \n Mysql password : --hidden--" 15 55
case $? in
0) echo "Ok, start process..." ;;
@@ -211,26 +201,21 @@ export documentdir
documentdir=$(< "$mydir/../../htdocs/conf/conf.php" grep '^\$dolibarr_main_data_root' | sed -e 's/$dolibarr_main_data_root=//' | sed -e 's/;//' | sed -e "s/'//g" | sed -e 's/"//g')
if [ "$documentdir" != "" ]
then
"$DIALOG" --title "Reset document directory" --clear \
--inputbox "DELETE and recreate document directory '$documentdir/':" 16 55 n 2> "$fichtemp"
$DIALOG --title "Reset document directory" --clear --yesno "DELETE and recreate document directory '$documentdir/':" 16 55
valret=$?
case $valret in
0)
rep=$(cat "$fichtemp") ;;
# YES
echo "RECREATE $documentdir"
echo " rm -fr '$documentdir/'*"
rm -fr "${documentdir:?}/"* ;;
1)
exit ;;
255)
exit ;;
esac
echo "rep=$rep"
if [ "$rep" = "y" ]; then
echo "rm -fr '$documentdir/'*"
rm -fr "${documentdir:?}/"*
fi
echo "cp -pr '$mydir/documents_demo/'* '$documentdir/'"
cp -pr "$mydir/documents_demo/"* "$documentdir/"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -256,6 +256,7 @@ export list="
--ignore-table=$base.llx_c_ticketsup_type
--ignore-table=$base.llx_cabinetmed_c_banques
--ignore-table=$base.llx_cabinetmed_c_examconclusion
--ignore-table=$base.llx_cabinetmed_cons
--ignore-table=$base.llx_cabinetmed_cons_extrafields
--ignore-table=$base.llx_cabinetmed_diaglec
--ignore-table=$base.llx_cabinetmed_examaut
@@ -269,6 +270,7 @@ export list="
--ignore-table=$base.llx_congespayes_events
--ignore-table=$base.llx_congespayes_logs
--ignore-table=$base.llx_congespayes_users
--ignore-table=$base.llx_deplacement
--ignore-table=$base.llx_dolicloud_customers
--ignore-table=$base.llx_dolicloud_stats
--ignore-table=$base.llx_dolicloud_emailstemplates

7
dev/lockedfiles.txt Normal file
View File

@@ -0,0 +1,7 @@
---- Locked files -----
This file is the list of the signatures of some set of files locked to block a commit if files are tried to be modified for a given version.
It is used by the CI or the script to check and guarantee that no change is done on a given scope of files.
Version Scope Algo Signature (generated by dev/build/generate_filelist_xml.php) that must remain unchanged for this couple version/scope
x.0.0 unalterable_files sha256 123456

3
dev/resources/dbmodel/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/dolibarr_schema.mwb.bak
/dolibarr_schema.mwb.sav.mwb
/dolibarr_schema.mwb.sav.mwb.bak

View File

@@ -1,2 +1,2 @@
This directory contains the file with the graphical database structure.
It can be read with MySQL Workbench software.
It can be read with MySQL Workbench software.

View File

@@ -2,5 +2,5 @@ EORI
https://en.wikipedia.org/wiki/EORI_number
in Dolibarr avaiable since v13
in Dolibarr avaiable since v13
- it is set to field 'profid5'

View File

@@ -18,5 +18,3 @@ Et ça marche à linverse avec un fournisseur sauf que lon est en 775000 a
Un compte comptable de Tiers vente = Acount Receivable
Un compte comptable de Tiers achat = Acount Payable

View File

@@ -3,4 +3,3 @@ Address format
https://bitboost.com/ref/international-address-formats.html#Formats
https://www.upu.int/en/Postal-Solutions/Programmes-Services/Addressing-Solutions

View File

@@ -117,5 +117,3 @@ IBAN : FR54 3000 4031 2800 032T 56H9 125
Division :
3000403128000322956179125152754 / 97 =
3000403128000322956179125152753 reste 1.

View File

@@ -1,4 +1,4 @@
NACE
NACE
https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=LST_CLS_DLD&StrNom=NACE_REV2&StrLanguageCode=EN&StrLayoutCode=

View File

@@ -3,7 +3,7 @@
# The list is updated whenever a change to the official code list in ISO 3166-1 is effected by the ISO 3166/MA.
# It lists 240 official short names and code elements. One line of text contains one entry.
# A country name and its code element are separated by a semicolon (;).
# https://www.iso.org/iso-3166-country-codes.html
# https://www.iso.org/iso-3166-country-codes.html
# https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
# ISO-3166: https://en.wikipedia.org/wiki/ISO_3166-1

View File

@@ -136,4 +136,4 @@
<xsd:element name="regionCode" type="xsd:string"/>
<xsd:element name="date" type="xsd:date"/>
<xsd:element name="time" type="xsd:time"/>
</xsd:schema>
</xsd:schema>

View File

@@ -52,12 +52,12 @@ GUARANI GN AMERINDIAN
GUJARATI GU INDIAN
HAUSA HA NEGRO-AFRICAN
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
HINDI HI INDIAN
HUNGARIAN HU FINNO-UGRIC
ICELANDIC IS GERMANIC
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
INTERLINGUA IA INTERNATIONAL AUX.
INTERLINGUE IE INTERNATIONAL AUX.
INUKTITUT IU [ ]
@@ -159,7 +159,7 @@ WOLOF WO NEGRO-AFRICAN
XHOSA XH NEGRO-AFRICAN
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
YORUBA YO NEGRO-AFRICAN
ZHUANG ZA [ ]
@@ -211,7 +211,7 @@ GALICIAN GL ROMANCE
GUARANI GN AMERINDIAN
GUJARATI GU INDIAN
HAUSA HA NEGRO-AFRICAN
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
HINDI HI INDIAN
CROATIAN HR SLAVIC
HUNGARIAN HU FINNO-UGRIC
@@ -219,7 +219,7 @@ ARMENIAN HY INDO-EUROPEAN (OTHER)
INTERLINGUA IA INTERNATIONAL AUX.
INTERLINGUE IE INTERNATIONAL AUX.
INUPIAK IK ESKIMO
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
ICELANDIC IS GERMANIC
ITALIAN IT ROMANCE
INUKTITUT IU [ ]
@@ -304,7 +304,7 @@ VIETNAMESE VI ASIAN
VOLAPUK VO INTERNATIONAL AUX.
WOLOF WO NEGRO-AFRICAN
XHOSA XH NEGRO-AFRICAN
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
YORUBA YO NEGRO-AFRICAN
ZHUANG ZA [ ]
CHINESE ZH ASIAN
@@ -362,7 +362,7 @@ GERMAN DE GERMANIC
ICELANDIC IS GERMANIC
NORWEGIAN NO GERMANIC
SWEDISH SV GERMANIC
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
YIDDISH YI GERMANIC [*Changed 1989 from original ISO 639:1988, JI]
AFAN (OROMO) OM HAMITIC
AFAR AA HAMITIC
@@ -420,7 +420,7 @@ YORUBA YO NEGRO-AFRICAN
ZULU ZU NEGRO-AFRICAN
FIJI FJ OCEANIC/INDONESIAN
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
INDONESIAN ID OCEANIC/INDONESIAN [*Changed 1989 from original ISO 639:1988, IN]
JAVANESE JV OCEANIC/INDONESIAN
MALAGASY MG OCEANIC/INDONESIAN
MALAY MS OCEANIC/INDONESIAN
@@ -444,7 +444,7 @@ SPANISH ES ROMANCE
AMHARIC AM SEMITIC
ARABIC AR SEMITIC
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
HEBREW HE SEMITIC [*Changed 1989 from original ISO 639:1988, IW]
MALTESE MT SEMITIC
TIGRINYA TI SEMITIC

View File

@@ -5,4 +5,4 @@ terms
(fr) TVA = Taxe sur la Valeur Ajouté
(es) NIF / CIF
(de) USt / MwSt = UmsatzSteuer / Mehrwertsteuer
(it) IVA
(it) IVA

View File

@@ -5,6 +5,6 @@ https://www.taxrates.cc/index.html
https://en.wikipedia.org/wiki/List_of_countries_by_tax_rates
For India: VAT=IGST / CGST=Localtax1 / SGST=Localtax2
see:
see:
https://cleartax.in/s/what-is-sgst-cgst-igst
https://www.mastersindia.co/blog/what-is-cgst-sgst-igst-and-ugst/

View File

@@ -3,4 +3,4 @@ README (English)
If your web hosting does not allow you to place the folder "documents" outside
the site root, add the htaccess.txt in the root directory of
folder "documents" by renaming it into .htaccess
folder "documents" by renaming it into .htaccess

View File

@@ -0,0 +1,103 @@
<?php
/* 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
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace codesniffer\Sniffs\Dolibarr;
use PHP_CodeSniffer\Sniffs\Sniff;
use PHP_CodeSniffer\Files\File;
/**
* CheckIsModEnabledArgumentSniff
*/
class CheckIsModEnabledArgumentSniff implements Sniff
{
// Nom de la fonction cible
protected $targetFunction = 'ismodenabled';
protected $deprecatedModulesNames = [
'actioncomm' => 'agenda',
'adherent' => 'member',
'adherent_type' => 'member_type',
'banque' => 'bank',
'categorie' => 'category',
'commande' => 'order',
'contrat' => 'contract',
'entrepot' => 'stock',
'expedition' => 'shipping',
'facture' => 'invoice',
'ficheinter' => 'intervention',
'product_fournisseur_price' => 'productsupplierprice',
'product_price' => 'productprice',
'projet' => 'project',
'propale' => 'propal',
'socpeople' => 'contact',
];
/**
* register
*
* @return void
*/
public function register()
{
// We are listening function calls (T_STRING)
return [T_STRING];
}
/**
* process
*
* @param File $phpcsFile file to process
* @param mixed $stackPtr pointer
* @return void
*/
public function process(File $phpcsFile, $stackPtr)
{
$tokens = $phpcsFile->getTokens();
if (strtolower($tokens[$stackPtr]['content']) !== strtolower($this->targetFunction)) {
return;
}
// Check that it is a function call (followed by '(')
$openParen = $phpcsFile->findNext(T_WHITESPACE, $stackPtr + 1, null, true);
if ($tokens[$openParen]['code'] !== T_OPEN_PARENTHESIS) {
return;
}
// We are looking for the first 'useful' token after the parenthesis
$firstArgTokenPtr = $phpcsFile->findNext(T_WHITESPACE, $openParen + 1, null, true);
// If the function is called without arguments (isModEnabled()), we stop
if ($tokens[$firstArgTokenPtr]['code'] === T_CLOSE_PARENTHESIS) {
return;
}
// check value of argument
$argContent = str_replace(["'", '"'], '', $tokens[$firstArgTokenPtr]['content']);
$argCode = $tokens[$firstArgTokenPtr]['code'];
if (array_key_exists($argContent, $this->deprecatedModulesNames)) {
$phpcsFile->addError(
'The function "%s" has deprecated argument ("%s") to replace with "%s".',
$firstArgTokenPtr,
'DeprecatedArgument',
[$tokens[$stackPtr]['content'], $argContent, $this->deprecatedModulesNames[$argContent]]
);
}
}
}

View File

@@ -0,0 +1,112 @@
<?php
/* 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
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace codesniffer\Sniffs\Dolibarr;
use PHP_CodeSniffer\Sniffs\Sniff;
use PHP_CodeSniffer\Files\File;
/**
* LanguageOfCommentsSniff
*/
class LanguageOfCommentsSniff implements Sniff
{
// List of words that betray a comment in French
public $frenchWords = [
' additionner ',
' arrondir ',
' avec ',
' calculer ',
' chaine ',
' chaîne ',
' chercher ',
' chiffre ',
' chiffres ',
// ' commande ',
' commandes ',
' compteur ',
' compteurs ',
' contrats ',
' depuis ',
' diviser ',
' donnée ',
' entier ',
// ' facture ', // avoid french name of dolibarr object
' factures ',
' ligne ',
' lignes ',
' modèle ',
' niveau ',
' niveaux ',
' nombre ',
' parametrage ',
' paramétrage ',
' pourcentage ',
' produit ',
' produits ',
' quand ',
' rechercher ',
' sinon ',
' stocker ',
' soustraire ',
' sujet ',
' sujets ',
' suppression ',
' utilisateur ',
' utilisateurs ',
' valeur ',
' valeurs ',
];
/**
* Which tokens to listen ?
* T_COMMENT = comments // or #
* T_DOC_COMMENT_STRING = text in block comments
* @return int[]
*/
public function register()
{
return [
T_COMMENT,
T_DOC_COMMENT_STRING,
];
}
/**
* process
*
* @param File $phpcsFile file to process
* @param mixed $stackPtr pointer
* @return void
*/
public function process(File $phpcsFile, $stackPtr)
{
$tokens = $phpcsFile->getTokens();
$content = $tokens[$stackPtr]['content'];
// Basic cleanup (lowercase for comparison)
$contentLower = strtolower($content);
foreach ($this->frenchWords as $word) {
if (strpos($contentLower, $word) !== false) {
$error = "The comment appears to be in French (word detected: '%s'). Please write in English.";
$data = [trim($word)];
$phpcsFile->addWarning($error, $stackPtr, 'FrenchDetected', $data);
return; // We stop at the first occurrence.
}
}
}
}

View File

@@ -1,7 +1,7 @@
[PHP]
; ************************
: Need a special php.ini to allow usage of
: Need a special php.ini to allow usage of
; ************************
;;;;;;;;;;;;;;;;;;;

View File

@@ -21,6 +21,11 @@
<exclude-pattern>/\.git/</exclude-pattern>
<exclude-pattern>/\.cache/</exclude-pattern>
<!-- Custom rules -->
<config name="installed_paths" value="/dev/setup/codesniffer" />
<rule ref="codesniffer.Dolibarr.LanguageOfComments"/>
<rule ref="codesniffer.Dolibarr.CheckIsModEnabledArgument"/>
<!-- List of all tests -->
@@ -31,12 +36,12 @@
<!-- Rules from Generic Standard -->
<!--
<rule ref="PSR12.Files.OpenTag">
<properties>
<property name="ignoreIndent" value="true"/>
</properties>
</rule>
<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">
@@ -76,16 +81,16 @@
<severity>0</severity>
</rule>
<!-- Lower severity on warnings we do not want to show in the pre-commit reports -->
<rule ref="Generic.Files.LineLength.TooLong">
<!-- Lower severity on warnings we do not want to show in the pre-commit reports -->
<rule ref="Generic.Files.LineLength.TooLong">
<severity>4</severity>
</rule>
<rule ref="Generic.Metrics.CyclomaticComplexity.TooHigh">
</rule>
<rule ref="Generic.Metrics.CyclomaticComplexity.TooHigh">
<severity>4</severity>
</rule>
<rule ref="Generic.Metrics.NestingLevel.TooHigh">
</rule>
<rule ref="Generic.Metrics.NestingLevel.TooHigh">
<severity>4</severity>
</rule>
</rule>
<!-- Warnings on TODO -->

View File

@@ -7,7 +7,7 @@
*/</template><template autoinsert="true" context="phpcomment" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.constructorcomment" name="constructorcomment">/**
* ${tags}
*/</template><template autoinsert="true" context="phpcomment" deleted="false" description="Comment for created PHP files" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.filecomment" name="filecomment">/**
*
*
*/
</template><template autoinsert="true" context="phpcomment" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.php.ui.editor.templates.php.codetemplates.typecomment" name="typecomment">/**
* @author ${user}
@@ -47,7 +47,7 @@ ${cursor}</template><template autoinsert="false" context="php" deleted="false" d
case ${value}:
${cursor};
break;
default:
;
break;
@@ -66,21 +66,21 @@ ${cursor}</template><template autoinsert="false" context="php" deleted="false" d
</template><template autoinsert="false" context="php" deleted="false" description="lambda function statement (closure)" enabled="true" id="org.eclipse.php.ui.editor.templates.php.closure" name="closure">function (${parameters}) use (${lexical_variables}) {
${cursor};
}
</template><template autoinsert="false" context="php" deleted="false" description="class statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.cls" name="cls">class ${class_name}
</template><template autoinsert="false" context="php" deleted="false" description="class statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.cls" name="cls">class ${class_name}
{
function ${function_name}()
function ${function_name}()
{
${cursor};
}
}
</template><template autoinsert="false" context="php" deleted="false" description="class statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.class" name="class">class ${class_name}
</template><template autoinsert="false" context="php" deleted="false" description="class statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.class" name="class">class ${class_name}
{
function ${function_name}()
function ${function_name}()
{
${cursor};
}
}
</template><template autoinsert="false" context="php" deleted="false" description="if statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.if" name="if">if (${condition})
</template><template autoinsert="false" context="php" deleted="false" description="if statement" enabled="true" id="org.eclipse.php.ui.editor.templates.php.if" name="if">if (${condition})
{
${cursor};
}
@@ -115,7 +115,7 @@ if (${dollar}${dirh}) {
${cursor};
}
</template><template autoinsert="false" context="php" deleted="false" description="Trap code output" enabled="true" id="org.eclipse.php.ui.editor.templates.php.my_gc" name="my_gc">ob_start();
${cursor};
${dollar}${contents} = ob_get_contents();
@@ -142,4 +142,4 @@ ${cursor}
&lt;/body&gt;
&lt;/noframes&gt;
&lt;/frameset&gt;
&lt;/html&gt;</template></templates>
&lt;/html&gt;</template></templates>

View File

@@ -33,7 +33,7 @@ do
result1=$?
if [ "x$result1" != "x0" ]
if [ "$result1" != "0" ]
then
echo "Fix the error before commit." 1>&2
exit 1
@@ -56,10 +56,10 @@ then
result2=$?
if [ "x$result2" != "x0" ]
if [ "$result2" != "0" ]
then
# Fix standard errors
if [ "x$AUTOFIX" != "x0" ]
if [ "$AUTOFIX" != "0" ]
then
# shellcheck disable=2086,2090
"${DIRPHPCS}phpcbf" -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true $FILES

View File

@@ -9,4 +9,4 @@ cs_re:red:.*ERR.*
cs_re:white,yellow:.*WARNING.*
cs_re:green,yellow:.*NOTICE.*
cs_re:green:.*INFO.*
cs_re:white:.*DEBUG.*
cs_re:white:.*DEBUG.*

View File

@@ -45,7 +45,7 @@ function save_db_cache() (
cd "${TRAVIS_BUILD_DIR}/htdocs/install" || exit 1
# Get the target version from the version.inc.php file
target_version=$(sed -n "s/.*define('DOL_VERSION',[[:space:]]*'\\([0-9.]*\\).*/\\1/p" ../version.inc.php) ; echo $target_version
target_version=$(sed -n "s/.*define('DOL_\\(MAJOR_\\)\\?VERSION',[[:space:]]*'\\([0-9.]*\\).*/\\2/p" ../version.inc.php) ; echo $target_version
# Default in case that failed
target_version=${target_version:=22.0.0}

View File

@@ -16,4 +16,4 @@ xdebug.show_local_vars=off
xdebug.profiler_output_dir=/var/tmp
xdebug.profiler_append=0
Then xdebug profiling can be enabled by adding XDEBUG_PROFILE=1 on URL.
Then xdebug profiling can be enabled by adding XDEBUG_PROFILE=1 on URL.

View File

@@ -1 +1 @@
Files and tools of a skeleton to build a module were moved into htdocs/modulebuilder/template
Files and tools of a skeleton to build a module were moved into htdocs/modulebuilder/template

View File

@@ -5,29 +5,27 @@ README (English)
RapidAPI
##############
RapidAPI for Mac is a full-featured HTTP client that let's you test and describe the APIs you build or consume.
RapidAPI for Mac is a full-featured HTTP client that let's you test and describe the APIs you build or consume.
It has a beautiful native macOS interface to compose requests, inspect server responses, generate client code and export API definitions.
https://paw.cloud/
@@@
(@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%
@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,
@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
(@@@@@@( @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@. /@@@@@@@@@@@@@@@@@(
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@. @@@@@@@@@@@@@
@@@
(@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%
@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,
@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
(@@@@@@( @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@. /@@@@@@@@@@@@@@@@@(
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@. @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ /@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@# @@@@@@@@@@@ @@@@@@@@@@@@&
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@/
@@@@@@@@@@@@@@@@@@@@@@@@@@& .@@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@/
(@@@@@@@@@@@@@@@@@@@@@@@ .@@@@@@@@@@@ &@@@@@@@@@@@@@@@(
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@/
@@@@@@@@@@@@@@@@@@@@@@@@@@& .@@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@/
(@@@@@@@@@@@@@@@@@@@@@@@ .@@@@@@@@@@@ &@@@@@@@@@@@@@@@(
@@@@@ @@@@@ .@@@@@@@@@@@ @@@@@@@@@@@*

View File

@@ -61,7 +61,7 @@ if (empty($argv[1])) {
$outputpath = $argv[1];
$outputdir = dirname($outputpath);
$outputfile = basename($outputpath);
$outputfilerss = preg_replace('/\.\w+$/i', '', $outputfile).'-security.rss';
$outputfilerss = preg_replace('/\.\w+$/i', '', $outputfile).'-security.rss'; // Replace the .html by -security.rss
if (!is_dir($outputdir)) {
print 'Error: dir '.$outputdir.' does not exists or is not writable'."\n";
@@ -271,7 +271,7 @@ $nbofmonth = 6;
$delay = (3600 * 24 * 30 * $nbofmonth);
$arrayofalerts = array();
$commandcheck = "git log --all --shortstat --no-renames --use-mailmap --pretty=".escapeshellarg('format:%cI;%H;%aN;%aE;%ce;%s')." --since=".escapeshellarg(dol_print_date(dol_now() - $delay, '%Y-%m-%d'))." | grep -i -E ".escapeshellarg("(#yogosha|CVE|Sec:|Sec |Sec$)");
$commandcheck = "git log --all --shortstat --no-renames --use-mailmap --pretty=".escapeshellarg('format:%cI;%H;%aN;%aE;%ce;%s')." --since=".escapeshellarg(dol_print_date(dol_now() - $delay, '%Y-%m-%d'))." | grep -i -E ".escapeshellarg("(#ghsa|#yogosha|CVE|Sec:|Sec |^Sec$)");
print 'Execute git log to get commits related to security: '.$commandcheck."\n";
$output_arrglpu = array();
$resexecglpu = 0;
@@ -280,12 +280,12 @@ foreach ($output_arrglpu as $valgitlog) { // The most recent lines are first.
// Parse the line to split interesting data
$tmpval = cleanVal2($valgitlog);
if (preg_match('/(#yogosha|CVE[\s\-]*\d|Sec:|Sec\s|Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Sec: Fix #..."
if (preg_match('/(#ghsa|#yogosha|CVE[\s\-]*\d|Sec:|Sec\s|^Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Fix #..."
$alreadyfound = '';
$alreadyfoundcommitid = '';
foreach ($arrayofalerts as $val) { // Loop on already found alerts
if ($val['issueidyogosha'] && $val['issueidyogosha'] == $tmpval['issueidyogosha']) { // Already in list
$alreadyfound = 'yogosha';
if ($val['issueidvdp'] && $val['issueidvdp'] == $tmpval['issueidvdp']) { // Already in list
$alreadyfound = 'vdp';
$alreadyfoundcommitid = $val['commitid'];
break;
}
@@ -841,10 +841,10 @@ $html .= '<h2><span class="fas fa-code pictofixedwidth"></span>'.$title_security
$html .= '<div class="boxallwidth">'."\n";
$html .= '<div class="div-table-responsive">'."\n";
$html .= '<table class="list_technical_debt centpercent">'."\n";
$html .= '<tr class="trgroup"><td>Commit ID</td><td>Date</td><td style="white-space: nowrap">Reported on<br>Yogosha</td><td style="white-space: nowrap">Reported on<br>GIT</td><td style="white-space: nowrap"><a href="https://www.cve.org/CVERecord/SearchResults?query=dolibarr">Reported on<br>CVE</a></td><td>Title</td><td>Branch of fix</td></tr>'."\n";
$html .= '<tr class="trgroup"><td>Commit ID</td><td>Date</td><td style="white-space: nowrap">Reported on a<br>VDP (GHSA, Yogosha...)</td><td style="white-space: nowrap">Reported on<br>GitHub issues</td><td style="white-space: nowrap"><a href="https://www.cve.org/CVERecord/SearchResults?query=dolibarr">Reported on<br>CVE</a></td><td>Title</td><td>Branch of fix</td></tr>'."\n";
foreach ($arrayofalerts as $key => $alert) {
$cve = '';
$yogosha = empty($alert['issueidyogosha']) ? '' : $alert['issueidyogosha'];
$vdp = empty($alert['issueidvdp']) ? '' : $alert['issueidvdp'];
$arrayofalerts[$key]['url_commit'] = 'https://github.com/Dolibarr/dolibarr/commit/'.$alert['commitid'];
if (!empty($alert['issueid'])) {
$arrayofalerts[$key]['url_issue'] = 'https://github.com/Dolibarr/dolibarr/issues/'.$alert['issueid'];
@@ -853,7 +853,7 @@ foreach ($arrayofalerts as $key => $alert) {
$cve = preg_replace('/\s+/', '-', trim($alert['issueidcve']));
$arrayofalerts[$key]['url_cve'] = 'https://nvd.nist.gov/vuln/detail/CVE-'.$cve;
}
$arrayofalerts[$key]['title'] = ($project ? "[".$project."] " : "").'Security alert - '.($yogosha ? ' Yogosha #'.$yogosha.' - ' : '').($cve ? 'CVE-'.$cve.' - ' : '');
$arrayofalerts[$key]['title'] = ($project ? "[".$project."] " : "").'Security alert - '.($vdp ? ' VDP #'.$vdp.' - ' : '').($cve ? 'CVE-'.$cve.' - ' : '');
$arrayofalerts[$key]['title'] .= 'Fix committed as: '.dol_trunc($alert['commitid'], 8);
$arrayofalerts[$key]['description'] = '<![CDATA[Security alert<br>';
@@ -880,13 +880,11 @@ foreach ($arrayofalerts as $key => $alert) {
$html .= preg_replace('/T.*$/', '', $alert['created_at']);
$html .= '</td>';
// Yogosha ID
// VDP ID
$html .= '<td style="white-space: nowrap">';
if (!empty($alert['issueidyogosha'])) {
//$html .= '<a target="_blank" href="https://yogosha.com?'.$alert['issueidyogosha'].'">';
$html .= '#yogosha'.$alert['issueidyogosha'];
$arrayofalerts[$key]['description'] .= "\n<br>".'Yogosha ID #'.$alert['issueidyogosha'];
//$html .= '</a>';
if (!empty($alert['issueidvdp'])) {
$html .= '#vdp'.$alert['issueidvdp'];
$arrayofalerts[$key]['description'] .= "\n<br>".'VDP ID #'.$alert['issueidvdp'];
} else {
//$html .= '<span class="opacitymedium">public issue</span>';
}
@@ -932,7 +930,7 @@ $html .= '</div>';
$html .= '</div>';
$html .= '<br>';
$html .= 'Note:Search is done in git repository on regex string "#yogosha|CVE[\s\-]*\d|Sec:|Sec\s" (not case sensitive)<br>';
$html .= 'Note:Search is done in git repository on regex string "#ghsa|#yogosha|CVE[\s\-]*\d|Sec:|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>';
@@ -973,6 +971,18 @@ if ($fh) {
}
fwrite($fh, '</image>'."\n");
// Loop on arrayofalert to remove alerts that are on develop
foreach ($arrayofalerts as $tmpkey => $alert) {
$arrayuniquetmp = array_unique($alert['branch']);
if (count($arrayuniquetmp) == 1 && in_array('develop', $arrayuniquetmp)) {
// The alert has been fixed into develop only, so we discard it for RSS alert
print 'The alert with key '.$tmpkey.' is fixed into branch develop only, so we discard it for RSS'."\n";
unset($arrayofalerts[$tmpkey]);
}
}
// Loop on array of alerts on stable branches
foreach ($arrayofalerts as $alert) {
$alert['url_commit'] = 'https://github.com/Dolibarr/dolibarr/commit/'.$alert['commitid'];
@@ -1135,7 +1145,7 @@ function cleanVal2($val)
$tmpval['commitid'] = $tmp[1];
$tmpval['url'] = '';
$tmpval['issueid'] = '';
$tmpval['issueidyogosha'] = '';
$tmpval['issueidvdp'] = '';
$tmpval['issueidcve'] = '';
$tmpval['title'] = array_key_exists(5, $tmp) ? preg_replace('/\.$/', '', $tmp[5]) : '';
$tmpval['created_at'] = array_key_exists(0, $tmp) ? $tmp[0] : '';
@@ -1149,7 +1159,10 @@ function cleanVal2($val)
$tmpval['issueidcve'] = preg_replace('/^\-/', '', preg_replace('/\s+/', '-', trim($reg[1])));
}
if (preg_match('/#yogosha(\d+)/i', $tmpval['title'], $reg)) {
$tmpval['issueidyogosha'] = $reg[1];
$tmpval['issueidvdp'] = $reg[1];
}
if (preg_match('/#ghsa([a-z\-\d]+)/i', $tmpval['title'], $reg)) {
$tmpval['issueidvdp'] = $reg[1];
}
return $tmpval;

View File

@@ -11,351 +11,386 @@
# Pour les cles autoincrement: rowid integer AUTO_INCREMENT PRIMARY KEY,
# Mettre les index dans fichier.key.sql
#------------------------------------------------------------------------------
## no critic (InputOutput::ProhibitExplicitStdin,InputOutput::RequireBriefOpen)
use Data::Dumper;
use Getopt::Long;
use strict;
use warnings;
use vars qw/ $DIR $PROG $Extension $SOURCE $DESTI %filelist $stop /;
# command line options
my( $opt_debug, $opt_help);
my ( $opt_debug, $opt_help );
# general values
my ($out, $size);
my ( $out, $size );
# variables for constructing pre-create-table entities
my $create_sql=''; # if empty we are not making a create statement
my $create_index=''; # if empty we are not making a create statement
my %enum_datafield=(); # holds enumeration choices
my (@column_values,$enum_column, $seq);
my $table="";
my $create_sql = ''; # if empty we are not making a create statement
my $create_index = ''; # if empty we are not making a create statement
my %enum_datafield = (); # holds enumeration choices
my ( @column_values, $enum_column, $seq );
my $table = "";
#------------------------------------------------------------------------------
# MAIN
#------------------------------------------------------------------------------
($DIR=$0) =~ s/([^\/\\]+)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
$DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/;
( $DIR = $0 ) =~ s/([^\/\\]+)$//;
( $PROG = $1 ) =~ s/\.([^\.]*)$//;
$Extension = $1;
$DIR ||= '.';
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
$SOURCE="$DIR/install/mysql/tables";
$DESTI="$DIR/install/pgsql/tables";
$SOURCE = "$DIR/install/mysql/tables";
$DESTI = "$DIR/install/pgsql/tables";
# Recherche tous les fichiers .sql
opendir(DIR, $SOURCE);
foreach my $file (readdir(DIR)) {
if ($file =~ /\.sql$/ && -f "$SOURCE/$file") {
print "Found file $file\n";
$filelist{$file}=1;
}
}
closedir(DIR);
opendir( my $dir, $SOURCE );
foreach my $file ( readdir($dir) ) {
if ( $file =~ /\.sql$/ && -f "$SOURCE/$file" ) {
print "Found file $file\n";
$filelist{$file} = 1;
}
}
closedir($dir);
# Boucle sur tous les fichiers de SOURCE
#---------------------------------------
foreach my $file (keys %filelist) {
foreach my $file ( keys %filelist ) {
$ARGV[0]="$SOURCE/$file";
$ARGV[1]="$DESTI/$file";
local $ARGV[0] = "$SOURCE/$file";
local $ARGV[1] = "$DESTI/$file";
print "Convert file $ARGV[0] into $ARGV[1]\n";
print "Convert file $ARGV[0] into $ARGV[1]\n";
# MySQL to PostgreSQL dump file converter
#
# For usage: perl mysql2pgsql.perl --help
#
# homepage: http://www.rot13.org/~dpavlin/projects.html
# 1999-12-15 DbP -- Dobrica Pavlinusic <dpavlin@rot13.org>
# 1999-12-26 DbP don't make serial from auto_increment, create all manually
# (to set start value right)
# 2000-01-11 DbP now creates sequences with correct value
# 2000-04-25 DbP import into CVS (at cvs.linux.hr)
# 2001-01-29 tpo -- Tomas Pospisek <tpo@sourcepole.ch>:
# 1) make script comply to usage:
# 2) make script output to STDOUT instead of STERR
# 3) change verbosity behaveour
# 4) add debug option
# see rest of changelog at http://cvs.linux.hr/cvsweb.cgi/sql/mysql2pgsql
# 2003-12-16 jsp -- Joe Speigle <joe.speigle@jklh.us>:
# converts: s/\) *Type=MyISAM;/);/i, enum data type -> references,
# auto_increment->sequences
# 2004-01-13 jsp -- moved project to gborg; both the above declined ownership
# 2004-06-29 converts: year(4), year(2)
# homepage: gborg.postgresql.org
# MySQL to PostgreSQL dump file converter
#
# For usage: perl mysql2pgsql.perl --help
#
# homepage: http://www.rot13.org/~dpavlin/projects.html
# 1999-12-15 DbP -- Dobrica Pavlinusic <dpavlin@rot13.org>
# 1999-12-26 DbP don't make serial from auto_increment, create all manually
# (to set start value right)
# 2000-01-11 DbP now creates sequences with correct value
# 2000-04-25 DbP import into CVS (at cvs.linux.hr)
# 2001-01-29 tpo -- Tomas Pospisek <tpo@sourcepole.ch>:
# 1) make script comply to usage:
# 2) make script output to STDOUT instead of STERR
# 3) change verbosity behaveour
# 4) add debug option
# see rest of changelog at http://cvs.linux.hr/cvsweb.cgi/sql/mysql2pgsql
# 2003-12-16 jsp -- Joe Speigle <joe.speigle@jklh.us>:
# converts: s/\) *Type=MyISAM;/);/i, enum data type -> references,
# auto_increment->sequences
# 2004-01-13 jsp -- moved project to gborg; both the above declined ownership
# 2004-06-29 converts: year(4), year(2)
# homepage: gborg.postgresql.org
GetOptions("debug", "help");
GetOptions( "debug", "help" );
my $DEBUG = $opt_debug || 0;
my $HELP = $opt_help || 0;
my $DEBUG = $opt_debug || 0;
my $HELP = $opt_help || 0;
if ( ($HELP) || !defined( $ARGV[0] ) || !defined( $ARGV[1] ) ) {
print
"Usage: perl $0 {--verbose|--help|--debug} mysql_dump_file.sql pg_dump_file.sql\n";
print "\t* OPTIONS\n";
print
"\t--verbose tees to pg_dump_file.sql and STDOUT during conversion\n";
print "\t--debug does ?? \n";
print "\t--help prints this message \n";
print "\t* REQUIRED ARGUMENTS\n";
if ( defined( $ARGV[0] ) ) {
print "\tmysql_dump_file.sql ($ARGV[0])\n";
}
else {
print "\tmysql_dump_file.sql (undefined)\n";
}
if ( defined( $ARGV[1] ) ) {
print "\tpg_dump_file.sql ($ARGV[1])\n";
}
else {
print "\tpg_dump_file.sql (undefined)\n";
}
exit 1;
}
if (($HELP) || ! defined($ARGV[0]) || ! defined($ARGV[1])) {
print "Usage: perl $0 {--verbose|--help|--debug} mysql_dump_file.sql pg_dump_file.sql\n";
print "\t* OPTIONS\n";
print "\t--verbose tees to pg_dump_file.sql and STDOUT during conversion\n";
print "\t--debug does ?? \n";
print "\t--help prints this message \n";
print "\t* REQUIRED ARGUMENTS\n";
if (defined ($ARGV[0])) {
print "\tmysql_dump_file.sql ($ARGV[0])\n";
} else {
print "\tmysql_dump_file.sql (undefined)\n";
}
if (defined ($ARGV[1])) {
print "\tpg_dump_file.sql ($ARGV[1])\n";
} else {
print "\tpg_dump_file.sql (undefined)\n";
}
exit 1;
}
open( my $in, "<", "$ARGV[0]" )
|| die "can't open mysql dump file $ARGV[0]";
open( my $out, ">", "$ARGV[1]" ) || die "can't open pg dump file $ARGV[1]";
print $out "-- Generated by $PROG\n";
print $out "-- (c) 2004, PostgreSQL Inc.\n";
print $out "-- (c) 2005, Laurent Destailleur.\n";
print $out "\n";
open(IN,"<$ARGV[0]") || die "can't open mysql dump file $ARGV[0]";
open(OUT,">$ARGV[1]") || die "can't open pg dump file $ARGV[1]";
print OUT "-- Generated by $PROG\n";
print OUT "-- (c) 2004, PostgreSQL Inc.\n";
print OUT "-- (c) 2005, Laurent Destailleur.\n";
print OUT "\n";
# Output for create table and create index
sub output_create {
# Output for create table and create index
sub output_create {
# If command ends with "xxx,);", we change to "xxx);"
$create_sql =~ s/,(\s*)\);/$1\);/m;
# If command ends with "xxx, -- yyy );", we change to "xxx -- yyy);"
$create_sql =~ s/,(\s*\-\-[^\)\n]*)(\s*)\);/$1\n\);/m;
# If command ends with "xxx,);", we change to "xxx);"
$create_sql =~ s/,(\s*)\);/$1\);/m;
print OUT $create_sql;
if ($create_index) {
print OUT "\n";
print OUT $create_index;
}
}
# If command ends with "xxx, -- yyy );", we change to "xxx -- yyy);"
$create_sql =~ s/,(\s*\-\-[^\)\n]*)(\s*)\);/$1\n\);/m;
# Reset when moving from each "create table" to "insert" part of dump
sub reset_vars() {
$create_sql="";
$create_index="";
%enum_datafield=();
$enum_column='';
}
print $out $create_sql;
if ($create_index) {
print $out "\n";
print $out $create_index;
}
return;
}
# Reset when moving from each "create table" to "insert" part of dump
sub reset_vars() {
$create_sql = "";
$create_index = "";
%enum_datafield = ();
$enum_column = '';
return;
}
# Boucle sur contenu fichier source
#----------------------------------
while(<IN>) {
# Boucle sur contenu fichier source
#----------------------------------
while (<$in>) {
# comments or empty lines
if (/^-- \$Id/) {
$_ =~ s/\$//g;
print OUT $_;
if (/^-- \$Id/) {
$_ =~ s/\$//g;
print $out $_;
next;
}
# comments or empty lines
if (/^#/ || /^$/ || /^--/) {
print OUT $_;
next;
}
if (/^USE\s*([^;]*);/) {
print OUT "\\c ". $1;
next;
}
if ($create_sql ne "") { # we are inside create table statement so let's process datatypes
if ( /^#/ || /^$/ || /^--/ ) {
print $out $_;
next;
}
if (/^USE\s*([^;]*);/) {
print $out "\\c " . $1;
next;
}
if ( $create_sql ne "" )
{ # we are inside create table statement so let's process datatypes
if (/\);/i) { # end of create table sequence
$create_sql =~ s/,$//g; # strip last , inside create table
&output_create;
&reset_vars();
next;
# LDR Added "innodb" and "engine"
}
elsif (/(ISAM|innodb)/i) { # end of create table sequence
s/\) *type=(MyISAM|innodb);/);/i;
s/\) *engine=(MyISAM|innodb);/);/i;
$create_sql =~ s/,$//g; # strip last , inside create table
$create_sql .= $_;
&output_create;
&reset_vars();
next;
}
if (/\);/i) { # end of create table sequence
$create_sql =~ s/,$//g; # strip last , inside create table
&output_create;
&reset_vars();
next;
# enum -> check
if (/([\w\"]*)\s+enum\s*\(((?:['"][\?\w]+['"]\s*,)+['"][\?\w]+['"])\)(.*)$/i) {
$enum_column=$1;
$enum_datafield{$enum_column}=$2; # 'abc','def', ...
my $suite=$3;
my $maxlength=0;
foreach my $enum (split(',',$enum_datafield{$enum_column})) {
$enum =~ s/[\"\']//g;
if ($maxlength<length($enum)) { $maxlength=length($enum); }
}
$enum_datafield{$enum_column} =~ s/\"/\'/g;
$_ = qq~ $enum_column CHAR($maxlength) CHECK ($enum_column IN ($enum_datafield{$enum_column})) $suite\n~;
# int, auto_increment -> serial
} elsif (/^[\s\t]*(\w*)\s*.*int.*auto_increment/i) {
$seq = qq~${table}_${1}_seq~;
s/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/ $1 SERIAL PRIMARY KEY/ig;
$create_sql.=$_;
next;
# int type conversion
} elsif (/(\w*)int\(\d+\)/i) {
$size=$1;
$size =~ tr [A-Z] [a-z];
if ($size eq "tiny" || $size eq "small") {
$out = "int2";
} elsif ($size eq "big") {
$out = "int8";
} else {
$out = "int4";
}
s/\w*int\(\d+\)/$out/g;
}
# tinyint -> smallint
elsif (/tinyint/i) {
s/tinyint/smallint/g;
}
# LDR Added "innodb" and "engine"
}
elsif (/(ISAM|innodb)/i) { # end of create table sequence
s/\) *type=(MyISAM|innodb);/);/i;
s/\) *engine=(MyISAM|innodb);/);/i;
$create_sql =~ s/,$//g; # strip last , inside create table
$create_sql .= $_;
&output_create;
&reset_vars();
next;
}
# nuke unsigned
s/(int\w+|smallint)\s+unsigned/$1/gi;
# enum -> check
if (
/([\w\"]*)\s+enum\s*\(((?:['"][\?\w]+['"]\s*,)+['"][\?\w]+['"])\)(.*)$/i
)
{
$enum_column = $1;
$enum_datafield{$enum_column} = $2; # 'abc','def', ...
my $suite = $3;
my $maxlength = 0;
foreach my $enum ( split( ',', $enum_datafield{$enum_column} ) )
{
$enum =~ s/[\"\']//g;
if ( $maxlength < length($enum) ) {
$maxlength = length($enum);
}
}
$enum_datafield{$enum_column} =~ s/\"/\'/g;
$_ =
qq~ $enum_column CHAR($maxlength) CHECK ($enum_column IN ($enum_datafield{$enum_column})) $suite\n~;
# int, auto_increment -> serial
}
elsif (/^[\s\t]*(\w*)\s*.*int.*auto_increment/i) {
$seq = qq~${table}_${1}_seq~;
s/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/ $1 SERIAL PRIMARY KEY/ig;
$create_sql .= $_;
next;
# blob -> text
s/\w*blob/text/gi;
# int type conversion
}
elsif (/(\w*)int\(\d+\)/i) {
$size = $1;
$size =~ tr [A-Z] [a-z];
if ( $size eq "tiny" || $size eq "small" ) {
$out = "int2";
}
elsif ( $size eq "big" ) {
$out = "int8";
}
else {
$out = "int4";
}
s/\w*int\(\d+\)/$out/g;
}
# tinytext/mediumtext -> text
s/tinytext/text/gi;
s/mediumtext/text/gi;
# tinyint -> smallint
elsif (/tinyint/i) {
s/tinyint/smallint/g;
}
# char -> varchar
# PostgreSQL would otherwise pad with spaces as opposed
# to MySQL! Your user interface may depend on this!
s/(\s+)char/${1}varchar/gi;
# nuke unsigned
s/(int\w+|smallint)\s+unsigned/$1/gi;
# nuke date representation (not supported in PostgreSQL)
s/datetime default '[^']+'/datetime/i;
s/date default '[^']+'/datetime/i;
s/time default '[^']+'/datetime/i;
# blob -> text
s/\w*blob/text/gi;
# change not null datetime field to null valid ones
# (to support remapping of "zero time" to null
s/datetime not null/datetime/i;
s/datetime/timestamp/i;
# tinytext/mediumtext -> text
s/tinytext/text/gi;
s/mediumtext/text/gi;
# nuke size of timestamp
s/timestamp\([^)]*\)/timestamp/i;
# char -> varchar
# PostgreSQL would otherwise pad with spaces as opposed
# to MySQL! Your user interface may depend on this!
s/(\s+)char/${1}varchar/gi;
# double -> numeric
s/^double/numeric/i;
s/(\s*)double/${1}numeric/i;
# nuke date representation (not supported in PostgreSQL)
s/datetime default '[^']+'/datetime/i;
s/date default '[^']+'/datetime/i;
s/time default '[^']+'/datetime/i;
# float -> numeric
s/^float/numeric/i;
s/(\s*)float/${1}numeric/i;
# change not null datetime field to null valid ones
# (to support remapping of "zero time" to null
s/datetime not null/datetime/i;
s/datetime/timestamp/i;
# unique key(field1,field2)
if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) {
s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
$create_sql.=$_;
next;
}
# unique index(field1,field2)
if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) {
s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
$create_sql.=$_;
next;
}
# nuke size of timestamp
s/timestamp\([^)]*\)/timestamp/i;
# unique key [name] (field)
if (/unique key\s*(\w*)\s*\((\w+)\)/i) {
s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
my $idxname=($1?"$1":"idx_${table}_$2");
$create_sql.=$_;
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
# unique index [name] (field)
if (/unique index\s*(\w*)\s*\((\w+)\)/i) {
s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
my $idxname=($1?"$1":"idx_${table}_$2");
$create_sql.=$_;
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
# unique (field) et unique (field1, field2 ...)
if (/unique\s*\(([\w,\s]+)\)/i) {
s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i;
my $fieldlist="$1";
my $idxname="idx_${table}_${fieldlist}";
$idxname =~ s/\W/_/g; $idxname =~ tr/_/_/s;
$create_sql.=$_;
$create_index .= "CREATE INDEX $idxname ON $table ($fieldlist);\n";
next;
}
# double -> numeric
s/^double/numeric/i;
s/(\s*)double/${1}numeric/i;
# index(field)
if (/index\s*(\w*)\s*\((\w+)\)/i) {
my $idxname=($1?"$1":"idx_${table}_$2");
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
# float -> numeric
s/^float/numeric/i;
s/(\s*)float/${1}numeric/i;
# primary key
if (/\bkey\b/i && !/^\s+primary key\s+/i) {
s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i; # hack off name of the non-primary key
}
# unique key(field1,field2)
if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) {
s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
$create_sql .= $_;
next;
}
# key(xxx)
if (/key\s*\((\w+)\)/i) {
my $idxname="idx_${table}_$1";
$create_index .= "CREATE INDEX $idxname ON $table ($1);\n";
next;
}
# unique index(field1,field2)
if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) {
s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i;
$create_sql .= $_;
next;
}
# Quote column names
s/(^\s*)([^\s\-\(]+)(\s*)/$1"$2"$3/gi if (!/\bkey\b/i);
# unique key [name] (field)
if (/unique key\s*(\w*)\s*\((\w+)\)/i) {
s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
my $idxname = ( $1 ? "$1" : "idx_${table}_$2" );
$create_sql .= $_;
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
# Remap columns with names of existing system attribute
if (/"oid"/i) {
s/"oid"/"_oid"/g;
print STDERR "WARNING: table $table uses column \"oid\" which is renamed to \"_oid\"\nYou should fix application manually! Press return to continue.";
my $wait=<STDIN>;
}
s/oid/_oid/i if (/key/i && /oid/i); # fix oid in key
$create_sql.=$_;
} # END of if ($create_sql ne "") i.e. were inside create table statement so processed datatypes
else { # not inside create table
#---- fix data in inserted data: (from MS world)
# FIX: disabled for now
if (00 && /insert into/i) {
s!\x96!-!g; # --
s!\x93!"!g; # ``
s!\x94!"!g; # ''
s!\x85!... !g; # \ldots
s!\x92!`!g;
}
# unique index [name] (field)
if (/unique index\s*(\w*)\s*\((\w+)\)/i) {
s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i;
my $idxname = ( $1 ? "$1" : "idx_${table}_$2" );
$create_sql .= $_;
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
# fix dates '0000-00-00 00:00:00' (should be null)
s/'0000-00-00 00:00:00'/null/gi;
s/'0000-00-00'/null/gi;
s/'00:00:00'/null/gi;
s/([12]\d\d\d)([01]\d)([0-3]\d)([0-2]\d)([0-6]\d)([0-6]\d)/'$1-$2-$3 $4:$5:$6'/;
# unique (field) et unique (field1, field2 ...)
if (/unique\s*\(([\w,\s]+)\)/i) {
s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i;
my $fieldlist = "$1";
my $idxname = "idx_${table}_${fieldlist}";
$idxname =~ s/\W/_/g;
$idxname =~ tr/_/_/s;
$create_sql .= $_;
$create_index .=
"CREATE INDEX $idxname ON $table ($fieldlist);\n";
next;
}
if (/create\s+table\s+(\w+)/i) {
$create_sql = $_;
/create\s*table\s*(\w+)/i;
$table=$1 if (defined($1));
} else {
print OUT $_;
}
} # end of if inside create_table
} # END while(<IN>)
# index(field)
if (/index\s*(\w*)\s*\((\w+)\)/i) {
my $idxname = ( $1 ? "$1" : "idx_${table}_$2" );
$create_index .= "CREATE INDEX $idxname ON $table ($2);\n";
next;
}
close IN;
close OUT;
# primary key
if ( /\bkey\b/i && !/^\s+primary key\s+/i ) {
s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i
; # hack off name of the non-primary key
}
# key(xxx)
if (/key\s*\((\w+)\)/i) {
my $idxname = "idx_${table}_$1";
$create_index .= "CREATE INDEX $idxname ON $table ($1);\n";
next;
}
# Quote column names
s/(^\s*)([^\s\-\(]+)(\s*)/$1"$2"$3/gi if ( !/\bkey\b/i );
# Remap columns with names of existing system attribute
if (/"oid"/i) {
s/"oid"/"_oid"/g;
print STDERR
"WARNING: table $table uses column \"oid\" which is renamed to \"_oid\"\nYou should fix application manually! Press return to continue.";
my $wait = <STDIN>;
}
s/oid/_oid/i if ( /key/i && /oid/i ); # fix oid in key
$create_sql .= $_;
} # END of if ($create_sql ne "") i.e. were inside create table statement so processed datatypes
else { # not inside create table
#---- fix data in inserted data: (from MS world)
# FIX: disabled for now
if ( 00 && /insert into/i ) {
s!\x96!-!g; # --
s!\x93!"!g; # ``
s!\x94!"!g; # ''
s!\x85!... !g; # \ldots
s!\x92!`!g;
}
# fix dates '0000-00-00 00:00:00' (should be null)
s/'0000-00-00 00:00:00'/null/gi;
s/'0000-00-00'/null/gi;
s/'00:00:00'/null/gi;
s/([12]\d\d\d)([01]\d)([0-3]\d)([0-2]\d)([0-6]\d)([0-6]\d)/'$1-$2-$3 $4:$5:$6'/;
if (/create\s+table\s+(\w+)/i) {
$create_sql = $_;
/create\s*table\s*(\w+)/i;
$table = $1 if ( defined($1) );
}
else {
print $out $_;
}
} # end of if inside create_table
} # END while(<IN>)
close $in;
close $out;
}
print "\n";
print "Build ".(scalar keys %filelist)." file(s).\n";
print "Build " . ( scalar keys %filelist ) . " file(s).\n";
print "\n";
print "Press a key to finish...\n";
$stop=<STDIN>;
$stop = <STDIN>;
0;

View File

@@ -128,5 +128,3 @@ for f in ${TFile[@]}; do
done
done

View File

@@ -12,19 +12,24 @@ cp "$0" /tmp/github_commits_perversion.sh
TEMP_DIR=/tmp/git
DOL_GIT="$TEMP_DIR/dolibarr"
if ! git rev-parse ; then
echo "Delete $TEMP_DIR"
echo "/tmp/git/dolibarr is not a git repo. Delete $TEMP_DIR"
rm -fr "$TEMP_DIR"
echo "Create '$TEMP_DIR' and cd to it"
mkdir "$TEMP_DIR"
mkdir -p "$TEMP_DIR"
cd "$TEMP_DIR" || exit
git clone https://github.com/Dolibarr/dolibarr.git
cd "${DOL_GIT}" || exit
else
echo "/tmp/git/dolibarr is a git repo."
mkdir -p ${DOL_GIT}
if [ -r "${DOL_GIT}" ] ; then
echo git worktree remove "${DOL_GIT}"
git worktree remove "${DOL_GIT}"
rm -rf "${DOL_GIT}" >& /dev/null
fi
echo git worktree add --force "${DOL_GIT}" develop
git worktree add --force "${DOL_GIT}" develop
cd "$DOL_GIT" || exit
git pull
@@ -36,7 +41,10 @@ Releases=("3.9" "4.0" "5.0" "6.0" "7.0" "8.0" "9.0" "10.0" "11.0" "12.0" "13.0"
target_version=$(sed -n "s/.*define('DOL_VERSION',[[:space:]]*'\\([0-9]*\\.[0-9]*\\).*/\\1/p" htdocs/version.inc.php)
# Default target version in case getting it from filefunc.inc failed
target_version=${target_version:=20.0}
target_version=${target_version:=23}
echo "Last version to test target_version = $target_version";
# Setup loop to append required versions
target_major=${target_version%%.*}
@@ -90,8 +98,9 @@ do
done
# Clean up git directory if it is a worktree
if [ "$(git rev-parse --git-dir)" != "$(git rev-parse --git-common-dir)" ] ; then
cd "$TEMP_DIR" || exit
git -C "$DOL_GIT" worktree remove "$DOL_GIT"
fi
#if [ "$(git rev-parse --git-dir)" != "$(git rev-parse --git-common-dir)" ] ; then
# cd "$TEMP_DIR" || exit
# git -C "$DOL_GIT" worktree remove "$DOL_GIT"
#fi
exit

View File

@@ -1,8 +1,10 @@
#!/bin/bash
# Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
# Borrowed from https://gist.github.com/lgiraudel/6065155
# Inplace mode added by Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
# shellcheck disable=2003,2006,2034,2046,2086,2166,2268
# shellcheck disable=2003,2006,2034,2046,2086,2166,2268,2327,2328
PROGNAME=${0##*/}
INPUT=''

View File

@@ -9,16 +9,16 @@
*/
return [
// # Issue statistics:
// PhanUndeclaredProperty : 420+ occurrences
// PhanTypeMismatchProperty : 100+ occurrences
// PhanUndeclaredProperty : 410+ occurrences
// PhanTypeMismatchArgument : 65+ occurrences
// PhanUndeclaredGlobalVariable : 60+ occurrences
// PhanTypeMismatchArgumentNullable : 20+ occurrences
// PhanTypeMismatchProperty : 20+ occurrences
// PhanTypeInvalidDimOffset : 15+ occurrences
// PhanTypeMismatchDimFetch : 10+ occurrences
// PhanUndeclaredMethod : 7 occurrences
// PhanTypeArraySuspiciousNull : 5 occurrences
// PhanTypeExpectedObjectPropAccess : 5 occurrences
// PhanUndeclaredMethod : 5 occurrences
// PhanPluginDuplicateArrayKey : 4 occurrences
// PhanPluginUndeclaredVariableIsset : 2 occurrences
// PhanPossiblyUndeclaredGlobalVariable : 2 occurrences
@@ -30,7 +30,6 @@ return [
// Currently, file_suppressions and directory_suppressions are the only supported suppressions
'file_suppressions' => [
'htdocs/bookcal/class/calendar.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
'htdocs/categories/viewcat.php' => ['PhanUndeclaredProperty'],
'htdocs/comm/action/index.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
'htdocs/comm/action/pertype.php' => ['PhanTypeExpectedObjectPropAccess'],
@@ -76,7 +75,6 @@ return [
'htdocs/core/ajax/selectobject.php' => ['PhanTypeMismatchArgumentNullable'],
'htdocs/core/class/CMailFile.class.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/class/canvas.class.php' => ['PhanUndeclaredMethod'],
'htdocs/core/class/ccountry.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/cgenericdic.class.php' => ['PhanUndeclaredProperty'],
'htdocs/core/class/commonobject.class.php' => ['PhanParamTooMany', 'PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/core/class/commonpeople.class.php' => ['PhanUndeclaredProperty'],
@@ -117,10 +115,8 @@ return [
'htdocs/core/modules/facture/doc/pdf_octopus.modules.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
'htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php' => ['PhanTypeMismatchArgumentNullable'],
'htdocs/core/modules/holiday/mod_holiday_immaculate.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/modules/hrm/doc/pdf_standard_evaluation.modules.php' => ['PhanUndeclaredProperty'],
'htdocs/core/modules/hrm/mod_evaluation_advanced.php' => ['PhanUndeclaredProperty'],
'htdocs/core/modules/import/import_csv.modules.php' => ['PhanPossiblyUndeclaredVariable', 'PhanTypeMismatchProperty'],
'htdocs/core/modules/import/import_xlsx.modules.php' => ['PhanTypeMismatchProperty'],
'htdocs/core/modules/import/import_csv.modules.php' => ['PhanPossiblyUndeclaredVariable'],
'htdocs/core/modules/member/modules_cards.php' => ['PhanTypeMismatchArgument'],
'htdocs/core/modules/mrp/doc/pdf_vinci.modules.php' => ['PhanUndeclaredProperty'],
'htdocs/core/modules/mrp/mod_mo_advanced.php' => ['PhanUndeclaredProperty'],
@@ -146,12 +142,10 @@ return [
'htdocs/core/tpl/objectline_view.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/core/tpl/passwordreset.tpl.php' => ['PhanUndeclaredGlobalVariable'],
'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/delivery/class/delivery.class.php' => ['PhanUndeclaredProperty'],
'htdocs/emailcollector/class/emailcollector.class.php' => ['PhanUndeclaredProperty'],
'htdocs/eventorganization/class/conferenceorboothattendee.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
'htdocs/eventorganization/conferenceorbooth_list.php' => ['PhanTypeMismatchArgument'],
'htdocs/eventorganization/core/actions_massactions_mail.inc.php' => ['PhanUndeclaredProperty'],
'htdocs/expedition/card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
'htdocs/expedition/class/expedition.class.php' => ['PhanUndeclaredProperty'],
@@ -165,7 +159,7 @@ return [
'htdocs/fourn/class/fournisseur.commande.class.php' => ['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/card.php' => ['PhanTypeMismatchArgument'],
'htdocs/fourn/facture/rapport.php' => ['PhanTypeMismatchArgument'],
'htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/holiday/card_group.php' => ['PhanTypeMismatchArgument'],
@@ -255,11 +249,9 @@ return [
'htdocs/user/class/usergroup.class.php' => ['PhanUndeclaredProperty'],
'htdocs/variants/tpl/productattributevalueline_edit.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/variants/tpl/productattributevalueline_view.tpl.php' => ['PhanUndeclaredProperty'],
'htdocs/viewimage.php' => ['PhanUndeclaredMethod'],
'htdocs/webhook/class/target.class.php' => ['PhanUndeclaredMethod'],
'htdocs/webhook/target_card.php' => ['PhanUndeclaredGlobalVariable'],
'htdocs/webportal/admin/setup.php' => ['PhanTypeMismatchArgument'],
'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_project.php' => ['PhanUndeclaredProperty'],

View File

@@ -1,20 +1,22 @@
<?php
/* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
*/
/* PHP 7.0 */
$finder = (new PhpCsFixer\Finder())
->in(__DIR__)
->exclude([
'core/includes',
'custom',
'documents',
'doctemplates',
'vendor',
'install/doctemplates',
'htdocs/custom',
'htdocs/includes',
'htdocs/install/doctemplates',
])
->notPath('vendor');
->in(__DIR__)
->exclude([
'core/includes',
'custom',
'documents',
'doctemplates',
'vendor',
'install/doctemplates',
'htdocs/custom',
'htdocs/includes',
'htdocs/install/doctemplates',
])
->notPath('vendor');
/* PHP 7.4+ */
@@ -43,8 +45,11 @@ return (new PhpCsFixer\Config())
// So we use target PHP70 for the moment.
'@PHP70Migration' => true,
//'@PHP71Migration' => true,
// Avoid adding public to const (incompatible with PHP 7.0):
'visibility_required' => ['elements'=>['property', 'method']],
// Avoid adding public to const (incompatible with PHP 7.0):
'visibility_required' => ['elements' => ['property', 'method']],
// Replace deprecated 'visibility_required'
'modifier_keywords' => ['elements' => ['property', 'method']],
//'strict_param' => true,
//'array_syntax' => ['syntax' => 'short'],
@@ -59,5 +64,4 @@ return (new PhpCsFixer\Config())
->setIndent("\t")
// All files MUST use the Unix LF line ending only
// https://www.php-fig.org/psr/psr-12/#22-files
->setLineEnding("\n")
;
->setLineEnding("\n");

View File

@@ -1,4 +1,5 @@
parameters:
phpVersion: 80200 # PHP 8.2
tmpDir: ./.github/tmp
parallel:
# Commented some of the settings, reminding the defaults:
@@ -46,12 +47,15 @@ parameters:
- htdocs/includes/tecnickcom/*
- htdocs/includes/webklex/*
- htdocs/core/class/lessc.class.php
checkAlwaysTrueCheckTypeFunctionCall: false
checkAlwaysTrueInstanceof: false
checkAlwaysTrueStrictComparison: false
# checkAlwaysTrueCheckTypeFunctionCall: false
# checkAlwaysTrueInstanceof: false
# checkAlwaysTrueStrictComparison: false
polluteScopeWithLoopInitialAssignments: false
polluteScopeWithAlwaysIterableForeach: false
checkClassCaseSensitivity: true
checkFunctionArgumentTypes: true
checkFunctionNameCase: true
checkInternalClassCaseSensitivity: true
checkArgumentsPassedByReference: true
checkMaybeUndefinedVariables: true
checkNullables: false
@@ -61,8 +65,6 @@ parameters:
reportMaybes: false
reportMaybesInMethodSignatures: false
reportStaticMethodSignatures: false
polluteScopeWithLoopInitialAssignments: true
polluteScopeWithAlwaysIterableForeach: true
reportMagicMethods: false
reportMagicProperties: false
treatPhpDocTypesAsCertain: false

View File

@@ -1,2 +1,2 @@
/test.php
/vendor
/vendor

View File

@@ -36,4 +36,3 @@ then
wmctrl -i -r $1 -e 0,0,0,$width,$height
echo Size of windows $1 modified to $width x $height
fi

View File

@@ -93,5 +93,3 @@ if __name__ == '__main__':
options, arguments = parser.parse_args()
sys.argv[:] = arguments
main(options, arguments)

View File

@@ -1,4 +1,4 @@
Test to migrate Dolibarr to namespace "Dolibarr".
Script bbb.php is a script of an external module with current code writing.
It must works after migration.
It must works after migration.

View File

@@ -14,7 +14,7 @@ https://www.transifex.com/dolibarr-association/dolibarr/dashboard/
Installation of Transifex Client:
---------------------------------
for Linux OS
to install or to update transifex client:
to install or to update transifex client:
sudo pip install --upgrade transifex-client

View File

@@ -108,6 +108,16 @@ ACCOUNTING_VAT_BUY_REVERSE_CHARGES_DEBIT
ACCOUNTING_VAT_PAY_ACCOUNT
ACCOUNTING_VAT_SOLD_ACCOUNT
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT
ACCOUNTING_LT1_BUY_ACCOUNT
ACCOUNTING_LT2_BUY_ACCOUNT
ACCOUNTING_LT1_BUY_REVERSE_CHARGES_CREDIT
ACCOUNTING_LT2_BUY_REVERSE_CHARGES_CREDIT
ACCOUNTING_LT1_PAY_ACCOUNT
ACCOUNTING_LT2_PAY_ACCOUNT
ACCOUNTING_LT1_PAY_REVERSE_CHARGES_CREDIT
ACCOUNTING_LT2_PAY_REVERSE_CHARGES_CREDIT
ACCOUNTING_LT1_SOLD_ACCOUNT
ACCOUNTING_LT2_SOLD_ACCOUNT
AI_API_MODEL_AUDIO
AI_API_MODEL_IMAGE

View File

@@ -130,7 +130,6 @@ AvailabilityType
BAN
BI
BOMs
Back
Bad value for email, email was not verified by Google
Bad value for returned userinfo[aud]
Bad value for returned userinfo[exp]. Token expired.
@@ -146,8 +145,6 @@ Barcode
BarcodeDesc
BarcodeStickersMask
BillOfMaterialsLine
BlockLogNeedAmountsValue
BlockLogNeedElement
BlockedLogAuthorityNeededToStoreYouFingerprintsInNonAlterableRemote
BlockedLogAuthorityUrl
BlockedLogSetup
@@ -942,7 +939,6 @@ Don
ECM
EmptyMessageNotAllowedError
ErrorInputRequired
ErrorLDAPFunctionsAreDisabledOnThisPHP
ErrorUpdating
Extra
FailedToConnectToSFTPAfterSSHAuthentication
@@ -1017,7 +1013,6 @@ TicketMessageMailSignatureText
TicketSetupPage
Timeline
Transfer
TryAnotherConnectionMode
UndefinedKey
UnknownType
UpdateMember

View File

@@ -65,4 +65,3 @@ fi
echo Think to launch also:
echo "> dev/tools/fixaltlanguages.sh fix all"
#echo "For v11: Replace also regex \(.*(sponge|cornas|eratosthene|cyan).*\) with '' on *.lang files"

View File

@@ -19,4 +19,4 @@ But if you are looking for other resources (downloads, documentation, addons, ..
* <a href="https://www.dolistore.com">DoliStore (official addons/plugins market place)</a><br>
</body>
</html>
</html>

View File

@@ -8,14 +8,14 @@ Download / Herunterladen
* Dolibarr ERP/CRM kann man über die offizielle Dolibarr Website
https://www.dolibarr.org/downloads
https://www.dolibarr.org/downloads
oder direkt bei Sourceforge
https://sourceforge.net/projects/dolibarr/files/
herunterladen.
@@ -26,10 +26,10 @@ Installation / Hilfe
* Für eine kurze Einleitung schau in die README.md Datei im Hauptverzeichnis.
* Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden:
https://wiki.dolibarr.org/index.php/Hauptseite
* eine Deutsche Community bietet der Dolibarr e.V. unter
https://www.dolibarr.de/
https://wiki.dolibarr.org/index.php/Hauptseite
* eine Deutsche Community bietet der Dolibarr e.V. unter
https://www.dolibarr.de/
@@ -38,8 +38,6 @@ Installation / Hilfe
Zusatzmodule
------------------------------------
* Die meisten externen Module/Themen sind über den offiziellen DoliStore verfügbar:
* Die meisten externen Module/Themen sind über den offiziellen DoliStore verfügbar:
https://www.dolistore.com/de/

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2013-2026 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2016-2018 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
@@ -27,11 +27,6 @@
// Load Dolibarr environment
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
/**
* @var Conf $conf
* @var DoliDB $db
@@ -39,6 +34,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
// Load translation files required by the page
$langs->loadLangs(array('accountancy', 'admin', 'bills', 'compta', 'salaries'));
@@ -440,7 +439,9 @@ if ($resql) {
print '<input type="hidden" name="action" value="list">';
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
print '<input type="hidden" name="page" value="'.$page.'">';
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
print '<input type="hidden" name="page_y" value="">';
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'accounting_account', 0, $newcardbutton, '', $limit, 0, 0, 1);
@@ -467,7 +468,7 @@ if ($resql) {
$obj = $db->fetch_object($resqlchart);
if ($obj) {
$labeltoshow = $obj->country_code.' - '.$obj->pcg_version.' - '.$obj->label;
$htmltoshow = picto_from_langcode($obj->country_code).' '.$obj->country_code.' - '.$obj->pcg_version.' - '.$obj->label;
$htmltoshow = picto_from_langcode($obj->country_code).' '.$obj->country_code.' - '.$obj->pcg_version.' <span class="opacitymedium">- '.$obj->label.'</span>';
print '<option value="'.$obj->rowid.'" data-html="'.dolPrintHTMLForAttribute($htmltoshow).'"';
print ($pcgver == $obj->rowid) ? ' selected' : '';
print '>'.$labeltoshow.'</option>';
@@ -842,11 +843,11 @@ if ($resql) {
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="center nowraponall">';
// if ($permissiontoadd) { // test is always true
print '<a class="editfielda" href="./card.php?action=update&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?'.$param).'">';
print '<a class="editfielda" href="./card.php?action=update&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?'.$param.'&page='.$page).'">';
print img_edit();
print '</a>';
print '&nbsp;';
print '<a class="marginleftonly" href="./card.php?action=delete&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?'.$param).'">';
print '<a class="marginleftonly" href="./card.php?action=delete&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?'.$param.'&page='.$page).'">';
print img_delete();
print '</a>';
print '&nbsp;';

View File

@@ -245,7 +245,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
if ($ok && GETPOST('actionmodify', 'alpha')) {
// Modify entry
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET ";
// Modifie valeur des champs
// Change field's value
$i = 0;
foreach ($listfieldmodify as $field) {
@@ -268,7 +268,6 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
$sql .= " WHERE rowid = ".((int) $rowid);
dol_syslog("actionmodify", LOG_DEBUG);
//print $sql;
$resql = $db->query($sql);
if (!$resql) {
setEventMessages($db->error(), null, 'errors');
@@ -327,13 +326,13 @@ $linkback = '';
print load_fiche_titre($titre, $linkback, 'title_accountancy');
// Confirmation de la suppression de la ligne
// Confirmation of line deletion
if ($action == 'delete') {
print $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['page'=> $page, 'sortfield' => $sortfield, 'sortorder' => $sortorder, 'rowid' => $rowid, 'code' => $code, 'id' => $id]), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
}
// Complete requete recherche valeurs avec critere de tri
// Complete the values search query with the sort order
$sql = $tabsql[$id];
if ($search_country_id > 0) {
@@ -351,7 +350,6 @@ if ($sortfield == 'country') {
}
$sql .= $db->order($sortfield, $sortorder);
$sql .= $db->plimit($listlimit + 1, $offset);
//print $sql;
$fieldlist = explode(',', $tabfield[$id]);
@@ -368,8 +366,8 @@ $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
// Determine the field name based on the possible names
// in the data dictionaries
$valuetoshow = ucfirst($fieldlist[$field]); // By default
$valuetoshow = $langs->trans($valuetoshow); // try to translate
$class = "left";
@@ -393,7 +391,6 @@ foreach ($fieldlist as $field => $value) {
if ($fieldlist[$field] == 'pcg_version' || $fieldlist[$field] == 'fk_pcg_version') {
$valuetoshow = $langs->trans("Pcg_version");
}
//var_dump($value);
if ($valuetoshow != '') {
print '<td class="'.$class.'">';

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
* Copyright (C) 2013-2026 Alexandre Spangaro <alexandre@inovea-conseil.com>
* 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>
@@ -72,7 +72,7 @@ $object = new AccountingAccount($db);
*/
if (GETPOST('cancel', 'alpha')) {
$urltogo = $backtopage ? $backtopage : DOL_URL_ROOT.'/accountancy/admin/account.php';
$urltogo = (!empty($backtopage) ? $backtopage : DOL_URL_ROOT.'/accountancy/admin/account.php');
header("Location: ".$urltogo);
exit;
}
@@ -126,7 +126,7 @@ if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // al
}
if (!$error) {
setEventMessages("RecordCreatedSuccessfully", null, 'mesgs');
$urltogo = $backtopage ? $backtopage : DOL_URL_ROOT.'/accountancy/admin/account.php';
$urltogo = (!empty($backtopage) ? $backtopage : DOL_URL_ROOT.'/accountancy/admin/account.php');
header("Location: " . $urltogo);
exit;
}
@@ -169,7 +169,7 @@ if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // al
$result = $object->update($user);
if ($result > 0) {
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"] . "?id=" . $id);
$urltogo = (!empty($backtopage) ? $backtopage : ($_SERVER["PHP_SELF"] . "?id=" . $id));
header("Location: " . $urltogo);
exit();
} elseif ($result == -2) {
@@ -179,7 +179,7 @@ if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // al
}
}
} else {
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"]."?id=".$id);
$urltogo = (!empty($backtopage) ? $backtopage : ($_SERVER["PHP_SELF"]."?id=".$id));
header("Location: ".$urltogo);
exit();
}
@@ -190,7 +190,8 @@ if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // al
$result = $object->delete($user);
if ($result > 0) {
header("Location: account.php");
$urltogo = (!empty($backtopage) ? $backtopage : DOL_URL_ROOT.'/accountancy/admin/account.php');
header("Location: ".$urltogo);
exit;
}
}

View File

@@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2004-2023 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2011-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024-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
@@ -465,9 +465,7 @@ $paramwithsearch = $param;
if ($sortorder) {
$paramwithsearch .= '&sortorder='.urlencode($sortorder);
}
if ($sortfield) {
$paramwithsearch .= '&sortfield='.urlencode($sortfield);
}
$paramwithsearch .= '&sortfield='.urlencode($sortfield);
if (GETPOST('from', 'alpha')) {
$paramwithsearch .= '&from='.urlencode(GETPOST('from', 'alpha'));
}
@@ -825,9 +823,7 @@ if ($resql) {
}
}
$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 .= '&'.$param;
$url .= '&';
$canbemodified = $iserasable;

View File

@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2014-2024 Alexandre Spangaro <aspangaro@easya.solutions>
/* Copyright (C) 2014-2026 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
*
@@ -46,7 +46,7 @@ $ref = GETPOST('ref', 'alpha');
$action = GETPOST('action', 'aZ09');
$confirm = GETPOST('confirm', 'alpha');
$cancel = GETPOST('cancel', 'aZ09');
$cancel = GETPOST('cancel', 'alpha');
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
$backtopage = GETPOST('backtopage', 'alpha'); // if not set, a default page will be used
$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); // if not set, $backtopage will be used
@@ -211,7 +211,9 @@ if ($action == 'create') {
print '<table class="border centpercent tableforfieldcreate">'."\n";
// Label
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("Label").'</td><td><input name="label" size="32" value="'.GETPOST('label', 'alpha').'"></td></tr>';
print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("Label").'</td><td>';
print '<input name="label" size="32" value="'.GETPOST('label', 'alpha').'">';
print '</td></tr>';
// Date start
print '<tr><td class="fieldrequired">'.$langs->trans("DateStart").'</td><td>';
@@ -257,6 +259,7 @@ if (($id || $ref) && $action == 'edit') {
print '<form method="POST" name="update" action="'.$_SERVER["PHP_SELF"].'">'."\n";
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="status" value="' . $object->status . '">';
print '<input type="hidden" name="id" value="'.$object->id.'">';
if ($backtopage) {
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';

View File

@@ -32,13 +32,6 @@
// Load Dolibarr environment
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php';
/**
* @var Conf $conf
* @var DoliDB $db
@@ -47,6 +40,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php';
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php';
// Load translation files required by the page
$langs->loadLangs(array("compta", "bills", "admin", "accountancy", "other"));
@@ -660,7 +659,7 @@ print '</form>';
print '<br><br>';
// Accountancy Numbering model
$dirmodels = array_merge(array('/'), $conf->modules_parts['models']);
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
print '<div class="div-table-responsive-no-min">';
print '<table class="noborder centpercent">';

View File

@@ -6,7 +6,7 @@
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.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-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
@@ -202,7 +202,7 @@ if ($action == 'update' && $permissiontobind) {
$ko = 0;
$msg = '';
$sql = '';
if (!empty($toselect) && in_array($accounting_product_mode, $accounting_product_modes)) { // @phpstan-ignore-line Bug phpstan thinking that empty(array()) is always true
if (in_array($accounting_product_mode, $accounting_product_modes)) {
$accounting = new AccountingAccount($db);
$arrayofdifferentselectedvalues = array();
@@ -466,9 +466,9 @@ if ($resql) {
if ($search_current_account_valid && $search_current_account_valid != '-1') {
$param .= "&search_current_account_valid=".urlencode($search_current_account_valid);
}
if ($accounting_product_mode) {
$param .= '&accounting_product_mode='.urlencode($accounting_product_mode);
}
// if ($accounting_product_mode) { // can't be empty see line 91-93
$param .= '&accounting_product_mode='.urlencode($accounting_product_mode);
// }
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
if ($optioncss != '') {
@@ -552,10 +552,12 @@ if ($resql) {
if ($massaction == 'set_default_account') {
$formquestion = array();
$formquestion[] = array('type' => 'other',
$formquestion[] = array(
'type' => 'other',
'name' => 'set_default_account',
'label' => $langs->trans("AccountancyCode"),
'value' => $form->select_account('', 'default_account', 1, array(), 0, 0, 'maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone'));
'value' => $form->select_account('', 'default_account', 1, array(), 0, 0, 'maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone')
);
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmPreselectAccount"), $langs->trans("ConfirmPreselectAccountQuestion", $nbselected), "confirm_set_default_account", $formquestion, 1, 0, 200, 500, 1);
}
@@ -563,7 +565,7 @@ if ($resql) {
$moreforfilter = '';
if (isModEnabled('category') && $user->hasRight('categorie', 'lire')) {
$formcategory = new FormCategory($db);
$moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_PRODUCT, $searchCategoryProductList, 'minwidth300', $searchCategoryProductList ? $searchCategoryProductList : 0);
$moreforfilter .= $formcategory->getFilterBox(Categorie::TYPE_PRODUCT, $searchCategoryProductList, 'minwidth300', $searchCategoryProductList ? $searchCategoryProductOperator : 0);
}
// Show/hide child products. Hidden by default
@@ -662,7 +664,7 @@ if ($resql) {
while ($i < min($num, $limit)) {
$obj = $db->fetch_object($resql);
// Ref produit as link
// Product ref as link
$product_static->ref = $obj->ref;
$product_static->id = $obj->rowid;
$product_static->type = $obj->product_type;
@@ -907,49 +909,48 @@ if ($resql) {
}
print '</table>';
print '</div>';
?>
<script type="text/javascript">
jQuery(document).ready(function() {
function init_savebutton() {
console.log("We check if at least one line is checked")
print '<script type="text/javascript">
jQuery(document).ready(function() {
function init_savebutton()
{
console.log("We check if at least one line is checked")
atleastoneselected = 0;
jQuery(".checkforselect").each(function(index) {
/* console.log( index + ": " + $( this ).text() ); */
if ($(this).is(':checked')) atleastoneselected++;
});
atleastoneselected=0;
jQuery(".checkforselect").each(function( index ) {
/* console.log( index + ": " + $( this ).text() ); */
if ($(this).is(\':checked\')) atleastoneselected++;
});
if (atleastoneselected) jQuery("#changeaccount").removeAttr('disabled');
else jQuery("#changeaccount").attr('disabled', 'disabled');
if (atleastoneselected) jQuery("#changeaccount").attr('class', 'button');
else jQuery("#changeaccount").attr('class', 'button');
}
if (atleastoneselected) jQuery("#changeaccount").removeAttr(\'disabled\');
else jQuery("#changeaccount").attr(\'disabled\',\'disabled\');
if (atleastoneselected) jQuery("#changeaccount").attr(\'class\',\'button\');
else jQuery("#changeaccount").attr(\'class\',\'button\');
}
jQuery(".checkforselect").change(function() {
init_savebutton();
});
jQuery(".productforselect").change(function() {
console.log($(this).attr("id")+" "+$(this).val());
jQuery(".checkforselect").change(function() {
init_savebutton();
});
jQuery(".productforselect").change(function() {
console.log($(this).attr("id") + " " + $(this).val());
if ($(this).val() && $(this).val() != -1) {
$(".productforselect"+$(this).attr("id")).prop(\'checked\', true);
$(".productforselect"+$(this).attr("id")).prop('checked', true);
} else {
$(".productforselect"+$(this).attr("id")).prop(\'checked\', false);
$(".productforselect"+$(this).attr("id")).prop('checked', false);
}
init_savebutton();
});
init_savebutton();
});
init_savebutton();
init_savebutton();
jQuery("#search_current_account").keyup(function() {
if (jQuery("#search_current_account").val() != \'\')
{
console.log("We set a value of account to search "+jQuery("#search_current_account").val()+", so we disable the other search criteria on account");
jQuery("#search_current_account_valid").val(-1);
}
});
});
</script>';
jQuery("#search_current_account").keyup(function() {
if (jQuery("#search_current_account").val() != '') {
console.log("We set a value of account to search " + jQuery("#search_current_account").val() + ", so we disable the other search criteria on account");
jQuery("#search_current_account_valid").val(-1);
}
});
});
</script>
<?php
print '</form>';

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.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
@@ -680,9 +680,7 @@ if ($resql) {
}
}
$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 .= '&'.$param;
$url .= '&';
$canbemodified = $iserasable;

View File

@@ -235,8 +235,8 @@ if ($action == 'export' && $user->hasRight('accounting', 'mouvements', 'lire'))
if ($exportType === 'csv') {
$sep = getDolGlobalString('ACCOUNTING_EXPORT_SEPARATORCSV');
$filename = 'balance';
$type_export = 'balance';
$filename = 'balance'; // Used by the tpl
$type_export = 'balance'; // Used by the tpl
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
foreach ($object->lines as $line) {
@@ -488,11 +488,11 @@ if ($action != 'export') {
// print_liste_field_titre("Type", $_SERVER['PHP_SELF'], "t.type", "", $param, "", $sortfield, $sortorder);
//}
if (getDolGlobalString('ACCOUNTANCY_SHOW_OPENING_BALANCE')) {
print_liste_field_titre("OpeningBalance", $_SERVER['PHP_SELF'], "", $param, "", 'class="right"', $sortfield, $sortorder);
print_liste_field_titre("OpeningBalance", $_SERVER['PHP_SELF'], "", "", $param, 'class="right"', $sortfield, $sortorder);
}
print_liste_field_titre("AccountingDebit", $_SERVER['PHP_SELF'], "t.debit", "", $param, 'class="right"', $sortfield, $sortorder);
print_liste_field_titre("AccountingCredit", $_SERVER['PHP_SELF'], "t.credit", "", $param, 'class="right"', $sortfield, $sortorder);
print_liste_field_titre("Balance", $_SERVER["PHP_SELF"], "", $param, "", 'class="right"', $sortfield, $sortorder);
print_liste_field_titre("Balance", $_SERVER["PHP_SELF"], '', '', $param, 'class="right"', $sortfield, $sortorder);
// Hook fields
$parameters = array('param' => $param, 'sortfield' => $sortfield, 'sortorder' => $sortorder);

View File

@@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php';
@@ -50,7 +51,7 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php';
$langs->loadLangs(array("accountancy", "bills", "compta"));
$action = GETPOST('action', 'aZ09');
$cancel = GETPOST('cancel', 'aZ09');
$cancel = GETPOST('cancel', 'alpha');
$confirm = GETPOST('confirm', 'alpha');
$type = GETPOST('type', 'alpha');
@@ -682,7 +683,7 @@ if ($action == 'create') {
print '<table class="nobordernopadding centpercent"><tr><td>';
print $langs->trans('Ref');
print '</td>';
if ($action != 'editref') {
if ($action != 'editref' && empty($object->date_validation)) {
print '<td class="right">';
if ($permissiontoadd && $numRefModel === 'mod_bookkeeping_neon') {
print '<a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editref&token='.newToken().'&piece_num='.((int) $object->piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a>';
@@ -691,7 +692,7 @@ if ($action == 'create') {
}
print '</tr></table>';
print '</td><td>';
if ($action == 'editref') {
if ($action == 'editref' && empty($object->date_validation)) {
print '<form name="setref" action="'.$_SERVER["PHP_SELF"].'?piece_num='.((int) $object->piece_num).'" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
@@ -717,14 +718,14 @@ if ($action == 'create') {
print '</td>';
if ($action != 'editdocref') {
print '<td class="right">';
if ($permissiontoadd) {
if ($permissiontoadd && empty($object->date_validation)) {
print '<a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editdocref&token='.newToken().'&piece_num='.((int) $object->piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a>';
}
print '</td>';
}
print '</tr></table>';
print '</td><td>';
if ($action == 'editdocref') {
if ($action == 'editdocref' && empty($object->date_validation)) {
print '<form name="setdocref" action="'.$_SERVER["PHP_SELF"].'?piece_num='.((int) $object->piece_num).'" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
@@ -738,7 +739,38 @@ if ($action == 'create') {
print '<input type="submit" class="button button-edit smallpaddingimp" value="'.$langs->trans('Modify').'">';
print '</form>';
} else {
print $object->doc_ref;
// Get information of an element
if ($object->doc_type === 'customer_invoice' && !empty($object->fk_doc)) {
$invoicestatic = new Facture($db);
$result = $invoicestatic->fetch($object->fk_doc);
if ($result > 0) {
$label_element = $invoicestatic->getNomUrl(1);
} else {
$label_element = $object->doc_ref;
}
} elseif ($object->doc_type === 'supplier_invoice' && !empty($object->fk_doc)) {
$supplierinvoicestatic = new FactureFournisseur($db);
$result = $supplierinvoicestatic->fetch($object->fk_doc);
if ($result > 0) {
$label_element = $supplierinvoicestatic->getNomUrl(1);
} else {
$label_element = $object->doc_ref;
}
} elseif ($object->doc_type === 'expense_report' && !empty($object->fk_doc)) {
$expensereportstatic = new ExpenseReport($db);
$result = $expensereportstatic->fetch($object->fk_doc);
if ($result > 0) {
$label_element = $expensereportstatic->getNomUrl(1);
} else {
$label_element = $object->doc_ref;
}
} else {
$label_element = $object->doc_ref;
}
print $label_element;
}
print '</td>';
print '</tr>';
@@ -750,14 +782,14 @@ if ($action == 'create') {
print '</td>';
if ($action != 'editdate') {
print '<td class="right">';
if ($permissiontoadd) {
if ($permissiontoadd && empty($object->date_validation)) {
print '<a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editdate&token='.newToken().'&piece_num='.((int) $object->piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('SetDate'), 1).'</a>';
}
print '</td>';
}
print '</tr></table>';
print '</td><td colspan="3">';
if ($action == 'editdate') {
if ($action == 'editdate' && empty($object->date_validation)) {
print '<form name="setdate" action="'.$_SERVER["PHP_SELF"].'?piece_num='.((int) $object->piece_num).'" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
@@ -783,14 +815,14 @@ if ($action == 'create') {
print '</td>';
if ($action != 'editjournal') {
print '<td class="right">';
if ($permissiontoadd) {
if ($permissiontoadd && empty($object->date_validation)) {
print '<a class="editfielda reposition" href="'.$_SERVER["PHP_SELF"].'?action=editjournal&token='.newToken().'&piece_num='.((int) $object->piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a>';
}
print '</td>';
}
print '</tr></table>';
print '</td><td>';
if ($action == 'editjournal') {
if ($action == 'editjournal' && empty($object->date_validation)) {
print '<form name="setjournal" action="'.$_SERVER["PHP_SELF"].'?piece_num='.((int) $object->piece_num).'" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
@@ -804,7 +836,13 @@ if ($action == 'create') {
print '<input type="submit" class="button button-edit" value="'.$langs->trans('Modify').'">';
print '</form>';
} else {
print $object->code_journal;
// Get information of a journal
$accountingjournalstatic = new AccountingJournal($db);
$accountingjournalstatic->fetch(0, $object->code_journal);
$journal = $accountingjournalstatic->code;
$journal_label = $accountingjournalstatic->label;
print $accountingjournalstatic->getNomUrl(1, 1, 1);
}
print '</td>';
print '</tr>';
@@ -851,7 +889,7 @@ if ($action == 'create') {
print '<tr>';
print '<td class="titlefield">' . $langs->trans("DateExport") . '</td>';
print '<td>';
print $object->date_export ? dol_print_date($object->date_export, 'dayhour') : '&nbsp;';
print $object->date_export ? img_picto($langs->trans("TransactionExportDesc"), 'fa-file-export', 'class="pictofixedwidth opacitymedium"').dol_print_date($object->date_export, 'dayhour') : '&nbsp;';
print '</td>';
print '</tr>';
@@ -859,7 +897,7 @@ if ($action == 'create') {
print '<tr>';
print '<td class="titlefield">' . $langs->trans("DateValidation") . '</td>';
print '<td>';
print $object->date_validation ? dol_print_date($object->date_validation, 'dayhour') : '&nbsp;';
print $object->date_validation ? img_picto($langs->trans("TransactionBlockedLockedDesc"), 'fa-lock', 'class="pictofixedwidth opacitymedium"').dol_print_date($object->date_validation, 'dayhour') : '&nbsp;';
print '</td>';
print '</tr>';
@@ -966,21 +1004,23 @@ if ($action == 'create') {
// List of movements
print load_fiche_titre($langs->trans("ListeMvts"), '', '');
print '<form action="'.$_SERVER["PHP_SELF"].'?piece_num='.((int) $object->piece_num).'" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
if (empty($object->date_validation)) {
print '<form action="' . $_SERVER["PHP_SELF"] . '?piece_num=' . ((int) $object->piece_num) . '" method="POST">';
if ($optioncss != '') {
print '<input type="hidden" name="optioncss" value="' . $optioncss . '">';
}
print '<input type="hidden" name="token" value="' . newToken() . '">';
print '<input type="hidden" name="doc_date" value="' . $object->doc_date . '">' . "\n";
print '<input type="hidden" name="doc_type" value="' . $object->doc_type . '">' . "\n";
print '<input type="hidden" name="doc_ref" value="' . $object->doc_ref . '">' . "\n";
print '<input type="hidden" name="ref" value="' . $object->ref . '">' . "\n";
print '<input type="hidden" name="code_journal" value="' . $object->code_journal . '">' . "\n";
print '<input type="hidden" name="fk_doc" value="' . $object->fk_doc . '">' . "\n";
print '<input type="hidden" name="fk_docdet" value="' . $object->fk_docdet . '">' . "\n";
print '<input type="hidden" name="mode" value="' . $mode . '">' . "\n";
print '<input type="hidden" name="backtopage" value="' . $backtopage . '">';
print '<input type="hidden" name="type" value="' . $type . '">';
}
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="doc_date" value="'.$object->doc_date.'">'."\n";
print '<input type="hidden" name="doc_type" value="'.$object->doc_type.'">'."\n";
print '<input type="hidden" name="doc_ref" value="'.$object->doc_ref.'">'."\n";
print '<input type="hidden" name="ref" value="'.$object->ref.'">'."\n";
print '<input type="hidden" name="code_journal" value="'.$object->code_journal.'">'."\n";
print '<input type="hidden" name="fk_doc" value="'.$object->fk_doc.'">'."\n";
print '<input type="hidden" name="fk_docdet" value="'.$object->fk_docdet.'">'."\n";
print '<input type="hidden" name="mode" value="'.$mode.'">'."\n";
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<input type="hidden" name="type" value="'.$type.'">';
if (count($object->linesmvt) > 0) {
print '<div class="div-table-responsive-no-min">';
@@ -1005,7 +1045,7 @@ if ($action == 'create') {
print "</tr>\n";
// Add an empty line if there is not yet
if (!empty($object->linesmvt[0])) {
if (!empty($object->linesmvt[0]) && empty($object->date_validation)) {
$tmpline = $object->linesmvt[0];
if (!empty($tmpline->numero_compte)) {
$line = new BookKeepingLine($db);
@@ -1017,7 +1057,7 @@ if ($action == 'create') {
$total_debit += $line->debit;
$total_credit += $line->credit;
if ($action == 'update' && $line->id == $id) {
if ($action == 'update' && $line->id == $id && empty($object->date_validation)) {
print '<tr class="oddeven" data-lineid="'.((int) $line->id).'">';
print '<!-- td columns in edit mode -->';
print '<td>';
@@ -1044,7 +1084,7 @@ if ($action == 'create') {
print '<input type="submit" class="button" name="update" value="'.$langs->trans("Update").'">';
print '</td>';
print "</tr>\n";
} elseif (empty($line->numero_compte) || (empty($line->debit) && empty($line->credit))) {
} elseif ((empty($line->numero_compte) || (empty($line->debit) && empty($line->credit))) && empty($object->date_validation)) {
if (($action == "" || $action == 'add') && $permissiontoadd) {
print '<tr class="oddeven" data-lineid="'.((int) $line->id).'">';
print '<!-- td columns in add mode -->';

View File

@@ -30,6 +30,13 @@
// Load Dolibarr environment
require '../../main.inc.php';
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php';
@@ -41,14 +48,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
// Load translation files required by the page
$langs->loadLangs(array("accountancy", "compta"));
@@ -851,15 +850,26 @@ if ($action == 'export_file') {
|| getDolGlobalString('ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC
|| getDolGlobalString('ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC2
) {
$except = array();
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_INVOICE_SOURCE_FILE')) {
$except[] = $langs->trans('Invoice');
}
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_EXPENSEREPORT_SOURCE_FILE')) {
$except[] = $langs->trans('ExpenseReport');
}
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_SUPPLIERINVOICE_SOURCE_FILE')) {
$except[] = $langs->trans('SupplierInvoice');
}
$form_question['notifiedexportfull'] = array(
'name' => 'notifiedexportfull',
'type' => 'checkbox',
'label' => $langs->trans('NotifiedExportFull'),
'label' => $langs->trans('NotifiedExportFull').(empty($except) ? '' : ' <spanc class="opacitymedium">('.$langs->trans("except").' '.implode(', ', $except).')</span>'),
'value' => 'false',
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").'...', $langs->trans('ConfirmExportFile'), 'export_fileconfirm', $form_question, '', 1, 390, 700);
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").'...', '', 'export_fileconfirm', $form_question, '', 1, 390, 700);
}
// Print form confirm

View File

@@ -51,7 +51,7 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php';
*/
// Load translation files required by the page
$langs->loadLangs(array("accountancy", "compta"));
$langs->loadLangs(array("accountancy", "categories", "compta", "other"));
// Get Parameters
$socid = GETPOSTINT('socid');
@@ -339,7 +339,12 @@ if (empty($reshook)) {
$listofaccountsforgroup2[] = "'".$db->escape((string) $tmpval['account_number'])."'";
}
}
$filter['t.search_accounting_code_in'] = implode(',', $listofaccountsforgroup2);
if (!empty($listofaccountsforgroup2)) {
$filter['t.search_accounting_code_in'] = implode(',', $listofaccountsforgroup2);
} else {
$filter['t.search_accounting_code_in'] = "''";
setEventMessages($langs->trans("ThisCategoryHasNoItems"), null, 'warnings');
}
$param .= '&search_account_category='.urlencode((string) ($search_account_category));
}
if (!empty($search_accountancy_code)) {
@@ -742,13 +747,13 @@ if (count($filter) > 0) {
$sqlwhere[] = natural_search($key, $value, 1, 1);
} elseif ($key == 't.reconciled_option') {
$sqlwhere[] = 't.lettering_code IS NULL';
} elseif ($key == 't.code_journal' && !empty($value)) {
} elseif ($key == 't.code_journal' && !empty($value)) { // @phpstan-ignore-line false positive on !empty
if (is_array($value)) {
$sqlwhere[] = natural_search("t.code_journal", implode(',', $value), 3, 1);
} else {
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
}
} elseif ($key == 't.search_accounting_code_in' && !empty($value)) {
} elseif ($key == 't.search_accounting_code_in' && !empty($value)) { // @phpstan-ignore-line false positive on !empty
$sqlwhere[] = 't.numero_compte IN ('.$db->sanitize($value, 1).')';
} else {
$sqlwhere[] = natural_search($key, $value, 0, 1);
@@ -1272,6 +1277,12 @@ while ($i < min($num, $limit)) {
$object->piece_num = $line->piece_num;
$object->ref = $line->ref;
print $object->getNomUrl(1, '', 0, '', 1);
if (!empty($line->date_export)) {
print img_picto($langs->trans("DateExport").": ".dol_print_date($line->date_export, 'dayhour')." (".$langs->trans("TransactionExportDesc").")", 'fa-file-export', 'class="paddingleft pictofixedwidth opacitymedium"');
}
if (!empty($line->date_validation)) {
print img_picto($langs->trans("DateValidation").": ".dol_print_date($line->date_validation, 'dayhour')." (".$langs->trans("TransactionBlockedLockedDesc").")", 'fa-lock', 'class="paddingleft pictofixedwidth opacitymedium"');
}
print '</td>';
if (!$i) {
$totalarray['nbfield']++;

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