forked from Wavyzz/dolibarr
Compare commits
1908 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fad6d737b9 | |||
|
|
1e0548468e | ||
|
|
5aee279f5a | ||
|
|
77d7d17d4c | ||
|
|
c24ebe2122 | ||
|
|
87e8eddb65 | ||
|
|
049ab546be | ||
|
|
fa650e4d5d | ||
|
|
3403bbe869 | ||
|
|
a162de2455 | ||
|
|
076ab14c47 | ||
|
|
c7f75a9a52 | ||
|
|
e8a347f89e | ||
|
|
140d2aa1cd | ||
|
|
edda95d07f | ||
|
|
cdcfb93eb5 | ||
|
|
44981cde29 | ||
|
|
72f6422804 | ||
|
|
05d0bba2a0 | ||
|
|
9bc45a5e89 | ||
|
|
eeacbac425 | ||
|
|
100ba8e060 | ||
|
|
58b524d98c | ||
|
|
8c85a8a0e6 | ||
|
|
a5a4dd1add | ||
|
|
5245289ef8 | ||
|
|
d4082e1560 | ||
|
|
21e06d8fb5 | ||
|
|
ca11daa0bb | ||
|
|
091787d65d | ||
|
|
e171a15fba | ||
|
|
8c77b76400 | ||
|
|
d17f13f149 | ||
|
|
e78cb01ce6 | ||
|
|
cc1d3c431d | ||
|
|
94ee91a051 | ||
|
|
01fe82e726 | ||
|
|
56c616d65a | ||
|
|
6dd6760d24 | ||
|
|
e9a9c7ac61 | ||
|
|
b99464eb80 | ||
|
|
be3f10e6d2 | ||
|
|
44ef4d5860 | ||
|
|
aa0f3f2d60 | ||
|
|
adf03f7168 | ||
|
|
51492f25f2 | ||
|
|
62a16aadff | ||
|
|
2ed9f1ea98 | ||
|
|
8e3a185af5 | ||
|
|
e36f3f4e9d | ||
|
|
0820139b1d | ||
|
|
f75b6a64eb | ||
|
|
3283967651 | ||
|
|
8146025b08 | ||
|
|
47dc800efb | ||
|
|
07c1391ffd | ||
|
|
8ec1cbba60 | ||
|
|
4ff7a1644e | ||
|
|
7c20dc8333 | ||
|
|
6dd2f31012 | ||
|
|
49b432436b | ||
|
|
0d73eaf179 | ||
|
|
51be9b6a44 | ||
|
|
341ec9d71d | ||
|
|
8dd55d5a33 | ||
|
|
7b4a17e000 | ||
|
|
68459f54ab | ||
|
|
6ef0ec5b9e | ||
|
|
91fec9d807 | ||
|
|
f796dc9f67 | ||
|
|
58a84827d5 | ||
|
|
3ff7e43648 | ||
|
|
cec620563e | ||
|
|
f3bfcfe7c2 | ||
|
|
87c4ed00a3 | ||
|
|
16929b4d89 | ||
|
|
ca000b77f6 | ||
|
|
0d04a879a1 | ||
|
|
152cc48585 | ||
|
|
d67db1e685 | ||
|
|
0c2f6ea9b0 | ||
|
|
07518a6865 | ||
|
|
345a256ef6 | ||
|
|
7626de3ff1 | ||
|
|
41f5804a92 | ||
|
|
f2e80fead5 | ||
|
|
7faab635c4 | ||
|
|
da46bc5517 | ||
|
|
8335e264be | ||
|
|
e348a89ccf | ||
|
|
175c90f658 | ||
|
|
6c738b6503 | ||
|
|
685119cdde | ||
|
|
447d8b7a64 | ||
|
|
1225aee5e0 | ||
|
|
53b5af0efa | ||
|
|
dd4f55ca0a | ||
|
|
f815571248 | ||
|
|
f22838782a | ||
|
|
26a2d47bec | ||
|
|
570c7b2255 | ||
|
|
0aaf06d07b | ||
|
|
6b6ebe7a43 | ||
|
|
8dd9ed56a1 | ||
|
|
2078610328 | ||
|
|
10deeef770 | ||
|
|
89db077280 | ||
|
|
37270fdca0 | ||
|
|
77d4a16778 | ||
|
|
8e3a7714b8 | ||
|
|
0a914f437a | ||
|
|
e486707236 | ||
|
|
39d7ffae8d | ||
|
|
38180ab43c | ||
|
|
cecc1831a2 | ||
|
|
adb02003f5 | ||
|
|
0e79c7817f | ||
|
|
26123a6f84 | ||
|
|
3f91f3f1fc | ||
|
|
1cb221efe9 | ||
|
|
2da06f9fb1 | ||
|
|
56fed15f5b | ||
|
|
efc15d7d1f | ||
|
|
7c400a1e12 | ||
|
|
a9bf93afd1 | ||
|
|
dcee71db77 | ||
|
|
ef22546aa6 | ||
|
|
5342cb87ea | ||
|
|
c1aceed820 | ||
|
|
9a67f45847 | ||
|
|
e471e0fb31 | ||
|
|
2d4a30fd58 | ||
|
|
a692c73071 | ||
|
|
f721985162 | ||
|
|
0ef9acd8ae | ||
|
|
419e208a77 | ||
|
|
78ca88f4fc | ||
|
|
76916ad1cf | ||
|
|
234fa7690f | ||
|
|
a15c3a4ff2 | ||
|
|
d1e0efc466 | ||
|
|
900fa67c9e | ||
|
|
8ba14e9e18 | ||
|
|
fbfeb5c978 | ||
|
|
6afec608a3 | ||
|
|
67500e1b99 | ||
|
|
597088f030 | ||
|
|
783dbd5ccf | ||
|
|
bc9199e58f | ||
|
|
8b0d4f82a5 | ||
|
|
62d05df912 | ||
|
|
ebca8345b0 | ||
|
|
a90c222f73 | ||
|
|
a20fac32a6 | ||
|
|
b9daf82a44 | ||
|
|
31394457f1 | ||
|
|
66e88bc761 | ||
|
|
ac7fe765ae | ||
|
|
86578bd625 | ||
|
|
d7063122a2 | ||
|
|
01d854e44e | ||
|
|
5e94b60916 | ||
|
|
404ad0e876 | ||
|
|
406f722cf9 | ||
|
|
e203684464 | ||
|
|
3b3c5a53d3 | ||
|
|
21ff19cec3 | ||
|
|
e903cf122c | ||
|
|
aef314264c | ||
|
|
456530c6c8 | ||
|
|
14d5666477 | ||
|
|
9d4391f581 | ||
|
|
8b82ff4fd1 | ||
|
|
a9c0a59d59 | ||
|
|
8d96062feb | ||
|
|
1eeee0ab80 | ||
|
|
8df759d0ab | ||
|
|
5d3e2078a6 | ||
|
|
79d223cca4 | ||
|
|
e0df46e5c4 | ||
|
|
00143a8368 | ||
|
|
5031572102 | ||
|
|
4f75fb7f8a | ||
|
|
6a009f95dc | ||
|
|
16ee8858b4 | ||
|
|
88825c460b | ||
|
|
84f9065881 | ||
|
|
6244ab52a9 | ||
|
|
c6bf35779f | ||
|
|
de49d24d1b | ||
|
|
4dcdabf275 | ||
|
|
658741c072 | ||
|
|
6054cd6311 | ||
|
|
9ff1bc423d | ||
|
|
9b071f22c2 | ||
|
|
ae11ad4e72 | ||
|
|
049eb31665 | ||
|
|
bec4068a22 | ||
|
|
e429fdec87 | ||
|
|
0bca7ac7a4 | ||
|
|
2cb9f21259 | ||
|
|
65f997585b | ||
|
|
b0636bf78c | ||
|
|
81894fa6ac | ||
|
|
d26fb57e52 | ||
|
|
c18c6fe8dc | ||
|
|
b12695db76 | ||
|
|
b18f2f4fda | ||
|
|
ba2466a008 | ||
|
|
2e9ec3a9da | ||
|
|
a046419145 | ||
|
|
b0d08278f0 | ||
|
|
def8495513 | ||
|
|
b2fce5052f | ||
|
|
b1d57a6bd1 | ||
|
|
6a68e9f53a | ||
|
|
0ef81c4c0e | ||
|
|
dec9d861bf | ||
|
|
3c8ea21911 | ||
|
|
9743be92cb | ||
|
|
6856b66d85 | ||
|
|
da79b3bc4c | ||
|
|
16904d12f8 | ||
|
|
1525b9c85e | ||
|
|
ffe07999cf | ||
|
|
af371b828f | ||
|
|
b7e58f6ec1 | ||
|
|
4ed605e31e | ||
|
|
869aab8960 | ||
|
|
fcb55feb50 | ||
|
|
8d7052ee50 | ||
|
|
b4ff2c4fe3 | ||
|
|
24146d89c5 | ||
|
|
0d1fa3cec0 | ||
|
|
57930b3abd | ||
|
|
1dd2cc36e4 | ||
|
|
477d755bbc | ||
|
|
f85b53a4ca | ||
|
|
a6e01fe7b7 | ||
|
|
43c2336683 | ||
|
|
e1b919366e | ||
|
|
40e4a6959f | ||
|
|
30d66bcdd8 | ||
|
|
8f52485172 | ||
|
|
fc1364db56 | ||
|
|
54dc4452aa | ||
|
|
746e4865d8 | ||
|
|
84eaa17791 | ||
|
|
07dfde2bf6 | ||
|
|
e9869bb5da | ||
|
|
0ef519f2f6 | ||
|
|
22995dae99 | ||
|
|
b0406165ae | ||
|
|
7eb18a140f | ||
|
|
62c009d440 | ||
|
|
52ae202aff | ||
|
|
2ca2fe7f28 | ||
|
|
140310c508 | ||
|
|
64cf2513bd | ||
|
|
6c207f78d8 | ||
|
|
7419604955 | ||
|
|
a3969c1d2c | ||
|
|
9c0b3d70cc | ||
|
|
8b54c7f2b7 | ||
|
|
5c14e454ad | ||
|
|
0c176bc5df | ||
|
|
7d55a1a41a | ||
|
|
d9563ac0ed | ||
|
|
73fe50af10 | ||
|
|
bea2f674f0 | ||
|
|
80494870c0 | ||
|
|
d25847602b | ||
|
|
1280d404ab | ||
|
|
283efbbffe | ||
|
|
2e430a71a3 | ||
|
|
faf2971ff7 | ||
|
|
573f951ac9 | ||
|
|
6de28e5719 | ||
|
|
cb23873769 | ||
|
|
3785dd2d17 | ||
|
|
1bedddf113 | ||
|
|
4d5d72cdb5 | ||
|
|
3bab3fd349 | ||
|
|
54eaa1f106 | ||
|
|
9458392ae1 | ||
|
|
a3ee1b0c11 | ||
|
|
9fd37b308e | ||
|
|
a546806788 | ||
|
|
a5ff29ebce | ||
|
|
d372f0d1f8 | ||
|
|
d6a579f437 | ||
|
|
89757d5cbf | ||
|
|
d96de728ea | ||
|
|
420f4ff416 | ||
|
|
a91cf6086a | ||
|
|
c222bf1f85 | ||
|
|
925d6f450d | ||
|
|
dd67cab64f | ||
|
|
b84969a548 | ||
|
|
700463596e | ||
|
|
66f9bfb764 | ||
|
|
e0fd1bdd3e | ||
|
|
341a88f48a | ||
|
|
4657b5f02c | ||
|
|
d2e101bafe | ||
|
|
5bbfc5e025 | ||
|
|
e8aac4e17d | ||
|
|
efd5e48f78 | ||
|
|
c05004415b | ||
|
|
254924712d | ||
|
|
164f2c4414 | ||
|
|
e73ca1d749 | ||
|
|
3c57870e31 | ||
|
|
277c01a432 | ||
|
|
ef21145b1f | ||
|
|
f5dab1a3b6 | ||
|
|
f3a62ae0b1 | ||
|
|
131d1390bc | ||
|
|
0564b44678 | ||
|
|
4de515c4df | ||
|
|
29db95a8b3 | ||
|
|
b117b315a2 | ||
|
|
c4068211c5 | ||
|
|
a8b4ae7dfb | ||
|
|
7fb7d38ffc | ||
|
|
38a7524846 | ||
|
|
f30fb7a6a5 | ||
|
|
54ad6ee3c9 | ||
|
|
8db1c3eec2 | ||
|
|
83ae0eedab | ||
|
|
33dbb293ea | ||
|
|
67e185a30f | ||
|
|
752e06f5fc | ||
|
|
4cb5fba913 | ||
|
|
94e76ab91f | ||
|
|
824e35fe04 | ||
|
|
bd217b025f | ||
|
|
8fa1df6560 | ||
|
|
d286de5684 | ||
|
|
a161c5fb67 | ||
|
|
6441c42323 | ||
|
|
1466698553 | ||
|
|
65a04831a9 | ||
|
|
c17f13316a | ||
|
|
33ca6820a2 | ||
|
|
d3bef6ee32 | ||
|
|
e45fe1f988 | ||
|
|
6a70e29274 | ||
|
|
8b58b215b4 | ||
|
|
ed2c5a6e80 | ||
|
|
fe28e36638 | ||
|
|
4906ad29d6 | ||
|
|
488b7d88a2 | ||
|
|
bca094a6a8 | ||
|
|
0afc7eed80 | ||
|
|
c2210c542f | ||
|
|
b4a88253eb | ||
|
|
16c9d4005f | ||
|
|
43e3ebde1a | ||
|
|
acf5e30b30 | ||
|
|
76b5540124 | ||
|
|
8bb63c5963 | ||
|
|
ac54639668 | ||
|
|
13be852eac | ||
|
|
c2e6aa3999 | ||
|
|
5c043937f3 | ||
|
|
95e2a7690c | ||
|
|
9763762ce8 | ||
|
|
5caed6d133 | ||
|
|
481572f37a | ||
|
|
7c989f9d74 | ||
|
|
bf21674d27 | ||
|
|
3f1709123c | ||
|
|
8696b0ab6f | ||
|
|
7e77994cec | ||
|
|
f70b6b43ec | ||
|
|
964aca7c84 | ||
|
|
21af311344 | ||
|
|
a9cd1d2bb9 | ||
|
|
a633c1db81 | ||
|
|
3ed79a2055 | ||
|
|
55f4c8f7ae | ||
|
|
f8b9748d49 | ||
|
|
2aa57c3ce2 | ||
|
|
01b917c0a1 | ||
|
|
5ae9e3fc51 | ||
|
|
6b433afab1 | ||
|
|
ee0dd8b672 | ||
|
|
0b69ed1612 | ||
|
|
f532f85d8c | ||
|
|
56a73c5cd9 | ||
|
|
680f4b6c31 | ||
|
|
343e05efc5 | ||
|
|
4284d147bf | ||
|
|
ae8ed29ce2 | ||
|
|
fa466150cb | ||
|
|
1427895a62 | ||
|
|
75438c60c7 | ||
|
|
a43bf46a75 | ||
|
|
f65903d006 | ||
|
|
369b9510e0 | ||
|
|
deeca91581 | ||
|
|
1ed840384a | ||
|
|
f93fdc641a | ||
|
|
0226d75ec6 | ||
|
|
66aa736629 | ||
|
|
13cdc20266 | ||
|
|
debdeb071d | ||
|
|
8428a5ccfa | ||
|
|
4bcb7e16da | ||
|
|
a63eae7903 | ||
|
|
35bb894393 | ||
|
|
79210c0120 | ||
|
|
d87ebbf926 | ||
|
|
08b105502e | ||
|
|
bd2aba1a2f | ||
|
|
a4601686a6 | ||
|
|
46900b8a37 | ||
|
|
a4d9b335ce | ||
|
|
b43524e467 | ||
|
|
049cbbfb4d | ||
|
|
bcf6d6a7a2 | ||
|
|
6916ca7ac8 | ||
|
|
023e3081a4 | ||
|
|
9dd0c922da | ||
|
|
0ba4c17e66 | ||
|
|
0e9d5cfda0 | ||
|
|
bb65d07c3d | ||
|
|
38082f52c5 | ||
|
|
4bc5892544 | ||
|
|
b0e0c9d17e | ||
|
|
3b5d1eb315 | ||
|
|
77d956ce92 | ||
|
|
4f81ffb308 | ||
|
|
22bd69f9fe | ||
|
|
db5f33442a | ||
|
|
84ba1852aa | ||
|
|
75925aee71 | ||
|
|
20875dead9 | ||
|
|
0351057ef2 | ||
|
|
16a7431168 | ||
|
|
161d0e4fdf | ||
|
|
cd69b8deb1 | ||
|
|
e65b5575b9 | ||
|
|
e85c2d70b9 | ||
|
|
5432834836 | ||
|
|
59ec1a2811 | ||
|
|
bb9899085e | ||
|
|
5df20007bc | ||
|
|
ce6bd7146b | ||
|
|
55fe8b09e3 | ||
|
|
79cf1410b3 | ||
|
|
6f15fcc66c | ||
|
|
2a7ce987c3 | ||
|
|
35f6a98665 | ||
|
|
cd03e9fc36 | ||
|
|
496fef63a3 | ||
|
|
ca8a6c9c45 | ||
|
|
985b6f258a | ||
|
|
d5c61d07ba | ||
|
|
5879968e60 | ||
|
|
ad830a346e | ||
|
|
6ead2839d0 | ||
|
|
bf006a28be | ||
|
|
f045761826 | ||
|
|
7ced36c991 | ||
|
|
6bae5b2538 | ||
|
|
bde100bf9d | ||
|
|
c063eea63d | ||
|
|
c08c7170d2 | ||
|
|
1df61bbd98 | ||
|
|
00fe10a75f | ||
|
|
21100454f6 | ||
|
|
65a3b0893d | ||
|
|
669c939bcd | ||
|
|
a7cebb70a9 | ||
|
|
f135c22cd1 | ||
|
|
fdb1564e18 | ||
|
|
b8353936b6 | ||
|
|
17d3a35a51 | ||
|
|
92454d671f | ||
|
|
6ddc9eb796 | ||
|
|
0dde113a71 | ||
|
|
f4d3c63332 | ||
|
|
401d1dcdc0 | ||
|
|
f6ac3eda7d | ||
|
|
6c8b4da445 | ||
|
|
838e6efd5f | ||
|
|
83f1825b63 | ||
|
|
7ef5b4d427 | ||
|
|
a2640829ca | ||
|
|
f8376320aa | ||
|
|
1abb76dc2e | ||
|
|
e02991ed7f | ||
|
|
8fd4d0332d | ||
|
|
6a97704644 | ||
|
|
1008b0f3e4 | ||
|
|
137d3e579b | ||
|
|
45336e50a4 | ||
|
|
fdf3b9057a | ||
|
|
31b9e008fe | ||
|
|
13b3e15503 | ||
|
|
e169718b4c | ||
|
|
86f20799bc | ||
|
|
b783743b10 | ||
|
|
700cbfb19c | ||
|
|
842f57b866 | ||
|
|
49051ff165 | ||
|
|
15f34dbbb0 | ||
|
|
27c725f5ca | ||
|
|
e45352bd11 | ||
|
|
9e3d909570 | ||
|
|
35e720354e | ||
|
|
82917d2b75 | ||
|
|
b8cda55d26 | ||
|
|
1d56ed09f4 | ||
|
|
8753595903 | ||
|
|
e7ddb684e0 | ||
|
|
5c2344cca8 | ||
|
|
4e7954b85c | ||
|
|
bf98e2b1d5 | ||
|
|
8390a19d59 | ||
|
|
297d43d514 | ||
|
|
7dd1e5a95f | ||
|
|
73f1b50ea1 | ||
|
|
b9776e8a83 | ||
|
|
41e914f9ac | ||
|
|
10c7a67ac1 | ||
|
|
f9cd8367ad | ||
|
|
ca878b2d76 | ||
|
|
048b0f98e6 | ||
|
|
37c119d51d | ||
|
|
5614def20b | ||
|
|
f33fe1036f | ||
|
|
f43f2909ff | ||
|
|
3a8f36d185 | ||
|
|
02809d5901 | ||
|
|
b3228aa7ce | ||
|
|
d1572fc3ea | ||
|
|
d3de333f54 | ||
|
|
acd694914b | ||
|
|
caac9a5218 | ||
|
|
34a34efec5 | ||
|
|
9148dcfe45 | ||
|
|
53e1d3630f | ||
|
|
0b93c10df9 | ||
|
|
706b9f47d8 | ||
|
|
e4d10caf33 | ||
|
|
5ac469634e | ||
|
|
57157db2b7 | ||
|
|
cb2d22e016 | ||
|
|
7e712cd368 | ||
|
|
2d76f12dae | ||
|
|
8037974241 | ||
|
|
decd14c735 | ||
|
|
b732fd2ed7 | ||
|
|
74596bbdc2 | ||
|
|
318e0362c4 | ||
|
|
ad4f4fb619 | ||
|
|
3adedc23d9 | ||
|
|
6a8d983f34 | ||
|
|
977f552d8b | ||
|
|
daa98872eb | ||
|
|
7658c08f01 | ||
|
|
d9d6192eaf | ||
|
|
65336ae956 | ||
|
|
25a59cb869 | ||
|
|
00095c904d | ||
|
|
63c8857be7 | ||
|
|
02d485ce4b | ||
|
|
43cf29d2e1 | ||
|
|
b292c3d631 | ||
|
|
074e249e48 | ||
|
|
2a6064b755 | ||
|
|
134243550b | ||
|
|
e9bd32e66c | ||
|
|
f87fc4d9e3 | ||
|
|
8f4d36c1e8 | ||
|
|
958bca6223 | ||
|
|
4a363478ae | ||
|
|
02ec4cf421 | ||
|
|
b30aa97ba9 | ||
|
|
f665a0301e | ||
|
|
a441b412cc | ||
|
|
6c8e2a1320 | ||
|
|
8bd82c0b67 | ||
|
|
65f865b843 | ||
|
|
09240c30c7 | ||
|
|
1874deef49 | ||
|
|
42edd8f22d | ||
|
|
6329e03c7d | ||
|
|
6ed764bedf | ||
|
|
9af7b44714 | ||
|
|
fc8b0a80c0 | ||
|
|
d6dce86061 | ||
|
|
af47262f4f | ||
|
|
4adc4a31e2 | ||
|
|
333e977bf9 | ||
|
|
cd0fd6f466 | ||
|
|
2572847b2a | ||
|
|
6df2e2d236 | ||
|
|
7e93fe7a5c | ||
|
|
09eefb5031 | ||
|
|
c0c1ef276f | ||
|
|
3fc6410b5f | ||
|
|
70f6a23e6f | ||
|
|
8c6ecd1144 | ||
|
|
7920cf8596 | ||
|
|
2505c3755b | ||
|
|
bf5a0c9ce7 | ||
|
|
ea00719449 | ||
|
|
ce46611031 | ||
|
|
93973e13c5 | ||
|
|
073f7f3620 | ||
|
|
4e83087e28 | ||
|
|
161b73bf7b | ||
|
|
69c65c5f4d | ||
|
|
c5451242e7 | ||
|
|
41dd77959a | ||
|
|
86ceb63f91 | ||
|
|
0b7acfae9b | ||
|
|
1cea5220da | ||
|
|
c8458c22e8 | ||
|
|
f2f5f23f8f | ||
|
|
776b9422e4 | ||
|
|
c84d4c53e5 | ||
|
|
f5d7d165b0 | ||
|
|
be6c3df029 | ||
|
|
078da229c8 | ||
|
|
612248a9e9 | ||
|
|
e0073b000d | ||
|
|
c7407473c1 | ||
|
|
5df4a90edb | ||
|
|
549cb48e8f | ||
|
|
f2ff34d573 | ||
|
|
27b38e3194 | ||
|
|
ee39ef632a | ||
|
|
99efb68f79 | ||
|
|
910443eccb | ||
|
|
568b47cb4a | ||
|
|
433793aff0 | ||
|
|
872cb213bf | ||
|
|
760a808a5d | ||
|
|
067d4e332e | ||
|
|
d121d7e173 | ||
|
|
29ccbb43d5 | ||
|
|
111e319be8 | ||
|
|
142fbf93b0 | ||
|
|
4c4b344510 | ||
|
|
d4f39889f5 | ||
|
|
e89421068d | ||
|
|
f39fde3f43 | ||
|
|
ea7152a818 | ||
|
|
2142860685 | ||
|
|
a55a57d0ce | ||
|
|
8e1cf72de0 | ||
|
|
83407ec49f | ||
|
|
f03f54d406 | ||
|
|
349930ff03 | ||
|
|
0625eef99a | ||
|
|
b757f3392f | ||
|
|
7d7994aa1d | ||
|
|
d685f1e529 | ||
|
|
8a87de9112 | ||
|
|
9095bc46ef | ||
|
|
31c97e3991 | ||
|
|
0b605bffba | ||
|
|
818f6b1555 | ||
|
|
e8d2095816 | ||
|
|
761804ce55 | ||
|
|
74cc569329 | ||
|
|
c3cb5e1c12 | ||
|
|
fde6056176 | ||
|
|
a6c98599ec | ||
|
|
eda0b8950b | ||
|
|
9d3799f337 | ||
|
|
175eea301f | ||
|
|
924e024db3 | ||
|
|
f8d3713c1c | ||
|
|
21d50f1a58 | ||
|
|
4c80eee890 | ||
|
|
bae2a91727 | ||
|
|
e69ff3428b | ||
|
|
6ee8db9f3f | ||
|
|
c12764e81f | ||
|
|
33ed1b2f1a | ||
|
|
361169b896 | ||
|
|
db32812476 | ||
|
|
b87f18cb4f | ||
|
|
8456749135 | ||
|
|
e1e47034d5 | ||
|
|
bf3a2c1e01 | ||
|
|
0958108721 | ||
|
|
fa935c8820 | ||
|
|
cf5caa80b2 | ||
|
|
a3881ef67b | ||
|
|
933ce868df | ||
|
|
f14bc0bfbe | ||
|
|
62a7756a43 | ||
|
|
e1931b2967 | ||
|
|
063a6b8938 | ||
|
|
c500febdc4 | ||
|
|
e5ed2c83f0 | ||
|
|
207d13c365 | ||
|
|
c25aa82fc6 | ||
|
|
60f0813520 | ||
|
|
20c189b55c | ||
|
|
70d5454bfb | ||
|
|
a54c5fcdcb | ||
|
|
e541438b7e | ||
|
|
ec23fc54f8 | ||
|
|
1bc100a082 | ||
|
|
f580bb85a5 | ||
|
|
60f089c015 | ||
|
|
9f90c9d371 | ||
|
|
75c306c05d | ||
|
|
7986c02711 | ||
|
|
d0b7e27ca5 | ||
|
|
1bbbd96690 | ||
|
|
8b57bb2e41 | ||
|
|
13407fe5ee | ||
|
|
59dadae226 | ||
|
|
320f02ed27 | ||
|
|
89dda279a0 | ||
|
|
554d2baa32 | ||
|
|
4414bf3b95 | ||
|
|
408ea58858 | ||
|
|
a0fc45d523 | ||
|
|
934fe08921 | ||
|
|
acc3a47272 | ||
|
|
1f8b5db2c7 | ||
|
|
8e689c1479 | ||
|
|
a0116f6cd8 | ||
|
|
d8fc4d4ceb | ||
|
|
8efe6d477e | ||
|
|
607e13b83f | ||
|
|
53e7810db4 | ||
|
|
b7d9342992 | ||
|
|
e4cafd3428 | ||
|
|
97bd4852af | ||
|
|
e3de2dddb7 | ||
|
|
70768832c5 | ||
|
|
e3bf8bcb47 | ||
|
|
89f36faced | ||
|
|
19feb7c533 | ||
|
|
5fdfa79e56 | ||
|
|
d69e0b4a5d | ||
|
|
5e74b622bd | ||
|
|
333c96ddd6 | ||
|
|
0919cc37e0 | ||
|
|
92ffba11ca | ||
|
|
d55551ee3c | ||
|
|
2760f0a6d9 | ||
|
|
24f7903123 | ||
|
|
b4a2e14fa8 | ||
|
|
6586feb3ef | ||
|
|
4416bcb3ee | ||
|
|
702d91c65d | ||
|
|
870c2a8f50 | ||
|
|
0e79fa36ee | ||
|
|
6ee966d64d | ||
|
|
214ab20b76 | ||
|
|
fd2ea78e9b | ||
|
|
13dbe2ea58 | ||
|
|
db103f37df | ||
|
|
644a9ea179 | ||
|
|
a44fc7d843 | ||
|
|
f4fe07b98a | ||
|
|
6378a99e5a | ||
|
|
af74f2c057 | ||
|
|
d81baf8f53 | ||
|
|
1263054fba | ||
|
|
a64b36cec4 | ||
|
|
fa59daea62 | ||
|
|
ab6fbf253d | ||
|
|
3b6b7fec5a | ||
|
|
9c296c8d81 | ||
|
|
c2257b0d28 | ||
|
|
df1262ace5 | ||
|
|
8f0d2b1f7b | ||
|
|
b667bc0f13 | ||
|
|
05e29b5ae6 | ||
|
|
46276ba216 | ||
|
|
fd08708d6a | ||
|
|
8ee974488b | ||
|
|
e81d5378cd | ||
|
|
1583d69cda | ||
|
|
eb3d752047 | ||
|
|
caf6363995 | ||
|
|
ddbae0f6ad | ||
|
|
e1f9eee9a5 | ||
|
|
0f7c375df7 | ||
|
|
5bdfbdceab | ||
|
|
04f3568d4a | ||
|
|
a2df638c34 | ||
|
|
601d1b986e | ||
|
|
328058c571 | ||
|
|
d634d3fc4c | ||
|
|
7d898184b5 | ||
|
|
b03c12c129 | ||
|
|
eb64e83563 | ||
|
|
bce059e2fa | ||
|
|
42e59c9370 | ||
|
|
6b3602c3eb | ||
|
|
03fe13d93d | ||
|
|
133bf410c0 | ||
|
|
be97a6ccee | ||
|
|
ff20572c72 | ||
|
|
cbf63e5e93 | ||
|
|
bba84133e7 | ||
|
|
05937c43ca | ||
|
|
bdef24de08 | ||
|
|
1ea9614877 | ||
|
|
cdbf362096 | ||
|
|
8dc1ac2cdc | ||
|
|
bc61123efe | ||
|
|
d1e4d393ce | ||
|
|
824fd01a1f | ||
|
|
0def25c38f | ||
|
|
90fb029050 | ||
|
|
5490afcf72 | ||
|
|
0afe735cdc | ||
|
|
ef15577d40 | ||
|
|
6428028305 | ||
|
|
bacdee81a8 | ||
|
|
f9a93552b2 | ||
|
|
e2c317a7cd | ||
|
|
8fb71ef010 | ||
|
|
d27940dd8b | ||
|
|
2d7579c6e2 | ||
|
|
6334fa5bea | ||
|
|
686de5271a | ||
|
|
0e1478206a | ||
|
|
42ce30fab7 | ||
|
|
148574fe4e | ||
|
|
2fbda7b4f4 | ||
|
|
51a4c97c46 | ||
|
|
8beb61ef7f | ||
|
|
59afaf1d70 | ||
|
|
140da6caa7 | ||
|
|
1596fe56ae | ||
|
|
73073a5bf0 | ||
|
|
21d28a745f | ||
|
|
68fa305655 | ||
|
|
f095528260 | ||
|
|
73eea16744 | ||
|
|
e460fffcf9 | ||
|
|
870906daac | ||
|
|
e8fed29ed0 | ||
|
|
5efd3264c7 | ||
|
|
dd9d92013b | ||
|
|
97d5025c08 | ||
|
|
1458e963ab | ||
|
|
16c019532f | ||
|
|
e45299b891 | ||
|
|
9f12de428c | ||
|
|
f160e23918 | ||
|
|
63dc33617f | ||
|
|
d048766373 | ||
|
|
eca129a433 | ||
|
|
0140d1e7cb | ||
|
|
6e13f4fc6a | ||
|
|
1b83c39cc0 | ||
|
|
2489a922d5 | ||
|
|
6c0873708a | ||
|
|
0f08412e7a | ||
|
|
0d51fd9b6f | ||
|
|
17b1c5aa9d | ||
|
|
80eb325a91 | ||
|
|
8317030809 | ||
|
|
2a1c7a91da | ||
|
|
2dbc0db9dd | ||
|
|
4d23d3f77c | ||
|
|
17f35be9c9 | ||
|
|
cd7de255bc | ||
|
|
343ec2684b | ||
|
|
300b840311 | ||
|
|
71423292e0 | ||
|
|
a1be1ff6bd | ||
|
|
617e922a3a | ||
|
|
a69bd1ba56 | ||
|
|
5ba8c69e63 | ||
|
|
63a1d58e2a | ||
|
|
c2ed4519b1 | ||
|
|
93cc83ec4c | ||
|
|
bcbcf30959 | ||
|
|
94d24d48d9 | ||
|
|
e17a179467 | ||
|
|
fc04023095 | ||
|
|
91664a34db | ||
|
|
781adf507b | ||
|
|
05f2232b72 | ||
|
|
e63ab139cc | ||
|
|
50f39de966 | ||
|
|
bdf62918e5 | ||
|
|
cd24808bbf | ||
|
|
2fb0cc7414 | ||
|
|
d7204bbb19 | ||
|
|
f82283a22e | ||
|
|
dd05531744 | ||
|
|
5832cfc198 | ||
|
|
5977e95200 | ||
|
|
d0a4541b28 | ||
|
|
01aa901f93 | ||
|
|
2791d3ccf5 | ||
|
|
cef6eb34c1 | ||
|
|
68544e9bf7 | ||
|
|
d33682e9b4 | ||
|
|
72a24de948 | ||
|
|
cf536abe2e | ||
|
|
9e2e6eea92 | ||
|
|
6f763f4d16 | ||
|
|
df7538a42f | ||
|
|
75ee26c3ed | ||
|
|
40ea0fd469 | ||
|
|
83f27af4c7 | ||
|
|
96a74c4976 | ||
|
|
c5eb60da97 | ||
|
|
25e761bfa5 | ||
|
|
9085f37593 | ||
|
|
8089334670 | ||
|
|
05f3111134 | ||
|
|
5ae358d5b5 | ||
|
|
258fe1124b | ||
|
|
a69ba88857 | ||
|
|
c6b62915f6 | ||
|
|
006a12d191 | ||
|
|
74a775f0e1 | ||
|
|
1ea5683cfc | ||
|
|
b05be5e1df | ||
|
|
f35e7f6c4c | ||
|
|
5f6e8b98b1 | ||
|
|
e4c8d91d69 | ||
|
|
0262da0d20 | ||
|
|
3b668903b5 | ||
|
|
f88f7136c3 | ||
|
|
87c94e1a31 | ||
|
|
8a1ec5634f | ||
|
|
f84f01af30 | ||
|
|
d6fa374d84 | ||
|
|
5b104f4625 | ||
|
|
ca1c3d3781 | ||
|
|
7e6b37fcd4 | ||
|
|
b62c6fa8a9 | ||
|
|
d7a59530de | ||
|
|
a165bf56ad | ||
|
|
6cb1eaef92 | ||
|
|
68e239efe4 | ||
|
|
0d599fae44 | ||
|
|
e3abe90ee0 | ||
|
|
0ab63de622 | ||
|
|
7fbbb99ef8 | ||
|
|
d4601a26ff | ||
|
|
564d245d23 | ||
|
|
61a10cf58d | ||
|
|
247c38923f | ||
|
|
648fd1e809 | ||
|
|
f5d71fac3f | ||
|
|
5fa3ecd41a | ||
|
|
3ba272b2fb | ||
|
|
b7135a24e5 | ||
|
|
0255512c1c | ||
|
|
582151ad82 | ||
|
|
d57d471a9f | ||
|
|
355021adb8 | ||
|
|
974f4e273e | ||
|
|
bce53ec123 | ||
|
|
07f2760dbd | ||
|
|
c2cd2bcaf9 | ||
|
|
a1d7b11324 | ||
|
|
cc6f43493c | ||
|
|
a5a947a570 | ||
|
|
78618f8771 | ||
|
|
bc90498ecd | ||
|
|
3291d78de8 | ||
|
|
d8b167851c | ||
|
|
abd736e632 | ||
|
|
9dd5307c1b | ||
|
|
2ec41b630e | ||
|
|
d4b93b662c | ||
|
|
d7761168ea | ||
|
|
2e8bf5eb94 | ||
|
|
9a0e0a53b1 | ||
|
|
69850016d9 | ||
|
|
88699a02cd | ||
|
|
8042d15e3e | ||
|
|
eb20f6f009 | ||
|
|
0d70325cc5 | ||
|
|
3385a09dab | ||
|
|
1bd94582be | ||
|
|
dbf686d0ba | ||
|
|
149d4974a9 | ||
|
|
4ae58db7c0 | ||
|
|
3a97767b62 | ||
|
|
9dacc2cad1 | ||
|
|
4123e70f0f | ||
|
|
99195bf935 | ||
|
|
4aeda8adcf | ||
|
|
7e9d2a94f4 | ||
|
|
ab1e5c403f | ||
|
|
568c65568a | ||
|
|
04d2e19bc0 | ||
|
|
cab15ca58e | ||
|
|
76a399abf2 | ||
|
|
c07bc61aad | ||
|
|
fc1af7b87e | ||
|
|
4030a7141f | ||
|
|
e415fb7efa | ||
|
|
24bd6d918a | ||
|
|
5b4295912e | ||
|
|
3696a543e7 | ||
|
|
5a8aff9e79 | ||
|
|
dc38a0a84d | ||
|
|
b5de7be8a8 | ||
|
|
0350e2687c | ||
|
|
5e38d0134e | ||
|
|
dc00877d94 | ||
|
|
62f761ac71 | ||
|
|
ee38ff0aaf | ||
|
|
55d177883f | ||
|
|
557e830aae | ||
|
|
a1b99da514 | ||
|
|
0315ad9381 | ||
|
|
6727d0c361 | ||
|
|
3ff7e03ddf | ||
|
|
887e7442d9 | ||
|
|
bc92afe403 | ||
|
|
d8ec14bc46 | ||
|
|
f9bf9d4888 | ||
|
|
f60dac9a62 | ||
|
|
49ef8e87ea | ||
|
|
53aae1a4b8 | ||
|
|
eb47c73001 | ||
|
|
dd667a30b2 | ||
|
|
c2b7c8712f | ||
|
|
e818bf732d | ||
|
|
2d55195982 | ||
|
|
3a27b44f95 | ||
|
|
a643a8456b | ||
|
|
4fd4f0e1d9 | ||
|
|
c6145d7723 | ||
|
|
b1fe717d1a | ||
|
|
dd09cb5f69 | ||
|
|
58d2ba225d | ||
|
|
34498d3437 | ||
|
|
5788438864 | ||
|
|
4e89f046d1 | ||
|
|
bb0974add9 | ||
|
|
1e98b14a75 | ||
|
|
9be9f6d0e6 | ||
|
|
44ccc0f284 | ||
|
|
3e2b962c1d | ||
|
|
399ad121eb | ||
|
|
e9879b2b10 | ||
|
|
c1fb41e5d9 | ||
|
|
2840ebeedf | ||
|
|
5338607237 | ||
|
|
2d809652bd | ||
|
|
1fe5099f1e | ||
|
|
f729d33dcc | ||
|
|
aadaf44ec1 | ||
|
|
6d441f89a4 | ||
|
|
644cb00136 | ||
|
|
b25814cb58 | ||
|
|
c567e55b5e | ||
|
|
6e3de32c36 | ||
|
|
96130d7562 | ||
|
|
b09cfab271 | ||
|
|
1443f35cf1 | ||
|
|
d4ff562fc2 | ||
|
|
4f40278987 | ||
|
|
35c101ff9a | ||
|
|
e6cb3039c0 | ||
|
|
83dcc8fb54 | ||
|
|
5abb379f63 | ||
|
|
6a4c7398a7 | ||
|
|
c0274e4e5a | ||
|
|
f44a243cc9 | ||
|
|
252b68cbcf | ||
|
|
2efb61dbd1 | ||
|
|
6f1ebfb69e | ||
|
|
1648b43481 | ||
|
|
83898f9454 | ||
|
|
4a3383e46c | ||
|
|
ae20554a4d | ||
|
|
088856ad50 | ||
|
|
c91f5caac4 | ||
|
|
4637214644 | ||
|
|
8631c1722f | ||
|
|
ab4d49af61 | ||
|
|
68baff6630 | ||
|
|
5ffb29d21c | ||
|
|
affaa5da9b | ||
|
|
f7a3d295cc | ||
|
|
8c582358f4 | ||
|
|
c1d76182b8 | ||
|
|
b4e01be091 | ||
|
|
d63e68bbcb | ||
|
|
8fa13f68bf | ||
|
|
37aaad6810 | ||
|
|
8cfe643e68 | ||
|
|
c120446561 | ||
|
|
f30b2ef8aa | ||
|
|
058b87fe29 | ||
|
|
2619ee7696 | ||
|
|
4f684df12f | ||
|
|
883686f5f9 | ||
|
|
adbbf9e3b2 | ||
|
|
35bfe71b79 | ||
|
|
7d04067b4e | ||
|
|
0582694eb3 | ||
|
|
d16a66f269 | ||
|
|
13e24a7097 | ||
|
|
b512daf798 | ||
|
|
f5ec334c30 | ||
|
|
819dd701fe | ||
|
|
77ab826478 | ||
|
|
1938bbf63b | ||
|
|
5fe7b972c7 | ||
|
|
1f29c7758c | ||
|
|
c5f9f35ea9 | ||
|
|
aa8ddce4d8 | ||
|
|
cd80cbc632 | ||
|
|
103bfd9051 | ||
|
|
07512d1dad | ||
|
|
d5591e3cbf | ||
|
|
b8c66a650e | ||
|
|
a3839a69a2 | ||
|
|
0074e1ab58 | ||
|
|
22b90515ec | ||
|
|
d8c2e61e43 | ||
|
|
38f1f77c70 | ||
|
|
16e1890130 | ||
|
|
7deaf2db94 | ||
|
|
8179a02221 | ||
|
|
5f2fd17f62 | ||
|
|
1fc8d3dcb5 | ||
|
|
0bbbdabea4 | ||
|
|
f357e61773 | ||
|
|
1f32b88f68 | ||
|
|
791046c6bf | ||
|
|
ccc26d0ad0 | ||
|
|
6745e086d3 | ||
|
|
21fca23b1d | ||
|
|
0af854e355 | ||
|
|
81fe80c509 | ||
|
|
ff00f13c8f | ||
|
|
4932cd5f7e | ||
|
|
4a30325361 | ||
|
|
ca835cb92d | ||
|
|
cfbafcc31f | ||
|
|
0d58e1ce05 | ||
|
|
d81f8e539d | ||
|
|
571e436f2f | ||
|
|
438b7d2eb0 | ||
|
|
21b194999f | ||
|
|
8de7d4dd94 | ||
|
|
b19ac8c38c | ||
|
|
834c0dc1dd | ||
|
|
88e3dd1d5d | ||
|
|
fc2786cd35 | ||
|
|
1a630cef85 | ||
|
|
3a23318ed8 | ||
|
|
e610c7ed06 | ||
|
|
4d6b05954d | ||
|
|
af68f7c8a5 | ||
|
|
336c3bce3f | ||
|
|
ac5156d81f | ||
|
|
2be336da69 | ||
|
|
3b422177f5 | ||
|
|
6e435f6be8 | ||
|
|
5fe445c0da | ||
|
|
40e014d487 | ||
|
|
0f036f4f6e | ||
|
|
f710eaa2a4 | ||
|
|
edf07d40b3 | ||
|
|
7e2f7e0296 | ||
|
|
c63090fee7 | ||
|
|
82ac5b3ea2 | ||
|
|
2e925dfa40 | ||
|
|
b3d3a7176f | ||
|
|
f12d6d3a8e | ||
|
|
8725024f29 | ||
|
|
0003b64b93 | ||
|
|
49ecc3f00a | ||
|
|
7a15aababa | ||
|
|
7c30968ed1 | ||
|
|
a21e896dbe | ||
|
|
36a69fdfe3 | ||
|
|
583c4b3270 | ||
|
|
381c6fbecf | ||
|
|
e6255edc26 | ||
|
|
a954c3e338 | ||
|
|
4ed8630c3f | ||
|
|
8a3b0d3eda | ||
|
|
b58ea39b87 | ||
|
|
3b3274e15e | ||
|
|
26e3f864cc | ||
|
|
a860e7b70e | ||
|
|
0ae86c8d12 | ||
|
|
5c4b15965b | ||
|
|
b7fb3d5136 | ||
|
|
0960243a43 | ||
|
|
e2d38e788b | ||
|
|
e39a7a5dbc | ||
|
|
0bb5efe027 | ||
|
|
d41ce132f3 | ||
|
|
4c0972ef26 | ||
|
|
00881030a3 | ||
|
|
9c24707a90 | ||
|
|
ba941876ed | ||
|
|
672cd7e263 | ||
|
|
595582b1d0 | ||
|
|
bd25b293b4 | ||
|
|
8ac72c7435 | ||
|
|
9fbd0b33d3 | ||
|
|
c1affb4e43 | ||
|
|
f5ae12fb4d | ||
|
|
b9a2c81bfe | ||
|
|
7c756a35b3 | ||
|
|
1246eaee17 | ||
|
|
377d240415 | ||
|
|
ed9b2fcabc | ||
|
|
dd8d243fda | ||
|
|
a8d4067af2 | ||
|
|
9c582ba76d | ||
|
|
28fe94b6a1 | ||
|
|
5d7381e156 | ||
|
|
a9469b0410 | ||
|
|
c929bf5964 | ||
|
|
cd5df0bd68 | ||
|
|
c95ecef559 | ||
|
|
ffce43a808 | ||
|
|
1f232edc2f | ||
|
|
7b4d21e353 | ||
|
|
4604f14ca6 | ||
|
|
66030b6c9e | ||
|
|
b6a3d871b1 | ||
|
|
2b73f8e678 | ||
|
|
a9c6069478 | ||
|
|
fb515cdf2d | ||
|
|
daa71f89f2 | ||
|
|
7b5e9faa83 | ||
|
|
5652a01f59 | ||
|
|
d4cc80f18d | ||
|
|
7d09790261 | ||
|
|
8f95698dfd | ||
|
|
1253086c8b | ||
|
|
455831d00e | ||
|
|
118d5aee35 | ||
|
|
b0db2c604a | ||
|
|
f626e4e85f | ||
|
|
af4db51885 | ||
|
|
2ccd961f97 | ||
|
|
1578615cf5 | ||
|
|
1a5e41c917 | ||
|
|
b51468f556 | ||
|
|
9f87233a61 | ||
|
|
aa33a71c62 | ||
|
|
78f14f525f | ||
|
|
83d55d4f23 | ||
|
|
44ca0a7aff | ||
|
|
165272d0e1 | ||
|
|
c93d94e2a5 | ||
|
|
c389d40148 | ||
|
|
9fc2382d23 | ||
|
|
6d7dc74cab | ||
|
|
61f907c347 | ||
|
|
385efad2a4 | ||
|
|
a1661e35e4 | ||
|
|
de3597394c | ||
|
|
dd0679db44 | ||
|
|
7878d81e33 | ||
|
|
1a9d42d49c | ||
|
|
80590f4118 | ||
|
|
ab3642d8fb | ||
|
|
6e62ccc62f | ||
|
|
23fe2c7f47 | ||
|
|
efcd392bb8 | ||
|
|
1751358fe4 | ||
|
|
1f7a3b156d | ||
|
|
eb43a9378a | ||
|
|
ac1ad4e904 | ||
|
|
770cc4c1ff | ||
|
|
4e90457cd6 | ||
|
|
9c8e7e5ab6 | ||
|
|
83b42a024a | ||
|
|
3362a6b06d | ||
|
|
cc03c92614 | ||
|
|
926defb22c | ||
|
|
751dfd561e | ||
|
|
b9d02e16cc | ||
|
|
73823bbe35 | ||
|
|
fe0acbe6e6 | ||
|
|
dabc704ba6 | ||
|
|
c33a72a4d7 | ||
|
|
7cdb8a230f | ||
|
|
3557c7efa9 | ||
|
|
30a47b174c | ||
|
|
514c4ca72b | ||
|
|
9b365c97b8 | ||
|
|
79d933c2e7 | ||
|
|
70bbb36d22 | ||
|
|
0512428c53 | ||
|
|
23acc5ad7c | ||
|
|
f2d33716f6 | ||
|
|
27ceadeaf6 | ||
|
|
dea330b52d | ||
|
|
924204ac29 | ||
|
|
013d8c6c91 | ||
|
|
ec1658b95a | ||
|
|
55fb75dadd | ||
|
|
8075cb8dba | ||
|
|
55a4b23217 | ||
|
|
b31e85f00a | ||
|
|
cd43d46006 | ||
|
|
2944e19391 | ||
|
|
ef5f825667 | ||
|
|
45cff5ad90 | ||
|
|
263626b2fd | ||
|
|
e351f7bcd5 | ||
|
|
f722602402 | ||
|
|
ac17198af6 | ||
|
|
0d4df1e762 | ||
|
|
c34f3c07fd | ||
|
|
cfd64ff70a | ||
|
|
481e3108a1 | ||
|
|
8682fe81af | ||
|
|
1d5af9200a | ||
|
|
b70418100e | ||
|
|
96464b9130 | ||
|
|
63924e2f94 | ||
|
|
b8010a63c2 | ||
|
|
0189c5cb0c | ||
|
|
e0861b922f | ||
|
|
790377c0bc | ||
|
|
c992ac8955 | ||
|
|
1285e79c50 | ||
|
|
1d8b31b06c | ||
|
|
7fb6fc7e62 | ||
|
|
9e1c0a0a29 | ||
|
|
7ce6b2ce54 | ||
|
|
e70357c63b | ||
|
|
3ac25e9581 | ||
|
|
2629119365 | ||
|
|
2a9f9960f0 | ||
|
|
17cf416489 | ||
|
|
b188c89f74 | ||
|
|
8e0b1eb606 | ||
|
|
1f8486611c | ||
|
|
4dd00f5370 | ||
|
|
2d97709644 | ||
|
|
2ebb814b67 | ||
|
|
b1b1504111 | ||
|
|
c041ce5f41 | ||
|
|
ff5fd02913 | ||
|
|
82d477f4df | ||
|
|
8aa82857f0 | ||
|
|
4aea1c00c8 | ||
|
|
225b839e71 | ||
|
|
f07206b6c0 | ||
|
|
9ccede6c90 | ||
|
|
9c9e5de7c8 | ||
|
|
f436a1da0b | ||
|
|
2d848e5512 | ||
|
|
1c6a40acbe | ||
|
|
a51d9d2398 | ||
|
|
83259d9ddc | ||
|
|
5e7d50a312 | ||
|
|
86e10756f9 | ||
|
|
d74fa57b6c | ||
|
|
c6b8f88f18 | ||
|
|
8d5c3b1246 | ||
|
|
01d168afb7 | ||
|
|
b8561b40d1 | ||
|
|
73c1868384 | ||
|
|
a9c827d811 | ||
|
|
01861c26b9 | ||
|
|
273e82a566 | ||
|
|
677e5a7cb9 | ||
|
|
f2e5ce6bf5 | ||
|
|
3a6b0f5853 | ||
|
|
6fd796d5bf | ||
|
|
6cf4174b22 | ||
|
|
21f6e25242 | ||
|
|
1487a1fd72 | ||
|
|
98e9dc2e47 | ||
|
|
2931aad17e | ||
|
|
c8e1749d5a | ||
|
|
ad61c9312a | ||
|
|
a49e11c7b8 | ||
|
|
e8d4ef4115 | ||
|
|
ee52d31f18 | ||
|
|
e54ff79f42 | ||
|
|
cafd255b0c | ||
|
|
e98fc8feb9 | ||
|
|
51034c05f9 | ||
|
|
765a576bae | ||
|
|
ab546b123f | ||
|
|
18ddceb65f | ||
|
|
03c6352505 | ||
|
|
fd970ed5a9 | ||
|
|
1fb37db6f6 | ||
|
|
4edb50855f | ||
|
|
478245a138 | ||
|
|
f4ae5136c8 | ||
|
|
aee08051c8 | ||
|
|
d7b7149425 | ||
|
|
e2fea4b17a | ||
|
|
980b50dd8d | ||
|
|
90a45830a1 | ||
|
|
905ee464eb | ||
|
|
515fc47422 | ||
|
|
110ff324da | ||
|
|
6b4ec088cf | ||
|
|
b362abdd43 | ||
|
|
e0f1a334e2 | ||
|
|
e3953f684b | ||
|
|
275040b2cb | ||
|
|
b1e99a9811 | ||
|
|
feeaf19e6d | ||
|
|
b0d218c1c6 | ||
|
|
54439b6fcd | ||
|
|
4b9ebb0e6a | ||
|
|
aab6d0085d | ||
|
|
7f64095048 | ||
|
|
73e5f5dcb3 | ||
|
|
90bc3d74e7 | ||
|
|
997e548a58 | ||
|
|
2d8a187e5d | ||
|
|
7c917ef07c | ||
|
|
9019e10971 | ||
|
|
cbd600ec8c | ||
|
|
5ee1d43db0 | ||
|
|
df40738195 | ||
|
|
9c4aa4aea7 | ||
|
|
3c174ef95c | ||
|
|
0722a11e25 | ||
|
|
4a13db91e7 | ||
|
|
e1732a675e | ||
|
|
dec921a29f | ||
|
|
5ae7f53ef4 | ||
|
|
c337f5943b | ||
|
|
a9a0aaec41 | ||
|
|
c339254a6b | ||
|
|
2c2f085b5c | ||
|
|
ccafcd6f91 | ||
|
|
c407609695 | ||
|
|
7c710a91d7 | ||
|
|
0804ebe08a | ||
|
|
c4ca358e25 | ||
|
|
cda2717155 | ||
|
|
300928b2c8 | ||
|
|
6d564c0e43 | ||
|
|
447f9f1ea6 | ||
|
|
d4ee3a2122 | ||
|
|
fcd4150696 | ||
|
|
b016944824 | ||
|
|
66e420bc9d | ||
|
|
b9230e00c0 | ||
|
|
7572a8966d | ||
|
|
44a3d9d544 | ||
|
|
21a2e051bf | ||
|
|
733cbff07a | ||
|
|
e545d224db | ||
|
|
a9c07569fb | ||
|
|
7f6faf309d | ||
|
|
74fee3403d | ||
|
|
a6627d7612 | ||
|
|
2fc3101388 | ||
|
|
1da6ead1e9 | ||
|
|
2427553211 | ||
|
|
a89bfc09cb | ||
|
|
05d0edd994 | ||
|
|
bb27ff9707 | ||
|
|
ddbe0427b7 | ||
|
|
85076f856b | ||
|
|
4a66837536 | ||
|
|
aac2ff7b5b | ||
|
|
0bb025a733 | ||
|
|
3ac1e54b29 | ||
|
|
c74080f689 | ||
|
|
69b3235b3f | ||
|
|
cc0a0e7492 | ||
|
|
f05353705e | ||
|
|
4155233ad6 | ||
|
|
e4c023b3c4 | ||
|
|
cebc46c42a | ||
|
|
d5db70b887 | ||
|
|
4dac3ac7d1 | ||
|
|
f27f265271 | ||
|
|
c083499a35 | ||
|
|
f77be4a072 | ||
|
|
d4469f34e0 | ||
|
|
654d3eda8a | ||
|
|
6d66e46cef | ||
|
|
5671ef55ff | ||
|
|
80d269f24d | ||
|
|
0957ad7dab | ||
|
|
f667d5a5a6 | ||
|
|
34ef499da4 | ||
|
|
92542ac528 | ||
|
|
9153a938ed | ||
|
|
2823b9d0d6 | ||
|
|
0f69530cb4 | ||
|
|
aa0e5c57a0 | ||
|
|
1ae767d8a6 | ||
|
|
7cbe50d926 | ||
|
|
6bcc159d8a | ||
|
|
2ab75ef240 | ||
|
|
aca71e1573 | ||
|
|
8dbd59a71b | ||
|
|
1ac9179323 | ||
|
|
f852e32393 | ||
|
|
3313e34797 | ||
|
|
20805044b6 | ||
|
|
8fb9ca9488 | ||
|
|
025e478945 | ||
|
|
ab700b1601 | ||
|
|
2bdf8b7d07 | ||
|
|
dc0e28d9c5 | ||
|
|
598ce78b06 | ||
|
|
929dbe94e7 | ||
|
|
117548cc31 | ||
|
|
963beef90f | ||
|
|
0ad2e968e8 | ||
|
|
d194130ee1 | ||
|
|
ea4c964ed8 | ||
|
|
9666a96d8c | ||
|
|
170c44317b | ||
|
|
403d8cc38a | ||
|
|
f786f30c26 | ||
|
|
b13b1a7666 | ||
|
|
9c47f00a81 | ||
|
|
50e4e9fa2f | ||
|
|
7506fd006e | ||
|
|
c1944d9224 | ||
|
|
4f0c24aedc | ||
|
|
a23e79f081 | ||
|
|
27e96b88b3 | ||
|
|
12743f30e4 | ||
|
|
1390c34a23 | ||
|
|
1ddf739183 | ||
|
|
f33cc75ead | ||
|
|
bbc3c061c0 | ||
|
|
92a2c2a2e0 | ||
|
|
04241d4f83 | ||
|
|
5cec27525e | ||
|
|
e33ae1afef | ||
|
|
9cbeff83a4 | ||
|
|
53ee283828 | ||
|
|
6ad20950a7 | ||
|
|
35d52b0fb2 | ||
|
|
a0b3a9b0da | ||
|
|
0707ff5130 | ||
|
|
b34d7ec086 | ||
|
|
3c0ecfc916 | ||
|
|
ec337a8847 | ||
|
|
48ae4d4a10 | ||
|
|
394bde1da1 | ||
|
|
9a66d14c80 | ||
|
|
556959e824 | ||
|
|
dea09e6e36 | ||
|
|
3abad41f87 | ||
|
|
4252d54268 | ||
|
|
040f67e393 | ||
|
|
c2f5830cd5 | ||
|
|
0e7770dc71 | ||
|
|
2c073b37c0 | ||
|
|
944c47c876 | ||
|
|
e85e15b4fd | ||
|
|
15681e8bd5 | ||
|
|
ec669eef2a | ||
|
|
990462fb9a | ||
|
|
30e262fd2d | ||
|
|
c064540d4b | ||
|
|
18109e8ba5 | ||
|
|
364cd0042c | ||
|
|
1b59bcfadb | ||
|
|
347bf3e4d6 | ||
|
|
ba09a8ee84 | ||
|
|
267871e805 | ||
|
|
5024aee975 | ||
|
|
c7edb6af2f | ||
|
|
eb14f15a5c | ||
|
|
06991a4e85 | ||
|
|
3af041a5b2 | ||
|
|
567b60765e | ||
|
|
a19aaf8aa7 | ||
|
|
49a6995fa1 | ||
|
|
da56360404 | ||
|
|
9bd8fe4e46 | ||
|
|
13767a614d | ||
|
|
43227d215f | ||
|
|
944cc36b9c | ||
|
|
b3a2257638 | ||
|
|
5599b72603 | ||
|
|
08c868e041 | ||
|
|
6b25d7d69c | ||
|
|
7e4c46c838 | ||
|
|
a15eb33719 | ||
|
|
2a91c86d12 | ||
|
|
bd999c21a2 | ||
|
|
91e88af806 | ||
|
|
1d61cd75f2 | ||
|
|
e95235b977 | ||
|
|
f54e684e98 | ||
|
|
d03af36d95 | ||
|
|
285e697e6c | ||
|
|
8bf946dab0 | ||
|
|
e06e53a2b2 | ||
|
|
635e010cd6 | ||
|
|
4c05d48117 | ||
|
|
1a3397071f | ||
|
|
539761c90e | ||
|
|
829054a653 | ||
|
|
fe8c21c2d4 | ||
|
|
2bd0ab34b4 | ||
|
|
16e7c54947 | ||
|
|
96708d985b | ||
|
|
da4b339641 | ||
|
|
9e4eb43dbc | ||
|
|
73a67e0ab2 | ||
|
|
a8173ff888 | ||
|
|
d0aa0df4f6 | ||
|
|
618e455ca3 | ||
|
|
86b0457d34 | ||
|
|
e7228fc213 | ||
|
|
1dbe6e579a | ||
|
|
26a020fae6 | ||
|
|
aa376fe333 | ||
|
|
9cef7814d1 | ||
|
|
99ac7bcfa9 | ||
|
|
f4c0cfa4e3 | ||
|
|
5a39714ce3 | ||
|
|
8766b34dac | ||
|
|
101f1f271f | ||
|
|
3298062561 | ||
|
|
982850b160 | ||
|
|
969f0315df | ||
|
|
866effcad2 | ||
|
|
3dbf9ad759 | ||
|
|
48ddff1b2c | ||
|
|
a06c0b444c | ||
|
|
20d2bda9ae | ||
|
|
8cfc3d1306 | ||
|
|
af615ec603 | ||
|
|
1d00912fed | ||
|
|
9f8b3c863e | ||
|
|
ead55c3457 | ||
|
|
f1d341238d | ||
|
|
53683a6a3a | ||
|
|
22de4342ad | ||
|
|
ecf73afe86 | ||
|
|
86f5db7aa9 | ||
|
|
eab3227ea0 | ||
|
|
59f20d914b | ||
|
|
1a4226ff64 | ||
|
|
b954bc7386 | ||
|
|
a486c64387 | ||
|
|
c1affcc070 | ||
|
|
30be3f9c49 | ||
|
|
80999ed6fd | ||
|
|
c5c656a1ba | ||
|
|
1e386099ff | ||
|
|
3b8df77a86 | ||
|
|
edd2f599cc | ||
|
|
b0925c7e5f | ||
|
|
a132cabd4c | ||
|
|
db1552e27d | ||
|
|
30b4796385 | ||
|
|
293b2b17d1 | ||
|
|
1692430ed4 | ||
|
|
17c48207c4 | ||
|
|
1477d95ada | ||
|
|
4d7c836e37 | ||
|
|
22c7da02e3 | ||
|
|
de4bb424a6 | ||
|
|
00101c0e9c | ||
|
|
6363022c6b | ||
|
|
24d2e83be1 | ||
|
|
7c3168e95a | ||
|
|
c67e5f70c0 | ||
|
|
705e7a602b | ||
|
|
e9b50374d6 | ||
|
|
af758b0bff | ||
|
|
b04c7c3fbd | ||
|
|
b402bf6b19 | ||
|
|
7eeef6b77a | ||
|
|
37afaf6bf8 | ||
|
|
24652ec722 | ||
|
|
f16c550016 | ||
|
|
cff91b03d2 | ||
|
|
0c044c8349 | ||
|
|
5e38c5ab38 | ||
|
|
883933c73c | ||
|
|
2635c20b53 | ||
|
|
6bc70788ba | ||
|
|
bcbc940cb6 | ||
|
|
e8cb259d05 | ||
|
|
eba8736515 | ||
|
|
b748bf1fc0 | ||
|
|
c0ad262944 | ||
|
|
5029b95078 | ||
|
|
9793eb17df | ||
|
|
18089bbdb7 | ||
|
|
602b9c26ae | ||
|
|
e8a17bd1e3 | ||
|
|
6ff0a3c2d8 | ||
|
|
95ae04c26f | ||
|
|
50da1f64a0 | ||
|
|
c3106986f4 | ||
|
|
a75572db5c | ||
|
|
8581d9a7b3 | ||
|
|
179af48c51 | ||
|
|
73d7f755c1 | ||
|
|
d929240ed0 | ||
|
|
82098594a6 | ||
|
|
e081e3be33 | ||
|
|
94ec228978 | ||
|
|
9b071a5153 | ||
|
|
5d934fdcb3 | ||
|
|
5a6654890c | ||
|
|
d6e0d9ad34 | ||
|
|
f40649c068 | ||
|
|
499dd4a153 | ||
|
|
be17a2a106 | ||
|
|
bc1de6d6b8 | ||
|
|
9b65140632 | ||
|
|
871672983b | ||
|
|
f9a867b294 | ||
|
|
7d3b88cc16 | ||
|
|
3db8ca05f0 | ||
|
|
6ce78d0961 | ||
|
|
423c52b07c | ||
|
|
974039423a | ||
|
|
3b560cfa4a | ||
|
|
935c326eee | ||
|
|
3fdc9de178 | ||
|
|
7f173724ef | ||
|
|
0860e8886c | ||
|
|
bdddb38878 | ||
|
|
f4c6e2495c | ||
|
|
8c155ab728 | ||
|
|
f9a72ba2ac | ||
|
|
c791ea205e | ||
|
|
31d8bbc75c | ||
|
|
6d791919ea | ||
|
|
af1948b681 | ||
|
|
d34e0b5305 | ||
|
|
5cf504fa90 | ||
|
|
835cb2b244 | ||
|
|
149869ca5b | ||
|
|
f64848921c | ||
|
|
53badefb2d | ||
|
|
dc7ad394ab | ||
|
|
9fe51c656a | ||
|
|
5ea9be671c | ||
|
|
d96d61d161 | ||
|
|
96e38e6584 | ||
|
|
7b8c2c5e9c | ||
|
|
cfba25b857 | ||
|
|
2f8b5b805f | ||
|
|
03e4da4a42 | ||
|
|
3399a6dad5 | ||
|
|
b66fd8daef | ||
|
|
cd938aea5e | ||
|
|
ea47bc4548 | ||
|
|
7ea3c419aa | ||
|
|
33301fa762 | ||
|
|
1f1e41ae7f | ||
|
|
9d32a5218e | ||
|
|
c4633cfe76 | ||
|
|
d66811e473 | ||
|
|
14dd86d75d | ||
|
|
c3fa113305 | ||
|
|
7002897dab | ||
|
|
cc132ba9e5 | ||
|
|
5157ae2bd6 | ||
|
|
7f7923c24f | ||
|
|
d8eebcafda | ||
|
|
03165e5cae | ||
|
|
ab8b4feca0 | ||
|
|
6b0f6f4b3a | ||
|
|
e4662d0e5c | ||
|
|
3e0df45f30 | ||
|
|
724cb85c9a | ||
|
|
5841cee655 | ||
|
|
5cf613a269 | ||
|
|
dff2bd9d7c | ||
|
|
15924c3a14 | ||
|
|
256b1b705e | ||
|
|
d83dcb98f3 | ||
|
|
789293c78a | ||
|
|
6a18353eb0 | ||
|
|
0187d1fcfc | ||
|
|
2aa30381c6 | ||
|
|
3844c65e89 | ||
|
|
8f3b65976a | ||
|
|
453c0bff06 | ||
|
|
af321bab80 | ||
|
|
fb32860001 | ||
|
|
4fa7e0f610 | ||
|
|
fe9ca39253 | ||
|
|
5f7424bfed | ||
|
|
0ea94b2a5f | ||
|
|
795ee53c88 | ||
|
|
4d0aad7d48 | ||
|
|
7a076eead2 | ||
|
|
4d74dc6380 | ||
|
|
fa12e7ddeb | ||
|
|
5beab40b92 | ||
|
|
04ce65c613 | ||
|
|
c9cef40a2b | ||
|
|
d4f9fd424f | ||
|
|
0277aff89d | ||
|
|
9195f9be36 | ||
|
|
6c86ad3eae | ||
|
|
348b562e95 | ||
|
|
c9073e95c7 | ||
|
|
dd80eab17c | ||
|
|
4c14b35602 | ||
|
|
449109d0ba | ||
|
|
87cb738eb5 | ||
|
|
689ca56d8f | ||
|
|
4d22a52afb | ||
|
|
ee5e558812 | ||
|
|
5aa5f88997 | ||
|
|
54b359ab8a | ||
|
|
bb294eef95 | ||
|
|
6339eaf879 | ||
|
|
7f9b477401 | ||
|
|
4ef0c91006 | ||
|
|
5b6eb72f4a | ||
|
|
30b1827317 | ||
|
|
1df5ea8456 | ||
|
|
dbd5912658 | ||
|
|
f369730adc | ||
|
|
b4914420fa | ||
|
|
91dd2e87ee | ||
|
|
e59f2447e7 | ||
|
|
de8c7f3c6e | ||
|
|
487633c117 | ||
|
|
2bd22cc7c6 | ||
|
|
080585aca1 | ||
|
|
fd36861c17 | ||
|
|
66c8f356e9 | ||
|
|
79acce8711 | ||
|
|
d365595685 | ||
|
|
42c0e26b3b | ||
|
|
beea58cae6 | ||
|
|
c7edba6b80 | ||
|
|
6bd29ed4d6 | ||
|
|
66ceb9911d | ||
|
|
03bd45a505 | ||
|
|
5940007f00 | ||
|
|
d9c56d586b | ||
|
|
144846eef5 | ||
|
|
65fabdaf38 | ||
|
|
e8b2664921 | ||
|
|
5f4ff4d472 | ||
|
|
478ac4a1b4 | ||
|
|
a0dc36b613 | ||
|
|
1f6a9d54e8 | ||
|
|
f1cef8ec80 | ||
|
|
d8a07f6fd6 | ||
|
|
24fcc2803f | ||
|
|
43b05c56b6 | ||
|
|
462090421f | ||
|
|
890f5e1c7b | ||
|
|
acb3e1d397 | ||
|
|
f0a0aeb3a4 | ||
|
|
df88659105 | ||
|
|
28545de94f | ||
|
|
4409b188ab | ||
|
|
92f12873d0 | ||
|
|
fd4d0b4b11 | ||
|
|
a94f99a8a5 | ||
|
|
c3bdf64b86 | ||
|
|
3867da9ace | ||
|
|
d1aa8aa235 | ||
|
|
013e8fd8c9 | ||
|
|
755bde63b5 | ||
|
|
2950084ac9 | ||
|
|
241a919da1 | ||
|
|
1832675c96 | ||
|
|
8a79e957c6 | ||
|
|
1dd83c65aa | ||
|
|
12781d7ccd | ||
|
|
1e6b70a09a | ||
|
|
daf901dfed | ||
|
|
4a696a6dba | ||
|
|
deb758f023 | ||
|
|
034804aa42 | ||
|
|
55567c9e8e | ||
|
|
6cd43995f8 | ||
|
|
8ccb6634c9 | ||
|
|
af61bc7644 | ||
|
|
091b9c4f8c | ||
|
|
5362770117 | ||
|
|
ecb4762a0b | ||
|
|
7c305761ae | ||
|
|
3d5f6b820f | ||
|
|
6e96cd2118 | ||
|
|
94abc07a1f | ||
|
|
d060962bae | ||
|
|
f21b5290f4 | ||
|
|
d5db68430c |
3
.github/changed-lines-count-labeler.yml
vendored
3
.github/changed-lines-count-labeler.yml
vendored
@@ -1,3 +0,0 @@
|
|||||||
# Add this tag for any changes for more than 1 line
|
|
||||||
"Pending analysis of PR (maintenance team)":
|
|
||||||
min: 1
|
|
||||||
13
.github/dependabot.yml
vendored
13
.github/dependabot.yml
vendored
@@ -1,6 +1,19 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "weekly"
|
interval: "weekly"
|
||||||
|
allow:
|
||||||
|
# Allow production updates only (can do a AND, several entries are doing a OR)
|
||||||
|
- dependency-type: "production"
|
||||||
|
#- dependency-type: "direct"
|
||||||
|
exclude-paths:
|
||||||
|
- 'dev'
|
||||||
|
- 'tests/acceptance'
|
||||||
|
- 'tests/selenium'
|
||||||
|
|||||||
8
.github/workflows/README.md
vendored
8
.github/workflows/README.md
vendored
@@ -20,10 +20,10 @@ See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workf
|
|||||||
The other worklows are:
|
The other worklows are:
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
- stale-issues-safe to autoclose old issues.
|
- ci-stale-issues-safe to autoclose old issues.
|
||||||
- phpstan_baseline to update the phpstan baseline file.
|
- ci-phpstan_baseline to update the phpstan baseline file.
|
||||||
- cache-clean-pr to clean cache when closing a PR.
|
- ci-cache-clean-pr to clean cache when closing a PR.
|
||||||
|
- ci-test to make CI tests
|
||||||
|
|
||||||
Some tests workflows are:
|
Some tests workflows are:
|
||||||
------------------------
|
------------------------
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
run: |
|
run: |
|
||||||
gh extension install actions/gh-actions-cache
|
gh extension install actions/gh-actions-cache
|
||||||
18
.github/workflows/ci-on-pull_request.yml
vendored
18
.github/workflows/ci-on-pull_request.yml
vendored
@@ -25,15 +25,15 @@ jobs:
|
|||||||
# uses: ./.github/workflows/windows-ci.yml
|
# uses: ./.github/workflows/windows-ci.yml
|
||||||
# with:
|
# with:
|
||||||
# gh_event: ${{ github.event_name }}
|
# gh_event: ${{ github.event_name }}
|
||||||
gh-travis: # Runs travis script on github runner (not on travis)
|
#gh-travis: # Runs travis script on github runner (not on travis)
|
||||||
if: false
|
# if: false
|
||||||
# needs: [pre-commit, phan]
|
# # needs: [pre-commit, phan]
|
||||||
# needs: [windows-ci]
|
# # needs: [windows-ci]
|
||||||
secrets: inherit
|
# secrets: inherit
|
||||||
needs: [pre-commit, phan, phpstan]
|
# needs: [pre-commit, phan, phpstan]
|
||||||
uses: ./.github/workflows/gh-travis.yml
|
# uses: ./.github/workflows/gh-travis.yml
|
||||||
with:
|
# with:
|
||||||
gh_event: ${{ github.event_name }}
|
# gh_event: ${{ github.event_name }}
|
||||||
|
|
||||||
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
|
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
|
||||||
# To cancel jobs if one fails, the following action may help
|
# To cancel jobs if one fails, the following action may help
|
||||||
|
|||||||
18
.github/workflows/ci-on-push.yml
vendored
18
.github/workflows/ci-on-push.yml
vendored
@@ -25,15 +25,15 @@ jobs:
|
|||||||
uses: ./.github/workflows/windows-ci.yml
|
uses: ./.github/workflows/windows-ci.yml
|
||||||
with:
|
with:
|
||||||
gh_event: ${{ github.event_name }}
|
gh_event: ${{ github.event_name }}
|
||||||
gh-travis: # Runs travis script on github runner (not on travis)
|
# gh-travis: # Runs travis script on github runner (not on travis)
|
||||||
if: false
|
# if: false
|
||||||
# needs: [pre-commit, phan]
|
# # needs: [pre-commit, phan]
|
||||||
# needs: [windows-ci]
|
# # needs: [windows-ci]
|
||||||
secrets: inherit
|
# secrets: inherit
|
||||||
needs: [pre-commit, phan, phpstan]
|
# needs: [pre-commit, phan, phpstan]
|
||||||
uses: ./.github/workflows/gh-travis.yml
|
# uses: ./.github/workflows/gh-travis.yml
|
||||||
with:
|
# with:
|
||||||
gh_event: ${{ github.event_name }}
|
# gh_event: ${{ github.event_name }}
|
||||||
|
|
||||||
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
|
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
|
||||||
# To cancel jobs if one fails, the following action may help
|
# To cancel jobs if one fails, the following action may help
|
||||||
|
|||||||
@@ -33,13 +33,13 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ env.PHP_VERSION }}
|
php-version: ${{ env.PHP_VERSION }}
|
||||||
coverage: none # disable xdebug, pcov
|
coverage: none # disable xdebug, pcov
|
||||||
tools: phpstan:2.1.8, cs2pr
|
tools: phpstan:2.1.12, cs2pr
|
||||||
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
|
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
|
||||||
mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
||||||
env:
|
env:
|
||||||
24
.github/workflows/ci-tag-check.yml.disabled
vendored
Normal file
24
.github/workflows/ci-tag-check.yml.disabled
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
||||||
|
name: "Check tag branch"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "18.*"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Verify tag is on main
|
||||||
|
run: |
|
||||||
|
TAG_COMMIT=$(git rev-list -n 1 $GITHUB_REF)
|
||||||
|
if ! git branch --contains $TAG_COMMIT | grep -q "18.0"; then
|
||||||
|
echo "The tag must be on branch 18.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -27,15 +27,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
# matrix:
|
matrix:
|
||||||
# php-version:
|
php-version:
|
||||||
# # PHPStan requires PHP >= 7.2.
|
# # PHPStan requires PHP >= 7.2.
|
||||||
# #- "7.2"
|
# #- "7.2"
|
||||||
# - "8.2"
|
- "8.2"
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout travis file
|
- name: Checkout travis file
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Run .travis.yml build script
|
- name: Run .travis.yml build script
|
||||||
uses: ktomk/run-travis-yml@v1
|
uses: ktomk/run-travis-yml@v1
|
||||||
with:
|
with:
|
||||||
18
.github/workflows/phan.yml
vendored
18
.github/workflows/phan.yml
vendored
@@ -30,26 +30,14 @@ jobs:
|
|||||||
github.repository == 'Dolibarr/dolibarr'
|
github.repository == 'Dolibarr/dolibarr'
|
||||||
|| github.event.schedule == false
|
|| github.event.schedule == false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: 8.2
|
php-version: 8.2
|
||||||
coverage: none # disable xdebug, pcov
|
coverage: none # disable xdebug, pcov
|
||||||
tools: cs2pr,phan
|
tools: phan
|
||||||
- name: Run Phan analysis
|
- name: Run Phan analysis
|
||||||
run: |
|
run: |
|
||||||
# shellcheck disable=2086
|
# shellcheck disable=2086
|
||||||
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=checkstyle -o _phan.xml
|
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github
|
||||||
- name: Add results to PR
|
|
||||||
if: ${{ always() }}
|
|
||||||
run: |
|
|
||||||
cs2pr --prepend-filename --prepend-source --notices-as-warnings _phan.xml
|
|
||||||
- name: Provide phan log as artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ always() }}
|
|
||||||
with:
|
|
||||||
name: phan-srcrt
|
|
||||||
# path: ${{ github.workspace }}/phan.log
|
|
||||||
path: ${{ github.workspace }}/_phan.xml
|
|
||||||
retention-days: 2
|
|
||||||
|
|||||||
4
.github/workflows/phpstan.yml
vendored
4
.github/workflows/phpstan.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
|||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
# Get PHP and addons
|
# Get PHP and addons
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
id: setup-php
|
id: setup-php
|
||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-version }}
|
php-version: ${{ matrix.php-version }}
|
||||||
coverage: none # disable xdebug, pcov
|
coverage: none # disable xdebug, pcov
|
||||||
tools: phpstan:2.1.8, cs2pr
|
tools: phpstan:2.1.12, cs2pr
|
||||||
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
|
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
|
||||||
mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/pre-commit.yml
vendored
4
.github/workflows/pre-commit.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
|||||||
# if: false
|
# if: false
|
||||||
|
|
||||||
# Checkout git sources to analyze
|
# Checkout git sources to analyze
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
# Try to get the list of modified files into steps.changed-php.outputs.all_changed_files
|
# Try to get the list of modified files into steps.changed-php.outputs.all_changed_files
|
||||||
#- name: Get changed files
|
#- name: Get changed files
|
||||||
@@ -66,7 +66,7 @@ jobs:
|
|||||||
run: |-
|
run: |-
|
||||||
[ -r requirements.txt ] || [ -r pyproject.toml ] || touch requirements.txt
|
[ -r requirements.txt ] || [ -r pyproject.toml ] || touch requirements.txt
|
||||||
# Install python and pre-commit tool
|
# Install python and pre-commit tool
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
cache: pip
|
cache: pip
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
|
|||||||
30
.github/workflows/test.yaml
vendored
30
.github/workflows/test.yaml
vendored
@@ -1,30 +0,0 @@
|
|||||||
name: Test github actions
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
|
||||||
types: [opened, reopened, synchronize]
|
|
||||||
push:
|
|
||||||
|
|
||||||
env:
|
|
||||||
ENVGHT: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
ENVGHU: ${{ github.token }}
|
|
||||||
TEST_ACCESS_KEY: ${{ secrets.TEST_ACCESS_KEY }}
|
|
||||||
TEST_VAR_REPO: ${{ vars.TEST_VAR_REPO }}
|
|
||||||
TEST_VAR_ORGA: ${{ vars.TEST_VAR_ORGA }}
|
|
||||||
ENVLOCAL: "varenvlocal"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
testjob:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Log
|
|
||||||
run: |
|
|
||||||
echo "Run action by ${{ github.actor }}"
|
|
||||||
echo "github.token=${{ github.token }}"
|
|
||||||
echo "secrets.GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
echo "GITHUB_EVENT_PATH=$GITHUB_EVENT_PATH"
|
|
||||||
echo "repo-token: ${{secrets.GITHUB_TOKEN}}"
|
|
||||||
echo "secret repository TEST_ACCESS_KEY: ${{secrets.TEST_ACCESS_KEY}}"
|
|
||||||
echo "variable repository : ${{vars.TEST_VAR_REPO}}"
|
|
||||||
echo "variable organization : ${{vars.TEST_VAR_ORGA}}"
|
|
||||||
echo "ENVLOCAL: ${{env.ENVLOCAL}}"
|
|
||||||
2
.github/workflows/windows-ci.yml
vendored
2
.github/workflows/windows-ci.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -522,6 +522,9 @@ script:
|
|||||||
php upgrade.php 21.0.0 22.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade21002200.log || cat $TRAVIS_BUILD_DIR/upgrade21002200.log
|
php upgrade.php 21.0.0 22.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade21002200.log || cat $TRAVIS_BUILD_DIR/upgrade21002200.log
|
||||||
php upgrade2.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-2.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-2.log
|
php upgrade2.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-2.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-2.log
|
||||||
php step5.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-3.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-3.log
|
php step5.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-3.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-3.log
|
||||||
|
php upgrade.php 22.0.0 23.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade22002300.log || cat $TRAVIS_BUILD_DIR/upgrade22002300.log
|
||||||
|
php upgrade2.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-2.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-2.log
|
||||||
|
php step5.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-3.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-3.log
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
|||||||
30
.tx/config
30
.tx/config
@@ -44,12 +44,6 @@ source_file = htdocs/langs/en_US/blockedlog.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:bookmarks]
|
|
||||||
file_filter = htdocs/langs/<lang>/bookmarks.lang
|
|
||||||
source_file = htdocs/langs/en_US/bookmarks.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:boxes]
|
[o:dolibarr-association:p:dolibarr:r:boxes]
|
||||||
file_filter = htdocs/langs/<lang>/boxes.lang
|
file_filter = htdocs/langs/<lang>/boxes.lang
|
||||||
source_file = htdocs/langs/en_US/boxes.lang
|
source_file = htdocs/langs/en_US/boxes.lang
|
||||||
@@ -104,12 +98,6 @@ source_file = htdocs/langs/en_US/datapolicy.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:deliveries]
|
|
||||||
file_filter = htdocs/langs/<lang>/deliveries.lang
|
|
||||||
source_file = htdocs/langs/en_US/deliveries.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:dict]
|
[o:dolibarr-association:p:dolibarr:r:dict]
|
||||||
file_filter = htdocs/langs/<lang>/dict.lang
|
file_filter = htdocs/langs/<lang>/dict.lang
|
||||||
source_file = htdocs/langs/en_US/dict.lang
|
source_file = htdocs/langs/en_US/dict.lang
|
||||||
@@ -146,12 +134,6 @@ source_file = htdocs/langs/en_US/exports.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:help]
|
|
||||||
file_filter = htdocs/langs/<lang>/help.lang
|
|
||||||
source_file = htdocs/langs/en_US/help.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:holiday]
|
[o:dolibarr-association:p:dolibarr:r:holiday]
|
||||||
file_filter = htdocs/langs/<lang>/holiday.lang
|
file_filter = htdocs/langs/<lang>/holiday.lang
|
||||||
source_file = htdocs/langs/en_US/holiday.lang
|
source_file = htdocs/langs/en_US/holiday.lang
|
||||||
@@ -284,12 +266,6 @@ source_file = htdocs/langs/en_US/partnership.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:paybox]
|
|
||||||
file_filter = htdocs/langs/<lang>/paybox.lang
|
|
||||||
source_file = htdocs/langs/en_US/paybox.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:paypal]
|
[o:dolibarr-association:p:dolibarr:r:paypal]
|
||||||
file_filter = htdocs/langs/<lang>/paypal.lang
|
file_filter = htdocs/langs/<lang>/paypal.lang
|
||||||
source_file = htdocs/langs/en_US/paypal.lang
|
source_file = htdocs/langs/en_US/paypal.lang
|
||||||
@@ -380,6 +356,12 @@ source_file = htdocs/langs/en_US/stripe.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[o:dolibarr-association:p:dolibarr:r:subtotals]
|
||||||
|
file_filter = htdocs/langs/<lang>/subtotals.lang
|
||||||
|
source_file = htdocs/langs/en_US/subtotals.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:supplier_proposal]
|
[o:dolibarr-association:p:dolibarr:r:supplier_proposal]
|
||||||
file_filter = htdocs/langs/<lang>/supplier_proposal.lang
|
file_filter = htdocs/langs/<lang>/supplier_proposal.lang
|
||||||
source_file = htdocs/langs/en_US/supplier_proposal.lang
|
source_file = htdocs/langs/en_US/supplier_proposal.lang
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ TCPDI 1.1.0 LGPL-3+ / Apache 2.0 Yes
|
|||||||
bacon, dasprid, swiss-qr-bill, kmukku, symfony/validator
|
bacon, dasprid, swiss-qr-bill, kmukku, symfony/validator
|
||||||
|
|
||||||
JS libraries:
|
JS libraries:
|
||||||
Ace 1.4.14 BSD Yes JS library to get code syntaxique coloration in a textarea.
|
Ace 1.43.12 BSD Yes JS library to get code syntaxique coloration in a textarea (Must take src dir into https://github.com/ajaxorg/ace-builds/).
|
||||||
ChartJS 3.7.1 MIT License Yes JS library for graph
|
ChartJS 3.7.1 MIT License Yes JS library for graph
|
||||||
CKEditor 4.22.1 LGPL-2.1+ Yes Editor WYSIWYG
|
CKEditor 4.22.1 LGPL-2.1+ Yes Editor WYSIWYG
|
||||||
jQuery 3.6.4 MIT License Yes JS library
|
jQuery 3.6.4 MIT License Yes JS library
|
||||||
|
|||||||
164
ChangeLog
164
ChangeLog
@@ -2,6 +2,99 @@
|
|||||||
English Dolibarr ChangeLog
|
English Dolibarr ChangeLog
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
***** ChangeLog for 23.0.0 compared to 22.0 *****
|
||||||
|
|
||||||
|
For users:
|
||||||
|
----------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
For developers:
|
||||||
|
---------------
|
||||||
|
* Introducing the TRIGGER_PREFIX property to force developers to use unique triggerkey per business object, limit also code to business CRUD events and identity when it is not.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
--------
|
||||||
|
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
|
* The deprecated column egroupware_id has been dropped.
|
||||||
|
* The property $sumpayed (duplicated of $totalpaid), $sumdeposit (duplicate of $totaldeposits) and $sumcreditnote (duplicate of $totalcreditnotes) has
|
||||||
|
been removed (there are replaced with the property that was a duplication of (same for $sumpayed_multicurrency, $sumdeposit_multicurrency, $sumcreditnote_multicurrency).
|
||||||
|
* Parameters $maxlen and $notooltip of Contract have been inverted to follow the standard. It was breaking the common use of getNomUrl() but if you were using the parameter
|
||||||
|
maxlen (rare) by using the old signature, result may be a tooltip that is no more visible on ref printed by you module.
|
||||||
|
* Removed array $MAP_ID_TO_CODE that was a duplicate of array "array_flip($categ->MAP_ID)"
|
||||||
|
* The signature of the Sale order ->cancel() method and shipment ->cancel() has been modified to introduce the $user param like for other methods that modify a status.
|
||||||
|
* Adding new document templates must be done by adding files into the mymodule/core/modules/xxx/doc directory. Adding files into custom directory with the
|
||||||
|
same path than the core path without using a mymodule directory is now forbidden.
|
||||||
|
* The directory theme/common/octicons has been removed
|
||||||
|
* The library timepicker.js has been removed. Was not used by Dolibarr.
|
||||||
|
* Because of new TRIGGER_PREFIX property triggers SUPPLIER_PRODUCT_BUYPRICE_XXX are renamed to PRODUCT_BUYPRICE_XXX.
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 22.0.2 compared to 22.0.1 *****
|
||||||
|
|
||||||
|
FIX: ContratLigne::fetch() returns 1 even if the line doesn't exist (#35324)
|
||||||
|
FIX: #34678
|
||||||
|
FIX: #35142 FIX: #35143
|
||||||
|
FIX: #35154 - Massaction createbills in reception list don't mind about order and/or thirdparty currency (#35156)
|
||||||
|
FIX: #35181 Cancelled purchase orders now shown as such in Project Overview (#35186)
|
||||||
|
FIX: #35407 After updating to version 22, local taxes were no longer applied (#35408)
|
||||||
|
FIX: #35425 (#35426)
|
||||||
|
FIX: accountancy general ledger: bad handling of hook return (#34029)
|
||||||
|
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
|
||||||
|
FIX: allow to create First Situation Invoice (#35228)
|
||||||
|
FIX: api orders : forward database error on failure (backport commit d9e81cb) (#35478)
|
||||||
|
FIX: Can't edit tags of a user.
|
||||||
|
FIX: can't reset intracomm transport mode
|
||||||
|
FIX: can't save setup of odt template for stock
|
||||||
|
FIX: check commande liste validate (#35479)
|
||||||
|
FIX: color of late warning for nb of bank account reconciliation lines
|
||||||
|
FIX: Correct the calculation of the amount of the current period between the period provided (#35083)
|
||||||
|
FIX: Date planned of delivery is not propagated from order to shipment
|
||||||
|
FIX: Edit of email in emailing. Property messtype not set.
|
||||||
|
FIX: extra field list depend on parent list when editing a card (#35165)
|
||||||
|
FIX: fallback of "from" email when sending email in member module
|
||||||
|
FIX: missing token to disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084)
|
||||||
|
FIX: Generation of member cards (file not found and substitution broken)
|
||||||
|
FIX: invoice not set to closed when we add a credit note to close it
|
||||||
|
FIX: missing check constant PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS (#33277)
|
||||||
|
FIX: missing entity filter (#35461)
|
||||||
|
FIX: missing quick edit for extrafields (backport commit 4fc66c6) (#35160)
|
||||||
|
FIX: Missing sentence part (#35144)
|
||||||
|
FIX: Remove perms to access commerce tab when the only active permission is fournisseur:lire (#35467)
|
||||||
|
FIX: Restore decimal quantity for stock correction/transfer
|
||||||
|
FIX: save the packaging qty on update buying price (#35234)
|
||||||
|
FIX: set global mysoc and load langs in API access (#35041)
|
||||||
|
FIX: Societe - Problem of date on outstanding opened late (#35266)
|
||||||
|
FIX: vat detection when country of buyer is unknown.
|
||||||
|
FIX: wrong extrafield template in create mode (#35241) (#35470)
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 22.0.1 compared to 22.0.0 *****
|
||||||
|
|
||||||
|
FIX: #34843 (#34875)
|
||||||
|
FIX: #34936
|
||||||
|
FIX: a Fatal error when a trigger files is not correctly named.
|
||||||
|
FIX: array for arrayofkeyval is lost in module builder edit of property
|
||||||
|
FIX: asset: could not select invoice in disposal pop-in (#34725)
|
||||||
|
FIX: avoid php warning with "$forceFullTextIndexation" (#34881)
|
||||||
|
FIX: bad consistency on test on permission to disable service
|
||||||
|
FIX: Can edit status of tasks
|
||||||
|
FIX: Create public ticket if email need exist. (#34965)
|
||||||
|
FIX: DA026536: missing <br> in automatic e-mail (#34895)
|
||||||
|
FIX: extrafields of type "int" not displayed on `projet/tasks.php` (#34896)
|
||||||
|
FIX: Filter on the balance of leave
|
||||||
|
FIX: Logo on company is no more visible.
|
||||||
|
FIX: mailing destination list title (#34929)
|
||||||
|
FIX: main checkbox left column was before global conf (#34858)
|
||||||
|
FIX: Missing a column on group permissions
|
||||||
|
FIX: several minor troubles with modulebuilder
|
||||||
|
FIX: Test on mandatory product or thirdparty barcode
|
||||||
|
FIX: trigger mailmanspip when un/linking categories
|
||||||
|
FIX: Security when using Advanced Target page of emailing (feature hidden in v21, default in v22+). Possible
|
||||||
|
SQL injection by users with permission to make and send mass emailing.
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 22.0.0 compared to 21.0 *****
|
***** ChangeLog for 22.0.0 compared to 21.0 *****
|
||||||
|
|
||||||
@@ -14,7 +107,6 @@ NEW: ticket : display files linked to actioncomm (#32325)
|
|||||||
NEW: Support of monthly or weekly recurring events
|
NEW: Support of monthly or weekly recurring events
|
||||||
NEW: AI feature to autofill extrafields
|
NEW: AI feature to autofill extrafields
|
||||||
NEW: Introduce the view "Kanban Grouped By" opportunity status in projects
|
NEW: Introduce the view "Kanban Grouped By" opportunity status in projects
|
||||||
NEW: #22848
|
|
||||||
NEW: #32706 - Treasury accountancy (#33701)
|
NEW: #32706 - Treasury accountancy (#33701)
|
||||||
NEW: #33506 Add a constant to apply a ratio to resize images in ODT templates (#33543)
|
NEW: #33506 Add a constant to apply a ratio to resize images in ODT templates (#33543)
|
||||||
NEW: Accountancy - Add centralized account (SQL & migration part) (#33384) (#33577)
|
NEW: Accountancy - Add centralized account (SQL & migration part) (#33384) (#33577)
|
||||||
@@ -51,7 +143,7 @@ NEW: Add Shared links on links in attachments (#33459)
|
|||||||
NEW: Add tags / category on supplier invoice (#33490)
|
NEW: Add tags / category on supplier invoice (#33490)
|
||||||
NEW: Add the possibility to merge PDF from the product list (#33723)
|
NEW: Add the possibility to merge PDF from the product list (#33723)
|
||||||
NEW: allow stock management by product (#32326)
|
NEW: allow stock management by product (#32326)
|
||||||
NEW: attendee status Used - to ensure that only one attendee gets in on a ticket (#33987)
|
NEW: attendee status "Showed up" - to ensure that only one attendee gets in on a ticket (#33987)
|
||||||
NEW: auto-detect country from code in creation (follow-up)
|
NEW: auto-detect country from code in creation (follow-up)
|
||||||
NEW: autofix mysqldump command for backup when path is wrong
|
NEW: autofix mysqldump command for backup when path is wrong
|
||||||
NEW: Better presentation of list of user approver.
|
NEW: Better presentation of list of user approver.
|
||||||
@@ -120,7 +212,7 @@ NEW: Add note public and private on order export
|
|||||||
NEW: Finish dev for API_ENABLE_COUNT_CALLS (count of API use is visible on user API key field)
|
NEW: Finish dev for API_ENABLE_COUNT_CALLS (count of API use is visible on user API key field)
|
||||||
|
|
||||||
For developers:
|
For developers:
|
||||||
----------
|
---------------
|
||||||
NEW: Add an API endpoint to get properties of a single line of an order (#34045)
|
NEW: Add an API endpoint to get properties of a single line of an order (#34045)
|
||||||
NEW: add const to not include default CSS in top_htmlhead with DISABLE_CSS_DEFAULT_THEME
|
NEW: add const to not include default CSS in top_htmlhead with DISABLE_CSS_DEFAULT_THEME
|
||||||
NEW: add const to not include default lib_head.js in top_htmlhead with DISABLE_LIB_HEAD_JS
|
NEW: add const to not include default lib_head.js in top_htmlhead with DISABLE_LIB_HEAD_JS
|
||||||
@@ -147,7 +239,6 @@ NEW: expense report API deny
|
|||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
* The use of GETPOST function is not allowed inside extrafields conditions or any strings that contains dynamic code evaluated with dol_eval().
|
* The use of GETPOST function is not allowed inside extrafields conditions or any strings that contains dynamic code evaluated with dol_eval().
|
||||||
* The deprecated variable $trigger_name (duplicate of variable $triggersendname) has been removed. You must use $triggersendname everywhere now.
|
* The deprecated variable $trigger_name (duplicate of variable $triggersendname) has been removed. You must use $triggersendname everywhere now.
|
||||||
@@ -164,6 +255,38 @@ The following changes may create regressions for some external modules, but were
|
|||||||
* The property ->price_ht of an object line that was a duplicate of ->subprice has been standardized. Use ->subprice everywhere now.
|
* The property ->price_ht of an object line that was a duplicate of ->subprice has been standardized. Use ->subprice everywhere now.
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 21.0.4 compared to 21.0.3 *****
|
||||||
|
FIX: #35147 SQL Error on Beluga Export when ExpenseReport is enabled (#35149)
|
||||||
|
FIX: error when using a code too large in dictionary
|
||||||
|
FIX: Security when using Advanced Target page of emailing (feature hidden in v21, default in v22+). Possible
|
||||||
|
SQL injection by users with permission to make and send mass emailing.
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 21.0.3 compared to 21.0.2 *****
|
||||||
|
FIX: #34843 (#34875)
|
||||||
|
FIX: #34936
|
||||||
|
FIX: #35005
|
||||||
|
FIX: #35006 SQL error when using external user
|
||||||
|
FIX: a Fatal error when a trigger files is not correctly named.
|
||||||
|
FIX: array for arrayofkeyval is lost in module builder edit of property
|
||||||
|
FIX: asset: could not select invoice in disposal pop-in (#34725)
|
||||||
|
FIX: avoid php warning with "$forceFullTextIndexation" (#34881)
|
||||||
|
FIX: bad consistency on test on permission to disable service
|
||||||
|
FIX: Can edit status of tasks
|
||||||
|
FIX: Create public ticket if email need exist. (#34965)
|
||||||
|
FIX: DA026536: missing <br> in automatic e-mail (#34895)
|
||||||
|
FIX: extrafields of type "int" not displayed on `projet/tasks.php` (#34896)
|
||||||
|
FIX: Filter on the balance of leave
|
||||||
|
FIX: Logo on company is no more visible.
|
||||||
|
FIX: mailing destination list title (#34929)
|
||||||
|
FIX: main checkbox left column was before global conf (#34858)
|
||||||
|
FIX: Missing a column on group permissions
|
||||||
|
FIX: several minor troubles with modulebuilder
|
||||||
|
FIX: Test on mandatory product or thirdparty barcode
|
||||||
|
FIX: trigger mailmanspip when un/linking categories
|
||||||
|
SEC: Remove functions accepting callable params - Reported by phdwg1410 - CVE-2024-40137
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 21.0.2 compared to 21.0.1 *****
|
***** ChangeLog for 21.0.2 compared to 21.0.1 *****
|
||||||
|
|
||||||
FIX: 21.0: $height and $width can be ints, but also 'auto' (#34636)
|
FIX: 21.0: $height and $width can be ints, but also 'auto' (#34636)
|
||||||
@@ -1149,6 +1272,7 @@ FIX: when qty is not an integer, apply price() (#31138)
|
|||||||
FIX: Wrong default PDF model when creating the second situation invoice (#30843)
|
FIX: Wrong default PDF model when creating the second situation invoice (#30843)
|
||||||
FIX: wrong subprice if price base type is TTC (#30887)
|
FIX: wrong subprice if price base type is TTC (#30887)
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 19.0.3 compared to 19.0.2 *****
|
***** ChangeLog for 19.0.3 compared to 19.0.2 *****
|
||||||
FIX: #29403 HRM - Unable to delete a skill in a job Profile (#29779)
|
FIX: #29403 HRM - Unable to delete a skill in a job Profile (#29779)
|
||||||
FIX: #29439 incomplete API return (#29796)
|
FIX: #29439 incomplete API return (#29796)
|
||||||
@@ -1712,7 +1836,39 @@ The following changes may create regressions for some external modules, but were
|
|||||||
* The load of hook context productdao has been removed before calling loadvirtualstock. Modules must use the context of main parent page or 'all' for all cases.
|
* The load of hook context productdao has been removed before calling loadvirtualstock. Modules must use the context of main parent page or 'all' for all cases.
|
||||||
* booking.class.php was removed, please have a look at calendar.class.php
|
* booking.class.php was removed, please have a look at calendar.class.php
|
||||||
|
|
||||||
|
***** ChangeLog for 18.0.8 compared to 18.0.7 *****
|
||||||
|
35 files changed, 647 insertions(+), 298 deletions(-)
|
||||||
|
|
||||||
|
FIX: #34746 - More complete fix for CVE-2024-40137
|
||||||
|
FIX: Correct the calculation of the amount of the current period between the period provided (#35083)
|
||||||
|
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
|
||||||
|
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call
|
||||||
|
FIX: missing quick edit for extrafields (baclport commit 4fc66c6) (#35160)
|
||||||
|
FIX: Missing sentence part (#35144)
|
||||||
|
FIX: set global mysoc and load langs in API access (#35041)
|
||||||
|
FIX: set global mysoc and load langs in API access
|
||||||
|
FIX: reset mysoc and langs only if entity of API has changed
|
||||||
|
FIX: accountancy general ledger: bad handling of hook return (#34029)
|
||||||
|
FIX: accountancy general ledger: bad handling of hook return
|
||||||
|
FIX: accountancy balance: bad handling of hook return
|
||||||
|
FIX: - Fix missing token for disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084)
|
||||||
|
FIX: The combo of custom groups has disappeared (backport v19) (#35016)
|
||||||
|
FIX: #34893 (#34897)
|
||||||
|
FIX: #34893
|
||||||
|
FIX: change error code to USERNOTALLOWEDTOCHANGEPASS
|
||||||
|
FIX: asset: could not select invoice in disposal pop-in (#34725)
|
||||||
|
FIX: 17.0 SQL syntax error and/or constraint error when calling Facture::update() after a clone (e.g. in a trigger) (#34778)
|
||||||
|
FIX: 17.0: when you clone an invoice that was created from a template invoice, the clone should not be linked to the template invoice (#34777)
|
||||||
|
FIX: pre-send mail mass action: keep __EMAIL__ substitution (#34522)
|
||||||
|
FIX: pre-send mail mass action: keep __EMAIL__ substitution
|
||||||
|
FIX: comment
|
||||||
|
FIX: massaction email tpl: keep preset
|
||||||
|
FIX: loop interrupt if an error occurs in sendEmailsRemindersOnInvoiceDueDate (#34657)
|
||||||
|
FIX: #34654
|
||||||
|
|
||||||
***** ChangeLog for 18.0.7 compared to 18.0.6 *****
|
***** ChangeLog for 18.0.7 compared to 18.0.6 *****
|
||||||
|
138 files changed, 1622 insertions(+), 530 deletions(-)
|
||||||
|
|
||||||
FIX: 17.0 API endpoints "PUT": prevent overwriting all extrafields if only some are supplied in the request cf. PR #29237
|
FIX: 17.0 API endpoints "PUT": prevent overwriting all extrafields if only some are supplied in the request cf. PR #29237
|
||||||
FIX: 17.0 - collisions in cache for dol_getIdFromCode
|
FIX: 17.0 - collisions in cache for dol_getIdFromCode
|
||||||
FIX: 17.0 - missing error handling for FactureRec::fetch in card-rec.php
|
FIX: 17.0 - missing error handling for FactureRec::fetch in card-rec.php
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# How to use it ?
|
# How to use or run Dolibarr with Docker (for a development environment) ?
|
||||||
|
|
||||||
|
The docker-compose.yml file is a sample of a config file to use to build and run Dolibarr in the
|
||||||
|
current workspace with Docker. This docker image is intended for **development usage**.
|
||||||
|
For a production usage you should consider official packages on https://hub.docker.com/r/dolibarr/dolibarr.
|
||||||
|
|
||||||
The docker-compose.yml file is a sample of a config file to use to build and run
|
|
||||||
Dolibarr in the current workspace with Docker. This docker image is intended for
|
|
||||||
**development usage**. For production usage you should consider other
|
|
||||||
contributor reference like https://hub.docker.com/r/dolibarr/dolibarr.
|
|
||||||
|
|
||||||
Before build/run, define the variable HOST_USER_ID as following:
|
Before build/run, define the variable HOST_USER_ID as following:
|
||||||
|
|
||||||
@@ -22,18 +22,13 @@ or
|
|||||||
|
|
||||||
docker compose -f docker-compose.yml -f postgres.yml up
|
docker compose -f docker-compose.yml -f postgres.yml up
|
||||||
|
|
||||||
This will run 4 containers Docker : Dolibarr, MariaDB, PhpMyAdmin and MailDev.
|
This will run the following Docker containers : Dolibarr, MariaDB, MailDev.
|
||||||
In the case of PostgreSQL, only Dolibarr, MailDev and the PostgreSQL database
|
In the case of PostgreSQL, only Dolibarr, MailDev and the PostgreSQL database will be running.
|
||||||
will be running.
|
|
||||||
|
|
||||||
The URL to go to the Dolibarr is :
|
The URL to go to the installed Dolibarr is :
|
||||||
|
|
||||||
http://0.0.0.0
|
http://0.0.0.0
|
||||||
|
|
||||||
The URL to go to PhpMyAdmin is (login/password is root/root) :
|
|
||||||
|
|
||||||
http://0.0.0.0:8080
|
|
||||||
|
|
||||||
In Dolibarr configuration Email let PHP mail function, To see all mail send by
|
In Dolibarr configuration Email let PHP mail function, To see all mail send by
|
||||||
Dolibarr go to maildev
|
Dolibarr go to maildev
|
||||||
|
|
||||||
@@ -42,6 +37,7 @@ Dolibarr go to maildev
|
|||||||
Setup the database connection during the installation process, please use
|
Setup the database connection during the installation process, please use
|
||||||
mariadb or postgres (name of the database container) as database host.
|
mariadb or postgres (name of the database container) as database host.
|
||||||
|
|
||||||
|
|
||||||
## Setup your custom modules
|
## Setup your custom modules
|
||||||
|
|
||||||
You can setup your own modules from your development folder by using volume
|
You can setup your own modules from your development folder by using volume
|
||||||
@@ -61,8 +57,4 @@ will automatically be synced with your development environment.
|
|||||||
Then, you can start by extending one of the commands above, for instance for
|
Then, you can start by extending one of the commands above, for instance for
|
||||||
mariadb:
|
mariadb:
|
||||||
|
|
||||||
docker compose \
|
docker compose -f docker-compose.yml -f postgres.yml -f yourmodule.yml up
|
||||||
-f docker-compose.yml \
|
|
||||||
-f postgres.yml \
|
|
||||||
-f yourmodule.yml \
|
|
||||||
up
|
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
# How to use run Dolibarr with docker ?
|
# How to use or run Dolibarr with Docker ?
|
||||||
|
|
||||||
|
|
||||||
## For a fast run of a demo of the local version, you can build the docker image from this current repository by running
|
## For a fast run of a demo of the local version, you can build the docker image from the source repository by running
|
||||||
|
|
||||||
|
git clone https://github.com/Dolibarr/dolibarr.git dolibarr
|
||||||
|
|
||||||
|
cd dolibarr/docker
|
||||||
|
|
||||||
sudo docker-compose build
|
sudo docker-compose build
|
||||||
|
|
||||||
sudo -s
|
sudo -s
|
||||||
|
|
||||||
export HOST_USER_ID=$(id -u)
|
export HOST_USER_ID=$(id -u)
|
||||||
export HOST_GROUP_ID=$(id -g)
|
export HOST_GROUP_ID=$(id -g)
|
||||||
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
|
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
|
||||||
|
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
|
||||||
|
|
||||||
Warning: There is no persistency of data. This process is for dev purpose only.
|
Warning: There is no persistency of data. This process is for dev purpose only.
|
||||||
@@ -20,4 +23,6 @@ Warning: There is no persistency of data. This process is for dev purpose only.
|
|||||||
|
|
||||||
## For a more robust or a production usage
|
## For a more robust or a production usage
|
||||||
|
|
||||||
If you want to execute an official Docker package, you can find it and read the doc on ihttps://hub.docker.com/r/dolibarr/dolibarr
|
If you want to execute an official Docker package, you can find it and read the doc on
|
||||||
|
|
||||||
|
*https://hub.docker.com/r/dolibarr/dolibarr*
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ PROJECT_NUMBER = x.y.z
|
|||||||
# If a relative path is entered, it will be relative to the location
|
# If a relative path is entered, it will be relative to the location
|
||||||
# where doxygen was started. If left blank the current directory will be used.
|
# where doxygen was started. If left blank the current directory will be used.
|
||||||
|
|
||||||
OUTPUT_DIRECTORY = build
|
OUTPUT_DIRECTORY = dev/build
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
||||||
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
||||||
|
|||||||
@@ -3,11 +3,8 @@
|
|||||||
DoliWamp is a special all in one package installer for Windows (Dolibarr+Mysql+Apache+PHP).
|
DoliWamp is a special all in one package installer for Windows (Dolibarr+Mysql+Apache+PHP).
|
||||||
It's a dedicated Dolibarr version for Windows newbies with no technical knowledge. This package will install or upgrade Dolibarr but also all prerequisites like the web server, and the database in one auto-install process.
|
It's a dedicated Dolibarr version for Windows newbies with no technical knowledge. This package will install or upgrade Dolibarr but also all prerequisites like the web server, and the database in one auto-install process.
|
||||||
|
|
||||||
This directory contains files used by *makepack-dolibarr.pl* script to build the all-in-on .EXE package DoliWamp, ready
|
If you have technical knowledge in web administration and plan to share your server instance (Apache, Mysql or PHP) with other projects than Dolibarr, or want to use Dolibarr with a different technical layer (PostgreSQL instead of MariaDB for exemple), you should not use this auto-installer assistant and make a manual installation of Dolibarr on your existing server by downloading the standard package (the .zip file).
|
||||||
to be distributed (for Windows).
|
|
||||||
The build of .exe files need to have some windows executable files already installed (Apache, MariaDb). The package to install to get this files are defined into the file *doliwamp.iss* (searhc line starting with "; Value OK:")
|
|
||||||
|
|
||||||
If you have technical knowledge in web administration and plan to share your server instance (Apache, Mysql or PHP) with other projects than Dolibarr or want to use Dolibarr other components (PostgreSQL), you should not use this assistant and make a manual installation of Dolibarr on your existing server by downloading the standard package (.tgz or .zip file).
|
|
||||||
|
|
||||||
|
|
||||||
!!! See file ../../makepack-howto.md
|
This directory contains files used by *makepack-dolibarr.pl* script to build DoliWamp, the all-in-one .EXE package of Dolibarr, ready to be distributed on Windows (See file ../../makepack-howto.md)
|
||||||
|
The build of .exe files need to have some windows executable files already installed (Apache, MariaDb). The package to install to get this files are defined into the file *doliwamp.iss* (search line starting with "; Value OK:")
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ DefaultGroupName=Dolibarr
|
|||||||
;Compression=none
|
;Compression=none
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
WizardImageFile=build\exe\doliwamp\doliwamp.bmp
|
WizardImageFile=dev\build\exe\doliwamp\doliwamp.bmp
|
||||||
WizardSmallImageFile=build\exe\doliwamp\doliwampsmall.bmp
|
WizardSmallImageFile=dev\build\exe\doliwamp\doliwampsmall.bmp
|
||||||
SetupIconFile=doc\images\dolibarr_favicon.ico
|
SetupIconFile=doc\images\dolibarr_favicon.ico
|
||||||
;To say the installer must be ran as admin
|
;To say the installer must be ran as admin
|
||||||
PrivilegesRequired=admin
|
PrivilegesRequired=admin
|
||||||
|
|||||||
@@ -50,6 +50,13 @@ $includeconstants = array();
|
|||||||
$buildzip = 0;
|
$buildzip = 0;
|
||||||
|
|
||||||
if (empty($argv[1])) {
|
if (empty($argv[1])) {
|
||||||
|
print '***** '.$script_file.' *****'."\n";
|
||||||
|
print "Generate the file filelist-x.y.z[-mybuild].xml with signature of files. ";
|
||||||
|
print "This includes the 3 sections:\n";
|
||||||
|
print "- dolibarr_htdocs_dir\n";
|
||||||
|
print "- dolibarr_scripts_dir\n";
|
||||||
|
print "- dolibarr_unalterable_files (only files inside the scope of the unalterable module)\n";
|
||||||
|
print "\n";
|
||||||
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
print "Usage: ".$script_file." release=auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
||||||
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -78,7 +85,7 @@ while ($i < $argc) {
|
|||||||
$tmp = explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
$tmp = explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
||||||
if (count($tmp) != 3) {
|
if (count($tmp) != 3) {
|
||||||
print "Error: Bad parameter includeconstant=".$result['includeconstant'] ."\n";
|
print "Error: Bad parameter includeconstant=".$result['includeconstant'] ."\n";
|
||||||
exit -1;
|
exit(1);
|
||||||
}
|
}
|
||||||
$includeconstants[$tmp[0]][$tmp[1]] = $tmp[2];
|
$includeconstants[$tmp[0]][$tmp[1]] = $tmp[2];
|
||||||
}
|
}
|
||||||
@@ -97,7 +104,7 @@ $savrelease = $release;
|
|||||||
$tmpver = explode('-', $release, 2);
|
$tmpver = explode('-', $release, 2);
|
||||||
if ($tmpver[0] == 'auto') {
|
if ($tmpver[0] == 'auto') {
|
||||||
$release = DOL_VERSION;
|
$release = DOL_VERSION;
|
||||||
if ($tmpver[1] && $tmpver[0] == 'auto') {
|
if (!empty($tmpver[1]) && $tmpver[0] == 'auto') {
|
||||||
$release .= '-'.$tmpver[1];
|
$release .= '-'.$tmpver[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,10 +133,10 @@ if (empty($includecustom)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
|
print "Working on files into : ".DOL_DOCUMENT_ROOT."\n";
|
||||||
print "Release : ".$release."\n";
|
print "Release : ".$release."\n";
|
||||||
print "Include custom in signature : ".$includecustom."\n";
|
print "Include custom dir in signature : ".(empty($includecustom) ? 'no' : 'yes')."\n";
|
||||||
print "Include constants in signature : ";
|
print "Include constants in signature : ".(empty($includeconstants) ? 'none' : '');
|
||||||
foreach ($includeconstants as $countrycode => $tmp) {
|
foreach ($includeconstants as $countrycode => $tmp) {
|
||||||
foreach ($tmp as $constname => $constvalue) {
|
foreach ($tmp as $constname => $constvalue) {
|
||||||
print $constname.'='.$constvalue." ";
|
print $constname.'='.$constvalue." ";
|
||||||
@@ -155,9 +162,12 @@ $gitcommit = 'seetag';
|
|||||||
$branchname = preg_replace('/^(\d+\.\d+)\..*$/', '\1', $release); // Keep only x.y into x.y.z
|
$branchname = preg_replace('/^(\d+\.\d+)\..*$/', '\1', $release); // Keep only x.y into x.y.z
|
||||||
$fileforgit = dirname(dirname(dirname(__FILE__))).'/.git/refs/heads/'.$branchname;
|
$fileforgit = dirname(dirname(dirname(__FILE__))).'/.git/refs/heads/'.$branchname;
|
||||||
print "Try to get last commit ID from file ".$fileforgit."\n";
|
print "Try to get last commit ID from file ".$fileforgit."\n";
|
||||||
$fileforgitcontent = file_get_contents($fileforgit);
|
$fileforgitcontent = '';
|
||||||
|
if (file_exists($fileforgit)) {
|
||||||
|
$fileforgitcontent = file_get_contents($fileforgit);
|
||||||
|
}
|
||||||
if (empty($fileforgitcontent)) {
|
if (empty($fileforgitcontent)) {
|
||||||
print "Failed to get the last commit ID. Are you on the branch for the release (branch name '.$branchname.') ?\n";
|
print "Failed to get the last commit ID. Are you on the branch for the release (branch name ".$branchname.") ?\n";
|
||||||
}
|
}
|
||||||
$gitcommit = trim($fileforgitcontent);
|
$gitcommit = trim($fileforgitcontent);
|
||||||
|
|
||||||
@@ -180,7 +190,7 @@ fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
|
|||||||
|
|
||||||
// Define qualified files (must be same than into generate_filelist_xml.php and in api_setup.class.php)
|
// 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)$';
|
$regextoinclude = '\.(php|php3|php4|php5|phtml|phps|phar|inc|css|scss|html|xml|js|json|tpl|jpg|jpeg|png|gif|ico|sql|lang|txt|yml|bak|md|mp3|mp4|wav|mkv|z|gz|zip|rar|tar|less|svg|eot|woff|woff2|ttf|manifest)$';
|
||||||
$regextoexclude = '('.($includecustom ? '' : 'custom|').'documents|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/example|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
|
$regextoexclude = '('.($includecustom ? '' : 'custom|').'documents|escpos-php\/doc|escpos-php\/example|escpos-php\/test|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
|
||||||
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
||||||
|
|
||||||
$dir = '';
|
$dir = '';
|
||||||
@@ -339,6 +349,54 @@ if ($needtoclose) {
|
|||||||
fputs($fp, ' </dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
$needtoclose = 0;
|
$needtoclose = 0;
|
||||||
}
|
}
|
||||||
|
// Add the interfaces.class.php file
|
||||||
|
$file = dirname(__FILE__).'/../../htdocs/core/class/interfaces.class.php';
|
||||||
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
|
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
|
||||||
|
if ($newdir != $dir) {
|
||||||
|
if ($needtoclose) {
|
||||||
|
fputs($fp, ' </dir>'."\n");
|
||||||
|
$needtoclose = 0;
|
||||||
|
}
|
||||||
|
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
|
||||||
|
$dir = $newdir;
|
||||||
|
//$needtoclose = 1; // close will be done in next filethat is in same dir
|
||||||
|
}
|
||||||
|
if (filetype($file) == "file") {
|
||||||
|
$md5 = md5_file($file);
|
||||||
|
$checksumconcat[] = $md5;
|
||||||
|
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
||||||
|
}
|
||||||
|
if ($needtoclose) {
|
||||||
|
fputs($fp, ' </dir>'."\n");
|
||||||
|
$needtoclose = 0;
|
||||||
|
}
|
||||||
|
// Add the commontrigger.class.php file
|
||||||
|
$file = dirname(__FILE__).'/../../htdocs/core/class/commontrigger.class.php';
|
||||||
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
|
$newdir = str_replace(dirname(__FILE__).'/../../htdocs', '', dirname($file));
|
||||||
|
if ($newdir != $dir) {
|
||||||
|
if ($needtoclose) {
|
||||||
|
fputs($fp, ' </dir>'."\n");
|
||||||
|
$needtoclose = 0;
|
||||||
|
}
|
||||||
|
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
|
||||||
|
$dir = $newdir;
|
||||||
|
$needtoclose = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$needtoclose = 1; // This is the last file
|
||||||
|
if (filetype($file) == "file") {
|
||||||
|
$md5 = md5_file($file);
|
||||||
|
$checksumconcat[] = $md5;
|
||||||
|
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
||||||
|
}
|
||||||
|
if ($needtoclose) {
|
||||||
|
fputs($fp, ' </dir>'."\n");
|
||||||
|
$needtoclose = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fputs($fp, '</dolibarr_unalterable_files>'."\n");
|
fputs($fp, '</dolibarr_unalterable_files>'."\n");
|
||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
|
|||||||
@@ -446,6 +446,15 @@ if ($nboftargetok) {
|
|||||||
|
|
||||||
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/dev/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/dev/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
||||||
$ret=`php $SOURCE/dev/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
$ret=`php $SOURCE/dev/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
||||||
|
my $retcode=$?;
|
||||||
|
if ($retcode!=0)
|
||||||
|
{
|
||||||
|
print "Error running generate_filelist_xml.php please check\n";
|
||||||
|
print $ret;
|
||||||
|
print "Canceled.\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
print $ret."\n";
|
print $ret."\n";
|
||||||
# Copy to final dir
|
# Copy to final dir
|
||||||
$NEWDESTI=$DESTI;
|
$NEWDESTI=$DESTI;
|
||||||
@@ -477,14 +486,14 @@ if ($nboftargetok) {
|
|||||||
{
|
{
|
||||||
print 'Run git tag -a -f -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
|
print 'Run git tag -a -f -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n";
|
||||||
$ret=`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`;
|
$ret=`git tag -a -f -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD"`;
|
||||||
print 'Run git push $GITREMOTENAME -f --tags'."\n";
|
print 'Run git push '.$GITREMOTENAME.' -f "$MAJOR.$MINOR.$BUILD"'."\n";
|
||||||
$ret=`git push $GITREMOTENAME -f --tags`;
|
$ret=`git push $GITREMOTENAME -f -"$MAJOR.$MINOR.$BUILD"`;
|
||||||
#$ret=`git push -f origin "$MAJOR.$MINOR.$BUILD"`;
|
#$ret=`git push -f origin "$MAJOR.$MINOR.$BUILD"`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print 'Run git push $GITREMOTENAME --tags'."\n";
|
print "Run git push $GITREMOTENAME --tags\n";
|
||||||
$ret=`git push $GITREMOTENAME --tags`;
|
$ret=`git push $GITREMOTENAME --tags`;
|
||||||
#$ret=`git push origin "$MAJOR.$MINOR.$BUILD"`;
|
#$ret=`git push origin "$MAJOR.$MINOR.$BUILD"`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,9 @@ Prerequisites to build autoexe DoliWamp package from Linux (solution seems broke
|
|||||||
|
|
||||||
- Add path to ISCC.exe into the PATH windows var (You can do this by launching wine cmd, then regedit and add entry int `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH`)
|
- Add path to ISCC.exe into the PATH windows var (You can do this by launching wine cmd, then regedit and add entry int `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH`)
|
||||||
|
|
||||||
- To manually build the .exe from Windows :
|
- To manually build the .exe from Windows (Note: running from makepack-dolibarr.pl script is however recommended):
|
||||||
|
|
||||||
Note: running from makepack-dolibarr.pl script is however recommended
|
Open the file dev/build/exe/doliwamp.iss and click on button "Compile".
|
||||||
open file dev/build/exe/doliwamp.iss and click on button "Compile".
|
|
||||||
The .exe file will be build into directory build.
|
The .exe file will be build into directory build.
|
||||||
|
|
||||||
|
|
||||||
@@ -58,7 +57,8 @@ Prerequisites to build autoexe DoliWamp package from Windows:
|
|||||||
|
|
||||||
This section describes steps made by Dolibarr packaging team to make a beta version of Dolibarr, step by step.
|
This section describes steps made by Dolibarr packaging team to make a beta version of Dolibarr, step by step.
|
||||||
|
|
||||||
- Check all files are committed.
|
- Check that all files on local working repository are committed.
|
||||||
|
|
||||||
- Update version/info in ChangeLog, for this you can:
|
- Update version/info in ChangeLog, for this you can:
|
||||||
|
|
||||||
To generate a changelog of a **major new version** x.y.0 (from a repo on branch develop), you can do
|
To generate a changelog of a **major new version** x.y.0 (from a repo on branch develop), you can do
|
||||||
@@ -92,7 +92,7 @@ git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //
|
|||||||
|
|
||||||
- Run `makepack-dolibarr.pl` to check the generation of all packages. No need to publish them.
|
- Run `makepack-dolibarr.pl` to check the generation of all packages. No need to publish them.
|
||||||
|
|
||||||
- Post a news message on dolibarr.org about the freeze by cloning a past news + relay the news url on social networks
|
- Post a news message on dolibarr.org about the freeze by cloning a past news + relay the news url on social networks. Include the content of the previously generated ChangeLog file into the news.
|
||||||
|
|
||||||
- Create a branch x.y (but only when version seems stable enough).
|
- Create a branch x.y (but only when version seems stable enough).
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ We suppose the branch x.y has already been created during the beta (see previous
|
|||||||
|
|
||||||
- Check there is no pending open security issue: List can be found here: https://github.com/Dolibarr/dolibarr/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Priority%20-%20Critical%20or%20Security%22
|
- Check there is no pending open security issue: List can be found here: https://github.com/Dolibarr/dolibarr/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Priority%20-%20Critical%20or%20Security%22
|
||||||
|
|
||||||
- Check all files are committed.
|
- Check that all files on local working repository are committed.
|
||||||
|
|
||||||
- Update version/info in ChangeLog, for this:
|
- Update version/info in ChangeLog, for this:
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -234,7 +234,7 @@ In htdocs/includes/tecnickcom/tcpdf/tcpdf.php
|
|||||||
|
|
||||||
PHP TCPDI:
|
PHP TCPDI:
|
||||||
----------
|
----------
|
||||||
Add file fpdf_tpl.php 1.2
|
Add file fpdf_tpl.php 1.2.3
|
||||||
|
|
||||||
Add file tcpdi.php
|
Add file tcpdi.php
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"npm": ">=5.6.0"
|
"npm": ">=5.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"zapier-platform-core": "15.0.1"
|
"zapier-platform-core": "17.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "^5.2.0",
|
"mocha": "^5.2.0",
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
$path=dirname(__FILE__).'/';
|
$path = dirname(__FILE__).'/';
|
||||||
|
|
||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
@@ -41,12 +41,26 @@ require __DIR__. '/../../htdocs/master.inc.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
|
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
|
||||||
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$version = DOL_VERSION;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameters
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('GEN_NUMBER_FACTURE', $argv[1] ?? 1);
|
@set_time_limit(0);
|
||||||
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
|
if (empty($argv[1])) {
|
||||||
|
print "Usage: $script_file nbofrecord\n";
|
||||||
|
print "Usage: $script_file 100\n";
|
||||||
|
print "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
define('GEN_NUMBER_FACTURE', ((int) $argv[1]) ?? 1);
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12, 0, 0, 1, 9, $year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
@@ -100,7 +114,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
|
|||||||
mktime(12, 0, 0, 12, 13, $year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
$path=dirname(__FILE__).'/';
|
$path = dirname(__FILE__).'/';
|
||||||
|
|
||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
@@ -47,12 +47,28 @@ include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
|
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$version = DOL_VERSION;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameter
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('GEN_NUMBER_COMMANDE', $argv[1] ?? 10);
|
|
||||||
|
@set_time_limit(0);
|
||||||
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
|
if (empty($argv[1])) {
|
||||||
|
print "Usage: $script_file nbofrecord\n";
|
||||||
|
print "Usage: $script_file 100\n";
|
||||||
|
print "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
define('GEN_NUMBER_COMMANDE', ((int) $argv[1]) ?? 10);
|
||||||
|
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12, 0, 0, 1, 9, $year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
@@ -106,7 +122,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
|
|||||||
mktime(12, 0, 0, 12, 13, $year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if ($ret <= 0) {
|
if ($ret <= 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
$path=dirname(__FILE__).'/';
|
$path = dirname(__FILE__).'/';
|
||||||
|
|
||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
@@ -46,15 +46,28 @@ include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$version = DOL_VERSION;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameters
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('GEN_NUMBER_PRODUIT', $argv[1] ?? 100);
|
@set_time_limit(0);
|
||||||
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
|
if (empty($argv[1])) {
|
||||||
|
print "Usage: $script_file nbofrecord\n";
|
||||||
|
print "Usage: $script_file 100\n";
|
||||||
|
print "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
define('GEN_NUMBER_PRODUIT', ((int) $argv[1]) ?? 100);
|
||||||
|
|
||||||
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
@@ -106,15 +119,22 @@ if ($resql) {
|
|||||||
print "Generates ".GEN_NUMBER_PRODUIT." products\n";
|
print "Generates ".GEN_NUMBER_PRODUIT." products\n";
|
||||||
for ($s = 0; $s < GEN_NUMBER_PRODUIT; $s++) {
|
for ($s = 0; $s < GEN_NUMBER_PRODUIT; $s++) {
|
||||||
print "Product ".$s;
|
print "Product ".$s;
|
||||||
|
|
||||||
$produit = new Product($db);
|
$produit = new Product($db);
|
||||||
$produit->type = mt_rand(0, 1);
|
$produit->type = mt_rand(0, 1);
|
||||||
$produit->status = 1;
|
$produit->status = mt_rand(0, 1);
|
||||||
|
$produit->status_buy = mt_rand(0, 1);
|
||||||
|
$produit->finished = mt_rand(0, 1);
|
||||||
|
$produit->stockable_product = mt_rand(0, 1);
|
||||||
|
|
||||||
$produit->ref = ($produit->type ? 'S' : 'P').time().$s;
|
$produit->ref = ($produit->type ? 'S' : 'P').time().$s;
|
||||||
$produit->label = 'Label '.time().$s;
|
$produit->label = 'Label '.time().$s;
|
||||||
$produit->description = 'Description '.time().$s;
|
$produit->description = 'This is a long description of '.$produit->ref;
|
||||||
$produit->price = mt_rand(1, 999.99);
|
$produit->price = mt_rand(1, 999.99);
|
||||||
$produit->tva_tx = "20.0";
|
$produit->tva_tx = "20.0";
|
||||||
$ret=$produit->create($user);
|
|
||||||
|
$ret = $produit->create($user);
|
||||||
|
|
||||||
if ($ret < 0) {
|
if ($ret < 0) {
|
||||||
print "Error $ret - ".$produit->error."\n";
|
print "Error $ret - ".$produit->error."\n";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
$path=dirname(__FILE__).'/';
|
$path = dirname(__FILE__).'/';
|
||||||
|
|
||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
@@ -44,11 +44,27 @@ require_once DOL_DOCUMENT_ROOT."/comm/propal/class/propal.class.php";
|
|||||||
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
|
require_once DOL_DOCUMENT_ROOT."/commande/class/commande.class.php";
|
||||||
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$version = DOL_VERSION;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameters
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('GEN_NUMBER_PROPAL', $argv[1] ?? 10);
|
@set_time_limit(0);
|
||||||
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
|
if (empty($argv[1])) {
|
||||||
|
print "Usage: $script_file nbofrecord\n";
|
||||||
|
print "Usage: $script_file 100\n";
|
||||||
|
print "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
define('GEN_NUMBER_PROPAL', ((int) $argv[1]) ?? 10);
|
||||||
|
|
||||||
$year = 2016;
|
$year = 2016;
|
||||||
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
$dates = array(mktime(12, 0, 0, 1, 3, $year),
|
||||||
mktime(12, 0, 0, 1, 9, $year),
|
mktime(12, 0, 0, 1, 9, $year),
|
||||||
@@ -102,7 +118,7 @@ $dates = array(mktime(12, 0, 0, 1, 3, $year),
|
|||||||
mktime(12, 0, 0, 12, 13, $year),
|
mktime(12, 0, 0, 12, 13, $year),
|
||||||
);
|
);
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -49,15 +49,29 @@ include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
|||||||
$listoftown = array("Auray","Baden","Vannes","Pirouville","Haguenau","Souffelweiersheim","Illkirch-Graffenstaden","Lauterbourg","Picauville","Sainte-Mère Eglise","Le Bono");
|
$listoftown = array("Auray","Baden","Vannes","Pirouville","Haguenau","Souffelweiersheim","Illkirch-Graffenstaden","Lauterbourg","Picauville","Sainte-Mère Eglise","Le Bono");
|
||||||
$listoflastname = array("Joe","Marc","Steve","Laurent","Nico","Isabelle","Dorothee","Saby","Brigitte","Karine","Jose-Anne","Celine","Virginie");
|
$listoflastname = array("Joe","Marc","Steve","Laurent","Nico","Isabelle","Dorothee","Saby","Brigitte","Karine","Jose-Anne","Celine","Virginie");
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$version = DOL_VERSION;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parameter
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('GEN_NUMBER_SOCIETE', $argv[1] ?? 10);
|
@set_time_limit(0);
|
||||||
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
|
dol_syslog($script_file." launched with arg ".implode(',', $argv));
|
||||||
|
|
||||||
|
if (empty($argv[1])) {
|
||||||
|
print "Usage: $script_file nbofrecord\n";
|
||||||
|
print "Usage: $script_file 100\n";
|
||||||
|
print "\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
define('GEN_NUMBER_SOCIETE', ((int) $argv[1]) ?? 10);
|
||||||
|
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
|
||||||
$delimiter=',';
|
$delimiter = ',';
|
||||||
$enclosure='"';
|
$enclosure = '"';
|
||||||
$linelength=10000;
|
$linelength = 10000;
|
||||||
$escape='/';
|
$escape = '/';
|
||||||
|
|
||||||
// Global variables
|
// Global variables
|
||||||
$version=DOL_VERSION;
|
$version = DOL_VERSION;
|
||||||
$confirmed=1;
|
$confirmed = 1;
|
||||||
$error=0;
|
$error = 0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -71,15 +71,15 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
|
|||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [defaultlang] [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [defaultlang] [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv fr_FR 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv fr_FR 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (! file_exists($filepath)) {
|
if (! file_exists($filepath)) {
|
||||||
print "Error: File ".$filepath." not found.\n";
|
print "Error: File ".$filepath." not found.\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
|
||||||
$delimiter=',';
|
$delimiter = ',';
|
||||||
$enclosure='"';
|
$enclosure = '"';
|
||||||
$linelength=10000;
|
$linelength = 10000;
|
||||||
$escape='/';
|
$escape = '/';
|
||||||
|
|
||||||
// Global variables
|
// Global variables
|
||||||
$version=DOL_VERSION;
|
$version = DOL_VERSION;
|
||||||
$confirmed=1;
|
$confirmed = 1;
|
||||||
$error=0;
|
$error = 0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -71,15 +71,15 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
|
|||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (! file_exists($filepath)) {
|
if (! file_exists($filepath)) {
|
||||||
print "Error: File ".$filepath." not found.\n";
|
print "Error: File ".$filepath." not found.\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret = $user->fetch('', 'admin');
|
||||||
if (! $ret > 0) {
|
if (! $ret > 0) {
|
||||||
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -41,15 +41,15 @@ require $path."../../htdocs/master.inc.php";
|
|||||||
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
|
|
||||||
$delimiter=',';
|
$delimiter = ',';
|
||||||
$enclosure='"';
|
$enclosure = '"';
|
||||||
$linelength=10000;
|
$linelength = 10000;
|
||||||
$escape='/';
|
$escape = '/';
|
||||||
|
|
||||||
// Global variables
|
// Global variables
|
||||||
$version=DOL_VERSION;
|
$version = DOL_VERSION;
|
||||||
$confirmed=1;
|
$confirmed = 1;
|
||||||
$error=0;
|
$error = 0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -71,12 +71,12 @@ if (empty($mode) || ! in_array($mode, array('test','confirm','confirmforced')) |
|
|||||||
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
|
||||||
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
print "Usage: $script_file test myfilepath.csv 2 1002\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (! file_exists($filepath)) {
|
if (! file_exists($filepath)) {
|
||||||
print "Error: File ".$filepath." not found.\n";
|
print "Error: File ".$filepath." not found.\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret=$user->fetch('', 'admin');
|
$ret=$user->fetch('', 'admin');
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ $path=__DIR__.'/';
|
|||||||
// Test si mode batch
|
// Test si mode batch
|
||||||
if (substr($sapi_type, 0, 3) == 'cgi') {
|
if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||||
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recupere root dolibarr
|
// Recupere root dolibarr
|
||||||
@@ -187,13 +187,13 @@ if (empty($mode) || ! in_array($mode, array('test','confirm'))) {
|
|||||||
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "option can be ".implode(',', array_keys($sqls))."\n";
|
print "option can be ".implode(',', array_keys($sqls))."\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (empty($option)) {
|
if (empty($option)) {
|
||||||
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "option must be defined with a value in list ".implode(',', array_keys($sqls))."\n";
|
print "option must be defined with a value in list ".implode(',', array_keys($sqls))."\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if ($option != 'all') {
|
if ($option != 'all') {
|
||||||
$listofoptions=explode(',', $option);
|
$listofoptions=explode(',', $option);
|
||||||
@@ -202,7 +202,7 @@ if ($option != 'all') {
|
|||||||
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "option '".$cursoroption."' must be in list ".implode(',', array_keys($sqls))."\n";
|
print "option '".$cursoroption."' must be in list ".implode(',', array_keys($sqls))."\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,7 +211,7 @@ if (empty($date) || (! preg_match('/\d\d\d\d\-\d\d\-\d\d$/', $date) && $date !=
|
|||||||
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
print "Usage: $script_file (test|confirm) (all|option) (all|YYYY-MM-DD) [dbtype dbhost dbuser dbpassword dbname dbport]\n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print "date can be 'all' or 'YYYY-MM-DD' to delete record before YYYY-MM-DD\n";
|
print "date can be 'all' or 'YYYY-MM-DD' to delete record before YYYY-MM-DD\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($date == 'all') {
|
if ($date == 'all') {
|
||||||
|
|||||||
@@ -65051,7 +65051,7 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(11890,'MAIN_AGENDA_ACTIONAUTO_USER_CREATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11890,'MAIN_AGENDA_ACTIONAUTO_USER_CREATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11891,'MAIN_AGENDA_ACTIONAUTO_USER_MODIFY',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11891,'MAIN_AGENDA_ACTIONAUTO_USER_MODIFY',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11892,'MAIN_AGENDA_ACTIONAUTO_USER_DELETE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11892,'MAIN_AGENDA_ACTIONAUTO_USER_DELETE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11893,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'dolcrypt:AES-256-CTR:9eebc9ac2c57a4ec:ww==','chaine',0,'','2023-03-01 16:57:33'),
|
(11893,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11894,'MAIN_AGENDA_ACTIONAUTO_USER_ENABLEDISABLE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11894,'MAIN_AGENDA_ACTIONAUTO_USER_ENABLEDISABLE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11895,'MAIN_AGENDA_ACTIONAUTO_BOM_VALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11895,'MAIN_AGENDA_ACTIONAUTO_BOM_VALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
(11896,'MAIN_AGENDA_ACTIONAUTO_BOM_UNVALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
(11896,'MAIN_AGENDA_ACTIONAUTO_BOM_UNVALIDATE',1,'1','chaine',0,'','2023-03-01 16:57:33'),
|
||||||
@@ -65205,7 +65205,6 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(14411,'MARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
|
(14411,'MARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
|
||||||
(14412,'MARKETPLACE_SELLERS_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
|
(14412,'MARKETPLACE_SELLERS_ORDER_CONFIRMATION_TEMPLATE',1,'-1','chaine',0,'','2025-02-05 14:08:06'),
|
||||||
(14413,'MARKETPLACE_MINIMUM_PAYOUT_AMOUNT',1,'50','chaine',0,'','2025-02-05 14:08:06'),
|
(14413,'MARKETPLACE_MINIMUM_PAYOUT_AMOUNT',1,'50','chaine',0,'','2025-02-05 14:08:06'),
|
||||||
(14417,'MARKETPLACE_SECRET_KEY',1,'dolcrypt:AES-256-CTR:a113efb19906f2be:q6ZG+E22cA==','chaine',0,'','2025-02-05 14:09:55'),
|
|
||||||
(14459,'MARKETPLACE_PAYMENT_IN_FRAME',1,'1','chaine',0,'','2025-02-05 14:33:21'),
|
(14459,'MARKETPLACE_PAYMENT_IN_FRAME',1,'1','chaine',0,'','2025-02-05 14:33:21'),
|
||||||
(14491,'HELLOASSO_BANK_ACCOUNT_FOR_PAYMENTS',1,'6','chaine',0,'','2025-02-06 12:52:19'),
|
(14491,'HELLOASSO_BANK_ACCOUNT_FOR_PAYMENTS',1,'6','chaine',0,'','2025-02-06 12:52:19'),
|
||||||
(14521,'MAIN_MAIL_SENDMODE_PASSWORDRESET',1,'default','chaine',0,'','2025-02-12 18:07:29'),
|
(14521,'MAIN_MAIL_SENDMODE_PASSWORDRESET',1,'default','chaine',0,'','2025-02-12 18:07:29'),
|
||||||
@@ -65251,7 +65250,7 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(15001,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'','2025-03-03 02:52:32'),
|
(15001,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'','2025-03-03 02:52:32'),
|
||||||
(15002,'PROPOSAL_FREE_TEXT',1,'Ceci est <a href=\"https://www.dolibarr.org\">un lien</a>','chaine',0,'','2025-03-03 02:52:32'),
|
(15002,'PROPOSAL_FREE_TEXT',1,'Ceci est <a href=\"https://www.dolibarr.org\">un lien</a>','chaine',0,'','2025-03-03 02:52:32'),
|
||||||
(15004,'PDF_SECURITY_ENCRYPTION',1,'0','chaine',1,'','2025-03-03 02:53:28'),
|
(15004,'PDF_SECURITY_ENCRYPTION',1,'0','chaine',1,'','2025-03-03 02:53:28'),
|
||||||
(15007,'MARKETPLACE_PUBLIC_API_KEY',1,'dolcrypt:AES-256-CTR:d515f8d303aad816:+32sG1DvuxkMOYlMzFOY6Y1VhKf5r+dvMfz2e+6EjHU=','chaine',0,'','2025-03-03 16:22:48'),
|
(15007,'MARKETPLACE_PUBLIC_API_KEY',1,'demokey','chaine',0,'','2025-03-03 16:22:48'),
|
||||||
(15011,'MAIN_ENABLE_COMMUNITY_REPO',1,'1','chaine',1,'','2025-03-03 16:54:48'),
|
(15011,'MAIN_ENABLE_COMMUNITY_REPO',1,'1','chaine',1,'','2025-03-03 16:54:48'),
|
||||||
(15020,'MAIN_ENABLE_DOLISTORE',1,'0','chaine',1,'','2025-03-04 22:03:12'),
|
(15020,'MAIN_ENABLE_DOLISTORE',1,'0','chaine',1,'','2025-03-04 22:03:12'),
|
||||||
(15161,'MAIN_MODULE_OPENIDCONNECT',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-03-06 15:18:21'),
|
(15161,'MAIN_MODULE_OPENIDCONNECT',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-03-06 15:18:21'),
|
||||||
@@ -65304,7 +65303,7 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(15630,'MULTICURRENCY_APP_ID',1,'knJn9aj77LqcGtHp9m6rRWB5iD1yhfRO','chaine',0,'','2025-03-21 12:43:49'),
|
(15630,'MULTICURRENCY_APP_ID',1,'knJn9aj77LqcGtHp9m6rRWB5iD1yhfRO','chaine',0,'','2025-03-21 12:43:49'),
|
||||||
(15726,'EMAILING_USE_ADVANCED_SELECTOR',1,'1','chaine',0,'','2025-03-25 11:08:47'),
|
(15726,'EMAILING_USE_ADVANCED_SELECTOR',1,'1','chaine',0,'','2025-03-25 11:08:47'),
|
||||||
(15731,'CONTRACT_ALLOW_ONLINESIGN',1,'0','chaine',0,'','2025-03-25 12:47:09'),
|
(15731,'CONTRACT_ALLOW_ONLINESIGN',1,'0','chaine',0,'','2025-03-25 12:47:09'),
|
||||||
(15746,'MULTICURRENCY_APP_KEY',1,'dolcrypt:AES-256-CTR:a972ff0c9e92c932:dqOrWexGkIENOk0Fen4hKMCN+jxY2ou0EDwmV1pk2uQ=','chaine',0,'','2025-03-25 15:03:23'),
|
(15746,'MULTICURRENCY_APP_KEY',1,'demokey','chaine',0,'','2025-03-25 15:03:23'),
|
||||||
(15747,'MULTICURRENCY_APP_ENDPOINT',1,'https://api.apilayer.com/currency_data/live?base=__MULTICURRENCY_APP_SOURCE__','chaine',0,'','2025-03-25 15:03:23'),
|
(15747,'MULTICURRENCY_APP_ENDPOINT',1,'https://api.apilayer.com/currency_data/live?base=__MULTICURRENCY_APP_SOURCE__','chaine',0,'','2025-03-25 15:03:23'),
|
||||||
(15752,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_CREATE',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
|
(15752,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_CREATE',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
|
||||||
(15753,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_MODIFY',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
|
(15753,'MAIN_AGENDA_ACTIONAUTO_COMPANY_RIB_MODIFY',1,'1','chaine',0,NULL,'2025-03-25 19:50:16'),
|
||||||
@@ -65447,12 +65446,12 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(17506,'ACCOUNTING_PRODUCT_MODE',1,'ACCOUNTANCY_SELL','chaine',0,'','2025-04-03 18:15:02'),
|
(17506,'ACCOUNTING_PRODUCT_MODE',1,'ACCOUNTANCY_SELL','chaine',0,'','2025-04-03 18:15:02'),
|
||||||
(17586,'FACTURE_ADDON',1,'mod_facture_mars','chaine',0,'','2025-04-05 14:25:19'),
|
(17586,'FACTURE_ADDON',1,'mod_facture_mars','chaine',0,'','2025-04-05 14:25:19'),
|
||||||
(17777,'AI_API_SERVICE',1,'mistral','chaine',0,'','2025-04-07 23:24:36'),
|
(17777,'AI_API_SERVICE',1,'mistral','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17778,'AI_API_CHATGPT_KEY',1,'dolcrypt:AES-256-CTR:9613a045bab6c491:GZp61Q3TMSMF/iTVCl/0QXXkGcMsTJetGBR5Zy6nLac=','chaine',0,'','2025-04-07 23:24:36'),
|
(17778,'AI_API_CHATGPT_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17779,'AI_API_CHATGPT_URL',1,'https://api.openai.com/v1/','chaine',0,'','2025-04-07 23:24:36'),
|
(17779,'AI_API_CHATGPT_URL',1,'https://api.openai.com/v1/','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17780,'AI_API_GROQ_URL',1,'https://api.groq.com/openai/','chaine',0,'','2025-04-07 23:24:36'),
|
(17780,'AI_API_GROQ_URL',1,'https://api.groq.com/openai/','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17781,'AI_API_MISTRAL_KEY',1,'dolcrypt:AES-256-CTR:1abe518475f89cfa:LNtWUSvYyIf8LQ/JEtpuu2ZrorjJMUxRFZG4VmmEn7o=','chaine',0,'','2025-04-07 23:24:36'),
|
(17781,'AI_API_MISTRAL_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17782,'AI_API_MISTRAL_URL',1,'https://api.mistral.ai/v1/','chaine',0,'','2025-04-07 23:24:36'),
|
(17782,'AI_API_MISTRAL_URL',1,'https://api.mistral.ai/v1/','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17783,'AI_API_CUSTOM_KEY',1,'dolcrypt:AES-256-CTR:9733d785d0113ed2:+KXzk7ILKPq99LL2g9dpxGlprEWAScO26jEeFnpJBxQ=','chaine',0,'','2025-04-07 23:24:36'),
|
(17783,'AI_API_CUSTOM_KEY',1,'demokey','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17784,'AI_API_CUSTOM_URL',1,'https://mydomainofapi.com/v1','chaine',0,'','2025-04-07 23:24:36'),
|
(17784,'AI_API_CUSTOM_URL',1,'https://mydomainofapi.com/v1','chaine',0,'','2025-04-07 23:24:36'),
|
||||||
(17788,'SOCIETE_RIB_ALLOW_ONLINESIGN',1,'1','chaine',0,'','2025-04-08 08:59:48'),
|
(17788,'SOCIETE_RIB_ALLOW_ONLINESIGN',1,'1','chaine',0,'','2025-04-08 08:59:48'),
|
||||||
(17803,'SOCIETE_ENABLE_PUBLIC',1,'1','chaine',1,'','2025-04-08 10:55:06'),
|
(17803,'SOCIETE_ENABLE_PUBLIC',1,'1','chaine',1,'','2025-04-08 10:55:06'),
|
||||||
@@ -65506,7 +65505,7 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(18204,'MAIN_INFO_SOCIETE_OBJECT',1,'A company demo to show how Dolibarr ERP CRM is wonderfull','chaine',0,'','2025-04-16 19:50:19'),
|
(18204,'MAIN_INFO_SOCIETE_OBJECT',1,'A company demo to show how Dolibarr ERP CRM is wonderfull','chaine',0,'','2025-04-16 19:50:19'),
|
||||||
(18205,'SOCIETE_FISCAL_MONTH_START',1,'4','chaine',0,'','2025-04-16 19:50:19'),
|
(18205,'SOCIETE_FISCAL_MONTH_START',1,'4','chaine',0,'','2025-04-16 19:50:19'),
|
||||||
(18206,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2025-04-16 19:50:19'),
|
(18206,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2025-04-16 19:50:19'),
|
||||||
(18234,'MAIN_MODULE_DOLISTORE_API_KEY',1,'dolcrypt:AES-256-CTR:d4169f5ecebe9852:mSXcyJujXRYwvP1DmsaFgevA','chaine',1,'','2025-04-17 10:04:08'),
|
(18234,'MAIN_MODULE_DOLISTORE_API_KEY',1,'dolistorepublicapi','chaine',1,'','2025-04-17 10:04:08'),
|
||||||
(18241,'PROJET_VISIBILITY',1,'0','chaine',0,'','2025-04-18 11:17:47'),
|
(18241,'PROJET_VISIBILITY',1,'0','chaine',0,'','2025-04-18 11:17:47'),
|
||||||
(18242,'PROJECT_ENABLE_PUBLIC',1,'1','chaine',0,'','2025-04-18 11:17:47'),
|
(18242,'PROJECT_ENABLE_PUBLIC',1,'1','chaine',0,'','2025-04-18 11:17:47'),
|
||||||
(18243,'PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD',1,'-1','chaine',0,'','2025-04-18 11:17:47'),
|
(18243,'PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD',1,'-1','chaine',0,'','2025-04-18 11:17:47'),
|
||||||
@@ -65517,7 +65516,7 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(18256,'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT',1,'34','chaine',0,'','2025-04-18 11:21:49'),
|
(18256,'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT',1,'34','chaine',0,'','2025-04-18 11:21:49'),
|
||||||
(18257,'SERVICE_BOOTH_LOCATION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
|
(18257,'SERVICE_BOOTH_LOCATION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
|
||||||
(18258,'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
|
(18258,'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION',1,'0','chaine',0,'','2025-04-18 11:21:49'),
|
||||||
(18260,'EVENTORGANIZATION_SECUREKEY',1,'dolcrypt:AES-256-CTR:83f6e644d47eaf29:GIDq0w==','chaine',0,'','2025-04-18 13:46:59'),
|
(18260,'EVENTORGANIZATION_SECUREKEY',1,'demokey','chaine',0,'','2025-04-18 13:46:59'),
|
||||||
(18271,'MAIN_ENABLE_OVERWRITE_TRANSLATION',1,'1','chaine',0,'','2025-04-21 12:59:49'),
|
(18271,'MAIN_ENABLE_OVERWRITE_TRANSLATION',1,'1','chaine',0,'','2025-04-21 12:59:49'),
|
||||||
(18273,'RESOURCE_USED_IN_EVENT_CHECK',1,'1','chaine',0,'','2025-04-22 17:20:40'),
|
(18273,'RESOURCE_USED_IN_EVENT_CHECK',1,'1','chaine',0,'','2025-04-22 17:20:40'),
|
||||||
(18275,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2025-04-24 12:08:27'),
|
(18275,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2025-04-24 12:08:27'),
|
||||||
@@ -65556,8 +65555,6 @@ INSERT INTO `llx_const` VALUES
|
|||||||
(18588,'TAWKTO_WIDGET_ID',1,'123','chaine',0,'','2025-05-12 08:36:50'),
|
(18588,'TAWKTO_WIDGET_ID',1,'123','chaine',0,'','2025-05-12 08:36:50'),
|
||||||
(18678,'SELLYOURSAAS_ALLOW_SELECTION_OF_SERVICE',1,'1','chaine',0,'','2025-05-26 12:57:33'),
|
(18678,'SELLYOURSAAS_ALLOW_SELECTION_OF_SERVICE',1,'1','chaine',0,'','2025-05-26 12:57:33'),
|
||||||
(18719,'SELLYOURSAAS_ALLOW_RESELLER_PROGRAM',1,'1','chaine',0,'','2025-05-26 13:41:52'),
|
(18719,'SELLYOURSAAS_ALLOW_RESELLER_PROGRAM',1,'1','chaine',0,'','2025-05-26 13:41:52'),
|
||||||
(18722,'STRIPE_TEST_PUBLISHABLE_KEY',1,'dolcrypt:AES-256-CTR:d484ce93b5b8497d:T5UVYovfd4RjjYBmTt7Xipdly/dt5R7A/7TwBytAV6E=','chaine',0,'','2025-05-26 15:26:42'),
|
|
||||||
(18723,'STRIPE_TEST_SECRET_KEY',1,'dolcrypt:AES-256-CTR:eebc90c2ac9810a9:87fh2hsZr7l+dExy/ngsDP25FaoEkRfHkjdqKGulFBU=','chaine',0,'','2025-05-26 15:26:42'),
|
|
||||||
(18724,'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS',1,'4','chaine',0,'','2025-05-26 15:26:42'),
|
(18724,'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS',1,'4','chaine',0,'','2025-05-26 15:26:42'),
|
||||||
(18725,'STRIPE_USER_ACCOUNT_FOR_ACTIONS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
|
(18725,'STRIPE_USER_ACCOUNT_FOR_ACTIONS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
|
||||||
(18726,'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
|
(18726,'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS',1,'0','chaine',0,'','2025-05-26 15:26:42'),
|
||||||
@@ -65824,12 +65821,12 @@ LOCK TABLES `llx_contrat_extrafields` WRITE;
|
|||||||
/*!40000 ALTER TABLE `llx_contrat_extrafields` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_contrat_extrafields` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_contrat_extrafields` VALUES
|
INSERT INTO `llx_contrat_extrafields` VALUES
|
||||||
(1,'2023-01-19 12:39:56',2,NULL,NULL,NULL,'done',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(1,'2023-01-19 12:39:56',2,NULL,NULL,NULL,'done',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(5,'2025-01-03 14:13:54',8,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:13:54',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:13:54',NULL,NULL,NULL,NULL,NULL,'testldr1d.with1.home.lan','osuo724k4hqa','dolcrypt:AES-256-CTR:ce01e4a8ade3c2ee:Rn1kmDfhbw0Eb8zpBI8=','0','testldr1d.with1.home.lan','dbntq7Wk89Mt','3306','dbuZe76P3B70','dolcrypt:AES-256-CTR:e0775c31971de7f3:YsE0Bi6lWG63zd537qc=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(5,'2025-01-03 14:13:54',8,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:13:54',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:13:54',NULL,NULL,NULL,NULL,NULL,'testldr1d.with1.home.lan','osuo724k4hqa','demokey','0','testldr1d.with1.home.lan','dbntq7Wk89Mt','3306','dbuZe76P3B70','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(6,'2025-01-03 14:17:40',9,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:17:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:17:40',NULL,NULL,NULL,NULL,NULL,'testldre.with1.home.lan','osuky642i38n','dolcrypt:AES-256-CTR:402192d99e39c190:5DrzVbVS5kac7ZQUchU=','0','testldre.with1.home.lan','dbnd3X892MlO','3306','dbuCbWmMi7O8','dolcrypt:AES-256-CTR:b22360d10ff565a0:DXpgecqzOn7X/3PQCo0=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(6,'2025-01-03 14:17:40',9,NULL,'DOLICLOUD','testldr1-ABC','processing','127.0.0.1','2025-01-03 15:17:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 15:17:40',NULL,NULL,NULL,NULL,NULL,'testldre.with1.home.lan','osuky642i38n','demokey','0','testldre.with1.home.lan','dbnd3X892MlO','3306','dbuCbWmMi7O8','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(7,'2025-03-25 23:57:06',7,NULL,'DOLICLOUD','testldr1b-ABC','undeployed','127.0.0.1','2025-01-03 15:08:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-23 15:08:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1c.with1.home.lan','osu6viclw5if','dolcrypt:AES-256-CTR:281a87e3e9c5fccb:O/N7kTAeXiZaHqlEupE=','0','testldr1c.with1.home.lan','dbnrC5ydd7GC','3306','dbub5pLDMaTw','dolcrypt:AES-256-CTR:2e4a79eda1bf538a:PS7p579ZNsDQAycuq8o=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(7,'2025-03-25 23:57:06',7,NULL,'DOLICLOUD','testldr1b-ABC','undeployed','127.0.0.1','2025-01-03 15:08:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-23 15:08:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1c.with1.home.lan','osu6viclw5if','demokey','0','testldr1c.with1.home.lan','dbnrC5ydd7GC','3306','dbub5pLDMaTw','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(8,'2025-01-03 14:26:46',5,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 14:59:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 14:59:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1.with1.home.lan','osu07jp64r9z','dolcrypt:AES-256-CTR:d94d86baf2f8483b:Op7TNgxhUwrSgbilZDo=','0','testldr1.with1.home.lan','dbnL4N55fzF6','3306','dbuH73bA3QfX','dolcrypt:AES-256-CTR:535b648bbae2f12a:VEc+yVQFXPbxOqhIItQ=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(8,'2025-01-03 14:26:46',5,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 14:59:56',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-01-18 14:59:56','2025-01-03 15:26:46','127.0.0.1',NULL,NULL,NULL,'testldr1.with1.home.lan','osu07jp64r9z','demokey','0','testldr1.with1.home.lan','dbnL4N55fzF6','3306','dbuH73bA3QfX','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(9,'2025-03-25 21:53:24',6,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 15:05:10',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2026-01-19 15:05:10','2025-01-03 15:27:11','127.0.0.1',NULL,NULL,NULL,'testldr1b.with1.home.lan','osu7xkedfm24','dolcrypt:AES-256-CTR:fa3d910f3fbfdad2:o+C4Ksn2W5veGS5R5Ag=','0','testldr1b.with1.home.lan','dbnVmeQT2M8i','3306','dbuK7VsLk5c8','dolcrypt:AES-256-CTR:ccb4d385381f4b4b:lDR/2Y6QjlNt3onLr3U=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(9,'2025-03-25 21:53:24',6,NULL,'DOLICLOUD','testldr1-ABC','undeployed','127.0.0.1','2025-01-03 15:05:10',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2026-01-19 15:05:10','2025-01-03 15:27:11','127.0.0.1',NULL,NULL,NULL,'testldr1b.with1.home.lan','osu7xkedfm24','demokey','0','testldr1b.with1.home.lan','dbnVmeQT2M8i','3306','dbuK7VsLk5c8','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(10,'2025-01-28 16:39:40',10,NULL,'DOLICLOUD','Azerty01','processing','127.0.0.1','2025-01-28 17:39:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-02-12 17:39:40',NULL,NULL,NULL,NULL,NULL,'aaa.with1.home.lan','osuy6m0f5xtl','dolcrypt:AES-256-CTR:54fed010c0ce1d1c:8eXkLuQl7gNbC9RZEPM=','0','aaa.with1.home.lan','dbnSE8YB6jGm','3306','dbu8MhF1Dwcl','dolcrypt:AES-256-CTR:44f9f66acc719394:Bi7LNv+Vf6cf2ySF2aw=',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(10,'2025-01-28 16:39:40',10,NULL,'DOLICLOUD','Azerty01','processing','127.0.0.1','2025-01-28 17:39:40',NULL,'127.0.0.1',NULL,NULL,NULL,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 - fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',NULL,'2025-02-12 17:39:40',NULL,NULL,NULL,NULL,NULL,'aaa.with1.home.lan','osuy6m0f5xtl','demokey','0','aaa.with1.home.lan','dbnSE8YB6jGm','3306','dbu8MhF1Dwcl','demokey',NULL,NULL,NULL,'Europe/Paris',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(13,'2025-06-26 17:54:04',14,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL);
|
(13,'2025-06-26 17:54:04',14,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL);
|
||||||
/*!40000 ALTER TABLE `llx_contrat_extrafields` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_contrat_extrafields` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
@@ -78962,10 +78959,10 @@ INSERT INTO `llx_societe_rib` VALUES
|
|||||||
(2,1,'ban',10,'2023-02-06 14:28:24','2025-04-08 08:59:57','NLTechno','aaaa','','','','','LIABLT2XXXX',NULL,'FR76 1223 9000 0740 4608 0100 091',NULL,'','','',1,NULL,NULL,NULL,'sepamandate','societe/10/Mandat SEPA 10-NLTechno-UMR-CU1212-0005-2-1675704504.pdf','UMR-CU1212-0005-2-1675704504',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
(2,1,'ban',10,'2023-02-06 14:28:24','2025-04-08 08:59:57','NLTechno','aaaa','','','','','LIABLT2XXXX',NULL,'FR76 1223 9000 0740 4608 0100 091',NULL,'','','',1,NULL,NULL,NULL,'sepamandate','societe/10/Mandat SEPA 10-NLTechno-UMR-CU1212-0005-2-1675704504.pdf','UMR-CU1212-0005-2-1675704504',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
||||||
(3,1,'ban',33,'2023-02-21 21:33:04','2023-02-22 00:33:04','aaainlux','aaa','','','','','aaa',NULL,'aaa',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'UMR-2302212133-3-CU2212-00026',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
(3,1,'ban',33,'2023-02-21 21:33:04','2023-02-22 00:33:04','aaainlux','aaa','','','','','aaa',NULL,'aaa',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'UMR-2302212133-3-CU2212-00026',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
||||||
(4,1,'card',33,'2023-02-21 22:26:00','2023-02-22 01:26:00','aa','',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'aa',NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'',1,2032,'FR',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(4,1,'card',33,'2023-02-21 22:26:00','2023-02-22 01:26:00','aa','',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'aa',NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'',1,2032,'FR',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(5,1,'ban',1,'2023-03-08 06:41:28','2025-06-26 22:04:48','Indian SAS RIB','dfgdfgfd','','','','','LIABLT2XXXX',NULL,'dolcrypt:AES-256-CTR:6c5e3bcfba8c0873:sGWo/KYhvG8bw/oDC1uxal95cpvQLuKdzDGk86DYpdV2',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2303080641-5-CU1212-0007',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
(5,1,'ban',1,'2023-03-08 06:41:28','2025-06-26 22:04:48','Indian SAS RIB','dfgdfgfd','','','','','LIABLT2XXXX',NULL,'val1',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2303080641-5-CU1212-0007',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL),
|
||||||
(6,1,'ban',39,'2025-01-03 16:11:35','2025-01-03 15:11:37','test','test','','','','','LIABLT2XXXX',NULL,'dolcrypt:AES-256-CTR:d0fbb5f8f1882d9f:QruV8ONPL6fQK4ew6aDzI4VSdBU=',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'8ANKF3PEOTZ53TR4','2025-01-03','RCUR',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdCXECxfvxGwHdwPnN4agJk',0,'mandate_1QdCXECxfvxGwHdwIdo2yLTd',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
|
(6,1,'ban',39,'2025-01-03 16:11:35','2025-01-03 15:11:37','test','test','','','','','LIABLT2XXXX',NULL,'val2',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'8ANKF3PEOTZ53TR4','2025-01-03','RCUR',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdCXECxfvxGwHdwPnN4agJk',0,'mandate_1QdCXECxfvxGwHdwIdo2yLTd',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
|
||||||
(7,1,'ban',39,'2025-01-03 16:21:39','2025-01-03 15:21:56','Bank Testldr1','test2','','','','','',NULL,'dolcrypt:AES-256-CTR:2143648571f74d32:ohNxpDnLCHNMP97+7XVn5i7zLNc=',NULL,'','','',0,NULL,NULL,NULL,NULL,NULL,'SDB8CASXISKK0R7L','2025-01-03','FRST',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdChDCxfvxGwHdw57zEzGtC',1,'mandate_1QdChDCxfvxGwHdwvIt0244D',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
|
(7,1,'ban',39,'2025-01-03 16:21:39','2025-01-03 15:21:56','Bank Testldr1','test2','','','','','',NULL,'val3',NULL,'','','',0,NULL,NULL,NULL,NULL,NULL,'SDB8CASXISKK0R7L','2025-01-03','FRST',NULL,NULL,'sepa_debit',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'pm_1QdChDCxfvxGwHdw57zEzGtC',1,'mandate_1QdChDCxfvxGwHdwvIt0244D',NULL,'cus_test@sk_test_xxx',NULL,NULL,NULL,'StripeTest',NULL),
|
||||||
(9,1,'ban',62,'2025-06-26 21:41:42','2025-06-26 21:41:42','Banque ddd','Banque ddd','','','','','aaa',NULL,'dolcrypt:AES-256-CTR:ef6a60cae760f8d1:Q8YW',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2506262141-9-CU2506-0003',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL);
|
(9,1,'ban',62,'2025-06-26 21:41:42','2025-06-26 21:41:42','Banque ddd','Banque ddd','','','','','aaa',NULL,'val4',NULL,'','','',1,NULL,NULL,NULL,NULL,NULL,'RUM-2506262141-9-CU2506-0003',NULL,'FRST',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,'',1,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL);
|
||||||
/*!40000 ALTER TABLE `llx_societe_rib` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_societe_rib` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@@ -79918,13 +79915,13 @@ CREATE TABLE `llx_user` (
|
|||||||
LOCK TABLES `llx_user` WRITE;
|
LOCK TABLES `llx_user` WRITE;
|
||||||
/*!40000 ALTER TABLE `llx_user` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `llx_user` DISABLE KEYS */;
|
||||||
INSERT INTO `llx_user` VALUES
|
INSERT INTO `llx_user` VALUES
|
||||||
(1,'2012-07-08 13:20:11','2025-03-13 09:13:00',NULL,NULL,'aeinstein',0,'','',NULL,1,NULL,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,'dolcrypt:AES-256-CTR:10fbb3f05469219f:vCpWlcfDIoN6yOj2yGQ1WsOCfB8i2cjEKOAhNzPwf/A=','Einstein','Albert','','123456789','','','','aeinstein@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,'',0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
(1,'2012-07-08 13:20:11','2025-03-13 09:13:00',NULL,NULL,'aeinstein',0,'','',NULL,1,NULL,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,'demokey','Einstein','Albert','','123456789','','','','aeinstein@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,'',0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
||||||
(2,'2012-07-08 13:54:48','2025-05-05 12:08:56',NULL,NULL,'demo',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Doe','David','Trainee','09123123','','','','daviddoe@example.com','','[]','',0,NULL,NULL,NULL,'','2018-07-30 23:10:54','2018-07-30 23:04:17',NULL,'',1,'person9.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,35.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
(2,'2012-07-08 13:54:48','2025-05-05 12:08:56',NULL,NULL,'demo',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Doe','David','Trainee','09123123','','','','daviddoe@example.com','','[]','',0,NULL,NULL,NULL,'','2018-07-30 23:10:54','2018-07-30 23:04:17',NULL,'',1,'person9.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,35.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
||||||
(3,'2012-07-11 16:18:59','2025-05-05 14:48:17',NULL,NULL,'pcurie',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','','[]','',0,NULL,NULL,2,'','2014-12-21 17:38:55',NULL,NULL,'',1,'dolicloud_avent_saas.png',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,39.00000000,'','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
(3,'2012-07-11 16:18:59','2025-05-05 14:48:17',NULL,NULL,'pcurie',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','','[]','',0,NULL,NULL,2,'','2014-12-21 17:38:55',NULL,NULL,'',1,'dolicloud_avent_saas.png',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,39.00000000,'','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
||||||
(4,'2015-01-23 17:52:27','2025-05-05 14:48:18',NULL,NULL,'bbookkeeper',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','bbookkeeper@example.com','','{\"skype\":\"skypebbookkeeper\"}','',0,17,6,NULL,'','2015-02-25 10:18:41','2015-01-23 17:53:20',NULL,'',1,'person8.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,16.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
(4,'2015-01-23 17:52:27','2025-05-05 14:48:18',NULL,NULL,'bbookkeeper',1,'','',NULL,1,NULL,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','bbookkeeper@example.com','','{\"skype\":\"skypebbookkeeper\"}','',0,17,6,NULL,'','2015-02-25 10:18:41','2015-01-23 17:53:20',NULL,'',1,'person8.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,NULL,NULL,NULL,16.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
||||||
(10,'2017-10-03 11:47:41','2023-03-15 15:07:13',NULL,NULL,'mcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Marie','','','','','','mcurie@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,NULL,0,NULL,NULL,NULL,44.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(10,'2017-10-03 11:47:41','2023-03-15 15:07:13',NULL,NULL,'mcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Marie','','','','','','mcurie@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,NULL,0,NULL,NULL,NULL,44.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(11,'2017-10-05 09:07:52','2023-03-15 15:07:13',NULL,NULL,'zzeceo',1,NULL,'',NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Zeceo','Zack','President - CEO','','','','','zzeceo@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'','2017-10-05 22:48:08','2017-10-05 21:18:46',NULL,'',1,'person4.jpeg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,NULL,NULL,NULL,39.00000000,NULL,'','2019-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(11,'2017-10-05 09:07:52','2023-03-15 15:07:13',NULL,NULL,'zzeceo',1,NULL,'',NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Zeceo','Zack','President - CEO','','','','','zzeceo@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'','2017-10-05 22:48:08','2017-10-05 21:18:46',NULL,'',1,'person4.jpeg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,NULL,NULL,NULL,39.00000000,NULL,'','2019-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(12,'2017-10-05 09:09:46','2025-03-27 23:27:43',NULL,12,'admin',0,'','',NULL,1,NULL,NULL,'$2y$10$MiDs0GVn0ksYbOHw8XgAf.oEihYvLI0ZYd0PSVq7/6ret6gifWSh6',NULL,'dolcrypt:AES-256-CTR:10fbb3f05469219f:5nJ/t5SbepR61dTsy2pTYfGEZS5j+bj3Ds0FN0OVM5M=','Adminson','Alice','Admin Technical','','','','','laurent@destailleur.fr','','[]','Alice - 123',1,NULL,NULL,NULL,'kmlk','2025-07-10 13:00:34','2025-07-09 16:26:18',NULL,'',1,NULL,NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,'127.0.0.1','127.0.0.1','2025-03-27 23:27:43',NULL,NULL,'',NULL,'2025-03-27 23:27:38',NULL),
|
(12,'2017-10-05 09:09:46','2025-03-27 23:27:43',NULL,12,'admin',0,'','',NULL,1,NULL,NULL,'$2y$10$MiDs0GVn0ksYbOHw8XgAf.oEihYvLI0ZYd0PSVq7/6ret6gifWSh6',NULL,'demokey','Adminson','Alice','Admin Technical','','','','','laurent@destailleur.fr','','[]','Alice - 123',1,NULL,NULL,NULL,'kmlk','2025-07-10 13:00:34','2025-07-09 16:26:18',NULL,'',1,NULL,NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,'127.0.0.1','127.0.0.1','2025-03-27 23:27:43',NULL,NULL,'',NULL,'2025-03-27 23:27:38',NULL),
|
||||||
(13,'2017-10-05 21:29:35','2025-04-15 13:30:44',NULL,NULL,'ccommercy',1,'','',NULL,1,NULL,NULL,'$2y$10$KTaKE0NyYyJSCogsxtwR.eADst17XYMrOWlsFfVLR60IbjANIVLHK',NULL,NULL,'Commercy','Coraly','Commercial leader','','','','','ccommercy@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person7.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,1890.00000000,NULL,NULL,25.00000000,'woman','','2018-09-11 00:00:00',NULL,NULL,'1998-12-08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
(13,'2017-10-05 21:29:35','2025-04-15 13:30:44',NULL,NULL,'ccommercy',1,'','',NULL,1,NULL,NULL,'$2y$10$KTaKE0NyYyJSCogsxtwR.eADst17XYMrOWlsFfVLR60IbjANIVLHK',NULL,NULL,'Commercy','Coraly','Commercial leader','','','','','ccommercy@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person7.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,'',0,1890.00000000,NULL,NULL,25.00000000,'woman','','2018-09-11 00:00:00',NULL,NULL,'1998-12-08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL),
|
||||||
(14,'2017-10-05 21:33:33','2023-03-15 15:07:36',NULL,NULL,'sscientol',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Scientol','Sam','Scientist leader','','','','','sscientol@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person3.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,3500.00000000,NULL,NULL,39.00000000,NULL,NULL,'2018-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(14,'2017-10-05 21:33:33','2023-03-15 15:07:36',NULL,NULL,'sscientol',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Scientol','Sam','Scientist leader','','','','','sscientol@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person3.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,3500.00000000,NULL,NULL,39.00000000,NULL,NULL,'2018-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
(16,'2017-10-05 22:47:52','2025-01-30 14:37:22',NULL,NULL,'ccommerson',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Charle1','Commerson','Sale representative','','','','','ccommerson@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 23:46:24','2017-10-05 23:37:31',NULL,'',0,'person1.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,2900.00000000,NULL,NULL,39.00000000,NULL,NULL,'2019-09-01 00:00:00',NULL,NULL,'1976-02-05',NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
(16,'2017-10-05 22:47:52','2025-01-30 14:37:22',NULL,NULL,'ccommerson',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Charle1','Commerson','Sale representative','','','','','ccommerson@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 23:46:24','2017-10-05 23:37:31',NULL,'',0,'person1.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,NULL,0,2900.00000000,NULL,NULL,39.00000000,NULL,NULL,'2019-09-01 00:00:00',NULL,NULL,'1976-02-05',NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
|
||||||
@@ -80120,7 +80117,7 @@ INSERT INTO `llx_user_param` VALUES
|
|||||||
(12,1,'MAIN_BOXES_11','1'),
|
(12,1,'MAIN_BOXES_11','1'),
|
||||||
(12,1,'MAIN_BOXES_2','1'),
|
(12,1,'MAIN_BOXES_2','1'),
|
||||||
(12,1,'MAIN_BOXES_27','1'),
|
(12,1,'MAIN_BOXES_27','1'),
|
||||||
(12,1,'MAIN_LANG_DEFAULT','fr_FR'),
|
(12,1,'MAIN_LANG_DEFAULT','auto'),
|
||||||
(12,1,'MAIN_SELECTEDFIELDS_/dolibarr_4.0/htdocs/adherents/list.php','d.zip,d.ref,d.lastname,d.firstname,d.company,d.login,d.morphy,t.libelle,d.email,d.datefin,d.statut,'),
|
(12,1,'MAIN_SELECTEDFIELDS_/dolibarr_4.0/htdocs/adherents/list.php','d.zip,d.ref,d.lastname,d.firstname,d.company,d.login,d.morphy,t.libelle,d.email,d.datefin,d.statut,'),
|
||||||
(12,1,'MAIN_SELECTEDFIELDS_accountancycustomerlist','l.rowid,f.ref,f.datef,p.ref,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.data_suggest,aa.account_number,'),
|
(12,1,'MAIN_SELECTEDFIELDS_accountancycustomerlist','l.rowid,f.ref,f.datef,p.ref,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.data_suggest,aa.account_number,'),
|
||||||
(12,1,'MAIN_SELECTEDFIELDS_accountancysupplierlines','l.rowid,f.ref,f.datef,p.ref,l.description,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.account_number,'),
|
(12,1,'MAIN_SELECTEDFIELDS_accountancysupplierlines','l.rowid,f.ref,f.datef,p.ref,l.description,l.total_ht,l.tva_tx,s.nom,co.label,s.tva_intra,aa.account_number,'),
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ if (empty($sourceserver) || empty($server) || empty($login) || empty($sourcefile
|
|||||||
print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh databaseserver databasename loginbase passbase\n";
|
print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh databaseserver databasename loginbase passbase\n";
|
||||||
print "Return code: 0 if success, <>0 if error\n";
|
print "Return code: 0 if success, <>0 if error\n";
|
||||||
print "Warning, this script may take a long time.\n";
|
print "Warning, this script may take a long time.\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ $connection = ssh2_connect($server, 22);
|
|||||||
if ($connection) {
|
if ($connection) {
|
||||||
if (!@ssh2_auth_password($connection, $login, $password)) {
|
if (!@ssh2_auth_password($connection, $login, $password)) {
|
||||||
dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password), LOG_ERR);
|
dol_syslog("Could not authenticate with username ".$login." . and password ".preg_replace('/./', '*', $password), LOG_ERR);
|
||||||
exit(-5);
|
exit(5);
|
||||||
} else {
|
} else {
|
||||||
//$stream = ssh2_exec($connection, '/usr/bin/php -i');
|
//$stream = ssh2_exec($connection, '/usr/bin/php -i');
|
||||||
/*
|
/*
|
||||||
@@ -143,7 +143,7 @@ if ($connection) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print 'Failed to connect to ssh2 to '.$server;
|
print 'Failed to connect to ssh2 to '.$server;
|
||||||
exit(-6);
|
exit(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ print "Update dates to current year for database name = ".$db->database_name."\n
|
|||||||
if (empty($confirm)) {
|
if (empty($confirm)) {
|
||||||
print "Usage: $script_file confirm\n";
|
print "Usage: $script_file confirm\n";
|
||||||
print "Return code: 0 if success, <>0 if error\n";
|
print "Return code: 0 if success, <>0 if error\n";
|
||||||
exit(-1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,33 +2,33 @@
|
|||||||
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i"
|
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i"
|
||||||
#php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com"
|
#php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com"
|
||||||
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com"
|
#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com"
|
||||||
|
|
||||||
php_admin_value open_basedir /tmp/:/home/.../htdocs:/home/.../dolibarr_documents:
|
php_admin_value open_basedir /tmp/:/home/.../htdocs:/home/.../dolibarr_documents:
|
||||||
|
|
||||||
|
|
||||||
# Add this to use a custom apparmor profile when using apache php handler
|
# Add this to use a custom apparmor profile when using apache php handler
|
||||||
<IfModule mod_apparmor.c>
|
<IfModule mod_apparmor.c>
|
||||||
AADefaultHatName sellyoursaas-instances
|
AADefaultHatName sellyoursaas-instances
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
|
|
||||||
# The URLs of the web site
|
# The URLs of the web site
|
||||||
ServerName myvirtualalias
|
ServerName myvirtualalias
|
||||||
ServerAlias myvirtualalias
|
ServerAlias myvirtualalias
|
||||||
|
|
||||||
UseCanonicalName On
|
UseCanonicalName On
|
||||||
|
|
||||||
KeepAlive On
|
KeepAlive On
|
||||||
KeepAliveTimeout 5
|
KeepAliveTimeout 5
|
||||||
MaxKeepAliveRequests 20
|
MaxKeepAliveRequests 20
|
||||||
|
|
||||||
AddDefaultCharset UTF-8
|
AddDefaultCharset UTF-8
|
||||||
|
|
||||||
|
|
||||||
# Detect if we are using DoliDroid
|
# Detect if we are using DoliDroid
|
||||||
#SetEnvIf User-Agent DoliDroid dolidroid
|
#SetEnvIf User-Agent DoliDroid dolidroid
|
||||||
|
|
||||||
|
|
||||||
# The directory and permissions for the web site
|
# The directory and permissions for the web site
|
||||||
DocumentRoot "/home/.../htdocs"
|
DocumentRoot "/home/.../htdocs"
|
||||||
<Directory /home/.../htdocs/>
|
<Directory /home/.../htdocs/>
|
||||||
@@ -36,24 +36,19 @@
|
|||||||
Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
|
Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
|
||||||
Require all granted
|
Require all granted
|
||||||
|
|
||||||
# To restrict access by a HTTP basic auth
|
# To restrict access by a HTTP basic auth
|
||||||
#AuthType Basic
|
#AuthType Basic
|
||||||
#AuthName "Authenticate to backoffice"
|
#AuthName "Authenticate to backoffice"
|
||||||
#AuthUserFile /etc/apache2/.htpasswd
|
#AuthUserFile /etc/apache2/.htpasswd
|
||||||
#require valid-user
|
#require valid-user
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
# Leaving /public and /api, /dav, .well_known but also wrappers for document, viewimage and public json/img accessible to everyone
|
# Leaving /public, /dav and /.well_known directory accessible to everyone
|
||||||
<Directory /home/admin/wwwroot/dolibarr/htdocs/public/>
|
<Directory /home/admin/wwwroot/dolibarr/htdocs/public/>
|
||||||
AuthType None
|
AuthType None
|
||||||
Satisfy any
|
Satisfy any
|
||||||
Require all granted
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
<Directory /home/admin/wwwroot/dolibarr/htdocs/api/>
|
|
||||||
AuthType None
|
|
||||||
Satisfy any
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
<Directory /home/admin/wwwroot/dolibarr/htdocs/dav/>
|
<Directory /home/admin/wwwroot/dolibarr/htdocs/dav/>
|
||||||
AuthType None
|
AuthType None
|
||||||
Satisfy any
|
Satisfy any
|
||||||
@@ -64,6 +59,14 @@
|
|||||||
Satisfy any
|
Satisfy any
|
||||||
Require all granted
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
# You may also want to allow access to everyone to wrappers for api, document, viewimage, manifest and public json/img
|
||||||
|
# but if you can avoid it, it is better.
|
||||||
|
<Files /home/admin/wwwroot/dolibarr/htdocs/api/index.php>
|
||||||
|
AuthType None
|
||||||
|
Satisfy any
|
||||||
|
Require all granted
|
||||||
|
</Files>
|
||||||
<Files ~ "(document\.php|viewimage\.php|\.js\.php|\.json\.php|\.js|\.css\.php|\.css|\.gif|\.png|\.svg|\.woff2|favicon\.ico)$">
|
<Files ~ "(document\.php|viewimage\.php|\.js\.php|\.json\.php|\.js|\.css\.php|\.css|\.gif|\.png|\.svg|\.woff2|favicon\.ico)$">
|
||||||
AuthType None
|
AuthType None
|
||||||
Satisfy any
|
Satisfy any
|
||||||
@@ -71,11 +74,11 @@
|
|||||||
</Files>
|
</Files>
|
||||||
|
|
||||||
|
|
||||||
# Log directives
|
# Log directives
|
||||||
ErrorLog /var/log/apache2/myvirtualalias_error_log
|
ErrorLog /var/log/apache2/myvirtualalias_error_log
|
||||||
TransferLog /var/log/apache2/myvirtualalias_access_log
|
TransferLog /var/log/apache2/myvirtualalias_access_log
|
||||||
|
|
||||||
|
|
||||||
# Compress is done on resources of type php pages, text file export, css and javascript
|
# Compress is done on resources of type php pages, text file export, css and javascript
|
||||||
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
|
||||||
AddType text/javascript .jgz
|
AddType text/javascript .jgz
|
||||||
@@ -92,21 +95,21 @@
|
|||||||
ExpiresByType text/javascript A2592000
|
ExpiresByType text/javascript A2592000
|
||||||
ExpiresByType application/x-javascript A2592000
|
ExpiresByType application/x-javascript A2592000
|
||||||
ExpiresByType application/javascript A2592000
|
ExpiresByType application/javascript A2592000
|
||||||
|
|
||||||
|
|
||||||
# To enable the SSL if the certificate file exists
|
# To enable the SSL if the certificate file exists
|
||||||
<IfFile "/etc/letsencrypt/live/www.mydomain.com/cert.pem">
|
<IfFile "/etc/letsencrypt/live/www.mydomain.com/cert.pem">
|
||||||
SSLEngine On
|
SSLEngine On
|
||||||
|
|
||||||
# If both key and certificate are stored in the same file, only the
|
# If both key and certificate are stored in the same file, only the
|
||||||
# SSLCertificateFile directive is needed.
|
# SSLCertificateFile directive is needed.
|
||||||
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
|
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
|
||||||
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
|
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
|
||||||
SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem
|
SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem
|
||||||
|
|
||||||
#RewriteEngine on
|
#RewriteEngine on
|
||||||
#RewriteCond %{SERVER_PORT} ^80$
|
#RewriteCond %{SERVER_PORT} ^80$
|
||||||
#RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
|
#RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
|
||||||
</IfFile>
|
</IfFile>
|
||||||
|
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
= To install Bruno on Ubuntu =
|
|
||||||
sudo snap install bruno
|
|
||||||
|
|
||||||
Then create a project.
|
|
||||||
|
|
||||||
Then you can import the definition of all API from Bruno by using the URL provided in Dolibarr API module.
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1",
|
|
||||||
"name": "Dolibarr API Explorer",
|
|
||||||
"type": "collection",
|
|
||||||
"ignore": [
|
|
||||||
"node_modules",
|
|
||||||
".git"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
headers {
|
|
||||||
DOLAPIKEY: {{DOLAPIKEY}}
|
|
||||||
}
|
|
||||||
|
|
||||||
auth {
|
|
||||||
mode: bearer
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
vars {
|
|
||||||
base_url: http://localhost/dolibarr_dev/htdocs/api/index.php
|
|
||||||
}
|
|
||||||
vars:secret [
|
|
||||||
DOLAPIKEY
|
|
||||||
]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
meta {
|
|
||||||
name: Get status -Dolibarr version- --
|
|
||||||
type: http
|
|
||||||
seq: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
get {
|
|
||||||
url: {{base_url}}/status
|
|
||||||
body: none
|
|
||||||
auth: none
|
|
||||||
}
|
|
||||||
@@ -28,8 +28,15 @@
|
|||||||
|
|
||||||
<rule ref="Internal.NoCodeFound" />
|
<rule ref="Internal.NoCodeFound" />
|
||||||
|
|
||||||
|
|
||||||
<!-- Rules from Generic Standard -->
|
<!-- Rules from Generic Standard -->
|
||||||
|
<!--
|
||||||
|
<rule ref="PSR12.Files.OpenTag">
|
||||||
|
<properties>
|
||||||
|
<property name="ignoreIndent" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
<exclude name="PSR12.WhiteSpace.ScopeIndent"/>
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- We want to allow empty statement: It allows to put some code comments into the else for examples -->
|
<!-- We want to allow empty statement: It allows to put some code comments into the else for examples -->
|
||||||
<rule ref="Generic.CodeAnalysis.EmptyStatement">
|
<rule ref="Generic.CodeAnalysis.EmptyStatement">
|
||||||
@@ -134,7 +141,7 @@
|
|||||||
|
|
||||||
<rule ref="Generic.Formatting.SpaceAfterCast" />
|
<rule ref="Generic.Formatting.SpaceAfterCast" />
|
||||||
|
|
||||||
<rule ref="Generic.Functions.CallTimePassByReference" />
|
<!-- <rule ref="Generic.Functions.CallTimePassByReference" /> This rule does not exists anymore -->
|
||||||
|
|
||||||
<rule ref="Generic.Functions.FunctionCallArgumentSpacing" />
|
<rule ref="Generic.Functions.FunctionCallArgumentSpacing" />
|
||||||
|
|
||||||
|
|||||||
5
dev/setup/git/README.md
Normal file
5
dev/setup/git/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
To enable a default git commit template:
|
||||||
|
git config --local commit.template gitmessage
|
||||||
|
|
||||||
|
To enable the git hook pre-commit, to make CI validation at commit:
|
||||||
|
See the file pre-commit/README.md
|
||||||
12
dev/setup/git/hooks/msg-commit
Executable file
12
dev/setup/git/hooks/msg-commit
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Hook to force a prefix on commits
|
||||||
|
|
||||||
|
commit_msg_file=$1
|
||||||
|
first_line=$(head -n1 "$commit_msg_file")
|
||||||
|
|
||||||
|
if echo "$first_line" | grep -Eqi '^(QUAL|SEC|PERF|FIX|CLOSE|NEW|Clean code|Debug[CSS)'; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "The commit message must start with QUAL, SEC, PERF, FIX, CLOSE, NEW, Clean code, Debug, CSS ..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -12,10 +12,10 @@ HERE="$(cd "$(dirname "$0")" && pwd)"
|
|||||||
ARGS+=(--hook-dir "$HERE" -- "$@")
|
ARGS+=(--hook-dir "$HERE" -- "$@")
|
||||||
|
|
||||||
if [ -x "$INSTALL_PYTHON" ]; then
|
if [ -x "$INSTALL_PYTHON" ]; then
|
||||||
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" 1>&2
|
exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" 1>&2
|
||||||
elif command -v pre-commit > /dev/null; then
|
elif command -v pre-commit > /dev/null; then
|
||||||
exec pre-commit "${ARGS[@]}" 1>&2
|
exec pre-commit "${ARGS[@]}" 1>&2
|
||||||
else
|
else
|
||||||
echo 'pre-commit not found. Did you forget to activate your virtualenv?' 1>&2
|
echo 'pre-commit not found. Did you forget to activate your virtualenv?' 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
12
dev/setup/logrotate.d/logrotate_dolibarr_log
Normal file
12
dev/setup/logrotate.d/logrotate_dolibarr_log
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Example of logrotate file to put into /etc/logrotate.d to make the rotation of
|
||||||
|
# the dolibarr log files.
|
||||||
|
/home/admin/wwwroot/dolibarr_documents/*.log {
|
||||||
|
su admin www-data
|
||||||
|
daily
|
||||||
|
rotate 7
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
create 660 admin www-data
|
||||||
|
}
|
||||||
@@ -124,38 +124,47 @@ $urlgit = 'https://github.com/Dolibarr/dolibarr/blob/develop/';
|
|||||||
$output_arrproj = array();
|
$output_arrproj = array();
|
||||||
$output_arrdep = array();
|
$output_arrdep = array();
|
||||||
if ($dirscc != 'disabled') {
|
if ($dirscc != 'disabled') {
|
||||||
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc . --exclude-dir=htdocs/includes,htdocs/custom,htdocs/theme/common/fontawesome-5,htdocs/theme/common/octicons';
|
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc . --exclude-dir=htdocs/custom,htdocs/includes,htdocs/public/includes,htdocs/theme/common/fontawesome-5,htdocs/public/theme/common/fontawesome-5 --cocomo-project-type semi-detached';
|
||||||
print 'Execute SCC to count lines of code in project: '.$commandcheck."\n";
|
print 'Execute SCC to count lines of code in project: '.$commandcheck."\n";
|
||||||
$resexecproj = 0;
|
$resexecproj = 0;
|
||||||
exec($commandcheck, $output_arrproj, $resexecproj);
|
exec($commandcheck, $output_arrproj, $resexecproj);
|
||||||
|
|
||||||
|
|
||||||
// Count lines of code of dependencies
|
// Count lines of code of dependencies
|
||||||
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc htdocs/includes htdocs/theme/common/fontawesome-5 htdocs/theme/common/octicons';
|
$commandcheck = ($dirscc ? $dirscc.'/' : '').'scc htdocs/includes htdocs/public/includes htdocs/theme/common/fontawesome-5 htdocs/public/theme/common/fontawesome-5 --cocomo-project-type semi-detached';
|
||||||
print 'Execute SCC to count lines of code in dependencies: '.$commandcheck."\n";
|
print 'Execute SCC to count lines of code in dependencies: '.$commandcheck."\n";
|
||||||
$resexecdep = 0;
|
$resexecdep = 0;
|
||||||
exec($commandcheck, $output_arrdep, $resexecdep);
|
exec($commandcheck, $output_arrdep, $resexecdep);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get technical debt with PHPStan
|
// Get technical debt with PHPStan
|
||||||
$output_arrtd = array();
|
$output_arrver = array();
|
||||||
if ($dirphpstan != 'disabled') {
|
if ($dirphpstan != 'disabled') {
|
||||||
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --version';
|
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --version';
|
||||||
print 'Execute PHPStan to get the version: '.$commandcheck."\n";
|
print 'Execute PHPStan to get the version: '.$commandcheck."\n";
|
||||||
$resexectd = 0;
|
$resexecver = 0;
|
||||||
exec($commandcheck, $output_arrtd, $resexectd);
|
exec($commandcheck, $output_arrver, $resexecver);
|
||||||
}
|
}
|
||||||
$phpstanversion = $output_arrtd[0];
|
$phpstanversion = $output_arrver[0];
|
||||||
|
|
||||||
$output_arrtd = array();
|
$output_arrtd = array();
|
||||||
if ($dirphpstan != 'disabled') {
|
if ($dirphpstan != 'disabled') {
|
||||||
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --level='.$PHPSTANLEVEL.' -v analyze -a dev/build/phpstan/bootstrap.php --memory-limit 5G --error-format=github -c ~/preview.dolibarr.org/dolibarr/phpstan_apstats.neon';
|
$commandcheck = ($dirphpstan ? $dirphpstan.'/' : '').'phpstan --level='.$PHPSTANLEVEL.' -v analyze -a dev/build/phpstan/bootstrap.php --memory-limit 5G --error-format=github -c phpstan_apstats.neon';
|
||||||
print 'Execute PHPStan to get the technical debt: '.$commandcheck."\n";
|
print 'Execute PHPStan to get the technical debt: '.$commandcheck."\n";
|
||||||
$resexectd = 0;
|
$resexectd = 0;
|
||||||
exec($commandcheck, $output_arrtd, $resexectd);
|
exec($commandcheck, $output_arrtd, $resexectd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get technical debt with Phan
|
// Get technical debt with Phan
|
||||||
|
$output_arrverphan = array();
|
||||||
|
if ($dirphpstan != 'disabled') {
|
||||||
|
$commandcheck = ($dir_phan ? $dir_phan.DIRECTORY_SEPARATOR : '') .'phan --version';
|
||||||
|
print 'Execute Phan to get the version: '.$commandcheck."\n";
|
||||||
|
$resexecverphan = 0;
|
||||||
|
exec($commandcheck, $output_arrverphan, $resexecverphan);
|
||||||
|
}
|
||||||
|
$phpphanversion = $output_arrverphan[0];
|
||||||
|
|
||||||
$output_phan_json = array();
|
$output_phan_json = array();
|
||||||
$res_exec_phan = 0;
|
$res_exec_phan = 0;
|
||||||
if ($dir_phan != 'disabled') {
|
if ($dir_phan != 'disabled') {
|
||||||
@@ -245,19 +254,20 @@ foreach (array('proj', 'dep') as $source) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get stats on nb of commits
|
||||||
|
/*
|
||||||
$nbofmonth = 2;
|
$nbofmonth = 2;
|
||||||
$delay = (3600 * 24 * 30 * $nbofmonth);
|
$delay = (3600 * 24 * 30 * $nbofmonth);
|
||||||
|
|
||||||
// Get stats on nb of commits
|
|
||||||
$commandcheck = "git log --all --shortstat --no-renames --no-merges --use-mailmap --pretty=".escapeshellarg('format:%cI;%H;%aN;%aE;%ce;%s')." --since=".dol_print_date(dol_now() - $delay, '%Y-%m-%d'); // --since= --until=...
|
$commandcheck = "git log --all --shortstat --no-renames --no-merges --use-mailmap --pretty=".escapeshellarg('format:%cI;%H;%aN;%aE;%ce;%s')." --since=".dol_print_date(dol_now() - $delay, '%Y-%m-%d'); // --since= --until=...
|
||||||
print 'Execute git log to get list of commits: '.$commandcheck."\n";
|
print 'Execute git log to get list of commits: '.$commandcheck."\n";
|
||||||
$output_arrglpu = array();
|
$output_arrglpu = array();
|
||||||
$resexecglpu = 0;
|
$resexecglpu = 0;
|
||||||
//exec($commandcheck, $output_arrglpu, $resexecglpu);
|
//exec($commandcheck, $output_arrglpu, $resexecglpu);
|
||||||
|
*/
|
||||||
|
|
||||||
// Get git information for security alerts
|
// Get git information for security alerts
|
||||||
$nbofmonth = 3;
|
$nbofmonth = 6;
|
||||||
$delay = (3600 * 24 * 30 * $nbofmonth);
|
$delay = (3600 * 24 * 30 * $nbofmonth);
|
||||||
$arrayofalerts = array();
|
$arrayofalerts = array();
|
||||||
|
|
||||||
@@ -266,14 +276,14 @@ print 'Execute git log to get commits related to security: '.$commandcheck."\n";
|
|||||||
$output_arrglpu = array();
|
$output_arrglpu = array();
|
||||||
$resexecglpu = 0;
|
$resexecglpu = 0;
|
||||||
exec($commandcheck, $output_arrglpu, $resexecglpu);
|
exec($commandcheck, $output_arrglpu, $resexecglpu);
|
||||||
foreach ($output_arrglpu as $val) {
|
foreach ($output_arrglpu as $valgitlog) { // The most recent lines are first.
|
||||||
// Parse the line to split interesting data
|
// Parse the line to split interesting data
|
||||||
$tmpval = cleanVal2($val);
|
$tmpval = cleanVal2($valgitlog);
|
||||||
|
|
||||||
if (preg_match('/(#yogosha|CVE|Sec:|Sec\s|Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Sec: Fix #..."
|
if (preg_match('/(#yogosha|CVE[\s\-]*\d|Sec:|Sec\s|Sec$)/i', $tmpval['title'])) { // Recommended git comment: "Sec: Fix #..."
|
||||||
$alreadyfound = '';
|
$alreadyfound = '';
|
||||||
$alreadyfoundcommitid = '';
|
$alreadyfoundcommitid = '';
|
||||||
foreach ($arrayofalerts as $val) {
|
foreach ($arrayofalerts as $val) { // Loop on already found alerts
|
||||||
if ($val['issueidyogosha'] && $val['issueidyogosha'] == $tmpval['issueidyogosha']) { // Already in list
|
if ($val['issueidyogosha'] && $val['issueidyogosha'] == $tmpval['issueidyogosha']) { // Already in list
|
||||||
$alreadyfound = 'yogosha';
|
$alreadyfound = 'yogosha';
|
||||||
$alreadyfoundcommitid = $val['commitid'];
|
$alreadyfoundcommitid = $val['commitid'];
|
||||||
@@ -289,7 +299,9 @@ foreach ($output_arrglpu as $val) {
|
|||||||
$alreadyfoundcommitid = $val['commitid'];
|
$alreadyfoundcommitid = $val['commitid'];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($val['title'] && $val['title'] == $tmpval['title']) { // Already in list
|
if ($val['title'] && $tmpval['title'] &&
|
||||||
|
(strpos($val['title'], $tmpval['title']) === 0 || strpos($val['title'], $tmpval['title']) > 0
|
||||||
|
|| strpos($tmpval['title'], $val['title']) === 0 || strpos($tmpval['title'], $val['title']) > 0)) { // Already in list
|
||||||
$alreadyfound = 'title';
|
$alreadyfound = 'title';
|
||||||
$alreadyfoundcommitid = $val['commitid'];
|
$alreadyfoundcommitid = $val['commitid'];
|
||||||
break;
|
break;
|
||||||
@@ -337,70 +349,22 @@ foreach ($output_arrglpu as $val) {
|
|||||||
/*var_dump($tmpval['commitid'].' '.$alreadyfoundcommitid);
|
/*var_dump($tmpval['commitid'].' '.$alreadyfoundcommitid);
|
||||||
var_dump($arrayofalerts[$alreadyfoundcommitid]['branch']);
|
var_dump($arrayofalerts[$alreadyfoundcommitid]['branch']);
|
||||||
var_dump($tmpval);*/
|
var_dump($tmpval);*/
|
||||||
|
|
||||||
|
$arrayofalerts[$alreadyfoundcommitid]['commitidbis'][] = $tmpval['commitid']; // Concat the new commitid to the list of commitidbis array of the already found case.
|
||||||
|
|
||||||
|
if (empty($arrayofalerts[$alreadyfoundcommitid]['issueid']) && !empty($tmpval['issueid'])) { // If not Github was defined, we set it.
|
||||||
|
$arrayofalerts[$alreadyfoundcommitid]['issueid'] = $tmpval['issueid'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($arrayofalerts[$alreadyfoundcommitid]['title'] != $tmpval['title']) { // Concat label of the new line to the already found one (if it differs)
|
||||||
|
$arrayofalerts[$alreadyfoundcommitid]['title'] .= ', '.preg_replace('/\.$/', '', $tmpval['title']);
|
||||||
|
}
|
||||||
|
|
||||||
$arrayofalerts[$alreadyfoundcommitid]['branch'] = array_merge($arrayofalerts[$alreadyfoundcommitid]['branch'], $tmpval['branch']);
|
$arrayofalerts[$alreadyfoundcommitid]['branch'] = array_merge($arrayofalerts[$alreadyfoundcommitid]['branch'], $tmpval['branch']);
|
||||||
|
|
||||||
$arrayofalerts[$alreadyfoundcommitid]['commitidbis'][] = $tmpval['commitid'];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
//$urlgit = 'https://api.github.com/search/issues?q=is:pr+repo:Dolibarr/dolibarr+created:>'.dol_print_date(dol_now() - $delay, "%Y-%m");
|
|
||||||
$urlgit = 'https://api.github.com/search/commits?q=repo:Dolibarr/dolibarr+yogosha+created:>'.dol_print_date(dol_now() - $delay, "%Y-%m");
|
|
||||||
|
|
||||||
// Count lines of code of application
|
|
||||||
$newurl = $urlgit.'+CVE';
|
|
||||||
$result = getURLContent($newurl);
|
|
||||||
print 'Execute GET on github for '.$newurl."\n";
|
|
||||||
if ($result && $result['http_code'] == 200) {
|
|
||||||
$arrayofalerts1 = json_decode($result['content']);
|
|
||||||
|
|
||||||
foreach ($arrayofalerts1->items as $val) {
|
|
||||||
$tmpval = cleanVal($val);
|
|
||||||
if (preg_match('/CVE/i', $tmpval['title'])) {
|
|
||||||
$arrayofalerts[$tmpval['number']] = $tmpval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print 'Error: failed to get github response';
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$newurl = $urlgit.'+yogosha';
|
|
||||||
$result = getURLContent($newurl);
|
|
||||||
print 'Execute GET on github for '.$newurl."\n";
|
|
||||||
if ($result && $result['http_code'] == 200) {
|
|
||||||
$arrayofalerts2 = json_decode($result['content']);
|
|
||||||
|
|
||||||
foreach ($arrayofalerts2->items as $val) {
|
|
||||||
$tmpval = cleanVal($val);
|
|
||||||
if (preg_match('/yogosha:/i', $tmpval['title'])) {
|
|
||||||
$arrayofalerts[$tmpval['number']] = $tmpval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print 'Error: failed to get github response';
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$newurl = $urlgit.'+Sec:';
|
|
||||||
$result = getURLContent($newurl);
|
|
||||||
print 'Execute GET on github for '.$newurl."\n";
|
|
||||||
if ($result && $result['http_code'] == 200) {
|
|
||||||
$arrayofalerts3 = json_decode($result['content']);
|
|
||||||
foreach ($arrayofalerts3->items as $val) {
|
|
||||||
$tmpval = cleanVal($val);
|
|
||||||
if (preg_match('/Sec:/i', $tmpval['title'])) {
|
|
||||||
$arrayofalerts[$tmpval['number']] = $tmpval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print 'Error: failed to get github response';
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
$timeend = time();
|
$timeend = time();
|
||||||
|
|
||||||
|
|
||||||
@@ -607,7 +571,7 @@ $html .= '<th class="right">Lines</th>';
|
|||||||
$html .= '<th></th>';
|
$html .= '<th></th>';
|
||||||
$html .= '<th class="right">Blanks</th>';
|
$html .= '<th class="right">Blanks</th>';
|
||||||
$html .= '<th class="right">Comments</th>';
|
$html .= '<th class="right">Comments</th>';
|
||||||
$html .= '<th class="right">Code</th>';
|
$html .= '<th class="right nowrap">Code (SLOC)</th>';
|
||||||
//$html .= '<td class="right">'.$val['Complexity'].'</td>';
|
//$html .= '<td class="right">'.$val['Complexity'].'</td>';
|
||||||
$html .= '</tr>';
|
$html .= '</tr>';
|
||||||
foreach (array('proj', 'dep') as $source) {
|
foreach (array('proj', 'dep') as $source) {
|
||||||
@@ -724,12 +688,6 @@ $html .= <<<END
|
|||||||
END;
|
END;
|
||||||
|
|
||||||
|
|
||||||
$html .= '<!-- ';
|
|
||||||
foreach ($output_arrglpu as $line) {
|
|
||||||
$html .= $line."\n";
|
|
||||||
}
|
|
||||||
$html .= ' -->';
|
|
||||||
|
|
||||||
$html .= '</div>';
|
$html .= '</div>';
|
||||||
|
|
||||||
$html .= '</section>'."\n";
|
$html .= '</section>'."\n";
|
||||||
@@ -784,19 +742,19 @@ $html .= '</div>';
|
|||||||
$html .= '</section>'."\n";
|
$html .= '</section>'."\n";
|
||||||
|
|
||||||
|
|
||||||
// Project value
|
// Project value (COCOMO Model, use Basic / Semi-detached
|
||||||
|
|
||||||
$html .= '<section class="chapter" id="projectvalue">'."\n";
|
$html .= '<section class="chapter" id="projectvalue">'."\n";
|
||||||
$html .= '<h2><span class="fas fa-dollar-sign pictofixedwidth"></span>Project value</h2>'."\n";
|
$html .= '<h2><span class="fas fa-dollar-sign pictofixedwidth"></span>Project value</h2>'."\n";
|
||||||
|
|
||||||
$html .= '<div class="boxallwidth">'."\n";
|
$html .= '<div class="boxallwidth">'."\n";
|
||||||
$html .= '<div class="box inline-box back1">';
|
$html .= '<div class="box inline-box back1">';
|
||||||
$html .= 'COCOMO value<br><span class="small opacitymedium">(Basic organic model)</span><br>';
|
$html .= 'COCOMO value<br><span class="small opacitymedium">(Basic/Semi-detached model)</span><br>';
|
||||||
$html .= '<b>$'.formatNumber((empty($arraycocomo['proj']['currency']) ? 0 : $arraycocomo['proj']['currency']) + (empty($arraycocomo['dep']['currency']) ? 0 : $arraycocomo['dep']['currency']), 2).'</b>';
|
$html .= '<b>$'.formatNumber((empty($arraycocomo['proj']['currency']) ? 0 : $arraycocomo['proj']['currency']) + (empty($arraycocomo['dep']['currency']) ? 0 : $arraycocomo['dep']['currency']), 2).'</b>';
|
||||||
$html .= '</div>';
|
$html .= '</div>';
|
||||||
if (array_key_exists('proj', $arraycocomo)) {
|
if (array_key_exists('proj', $arraycocomo)) {
|
||||||
$html .= '<div class="box inline-box back2">';
|
$html .= '<div class="box inline-box back2">';
|
||||||
$html .= 'COCOMO effort<br><span class="small opacitymedium">(Basic organic model)</span><br>';
|
$html .= 'COCOMO effort<br><span class="small opacitymedium">(Basic/Semi-detached model)</span><br>';
|
||||||
$html .= '<b>'.formatNumber($arraycocomo['proj']['people'] * $arraycocomo['proj']['effort'] + $arraycocomo['dep']['people'] * $arraycocomo['dep']['effort']);
|
$html .= '<b>'.formatNumber($arraycocomo['proj']['people'] * $arraycocomo['proj']['effort'] + $arraycocomo['dep']['people'] * $arraycocomo['dep']['effort']);
|
||||||
$html .= ' months people</b>';
|
$html .= ' months people</b>';
|
||||||
$html .= '</div>';
|
$html .= '</div>';
|
||||||
@@ -877,7 +835,7 @@ if (count($output_phan_json) != 0) {
|
|||||||
$title_security_short = "Last security issues";
|
$title_security_short = "Last security issues";
|
||||||
$title_security = ($project ? "[".$project."] " : "").$title_security_short;
|
$title_security = ($project ? "[".$project."] " : "").$title_security_short;
|
||||||
|
|
||||||
$html .= '<section class="chapter" id="linesofcode">'."\n";
|
$html .= '<section class="chapter" id="securityalerts">'."\n";
|
||||||
$html .= '<h2><span class="fas fa-code pictofixedwidth"></span>'.$title_security_short.' <span class="opacitymedium">(last '.($nbofmonth != 1 ? $nbofmonth.' months' : 'month').')</span></h2>'."\n";
|
$html .= '<h2><span class="fas fa-code pictofixedwidth"></span>'.$title_security_short.' <span class="opacitymedium">(last '.($nbofmonth != 1 ? $nbofmonth.' months' : 'month').')</span></h2>'."\n";
|
||||||
|
|
||||||
$html .= '<div class="boxallwidth">'."\n";
|
$html .= '<div class="boxallwidth">'."\n";
|
||||||
@@ -953,7 +911,7 @@ foreach ($arrayofalerts as $key => $alert) {
|
|||||||
}
|
}
|
||||||
$html .= '</td>';
|
$html .= '</td>';
|
||||||
|
|
||||||
// Description
|
// Title - Description
|
||||||
$html .= '<td class="tdoverflowmax300" title="'.dol_escape_htmltag($alert['title']).'">'.dol_escape_htmltag($alert['title']).'</td>';
|
$html .= '<td class="tdoverflowmax300" title="'.dol_escape_htmltag($alert['title']).'">'.dol_escape_htmltag($alert['title']).'</td>';
|
||||||
|
|
||||||
// Branches
|
// Branches
|
||||||
@@ -974,7 +932,7 @@ $html .= '</div>';
|
|||||||
$html .= '</div>';
|
$html .= '</div>';
|
||||||
|
|
||||||
$html .= '<br>';
|
$html .= '<br>';
|
||||||
$html .= 'Note:Search is done in git repository on regexstring #yogosha|CVE|Sec:|Sec\s<br>';
|
$html .= 'Note:Search is done in git repository on regex string "#yogosha|CVE[\s\-]*\d|Sec:|Sec\s" (not case sensitive)<br>';
|
||||||
$html .= 'You can use this URL for RSS notifications: <a href="/'.$outputfilerss.'">'.$outputfilerss.'</a><br><br>';
|
$html .= 'You can use this URL for RSS notifications: <a href="/'.$outputfilerss.'">'.$outputfilerss.'</a><br><br>';
|
||||||
|
|
||||||
$html .= '</section>';
|
$html .= '</section>';
|
||||||
@@ -1082,7 +1040,7 @@ if ($dir_phan != 'disabled') {
|
|||||||
]});
|
]});
|
||||||
';
|
';
|
||||||
$html .= '<section class="chapter" id="technicaldebtphan">'."\n";
|
$html .= '<section class="chapter" id="technicaldebtphan">'."\n";
|
||||||
$html .= '<h2><span class="fas fa-book-dead pictofixedwidth"></span>Technical debt <span class="opacitymedium">(PHAN '.$phan_nblines.' warnings)</span></h2>'."\n";
|
$html .= '<h2><span class="fas fa-book-dead pictofixedwidth"></span>Technical debt <span class="opacitymedium">('.$phpphanversion.' -> '.$phan_nblines.' warnings)</span></h2>'."\n";
|
||||||
|
|
||||||
$html .= '<div class="boxallwidth">'."\n";
|
$html .= '<div class="boxallwidth">'."\n";
|
||||||
$html .= '<div class="div-table-responsive">'."\n";
|
$html .= '<div class="div-table-responsive">'."\n";
|
||||||
@@ -1179,7 +1137,7 @@ function cleanVal2($val)
|
|||||||
$tmpval['issueid'] = '';
|
$tmpval['issueid'] = '';
|
||||||
$tmpval['issueidyogosha'] = '';
|
$tmpval['issueidyogosha'] = '';
|
||||||
$tmpval['issueidcve'] = '';
|
$tmpval['issueidcve'] = '';
|
||||||
$tmpval['title'] = array_key_exists(5, $tmp) ? $tmp[5] : '';
|
$tmpval['title'] = array_key_exists(5, $tmp) ? preg_replace('/\.$/', '', $tmp[5]) : '';
|
||||||
$tmpval['created_at'] = array_key_exists(0, $tmp) ? $tmp[0] : '';
|
$tmpval['created_at'] = array_key_exists(0, $tmp) ? $tmp[0] : '';
|
||||||
$tmpval['updated_at'] = '';
|
$tmpval['updated_at'] = '';
|
||||||
|
|
||||||
@@ -1188,7 +1146,7 @@ function cleanVal2($val)
|
|||||||
$tmpval['issueid'] = $reg[1];
|
$tmpval['issueid'] = $reg[1];
|
||||||
}
|
}
|
||||||
if (preg_match('/CVE([0-9\-\s]+)/', $tmpval['title'], $reg)) {
|
if (preg_match('/CVE([0-9\-\s]+)/', $tmpval['title'], $reg)) {
|
||||||
$tmpval['issueidcve'] = preg_replace('/^\-/', '', trim($reg[1]));
|
$tmpval['issueidcve'] = preg_replace('/^\-/', '', preg_replace('/\s+/', '-', trim($reg[1])));
|
||||||
}
|
}
|
||||||
if (preg_match('/#yogosha(\d+)/i', $tmpval['title'], $reg)) {
|
if (preg_match('/#yogosha(\d+)/i', $tmpval['title'], $reg)) {
|
||||||
$tmpval['issueidyogosha'] = $reg[1];
|
$tmpval['issueidyogosha'] = $reg[1];
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ postgresql
|
|||||||
# ZAR currency
|
# ZAR currency
|
||||||
zar
|
zar
|
||||||
|
|
||||||
# Name of contributores
|
# Need as part of some PHP keys for some array variables
|
||||||
|
referer
|
||||||
|
|
||||||
|
# Name of contributors
|
||||||
noe
|
noe
|
||||||
udo
|
udo
|
||||||
tim
|
tim
|
||||||
@@ -87,7 +90,7 @@ espace
|
|||||||
methode
|
methode
|
||||||
datee
|
datee
|
||||||
|
|
||||||
# Some string found because part of a text the is html entities escaped into file
|
# Some string found because it is part of text that is html entities escaped into files
|
||||||
tre
|
tre
|
||||||
activ
|
activ
|
||||||
|
|
||||||
|
|||||||
@@ -9,66 +9,41 @@
|
|||||||
*/
|
*/
|
||||||
return [
|
return [
|
||||||
// # Issue statistics:
|
// # Issue statistics:
|
||||||
// PhanUndeclaredProperty : 440+ occurrences
|
// PhanUndeclaredProperty : 420+ occurrences
|
||||||
// PhanTypeMismatchProperty : 100+ occurrences
|
// PhanTypeMismatchProperty : 100+ occurrences
|
||||||
// PhanUndeclaredGlobalVariable : 90+ occurrences
|
// PhanTypeMismatchArgument : 70+ occurrences
|
||||||
// PhanTypeMismatchArgument : 85+ occurrences
|
// PhanUndeclaredGlobalVariable : 65+ occurrences
|
||||||
// PhanTypeMismatchArgumentNullable : 30+ occurrences
|
// PhanTypeMismatchArgumentNullable : 40+ occurrences
|
||||||
// PhanTypeExpectedObjectPropAccess : 20+ occurrences
|
// PhanTypeInvalidDimOffset : 15+ occurrences
|
||||||
// PhanTypeInvalidDimOffset : 20+ occurrences
|
|
||||||
// PhanTypeMismatchDimFetch : 15+ occurrences
|
// PhanTypeMismatchDimFetch : 15+ occurrences
|
||||||
// PhanUndeclaredConstant : 15+ occurrences
|
|
||||||
// PhanTypeMismatchArgumentProbablyReal : 9 occurrences
|
|
||||||
// PhanUndeclaredMethod : 9 occurrences
|
// PhanUndeclaredMethod : 9 occurrences
|
||||||
// PhanPossiblyUndeclaredGlobalVariable : 6 occurrences
|
// PhanPossiblyUndeclaredGlobalVariable : 6 occurrences
|
||||||
// PhanTypeArraySuspiciousNull : 6 occurrences
|
// PhanTypeArraySuspiciousNull : 6 occurrences
|
||||||
// PhanTypeComparisonFromArray : 6 occurrences
|
// PhanTypeComparisonFromArray : 6 occurrences
|
||||||
// PhanPluginUndeclaredVariableIsset : 5 occurrences
|
// PhanTypeExpectedObjectPropAccess : 5 occurrences
|
||||||
// PhanParamTooMany : 4 occurrences
|
// PhanTypeMismatchArgumentProbablyReal : 5 occurrences
|
||||||
// PhanPluginDuplicateArrayKey : 4 occurrences
|
// PhanPluginDuplicateArrayKey : 4 occurrences
|
||||||
// PhanPluginDuplicateExpressionBinaryOp : 4 occurrences
|
// PhanParamTooMany : 3 occurrences
|
||||||
// PhanTypeMismatchDimAssignment : 2 occurrences
|
// PhanPluginUndeclaredVariableIsset : 3 occurrences
|
||||||
// PhanTypeMismatchReturn : 2 occurrences
|
|
||||||
// PhanTypeSuspiciousStringExpression : 2 occurrences
|
|
||||||
// PhanPossiblyUndeclaredVariable : 1 occurrence
|
// PhanPossiblyUndeclaredVariable : 1 occurrence
|
||||||
// PhanTypeExpectedObjectPropAccessButGotNull : 1 occurrence
|
// PhanTypeExpectedObjectPropAccessButGotNull : 1 occurrence
|
||||||
// PhanTypeMismatchArgumentNullableInternal : 1 occurrence
|
// PhanTypeMismatchReturn : 1 occurrence
|
||||||
|
|
||||||
// Currently, file_suppressions and directory_suppressions are the only supported suppressions
|
// Currently, file_suppressions and directory_suppressions are the only supported suppressions
|
||||||
'file_suppressions' => [
|
'file_suppressions' => [
|
||||||
'htdocs/accountancy/class/accountancyexport.class.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/api/class/api_setup.class.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchReturn'],
|
|
||||||
'htdocs/asset/class/asset.class.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanTypeInvalidDimOffset'],
|
|
||||||
'htdocs/asset/class/assetdepreciationoptions.class.php' => ['PhanTypeInvalidDimOffset'],
|
|
||||||
'htdocs/asset/class/assetmodel.class.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/asset/tpl/depreciation_options_edit.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/asset/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/barcode/printsheet.php' => ['PhanPluginDuplicateExpressionBinaryOp'],
|
|
||||||
'htdocs/bom/bom_card.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
|
||||||
'htdocs/bom/tpl/objectline_create.tpl.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
|
||||||
'htdocs/bom/tpl/objectline_edit.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/bom/tpl/objectline_view.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/bookcal/availabilities_card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
|
||||||
'htdocs/bookcal/calendar_card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
|
||||||
'htdocs/bookcal/class/availabilities.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
|
'htdocs/bookcal/class/availabilities.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/bookcal/class/calendar.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
|
'htdocs/bookcal/class/calendar.class.php' => ['PhanUndeclaredMethod', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/categories/viewcat.php' => ['PhanUndeclaredProperty'],
|
'htdocs/categories/viewcat.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/collab/index.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/comm/action/index.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
|
'htdocs/comm/action/index.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
|
||||||
'htdocs/comm/action/pertype.php' => ['PhanTypeComparisonFromArray', 'PhanTypeExpectedObjectPropAccess', 'PhanTypeMismatchDimFetch'],
|
'htdocs/comm/action/pertype.php' => ['PhanTypeComparisonFromArray', 'PhanTypeExpectedObjectPropAccess', 'PhanTypeMismatchDimFetch'],
|
||||||
'htdocs/comm/action/peruser.php' => ['PhanTypeComparisonFromArray', 'PhanTypeMismatchArgument'],
|
'htdocs/comm/action/peruser.php' => ['PhanTypeComparisonFromArray', 'PhanTypeMismatchArgument'],
|
||||||
'htdocs/comm/card.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/comm/card.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/comm/mailing/index.php' => ['PhanUndeclaredProperty'],
|
'htdocs/comm/mailing/index.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/comm/mailing/targetemailing.php' => ['PhanUndeclaredProperty'],
|
'htdocs/comm/mailing/targetemailing.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/comm/propal/card.php' => ['PhanTypeMismatchProperty'],
|
|
||||||
'htdocs/comm/propal/list.php' => ['PhanUndeclaredProperty'],
|
'htdocs/comm/propal/list.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/comm/propal/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/commande/class/api_orders.class.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/commande/class/commande.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/commande/class/commande.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/commande/customer.php' => ['PhanUndeclaredGlobalVariable'],
|
|
||||||
'htdocs/commande/list.php' => ['PhanUndeclaredProperty'],
|
'htdocs/commande/list.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/commande/list_det.php' => ['PhanTypeInvalidDimOffset'],
|
'htdocs/commande/list_det.php' => ['PhanTypeInvalidDimOffset'],
|
||||||
'htdocs/commande/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/compta/bank/account_statement_document.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/compta/bank/account_statement_document.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/compta/bank/class/account.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/bank/class/account.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/bank/class/paymentvarious.class.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/compta/bank/class/paymentvarious.class.php' => ['PhanTypeMismatchArgument'],
|
||||||
@@ -76,16 +51,13 @@ return [
|
|||||||
'htdocs/compta/bank/various_payment/card.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/bank/various_payment/card.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/bank/various_payment/document.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/compta/bank/various_payment/document.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/bank/various_payment/info.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/compta/bank/various_payment/info.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/cashcontrol/cashcontrol_card.php' => ['PhanPluginDuplicateExpressionBinaryOp'],
|
|
||||||
'htdocs/compta/clients.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/compta/clients.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/compta/facture/card-rec.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/compta/facture/card-rec.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/compta/facture/card.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/facture/card.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/facture/class/api_invoices.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
'htdocs/compta/facture/class/api_invoices.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
||||||
'htdocs/compta/facture/class/facture-rec.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/facture/class/facture-rec.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/facture/class/facture.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/facture/class/facture.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/compta/facture/tpl/linkedobjectblockForRec.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/compta/localtax/card.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/compta/localtax/card.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/compta/localtax/clients.php' => ['PhanTypeExpectedObjectPropAccess', 'PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/compta/localtax/index.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/compta/localtax/index.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/compta/localtax/list.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/compta/localtax/list.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/compta/paiement/card.php' => ['PhanUndeclaredProperty'],
|
'htdocs/compta/paiement/card.php' => ['PhanUndeclaredProperty'],
|
||||||
@@ -110,7 +82,7 @@ return [
|
|||||||
'htdocs/core/class/canvas.class.php' => ['PhanParamTooMany', 'PhanUndeclaredMethod'],
|
'htdocs/core/class/canvas.class.php' => ['PhanParamTooMany', 'PhanUndeclaredMethod'],
|
||||||
'htdocs/core/class/ccountry.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/ccountry.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/cgenericdic.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/cgenericdic.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/commonobject.class.php' => ['PhanParamTooMany', 'PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentProbablyReal', 'PhanUndeclaredProperty'],
|
'htdocs/core/class/commonobject.class.php' => ['PhanParamTooMany', 'PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/commonpeople.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/commonpeople.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/conf.class.php' => ['PhanTypeMismatchArgumentNullableInternal', 'PhanTypeMismatchProperty'],
|
'htdocs/core/class/conf.class.php' => ['PhanTypeMismatchArgumentNullableInternal', 'PhanTypeMismatchProperty'],
|
||||||
'htdocs/core/class/ctyperesource.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/ctyperesource.class.php' => ['PhanUndeclaredProperty'],
|
||||||
@@ -118,7 +90,6 @@ return [
|
|||||||
'htdocs/core/class/emailsenderprofile.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/emailsenderprofile.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/extrafields.class.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/core/class/extrafields.class.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/core/class/html.formcompany.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/html.formcompany.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/html.formfile.class.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/core/class/html.formmail.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
'htdocs/core/class/html.formmail.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/notify.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/class/notify.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/class/openid.class.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/core/class/openid.class.php' => ['PhanTypeMismatchArgument'],
|
||||||
@@ -128,14 +99,12 @@ return [
|
|||||||
'htdocs/core/lib/company.lib.php' => ['PhanTypeMismatchArgumentNullable'],
|
'htdocs/core/lib/company.lib.php' => ['PhanTypeMismatchArgumentNullable'],
|
||||||
'htdocs/core/lib/files.lib.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/lib/files.lib.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/lib/functions2.lib.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/lib/functions2.lib.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/lib/pdf.lib.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
|
'htdocs/core/lib/pdf.lib.php' => ['PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/core/lib/product.lib.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/core/lib/product.lib.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/core/lib/project.lib.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/lib/project.lib.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/lib/xcal.lib.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/lib/xcal.lib.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/menus/standard/auguria.lib.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/core/menus/standard/auguria.lib.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/core/modules/asset/mod_asset_advanced.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/modules/asset/mod_asset_advanced.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/modules/barcode/mod_barcode_product_standard.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/core/modules/bom/mod_bom_advanced.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
'htdocs/core/modules/bom/mod_bom_advanced.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/core/modules/cheque/doc/pdf_blochet.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
'htdocs/core/modules/cheque/doc/pdf_blochet.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
||||||
'htdocs/core/modules/cheque/modules_chequereceipts.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/core/modules/cheque/modules_chequereceipts.php' => ['PhanTypeMismatchArgument'],
|
||||||
@@ -185,7 +154,6 @@ return [
|
|||||||
'htdocs/core/tpl/resource_view.tpl.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/tpl/resource_view.tpl.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/datapolicy/class/datapolicycron.class.php' => ['PhanTypeMismatchArgument'],
|
|
||||||
'htdocs/delivery/class/delivery.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/delivery/class/delivery.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/don/admin/donation.php' => ['PhanUndeclaredMethod'],
|
'htdocs/don/admin/donation.php' => ['PhanUndeclaredMethod'],
|
||||||
'htdocs/don/class/don.class.php' => ['PhanParamTooMany'],
|
'htdocs/don/class/don.class.php' => ['PhanParamTooMany'],
|
||||||
@@ -201,18 +169,14 @@ return [
|
|||||||
'htdocs/expedition/class/expedition.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/expedition/class/expedition.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/expensereport/card.php' => ['PhanUndeclaredProperty'],
|
'htdocs/expensereport/card.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/expensereport/class/expensereport.class.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentNullable'],
|
'htdocs/expensereport/class/expensereport.class.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchArgumentNullable'],
|
||||||
'htdocs/expensereport/payment/card.php' => ['PhanUndeclaredGlobalVariable'],
|
|
||||||
'htdocs/expensereport/payment/info.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/expensereport/payment/info.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/expensereport/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/externalsite/frames.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/externalsite/frames.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/fichinter/card-rec.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/fichinter/card-rec.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/fichinter/class/api_interventions.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/fichinter/class/api_interventions.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/fichinter/class/fichinterrec.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/fichinter/class/fichinterrec.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/fichinter/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/filefunc.inc.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/filefunc.inc.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/fourn/class/api_supplier_orders.class.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
|
||||||
'htdocs/fourn/class/fournisseur.commande.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/fourn/class/fournisseur.commande.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/fourn/commande/card.php' => ['PhanTypeMismatchDimAssignment', 'PhanTypeSuspiciousStringExpression', 'PhanUndeclaredProperty'],
|
'htdocs/fourn/commande/card.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/fourn/facture/card-rec.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/fourn/facture/card-rec.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/fourn/facture/card.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
|
'htdocs/fourn/facture/card.php' => ['PhanTypeMismatchArgument', 'PhanTypeMismatchProperty'],
|
||||||
'htdocs/fourn/facture/rapport.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/fourn/facture/rapport.php' => ['PhanTypeMismatchArgument'],
|
||||||
@@ -220,7 +184,6 @@ return [
|
|||||||
'htdocs/holiday/card_group.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/holiday/card_group.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/holiday/list.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/holiday/list.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/hrm/class/evaluation.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/hrm/class/evaluation.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/hrm/class/evaluationdet.class.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/hrm/class/job.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/hrm/class/job.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/hrm/class/position.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/hrm/class/position.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/hrm/class/skill.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/hrm/class/skill.class.php' => ['PhanUndeclaredProperty'],
|
||||||
@@ -254,7 +217,6 @@ return [
|
|||||||
'htdocs/product/reassort.php' => ['PhanTypeExpectedObjectPropAccessButGotNull'],
|
'htdocs/product/reassort.php' => ['PhanTypeExpectedObjectPropAccessButGotNull'],
|
||||||
'htdocs/product/stock/info.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/info.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/list.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/list.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/movement_card.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
|
||||||
'htdocs/product/stock/movement_list.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/product/stock/movement_list.php' => ['PhanPluginUndeclaredVariableIsset', 'PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/productlot_card.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/productlot_card.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/stats/commande_fournisseur.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/stats/commande_fournisseur.php' => ['PhanUndeclaredProperty'],
|
||||||
@@ -263,16 +225,14 @@ return [
|
|||||||
'htdocs/product/stock/stats/reception.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/stats/reception.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/stocktransfer/class/stocktransferline.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/stocktransfer/class/stocktransferline.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/tpl/stockcorrection.tpl.php' => ['PhanUndeclaredProperty'],
|
'htdocs/product/stock/tpl/stockcorrection.tpl.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/product/stock/tpl/stocktransfer.tpl.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/projet/admin/project.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
'htdocs/projet/admin/project.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
||||||
'htdocs/projet/card.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/projet/card.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/projet/tasks.php' => ['PhanTypeMismatchArgument'],
|
'htdocs/projet/tasks.php' => ['PhanTypeMismatchArgument'],
|
||||||
'htdocs/projet/tasks/time.php' => ['PhanTypeInvalidDimOffset', 'PhanUndeclaredProperty'],
|
'htdocs/projet/tasks/time.php' => ['PhanTypeInvalidDimOffset', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/projet/tasks/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
'htdocs/projet/tasks/tpl/linkedobjectblock.tpl.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/public/eventorganization/subscriptionok.php' => ['PhanUndeclaredGlobalVariable'],
|
|
||||||
'htdocs/public/members/new.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/public/members/new.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
'htdocs/public/payment/newpayment.php' => ['PhanUndeclaredProperty'],
|
'htdocs/public/payment/newpayment.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/public/payment/paymentok.php' => ['PhanTypeMismatchArgumentProbablyReal', 'PhanUndeclaredGlobalVariable'],
|
'htdocs/public/payment/paymentok.php' => ['PhanTypeMismatchArgumentProbablyReal'],
|
||||||
'htdocs/public/project/suggestbooth.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/public/project/suggestbooth.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/public/project/suggestconference.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/public/project/suggestconference.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/public/project/viewandvote.php' => ['PhanUndeclaredGlobalVariable'],
|
'htdocs/public/project/viewandvote.php' => ['PhanUndeclaredGlobalVariable'],
|
||||||
@@ -280,7 +240,7 @@ return [
|
|||||||
'htdocs/public/webportal/tpl/menu.tpl.php' => ['PhanUndeclaredProperty'],
|
'htdocs/public/webportal/tpl/menu.tpl.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/reception/card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
'htdocs/reception/card.php' => ['PhanUndeclaredGlobalVariable', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/reception/class/reception.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/reception/class/reception.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/reception/list.php' => ['PhanTypeMismatchArgumentNullable', 'PhanUndeclaredProperty'],
|
'htdocs/reception/list.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/recruitment/class/recruitmentcandidature.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/recruitment/class/recruitmentcandidature.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/recruitment/class/recruitmentjobposition.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/recruitment/class/recruitmentjobposition.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php' => ['PhanUndeclaredProperty'],
|
'htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php' => ['PhanUndeclaredProperty'],
|
||||||
@@ -319,19 +279,7 @@ return [
|
|||||||
'htdocs/webportal/class/html.formcardwebportal.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
'htdocs/webportal/class/html.formcardwebportal.class.php' => ['PhanTypeMismatchArgument', 'PhanUndeclaredProperty'],
|
||||||
'htdocs/webportal/class/html.formlistwebportal.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/webportal/class/html.formlistwebportal.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/webportal/class/webportalpropal.class.php' => ['PhanUndeclaredProperty'],
|
'htdocs/webportal/class/webportalpropal.class.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/webservices/server_actioncomm.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_category.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_contact.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_invoice.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_order.php' => ['PhanTypeInvalidDimOffset', 'PhanTypeMismatchArgument', 'PhanTypeSuspiciousStringExpression', 'PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_payment.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_productorservice.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_project.php' => ['PhanUndeclaredProperty'],
|
'htdocs/webservices/server_project.php' => ['PhanUndeclaredProperty'],
|
||||||
'htdocs/webservices/server_supplier_invoice.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_thirdparty.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/webservices/server_user.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'htdocs/website/websiteaccount_card.php' => ['PhanUndeclaredProperty'],
|
|
||||||
'internal' => ['PhanUndeclaredConstant'],
|
|
||||||
],
|
],
|
||||||
// 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed.
|
// 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed.
|
||||||
// (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases)
|
// (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
/* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This is the phan config file used by .github/workflows/phan.yml
|
* This is the phan config file used by .github/workflows/phan.yml
|
||||||
*/
|
*/
|
||||||
@@ -35,7 +35,8 @@ $sanitizeRegex
|
|||||||
'restricthtmlallowclass',
|
'restricthtmlallowclass',
|
||||||
'restricthtmlallowunvalid',
|
'restricthtmlallowunvalid',
|
||||||
'restricthtmlnolink',
|
'restricthtmlnolink',
|
||||||
'restricthtmlallowlinkscript'
|
'restricthtmlallowlinkscript',
|
||||||
|
'url',
|
||||||
)
|
)
|
||||||
).')*$/';
|
).')*$/';
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +1,93 @@
|
|||||||
<?php
|
<?php
|
||||||
// These stubs were generated by the phan stub generator.
|
|
||||||
// @phan-stub-for-extension ftp@7.4.12
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
function ftp_alloc($ftp, $size, &$response = null) {}
|
const FTP_ASCII = 1;
|
||||||
function ftp_append($ftp, $remote_file, $local_file, $mode = null) {}
|
const FTP_TEXT = 1;
|
||||||
function ftp_cdup($ftp) {}
|
const FTP_BINARY = 2;
|
||||||
function ftp_chdir($ftp, $directory) {}
|
const FTP_IMAGE = 2;
|
||||||
function ftp_chmod($ftp, $mode, $filename) {}
|
const FTP_AUTORESUME = -1;
|
||||||
function ftp_close($ftp) {}
|
const FTP_TIMEOUT_SEC = 0;
|
||||||
function ftp_connect($host, $port = null, $timeout = null) {}
|
const FTP_AUTOSEEK = 1;
|
||||||
function ftp_delete($ftp, $file) {}
|
const FTP_USEPASVADDRESS = 2;
|
||||||
function ftp_exec($ftp, $command) {}
|
const FTP_FAILED = 0;
|
||||||
function ftp_fget($ftp, $fp, $remote_file, $mode = null, $resumepos = null) {}
|
const FTP_FINISHED = 1;
|
||||||
function ftp_fput($ftp, $remote_file, $fp, $mode = null, $startpos = null) {}
|
const FTP_MOREDATA = 2;
|
||||||
function ftp_get($ftp, $local_file, $remote_file, $mode = null, $resume_pos = null) {}
|
|
||||||
function ftp_get_option($ftp, $option) {}
|
function ftp_connect(string $hostname, int $port = 21, int $timeout = 90): FTP\Connection|false {}
|
||||||
function ftp_login($ftp, $username, $password) {}
|
function ftp_ssl_connect(string $hostname, int $port = 21, int $timeout = 90): FTP\Connection|false {}
|
||||||
function ftp_mdtm($ftp, $filename) {}
|
|
||||||
function ftp_mkdir($ftp, $directory) {}
|
function ftp_login(FTP\Connection $ftp, string $username, #[\SensitiveParameter] string $password): bool {}
|
||||||
function ftp_mlsd($ftp, $directory) {}
|
function ftp_pwd(FTP\Connection $ftp): string|false {}
|
||||||
function ftp_nb_continue($ftp) {}
|
function ftp_cdup(FTP\Connection $ftp): bool {}
|
||||||
function ftp_nb_fget($ftp, $fp, $remote_file, $mode = null, $resumepos = null) {}
|
function ftp_chdir(FTP\Connection $ftp, string $directory): bool {}
|
||||||
function ftp_nb_fput($ftp, $remote_file, $fp, $mode = null, $startpos = null) {}
|
function ftp_exec(FTP\Connection $ftp, string $command): bool {}
|
||||||
function ftp_nb_get($ftp, $local_file, $remote_file, $mode = null, $resume_pos = null) {}
|
|
||||||
function ftp_nb_put($ftp, $remote_file, $local_file, $mode = null, $startpos = null) {}
|
/**
|
||||||
function ftp_nlist($ftp, $directory) {}
|
* @return array<int, string>|null
|
||||||
function ftp_pasv($ftp, $pasv) {}
|
*/
|
||||||
function ftp_put($ftp, $remote_file, $local_file, $mode = null, $startpos = null) {}
|
function ftp_raw(FTP\Connection $ftp, string $command): ?array {}
|
||||||
function ftp_pwd($ftp) {}
|
function ftp_mkdir(FTP\Connection $ftp, string $directory): string|false {}
|
||||||
function ftp_quit($ftp) {}
|
function ftp_rmdir(FTP\Connection $ftp, string $directory): bool {}
|
||||||
function ftp_raw($ftp, $command) {}
|
function ftp_chmod(FTP\Connection $ftp, int $permissions, string $filename): int|false {}
|
||||||
function ftp_rawlist($ftp, $directory, $recursive = null) {}
|
|
||||||
function ftp_rename($ftp, $src, $dest) {}
|
/** @param string $response */
|
||||||
function ftp_rmdir($ftp, $directory) {}
|
function ftp_alloc(FTP\Connection $ftp, int $size, &$response = null): bool {}
|
||||||
function ftp_set_option($ftp, $option, $value) {}
|
|
||||||
function ftp_site($ftp, $cmd) {}
|
/**
|
||||||
function ftp_size($ftp, $filename) {}
|
* @return array<int, string>|false
|
||||||
function ftp_ssl_connect($host, $port = null, $timeout = null) {}
|
*/
|
||||||
function ftp_systype($ftp) {}
|
function ftp_nlist(FTP\Connection $ftp, string $directory): array|false {}
|
||||||
const FTP_ASCII = 1;
|
|
||||||
const FTP_AUTORESUME = -1;
|
/**
|
||||||
const FTP_AUTOSEEK = 1;
|
* @return array<int, string>|false
|
||||||
const FTP_BINARY = 2;
|
*/
|
||||||
const FTP_FAILED = 0;
|
function ftp_rawlist(FTP\Connection $ftp, string $directory, bool $recursive = false): array|false {}
|
||||||
const FTP_FINISHED = 1;
|
|
||||||
const FTP_IMAGE = 2;
|
/**
|
||||||
const FTP_MOREDATA = 2;
|
* @return array<int, array>|false
|
||||||
const FTP_TEXT = 1;
|
*/
|
||||||
const FTP_TIMEOUT_SEC = 0;
|
function ftp_mlsd(FTP\Connection $ftp, string $directory): array|false {}
|
||||||
const FTP_USEPASVADDRESS = 2;
|
|
||||||
|
function ftp_systype(FTP\Connection $ftp): string|false {}
|
||||||
|
|
||||||
|
/** @param resource $stream */
|
||||||
|
function ftp_fget(FTP\Connection $ftp, $stream, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
|
||||||
|
|
||||||
|
/** @param resource $stream */
|
||||||
|
function ftp_nb_fget(FTP\Connection $ftp, $stream, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): int {}
|
||||||
|
function ftp_pasv(FTP\Connection $ftp, bool $enable): bool {}
|
||||||
|
function ftp_get(FTP\Connection $ftp, string $local_filename, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
|
||||||
|
function ftp_nb_get(FTP\Connection $ftp, string $local_filename, string $remote_filename, int $mode = FTP_BINARY, int $offset = 0): int|false {}
|
||||||
|
function ftp_nb_continue(FTP\Connection $ftp): int {}
|
||||||
|
|
||||||
|
/** @param resource $stream */
|
||||||
|
function ftp_fput(FTP\Connection $ftp, string $remote_filename, $stream, int $mode = FTP_BINARY, int $offset = 0): bool {}
|
||||||
|
|
||||||
|
/** @param resource $stream */
|
||||||
|
function ftp_nb_fput(FTP\Connection $ftp, string $remote_filename, $stream, int $mode = FTP_BINARY, int $offset = 0): int {}
|
||||||
|
function ftp_put(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY, int $offset = 0): bool {}
|
||||||
|
function ftp_append(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool {}
|
||||||
|
function ftp_nb_put(FTP\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY, int $offset = 0): int|false {}
|
||||||
|
function ftp_size(FTP\Connection $ftp, string $filename): int {}
|
||||||
|
function ftp_mdtm(FTP\Connection $ftp, string $filename): int {}
|
||||||
|
function ftp_rename(FTP\Connection $ftp, string $from, string $to): bool {}
|
||||||
|
function ftp_delete(FTP\Connection $ftp, string $filename): bool {}
|
||||||
|
function ftp_site(FTP\Connection $ftp, string $command): bool {}
|
||||||
|
function ftp_close(FTP\Connection $ftp): bool {}
|
||||||
|
|
||||||
|
function ftp_quit(FTP\Connection $ftp): bool {}
|
||||||
|
|
||||||
|
/** @param int|bool $value */
|
||||||
|
function ftp_set_option(FTP\Connection $ftp, int $option, $value): true {}
|
||||||
|
function ftp_get_option(FTP\Connection $ftp, int $option): int|bool {}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace FTP {
|
||||||
|
/**
|
||||||
|
* @strict-properties
|
||||||
|
* @not-serializable
|
||||||
|
*/
|
||||||
|
final class Connection
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ parameters:
|
|||||||
- htdocs/install/doctemplates/*
|
- htdocs/install/doctemplates/*
|
||||||
- htdocs/langs/*
|
- htdocs/langs/*
|
||||||
- htdocs/modulebuilder/template/test/*
|
- htdocs/modulebuilder/template/test/*
|
||||||
- htdocs/support/*
|
|
||||||
analyse:
|
analyse:
|
||||||
- htdocs/includes/geoPHP/*
|
- htdocs/includes/geoPHP/*
|
||||||
- htdocs/includes/markrogoyski/*
|
- htdocs/includes/markrogoyski/*
|
||||||
@@ -67,8 +66,14 @@ parameters:
|
|||||||
reportMagicMethods: false
|
reportMagicMethods: false
|
||||||
reportMagicProperties: false
|
reportMagicProperties: false
|
||||||
treatPhpDocTypesAsCertain: false
|
treatPhpDocTypesAsCertain: false
|
||||||
|
# if you want to exclude something, generate the baseline to do that, add here give only pattern that does not give the opportunity to introduce new errors
|
||||||
|
# or pattern to avoid false positive of some bugged or allowed phpstan checks
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
- '#.*phan-var#'
|
- '#.*phan-var#'
|
||||||
|
- '#^Expression "''…" on a separate line does not do anything#'
|
||||||
|
- '#Empty array passed to foreach#'
|
||||||
|
- '#Unable to resolve the template type T#'
|
||||||
|
- '#in empty\(\) always exists and is always falsy#'
|
||||||
- '#is always#'
|
- '#is always#'
|
||||||
internalErrorsCountLimit: 50
|
internalErrorsCountLimit: 50
|
||||||
cache:
|
cache:
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ composer install
|
|||||||
|
|
||||||
#### Usage
|
#### Usage
|
||||||
|
|
||||||
##### To make changes (Add --dry-run for test mode only)
|
##### To make changes (remove --dry-run for real run)
|
||||||
```shell
|
```shell
|
||||||
cd dev/tools/rector
|
cd dev/tools/rector
|
||||||
./vendor/bin/rector process --dry-run
|
./vendor/bin/rector process --debug --dry-run
|
||||||
```
|
```
|
||||||
|
|
||||||
##### To make changes on a given directory
|
##### To make changes on a given directory
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cd dev/tools/rector
|
cd dev/tools/rector
|
||||||
./vendor/bin/rector process [--dry-run] [--clear-cache] ../../../htdocs/core/
|
./vendor/bin/rector process --debug [--dry-run] [--clear-cache] ../../../htdocs/core/
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
/**
|
/**
|
||||||
* \file dev/tools/rector/rector.php
|
* \file dev/tools/rector/rector.php
|
||||||
* \ingroup core
|
* \ingroup core
|
||||||
* \brief Toolt to run rector
|
* \brief Tool to run rector
|
||||||
*
|
*
|
||||||
* cd dev/tools/rector
|
* cd dev/tools/rector
|
||||||
* ./vendor/bin/rector process [--dry-run] [--clear-cache] ../../../htdocs/core/
|
* ./vendor/bin/rector process [--dry-run] [--clear-cache] ../../../htdocs/core/
|
||||||
@@ -33,17 +33,22 @@ use Rector\Set\ValueObject\SetList;
|
|||||||
|
|
||||||
return static function (RectorConfig $rectorConfig): void {
|
return static function (RectorConfig $rectorConfig): void {
|
||||||
$rectorConfig->phpVersion(PhpVersion::PHP_71);
|
$rectorConfig->phpVersion(PhpVersion::PHP_71);
|
||||||
//$rectorConfig->indent(' ', 4);
|
$rectorConfig->indent(' ', 4);
|
||||||
|
|
||||||
// Traits seems not supported correctly by rector without declaring them as bootstrapFiles
|
// Traits seems not supported correctly by rector without declaring them as bootstrapFiles
|
||||||
$arrayoftraitfiles = array(
|
$arrayoftraitfiles = array(
|
||||||
__DIR__ . '/../../../htdocs/core/class/commonincoterm.class.php',
|
__DIR__ . '/../../../htdocs/core/class/commonincoterm.class.php',
|
||||||
__DIR__ . '/../../../htdocs/core/class/commonpeople.class.php',
|
__DIR__ . '/../../../htdocs/core/class/commonpeople.class.php',
|
||||||
__DIR__ . '/../../../htdocs/core/class/commonsocialnetworks.class.php'
|
__DIR__ . '/../../../htdocs/core/class/commonsignedobject.class.php',
|
||||||
|
__DIR__ . '/../../../htdocs/core/class/commonsocialnetworks.class.php',
|
||||||
|
__DIR__ . '/../../../htdocs/core/class/commontrigger.class.php',
|
||||||
|
__DIR__ . '/../../../htdocs/core/class/doldeprecationhandler.class.php',
|
||||||
|
__DIR__ . '/../../../htdocs/subtotals/class/commonsubtotal.class.php',
|
||||||
);
|
);
|
||||||
$rectorConfig->bootstrapFiles($arrayoftraitfiles);
|
$rectorConfig->bootstrapFiles($arrayoftraitfiles);
|
||||||
|
|
||||||
$rectorConfig->paths([
|
$rectorConfig->paths([
|
||||||
|
__DIR__ . '/../../../dev/',
|
||||||
__DIR__ . '/../../../htdocs/',
|
__DIR__ . '/../../../htdocs/',
|
||||||
__DIR__ . '/../../../scripts/',
|
__DIR__ . '/../../../scripts/',
|
||||||
__DIR__ . '/../../../test/phpunit/',
|
__DIR__ . '/../../../test/phpunit/',
|
||||||
@@ -54,7 +59,8 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
'**/custom/**',
|
'**/custom/**',
|
||||||
'**/vendor/**',
|
'**/vendor/**',
|
||||||
'**/rector/**', // Disable this line to test the "test.php" file.
|
'**/rector/**', // Disable this line to test the "test.php" file.
|
||||||
__DIR__ . '/../../../htdocs/custom/',
|
__DIR__ . '/../../../dev/tools/phan/stubs/*',
|
||||||
|
__DIR__ . '/../../../htdocs/custom/*',
|
||||||
__DIR__ . '/../../../htdocs/install/doctemplates/*'
|
__DIR__ . '/../../../htdocs/install/doctemplates/*'
|
||||||
//'test.php',
|
//'test.php',
|
||||||
]);
|
]);
|
||||||
@@ -82,12 +88,18 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
$rectorConfig->rule(Dolibarr\Rector\Renaming\EmptyUserRightsToFunction::class);
|
$rectorConfig->rule(Dolibarr\Rector\Renaming\EmptyUserRightsToFunction::class);
|
||||||
$rectorConfig->rule(Dolibarr\Rector\Renaming\GlobalToFunction::class);
|
$rectorConfig->rule(Dolibarr\Rector\Renaming\GlobalToFunction::class);
|
||||||
$rectorConfig->rule(Dolibarr\Rector\Renaming\UserRightsToFunction::class);
|
$rectorConfig->rule(Dolibarr\Rector\Renaming\UserRightsToFunction::class);
|
||||||
//$rectorConfig->rule(Dolibarr\Rector\Renaming\UsePositiveExit::class);
|
$rectorConfig->rule(Dolibarr\Rector\Renaming\UsePositiveExit::class);
|
||||||
|
|
||||||
|
|
||||||
// This fix <> into != but it breaks other rules, so added at end.
|
// This fix <> into != but it breaks other rules, so added at end.
|
||||||
$rectorConfig->rule(Rector\CodeQuality\Rector\NotEqual\CommonNotEqualRector::class);
|
//$rectorConfig->rule(Rector\CodeQuality\Rector\NotEqual\CommonNotEqualRector::class);
|
||||||
|
|
||||||
|
/*
|
||||||
|
$rectorConfig->skip([
|
||||||
|
Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser::class,
|
||||||
|
Dolibarr\Rector\Renaming\GlobalToFunction::class
|
||||||
|
]);
|
||||||
|
*/
|
||||||
|
|
||||||
// Add all predefined rules to migrate to up to php 71.
|
// Add all predefined rules to migrate to up to php 71.
|
||||||
// Warning this break tab spacing of arrays on several lines
|
// Warning this break tab spacing of arrays on several lines
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class GlobalToFunction extends AbstractRector
|
|||||||
'Change $conf->global to getDolGlobal in context (1) conf->global Operator Value or (2) function(conf->global...)',
|
'Change $conf->global to getDolGlobal in context (1) conf->global Operator Value or (2) function(conf->global...)',
|
||||||
[new CodeSample(
|
[new CodeSample(
|
||||||
'$conf->global->CONSTANT',
|
'$conf->global->CONSTANT',
|
||||||
'getDolGlobalInt(\'CONSTANT\')'
|
'getDolGlobalString|Int(\'CONSTANT\')'
|
||||||
)]
|
)]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -228,14 +228,36 @@ class GlobalToFunction extends AbstractRector
|
|||||||
return new Concat($leftConcat, $rightConcat);
|
return new Concat($leftConcat, $rightConcat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If a && b and a or b is conf->global, we replace a or/and b
|
||||||
if ($node instanceof BooleanAnd) {
|
if ($node instanceof BooleanAnd) {
|
||||||
$nodes = $this->resolveTwoNodeMatch($node);
|
// Transformation sur le nœud gauche
|
||||||
if (!isset($nodes)) {
|
$changedone = 0;
|
||||||
return;
|
if ($this->isGlobalVar($node->left)) {
|
||||||
|
$constName = $this->getConstName($node->left);
|
||||||
|
if (empty($constName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$node->left = new FuncCall(
|
||||||
|
new Name('getDolGlobalString'),
|
||||||
|
[new Arg($constName)]
|
||||||
|
);
|
||||||
|
$changedone++;
|
||||||
|
}
|
||||||
|
if ($this->isGlobalVar($node->right)) {
|
||||||
|
$constName = $this->getConstName($node->right);
|
||||||
|
if (empty($constName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$node->right = new FuncCall(
|
||||||
|
new Name('getDolGlobalString'),
|
||||||
|
[new Arg($constName)]
|
||||||
|
);
|
||||||
|
$changedone++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var Equal $node */
|
if ($changedone) {
|
||||||
$node = $nodes->getFirstExpr();
|
return $node;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -270,9 +292,42 @@ class GlobalToFunction extends AbstractRector
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now we process a comparison
|
||||||
$isconfglobal = $this->isGlobalVar($node->left);
|
$isconfglobal = $this->isGlobalVar($node->left);
|
||||||
if (!$isconfglobal) {
|
if (!$isconfglobal) {
|
||||||
// The left side is not conf->global->xxx, so we leave
|
$isconfglobal = $this->isGlobalVar($node->right);
|
||||||
|
if (!$isconfglobal) {
|
||||||
|
// The left side and right side is not conf->global->xxx, so we leave
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Right side is conf->global->xxx, but we can't know if we must use getDolGlobalInt or String,
|
||||||
|
// so we use getDolGlobalString if comparison is ==
|
||||||
|
if ($typeofcomparison == 'Equal') {
|
||||||
|
$constName = $this->getConstName($node->right);
|
||||||
|
if (empty($constName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test the type after the comparison conf->global->xxx to know the name of function
|
||||||
|
$typeleft = $node->left->getType();
|
||||||
|
switch ($typeleft) {
|
||||||
|
case 'Scalar_LNumber':
|
||||||
|
$funcName = 'getDolGlobalInt';
|
||||||
|
break;
|
||||||
|
case 'Scalar_String':
|
||||||
|
$funcName = 'getDolGlobalString';
|
||||||
|
break;
|
||||||
|
default: // Can be Expr_FuncCall
|
||||||
|
$funcName = 'getDolGlobalString';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$node->right = new FuncCall(
|
||||||
|
new Name($funcName),
|
||||||
|
[new Arg($constName)]
|
||||||
|
);
|
||||||
|
return $node;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,36 +415,6 @@ class GlobalToFunction extends AbstractRector
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get nodes with check empty
|
|
||||||
*
|
|
||||||
* @param BooleanAnd $booleanAnd A BooleandAnd
|
|
||||||
* @return TwoNodeMatch|null
|
|
||||||
*/
|
|
||||||
private function resolveTwoNodeMatch(BooleanAnd $booleanAnd): ?TwoNodeMatch
|
|
||||||
{
|
|
||||||
return $this->binaryOpManipulator->matchFirstAndSecondConditionNode(
|
|
||||||
$booleanAnd,
|
|
||||||
// Function to check if we are in the case $conf->global->... == $value
|
|
||||||
function (Node $node): bool {
|
|
||||||
if (!$node instanceof Equal) {
|
|
||||||
return \false;
|
|
||||||
}
|
|
||||||
return $this->isGlobalVar($node->left);
|
|
||||||
},
|
|
||||||
// !empty(...) || isset(...)
|
|
||||||
function (Node $node): bool {
|
|
||||||
if ($node instanceof BooleanNot && $node->expr instanceof Empty_) {
|
|
||||||
return $this->isGlobalVar($node->expr->expr);
|
|
||||||
}
|
|
||||||
if (!$node instanceof Isset_) {
|
|
||||||
return $this->isGlobalVar($node);
|
|
||||||
}
|
|
||||||
return \true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if node is a global access with format conf->global->XXX
|
* Check if node is a global access with format conf->global->XXX
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ DATAPOLICY_TIERS_NIPROSPECT_NICLIENT
|
|||||||
DATAPOLICY_TIERS_PROSPECT
|
DATAPOLICY_TIERS_PROSPECT
|
||||||
DATAPOLICY_TIERS_PROSPECT_CLIENT
|
DATAPOLICY_TIERS_PROSPECT_CLIENT
|
||||||
|
|
||||||
|
#
|
||||||
|
TOKEN_EXPIRE_AT
|
||||||
|
TOKEN_EXPIRED
|
||||||
|
|
||||||
# fournisseur
|
# fournisseur
|
||||||
CodePaymentTerm
|
CodePaymentTerm
|
||||||
IdPaymentTerm
|
IdPaymentTerm
|
||||||
@@ -36,6 +40,15 @@ Reservation
|
|||||||
CompletePage
|
CompletePage
|
||||||
PortionOfPage
|
PortionOfPage
|
||||||
|
|
||||||
|
#
|
||||||
|
AccountancyGroupCAPIT
|
||||||
|
AccountancyGroupEXPENSE
|
||||||
|
AccountancyGroupFINAN
|
||||||
|
AccountancyGroupIMMO
|
||||||
|
AccountancyGroupINCOME
|
||||||
|
AccountancyGroupSTOCK
|
||||||
|
AccountancyGroupTHIRDPARTY
|
||||||
|
|
||||||
# Others
|
# Others
|
||||||
ACCOUNTING_ACCOUNT_CUSTOMER
|
ACCOUNTING_ACCOUNT_CUSTOMER
|
||||||
ACCOUNTING_ACCOUNT_CUSTOMER_Desc
|
ACCOUNTING_ACCOUNT_CUSTOMER_Desc
|
||||||
@@ -95,6 +108,14 @@ ACCOUNTING_VAT_BUY_REVERSE_CHARGES_DEBIT
|
|||||||
ACCOUNTING_VAT_PAY_ACCOUNT
|
ACCOUNTING_VAT_PAY_ACCOUNT
|
||||||
ACCOUNTING_VAT_SOLD_ACCOUNT
|
ACCOUNTING_VAT_SOLD_ACCOUNT
|
||||||
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT
|
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT
|
||||||
|
|
||||||
|
AI_API_MODEL_AUDIO
|
||||||
|
AI_API_MODEL_IMAGE
|
||||||
|
AI_API_MODEL_TEXT
|
||||||
|
AI_API_MODEL_TRANSCRIPT
|
||||||
|
AI_API_MODEL_TRANSLATE
|
||||||
|
AI_API_MODEL_VIDEO
|
||||||
|
|
||||||
AGENDA_EVENT_CURRENT_COLOR
|
AGENDA_EVENT_CURRENT_COLOR
|
||||||
AGENDA_EVENT_FUTURE_COLOR
|
AGENDA_EVENT_FUTURE_COLOR
|
||||||
AGENDA_EVENT_PAST_COLOR
|
AGENDA_EVENT_PAST_COLOR
|
||||||
@@ -887,6 +908,8 @@ DirectPrint
|
|||||||
Disassemble
|
Disassemble
|
||||||
Dispatch
|
Dispatch
|
||||||
DispatchVerb
|
DispatchVerb
|
||||||
|
DocumentSigned
|
||||||
|
DocumentUnsigned
|
||||||
DoCreditTransferBeforePayments3
|
DoCreditTransferBeforePayments3
|
||||||
DoNotAutofillButAutoConcat
|
DoNotAutofillButAutoConcat
|
||||||
DoNotRemovePreviousCombinations
|
DoNotRemovePreviousCombinations
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
# files. These should be fixed but are ignored for now
|
# files. These should be fixed but are ignored for now
|
||||||
# so that continuous integration does not complain about it
|
# so that continuous integration does not complain about it
|
||||||
# in order to detect newly introduced issues with the keys.
|
# in order to detect newly introduced issues with the keys.
|
||||||
#
|
|
||||||
|
|
||||||
# ██████╗ █████╗ ██████╗ ████████╗ ██╗
|
# ██████╗ █████╗ ██████╗ ████████╗ ██╗
|
||||||
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝███║
|
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝███║
|
||||||
# ██████╔╝███████║██████╔╝ ██║ ╚██║
|
# ██████╔╝███████║██████╔╝ ██║ ╚██║
|
||||||
@@ -76,6 +77,7 @@ ViewPageInNewTab
|
|||||||
WEBSITE_PAGE_EXAMPLE
|
WEBSITE_PAGE_EXAMPLE
|
||||||
WebpageContent
|
WebpageContent
|
||||||
YourTicketSuccessfullySaved
|
YourTicketSuccessfullySaved
|
||||||
|
|
||||||
#
|
#
|
||||||
# ██████╗ █████╗ ██████╗ ████████╗██████╗
|
# ██████╗ █████╗ ██████╗ ████████╗██████╗
|
||||||
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝╚════██╗
|
# ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝╚════██╗
|
||||||
@@ -94,8 +96,6 @@ AADE_WEBSERVICE_USER
|
|||||||
API
|
API
|
||||||
Accept
|
Accept
|
||||||
AccountancyErrorMismatchLetteringCode
|
AccountancyErrorMismatchLetteringCode
|
||||||
AccountingAccount
|
|
||||||
AccountingCode
|
|
||||||
AccountingJournalType
|
AccountingJournalType
|
||||||
ActionAC_
|
ActionAC_
|
||||||
ActionAC_ALL_
|
ActionAC_ALL_
|
||||||
@@ -145,14 +145,12 @@ Banque
|
|||||||
Barcode
|
Barcode
|
||||||
BarcodeDesc
|
BarcodeDesc
|
||||||
BarcodeStickersMask
|
BarcodeStickersMask
|
||||||
BatchInformationNotfound
|
|
||||||
BillOfMaterialsLine
|
BillOfMaterialsLine
|
||||||
BlockLogNeedAmountsValue
|
BlockLogNeedAmountsValue
|
||||||
BlockLogNeedElement
|
BlockLogNeedElement
|
||||||
BlockedLogAuthorityNeededToStoreYouFingerprintsInNonAlterableRemote
|
BlockedLogAuthorityNeededToStoreYouFingerprintsInNonAlterableRemote
|
||||||
BlockedLogAuthorityUrl
|
BlockedLogAuthorityUrl
|
||||||
BlockedLogSetup
|
BlockedLogSetup
|
||||||
BookCalSystem
|
|
||||||
Bookings
|
Bookings
|
||||||
BoxTitleLast
|
BoxTitleLast
|
||||||
BoxTitleLatest
|
BoxTitleLatest
|
||||||
@@ -200,8 +198,6 @@ ConfirmActionMyObject
|
|||||||
ConfirmActionTarget
|
ConfirmActionTarget
|
||||||
ConfirmCloneMyObject
|
ConfirmCloneMyObject
|
||||||
ConfirmCloneTask
|
ConfirmCloneTask
|
||||||
ConfirmCreateAdherent
|
|
||||||
ConfirmDeleteAdherent
|
|
||||||
ConfirmDeleteIndividual
|
ConfirmDeleteIndividual
|
||||||
ConfirmDeleteReport
|
ConfirmDeleteReport
|
||||||
ConfirmDeleteWebsiteAccount
|
ConfirmDeleteWebsiteAccount
|
||||||
@@ -289,7 +285,6 @@ EmailcollectorFilter
|
|||||||
EmailingTargetSelector
|
EmailingTargetSelector
|
||||||
Empty
|
Empty
|
||||||
End
|
End
|
||||||
EnterAnIP
|
|
||||||
EnterNameOfDictionnaryToDeleteDesc
|
EnterNameOfDictionnaryToDeleteDesc
|
||||||
Entries
|
Entries
|
||||||
ErrSCAAuthentication
|
ErrSCAAuthentication
|
||||||
@@ -307,7 +302,6 @@ ErrorBadSocialNetworkValue
|
|||||||
ErrorBadStatus
|
ErrorBadStatus
|
||||||
ErrorBadValue
|
ErrorBadValue
|
||||||
ErrorBadValueForBatch
|
ErrorBadValueForBatch
|
||||||
ErrorBadValueForDate
|
|
||||||
ErrorCanNotDeleteDir
|
ErrorCanNotDeleteDir
|
||||||
ErrorCantSplitAUsedDiscount
|
ErrorCantSplitAUsedDiscount
|
||||||
ErrorChartOfAccountSystemNotSelected
|
ErrorChartOfAccountSystemNotSelected
|
||||||
@@ -360,7 +354,6 @@ ErrorTechnicalError
|
|||||||
ErrorThirdPartyIdIsMandatory
|
ErrorThirdPartyIdIsMandatory
|
||||||
ErrorTicketIsNotValid
|
ErrorTicketIsNotValid
|
||||||
ErrorTitreAlreadyExists
|
ErrorTitreAlreadyExists
|
||||||
ErrorUpdatingUsersCP
|
|
||||||
ErrorUserFetch
|
ErrorUserFetch
|
||||||
ErrorValueMustBeInteger
|
ErrorValueMustBeInteger
|
||||||
ErrorValueTooHigh
|
ErrorValueTooHigh
|
||||||
@@ -432,7 +425,6 @@ Gzip
|
|||||||
HTTPBasicPassword
|
HTTPBasicPassword
|
||||||
HelpAbandonProductReturned
|
HelpAbandonProductReturned
|
||||||
HideVersionLink
|
HideVersionLink
|
||||||
HolidayStarted
|
|
||||||
Hook
|
Hook
|
||||||
Hooks
|
Hooks
|
||||||
IBANNotDefined
|
IBANNotDefined
|
||||||
@@ -618,7 +610,6 @@ PaymentCondition
|
|||||||
PaymentConditionShort
|
PaymentConditionShort
|
||||||
PaymentDonation
|
PaymentDonation
|
||||||
PaymentHigherThanReminderToPaySupplier
|
PaymentHigherThanReminderToPaySupplier
|
||||||
PaymentSalary
|
|
||||||
PaymentSendToStripeTerminal
|
PaymentSendToStripeTerminal
|
||||||
PaymentType
|
PaymentType
|
||||||
PaymentTypeShort
|
PaymentTypeShort
|
||||||
@@ -642,10 +633,7 @@ PrintModule
|
|||||||
PrintUserConfDesc
|
PrintUserConfDesc
|
||||||
PrinterId
|
PrinterId
|
||||||
PrinterIdEmpty
|
PrinterIdEmpty
|
||||||
PrinterLocation
|
|
||||||
PrinterNameEmpty
|
|
||||||
PrinterParameterEmpty
|
PrinterParameterEmpty
|
||||||
Printers
|
|
||||||
Printing
|
Printing
|
||||||
ProductCodeDesc
|
ProductCodeDesc
|
||||||
ProductFournisseurPrice
|
ProductFournisseurPrice
|
||||||
@@ -809,7 +797,6 @@ Templates
|
|||||||
TestPrinterTemplate
|
TestPrinterTemplate
|
||||||
TestTemplateToPrinter
|
TestTemplateToPrinter
|
||||||
Theme
|
Theme
|
||||||
ThirdpartyHasNoDefaultBanAccount
|
|
||||||
ThisIsInformationOnDocumentToSign
|
ThisIsInformationOnDocumentToSign
|
||||||
ThisScreenAllowsYouToSignDocFrom
|
ThisScreenAllowsYouToSignDocFrom
|
||||||
TicketCategoryShort
|
TicketCategoryShort
|
||||||
@@ -846,8 +833,6 @@ UpdateUser
|
|||||||
UpgradeHasBeenUnlocked
|
UpgradeHasBeenUnlocked
|
||||||
Url
|
Url
|
||||||
Use of API for currency update is disabled by option MULTICURRENCY_DISABLE_SYNC_CURRENCYLAYER
|
Use of API for currency update is disabled by option MULTICURRENCY_DISABLE_SYNC_CURRENCYLAYER
|
||||||
UserRemovedFromGroup
|
|
||||||
UserSetInGroup
|
|
||||||
VCard
|
VCard
|
||||||
Vacant
|
Vacant
|
||||||
ValidateAndSign
|
ValidateAndSign
|
||||||
@@ -873,7 +858,6 @@ Widgets
|
|||||||
Windows
|
Windows
|
||||||
WorkingBoard
|
WorkingBoard
|
||||||
Workload
|
Workload
|
||||||
WrongAmount
|
|
||||||
XDebug
|
XDebug
|
||||||
XmlCorrupted
|
XmlCorrupted
|
||||||
Y
|
Y
|
||||||
@@ -1030,10 +1014,6 @@ PDF/A-3b
|
|||||||
PartnershipSentByEMail
|
PartnershipSentByEMail
|
||||||
PdfTitle
|
PdfTitle
|
||||||
ProcessingError
|
ProcessingError
|
||||||
PurchaseOrder
|
|
||||||
PurchaseOrders
|
|
||||||
ReceptionSentByEMail
|
|
||||||
ReceptionValidated
|
|
||||||
Recruited
|
Recruited
|
||||||
Ref. Product
|
Ref. Product
|
||||||
RefNewContract
|
RefNewContract
|
||||||
@@ -1041,7 +1021,6 @@ Stable
|
|||||||
Suggested
|
Suggested
|
||||||
TicketMessageMailSignatureText
|
TicketMessageMailSignatureText
|
||||||
TicketSetupPage
|
TicketSetupPage
|
||||||
Tiers
|
|
||||||
Timeline
|
Timeline
|
||||||
Transfer
|
Transfer
|
||||||
TryAnotherConnectionMode
|
TryAnotherConnectionMode
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Find unused translations pretty fast...
|
# Find unused translations pretty fast...
|
||||||
|
# Go into the root of the git directory, then launch the shell.
|
||||||
#
|
#
|
||||||
# Principle:
|
# Principle:
|
||||||
#
|
#
|
||||||
@@ -35,7 +36,7 @@ DYNAMIC_KEYS_FILE=${TMP}/dynamic_keys
|
|||||||
MISSING_AND_UNUSED_FILE=${TMP}/missing_and_unused
|
MISSING_AND_UNUSED_FILE=${TMP}/missing_and_unused
|
||||||
MISSING_FILE=${TMP}/missing
|
MISSING_FILE=${TMP}/missing
|
||||||
UNUSED_FILE=${TMP}/unused
|
UNUSED_FILE=${TMP}/unused
|
||||||
EXPECTED_REGEX='(Country..|ExportDataset_.*|Language_.._..|MonthVeryShort\d\d|PaperFormat.*||Permission.*|ProfId\d(..)?|unit.*)'
|
EXPECTED_REGEX='(Country..|ExportDataset_.*|Language_.._..|MonthVeryShort\d\d|PaperFormat.*||Permission.*|ProfId\d(..)?|TypeContact_shipping_external_.*|unit.*)'
|
||||||
DYNAMIC_KEYS_SRC_FILE=${MYDIR}/dynamic_translation_keys.lst
|
DYNAMIC_KEYS_SRC_FILE=${MYDIR}/dynamic_translation_keys.lst
|
||||||
EXCLUDE_KEYS_SRC_FILE=${MYDIR}/ignore_translation_keys.lst
|
EXCLUDE_KEYS_SRC_FILE=${MYDIR}/ignore_translation_keys.lst
|
||||||
DUPLICATE_KEYS_SRC_FILE=${MYDIR}/duplicate_translation_keys.lst
|
DUPLICATE_KEYS_SRC_FILE=${MYDIR}/duplicate_translation_keys.lst
|
||||||
|
|||||||
BIN
doc/images/dolibarr_180x180_color.png
Normal file
BIN
doc/images/dolibarr_180x180_color.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.6 KiB |
1
htdocs/.gitignore
vendored
1
htdocs/.gitignore
vendored
@@ -21,7 +21,6 @@
|
|||||||
/cabinetmed*
|
/cabinetmed*
|
||||||
/webmail*
|
/webmail*
|
||||||
/conf/conf.php
|
/conf/conf.php
|
||||||
/subtotal*
|
|
||||||
/abricot*
|
/abricot*
|
||||||
/nomenclature*
|
/nomenclature*
|
||||||
/of/
|
/of/
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ $search_import_key = GETPOST('search_import_key', 'alpha');
|
|||||||
$search_reconcilable = GETPOST("search_reconcilable", 'int');
|
$search_reconcilable = GETPOST("search_reconcilable", 'int');
|
||||||
$search_centralized = GETPOST("search_centralized", 'int');
|
$search_centralized = GETPOST("search_centralized", 'int');
|
||||||
$search_active = GETPOST("search_active", 'int');
|
$search_active = GETPOST("search_active", 'int');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
|
$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
|
|
||||||
@@ -98,20 +98,22 @@ if (!$sortorder) {
|
|||||||
$sortorder = "ASC";
|
$sortorder = "ASC";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$object = new AccountingAccount($db);
|
||||||
|
|
||||||
$arrayfields = array(
|
$arrayfields = array(
|
||||||
'aa.account_number' => array('label' => "AccountNumber", 'checked' => '1'),
|
'aa.account_number' => array('label' => "AccountNumber", 'checked' => '1'),
|
||||||
'aa.label' => array('label' => "Label", 'checked' => '1'),
|
'aa.label' => array('label' => "Label", 'checked' => '1'),
|
||||||
'aa.labelshort' => array('label' => "LabelToShow", 'checked' => '1'),
|
'aa.labelshort' => array('label' => "ShortLabel", 'checked' => '1'),
|
||||||
'aa.account_parent' => array('label' => "Accountparent", 'checked' => '1'),
|
'aa.account_parent' => array('label' => "Accountparent", 'checked' => '1'),
|
||||||
'aa.pcg_type' => array('label' => "Pcgtype", 'checked' => '1', 'help' => 'PcgtypeDesc'),
|
'aa.pcg_type' => array('label' => "Pcgtype", 'checked' => '1', 'help' => 'PcgtypeDesc'),
|
||||||
'categories' => array('label' => "AccountingCategories", 'checked' => '-1', 'help' => 'AccountingCategoriesDesc'),
|
'categories' => array('label' => "AccountingCategories", 'checked' => '-1', 'help' => 'AccountingCategoriesDesc'),
|
||||||
'aa.reconcilable' => array('label' => "Reconcilable", 'checked' => '1'),
|
'aa.reconcilable' => array('label' => "Reconcilable", 'checked' => '1'),
|
||||||
'aa.centralized' => array('label' => "Centralized", 'checked' => '1'),
|
'aa.centralized' => array('label' => "Centralized", 'checked' => '1', 'help' => 'CentralizedAccountHelp'),
|
||||||
'aa.import_key' => array('label' => "ImportId", 'checked' => '-1', 'help' => ''),
|
'aa.import_key' => array('label' => "ImportId", 'checked' => '-1', 'help' => ''),
|
||||||
'aa.active' => array('label' => "Activated", 'checked' => '1')
|
'aa.active' => array('label' => "Activated", 'checked' => '1')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
|
if (!getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) {
|
||||||
unset($arrayfields['categories']);
|
unset($arrayfields['categories']);
|
||||||
unset($arrayfields['aa.reconcilable']);
|
unset($arrayfields['aa.reconcilable']);
|
||||||
}
|
}
|
||||||
@@ -350,7 +352,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($resql);
|
$nbtotalofrecords = $db->num_rows($resql);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
@@ -557,12 +559,10 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reconcilable
|
// Reconcilable
|
||||||
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
|
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
||||||
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
print '<td class="liste_titre center">';
|
||||||
print '<td class="liste_titre center">';
|
print $form->selectyesno('search_reconcilable', $search_reconcilable, 1, false, 1, 1, 'search_status onrightofpage width75');
|
||||||
print $form->selectyesno('search_reconcilable', $search_reconcilable, 1, false, 1, 1, 'search_status onrightofpage width75');
|
print '</td>';
|
||||||
print '</td>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Centralized
|
// Centralized
|
||||||
@@ -574,10 +574,11 @@ if ($resql) {
|
|||||||
|
|
||||||
// Active
|
// Active
|
||||||
if (!empty($arrayfields['aa.active']['checked'])) {
|
if (!empty($arrayfields['aa.active']['checked'])) {
|
||||||
print '<td class="liste_titre center">';
|
print '<td class="liste_titre center parentonrightofpage">';
|
||||||
print $form->selectyesno('search_active', $search_active, 1, false, 1, 1, 'search_status onrightofpage width75');
|
print $form->selectyesno('search_active', $search_active, 1, false, 1, 1, 'search_status onrightofpage width75');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action column
|
// Action column
|
||||||
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
|
||||||
print '<td class="liste_titre center maxwidthsearch">';
|
print '<td class="liste_titre center maxwidthsearch">';
|
||||||
@@ -614,12 +615,14 @@ if ($resql) {
|
|||||||
print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
|
print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, '', $sortfield, $sortorder, 'left ');
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
// Main group
|
||||||
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
if (!empty($arrayfields['aa.pcg_type']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.pcg_type']['help'], 1);
|
print_liste_field_titre($arrayfields['aa.pcg_type']['label'], $_SERVER["PHP_SELF"], 'aa.pcg_type,aa.account_number', '', $param, '', $sortfield, $sortorder, 'right ', $arrayfields['aa.pcg_type']['help'].'::-1', 1);
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
// Number of custom groups
|
||||||
if (!empty($arrayfields['categories']['checked'])) {
|
if (!empty($arrayfields['categories']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['categories']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, '', $arrayfields['categories']['help'], 1);
|
print_liste_field_titre($arrayfields['categories']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, '', $arrayfields['categories']['help'].'::-1', 1);
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -629,21 +632,19 @@ if ($resql) {
|
|||||||
print $hookmanager->resPrint;
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
if (!empty($arrayfields['aa.import_key']['checked'])) {
|
if (!empty($arrayfields['aa.import_key']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.import_key']['label'], $_SERVER["PHP_SELF"], 'aa.import_key', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.import_key']['help'], 1);
|
print_liste_field_titre($arrayfields['aa.import_key']['label'], $_SERVER["PHP_SELF"], 'aa.import_key', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.import_key']['help'].'::-1', 1);
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
|
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
||||||
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print_liste_field_titre($arrayfields['aa.reconcilable']['label'], $_SERVER["PHP_SELF"], 'aa.reconcilable', '', $param, '', $sortfield, $sortorder, 'center ');
|
$totalarray['nbfield']++;
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['aa.centralized']['checked'])) {
|
if (!empty($arrayfields['aa.centralized']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.centralized']['label'], $_SERVER["PHP_SELF"], 'aa.centralized', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['aa.centralized']['label'], $_SERVER["PHP_SELF"], 'aa.centralized', '', $param, '', $sortfield, $sortorder, '', $arrayfields['aa.centralized']['help'].'::-1', 1);
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['aa.active']['checked'])) {
|
if (!empty($arrayfields['aa.active']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['aa.active']['label'], $_SERVER["PHP_SELF"], 'aa.active', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
$totalarray['nbfield']++;
|
$totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Action column
|
// Action column
|
||||||
@@ -759,7 +760,7 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
// Custom accounts
|
// Custom accounts
|
||||||
if (!empty($arrayfields['categories']['checked'])) {
|
if (!empty($arrayfields['categories']['checked'])) {
|
||||||
print "<td>";
|
print '<td class="right">';
|
||||||
// TODO Get all custom groups labels the account is in
|
// TODO Get all custom groups labels the account is in
|
||||||
print dol_escape_htmltag($obj->fk_accounting_category);
|
print dol_escape_htmltag($obj->fk_accounting_category);
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
@@ -783,23 +784,21 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
|
// Activated or not reconciliation on an accounting account
|
||||||
// Activated or not reconciliation on an accounting account
|
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
||||||
if (!empty($arrayfields['aa.reconcilable']['checked'])) {
|
print '<td class="center">';
|
||||||
print '<td class="center">';
|
if (empty($obj->reconcilable)) {
|
||||||
if (empty($obj->reconcilable)) {
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=enable&mode=1&token='.newToken().'">';
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=enable&mode=1&token='.newToken().'">';
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
print img_picto($langs->trans("Disabled"), 'switch_off');
|
print '</a>';
|
||||||
print '</a>';
|
} else {
|
||||||
} else {
|
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=disable&mode=1&token='.newToken().'">';
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?id='.$obj->rowid.'&action=disable&mode=1&token='.newToken().'">';
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
print img_picto($langs->trans("Activated"), 'switch_on');
|
print '</a>';
|
||||||
print '</a>';
|
}
|
||||||
}
|
print '</td>';
|
||||||
print '</td>';
|
if (!$i) {
|
||||||
if (!$i) {
|
$totalarray['nbfield']++;
|
||||||
$totalarray['nbfield']++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -92,6 +92,8 @@ $search_country_id = GETPOST('search_country_id', 'int');
|
|||||||
if ($user->socid > 0) {
|
if ($user->socid > 0) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$permissiontoeditchart = $user->hasRight('accounting', 'chartofaccount');
|
||||||
if (!$user->hasRight('accounting', 'chartofaccount')) {
|
if (!$user->hasRight('accounting', 'chartofaccount')) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
@@ -143,7 +145,6 @@ $tabhelp = array();
|
|||||||
$tabhelp[31] = array('pcg_version' => $langs->trans("EnterAnyCode"));
|
$tabhelp[31] = array('pcg_version' => $langs->trans("EnterAnyCode"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@@ -198,32 +199,15 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
|
|||||||
// Si verif ok et action add, on ajoute la ligne
|
// Si verif ok et action add, on ajoute la ligne
|
||||||
if ($ok && GETPOST('actionadd', 'alpha')) {
|
if ($ok && GETPOST('actionadd', 'alpha')) {
|
||||||
$newid = 0;
|
$newid = 0;
|
||||||
if ($tabrowid[$id]) {
|
|
||||||
// Get free id for insert
|
|
||||||
$sql = "SELECT MAX(".$db->sanitize($tabrowid[$id]).") as newid FROM ".$db->sanitize($tabname[$id]);
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result) {
|
|
||||||
$obj = $db->fetch_object($result);
|
|
||||||
$newid = ($obj->newid + 1);
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add new entry
|
// Add new entry
|
||||||
$sql = "INSERT INTO ".$db->sanitize($tabname[$id])." (";
|
$sql = "INSERT INTO ".$db->sanitize($tabname[$id])." (";
|
||||||
// List of fields
|
// List of fields
|
||||||
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
|
|
||||||
$sql .= $db->sanitize($tabrowid[$id]).",";
|
|
||||||
}
|
|
||||||
$sql .= $db->sanitize($tabfieldinsert[$id]);
|
$sql .= $db->sanitize($tabfieldinsert[$id]);
|
||||||
$sql .= ",active)";
|
$sql .= ",active)";
|
||||||
$sql .= " VALUES(";
|
$sql .= " VALUES(";
|
||||||
|
|
||||||
// List of values
|
// List of values
|
||||||
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldinsert)) {
|
|
||||||
$sql .= $newid.",";
|
|
||||||
}
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($listfieldinsert as $f => $value) {
|
foreach ($listfieldinsert as $f => $value) {
|
||||||
if ($value == 'price' || preg_match('/^amount/i', $value) || $value == 'taux') {
|
if ($value == 'price' || preg_match('/^amount/i', $value) || $value == 'taux') {
|
||||||
@@ -259,19 +243,10 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
|
|||||||
|
|
||||||
// Si verif ok et action modify, on modifie la ligne
|
// Si verif ok et action modify, on modifie la ligne
|
||||||
if ($ok && GETPOST('actionmodify', 'alpha')) {
|
if ($ok && GETPOST('actionmodify', 'alpha')) {
|
||||||
if ($tabrowid[$id]) {
|
|
||||||
$rowidcol = $tabrowid[$id];
|
|
||||||
} else {
|
|
||||||
$rowidcol = "rowid";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify entry
|
// Modify entry
|
||||||
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET ";
|
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET ";
|
||||||
// Modifie valeur des champs
|
// Modifie valeur des champs
|
||||||
if ($tabrowid[$id] && !in_array($tabrowid[$id], $listfieldmodify)) {
|
|
||||||
$sql .= $db->sanitize($tabrowid[$id])." = ";
|
|
||||||
$sql .= "'".$db->escape($rowid)."', ";
|
|
||||||
}
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($listfieldmodify as $field) {
|
foreach ($listfieldmodify as $field) {
|
||||||
if ($field == 'price' || preg_match('/^amount/i', $field) || $field == 'taux') {
|
if ($field == 'price' || preg_match('/^amount/i', $field) || $field == 'taux') {
|
||||||
@@ -290,7 +265,7 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
|
|||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$sql .= " WHERE ".$rowidcol." = ".((int) $rowid);
|
$sql .= " WHERE rowid = ".((int) $rowid);
|
||||||
|
|
||||||
dol_syslog("actionmodify", LOG_DEBUG);
|
dol_syslog("actionmodify", LOG_DEBUG);
|
||||||
//print $sql;
|
//print $sql;
|
||||||
@@ -301,14 +276,9 @@ if (GETPOST('actionadd', 'alpha') || GETPOST('actionmodify', 'alpha')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
// delete
|
||||||
if ($tabrowid[$id]) {
|
if ($action == 'confirm_delete' && $confirm == 'yes' && $permissiontoeditchart) {
|
||||||
$rowidcol = $tabrowid[$id];
|
$sql = "DELETE from ".$db->sanitize($tabname[$id])." WHERE rowid = ".((int) $rowid);
|
||||||
} else {
|
|
||||||
$rowidcol = "rowid";
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql = "DELETE from ".$db->sanitize($tabname[$id])." WHERE ".$db->sanitize($rowidcol)." = ".((int) $rowid);
|
|
||||||
|
|
||||||
dol_syslog("delete", LOG_DEBUG);
|
dol_syslog("delete", LOG_DEBUG);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@@ -322,7 +292,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') { // delete
|
|||||||
}
|
}
|
||||||
|
|
||||||
// activate
|
// activate
|
||||||
if ($action == 'activate') {
|
if ($action == 'activate' && $permissiontoeditchart) {
|
||||||
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 1 WHERE rowid = ".((int) $rowid);
|
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 1 WHERE rowid = ".((int) $rowid);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -331,7 +301,7 @@ if ($action == 'activate') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// disable
|
// disable
|
||||||
if ($action == $acts[1]) {
|
if ($action == $acts[1] && $permissiontoeditchart) {
|
||||||
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 0 WHERE rowid = ".((int) $rowid);
|
$sql = "UPDATE ".$db->sanitize($tabname[$id])." SET active = 0 WHERE rowid = ".((int) $rowid);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -359,7 +329,7 @@ print load_fiche_titre($titre, $linkback, 'title_accountancy');
|
|||||||
|
|
||||||
// Confirmation de la suppression de la ligne
|
// Confirmation de la suppression de la ligne
|
||||||
if ($action == 'delete') {
|
if ($action == 'delete') {
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.urlencode((string) ($page)).'&' : '').'sortfield='.urlencode((string) ($sortfield)).'&sortorder='.urlencode((string) ($sortorder)).'&rowid='.urlencode((string) ($rowid)).'&code='.urlencode((string) ($code)).'&id='.urlencode((string) ($id)), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -607,36 +577,34 @@ if ($resql) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can an entry be erased or disabled ?
|
// $url = $_SERVER["PHP_SELF"].'?token='.newToken().($page ? '&page='.$page : '').'&sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
|
||||||
$iserasable = 1;
|
// $url .= '&'.$param.'&';
|
||||||
$canbedisabled = 1;
|
|
||||||
$canbemodified = 1; // true by default
|
|
||||||
|
|
||||||
$url = $_SERVER["PHP_SELF"].'?token='.newToken().($page ? '&page='.$page : '').'&sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
|
$query = [];
|
||||||
$url .= '&'.$param.'&';
|
// decode and add param to query
|
||||||
|
parse_str($param, $query);
|
||||||
|
$query = array_merge($query, [
|
||||||
|
'action' => '',
|
||||||
|
'page' => $page,
|
||||||
|
'sortfield' => $sortfield,
|
||||||
|
'sortorder' => $sortorder,
|
||||||
|
'rowid' => (!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')),
|
||||||
|
'code' => $obj->code,
|
||||||
|
]);
|
||||||
|
|
||||||
// Active
|
// Active
|
||||||
print '<td class="center nowrap">';
|
print '<td class="center nowrap">';
|
||||||
if ($canbedisabled) {
|
$query['action'] = $acts[$obj->active];
|
||||||
print '<a href="'.$url.'action='.$acts[$obj->active].'">'.$actl[$obj->active].'</a>';
|
print '<a href="'.dolBuildUrl($_SERVER["PHP_SELF"], $query, true).'">'.$actl[$obj->active].'</a>';
|
||||||
} else {
|
|
||||||
print $langs->trans("AlwaysActive");
|
|
||||||
}
|
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
// Modify link
|
// Modify link
|
||||||
if ($canbemodified) {
|
$query['action'] = 'edit';
|
||||||
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
|
print '<td class="center"><a class="reposition editfielda" href="'.dolBuildUrl($_SERVER["PHP_SELF"], $query, true).'">'.img_edit().'</a></td>';
|
||||||
} else {
|
|
||||||
print '<td> </td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
if ($iserasable) {
|
$query['action'] = 'delete';
|
||||||
print '<td class="center"><a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a></td>';
|
print '<td class="center"><a href="'.dolBuildUrl($_SERVER["PHP_SELF"], $query, true).'">'.img_delete().'</a></td>';
|
||||||
} else {
|
|
||||||
print '<td> </td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
@@ -700,16 +668,8 @@ function fieldListAccountModel($fieldlist, $obj = null, $tabname = '', $context
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
} elseif ($fieldlist[$field] == 'type_cdr') {
|
} elseif ($fieldlist[$field] == 'type_cdr') {
|
||||||
if ($fieldlist[$field] == 'type_cdr') {
|
print '<td class="center">';
|
||||||
print '<td class="center">';
|
print $form->selectarray($fieldlist[$field], array(0 => $langs->trans('None'), 1 => $langs->trans('AtEndOfMonth'), 2 => $langs->trans('CurrentNext')), (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''));
|
||||||
} else {
|
|
||||||
print '<td>';
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'type_cdr') {
|
|
||||||
print $form->selectarray($fieldlist[$field], array(0 => $langs->trans('None'), 1 => $langs->trans('AtEndOfMonth'), 2 => $langs->trans('CurrentNext')), (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''));
|
|
||||||
} else {
|
|
||||||
print $form->selectyesno($fieldlist[$field], (!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : ''), 1);
|
|
||||||
}
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
} elseif ($fieldlist[$field] == 'code' && isset($obj->{$fieldlist[$field]})) {
|
||||||
print '<td><input type="text" class="flat" value="'.(!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : '').'" size="10" name="'.$fieldlist[$field].'"></td>';
|
print '<td><input type="text" class="flat" value="'.(!empty($obj->{$fieldlist[$field]}) ? $obj->{$fieldlist[$field]} : '').'" size="10" name="'.$fieldlist[$field].'"></td>';
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
||||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* 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) 2025 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -77,7 +77,7 @@ if (GETPOST('cancel', 'alpha')) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'add' && $user->hasRight('accounting', 'chartofaccount')) {
|
if ($action == 'add' /* && $user->hasRight('accounting', 'chartofaccount') // already checked */) {
|
||||||
if (!$cancel) {
|
if (!$cancel) {
|
||||||
if (!$account_number) {
|
if (!$account_number) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
||||||
@@ -132,7 +132,7 @@ if ($action == 'add' && $user->hasRight('accounting', 'chartofaccount')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($action == 'edit' && $user->hasRight('accounting', 'chartofaccount')) {
|
} elseif ($action == 'edit' /* && $user->hasRight('accounting', 'chartofaccount') // already checked */) {
|
||||||
if (!$cancel) {
|
if (!$cancel) {
|
||||||
if (!$account_number) {
|
if (!$account_number) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
||||||
@@ -245,7 +245,7 @@ if ($action == 'create') {
|
|||||||
print '<td><input name="label" size="70" value="'.$object->label.'"></td></tr>';
|
print '<td><input name="label" size="70" value="'.$object->label.'"></td></tr>';
|
||||||
|
|
||||||
// Label short
|
// Label short
|
||||||
print '<tr><td>'.$langs->trans("LabelToShow").'</td>';
|
print '<tr><td>'.$langs->trans("ShortLabel").'</td>';
|
||||||
print '<td><input name="labelshort" size="70" value="'.$object->labelshort.'"></td></tr>';
|
print '<td><input name="labelshort" size="70" value="'.$object->labelshort.'"></td></tr>';
|
||||||
|
|
||||||
// Account parent
|
// Account parent
|
||||||
@@ -314,15 +314,15 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">'.$langs->trans("AccountNumber").'</span></td>';
|
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">'.$langs->trans("AccountNumber").'</span></td>';
|
||||||
print '<td><input name="account_number" size="30" value="'.$object->account_number.'"></td></tr>';
|
print '<td><input class="minwidth300" name="account_number" value="'.$object->account_number.'"></td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td><span class="fieldrequired">'.$langs->trans("Label").'</span></td>';
|
print '<tr><td><span class="fieldrequired">'.$langs->trans("Label").'</span></td>';
|
||||||
print '<td><input name="label" size="70" value="'.$object->label.'"></td></tr>';
|
print '<td><input class="minwidth500" name="label" value="'.$object->label.'"></td></tr>';
|
||||||
|
|
||||||
// Label short
|
// Label short
|
||||||
print '<tr><td>'.$langs->trans("LabelToShow").'</td>';
|
print '<tr><td>'.$langs->trans("ShortLabel").'</td>';
|
||||||
print '<td><input name="labelshort" size="70" value="'.$object->labelshort.'"></td></tr>';
|
print '<td><input class="minwidth300" name="labelshort" value="'.$object->labelshort.'"></td></tr>';
|
||||||
|
|
||||||
// Account parent
|
// Account parent
|
||||||
print '<tr><td>'.$langs->trans("Accountparent").'</td>';
|
print '<tr><td>'.$langs->trans("Accountparent").'</td>';
|
||||||
@@ -386,7 +386,7 @@ if ($action == 'create') {
|
|||||||
print '<td colspan="2">'.$object->label.'</td></tr>';
|
print '<td colspan="2">'.$object->label.'</td></tr>';
|
||||||
|
|
||||||
// Label to show
|
// Label to show
|
||||||
print '<tr><td class="titlefield">'.$langs->trans("LabelToShow").'</td>';
|
print '<tr><td class="titlefield">'.$langs->trans("ShortLabel").'</td>';
|
||||||
print '<td colspan="2">'.$object->labelshort.'</td></tr>';
|
print '<td colspan="2">'.$object->labelshort.'</td></tr>';
|
||||||
|
|
||||||
// Account parent
|
// Account parent
|
||||||
@@ -419,11 +419,11 @@ if ($action == 'create') {
|
|||||||
*/
|
*/
|
||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
if ($user->hasRight('accounting', 'chartofaccount')) {
|
// if ($user->hasRight('accounting', 'chartofaccount')) { // already checked
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=update&token='.newToken().'&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=update&token='.newToken().'&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
|
||||||
} else {
|
// } else {
|
||||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">'.$langs->trans('Modify').'</a>';
|
// print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">'.$langs->trans('Modify').'</a>';
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Delete
|
// Delete
|
||||||
$permissiontodelete = $user->hasRight('accounting', 'chartofaccount');
|
$permissiontodelete = $user->hasRight('accounting', 'chartofaccount');
|
||||||
|
|||||||
@@ -909,6 +909,7 @@ if ($resql) {
|
|||||||
print '<td class="center" class="nowrap">';
|
print '<td class="center" class="nowrap">';
|
||||||
if ($canbedisabled) {
|
if ($canbedisabled) {
|
||||||
print '<a class="reposition" href="'.$url.'action='.urlencode($acts[$obj->active]).'&token='.newToken().'">'.$actl[$obj->active].'</a>';
|
print '<a class="reposition" href="'.$url.'action='.urlencode($acts[$obj->active]).'&token='.newToken().'">'.$actl[$obj->active].'</a>';
|
||||||
|
print '<a class="reposition" href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("AlwaysActive");
|
print $langs->trans("AlwaysActive");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
@@ -202,7 +202,7 @@ if ($result) {
|
|||||||
if (getDolGlobalString('ACCOUNTANCY_FISCALYEAR_DEFAULT') == (int) $fiscalyearstatic->ref) {
|
if (getDolGlobalString('ACCOUNTANCY_FISCALYEAR_DEFAULT') == (int) $fiscalyearstatic->ref) {
|
||||||
print img_picto($langs->trans("Default"), 'on');
|
print img_picto($langs->trans("Default"), 'on');
|
||||||
} else {
|
} else {
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setdefault&token='.newToken().'&value='.urlencode($fiscalyearstatic->ref).'&label='.urlencode($fiscalyearstatic->label).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"), 'off').'</a>';
|
print '<a class="reposition" href="'.dolBuildUrl($_SERVER["PHP_SELF"], ['action' => 'setdefault', 'value' => $fiscalyearstatic->ref, 'label'=>$fiscalyearstatic->label], true).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("SetAsDefault"), 'off').'</a>';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
/* Copyright (C) 2014-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
||||||
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -82,7 +82,7 @@ $permissiontoadd = $user->hasRight('accounting', 'fiscalyear', 'write');
|
|||||||
if ($user->socid > 0) {
|
if ($user->socid > 0) {
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
if (!$permissiontoadd) {
|
if (!$permissiontoadd) { // after this test $permissiontoadd is always true
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ if ($reshook < 0) {
|
|||||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
|
if ($action == 'confirm_delete' && $confirm == "yes" /* && $permissiontoadd // always true */) {
|
||||||
$result = $object->delete($user);
|
$result = $object->delete($user);
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
header("Location: fiscalyear.php");
|
header("Location: fiscalyear.php");
|
||||||
@@ -105,7 +105,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
|
|||||||
} else {
|
} else {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
} elseif ($action == 'add' && $permissiontoadd) {
|
} elseif ($action == 'add' /* && $permissiontoadd // always true */) {
|
||||||
if (!GETPOST('cancel', 'alpha')) {
|
if (!GETPOST('cancel', 'alpha')) {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
|
|||||||
header("Location: ./fiscalyear.php");
|
header("Location: ./fiscalyear.php");
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
} elseif ($action == 'update' && $permissiontoadd) {
|
} elseif ($action == 'update' /* && $permissiontoadd // always true */) {
|
||||||
// Update record
|
// Update record
|
||||||
if (!GETPOST('cancel', 'alpha')) {
|
if (!GETPOST('cancel', 'alpha')) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
@@ -169,7 +169,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) {
|
|||||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
|
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
} elseif ($action == 'reopen' && $permissiontoadd && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) {
|
} elseif ($action == 'reopen' /* && $permissiontoadd // always true */ && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) {
|
||||||
$result = $object->fetch($id);
|
$result = $object->fetch($id);
|
||||||
|
|
||||||
$object->status = GETPOSTINT('status');
|
$object->status = GETPOSTINT('status');
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@destailleur.fr>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@destailleur.fr>
|
||||||
* Copyright (C) 2021 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2021 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -69,6 +69,7 @@ $formSetup = new FormSetup($db);
|
|||||||
// Main options
|
// Main options
|
||||||
$formSetup->newItem('BANK_DISABLE_DIRECT_INPUT')->setAsYesNo();
|
$formSetup->newItem('BANK_DISABLE_DIRECT_INPUT')->setAsYesNo();
|
||||||
|
|
||||||
|
|
||||||
$formSetup->newItem('ACCOUNTANCY_COMBO_FOR_AUX')->setAsYesNo();
|
$formSetup->newItem('ACCOUNTANCY_COMBO_FOR_AUX')->setAsYesNo();
|
||||||
|
|
||||||
$item = $formSetup->newItem('ACCOUNTING_MANAGE_ZERO')->setAsYesNo();
|
$item = $formSetup->newItem('ACCOUNTING_MANAGE_ZERO')->setAsYesNo();
|
||||||
@@ -179,75 +180,73 @@ if ($action == 'updatemode') {
|
|||||||
if ($action == 'update2') {
|
if ($action == 'update2') {
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
if (!$error) {
|
foreach ($list as $constname) {
|
||||||
foreach ($list as $constname) {
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($error) {
|
|
||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
|
||||||
}
|
|
||||||
|
|
||||||
// option in section binding
|
|
||||||
foreach ($list_binding as $constname) {
|
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
|
||||||
|
|
||||||
if ($constname == 'ACCOUNTING_DATE_START_BINDING') {
|
|
||||||
$constvalue = dol_mktime(0, 0, 0, GETPOSTINT($constname.'month'), GETPOSTINT($constname.'day'), GETPOSTINT($constname.'year'));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// options in section other
|
|
||||||
if (GETPOSTISSET('ACCOUNTING_LETTERING_NBLETTERS')) {
|
|
||||||
if (!dolibarr_set_const($db, 'ACCOUNTING_LETTERING_NBLETTERS', GETPOST('ACCOUNTING_LETTERING_NBLETTERS'), 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Export options
|
|
||||||
$modelcsv = GETPOSTINT('ACCOUNTING_EXPORT_MODELCSV');
|
|
||||||
|
|
||||||
if (!empty($modelcsv)) {
|
|
||||||
if (!dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
//if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
|
|
||||||
// dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
|
|
||||||
//}
|
|
||||||
} else {
|
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if ($error) {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($main_option as $constname) {
|
// option in section binding
|
||||||
$constvalue = GETPOST($constname, 'alpha');
|
foreach ($list_binding as $constname) {
|
||||||
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
if ($constname == 'ACCOUNTING_DATE_START_BINDING') {
|
||||||
|
$constvalue = dol_mktime(0, 0, 0, GETPOSTINT($constname.'month'), GETPOSTINT($constname.'day'), GETPOSTINT($constname.'year'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// options in section other
|
||||||
|
if (GETPOSTISSET('ACCOUNTING_LETTERING_NBLETTERS')) {
|
||||||
|
if (!dolibarr_set_const($db, 'ACCOUNTING_LETTERING_NBLETTERS', GETPOST('ACCOUNTING_LETTERING_NBLETTERS'), 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Export options
|
||||||
|
$modelcsv = GETPOSTINT('ACCOUNTING_EXPORT_MODELCSV');
|
||||||
|
|
||||||
|
if (!empty($modelcsv)) {
|
||||||
|
if (!dolibarr_set_const($db, 'ACCOUNTING_EXPORT_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
//if ($modelcsv==AccountancyExport::$EXPORT_TYPE_QUADRATUS || $modelcsv==AccountancyExport::$EXPORT_TYPE_CIEL) {
|
||||||
|
// dolibarr_set_const($db, 'ACCOUNTING_EXPORT_FORMAT', 'txt', 'chaine', 0, '', $conf->entity);
|
||||||
|
//}
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($main_option as $constname) {
|
||||||
|
$constvalue = GETPOST($constname, 'alpha');
|
||||||
|
|
||||||
|
if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($listparam[$modelcsv] as $key => $value) {
|
||||||
|
$constante = $key;
|
||||||
|
|
||||||
|
if (strpos($constante, 'ACCOUNTING') !== false) {
|
||||||
|
$constvalue = GETPOST($key, 'alpha');
|
||||||
|
if (!dolibarr_set_const($db, $constante, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($listparam[$modelcsv] as $key => $value) {
|
if (!$error) {
|
||||||
$constante = $key;
|
// reload
|
||||||
|
$configuration = $accountancyexport->getTypeConfig();
|
||||||
if (strpos($constante, 'ACCOUNTING') !== false) {
|
$listparam = $configuration['param'];
|
||||||
$constvalue = GETPOST($key, 'alpha');
|
|
||||||
if (!dolibarr_set_const($db, $constante, $constvalue, 'chaine', 0, '', $conf->entity)) {
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$error) {
|
|
||||||
// reload
|
|
||||||
$configuration = $accountancyexport->getTypeConfig();
|
|
||||||
$listparam = $configuration['param'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
@@ -460,9 +459,10 @@ if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Show form main options
|
// Show form for main parameters
|
||||||
print $formSetup->generateOutput(true);
|
print $formSetup->generateOutput(true);
|
||||||
|
|
||||||
|
|
||||||
print '<br><br><br>';
|
print '<br><br><br>';
|
||||||
|
|
||||||
|
|
||||||
@@ -498,7 +498,7 @@ foreach ($list_binding as $key) {
|
|||||||
1=>$langs->trans("ThirdPartyName") . ' - ' . $langs->trans("NumPiece"),
|
1=>$langs->trans("ThirdPartyName") . ' - ' . $langs->trans("NumPiece"),
|
||||||
2=>$langs->trans("ThirdPartyName")
|
2=>$langs->trans("ThirdPartyName")
|
||||||
);
|
);
|
||||||
print $form->selectarray($key, $array, getDolGlobalInt('ACCOUNTING_LABEL_OPERATION_ON_TRANSFER', 0), 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage width200');
|
print $form->selectarray($key, $array, getDolGlobalInt('ACCOUNTING_LABEL_OPERATION_ON_TRANSFER', 0), 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage width300');
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" class="maxwidth100" id="'.$key.'" name="'.$key.'" value="'.getDolGlobalString($key).'">';
|
print '<input type="text" class="maxwidth100" id="'.$key.'" name="'.$key.'" value="'.getDolGlobalString($key).'">';
|
||||||
}
|
}
|
||||||
@@ -579,8 +579,10 @@ print '</div>';
|
|||||||
|
|
||||||
print '<div class="center"><input type="submit" class="button reposition" value="'.dol_escape_htmltag($langs->trans('Save')).'" name="button"></div>';
|
print '<div class="center"><input type="submit" class="button reposition" value="'.dol_escape_htmltag($langs->trans('Save')).'" name="button"></div>';
|
||||||
|
|
||||||
|
|
||||||
// Show numbering options
|
// Show numbering options
|
||||||
print '<br><br>';
|
print '<br><br><br>';
|
||||||
|
|
||||||
|
|
||||||
// Accountancy Numbering model
|
// Accountancy Numbering model
|
||||||
$dirmodels = array_merge(array('/'), $conf->modules_parts['models']);
|
$dirmodels = array_merge(array('/'), $conf->modules_parts['models']);
|
||||||
@@ -695,7 +697,8 @@ print '</div>';
|
|||||||
|
|
||||||
|
|
||||||
// Show advanced options
|
// Show advanced options
|
||||||
print '<br><br>';
|
print '<br><br><br>';
|
||||||
|
|
||||||
|
|
||||||
// Advanced params
|
// Advanced params
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
@@ -786,7 +789,8 @@ print '</div>';
|
|||||||
|
|
||||||
print '<div class="center"><input type="submit" class="button button-edit reposition" name="button" value="'.$langs->trans('Save').'"></div>';
|
print '<div class="center"><input type="submit" class="button button-edit reposition" name="button" value="'.$langs->trans('Save').'"></div>';
|
||||||
|
|
||||||
print '<br><br>';
|
|
||||||
|
print '<br><br><br>';
|
||||||
|
|
||||||
|
|
||||||
// Export options
|
// Export options
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
/* Copyright (C) 2017-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
||||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -366,12 +366,9 @@ llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-accountancy page-adm
|
|||||||
|
|
||||||
$titre = $langs->trans("DictionarySetup");
|
$titre = $langs->trans("DictionarySetup");
|
||||||
$linkback = '';
|
$linkback = '';
|
||||||
if ($id) {
|
|
||||||
$titre .= ' - '.$langs->trans($tablib[$id]);
|
$titre .= ' - '.$langs->trans($tablib[$id]);
|
||||||
$titlepicto = 'title_accountancy';
|
$titlepicto = 'title_accountancy';
|
||||||
} else {
|
|
||||||
$titlepicto = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
print load_fiche_titre($titre, $linkback, $titlepicto);
|
print load_fiche_titre($titre, $linkback, $titlepicto);
|
||||||
|
|
||||||
@@ -384,309 +381,297 @@ if ($action == 'delete') {
|
|||||||
/*
|
/*
|
||||||
* Show a dictionary
|
* Show a dictionary
|
||||||
*/
|
*/
|
||||||
if ($id) {
|
|
||||||
// Complete requete recherche valeurs avec critere de tri
|
|
||||||
$sql = $tabsql[$id];
|
|
||||||
$sql .= " WHERE a.entity = ".((int) $conf->entity);
|
|
||||||
|
|
||||||
// If sort order is "country", we use country_code instead
|
// Complete requete recherche valeurs avec critere de tri
|
||||||
if ($sortfield == 'country') {
|
$sql = $tabsql[$id];
|
||||||
$sortfield = 'country_code';
|
$sql .= " WHERE a.entity = ".((int) $conf->entity);
|
||||||
}
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
|
||||||
$sql .= $db->plimit($listlimit + 1, $offset);
|
|
||||||
|
|
||||||
|
// If sort order is "country", we use country_code instead
|
||||||
|
if ($sortfield == 'country') {
|
||||||
|
$sortfield = 'country_code';
|
||||||
|
}
|
||||||
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
$sql .= $db->plimit($listlimit + 1, $offset);
|
||||||
|
|
||||||
|
$fieldlist = explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
|
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
||||||
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive">';
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
|
// Form to add a new line
|
||||||
|
if ($tabname[$id]) {
|
||||||
$fieldlist = explode(',', $tabfield[$id]);
|
$fieldlist = explode(',', $tabfield[$id]);
|
||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">';
|
// Line for title
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<tr class="liste_titre">';
|
||||||
print '<input type="hidden" name="from" value="'.dol_escape_htmltag(GETPOST('from', 'alpha')).'">';
|
foreach ($fieldlist as $field => $value) {
|
||||||
|
// Determine le nom du champ par rapport aux noms possibles
|
||||||
|
// dans les dictionnaires de donnees
|
||||||
|
$valuetoshow = ucfirst($fieldlist[$field]); // By default
|
||||||
|
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
||||||
|
$class = "left";
|
||||||
|
if ($fieldlist[$field] == 'code') {
|
||||||
|
$valuetoshow = $langs->trans("Code");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
||||||
|
$valuetoshow = $langs->trans("Label");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'nature') {
|
||||||
|
$valuetoshow = $langs->trans("NatureOfJournal");
|
||||||
|
}
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
if ($valuetoshow != '') {
|
||||||
print '<table class="noborder centpercent">';
|
print '<td class="'.$class.'">';
|
||||||
|
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
||||||
// Form to add a new line
|
print '<a href="'.$tabhelp[$id][$value].'">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
||||||
if ($tabname[$id]) {
|
} elseif (!empty($tabhelp[$id][$value])) {
|
||||||
$fieldlist = explode(',', $tabfield[$id]);
|
print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
|
||||||
|
} else {
|
||||||
// Line for title
|
print $valuetoshow;
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
|
||||||
// Determine le nom du champ par rapport aux noms possibles
|
|
||||||
// dans les dictionnaires de donnees
|
|
||||||
$valuetoshow = ucfirst($fieldlist[$field]); // By default
|
|
||||||
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
|
||||||
$class = "left";
|
|
||||||
if ($fieldlist[$field] == 'code') {
|
|
||||||
$valuetoshow = $langs->trans("Code");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
|
||||||
$valuetoshow = $langs->trans("Label");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'nature') {
|
|
||||||
$valuetoshow = $langs->trans("NatureOfJournal");
|
|
||||||
}
|
}
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($valuetoshow != '') {
|
print '<td>';
|
||||||
print '<td class="'.$class.'">';
|
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||||
if (!empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i', $tabhelp[$id][$value])) {
|
print '</td>';
|
||||||
print '<a href="'.$tabhelp[$id][$value].'">'.$valuetoshow.' '.img_help(1, $valuetoshow).'</a>';
|
print '<td></td>';
|
||||||
} elseif (!empty($tabhelp[$id][$value])) {
|
print '<td></td>';
|
||||||
print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value]);
|
print '<td></td>';
|
||||||
} else {
|
print '</tr>';
|
||||||
print $valuetoshow;
|
|
||||||
|
// Line to enter new values
|
||||||
|
print '<tr class="oddeven nodrag nodrop nohover">';
|
||||||
|
|
||||||
|
$obj = new stdClass();
|
||||||
|
// If data was already input, we define them in obj to populate input fields.
|
||||||
|
if (GETPOST('actionadd', 'alpha')) {
|
||||||
|
foreach ($fieldlist as $key => $val) {
|
||||||
|
if (GETPOST($val) != '') {
|
||||||
|
$obj->$val = GETPOST($val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpaction = 'create';
|
||||||
|
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
||||||
|
$reshook = $hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
$error = $hookmanager->error;
|
||||||
|
$errors = $hookmanager->errors;
|
||||||
|
|
||||||
|
if (empty($reshook)) {
|
||||||
|
fieldListJournal($fieldlist, $obj, $tabname[$id], 'add');
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<td colspan="4" class="right">';
|
||||||
|
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'">';
|
||||||
|
print '</td>';
|
||||||
|
print "</tr>";
|
||||||
|
|
||||||
|
print '<tr><td colspan="7"> </td></tr>'; // Keep to have a line with enough height
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// List of available record in database
|
||||||
|
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
$param = '&id='.((int) $id);
|
||||||
|
if ($search_country_id > 0) {
|
||||||
|
$param .= '&search_country_id='.urlencode((string) ($search_country_id));
|
||||||
|
}
|
||||||
|
$paramwithsearch = $param;
|
||||||
|
$paramwithsearch .= '&sortorder='.$sortorder;
|
||||||
|
$paramwithsearch .= '&sortfield='.$sortfield;
|
||||||
|
|
||||||
|
if (GETPOST('from', 'alpha')) {
|
||||||
|
$paramwithsearch .= '&from='.GETPOST('from', 'alpha');
|
||||||
|
}
|
||||||
|
|
||||||
|
// There is several pages
|
||||||
|
if ($num > $listlimit) {
|
||||||
|
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
||||||
|
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit ? 1 : 0), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Title line with search boxes
|
||||||
|
/*print '<tr class="liste_titre_filter liste_titre_add">';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre"></td>';
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
$searchpicto=$form->showFilterButtons();
|
||||||
|
print $searchpicto;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Title of lines
|
||||||
|
print '<tr class="liste_titre liste_titre_add">';
|
||||||
|
foreach ($fieldlist as $field => $value) {
|
||||||
|
// Determine le nom du champ par rapport aux noms possibles
|
||||||
|
// dans les dictionnaires de donnees
|
||||||
|
$class = "left";
|
||||||
|
$sortable = 1;
|
||||||
|
$valuetoshow = '';
|
||||||
|
/*
|
||||||
|
$tmparray=getLabelOfField($fieldlist[$field]);
|
||||||
|
$valuetoshow=$tmp['valuetoshow'];
|
||||||
|
$align=$tmp['align'];
|
||||||
|
$sortable=$tmp['sortable'];
|
||||||
|
*/
|
||||||
|
$valuetoshow = ucfirst($fieldlist[$field]); // By default
|
||||||
|
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
||||||
|
if ($fieldlist[$field] == 'code') {
|
||||||
|
$valuetoshow = $langs->trans("Code");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
||||||
|
$valuetoshow = $langs->trans("Label");
|
||||||
|
}
|
||||||
|
if ($fieldlist[$field] == 'nature') {
|
||||||
|
$valuetoshow = $langs->trans("NatureOfJournal");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Affiche nom du champ
|
||||||
|
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "", $sortfield, $sortorder, $class.' ');
|
||||||
|
}
|
||||||
|
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
print getTitleFieldOfList('');
|
||||||
|
print getTitleFieldOfList('');
|
||||||
|
print getTitleFieldOfList('');
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
if ($num) {
|
||||||
|
// Lines with values
|
||||||
|
while ($i < $num) {
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
//print_r($obj);
|
||||||
|
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
||||||
|
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
|
||||||
|
$tmpaction = 'edit';
|
||||||
|
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
||||||
|
$reshook = $hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
$error = $hookmanager->error;
|
||||||
|
$errors = $hookmanager->errors;
|
||||||
|
|
||||||
|
// Show fields
|
||||||
|
if (empty($reshook)) {
|
||||||
|
fieldListJournal($fieldlist, $obj, $tabname[$id], 'edit');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<td class="center" colspan="4">';
|
||||||
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
|
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
||||||
|
print '<input type="submit" class="button button-edit" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
||||||
|
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
|
||||||
|
print '<div name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"></div>';
|
||||||
|
print '</td>';
|
||||||
|
} else {
|
||||||
|
$tmpaction = 'view';
|
||||||
|
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
||||||
|
$reshook = $hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
|
$error = $hookmanager->error;
|
||||||
|
$errors = $hookmanager->errors;
|
||||||
|
|
||||||
|
if (empty($reshook)) {
|
||||||
|
$langs->load("accountancy");
|
||||||
|
foreach ($fieldlist as $field => $value) {
|
||||||
|
$class = "left";
|
||||||
|
$tmpvar = $fieldlist[$field];
|
||||||
|
$valuetoshow = $obj->$tmpvar;
|
||||||
|
if ($valuetoshow == 'all') {
|
||||||
|
$valuetoshow = $langs->trans('All');
|
||||||
|
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
||||||
|
$key = $langs->trans("AccountingJournalType".strtoupper($obj->nature));
|
||||||
|
$valuetoshow = ($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature)) ? $key : $obj->{$fieldlist[$field]});
|
||||||
|
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
||||||
|
$valuetoshow = $langs->trans($obj->label);
|
||||||
|
}
|
||||||
|
|
||||||
|
$class = 'tddict';
|
||||||
|
// Show value for field
|
||||||
|
print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.dol_escape_htmltag($valuetoshow).'</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Can an entry be erased or disabled ?
|
||||||
|
$iserasable = 1;
|
||||||
|
$canbedisabled = 1;
|
||||||
|
$canbemodified = 1; // true by default
|
||||||
|
if (isset($obj->code) && $id != 10) {
|
||||||
|
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) {
|
||||||
|
$iserasable = 0;
|
||||||
|
$canbedisabled = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$canbemodified = $iserasable;
|
||||||
|
|
||||||
|
$url = $_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
|
||||||
|
$url .= '&'.$param;
|
||||||
|
$url .= '&';
|
||||||
|
|
||||||
|
// Active
|
||||||
|
print '<td class="nowrap center">';
|
||||||
|
if ($canbedisabled) {
|
||||||
|
print '<a href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
|
||||||
|
} else {
|
||||||
|
print $langs->trans("AlwaysActive");
|
||||||
|
}
|
||||||
|
print "</td>";
|
||||||
|
|
||||||
|
// Modify link
|
||||||
|
if ($canbemodified) {
|
||||||
|
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td> </td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete link
|
||||||
|
if ($iserasable) {
|
||||||
|
print '<td class="center">';
|
||||||
|
if ($user->admin) {
|
||||||
|
print '<a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a>';
|
||||||
|
}
|
||||||
|
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
||||||
|
print '</td>';
|
||||||
|
} else {
|
||||||
|
print '<td> </td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<td></td>';
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<td>';
|
|
||||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
|
||||||
print '</td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
// Line to enter new values
|
|
||||||
print '<tr class="oddeven nodrag nodrop nohover">';
|
|
||||||
|
|
||||||
$obj = new stdClass();
|
|
||||||
// If data was already input, we define them in obj to populate input fields.
|
|
||||||
if (GETPOST('actionadd', 'alpha')) {
|
|
||||||
foreach ($fieldlist as $key => $val) {
|
|
||||||
if (GETPOST($val) != '') {
|
|
||||||
$obj->$val = GETPOST($val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$tmpaction = 'create';
|
|
||||||
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
|
||||||
$reshook = $hookmanager->executeHooks('createDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
|
||||||
$error = $hookmanager->error;
|
|
||||||
$errors = $hookmanager->errors;
|
|
||||||
|
|
||||||
if (empty($reshook)) {
|
|
||||||
fieldListJournal($fieldlist, $obj, $tabname[$id], 'add');
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<td colspan="4" class="right">';
|
|
||||||
print '<input type="submit" class="button button-add" name="actionadd" value="'.$langs->trans("Add").'">';
|
|
||||||
print '</td>';
|
|
||||||
print "</tr>";
|
|
||||||
|
|
||||||
print '<tr><td colspan="7"> </td></tr>'; // Keep to have a line with enough height
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
|
||||||
// List of available record in database
|
|
||||||
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if ($resql) {
|
|
||||||
$num = $db->num_rows($resql);
|
|
||||||
$i = 0;
|
|
||||||
|
|
||||||
$param = '&id='.((int) $id);
|
|
||||||
if ($search_country_id > 0) {
|
|
||||||
$param .= '&search_country_id='.urlencode((string) ($search_country_id));
|
|
||||||
}
|
|
||||||
$paramwithsearch = $param;
|
|
||||||
if ($sortorder) {
|
|
||||||
$paramwithsearch .= '&sortorder='.$sortorder;
|
|
||||||
}
|
|
||||||
if ($sortfield) {
|
|
||||||
$paramwithsearch .= '&sortfield='.$sortfield;
|
|
||||||
}
|
|
||||||
if (GETPOST('from', 'alpha')) {
|
|
||||||
$paramwithsearch .= '&from='.GETPOST('from', 'alpha');
|
|
||||||
}
|
|
||||||
|
|
||||||
// There is several pages
|
|
||||||
if ($num > $listlimit) {
|
|
||||||
print '<tr class="none"><td class="right" colspan="'.(3 + count($fieldlist)).'">';
|
|
||||||
print_fleche_navigation($page, $_SERVER["PHP_SELF"], $paramwithsearch, ($num > $listlimit ? 1 : 0), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page + 1).'</span></li>');
|
|
||||||
print '</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Title line with search boxes
|
|
||||||
/*print '<tr class="liste_titre_filter liste_titre_add">';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre"></td>';
|
|
||||||
print '<td class="liste_titre center">';
|
|
||||||
$searchpicto=$form->showFilterButtons();
|
|
||||||
print $searchpicto;
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Title of lines
|
|
||||||
print '<tr class="liste_titre liste_titre_add">';
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
|
||||||
// Determine le nom du champ par rapport aux noms possibles
|
|
||||||
// dans les dictionnaires de donnees
|
|
||||||
$showfield = 1; // By default
|
|
||||||
$class = "left";
|
|
||||||
$sortable = 1;
|
|
||||||
$valuetoshow = '';
|
|
||||||
/*
|
|
||||||
$tmparray=getLabelOfField($fieldlist[$field]);
|
|
||||||
$showfield=$tmp['showfield'];
|
|
||||||
$valuetoshow=$tmp['valuetoshow'];
|
|
||||||
$align=$tmp['align'];
|
|
||||||
$sortable=$tmp['sortable'];
|
|
||||||
*/
|
|
||||||
$valuetoshow = ucfirst($fieldlist[$field]); // By default
|
|
||||||
$valuetoshow = $langs->trans($valuetoshow); // try to translate
|
|
||||||
if ($fieldlist[$field] == 'code') {
|
|
||||||
$valuetoshow = $langs->trans("Code");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'libelle' || $fieldlist[$field] == 'label') {
|
|
||||||
$valuetoshow = $langs->trans("Label");
|
|
||||||
}
|
|
||||||
if ($fieldlist[$field] == 'nature') {
|
|
||||||
$valuetoshow = $langs->trans("NatureOfJournal");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Affiche nom du champ
|
|
||||||
if ($showfield) {
|
|
||||||
print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable ? $fieldlist[$field] : ''), ($page ? 'page='.$page.'&' : ''), $param, "", $sortfield, $sortorder, $class.' ');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print getTitleFieldOfList($langs->trans("Status"), 0, $_SERVER["PHP_SELF"], "active", ($page ? 'page='.$page.'&' : ''), $param, '', $sortfield, $sortorder, 'center ');
|
|
||||||
print getTitleFieldOfList('');
|
|
||||||
print getTitleFieldOfList('');
|
|
||||||
print getTitleFieldOfList('');
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
if ($num) {
|
|
||||||
// Lines with values
|
|
||||||
while ($i < $num) {
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
//print_r($obj);
|
|
||||||
print '<tr class="oddeven" id="rowid-'.$obj->rowid.'">';
|
|
||||||
if ($action == 'edit' && ($rowid == (!empty($obj->rowid) ? $obj->rowid : $obj->code))) {
|
|
||||||
$tmpaction = 'edit';
|
|
||||||
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
|
||||||
$reshook = $hookmanager->executeHooks('editDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
|
||||||
$error = $hookmanager->error;
|
|
||||||
$errors = $hookmanager->errors;
|
|
||||||
|
|
||||||
// Show fields
|
|
||||||
if (empty($reshook)) {
|
|
||||||
fieldListJournal($fieldlist, $obj, $tabname[$id], 'edit');
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<td class="center" colspan="4">';
|
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
|
||||||
print '<input type="hidden" name="rowid" value="'.$rowid.'">';
|
|
||||||
print '<input type="submit" class="button button-edit" name="actionmodify" value="'.$langs->trans("Modify").'">';
|
|
||||||
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
|
|
||||||
print '<div name="'.(!empty($obj->rowid) ? $obj->rowid : $obj->code).'"></div>';
|
|
||||||
print '</td>';
|
|
||||||
} else {
|
|
||||||
$tmpaction = 'view';
|
|
||||||
$parameters = array('fieldlist' => $fieldlist, 'tabname' => $tabname[$id]);
|
|
||||||
$reshook = $hookmanager->executeHooks('viewDictionaryFieldlist', $parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
|
|
||||||
|
|
||||||
$error = $hookmanager->error;
|
|
||||||
$errors = $hookmanager->errors;
|
|
||||||
|
|
||||||
if (empty($reshook)) {
|
|
||||||
$langs->load("accountancy");
|
|
||||||
foreach ($fieldlist as $field => $value) {
|
|
||||||
$showfield = 1;
|
|
||||||
$class = "left";
|
|
||||||
$tmpvar = $fieldlist[$field];
|
|
||||||
$valuetoshow = $obj->$tmpvar;
|
|
||||||
if ($valuetoshow == 'all') {
|
|
||||||
$valuetoshow = $langs->trans('All');
|
|
||||||
} elseif ($fieldlist[$field] == 'nature' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
|
||||||
$key = $langs->trans("AccountingJournalType".strtoupper($obj->nature));
|
|
||||||
$valuetoshow = ($obj->nature && $key != "AccountingJournalType".strtoupper($langs->trans($obj->nature)) ? $key : $obj->{$fieldlist[$field]});
|
|
||||||
} elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'accounting_journal') {
|
|
||||||
$valuetoshow = $langs->trans($obj->label);
|
|
||||||
}
|
|
||||||
|
|
||||||
$class = 'tddict';
|
|
||||||
// Show value for field
|
|
||||||
if ($showfield) {
|
|
||||||
print '<!-- '.$fieldlist[$field].' --><td class="'.$class.'">'.dol_escape_htmltag($valuetoshow).'</td>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Can an entry be erased or disabled ?
|
|
||||||
$iserasable = 1;
|
|
||||||
$canbedisabled = 1;
|
|
||||||
$canbemodified = 1; // true by default
|
|
||||||
if (isset($obj->code) && $id != 10) {
|
|
||||||
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i', $obj->code))) {
|
|
||||||
$iserasable = 0;
|
|
||||||
$canbedisabled = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$canbemodified = $iserasable;
|
|
||||||
|
|
||||||
$url = $_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ? urlencode($obj->code) : '');
|
|
||||||
if ($param) {
|
|
||||||
$url .= '&'.$param;
|
|
||||||
}
|
|
||||||
$url .= '&';
|
|
||||||
|
|
||||||
// Active
|
|
||||||
print '<td class="nowrap center">';
|
|
||||||
if ($canbedisabled) {
|
|
||||||
print '<a href="'.$url.'action='.$acts[$obj->active].'&token='.newToken().'">'.$actl[$obj->active].'</a>';
|
|
||||||
} else {
|
|
||||||
print $langs->trans("AlwaysActive");
|
|
||||||
}
|
|
||||||
print "</td>";
|
|
||||||
|
|
||||||
// Modify link
|
|
||||||
if ($canbemodified) {
|
|
||||||
print '<td class="center"><a class="reposition editfielda" href="'.$url.'action=edit&token='.newToken().'">'.img_edit().'</a></td>';
|
|
||||||
} else {
|
|
||||||
print '<td> </td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete link
|
|
||||||
if ($iserasable) {
|
|
||||||
print '<td class="center">';
|
|
||||||
if ($user->admin) {
|
|
||||||
print '<a href="'.$url.'action=delete&token='.newToken().'">'.img_delete().'</a>';
|
|
||||||
}
|
|
||||||
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
|
|
||||||
print '</td>';
|
|
||||||
} else {
|
|
||||||
print '<td> </td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '<td></td>';
|
|
||||||
|
|
||||||
print '</td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</tr>\n";
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print '</form>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
|
|||||||
@@ -199,15 +199,13 @@ if ($action == 'update' && $permissiontobind) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($toselect) && $massaction === 'changeaccount') {
|
if (!empty($toselect) && $massaction === 'changeaccount') {
|
||||||
//$msg = '<div><span class="accountingprocessing">' . $langs->trans("Processing") . '...</span></div>';
|
|
||||||
$ok = 0;
|
$ok = 0;
|
||||||
$ko = 0;
|
$ko = 0;
|
||||||
$msg = '';
|
$msg = '';
|
||||||
$sql = '';
|
$sql = '';
|
||||||
if (!empty($toselect) && in_array($accounting_product_mode, $accounting_product_modes)) {
|
if (!empty($toselect) && in_array($accounting_product_mode, $accounting_product_modes)) { // @phpstan-ignore-line Bug phpstan thinking that empty(array()) is always true
|
||||||
$accounting = new AccountingAccount($db);
|
$accounting = new AccountingAccount($db);
|
||||||
|
|
||||||
//$msg .= '<div><span class="accountingprocessing">' . count($toselect) . ' ' . $langs->trans("SelectedLines") . '</span></div>';
|
|
||||||
$arrayofdifferentselectedvalues = array();
|
$arrayofdifferentselectedvalues = array();
|
||||||
|
|
||||||
$cpt = 0;
|
$cpt = 0;
|
||||||
@@ -424,7 +422,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($resql);
|
$nbtotalofrecords = $db->num_rows($resql);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,15 +41,16 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("accountancy", "admin", "bills", "compta", "errors", "hrm", "salaries"));
|
$langs->loadLangs(array("accountancy", "admin", "bills", "compta", "errors", "hrm", "salaries"));
|
||||||
|
|
||||||
$mesg = '';
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$cancel = GETPOST('cancel', 'alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$id = GETPOSTINT('id');
|
|
||||||
$rowid = GETPOSTINT('rowid');
|
|
||||||
$massaction = GETPOST('massaction', 'aZ09');
|
$massaction = GETPOST('massaction', 'aZ09');
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...)
|
$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...)
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountingsubaccountlist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
|
||||||
|
|
||||||
|
$id = GETPOSTINT('id');
|
||||||
|
$rowid = GETPOSTINT('rowid');
|
||||||
|
|
||||||
$search_subaccount = GETPOST('search_subaccount', 'alpha');
|
$search_subaccount = GETPOST('search_subaccount', 'alpha');
|
||||||
$search_label = GETPOST('search_label', 'alpha');
|
$search_label = GETPOST('search_label', 'alpha');
|
||||||
@@ -298,7 +299,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($resql);
|
$nbtotalofrecords = $db->num_rows($resql);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ if ($action != 'export') {
|
|||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?type=sub' . $url_param, '', 1, array('morecss' => 'marginleftonly'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?type=sub' . $url_param, '', 1, array('morecss' => 'marginleftonly'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ExportToCsv'), '', 'fa fa-file-csv paddingleft', $_SERVER['PHP_SELF'], 'exportcsvbutton', 1, array('morecss' => 'marginleftonly'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans("Export").' (' . getDolGlobalString('ACCOUNTING_EXPORT_FORMAT').')', '', 'fa fa-file-csv paddingleft', $_SERVER['PHP_SELF'], 'exportcsvbutton', 1, array('morecss' => 'marginleftonly'));
|
||||||
|
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("accountancy", "compta"));
|
$langs->loadLangs(array("accountancy", "compta"));
|
||||||
|
|
||||||
$socid = GETPOSTINT('socid');
|
|
||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'bookkeepinglist';
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'bookkeepinglist';
|
||||||
|
|
||||||
|
$socid = GETPOSTINT('socid');
|
||||||
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
|
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
|
||||||
$search_doc_type = GETPOST("search_doc_type", 'alpha');
|
$search_doc_type = GETPOST("search_doc_type", 'alpha');
|
||||||
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
|
$search_doc_ref = GETPOST("search_doc_ref", 'alpha');
|
||||||
@@ -764,7 +764,7 @@ if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
|||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
@@ -865,8 +865,8 @@ if ($action == 'export_file') {
|
|||||||
// Print form confirm
|
// Print form confirm
|
||||||
print $formconfirm;
|
print $formconfirm;
|
||||||
|
|
||||||
//$param=''; param started before
|
//$param=''; param started in action part
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if ($contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
$param .= '&contextpage='.urlencode($contextpage);
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
}
|
}
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) {
|
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||||
|
|||||||
@@ -63,8 +63,8 @@ $massdate = dol_mktime(0, 0, 0, GETPOSTINT('massdatemonth'), GETPOSTINT('massdat
|
|||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'bookkeepinglist';
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php'));
|
||||||
|
|
||||||
// Search Parameters
|
// Search Parameters
|
||||||
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
|
$search_mvt_num = GETPOST('search_mvt_num', 'alpha');
|
||||||
@@ -785,7 +785,7 @@ if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
|||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
@@ -1306,6 +1306,7 @@ while ($i < min($num, $limit)) {
|
|||||||
// Document ref
|
// Document ref
|
||||||
$modulepart = ''; // may be used by include*.tpl.php
|
$modulepart = ''; // may be used by include*.tpl.php
|
||||||
if (!empty($arrayfields['t.doc_ref']['checked'])) {
|
if (!empty($arrayfields['t.doc_ref']['checked'])) {
|
||||||
|
$documentlink = '';
|
||||||
$objectstatic = null;
|
$objectstatic = null;
|
||||||
|
|
||||||
if ($line->doc_type === 'customer_invoice') {
|
if ($line->doc_type === 'customer_invoice') {
|
||||||
@@ -1317,7 +1318,7 @@ while ($i < min($num, $limit)) {
|
|||||||
//$modulepart = 'facture';
|
//$modulepart = 'facture';
|
||||||
|
|
||||||
$filename = dol_sanitizeFileName($line->doc_ref);
|
$filename = dol_sanitizeFileName($line->doc_ref);
|
||||||
$filedir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($line->doc_ref);
|
$filedir = $conf->invoice->dir_output.'/'.dol_sanitizeFileName($line->doc_ref);
|
||||||
$urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id;
|
$urlsource = $_SERVER['PHP_SELF'].'?id='.$objectstatic->id;
|
||||||
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
|
$documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
|
||||||
} elseif ($line->doc_type === 'supplier_invoice') {
|
} elseif ($line->doc_type === 'supplier_invoice') {
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ $socid = GETPOSTINT('socid');
|
|||||||
$mode = (GETPOST('mode', 'alpha') ? GETPOST('mode', 'alpha') : 'customer'); // Only for tab view
|
$mode = (GETPOST('mode', 'alpha') ? GETPOST('mode', 'alpha') : 'customer'); // Only for tab view
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$type = GETPOST('type', 'alpha');
|
$type = GETPOST('type', 'alpha');
|
||||||
if ($type == 'sub') {
|
if ($type == 'sub') {
|
||||||
$context_default = 'bookkeepingbysubaccountlist';
|
$context_default = 'bookkeepingbysubaccountlist';
|
||||||
@@ -902,7 +902,7 @@ if (empty($reshook)) {
|
|||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create'.(!empty($type) ? '&type=sub' : '').'&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd);
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create'.(!empty($type) ? '&type=sub' : '').'&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
|
if ($contextpage != $_SERVER["PHP_SELF"]) {
|
||||||
$param .= '&contextpage='.urlencode($contextpage);
|
$param .= '&contextpage='.urlencode($contextpage);
|
||||||
}
|
}
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) {
|
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
/* Copyright (C) 2016 Jamal Elbaz <jamelbaz@gmail.pro>
|
||||||
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2016-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -69,47 +69,47 @@ class AccountancyCategory // extends CommonObject
|
|||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy code
|
* @var ?string Accountancy code
|
||||||
*/
|
*/
|
||||||
public $code;
|
public $code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy Category label
|
* @var ?string Accountancy Category label
|
||||||
*/
|
*/
|
||||||
public $label;
|
public $label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy range account
|
* @var ?string Accountancy range account
|
||||||
*/
|
*/
|
||||||
public $range_account;
|
public $range_account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Sens of the account: 0: credit - debit, 1: debit - credit
|
* @var ?int Sens of the account: 0: credit - debit, 1: debit - credit
|
||||||
*/
|
*/
|
||||||
public $sens;
|
public $sens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Category type of accountancy
|
* @var ?int Category type of accountancy
|
||||||
*/
|
*/
|
||||||
public $category_type;
|
public $category_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Formula
|
* @var ?string Formula
|
||||||
*/
|
*/
|
||||||
public $formula;
|
public $formula;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Position
|
* @var ?int Position
|
||||||
*/
|
*/
|
||||||
public $position;
|
public $position;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int country id
|
* @var ?int country id
|
||||||
*/
|
*/
|
||||||
public $fk_country;
|
public $fk_country;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Is active
|
* @var ?int Is active
|
||||||
*/
|
*/
|
||||||
public $active;
|
public $active;
|
||||||
|
|
||||||
@@ -399,7 +399,6 @@ class AccountancyCategory // extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function delete($user, $notrigger = 0)
|
public function delete($user, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$sql = "DELETE FROM ".$this->db->prefix().$this->table_element;
|
$sql = "DELETE FROM ".$this->db->prefix().$this->table_element;
|
||||||
@@ -438,6 +437,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
public function display($id)
|
public function display($id)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$sql = "SELECT t.rowid, t.account_number, t.label";
|
$sql = "SELECT t.rowid, t.account_number, t.label";
|
||||||
$sql .= " FROM ".$this->db->prefix()."accounting_account as t";
|
$sql .= " FROM ".$this->db->prefix()."accounting_account as t";
|
||||||
$sql .= " WHERE t.fk_accounting_category = ".((int) $id);
|
$sql .= " WHERE t.fk_accounting_category = ".((int) $id);
|
||||||
|
|||||||
@@ -1412,14 +1412,14 @@ class AccountancyExport
|
|||||||
$invoice = new Facture($this->db);
|
$invoice = new Facture($this->db);
|
||||||
$invoice->fetch($line->fk_doc);
|
$invoice->fetch($line->fk_doc);
|
||||||
|
|
||||||
$refInvoice = $invoice->ref;
|
$refInvoice = (string) $invoice->ref;
|
||||||
} elseif ($line->doc_type == 'supplier_invoice') {
|
} elseif ($line->doc_type == 'supplier_invoice') {
|
||||||
// Supplier invoice
|
// Supplier invoice
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
$invoice = new FactureFournisseur($this->db);
|
$invoice = new FactureFournisseur($this->db);
|
||||||
$invoice->fetch($line->fk_doc);
|
$invoice->fetch($line->fk_doc);
|
||||||
|
|
||||||
$refInvoice = $invoice->ref_supplier;
|
$refInvoice = (string) $invoice->ref_supplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tab = array();
|
$tab = array();
|
||||||
@@ -1632,14 +1632,14 @@ class AccountancyExport
|
|||||||
$invoice = new Facture($this->db);
|
$invoice = new Facture($this->db);
|
||||||
$invoice->fetch($line->fk_doc);
|
$invoice->fetch($line->fk_doc);
|
||||||
|
|
||||||
$refInvoice = $invoice->ref;
|
$refInvoice = (string) $invoice->ref;
|
||||||
} elseif ($line->doc_type == 'supplier_invoice') {
|
} elseif ($line->doc_type == 'supplier_invoice') {
|
||||||
// Supplier invoice
|
// Supplier invoice
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||||
$invoice = new FactureFournisseur($this->db);
|
$invoice = new FactureFournisseur($this->db);
|
||||||
$invoice->fetch($line->fk_doc);
|
$invoice->fetch($line->fk_doc);
|
||||||
|
|
||||||
$refInvoice = $invoice->ref_supplier;
|
$refInvoice = (string) $invoice->ref_supplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tab = array();
|
$tab = array();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
/* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
||||||
|
* Copyright (C) 2025 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -66,22 +67,22 @@ class AccountancyReport // extends CommonObject
|
|||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy code
|
* @var ?string Accountancy code
|
||||||
*/
|
*/
|
||||||
public $code;
|
public $code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Accountancy Category label
|
* @var ?string Accountancy Category label
|
||||||
*/
|
*/
|
||||||
public $label;
|
public $label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int country id
|
* @var ?int country id
|
||||||
*/
|
*/
|
||||||
public $fk_country;
|
public $fk_country;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Is active
|
* @var ?int Is active
|
||||||
*/
|
*/
|
||||||
public $active;
|
public $active;
|
||||||
|
|
||||||
@@ -229,7 +230,6 @@ class AccountancyReport // extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function update($user = null, $notrigger = 0)
|
public function update($user = null, $notrigger = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
* Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
|
||||||
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2021 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -80,17 +80,17 @@ class AccountingAccount extends CommonObject
|
|||||||
public $datec;
|
public $datec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string pcg version
|
* @var ?string pcg version
|
||||||
*/
|
*/
|
||||||
public $fk_pcg_version;
|
public $fk_pcg_version;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string pcg type
|
* @var ?string pcg type
|
||||||
*/
|
*/
|
||||||
public $pcg_type;
|
public $pcg_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string account number
|
* @var ?string account number
|
||||||
*/
|
*/
|
||||||
public $account_number;
|
public $account_number;
|
||||||
|
|
||||||
@@ -115,12 +115,12 @@ class AccountingAccount extends CommonObject
|
|||||||
public $status;
|
public $status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Label of account
|
* @var ?string Label of account
|
||||||
*/
|
*/
|
||||||
public $label;
|
public $label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Label short of account
|
* @var ?string Label short of account
|
||||||
*/
|
*/
|
||||||
public $labelshort;
|
public $labelshort;
|
||||||
|
|
||||||
@@ -358,7 +358,7 @@ class AccountingAccount extends CommonObject
|
|||||||
|
|
||||||
$sql = "UPDATE " . $this->db->prefix() . $this->table_element;
|
$sql = "UPDATE " . $this->db->prefix() . $this->table_element;
|
||||||
$sql .= " SET fk_pcg_version = " . ($this->fk_pcg_version ? "'" . $this->db->escape($this->fk_pcg_version) . "'" : "null");
|
$sql .= " SET fk_pcg_version = " . ($this->fk_pcg_version ? "'" . $this->db->escape($this->fk_pcg_version) . "'" : "null");
|
||||||
$sql .= " , pcg_type = " . ($this->pcg_type ? "'" . $this->db->escape($this->pcg_type) . "'" : "null");
|
$sql .= " , pcg_type = '" . $this->db->escape($this->pcg_type) . "'";
|
||||||
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
$sql .= " , account_number = '" . $this->db->escape($this->account_number) . "'";
|
||||||
$sql .= " , account_parent = " . (int) $this->account_parent;
|
$sql .= " , account_parent = " . (int) $this->account_parent;
|
||||||
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
|
$sql .= " , label = " . ($this->label ? "'" . $this->db->escape($this->label) . "'" : "''");
|
||||||
@@ -436,16 +436,14 @@ class AccountingAccount extends CommonObject
|
|||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
if (!$error) {
|
$sql = "DELETE FROM " . $this->db->prefix() . $this->table_element;
|
||||||
$sql = "DELETE FROM " . $this->db->prefix() . $this->table_element;
|
$sql .= " WHERE rowid=" . ((int) $this->id);
|
||||||
$sql .= " WHERE rowid=" . ((int) $this->id);
|
|
||||||
|
|
||||||
dol_syslog(get_class($this) . "::delete sql=" . $sql);
|
dol_syslog(get_class($this) . "::delete sql=" . $sql);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (!$resql) {
|
if (!$resql) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = "Error " . $this->db->lasterror();
|
$this->errors[] = "Error " . $this->db->lasterror();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
@@ -737,7 +735,7 @@ class AccountingAccount extends CommonObject
|
|||||||
* @param FactureLigne|SupplierInvoiceLine $factureDet Facture Det
|
* @param FactureLigne|SupplierInvoiceLine $factureDet Facture Det
|
||||||
* @param array<string,int> $accountingAccount Array of Accounting account
|
* @param array<string,int> $accountingAccount Array of Accounting account
|
||||||
* @param string $type Customer / Supplier
|
* @param string $type Customer / Supplier
|
||||||
* @return array{suggestedaccountingaccountbydefaultfor:string,suggestedaccountingaccountfor:string,suggestedid:?int,code_l:string,code_p:string,code_t:string}|int<-1,-1> Array of accounting accounts suggested or < 0 if technical error.
|
* @return array{suggestedaccountingaccountbydefaultfor:''|'eec'|'eecwithoutvatnumber'|'eecwithvat'|'export',suggestedaccountingaccountfor:'deposit'|'eec'|'eecwithoutvatnumber'|'eecwithvat'|'export'|'prodserv'|'thirdparty',suggestedid:?int,code_l:string,code_p:?string,code_t:string}|int<-1,-1> Array of accounting accounts suggested or < 0 if technical error.
|
||||||
* 'suggestedaccountingaccountbydefaultfor'=>Will be used for the label to show on tooltip for account by default on any product
|
* 'suggestedaccountingaccountbydefaultfor'=>Will be used for the label to show on tooltip for account by default on any product
|
||||||
* 'suggestedaccountingaccountfor'=>Is the account suggested for this product
|
* 'suggestedaccountingaccountfor'=>Is the account suggested for this product
|
||||||
*/
|
*/
|
||||||
@@ -889,10 +887,10 @@ class AccountingAccount extends CommonObject
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$code_l = $accountdeposittoventilated->ref;
|
$code_l = (string) $accountdeposittoventilated->ref;
|
||||||
$code_p = '';
|
$code_p = '';
|
||||||
$code_t = '';
|
$code_t = '';
|
||||||
$suggestedid = $accountdeposittoventilated->rowid;
|
$suggestedid = (int) $accountdeposittoventilated->rowid;
|
||||||
$suggestedaccountingaccountfor = 'deposit';
|
$suggestedaccountingaccountfor = 'deposit';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -908,10 +906,10 @@ class AccountingAccount extends CommonObject
|
|||||||
} elseif ($type == 'supplier') {
|
} elseif ($type == 'supplier') {
|
||||||
$accountdeposittoventilated->fetch(0, getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'), 1);
|
$accountdeposittoventilated->fetch(0, getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'), 1);
|
||||||
}
|
}
|
||||||
$code_l = $accountdeposittoventilated->ref;
|
$code_l = (string) $accountdeposittoventilated->ref;
|
||||||
$code_p = '';
|
$code_p = '';
|
||||||
$code_t = '';
|
$code_t = '';
|
||||||
$suggestedid = $accountdeposittoventilated->rowid;
|
$suggestedid = (int) $accountdeposittoventilated->rowid;
|
||||||
$suggestedaccountingaccountfor = 'deposit';
|
$suggestedaccountingaccountfor = 'deposit';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,11 +49,6 @@ class BookKeeping extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $table_element = 'accounting_bookkeeping';
|
public $table_element = 'accounting_bookkeeping';
|
||||||
|
|
||||||
/**
|
|
||||||
* @var int Entity
|
|
||||||
*/
|
|
||||||
public $entity;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var BookKeepingLine[] Lines
|
* @var BookKeepingLine[] Lines
|
||||||
*/
|
*/
|
||||||
@@ -75,27 +70,27 @@ class BookKeeping extends CommonObject
|
|||||||
public $date_lim_reglement;
|
public $date_lim_reglement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Doc type
|
* @var ?string Doc type
|
||||||
*/
|
*/
|
||||||
public $doc_type;
|
public $doc_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Doc ref
|
* @var ?string Doc ref
|
||||||
*/
|
*/
|
||||||
public $doc_ref;
|
public $doc_ref;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int ID
|
* @var ?int ID
|
||||||
*/
|
*/
|
||||||
public $fk_doc;
|
public $fk_doc;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int ID
|
* @var ?int ID
|
||||||
*/
|
*/
|
||||||
public $fk_docdet;
|
public $fk_docdet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Thirdparty code
|
* @var ?string Thirdparty code
|
||||||
*/
|
*/
|
||||||
public $thirdparty_code;
|
public $thirdparty_code;
|
||||||
|
|
||||||
@@ -110,69 +105,69 @@ class BookKeeping extends CommonObject
|
|||||||
public $subledger_label;
|
public $subledger_label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string doc_type
|
* @var ?string doc_type
|
||||||
*/
|
*/
|
||||||
public $numero_compte;
|
public $numero_compte;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string label compte
|
* @var ?string label compte
|
||||||
*/
|
*/
|
||||||
public $label_compte;
|
public $label_compte;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string label operation
|
* @var ?string label operation
|
||||||
*/
|
*/
|
||||||
public $label_operation;
|
public $label_operation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float FEC:Debit
|
* @var ?float FEC:Debit
|
||||||
*/
|
*/
|
||||||
public $debit;
|
public $debit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float FEC:Credit
|
* @var ?float FEC:Credit
|
||||||
*/
|
*/
|
||||||
public $credit;
|
public $credit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float FEC:Amount (Not necessary)
|
* @var ?float FEC:Amount (Not necessary)
|
||||||
* @deprecated No more used (we have info into debit/credit and sens)
|
* @deprecated No more used (we have info into debit/credit and sens)
|
||||||
*/
|
*/
|
||||||
public $montant;
|
public $montant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float FEC:Amount (Not necessary)
|
* @var ?float FEC:Amount (Not necessary)
|
||||||
* @deprecated No more used (we have info into debit/credit and sens)
|
* @deprecated No more used (we have info into debit/credit and sens)
|
||||||
*/
|
*/
|
||||||
public $amount;
|
public $amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string FEC:Sens (Not necessary)
|
* @var ?string FEC:Sens (Not necessary)
|
||||||
*/
|
*/
|
||||||
public $sens;
|
public $sens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int ID
|
* @var ?int ID
|
||||||
*/
|
*/
|
||||||
public $fk_user_author;
|
public $fk_user_author;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string key for import
|
* @var ?string key for import
|
||||||
*/
|
*/
|
||||||
public $import_key;
|
public $import_key;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string code journal
|
* @var ?string code journal
|
||||||
*/
|
*/
|
||||||
public $code_journal;
|
public $code_journal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string label journal
|
* @var ?string label journal
|
||||||
*/
|
*/
|
||||||
public $journal_label;
|
public $journal_label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int accounting transaction id
|
* @var ?int accounting transaction id
|
||||||
*/
|
*/
|
||||||
public $piece_num;
|
public $piece_num;
|
||||||
|
|
||||||
@@ -1016,23 +1011,23 @@ class BookKeeping extends CommonObject
|
|||||||
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
||||||
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
|
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
|
||||||
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
||||||
$sqlwhere[] = $this->db->sanitize($key).' LIKE \''.$this->db->escape($this->db->escapeforlike($value)).'%\'';
|
$sqlwhere[] = $this->db->sanitize($key)." LIKE '".$this->db->escape($this->db->escapeforlike($value))."%'";
|
||||||
} elseif ($key == 't.date_creation>=') {
|
} elseif ($key == 't.date_creation>=') {
|
||||||
$sqlwhere[] = 't.date_creation >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_creation >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_creation<=') {
|
} elseif ($key == 't.date_creation<=') {
|
||||||
$sqlwhere[] = 't.date_creation <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_creation <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_export>=') {
|
} elseif ($key == 't.date_export>=') {
|
||||||
$sqlwhere[] = 't.date_export >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_export >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_export<=') {
|
} elseif ($key == 't.date_export<=') {
|
||||||
$sqlwhere[] = 't.date_export <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_export <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_validated>=') {
|
} elseif ($key == 't.date_validated>=') {
|
||||||
$sqlwhere[] = 't.date_validated >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_validated >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_validated<=') {
|
} elseif ($key == 't.date_validated<=') {
|
||||||
$sqlwhere[] = 't.date_validated <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_validated <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_lim_reglement>=') {
|
} elseif ($key == 't.date_lim_reglement>=') {
|
||||||
$sqlwhere[] = 't.date_lim_reglement>=\''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_lim_reglement>='".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_lim_reglement<=') {
|
} elseif ($key == 't.date_lim_reglement<=') {
|
||||||
$sqlwhere[] = 't.date_lim_reglement<=\''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_lim_reglement<='".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.credit' || $key == 't.debit') {
|
} elseif ($key == 't.credit' || $key == 't.debit') {
|
||||||
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
||||||
} elseif ($key == 't.reconciled_option') {
|
} elseif ($key == 't.reconciled_option') {
|
||||||
@@ -1044,7 +1039,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sqlwhere[] = natural_search("t.code_journal", $value, 3, 1);
|
$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)) {
|
||||||
$sqlwhere[] = 't.numero_compte IN ('.$this->db->sanitize($value, 1).')';
|
$sqlwhere[] = "t.numero_compte IN (".$this->db->sanitize($value, 1).")";
|
||||||
} else {
|
} else {
|
||||||
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
$sqlwhere[] = natural_search($key, $value, 0, 1);
|
||||||
}
|
}
|
||||||
@@ -1060,7 +1055,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " AND t.subledger_account IS NOT NULL";
|
$sql .= " AND t.subledger_account IS NOT NULL";
|
||||||
$sql .= " AND t.subledger_account <> ''";
|
$sql .= " AND t.subledger_account <> ''";
|
||||||
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
|
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
|
||||||
$sortorder = 'ASC'.($sortfield ? ','.$sortfield : '');
|
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
||||||
} else {
|
} else {
|
||||||
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
|
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
|
||||||
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
||||||
@@ -1198,7 +1193,7 @@ class BookKeeping extends CommonObject
|
|||||||
if (count($filter) > 0) {
|
if (count($filter) > 0) {
|
||||||
foreach ($filter as $key => $value) {
|
foreach ($filter as $key => $value) {
|
||||||
if ($key == 't.doc_date') {
|
if ($key == 't.doc_date') {
|
||||||
$sqlwhere[] = $this->db->sanitize($key).' = \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = $this->db->sanitize($key)." = '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.doc_date>=') {
|
} elseif ($key == 't.doc_date>=') {
|
||||||
$sqlwhere[] = "t.doc_date >= '".$this->db->idate((int) $value)."'";
|
$sqlwhere[] = "t.doc_date >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.doc_date<=') {
|
} elseif ($key == 't.doc_date<=') {
|
||||||
@@ -1218,23 +1213,23 @@ class BookKeeping extends CommonObject
|
|||||||
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
} elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') {
|
||||||
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
|
$sqlwhere[] = $this->db->sanitize($key).' = '.((int) $value);
|
||||||
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
} elseif ($key == 't.subledger_account' || $key == 't.numero_compte') {
|
||||||
$sqlwhere[] = $this->db->sanitize($key).' LIKE \''.$this->db->escape($value).'%\'';
|
$sqlwhere[] = $this->db->sanitize($key)." LIKE '".$this->db->escape($value)."%'";
|
||||||
} elseif ($key == 't.date_creation>=') {
|
} elseif ($key == 't.date_creation>=') {
|
||||||
$sqlwhere[] = 't.date_creation >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_creation >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_creation<=') {
|
} elseif ($key == 't.date_creation<=') {
|
||||||
$sqlwhere[] = 't.date_creation <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_creation <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.tms>=') {
|
} elseif ($key == 't.tms>=') {
|
||||||
$sqlwhere[] = 't.tms >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.tms >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.tms<=') {
|
} elseif ($key == 't.tms<=') {
|
||||||
$sqlwhere[] = 't.tms <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.tms <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_export>=') {
|
} elseif ($key == 't.date_export>=') {
|
||||||
$sqlwhere[] = 't.date_export >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_export >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_export<=') {
|
} elseif ($key == 't.date_export<=') {
|
||||||
$sqlwhere[] = 't.date_export <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_export <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_validated>=') {
|
} elseif ($key == 't.date_validated>=') {
|
||||||
$sqlwhere[] = 't.date_validated >= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_validated >= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.date_validated<=') {
|
} elseif ($key == 't.date_validated<=') {
|
||||||
$sqlwhere[] = 't.date_validated <= \''.$this->db->idate((int) $value).'\'';
|
$sqlwhere[] = "t.date_validated <= '".$this->db->idate((int) $value)."'";
|
||||||
} elseif ($key == 't.credit' || $key == 't.debit') {
|
} elseif ($key == 't.credit' || $key == 't.debit') {
|
||||||
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
||||||
} elseif ($key == 't.code_journal' && !empty($value)) {
|
} elseif ($key == 't.code_journal' && !empty($value)) {
|
||||||
@@ -1251,7 +1246,7 @@ class BookKeeping extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (count($sqlwhere) > 0) {
|
if (count($sqlwhere) > 0) {
|
||||||
$sql .= ' AND '.implode(" ".$this->db->sanitize($filtermode)." ", $sqlwhere);
|
$sql .= " AND ".implode(" ".$this->db->sanitize($filtermode)." ", $sqlwhere);
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter = '';
|
$filter = '';
|
||||||
@@ -1421,16 +1416,15 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " AND t.subledger_account <> ''";
|
$sql .= " AND t.subledger_account <> ''";
|
||||||
$sql .= " GROUP BY t.numero_compte, t.subledger_account, t.subledger_label";
|
$sql .= " GROUP BY t.numero_compte, t.subledger_account, t.subledger_label";
|
||||||
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
|
$sortfield = 't.subledger_account'.($sortfield ? ','.$sortfield : '');
|
||||||
$sortorder = 'ASC'.($sortfield ? ','.$sortfield : '');
|
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
||||||
} else {
|
} else {
|
||||||
$sql .= ' GROUP BY t.numero_compte';
|
$sql .= ' GROUP BY t.numero_compte';
|
||||||
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
|
$sortfield = 't.numero_compte'.($sortfield ? ','.$sortfield : '');
|
||||||
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
$sortorder = 'ASC'.($sortorder ? ','.$sortorder : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($sortfield)) {
|
$sql .= $this->db->order($sortfield, $sortorder);
|
||||||
$sql .= $this->db->order($sortfield, $sortorder);
|
|
||||||
}
|
|
||||||
if (!empty($limit)) {
|
if (!empty($limit)) {
|
||||||
$sql .= $this->db->plimit($limit + 1, $offset);
|
$sql .= $this->db->plimit($limit + 1, $offset);
|
||||||
}
|
}
|
||||||
@@ -1828,7 +1822,7 @@ class BookKeeping extends CommonObject
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Call triggers
|
// Call triggers
|
||||||
if (! $error && ! $notrigger) {
|
if (!$notrigger) {
|
||||||
$result = $this->call_trigger('BOOKKEEPING_DELETE', $user);
|
$result = $this->call_trigger('BOOKKEEPING_DELETE', $user);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
@@ -2301,14 +2295,12 @@ class BookKeeping extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($direction == 1) {
|
} elseif ($direction == 1) {
|
||||||
if (!$error) {
|
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity);
|
||||||
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity);
|
$resql = $this->db->query($sql);
|
||||||
$resql = $this->db->query($sql);
|
if (!$resql) {
|
||||||
if (!$resql) {
|
$error++;
|
||||||
$error++;
|
$this->errors[] = 'Error '.$this->db->lasterror();
|
||||||
$this->errors[] = 'Error '.$this->db->lasterror();
|
dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR);
|
||||||
dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("bills", "compta", "accountancy", "productbatch", "products"));
|
$langs->loadLangs(array("bills", "compta", "accountancy", "productbatch", "products"));
|
||||||
|
|
||||||
|
$action = GETPOST('action');
|
||||||
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||||
|
|
||||||
$account_parent = GETPOST('account_parent');
|
$account_parent = GETPOST('account_parent');
|
||||||
@@ -112,6 +113,7 @@ $contextpage = 'accountancycustomerlines';
|
|||||||
$hookmanager->initHooks([$contextpage ]);
|
$hookmanager->initHooks([$contextpage ]);
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
|
|
||||||
|
$object = new stdClass();
|
||||||
|
|
||||||
$arrayfields = array(
|
$arrayfields = array(
|
||||||
'fd.rowid' => array('label' => "LineId", 'position' => 1, 'checked' => '1', 'enabled' => '1'),
|
'fd.rowid' => array('label' => "LineId", 'position' => 1, 'checked' => '1', 'enabled' => '1'),
|
||||||
@@ -129,6 +131,7 @@ $arrayfields = array(
|
|||||||
// @phpstan-ignore-next-line
|
// @phpstan-ignore-next-line
|
||||||
$arrayfields = dol_sort_array($arrayfields, 'position');
|
$arrayfields = dol_sort_array($arrayfields, 'position');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@@ -355,7 +358,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,14 +55,14 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
|
|||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancycustomerlist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancycustomerlist'; // To manage different context of search
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
|
|
||||||
$default_account = GETPOSTINT('default_account');
|
$default_account = GETPOSTINT('default_account');
|
||||||
|
|
||||||
// Select Box
|
// Select Box
|
||||||
$mesCasesCochees = GETPOST('toselect', 'array');
|
$mesCasesCochees = GETPOST('toselect', 'array:int');
|
||||||
|
|
||||||
// Search Getpost
|
// Search Getpost
|
||||||
$search_societe = GETPOST('search_societe', 'alpha');
|
$search_societe = GETPOST('search_societe', 'alpha');
|
||||||
@@ -401,7 +401,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,13 +51,13 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
|
|||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancyexpensereportlist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancyexpensereportlist'; // To manage different context of search
|
||||||
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
|
||||||
|
|
||||||
|
|
||||||
// Select Box
|
// Select Box
|
||||||
$mesCasesCochees = GETPOST('toselect', 'array');
|
$mesCasesCochees = GETPOST('toselect', 'array:int');
|
||||||
|
|
||||||
// Search Getpost
|
// Search Getpost
|
||||||
$search_login = GETPOST('search_login', 'alpha');
|
$search_login = GETPOST('search_login', 'alpha');
|
||||||
@@ -330,7 +330,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,6 +196,21 @@ if ($only_rappro == 2) {
|
|||||||
$sql .= " ORDER BY b.datev";
|
$sql .= " ORDER BY b.datev";
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
|
// Preload payment account codes by payment type from c_paiement
|
||||||
|
$accountancy_code_by_payment = array();
|
||||||
|
$sql2 = "SELECT code, accountancy_code";
|
||||||
|
$sql2 .= " FROM ".MAIN_DB_PREFIX."c_paiement";
|
||||||
|
$sql2 .= " WHERE entity IN (".getEntity('c_paiement').")";
|
||||||
|
$sql2 .= " AND active = 1";
|
||||||
|
$resql = $db->query($sql2);
|
||||||
|
if ($resql) {
|
||||||
|
while ($objp = $db->fetch_object($resql)) {
|
||||||
|
if (!empty($objp->code) && !empty($objp->accountancy_code)) {
|
||||||
|
$accountancy_code_by_payment[$objp->code] = $objp->accountancy_code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$object = new Account($db);
|
$object = new Account($db);
|
||||||
$paymentstatic = new Paiement($db);
|
$paymentstatic = new Paiement($db);
|
||||||
$paymentsupplierstatic = new PaiementFourn($db);
|
$paymentsupplierstatic = new PaiementFourn($db);
|
||||||
@@ -295,6 +310,11 @@ if ($result) {
|
|||||||
// Set accountancy code for bank
|
// Set accountancy code for bank
|
||||||
$compta_bank = $obj->account_number;
|
$compta_bank = $obj->account_number;
|
||||||
|
|
||||||
|
// Determining the bank account by payment method
|
||||||
|
if (!empty($obj->fk_type) && !empty($accountancy_code_by_payment[$obj->fk_type])) {
|
||||||
|
$compta_bank = $accountancy_code_by_payment[$obj->fk_type];
|
||||||
|
}
|
||||||
|
|
||||||
// Set accountancy code for thirdparty (example: '411CU...' or '411' if no subledger account defined on customer)
|
// Set accountancy code for thirdparty (example: '411CU...' or '411' if no subledger account defined on customer)
|
||||||
$compta_soc = 'NotDefined';
|
$compta_soc = 'NotDefined';
|
||||||
$accountancy_code_general = 'NotDefined';
|
$accountancy_code_general = 'NotDefined';
|
||||||
@@ -362,6 +382,32 @@ if ($result) {
|
|||||||
$amounttouse = $obj->amount_main_currency;
|
$amounttouse = $obj->amount_main_currency;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// in case option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on, payment could be for more than one third-partie
|
||||||
|
// so we have to find which part of the payment is affected to each third-parties
|
||||||
|
// (because in this case $obj-amount = the total of the paiement and not the paiement for each third-parties)
|
||||||
|
if (getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') && ($lineisapurchase == 1 || $lineisasale == 1) ) {
|
||||||
|
if ($lineisapurchase == 1) {
|
||||||
|
$sqlamount = "SELECT SUM(pf.amount) as amount";
|
||||||
|
$sqlamount .= " FROM ".MAIN_DB_PREFIX."paiementfounr_facturefourn AS pf";
|
||||||
|
$sqlamount .= " INNER JOIN ".MAIN_DB_PREFIX."paiementfourn AS p ON pf.fk_paiementfourn = p.rowid";
|
||||||
|
$sqlamount .= " RIGHT JOIN ".MAIN_DB_PREFIX."facture AS f ON pf.fk_facturefourn = f.rowid";
|
||||||
|
$sqlamount .= " WHERE p.fk_bank = ".((int) $obj->rowid);
|
||||||
|
$sqlamount .= " AND f.fk_soc = ".((int) $obj->socid);
|
||||||
|
} else {
|
||||||
|
$sqlamount = "SELECT SUM(pf.amount) as amount";
|
||||||
|
$sqlamount .= " FROM ".MAIN_DB_PREFIX."paiement_facture AS pf";
|
||||||
|
$sqlamount .= " INNER JOIN ".MAIN_DB_PREFIX."paiement AS p ON pf.fk_paiement = p.rowid";
|
||||||
|
$sqlamount .= " RIGHT JOIN ".MAIN_DB_PREFIX."facture AS f ON pf.fk_facture = f.rowid";
|
||||||
|
$sqlamount .= " WHERE p.fk_bank = ".((int) $obj->rowid);
|
||||||
|
$sqlamount .= " AND f.fk_soc = ".((int) $obj->socid);
|
||||||
|
}
|
||||||
|
$resultamount = $db->query($sqlamount);
|
||||||
|
if ($resultamount) {
|
||||||
|
$objamount = $db->fetch_object($resultamount);
|
||||||
|
if (!empty($objamount->amount)) $amounttouse = $objamount->amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// get_url may return -1 which is not traversable
|
// get_url may return -1 which is not traversable
|
||||||
if (is_array($links) && count($links) > 0) {
|
if (is_array($links) && count($links) > 0) {
|
||||||
// Test if entry is for a social contribution, salary or expense report.
|
// Test if entry is for a social contribution, salary or expense report.
|
||||||
@@ -427,10 +473,17 @@ if ($result) {
|
|||||||
$societestatic->email = $tabcompany[$obj->rowid]['email'];
|
$societestatic->email = $tabcompany[$obj->rowid]['email'];
|
||||||
$tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30);
|
$tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30);
|
||||||
if ($compta_soc) {
|
if ($compta_soc) {
|
||||||
if (empty($tabtp[$obj->rowid][$compta_soc])) {
|
// because we are in 2 loop (loop on the line from the sql queries and loop on $links)
|
||||||
$tabtp[$obj->rowid][$compta_soc] = $amounttouse;
|
// and in case of option FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is on,
|
||||||
} else {
|
// we will pass here n times for each payment line
|
||||||
$tabtp[$obj->rowid][$compta_soc] += $amounttouse;
|
// so we have to add $amoutouse only if the line $links[$key] correspond to the payment line we are in used ( socid correspondinf at the payment line $links)
|
||||||
|
// if FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS is off we add $amounttouse
|
||||||
|
if (!getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') || $obj->socid == $links[$key]['url_id']){
|
||||||
|
if (empty($tabtp[$obj->rowid][$compta_soc])) {
|
||||||
|
$tabtp[$obj->rowid][$compta_soc] = $amounttouse;
|
||||||
|
} else {
|
||||||
|
$tabtp[$obj->rowid][$compta_soc] += $amounttouse;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($links[$key]['type'] == 'user') {
|
} elseif ($links[$key]['type'] == 'user') {
|
||||||
@@ -626,7 +679,7 @@ if ($result) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If no links were found to know the amount on thirdparty, we try to guess it.
|
// If no links were found to know the amount on thirdparty, we try to guess it.
|
||||||
// This may happens on bank entries without the links lines to 'company'.
|
// This may happen on bank entries without the links lines to 'company'.
|
||||||
if (empty($tabtp[$obj->rowid]) && !empty($tabmoreinfo[$obj->rowid]['withdraw'])) { // If we don't find 'company' link because it is an old 'withdraw' record
|
if (empty($tabtp[$obj->rowid]) && !empty($tabmoreinfo[$obj->rowid]['withdraw'])) { // If we don't find 'company' link because it is an old 'withdraw' record
|
||||||
foreach ($links as $key => $val) {
|
foreach ($links as $key => $val) {
|
||||||
if ($links[$key]['type'] == 'payment') {
|
if ($links[$key]['type'] == 'payment') {
|
||||||
|
|||||||
@@ -4,11 +4,12 @@
|
|||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2013-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2017-2025 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2017-2025 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
||||||
|
* Copyright (C) 2025 Hannes Hieronimi <hannes@innwerk.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -976,7 +977,7 @@ if ($resql) {
|
|||||||
$sql .= " bu.fk_bank, bu.url_id AS bu_url_id, bu.type AS bu_type";
|
$sql .= " bu.fk_bank, bu.url_id AS bu_url_id, bu.type AS bu_type";
|
||||||
$sql .= " FROM ".$db->prefix()."subscription as su";
|
$sql .= " FROM ".$db->prefix()."subscription as su";
|
||||||
$sql .= " INNER JOIN ".$db->prefix()."adherent as adh ON adh.rowid = su.fk_adherent";
|
$sql .= " INNER JOIN ".$db->prefix()."adherent as adh ON adh.rowid = su.fk_adherent";
|
||||||
$sql .= " INNER JOIN ".$db->prefix()."bank_url as bu ON bu.url_id = su.rowid AND bu.type = '".$db->escape($type)."'";
|
$sql .= " INNER JOIN ".$db->prefix()."bank_url as bu ON bu.fk_bank = su.fk_bank AND bu.type = '".$db->escape($type)."'";
|
||||||
// Already in bookkeeping or not
|
// Already in bookkeeping or not
|
||||||
if ($in_bookkeeping == 'already') {
|
if ($in_bookkeeping == 'already') {
|
||||||
$sql .= " INNER JOIN ".$db->prefix()."accounting_bookkeeping as ab ON ab.fk_doc=bu.fk_bank AND ab.fk_docdet=su.rowid";
|
$sql .= " INNER JOIN ".$db->prefix()."accounting_bookkeeping as ab ON ab.fk_doc=bu.fk_bank AND ab.fk_docdet=su.rowid";
|
||||||
@@ -1004,7 +1005,7 @@ if ($resql) {
|
|||||||
// Add object in payment
|
// Add object in payment
|
||||||
if (!isset($tabpay[$obj->fk_bank]['objects'][$object_key])) {
|
if (!isset($tabpay[$obj->fk_bank]['objects'][$object_key])) {
|
||||||
$tabpay[$obj->fk_bank]['objects'][$object_key] = array(
|
$tabpay[$obj->fk_bank]['objects'][$object_key] = array(
|
||||||
'amount' => -$obj->amount_payment,
|
'amount' => $obj->amount_payment,
|
||||||
'bu_url_id' => $obj->bu_url_id,
|
'bu_url_id' => $obj->bu_url_id,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,14 +56,14 @@ $langs->loadLangs(array("bills", "companies", "compta", "accountancy", "other",
|
|||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
$massaction = GETPOST('massaction', 'alpha');
|
$massaction = GETPOST('massaction', 'alpha');
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$toselect = GETPOST('toselect', 'array');
|
$toselect = GETPOST('toselect', 'array:int');
|
||||||
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancysupplierlist'; // To manage different context of search
|
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'accountancysupplierlist'; // To manage different context of search
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
|
|
||||||
$default_account = GETPOSTINT('default_account');
|
$default_account = GETPOSTINT('default_account');
|
||||||
|
|
||||||
// Select Box
|
// Select Box
|
||||||
$mesCasesCochees = GETPOST('toselect', 'array');
|
$mesCasesCochees = GETPOST('toselect', 'array:int');
|
||||||
|
|
||||||
// Search Getpost
|
// Search Getpost
|
||||||
$search_lineid = GETPOST('search_lineid', 'alpha'); // Can be '> 100'
|
$search_lineid = GETPOST('search_lineid', 'alpha'); // Can be '> 100'
|
||||||
@@ -409,7 +409,7 @@ $nbtotalofrecords = '';
|
|||||||
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > (int) $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015-2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
/* Copyright (C) 2015-2025 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
||||||
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
* Copyright (C) 2022 Lionel Vessiller <lvessiller@open-dsi.fr>
|
||||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
||||||
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.fr>
|
* Copyright (C) 2022 Progiseize <a.bisotti@progiseize.fr>
|
||||||
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
/**
|
/**
|
||||||
* @var Conf $conf
|
* @var Conf $conf
|
||||||
* @var DoliDB $db
|
* @var DoliDB $db
|
||||||
|
* @var HookManager $hookmanager
|
||||||
* @var int $formatexportset
|
* @var int $formatexportset
|
||||||
* @var string $type_export
|
* @var string $type_export
|
||||||
* @var string $filename
|
* @var string $filename
|
||||||
@@ -89,6 +90,38 @@ if ((substr($accountancyexport->getFormatCode($formatexportset), 0, 3) == 'fec')
|
|||||||
$completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
|
$completefilename = ($code ? $code."_" : "").($prefix ? $prefix."_" : "").$filename.($nodateexport ? "" : $date_export).".".$format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- Hook: allow external modules to override export filename ---
|
||||||
|
if (is_object($hookmanager)) {
|
||||||
|
// Dedicated context (non-blocking if other hooks are already initialized)
|
||||||
|
$hookmanager->initHooks(array('accountancyexportfilename'));
|
||||||
|
|
||||||
|
$parameters = array(
|
||||||
|
'type_export' => $type_export ?? '',
|
||||||
|
'format' => $format ?? '',
|
||||||
|
'format_code' => $accountancyexport->getFormatCode($formatexportset),
|
||||||
|
'code' => $code ?? '',
|
||||||
|
'prefix' => $prefix ?? '',
|
||||||
|
'filename' => $filename ?? '',
|
||||||
|
'period_start' => $startaccountingperiod ?? '',
|
||||||
|
'period_end' => $endaccountingperiod ?? '',
|
||||||
|
'siren' => $siren ?? '',
|
||||||
|
'ndate_in_filename' => $nodateexport ?? 0,
|
||||||
|
'now_datetime' => $date_export,
|
||||||
|
// Value by default
|
||||||
|
'defaultfilename' => $completefilename
|
||||||
|
);
|
||||||
|
|
||||||
|
// Hook called by modules: setExportFilename
|
||||||
|
$reshook = $hookmanager->executeHooks('setExportFilename', $parameters, $accountancyexport, $action);
|
||||||
|
if ($reshook > 0) {
|
||||||
|
if (!empty($hookmanager->resArray['filename'])) {
|
||||||
|
$completefilename = $hookmanager->resArray['filename'];
|
||||||
|
} elseif ($hookmanager->resPrint !== '') {
|
||||||
|
$completefilename = $hookmanager->resPrint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($downloadMode)) {
|
if (empty($downloadMode)) {
|
||||||
header('Content-Disposition: attachment;filename=' . $completefilename);
|
header('Content-Disposition: attachment;filename=' . $completefilename);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011-2012 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
|
* Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2020-2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2020-2025 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2023 Waël Almoman <info@almoman.com>
|
* Copyright (C) 2023 Waël Almoman <info@almoman.com>
|
||||||
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Conf $conf
|
* @var Conf $conf
|
||||||
@@ -76,9 +77,63 @@ $error = 0;
|
|||||||
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
|
||||||
global $conf;
|
if ($action == 'updateMask') {
|
||||||
|
$maskconst = GETPOST('maskconst', 'aZ09');
|
||||||
|
$maskvalue = GETPOST('maskvalue', 'alpha');
|
||||||
|
|
||||||
if ($action == 'set_default') {
|
$res = 0;
|
||||||
|
|
||||||
|
if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
|
||||||
|
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!($res > 0)) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
|
}
|
||||||
|
} elseif ($action == 'specimen') { // For fiche expensereport
|
||||||
|
$modele = GETPOST('module', 'alpha');
|
||||||
|
|
||||||
|
$adherentspecimen = new Adherent($db);
|
||||||
|
$adherentspecimen->initAsSpecimen();
|
||||||
|
$adherentspecimen->status = 0; // Force statut draft to show watermark
|
||||||
|
|
||||||
|
// Search template files
|
||||||
|
$file = '';
|
||||||
|
$classname = '';
|
||||||
|
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||||
|
foreach ($dirmodels as $reldir) {
|
||||||
|
$file = dol_buildpath($reldir."core/modules/member/doc/pdf_".$modele.".modules.php", 0);
|
||||||
|
if (file_exists($file)) {
|
||||||
|
$classname = "pdf_".$modele;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($classname !== '') {
|
||||||
|
require_once $file;
|
||||||
|
|
||||||
|
$module = new $classname($db);
|
||||||
|
'@phan-var-force ModelePDFMember $module';
|
||||||
|
/** @var ModelePDFMember $module */
|
||||||
|
|
||||||
|
if ($module->write_file($adherentspecimen, $langs) > 0) {
|
||||||
|
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=member&file=SPECIMEN.pdf");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
setEventMessages($module->error, $module->errors, 'errors');
|
||||||
|
dol_syslog($module->error, LOG_ERR);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
|
||||||
|
dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
|
||||||
|
}
|
||||||
|
} elseif ($action == 'set_default') {
|
||||||
$ret = addDocumentModel($value, $type, $label, $scandir);
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
$res = true;
|
$res = true;
|
||||||
} elseif ($action == 'del_default') {
|
} elseif ($action == 'del_default') {
|
||||||
@@ -91,11 +146,7 @@ if ($action == 'set_default') {
|
|||||||
$res = true;
|
$res = true;
|
||||||
} elseif ($action == 'setdoc') {
|
} elseif ($action == 'setdoc') {
|
||||||
// Set default model
|
// Set default model
|
||||||
if (dolibarr_set_const($db, "MEMBER_ADDON_PDF_ODT", $value, 'chaine', 0, '', $conf->entity)) {
|
dolibarr_set_const($db, "MEMBER_ADDON_PDF_ODT", $value, 'chaine', 0, '', $conf->entity);
|
||||||
// The constant that was read ahead of the new set
|
|
||||||
// we therefore go through a variable to have a consistent display
|
|
||||||
$conf->global->MEMBER_ADDON_PDF_ODT = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We activate the model
|
// We activate the model
|
||||||
$ret = delDocumentModel($value, $type);
|
$ret = delDocumentModel($value, $type);
|
||||||
@@ -242,8 +293,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_M
|
|||||||
|
|
||||||
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin');
|
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin');
|
||||||
|
|
||||||
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
|
||||||
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
|
|
||||||
@@ -268,7 +319,7 @@ print ' <td>'.$langs->trans("Name").'</td>';
|
|||||||
print ' <td>'.$langs->trans("Description").'</td>';
|
print ' <td>'.$langs->trans("Description").'</td>';
|
||||||
print ' <td>'.$langs->trans("Example").'</td>';
|
print ' <td>'.$langs->trans("Example").'</td>';
|
||||||
print ' <td class="center" width="80">'.$langs->trans("Status").'</td>';
|
print ' <td class="center" width="80">'.$langs->trans("Status").'</td>';
|
||||||
print ' <td class="center" width="60">'.$langs->trans("ShortInfo").'</td>';
|
print ' <td class="center" width="60"></td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$arrayofmodules = array();
|
$arrayofmodules = array();
|
||||||
@@ -290,6 +341,7 @@ foreach ($dirModMember as $dirroot) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$modCodeMember = new $file();
|
$modCodeMember = new $file();
|
||||||
|
/** @var ModeleNumRefMembers $modCodeMember */
|
||||||
// Show modules according to features level
|
// Show modules according to features level
|
||||||
if ($modCodeMember->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
|
if ($modCodeMember->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
|
||||||
continue;
|
continue;
|
||||||
@@ -307,6 +359,7 @@ foreach ($dirModMember as $dirroot) {
|
|||||||
|
|
||||||
$arrayofmodules = dol_sort_array($arrayofmodules, 'position');
|
$arrayofmodules = dol_sort_array($arrayofmodules, 'position');
|
||||||
'@phan-var-force array<string,ModeleNumRefMembers> $arrayofmodules';
|
'@phan-var-force array<string,ModeleNumRefMembers> $arrayofmodules';
|
||||||
|
/** @var array<string,ModeleNumRefMembers> $arrayofmodules */
|
||||||
|
|
||||||
foreach ($arrayofmodules as $file => $modCodeMember) {
|
foreach ($arrayofmodules as $file => $modCodeMember) {
|
||||||
print '<tr class="oddeven">'."\n";
|
print '<tr class="oddeven">'."\n";
|
||||||
@@ -351,12 +404,14 @@ print "<br>";
|
|||||||
|
|
||||||
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||||
|
|
||||||
|
|
||||||
// Defined model definition table
|
// Defined model definition table
|
||||||
$def = array();
|
$def = array();
|
||||||
|
// TODO Replace with $def = getListOfModels($db, $type);
|
||||||
$sql = "SELECT nom as name";
|
$sql = "SELECT nom as name";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
|
$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
|
||||||
$sql .= " WHERE type = '".$db->escape($type)."'";
|
$sql .= " WHERE type = '".$db->escape($type)."'";
|
||||||
$sql .= " AND entity = ".$conf->entity;
|
$sql .= " AND entity = ".((int) $conf->entity);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -407,6 +462,7 @@ foreach ($dirmodels as $reldir) {
|
|||||||
require_once $dir.'/'.$file;
|
require_once $dir.'/'.$file;
|
||||||
$module = new $classname($db);
|
$module = new $classname($db);
|
||||||
'@phan-var-force doc_generic_member_odt|pdf_standard_member $module';
|
'@phan-var-force doc_generic_member_odt|pdf_standard_member $module';
|
||||||
|
/** @var doc_generic_member_odt|pdf_standard_member $module */
|
||||||
|
|
||||||
$modulequalified = 1;
|
$modulequalified = 1;
|
||||||
if ($module->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
|
if ($module->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
|
||||||
@@ -633,10 +689,52 @@ print '<input type="hidden" name="page_y" value="">';
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("MembersCards"), '', '');
|
print load_fiche_titre($langs->trans("MembersCards"), '', '');
|
||||||
|
|
||||||
$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
|
$helptext = $langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
|
||||||
$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, ';
|
// Set list of substitution variables (must be the same list than into the core/modules/member/doc/pdf_standard_member.class.php
|
||||||
$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, ';
|
$helptext .= '<small>';
|
||||||
$helptext .= '__YEAR__, __MONTH__, __DAY__';
|
|
||||||
|
$now = dol_now();
|
||||||
|
$year = dol_print_date($now, '%Y');
|
||||||
|
$month = dol_print_date($now, '%m');
|
||||||
|
$day = dol_print_date($now, '%d');
|
||||||
|
|
||||||
|
// List of values to scan for a replacement (Must be samevalues than into adherents/cartes/carte.php and pdf_standard_members.class.php)
|
||||||
|
$substitutionarray = array(
|
||||||
|
'__MEMBER_ID__' => 'MemberID',
|
||||||
|
'__MEMBER_REF__' => 'MemberRef',
|
||||||
|
'__MEMBER_LOGIN__' => 'MemberLogin',
|
||||||
|
'__MEMBER_TITLE__' => 'MemberLogin',
|
||||||
|
'__MEMBER_FIRSTNAME__' => 'MemberFirstname',
|
||||||
|
'__MEMBER_LASTNAME__' => 'MemberLastname',
|
||||||
|
'__MEMBER_FULLNAME__' => 'MemberFullname',
|
||||||
|
'__MEMBER_COMPANY__' => 'Company',
|
||||||
|
'__MEMBER_ADDRESS__' => 'MemberAddress',
|
||||||
|
'__MEMBER_ZIP__' => 'MemberZip',
|
||||||
|
'__MEMBER_TOWN__' => 'MemberTown',
|
||||||
|
'__MEMBER_COUNTRY__' => 'MemberCountry',
|
||||||
|
'__MEMBER_COUNTRY_CODE__' =>'MemberCountryCode',
|
||||||
|
'__MEMBER_EMAIL__' => 'MemberEmail',
|
||||||
|
'__MEMBER_BIRTH__' => 'MemberBirthdate',
|
||||||
|
'__MEMBER_TYPE__' => 'MemberType',
|
||||||
|
'__MEMBER_PHOTO__' => 'MemberPhoto',
|
||||||
|
'__YEAR__' => $year,
|
||||||
|
'__MONTH__' => $month,
|
||||||
|
'__DAY__' => $day,
|
||||||
|
'__DOL_MAIN_URL_ROOT__' => (string) DOL_MAIN_URL_ROOT,
|
||||||
|
'__SERVER__' => "https://".$_SERVER["SERVER_NAME"]."/"
|
||||||
|
);
|
||||||
|
foreach ($substitutionarray as $key => $val) {
|
||||||
|
$helptext .= $key.' => '.$val.'<br>';
|
||||||
|
}
|
||||||
|
// Make substitutions for new variables
|
||||||
|
/*
|
||||||
|
$array_member = $this->getSubstitutionarrayMember($object, $outputlangs);
|
||||||
|
$array_soc = $this->get_substitutionarray_mysoc($mysoc, $outputlangs);
|
||||||
|
$array_other = $this->get_substitutionarray_other($outputlangs);
|
||||||
|
|
||||||
|
$substitutionarray = array_merge($substitutionarray, $array_member, $array_soc, $array_other);
|
||||||
|
*/
|
||||||
|
$helptext .= '</small>';
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
@@ -653,32 +751,32 @@ $arrayoflabels = array();
|
|||||||
foreach (array_keys($_Avery_Labels) as $codecards) {
|
foreach (array_keys($_Avery_Labels) as $codecards) {
|
||||||
$arrayoflabels[$codecards] = $_Avery_Labels[$codecards]['name'];
|
$arrayoflabels[$codecards] = $_Avery_Labels[$codecards]['name'];
|
||||||
}
|
}
|
||||||
print $form->selectarray('ADHERENT_CARD_TYPE', $arrayoflabels, getDolGlobalString('ADHERENT_CARD_TYPE') ? getDolGlobalString('ADHERENT_CARD_TYPE') : 'CARD', 1, 0, 0);
|
print $form->selectarray('ADHERENT_CARD_TYPE', $arrayoflabels, getDolGlobalString('ADHERENT_CARD_TYPE', 'CARD'), 1, 0, 0);
|
||||||
|
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
// Text printed on top of member cards
|
// Text printed on top of member cards
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_HEADER_TEXT").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_HEADER_TEXT").'</td><td>';
|
||||||
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_HEADER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_HEADER_TEXT')).'">';
|
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_HEADER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_HEADER_TEXT')).'" spellcheck="false">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
// Text printed on member cards (align on left)
|
// Text printed on member cards (align on left)
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT").'</td><td>';
|
||||||
print '<textarea class="flat" name="ADHERENT_CARD_TEXT" cols="50" rows="5" wrap="soft">'."\n";
|
print '<textarea class="flat" name="ADHERENT_CARD_TEXT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
|
||||||
print getDolGlobalString('ADHERENT_CARD_TEXT');
|
print getDolGlobalString('ADHERENT_CARD_TEXT');
|
||||||
print '</textarea>';
|
print '</textarea>';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
// Text printed on member cards (align on right)
|
// Text printed on member cards (align on right)
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT_RIGHT").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_TEXT_RIGHT").'</td><td>';
|
||||||
print '<textarea class="flat" name="ADHERENT_CARD_TEXT_RIGHT" cols="50" rows="5" wrap="soft">'."\n";
|
print '<textarea class="flat" name="ADHERENT_CARD_TEXT_RIGHT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
|
||||||
print getDolGlobalString('ADHERENT_CARD_TEXT_RIGHT');
|
print getDolGlobalString('ADHERENT_CARD_TEXT_RIGHT');
|
||||||
print '</textarea>';
|
print '</textarea>';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
// Text printed on bottom of member cards
|
// Text printed on bottom of member cards
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_FOOTER_TEXT").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_CARD_FOOTER_TEXT").'</td><td>';
|
||||||
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_FOOTER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_FOOTER_TEXT')).'">';
|
print '<input type="text" class="flat minwidth300" name="ADHERENT_CARD_FOOTER_TEXT" value="'.dol_escape_htmltag(getDolGlobalString('ADHERENT_CARD_FOOTER_TEXT')).'" spellcheck="false">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@@ -702,11 +800,6 @@ print '<input type="hidden" name="page_y" value="">';
|
|||||||
|
|
||||||
print load_fiche_titre($langs->trans("MembersTickets"), '', '');
|
print load_fiche_titre($langs->trans("MembersTickets"), '', '');
|
||||||
|
|
||||||
$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
|
|
||||||
$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, ';
|
|
||||||
$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, ';
|
|
||||||
$helptext .= '__YEAR__, __MONTH__, __DAY__';
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@@ -728,7 +821,7 @@ print "</td></tr>\n";
|
|||||||
|
|
||||||
// Text printed on member address sheets
|
// Text printed on member address sheets
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_ETIQUETTE_TEXT").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("DescADHERENT_ETIQUETTE_TEXT").'</td><td>';
|
||||||
print '<textarea class="flat" name="ADHERENT_ETIQUETTE_TEXT" cols="50" rows="5" wrap="soft">'."\n";
|
print '<textarea class="flat" name="ADHERENT_ETIQUETTE_TEXT" cols="50" rows="5" wrap="soft" spellcheck="false">'."\n";
|
||||||
print getDolGlobalString('ADHERENT_ETIQUETTE_TEXT');
|
print getDolGlobalString('ADHERENT_ETIQUETTE_TEXT');
|
||||||
print '</textarea>';
|
print '</textarea>';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|||||||
@@ -65,17 +65,17 @@ $helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL_
|
|||||||
|
|
||||||
// Editing global variables not related to a specific theme
|
// Editing global variables not related to a specific theme
|
||||||
$constantes = array(
|
$constantes = array(
|
||||||
'MEMBER_REMINDER_EMAIL'=>array('type'=>'yesno', 'label'=>$langs->trans('MEMBER_REMINDER_EMAIL', $langs->transnoentities("Module2300Name"))),
|
'MEMBER_REMINDER_EMAIL' => array('type'=>'yesno', 'label' => $langs->trans('MEMBER_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")), 'help' => $langs->trans('MEMBER_REMINDER_EMAILHelp', $langs->transnoentities("Module2300Name"))),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_AUTOREGISTER' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_AUTOREGISTER' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_CANCELATION' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_CANCELATION' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_EMAIL_TEMPLATE_EXCLUSION' =>array('type'=>'emailtemplate:member','label'=>''),
|
'ADHERENT_EMAIL_TEMPLATE_EXCLUSION' => array('type'=>'emailtemplate:member', 'label'=>''),
|
||||||
'ADHERENT_MAIL_FROM' =>array('type'=>'string','label'=>''),
|
'ADHERENT_MAIL_FROM' => array('type'=>'string', 'label'=>''),
|
||||||
'ADHERENT_CC_MAIL_FROM' =>array('type'=>'string','label'=>''),
|
'ADHERENT_CC_MAIL_FROM' => array('type'=>'string', 'label'=>''),
|
||||||
'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT' =>array('type'=>'string','label'=>''),
|
'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT' => array('type'=>'string', 'label'=>''),
|
||||||
'ADHERENT_AUTOREGISTER_NOTIF_MAIL' =>array('type'=>'html', 'tooltip'=>$helptext,'label'=>'')
|
'ADHERENT_AUTOREGISTER_NOTIF_MAIL' => array('type'=>'html', 'tooltip' => $helptext, 'label' => '')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -150,8 +150,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_M
|
|||||||
|
|
||||||
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_emails');
|
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_emails');
|
||||||
|
|
||||||
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
|
||||||
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
|
|
||||||
@@ -166,7 +166,131 @@ print '<input type="hidden" name="action" value="updateall">';
|
|||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
form_constantes($constantes, 3, '');
|
// TODO Try to use the formsetup class.
|
||||||
|
|
||||||
|
$tableau = $constantes;
|
||||||
|
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td class="">'.$langs->trans("Description").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
print '</td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
foreach ($tableau as $key => $const) { // Loop on each param
|
||||||
|
$label = '';
|
||||||
|
$type = $const['type'];
|
||||||
|
$label = $const['label'];
|
||||||
|
$help = empty($const['help']) ? '' : $const['help'];
|
||||||
|
$const = $key;
|
||||||
|
|
||||||
|
$sql = "SELECT rowid, ".$db->decrypt('name')." as name, ".$db->decrypt('value')." as value, type, note";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."const";
|
||||||
|
$sql .= " WHERE ".$db->decrypt('name')." = '".$db->escape($const)."'";
|
||||||
|
$sql .= " AND entity IN (0, ".$conf->entity.")";
|
||||||
|
$sql .= " ORDER BY name ASC, entity DESC";
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
|
||||||
|
dol_syslog("List params", LOG_DEBUG);
|
||||||
|
|
||||||
|
if ($resql) {
|
||||||
|
$obj = $db->fetch_object($resql); // Take first result of select
|
||||||
|
|
||||||
|
if (empty($obj)) { // If not yet into table
|
||||||
|
$obj = (object) array('rowid' => '', 'name' => $const, 'value' => '', 'type' => $type, 'note' => '');
|
||||||
|
}
|
||||||
|
if ($const == 'ADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION' && !getDolGlobalString('MEMBER_REMINDER_EMAIL')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
|
// Show label of parameter
|
||||||
|
print '<td>';
|
||||||
|
print '<input type="hidden" name="rowid[]" value="'.$obj->rowid.'">';
|
||||||
|
print '<input type="hidden" name="constname[]" value="'.$const.'">';
|
||||||
|
print '<input type="hidden" name="constnote_'.$obj->name.'" value="'.nl2br(dol_escape_htmltag($obj->note)).'">';
|
||||||
|
print '<input type="hidden" name="consttype_'.$obj->name.'" value="'.($obj->type ? $obj->type : 'string').'">';
|
||||||
|
|
||||||
|
$picto = '';
|
||||||
|
$tmparray = explode(':', $obj->type);
|
||||||
|
if (!empty($tmparray[1])) {
|
||||||
|
$picto = preg_replace('/_send$/', '', $tmparray[1]);
|
||||||
|
}
|
||||||
|
if ($picto) {
|
||||||
|
print img_picto('', $picto, 'class="pictofixedwidth"');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($tableau[$key]['tooltip'])) {
|
||||||
|
print $form->textwithpicto($label ? $label : $langs->trans('Desc'.$const), $tableau[$key]['tooltip']);
|
||||||
|
} else {
|
||||||
|
print($label ? $label : $langs->trans('Desc'.$const));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($const, ['ADHERENT_MAIL_FROM', 'ADHERENT_CC_MAIL_FROM'])) {
|
||||||
|
print ' '.img_help(1, $langs->trans("EMailHelpMsgSPFDKIM"));
|
||||||
|
}
|
||||||
|
if ($help) {
|
||||||
|
print '<br><span class="opacitymedium">';
|
||||||
|
//print $langs->trans("MEMBER_REMINDER_EMAILHelp");
|
||||||
|
print $help;
|
||||||
|
print '</span>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</td>\n";
|
||||||
|
|
||||||
|
// Value
|
||||||
|
print '<td>';
|
||||||
|
print '<input type="hidden" name="consttype_'.$const.'" value="'.($obj->type ? $obj->type : 'string').'">';
|
||||||
|
print '<input type="hidden" name="constnote_'.$const.'" value="'.nl2br(dol_escape_htmltag($obj->note)).'">';
|
||||||
|
if ($obj->type == 'textarea') {
|
||||||
|
print '<textarea class="flat" name="constvalue_'.$const.'" cols="50" rows="5" wrap="soft">'."\n";
|
||||||
|
print $obj->value;
|
||||||
|
print "</textarea>\n";
|
||||||
|
} elseif ($obj->type == 'html') {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
|
$doleditor = new DolEditor('constvalue_'.$const, $obj->value, '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%');
|
||||||
|
$doleditor->Create();
|
||||||
|
} elseif ($obj->type == 'yesno') {
|
||||||
|
print $form->selectyesno('constvalue_'.$const, $obj->value, 1, false, 0, 1);
|
||||||
|
} elseif (preg_match('/emailtemplate/', $obj->type)) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
|
||||||
|
$formmail = new FormMail($db);
|
||||||
|
|
||||||
|
$tmp = explode(':', $obj->type);
|
||||||
|
|
||||||
|
$formmail->fetchAllEMailTemplate($tmp[1], $user, null, -1); // We set lang=null to get in priority record with no lang
|
||||||
|
$arrayofmessagename = array();
|
||||||
|
if (is_array($formmail->lines_model)) {
|
||||||
|
foreach ($formmail->lines_model as $modelmail) {
|
||||||
|
//var_dump($modelmail);
|
||||||
|
$moreonlabel = '';
|
||||||
|
if (!empty($arrayofmessagename[$modelmail->label])) {
|
||||||
|
$moreonlabel = ' <span class="opacitymedium">('.$langs->trans("SeveralLangugeVariatFound").')</span>';
|
||||||
|
}
|
||||||
|
// The 'label' is the key that is unique if we exclude the language
|
||||||
|
$arrayofmessagename[$modelmail->label.':'.$tmp[1]] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)).$moreonlabel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//var_dump($arraydefaultmessage);
|
||||||
|
//var_dump($arrayofmessagename);
|
||||||
|
print $form->selectarray('constvalue_'.$const, $arrayofmessagename, $obj->value.':'.$tmp[1], 'None', 0, 0, '', 0, 0, 0, '', '', 1);
|
||||||
|
|
||||||
|
print '<a href="'.dolBuildUrl(DOL_URL_ROOT.'/admin/mails_templates.php', ['action' => 'create', 'type_template' => $tmp[1], 'backtopage' => dolBuildUrl($_SERVER["PHP_SELF"])]).'">'.img_picto('', 'add').'</a>';
|
||||||
|
} elseif (preg_match('/MAIL_FROM$/i', $const)) {
|
||||||
|
print img_picto('', 'email', 'class="pictofixedwidth"').'<input type="text" class="flat minwidth300" name="constvalue_'.$const.'" value="'.dol_escape_htmltag($obj->value).'">';
|
||||||
|
} else { // type = 'string' ou 'chaine'
|
||||||
|
print '<input type="text" class="flat minwidth300" name="constvalue_'.$const .'" value="'.dol_escape_htmltag($obj->value).'">';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("Update").'" name="update"></div>';
|
print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("Update").'" name="update"></div>';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_M
|
|||||||
|
|
||||||
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_extrafields');
|
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_extrafields');
|
||||||
|
|
||||||
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
|
||||||
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ $help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_M
|
|||||||
|
|
||||||
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_type_extrafields');
|
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-member page-admin_type_extrafields');
|
||||||
|
|
||||||
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
|
||||||
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user