2
0
forked from Wavyzz/dolibarr

Compare commits

...

536 Commits
3.6.2 ... 3.6

Author SHA1 Message Date
Laurent Destailleur
9b1af8fa71 Compatibility with higher php version 2020-01-22 21:10:49 +01:00
Laurent Destailleur
a81a34badd Compatibility with higher php version 2020-01-22 21:03:20 +01:00
Laurent Destailleur
c028819cab FIX clone of purchase order 2020-01-10 19:35:49 +01:00
Laurent Destailleur
8893d8d59f Fix compatiblity with new version of PHP 2018-11-10 11:56:23 +01:00
Laurent Destailleur
f694939fc7 Fix migration with pgsql 2017-06-19 19:39:37 +02:00
Regis Houssin
9352ecca1f Fix: PHP 7 - Fatal error: 'break' not in the 'loop' or 'switch' context 2017-06-19 04:01:34 +02:00
Laurent Destailleur
6fc4dacd42 Fix migration opensurvey 2017-06-19 02:55:33 +02:00
Laurent Destailleur
2a27fe02eb Fix detection if tag already exists 2016-04-29 15:12:58 +02:00
Laurent Destailleur
7f5670cb26 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	ChangeLog
2016-04-22 19:49:27 +02:00
Laurent Destailleur
e669dac398 Prepare 3.6.7 2016-03-11 18:28:39 +01:00
Laurent Destailleur
32d0f9a8d7 Prepare 3.6.7 2016-03-11 18:27:04 +01:00
Laurent Destailleur
a45ffeecca Missing changelog 2016-03-11 18:21:57 +01:00
Laurent Destailleur
1b23ede857 Merge remote-tracking branch 'origin/3.5' into 3.6 2016-01-31 21:26:28 +01:00
Laurent Destailleur
d9e089256e Fix path to copyrighted files 2016-01-31 16:16:46 +01:00
Laurent Destailleur
b27e31b3ae Merge pull request #4483 from marcosgdf/bug-4440-3
Corrected typo of PR #4444
2016-01-30 12:20:50 +01:00
Laurent Destailleur
c1b6630c16 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/main.inc.php
2016-01-25 15:37:04 +01:00
Raphaël Doursenaud
ed16699de6 FIX #4291 Correctly filter external calendar GETPOSTs 2016-01-25 15:32:08 +01:00
Laurent Destailleur
0814fa76f8 FIX CVE CVE-2015-8685 2016-01-25 15:26:52 +01:00
Marcos García de La Fuente
83263e242e Corrected typo of PR #4444 2016-01-23 20:32:22 +01:00
Laurent Destailleur
9fd56df03f Merge pull request #4444 from marcosgdf/bug-4440-2
FIX #4440 Wrong price is filled by Product::fetch into multiprices arrays
2016-01-22 03:47:22 +01:00
Marcos García de La Fuente
da637db162 FIX #4440 Wrong price is filled by Product::fetch into multiprices arrays 2016-01-18 10:17:59 +01:00
Laurent Destailleur
5414cb6f12 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2016-01-08 14:43:20 +01:00
Laurent Destailleur
a26a6c2449 Fix sql injection even when code is on several lines 2016-01-08 14:43:04 +01:00
Laurent Destailleur
c2b8be9aaf Merge pull request #4355 from GPCsolutions/3.6-4291
FIX #4291 Correctly filter external calendar GETPOSTs
2016-01-08 14:23:56 +01:00
Laurent Destailleur
36dc8b1ce7 FIX #4341 2016-01-08 13:57:53 +01:00
Raphaël Doursenaud
f2178f0369 FIX #4291 Correctly filter external calendar GETPOSTs 2016-01-08 06:42:28 +01:00
Laurent Destailleur
0cad938e09 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/install/upgrade.php
2016-01-02 12:19:49 +01:00
Laurent Destailleur
b46aec8e7e Fix to allow phpunit of migration process for 3.5 to 3.6 2016-01-02 12:18:26 +01:00
Laurent Destailleur
35ce670bf2 Fix to allow phpunit of migration process for 3.4 to 3.5 2016-01-02 12:18:12 +01:00
Laurent Destailleur
a234482d08 FIX #3694 2015-12-31 14:55:53 +01:00
Laurent Destailleur
c004342976 FIX #3694 2015-12-31 14:55:10 +01:00
Laurent Destailleur
a2c8208541 Prepare 3.6.5 2015-12-27 19:17:05 +01:00
Laurent Destailleur
96bc2023f3 Prepare package 3.6.6 2015-12-27 18:56:15 +01:00
Laurent Destailleur
67462a81a8 Fix link to issues and dependencies 2015-12-21 12:22:31 +01:00
Laurent Destailleur
b0b5e95c7f Backport travis change 2015-12-21 03:04:01 +01:00
Laurent Destailleur
9334cf8fd1 FIX #4243 sql injection 2015-12-19 18:03:08 +01:00
Laurent Destailleur
0df45f10c1 Fix travis 2015-12-19 01:09:42 +01:00
Laurent Destailleur
c1c0fa88c2 Fix for new travis setup 2015-12-18 20:56:27 +01:00
Laurent Destailleur
7af4d91828 Merge pull request #4251 from fmarcet/3.6
FIX: Not deleting contracts on element_element table
2015-12-18 17:07:42 +01:00
Laurent Destailleur
3d6f1d911a Merge pull request #4247 from GPCsolutions/3.6-4242
FIX #4242 Allow disabling dashes in documents
2015-12-18 17:06:23 +01:00
fmarcet
21f7271e51 FIX: Not deleting contrats on element_element table 2015-12-17 12:36:43 +01:00
Raphaël Doursenaud
e6ec797af8 FIX #4242 Allow disabling dashes in documents 2015-12-17 10:21:44 +01:00
Laurent Destailleur
3fea57f83b Merge pull request #4192 from GPCsolutions/3.6-3930
Fix #3930 Removed executable bit
2015-12-11 16:42:25 +01:00
Raphaël Doursenaud
4e9b339439 [Qual] Removed PHP closing tag 2015-12-09 13:28:45 +01:00
Raphaël Doursenaud
c0862762a5 Fix #3930 Removed executable bit
These files doesn't contain executable code and may pose a security
threat.
2015-12-09 13:28:36 +01:00
Laurent Destailleur
b3ed99ddc1 Merge pull request #4146 from fmarcet/3.6
FIX: Not delete a product when have customer price
2015-12-04 18:24:37 +01:00
Laurent Destailleur
d2b221cfd1 Upgrade PHPCS rules 2015-12-04 10:22:27 +01:00
fmarcet
eb98bd1e78 FIX: Not delete a product when have customer price 2015-12-03 14:02:26 +01:00
Laurent Destailleur
e72f4cb063 Merge pull request #4102 from fmarcet/3.6
Fix: Bug when idprof is mandatory on thrid creation and we use multicompany
2015-11-28 16:27:16 +01:00
Laurent Destailleur
2ce00b2956 Merge pull request #4099 from GPCsolutions/3.6-4097
FIX #4097 Public holiday calculation
2015-11-28 16:11:28 +01:00
fmarcet
208bf2545f Fix: Bug when idprof is mandatory on thrid creation and we use
multicompany
2015-11-26 17:14:03 +01:00
Laurent Destailleur
041fa8d3f3 Merge pull request #4083 from GPCsolutions/3.6-4081
FIX #4081 Added missing translation
2015-11-26 00:16:46 +01:00
Raphaël Doursenaud
973e42d10f FIX #4097 Public holiday calculation
The last day was ommitted and never parsed. If this day was a
saturday, sunday or public holiday day, it was not computed.
2015-11-25 19:34:11 +01:00
Raphaël Doursenaud
91ce70a6e9 FIX #4081 Added missing translation 2015-11-23 17:25:10 +01:00
Laurent Destailleur
d64664f5a7 Merge pull request #4057 from marcosgdf/bug-3734
FIX #3734 Do not show empty links of deleted source objects in stock movement list
2015-11-21 17:49:41 +01:00
Marcos García de La Fuente
9f27e2323f FIX #3734 Do not show empty links of deleted source objects in stock movement list 2015-11-21 11:51:23 +01:00
Laurent Destailleur
c77eaeaa77 Merge pull request #4040 from atm-arnaud/3.6_fix_export_category_contact
FIX export with category contact extrafields
2015-11-21 02:09:32 +01:00
arnaud
4233d24f4b FIX export with category contact extrafields 2015-11-19 18:01:58 +01:00
Laurent Destailleur
350345ecca Prepare 3.6.5 2015-11-08 15:18:26 +01:00
Laurent Destailleur
722a133b31 FIX Add a protection to not make release if ChangeLog was not generated.
Prepare package 3.6.5

Conflicts:
	ChangeLog

Conflicts:
	ChangeLog
2015-11-08 15:09:57 +01:00
Laurent Destailleur
d4aeb8b3bc Abandon package APS. Was never used. 2015-11-08 14:57:26 +01:00
Juanjo Menent
a6f0baefc1 Merge pull request #3933 from marcosgdf/bug-3980
FIX #3890 Expected transactions bank account page, shows negative numbers
2015-11-08 11:15:31 +01:00
Juanjo Menent
d69e76168f Merge pull request #3929 from marcosgdf/bug-3928
FIX #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card
2015-11-08 11:14:02 +01:00
Marcos García de La Fuente
728f469c1e FIX #3890 Expected transactions bank account page, shows negative numbers 2015-11-07 13:43:59 +01:00
Marcos García de La Fuente
b4c3804c91 FIX #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card 2015-11-07 13:21:03 +01:00
Juanjo Menent
f33157033c Merge pull request #3909 from altatof/fixcloseshipping
FIX: change object statut on close shipping and remove erratic db commit
2015-11-06 10:16:00 +01:00
Christophe Battarel
4d11205a01 FIX: change object statut on close shipping and remove erratic db commit 2015-11-06 09:51:33 +01:00
Laurent Destailleur
375e61de2e Merge 3.5 2015-11-05 22:01:05 +01:00
Laurent Destailleur
5777c16b72 Merge pull request #3902 from altatof/clonedorderdate
FIX: change order date on clone (as everywhere else)
2015-11-05 21:49:50 +01:00
Laurent Destailleur
fdf9617e42 Merge pull request #3900 from GPCsolutions/dolibarr-3864
Fix #3864 Really fixed invalid jQuery code
2015-11-05 21:47:40 +01:00
Laurent Destailleur
d499fafdb9 Merge pull request #3901 from altatof/3.6
FIX bad calculation for stock value
2015-11-05 21:44:21 +01:00
Laurent Destailleur
60debe31c4 Merge pull request #3894 from altatof/stockvalue
FIX bad calculation for stock value
2015-11-05 21:44:15 +01:00
Christophe Battarel
316b7453e4 FIX bad stock valo 2015-11-05 17:04:08 +01:00
Christophe Battarel
80d2445540 FIX: bad stock valorisation 2015-11-05 17:00:22 +01:00
Christophe Battarel
ad82135879 FIX: change order date on clone (as everywhere else) 2015-11-05 15:36:13 +01:00
Christophe Battarel
75bcb7e53f fix pmp 2015-11-05 15:32:56 +01:00
Christophe Battarel
f566b38296 FIX pmp 2015-11-05 15:29:51 +01:00
Christophe Battarel
fa088eb6cc FIX bad calculation for stock value 2015-11-05 14:57:58 +01:00
Raphaël Doursenaud
b0cf9bd0be Fix #3864 Really fixed invalid jQuery code 2015-11-05 14:38:11 +01:00
Christophe Battarel
9b797c1831 FIX bad calculation for stock value 2015-11-05 12:49:43 +01:00
Laurent Destailleur
fb34f25701 Merge pull request #3887 from GPCsolutions/dolibarr-3864
Fix #3864 Fixed invalid jQuery code
2015-11-05 02:34:24 +01:00
Raphaël Doursenaud
69ac75bef8 Fix #3864 Fixed invalid jQuery code 2015-11-04 22:55:14 +01:00
Laurent Destailleur
c06c2d0464 FIX #3841 creation of a task completed has not status set to finished by
default
2015-11-02 14:21:45 +01:00
Laurent Destailleur
f08d52b0e8 Merge pull request #3723 from atm-alexis/FIX_double_escape_entrepot
FIX double db escape add too quote
2015-10-14 21:27:39 +02:00
Alexis Algoud
0251728e28 FIX double db escape add too quote 2015-10-12 17:36:24 +02:00
Laurent Destailleur
84f5b72d2b Merge pull request #3719 from Dolibarr/revert-3573-FIX_remove_file_from_mail_remove_file
Revert "FIX no need to remove file into mail form"
2015-10-11 20:43:16 +02:00
Laurent Destailleur
87fad70f4a Revert "FIX no need to remove file into mail form" 2015-10-11 20:42:49 +02:00
Laurent Destailleur
62dd936b08 Merge pull request #3573 from atm-alexis/FIX_remove_file_from_mail_remove_file
FIX no need to remove file into mail form
2015-10-11 20:42:42 +02:00
Laurent Destailleur
9fa2afb44b Merge branch '3.6' of github.com:Dolibarr/dolibarr into 3.6
Conflicts:
	ChangeLog
2015-10-11 19:55:50 +02:00
Laurent Destailleur
4e4efc97f0 Merge branch 'marcosgdf-bug-1776' into 3.6 2015-10-11 19:54:51 +02:00
Laurent Destailleur
c76af687ed Merge pull request #3715 from marcosgdf/clone-proposals
FIX 1794 Error when cloning Proposal gives error in a malformed page
2015-10-11 19:52:30 +02:00
Marcos García de La Fuente
fd9f51df88 Missing changelog 2015-10-11 12:39:42 +02:00
Marcos García de La Fuente
4e9a378f0d Merge branch '3.6' into bug-1776 2015-10-11 12:37:41 +02:00
Marcos García de La Fuente
9f1fa7e212 Missing changelog 2015-10-11 12:32:02 +02:00
Marcos García de La Fuente
252f00dfe7 Merge branch '3.6' into clone-proposals 2015-10-11 12:29:45 +02:00
Laurent Destailleur
3f8e9bd181 Remove warning 2015-10-10 19:24:31 +02:00
Laurent Destailleur
384c89dcef Merge pull request #3701 from altatof/fix_orderdateonclone
FIX: change order date on clone (as everywhere else)
2015-10-09 20:44:03 +02:00
Laurent Destailleur
b27989d5d4 Merge pull request #3665 from altatof/fix_extrafields
reenable search criteria in sql clause
2015-10-09 20:32:42 +02:00
Laurent Destailleur
e886c89e06 Merge pull request #3668 from altatof/fix_stock_entity
fix entities warehouse share
2015-10-09 20:16:32 +02:00
Christophe Battarel
00f0aff6f0 FIX: change order date on clone (as everywhere else) 2015-10-08 15:58:19 +02:00
Christophe Battarel
f3ef9b868f fix entities warehouse share 2015-10-05 16:19:54 +02:00
Christophe Battarel
bf262c2cae reenable search criteria in sql clause 2015-10-05 15:41:28 +02:00
Laurent Destailleur
72c31c0fa9 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-10-01 10:48:28 +02:00
Laurent Destailleur
4da8fb901b Add comment 2015-10-01 10:48:09 +02:00
Laurent Destailleur
1907e5da54 Merge pull request #3619 from atm-arnaud/3.6_fix_facturestat
FIX facturestat bad sql when customer view is limited
2015-10-01 10:48:05 +02:00
Laurent Destailleur
34adc60d26 Merge pull request #3618 from atm-alexis/fix_event_for_user_restricted_if_no_company
FIX error in SQL due to a previous fix
2015-10-01 10:35:07 +02:00
arnaud
0b7305d21a FIX facturestat bad sql when customer view is limited 2015-09-28 16:55:34 +02:00
Alexis ALGOUD
453ed8a05e FIX error in SQL due to a previous fix 2015-09-28 15:36:27 +02:00
Alexis Algoud
2d35124c71 FIX no need to remove file into mail form, the temp dir will be deleted after any sending 2015-09-23 11:11:19 +02:00
Marcos García de La Fuente
3818bff86a Fix: [ bug 1776 ] Undefined $deliverycompany variable in pdf_build_address 2015-09-16 12:49:05 +02:00
Marcos García de La Fuente
e80f29c271 Fix: [ bug 1794 ] - Error when cloning Proposal gives error in a malformed page 2015-09-16 12:47:13 +02:00
Laurent Destailleur
86b1a9cbce Merge remote-tracking branch 'origin/3.5' into 3.6 2015-09-12 11:38:25 +02:00
Laurent Destailleur
a3032d5674 Merge pull request #3504 from fappels/3.5-patch-Dispatch-rounding
Fix #3471 3.5 Rounding issue when dispatching non-integer
2015-09-12 11:07:55 +02:00
Laurent Destailleur
e1a92c8288 Merge pull request #3506 from atm-maxime/3.6
Fix multientity stock management (F.Henry followup)
2015-09-12 10:58:26 +02:00
Maxime Kohlhaas
c6081f0fa2 Fix multientity stock management (F.Henry followup) 2015-09-11 20:38:32 +02:00
fappels
8bdfdc0127 Fix #3471 3.5 Rounding issue when dispatching non-integer 2015-09-10 23:12:27 +02:00
fappels
249883dda2 Merge remote-tracking branch 'Dolibarr/3.5' into 3.5 2015-09-10 22:19:41 +02:00
Juanjo Menent
70df553814 Merge pull request #3494 from FHenry/3.6
3.6
2015-09-09 17:43:07 +02:00
Juanjo Menent
355fcc78cf Fix #3475 RemiseCheque: Undefined variable $date 2015-09-08 20:48:31 +02:00
Florian HENRY
63a817c3a4 Fix wahrehouse multientty management 2015-09-08 16:13:15 +02:00
Florian HENRY
52cb9581ff Fix multientity stock management 2015-09-08 16:00:13 +02:00
Florian HENRY
7505537a3e Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-09-07 11:39:00 +02:00
Laurent Destailleur
6c78b930d1 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-09-06 11:26:20 +02:00
Laurent Destailleur
8076ea85ea 3.6.4 was packaged 2015-09-05 20:07:17 +02:00
Laurent Destailleur
51a01921ba Merge pull request #3456 from marcosgdf/bug-2893
Fix [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
2015-09-03 16:55:13 +02:00
Marcos García de La Fuente
7a115c9366 Typo 2015-09-03 11:59:46 +02:00
Marcos García de La Fuente
bd21cf5d68 Updated changelog 2015-09-03 11:58:20 +02:00
Marcos García de La Fuente
08565d46fe Merge branch '3.6' into bug-2893 2015-09-03 11:56:43 +02:00
Marcos García de La Fuente
50184babb9 FIX [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
Close #2893
2015-09-03 11:55:40 +02:00
Laurent Destailleur
001f1b4c31 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/filefunc.inc.php
2015-09-03 10:41:44 +02:00
Laurent Destailleur
897686a752 Merge pull request #3447 from fmarcet/3.5
FIX: The hours of date filter aren't correct
2015-09-03 10:33:00 +02:00
Laurent Destailleur
9efecbf52b Merge pull request #3443 from GPCsolutions/3.5-3442
Fix #3442 Remove useless syslog
2015-09-03 10:30:42 +02:00
Laurent Destailleur
e3d4b104e2 Merge pull request #3449 from GPCsolutions/3.5-3448
Fix #3448 Pass expected date format
2015-09-03 10:26:00 +02:00
Raphaël Doursenaud
870882257d Fix #3448 Pass expected date format 2015-09-01 11:06:44 +02:00
fmarcet
2b6a481011 FIX: The hours of date filter aren't correct 2015-09-01 09:46:45 +02:00
Raphaël Doursenaud
51d5bff15d Fix #3442 Remove useless syslog
Not having the permission to read the box is not an error.
Furthermore, no other boxes have this behavior.
2015-08-31 19:41:42 +02:00
Laurent Destailleur
2faa5d725e Missing tcpdf files 2015-08-15 18:17:54 +02:00
Laurent Destailleur
58988d3084 3.5.8 2015-08-14 16:12:36 +02:00
Laurent Destailleur
8d18507d5f Bad help 2015-08-14 15:35:25 +02:00
Laurent Destailleur
1595765ec8 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/compta/facture/class/facture.class.php
2015-08-13 03:18:02 +02:00
Laurent Destailleur
45aed1e0aa Merge branch 'marcosgdf-bug-3313' into 3.5 2015-08-13 00:14:17 +02:00
Laurent Destailleur
dc4b429a33 Merge branch 'bug-3313' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-3313

Conflicts:
	ChangeLog
2015-08-13 00:13:36 +02:00
Laurent Destailleur
4b51fc80a6 Merge branch '3.5' of git@github.com:Dolibarr/dolibarr.git into 3.5
Conflicts:
	ChangeLog
2015-08-13 00:06:27 +02:00
Laurent Destailleur
a8c2dfd445 Merge branch 'marcosgdf-bug-3310' into 3.5 2015-08-13 00:05:16 +02:00
Laurent Destailleur
958321b64d Merge pull request #3340 from atm-maxime/3.6
Rowid was missing on expedition line so no origin id when creating an invoice
2015-08-12 23:39:43 +02:00
Laurent Destailleur
d3f004d407 Merge pull request #3275 from marcosgdf/bug-3206
Fix: [ bug #3206 ] PropaleLigne, OrderLine and FactureLigne given to triggers through update function does not contain all the information
2015-08-12 23:25:29 +02:00
Juanjo Menent
374f702ef0 Merge pull request #3363 from marcosgdf/bug-3342
Fix [ bug #3342 ]: Taxes dictionary page does not accept localized decimals for localtax2 rate
2015-08-10 20:12:48 +02:00
Marcos García de La Fuente
e2797ddd40 Merge branch '3.6' into bug-3342
# Conflicts:
#	ChangeLog
2015-08-10 17:48:18 +02:00
Juanjo Menent
804aec3cbc Merge pull request #3362 from marcosgdf/bug-3341
Fix [ bug #3341 ]: Missing translation in /compta/paiement_charge.php
2015-08-10 11:35:19 +02:00
Marcos García de La Fuente
f3ef4fed93 Fix: [ bug #3313 ] Error enabling module with PostgreSQL database
Close #3313
2015-08-09 13:58:03 +02:00
Marcos García de La Fuente
7cb564586e Fix: [ bug #3310 ] OrderLine::fetch, FactureLigne::fetch and PropaleLigne::fetch do not return anything
Close #3310
2015-08-09 13:52:02 +02:00
Marcos García de La Fuente
2f921b6431 Fix [ bug #3342 ]: Taxes dictionary page does not accept localized decimals for localtax2 rate
Close #3342
2015-08-09 13:46:48 +02:00
Marcos García de La Fuente
a24f29ba8b Fix [ bug #3341 ]: Missing translation in /compta/paiement_charge.php
Close #3341
2015-08-09 13:37:05 +02:00
Maxime Kohlhaas
e13515e59f Merge branch '3.6' of github.com:Dolibarr/dolibarr into 3.6 2015-08-06 08:57:52 +02:00
Marcos García de La Fuente
a1f74763da Merge branch '3.5' into bug-3206
Conflicts:
	ChangeLog
2015-08-03 18:55:01 +02:00
Juanjo Menent
22b4bfd1a4 Merge pull request #3334 from GPCsolutions/3.6-3314
Fix #3314 Display state in bank account card
2015-08-01 14:40:42 +02:00
Maxime Kohlhaas
9e05cecc1a Fix : rowid was missing on expedition line so no origin id when creating an invoice 2015-07-31 16:31:12 +02:00
Laurent Destailleur
6adc3ba604 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/core/menus/standard/eldy.lib.php
2015-07-30 14:54:33 +02:00
Raphaël Doursenaud
3b9c8a685b Fix #3314 Display state in bank account card 2015-07-29 19:29:18 +02:00
Laurent Destailleur
c2eb47f3a1 Merge pull request #3325 from atm-ph/3.6_fix_timespent_id
FIX no projet_task_time id from trigger TASK_TIMESPENT_CREATE
2015-07-28 18:36:48 +02:00
Laurent Destailleur
565b0861d9 Merge pull request #3323 from fmarcet/3.6
Fix: Not showing product's supplier reference when page break
2015-07-28 18:36:01 +02:00
phf
824da6d2b0 FIX no projet_task_time id from trigger TASK_TIMESPENT_CREATE 2015-07-27 17:38:27 +02:00
fmarcet
6676114501 Fix: Not showing product supplier reference when page break 2015-07-27 16:31:40 +02:00
Laurent Destailleur
6b2d7f7d19 Merge pull request #3200 from atm-maxime/3.5
Fix #3188 SQL error if qty or discount is not a number on proposal ad…
2015-07-23 22:53:44 +02:00
Laurent Destailleur
a0fc119ce5 Merge pull request #3290 from marcosgdf/bug-3074
Fix: [ bug #3074 ] Accruals accounting use payment date instead of commitment date in turnover reports for salaries
2015-07-23 22:48:54 +02:00
Maxime Kohlhaas
73c7ef5a88 Merge branch '3.5' of github.com:Dolibarr/dolibarr into 3.5 2015-07-22 17:10:46 +02:00
Maxime Kohlhaas
646ad48bd0 Better fix for not numeric qty or discount 2015-07-21 10:50:07 +02:00
Maxime Kohlhaas
428bd14b55 Merge branch '3.5' of github.com:Dolibarr/dolibarr into 3.5
# Veuillez entrer un message de validation pour expliquer en quoi cette fusion est
# nécessaire, surtout si cela fusionne une branche amont mise à jour dans une branche de sujet.
#
# Les lignes commençant par '#' seront ignorées, et un message vide
# abandonne la validation.
2015-07-21 10:49:47 +02:00
Marcos García de La Fuente
038f171d6c Fix: [ bug #3074 ] Accruals accounting use payment date instead of commitment date in turnover reports for salaries
Close #3074
2015-07-20 12:18:30 +02:00
Laurent Destailleur
14eee82a64 Merge pull request #3277 from marcosgdf/bug-1791
Fix: [ bug 1791 ] Margin menu not available if any Finance module is not enabled
2015-07-19 15:26:29 +02:00
Marcos García de La Fuente
5b0c216b42 Merge branch '3.5' into bug-1791
Conflicts:
	ChangeLog
2015-07-19 13:48:04 +02:00
Marcos García de La Fuente
8505e91469 Fix: [ bug 1791 ] Margin menu not available if any Finance module is not enabled 2015-07-19 13:46:25 +02:00
Laurent Destailleur
fbc0b5b313 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/contact/vcard.php
	htdocs/societe/consumption.php
2015-07-19 11:38:44 +02:00
Laurent Destailleur
5c2059a79f Merge branch 'marcosgdf-bug-3180' into 3.5 2015-07-19 11:29:57 +02:00
Laurent Destailleur
2e2f99c351 Merge branch 'bug-3180' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-3180

Conflicts:
	ChangeLog
2015-07-19 11:28:48 +02:00
Laurent Destailleur
739eaedecc Merge branch 'marcosgdf-bug-3268' into 3.5 2015-07-19 11:27:42 +02:00
Laurent Destailleur
4100026c71 Merge branch 'bug-3268' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-3268

Conflicts:
	ChangeLog
2015-07-19 11:27:28 +02:00
Laurent Destailleur
8d7c1f8d4c Fix: [ bug #2570 ] [Contacts] Page should not process if ID is invalid 2015-07-19 11:21:21 +02:00
Marcos García de La Fuente
3d6c5b09e8 Fix: [ bug #3268 ] SQL error when accessing thirdparty log page without a socid parameter
Close #3268
2015-07-19 11:19:47 +02:00
Marcos García de La Fuente
538c8c072b Merge branch '3.5' into bug-3180
Conflicts:
	ChangeLog
2015-07-19 11:16:36 +02:00
Marcos García de La Fuente
d0b1652efd Merge branch '3.5' into bug-3206
Conflicts:
	ChangeLog
2015-07-19 11:16:10 +02:00
Laurent Destailleur
d422fac3fe Merge pull request #3272 from marcosgdf/bug-2715
Fix: [ bug #2715 ] Statistics page has broken layout with long thirdparty names
2015-07-18 23:53:30 +02:00
Laurent Destailleur
9e1c1fd464 Merge pull request #3271 from marcosgdf/bug-2696
Fix: [ bug #2696 ] Adding complementary attribute fails if code is numerics
2015-07-18 23:50:08 +02:00
Marcos García de La Fuente
4649cf7210 Fix: [ bug #3206 ] PropaleLigne, OrderLine and FactureLigne given to triggers through update function does not contain all the information
Close #3206
2015-07-18 19:40:48 +02:00
Marcos García de La Fuente
b28c4df0d6 Fix: [ bug #3180 ] formObjectOptions hook when editing thirdparty card does not print result
Close #3180
2015-07-18 17:35:36 +02:00
Marcos García de La Fuente
7185cfeb84 Fix: [ bug #2715 ] Statistics page has broken layout with long thirdparty names 2015-07-18 14:48:59 +02:00
Marcos García de La Fuente
e9d1e6265d Fix: [ bug #2696 ] Adding complementary attribute fails if code is numerics
Close #2696
2015-07-18 14:25:05 +02:00
Laurent Destailleur
d7e9bccad6 Merge pull request #3199 from atm-maxime/fix_rejet_prel
Fix : withdrawal rejection were taking the total amount of the invoic…
2015-07-16 10:20:46 +02:00
Florian HENRY
01d1c89f11 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-07-15 15:16:09 +02:00
Maxime Kohlhaas
5223934ff0 Fix #3188 SQL error if qty or discount is not a number on proposal add line 2015-07-14 12:17:50 +02:00
Maxime Kohlhaas
20bdfdb286 Fix : withdrawal rejection were taking the total amount of the invoice instead of the amount of the withdrawal 2015-07-14 11:57:47 +02:00
Juanjo Menent
e2b5bc756a Merge pull request #3174 from hregis/3.6_bug
Fix: missing shared parameters
2015-07-09 09:36:52 +02:00
Regis Houssin
9e7cb70d63 Fix: missing shared parameters 2015-07-08 16:03:15 +02:00
Regis Houssin
aff3f03ae0 Merge remote-tracking branch 'origin/3.6' into 3.6_bug 2015-07-08 16:01:26 +02:00
Laurent Destailleur
5d588714f0 Merge pull request #3135 from atm-ph/3.6_fix_socpeople_country_display
FIX : wrong display with contact country
2015-07-04 04:41:20 +02:00
Laurent Destailleur
3c77a5ca21 Merge pull request #3132 from atm-maxime/3.6
Fix : Project list was not keeping parameters on sorts
2015-07-04 04:35:11 +02:00
Maxime Kohlhaas
5d14d05ce1 Fix : Social contribution payment deletion was not deleting the bank line 2015-07-03 16:38:54 +02:00
phf
c87328b362 FIX : contact country had wrong display if the country dont have translate 2015-07-02 17:00:37 +02:00
Maxime Kohlhaas
ee643ed2a7 Fix : Project list was not keeping parameters on sorts 2015-07-02 14:08:16 +02:00
Laurent Destailleur
461b5f0882 Merge pull request #3086 from atm-ph/3.6_fix_export_extrafield_select
FIX : tool export extrafields
2015-06-27 02:20:39 +02:00
Juanjo Menent
e72c118274 Merge pull request #3104 from atm-ph/3.6_fix_search_filter_on_reassort
FIX filter by "category / not enough stock"
2015-06-26 17:29:01 +02:00
phf
582f9cd214 FIX : keep filter by category or by not enough stock if we switch page 2015-06-26 11:04:08 +02:00
Florian HENRY
ac6619daef Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-24 12:29:42 +02:00
phf
06962cb4e6 FIX : tool export handle the type "select" extrafields and return the value instead of id 2015-06-23 16:26:05 +02:00
Laurent Destailleur
bd4d108217 Merge pull request #3058 from fmarcet/3.5
Fix: Date filter on customer orders
2015-06-17 00:19:03 +02:00
fmarcet
05cb1f7ba7 Fix: Date filter on customer orders 2015-06-16 16:59:48 +02:00
Laurent Destailleur
34468644ef Merge remote-tracking branch 'origin/3.5' into 3.6 2015-06-16 11:15:16 +02:00
Laurent Destailleur
fa8defa1bf Merge pull request #3034 from marcosgdf/bug-2814-2
Fix #2814 JPEG photos are not displayed in Product photos page
2015-06-16 11:10:24 +02:00
Marcos García de La Fuente
2d3ab3b658 Merge remote-tracking branch 'upstream/3.5' into bug-2814-2
Conflicts:
	ChangeLog
2015-06-15 09:39:17 +02:00
Laurent Destailleur
f4da53c300 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/product/liste.php
	htdocs/product/price.php
2015-06-14 17:04:24 +02:00
Laurent Destailleur
1007aba6a9 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-14 17:02:11 +02:00
Laurent Destailleur
14a8a2269b FIX End log must use same level then start log. 2015-06-14 16:59:35 +02:00
Laurent Destailleur
1fc4716617 Merge branch 'marcosgdf-bug-2835' into 3.5 2015-06-14 16:07:38 +02:00
Laurent Destailleur
fadc640335 Merge branch 'bug-2835' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-2835

Conflicts:
	ChangeLog
2015-06-14 16:07:19 +02:00
Laurent Destailleur
c4ff9c326a Merge branch 'marcosgdf-bug-2837' into 3.5 2015-06-14 16:06:24 +02:00
Laurent Destailleur
d0b2c492a0 Merge branch 'bug-2837' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-2837

Conflicts:
	ChangeLog
2015-06-14 16:06:14 +02:00
Laurent Destailleur
288ae5de78 Merge branch 'marcosgdf-bug-2861' into 3.5 2015-06-14 16:04:02 +02:00
Laurent Destailleur
e915a54c39 Merge branch 'bug-2861' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-2861

Conflicts:
	ChangeLog
2015-06-14 16:03:44 +02:00
Laurent Destailleur
f8d2e93878 Merge pull request #3044 from hregis/3.5_bug
Fix: select date problem with mobile device (#3039)
2015-06-14 15:29:35 +02:00
Regis Houssin
b96ed08260 Fix: select date problem with mobile device (#3039) 2015-06-14 12:46:27 +02:00
Regis Houssin
cf857b712a Fix: select date problem with mobile device (#3039) 2015-06-14 12:33:26 +02:00
Laurent Destailleur
fdced80a48 Merge pull request #3035 from marcosgdf/bug-2786
FIX #2786 Objectline_add template shows "0" for non-vat suppliers
2015-06-14 02:15:27 +02:00
Laurent Destailleur
a9bf38b8d3 Merge pull request #3022 from marcosgdf/bug-2976
FIX Close bug #2976: "Report" tab is the current tab but it is not marked as selected by the UI
2015-06-14 02:03:39 +02:00
Laurent Destailleur
f67af6dac5 Merge pull request #3026 from marcosgdf/bug-2891
FIX Close bug #2891 Category hooks do not work
2015-06-14 01:40:12 +02:00
Marcos García de La Fuente
ea625628ce Fix Close bug #2786 Objectline_add template shows "0" for non-vat suppliers 2015-06-13 03:39:06 +02:00
Marcos García de La Fuente
1215502927 Fix Close bug #2814 JPEG photos are not displayed in Product photos page 2015-06-13 03:11:17 +02:00
Juanjo Menent
ab3190df25 Merge pull request #3010 from GPCsolutions/3.6-3009
FIX #3009: Better filtering to prevent SQL injection
2015-06-12 21:25:53 +02:00
Marcos García de La Fuente
f9574fa458 FIX Close #2835 Customer prices of a product shows incorrect history order 2015-06-12 19:05:08 +02:00
Marcos García de La Fuente
2051a66cd7 FIX Close #2837 Product list table column header does not match column body 2015-06-12 18:46:05 +02:00
Marcos García de La Fuente
e3aa63f3c3 Added log 2015-06-12 18:33:37 +02:00
Marcos García de La Fuente
0335892521 FIX Close bug #2861 Undefined variable $res when migrating from 3.6.2 to 3.7.0 2015-06-12 18:31:49 +02:00
Marcos García de La Fuente
300cfd2293 FIX Close bug #2891 Category hooks do not work 2015-06-12 16:10:23 +02:00
Marcos García de La Fuente
87a00d6924 FIX Close bug #2976: "Report" tab is the current tab but it is not marked as selected by the UI 2015-06-12 15:02:05 +02:00
Florian HENRY
96ce5ab617 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-11 12:11:18 +02:00
Raphaël Doursenaud
d89955047b FIX #3009: Better filtering to prevent SQL injection 2015-06-11 10:37:30 +02:00
Laurent Destailleur
f9d85973aa Merge remote-tracking branch 'origin/3.5' into 3.6 2015-06-08 18:18:37 +02:00
Laurent Destailleur
fd42b17027 Merge pull request #2984 from GPCsolutions/dolibarr-2983
FIX #2983 Load gravatar avatar images securely over HTTPS
2015-06-08 17:53:30 +02:00
Raphaël Doursenaud
08c9dd358d FIX #2983 Load gravatar avatar images securely over HTTPS 2015-06-08 15:51:41 +02:00
Florian HENRY
ca44070bbe Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-08 15:13:02 +02:00
Laurent Destailleur
3c8d54d55f Merge pull request #2938 from FHenry/3.6
FIX : If supplier invoice block linked element is display after other  block total HT amount is not reset to 0 and sum other block (like customer orders values)
2015-06-05 15:43:25 +02:00
Laurent Destailleur
d138e441f8 Merge pull request #2964 from atm-maxime/3.6
Fix : supplier order clone was buggy if notes contains apostrophe
2015-06-05 15:42:16 +02:00
Maxime Kohlhaas
f7493de50c Fix : supplier order clone was buggy if notes contains apostrophe 2015-06-05 13:42:29 +02:00
Florian HENRY
d0a1d2c3a5 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-05 09:38:10 +02:00
Laurent Destailleur
15060d973c Merge pull request #2958 from jfefe/patch-8
FIX #2957 : missing $langs object for trigger
2015-06-05 09:18:25 +02:00
jfefe
195a1b2708 FIX #2957 : missing $langs object for trigger 2015-06-04 18:10:29 +02:00
Florian HENRY
fb29fa486a FIX : total amount in tpl linked object are not reset 2015-06-02 11:20:08 +02:00
Florian HENRY
bdaf83a653 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-06-02 08:42:13 +02:00
Florian HENRY
3f1613197e FIX : If supplier invoice block linked element is display after other
block total HT amount is not reset to 0 and sum other block (like
customer orders values)
2015-06-02 08:41:42 +02:00
Laurent Destailleur
a60ab7dd29 Merge pull request #2912 from atm-ph/fix_36_reassort_target
FIX top links menu have target attribute with wrong value
2015-05-30 15:06:46 +02:00
Laurent Destailleur
4324ed82b3 Merge pull request #2878 from atm-alexis/fix_multientity_num_check
FIX when multicompany was enabled, isExistingObject check wrong
2015-05-29 17:16:32 +02:00
Alexis Algoud
148c36c9d3 Merge branch 'fix_multientity_num_check' of github.com:atm-alexis/dolibarr into fix_multientity_num_check
Conflicts:
	htdocs/core/class/commonobject.class.php
2015-05-29 15:12:31 +02:00
Alexis Algoud
dd7febe2b9 replace test by getEntity() 2015-05-29 15:10:59 +02:00
Alexis Algoud
ab0f805044 Merge branch '3.6' of https://github.com/Dolibarr/dolibarr into fix_multientity_num_check 2015-05-29 15:09:04 +02:00
phf
5a006d824e FIX : top links menu have target attribute with wrong value 2015-05-27 10:52:23 +02:00
Laurent Destailleur
a33809a526 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/adherents/liste.php
	htdocs/comm/propal.php
	htdocs/compta/facture.php
2015-05-25 17:46:42 +02:00
Alexis ALGOUD
44c46d68ed Remove the useless if 2015-05-23 23:51:49 +02:00
Alexis Algoud
91885c9d6f FIX when multicompany was enabled, this function didn't check just on the good entity (problem when both company use same mask) 2015-05-22 17:22:57 +02:00
Laurent Destailleur
0b40502878 Merge branch '3.5' of git@github.com:Dolibarr/dolibarr.git into 3.5 2015-05-22 17:14:53 +02:00
Laurent Destailleur
dcc197eb6b Fix bug debian 786479 2015-05-22 17:13:32 +02:00
Laurent Destailleur
2f5d1f5965 Merge pull request #2842 from atm-alexis/fix_email_cc_in_selectlist_on_propal
Fix email cc in selectlist on propal/bill
2015-05-22 16:56:53 +02:00
Laurent Destailleur
4de46892d1 Merge pull request #2872 from atm-alexis/fix_button_create_payment_on_social_tax_less_than_1euro
FIX button create payment hide if tax amount is less than 1
2015-05-22 16:53:49 +02:00
Laurent Destailleur
9c9afc0a93 Merge pull request #2876 from atm-maxime/3.6
Fix : facturestats was not filtering on invoice type
2015-05-22 16:52:34 +02:00
Maxime Kohlhaas
ff6708840d Fix : facturestats was not filtering on invoice type 2015-05-22 09:23:28 +02:00
Alexis Algoud
81a919e8a3 round to price2num 2015-05-22 09:05:38 +02:00
Laurent Destailleur
8244d1bd44 Merge pull request #2869 from atm-alexis/fix_event_for_user_restricted_if_no_company
FIX event for restricted user was restricted if company null
2015-05-21 21:25:20 +02:00
Laurent Destailleur
f32215a9fc Merge pull request #2866 from GPCsolutions/3.5-2857
Properly escape untrusted data to prevent HTML injection.
2015-05-21 21:10:02 +02:00
Alexis Algoud
9184b08f94 FIX button create payment hide if tax amount is less than 1 2015-05-21 16:51:21 +02:00
Alexis Algoud
bc672c2c23 FIX event for restricted user was restricted if company null 2015-05-21 11:49:10 +02:00
Raphaël Doursenaud
a7f6bbd316 Properly escape untrusted data to prevent HTML injection.
First pass for #2857
2015-05-20 17:34:00 +02:00
Laurent Destailleur
439b416daf Merge pull request #2846 from fappels/3.6
Fix: SQL error in facturestats on no view rights
2015-05-20 15:26:09 +02:00
Francis Appels
40ef5737fc Fix: SQL error in facturestats on no view rights
table alias sc must be available when user has no rights to view
customers. see where defenition line 80
2015-05-19 16:34:21 +02:00
Alexis Algoud
a4031a3680 if contact in sellist, it's an Id 2015-05-18 18:33:17 +02:00
Laurent Destailleur
a4df49f6c8 Prepare packaging 2015-05-16 17:04:36 +02:00
Laurent Destailleur
5b00ba11fd Prepare packaging 2015-05-16 16:54:54 +02:00
Laurent Destailleur
cabbb9e421 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	build/debian/changelog
	build/exe/doliwamp/doliwamp.iss
	build/makepack-dolibarr.pl
	build/rpm/dolibarr_fedora.spec
	build/rpm/dolibarr_generic.spec
	build/rpm/dolibarr_mandriva.spec
	build/rpm/dolibarr_opensuse.spec
	htdocs/filefunc.inc.php
2015-05-16 16:49:03 +02:00
Laurent Destailleur
e8fb89f89f Prepare packaging 3.7 2015-05-16 16:38:47 +02:00
Laurent Destailleur
4dcdea5219 Prepare package 3.5.7
Removed hardcoded version from rpm spec files, so it will not be
necessary to update this files when making a new release.
2015-05-16 16:08:05 +02:00
Laurent Destailleur
1d8a3809f0 Merge branch '3.5' of git@github.com:Dolibarr/dolibarr.git into 3.5 2015-05-16 15:27:18 +02:00
Laurent Destailleur
80943111cc Prepare 3.5.7 2015-05-16 15:26:34 +02:00
Alexis Algoud
3dc5ffa871 FIX send mail, copy sendto don't read the list of contact 2015-05-13 18:05:26 +02:00
Laurent Destailleur
f8e8fe6f34 Merge pull request #2816 from marcosgdf/bug-2757
Close bug #2757 Deleting product category photo gives "Forbidden access" error
2015-05-12 22:36:33 +02:00
Marcos García de La Fuente
190f12c4c4 Merge branch '3.5' into bug-2757
Conflicts:
	ChangeLog
2015-05-12 10:16:48 +02:00
Marcos García de La Fuente
ea7eb241e3 Close bug #2757 Deleting product category photo gives "Forbidden access" error 2015-05-12 10:15:43 +02:00
Laurent Destailleur
973e2253bf Merge pull request #2797 from hregis/3.6
Fix: add $object for use with triggers
2015-05-12 00:14:22 +02:00
Laurent Destailleur
2a486f471b Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/product/class/product.class.php
2015-05-11 23:39:45 +02:00
Laurent Destailleur
5f594d55ac Merge pull request #2805 from marcosgdf/bug-2758
FIX #2758 Product::update sets product note to "null" when $prod->note is null
2015-05-11 23:00:25 +02:00
Marcos García de La Fuente
f6616deef3 Removed debugging function 2015-05-10 01:28:40 +02:00
Marcos García de La Fuente
f8e8b39ff2 FIX #2758 Product::update sets product note to "null" when $prod->note is null 2015-05-10 01:27:28 +02:00
Juanjo Menent
b7228e191c Merge pull request #2801 from FHenry/3.6
FIX : [ bug #1926 ] [contract] Wrong Rights Checked
2015-05-07 20:21:05 +02:00
Florian HENRY
5395465cfd Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-05-07 17:24:51 +02:00
Florian HENRY
29f562460a fix [ bug #1926 ] [contract] Wrong Rights Checked 2015-05-07 17:23:32 +02:00
Regis Houssin
9a32d7ec2f Fix: add $object for use with triggers 2015-05-07 12:02:24 +02:00
Regis Houssin
c976d32e7d Merge remote-tracking branch 'dolibarr/3.6' into 3.6 2015-05-07 11:46:05 +02:00
Regis Houssin
1b56144cb8 Revert "Fix: use global $object instead parameter"
This reverts commit 179309710c.
2015-05-07 11:41:14 +02:00
Juanjo Menent
5d65d666f7 Merge pull request #2778 from atm-maxime/3.6
Fix : shipment PDF was not using generation params
2015-05-06 21:00:49 +02:00
Regis Houssin
179309710c Fix: use global $object instead parameter 2015-05-06 16:44:47 +02:00
Maxime Kohlhaas
42455f771a Missing comments 2015-05-06 12:43:41 +02:00
Maxime Kohlhaas
d2603d5308 Fix : shipment was not considered as billed after classifybilled function 2015-05-06 12:39:10 +02:00
Maxime Kohlhaas
b203263e91 Fix : shipment PDF was not using generation params 2015-05-06 12:16:36 +02:00
Raphaël Doursenaud
a6b0f6cfac Allow exporting projects without a third party
FIX #2729
2015-05-01 15:56:39 +02:00
Juanjo Menent
6309d2133f Merge pull request #2731 from GPCsolutions/dolibarr-2729
Allow exporting projects without a third party
2015-05-01 15:55:40 +02:00
Raphaël Doursenaud
f1032baaab Allow exporting projects without a third party
FIX #2729
2015-04-30 11:48:32 +02:00
Laurent Destailleur
43efd76b24 Fix remove warnings 2015-04-29 23:39:34 +02:00
Laurent Destailleur
7419319c0f Protection into packager 2015-04-29 22:39:42 +02:00
Laurent Destailleur
290856db1c Fix remove warning 2015-04-29 22:37:04 +02:00
Juanjo Menent
cfaaf56428 Change bugtracker to github in all maintened versions 2015-04-27 20:34:26 +02:00
Laurent Destailleur
fdd34c582c Merge pull request #2665 from atm-maxime/3.6
Fix : include facture class for outstanding bill
2015-04-19 00:59:21 +02:00
Maxime Kohlhaas
5a66e1f98a Fix : include facture class for outstanding bill 2015-04-19 00:26:05 +02:00
Laurent Destailleur
ab77158757 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/expedition/fiche.php
2015-04-18 23:55:17 +02:00
Laurent Destailleur
b8c512a3d5 Merge branch '3.5' of github.com:Dolibarr/dolibarr into 3.5 2015-04-18 23:34:42 +02:00
Laurent Destailleur
be9ddb7748 Merge pull request #2595 from marcosgdf/bug-2576
Close #2576 Bug: Unable to edit a dictionary entry that has # in its ref
2015-04-18 22:24:21 +02:00
Marcos García de La Fuente
37d8dafd40 Merge branch '3.5' into bug-2576
Conflicts:
	ChangeLog
2015-04-18 21:44:24 +02:00
Laurent Destailleur
4de4c66bb7 git push origin 3.5Merge branch 'marcosgdf-bug-2576' into 3.5 2015-04-18 20:56:40 +02:00
Laurent Destailleur
ed6abb0f79 Merge branch 'bug-2576' of https://github.com/marcosgdf/dolibarr into marcosgdf-bug-2576
Conflicts:
	ChangeLog
2015-04-18 20:56:27 +02:00
Laurent Destailleur
e49a46a386 Merge pull request #2653 from atm-maxime/3.6
Fix : menu financial was not displayed when only supplier module is acti...
2015-04-18 20:30:24 +02:00
Laurent Destailleur
5f49b2a9bb git push origin 3.5Merge branch 'marcosgdf-bug-2577' into 3.5 2015-04-18 20:12:49 +02:00
Laurent Destailleur
b7cf0ded00 Merge branch 'bug-2577' of https://github.com/marcosgdf/dolibarr into marcosgdf-bug-2577
Conflicts:
	ChangeLog
2015-04-18 20:12:27 +02:00
Maxime Kohlhaas
7b035d3b5f Fix : menu financial was not displayed when only supplier module is activated 2015-04-18 20:11:19 +02:00
Laurent Destailleur
b75722d450 git push origin 3.5Merge branch 'marcosgdf-bug-2583' into 3.5 2015-04-18 20:10:41 +02:00
Laurent Destailleur
9b69b64626 Merge branch 'bug-2583' of https://github.com/marcosgdf/dolibarr into marcosgdf-bug-2583
Conflicts:
	ChangeLog
2015-04-18 20:10:06 +02:00
Laurent Destailleur
4201cf9f7f Merge pull request #2638 from atm-maxime/fix_cust_outstanding
Fix cust outstanding
2015-04-18 18:56:23 +02:00
Laurent Destailleur
7375256b99 Merge pull request #2643 from atm-maxime/3.6
Fix : price in editkeyval function was forcing a price rounding
2015-04-18 18:49:40 +02:00
Maxime Kohlhaas
51522decf3 Fix : price in editkeyval function was forcing a price rounding 2015-04-18 18:33:46 +02:00
Maxime Kohlhaas
8b307aac56 Fix : customer outstanding was not calculated properly 2015-04-18 18:06:27 +02:00
Maxime Kohlhaas
e0af2feced Fix : on impayees remain to pay did not include deposits 2015-04-18 18:06:02 +02:00
Laurent Destailleur
0000043c96 Merge pull request #2629 from atm-maxime/3.5_fix_shipment_model
Fix : shipment model selection
2015-04-18 15:23:52 +02:00
Maxime Kohlhaas
2b8efc302a Fix : shipment model selection 2015-04-18 11:24:55 +02:00
Laurent Destailleur
ae41d38a96 Merge pull request #2616 from atm-maxime/3.6
Fix : discount were not working anymore on supplier order and bill
2015-04-18 03:34:14 +02:00
Maxime Kohlhaas
3073aab48b Fix : discount were not working anymore on supplier order and bill 2015-04-17 23:31:51 +02:00
Laurent Destailleur
0b6c3cada3 Merge pull request #2608 from GPCsolutions/3.6-2607
Fixed typo in task export
2015-04-14 20:02:41 +02:00
Raphaël Doursenaud
54b8aa8a0b Fixed typo in task export
Closes #2607, #2609
2015-04-14 19:14:16 +02:00
Laurent Destailleur
c0ddfbfab7 Merge pull request #2597 from marcosgdf/bug-1906
Fixes for bugs #1906 and #1905
2015-04-13 01:04:23 +02:00
Marcos García de La Fuente
8f0c41dbd2 Fix: [ bug #1905 ] Custom deplacement types do not get translated in deplacement card 2015-04-12 22:02:25 +02:00
Marcos García de La Fuente
6173706531 Fix: [ bug #1906 ] Deplacement does not allow translated decimal format 2015-04-12 21:55:20 +02:00
Marcos García de La Fuente
9cfb295675 Fix: Bug #2576 Unable to edit a dictionary entry that has # in its ref 2015-04-12 21:05:26 +02:00
Marcos García de La Fuente
bbd01c0c8d Fix: Bug #2577 Incorrect invoice status in "Linked objects" page of a project 2015-04-12 20:59:58 +02:00
Marcos García de La Fuente
728b64e334 Fix Bug #2583: Unable to create a bank transfer with localized numbers 2015-04-12 20:24:22 +02:00
Laurent Destailleur
aba83b6467 Merge pull request #2585 from aspangaro/3.6
Fix #2582 - Untranslated table header in /compta/bank/search.php
2015-04-09 21:37:53 +02:00
aspangaro
1f5ca497d3 Bug: Untranslated table header in /compta/bank/search.php 2015-04-09 20:50:19 +02:00
Laurent Destailleur
0e2bc5608d Merge pull request #2578 from braito4/patch-1
minor bug drag and drop total line in tasks list
2015-04-09 18:30:59 +02:00
braito4
914b324a67 minor bug drag and drop total line in tasks list 2015-04-09 10:37:54 +02:00
Laurent Destailleur
bb83eb0f68 Merge pull request #2561 from frederic34/patch-5
Fix #2559 Bug: Untranslated "Total" in Bank module
2015-04-07 23:50:17 +02:00
Juanjo Menent
9d8cb459f1 Fix: Bad permission assignments for stock movements actions 2015-04-07 20:28:45 +02:00
Juanjo Menent
35a6ed90a0 Solves #2542 Bug: Contracts store localtax preferences 2015-04-07 20:02:12 +02:00
Juanjo Menent
345b609ff0 Closes #2545 Bug: Missing object_margin.png in Amarok theme 2015-04-07 18:41:40 +02:00
Frédéric FRANCE
06c749942a Update index.php 2015-04-07 18:40:19 +02:00
Frédéric FRANCE
7a2942684c Fix #2559 Bug: Untranslated "Total" in Bank module 2015-04-07 12:45:25 +02:00
Laurent Destailleur
6afde94acf git push origin 3.6Merge branch 'marcosgdf-bug-2535' into 3.6 2015-04-06 12:52:49 +02:00
Laurent Destailleur
a42eb7b787 Merge branch 'bug-2535' of https://github.com/marcosgdf/dolibarr into marcosgdf-bug-2535
Conflicts:
	ChangeLog
2015-04-06 12:52:33 +02:00
Laurent Destailleur
a92c8ccbd5 git push origin 3.6Merge branch 'marcosgdf-bug-2534' into 3.6 2015-04-06 12:49:12 +02:00
Laurent Destailleur
8ce66aad79 Merge branch 'bug-2534' of https://github.com/marcosgdf/dolibarr into marcosgdf-bug-2534
Conflicts:
	ChangeLog
2015-04-06 12:48:55 +02:00
Laurent Destailleur
d8b50722f3 Merge pull request #2548 from marcosgdf/bug-2540
Close #2540 Bug: Incorrect HTML in "Bank account" tab of a Thirdparty
2015-04-06 12:41:38 +02:00
Laurent Destailleur
f9608bf41d Merge pull request #2547 from marcosgdf/bug-2543
Closes #2543: Untranslated "Contract" origin string when creating an invoice from a contract
2015-04-06 12:38:54 +02:00
Laurent Destailleur
54645f0a3b Merge pull request #2555 from FHenry/3.6
FIX : [ bug #1916 ] uniformize icon status4 in theme bureau2crea
2015-04-06 12:26:59 +02:00
Marcos García de La Fuente
5c8e92d52a Closes #2535 Bug: Untranslated string in "Linked objects" page of a project 2015-04-04 17:52:05 +02:00
Marcos García de La Fuente
50091dfe8b Closes #2534 SQL error when editing a supplier invoice line 2015-04-04 17:44:52 +02:00
Marcos García de La Fuente
611406b75e Closes #2540 Bug: Incorrect HTML in "Bank account" tab of a Thirdparty 2015-04-04 17:34:06 +02:00
Marcos García de La Fuente
65f4a818d4 Merge branch '3.6' into bug-2543 2015-04-04 17:29:17 +02:00
Marcos García de La Fuente
40860a84d1 Closes #2543: Untranslated "Contract" origin string when creating an invoice from a contract 2015-04-04 17:28:24 +02:00
Florian HENRY
092dd38851 FIX : [ bug #1916 ] problème d'icone pour l'état "clos" sur les projets 2015-04-03 15:33:41 +02:00
Florian HENRY
dfe4837dbc Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-04-03 09:20:35 +02:00
Laurent Destailleur
f38212f20e Merge pull request #2508 from FHenry/3.6
FIX : [ bug #1913 ] [EXPORT] [PGSQL] Bug when filtering export on a specific year
2015-04-02 11:22:18 +02:00
Florian HENRY
104bbfdc1c Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-03-30 19:14:49 +02:00
Florian HENRY
65ec02bae1 FIX : [ bug #1913 ] [EXPORT] [PGSQL] Bug when filtering export on a
specific year
2015-03-30 19:13:55 +02:00
Laurent Destailleur
fd8d09c8c0 Fix avoid warning 2015-03-29 17:53:05 +02:00
Laurent Destailleur
b5690142aa Prepare 3.6.3 2015-03-29 16:26:31 +02:00
Laurent Destailleur
253955dc31 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-03-28 17:13:05 +01:00
Laurent Destailleur
ffe1ee0d84 Target 98 to publish of dolibarr sevrer is now working 2015-03-28 17:12:31 +01:00
Laurent Destailleur
d0e4d8046b Merge pull request #2480 from marcosgdf/minor-2
Corrected search box alignment in Customer orders list
2015-03-27 01:09:06 +01:00
Laurent Destailleur
78638a30cd Merge pull request #2477 from atm-maxime/3.6
Fix : Quantity displayed for virtual stock explanations was wrong
2015-03-27 01:01:37 +01:00
Marcos García de La Fuente
e59fed9f38 Corrected search box alignment in Customer orders list 2015-03-26 11:08:34 +01:00
Maxime Kohlhaas
b250c5588e Fix : Quantity displayed for virtual stock explanations was wrong 2015-03-25 16:11:36 +01:00
Laurent Destailleur
2a4687834d Merge pull request #2474 from netfab/3.6
Fix displaying of the warning image.
2015-03-23 23:26:09 +01:00
Fab
ea7f00e777 Fix displaying of the warning image.
Since last commit, $objp->date_livraison returns nothing ; max() will
then returns wrong result, and the warning image will be displayed when it
should not.
2015-03-23 20:05:31 +01:00
Laurent Destailleur
b52ee1d069 Merge pull request #2465 from marcosgdf/bug-delivery_date
Fixed delivery date in order list not showing up
2015-03-21 01:24:17 +01:00
Marcos García de La Fuente
56295ed438 Fixed delivery date in order list not showing up 2015-03-20 11:28:23 +01:00
Laurent Destailleur
c4ff66c5d7 Merge remote-tracking branch 'origin/3.5' into 3.6 2015-03-14 13:46:18 +01:00
Laurent Destailleur
a9eebb33fd Merge branch '3.5' of git@github.com:Dolibarr/dolibarr.git into 3.5 2015-03-14 13:45:27 +01:00
Laurent Destailleur
89b22be063 FIXED: Allowed 0 to be used as an account mask. Required by CEGID. 2015-03-14 13:44:26 +01:00
Laurent Destailleur
da72cf387b Merge pull request #2451 from Dolibarr/revert-2318-3.5-accountingmask
Revert "FIXED Allowed 0 to be used as an account mask"
2015-03-14 13:43:04 +01:00
Laurent Destailleur
4a9a3ab04b Revert "FIXED Allowed 0 to be used as an account mask" 2015-03-14 13:42:58 +01:00
Laurent Destailleur
da042c1677 Merge pull request #2318 from GPCsolutions/3.5-accountingmask
FIXED Allowed 0 to be used as an account mask
2015-03-14 13:42:46 +01:00
Juanjo Menent
7cab558ed2 Fix: Showing system error if not enough stock of product into orders
creation with lines
2015-03-14 09:44:58 +01:00
Laurent Destailleur
41b09d8c70 Merge pull request #2448 from atm-maxime/3.6
Fix : display proposal date on proposal list
2015-03-11 02:50:26 +01:00
Laurent Destailleur
242a71e967 Merge pull request #2436 from marcosgdf/patch-1
Update ChangeLog
2015-03-11 02:31:24 +01:00
Laurent Destailleur
734a7dd5c7 Merge pull request #2443 from biznext/patch-4
Fix Anchor link for quick access when editing.
2015-03-11 02:13:29 +01:00
Laurent Destailleur
f484abe5ec Merge pull request #2446 from GPCsolutions/3.6-#1901
FIXED #1901: Inverted supplier order/invoice buttons in project referring objects
2015-03-11 02:12:01 +01:00
Maxime Kohlhaas
05a2a6af00 FIX : [bug #1900] Unable to remove a salary with enough permissions 2015-03-10 15:53:02 +01:00
Maxime Kohlhaas
154e1a7991 Merge branch '3.6' of github.com:Dolibarr/dolibarr into 3.6 2015-03-10 15:14:25 +01:00
Maxime Kohlhaas
978dc8170d Fix : display proposal date on proposal list 2015-03-10 14:56:58 +01:00
Raphaël Doursenaud
f8dfa61859 FIXED #1901: Inverted supplier order/invoice buttons in project referring objects 2015-03-09 16:20:51 +01:00
Estephe L.
9d320e4268 Fix Anchor link for quick access when editing.
This is a quick fix to make anchor link works well when editing a proposal, order or invoice ...
2015-03-08 23:29:09 +01:00
Marcos García
9a7346f889 Update ChangeLog 2015-03-06 12:09:23 +01:00
Laurent Destailleur
5f9f536f0b Merge pull request #2417 from marcosgdf/bug-1892
[ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment
2015-03-04 22:01:37 +01:00
Laurent Destailleur
4e144b6b76 Merge pull request #2416 from marcosgdf/bug-1825
Fixed bug with hide/show checkboxes reported by Ruben Almeida (aruben)
2015-03-04 20:38:47 +01:00
Marcos García de La Fuente
41c55d1913 Better fix for bug-1825. There are actually a lot to things to escape and escaped methods can make conflict with similar names so it is better to make a md5 to have a unique value 2015-03-04 11:55:17 +01:00
Marcos García de La Fuente
77605bce3e [ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment 2015-03-02 13:33:31 +01:00
Marcos García de La Fuente
7876238823 Fixed bug with hide/show checkboxes reported by Ruben Almeida (aruben)
When an external calendar was called "mytasks", Dolibarr events were also hidden too.
2015-03-02 01:36:27 +01:00
Laurent Destailleur
a421564b84 Fix phpcs 2015-03-01 13:52:58 +01:00
Juanjo Menent
7ca8fdb20c PHP norms 2015-02-27 17:58:19 +01:00
Juanjo Menent
bfe9bf7a47 Fix: Bad SEPA xml file creation 2015-02-27 17:55:15 +01:00
Laurent Destailleur
72da9b52af Merge pull request #2380 from marcosgdf/bug-1825
Better fix for bug 1825
2015-02-24 17:07:17 +01:00
Laurent Destailleur
d9ab05833f Merge pull request #2370 from braito4/patch-1
[FIX #1833] Permissions in contact/note.php wrong
2015-02-20 23:31:55 +01:00
Laurent Destailleur
29c39d61fb Merge branch 'marcosgdf-bug-1790' into 3.6 2015-02-20 23:24:05 +01:00
Laurent Destailleur
56635cea98 Merge branch 'bug-1790' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1790

Conflicts:
	ChangeLog
2015-02-20 23:23:57 +01:00
Laurent Destailleur
bd6b465ee1 Add phpunit for ie11 and ie10 2015-02-20 20:16:15 +01:00
Laurent Destailleur
e1e31de229 Merge remote-tracking branch 'origin/3.5' into 3.6 2015-02-20 20:15:04 +01:00
Laurent Destailleur
d549c00b2e Merge pull request #2365 from marcosgdf/3.5
Fix: [ bug #1846 ] Browser IE11 not detected
2015-02-20 20:02:11 +01:00
Marcos García de La Fuente
d46c76311c Correction 2015-02-20 10:23:17 +01:00
Marcos García de La Fuente
3a917a0d1f Merge branch '3.6' into bug-1825 2015-02-20 10:19:08 +01:00
Marcos García de La Fuente
fd18aa8717 Better fix for Bug #1825 2015-02-20 10:17:02 +01:00
Laurent Destailleur
cb32dbc7b8 Merge branch 'marcosgdf-bug-1825' into 3.6 2015-02-19 09:47:35 +01:00
Laurent Destailleur
639aaebacb Merge branch 'bug-1825' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1825

Conflicts:
	ChangeLog
2015-02-19 09:47:22 +01:00
Laurent Destailleur
ec56667f5e Fix: [ bug #1849 ] Broken flag image when a contact does not have a
country set
2015-02-19 09:44:22 +01:00
Laurent Destailleur
d1a4b6c2c5 phpcs 2015-02-19 00:04:35 +01:00
Laurent Destailleur
e7d95f553b Merge remote-tracking branch 'origin/3.5' into 3.6 2015-02-18 23:43:22 +01:00
Laurent Destailleur
ceb3920381 Merge pull request #2346 from aaujon/3.6-webservice-order
fix typo in createOrder
2015-02-18 23:00:06 +01:00
Laurent Destailleur
9ebd79f528 Merge branch 'marcosgdf-bug-1830' into 3.6 2015-02-18 22:50:25 +01:00
Laurent Destailleur
ead6b4bf95 Merge branch 'bug-1830' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1830

Conflicts:
	ChangeLog
2015-02-18 22:50:12 +01:00
Laurent Destailleur
231c3f57d3 Merge pull request #2342 from aspangaro/3.6
FIXED Correct typo on Changelog
2015-02-18 22:47:03 +01:00
Laurent Destailleur
50142a1e6c Merge branch 'bug-1826' of https://github.com/marcosgdf/dolibarr into
3.6

Conflicts:
	ChangeLog
2015-02-18 22:46:24 +01:00
Laurent Destailleur
fc415fc3c9 Fix: [ bug #1826 ] Supplier payment types are not translated in
fourn/facture/paiement.php
2015-02-18 22:44:42 +01:00
Laurent Destailleur
f831bdd231 Merge branch 'marcosgdf-bug-1832' into 3.6 2015-02-18 22:41:53 +01:00
Laurent Destailleur
6d25cf6f6a Merge branch 'bug-1832' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1832

Conflicts:
	ChangeLog
2015-02-18 22:41:32 +01:00
Laurent Destailleur
8f339712ab Merge pull request #2338 from aaujon/3.6-webservice-product-barcode
FIXED : product webservice can now save barcode
2015-02-18 22:24:20 +01:00
Laurent Destailleur
89b9364837 Merge pull request #2337 from marcosgdf/bug-1822
Fix: [ bug #1822 ] SQL error in clientfourn.php report with PostgreSQL
2015-02-18 22:23:07 +01:00
Laurent Destailleur
9eb26c66de Merge pull request #2336 from atm-maxime/3.6
FIX : Link to user was wrong on bank transaction card
2015-02-18 22:22:46 +01:00
Laurent Destailleur
9f8bee3501 Merge pull request #2331 from altatof/fix_natural_search
FIX: select DISTINCT for natural search on proposal list (in the same way it's done in invoices list)
2015-02-18 22:16:43 +01:00
braito4
ca64763440 Update note.php
Error in the security check
2015-02-17 18:09:16 +01:00
Maxime Kohlhaas
0a1ade22c8 Merge branch '3.6' of github.com:Dolibarr/dolibarr into 3.6 2015-02-17 15:15:46 +01:00
Marcos García de La Fuente
3efb737cbf Fix: [ bug #1845 ] Undefined "$conf->browser->ie" var in "functions.lib.php" 2015-02-16 12:30:10 +01:00
Marcos García de La Fuente
6f08893016 Fix: [ bug #1846 ] Browser IE11 not detected 2015-02-16 12:26:20 +01:00
Marcos García de La Fuente
0a81fe667f Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work 2015-02-16 10:44:10 +01:00
Marcos García de La Fuente
5db4bb68a4 Updated bug name 2015-02-15 16:00:07 +01:00
Marcos García de La Fuente
2c074a94f3 Fix: [ bug #1790 ] Sending a test mail from admin page, gives "File already exists" error 2015-02-15 15:57:38 +01:00
Laurent Destailleur
6189db677d Fix package .exe 2015-02-14 11:25:26 +01:00
Laurent Destailleur
039a184d70 Merge remote-tracking branch 'origin/3.5' into 3.6
Conflicts:
	htdocs/core/tpl/objectline_edit.tpl.php
2015-02-10 21:13:12 +01:00
Raphaël Doursenaud
7dea799a9e FIXED Allowed 0 to be used as an account mask
0 is used by some accounting systems and software.
2015-02-10 17:18:32 +01:00
Arnaud Aujon Chevallier
863c1f7a13 fix typo in createOrder 2015-02-10 13:21:36 +01:00
Marcos García de La Fuente
6531a5c6c7 Fix: [ bug #1830 ] Salaries payment only allows checking accounts 2015-02-10 09:44:27 +01:00
aspangaro
f1d5e1ba7b FIXED Correct typo on Changelog 2015-02-10 07:14:55 +01:00
Marcos García de La Fuente
a9dc6bb3d7 Fix: [ bug #1826 ] Supplier payment types are not translated in fourn/facture/paiement.php 2015-02-10 00:55:22 +01:00
Marcos García de La Fuente
58a61e1294 Changed int typecast to float 2015-02-10 00:23:32 +01:00
Marcos García de La Fuente
949f9e40a0 Fix: [ bug #1832 ] SQL error when adding a product with no price defined to an object 2015-02-10 00:20:47 +01:00
Arnaud Aujon Chevallier
5747dbfe9b FIXED : product webservice can now save barcode 2015-02-09 13:55:43 +01:00
Marcos García de La Fuente
d9ac21ab82 Fix: [ bug #1822 ] SQL error in clientfourn.php report with PostgreSQL 2015-02-08 16:54:41 +01:00
Maxime Kohlhaas
db9d727eb8 FIX : Link to user was wrong on bank transaction card 2015-02-08 12:36:55 +01:00
Laurent Destailleur
07877bc381 Merge branch 'marcosgdf-bug-1827' into 3.6 2015-02-07 23:57:13 +01:00
Laurent Destailleur
e8b2b22c32 Merge branch 'bug-1827' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1827

Conflicts:
	ChangeLog
2015-02-07 23:56:38 +01:00
Laurent Destailleur
d10e28db36 Merge pull request #2326 from aaujon/3.6-webservice-order
FIXES Webservice : fk_delivery_address not saved
2015-02-07 23:49:31 +01:00
Laurent Destailleur
6eb0d34032 Merge pull request #2325 from aaujon/3.6-webservices-contact
FIXED #1824 Add ref_ext for Contact webservices
2015-02-07 23:47:19 +01:00
Christophe Battarel
3940abe7c1 FIX: select DISTINCT for natural search on proposal list (in the same
way it's done in invoices list)
2015-02-07 10:48:03 +01:00
Marcos García de La Fuente
b8b9df7b95 Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes 2015-02-06 12:36:09 +01:00
Arnaud Aujon
65efa7ddf7 FIXED #1824 Add ref_ext for Contact webservices
Add possibility to use ref_ext to reference contact using webservice, field was present but not saved and not used to fetch object
2015-02-05 14:28:16 +01:00
Arnaud Aujon Chevallier
eb2c5c29b7 FIXES Webservice : fk_delivery_address not saved 2015-02-05 13:33:58 +01:00
Laurent Destailleur
212319b1f8 Merge pull request #2313 from GPCsolutions/3.6-ssl
FIXED Removed deprecated forcing SSLv3 for CURL
2015-02-03 13:09:50 +01:00
Laurent Destailleur
3bb6a5e8af Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6
Conflicts:
	ChangeLog
2015-02-03 12:42:24 +01:00
Laurent Destailleur
fd93e9f322 Merge branch 'marcosgdf-bug-1812' into 3.6 2015-02-03 12:41:33 +01:00
Laurent Destailleur
3ad61e4dc8 Merge pull request #2307 from marcosgdf/bug-1819
Fix: [ bug #1819 ] SQL error when searching for an invoice payment
2015-02-03 12:33:04 +01:00
Raphaël Doursenaud
fb865e8184 FIXED Removed deprecated forcing SSLv3 for CURL
Since the Poodle vulnerability, SSLv3 has been supersedded by TLS.
Many services do not offer SSLv3 anymore.
CURL has also been patched in PHP so it now auto-negociates the most appropriate protocol.
This prevented most API calls from working.
2015-02-02 17:13:11 +01:00
Marcos García de La Fuente
0c63644038 Fix: [ bug #1819 ] SQL error when searching for an invoice payment 2015-02-01 13:26:30 +01:00
Marcos García de La Fuente
ef35483494 Fix: [ bug #1819 ] SQL error when searching for an invoice payment 2015-02-01 12:58:54 +01:00
Laurent Destailleur
3ec5b46864 Merge pull request #2294 from altatof/fix_fournprice_visibility
FIX: always show fournprice select
2015-01-31 19:47:46 +01:00
Laurent Destailleur
87b75126aa Fix missing set into specimen 2015-01-31 16:52:34 +01:00
Laurent Destailleur
2581592441 Merge pull request #2287 from atm-maxime/3.6
FIXED Import module was not working with multi-company and importing eve...
2015-01-31 14:26:28 +01:00
Christophe Battarel
04f83ae4ff FIX: always show fournprice select 2015-01-28 16:19:56 +01:00
Maxime Kohlhaas
11dd32a8fd FIXED Import module was not working with multi-company and importing everything in entity 1 2015-01-26 23:37:25 +01:00
Laurent Destailleur
568d5cb5ba Fixed: Tracking number restored on PDF shipments
Fixed: Translation

Conflicts:
	htdocs/langs/en_US/agenda.lang
2015-01-23 18:47:47 +01:00
Laurent Destailleur
b7cff09ce6 Fixed travis errors 2015-01-22 21:46:22 +01:00
Laurent Destailleur
3af67b414e Merge pull request #2267 from tiaris/3.6
add left joins on llx_c_actioncomm
2015-01-21 00:00:00 +01:00
jean
b809f0aeb8 Merge remote-tracking branch 'origin/3.6' into 3.6 2015-01-20 17:31:17 +01:00
jean
5ec0b32ab0 add left joins on llx_c_actiocomm 2015-01-20 17:26:32 +01:00
Laurent Destailleur
08214999a7 Merge remote-tracking branch 'origin/3.5' into 3.6 2015-01-18 15:21:38 +01:00
Laurent Destailleur
5ed5a729d5 Merge branch 'marcosgdf-bug-1784' into 3.6 2015-01-18 15:13:38 +01:00
Laurent Destailleur
7b7b8f376f Merge branch 'bug-1784' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1784

Conflicts:
	ChangeLog
2015-01-18 15:13:26 +01:00
Laurent Destailleur
a696ad62c3 Merge branch 'marcosgdf-bug-1717' into 3.6 2015-01-18 15:12:30 +01:00
Laurent Destailleur
ff65035aee Merge branch 'bug-1717' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1717

Conflicts:
	ChangeLog
2015-01-18 15:12:00 +01:00
Laurent Destailleur
5ec7b10dc7 Merge branch 'marcosgdf-bug-1783' into 3.6 2015-01-18 15:10:47 +01:00
Laurent Destailleur
d1e2ab6f56 Merge branch 'bug-1783' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1783

Conflicts:
	ChangeLog
2015-01-18 15:10:30 +01:00
Laurent Destailleur
a0de75c727 Merge branch 'marcosgdf-bug-1796' into 3.6 2015-01-18 15:09:18 +01:00
Laurent Destailleur
7c5927ef93 Merge branch 'bug-1796' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1796

Conflicts:
	ChangeLog
2015-01-18 15:08:49 +01:00
Laurent Destailleur
abf961707d Merge branch 'marcosgdf-bug-1787' into 3.6 2015-01-18 15:07:15 +01:00
Laurent Destailleur
b3e216b8f1 Merge branch 'bug-1787' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1787

Conflicts:
	ChangeLog
	htdocs/comm/propal.php
2015-01-18 15:06:54 +01:00
Laurent Destailleur
ccaab5e183 Merge branch 'marcosgdf-bug-1803' into 3.6 2015-01-18 15:01:34 +01:00
Laurent Destailleur
c35de1aa06 Merge branch 'bug-1803' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1803

Conflicts:
	ChangeLog
2015-01-18 15:01:18 +01:00
Laurent Destailleur
c1f3d66686 Merge branch 'marcosgdf-bug-1804' into 3.6 2015-01-18 14:03:04 +01:00
Laurent Destailleur
cef48d1275 Merge branch 'bug-1804' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1804

Conflicts:
	ChangeLog
2015-01-18 14:02:52 +01:00
Laurent Destailleur
0513ce25e5 Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6
Conflicts:
	ChangeLog
2015-01-18 13:51:45 +01:00
Laurent Destailleur
056c0b0ca1 Merge branch 'marcosgdf-bug-1788' into 3.6 2015-01-18 13:49:23 +01:00
Laurent Destailleur
a51ea308f5 Merge branch 'marcosgdf-bug-1762' into 3.5 2015-01-18 13:46:15 +01:00
Laurent Destailleur
05f08a7181 Merge branch 'bug-1762' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1762

Conflicts:
	ChangeLog
2015-01-18 13:43:57 +01:00
Laurent Destailleur
b1f889e1d1 Merge remote-tracking branch 'origin/3.5' into 3.6 2015-01-18 12:46:23 +01:00
Laurent Destailleur
896b924380 git push origin 3.6Merge branch 'marcosgdf-bug-1785' into 3.6 2015-01-18 12:45:29 +01:00
Laurent Destailleur
2f4352c759 Merge branch 'bug-1785' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1785

Conflicts:
	ChangeLog
2015-01-18 12:45:05 +01:00
Laurent Destailleur
1a552cf643 git push origin 3.6Merge branch 'marcosgdf-bug-1802' into 3.6 2015-01-18 12:37:44 +01:00
Laurent Destailleur
4639ce3364 Merge branch 'bug-1802' of https://github.com/marcosgdf/dolibarr into
marcosgdf-bug-1802

Conflicts:
	ChangeLog
2015-01-18 12:37:16 +01:00
Marcos García de La Fuente
17b14eed88 Updated bug title 2015-01-18 02:55:59 +01:00
Marcos García de La Fuente
78905c6af1 Fix: [ bug #1784 ] « Message page de connexion » n'apparaît pas 2015-01-17 20:29:51 +01:00
Marcos García de La Fuente
003aa5ee44 Fix: [ bug #1717 ] Sorting unpaid invoices by amount received brings due amount 2015-01-17 19:41:31 +01:00
Marcos García de La Fuente
dacec491ff Fix: [ bug #1783 ] SQL error when enabling 3rd party module with PostgreSQL and MySQL strict mode ON 2015-01-17 19:37:49 +01:00
Marcos García de La Fuente
7f59cf9194 Fix: [ bug #1787 ] Incorrect behaviour of doActions hook 2015-01-17 19:28:27 +01:00
Marcos García de La Fuente
cc9197e4c8 Fixed problem with Fichinter::getNextNumRef 2015-01-17 19:13:38 +01:00
Marcos García de La Fuente
103a433bdf Fix: [ bug #1796 ] Unable to use numeration modules from an external module 2015-01-17 19:00:44 +01:00
Marcos García de La Fuente
41e01a22a3 Fixed loading of external numeration modules in Contrat, Commande, Facture, Contrat, Expedition, Fichinter, CommandeFournisseur and uniformized code 2015-01-17 18:58:05 +01:00
Marcos García de La Fuente
ed839114ab Fixed loading of external numeration modules in FactureFournisseur and Propal 2015-01-17 18:42:19 +01:00
Marcos García de La Fuente
068045f6a0 Fix: [ bug #1803 ] AJAX company contact input is not aligned 2015-01-17 18:23:20 +01:00
Marcos García de La Fuente
a64084308d Fix: [ bug #1804 ] SQL error when sending email without addresee 2015-01-17 18:12:43 +01:00
Juanjo Menent
fe5533d1c3 Fix: PostgreSQL compatibilty 2015-01-16 17:41:56 +01:00
Laurent Destailleur
d1a0187f82 Merge pull request #2236 from marcosgdf/translations
Corrected translation typos
2015-01-16 12:10:32 +01:00
Laurent Destailleur
767afd3c9f Merge pull request #2231 from KreizIT/fix_cron
Fix cron
2015-01-16 12:08:30 +01:00
Laurent Destailleur
5087ac8153 Merge pull request #2237 from marcosgdf/bug-1797
Fix:  [ bug #1797 ] Tulip Supplier invoice module takes creation date instead of invoice date
2015-01-16 12:08:09 +01:00
Laurent Destailleur
6f00cecd81 Merge pull request #2244 from KreizIT/fix_default_empty
FIX : Creating default object from empty when validating supplier order
2015-01-16 12:03:23 +01:00
Laurent Destailleur
4c8de74140 Merge pull request #2242 from marcosgdf/3.6
Fix: [ bug #1801 ] FAC_FORCE_DATE_VALIDATION constant alters supplier invoice date given to numeration modules
2015-01-16 12:02:24 +01:00
Cedric
999a6052ff FIX : Creating default object from empty when validating supplier order 2015-01-15 16:23:10 +01:00
Marcos García de La Fuente
61809ef6b5 - Fix: [ bug #1802 ] SQL error when updating a task with PostgreSQL database 2015-01-15 13:22:58 +01:00
Marcos García de La Fuente
88c3509dd0 Merge remote-tracking branch 'upstream/3.6' into 3.6
Conflicts:
	ChangeLog
2015-01-15 13:09:23 +01:00
Marcos García de La Fuente
71b609fab0 Fix: [ bug #1801 ] FAC_FORCE_DATE_VALIDATION constant alters supplier invoice date given to numeration modules 2015-01-15 13:08:33 +01:00
Juanjo Menent
d40eab2494 Fix: withdrawal create error if in the same month are deleted previus
withdrawals.
2015-01-15 09:57:20 +01:00
Marcos García de La Fuente
4da52cf733 Fix: [ bug #1797 ] Tulip Supplier invoice module takes creation date instead of invoice date 2015-01-13 11:11:37 +01:00
Marcos García de La Fuente
7b4cf976df Corrected translation typos 2015-01-13 09:42:46 +01:00
Marcos García de La Fuente
85b1188593 Fix: [ bug #1788 ] Duplicated doActions hook in product/fournisseurs.php 2015-01-13 09:22:12 +01:00
Marcos García de La Fuente
6c4702f282 Fix: [ bug #1785 ] Start date is lost in Project > Linked objects 2015-01-13 09:11:04 +01:00
Marcos García de La Fuente
7e16d0c1d3 Fix: [ bug #1792 ] Users are not allowed to see margins module index page when no product view permission is enabled 2015-01-13 01:48:58 +01:00
Cedric
d2cd841573 Fix divide by zero error 2015-01-12 13:23:18 +01:00
Cedric
26cad2400e Fix missing lang key 2015-01-12 13:18:50 +01:00
Laurent Destailleur
c441aa89db Fixed: Avoid warning 2015-01-10 18:19:44 +01:00
Laurent Destailleur
90add2fa96 Fix: amarok is a bugged theme making dolidroid failed. We swith to
eldy automatically with dolidroid.
2015-01-10 17:23:52 +01:00
Laurent Destailleur
32edb33411 Start 3.6.3 2015-01-09 22:32:25 +01:00
Laurent Destailleur
068ae7f0d4 - Fix: ref_ext was not saved when recording a customer order from web
service
2015-01-09 22:32:00 +01:00
Laurent Destailleur
4ce7a27dca Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6 2015-01-06 00:28:07 +01:00
Laurent Destailleur
a668d163fd Repair corrupted data 2015-01-06 00:27:35 +01:00
Laurent Destailleur
e5f81b1fec Merge pull request #2202 from defrance69/patch-38
Update facture.php
2015-01-06 00:13:55 +01:00
Laurent Destailleur
337d055872 Merge pull request #2199 from altatof/3.6
FIX: dont remove price ht if it is forced (ie: calculated by margin rate and cost price, or by external module)
2015-01-06 00:10:08 +01:00
BENKE Charles
191d4467e3 Update facture.php
$soc already filled upper when $socid send
2014-12-28 12:31:27 +01:00
Christophe Battarel
1ab6955494 FIX: dont remove price ht if it is forced (ie: calculated by margin rate
and cost price, or by external module)
2014-12-27 11:27:41 +01:00
jean
619bcb44df object must be reloaded before creating pdf on confirmation and ordering 2014-10-21 19:02:48 +02:00
726 changed files with 8551 additions and 7593 deletions

0
.gitignore vendored Executable file → Normal file
View File

View File

@@ -1,107 +1,302 @@
# This script is used by Travis CI to run automatically Continuous test integration
# from Dolibarr GitHub repository.
# Command run is phpunit
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
sudo: required
language: php
php:
- '5.3'
- '5.4'
- '5.5'
- '5.6'
- '7.0'
- nightly
addons:
mariadb: '10.0'
# FIXME: find a way to import a MySQL dump into PostgreSQL
#postgresql: '9.3'
apt:
packages:
# We need a webserver to test the webservices
# Let's install Apache with.
- apache2
# mod_php is not supported by Travis. Add fcgi. We install FPM later on.
- libapache2-mod-fastcgi
# Start on every boot
services:
- memcached
env:
global:
# Set to true for very verbose output
- DEBUG=false
matrix:
# MariaDB overrides MySQL installation so it's not possible to test both yet
#- DB=mysql
- DB=mariadb
# FIXME: find a way to import a MySQL dump into PostgreSQL
#- DB=postgresql
# TODO
#- DB=sqlite
# See https://docs.travis-ci.com/user/languages/php/#Apache-%2B-PHP
#- WS=apache
# See https://github.com/DracoBlue/travis-ci-nginx-php-fpm-test
#- WS=nginx
matrix:
fast_finish: true
allow_failures:
- php: '7.0'
- php: nightly
# FIXME
#- env: DB=postgresql
# TODO
#- env: DB=sqlite
notifications:
email:
on_success: never # [always|never|change] default: change
on_failure: change # [always|never|change] default: always
services:
- memcached # will start memcached
irc:
channels:
- "chat.freenode.net#dolibarr"
on_success: change
on_failure: always
use_notice: true
# This will tell travis to run phpunit
language: php
php:
# - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available
- "5.3"
- "5.4"
- "5.5"
before_install:
- |
echo "Disabling Xdebug for composer"
export PHP_VERSION_NAME=$(phpenv version-name)
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/conf.d/xdebug.ini /tmp/xdebug.ini
phpenv config-rm xdebug.ini
echo
env:
- DB=mysql
# - DB=postgres
install:
- |
echo "Updating Composer"
composer self-update
echo
before_script:
- echo Start travis
- echo Current dir is `pwd`
- echo Home dir is `echo ~`
- export PHPV=`phpenv version-name`
- echo PHP version $PHPV
# - echo Update composer
# - ~/.phpenv/versions/$(phpenv version-name)/bin/composer.phar self-update
- echo PHPUnit version
- phpunit --version
- echo Install phpcs then show installed rules
- pyrus install pear/PHP_CodeSniffer
- phpenv rehash
- phpcs -i
- echo Create dir $(pwd)/htdocs/documents
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
- sudo touch $(pwd)/htdocs/documents/dolibarr.log;
- sudo chmod a+rwx /home; sudo chmod a+rwx /home/travis; sudo chmod -R a+rwx /home/travis/build;
- sudo chmod -R a+rwx $(pwd);
- sudo chown -R www-data:travis $(pwd)/htdocs/documents;
- find $(pwd)/htdocs/documents -type d -exec ls -alt {} \;
- echo Edit php.ini file
- echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
# - echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- sh -c "if [ '$PHPV' = '5.3' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
- sh -c "if [ '$PHPV' = '5.4' ]; then echo 'extension = apc.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
- sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
- sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
- cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo Init database
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.4.0.sql; fi"
- echo Create config file htdocs/conf/conf.php
- echo '<?php ' > htdocs/conf/conf.php
- sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then echo '$'dolibarr_main_db_type=\'mysqli\'';' >> htdocs/conf/conf.php; fi"
- echo '$'dolibarr_main_url_root=\'http://localhost/\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_document_root=\'$(pwd)/htdocs\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_data_root=\'$(pwd)/htdocs/documents\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_host=\'localhost\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_name=\'myapp_test\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_user=\'travis\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> htdocs/conf/conf.php
- echo '?>' >> htdocs/conf/conf.php
- echo Show conf.php content
- cat htdocs/conf/conf.php
- echo Install apache server
- sudo apt-get update
- sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-pgsql php5-intl
- sudo sed -i -e "s,/var/www,$(pwd)/htdocs,g" /etc/apache2/sites-available/default
- echo Show default virtual host
- sudo cat /etc/apache2/sites-available/default
- sudo /etc/init.d/apache2 restart
- wget http://localhost/
- cat index.html
- |
echo "Installing Parallel Lint"
composer -n require jakub-onderka/php-parallel-lint ^0
composer -n require jakub-onderka/php-console-highlighter ^0
echo
- |
echo "Installing PHP Unit"
if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ] || [ "$TRAVIS_PHP_VERSION" = '5.5' ]; then
composer -n require phpunit/phpunit ^4
fi
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
composer -n require phpunit/phpunit ^5
fi
echo
- |
echo "Installing PHP CodeSniffer"
composer require squizlabs/php_codesniffer ^2
echo
script:
- cd htdocs/install
- php upgrade.php 3.4.0 3.5.0 > upgrade.log
- php upgrade2.php 3.4.0 3.5.0 > upgrade2.log
- php upgrade.php 3.5.0 3.6.0 >> upgrade.log
- php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log
# - cat upgrade.log
# - cat upgrade2.log
- cd ../..
- date
# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1
- phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
- date
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
- |
echo "Adding Composer binaries to the path"
export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH"
echo
before_script:
- |
echo Start travis
echo Current dir is `pwd`
echo Home dir is `echo ~`
echo TRAVIS_BUILD_DIR is $TRAVIS_BUILD_DIR
- |
echo "Re-enabling Xdebug for PHP CodeSniffer and PHP Unit"
phpenv config-add /tmp/xdebug.ini
echo
- |
echo "Setting up PHP"
echo
echo "Set timezone"
echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
if [ "$TRAVIS_PHP_VERSION" = '5.3' ] || [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then
echo
echo "Enabling APC for PHP <= 5.4"
# Documentation says it should be available for PHP <= 5.6 but it's not for 5.5 and 5.6!
echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
echo
echo "Enabling Memcached for PHP <= 5.4"
# Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0 and nightly!
echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
fi
phpenv rehash
echo
- |
if [ "$DEBUG" = true ]; then
echo "Debugging informations"
# Check PHP
php -i
# Check PHP CodeSniffer installation
which phpcs
phpcs --version
phpcs -i
# Check PHPUnit installation
which phpunit
phpunit --version
# Check MySQL
mysql --version
mysql -e "SELECT VERSION();"
echo
fi
- |
echo "Setting up database"
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
echo "MySQL"
mysql -e 'DROP DATABASE IF EXISTS travis;'
mysql -e 'CREATE DATABASE IF NOT EXISTS travis;'
mysql -D travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql
fi
# FIXME: find a way to import a MySQL dump into PostgreSQL
#if [ "$DB" = 'postgresql' ]; then
# pgsql travis < dev/initdata/mysqldump_dolibarr_3.5.0.sql
#fi
# TODO: SQLite
echo
- |
export CONF_FILE=htdocs/conf/conf.php
echo "Setting up Dolibarr $CONF_FILE"
echo '<?php ' > $CONF_FILE
echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE
echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE
echo '$'dolibarr_main_data_root=\'$TRAVIS_BUILD_DIR/documents\'';' >> $CONF_FILE
echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE
echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE
echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE
fi
# FIXME
#if [ "$DB" = 'postgresql' ]; then
# echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE
#fi
# TODO: SQLite
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
cat $CONF_FILE
echo
- |
echo "Create documents directory and set permissions"
# and admin/temp subdirectory needed for unit tests
mkdir -p documents/admin/temp
echo
- |
echo "Setting up Apache + FPM"
# enable php-fpm
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf
if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
# Copy the included pool
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.d/www.conf
fi
if [ "$DEBUG" = true ]; then
cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php-fpm.conf
fi
sudo a2enmod rewrite actions fastcgi alias
echo "cgi.fix_pathinfo = 1" >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
if [ "$DEBUG" = true ]; then
cat ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini
fi
~/.phpenv/versions/$PHP_VERSION_NAME/sbin/php-fpm
# configure apache virtual hosts
sudo cp -f build/travis-ci/apache.conf /etc/apache2/sites-available/default
sudo sed -e "s?%TRAVIS_BUILD_DIR%?$TRAVIS_BUILD_DIR?g" --in-place /etc/apache2/sites-available/default
if [ "$DEBUG" = true ]; then
sudo cat /etc/apache2/sites-available/default
fi
sudo service apache2 restart
echo
script:
- |
echo "Checking webserver availability"
# Ensure we catch errors
set -e
wget http://127.0.0.1
if [ "$DEBUG" = true ]; then
cat index.html
fi
set +e
echo
- |
echo "Checking PHP syntax errors"
# Ensure we catch errors
set -e
parallel-lint --exclude htdocs/includes --blame .
set +e
echo
# TODO: dev/* checks
- |
echo "Checking coding style"
# Ensure we catch errors
set -e
# Exclusions are defined in the ruleset.xml file
phpcs -s -n -p -d memory_limit=-1 --colors --tab-width=4 --standard=dev/codesniffer/ruleset.xml --encoding=utf-8 .
set +e
echo
# TODO: Check Javascript (jshint?)
# TODO: Check CSS (csslint?)
# TODO: check SQL syntax (pgsanity?)
- |
echo "Upgrading Dolibarr"
# Ensure we catch errors
set -e
cd htdocs/install
php upgrade.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360.log
php upgrade2.php 3.5.0 3.6.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade350360-2.log
cd -
set +e
echo
- |
echo "Unit testing"
# Ensure we catch errors
set -e
phpunit -d memory_limit=-1 -c test/phpunit/phpunittest.xml test/phpunit/AllTests.php
set +e
echo
after_success:
after_failure:
- |
if [ "$DEBUG" = true ]; then
echo "Debugging informations"
# Upgrade log files
cat *.log
# Dolibarr log file
cat documents/dolibarr.log
# Apache log file
sudo cat /var/log/apache2/error.log
# MariaDB log file
sudo cat /var/log/mysql/error.log
# TODO: PostgreSQL log file
echo
fi
after_script:
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
- echo Output apache log file; sudo cat /var/log/apache2/error.log
- echo End travis

View File

@@ -52,6 +52,9 @@ http://www.fsf.org/licensing/licenses/index_html
Copyright
---------
Copyright (C) 2015
- Marcos García <marcosgdf@gmail.com>
Copyright (C) 2014
- Laurent Destailleur <eldy@users.sourceforge.net>
- Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>

159
ChangeLog
View File

@@ -2,14 +2,111 @@
English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 3.6.7 compared to 3.6.6 *****
FIX: #4291 Correctly filter external calendar GETPOSTs
FIX: CVE CVE-2015-8685
***** ChangeLog for 3.6.6 compared to 3.6.5 *****
FIX: #3734 Do not show empty links of deleted source objects in stock movement list
FIX: #4081 Added missing translation
FIX: #4097 Public holiday calculation
FIX: #4242 Allow disabling dashes in documents
FIX: #4243 sql injection
FIX: Add a protection to not make release if ChangeLog was not generated. Prepare package 3.6.5
FIX: export with category contact extrafields
FIX: Not delete a product when have customer price
FIX: Not deleting contrats on element_element table
***** ChangeLog for 3.6.5 compared to 3.6.4 *****
FIX: #2957 : missing $langs object for trigger
FIX: #2983 Load gravatar avatar images securely over HTTPS
FIX: #3009: Better filtering to prevent SQL injection
FIX: #3841 creation of a task completed has not status set to finished by default
FIX: #3890 Expected transactions bank account page, shows negative numbers
FIX: #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card
FIX: bad calculation for stock value
FIX: bad stock valo
FIX: bad stock valorisation
FIX: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
FIX: button create payment hide if tax amount is less than 1
FIX: change object statut on close shipping and remove erratic db commit
FIX: change order date on clone (as everywhere else)
FIX: Close #2835 Customer prices of a product shows incorrect history order
FIX: Close #2837 Product list table column header does not match column body
FIX: Close bug #2861 Undefined variable $res when migrating from 3.6.2 to 3.7.0
FIX: Close bug #2891 Category hooks do not work
FIX: Close bug #2976: "Report" tab is the current tab but it is not marked as selected by the UI
FIX: contact country had wrong display if the country dont have translate
FIX: double db escape add too quote
FIX: End log must use same level then start log.
FIX: error in SQL due to a previous fix
FIX: event for restricted user was restricted if company null
FIX: facturestat bad sql when customer view is limited
FIX: If supplier invoice block linked element is display after other block total HT amount is not reset to 0 and sum other block (like customer orders values)
FIX: keep filter by category or by not enough stock if we switch page
FIX: no need to remove file into mail form, the temp dir will be deleted after any sending
FIX: no projet_task_time id from trigger TASK_TIMESPENT_CREATE
FIX: pmp
FIX: send mail, copy sendto don't read the list of contact
FIX: The hours of date filter aren't correct
FIX: tool export handle the type "select" extrafields and return the value instead of id
FIX: top links menu have target attribute with wrong value
FIX: total amount in tpl linked object are not reset
FIX: when multicompany was enabled, this function didn't check just on the good entity (problem when both company use same mask)
***** ChangeLog for 3.6.4 compared to 3.6.3 *****
- Fix: [ bug #2893 ] Dolibarr error when viewing an invoice after changing invoice mask
***** ChangeLog for 3.6.3 compared to 3.6.2 *****
- Fix: ref_ext was not saved when recording a customer order from web service
- Fix: amarok is a bugged theme making dolidroid failed. We switch to eldy automatically with dolidroid.
- Fix: [ bug #1788 ] Duplicated doActions hook in product/fournisseurs.php
- Fix: withdrawal create error if in the same month are deleted previous withdrawals.
- Fix: [ bug #1801 ] FAC_FORCE_DATE_VALIDATION constant alters supplier invoice date given to numeration modules
- Fix: [ bug #1802 ] SQL error when updating a task with PostgreSQL database
- Fix: [ bug #1785 ] Start date is lost in Project > Linked objects
- Fix: [ bug #1804 ] SQL error when sending email without address
- Fix: [ bug #1803 ] AJAX company contact input is not aligned
- Fix: [ bug #1787 ] Incorrect behaviour of doActions hook
- Fix: [ bug #1796 ] Unable to use numeration modules from an external module
- Fix: [ bug #1783 ] SQL error when enabling 3rd party module with PostgreSQL and MySQL strict mode ON
- Fix: [ bug #1717 ] Sorting unpaid invoices by amount received brings due amount
- Fix: [ bug #1784 ] MOTD doesn't show up in Amarok theme
- Fix: Tracking number not visible on shipment pdf
- Fix: [ bug #1812 ] SQL Error message while sending emailing with PostgreSQL database
- Fix: [ bug #1819 ] SQL error when searching for an invoice payment
- Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes
- Fix: [ bug #1822 ] SQL error in clientfourn.php report with PostgreSQL
- Fix: [ bug #1832 ] SQL error when adding a product with no price defined to an object
- Fix: [ bug #1833 ] user permissions in contact/note.php not working
- Fix: [ bug #1826 ] Supplier payment types are not translated into fourn/facture/paiement.php
- Fix: [ bug #1830 ] Salaries payment only allows checking accounts
- Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work
- Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key
- Fix: Bad SEPA xml file creation
- Fix: [ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment
- Fix: Showing system error if not enough stock of product into orders creation with lines
- Fix: [ bug #2543 ] Untranslated "Contract" origin string when creating an invoice from a contract
- Fix: [ bug #2534 ] SQL error when editing a supplier invoice line
- Fix: [ bug #2535 ] Untranslated string in "Linked objects" page of a project
- Fix: [ bug #2545 ] Missing object_margin.png in Amarok theme
- Fix: [ bug #2542 ] Contracts store localtax preferences
- Fix: Bad permission assignments for stock movements actions
- Fix: [ bug #2891 ] Category hooks do not work
- Fix: [ bug #2696 ] Adding complementary attribute fails if code is numerics
- Fix: [ bug #3074 ] Accruals accounting use payment date instead of commitment date in turnover reports for salaries
- Fix: Not showing product supplier reference when page break
- Fix: [ bug #3341 ] Missing translation in /compta/paiement_charge.php
- Fix: [ bug #3342 ] Taxes dictionary page does not accept localized decimals for localtax2 rate
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
- Fix: bug 1588 : relative discount.
- Fix: label of input method not tranlated.
- Fix: box of customer and propsects were not correctly disabled.
- Fix: label of input method not translated.
- Fix: box of customer and prospects were not correctly disabled.
- Fix: [ bug #1618 ] PHP Error thrown when saving a barcode
- Fix: Civility & birthdate wasn't save into adherent module.
- Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref
- Fix: webservice Thirdparty parameter lastname for individual creation is now lastname and not ref
- Fix: Chars - is no more allowed into value for code for extra fields.
- Fix: [ bug #1622 ] Requesting holiday than spans across two years cause high CPU usage by Apache
- Fix: [ bug #1595 ] Selected boolean extrafield in intervention creation page, does not save state
@@ -36,14 +133,14 @@ For users:
- Fix: Iban was used instead of Bic into SEPA file.
- Fix: Must unaccent strings into SEPA file.
- Fix: Extrafield feature select from table should try to translate multiple column when not needed
- Fix: cents for indian ruppes are calle paisa and paise.
- Fix: cents for indian ruppes are called paisa and paise.
- Fix: Invoices payments may be older than invoices.
- Fix: Withdrawal total amount is double
- Fix: [ bug #1593 ] Spanish Localtax IRPF not being calculated since 3.6.0 in supplier invoices when adding a line
- Fix: Web service categorie WDSL declaration is correct
- Fix: ErrorBadValueForParamNotAString was displayed in virtual product if no base price defined
- Fix: Category creation failed and no message output
- Fix: Lanf for Payment Type
- Fix: Lang for Payment Type
- Fix: PHPCheckstyle 1.5.5
***** ChangeLog for 3.6 compared to 3.5.* *****
@@ -65,12 +162,12 @@ For users:
- New: Improved Opensurvey module:
Added options to disable comments and disable public votes.
Limit dates use calendar popup.
Description of survey use wysiwig editor.
Description of survey use wysiwyg editor.
More information shown on result tab.
Renamed "survey" into "poll" (better translation).
- New: Add filter on text and status into survey list. Can also sort on id, text and date end.
- New: The box "balance of bank accounts" show all opened accounts.
- New: Add option MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE to add sale represnative into public
- New: Add option MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE to add sale representative into public
note of generated documents.
- New: Add warning if supplier payment is higher that due amount.
- New: Increase length of url into bookmark module.
@@ -83,7 +180,7 @@ For users:
- New: Add barcode fields into user database.
- New: Add manager name (ceo, director, president...) into main company information page.
- New: Add field url as product properties.
- New: More options to create a credit note (can be filled autatically according to remain to pay).
- New: More options to create a credit note (can be filled automatically according to remain to pay).
- New: Can define custom fields for categories.
- New: Prepare generation of SEPA files into module withdrawal.
- New: [ task #1164 ] Add "Ref. supplier" search box in supplier orders
@@ -100,7 +197,7 @@ For users:
- New: [ task #926 ] Add extrafield feature on order lines.
- New: [ task #927 ] Add extrafield feature on Proposal lines.
- New: [ task #928 ] Add extrafield feature on invoice lines.
- New: Paypal/paybox email sent after backcall of a payment is now a formated and translated
- New: Paypal/paybox email sent after backcall of a payment is now a formatted and translated
HTML content. For member subscription renewal, there is also a link to member.
- New: When a subscription is recorded with invoice and payment:
- the document (PDF) of invoice is also generated.
@@ -151,14 +248,48 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f
So check that return value is 0 to keep default standard behaviour after hook or 1 to disable
default standard behaviour.
- Properties "civilite_id" were renamed into "civility_id".
- Remove add_photo_web() that is ot used anymore by core code.
- Remove add_photo_web() that is not used anymore by core code.
***** ChangeLog for 3.5.8 compared to 3.5.7 *****
FIX: #4291 Correctly filter external calendar GETPOSTs
FIX: bad calculation for stock value
FIX: bad stock valo
FIX: change order date on clone (as everywhere else)
FIX: CVE CVE-2015-8685
FIX: The hours of date filter aren't correct
FIX: #3442 Remove useless syslog
FIX: #3448 Pass expected date format
FIX: #3471 3.5 Rounding issue when dispatching non-integer
***** ChangeLog for 3.5.7 compared to 3.5.6 *****
Fix: Paypal link were broken dur to SSL v3 closed.
Fix: Paypal link were broken due to SSL v3 closed.
Fix: [ bug #1769 ] Error when installing to a PostgreSQL DB that contains numbers
Fix: [ bug #1752 ] Date filter of margins module, filters since 12H instead of 00H
Fix: [ bug #1757 ] Sorting breaks product/service statistics
Fix: [ bug #1797 ] Tulip supplier invoice module takes creation date instead of invoice date
Fix: [ bug #1792 ] Users are not allowed to see margins module index page when no product view permission is enabled
Fix: [ bug #1846 ] Browser IE11 not detected
Fix: [ bug #1906 ] Deplacement does not allow translated decimal format
Fix: [ bug #1905 ] Custom deplacement types do not get translated in deplacement card
Fix: [ bug #2583 ] Unable to create a bank transfer with localized numbers
Fix: [ bug #2577 ] Incorrect invoice status in "Linked objects" page of a project
Fix: [ bug #2576 ] Unable to edit a dictionary entry that has # in its ref
Fix: [ bug #2758 ] Product::update sets product note to "null" when $prod->note is null
Fix: [ bug #2757 ] Deleting product category photo gives "Forbidden access" error
Fix: [ bug #2976 ] "Report" tab is the current tab but it is not marked as selected by the UI
Fix: [ bug #2861 ] Undefined variable $res when migrating
Fix: [ bug #2837 ] Product list table column header does not match column body
Fix: [ bug #2835 ] Customer prices of a product shows incorrect history order
Fix: [ bug #2814 ] JPEG photos are not displayed in Product photos page
Fix: [ bug #2715 ] Statistics page has broken layout with long thirdparty names
Fix: [ bug #2570 ] [Contacts] Page should not process if ID is invalid
Fix: [ bug #3268 ] SQL error when accessing thirdparty log page without a socid parameter
Fix: [ bug #3180 ] formObjectOptions hook when editing thirdparty card does not print result
Fix: [ bug #1791 ] Margin menu not available if any Finance module is not enabled
Fix: [ bug #3310 ] OrderLine::fetch, FactureLigne::fetch and PropaleLigne::fetch do not return anything
Fix: [ bug #3206 ] PropaleLigne, OrderLine and FactureLigne given to triggers through update function does not contain all the information
Fix: [ bug #3313 ] Error enabling module with PostgreSQL database
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
Fix: Avoid missing class error for fetch_thirdparty method #1973
@@ -172,7 +303,7 @@ Fix: Bad days and month reported by function.
Fix: Bad margin calculation.
***** ChangeLog for 3.5.5 compared to 3.5.4 *****
Fix: Holiday module was broken. Initializaion of amount of holidays failed.
Fix: Holiday module was broken. Initialization of amount of holidays failed.
Fix: [ bug #1523 ] suite bug #1334 : filtre et ordre de tri conjoints ne s'appliquent pas.
Fix: Fusion PDF button on unpaid invoice is no more displayed.
Fix: Unpaid invoice launch fusion PDF action even if it is only search (with enter keyboard input instead of lens click).
@@ -207,7 +338,7 @@ Fix: When using option MAIN_MAIL_ALLOW_SENDMAIL_F, a mail was sent to sender.
Fix: Question about warehouse must not be done when module stock is disabled.
Fix: Option STOCK_SUPPORTS_SERVICES was not correctly implemented
(missing test at some places).
Fix: Renaming a project with uplaoded files failed.
Fix: Renaming a project with uploaded files failed.
Fix: [ bug #1476 ] Invoice creation form loses invoice date when there is a validation error.
Fix: [ bug #1431 ] Reception and Send supplier order box has a weird top margin.
Fix: [ bug #1428 ] "Nothing" is shown in the middle of the screen in a supplier order.
@@ -228,7 +359,7 @@ Fix: [ bug #1449 ] Trigger ORDER_CREATE, LINEORDER_DELETE, LINEORDER_UPDATE and
Fix: [ bug #1450 ] Several Customer order's triggers do not report the error from the trigger handler.
Fix: [ bug #1451 ] Interrupted order clone through trigger, loads nonexistent order.
Fix: [ bug #1454 ] Mention de bas de page erroné
Fix: Do not display dictionnay for non activated module
Fix: Do not display dictionary for non activated module
Fix: Link element from element project pages
Fix: [ bug #1509 ] Expedition admin free text & watermark submit error
Fix: [ bug #1349 ] AJAX contact selector does not work fine in Project card

0
build/.gitignore vendored Executable file → Normal file
View File

0
build/aps/APP-META-1.1.xml Executable file → Normal file
View File

0
build/aps/APP-META-1.2.xml Executable file → Normal file
View File

0
build/aps/README Executable file → Normal file
View File

1
build/aps/install.forced.php.install Executable file → Normal file
View File

@@ -21,4 +21,3 @@ $force_install_databaserootpass='';
$force_install_dolibarrlogin='admin';
$force_install_nophpinfo='1';
$force_install_lockinstall='444';
?>

View File

@@ -1,20 +1,6 @@
dolibarr (3.6.2-3) unstable; urgency=low
dolibarr (__VERSION__) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Sat, 27 dec 2014 12:00:00 +0100
dolibarr (3.6.1-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 23 Sep 2014 12:00:00 +0100
dolibarr (3.6.0-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 15 July 2014 12:00:00 +0100
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 12 May 2015 12:00:00 +0100

2
build/debian/conf.php.install Executable file → Normal file
View File

@@ -226,5 +226,3 @@ $dolibarr_main_prod='0';
# Default value: 0 (use database value if exist)
# Examples:
# $dolibarr_mailing_limit_sendbyweb='0';
?>

0
build/debian/control Executable file → Normal file
View File

View File

@@ -159,7 +159,7 @@ Comments:
Those files are not shipped in the binary package as we
configure Dolibarr to use Dejavu fonts from "fonts-dejavu-core".
Files: docs/images/*
Files: doc/images/*
Copyright: Laurent Destailleur
License: CC-BY-SA-3.0
You are free:
@@ -176,7 +176,7 @@ License: CC-BY-SA-3.0
.
For more information, see http://creativecommons.org/licenses/by-sa/3.0/
Files: htdocs/includes/fpdi/*
Files: htdocs/includes/fpdfi/*
Copyright: 2004-2011 Setasign - Jan Slabon
License: GPL-2+
This program is free software; you can redistribute it

0
build/debian/dolibarr.install Executable file → Normal file
View File

0
build/debian/dolibarr.lintian-overrides Executable file → Normal file
View File

0
build/debian/dolibarr.templates.futur Executable file → Normal file
View File

2
build/debian/install.forced.php.install Executable file → Normal file
View File

@@ -42,5 +42,3 @@ $force_install_lockinstall='444';
//$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui';
//$force_dolibarr_js_JQUERY_FLOT='/javascript/flot';
//$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf';
?>

0
build/debian/po/POTFILES.in Executable file → Normal file
View File

0
build/debian/po/fr.po Executable file → Normal file
View File

0
build/doxygen/doxygen_footer.html Executable file → Normal file
View File

0
build/doxygen/doxygen_header.html Executable file → Normal file
View File

View File

@@ -32,7 +32,7 @@ AppPublisherURL=http://www.nltechno.com
AppSupportURL=http://www.dolibarr.org
AppUpdatesURL=http://www.dolibarr.org
AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql softwares.
AppCopyright=Copyright (C) 2008-2014 Laurent Destailleur, NLTechno
AppCopyright=Copyright (C) 2008-2015 Laurent Destailleur, NLTechno
DefaultDirName=c:\dolibarr
DefaultGroupName=Dolibarr
;LicenseFile=COPYING
@@ -108,7 +108,7 @@ Source: "C:\Program Files\Wamp\bin\mysql\mysql5.0.45\*.*"; DestDir: "{app}\bin\m
; Mysql data files (does not overwrite if exists)
Source: "build\exe\doliwamp\mysql\*.*"; DestDir: "{app}\bin\mysql\data\mysql"; Flags: onlyifdoesntexist ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db"
; Dolibarr
Source: "htdocs\*.*"; DestDir: "{app}\www\dolibarr\htdocs"; Flags: ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,custom\*,custom2\*,documents\*,nltechno*\*,includes\ckeditor\_source\*,includes\savant\*,includes\phpmailer\*,jquery\plugins\template\*,PHPExcel\Shared\PDF\*,PHPExcel\Shared\PCLZip\*,tcpdf\fonts\dejavu-fonts-ttf-2.33\*,tcpdf\fonts\freefont-20100919\*,tcpdf\fonts\utils\*,*\conf.php,*\conf.php.mysql,*\conf.php.old,*\conf.php.postgres,*\conf.php.sav,*\install.forced.php"
Source: "htdocs\*.*"; DestDir: "{app}\www\dolibarr\htdocs"; Flags: ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,custom\*,custom2\*,documents\*,includes\ckeditor\_source\*,includes\savant\*,includes\phpmailer\*,jquery\plugins\template\*,nltechno*\*,PHPExcel\Shared\PDF\*,PHPExcel\Shared\PCLZip\*,tcpdf\fonts\dejavu-fonts-ttf-2.33\*,tcpdf\fonts\freefont-20100919\*,tcpdf\fonts\utils\*,*\conf.php,*\conf.php.mysql,*\conf.php.old,*\conf.php.postgres,*\conf.php.sav,*\install.forced.php"
Source: "dev\*.*"; DestDir: "{app}\www\dolibarr\dev"; Flags: ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,dbmodel\*,fpdf\*,initdata\*,iso-normes\*,licence\*,phpcheckstyle\*,phpunit\*,samples\*,test\*,uml\*,vagrant\*,xdebug\*"
Source: "doc\*.*"; DestDir: "{app}\www\dolibarr\doc"; Flags: ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,wiki\*,plaquette\*,dev\*,images\dolibarr_screenshot2.png,images\dolibarr_screenshot3.png,images\dolibarr_screenshot4.png,images\dolibarr_screenshot5.png,images\dolibarr_screenshot6.png,images\dolibarr_screenshot7.png,images\dolibarr_screenshot8.png,images\dolibarr_screenshot9.png,images\dolibarr_screenshot10.png,images\dolibarr_screenshot11.png,images\dolibarr_screenshot12.png"
Source: "scripts\*.*"; DestDir: "{app}\www\dolibarr\scripts"; Flags: ignoreversion recursesubdirs; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,product\materiel.net.php,product\import-product.php"

File diff suppressed because it is too large Load Diff

View File

@@ -8,20 +8,20 @@ This files describe steps made by Dolibarr packaging team to make a
beta version of Dolibarr, step by step.
- Check all files are commited.
- Update version/info in /ChangeLog
- Update version/info in ChangeLog.
To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
- Update version number with x.y.z-w in htdocs/filefunc.inc.php
- Update version number with x.y.z-w in build/debian/changelog
- Update version number with x.y.z-w in build/exe/doliwamp/doliwamp.iss
- Update version number with x.y.z-w in build/rpm/*.spec
- Commit all changes.
- Add a Tag (x.y.betaz_YYYYMMDD) and push it: git push --tags
- Create a branch (x.y).
- Run makepack-dolibarr.pl to generate all packages.
- Create a branch (x.y), if version seems stable enough.
- Move build files into www.dolibarr.org web site
(/home/dolibarr/wwwroot/files/lastbuild).
- Post a news on dolibarr.org/dolibarr.fr
- Post a news on dolibarr.org/dolibarr.fr + social networks
- Send mail on mailings-list
@@ -30,21 +30,22 @@ This files describe steps made by Dolibarr packaging team to make a
complete release of Dolibarr, step by step.
- Check all files are commited.
- Update version/info in ChangeLog
- Update version/info in ChangeLog.
To generate a changelog of a major new version x.y.0, you can do "cd ~/git/dolibarr_x.y; git log `git rev-list --boundary x.y..origin/develop | grep ^- | cut -c2- | head -n`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dolibarr_x.y; git log x.y.z-1.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
- Update version number with x.y.z in htdocs/filefunc.inc.php
- Update version number with x.y.z in build/debian/changelog
- Update version number with x.y.z in build/exe/doliwamp/doliwamp.iss
- Update version number with x.y.z in build/rpm/*.spec
- Commit all changes.
- Build Dolibarr and DoliWamp packages with makepack-dolibarr.pl
- Run makepack-dolibarr.pl to generate all packages.
- Check content of built packages.
- Move build files into www.dolibarr.org web site
(/home/dolibarr/wwwroot/files/stable).
- Run makepack-dolibarr.pl again with option to publish files on
sourceforge. This will also add official tag.
- Edit symbolic links in directory "/home/dolibarr/wwwroot/files/stable/xxx"
on server to point to new files (used by some web sites).
- Post a news on dolibarr.org/dolibarr.fr + social networks
- Send mail on mailings-list
- Send news on OpenSource web sites (if major beta or release)

1
build/rpm/conf.php Executable file → Normal file
View File

@@ -5,4 +5,3 @@
//
// This file will be filled by installer
//
?>

0
build/rpm/dolibarr-forrpm.patch Executable file → Normal file
View File

0
build/rpm/dolibarr.desktop Executable file → Normal file
View File

9
build/rpm/dolibarr_fedora.spec Executable file → Normal file
View File

@@ -333,11 +333,4 @@ fi
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
%changelog
* Sat Dec 27 2014 Laurent Destailleur 3.6.2-0.3
- Upstream release
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
- Upstream release
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
__CHANGELOGSTRING__

10
build/rpm/dolibarr_generic.spec Executable file → Normal file
View File

@@ -569,12 +569,4 @@ fi
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
%changelog
* Sat Dec 27 2014 Laurent Destailleur 3.6.2-0.3
- Upstream release
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
- Upstream release
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
__CHANGELOGSTRING__

10
build/rpm/dolibarr_mandriva.spec Executable file → Normal file
View File

@@ -338,12 +338,4 @@ fi
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
%changelog
* Sat Dec 27 2014 Laurent Destailleur 3.6.2-0.3
- Upstream release
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
- Upstream release
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
__CHANGELOGSTRING__

10
build/rpm/dolibarr_opensuse.spec Executable file → Normal file
View File

@@ -349,12 +349,4 @@ fi
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
%changelog
* Sat Dec 27 2014 Laurent Destailleur 3.6.2-0.3
- Upstream release
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
- Upstream release
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
__CHANGELOGSTRING__

0
build/rpm/file_contexts.dolibarr Executable file → Normal file
View File

2
build/rpm/install.forced.php.fedora Executable file → Normal file
View File

@@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH='';
//$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui';
//$force_dolibarr_js_JQUERY_FLOT='/javascript/flot';
$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf';
?>

1
build/rpm/install.forced.php.generic Executable file → Normal file
View File

@@ -20,4 +20,3 @@ $force_install_lockinstall='444';
// Value to overwrite path to use shared libraries/fonts instead of embedded one
// We don't force any external lib with generic package
?>

2
build/rpm/install.forced.php.mandriva Executable file → Normal file
View File

@@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH='';
//$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui';
//$force_dolibarr_js_JQUERY_FLOT='/javascript/flot';
$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf';
?>

2
build/rpm/install.forced.php.opensuse Executable file → Normal file
View File

@@ -31,5 +31,3 @@ $force_dolibarr_lib_TCPDF_PATH='';
//$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui';
//$force_dolibarr_js_JQUERY_FLOT='/javascript/flot';
$force_dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf';
?>

View File

@@ -0,0 +1,18 @@
<VirtualHost *:80>
DocumentRoot %TRAVIS_BUILD_DIR%/htdocs
<Directory "%TRAVIS_BUILD_DIR%/htdocs">
Options FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order deny,allow
Allow from all
</Directory>
# Wire up Apache to use Travis CI's php-fpm.
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule>
</VirtualHost>

View File

@@ -6,24 +6,32 @@
"homepage": "http://www.dolibarr.org",
"license": "GPL-3.0+",
"support": {
"issues": "https://doliforge.org/projects/dolibarr",
"issues": "https://github.com/Dolibarr/dolibarr/issues",
"forum": "http://www.dolibarr.org/forum",
"wiki": "http://wiki.dolibarr.org"
"wiki": "http://wiki.dolibarr.org",
"irc": "irc://chat.freenode.net/dolibarr",
"source": "https://github.com/Dolibarr/dolibarr"
},
"require": {
"php": ">=5.3.0",
"ext-gd": "*",
"ext-curl": "*"
},
"suggest": {
"ext-mysqli": "*",
"ext-pgsql": "*",
"ext-mssql": "*",
"ext-pdo_sqlite": "*",
"ext-imagick": "*",
"ext-mcrypt": "*",
"ext-openssl": "*",
"ext-mbstring": "*",
"ext-soap": "*"
"ext-mysqlnd": "To use with MySQL or MariaDB",
"ext-mysqli": "To use with MySQL or MariaDB",
"ext-pgsql": "To use with PostgreSQL",
"ext-mssql": "To use with MSSQL (experimental)",
"ext-pdo_sqlite": "To use with SQLite (experimental)",
"ext-gd": "Image manipulation (Required but maybe built-in PHP)",
"ext-imagick": "Image manipulation (TCPDF)",
"ext-mcrypt": "(Required but maybe built-in PHP)",
"ext-openssl": "Secure connections (Emails, SOAP…)",
"ext-mbstring": "Handle non UTF-8 databases",
"ext-soap": "Native SOAP",
"ext-zip": "ODT and Excel support",
"ext-xml": "Excel support"
},
"config": {
"vendor-dir": "htdocs/includes"
}
}

0
dev/codesniffer/README Executable file → Normal file
View File

0
dev/codesniffer/php.ini Executable file → Normal file
View File

0
dev/codesniffer/ruleset.dtd Executable file → Normal file
View File

154
dev/codesniffer/ruleset.xml Executable file → Normal file
View File

@@ -12,10 +12,16 @@
<!-- List of all tests -->
<!-- Rules from Internal Standard -->
<rule ref="Internal.NoCodeFound">
<severity>0</severity>
</rule>
<!-- Rules from Generic Standard -->
<rule ref="Generic.CodeAnalysis.EmptyStatement" />
<rule ref="Generic.CodeAnalysis.EmptyStatement.DetectedCATCH">
@@ -41,9 +47,6 @@
<severity>0</severity>
</rule>
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
<!-- <rule ref="Zend.Files.ClosingTag"/> -->
<!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> -->
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" />
@@ -161,8 +164,6 @@
<severity>0</severity>
</rule>
<rule ref="Generic.VersionControl.SubversionProperties" />
<!-- Disallow usage of tab -->
<!-- <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> -->
@@ -170,84 +171,46 @@
<!-- Disabled as this does not support tab -->
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
<rule ref="PEAR.Classes.ClassDeclaration" />
<!-- Rules from PEAR Standard -->
<rule ref="PEAR.Classes.ClassDeclaration" />
<!-- Check for duplicate class names -->
<!-- <rule ref="Generic.Classes.DuplicateClassName" /> -->
<rule ref="PEAR.Commenting.ClassComment" />
<rule ref="PEAR.Commenting.ClassComment.MissingTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@authorTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@linkTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@packageTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName">
<severity>0</severity>
</rule>
<!-- TODO Remove this and fix reported errors -->
<rule ref="PEAR.Commenting.ClassComment.Missing">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn">
<rule ref="PEAR.Commenting.ClassComment.MissingTag" />
<rule ref="PEAR.Commenting.ClassComment.MissingAuthorTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired">
<rule ref="PEAR.Commenting.ClassComment.MissingCategoryTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.Missing">
<rule ref="PEAR.Commenting.ClassComment.MissingLicenseTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@authorTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@linkTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@packageTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName">
<severity>0</severity>
</rule>
<!-- TODO Remove this and fix reported errors -->
<rule ref="PEAR.Commenting.ClassComment.Missing">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.Missing">
<rule ref="PEAR.Commenting.ClassComment.MissingLinkTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.MissingPackageTag">
<severity>0</severity>
</rule>
<!--
<rule ref="PEAR.Commenting.FileComment" />
<rule ref="PEAR.Commenting.FileComment.WrongStyle">
@@ -260,15 +223,40 @@
<severity>0</severity>
</rule>
-->
<rule ref="PEAR.Commenting.FunctionComment.WrongStyle">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment" />
<rule ref="PEAR.Commenting.FunctionComment.Empty">
<severity>5</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment" />
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.Missing">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType" />
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName" />
<rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.WrongStyle">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingBeforeParamType">
<severity>0</severity>
</rule>
@@ -301,6 +289,15 @@
<rule ref="PEAR.Functions.FunctionCallSignature" />
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.Indent">
<severity>0</severity>
</rule>
@@ -316,12 +313,6 @@
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterCloseBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.ValidDefaultValue" />
@@ -353,15 +344,20 @@
<rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCaptial">
<severity>0</severity>
</rule>
<rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps">
<severity>0</severity>
</rule>
<rule ref="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore">
<severity>0</severity>
</rule>
<rule ref="PEAR.NamingConventions.ValidVariableName" />
<!-- This is not in PSR2 -->
<rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore">
<severity>0</severity>
</rule>
<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" />
<!-- Need to be commented to be disabled
@@ -377,4 +373,10 @@
<!-- Already found as a Generic rule -->
<!-- <rule ref="PEAR.WhiteSpace.ScopeIndent" /> -->
<!-- Rules from Zend Standard-->
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
<rule ref="Zend.Files.ClosingTag"/>
</ruleset>

0
dev/codetemplates/README Executable file → Normal file
View File

0
dev/codetemplates/codetemplates.dtd Executable file → Normal file
View File

0
dev/codetemplates/codetemplates.xml Executable file → Normal file
View File

0
dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql Executable file → Normal file
View File

View File

0
dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql Executable file → Normal file
View File

0
dev/dbmodel/emulate_oscommerce/llx_osc_order.sql Executable file → Normal file
View File

0
dev/dbmodel/emulate_oscommerce/llx_osc_product.sql Executable file → Normal file
View File

0
dev/examples/README Executable file → Normal file
View File

0
dev/iso-normes/GURULABS-RPM-GUIDE-v1.0.PDF Executable file → Normal file
View File

0
dev/iso-normes/address_format.txt Executable file → Normal file
View File

0
dev/iso-normes/banknumber_format.txt Executable file → Normal file
View File

0
dev/iso-normes/xmlexport.txt Executable file → Normal file
View File

0
dev/phpunit/README Executable file → Normal file
View File

0
dev/phpunit/eclipse_setup_for_pti_phpunit.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

0
dev/skeletons/build_webservice_from_class.php Normal file → Executable file
View File

0
dev/test/testtcpdf.php Executable file → Normal file
View File

0
doc/images/appicon_128.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
doc/images/appicon_16.ico Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
doc/images/appicon_16.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 544 B

0
doc/images/appicon_32.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 867 B

0
doc/images/appicon_48.ico Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

0
doc/images/appicon_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
doc/images/dolibarr_73x73.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
doc/images/dolibarr_logo.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2002-2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2013 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2013-2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -107,7 +107,7 @@ if ($sall)
foreach ($scrit as $crit)
{
$sql.=" AND (";
if (is_numeric($sall)) $sql.= "d.rowid = ".$sall." OR ";
if (is_numeric($sall)) $sql.= "d.rowid = ".$db->escape($sall)." OR ";
$sql.=" d.firstname LIKE '%".$db->escape($sall)."%' OR d.lastname LIKE '%".$db->escape($sall)."%' OR d.societe LIKE '%".$db->escape($sall)."%'";
$sql.=" OR d.email LIKE '%".$db->escape($sall)."%' OR d.login LIKE '%".$db->escape($sall)."%' OR d.address LIKE '%".$db->escape($sall)."%'";
$sql.=" OR d.town LIKE '%".$db->escape($sall)."%' OR d.note LIKE '%".$db->escape($sall)."%')";
@@ -115,7 +115,7 @@ if ($sall)
}
if ($type > 0)
{
$sql.=" AND t.rowid=".$type;
$sql.=" AND t.rowid=".$db->escape($type);
}
if (isset($_GET["statut"]) || isset($_POST["statut"]))
{
@@ -189,17 +189,17 @@ if ($resql)
}
$param="";
if ($statut != "") $param.="&statut=".$statut;
if ($search_nom) $param.="&search_nom=".$search_nom;
if ($search_login) $param.="&search_login=".$search_login;
if ($search_email) $param.="&search_email=".$search_email;
if ($filter) $param.="&filter=".$filter;
if ($type > 0) $param.="&type=".$type;
if ($statut != "") $param.="&statut=".htmlspecialchars($statut);
if ($search_nom) $param.="&search_nom=".htmlspecialchars($search_nom);
if ($search_login) $param.="&search_login=".htmlspecialchars($search_login);
if ($search_email) $param.="&search_email=".htmlspecialchars($search_email);
if ($filter) $param.="&filter=".htmlspecialchars($filter);
if ($type > 0) $param.="&type=".htmlspecialchars($type);
print_barre_liste($titre,$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
if ($sall)
{
print $langs->trans("Filter")." (".$langs->trans("Ref").", ".$langs->trans("Lastname").", ".$langs->trans("Firstname").", ".$langs->trans("EMail").", ".$langs->trans("Address")." ".$langs->trans("or")." ".$langs->trans("Town")."): ".$sall;
print $langs->trans("Filter")." (".$langs->trans("Ref").", ".$langs->trans("Lastname").", ".$langs->trans("Firstname").", ".$langs->trans("EMail").", ".$langs->trans("Address")." ".$langs->trans("or")." ".$langs->trans("Town")."): ".htmlspecialchars($sall);
}
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].($param?'?'.$param:'').'">';
@@ -237,13 +237,13 @@ if ($resql)
print '<tr class="liste_titre">';
print '<td class="liste_titre" align="left">';
print '<input class="flat" type="text" name="search_ref" value="'.$search_ref.'" size="4"></td>';
print '<input class="flat" type="text" name="search_ref" value="'.htmlspecialchars($search_ref).'" size="4"></td>';
print '<td class="liste_titre" align="left">';
print '<input class="flat" type="text" name="search_lastname" value="'.$search_lastname.'" size="12"></td>';
print '<input class="flat" type="text" name="search_lastname" value="'.htmlspecialchars($search_lastname).'" size="12"></td>';
print '<td class="liste_titre" align="left">';
print '<input class="flat" type="text" name="search_login" value="'.$search_login.'" size="7"></td>';
print '<input class="flat" type="text" name="search_login" value="'.htmlspecialchars($search_login).'" size="7"></td>';
print '<td class="liste_titre">';
$listetype=$membertypestatic->liste_array();
@@ -253,7 +253,7 @@ if ($resql)
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="left">';
print '<input class="flat" type="text" name="search_email" value="'.$search_email.'" size="12"></td>';
print '<input class="flat" type="text" name="search_email" value="'.htmlspecialchars($search_email).'" size="12"></td>';
print '<td class="liste_titre">&nbsp;</td>';

View File

@@ -1,6 +1,7 @@
<?php
/* Copyright (C) 2008-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
/* Copyright (C) 2008-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2011-2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -88,7 +89,7 @@ if ($actionsave)
// Save nb of agenda
if (! $error)
{
$res=dolibarr_set_const($db,'AGENDA_EXT_NB',trim(GETPOST('AGENDA_EXT_NB','alpha')),'chaine',0,'',$conf->entity);
$res=dolibarr_set_const($db,'AGENDA_EXT_NB',trim(GETPOST('AGENDA_EXT_NB','int')),'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
if (empty($conf->global->AGENDA_EXT_NB)) $conf->global->AGENDA_EXT_NB=5;
$MAXAGENDA=empty($conf->global->AGENDA_EXT_NB)?5:$conf->global->AGENDA_EXT_NB;
@@ -201,9 +202,9 @@ while ($i <= $MAXAGENDA)
// Nb
print '<td width="180" class="nowrap">'.$langs->trans("AgendaExtNb",$key)."</td>";
// Name
print '<td><input type="text" class="flat hideifnotset" name="agenda_ext_name'.$key.'" value="'. (GETPOST('agenda_ext_name'.$key)?GETPOST('agenda_ext_name'.$key):$conf->global->$name) . '" size="28"></td>';
print '<td><input type="text" class="flat hideifnotset" name="agenda_ext_name'.$key.'" value="'. (GETPOST('agenda_ext_name'.$key)?GETPOST('agenda_ext_name'.$key, 'alpha'):$conf->global->$name) . '" size="28"></td>';
// URL
print '<td><input type="url" class="flat hideifnotset" name="agenda_ext_src'.$key.'" value="'. (GETPOST('agenda_ext_src'.$key)?GETPOST('agenda_ext_src'.$key):$conf->global->$src) . '" size="60"></td>';
print '<td><input type="url" class="flat hideifnotset" name="agenda_ext_src'.$key.'" value="'. (GETPOST('agenda_ext_src'.$key)?GETPOST('agenda_ext_src'.$key, 'alpha'):$conf->global->$src) . '" size="60"></td>';
// Color (Possible colors are limited by Google)
print '<td class="nowrap" align="right">';
//print $formadmin->selectColor($conf->global->$color, "google_agenda_color".$key, $colorlist);

View File

@@ -6,7 +6,7 @@
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2011 Remy Younes <ryounes@gmail.com>
* Copyright (C) 2012-2013 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2012-2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@ltairis.fr>
* Copyright (C) 2011-2012 Alexandre Spangaro <alexandre.spangaro@gmail.com>
*
@@ -516,7 +516,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$i=0;
foreach ($listfieldinsert as $f => $value)
{
if ($value == 'price' || preg_match('/^amount/i',$value)) {
if ($value == 'price' || preg_match('/^amount/i',$value) || preg_match('/^localtax/i',$value) || $value == 'taux') {
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
}
else if ($value == 'entity') {
@@ -564,7 +564,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$i = 0;
foreach ($listfieldmodify as $field)
{
if ($field == 'price' || preg_match('/^amount/i',$field)) {
if ($field == 'price' || preg_match('/^amount/i',$field) || preg_match('/^localtax/i',$field) || $field == 'taux') {
$_POST[$listfieldvalue[$i]] = price2num($_POST[$listfieldvalue[$i]],'MU');
}
else if ($field == 'entity') {
@@ -947,7 +947,8 @@ if ($id)
{
$showfield=1;
$align="left";
$valuetoshow=$obj->$fieldlist[$field];
$nameoffield = $fieldlist[$field];
$valuetoshow=$obj->$nameoffield;
if ($value == 'element')
{
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
@@ -980,77 +981,77 @@ if ($id)
else if ($fieldlist[$field]=='libelle_facture') {
$langs->load("bills");
$key=$langs->trans("PaymentCondition".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code)?$key:$obj->$nameoffield);
$valuetoshow=nl2br($valuetoshow);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_pays') {
$key=$langs->trans("Country".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_availability') {
$langs->load("propal");
$key=$langs->trans("AvailabilityType".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_actioncomm') {
$key=$langs->trans("Action".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if (! empty($obj->code_iso) && $fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_currencies') {
$key=$langs->trans("Currency".strtoupper($obj->code_iso));
$valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_typent') {
$key=$langs->trans(strtoupper($obj->code));
$valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_prospectlevel') {
$key=$langs->trans(strtoupper($obj->code));
$valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_civilite') {
$key=$langs->trans("Civility".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_type_contact') {
$langs->load('agenda');
$key=$langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_payment_term') {
$langs->load("bills");
$key=$langs->trans("PaymentConditionShort".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_paiement') {
$langs->load("bills");
$key=$langs->trans("PaymentType".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='label' && $tabname[$id]==MAIN_DB_PREFIX.'c_input_reason') {
$key=$langs->trans("DemandReasonType".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_input_method') {
$langs->load("orders");
$key=$langs->trans($obj->code);
$valuetoshow=($obj->code && $key != $obj->code)?$key:$obj->$fieldlist[$field];
$valuetoshow=($obj->code && $key != $obj->code)?$key:$obj->$nameoffield;
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_shipment_mode') {
$langs->load("sendings");
$key=$langs->trans("SendingMethod".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
$valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code)?$key:$obj->$nameoffield);
}
else if ($fieldlist[$field] == 'libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_paper_format')
{
$key = $langs->trans('PaperFormat'.strtoupper($obj->code));
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->$fieldlist[$field]);
$valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->$nameoffield);
}
else if ($fieldlist[$field] == 'libelle' && $tabname[$id] == MAIN_DB_PREFIX.'c_type_fees')
{
$langs->load('trips');
$key = $langs->trans(strtoupper($obj->code));
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->$fieldlist[$field]);
$valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->$nameoffield);
}
else if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='country_id') {
$showfield=0;
@@ -1062,7 +1063,7 @@ if ($id)
else if (($fieldlist[$field] == 'unit') && ($tabname[$id] == MAIN_DB_PREFIX.'c_paper_format'))
{
$key = $langs->trans('SizeUnit'.strtolower($obj->unit));
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->$fieldlist[$field]);
$valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->$nameoffield);
}
else if ($fieldlist[$field]=='localtax1_type') {
@@ -1080,17 +1081,20 @@ if ($id)
$align="center";
}
else if ($fieldlist[$field]=='localtax1') {
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
if ($obj->localtax1 == 0)
$valuetoshow = '';
$align="right";
}
else if ($fieldlist[$field]=='localtax2') {
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
if ($obj->localtax2 == 0)
$valuetoshow = '';
$align="right";
}
else if (in_array($fieldlist[$field],array('taux','localtax1','localtax2')))
{
$valuetoshow = price($valuetoshow, 0, $langs, 0, 0);
$align="right";
}
else if (in_array($fieldlist[$field],array('recuperableonly')))
@@ -1116,7 +1120,7 @@ if ($id)
if (isset($obj->type) && in_array($obj->type, array('system', 'systemauto'))) $iserasable=0;
$url = $_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(! empty($obj->rowid)?$obj->rowid:(! empty($obj->code)?$obj->code:'')).'&amp;code='.(! empty($obj->code)?$obj->code:'').'&amp;id='.$id.'&amp;';
$url = $_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(! empty($obj->rowid)?$obj->rowid:(! empty($obj->code)?$obj->code:'')).'&amp;code='.(! empty($obj->code)?urlencode($obj->code):'').'&amp;id='.$id.'&amp;';
// Active
print '<td align="center" class="nowrap">';
@@ -1239,6 +1243,7 @@ function fieldList($fieldlist,$obj='',$tabname='')
foreach ($fieldlist as $field => $value)
{
$fieldname = $fieldlist[$field];
if ($fieldlist[$field] == 'country') {
if (in_array('region_id',$fieldlist)) { print '<td>&nbsp;</td>'; continue; } // For region page, we do not show the country input
print '<td>';
@@ -1246,7 +1251,7 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '</td>';
}
elseif ($fieldlist[$field] == 'country_id') {
$country_id = (! empty($obj->$fieldlist[$field]) ? $obj->$fieldlist[$field] : 0);
$country_id = (! empty($obj->$fieldname) ? $obj->$fieldname : 0);
print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$country_id.'">';
}
elseif ($fieldlist[$field] == 'region') {
@@ -1255,7 +1260,7 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '</td>';
}
elseif ($fieldlist[$field] == 'region_id') {
$region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0);
$region_id = (! empty($obj->$fieldname)?$obj->$fieldname:0);
print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">';
}
elseif ($fieldlist[$field] == 'lang') {
@@ -1267,14 +1272,14 @@ function fieldList($fieldlist,$obj='',$tabname='')
elseif ($fieldlist[$field] == 'element')
{
print '<td>';
print $form->selectarray('element', $elementList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''));
print $form->selectarray('element', $elementList,(! empty($obj->$fieldname)?$obj->$fieldname:''));
print '</td>';
}
// La source de l'element (pour les type de contact)
elseif ($fieldlist[$field] == 'source')
{
print '<td>';
print $form->selectarray('source', $sourceList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''));
print $form->selectarray('source', $sourceList,(! empty($obj->$fieldname)?$obj->$fieldname:''));
print '</td>';
}
elseif ($fieldlist[$field] == 'type' && $tabname == MAIN_DB_PREFIX."c_actioncomm")
@@ -1285,24 +1290,24 @@ function fieldList($fieldlist,$obj='',$tabname='')
}
elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm' || $fieldlist[$field] == 'deductible') {
print '<td>';
print $form->selectyesno($fieldlist[$field],(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''),1);
print $form->selectyesno($fieldlist[$field],(! empty($obj->$fieldname)?$obj->$fieldname:''),1);
print '</td>';
}
elseif (in_array($fieldlist[$field],array('nbjour','decalage','taux','localtax1','localtax2'))) {
$align="left";
if (in_array($fieldlist[$field],array('taux','localtax1','localtax2'))) $align="right"; // Fields aligned on right
print '<td align="'.$align.'">';
print '<input type="text" class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">';
print '<input type="text" class="flat" value="'.(isset($obj->$fieldname)?$obj->$fieldname:'').'" size="3" name="'.$fieldlist[$field].'">';
print '</td>';
}
elseif ($fieldlist[$field] == 'libelle_facture') {
print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea></td>';
print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldname)?$obj->$fieldname:'').'</textarea></td>';
}
elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i',$fieldlist[$field])) {
print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')).'" size="8" name="'.$fieldlist[$field].'"></td>';
print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldname)?$obj->$fieldname:'')).'" size="8" name="'.$fieldlist[$field].'"></td>';
}
elseif ($fieldlist[$field] == 'code' && isset($obj->$fieldlist[$field])) {
print '<td><input type="text" class="flat" value="'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="10" name="'.$fieldlist[$field].'"></td>';
elseif ($fieldlist[$field] == 'code' && isset($obj->$fieldname)) {
print '<td><input type="text" class="flat" value="'.(! empty($obj->$fieldname)?$obj->$fieldname:'').'" size="10" name="'.$fieldlist[$field].'"></td>';
}
elseif ($fieldlist[$field]=='unit') {
print '<td>';
@@ -1312,14 +1317,14 @@ function fieldList($fieldlist,$obj='',$tabname='')
'point' => $langs->trans('SizeUnitpoint'),
'inch' => $langs->trans('SizeUnitinch')
);
print $form->selectarray('unit', $units, (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''), 0, 0, 0);
print $form->selectarray('unit', $units, (! empty($obj->$fieldname)?$obj->$fieldname:''), 0, 0, 0);
print '</td>';
}
// Le type de taxe locale
elseif ($fieldlist[$field] == 'localtax1_type' || $fieldlist[$field] == 'localtax2_type')
{
print '<td align="center">';
print $form->selectarray($fieldlist[$field], $localtax_typeList, (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''));
print $form->selectarray($fieldlist[$field], $localtax_typeList, (! empty($obj->$fieldname)?$obj->$fieldname:''));
print '</td>';
}
else
@@ -1331,7 +1336,7 @@ function fieldList($fieldlist,$obj='',$tabname='')
if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';
if ($fieldlist[$field]=='accountancy_code_sell') $size='size="10" ';
if ($fieldlist[$field]=='accountancy_code_buy') $size='size="10" ';
print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">';
print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldname)?$obj->$fieldname:'').'" name="'.$fieldlist[$field].'">';
print '</td>';
}
}

View File

@@ -100,6 +100,7 @@ print '<br>';
print '<br>';
// Add hook to add information
$parameters=array();
$reshook=$hookmanager->executeHooks('addHomeSetup',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
print $hookmanager->resPrint;
if (empty($reshook))

View File

@@ -56,6 +56,9 @@ $object = new Categorie($db);
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('categorycard'));
/*
* Actions
*/

View File

@@ -64,6 +64,9 @@ $object = new Categorie($db);
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('categorycard'));
/*
* Actions
*/

View File

@@ -63,6 +63,9 @@ $type=$object->type;
$extrafields = new ExtraFields($db);
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('categorycard'));
/*
* Actions
*/

View File

@@ -1060,6 +1060,7 @@ class ActionComm extends CommonObject
$this->datef=$now;
$this->author=$user;
$this->usermod=$user;
$this->usertodo=$user;
$this->fulldayevent=0;
$this->punctual=0;
$this->percentage=0;

View File

@@ -1038,7 +1038,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
$numicals[dol_string_nospecial($event->icalname)]++;
}
$color=$event->icalcolor;
$cssclass=(! empty($event->icalname)?'family_'.dol_string_nospecial($event->icalname):'family_other');
$cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other');
}
else if ($event->type_code == 'BIRTHDAY') { $numbirthday++; $colorindex=2; $cssclass='family_birthday'; }
else { $numother++; $cssclass='family_other'; }

View File

@@ -79,76 +79,78 @@ $object = new Societe($db);
$parameters = array('socid' => $id);
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some
//Some actions show a "cancel" input submit button with name="cancel"
$cancelbutton = GETPOST('cancel');
if (empty($reshook)) {
//Some actions show a "cancel" input submit button with name="cancel"
$cancelbutton = GETPOST('cancel');
if ($action == 'setcustomeraccountancycode')
{
if (!$cancelbutton) {
$result=$object->fetch($id);
$object->code_compta=$_POST["customeraccountancycode"];
$result=$object->update($object->id,$user,1,1,0);
if ($result < 0)
{
$mesgs[]=join(',',$object->errors);
if ($action == 'setcustomeraccountancycode')
{
if (!$cancelbutton) {
$result=$object->fetch($id);
$object->code_compta=$_POST["customeraccountancycode"];
$result=$object->update($object->id,$user,1,1,0);
if ($result < 0)
{
$mesgs[]=join(',',$object->errors);
}
$action="";
}
$action="";
}
}
// conditions de reglement
if ($action == 'setconditions' && $user->rights->societe->creer)
{
$object->fetch($id);
$result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int'));
if ($result < 0) dol_print_error($db,$object->error);
}
// mode de reglement
if ($action == 'setmode' && $user->rights->societe->creer)
{
$object->fetch($id);
$result=$object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
if ($result < 0) dol_print_error($db,$object->error);
}
// assujetissement a la TVA
if ($action == 'setassujtva' && $user->rights->societe->creer)
{
$object->fetch($id);
$object->tva_assuj=$_POST['assujtva_value'];
// TODO move to DAO class
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET tva_assuj='".$_POST['assujtva_value']."' WHERE rowid='".$id."'";
$result = $db->query($sql);
if (! $result) dol_print_error($result);
}
// set prospect level
if ($action == 'setprospectlevel' && $user->rights->societe->creer)
{
$object->fetch($id);
$object->fk_prospectlevel=GETPOST('prospect_level_id','alpha');
$result=$object->set_prospect_level($user);
if ($result < 0) setEventMessage($object->error,'errors');
}
// Update communication level
if ($action == 'cstc')
{
$object->fetch($id);
$object->stcomm_id=GETPOST('stcomm','int');
$result=$object->set_commnucation_level($user);
if ($result < 0) setEventMessage($object->error,'errors');
}
// Update communication level
if ($action == 'setOutstandingBill')
{
if (!$cancelbutton) {
// conditions de reglement
if ($action == 'setconditions' && $user->rights->societe->creer)
{
$object->fetch($id);
$object->outstanding_limit = GETPOST('OutstandingBill');
$result = $object->set_OutstandingBill($user);
if ($result < 0) {
setEventMessage($object->error, 'errors');
$result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int'));
if ($result < 0) dol_print_error($db,$object->error);
}
// mode de reglement
if ($action == 'setmode' && $user->rights->societe->creer)
{
$object->fetch($id);
$result=$object->setPaymentMethods(GETPOST('mode_reglement_id','int'));
if ($result < 0) dol_print_error($db,$object->error);
}
// assujetissement a la TVA
if ($action == 'setassujtva' && $user->rights->societe->creer)
{
$object->fetch($id);
$object->tva_assuj=$_POST['assujtva_value'];
// TODO move to DAO class
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET tva_assuj='".$_POST['assujtva_value']."' WHERE rowid='".$id."'";
$result = $db->query($sql);
if (! $result) dol_print_error($result);
}
// set prospect level
if ($action == 'setprospectlevel' && $user->rights->societe->creer)
{
$object->fetch($id);
$object->fk_prospectlevel=GETPOST('prospect_level_id','alpha');
$result=$object->set_prospect_level($user);
if ($result < 0) setEventMessage($object->error,'errors');
}
// Update communication level
if ($action == 'cstc')
{
$object->fetch($id);
$object->stcomm_id=GETPOST('stcomm','int');
$result=$object->set_commnucation_level($user);
if ($result < 0) setEventMessage($object->error,'errors');
}
// Update communication level
if ($action == 'setOutstandingBill')
{
if (!$cancelbutton) {
$object->fetch($id);
$object->outstanding_limit = GETPOST('OutstandingBill');
$result = $object->set_OutstandingBill($user);
if ($result < 0) {
setEventMessage($object->error, 'errors');
}
}
}
}

View File

@@ -102,446 +102,390 @@ $object->substitutionarrayfortest=array(
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
// Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes')
{
if (empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"]))
if (empty($reshook)) {
// Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes')
{
$mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>';
}
else
{
$result=$object->createFromClone($object->id,$_REQUEST["clone_content"],$_REQUEST["clone_receivers"]);
if ($result > 0)
if (empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_receivers"]))
{
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
exit;
$mesg='<div class="error">'.$langs->trans("NoCloneOptionsSpecified").'</div>';
}
else
{
$mesg=$object->error;
}
}
$action='';
}
// Action send emailing for everybody
if ($action == 'sendallconfirmed' && $confirm == 'yes')
{
if (empty($conf->global->MAILING_LIMIT_SENDBYWEB))
{
// Pour des raisons de securite, on ne permet pas cette fonction via l'IHM,
// on affiche donc juste un message
$mesg='<div class="warning">'.$langs->trans("MailingNeedCommand").'</div>';
$mesg.='<br><textarea cols="70" rows="'.ROWS_2.'" wrap="soft">php ./scripts/emailings/mailing-send.php '.$object->id.'</textarea>';
$mesg.='<br><br><div class="warning">'.$langs->trans("MailingNeedCommand2").'</div>';
$action='';
}
else if ($conf->global->MAILING_LIMIT_SENDBYWEB < 0)
{
$mesg='<div class="warning">'.$langs->trans("NotEnoughPermissions").'</div>';
$action='';
}
else
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
if ($object->statut == 0)
{
dol_print_error('','ErrorMailIsNotValidated');
exit;
}
$id = $object->id;
$subject = $object->sujet;
$message = $object->body;
$from = $object->email_from;
$replyto = $object->email_replyto;
$errorsto = $object->email_errorsto;
// Le message est-il en html
$msgishtml=-1; // Unknown by default
if (preg_match('/[\s\t]*<html>/i',$message)) $msgishtml=1;
// Warning, we must not use begin-commit transaction here
// because we want to save update for each mail sent.
$nbok=0; $nbko=0;
// On choisit les mails non deja envoyes pour ce mailing (statut=0)
// ou envoyes en erreur (statut=-1)
$sql = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.source_url, mc.source_id, mc.source_type, mc.tag";
$sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc";
$sql .= " WHERE mc.statut < 1 AND mc.fk_mailing = ".$object->id;
dol_syslog("fiche.php: select targets sql=".$sql, LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql); // nb of possible recipients
if ($num)
$result=$object->createFromClone($object->id,$_REQUEST["clone_content"],$_REQUEST["clone_receivers"]);
if ($result > 0)
{
dol_syslog("comm/mailing/fiche.php: nb of targets = ".$num, LOG_DEBUG);
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
exit;
}
else
{
$mesg=$object->error;
}
}
$action='';
}
$now=dol_now();
// Action send emailing for everybody
if ($action == 'sendallconfirmed' && $confirm == 'yes')
{
if (empty($conf->global->MAILING_LIMIT_SENDBYWEB))
{
// Pour des raisons de securite, on ne permet pas cette fonction via l'IHM,
// on affiche donc juste un message
$mesg='<div class="warning">'.$langs->trans("MailingNeedCommand").'</div>';
$mesg.='<br><textarea cols="70" rows="'.ROWS_2.'" wrap="soft">php ./scripts/emailings/mailing-send.php '.$object->id.'</textarea>';
$mesg.='<br><br><div class="warning">'.$langs->trans("MailingNeedCommand2").'</div>';
$action='';
}
else if ($conf->global->MAILING_LIMIT_SENDBYWEB < 0)
{
$mesg='<div class="warning">'.$langs->trans("NotEnoughPermissions").'</div>';
$action='';
}
else
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
// Positionne date debut envoi
$sql="UPDATE ".MAIN_DB_PREFIX."mailing SET date_envoi=".$db->idate($now)." WHERE rowid=".$object->id;
if ($object->statut == 0)
{
dol_print_error('','ErrorMailIsNotValidated');
exit;
}
$id = $object->id;
$subject = $object->sujet;
$message = $object->body;
$from = $object->email_from;
$replyto = $object->email_replyto;
$errorsto = $object->email_errorsto;
// Le message est-il en html
$msgishtml=-1; // Unknown by default
if (preg_match('/[\s\t]*<html>/i',$message)) $msgishtml=1;
// Warning, we must not use begin-commit transaction here
// because we want to save update for each mail sent.
$nbok=0; $nbko=0;
// On choisit les mails non deja envoyes pour ce mailing (statut=0)
// ou envoyes en erreur (statut=-1)
$sql = "SELECT mc.rowid, mc.lastname, mc.firstname, mc.email, mc.other, mc.source_url, mc.source_id, mc.source_type, mc.tag";
$sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc";
$sql .= " WHERE mc.statut < 1 AND mc.fk_mailing = ".$object->id;
dol_syslog("fiche.php: select targets sql=".$sql, LOG_DEBUG);
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql); // nb of possible recipients
if ($num)
{
dol_syslog("comm/mailing/fiche.php: nb of targets = ".$num, LOG_DEBUG);
$now=dol_now();
// Positionne date debut envoi
$sql="UPDATE ".MAIN_DB_PREFIX."mailing SET date_envoi='".$db->idate($now)."' WHERE rowid=".$object->id;
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
// Loop on each email and send it
$i = 0;
while ($i < $num && $i < $conf->global->MAILING_LIMIT_SENDBYWEB)
{
$res=1;
$obj = $db->fetch_object($resql);
// sendto en RFC2822
$sendto = str_replace(',',' ',dolGetFirstLastname($obj->firstname, $obj->lastname))." <".$obj->email.">";
// Make substitutions on topic and body. From (AA=YY;BB=CC;...) we keep YY, CC, ...
$other=explode(';',$obj->other);
$tmpfield=explode('=',$other[0],2); $other1=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[1],2); $other2=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[2],2); $other3=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[3],2); $other4=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[4],2); $other5=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
// Array of possible substitutions (See also fie mailing-send.php that should manage same substitutions)
$substitutionarray=array(
'__ID__' => $obj->source_id,
'__EMAIL__' => $obj->email,
'__LASTNAME__' => $obj->lastname,
'__FIRSTNAME__' => $obj->firstname,
'__MAILTOEMAIL__' => '<a href="mailto:'.$obj->email.'">'.$obj->email.'</a>',
'__OTHER1__' => $other1,
'__OTHER2__' => $other2,
'__OTHER3__' => $other3,
'__OTHER4__' => $other4,
'__OTHER5__' => $other5,
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
'__UNSUBSCRIBE__' => '<a href="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-unsubscribe.php?tag='.$obj->tag.'&unsuscrib=1&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" target="_blank">'.$langs->trans("MailUnsubcribe").'</a>'
);
if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN))
{
$substitutionarray['__SECUREKEYPAYPAL__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2);
if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2);
else $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2);
}
$substitutionisok=true;
complete_substitutions_array($substitutionarray, $langs);
$newsubject=make_substitutions($subject,$substitutionarray);
$newmessage=make_substitutions($message,$substitutionarray);
$arr_file = array();
$arr_mime = array();
$arr_name = array();
$arr_css = array();
$listofpaths=dol_dir_list($upload_dir,'all',0,'','','name',SORT_ASC,0);
if (count($listofpaths))
{
foreach($listofpaths as $key => $val)
{
$arr_file[]=$listofpaths[$key]['fullname'];
$arr_mime[]=dol_mimetype($listofpaths[$key]['name']);
$arr_name[]=$listofpaths[$key]['name'];
}
}
// Fabrication du mail
$mail = new CMailFile($newsubject, $sendto, $from, $newmessage, $arr_file, $arr_mime, $arr_name, '', '', 0, $msgishtml, $errorsto, $arr_css);
if ($mail->error)
{
$res=0;
}
if (! $substitutionisok)
{
$mail->error='Some substitution failed';
$res=0;
}
// Send mail
if ($res)
{
$res=$mail->sendfile();
}
if ($res)
{
// Mail successful
$nbok++;
dol_syslog("comm/mailing/fiche.php: ok for #".$i.($mail->error?' - '.$mail->error:''), LOG_DEBUG);
$sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
$sql.=" SET statut=1, date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid;
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
else
{
//if cheack read is use then update prospect contact status
if (strpos($message, '__CHECK_READ__') !== false)
{
//Update status communication of thirdparty prospect
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid=".$obj->rowid.")";
dol_syslog("fiche.php: set prospect thirdparty status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
//Update status communication of contact prospect
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.rowid=".$obj->rowid." AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)";
dol_syslog("fiche.php: set prospect contact status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
}
}
//test if CHECK READ change statut prospect contact
}
else
{
// Mail failed
$nbko++;
dol_syslog("comm/mailing/fiche.php: error for #".$i.($mail->error?' - '.$mail->error:''), LOG_WARNING);
$sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
$sql.=" SET statut=-1, date_envoi=".$db->idate($now)." WHERE rowid=".$obj->rowid;
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
}
$i++;
}
}
else
{
setEventMessage($langs->transnoentitiesnoconv("NoMoreRecipientToSendTo"));
}
// Loop finished, set global statut of mail
if ($nbko > 0)
{
$statut=2; // Status 'sent partially' (because at least one error)
if ($nbok > 0) setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
else setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
else
{
if ($nbok >= $num)
{
$statut=3; // Send to everybody
setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
else
{
$statut=2; // Status 'sent partially' (because not send to everybody)
setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
}
$sql="UPDATE ".MAIN_DB_PREFIX."mailing SET statut=".$statut." WHERE rowid=".$object->id;
dol_syslog("comm/mailing/fiche.php: update global status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
// Loop on each email and send it
$i = 0;
while ($i < $num && $i < $conf->global->MAILING_LIMIT_SENDBYWEB)
{
$res=1;
$obj = $db->fetch_object($resql);
// sendto en RFC2822
$sendto = str_replace(',',' ',dolGetFirstLastname($obj->firstname, $obj->lastname))." <".$obj->email.">";
// Make substitutions on topic and body. From (AA=YY;BB=CC;...) we keep YY, CC, ...
$other=explode(';',$obj->other);
$tmpfield=explode('=',$other[0],2); $other1=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[1],2); $other2=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[2],2); $other3=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[3],2); $other4=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
$tmpfield=explode('=',$other[4],2); $other5=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]);
// Array of possible substitutions (See also fie mailing-send.php that should manage same substitutions)
$substitutionarray=array(
'__ID__' => $obj->source_id,
'__EMAIL__' => $obj->email,
'__LASTNAME__' => $obj->lastname,
'__FIRSTNAME__' => $obj->firstname,
'__MAILTOEMAIL__' => '<a href="mailto:'.$obj->email.'">'.$obj->email.'</a>',
'__OTHER1__' => $other1,
'__OTHER2__' => $other2,
'__OTHER3__' => $other3,
'__OTHER4__' => $other4,
'__OTHER5__' => $other5,
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
'__UNSUBSCRIBE__' => '<a href="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-unsubscribe.php?tag='.$obj->tag.'&unsuscrib=1&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" target="_blank">'.$langs->trans("MailUnsubcribe").'</a>'
);
if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN))
{
$substitutionarray['__SECUREKEYPAYPAL__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2);
if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2);
else $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2);
}
$substitutionisok=true;
complete_substitutions_array($substitutionarray, $langs);
$newsubject=make_substitutions($subject,$substitutionarray);
$newmessage=make_substitutions($message,$substitutionarray);
$arr_file = array();
$arr_mime = array();
$arr_name = array();
$arr_css = array();
$listofpaths=dol_dir_list($upload_dir,'all',0,'','','name',SORT_ASC,0);
if (count($listofpaths))
{
foreach($listofpaths as $key => $val)
{
$arr_file[]=$listofpaths[$key]['fullname'];
$arr_mime[]=dol_mimetype($listofpaths[$key]['name']);
$arr_name[]=$listofpaths[$key]['name'];
}
}
// Fabrication du mail
$mail = new CMailFile($newsubject, $sendto, $from, $newmessage, $arr_file, $arr_mime, $arr_name, '', '', 0, $msgishtml, $errorsto, $arr_css);
if ($mail->error)
{
$res=0;
}
if (! $substitutionisok)
{
$mail->error='Some substitution failed';
$res=0;
}
// Send mail
if ($res)
{
$res=$mail->sendfile();
}
if ($res)
{
// Mail successful
$nbok++;
dol_syslog("comm/mailing/fiche.php: ok for #".$i.($mail->error?' - '.$mail->error:''), LOG_DEBUG);
$sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
$sql.=" SET statut=1, date_envoi=".$db->idate($now)." WHERE rowid=".$obj->rowid;
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
else
{
//if cheack read is use then update prospect contact status
if (strpos($message, '__CHECK_READ__') !== false)
{
//Update status communication of thirdparty prospect
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid=".$obj->rowid.")";
dol_syslog("fiche.php: set prospect thirdparty status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
//Update status communication of contact prospect
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.rowid=".$obj->rowid." AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)";
dol_syslog("fiche.php: set prospect contact status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
}
}
//test if CHECK READ change statut prospect contact
}
else
{
// Mail failed
$nbko++;
dol_syslog("comm/mailing/fiche.php: error for #".$i.($mail->error?' - '.$mail->error:''), LOG_WARNING);
$sql="UPDATE ".MAIN_DB_PREFIX."mailing_cibles";
$sql.=" SET statut=-1, date_envoi=".$db->idate($now)." WHERE rowid=".$obj->rowid;
$resql2=$db->query($sql);
if (! $resql2)
{
dol_print_error($db);
}
}
$i++;
}
}
else
{
setEventMessage($langs->transnoentitiesnoconv("NoMoreRecipientToSendTo"));
}
// Loop finished, set global statut of mail
if ($nbko > 0)
{
$statut=2; // Status 'sent partially' (because at least one error)
if ($nbok > 0) setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
else setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
else
{
if ($nbok >= $num)
{
$statut=3; // Send to everybody
setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
else
{
$statut=2; // Status 'sent partially' (because not send to everybody)
setEventMessage($langs->transnoentitiesnoconv("EMailSentToNRecipients",$nbok));
}
}
$sql="UPDATE ".MAIN_DB_PREFIX."mailing SET statut=".$statut." WHERE rowid=".$object->id;
dol_syslog("comm/mailing/fiche.php: update global status sql=".$sql, LOG_DEBUG);
$resql2=$db->query($sql);
if (! $resql2)
{
dol_syslog($db->error());
dol_print_error($db);
}
$action = '';
}
else
{
dol_syslog($db->error());
dol_print_error($db);
}
$action = '';
}
}
// Action send test emailing
if ($action == 'send' && empty($_POST["cancel"]))
{
$error=0;
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
$object->sendto = $_POST["sendto"];
if (! $object->sendto)
{
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("MailTo")).'</div>';
$error++;
}
if (! $error)
// Action send test emailing
if ($action == 'send' && empty($_POST["cancel"]))
{
// Le message est-il en html
$msgishtml=-1; // Inconnu par defaut
if (preg_match('/[\s\t]*<html>/i',$object->body)) $msgishtml=1;
$error=0;
// Pratique les substitutions sur le sujet et message
$tmpsujet=make_substitutions($object->sujet,$object->substitutionarrayfortest);
$tmpbody=make_substitutions($object->body,$object->substitutionarrayfortest);
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
$arr_file = array();
$arr_mime = array();
$arr_name = array();
$arr_css = array();
// Ajout CSS
if (!empty($object->bgcolor)) $arr_css['bgcolor'] = (preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor;
if (!empty($object->bgimage)) $arr_css['bgimage'] = $object->bgimage;
// Attached files
$listofpaths=dol_dir_list($upload_dir,'all',0,'','','name',SORT_ASC,0);
if (count($listofpaths))
$object->sendto = $_POST["sendto"];
if (! $object->sendto)
{
foreach($listofpaths as $key => $val)
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("MailTo")).'</div>';
$error++;
}
if (! $error)
{
// Le message est-il en html
$msgishtml=-1; // Inconnu par defaut
if (preg_match('/[\s\t]*<html>/i',$object->body)) $msgishtml=1;
// Pratique les substitutions sur le sujet et message
$tmpsujet=make_substitutions($object->sujet,$object->substitutionarrayfortest);
$tmpbody=make_substitutions($object->body,$object->substitutionarrayfortest);
$arr_file = array();
$arr_mime = array();
$arr_name = array();
$arr_css = array();
// Ajout CSS
if (!empty($object->bgcolor)) $arr_css['bgcolor'] = (preg_match('/^#/',$object->bgcolor)?'':'#').$object->bgcolor;
if (!empty($object->bgimage)) $arr_css['bgimage'] = $object->bgimage;
// Attached files
$listofpaths=dol_dir_list($upload_dir,'all',0,'','','name',SORT_ASC,0);
if (count($listofpaths))
{
$arr_file[]=$listofpaths[$key]['fullname'];
$arr_mime[]=dol_mimetype($listofpaths[$key]['name']);
$arr_name[]=$listofpaths[$key]['name'];
foreach($listofpaths as $key => $val)
{
$arr_file[]=$listofpaths[$key]['fullname'];
$arr_mime[]=dol_mimetype($listofpaths[$key]['name']);
$arr_name[]=$listofpaths[$key]['name'];
}
}
$mailfile = new CMailFile($tmpsujet,$object->sendto,$object->email_from,$tmpbody, $arr_file,$arr_mime,$arr_name,'', '', 0, $msgishtml,$object->email_errorsto,$arr_css);
$result=$mailfile->sendfile();
if ($result)
{
$mesg='<div class="ok">'.$langs->trans("MailSuccessfulySent",$mailfile->getValidAddress($object->email_from,2),$mailfile->getValidAddress($object->sendto,2)).'</div>';
}
else
{
$mesg='<div class="error">'.$langs->trans("ResultKo").'<br>'.$mailfile->error.' '.$result.'</div>';
}
$action='';
}
$mailfile = new CMailFile($tmpsujet,$object->sendto,$object->email_from,$tmpbody, $arr_file,$arr_mime,$arr_name,'', '', 0, $msgishtml,$object->email_errorsto,$arr_css);
$result=$mailfile->sendfile();
if ($result)
{
$mesg='<div class="ok">'.$langs->trans("MailSuccessfulySent",$mailfile->getValidAddress($object->email_from,2),$mailfile->getValidAddress($object->sendto,2)).'</div>';
}
else
{
$mesg='<div class="error">'.$langs->trans("ResultKo").'<br>'.$mailfile->error.' '.$result.'</div>';
}
$action='';
}
}
// Action add emailing
if ($action == 'add')
{
$object->email_from = trim($_POST["from"]);
$object->email_replyto = trim($_POST["replyto"]);
$object->email_errorsto = trim($_POST["errorsto"]);
$object->titre = trim($_POST["titre"]);
$object->sujet = trim($_POST["sujet"]);
$object->body = trim($_POST["body"]);
$object->bgcolor = trim($_POST["bgcolor"]);
$object->bgimage = trim($_POST["bgimage"]);
if (! $object->titre) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTitle"));
if (! $object->sujet) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTopic"));
if (! $object->body) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailMessage"));
if (! $mesg)
{
if ($object->create($user) >= 0)
{
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
$mesg=$object->error;
}
$mesg='<div class="error">'.$mesg.'</div>';
$action="create";
}
// Action update description of emailing
if ($action == 'settitre' || $action == 'setemail_from' || $actino == 'setreplyto' || $action == 'setemail_errorsto')
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
if ($action == 'settitre') $object->titre = trim(GETPOST('titre','alpha'));
else if ($action == 'setemail_from') $object->email_from = trim(GETPOST('email_from','alpha'));
else if ($action == 'setemail_replyto') $object->email_replyto = trim(GETPOST('email_replyto','alpha'));
else if ($action == 'setemail_errorsto') $object->email_errorsto = trim(GETPOST('email_errorsto','alpha'));
else if ($action == 'settitre' && empty($object->titre)) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTitle"));
else if ($action == 'setfrom' && empty($object->email_from)) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailFrom"));
if (! $mesg)
{
if ($object->update($user) >= 0)
{
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
$mesg=$object->error;
}
$mesg='<div class="error">'.$mesg.'</div>';
$action="";
}
/*
* Add file in email form
*/
if (! empty($_POST['addfile']))
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
// Set tmp user directory
dol_add_file_process($upload_dir,0,0);
$action="edit";
}
// Action remove file
if (! empty($_POST["removedfile"]))
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
dol_remove_file_process($_POST['removedfile'],0);
$action="edit";
}
// Action update emailing
if ($action == 'update' && empty($_POST["removedfile"]) && empty($_POST["cancel"]))
{
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$isupload=0;
if (! $isupload)
// Action add emailing
if ($action == 'add')
{
$object->email_from = trim($_POST["from"]);
$object->email_replyto = trim($_POST["replyto"]);
$object->email_errorsto = trim($_POST["errorsto"]);
$object->titre = trim($_POST["titre"]);
$object->sujet = trim($_POST["sujet"]);
$object->body = trim($_POST["body"]);
$object->bgcolor = trim($_POST["bgcolor"]);
$object->bgimage = trim($_POST["bgimage"]);
if (! $object->titre) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTitle"));
if (! $object->sujet) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTopic"));
if (! $object->body) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailMessage"));
if (! $mesg)
{
if ($object->create($user) >= 0)
{
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
$mesg=$object->error;
}
$mesg='<div class="error">'.$mesg.'</div>';
$action="create";
}
// Action update description of emailing
if ($action == 'settitre' || $action == 'setemail_from' || $actino == 'setreplyto' || $action == 'setemail_errorsto')
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
if ($action == 'settitre') $object->titre = trim(GETPOST('titre','alpha'));
else if ($action == 'setemail_from') $object->email_from = trim(GETPOST('email_from','alpha'));
else if ($action == 'setemail_replyto') $object->email_replyto = trim(GETPOST('email_replyto','alpha'));
else if ($action == 'setemail_errorsto') $object->email_errorsto = trim(GETPOST('email_errorsto','alpha'));
else if ($action == 'settitre' && empty($object->titre)) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTitle"));
else if ($action == 'setfrom' && empty($object->email_from)) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailFrom"));
if (! $mesg)
{
if ($object->update($user) >= 0)
@@ -553,78 +497,136 @@ if ($action == 'update' && empty($_POST["removedfile"]) && empty($_POST["cancel"
}
$mesg='<div class="error">'.$mesg.'</div>';
$action="";
}
/*
* Add file in email form
*/
if (! empty($_POST['addfile']))
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
// Set tmp user directory
dol_add_file_process($upload_dir,0,0);
$action="edit";
}
else
// Action remove file
if (! empty($_POST["removedfile"]))
{
$upload_dir = $conf->mailing->dir_output . "/" . get_exdir($object->id,2,0,1);
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
dol_remove_file_process($_POST['removedfile'],0);
$action="edit";
}
}
// Action confirmation validation
if ($action == 'confirm_valid' && $confirm == 'yes')
{
if ($object->id > 0)
// Action update emailing
if ($action == 'update' && empty($_POST["removedfile"]) && empty($_POST["cancel"]))
{
$object->valid($user);
setEventMessage($langs->trans("MailingSuccessfullyValidated"));
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
else
{
dol_print_error($db);
}
}
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
// Resend
if ($action == 'confirm_reset' && $confirm == 'yes')
{
if ($object->id > 0)
{
$db->begin();
$isupload=0;
$result=$object->valid($user);
if ($result > 0)
if (! $isupload)
{
$result=$object->reset_targets_status($user);
$object->sujet = trim($_POST["sujet"]);
$object->body = trim($_POST["body"]);
$object->bgcolor = trim($_POST["bgcolor"]);
$object->bgimage = trim($_POST["bgimage"]);
if (! $object->sujet) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailTopic"));
if (! $object->body) $mesg.=($mesg?'<br>':'').$langs->trans("ErrorFieldRequired",$langs->transnoentities("MailMessage"));
if (! $mesg)
{
if ($object->update($user) >= 0)
{
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
$mesg=$object->error;
}
$mesg='<div class="error">'.$mesg.'</div>';
$action="edit";
}
if ($result > 0)
else
{
$db->commit();
$action="edit";
}
}
// Action confirmation validation
if ($action == 'confirm_valid' && $confirm == 'yes')
{
if ($object->id > 0)
{
$object->valid($user);
setEventMessage($langs->trans("MailingSuccessfullyValidated"));
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
else
{
$mesg=$object->error;
$db->rollback();
dol_print_error($db);
}
}
else
// Resend
if ($action == 'confirm_reset' && $confirm == 'yes')
{
dol_print_error($db);
if ($object->id > 0)
{
$db->begin();
$result=$object->valid($user);
if ($result > 0)
{
$result=$object->reset_targets_status($user);
}
if ($result > 0)
{
$db->commit();
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
exit;
}
else
{
$mesg=$object->error;
$db->rollback();
}
}
else
{
dol_print_error($db);
}
}
// Action confirmation suppression
if ($action == 'confirm_delete' && $confirm == 'yes')
{
if ($object->delete($object->id))
{
$url= (! empty($urlfrom) ? $urlfrom : 'liste.php');
header("Location: ".$url);
exit;
}
}
if (! empty($_POST["cancel"]))
{
$action = '';
}
}
// Action confirmation suppression
if ($action == 'confirm_delete' && $confirm == 'yes')
{
if ($object->delete($object->id))
{
$url= (! empty($urlfrom) ? $urlfrom : 'liste.php');
header("Location: ".$url);
exit;
}
}
if (! empty($_POST["cancel"]))
{
$action = '';
}
/*
* View

File diff suppressed because it is too large Load Diff

View File

@@ -535,13 +535,14 @@ class Propal extends CommonObject
$price = $pu - $remise;
}
// Update line
$this->line=new PropaleLigne($this->db);
//Fetch current line from the database and then clone the object and set it in $oldline property
$line = new PropaleLigne($this->db);
$line->fetch($rowid);
// Stock previous line records
$staticline=new PropaleLigne($this->db);
$staticline->fetch($rowid);
$this->line->oldline = $staticline;
$staticline = clone $line;
$line->oldline = $staticline;
$this->line = $line;
// Reorder if fk_parent_line change
if (! empty($fk_parent_line) && ! empty($staticline->fk_parent_line) && $fk_parent_line != $staticline->fk_parent_line)
@@ -955,35 +956,35 @@ class Propal extends CommonObject
foreach($this->lines as $line)
$line->fetch_optionals($line->rowid);
// Load source object
$objFrom = dol_clone($this);
// Load dest object
$clonedObj = clone $this;
$objsoc=new Societe($this->db);
// Change socid if needed
if (! empty($socid) && $socid != $this->socid)
if (! empty($socid) && $socid != $clonedObj->socid)
{
if ($objsoc->fetch($socid) > 0)
{
$this->socid = $objsoc->id;
$this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
$this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
$this->fk_project = '';
$this->fk_delivery_address = '';
$clonedObj->socid = $objsoc->id;
$clonedObj->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
$clonedObj->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
$clonedObj->fk_project = '';
$clonedObj->fk_delivery_address = '';
}
// reset ref_client
$this->ref_client = '';
$clonedObj->ref_client = '';
// TODO Change product price if multi-prices
}
else
{
$objsoc->fetch($this->socid);
$objsoc->fetch($clonedObj->socid);
}
$this->id=0;
$this->statut=0;
$clonedObj->id=0;
$clonedObj->statut=0;
if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php"))
{
@@ -992,32 +993,32 @@ class Propal extends CommonObject
}
// Clear fields
$this->user_author = $user->id;
$this->user_valid = '';
$this->date = $now;
$this->datep = $now; // deprecated
$this->fin_validite = $this->date + ($this->duree_validite * 24 * 3600);
if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $this->ref_client = '';
$clonedObj->user_author = $user->id;
$clonedObj->user_valid = '';
$clonedObj->date = $now;
$clonedObj->datep = $now; // deprecated
$clonedObj->fin_validite = $clonedObj->date + ($clonedObj->duree_validite * 24 * 3600);
if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $clonedObj->ref_client = '';
// Set ref
require_once DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.'.php';
$obj = $conf->global->PROPALE_ADDON;
$modPropale = new $obj;
$this->ref = $modPropale->getNextValue($objsoc,$this);
$clonedObj->ref = $modPropale->getNextValue($objsoc,$clonedObj);
// Create clone
$result=$this->create($user);
$result=$clonedObj->create($user);
if ($result < 0) $error++;
else
{
// copy internal contacts
if ($this->copy_linked_contact($objFrom, 'internal') < 0)
if ($clonedObj->copy_linked_contact($this, 'internal') < 0)
$error++;
// copy external contacts if same company
elseif ($objFrom->socid == $this->socid)
elseif ($this->socid == $clonedObj->socid)
{
if ($this->copy_linked_contact($objFrom, 'external') < 0)
if ($clonedObj->copy_linked_contact($this, 'external') < 0)
$error++;
}
}
@@ -1027,16 +1028,16 @@ class Propal extends CommonObject
// Hook of thirdparty module
if (is_object($hookmanager))
{
$parameters=array('objFrom'=>$objFrom);
$parameters=array('objFrom'=>$this);
$action='';
$reshook=$hookmanager->executeHooks('createFrom',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('createFrom',$parameters,$clonedObj,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) $error++;
}
// Appel des triggers
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PROPAL_CLONE',$this,$user,$langs,$conf);
$result=$interface->run_triggers('PROPAL_CLONE',$clonedObj,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
}
@@ -1047,7 +1048,7 @@ class Propal extends CommonObject
if (! $error)
{
$this->db->commit();
return $this->id;
return $clonedObj->id;
}
else
{
@@ -2564,11 +2565,14 @@ class Propal extends CommonObject
$classname = $conf->global->PROPALE_ADDON;
// Include file with class
foreach ($conf->file->dol_document_root as $dirroot)
{
$dir = $dirroot."/core/modules/propale/";
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
foreach ($dirmodels as $reldir) {
$dir = dol_buildpath($reldir."core/modules/propale/");
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
}
if (! $mybool)
@@ -2859,10 +2863,12 @@ class PropaleLigne extends CommonObject
$this->date_end = $this->db->jdate($objp->date_end);
$this->db->free($result);
return 1;
}
else
{
dol_print_error($this->db);
return -1;
}
}
@@ -2890,11 +2896,12 @@ class PropaleLigne extends CommonObject
if (empty($this->total_localtax2)) $this->total_localtax2=0;
if (empty($this->rang)) $this->rang=0;
if (empty($this->remise)) $this->remise=0;
if (empty($this->remise_percent)) $this->remise_percent=0;
if (empty($this->remise_percent) || ! is_numeric($this->remise_percent)) $this->remise_percent=0;
if (empty($this->info_bits)) $this->info_bits=0;
if (empty($this->special_code)) $this->special_code=0;
if (empty($this->fk_parent_line)) $this->fk_parent_line=0;
if (empty($this->fk_fournprice)) $this->fk_fournprice=0;
if (! is_numeric($this->qty)) $this->qty = 0;
if (empty($this->pa_ht)) $this->pa_ht=0;

View File

@@ -48,7 +48,7 @@ class PropaleStats extends Stats
* Constructor
*
* @param DoliDB $db Database handler
* @param int $socid Id third party for filter
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
* @param int $userid Id user for filter (creation user)
*/
function __construct($db, $socid=0, $userid=0)

View File

@@ -141,7 +141,9 @@ if (! $sortorder) $sortorder='DESC';
$limit = $conf->liste_limit;
$sql = 'SELECT s.rowid, s.nom, s.town, s.client, s.code_client,';
if (! $sall) $sql = 'SELECT';
else $sql = 'SELECT DISTINCT';
$sql.= ' s.rowid, s.nom, s.town, s.client, s.code_client,';
$sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,";
$sql.= ' u.login';
@@ -388,7 +390,7 @@ if ($result)
// Date proposal
print '<td align="center">';
print dol_print_date($db->jdate($obj->dp), 'day');
print dol_print_date($db->jdate($objp->dp), 'day');
print "</td>\n";
// Date end validity

View File

@@ -162,11 +162,13 @@ $hookmanager->initHooks(array('prospectlist'));
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
if ($action == 'cstc')
{
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm = ".$_GET["pstcomm"];
$sql .= " WHERE rowid = ".$_GET["socid"];
$result=$db->query($sql);
if (empty($reshook)) {
if ($action == 'cstc')
{
$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm = ".$_GET["pstcomm"];
$sql .= " WHERE rowid = ".$_GET["socid"];
$result=$db->query($sql);
}
}

View File

@@ -3,7 +3,7 @@
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2010-2015 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2011 Jean Heimburger <jean@tiaris.info>
* Copyright (C) 2012-2014 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
@@ -100,6 +100,11 @@ class Commande extends CommonOrder
// Pour board
var $nbtodo;
var $nbtodolate;
/**
* ERR Not engouch stock
*/
const STOCK_NOT_ENOUGH_FOR_ORDER = -3;
/**
@@ -137,17 +142,20 @@ class Commande extends CommonOrder
$classname = $conf->global->COMMANDE_ADDON;
// Include file with class
foreach ($conf->file->dol_document_root as $dirroot)
{
$dir = $dirroot."/core/modules/commande/";
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
foreach ($dirmodels as $reldir) {
$dir = dol_buildpath($reldir."core/modules/commande/");
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
}
if (! $mybool)
{
dol_print_error('',"Failed to include file ".$file);
return '';
dol_print_error('',"Failed to include file ".$file);
return '';
}
$obj = new $classname();
@@ -368,7 +376,7 @@ class Commande extends CommonOrder
{
$mouvP = new MouvementStock($this->db);
// We increment stock of product (and sub-products)
$result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("OrderBackToDraftInDolibarr",$this->ref));
$result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, 0, $langs->trans("OrderBackToDraftInDolibarr",$this->ref));
if ($result < 0) { $error++; }
}
}
@@ -556,7 +564,7 @@ class Commande extends CommonOrder
{
$mouvP = new MouvementStock($this->db);
// We increment stock of product (and sub-products)
$result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("OrderCanceledInDolibarr",$this->ref));
$result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, 0, $langs->trans("OrderCanceledInDolibarr",$this->ref));
if ($result < 0) {
$error++;
}
@@ -658,18 +666,19 @@ class Commande extends CommonOrder
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."commande (";
$sql.= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note_private, note_public, ref_client, ref_int";
$sql.= " ref, fk_soc, date_creation, fk_user_author, fk_projet, date_commande, source, note_private, note_public, ref_ext, ref_client, ref_int";
$sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_availability, fk_input_reason, date_livraison, fk_delivery_address";
$sql.= ", remise_absolue, remise_percent";
$sql.= ", entity";
$sql.= ")";
$sql.= " VALUES ('(PROV)',".$this->socid.", '".$this->db->idate($now)."', ".$user->id;
$sql.= ", ".($this->fk_project?$this->fk_project:"null");
$sql.= ", ".($this->fk_project>0?$this->fk_project:"null");
$sql.= ", '".$this->db->idate($date)."'";
$sql.= ", ".($this->source>=0 && $this->source != '' ?$this->source:'null');
$sql.= ", '".$this->db->escape($this->note_private)."'";
$sql.= ", '".$this->db->escape($this->note_public)."'";
$sql.= ", '".$this->db->escape($this->ref_client)."'";
$sql.= ", ".($this->ref_ext?"'".$this->db->escape($this->ref_ext)."'":"null");
$sql.= ", ".($this->ref_client?"'".$this->db->escape($this->ref_client)."'":"null");
$sql.= ", ".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null");
$sql.= ", '".$this->modelpdf."'";
$sql.= ", ".($this->cond_reglement_id>0?"'".$this->cond_reglement_id."'":"null");
@@ -730,8 +739,11 @@ class Commande extends CommonOrder
);
if ($result < 0)
{
$this->error=$this->db->lasterror();
dol_print_error($this->db);
if ($result != self::STOCK_NOT_ENOUGH_FOR_ORDER)
{
$this->error=$this->db->lasterror();
dol_print_error($this->db);
}
$this->db->rollback();
return -1;
}
@@ -894,6 +906,7 @@ class Commande extends CommonOrder
// Clear fields
$this->user_author_id = $user->id;
$this->user_valid = '';
$this->date = dol_now();
$this->date_creation = '';
$this->date_validation = '';
$this->ref_client = '';
@@ -904,7 +917,7 @@ class Commande extends CommonOrder
$modCommande = new $obj;
$this->ref = $modCommande->getNextValue($objsoc,$this);
// Create clone
$result=$this->create($user);
if ($result < 0) $error++;
@@ -1165,10 +1178,12 @@ class Commande extends CommonOrder
$result=$product->fetch($fk_product);
$product_type=$product->type;
if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) {
if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty)
{
$this->error=$langs->trans('ErrorStockIsNotEnough');
dol_syslog(get_class($this)."::addline error=Product ".$product->ref.": ".$this->error, LOG_ERR);
$this->db->rollback();
return -3;
return self::STOCK_NOT_ENOUGH_FOR_ORDER;
}
}
@@ -2389,13 +2404,14 @@ class Commande extends CommonOrder
$price = ($pu - $remise);
}
// Update line
$this->line=new OrderLine($this->db);
//Fetch current line from the database and then clone the object and set it in $oldline property
$line = new OrderLine($this->db);
$line->fetch($rowid);
// Stock previous line records
$staticline=new OrderLine($this->db);
$staticline->fetch($rowid);
$this->line->oldline = $staticline;
$staticline = clone $line;
$line->oldline = $staticline;
$this->line = $line;
// Reorder if fk_parent_line change
if (! empty($fk_parent_line) && ! empty($staticline->fk_parent_line) && $fk_parent_line != $staticline->fk_parent_line)
@@ -3204,10 +3220,12 @@ class OrderLine extends CommonOrderLine
$this->date_end = $this->db->jdate($objp->date_end);
$this->db->free($result);
return 1;
}
else
{
dol_print_error($this->db);
return -1;
}
}

View File

@@ -48,7 +48,7 @@ class CommandeStats extends Stats
* Constructor
*
* @param DoliDB $db Database handler
* @param int $socid Id third party for filter
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
* @param string $mode Option ('customer', 'supplier')
* @param int $userid Id user for filter (creation user)
*/

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,7 @@
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -112,7 +113,7 @@ $help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Ped
llxHeader('',$langs->trans("Orders"),$help_url);
$sql = 'SELECT s.nom, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_client,';
$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison, c.fk_statut, c.facture as facturee';
$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as facturee';
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
$sql.= ', '.MAIN_DB_PREFIX.'commande as c';
// We'll need this table joined to the select in order to filter by sale
@@ -306,11 +307,11 @@ if ($resql)
print '<td class="liste_titre" align="left">';
print '<input class="flat" type="text" name="snom" value="'.$snom.'">';
print '</td>';
print '<td class="liste_titre">';
print '<td class="liste_titre" align="right">';
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="orderday" value="'.$orderday.'">';
print '<input class="flat" type="text" size="1" maxlength="2" name="ordermonth" value="'.$ordermonth.'">';
$formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5);
print '</td><td class="liste_titre">';
print '</td><td class="liste_titre" align="right">';
if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="deliveryday" value="'.$deliveryday.'">';
print '<input class="flat" type="text" size="1" maxlength="2" name="deliverymonth" value="'.$deliverymonth.'">';
$formother->select_year($deliveryyear?$deliveryyear:-1,'deliveryyear',1, 20, 5);
@@ -340,7 +341,7 @@ if ($resql)
print '</td>';
print '<td style="min-width: 20px" class="nobordernopadding nowrap">';
if (($objp->fk_statut > 0) && ($objp->fk_statut < 3) && max($db->jdate($objp->date_commande),$db->jdate($objp->date_livraison)) < ($now - $conf->commande->client->warning_delay))
if (($objp->fk_statut > 0) && ($objp->fk_statut < 3) && max($db->jdate($objp->date_commande),$db->jdate($objp->date_delivery)) < ($now - $conf->commande->client->warning_delay))
print img_picto($langs->trans("Late"),"warning");
if(!empty($objp->note_private))
{

View File

@@ -1133,7 +1133,6 @@ class AccountLine extends CommonObject
}
else
{
dol_print_error($this->db);
return -1;
}
}
@@ -1152,7 +1151,7 @@ class AccountLine extends CommonObject
if ($this->rappro)
{
// Protection to avoid any delete of consolidated lines
$this->error="DeleteNotPossibleLineIsConsolidated";
$this->error="ErrorDeleteNotPossibleLineIsConsolidated";
return -1;
}

View File

@@ -419,7 +419,7 @@ else
// State
print '<tr><td>'.$langs->trans('State').'</td><td>';
if ($account->fk_departement > 0) print getState($account->fk_departement);
if ($account->state_id > 0) print getState($account->state_id);
print '</td></tr>';
// Conciliate

View File

@@ -130,7 +130,7 @@ if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'
// Total
foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").' '.$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
print '</table>';
@@ -179,7 +179,7 @@ if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'
// Total
foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").' '.$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
print '</table>';
@@ -238,7 +238,7 @@ if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'
// Total
foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").' '.$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
print "</table>";

View File

@@ -360,7 +360,7 @@ if ($result)
print '</a>';
}
else if ($links[$key]['type']=='user') {
print '<a href="'.DOL_URL_ROOT.'/user/fiche?id='.$links[$key]['url_id'].'">';
print '<a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$links[$key]['url_id'].'">';
print img_object($langs->trans('ShowUser'),'user').' ';
print $langs->trans("User");
print '</a>';

View File

@@ -2,6 +2,7 @@
/* Copytight (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2008-2009 Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -318,7 +319,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"])
print "</td>";
print "<td>".$ref."</td>";
print "<td>".$refcomp."</td>";
if ($obj->total_ttc < 0) { print "<td align=\"right\">".price($total_ttc)."</td><td>&nbsp;</td>"; };
if ($obj->total_ttc < 0) { print "<td align=\"right\">".price(abs($total_ttc))."</td><td>&nbsp;</td>"; };
if ($obj->total_ttc >= 0) { print "<td>&nbsp;</td><td align=\"right\">".price($total_ttc)."</td>"; };
print '<td align="right">'.price($solde).'</td>';
print "</tr>";

View File

@@ -1,8 +1,9 @@
<?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copytight (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copytight (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
* Copytight (C) 2012 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -48,7 +49,7 @@ if ($action == 'add')
$mesg='';
$dateo = dol_mktime(12,0,0,GETPOST('remonth','int'),GETPOST('reday','int'),GETPOST('reyear','int'));
$label = GETPOST('label','alpha');
$amount= GETPOST('amount','int');
$amount= GETPOST('amount');
if (! $label)
{
@@ -179,7 +180,7 @@ print $form->select_comptes($account_to,'account_to',0,'',1);
print "</td>\n";
print "<td>";
$form->select_date($dateo,'','','','','add');
$form->select_date((! empty($dateo)?$dateo:''),'','','','','add');
print "</td>\n";
print '<td><input name="label" class="flat" type="text" size="40" value="'.$label.'"></td>';
print '<td><input name="amount" class="flat" type="text" size="8" value="'.$amount.'"></td>';

View File

@@ -4,6 +4,7 @@
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -98,8 +99,14 @@ else if ($action == 'add' && $user->rights->deplacement->creer)
{
$error=0;
$km = GETPOST('km');
if ($km) {
$km = price2num($km);
}
$object->date = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int'));
$object->km = GETPOST('km','int');
$object->km = $km;
$object->type = GETPOST('type','alpha');
$object->socid = GETPOST('socid','int');
$object->fk_user = GETPOST('fk_user','int');
@@ -157,8 +164,14 @@ else if ($action == 'update' && $user->rights->deplacement->creer)
{
$result = $object->fetch($id);
$km = GETPOST('km');
if ($km) {
$km = price2num($km);
}
$object->date = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int'));
$object->km = GETPOST('km','int');
$object->km = $km;
$object->type = GETPOST('type','alpha');
$object->socid = GETPOST('socid','int');
$object->fk_user = GETPOST('fk_user','int');
@@ -200,12 +213,6 @@ else if ($action == 'setdated' && $user->rights->deplacement->creer)
$result=$object->setValueFrom('dated',$dated,'','','date');
if ($result < 0) dol_print_error($db, $object->error);
}
else if ($action == 'setkm' && $user->rights->deplacement->creer)
{
$object->fetch($id);
$result=$object->setValueFrom('km',GETPOST('km','int'));
if ($result < 0) dol_print_error($db, $object->error);
}
/*
@@ -348,7 +355,7 @@ else if ($id)
// Km
print '<tr><td class="fieldrequired">'.$langs->trans("FeesKilometersOrAmout").'</td><td>';
print '<input name="km" class="flat" size="10" value="'.$object->km.'">';
print '<input name="km" class="flat" size="10" value="'.price($object->km).'">';
print '</td></tr>';
// Where
@@ -416,10 +423,12 @@ else if ($id)
print '</td></tr>';
// Type
$form->load_cache_types_fees();
print '<tr><td>';
print $form->editfieldkey("Type",'type',$langs->trans($object->type),$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'select:types_fees');
print '</td><td>';
print $form->editfieldval("Type",'type',$langs->trans($object->type),$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'select:types_fees');
print $form->editfieldval("Type",'type', $form->cache_types_fees[$object->type],$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'select:types_fees');
print '</td></tr>';
// Who
@@ -440,7 +449,7 @@ else if ($id)
print '<tr><td valign="top">';
print $form->editfieldkey("FeesKilometersOrAmout",'km',$object->km,$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'numeric:6');
print '</td><td>';
print $form->editfieldval("FeesKilometersOrAmout",'km',$object->km,$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'numeric:6');
print $form->editfieldval("FeesKilometersOrAmout",'km',price($object->km),$object,$conf->global->MAIN_EDIT_ALSO_INLINE && $user->rights->deplacement->creer,'numeric:6');
print "</td></tr>";
// Where

File diff suppressed because it is too large Load Diff

View File

@@ -1751,7 +1751,7 @@ class Facture extends CommonInvoice
$mouvP = new MouvementStock($this->db);
$mouvP->origin = &$this;
// We decrease stock for product
if ($this->type == self::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarr",$num));
if ($this->type == self::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, 0, $langs->trans("InvoiceValidatedInDolibarr",$num));
else $result=$mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceValidatedInDolibarr",$num));
if ($result < 0) {
$error++;
@@ -2173,13 +2173,24 @@ class Facture extends CommonInvoice
$pu_tva = $tabprice[4];
$pu_ttc = $tabprice[5];
// Update line into database
$this->line=new FactureLigne($this->db);
// Old properties: $price, $remise (deprecated)
$price = $pu;
$remise = 0;
if ($remise_percent > 0)
{
$remise = round(($pu * $remise_percent / 100),2);
$price = ($pu - $remise);
}
$price = price2num($price);
// Stock previous line records
$staticline=new FactureLigne($this->db);
$staticline->fetch($rowid);
$this->line->oldline = $staticline;
//Fetch current line from the database and then clone the object and set it in $oldline property
$line = new FactureLigne($this->db);
$line->fetch($rowid);
$staticline = clone $line;
$line->oldline = $staticline;
$this->line = $line;
// Reorder if fk_parent_line change
if (! empty($fk_parent_line) && ! empty($staticline->fk_parent_line) && $fk_parent_line != $staticline->fk_parent_line)
@@ -2504,52 +2515,65 @@ class Facture extends CommonInvoice
else if ($conf->global->FACTURE_ADDON=='terre') $conf->global->FACTURE_ADDON='mod_facture_terre';
else if ($conf->global->FACTURE_ADDON=='mercure') $conf->global->FACTURE_ADDON='mod_facture_mercure';
$mybool=false;
$file = $conf->global->FACTURE_ADDON.".php";
$classname = $conf->global->FACTURE_ADDON;
// Include file with class
foreach ($conf->file->dol_document_root as $dirroot)
if (! empty($conf->global->FACTURE_ADDON))
{
$dir = $dirroot."/core/modules/facture/";
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
}
$mybool=false;
$file = $conf->global->FACTURE_ADDON.".php";
$classname = $conf->global->FACTURE_ADDON;
// For compatibility
if (! $mybool)
{
$file = $conf->global->FACTURE_ADDON."/".$conf->global->FACTURE_ADDON.".modules.php";
$classname = "mod_facture_".$conf->global->FACTURE_ADDON;
$classname = preg_replace('/\-.*$/','',$classname);
// Include file with class
foreach ($conf->file->dol_document_root as $dirroot)
{
$dir = $dirroot."/core/modules/facture/";
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
foreach ($dirmodels as $reldir) {
$dir = dol_buildpath($reldir."core/modules/facture/");
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
}
}
//print "xx".$mybool.$dir.$file."-".$classname;
if (! $mybool)
{
dol_print_error('',"Failed to include file ".$file);
return '';
}
// For compatibility
if (! $mybool)
{
$file = $conf->global->FACTURE_ADDON."/".$conf->global->FACTURE_ADDON.".modules.php";
$classname = "mod_facture_".$conf->global->FACTURE_ADDON;
$classname = preg_replace('/\-.*$/','',$classname);
// Include file with class
foreach ($conf->file->dol_document_root as $dirroot)
{
$dir = $dirroot."/core/modules/facture/";
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
}
}
$obj = new $classname();
$numref = "";
$numref = $obj->getNumRef($soc,$this,$mode);
if (! $mybool)
{
dol_print_error('',"Failed to include file ".$file);
return '';
}
$obj = new $classname();
$numref = "";
$numref = $obj->getNextValue($soc,$this,$mode);
/**
* $numref can be empty in case we ask for the last value because if there is no invoice created with the
* set up mask.
*/
if ($mode != 'last' && !$numref) {
dol_print_error($db,"Facture::getNextNumRef ".$obj->error);
return "";
}
if ($numref != "")
{
return $numref;
}
else
{
//dol_print_error($db,get_class($this)."::getNextNumRef ".$obj->error);
return false;
$langs->load("errors");
print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete");
return "";
}
}
@@ -3424,10 +3448,12 @@ class FactureLigne extends CommonInvoiceLine
$this->product_desc = $objp->product_desc;
$this->db->free($result);
return 1;
}
else
{
dol_print_error($this->db);
return -1;
}
}
@@ -3485,7 +3511,7 @@ class FactureLigne extends CommonInvoiceLine
return -1;
}
}
// POS or by external module, take lowest buying price
if (!empty($this->fk_product) && empty($this->fk_fournprice) && empty($this->pa_ht)) {
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';

View File

@@ -45,7 +45,7 @@ class FactureStats extends Stats
* Constructor
*
* @param DoliDB $db Database handler
* @param int $socid Id third party for filter
* @param int $socid Id third party for filter. This value must be forced during the new to external user company if user is an external user.
* @param string $mode Option ('customer', 'supplier')
* @param int $userid Id user for filter (creation user)
*/
@@ -84,6 +84,8 @@ class FactureStats extends Stats
$this->where.=" AND f.fk_soc = ".$this->socid;
}
if ($this->userid > 0) $this->where.=' AND f.fk_user_author = '.$this->userid;
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $this->where.= " AND f.type IN (0,1,2)";
else $this->where.= " AND f.type IN (0,1,2,3)";
}
@@ -166,7 +168,7 @@ class FactureStats extends Stats
$sql = "SELECT date_format(datef,'%m') as dm, AVG(f.".$this->field.")";
$sql.= " FROM ".$this->from;
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'";
$sql.= " AND ".$this->where;
$sql.= " GROUP BY dm";
@@ -186,7 +188,7 @@ class FactureStats extends Stats
$sql = "SELECT date_format(datef,'%Y') as year, COUNT(*) as nb, SUM(f.".$this->field.") as total, AVG(f.".$this->field.") as avg";
$sql.= " FROM ".$this->from;
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE ".$this->where;
$sql.= " GROUP BY year";
$sql.= $this->db->order('year','DESC');
@@ -206,7 +208,7 @@ class FactureStats extends Stats
$sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg";
$sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product";
//if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE ".$this->where;
$sql.= " AND f.rowid = tl.fk_facture AND tl.fk_product = product.rowid";
$sql.= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";

View File

@@ -535,7 +535,7 @@ if ($resql)
print_liste_field_titre($langs->trans("Taxes"),$_SERVER["PHP_SELF"],"f.tva","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("AmountTTC"),$_SERVER["PHP_SELF"],"f.total_ttc","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Received"),$_SERVER["PHP_SELF"],"am","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Rest"),$_SERVER["PHP_SELF"],"am","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Rest"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"fk_statut,paye,am","",$param,'align="right"',$sortfield,$sortorder);
if (empty($mode))
{
@@ -649,13 +649,12 @@ if ($resql)
print '<td align="right">'.price($objp->total_ttc).'</td>';
print '<td align="right">';
$cn=$facturestatic->getSumCreditNotesUsed();
if (! empty($objp->am)) print price($objp->am);
if (! empty($objp->am) && ! empty($cn)) print '+';
if (! empty($cn)) print price($cn);
$dep=$facturestatic->getSumDepositsUsed();
print price($objp->am + $cn + $dep);
print '</td>';
// Remain to receive
print '<td align="right">'.((! empty($objp->am) || ! empty($cn))?price($objp->total_ttc-$objp->am-$cn):'&nbsp;').'</td>';
print '<td align="right">'.price($objp->total_ttc-$objp->am-$cn-$dep).'</td>';
// Status of invoice
print '<td align="right" class="nowrap">';
@@ -685,7 +684,7 @@ if ($resql)
$total_ht+=$objp->total_ht;
$total_tva+=($objp->total_tva + $tx1 + $tx2 + $revenuestamp);
$total_ttc+=$objp->total_ttc;
$total_paid+=$objp->am + $cn;
$total_paid+=$objp->am + $cn + $dep;
$i++;
}

View File

@@ -217,6 +217,13 @@ complete_head_from_modules($conf,$langs,null,$head,$h,$type);
dol_fiche_head($head,'byyear',$langs->trans("Statistics"));
$tmp_companies = $form->select_thirdparty_list($socid,'socid',$filter,1, 0, 0, array(), '', 1);
//Array passed as an argument to Form::selectarray to build a proper select input
$companies = array();
foreach ($tmp_companies as $value) {
$companies[$value['value']] = $value['label'];
}
print '<div class="fichecenter"><div class="fichethirdleft">';
@@ -232,7 +239,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td>';
if ($mode == 'customer') $filter='s.client in (1,2,3)';
if ($mode == 'supplier') $filter='s.fournisseur = 1';
print $form->select_company($socid,'socid',$filter,1);
print $form->selectarray('socid', $companies, $socid, 1, 0, 0, 'style="width: 100%"');
print '</td></tr>';
// User
print '<tr><td>'.$langs->trans("CreatedBy").'</td><td>';

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