Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop

This commit is contained in:
Maxime Kohlhaas 2014-01-03 11:19:31 +01:00
commit 986475e8c1
762 changed files with 13044 additions and 9664 deletions

6
.gitignore vendored
View File

@ -16,4 +16,8 @@ doxygen_warnings.log
.idea .idea
*.iml *.iml
Thumbs.db Thumbs.db
# Vagrant generated files
.vagrant
/index.html
/phpmyadmin
/xhprof

View File

@ -60,6 +60,7 @@ Copyright (C) 2013
- Regis Houssin <regis.houssin@capnetworks.com> - Regis Houssin <regis.houssin@capnetworks.com>
- Maxime Kohlhaas <mko@atm-consulting.fr> - Maxime Kohlhaas <mko@atm-consulting.fr>
- Juanjo Menent <jmenent@2byte.es> - Juanjo Menent <jmenent@2byte.es>
- Adolfo Segura <adolfo.segura@gmail.com>
Copyright (C) 2012 Copyright (C) 2012
- Christophe Battarel <christophe.battarel@altairis.fr> - Christophe Battarel <christophe.battarel@altairis.fr>

View File

@ -6,6 +6,17 @@ English Dolibarr ChangeLog
For users: For users:
- New: Add list of orders products in tab "consumption" on thirdparties. - New: Add list of orders products in tab "consumption" on thirdparties.
- New: Add graph stats for suppliers orders in tab "stats" on products. - New: Add graph stats for suppliers orders in tab "stats" on products.
- New: Add option MAIN_HIDE_INACTIVETAB_ON_PRINT to hide inactive tabs when you
use the "print" view on screen.
For translators:
- Update language files.
For developers:
- New: Add path file of trigger into admin trigger list page.
- New: More phpunit tests.
- New: Payments and supplier payment pages tabs can now be extended from modules.
***** ChangeLog for 3.5 compared to 3.4.* ***** ***** ChangeLog for 3.5 compared to 3.4.* *****
@ -76,6 +87,8 @@ For users:
- Fix: [ bug #992 ] Proforma invoices don't have a separated numeric count. - Fix: [ bug #992 ] Proforma invoices don't have a separated numeric count.
- Fix: [ bug #1022 ] correct margin calculation for credit notes. - Fix: [ bug #1022 ] correct margin calculation for credit notes.
- Fix: Better management of using ajax for upload form (to solve problem when enabling ajax jquery multifile upload in some cases). - Fix: Better management of using ajax for upload form (to solve problem when enabling ajax jquery multifile upload in some cases).
- Fix: Lost stats filters into year selection.
- Fix: Some config data are shared between suppliers orders and suppliers invoices
New experimental module: New experimental module:
- New: [ task #157 ] Add a Skype button (adherents / third parties / contacts) - New: [ task #157 ] Add a Skype button (adherents / third parties / contacts)
@ -134,7 +147,11 @@ parameter. All methods addline in this case were modified to remove this paramet
5) Property ->tel on objects is now ->phone 5) Property ->tel on objects is now ->phone
6) Trigger LINEPROPAL_MODIFY is renamed into LINEPROPAL_UPDATE and
Trigger CONTRACT_LINE_DELETE rnamed into LINECONTRACT_DELETE to match naming rules.
***** ChangeLog for 3.4.2 compared to 3.4.1 ***** ***** ChangeLog for 3.4.2 compared to 3.4.1 *****
Fix: field's problem into company's page (RIB) Fix: field's problem into company's page (RIB)
Fix: Document cerfa doesn't contained firstname & lastname from donator Fix: Document cerfa doesn't contained firstname & lastname from donator
@ -145,6 +162,17 @@ Fix: wrong buy price update
Fix: [ bug #1142 ] Set paiement on invoice (PGSql) Fix: [ bug #1142 ] Set paiement on invoice (PGSql)
Fix: [ bug #1145 ] Agenda button list type do not display Fix: [ bug #1145 ] Agenda button list type do not display
Fix: [ bug #1148 ] Product consomation : supplier order bad status Fix: [ bug #1148 ] Product consomation : supplier order bad status
Fix: [ bug #1159 ] Commercial search "other" give p.note do not exists
Fix: [ bug #1174 ] Product translated description not good into PDF
Fix: [ bug #1163 ] SQL Error when searching for supplier orders
Fix: [ bug #1162 ] Translaction for morning and afternoon
Fix: [ bug #1161 ] Search on product label
Fix: [ bug #1075 ] POS module doesn't decrement stock of products in delayed payment mode.
Fix: [ bug #1171 ] Documents lost in interventions after validating
Fix: fix unsubscribe URL into mailing when sending manually (not by script)
Fix: [ bug #1182 ] ODT company_country tag is htmlencoded
Fix: [ bug #1196 ] Product barcode search does not expect 13th digit on EAN13 type
Fix: [ bug #1202 ] Wrong amount in deposit % invoice from proposal
***** ChangeLog for 3.4.1 compared to 3.4.0 ***** ***** ChangeLog for 3.4.1 compared to 3.4.0 *****
Fix: Display buying price on line edit when no supplier price is defined Fix: Display buying price on line edit when no supplier price is defined
@ -175,7 +203,6 @@ Fix: there was no escaping on filter fields in supplier product list
Fix: bugs on margin reports and better margin calculation on credit notes Fix: bugs on margin reports and better margin calculation on credit notes
Qual: Add travis-ci integration Qual: Add travis-ci integration
***** ChangeLog for 3.4 compared to 3.3.* ***** ***** ChangeLog for 3.4 compared to 3.3.* *****
For users: For users:
- New: Can use ODS templates as document templates. - New: Can use ODS templates as document templates.
@ -272,6 +299,12 @@ backport commit 384e3812eb73a15adafb472cacfb93397a54459b to fix W3C/edit contrac
***** ChangeLog for 3.3.5 compared to 3.3.4 *****
- Fix: jcrop file to match debian rules
- Fix: Add missing country UK.
- Fix: Minor fix into package.
- Fix: Add missing label on project field.
***** ChangeLog for 3.3.4 compared to 3.3.3 ***** ***** ChangeLog for 3.3.4 compared to 3.3.3 *****
- Fix: [ bug #1001 ] Social Contribution : State not correct - Fix: [ bug #1001 ] Social Contribution : State not correct
- Fix: Better management of pdf generation when tcpdf is not available. - Fix: Better management of pdf generation when tcpdf is not available.
@ -442,7 +475,6 @@ Dolibarr license has also been updated from GPLv2+ to GPLv3+.
***** ChangeLog for 3.2.3 compared to 3.2.2 ***** ***** ChangeLog for 3.2.3 compared to 3.2.2 *****
- Fix: Some permission into agenda module. - Fix: Some permission into agenda module.
- Fix: Generation of PDF was not using correct font for some languages. - Fix: Generation of PDF was not using correct font for some languages.
- Fix some translations. - Fix some translations.
@ -596,7 +628,6 @@ WARNING: To reduce technic debt, all functions dolibarr_xxx were renamed int dol
***** ChangeLog for 3.1.3 compared to 3.1.2 ***** ***** ChangeLog for 3.1.3 compared to 3.1.2 *****
Fix: PgSQL - property must be set if success Fix: PgSQL - property must be set if success
Fix: Provide a solution for backup when mysqldump is not available Fix: Provide a solution for backup when mysqldump is not available
Fix: Bug #460 - Wrong entity assignment when creating a warehouse Fix: Bug #460 - Wrong entity assignment when creating a warehouse
@ -605,7 +636,6 @@ Fix: bug #405 - Late icon always displayed on comm/propal.php
***** ChangeLog for 3.1.2 compared to 3.1.1 ***** ***** ChangeLog for 3.1.2 compared to 3.1.1 *****
- Fix: Can clone a proposal - Fix: Can clone a proposal
- Fix: Add member ID in substitution method - Fix: Add member ID in substitution method
- Fix: Duplicate end tag and missing form parts - Fix: Duplicate end tag and missing form parts
@ -618,7 +648,6 @@ Fix: bug #405 - Late icon always displayed on comm/propal.php
***** ChangeLog for 3.1.1 compared to 3.1.0 ***** ***** ChangeLog for 3.1.1 compared to 3.1.0 *****
- New: Add option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS. With this option added, - New: Add option FACTURE_DEPOSITS_ARE_JUST_PAYMENTS. With this option added,
credit notes are not removed from total amount of invoice but are just credit notes are not removed from total amount of invoice but are just
payments used to reducs remain to pay. payments used to reducs remain to pay.
@ -740,7 +769,6 @@ For translators:
***** ChangeLog for 3.0 compared to 2.9.* ***** ***** ChangeLog for 3.0 compared to 2.9.* *****
For users: For users:
- New: Can edit date of cheque receipts. - New: Can edit date of cheque receipts.
- New: Add Sales journal and Purchase journal report. - New: Add Sales journal and Purchase journal report.
@ -836,7 +864,6 @@ For developers:
***** ChangeLog for 2.9 compared to 2.8.* ***** ***** ChangeLog for 2.9 compared to 2.8.* *****
For users: For users:
- New: POS module allow to choose which warehouse to use. - New: POS module allow to choose which warehouse to use.
- New: Support "Department/State" field on company setup, contact, - New: Support "Department/State" field on company setup, contact,
@ -954,7 +981,6 @@ For users:
***** ChangeLog for 2.8 compared to 2.7.* ***** ***** ChangeLog for 2.8 compared to 2.7.* *****
For users: For users:
- New: Support note on trips module - New: Support note on trips module
- New: Can link contacts to projects - New: Can link contacts to projects
@ -1005,7 +1031,6 @@ For developers:
***** ChangeLog for 2.7.1 compared to 2.7 ***** ***** ChangeLog for 2.7.1 compared to 2.7 *****
For users: For users:
- Fix: Bad decimal management for it_IT and fr_BE languages. - Fix: Bad decimal management for it_IT and fr_BE languages.
- Fix: A third party created from a member is created as a - Fix: A third party created from a member is created as a
@ -1018,7 +1043,6 @@ For users:
***** ChangeLog for 2.7 compared to 2.6.* ***** ***** ChangeLog for 2.7 compared to 2.6.* *****
For users: For users:
- New: Add a print icon to show a page to print without menus. - New: Add a print icon to show a page to print without menus.
- New: Can add a free text on bank cheque receipts. - New: Can add a free text on bank cheque receipts.
@ -1117,7 +1141,6 @@ For developers:
***** ChangeLog for 2.6 compared to 2.5.* ***** ***** ChangeLog for 2.6 compared to 2.5.* *****
For users: For users:
- New: Add filter on status in emailing selector for Dolibarr users. - New: Add filter on status in emailing selector for Dolibarr users.
- New: Can add bookmarks on all pages. - New: Can add bookmarks on all pages.
@ -1200,7 +1223,6 @@ For developers:
***** ChangeLog for 2.5 compared to 2.4.* ***** ***** ChangeLog for 2.5 compared to 2.4.* *****
For users: For users:
- Sessions timeout can be configured to overwrite PHP setup. - Sessions timeout can be configured to overwrite PHP setup.
- Can filter on date in services list. - Can filter on date in services list.
@ -1264,7 +1286,6 @@ For developers:
***** ChangeLog for 2.4 compared to 2.2.* ***** ***** ChangeLog for 2.4 compared to 2.2.* *****
For users: For users:
- Add a calendar module (module agenda) with ical/vcal/rss export. - Add a calendar module (module agenda) with ical/vcal/rss export.
- Look enhancement in graphics (thanks artichow). - Look enhancement in graphics (thanks artichow).
@ -1319,7 +1340,6 @@ For developers:
***** ChangeLog for 2.2 compared to 2.1.* ***** ***** ChangeLog for 2.2 compared to 2.1.* *****
- Add more statistics on main page. - Add more statistics on main page.
- Add option to add message on login page. - Add option to add message on login page.
- Management of categories for third parties. - Management of categories for third parties.
@ -1353,7 +1373,6 @@ For developers:
***** ChangeLog for 2.1 compared to 2.0.* ***** ***** ChangeLog for 2.1 compared to 2.0.* *****
- Added a better installer. - Added a better installer.
- Support user and groups permissions. - Support user and groups permissions.
- Translation in english and support for several languages. - Translation in english and support for several languages.
@ -1418,12 +1437,10 @@ For developers:
***** ChangeLog for 2.0.1 compared to 2.0 ***** ***** ChangeLog for 2.0.1 compared to 2.0 *****
Minor bug fixes Minor bug fixes
***** ChangeLog for 2.0 compared to 1.0.* ***** ***** ChangeLog for 2.0 compared to 1.0.* *****
ChangeLog file size is so important, that it is not included inside Dolibarr ChangeLog file size is so important, that it is not included inside Dolibarr
package. You can find it at www.dolibarr.org package. You can find it at www.dolibarr.org

View File

@ -7,10 +7,27 @@ All sub-directories of "build" directory contains files required to build
automatically Dolibarr packages. automatically Dolibarr packages.
There are several tools: There are several tools:
- To build full Dolibarr packages, launch the script - To build full Dolibarr packages, launch the script
> Edit version in makepack-dolibarr.pl file.
> Launch command perl makepack-dolibarr.pl > Launch command perl makepack-dolibarr.pl
Note: Prerequisites to build tgz, debian, rpm package
> apt-get install tar dpkg dpatch p7zip-full rpm zip
Note: Prerequisites to build autoexe DoliWamp package:
> Install InnoSetup
For example by running isetup-5.3.9.exe (http://www.jrsoftware.org)
> Install WampServer into "C:\Program Files\Wamp"
For example by running wampserver2.2e-php5.4.3-httpd-2.4.2-mysql5.5.24-x64.exe (http://www.wampserver.com)
> Install WampServer addon to have versions: Apache2.2.11, Mysql5.0.45, Php5.3.0
For example by running WampServer2-APACHE2211.exe (http://www.wampserver.com)
For example by running WampServer2-MYSQL5045.exe (http://www.wampserver.com)
For example by running WampServer2-PHP530.exe (http://www.wampserver.com)
> To build from Windows (running from makepack-dolibarr.pl script is however
recommanded), open file build/exe/doliwamp.iss and click on button "Compile".
The .exe file will be build into directory build.
- To build a translaction package, launch the script - To build a translaction package, launch the script
> perl makepack-dolibarrlang.pl > perl makepack-dolibarrlang.pl
@ -20,17 +37,6 @@ There are several tools:
- To build a package for a module, launch the script - To build a package for a module, launch the script
> perl makepack-dolibarrmodule.pl > perl makepack-dolibarrmodule.pl
- To build an autoexe DoliWamp package:
> Install InnoSetup (http://www.jrsoftware.org)
> Install WampServer into "C:\Program Files\Wamp" (http://www.wampserver.com)
> Install WampServer addon to have versions:
Apache2.2.6, Mysql5.0.45, Php5.2.5
> Modify file build/exe/doliwamp.iss to change variable SourceDir
with value of Dolibarr repository.
> Modify AppVerName and OutputBaseFilename.
> Launch innosetup, open file build/exe/doliwamp.iss and click on
button "Compile". The .exe file will be build into directory build.
- To build developper documentation, launch the script - To build developper documentation, launch the script
> perl dolybarr-doxygen-build.pl > perl dolybarr-doxygen-build.pl
@ -43,24 +49,33 @@ generated packages will not contains this "build" directory.
We can find in "build", following sub-directories: We can find in "build", following sub-directories:
* deb: * aps:
To build APS package.
* debian:
To build Debian package. To build Debian package.
* rpm: * dmg:
To build Redhat or Mandrake package. To build Mac OS package (not ready yet).
* tgz: * doap:
To build a tgz package. To build Doap descriptor to promote/describe Dolibarr releases.
* doxygen:
Dir with config file to build doxygen documentation.
* exe: * exe:
To build exe package for Windows that distribute Dolibarr sources or To build exe package for Windows that distribute Dolibarr sources or
to build the complete DoliWamp package. to build the complete DoliWamp package.
* tgz: * launchpad:
To build a zip package. Doc file to explain how to use launchpad.
* doap: * live:
To build Doap descriptor to promote/describe Dolibarr releases. Doc file to explain how to create a demo live CD.
* obs:
Doc file to explain how to push release onto OBS.
* pad: * pad:
To build a PAD file descriptor to promote/describe Dolibarr releases. To build a PAD file descriptor to promote/describe Dolibarr releases.
@ -68,5 +83,14 @@ To build a PAD file descriptor to promote/describe Dolibarr releases.
* patch: * patch:
Script file to generate a patch file to distribute a Dolibarr mod. Script file to generate a patch file to distribute a Dolibarr mod.
* dmg: * perl:
To build dmg DoliMamp package for Mac OS X Tool to install dolibarr when using virtualmin pro
* rpm:
To build Redhat, Opensuse or Mandriva package.
* tgz:
To build a tgz package.
* zip:
To build a zip package.

View File

@ -3,14 +3,21 @@ dolibarr (3.6.0-1) unstable; urgency=low
[ Laurent Destailleur (eldy) ] [ Laurent Destailleur (eldy) ]
* New upstream release. * New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100 -- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 30 Dec 2013 12:00:00 +0100
dolibarr (3.5.0-1) unstable; urgency=low dolibarr (3.5.0-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ] [ Laurent Destailleur (eldy) ]
* New upstream release. * New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100 -- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 30 Dec 2013 12:00:00 +0100
dolibarr (3.4.2-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 30 Dec 2013 12:00:00 +0100
dolibarr (3.4.1-3) unstable; urgency=low dolibarr (3.4.1-3) unstable; urgency=low
@ -25,17 +32,3 @@ dolibarr (3.4.0-3) unstable; urgency=low
* Maintenance release. * Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100 -- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100
dolibarr (3.4.1) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100
dolibarr (3.4.0) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100

View File

@ -22,7 +22,7 @@ File added into doxygen generated documentation
<hr class="footer" /> <hr class="footer" />
<address class="footer"><small>Generated on $datetime <address class="footer"><small>Generated on $datetime
for <a href="http://www.dolibarr.org">$projectname</a> by Doxygen </a> $doxygenversion </small></address> for <a href="http://www.dolibarr.org">$projectname</a> by Doxygen $doxygenversion </small></address>
<!-- Google AdSense --> <!-- Google AdSense -->
@ -40,5 +40,6 @@ google_ad_height = 60;
<!-- End google adsense --> <!-- End google adsense -->
<br> <br>
</div>
</body> </body>
</html> </html>

View File

@ -20,12 +20,12 @@ AppName=DoliWamp
AppVerName=DoliWamp-3.6.0-beta AppVerName=DoliWamp-3.6.0-beta
; DoliWamp-x.x x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x ; DoliWamp-x.x x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
OutputBaseFilename=DoliWamp-3.6.0-beta OutputBaseFilename=DoliWamp-3.6.0-beta
; Define full path from wich all relative path are defined ; ----- End of change
;OutputManifestFile=build\doliwampbuild.log
; Define full path from which all relative path are defined
; You must modify this to put here your dolibarr root directory ; You must modify this to put here your dolibarr root directory
;SourceDir=Z:\home\ldestailleur\git\dolibarrxxx ;SourceDir=Z:\home\ldestailleur\git\dolibarrxxx
SourceDir=..\..\.. SourceDir=..\..\..
; ----- End of change
;OutputManifestFile=build\doliwampbuild.log
AppId=doliwamp AppId=doliwamp
AppPublisher=NLTechno AppPublisher=NLTechno
AppPublisherURL=http://www.nltechno.com AppPublisherURL=http://www.nltechno.com
@ -51,7 +51,6 @@ CreateUninstallRegKey=yes
OutputDir=build OutputDir=build
ShowLanguageDialog=auto ShowLanguageDialog=auto
ShowUndisplayableLanguages=no ShowUndisplayableLanguages=no
;LanguageDetectionMethod=none
LanguageDetectionMethod=uilanguage LanguageDetectionMethod=uilanguage
;SignedUninstaller=yes ;SignedUninstaller=yes

View File

@ -31,7 +31,7 @@ $RPMSUBVERSION="auto"; # auto use value found into BUILD
"RPM_FEDORA"=>"rpmbuild", "RPM_FEDORA"=>"rpmbuild",
"RPM_MANDRIVA"=>"rpmbuild", "RPM_MANDRIVA"=>"rpmbuild",
"RPM_OPENSUSE"=>"rpmbuild", "RPM_OPENSUSE"=>"rpmbuild",
"DEB"=>"dpkg", "DEB"=>"dpkg dpatch",
"APS"=>"zip", "APS"=>"zip",
"EXEDOLIWAMP"=>"ISCC.exe" "EXEDOLIWAMP"=>"ISCC.exe"
); );
@ -67,6 +67,23 @@ $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/;
$SOURCE="$DIR/.."; $SOURCE="$DIR/..";
$DESTI="$SOURCE/build"; $DESTI="$SOURCE/build";
if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"})
{
print "Error: Missing environment variables.\n";
print "You must define the environment variable DESTIBETARC and DESTISTABLE to point to the\ndirectories where you want to save the generated packages.\n";
print "Example: DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'\n";
print "Example: DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable'\n";
print "$PROG.$Extension aborted.\n";
sleep 2;
exit 1;
}
if (! -d $ENV{"DESTIBETARC"} || ! -d $ENV{"DESTISTABLE"})
{
print "Error: Directory of environment variable DESTIBETARC or DESTISTABLE does not exist.\n";
print "$PROG.$Extension aborted.\n";
sleep 2;
exit 1;
}
# Detect OS type # Detect OS type
# -------------- # --------------
@ -74,7 +91,7 @@ if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='
elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
if (! $OS) { if (! $OS) {
print "$PROG.$Extension was not able to detect your OS.\n"; print "Error: Can't detect your OS.\n";
print "Can't continue.\n"; print "Can't continue.\n";
print "$PROG.$Extension aborted.\n"; print "$PROG.$Extension aborted.\n";
sleep 2; sleep 2;
@ -113,8 +130,8 @@ for (0..@ARGV-1) {
$FILENAMESNAPSHOT.="-".$PREFIX; $FILENAMESNAPSHOT.="-".$PREFIX;
} }
} }
if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTI is defined if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTI is defined
if ($ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/) { $DESTI = $ENV{"DESTISTABLE"}; } # Force output dir if env DESTI is defined if ($ENV{"DESTISTABLE"} && $BUILD =~ /^[0-9]+$/) { $DESTI = $ENV{"DESTISTABLE"}; } # Force output dir if env DESTI is defined
print "Makepack version $VERSION\n"; print "Makepack version $VERSION\n";
@ -208,7 +225,7 @@ foreach my $target (keys %CHOOSEDTARGET) {
last; last;
} else { } else {
# Pas erreur ou erreur autre que programme absent # Pas erreur ou erreur autre que programme absent
print " Found ".$REQUIREMENTTARGET{$target}."\n"; print " Found ".$req."\n";
} }
} }
} }
@ -338,6 +355,7 @@ if ($nboftargetok) {
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`;
$ret=`rm -fr $BUILDROOT/$PROJECT/test`; $ret=`rm -fr $BUILDROOT/$PROJECT/test`;
$ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`;
@ -396,6 +414,7 @@ if ($nboftargetok) {
if ($target eq 'TGZ') if ($target eq 'TGZ')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/standard');
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
print "Remove target $FILENAMETGZ.tgz...\n"; print "Remove target $FILENAMETGZ.tgz...\n";
@ -422,6 +441,7 @@ if ($nboftargetok) {
if ($target eq 'XZ') if ($target eq 'XZ')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/standard');
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
print "Remove target $FILENAMEXZ.xz...\n"; print "Remove target $FILENAMEXZ.xz...\n";
@ -452,6 +472,7 @@ if ($nboftargetok) {
if ($target eq 'ZIP') if ($target eq 'ZIP')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/standard');
if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; }
print "Remove target $FILENAMEZIP.zip...\n"; print "Remove target $FILENAMEZIP.zip...\n";
@ -486,6 +507,7 @@ if ($nboftargetok) {
if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; } if ($target =~ /FEDO/i) { $subdir="package_rpm_redhat-fedora"; }
if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; } if ($target =~ /MAND/i) { $subdir="package_rpm_mandriva"; }
if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; } if ($target =~ /OPEN/i) { $subdir="package_rpm_opensuse"; }
mkdir($DESTI.'/'.$subdir);
if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; } if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; }
$ARCH='noarch'; $ARCH='noarch';
@ -582,6 +604,7 @@ if ($nboftargetok) {
if ($target eq 'DEB') if ($target eq 'DEB')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/package_debian-ubuntu');
if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; } if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; }
$olddir=getcwd(); $olddir=getcwd();
@ -742,6 +765,7 @@ if ($nboftargetok) {
if ($target eq 'APS') if ($target eq 'APS')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/package_aps');
if (-d $DESTI.'/package_aps') { $NEWDESTI=$DESTI.'/package_aps'; } if (-d $DESTI.'/package_aps') { $NEWDESTI=$DESTI.'/package_aps'; }
$newbuild = $BUILD; $newbuild = $BUILD;
@ -826,6 +850,7 @@ if ($nboftargetok) {
if ($target eq 'EXEDOLIWAMP') if ($target eq 'EXEDOLIWAMP')
{ {
$NEWDESTI=$DESTI; $NEWDESTI=$DESTI;
mkdir($DESTI.'/package_windows');
if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; } if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; }
print "Remove target $FILENAMEEXEDOLIWAMP.exe...\n"; print "Remove target $FILENAMEEXEDOLIWAMP.exe...\n";

View File

@ -45,9 +45,9 @@ elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) {
$CR = "\r"; $CR = "\r";
} }
if ( !$OS ) { if ( !$OS ) {
print "makepack-dolbarrlang.pl was not able to detect your OS.\n"; print "$PROG.$Extension was not able to detect your OS.\n";
print "Can't continue.\n"; print "Can't continue.\n";
print "makepack-dolibarrlang.pl aborted.\n"; print "$PROG.$Extension aborted.\n";
sleep 2; sleep 2;
exit 1; exit 1;
} }

View File

@ -37,9 +37,9 @@ if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='
elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
if (! $OS) { if (! $OS) {
print "makepack-dolbarrmodule.pl was not able to detect your OS.\n"; print "$PROG.$Extension was not able to detect your OS.\n";
print "Can't continue.\n"; print "Can't continue.\n";
print "makepack-dolibarrmodule.pl aborted.\n"; print "$PROG.$Extension aborted.\n";
sleep 2; sleep 2;
exit 1; exit 1;
} }
@ -59,7 +59,7 @@ if ($OS =~ /windows/) {
if (! $TEMP || ! -d $TEMP) { if (! $TEMP || ! -d $TEMP) {
print "Error: A temporary directory can not be find.\n"; print "Error: A temporary directory can not be find.\n";
print "Check that TEMP or TMP environment variable is set correctly.\n"; print "Check that TEMP or TMP environment variable is set correctly.\n";
print "makepack-dolibarrmodule.pl aborted.\n"; print "$PROG.$Extension aborted.\n";
sleep 2; sleep 2;
exit 2; exit 2;
} }

View File

@ -41,9 +41,9 @@ if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='
elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; }
elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; }
if (! $OS) { if (! $OS) {
print "makepack-dolbarrtheme.pl was not able to detect your OS.\n"; print "$PROG.$Extension was not able to detect your OS.\n";
print "Can't continue.\n"; print "Can't continue.\n";
print "makepack-dolibarrtheme.pl aborted.\n"; print "$PROG.$Extension aborted.\n";
sleep 2; sleep 2;
exit 1; exit 1;
} }

View File

@ -11,6 +11,7 @@ a package onto OBS
#---------------------------------- #----------------------------------
https://build.opensuse.org https://build.opensuse.org
Packaging rules: http://en.opensuse.org/Portal:Packaging
Add attributes: Add attributes:
OBS:Screenshots URL of screenshot OBS:Screenshots URL of screenshot

View File

@ -4,10 +4,10 @@
<CompanyName /> <CompanyName />
<Program_Info> <Program_Info>
<Program_Name>DoliWamp</Program_Name> <Program_Name>DoliWamp</Program_Name>
<Program_Version>3.3.0</Program_Version> <Program_Version>3.5.0</Program_Version>
<Program_Release_Month>08</Program_Release_Month> <Program_Release_Month>01</Program_Release_Month>
<Program_Release_Day>10</Program_Release_Day> <Program_Release_Day>01</Program_Release_Day>
<Program_Release_Year>2012</Program_Release_Year> <Program_Release_Year>2014</Program_Release_Year>
<Program_Cost_Dollars /> <Program_Cost_Dollars />
<Program_Cost_Other_Code /> <Program_Cost_Other_Code />
<Program_Cost_Other /> <Program_Cost_Other />

View File

@ -4,10 +4,10 @@
<CompanyName /> <CompanyName />
<Program_Info> <Program_Info>
<Program_Name>Dolibarr</Program_Name> <Program_Name>Dolibarr</Program_Name>
<Program_Version>3.3.0</Program_Version> <Program_Version>3.5.0</Program_Version>
<Program_Release_Month>08</Program_Release_Month> <Program_Release_Month>01</Program_Release_Month>
<Program_Release_Day>10</Program_Release_Day> <Program_Release_Day>01</Program_Release_Day>
<Program_Release_Year>2012</Program_Release_Year> <Program_Release_Year>2014</Program_Release_Year>
<Program_Cost_Dollars /> <Program_Cost_Dollars />
<Program_Cost_Other_Code /> <Program_Cost_Other_Code />
<Program_Cost_Other /> <Program_Cost_Other />

View File

@ -34,10 +34,10 @@
</Company_Info> </Company_Info>
<Program_Info> <Program_Info>
<Program_Name>Dolibarr</Program_Name> <Program_Name>Dolibarr</Program_Name>
<Program_Version>3.4</Program_Version> <Program_Version>3.5</Program_Version>
<Program_Release_Month>07</Program_Release_Month> <Program_Release_Month>01</Program_Release_Month>
<Program_Release_Day>07</Program_Release_Day> <Program_Release_Day>01</Program_Release_Day>
<Program_Release_Year>2013</Program_Release_Year> <Program_Release_Year>2014</Program_Release_Year>
<Program_Cost_Dollars /> <Program_Cost_Dollars />
<Program_Cost_Other_Code /> <Program_Cost_Other_Code />
<Program_Cost_Other /> <Program_Cost_Other />

View File

@ -17,15 +17,15 @@
<Contact_Info> <Contact_Info>
<Author_First_Name>NLTechno</Author_First_Name> <Author_First_Name>NLTechno</Author_First_Name>
<Author_Last_Name>NLTechno</Author_Last_Name> <Author_Last_Name>NLTechno</Author_Last_Name>
<Author_Email>dolibarr@nltechno.com</Author_Email> <Author_Email>contact@nltechno.com</Author_Email>
<Contact_First_Name>NLTechno</Contact_First_Name> <Contact_First_Name>NLTechno</Contact_First_Name>
<Contact_Last_Name>NLTechno</Contact_Last_Name> <Contact_Last_Name>NLTechno</Contact_Last_Name>
<Contact_Email>dolibarr@nltechno.com</Contact_Email> <Contact_Email>contact@nltechno.com</Contact_Email>
</Contact_Info> </Contact_Info>
<Support_Info> <Support_Info>
<Sales_Email>dolibarr@nltechno.com</Sales_Email> <Sales_Email>support@nltechno.com</Sales_Email>
<Support_Email>dolibarr@nltechno.com</Support_Email> <Support_Email>support@nltechno.com</Support_Email>
<General_Email>dolibarr@nltechno.com</General_Email> <General_Email>support@nltechno.com</General_Email>
<Sales_Phone /> <Sales_Phone />
<Support_Phone /> <Support_Phone />
<General_Phone /> <General_Phone />
@ -34,10 +34,10 @@
</Company_Info> </Company_Info>
<Program_Info> <Program_Info>
<Program_Name>DoliWamp</Program_Name> <Program_Name>DoliWamp</Program_Name>
<Program_Version>3.4</Program_Version> <Program_Version>3.5</Program_Version>
<Program_Release_Month>07</Program_Release_Month> <Program_Release_Month>01</Program_Release_Month>
<Program_Release_Day>07</Program_Release_Day> <Program_Release_Day>01</Program_Release_Day>
<Program_Release_Year>2013</Program_Release_Year> <Program_Release_Year>2014</Program_Release_Year>
<Program_Cost_Dollars /> <Program_Cost_Dollars />
<Program_Cost_Other_Code /> <Program_Cost_Other_Code />
<Program_Cost_Other /> <Program_Cost_Other />

View File

@ -159,6 +159,7 @@ done >>%{name}.lang
%_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/adherents
%_datadir/dolibarr/htdocs/admin %_datadir/dolibarr/htdocs/admin
%_datadir/dolibarr/htdocs/asterisk %_datadir/dolibarr/htdocs/asterisk
%_datadir/dolibarr/htdocs/barcode
%_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bookmarks
%_datadir/dolibarr/htdocs/boutique %_datadir/dolibarr/htdocs/boutique
%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/cashdesk
@ -330,5 +331,5 @@ 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 # 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 %changelog
* Wed Nov 6 2013 Laurent Destailleur 3.6.0-0.12.b * Mon Dec 30 2013 Laurent Destailleur 3.6.0-0.2.b
- Initial version (#723326) - Initial version (#723326)

View File

@ -239,6 +239,7 @@ done >>%{name}.lang
%_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/adherents
%_datadir/dolibarr/htdocs/admin %_datadir/dolibarr/htdocs/admin
%_datadir/dolibarr/htdocs/asterisk %_datadir/dolibarr/htdocs/asterisk
%_datadir/dolibarr/htdocs/barcode
%_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bookmarks
%_datadir/dolibarr/htdocs/boutique %_datadir/dolibarr/htdocs/boutique
%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/cashdesk
@ -558,5 +559,5 @@ 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 # 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 %changelog
* Wed Nov 6 2013 Laurent Destailleur 3.6.0-0.1.b * Mon Dec 30 2013 Laurent Destailleur 3.6.0-0.2.b
- Initial version (#723326) - Initial version (#723326)

View File

@ -156,6 +156,7 @@ done >>%{name}.lang
%_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/adherents
%_datadir/dolibarr/htdocs/admin %_datadir/dolibarr/htdocs/admin
%_datadir/dolibarr/htdocs/asterisk %_datadir/dolibarr/htdocs/asterisk
%_datadir/dolibarr/htdocs/barcode
%_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bookmarks
%_datadir/dolibarr/htdocs/boutique %_datadir/dolibarr/htdocs/boutique
%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/cashdesk
@ -335,5 +336,5 @@ 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 # 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 %changelog
* Wed Nov 6 2013 Laurent Destailleur 3.6.0-0.1.b * Mon Dec 30 2013 Laurent Destailleur 3.6.0-0.2.b
- Initial version (#723326) - Initial version (#723326)

View File

@ -167,6 +167,7 @@ done >>%{name}.lang
%_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/adherents
%_datadir/dolibarr/htdocs/admin %_datadir/dolibarr/htdocs/admin
%_datadir/dolibarr/htdocs/asterisk %_datadir/dolibarr/htdocs/asterisk
%_datadir/dolibarr/htdocs/barcode
%_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bookmarks
%_datadir/dolibarr/htdocs/boutique %_datadir/dolibarr/htdocs/boutique
%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/cashdesk
@ -345,5 +346,5 @@ 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 # 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 %changelog
* Wed Nov 6 2013 Laurent Destailleur 3.6.0-0.1.b * Mon Dec 30 2013 Laurent Destailleur 3.6.0-0.2.b
- Initial version (#723326) - Initial version (#723326)

View File

@ -49,3 +49,8 @@ with
//var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth); //var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth);
window.location.href=pRef window.location.href=pRef
* Replace hard coded string with i18n["String"]; * Replace hard coded string with i18n["String"];
JCROP:
------
* Remove analytics tag into file index.html

0
dev/initdata/dolibarr-mysql2pgsql.pl Normal file → Executable file
View File

0
dev/initdata/mysqldump_dolibarr_3.0.0.sql Executable file → Normal file
View File

0
dev/initdata/mysqldump_dolibarr_3.1.0.sql Executable file → Normal file
View File

View File

@ -131,6 +131,8 @@ class modMyModule extends DolibarrModules
// 'user' to add a tab in user view // 'user' to add a tab in user view
// 'group' to add a tab in group view // 'group' to add a tab in group view
// 'contact' to add a tab in contact view // 'contact' to add a tab in contact view
// 'payment' to add a tab in payment view
// 'payment_supplier' to add a tab in supplier payment view
// 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
$this->tabs = array(); $this->tabs = array();

View File

@ -20,7 +20,7 @@ fi
if [ "x$1" = "xall" ] if [ "x$1" = "xall" ]
then then
for fic in ar_SA bg_BG ca_ES da_DK de_DE el_GR es_ES et_EE fa_IR fi_FI fr_FR he_IL hu_HU is_IS it_IT ja_JP ko_KR lv_LV nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sl_SI sv_SE tr_TR uz_UZ vi_VN zh_CN zh_TW for fic in ar_SA bg_BG ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE fa_IR fi_FI fr_FR he_IL hu_HU is_IS it_IT ja_JP ko_KR lv_LV nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sv_SE tr_TR uz_UZ vi_VN zh_CN zh_TW
do do
echo "tx pull -l $fic $2 $3" echo "tx pull -l $fic $2 $3"
tx pull -l $fic $2 $3 tx pull -l $fic $2 $3

View File

@ -20,7 +20,7 @@ fi
if [ "x$1" = "xall" ] if [ "x$1" = "xall" ]
then then
for fic in ar_SA bg_BG ca_ES da_DK de_DE el_GR es_ES et_EE fa_IR fi_FI fr_FR he_IL hu_HU is_IS it_IT ja_JP ko_KR lv_LV nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sl_SI sv_SE tr_TR uz_UZ vi_VN zh_CN zh_TW for fic in ar_SA bg_BG ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE fa_IR fi_FI fr_FR he_IL hu_HU is_IS it_IT ja_JP ko_KR lv_LV nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sv_SE tr_TR uz_UZ vi_VN zh_CN zh_TW
do do
echo "tx push --skip -t -l $fic $2 $3" echo "tx push --skip -t -l $fic $2 $3"
tx push --skip -t -l $fic $2 $3 tx push --skip -t -l $fic $2 $3

60
dev/vagrant/README.md Normal file
View File

@ -0,0 +1,60 @@
Vagrant development box for Dolibarr
====================================
Introduction
------------
[Vagrant](http://vagrantup.com) is a tool to make development easier using [VirtualBox](http://virtualbox.org) virtual machines.
These machines have been created with [PuPHEt](http://puphpet.com) and combine the power of Vagrant with [Puppet](http://puppetlabs.com) to automate the development machine provisionning.
What you need
-------------
Latest versions of:
- [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
- [Vagrant](http://downloads.vagrantup.com/)
Usage
-----
### VM startup
`cd` into the vagrant box directory and simply type `vagrant up`.
That's all you need to do. It will build a brand new VirtalBox machine for you with everything you need to develop on Dolibarr.
### Name resolution
For easy access to the VM you need to setup name resolution to the machines IP.
Edit the [hosts](https://fr.wikipedia.org/wiki/Hosts) file on the machine you run Vagrant on to map the virtual machine's IP to it's Vhost name.
Example syntax:
192.168.42.101 dev.dolibarr.org
Once this is done, you will be able to access your VM's service at <http://dolibarr.dev>
Available boxes
---------------
### dolibardev
Somewhat bleeding edge vagrant box for develop branch related work.
- IP: 192.168.42.101
- Vhost: dev.dolibarr.org
- OS: Debian Wheezy 7.2
- Webserver: Apache 2.2
- PHP: mod_php 5.5
- Database: MySQL 5.5
- Root user: root
- Root password: root
- Database name: dolibarr
- Database user: user
- Database password: user
- Initial data: dev/initdata/mysqldump_dolibarr-3.5.0.sql
- Debugger: XDebug
- Profiler: Xhprof
- phpMyAdmin: <http://192.168.42.101/phpmyadmin>

42
dev/vagrant/dolibarrdev/Vagrantfile vendored Normal file
View File

@ -0,0 +1,42 @@
Vagrant.configure("2") do |config|
config.vm.box = "debian-wheezy72-x64-vbox43"
config.vm.box_url = "https://puphpet.s3.amazonaws.com/debian-wheezy72-x64-vbox43.box"
config.vm.network "private_network", ip: "192.168.42.101"
config.vm.synced_folder "../../../", "/var/www", id: "vagrant-root", :nfs => false, owner: "www-data", group: "www-data"
config.vm.usable_port_range = (2200..2250)
config.vm.provider :virtualbox do |virtualbox|
virtualbox.customize ["modifyvm", :id, "--name", "dolibarrdev"]
virtualbox.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
virtualbox.customize ["modifyvm", :id, "--memory", "512"]
virtualbox.customize ["setextradata", :id, "--VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
config.vm.provision :shell, :path => "shell/initial-setup.sh"
config.vm.provision :shell, :path => "shell/update-puppet.sh"
config.vm.provision :shell, :path => "shell/librarian-puppet-vagrant.sh"
config.vm.provision :puppet do |puppet|
puppet.facter = {
"ssh_username" => "vagrant"
}
puppet.manifests_path = "puppet/manifests"
puppet.options = ["--verbose", "--hiera_config /vagrant/hiera.yaml", "--parser future"]
end
config.ssh.username = "vagrant"
config.ssh.shell = "bash -l"
config.ssh.keep_alive = true
config.ssh.forward_agent = false
config.ssh.forward_x11 = false
config.vagrant.host = :detect
end

View File

@ -0,0 +1,52 @@
if [ -f /etc/bash_completion ]; then
source /etc/bash_completion
fi
__has_parent_dir () {
# Utility function so we can test for things like .git/.hg without firing up a
# separate process
test -d "$1" && return 0;
current="."
while [ ! "$current" -ef "$current/.." ]; do
if [ -d "$current/$1" ]; then
return 0;
fi
current="$current/..";
done
return 1;
}
__vcs_name() {
if [ -d .svn ]; then
echo "-[svn]";
elif __has_parent_dir ".git"; then
echo "-[$(__git_ps1 'git %s')]";
elif __has_parent_dir ".hg"; then
echo "-[hg $(hg branch)]"
fi
}
black=$(tput -Txterm setaf 0)
red=$(tput -Txterm setaf 1)
green=$(tput -Txterm setaf 2)
yellow=$(tput -Txterm setaf 3)
dk_blue=$(tput -Txterm setaf 4)
pink=$(tput -Txterm setaf 5)
lt_blue=$(tput -Txterm setaf 6)
bold=$(tput -Txterm bold)
reset=$(tput -Txterm sgr0)
# Nicely formatted terminal prompt
export PS1='\n\[$bold\]\[$black\][\[$dk_blue\]\@\[$black\]]-[\[$green\]\u\[$yellow\]@\[$green\]\h\[$black\]]-[\[$pink\]\w\[$black\]]\[\033[0;33m\]$(__vcs_name) \[\033[00m\]\[$reset\]\n\[$reset\]\$ '
alias ls='ls -F --color=always'
alias dir='dir -F --color=always'
alias ll='ls -l'
alias cp='cp -iv'
alias rm='rm -i'
alias mv='mv -iv'
alias grep='grep --color=auto -in'
alias ..='cd ..'

View File

@ -0,0 +1,414 @@
set rtp+=$GOROOT/misc/vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Maintainer:
" Amir Salihefendic
" http://amix.dk - amix@amix.dk
"
" Version:
" 5.0 - 29/05/12 15:43:36
"
" Blog_post:
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github
"
" Awesome_version:
" Get this config, nice color schemes and lots of plugins!
"
" Install the awesome version from:
"
" https://github.com/amix/vimrc
"
" Syntax_highlighted:
" http://amix.dk/vim/vimrc.html
"
" Raw_version:
" http://amix.dk/vim/vimrc.txt
"
" Sections:
" -> General
" -> VIM user interface
" -> Colors and Fonts
" -> Files and backups
" -> Text, tab and indent related
" -> Visual mode related
" -> Moving around, tabs and buffers
" -> Status line
" -> Editing mappings
" -> vimgrep searching and cope displaying
" -> Spell checking
" -> Misc
" -> Helper functions
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Sets how many lines of history VIM has to remember
set history=700
" Enable filetype plugins
filetype plugin on
filetype indent on
" Set to auto read when a file is changed from the outside
set autoread
" With a map leader it's possible to do extra key combinations
" like <leader>w saves the current file
let mapleader = ","
let g:mapleader = ","
" Fast saving
nmap <leader>w :w!<cr>
" :W sudo saves the file
" (useful for handling the permission-denied error)
command W w !sudo tee % > /dev/null
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM user interface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Set 7 lines to the cursor - when moving vertically using j/k
set so=7
" Turn on the WiLd menu
set wildmenu
" Ignore compiled files
set wildignore=*.o,*~,*.pyc
if has("win16") || has("win32")
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store
else
set wildignore+=.git\*,.hg\*,.svn\*
endif
"Always show current position
set ruler
" Height of the command bar
set cmdheight=2
" A buffer becomes hidden when it is abandoned
set hid
" Configure backspace so it acts as it should act
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
" Ignore case when searching
set ignorecase
" When searching try to be smart about cases
set smartcase
" Highlight search results
set hlsearch
" Makes search act like search in modern browsers
set incsearch
" Don't redraw while executing macros (good performance config)
set lazyredraw
" For regular expressions turn magic on
set magic
" Show matching brackets when text indicator is over them
set showmatch
" How many tenths of a second to blink when matching brackets
set mat=2
" No annoying sound on errors
set noerrorbells
set novisualbell
set t_vb=
set tm=500
" Add a bit extra margin to the left
set foldcolumn=1
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Fonts
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Enable syntax highlighting
syntax enable
try
colorscheme desert
catch
endtry
set background=dark
" Set extra options when running in GUI mode
if has("gui_running")
set guioptions-=T
set guioptions-=e
set t_Co=256
set guitablabel=%M\ %t
endif
" Set utf8 as standard encoding and en_US as the standard language
set encoding=utf8
" Use Unix as the standard file type
set ffs=unix,dos,mac
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files, backups and undo
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Turn backup off, since most stuff is in SVN, git et.c anyway...
set nobackup
set nowb
set noswapfile
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text, tab and indent related
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Use spaces instead of tabs
set expandtab
" Be smart when using tabs ;)
set smarttab
" 1 tab == 4 spaces
set shiftwidth=4
set tabstop=4
" Linebreak on 500 characters
set lbr
set tw=500
set ai "Auto indent
set si "Smart indent
set wrap "Wrap lines
""""""""""""""""""""""""""""""
" => Visual mode related
""""""""""""""""""""""""""""""
" Visual mode pressing * or # searches for the current selection
" Super useful! From an idea by Michael Naumann
vnoremap <silent> * :call VisualSelection('f', '')<CR>
vnoremap <silent> # :call VisualSelection('b', '')<CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Moving around, tabs, windows and buffers
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Treat long lines as break lines (useful when moving around in them)
map j gj
map k gk
" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search)
map <space> /
map <c-space> ?
" Disable highlight when <leader><cr> is pressed
map <silent> <leader><cr> :noh<cr>
" Smart way to move between windows
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
" Close the current buffer
map <leader>bd :Bclose<cr>
" Close all the buffers
map <leader>ba :1,1000 bd!<cr>
" Useful mappings for managing tabs
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove
map <leader>t<leader> :tabnext
" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/
" Switch CWD to the directory of the open buffer
map <leader>cd :cd %:p:h<cr>:pwd<cr>
" Specify the behavior when switching between buffers
try
set switchbuf=useopen,usetab,newtab
set stal=2
catch
endtry
" Return to last edit position when opening files (You want this!)
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
" Remember info about open buffers on close
set viminfo^=%
""""""""""""""""""""""""""""""
" => Status line
""""""""""""""""""""""""""""""
" Always show the status line
set laststatus=2
" Format the status line
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Editing mappings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Remap VIM 0 to first non-blank character
map 0 ^
" Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
nmap <M-j> mz:m+<cr>`z
nmap <M-k> mz:m-2<cr>`z
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
if has("mac") || has("macunix")
nmap <D-j> <M-j>
nmap <D-k> <M-k>
vmap <D-j> <M-j>
vmap <D-k> <M-k>
endif
" Delete trailing white space on save, useful for Python and CoffeeScript ;)
func! DeleteTrailingWS()
exe "normal mz"
%s/\s\+$//ge
exe "normal `z"
endfunc
autocmd BufWrite *.py :call DeleteTrailingWS()
autocmd BufWrite *.coffee :call DeleteTrailingWS()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => vimgrep searching and cope displaying
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" When you press gv you vimgrep after the selected text
vnoremap <silent> gv :call VisualSelection('gv', '')<CR>
" Open vimgrep and put the cursor in the right position
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>
" Vimgreps in the current file
map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right>
" When you press <leader>r you can search and replace the selected text
vnoremap <silent> <leader>r :call VisualSelection('replace', '')<CR>
" Do :help cope if you are unsure what cope is. It's super useful!
"
" When you search with vimgrep, display your results in cope by doing:
" <leader>cc
"
" To go to the next search result do:
" <leader>n
"
" To go to the previous search results do:
" <leader>p
"
map <leader>cc :botright cope<cr>
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg
map <leader>n :cn<cr>
map <leader>p :cp<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Spell checking
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Pressing ,ss will toggle and untoggle spell checking
map <leader>ss :setlocal spell!<cr>
" Shortcuts using <leader>
map <leader>sn ]s
map <leader>sp [s
map <leader>sa zg
map <leader>s? z=
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Misc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Remove the Windows ^M - when the encodings gets messed up
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm
" Quickly open a buffer for scripbble
map <leader>q :e ~/buffer<cr>
" Toggle paste mode on and off
map <leader>pp :setlocal paste!<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Helper functions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! CmdLine(str)
exe "menu Foo.Bar :" . a:str
emenu Foo.Bar
unmenu Foo
endfunction
function! VisualSelection(direction, extra_filter) range
let l:saved_reg = @"
execute "normal! vgvy"
let l:pattern = escape(@", '\\/.*$^~[]')
let l:pattern = substitute(l:pattern, "\n$", "", "")
if a:direction == 'b'
execute "normal ?" . l:pattern . "^M"
elseif a:direction == 'gv'
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.' . a:extra_filter)
elseif a:direction == 'replace'
call CmdLine("%s" . '/'. l:pattern . '/')
elseif a:direction == 'f'
execute "normal /" . l:pattern . "^M"
endif
let @/ = l:pattern
let @" = l:saved_reg
endfunction
" Returns true if paste mode is enabled
function! HasPaste()
if &paste
return 'PASTE MODE '
en
return ''
endfunction
" Don't close window, when deleting a buffer
command! Bclose call <SID>BufcloseCloseIt()
function! <SID>BufcloseCloseIt()
let l:currentBufNum = bufnr("%")
let l:alternateBufNum = bufnr("#")
if buflisted(l:alternateBufNum)
buffer #
else
bnext
endif
if bufnr("%") == l:currentBufNum
new
endif
if buflisted(l:currentBufNum)
execute("bdelete! ".l:currentBufNum)
endif
endfunction

View File

@ -0,0 +1,7 @@
---
:backends: yaml
:yaml:
:datadir: '/vagrant/puppet/hieradata'
:hierarchy:
- common
:logger: console

View File

@ -0,0 +1,13 @@
forge "http://forge.puppetlabs.com"
mod 'stdlib', :git => 'git://github.com/puphpet/puppetlabs-stdlib.git'
mod 'concat', :git => 'git://github.com/puphpet/puppetlabs-concat.git'
mod 'apt', :git => 'git://github.com/puphpet/puppetlabs-apt.git'
mod 'yum', :git => 'git://github.com/puphpet/puppet-yum.git'
mod 'vcsrepo', :git => 'git://github.com/puphpet/puppetlabs-vcsrepo.git'
mod 'ntp', :git => 'git://github.com/puphpet/puppetlabs-ntp.git'
mod 'iptables', :git => 'git://github.com/puphpet/puppet-iptables.git'
mod 'apache', :git => 'git://github.com/puphpet/puppetlabs-apache.git'
mod 'php', :git => 'git://github.com/puphpet/puppet-php.git'
mod 'composer', :git => 'git://github.com/puphpet/puppet-composer.git'
mod 'puphpet', :git => 'git://github.com/puphpet/puppet-puphpet.git'
mod 'mysql', :git => 'git://github.com/puphpet/puppetlabs-mysql.git'

View File

@ -0,0 +1,121 @@
---
vagrantfile-local:
vm:
box: debian-wheezy72-x64-vbox43
box_url: 'https://puphpet.s3.amazonaws.com/debian-wheezy72-x64-vbox43.box'
hostname: null
network:
private_network: 192.168.42.101
forwarded_port:
IoUPe5V4KFVe:
host: ''
guest: ''
provider:
virtualbox:
modifyvm:
name: dolibarrdev
natdnshostresolver1: on
memory: '512'
setextradata:
VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root: 1
provision:
puppet:
manifests_path: puppet/manifests
options:
- --verbose
- '--hiera_config /vagrant/hiera.yaml'
- '--parser future'
synced_folder:
w8TR2T1V5h4o:
id: vagrant-root
source: ../../../
target: /var/www
nfs: 'false'
usable_port_range: 2200..2250
ssh:
host: null
port: null
private_key_path: null
username: vagrant
guest_port: null
keep_alive: true
forward_agent: false
forward_x11: false
shell: 'bash -l'
vagrant:
host: ':detect'
server:
packages:
- nano
- ack-grep
dot_files:
-
bash_aliases: null
_prevent_empty: ''
apache:
modules:
- php
- rewrite
vhosts:
vkJFW364QjeN:
servername: dev.dolibarr.org
docroot: /var/www/htdocs
port: '80'
setenv:
- 'APP_ENV dev'
override:
- All
user: www-data
group: www-data
default_vhost: true
mpm_module: prefork
php:
version: '55'
composer: '1'
modules:
php:
- cli
- intl
- mcrypt
- curl
- imagick
- gd
pear: { }
pecl: { }
ini:
display_errors: On
error_reporting: '-1'
session.save_path: /var/lib/php/session
timezone: UTC
xdebug:
install: '1'
settings:
xdebug.default_enable: '1'
xdebug.remote_autostart: '0'
xdebug.remote_connect_back: '1'
xdebug.remote_enable: '1'
xdebug.remote_handler: dbgp
xdebug.remote_port: '9000'
xhprof:
install: '1'
location: /var/www/xhprof
mysql:
root_password: root
phpmyadmin: '1'
databases:
4TUR1gNNdrQV:
grant:
- ALTER
- CREATE
- DELETE
- DROP
- INDEX
- INSERT
- SELECT
- UPDATE
name: dolibarr
host: localhost
user: user
password: user
sql_file: /var/www/dev/initdata/mysqldump_dolibarr_3.5.0.sql

View File

@ -0,0 +1,541 @@
## Begin Server manifest
if $server_values == undef {
$server_values = hiera('server', false)
}
# Ensure the time is accurate, reducing the possibilities of apt repositories
# failing for invalid certificates
include '::ntp'
Exec { path => [ '/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/' ] }
File { owner => 0, group => 0, mode => 0644 }
group { 'puppet': ensure => present }
group { 'www-data': ensure => present }
user { $::ssh_username:
shell => '/bin/bash',
home => "/home/${::ssh_username}",
ensure => present
}
user { ['apache', 'nginx', 'httpd', 'www-data']:
shell => '/bin/bash',
ensure => present,
groups => 'www-data',
require => Group['www-data']
}
file { "/home/${::ssh_username}":
ensure => directory,
owner => $::ssh_username,
}
# copy dot files to ssh user's home directory
exec { 'dotfiles':
cwd => "/home/${::ssh_username}",
command => "cp -r /vagrant/files/dot/.[a-zA-Z0-9]* /home/${::ssh_username}/ && chown -R ${::ssh_username} /home/${::ssh_username}/.[a-zA-Z0-9]*",
onlyif => "test -d /vagrant/files/dot",
require => User[$::ssh_username]
}
case $::osfamily {
# debian, ubuntu
'debian': {
class { 'apt': }
Class['::apt::update'] -> Package <|
title != 'python-software-properties'
and title != 'software-properties-common'
|>
ensure_packages( ['augeas-tools'] )
}
# redhat, centos
'redhat': {
class { 'yum': extrarepo => ['epel'] }
Class['::yum'] -> Yum::Managed_yumrepo <| |> -> Package <| |>
exec { 'bash_git':
cwd => "/home/${::ssh_username}",
command => "curl https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > /home/${::ssh_username}/.bash_git",
creates => "/home/${::ssh_username}/.bash_git"
}
file_line { 'link ~/.bash_git':
ensure => present,
line => 'if [ -f ~/.bash_git ] ; then source ~/.bash_git; fi',
path => "/home/${::ssh_username}/.bash_profile",
require => [
Exec['dotfiles'],
Exec['bash_git'],
]
}
file_line { 'link ~/.bash_aliases':
ensure => present,
line => 'if [ -f ~/.bash_aliases ] ; then source ~/.bash_aliases; fi',
path => "/home/${::ssh_username}/.bash_profile",
require => [
File_line['link ~/.bash_git'],
]
}
ensure_packages( ['augeas'] )
}
}
if $php_values == undef {
$php_values = hiera('php', false)
}
case $::operatingsystem {
'debian': {
add_dotdeb { 'packages.dotdeb.org': release => $lsbdistcodename }
if is_hash($php_values) {
# Debian Squeeze 6.0 can do PHP 5.3 (default) and 5.4
if $lsbdistcodename == 'squeeze' and $php_values['version'] == '54' {
add_dotdeb { 'packages.dotdeb.org-php54': release => 'squeeze-php54' }
}
# Debian Wheezy 7.0 can do PHP 5.4 (default) and 5.5
elsif $lsbdistcodename == 'wheezy' and $php_values['version'] == '55' {
add_dotdeb { 'packages.dotdeb.org-php55': release => 'wheezy-php55' }
}
}
}
'ubuntu': {
apt::key { '4F4EA0AAE5267A6C': }
if is_hash($php_values) {
# Ubuntu Lucid 10.04, Precise 12.04, Quantal 12.10 and Raring 13.04 can do PHP 5.3 (default <= 12.10) and 5.4 (default <= 13.04)
if $lsbdistcodename in ['lucid', 'precise', 'quantal', 'raring'] and $php_values['version'] == '54' {
if $lsbdistcodename == 'lucid' {
apt::ppa { 'ppa:ondrej/php5-oldstable': require => Apt::Key['4F4EA0AAE5267A6C'], options => '' }
} else {
apt::ppa { 'ppa:ondrej/php5-oldstable': require => Apt::Key['4F4EA0AAE5267A6C'] }
}
}
# Ubuntu Precise 12.04, Quantal 12.10 and Raring 13.04 can do PHP 5.5
elsif $lsbdistcodename in ['precise', 'quantal', 'raring'] and $php_values['version'] == '55' {
apt::ppa { 'ppa:ondrej/php5': require => Apt::Key['4F4EA0AAE5267A6C'] }
}
elsif $lsbdistcodename in ['lucid'] and $php_values['version'] == '55' {
err('You have chosen to install PHP 5.5 on Ubuntu 10.04 Lucid. This will probably not work!')
}
}
}
'redhat', 'centos': {
if is_hash($php_values) {
if $php_values['version'] == '54' {
class { 'yum::repo::remi': }
}
# remi_php55 requires the remi repo as well
elsif $php_values['version'] == '55' {
class { 'yum::repo::remi': }
class { 'yum::repo::remi_php55': }
}
}
}
}
if !empty($server_values['packages']) {
ensure_packages( $server_values['packages'] )
}
define add_dotdeb ($release){
apt::source { $name:
location => 'http://packages.dotdeb.org',
release => $release,
repos => 'all',
required_packages => 'debian-keyring debian-archive-keyring',
key => '89DF5277',
key_server => 'keys.gnupg.net',
include_src => true
}
}
## Begin Apache manifest
if $yaml_values == undef {
$yaml_values = loadyaml('/vagrant/puppet/hieradata/common.yaml')
}
if $apache_values == undef {
$apache_values = $yaml_values['apache']
}
include puphpet::params
$webroot_location = $puphpet::params::apache_webroot_location
exec { "exec mkdir -p ${webroot_location}":
command => "mkdir -p ${webroot_location}",
onlyif => "test -d ${webroot_location}",
}
if ! defined(File[$webroot_location]) {
file { $webroot_location:
ensure => directory,
group => 'www-data',
mode => 0775,
require => [
Exec["exec mkdir -p ${webroot_location}"],
Group['www-data']
]
}
}
class { 'apache':
user => $apache_values['user'],
group => $apache_values['group'],
default_vhost => $apache_values['default_vhost'],
mpm_module => $apache_values['mpm_module'],
manage_user => false,
manage_group => false
}
if $::osfamily == 'debian' {
case $apache_values['mpm_module'] {
'prefork': { ensure_packages( ['apache2-mpm-prefork'] ) }
'worker': { ensure_packages( ['apache2-mpm-worker'] ) }
'event': { ensure_packages( ['apache2-mpm-event'] ) }
}
} elsif $::osfamily == 'redhat' and ! defined(Iptables::Allow['tcp/80']) {
iptables::allow { 'tcp/80':
port => '80',
protocol => 'tcp'
}
}
create_resources(apache::vhost, $apache_values['vhosts'])
define apache_mod {
if ! defined(Class["apache::mod::${name}"]) {
class { "apache::mod::${name}": }
}
}
if count($apache_values['modules']) > 0 {
apache_mod { $apache_values['modules']: }
}
## Begin PHP manifest
if $php_values == undef {
$php_values = hiera('php', false)
}
if $apache_values == undef {
$apache_values = hiera('apache', false)
}
if $nginx_values == undef {
$nginx_values = hiera('nginx', false)
}
Class['Php'] -> Class['Php::Devel'] -> Php::Module <| |> -> Php::Pear::Module <| |> -> Php::Pecl::Module <| |>
if $php_prefix == undef {
$php_prefix = $::operatingsystem ? {
/(?i:Ubuntu|Debian|Mint|SLES|OpenSuSE)/ => 'php5-',
default => 'php-',
}
}
if $php_fpm_ini == undef {
$php_fpm_ini = $::operatingsystem ? {
/(?i:Ubuntu|Debian|Mint|SLES|OpenSuSE)/ => '/etc/php5/fpm/php.ini',
default => '/etc/php.ini',
}
}
if is_hash($apache_values) {
include apache::params
$php_webserver_service = 'httpd'
$php_webserver_user = $apache::params::user
class { 'php':
service => $php_webserver_service
}
} elsif is_hash($nginx_values) {
include nginx::params
$php_webserver_service = "${php_prefix}fpm"
$php_webserver_user = $nginx::params::nx_daemon_user
class { 'php':
package => $php_webserver_service,
service => $php_webserver_service,
service_autorestart => false,
config_file => $php_fpm_ini,
}
service { $php_webserver_service:
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
require => Package[$php_webserver_service]
}
}
class { 'php::devel': }
if count($php_values['modules']['php']) > 0 {
php_mod { $php_values['modules']['php']:; }
}
if count($php_values['modules']['pear']) > 0 {
php_pear_mod { $php_values['modules']['pear']:; }
}
if count($php_values['modules']['pecl']) > 0 {
php_pecl_mod { $php_values['modules']['pecl']:; }
}
if count($php_values['ini']) > 0 {
$php_values['ini'].each { |$key, $value|
puphpet::ini { $key:
entry => "CUSTOM/${key}",
value => $value,
php_version => $php_values['version'],
webserver => $php_webserver_service
}
}
if $php_values['ini']['session.save_path'] != undef {
exec {"mkdir -p ${php_values['ini']['session.save_path']}":
onlyif => "test ! -d ${php_values['ini']['session.save_path']}",
}
file { $php_values['ini']['session.save_path']:
ensure => directory,
group => 'www-data',
mode => 0775,
require => Exec["mkdir -p ${php_values['ini']['session.save_path']}"]
}
}
}
puphpet::ini { $key:
entry => 'CUSTOM/date.timezone',
value => $php_values['timezone'],
php_version => $php_values['version'],
webserver => $php_webserver_service
}
define php_mod {
php::module { $name: }
}
define php_pear_mod {
php::pear::module { $name: use_package => false }
}
define php_pecl_mod {
php::pecl::module { $name: use_package => false }
}
if $php_values['composer'] == 1 {
class { 'composer':
target_dir => '/usr/local/bin',
composer_file => 'composer',
download_method => 'curl',
logoutput => false,
tmp_path => '/tmp',
php_package => "${php::params::module_prefix}cli",
curl_package => 'curl',
suhosin_enabled => false,
}
}
if $xdebug_values == undef {
$xdebug_values = hiera('xdebug', false)
}
if is_hash($apache_values) {
$xdebug_webserver_service = 'httpd'
} elsif is_hash($nginx_values) {
$xdebug_webserver_service = 'nginx'
} else {
$xdebug_webserver_service = undef
}
if $xdebug_values['install'] != undef and $xdebug_values['install'] == 1 {
class { 'puphpet::xdebug':
webserver => $xdebug_webserver_service
}
if is_hash($xdebug_values['settings']) and count($xdebug_values['settings']) > 0 {
$xdebug_values['settings'].each { |$key, $value|
puphpet::ini { $key:
entry => "XDEBUG/${key}",
value => $value,
php_version => $php_values['version'],
webserver => $xdebug_webserver_service
}
}
}
}
## Begin Xhprof manifest
if $xhprof_values == undef {
$xhprof_values = hiera('xhprof', false)
}
if is_hash($xhprof_values) and $xhprof_values['install'] == 1 {
$xhprofPath = $xhprof_values['location']
php::pecl::module { 'xhprof':
use_package => false,
preferred_state => 'beta',
}
exec { 'delete-xhprof-path-if-not-git-repo':
command => "rm -rf ${xhprofPath}",
onlyif => "test ! -d ${xhprofPath}/.git"
}
vcsrepo { $xhprofPath:
ensure => present,
provider => git,
source => 'https://github.com/facebook/xhprof.git',
require => Exec['delete-xhprof-path-if-not-git-repo']
}
file { "${xhprofPath}/xhprof_html":
ensure => directory,
mode => 0775,
require => Vcsrepo[$xhprofPath]
}
composer::exec { 'xhprof-composer-run':
cmd => 'install',
cwd => $xhprofPath,
require => [
Class['composer'],
File["${xhprofPath}/xhprof_html"]
]
}
}
## Begin MySQL manifest
if $mysql_values == undef {
$mysql_values = hiera('mysql', false)
}
if $php_values == undef {
$php_values = hiera('php', false)
}
if $apache_values == undef {
$apache_values = hiera('apache', false)
}
if $nginx_values == undef {
$nginx_values = hiera('nginx', false)
}
if $mysql_values['root_password'] {
class { 'mysql::server':
root_password => $mysql_values['root_password'],
}
if is_hash($mysql_values['databases']) and count($mysql_values['databases']) > 0 {
create_resources(mysql_db, $mysql_values['databases'])
}
if is_hash($php_values) {
if $::osfamily == 'redhat' and $php_values['version'] == '53' and ! defined(Php::Module['mysql']) {
php::module { 'mysql': }
} elsif ! defined(Php::Module['mysqlnd']) {
php::module { 'mysqlnd': }
}
}
}
define mysql_db (
$user,
$password,
$host,
$grant = [],
$sql_file = false
) {
if $name == '' or $password == '' or $host == '' {
fail( 'MySQL DB requires that name, password and host be set. Please check your settings!' )
}
mysql::db { $name:
user => $user,
password => $password,
host => $host,
grant => $grant,
sql => $sql_file,
}
}
if $mysql_values['phpmyadmin'] == 1 and is_hash($php_values) {
if $::osfamily == 'debian' {
if $::operatingsystem == 'ubuntu' {
apt::key { '80E7349A06ED541C': }
apt::ppa { 'ppa:nijel/phpmyadmin': require => Apt::Key['80E7349A06ED541C'] }
}
$phpMyAdmin_package = 'phpmyadmin'
$phpMyAdmin_folder = 'phpmyadmin'
} elsif $::osfamily == 'redhat' {
$phpMyAdmin_package = 'phpMyAdmin.noarch'
$phpMyAdmin_folder = 'phpMyAdmin'
}
if ! defined(Package[$phpMyAdmin_package]) {
package { $phpMyAdmin_package:
require => Class['mysql::server']
}
}
include puphpet::params
if is_hash($apache_values) {
$mysql_webroot_location = $puphpet::params::apache_webroot_location
} elsif is_hash($nginx_values) {
$mysql_webroot_location = $puphpet::params::nginx_webroot_location
mysql_nginx_default_conf { 'override_default_conf':
webroot => $mysql_webroot_location
}
}
file { "${mysql_webroot_location}/phpmyadmin":
target => "/usr/share/${phpMyAdmin_folder}",
ensure => link,
replace => 'no',
require => [
Package[$phpMyAdmin_package],
File[$mysql_webroot_location]
]
}
}
define mysql_nginx_default_conf (
$webroot
) {
if $php5_fpm_sock == undef {
$php5_fpm_sock = '/var/run/php5-fpm.sock'
}
if $fastcgi_pass == undef {
$fastcgi_pass = $php_values['version'] ? {
undef => null,
'53' => '127.0.0.1:9000',
default => "unix:${php5_fpm_sock}"
}
}
class { 'puphpet::nginx':
fastcgi_pass => $fastcgi_pass,
notify => Class['nginx::service'],
}
}

View File

@ -0,0 +1,36 @@
#!/bin/bash
OS=$(/bin/bash /vagrant/shell/os-detect.sh ID)
CODENAME=$(/bin/bash /vagrant/shell/os-detect.sh CODENAME)
if [[ ! -d /.puphpet-stuff ]]; then
cat /vagrant/shell/self-promotion.txt
mkdir /.puphpet-stuff
echo "Created directory /.puphpet-stuff"
fi
if [[ ! -f /.puphpet-stuff/initial-setup-repo-update ]]; then
if [ "$OS" == 'debian' ] || [ "$OS" == 'ubuntu' ]; then
echo "Running initial-setup apt-get update"
apt-get update >/dev/null
touch /.puphpet-stuff/initial-setup-repo-update
echo "Finished running initial-setup apt-get update"
elif [[ "$OS" == 'centos' ]]; then
echo "Running initial-setup yum update"
yum update -y >/dev/null
echo "Finished running initial-setup yum update"
echo "Installing basic development tools (CentOS)"
yum -y groupinstall "Development Tools" >/dev/null
echo "Finished installing basic development tools (CentOS)"
touch /.puphpet-stuff/initial-setup-repo-update
fi
fi
if [[ "$OS" == 'ubuntu' && ("$CODENAME" == 'lucid' || "$CODENAME" == 'precise') && ! -f /.puphpet-stuff/ubuntu-required-libraries ]]; then
echo 'Installing basic curl packages (Ubuntu only)'
apt-get install -y libcurl3 libcurl4-gnutls-dev >/dev/null
echo 'Finished installing basic curl packages (Ubuntu only)'
touch /.puphpet-stuff/ubuntu-required-libraries
fi

View File

@ -0,0 +1,82 @@
#!/bin/bash
OS=$(/bin/bash /vagrant/shell/os-detect.sh ID)
CODENAME=$(/bin/bash /vagrant/shell/os-detect.sh CODENAME)
# Directory in which librarian-puppet should manage its modules directory
PUPPET_DIR=/etc/puppet/
$(which git > /dev/null 2>&1)
FOUND_GIT=$?
if [ "$FOUND_GIT" -ne '0' ] && [ ! -f /.puphpet-stuff/librarian-puppet-installed ]; then
$(which apt-get > /dev/null 2>&1)
FOUND_APT=$?
$(which yum > /dev/null 2>&1)
FOUND_YUM=$?
echo 'Installing git'
if [ "${FOUND_YUM}" -eq '0' ]; then
yum -q -y makecache
yum -q -y install git
else
apt-get -q -y install git-core >/dev/null
fi
echo 'Finished installing git'
fi
if [[ ! -d "$PUPPET_DIR" ]]; then
mkdir -p "$PUPPET_DIR"
echo "Created directory $PUPPET_DIR"
fi
cp "/vagrant/puppet/Puppetfile" "$PUPPET_DIR"
echo "Copied Puppetfile"
if [ "$OS" == 'debian' ] || [ "$OS" == 'ubuntu' ]; then
if [[ ! -f /.puphpet-stuff/librarian-base-packages ]]; then
echo 'Installing base packages for librarian'
apt-get install -y build-essential ruby-dev >/dev/null
echo 'Finished installing base packages for librarian'
touch /.puphpet-stuff/librarian-base-packages
fi
fi
if [ "$OS" == 'ubuntu' ]; then
if [[ ! -f /.puphpet-stuff/librarian-libgemplugin-ruby ]]; then
echo 'Updating libgemplugin-ruby (Ubuntu only)'
apt-get install -y libgemplugin-ruby >/dev/null
echo 'Finished updating libgemplugin-ruby (Ubuntu only)'
touch /.puphpet-stuff/librarian-libgemplugin-ruby
fi
if [ "$CODENAME" == 'lucid' ] && [ ! -f /.puphpet-stuff/librarian-rubygems-update ]; then
echo 'Updating rubygems (Ubuntu Lucid only)'
echo 'Ignore all "conflicting chdir" errors!'
gem install rubygems-update >/dev/null
/var/lib/gems/1.8/bin/update_rubygems >/dev/null
echo 'Finished updating rubygems (Ubuntu Lucid only)'
touch /.puphpet-stuff/librarian-rubygems-update
fi
fi
if [[ ! -f /.puphpet-stuff/librarian-puppet-installed ]]; then
echo 'Installing librarian-puppet'
gem install librarian-puppet >/dev/null
echo 'Finished installing librarian-puppet'
echo 'Running initial librarian-puppet'
cd "$PUPPET_DIR" && librarian-puppet install --clean >/dev/null
echo 'Finished running initial librarian-puppet'
touch /.puphpet-stuff/librarian-puppet-installed
else
echo 'Running update librarian-puppet'
cd "$PUPPET_DIR" && librarian-puppet update >/dev/null
echo 'Finished running update librarian-puppet'
fi

View File

@ -0,0 +1,49 @@
#!/bin/bash
# Try and get debian operating system
# id, codename, and release
TYPE=$(echo "$1" | tr '[A-Z]' '[a-z]')
OS=$(uname)
ID="unknown"
CODENAME="unknown"
RELEASE="unknown"
if [ "$OS" == "Linux" ]; then
# detect centos
grep "centos" /etc/issue -i -q
if [ $? = '0' ]; then
ID="centos"
RELEASE=$(cat /etc/redhat-release | grep -o 'release [0-9]' | cut -d " " -f2)
# could be debian or ubuntu
elif [ $(which lsb_release) ]; then
ID=$(lsb_release -i | cut -f2)
CODENAME=$(lsb_release -c | cut -f2)
RELEASE=$(lsb_release -r | cut -f2)
elif [ -f "/etc/lsb-release" ]; then
ID=$(cat /etc/lsb-release | grep DISTRIB_ID | cut -d "=" -f2)
CODENAME=$(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d "=" -f2)
RELEASE=$(cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -d "=" -f2)
elif [ -f "/etc/issue" ]; then
ID=$(head -1 /etc/issue | cut -d " " -f1)
if [ -f "/etc/debian_version" ]; then
RELEASE=$(</etc/debian_version)
else
RELEASE=$(head -1 /etc/issue | cut -d " " -f2)
fi
fi
fi
declare -A info
info[id]=$(echo "$ID" | tr '[A-Z]' '[a-z]')
info[codename]=$(echo "$CODENAME" | tr '[A-Z]' '[a-z]')
info[release]=$(echo "$RELEASE" | tr '[A-Z]' '[a-z]')
if [ "$TYPE" ] ; then
echo "${info[$TYPE]}"
else
echo -e "ID\t${info[id]}"
echo -e "CODENAME\t${info[codename]}"
echo -e "RELEASE\t${info[release]}"
fi

View File

@ -0,0 +1,7 @@
____ ____ _ _ ____ _ generated using
| _ \ _ _| _ \| | | | _ \ ___| |_ ___ ___ _ __ ___
| |_) | | | | |_) | |_| | |_) / _ \ __| / __/ _ \| '_ ` _ \
| __/| |_| | __/| _ | __/ __/ |_ | (_| (_) | | | | | |
|_| \__,_|_| |_| |_|_| \___|\__(_)___\___/|_| |_| |_|

View File

@ -0,0 +1,43 @@
#!/bin/bash
OS=$(/bin/bash /vagrant/shell/os-detect.sh ID)
RELEASE=$(/bin/bash /vagrant/shell/os-detect.sh RELEASE)
CODENAME=$(/bin/bash /vagrant/shell/os-detect.sh CODENAME)
if [[ ! -f /.puphpet-stuff/update-puppet ]]; then
if [ "$OS" == 'debian' ] || [ "$OS" == 'ubuntu' ]; then
echo "Downloading http://apt.puppetlabs.com/puppetlabs-release-${CODENAME}.deb"
wget --quiet --tries=5 --timeout=10 -O "/.puphpet-stuff/puppetlabs-release-${CODENAME}.deb" "http://apt.puppetlabs.com/puppetlabs-release-${CODENAME}.deb"
echo "Finished downloading http://apt.puppetlabs.com/puppetlabs-release-${CODENAME}.deb"
dpkg -i "/.puphpet-stuff/puppetlabs-release-${CODENAME}.deb" >/dev/null
echo "Running update-puppet apt-get update"
apt-get update >/dev/null
echo "Finished running update-puppet apt-get update"
echo "Updating Puppet to latest version"
apt-get -y install puppet >/dev/null
PUPPET_VERSION=$(puppet help | grep 'Puppet v')
echo "Finished updating puppet to latest version: $PUPPET_VERSION"
touch /.puphpet-stuff/update-puppet
echo "Created empty file /.puphpet-stuff/update-puppet"
elif [ "$OS" == 'centos' ]; then
echo "Downloading http://yum.puppetlabs.com/el/${RELEASE}/products/x86_64/puppetlabs-release-6-7.noarch.rpm"
yum -y --nogpgcheck install "http://yum.puppetlabs.com/el/${RELEASE}/products/x86_64/puppetlabs-release-6-7.noarch.rpm" >/dev/null
echo "Finished downloading http://yum.puppetlabs.com/el/${RELEASE}/products/x86_64/puppetlabs-release-6-7.noarch.rpm"
echo "Running update-puppet yum update"
yum -y update >/dev/null
echo "Finished running update-puppet yum update"
echo "Installing/Updating Puppet to latest version"
yum -y install puppet >/dev/null
PUPPET_VERSION=$(puppet help | grep 'Puppet v')
echo "Finished installing/updating puppet to latest version: $PUPPET_VERSION"
touch /.puphpet-stuff/update-puppet
echo "Created empty file /.puphpet-stuff/update-puppet"
fi
fi

16
htdocs/.gitignore vendored
View File

@ -1,11 +1,11 @@
/test.php /test.php
/custom* /custom*
/bootstrap /extensions*
/extensions /nltechno*
/google /bootstrap*
/multicompany /google*
/numberingpack /multicompany*
/ovh /numberingpack*
/ovh*
/pos /pos
/skincoloreditor /ultimatepdf*
/ultimatepdf

View File

@ -285,7 +285,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
$object->phone_perso = trim($_POST["phone_perso"]); $object->phone_perso = trim($_POST["phone_perso"]);
$object->phone_mobile= trim($_POST["phone_mobile"]); $object->phone_mobile= trim($_POST["phone_mobile"]);
$object->email = trim($_POST["email"]); $object->email = trim($_POST["email"]);
$object->skype = trim($_POST["skype"]); $object->skype = trim($_POST["skype"]);
$object->birth = $birthdate; $object->birth = $birthdate;
$object->typeid = $_POST["typeid"]; $object->typeid = $_POST["typeid"];
@ -428,7 +428,7 @@ if ($action == 'add' && $user->rights->adherent->creer)
$phone=$_POST["phone"]; $phone=$_POST["phone"];
$phone_perso=$_POST["phone_perso"]; $phone_perso=$_POST["phone_perso"];
$phone_mobile=$_POST["phone_mobile"]; $phone_mobile=$_POST["phone_mobile"];
$skype=$_POST["member_skype"]; $skype=$_POST["member_skype"];
$email=$_POST["member_email"]; $email=$_POST["member_email"];
$login=$_POST["member_login"]; $login=$_POST["member_login"];
$pass=$_POST["password"]; $pass=$_POST["password"];
@ -453,7 +453,7 @@ if ($action == 'add' && $user->rights->adherent->creer)
$object->phone = $phone; $object->phone = $phone;
$object->phone_perso = $phone_perso; $object->phone_perso = $phone_perso;
$object->phone_mobile= $phone_mobile; $object->phone_mobile= $phone_mobile;
$object->skype = $skype; $object->skype = $skype;
$object->email = $email; $object->email = $email;
$object->login = $login; $object->login = $login;
$object->pass = $pass; $object->pass = $pass;
@ -861,11 +861,11 @@ else
// Tel mobile // Tel mobile
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOST('phone_mobile','alpha')?GETPOST('phone_mobile','alpha'):$object->phone_mobile).'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(GETPOST('phone_mobile','alpha')?GETPOST('phone_mobile','alpha'):$object->phone_mobile).'"></td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled) && $user->rights->skype->view) if (! empty($conf->skype->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="member_skype" size="40" value="'.(GETPOST('member_skype','alpha')?GETPOST('member_skype','alpha'):$object->skype).'"></td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="member_skype" size="40" value="'.(GETPOST('member_skype','alpha')?GETPOST('member_skype','alpha'):$object->skype).'"></td></tr>';
} }
// Birthday // Birthday
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n"; print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
@ -1103,11 +1103,11 @@ else
// Tel mobile // Tel mobile
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$object->phone_mobile).'"></td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td><input type="text" name="phone_mobile" size="20" value="'.(isset($_POST["phone_mobile"])?$_POST["phone_mobile"]:$object->phone_mobile).'"></td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled) && $user->rights->skype->view) if (! empty($conf->skype->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="skype" size="40" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td><input type="text" name="skype" size="40" value="'.(isset($_POST["skype"])?$_POST["skype"]:$object->skype).'"></td></tr>';
} }
// Birthday // Birthday
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n"; print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
@ -1328,7 +1328,7 @@ else
/* /*
* Confirm add in spip * Confirm add in spip
*/ */
if ($action == 'add_spip') if ($action == 'add_spip')
{ {
print $form->formconfirm("fiche.php?rowid=".$rowid, $langs->trans('AddIntoSpip'), $langs->trans('AddIntoSpipConfirmation'), 'confirm_add_spip'); print $form->formconfirm("fiche.php?rowid=".$rowid, $langs->trans('AddIntoSpip'), $langs->trans('AddIntoSpipConfirmation'), 'confirm_add_spip');
@ -1336,7 +1336,7 @@ else
/* /*
* Confirm removed from spip * Confirm removed from spip
*/ */
if ($action == 'del_spip') if ($action == 'del_spip')
{ {
print $form->formconfirm("fiche.php?rowid=$rowid", $langs->trans('DeleteIntoSpip'), $langs->trans('DeleteIntoSpipConfirmation'), 'confirm_del_spip'); print $form->formconfirm("fiche.php?rowid=$rowid", $langs->trans('DeleteIntoSpip'), $langs->trans('DeleteIntoSpipConfirmation'), 'confirm_del_spip');
@ -1345,6 +1345,7 @@ else
$rowspan=17; $rowspan=17;
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan++; if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan++;
if (! empty($conf->societe->enabled)) $rowspan++; if (! empty($conf->societe->enabled)) $rowspan++;
if (! empty($conf->skype->enabled)) $rowspan++;
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
@ -1427,12 +1428,12 @@ else
// Tel mobile // Tel mobile
print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td class="valeur">'.dol_print_phone($object->phone_mobile,$object->country_code,0,$object->fk_soc,1).'</td></tr>'; print '<tr><td>'.$langs->trans("PhoneMobile").'</td><td class="valeur">'.dol_print_phone($object->phone_mobile,$object->country_code,0,$object->fk_soc,1).'</td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled) && $user->rights->skype->view) if (! empty($conf->skype->enabled))
{ {
print '<tr><td>'.$langs->trans("Skype").'</td><td class="valeur">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>'; print '<tr><td>'.$langs->trans("Skype").'</td><td class="valeur">'.dol_print_skype($object->skype,0,$object->fk_soc,1).'</td></tr>';
} }
// Birthday // Birthday
print '<tr><td>'.$langs->trans("Birthday").'</td><td class="valeur">'.dol_print_date($object->birth,'day').'</td></tr>'; print '<tr><td>'.$langs->trans("Birthday").'</td><td class="valeur">'.dol_print_date($object->birth,'day').'</td></tr>';

View File

@ -18,7 +18,7 @@
*/ */
/** /**
* \file htdocs/admin/agenda.php * \file htdocs/admin/agenda_other.php
* \ingroup agenda * \ingroup agenda
* \brief Autocreate actions for agenda module setup page * \brief Autocreate actions for agenda module setup page
*/ */

View File

@ -177,13 +177,13 @@ while ($i < $nbofbank)
if ($conf->global->BANK_SHOW_ORDER_OPTION == $i) if ($conf->global->BANK_SHOW_ORDER_OPTION == $i)
{ {
print '<td align="center">'; print '<td align="center">';
print img_picto($langs->trans("Activated"),'switch_on'); print img_picto($langs->trans("Activated"),'on');
print '</td>'; print '</td>';
} }
else else
{ {
print '<td align="center"><a href="'.$_SERVER['PHP_SELF'].'?action=setbankorder&amp;value='.$i.'">'; print '<td align="center"><a href="'.$_SERVER['PHP_SELF'].'?action=setbankorder&amp;value='.$i.'">';
print img_picto($langs->trans("Disabled"),'switch_off'); print img_picto($langs->trans("Disabled"),'off');
print '</a></td>'; print '</a></td>';
} }
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';

View File

@ -292,14 +292,14 @@ if ($action == 'edit' || $action == 'updateedit')
// Country // Country
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td class="fieldrequired">'.$langs->trans("Country").'</td><td>'; print '<tr '.$bc[$var].'><td class="fieldrequired">'.$langs->trans("Country").'</td><td class="maxwidthonsmartphone">';
//if (empty($country_selected)) $country_selected=substr($langs->defaultlang,-2); // Par defaut, pays de la localisation //if (empty($country_selected)) $country_selected=substr($langs->defaultlang,-2); // Par defaut, pays de la localisation
print $form->select_country($mysoc->country_id,'country_id'); print $form->select_country($mysoc->country_id,'country_id');
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
print '</td></tr>'."\n"; print '</td></tr>'."\n";
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("State").'</td><td>'; print '<tr '.$bc[$var].'><td>'.$langs->trans("State").'</td><td class="maxwidthonsmartphone">';
$formcompany->select_departement($conf->global->MAIN_INFO_SOCIETE_STATE,$mysoc->country_code,'state_id'); $formcompany->select_departement($conf->global->MAIN_INFO_SOCIETE_STATE,$mysoc->country_code,'state_id');
print '</td></tr>'."\n"; print '</td></tr>'."\n";

View File

@ -42,9 +42,6 @@ $consts=GETPOST('const');
$constname=GETPOST('constname','alpha'); $constname=GETPOST('constname','alpha');
$constvalue=GETPOST('constvalue'); $constvalue=GETPOST('constvalue');
$constnote=GETPOST('constnote','alpha'); $constnote=GETPOST('constnote','alpha');
$consttype=(GETPOST('consttype','alpha')?GETPOST('consttype','alpha'):'chaine');
$typeconst=array('yesno' => 'yesno', 'texte' => 'texte', 'chaine' => 'chaine');
@ -52,7 +49,7 @@ $typeconst=array('yesno' => 'yesno', 'texte' => 'texte', 'chaine' => 'chaine');
* Actions * Actions
*/ */
if ($action == 'add') if ($action == 'add' || (GETPOST('add') && $action != 'update'))
{ {
$error=0; $error=0;
@ -69,9 +66,13 @@ if ($action == 'add')
if (! $error) if (! $error)
{ {
if (dolibarr_set_const($db, $constname, $constvalue, $typeconst[$consttype], 1, $constnote, $entity) >= 0) if (dolibarr_set_const($db, $constname, $constvalue, 'chaine', 1, $constnote, $entity) >= 0)
{ {
setEventMessage($langs->trans("RecordSaved")); setEventMessage($langs->trans("RecordSaved"));
$action="";
$constname="";
$constvalue="";
$constnote="";
} }
else else
{ {
@ -176,6 +177,10 @@ print_fiche_titre($langs->trans("OtherSetup"),'','setup');
print $langs->trans("ConstDesc")."<br>\n"; print $langs->trans("ConstDesc")."<br>\n";
print "<br>\n"; print "<br>\n";
print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" id="action" name="action" value="">';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Name").'</td>'; print '<td>'.$langs->trans("Name").'</td>';
@ -189,15 +194,12 @@ print "</tr>\n";
// Line to add new record // Line to add new record
$var=false; $var=false;
print "\n"; print "\n";
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add">';
print '<tr '.$bc[$var].'><td><input type="text" class="flat" size="24" name="constname" value=""></td>'."\n"; print '<tr '.$bc[$var].'><td><input type="text" class="flat" size="24" name="constname" value="'.$constname.'"></td>'."\n";
print '<td>'; print '<td>';
print '<input type="text" class="flat" size="30" name="constvalue" value="">'; print '<input type="text" class="flat" size="30" name="constvalue" value="'.$constvalue.'">';
print '</td><td>'; print '</td><td>';
print '<input type="text" class="flat" size="40" name="constnote" value="">'; print '<input type="text" class="flat" size="40" name="constnote" value="'.$constnote.'">';
print '</td>'; print '</td>';
// Limit to superadmin // Limit to superadmin
if (! empty($conf->multicompany->enabled) && !$user->entity) if (! empty($conf->multicompany->enabled) && !$user->entity)
@ -205,22 +207,17 @@ if (! empty($conf->multicompany->enabled) && !$user->entity)
print '<td>'; print '<td>';
print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">'; print '<input type="text" class="flat" size="1" name="entity" value="'.$conf->entity.'">';
print '</td>'; print '</td>';
print '<td align="center">';
} }
else else
{ {
print '<td align="center">';
print '<input type="hidden" name="entity" value="'.$conf->entity.'">'; print '<input type="hidden" name="entity" value="'.$conf->entity.'">';
} }
print '<td align="center">'; print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="add">';
print '<input type="submit" class="button" value="'.$langs->trans("Add").'" name="Button">';
print "</td>\n"; print "</td>\n";
print '</tr>'; print '</tr>';
print '</form>';
print "\n";
print '<form action="'.$_SERVER["PHP_SELF"].((empty($user->entity) && $debug)?'?debug=1':'').'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" id="action" name="action" value="">';
// Show constants // Show constants
$sql = "SELECT"; $sql = "SELECT";
@ -250,21 +247,20 @@ if ($result)
$var=!$var; $var=!$var;
print "\n"; print "\n";
print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">';
print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->name.'">';
print '<input type="hidden" name="const['.$i.'][type]" value="'.$obj->type.'">';
print '<tr '.$bc[$var].'><td>'.$obj->name.'</td>'."\n"; print '<tr '.$bc[$var].'><td>'.$obj->name.'</td>'."\n";
// Value // Value
print '<td>'; print '<td>';
print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.htmlspecialchars($obj->value).'"'; print '<input type="hidden" name="const['.$i.'][rowid]" value="'.$obj->rowid.'">';
print '>'; print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->name.'">';
print '</td><td>'; print '<input type="hidden" name="const['.$i.'][type]" value="'.$obj->type.'">';
print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.htmlspecialchars($obj->value).'">';
print '</td>';
// Note // Note
print '<input type="text" id="note_'.$i.'"class="flat inputforupdate" size="40" name="const['.$i.'][note]" value="'.htmlspecialchars($obj->note,1).'"'; print '<td>';
print '>'; print '<input type="text" id="note_'.$i.'"class="flat inputforupdate" size="40" name="const['.$i.'][note]" value="'.htmlspecialchars($obj->note,1).'">';
print '</td>'; print '</td>';
// Entity limit to superadmin // Entity limit to superadmin
@ -273,13 +269,14 @@ if ($result)
print '<td>'; print '<td>';
print '<input type="text" class="flat" size="1" name="const['.$i.'][entity]" value="'.$obj->entity.'">'; print '<input type="text" class="flat" size="1" name="const['.$i.'][entity]" value="'.$obj->entity.'">';
print '</td>'; print '</td>';
print '<td align="center">';
} }
else else
{ {
print '<td align="center">';
print '<input type="hidden" name="const['.$i.'][entity]" value="'.$obj->entity.'">'; print '<input type="hidden" name="const['.$i.'][entity]" value="'.$obj->entity.'">';
} }
print '<td align="center">';
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
print '<input type="checkbox" class="flat checkboxfordelete" id="check_'.$i.'" name="const['.$i.'][check]" value="1">'; print '<input type="checkbox" class="flat checkboxfordelete" id="check_'.$i.'" name="const['.$i.'][check]" value="1">';

View File

@ -446,7 +446,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
} }
// Other checks // Other checks
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"],array('system','systemauto'))) { if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"],array('system','systemauto'))) {
$ok=0; $ok=0;
setEventMessage($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'),'errors'); setEventMessage($langs->transnoentities('ErrorReservedTypeSystemSystemAuto'),'errors');
} }
if (isset($_POST["code"])) if (isset($_POST["code"]))
@ -456,8 +456,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$ok=0; $ok=0;
setEventMessage($langs->transnoentities('ErrorCodeCantContainZero'),'errors'); setEventMessage($langs->transnoentities('ErrorCodeCantContainZero'),'errors');
} }
// FIXME regresion if code with not in numeric base /*if (!is_numeric($_POST['code'])) // disabled, code may not be in numeric base
/*if (!is_numeric($_POST['code']))
{ {
$ok = 0; $ok = 0;
$msg .= $langs->transnoentities('ErrorFieldFormat', $langs->transnoentities('Code')).'<br />'; $msg .= $langs->transnoentities('ErrorFieldFormat', $langs->transnoentities('Code')).'<br />';
@ -1100,7 +1099,7 @@ if ($id)
if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) $iserasable = 0; if (($obj->code == '0' || $obj->code == '' || preg_match('/unknown/i',$obj->code))) $iserasable = 0;
else if ($obj->code == 'RECEP') $iserasable = 0; else if ($obj->code == 'RECEP') $iserasable = 0;
else if ($obj->code == 'EF0') $iserasable = 0; else if ($obj->code == 'EF0') $iserasable = 0;
} }
if (isset($obj->type) && in_array($obj->type, array('system', 'systemauto'))) $iserasable=0; if (isset($obj->type) && in_array($obj->type, array('system', 'systemauto'))) $iserasable=0;
@ -1316,9 +1315,9 @@ function fieldList($fieldlist,$obj='',$tabname='')
$size=''; $size='';
if ($fieldlist[$field]=='libelle') $size='size="32" '; if ($fieldlist[$field]=='libelle') $size='size="32" ';
if ($fieldlist[$field]=='tracking') $size='size="92" '; if ($fieldlist[$field]=='tracking') $size='size="92" ';
if ($fieldlist[$field]=='accountancy_code') $size='size="15" '; if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';
if ($fieldlist[$field]=='accountancy_code_sell') $size='size="15" '; if ($fieldlist[$field]=='accountancy_code_sell') $size='size="10" ';
if ($fieldlist[$field]=='accountancy_code_buy') $size='size="15" '; 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->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">';
print '</td>'; print '</td>';
} }

View File

@ -136,44 +136,57 @@ foreach ($modulesdir as $dir)
try try
{ {
$res=include_once $dir.$file; $res=include_once $dir.$file;
$objMod = new $modName($db); if (class_exists($modName))
$modNameLoaded[$modName]=$dir; {
try {
$objMod = new $modName($db);
$modNameLoaded[$modName]=$dir;
if ($objMod->numero > 0) if ($objMod->numero > 0)
{ {
$j = $objMod->numero; $j = $objMod->numero;
} }
else else
{ {
$j = 1000 + $i; $j = 1000 + $i;
} }
$modulequalified=1; $modulequalified=1;
// We discard modules according to features level (PS: if module is activated we always show it) // We discard modules according to features level (PS: if module is activated we always show it)
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod))); $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod)));
if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=0; if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=0;
if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=0; if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=0;
// We discard modules according to property disabled // We discard modules according to property disabled
if (isset($objMod->hidden) && $objMod->hidden) $modulequalified=false; if (isset($objMod->hidden) && $objMod->hidden) $modulequalified=false;
// Define array $categ with categ with at least one qualified module // Define array $categ with categ with at least one qualified module
if ($modulequalified) if ($modulequalified)
{ {
$modules[$i] = $objMod; $modules[$i] = $objMod;
$filename[$i]= $modName; $filename[$i]= $modName;
$orders[$i] = $objMod->family."_".$j; // Sort by family, then by module number $orders[$i] = $objMod->family."_".$j; // Sort by family, then by module number
$dirmod[$i] = $dir; $dirmod[$i] = $dir;
// Set categ[$i] // Set categ[$i]
$special = isset($specialtostring[$objMod->special])?$specialtostring[$objMod->special]:'unknown'; $special = isset($specialtostring[$objMod->special])?$specialtostring[$objMod->special]:'unknown';
if ($objMod->version == 'development' || $objMod->version == 'experimental') $special='expdev'; if ($objMod->version == 'development' || $objMod->version == 'experimental') $special='expdev';
if (isset($categ[$special])) $categ[$special]++; // Array of all different modules categories if (isset($categ[$special])) $categ[$special]++; // Array of all different modules categories
else $categ[$special]=1; else $categ[$special]=1;
$j++; $j++;
$i++; $i++;
} }
else dol_syslog("Module ".get_class($objMod)." not qualified"); else dol_syslog("Module ".get_class($objMod)." not qualified");
} }
catch(Exception $e)
{
dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
}
}
else
{
print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)<br>";
}
}
catch(Exception $e) catch(Exception $e)
{ {
dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR); dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);

View File

@ -77,10 +77,12 @@ if ($action == "set")
if (! $error) if (! $error)
{ {
$db->commit();
setEventMessage($langs->trans("SetupSaved")); setEventMessage($langs->trans("SetupSaved"));
} }
else else
{ {
$db->rollback();
setEventMessage($langs->trans("Error"),'errors'); setEventMessage($langs->trans("Error"),'errors');
} }
} }

View File

@ -458,10 +458,10 @@ print "</tr>\n";
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'; print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_SUPPLIER_ORDER_FREE_TEXT">'; print '<input type="hidden" name="action" value="set_SUPPLIER_INVOICE_FREE_TEXT">';
print '<tr '.$bc[$var].'><td colspan="2">'; print '<tr '.$bc[$var].'><td colspan="2">';
print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')<br>'; print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')<br>';
print '<textarea name="SUPPLIER_ORDER_FREE_TEXT" class="flat" cols="120">'.$conf->global->SUPPLIER_ORDER_FREE_TEXT.'</textarea>'; print '<textarea name="SUPPLIER_INVOICE_FREE_TEXT" class="flat" cols="120">'.$conf->global->SUPPLIER_INVOICE_FREE_TEXT.'</textarea>';
print '</td><td align="right">'; print '</td><td align="right">';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'; print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print "</td></tr>\n"; print "</td></tr>\n";

View File

@ -5,6 +5,7 @@
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com> * Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -49,7 +50,7 @@ foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
$action=GETPOST('action', 'alpha'); $action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha'); $attrname=GETPOST('attrname', 'alpha');
$elementtype='commande_fournisseur'; //Must be the $table_element of the class that manage extrafield $elementtype='facture_fourn'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) accessforbidden(); if (!$user->admin) accessforbidden();

View File

@ -74,15 +74,27 @@ foreach($modulesdir as $dir)
else else
{ {
// File to load // File to load
include_once $dir.$file; $res=include_once $dir.$file;
if (class_exists($modName))
$objMod = new $modName($db); {
try {
$modules[$objMod->numero]=$objMod; $objMod = new $modName($db);
$modules_names[$objMod->numero]=$objMod->name;
$modules_files[$objMod->numero]=$file; $modules[$objMod->numero]=$objMod;
$modules_fullpath[$file]=$dir.$file; $modules_names[$objMod->numero]=$objMod->name;
$picto[$objMod->numero]=(isset($objMod->picto) && $objMod->picto)?$objMod->picto:'generic'; $modules_files[$objMod->numero]=$file;
$modules_fullpath[$file]=$dir.$file;
$picto[$objMod->numero]=(isset($objMod->picto) && $objMod->picto)?$objMod->picto:'generic';
}
catch(Exception $e)
{
dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
}
}
else
{
print "Warning bad descriptor file : ".$dir.$file." (Class ".$modName." not found into file)<br>";
}
} }
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -68,7 +68,12 @@ foreach ($triggers as $trigger)
print '<td valign="top" width="14" align="center">'.$trigger['picto'].'</td>'; print '<td valign="top" width="14" align="center">'.$trigger['picto'].'</td>';
print '<td valign="top">'.$trigger['file'].'</td>'; print '<td valign="top">'.$trigger['file'].'</td>';
print '<td valign="top" align="center">'.$trigger['status'].'</td>'; print '<td valign="top" align="center">'.$trigger['status'].'</td>';
print '<td valign="top">'.$form->textwithpicto('', $trigger['info']).'</td>'; print '<td valign="top">';
$text=$trigger['info'];
$text.="<br>\n<strong>".$langs->trans("File")."</strong>:<br>\n".$trigger['relpath'];
//$text.="\n".$langs->trans("ExternalModule",$trigger['isocreorexternal']);
print $form->textwithpicto('', $text);
print '</td>';
print '</tr>'; print '</tr>';
} }

View File

@ -0,0 +1,200 @@
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/barcode/printsheet.php
* \ingroup member
* \brief Page to print sheets with barcodes using the document templates into core/modules/printsheets
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/format_cards.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/printsheet/modules_labels.php';
$langs->load("admin");
$langs->load("errors");
// Choix de l'annee d'impression ou annee courante.
$now = dol_now();
$year=dol_print_date($now,'%Y');
$month=dol_print_date($now,'%m');
$day=dol_print_date($now,'%d');
$forbarcode=GETPOST('forbarcode');
$forbartype=GETPOST('forbartype');
$mode=GETPOST('mode');
$model=GETPOST("model"); // Doc template to use for business cards
$modellabel=GETPOST("modellabel"); // Doc template to use for address sheet
$mesg='';
/*
* Actions
*/
if ($action == 'builddoc' && empty($forbarcode))
{
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Barcode"));
}
if ($action == 'builddoc' && empty($forbartype))
{
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("BarcodeType"));
}
if ((! empty($forbarcode) || ! empty($forbartype) || ! empty($mode)) && ! $mesg)
{
// List of values to scan for a replacement
$substitutionarray = array (
'%LOGIN%'=>$user->login,
'%COMPANY%'=>$mysoc->name,
'%ADDRESS%'=>$mysoc->address,
'%ZIP%'=>$mysoc->zip,
'%TOWN%'=>$mysoc->town,
'%COUNTRY%'=>$mysoc->country,
'%COUNTRY_CODE%'=>$mysoc->country_code,
'%EMAIL%'=>$mysoc->email,
'%YEAR%'=>$year,
'%MONTH%'=>$month,
'%DAY%'=>$day,
'%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT,
'%SERVER%'=>"http://".$_SERVER["SERVER_NAME"]."/"
);
complete_substitutions_array($substitutionarray, $langs);
// For business cards
if (empty($mode) || $mode=='card' || $mode=='cardlogin')
{
$textleft=make_substitutions($conf->global->ADHERENT_CARD_TEXT, $substitutionarray);
$textheader=make_substitutions($conf->global->ADHERENT_CARD_HEADER_TEXT, $substitutionarray);
$textfooter=make_substitutions($conf->global->ADHERENT_CARD_FOOTER_TEXT, $substitutionarray);
$textright=make_substitutions($conf->global->ADHERENT_CARD_TEXT_RIGHT, $substitutionarray);
if (is_numeric($forbarcode) || $forbartype)
{
for($j=0;$j<100;$j++)
{
$arrayofmembers[]=array(
'textleft'=>$textleft,
'textheader'=>$textheader,
'textfooter'=>$textfooter,
'textright'=>$textright,
'id'=>$objp->rowid,
'photo'=>$objp->photo
);
}
}
else
{
$arrayofmembers[]=array(
'textleft'=>$textleft,
'textheader'=>$textheader,
'textfooter'=>$textfooter,
'textright'=>$textright,
'id'=>$objp->rowid,
'photo'=>$objp->photo
);
}
}
// For labels
if ($mode == 'label')
{
if (empty($conf->global->ADHERENT_ETIQUETTE_TEXT)) $conf->global->ADHERENT_ETIQUETTE_TEXT="%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%";
$textleft=make_substitutions($conf->global->ADHERENT_ETIQUETTE_TEXT, $substitutionarray);
$textheader='';
$textfooter='';
$textright='';
$arrayofmembers[]=array('textleft'=>$textleft,
'textheader'=>$textheader,
'textfooter'=>$textfooter,
'textright'=>$textright,
'id'=>$objp->rowid,
'photo'=>$objp->photo);
}
$i++;
// Build and output PDF
if ($mode == 'label')
{
if (! count($arrayofmembers))
{
$mesg=$langs->trans("ErrorRecordNotFound");
}
if (empty($modellabel) || $modellabel == '-1')
{
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DescADHERENT_ETIQUETTE_TYPE"));
}
if (! $mesg) $result=members_label_pdf_create($db, $arrayofmembers, $modellabel, $outputlangs);
}
if ($result <= 0)
{
dol_print_error('',$result);
}
if (! $mesg)
{
$db->close();
exit;
}
}
/*
* View
*/
$form=new Form($db);
llxHeader('',$langs->trans("BarCodePrintsheet"));
print_fiche_titre($langs->trans("BarCodePrintsheet"));
print '<br>';
print $langs->trans("PageToGenerateBarCodeSheets").'<br>';
print '<br>';
dol_htmloutput_errors($mesg);
print img_picto('','puce').' '.$langs->trans("BarCodePrintsheet").' ';
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="mode" value="label">';
print '<input type="hidden" name="action" value="builddoc">';
print $langs->trans("DescADHERENT_ETIQUETTE_TYPE").' ';
// List of possible labels (defined into $_Avery_Labels variable set into format_cards.lib.php)
$arrayoflabels=array();
foreach(array_keys($_Avery_Labels) as $codecards)
{
$arrayoflabels[$codecards]=$_Avery_Labels[$codecards]['name'];
}
print $form->selectarray('modellabel',$arrayoflabels,(GETPOST('modellabel')?GETPOST('modellabel'):$conf->global->ADHERENT_ETIQUETTE_TYPE),1,0,0);
print '<br>'.$langs->trans("Barcode").': <input size="10" type="text" name="forbarcode" value="'.GETPOST('forbarcode').'">';
print '<br>'.$langs->trans("Bartype").': <input size="10" type="text" name="forbartype" value="'.GETPOST('forbartype').'">';
$barcodestickersmask=GETPOST('barcodestickersmask');
print '<br>'.$langs->trans("BarcodeStickersMask").': <textarea cols="40" type="text" name="barcodestickersmask" value="'.GETPOST('barcodestickersmask').'">'.$barcodestickersmask.'</textarea>';
print '<br><input class="button" type="submit" value="'.$langs->trans("BuildDoc").'">';
print '</form>';
print '<br>';
llxFooter();
$db->close();
?>

View File

@ -67,6 +67,7 @@ function printBookmarksList($aDb, $aLangs)
{ {
$sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark"; $sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
$sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)"; $sql.= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
$sql.= " AND entity = ".$conf->entity;
$sql.= " ORDER BY position"; $sql.= " ORDER BY position";
if ($resql = $db->query($sql) ) if ($resql = $db->query($sql) )
{ {

View File

@ -57,10 +57,13 @@ class Bookmark
*/ */
function fetch($id) function fetch($id)
{ {
global $conf;
$sql = "SELECT rowid, fk_user, dateb as datec, url, target,"; $sql = "SELECT rowid, fk_user, dateb as datec, url, target,";
$sql.= " title, position, favicon"; $sql.= " title, position, favicon";
$sql.= " FROM ".MAIN_DB_PREFIX."bookmark"; $sql.= " FROM ".MAIN_DB_PREFIX."bookmark";
$sql.= " WHERE rowid = ".$id; $sql.= " WHERE rowid = ".$id;
$sql.= " AND entity = ".$conf->entity;
dol_syslog("Bookmark::fetch sql=".$sql, LOG_DEBUG); dol_syslog("Bookmark::fetch sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
@ -96,6 +99,8 @@ class Bookmark
*/ */
function create() function create()
{ {
global $conf;
// Clean parameters // Clean parameters
$this->url=trim($this->url); $this->url=trim($this->url);
$this->title=trim($this->title); $this->title=trim($this->title);
@ -106,13 +111,15 @@ class Bookmark
$this->db->begin(); $this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_user,dateb,url,target"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_user,dateb,url,target";
$sql.= " ,title,favicon,position"; $sql.= ",title,favicon,position";
$sql.= ",entity";
if ($this->fk_soc) $sql.=",fk_soc"; if ($this->fk_soc) $sql.=",fk_soc";
$sql.= ") VALUES ("; $sql.= ") VALUES (";
$sql.= ($this->fk_user > 0?"'".$this->fk_user."'":"0").","; $sql.= ($this->fk_user > 0?"'".$this->fk_user."'":"0").",";
$sql.= " ".$this->db->idate($now).","; $sql.= " ".$this->db->idate($now).",";
$sql.= " '".$this->url."', '".$this->target."',"; $sql.= " '".$this->url."', '".$this->target."',";
$sql.= " '".$this->db->escape($this->title)."', '".$this->favicon."', '".$this->position."'"; $sql.= " '".$this->db->escape($this->title)."', '".$this->favicon."', '".$this->position."'";
$sql.= ", '".$conf->entity."'";
if ($this->fk_soc) $sql.=",".$this->fk_soc; if ($this->fk_soc) $sql.=",".$this->fk_soc;
$sql.= ")"; $sql.= ")";

View File

@ -26,8 +26,14 @@
require '../main.inc.php'; require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php'; require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
$langs->load("bookmarks");
$langs->load("other"); $langs->load("other");
// Security check
if (! $user->rights->bookmark->lire) {
restrictedArea($user, 'bookmarks');
}
$id=GETPOST("id"); $id=GETPOST("id");
$action=GETPOST("action","alpha"); $action=GETPOST("action","alpha");
$title=GETPOST("title","alpha"); $title=GETPOST("title","alpha");

View File

@ -24,6 +24,12 @@
require '../main.inc.php'; require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php'; require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
$langs->load("bookmarks");
// Security check
if (! $user->rights->bookmark->lire) {
restrictedArea($user, 'bookmarks');
}
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha'); $sortorder = GETPOST("sortorder",'alpha');
@ -73,6 +79,7 @@ $sql = "SELECT b.fk_soc as rowid, b.dateb, b.rowid as bid, b.fk_user, b.url, b.t
$sql.= " u.login, u.lastname, u.firstname"; $sql.= " u.login, u.lastname, u.firstname";
$sql.= " FROM ".MAIN_DB_PREFIX."bookmark as b LEFT JOIN ".MAIN_DB_PREFIX."user as u ON b.fk_user=u.rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."bookmark as b LEFT JOIN ".MAIN_DB_PREFIX."user as u ON b.fk_user=u.rowid";
$sql.= " WHERE 1=1"; $sql.= " WHERE 1=1";
$sql.= " AND b.entity = ".$conf->entity;
if (! $user->admin) $sql.= " AND (b.fk_user = ".$user->id." OR b.fk_user is NULL OR b.fk_user = 0)"; if (! $user->admin) $sql.= " AND (b.fk_user = ".$user->id." OR b.fk_user is NULL OR b.fk_user = 0)";
$sql.= $db->order($sortfield.", position",$sortorder); $sql.= $db->order($sortfield.", position",$sortorder);
$sql.= $db->plimit($limit, $offset); $sql.= $db->plimit($limit, $offset);

View File

@ -15,6 +15,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**
* \file htdocs/cashdesk/deconnexion.php
* \ingroup cashdesk
* \brief Manage deconnexion for point of sale module
*/
//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Uncomment creates pb to relogon after a disconnect //if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Uncomment creates pb to relogon after a disconnect
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');

View File

@ -2,6 +2,8 @@
/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net> /* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net>
* Copyright (C) 2008-2011 Laurent Destailleur <eldy@uers.sourceforge.net> * Copyright (C) 2008-2011 Laurent Destailleur <eldy@uers.sourceforge.net>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2013 Adolfo Segura <adolfo.segura@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -37,7 +39,20 @@ if ( GETPOST('filtre') ) {
$sql.= " AND p.tosell = 1"; $sql.= " AND p.tosell = 1";
if(!$conf->global->CASHDESK_SERVICES) $sql.= " AND p.fk_product_type = 0"; if(!$conf->global->CASHDESK_SERVICES) $sql.= " AND p.fk_product_type = 0";
$sql.= " AND (p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'"; $sql.= " AND (p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'";
if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '%".$db->escape(GETPOST('filtre'))."%')"; if (! empty($conf->barcode->enabled)) {
$filtre = GETPOST('filtre');
//If the barcode looks like an EAN13 format and the last digit is included in it,
//then whe look for the 12-digit too
//As the twelve-digit string will also hit the 13-digit code, we only look for this one
if (strlen($filtre) == 13) {
$crit_12digit = substr($filtre, 0, 12);
$sql .= " OR p.barcode LIKE '%".$db->escape($crit_12digit)."%')";
} else {
$sql.= " OR p.barcode LIKE '%".$db->escape($filtre)."%')";
}
}
else $sql.= ")"; else $sql.= ")";
$sql.= " ORDER BY label"; $sql.= " ORDER BY label";

View File

@ -17,8 +17,9 @@
*/ */
/** /**
* This page is called each time we press a key in the code * \file htdocs/cashdesk/facturation_dhtml.php
* search form to show product combo list. * \ingroup cashdesk
* \brief This page is called each time we press a key in the code search form to show product combo list.
*/ */

View File

@ -16,6 +16,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**
* \file htdocs/cashdesk/facturation_verif.php
* \ingroup cashdesk
* \brief facturation_verif.php
*/
require '../main.inc.php'; require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php';

View File

@ -20,6 +20,12 @@
* We set here login choices into session. * We set here login choices into session.
*/ */
/**
* \file htdocs/cashdesk/index_verif.php
* \ingroup cashdesk
* \brief index_verif.php
*/
include '../main.inc.php'; include '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Auth.class.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Auth.class.php';

View File

@ -140,9 +140,9 @@ print $object->ref;
<table class="totaux"> <table class="totaux">
<?php <?php
echo '<tr><th class="nowrap">'.$langs->trans("TotalHT").'</th><td class="nowrap">'.price2num($obj_facturation->prixTotalHt(),'MT')." ".$conf->currency."</td></tr>\n"; echo '<tr><th class="nowrap">'.$langs->trans("TotalHT").'</th><td class="nowrap">'.price(price2num($obj_facturation->prixTotalHt(),'MT'),'',$langs,0,-1,-1,$conf->currency)."</td></tr>\n";
echo '<tr><th class="nowrap">'.$langs->trans("TotalVAT").'</th><td class="nowrap">'.price2num($obj_facturation->montantTva(),'MT')." ".$conf->currency."</td></tr>\n"; echo '<tr><th class="nowrap">'.$langs->trans("TotalVAT").'</th><td class="nowrap">'.price(price2num($obj_facturation->montantTva(),'MT'),'',$langs,0,-1,-1,$conf->currency)."</td></tr>\n";
echo '<tr><th class="nowrap">'.$langs->trans("TotalTTC").'</th><td class="nowrap">'.price2num($obj_facturation->prixTotalTtc(),'MT')." ".$conf->currency."</td></tr>\n"; echo '<tr><th class="nowrap">'.$langs->trans("TotalTTC").'</th><td class="nowrap">'.price(price2num($obj_facturation->prixTotalTtc(),'MT'),'',$langs,0,-1,-1,$conf->currency)."</td></tr>\n";
?> ?>
</table> </table>

View File

@ -15,6 +15,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**
* \file htdocs/cashdesk/validation.php
* \ingroup cashdesk
* \brief validation.php
*/
// Affichage des templates // Affichage des templates
require ('tpl/validation1.tpl.php'); require ('tpl/validation1.tpl.php');

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2007-2008 J<EFBFBD>r<EFBFBD>mie Ollivier <jeremie.o@laposte.net> /* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -15,7 +15,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
// Affichage des templates /**
require ('tpl/validation2.tpl.php'); * \file htdocs/cashdesk/validation_ok.php
* \ingroup cashdesk
* \brief validation_ok.php
*/
// Affichage des templates
require ('tpl/validation2.tpl.php');
?> ?>

View File

@ -15,6 +15,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**
* \file htdocs/cashdesk/validation_ticket.php
* \ingroup cashdesk
* \brief validation_ticket.php
*/
require '../main.inc.php'; require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php';

View File

@ -17,6 +17,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**
* \file htdocs/cashdesk/validation_verif.php
* \ingroup cashdesk
* \brief validation_verif.php
*/
require '../main.inc.php'; require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php';
require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php'; require_once DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php';
@ -212,7 +218,7 @@ switch ($action)
$resultcreate=$invoice->create($user,0,dol_stringtotime($obj_facturation->paiementLe())); $resultcreate=$invoice->create($user,0,dol_stringtotime($obj_facturation->paiementLe()));
if ($resultcreate > 0) if ($resultcreate > 0)
{ {
$resultvalid=$invoice->validate($user,$obj_facturation->numInvoice()); $resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), (isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0));
} }
else else
{ {

View File

@ -379,7 +379,7 @@ else if ($id || $ref)
dol_fiche_end(); dol_fiche_end();
formCategory($db,$product,0,($user->rights->produit->creer || $user->rights->service->creer)); formCategory($db,$product,0,$socid,($user->rights->produit->creer || $user->rights->service->creer));
} }
if ($type == 3) if ($type == 3)
@ -604,7 +604,7 @@ else if ($id || $ref)
dol_fiche_end(); dol_fiche_end();
formCategory($db,$object,4,$user->rights->societe->creer); formCategory($db,$object,4,$socid, $user->rights->societe->creer);
} }
} }

View File

@ -167,7 +167,7 @@ if ($action == 'add_action')
$actioncomm->datep = $datep; $actioncomm->datep = $datep;
$actioncomm->datef = $datef; $actioncomm->datef = $datef;
$actioncomm->percentage = $percentage; $actioncomm->percentage = $percentage;
$actioncomm->duree=((float) (GETPOST('dureehour') * 60) + (float) GETPOST('dureemin')) * $actioncomm->duree=((float) (GETPOST('dureehour') * 60) + (float) GETPOST('dureemin')) *
60; 60;
$usertodo=new User($db); $usertodo=new User($db);
@ -193,7 +193,7 @@ if ($action == 'add_action')
} }
// Special for module webcal and phenix // Special for module webcal and phenix
// FIXME external modules // TODO external modules
if (! empty($conf->webcalendar->enabled) && GETPOST('add_webcal') == 'on') $actioncomm->use_webcal=1; if (! empty($conf->webcalendar->enabled) && GETPOST('add_webcal') == 'on') $actioncomm->use_webcal=1;
if (! empty($conf->phenix->enabled) && GETPOST('add_phenix') == 'on') $actioncomm->use_phenix=1; if (! empty($conf->phenix->enabled) && GETPOST('add_phenix') == 'on') $actioncomm->use_phenix=1;
@ -484,7 +484,7 @@ if ($action == 'create')
// Full day // Full day
print '<tr><td class="fieldrequired">'.$langs->trans("EventOnFullDay").'</td><td><input type="checkbox" id="fullday" name="fullday" '.(GETPOST('fullday')?' checked="checked"':'').'></td></tr>'; print '<tr><td class="fieldrequired">'.$langs->trans("EventOnFullDay").'</td><td><input type="checkbox" id="fullday" name="fullday" '.(GETPOST('fullday')?' checked="checked"':'').'></td></tr>';
// Date start // Date start
$datep=$actioncomm->datep; $datep=$actioncomm->datep;
if (GETPOST('datep','int',1)) $datep=dol_stringtotime(GETPOST('datep','int',1),0); if (GETPOST('datep','int',1)) $datep=dol_stringtotime(GETPOST('datep','int',1),0);
@ -565,7 +565,7 @@ if ($action == 'create')
} }
else else
{ {
$events=array(); $events=array();
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled')); $events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
//For external user force the company to user company //For external user force the company to user company
@ -581,7 +581,7 @@ if ($action == 'create')
print '<tr><td class="nowrap">'.$langs->trans("ActionOnContact").'</td><td>'; print '<tr><td class="nowrap">'.$langs->trans("ActionOnContact").'</td><td>';
$form->select_contacts(GETPOST('socid','int'),GETPOST('contactid'),'contactid',1); $form->select_contacts(GETPOST('socid','int'),GETPOST('contactid'),'contactid',1);
print '</td></tr>'; print '</td></tr>';
// Project // Project
if (! empty($conf->projet->enabled)) if (! empty($conf->projet->enabled))
@ -623,7 +623,7 @@ if ($action == 'create')
$doleditor=new DolEditor('note',(GETPOST('note')?GETPOST('note'):$actioncomm->note),'',240,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_7,90); $doleditor=new DolEditor('note',(GETPOST('note')?GETPOST('note'):$actioncomm->note),'',240,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_7,90);
$doleditor->Create(); $doleditor->Create();
print '</td></tr>'; print '</td></tr>';
// Other attributes // Other attributes
$parameters=array(); $parameters=array();

View File

@ -19,8 +19,8 @@
*/ */
/** /**
* \file htdocs/societe/admin/societe_extrafields.php * \file htdocs/comm/admin/propal_extrafields.php
* \ingroup societe * \ingroup propal
* \brief Page to setup extra fields of third party * \brief Page to setup extra fields of third party
*/ */

View File

@ -1,149 +0,0 @@
<?php
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/comm/bookmark.php
* \brief Page affichage des bookmarks
*/
require '../main.inc.php';
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
$page = GETPOST("page",'int');
if ($page == -1) { $page = 0; }
$offset = $conf->liste_limit * $page;
$pageprev = $page - 1;
$pagenext = $page + 1;
if (! $sortorder) $sortorder="DESC";
if (! $sortfield) $sortfield="bid";
$limit = $conf->liste_limit;
llxHeader();
/*
* Actions
*/
if ($_GET["action"] == 'add')
{
$bookmark=new Bookmark($db);
$bookmark->fk_user=$user->id;
$bookmark->url=$user->id;
$bookmark->target=$user->id;
$bookmark->title='xxx';
$bookmark->favicon='xxx';
$res=$bookmark->create();
if ($res > 0)
{
header("Location: ".$_SERVER["PHP_SELF"]);
}
else
{
$mesg='<div class="error">'.$bookmark->error.'</div>';
}
}
if ($_GET["action"] == 'delete')
{
$bookmark=new Bookmark($db);
$bookmark->id=$_GET["bid"];
$bookmark->url=$user->id;
$bookmark->target=$user->id;
$bookmark->title='xxx';
$bookmark->favicon='xxx';
$res=$bookmark->remove();
if ($res > 0)
{
header("Location: ".$_SERVER["PHP_SELF"]);
}
else
{
$mesg='<div class="error">'.$bookmark->error.'</div>';
}
}
print_fiche_titre($langs->trans("Bookmarks"));
$sql = "SELECT s.rowid, s.nom as name, b.dateb as dateb, b.rowid as bid, b.fk_user, b.url, b.target, u.lastname, u.firstname";
$sql.= " FROM ".MAIN_DB_PREFIX."bookmark as b, ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."user as u";
$sql.= " WHERE b.fk_soc = s.rowid AND b.fk_user=u.rowid";
if (! $user->admin) $sql.= " AND b.fk_user = ".$user->id;
$sql.= $db->order($sortfield,$sortorder);
$sql.= $db->plimit($limit, $offset);
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
if ($sortorder == "DESC") $sortorder="ASC";
else $sortorder="DESC";
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
//print "<td>&nbsp;</td>";
print_liste_field_titre($langs->trans("Id"),$_SERVER["PHP_SELF"],"bid","","",'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Author"),$_SERVER["PHP_SELF"],"u.lastname","","","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"b.dateb","","",'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Url"),$_SERVER["PHP_SELF"],"b.url","","",'',$sortfield,$sortorder);
print "<td>".$langs->trans("Target")."</td>";
print "<td>&nbsp;</td>";
print "</tr>\n";
$var=True;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$var=!$var;
print "<tr ".$bc[$var].">";
//print "<td>" . ($i + 1 + ($limit * $page)) . "</td>";
print "<td align=\"center\"><b>".$obj->bid."</b></td>";
print "<td><a href='".DOL_URL_ROOT."/user/fiche.php?id=".$obj->fk_user."'>".img_object($langs->trans("ShowUser"),"user").' '.$obj->lastname." ".$obj->firstname."</a></td>\n";
print '<td align="center">'.dol_print_date($db->jdate($obj->dateb))."</td>";
print "<td><a href=\"index.php?socid=".$obj->rowid."\">".img_object($langs->trans("ShowCompany"),"company").' '.$obj->name."</a></td>\n";
print '<td align="center">'.$obj->url."</td>";
print '<td align="center">'.$obj->target."</td>";
print "<td><a href=\"bookmark.php?action=delete&bid=".$obj->bid."\">".img_delete()."</a></td>\n";
print "</tr>\n";
$i++;
}
print "</table>";
$db->free($resql);
}
else
{
dol_print_error($db);
}
$db->close();
llxFooter();
?>

View File

@ -42,6 +42,7 @@ $search_lastname=GETPOST('search_nom')?GETPOST('search_nom'):GETPOST('search_las
$search_firstname=GETPOST('search_firstname')?GETPOST('search_firstname'):GETPOST('search_firstname'); // For backward compatibility $search_firstname=GETPOST('search_firstname')?GETPOST('search_firstname'):GETPOST('search_firstname'); // For backward compatibility
$search_company=GETPOST('search_societe')?GETPOST('search_societe'):GETPOST('search_company'); // For backward compatibility $search_company=GETPOST('search_societe')?GETPOST('search_societe'):GETPOST('search_company'); // For backward compatibility
$contactname=GETPOST('contactname'); $contactname=GETPOST('contactname');
$begin=GETPOST('begin','alpha');
// Security check // Security check
$socid = GETPOST('socid','int'); $socid = GETPOST('socid','int');
@ -87,13 +88,7 @@ if ($socid) $sql.= " AND s.rowid = ".$socid;
if (dol_strlen($stcomm)) if (dol_strlen($stcomm))
{ {
$sql.= " AND s.fk_stcomm=$stcomm"; $sql.= " AND s.fk_stcomm=".$db->escape($stcomm);
}
// FIXME $begin not exist
if (dol_strlen($begin)) // filtre sur la premiere lettre du nom
{
$sql.= " AND upper(p.name) LIKE '".$begin."%'";
} }
if (! empty($search_lastname)) if (! empty($search_lastname))
@ -113,7 +108,7 @@ if (! empty($search_company))
if (! empty($contactname)) // acces a partir du module de recherche if (! empty($contactname)) // acces a partir du module de recherche
{ {
$sql.= " AND (p.name LIKE '%".$db->escape(strtolower($contactname))."%' OR lower(p.firstname) LIKE '%".$db->escape(strtolower($contactname))."%') "; $sql.= " AND (p.name LIKE '%".$db->escape($contactname)."%' OR lower(p.firstname) LIKE '%".$db->escape($contactname)."%') ";
$sortfield = "p.name"; $sortfield = "p.name";
$sortorder = "ASC"; $sortorder = "ASC";
} }
@ -124,55 +119,57 @@ $sql.= $db->plimit($limit+1, $offset);
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
{ {
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("ListOfContacts") : $langs->trans("ListOfContactsAddresses")); $param="&type=".$type;
print_barre_liste($title.($label?" (".$label.")":""),$page, $_SERVER["PHP_SELF"], "&amp;type=$type",$sortfield,$sortorder,"",$num);
print '<table class="liste" width="100%">'; $title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("ListOfContacts") : $langs->trans("ListOfContactsAddresses"));
print '<tr class="liste_titre">'; print_barre_liste($title.($label?" (".$label.")":""),$page, $_SERVER["PHP_SELF"], $param,$sortfield,$sortorder,"",$num);
print_liste_field_titre($langs->trans("Lastname"),$_SERVER["PHP_SELF"],"p.name", $begin,"&amp;type=$type","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Firstname"),$_SERVER["PHP_SELF"],"p.firstname", $begin,"&amp;type=$type","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom", $begin,"&amp;type=$type","",$sortfield,$sortorder);
print '<td class="liste_titre">'.$langs->trans("Email").'</td>';
print '<td class="liste_titre">'.$langs->trans("Phone").'</td>';
print "</tr>\n";
print '<form action="'.$_SERVER["PHP_SELF"].'?type='.$_GET["type"].'" method="GET">'; print '<table class="liste" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td class="liste_titre"><input class="flat" name="search_lastname" size="12" value="'.$search_lastname.'"></td>'; print_liste_field_titre($langs->trans("Lastname"),$_SERVER["PHP_SELF"],"p.name", $begin, $param,"",$sortfield,$sortorder);
print '<td class="liste_titre"><input class="flat" name="search_firstname" size="12" value="'.$search_firstname.'"></td>'; print_liste_field_titre($langs->trans("Firstname"),$_SERVER["PHP_SELF"],"p.firstname", $begin, $param,"",$sortfield,$sortorder);
print '<td class="liste_titre"><input class="flat" name="search_company" size="12" value="'.$search_company.'"></td>'; print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom", $begin, $param,"",$sortfield,$sortorder);
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">'.$langs->trans("Email").'</td>';
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'"></td>'; print '<td class="liste_titre">'.$langs->trans("Phone").'</td>';
print "</tr>\n"; print "</tr>\n";
print '</form>';
$var=True; print '<form action="'.$_SERVER["PHP_SELF"].'?type='.$_GET["type"].'" method="GET">';
$i = 0; print '<tr class="liste_titre">';
while ($i < min($num,$limit)) print '<td class="liste_titre"><input class="flat" name="search_lastname" size="12" value="'.$search_lastname.'"></td>';
{ print '<td class="liste_titre"><input class="flat" name="search_firstname" size="12" value="'.$search_firstname.'"></td>';
$obj = $db->fetch_object($resql); print '<td class="liste_titre"><input class="flat" name="search_company" size="12" value="'.$search_company.'"></td>';
print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'"></td>';
print "</tr>\n";
print '</form>';
$var=!$var; $var=True;
$i = 0;
while ($i < min($num,$limit))
{
$obj = $db->fetch_object($resql);
print "<tr ".$bc[$var].">"; $var=!$var;
print '<td><a href="'.DOL_URL_ROOT.'/contact/fiche.php?id='.$obj->cidp.'&socid='.$obj->rowid.'">'.img_object($langs->trans("ShowContact"),"contact");
print '</a>&nbsp;<a href="'.DOL_URL_ROOT.'/contact/fiche.php?id='.$obj->cidp.'&socid='.$obj->rowid.'">'.$obj->name.'</a></td>';
print "<td>$obj->firstname</TD>";
print '<td><a href="'.$_SERVER["PHP_SELF"].'?type='.$type.'&socid='.$obj->rowid.'">'.img_object($langs->trans("ShowCompany"),"company").'</a>&nbsp;'; print "<tr ".$bc[$var].">";
print "<a href=\"".$urlfiche."?socid=".$obj->rowid."\">$obj->nom</a></td>\n"; print '<td><a href="'.DOL_URL_ROOT.'/contact/fiche.php?id='.$obj->cidp.'&socid='.$obj->rowid.'">'.img_object($langs->trans("ShowContact"),"contact");
print '</a>&nbsp;<a href="'.DOL_URL_ROOT.'/contact/fiche.php?id='.$obj->cidp.'&socid='.$obj->rowid.'">'.$obj->name.'</a></td>';
print "<td>$obj->firstname</TD>";
print '<td>'.dol_print_phone($obj->email,$obj->cidp,$obj->rowid,'AC_EMAIL').'</td>'; print '<td><a href="'.$_SERVER["PHP_SELF"].'?type='.$type.'&socid='.$obj->rowid.'">'.img_object($langs->trans("ShowCompany"),"company").'</a>&nbsp;';
print "<a href=\"".$urlfiche."?socid=".$obj->rowid."\">$obj->nom</a></td>\n";
print '<td>'.dol_print_phone($obj->phone,$obj->country_code,$obj->cidp,$obj->rowid,'AC_TEL').'&nbsp;</td>'; print '<td>'.dol_print_phone($obj->email,$obj->cidp,$obj->rowid,'AC_EMAIL').'</td>';
print "</tr>\n"; print '<td>'.dol_print_phone($obj->phone,$obj->country_code,$obj->cidp,$obj->rowid,'AC_TEL').'&nbsp;</td>';
$i++;
} print "</tr>\n";
print "</table></p>"; $i++;
$db->free($resql); }
print "</table></p>";
$db->free($resql);
} }
else else
{ {
@ -182,5 +179,4 @@ else
llxFooter(); llxFooter();
$db->close(); $db->close();
?>
?>

View File

@ -267,11 +267,11 @@ if ($id > 0)
// Fax // Fax
print '<td>'.$langs->trans('Fax').'</td><td style="min-width: 25%;">'.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').'</td></tr>'; print '<td>'.$langs->trans('Fax').'</td><td style="min-width: 25%;">'.dol_print_phone($object->fax,$object->country_code,0,$object->id,'AC_FAX').'</td></tr>';
// Skype // Skype
if (! empty($conf->skype->enabled) && $user->rights->skype->view) if (! empty($conf->skype->enabled))
{ {
print '<td>'.$langs->trans('Skype').'</td><td colspan="3">'.dol_print_skype($object->skype,0,$object->id,'AC_SKYPE').'</td></tr>'; print '<td>'.$langs->trans('Skype').'</td><td colspan="3">'.dol_print_skype($object->skype,0,$object->id,'AC_SKYPE').'</td></tr>';
} }
// Assujeti a TVA ou pas // Assujeti a TVA ou pas
print '<tr>'; print '<tr>';

View File

@ -53,26 +53,6 @@ $now=dol_now();
* Actions * Actions
*/ */
if ($action == 'add_bookmark' && ! empty($socid))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark WHERE fk_soc = ".$db->escape($socid)." AND fk_user=".$user->id;
if (! $db->query($sql) )
{
dol_print_error($db);
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$db->escape($socid).", ".$db->idate($now).",".$user->id.");";
if (! $db->query($sql) )
{
dol_print_error($db);
}
}
if ($action == 'del_bookmark' && ! empty($bid))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark WHERE rowid=".$db->escape($bid);
$result = $db->query($sql);
}
/* /*
* View * View

View File

@ -60,6 +60,8 @@ if ($search_status=='') $search_status=1; // always display activ customer first
$search_sale = GETPOST("search_sale"); $search_sale = GETPOST("search_sale");
$search_categ = GETPOST("search_categ",'int'); $search_categ = GETPOST("search_categ",'int');
$catid = GETPOST("catid",'int'); $catid = GETPOST("catid",'int');
// If the internal user must only see his customers, force searching by him
if (!$user->rights->societe->client->voir && !$socid) $search_sale = $user->id;
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('customerlist')); $hookmanager->initHooks(array('customerlist'));
@ -104,17 +106,15 @@ llxHeader('',$langs->trans("ThirdParty"),$help_url);
$sql = "SELECT s.rowid, s.nom as name, s.client, s.zip, s.town, st.libelle as stcomm, s.prefix_comm, s.code_client, s.code_compta, s.status as status,"; $sql = "SELECT s.rowid, s.nom as name, s.client, s.zip, s.town, st.libelle as stcomm, s.prefix_comm, s.code_client, s.code_compta, s.status as status,";
$sql.= " s.datec, s.datea, s.canvas"; $sql.= " s.datec, s.datea, s.canvas";
// We'll need these fields in order to filter by sale (including the case where the user can only see his prospects) if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
if ($search_sale) $sql .= ", sc.fk_soc, sc.fk_user";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_societe"; // We need this table joined to the select in order to filter by categ if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_societe"; // We need this table joined to the select in order to filter by categ
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
$sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st"; $sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st";
// We'll need this table joined to the select in order to filter by sale
if ($search_sale || !$user->rights->societe->client->voir) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.fk_stcomm = st.id"; $sql.= " WHERE s.fk_stcomm = st.id";
$sql.= " AND s.client IN (1, 3)"; $sql.= " AND s.client IN (1, 3)";
$sql.= ' AND s.entity IN ('.getEntity('societe', 1).')'; $sql.= ' AND s.entity IN ('.getEntity('societe', 1).')';
if (!$user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql.= " AND s.rowid = sc.fk_soc";
if ($socid) $sql.= " AND s.rowid = ".$socid; if ($socid) $sql.= " AND s.rowid = ".$socid;
if ($search_sale) $sql.= " AND s.rowid = sc.fk_soc"; // Join for the needed table to filter by sale if ($search_sale) $sql.= " AND s.rowid = sc.fk_soc"; // Join for the needed table to filter by sale
if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid; if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid;
@ -149,8 +149,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
$sql.= $db->order($sortfield,$sortorder); $sql.= $db->order($sortfield,$sortorder);
$sql.= $db->plimit($conf->liste_limit +1, $offset); $sql.= $db->plimit($conf->liste_limit +1, $offset);
dol_syslog('comm:list.php: sql='.$sql,LOG_DEBUG); dol_syslog('comm/list.php: sql='.$sql,LOG_DEBUG);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {

View File

@ -700,6 +700,8 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
$price_min=0; $price_min=0;
$price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT'); $price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT');
$db->begin();
// Ecrase $pu par celui du produit // Ecrase $pu par celui du produit
// Ecrase $desc par celui du produit // Ecrase $desc par celui du produit
// Ecrase $txtva par celui du produit // Ecrase $txtva par celui du produit
@ -858,6 +860,8 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
if ($result > 0) if ($result > 0)
{ {
$db->commit();
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
{ {
// Define output language // Define output language
@ -898,6 +902,8 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
} }
else else
{ {
$db->rollback();
setEventMessage($object->error, 'errors'); setEventMessage($object->error, 'errors');
} }
} }
@ -981,6 +987,8 @@ else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('sa
if (! $error) if (! $error)
{ {
$db->begin();
$result = $object->updateline( $result = $object->updateline(
GETPOST('lineid'), GETPOST('lineid'),
$pu_ht, $pu_ht,
@ -1006,6 +1014,8 @@ else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('sa
if ($result >= 0) if ($result >= 0)
{ {
$db->commit();
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
{ {
// Define output language // Define output language
@ -1035,6 +1045,8 @@ else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('sa
} }
else else
{ {
$db->rollback();
setEventMessage($object->error, 'errors'); setEventMessage($object->error, 'errors');
} }
} }
@ -1968,8 +1980,8 @@ else
// Amount HT // Amount HT
print '<tr><td height="10" width="25%">'.$langs->trans('AmountHT').'</td>'; print '<tr><td height="10" width="25%">'.$langs->trans('AmountHT').'</td>';
print '<td align="right" class="nowrap"><b>'.price($object->total_ht).'</b></td>'; print '<td align="right" class="nowrap"><b>'.price($object->total_ht,'',$langs,0,-1,-1,$conf->currency).'</b></td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td>'; print '<td></td>';
// Margin Infos // Margin Infos
if (! empty($conf->margin->enabled)) { if (! empty($conf->margin->enabled)) {
@ -1981,28 +1993,28 @@ else
// Amount VAT // Amount VAT
print '<tr><td height="10">'.$langs->trans('AmountVAT').'</td>'; print '<tr><td height="10">'.$langs->trans('AmountVAT').'</td>';
print '<td align="right" class="nowrap">'.price($object->total_tva).'</td>'; print '<td align="right" class="nowrap">'.price($object->total_tva,'',$langs,0,-1,-1,$conf->currency).'</td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td></td></tr>';
// Amount Local Taxes // Amount Local Taxes
if ($mysoc->localtax1_assuj=="1") //Localtax1 if ($mysoc->localtax1_assuj=="1") //Localtax1
{ {
print '<tr><td height="10">'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td>'; print '<tr><td height="10">'.$langs->transcountry("AmountLT1",$mysoc->country_code).'</td>';
print '<td align="right" class="nowrap">'.price($object->total_localtax1).'</td>'; print '<td align="right" class="nowrap">'.price($object->total_localtax1,'',$langs,0,-1,-1,$conf->currency).'</td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td></td></tr>';
} }
if ($mysoc->localtax2_assuj=="1") //Localtax2 if ($mysoc->localtax2_assuj=="1") //Localtax2
{ {
print '<tr><td height="10">'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td>'; print '<tr><td height="10">'.$langs->transcountry("AmountLT2",$mysoc->country_code).'</td>';
print '<td align="right" class="nowrap">'.price($object->total_localtax2).'</td>'; print '<td align="right" class="nowrap">'.price($object->total_localtax2,'',$langs,0,-1,-1,$conf->currency).'</td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td></td></tr>';
} }
// Amount TTC // Amount TTC
print '<tr><td height="10">'.$langs->trans('AmountTTC').'</td>'; print '<tr><td height="10">'.$langs->trans('AmountTTC').'</td>';
print '<td align="right" class="nowrap">'.price($object->total_ttc).'</td>'; print '<td align="right" class="nowrap">'.price($object->total_ttc,'',$langs,0,-1,-1,$conf->currency).'</td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td></td></tr>';
// Statut // Statut
print '<tr><td height="10">'.$langs->trans('Status').'</td><td align="left" colspan="2">'.$object->getLibStatut(4).'</td></tr>'; print '<tr><td height="10">'.$langs->trans('Status').'</td><td align="left" colspan="2">'.$object->getLibStatut(4).'</td></tr>';

View File

@ -2056,7 +2056,7 @@ class Propal extends CommonObject
{ {
// We remove directory // We remove directory
$ref = dol_sanitizeFileName($this->ref); $ref = dol_sanitizeFileName($this->ref);
if ($conf->propal->dir_output) if ($conf->propal->dir_output && !empty($this->ref))
{ {
$dir = $conf->propal->dir_output . "/" . $ref ; $dir = $conf->propal->dir_output . "/" . $ref ;
$file = $dir . "/" . $ref . ".pdf"; $file = $dir . "/" . $ref . ".pdf";
@ -3038,7 +3038,8 @@ class PropaleLigne extends CommonObject
if (empty($this->localtax2_type)) $this->localtax2_type=0; if (empty($this->localtax2_type)) $this->localtax2_type=0;
if (empty($this->marque_tx)) $this->marque_tx=0; if (empty($this->marque_tx)) $this->marque_tx=0;
if (empty($this->marge_tx)) $this->marge_tx=0; if (empty($this->marge_tx)) $this->marge_tx=0;
if (empty($this->remise)) $this->remise=0; if (empty($this->price)) $this->price=0; // TODO A virer
if (empty($this->remise)) $this->remise=0; // TODO A virer
if (empty($this->remise_percent)) $this->remise_percent=0; if (empty($this->remise_percent)) $this->remise_percent=0;
if (empty($this->info_bits)) $this->info_bits=0; if (empty($this->info_bits)) $this->info_bits=0;
if (empty($this->special_code)) $this->special_code=0; if (empty($this->special_code)) $this->special_code=0;

View File

@ -21,7 +21,7 @@
/** /**
* \file htdocs/comm/propal/document.php * \file htdocs/comm/propal/document.php
* \ingroup propale * \ingroup propal
* \brief Management page of documents attached to a business proposal * \brief Management page of documents attached to a business proposal
*/ */

View File

@ -19,7 +19,7 @@
/** /**
* \file htdocs/comm/propal/info.php * \file htdocs/comm/propal/info.php
* \ingroup propale * \ingroup propal
* \brief Page d'affichage des infos d'une proposition commerciale * \brief Page d'affichage des infos d'une proposition commerciale
*/ */

View File

@ -25,8 +25,8 @@
*/ */
/** /**
* \file htdocs/comm/propal.php * \file htdocs/comm/propal/list.php
* \ingroup propale * \ingroup propal
* \brief Page of commercial proposals card and list * \brief Page of commercial proposals card and list
*/ */
@ -182,11 +182,7 @@ if ($search_montant_ht)
$sql.= " AND p.total_ht='".$db->escape(price2num(trim($search_montant_ht)))."'"; $sql.= " AND p.total_ht='".$db->escape(price2num(trim($search_montant_ht)))."'";
} }
if ($sall) { if ($sall) {
/*$scrit = explode(' ', $sall); $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall);
foreach ($scrit as $crit) {
$sql.= " AND (s.nom LIKE '%".$db->escape($crit)."%' OR p.note LIKE '%".$db->escape($crit)."%' OR pd.description LIKE '%".$db->escape($crit)."%')";
}*/
$sql .= natural_search(array('s.nom', 'p.note_private', 'pd.description'), $sall);
} }
if ($socid) $sql.= ' AND s.rowid = '.$socid; if ($socid) $sql.= ' AND s.rowid = '.$socid;
if ($viewstatut <> '') if ($viewstatut <> '')
@ -426,14 +422,14 @@ if ($result)
{ {
if($num<$limit){ if($num<$limit){
$var=!$var; $var=!$var;
print '<tr class="liste_total"><td align="left">'.$langs->trans("Total HT").'</td>'; print '<tr class="liste_total"><td align="left">'.$langs->trans("TotalHT").'</td>';
print '<td colspan="6" align="right"">'.price($total).'<td colspan="3"</td>'; print '<td colspan="6" align="right"">'.price($total).'<td colspan="3"</td>';
print '</tr>'; print '</tr>';
} }
else else
{ {
$var=!$var; $var=!$var;
print '<tr class="liste_total"><td align="left">'.$langs->trans("Total HT for this page").'</td>'; print '<tr class="liste_total"><td align="left">'.$langs->trans("TotalHTforthispage").'</td>';
print '<td colspan="6" align="right"">'.price($total).'<td colspan="3"</td>'; print '<td colspan="6" align="right"">'.price($total).'<td colspan="3"</td>';
print '</tr>'; print '</tr>';
} }

View File

@ -21,7 +21,7 @@
/** /**
* \file htdocs/comm/propal/note.php * \file htdocs/comm/propal/note.php
* \ingroup propale * \ingroup propal
* \brief Fiche d'information sur une proposition commerciale * \brief Fiche d'information sur une proposition commerciale
*/ */

View File

@ -267,14 +267,14 @@ foreach ($data as $val)
{ // If we have empty year { // If we have empty year
$oldyear--; $oldyear--;
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.'">'.$oldyear.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '</tr>'; print '</tr>';
} }
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'">'.$year.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>';
print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right">'.$val['nb'].'</td>';
print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>';
print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>';

View File

@ -14,7 +14,12 @@
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* */
/**
* \file htdocs/comm/propal/tpl/linkedobjectblock.tpl.php
* \ingroup propal
* \brief Template to show objects linked to proposals
*/ */
?> ?>

View File

@ -144,7 +144,7 @@ else dol_print_error($db);
// Load sale and categ filters // Load sale and categ filters
$search_sale = GETPOST('search_sale'); $search_sale = GETPOST('search_sale');
$search_categ = GETPOST('search_categ'); $search_categ = GETPOST('search_categ');
// If the user must only see his prospect, force searching by him // If the internal user must only see his prospect, force searching by him
if (!$user->rights->societe->client->voir && !$socid) $search_sale = $user->id; if (!$user->rights->societe->client->voir && !$socid) $search_sale = $user->id;
// List of avaible states; we'll need that for each lines (quick changing prospect states) and for search bar (filter by prospect state) // List of avaible states; we'll need that for each lines (quick changing prospect states) and for search bar (filter by prospect state)
@ -180,18 +180,17 @@ $form=new Form($db);
$sql = "SELECT s.rowid, s.nom, s.zip, s.town, s.datec, s.datea, s.status as status, s.code_client, s.client,"; $sql = "SELECT s.rowid, s.nom, s.zip, s.town, s.datec, s.datea, s.status as status, s.code_client, s.client,";
$sql.= " st.libelle as stcomm, s.prefix_comm, s.fk_stcomm, s.fk_prospectlevel,"; $sql.= " st.libelle as stcomm, s.prefix_comm, s.fk_stcomm, s.fk_prospectlevel,";
$sql.= " d.nom as departement"; $sql.= " d.nom as departement";
// Updated by Matelli if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
if ($search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
$sql .= " FROM ".MAIN_DB_PREFIX."c_stcomm as st"; $sql .= " FROM ".MAIN_DB_PREFIX."c_stcomm as st";
if ($search_sale || !$user->rights->societe->client->voir) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d on (d.rowid = s.fk_departement)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d on (d.rowid = s.fk_departement)";
if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_societe"; // We need this table joined to the select in order to filter by categ if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_societe as cs ON s.rowid = cs.fk_societe"; // We need this table joined to the select in order to filter by categ
if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
$sql.= " WHERE s.fk_stcomm = st.id"; $sql.= " WHERE s.fk_stcomm = st.id";
$sql.= " AND s.client IN (2, 3)"; $sql.= " AND s.client IN (2, 3)";
$sql.= ' AND s.entity IN ('.getEntity('societe', 1).')'; $sql.= ' AND s.entity IN ('.getEntity('societe', 1).')';
if ($user->societe_id) $sql.= " AND s.rowid = " .$user->societe_id; if ((!$user->rights->societe->client->voir && !$socid) || $search_sale) $sql.= " AND s.rowid = sc.fk_soc";
if ($search_sale) $sql.= " AND s.rowid = sc.fk_soc"; // Join for the needed table to filter by sale if ($socid) $sql.= " AND s.rowid = " .$socid;
if (isset($stcomm) && $stcomm != '') $sql.= " AND s.fk_stcomm=".$stcomm; if (isset($stcomm) && $stcomm != '') $sql.= " AND s.fk_stcomm=".$stcomm;
if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid; if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid;
if ($catid == -2) $sql.= " AND cs.fk_categorie IS NULL"; if ($catid == -2) $sql.= " AND cs.fk_categorie IS NULL";
@ -224,7 +223,6 @@ if ($socname) {
$sortfield = "s.nom"; $sortfield = "s.nom";
$sortorder = "ASC"; $sortorder = "ASC";
} }
// Count total nb of records // Count total nb of records
$nbtotalofrecords = 0; $nbtotalofrecords = 0;
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
@ -232,9 +230,9 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
$result = $db->query($sql); $result = $db->query($sql);
$nbtotalofrecords = $db->num_rows($result); $nbtotalofrecords = $db->num_rows($result);
} }
$sql.= " ORDER BY $sortfield $sortorder, s.nom ASC"; $sql.= " ORDER BY $sortfield $sortorder, s.nom ASC";
$sql.= $db->plimit($conf->liste_limit+1, $offset); $sql.= $db->plimit($conf->liste_limit+1, $offset);
dol_syslog('comm/prospect/list.php sql='.$sql,LOG_DEBUG); dol_syslog('comm/prospect/list.php sql='.$sql,LOG_DEBUG);
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)

View File

@ -655,7 +655,7 @@ class Commande extends CommonOrder
$sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null"); $sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null");
$sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:'NULL'); $sql.= ", ".($this->fk_delivery_address>0?$this->fk_delivery_address:'NULL');
$sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL'); $sql.= ", ".($this->remise_absolue>0?$this->remise_absolue:'NULL');
$sql.= ", '".$this->remise_percent."'"; $sql.= ", ".($this->remise_percent>0?$this->remise_percent:0);
$sql.= ", ".$conf->entity; $sql.= ", ".$conf->entity;
$sql.= ")"; $sql.= ")";
@ -2457,7 +2457,7 @@ class Commande extends CommonOrder
// On efface le repertoire de pdf provisoire // On efface le repertoire de pdf provisoire
$comref = dol_sanitizeFileName($this->ref); $comref = dol_sanitizeFileName($this->ref);
if ($conf->commande->dir_output) if ($conf->commande->dir_output && !empty($this->ref))
{ {
$dir = $conf->commande->dir_output . "/" . $comref ; $dir = $conf->commande->dir_output . "/" . $comref ;
$file = $conf->commande->dir_output . "/" . $comref . "/" . $comref . ".pdf"; $file = $conf->commande->dir_output . "/" . $comref . "/" . $comref . ".pdf";
@ -3085,6 +3085,7 @@ class OrderLine extends CommonOrderLine
$this->fk_product = $objp->fk_product; $this->fk_product = $objp->fk_product;
$this->product_type = $objp->product_type; $this->product_type = $objp->product_type;
$this->info_bits = $objp->info_bits; $this->info_bits = $objp->info_bits;
$this->special_code = $objp->special_code;
$this->total_ht = $objp->total_ht; $this->total_ht = $objp->total_ht;
$this->total_tva = $objp->total_tva; $this->total_tva = $objp->total_tva;
$this->total_localtax1 = $objp->total_localtax1; $this->total_localtax1 = $objp->total_localtax1;

View File

@ -325,7 +325,8 @@ if ($resql)
print '</td>'; print '</td>';
print '<td style="min-width: 20px" class="nobordernopadding nowrap">'; print '<td style="min-width: 20px" class="nobordernopadding nowrap">';
if (($objp->fk_statut > 0) && ($objp->fk_statut < 3) && $db->jdate($objp->date_valid) < ($now - $conf->commande->client->warning_delay)) print img_picto($langs->trans("Late"),"warning"); if (($objp->fk_statut > 0) && ($objp->fk_statut < 3) && max($db->jdate($objp->date_valid),$db->jdate($objp->date_livraison)) < ($now - $conf->commande->client->warning_delay))
print img_picto($langs->trans("Late"),"warning");
if(!empty($objp->note_private)) if(!empty($objp->note_private))
{ {
print ' <span class="note">'; print ' <span class="note">';

View File

@ -288,7 +288,7 @@ foreach ($data as $val)
{ // If we have empty year { // If we have empty year
$oldyear--; $oldyear--;
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.'">'.$oldyear.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
@ -297,7 +297,7 @@ foreach ($data as $val)
} }
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&amp;mode='.$mode.'">'.$year.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&amp;mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>';
print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right">'.$val['nb'].'</td>';
print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>';
print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>';

View File

@ -131,7 +131,7 @@ if (($_GET["id"] || $_GET["ref"]) && $action != 'edit')
if ($action == 'delete') if ($action == 'delete')
{ {
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$account->id,$langs->trans("DeleteAccount"),$langs->trans("ConfirmDeleteAccount"),"confirm_delete"); print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$account->id,$langs->trans("DeleteAccount"),$langs->trans("ConfirmDeleteAccount"),"confirm_delete");
} }
@ -171,38 +171,71 @@ if (($_GET["id"] || $_GET["ref"]) && $action != 'edit')
print '<tr><td valign="top">'.$langs->trans("BankAccountCountry").'</td><td colspan="3">'; print '<tr><td valign="top">'.$langs->trans("BankAccountCountry").'</td><td colspan="3">';
$img=picto_from_langcode($account->country_code); $img=picto_from_langcode($account->country_code);
print $img?$img.' ':''; print $img?$img.' ':'';
print getCountry($account->getCountryCode(),0,$db); print getCountry($account->getCountryCode(), 0, $db);
print "</td></tr>\n"; print "</td></tr>\n";
print '<tr><td valign="top">'.$langs->trans("BankName").'</td>'; print '<tr><td valign="top">'.$langs->trans("BankName").'</td>';
print '<td colspan="3">'.$account->bank.'</td></tr>'; print '<td colspan="3">'.$account->bank.'</td></tr>';
if ($account->useDetailedBBAN() == 1) // Show fields of bank account
$fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey';
if (! empty($conf->global->BANK_SHOW_ORDER_OPTION))
{ {
print '<tr><td>'.$langs->trans("BankCode").'</td>'; if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION))
print '<td colspan="3">'.$account->code_banque.'</td>'; {
print '</tr>'; if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber';
}
print '<tr><td>'.$langs->trans("DeskCode").'</td>'; else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION;
print '<td colspan="3">'.$account->code_guichet.'</td>';
print '</tr>';
} }
if ($account->useDetailedBBAN() == 2) $fieldlistsarray=explode(' ',$fieldlists);
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td colspan="3">'.$account->code_banque.'</td>';
print '</tr>';
}
print '<tr><td>'.$langs->trans("BankAccountNumber").'</td>'; foreach($fieldlistsarray as $val)
print '<td colspan="3">'.$account->number.'</td>';
print '</tr>';
if ($account->useDetailedBBAN() == 1)
{ {
print '<tr><td>'.$langs->trans("BankAccountNumberKey").'</td>'; if ($val == 'BankCode')
print '<td colspan="3">'.$account->cle_rib.'</td>'; {
print '</tr>'; if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td colspan="3">'.$account->code_banque.'</td>';
print '</tr>';
}
}
if ($val == 'DeskCode')
{
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("DeskCode").'</td>';
print '<td colspan="3">'.$account->code_guichet.'</td>';
print '</tr>';
}
}
if ($val == 'BankCode')
{
if ($account->useDetailedBBAN() == 2)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td colspan="3">'.$account->code_banque.'</td>';
print '</tr>';
}
}
if ($val == 'AccountNumber')
{
print '<tr><td>'.$langs->trans("BankAccountNumber").'</td>';
print '<td colspan="3">'.$account->number.'</td>';
print '</tr>';
}
if ($val == 'BankAccountNumberKey')
{
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankAccountNumberKey").'</td>';
print '<td colspan="3">'.$account->cle_rib.'</td>';
print '</tr>';
}
}
} }
$ibankey="IBANNumber"; $ibankey="IBANNumber";
@ -310,38 +343,77 @@ if ($_GET["id"] && $action == 'edit' && $user->rights->banque->configurer)
if ($account->type == 0 || $account->type == 1) if ($account->type == 0 || $account->type == 1)
{ {
print '<tr><td valign="top">'.$langs->trans("BankAccountCountry").'</td><td colspan="3">';
$img=picto_from_langcode($account->country_code);
print $img?$img.' ':'';
print getCountry($account->getCountryCode(), 0, $db);
print "</td></tr>\n";
// If bank account // If bank account
print '<tr><td valign="top">'.$langs->trans("BankName").'</td>'; print '<tr><td valign="top">'.$langs->trans("BankName").'</td>';
print '<td colspan="3"><input size="30" type="text" class="flat" name="bank" value="'.$account->bank.'"></td>'; print '<td colspan="3"><input size="30" type="text" class="flat" name="bank" value="'.$account->bank.'"></td>';
print '</tr>'; print '</tr>';
// BBAN // Show fields of bank account
if ($account->useDetailedBBAN() == 1) $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey';
if (! empty($conf->global->BANK_SHOW_ORDER_OPTION))
{ {
print '<tr><td>'.$langs->trans("BankCode").'</td>'; if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION))
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>'; {
print '</tr>'; if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber';
}
print '<tr><td>'.$langs->trans("DeskCode").'</td>'; else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION;
print '<td><input size="8" type="text" class="flat" name="code_guichet" value="'.$account->code_guichet.'"></td>';
print '</tr>';
} }
if ($account->useDetailedBBAN() == 2) $fieldlistsarray=explode(' ',$fieldlists);
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>';
print '</tr>';
}
print '<td>'.$langs->trans("BankAccountNumber").'</td>'; foreach($fieldlistsarray as $val)
print '<td><input size="18" type="text" class="flat" name="number" value="'.$account->number.'"></td>';
print '</tr>';
if ($account->useDetailedBBAN() == 1)
{ {
print '<td>'.$langs->trans("BankAccountNumberKey").'</td>'; if ($val == 'BankCode')
print '<td><input size="3" type="text" class="flat" name="cle_rib" value="'.$account->cle_rib.'"></td>'; {
print '</tr>'; if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>';
print '</tr>';
}
}
if ($val == 'DeskCode')
{
if ($account->useDetailedBBAN() == 1)
{
print '<tr><td>'.$langs->trans("DeskCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_guichet" value="'.$account->code_guichet.'"></td>';
print '</tr>';
}
}
if ($val == 'BankCode')
{
if ($account->useDetailedBBAN() == 2)
{
print '<tr><td>'.$langs->trans("BankCode").'</td>';
print '<td><input size="8" type="text" class="flat" name="code_banque" value="'.$account->code_banque.'"></td>';
print '</tr>';
}
}
if ($val == 'AccountNumber')
{
print '<td>'.$langs->trans("BankAccountNumber").'</td>';
print '<td><input size="18" type="text" class="flat" name="number" value="'.$account->number.'"></td>';
print '</tr>';
}
if ($val == 'BankAccountNumberKey')
{
if ($account->useDetailedBBAN() == 1)
{
print '<td>'.$langs->trans("BankAccountNumberKey").'</td>';
print '<td><input size="3" type="text" class="flat" name="cle_rib" value="'.$account->cle_rib.'"></td>';
print '</tr>';
}
}
} }
$ibankey="IBANNumber"; $ibankey="IBANNumber";
@ -361,10 +433,6 @@ if ($_GET["id"] && $action == 'edit' && $user->rights->banque->configurer)
print $account->domiciliation; print $account->domiciliation;
print "</textarea></td></tr>"; print "</textarea></td></tr>";
print '<tr><td valign="top">'.$langs->trans("BankAccountCountry").'</td><td colspan="3">';
print getCountry($account->getCountryCode());
print "</td></tr>\n";
print '<tr><td valign="top">'.$langs->trans("BankAccountOwner").'</td>'; print '<tr><td valign="top">'.$langs->trans("BankAccountOwner").'</td>';
print '<td colspan="3"><input size="30" type="text" class="flat" name="proprio" value="'.$account->proprio.'">'; print '<td colspan="3"><input size="30" type="text" class="flat" name="proprio" value="'.$account->proprio.'">';
print '</td></tr>'; print '</td></tr>';
@ -376,11 +444,15 @@ if ($_GET["id"] && $action == 'edit' && $user->rights->banque->configurer)
} }
print '<tr><td align="center" colspan="4"><input value="'.$langs->trans("Save").'" type="submit" class="button">';
print ' &nbsp; <input name="cancel" value="'.$langs->trans("Cancel").'" type="submit" class="button">';
print '</td></tr>';
print '</table>'; print '</table>';
print '<br>';
print '<div align="center">';
print '<input value="'.$langs->trans("Save").'" type="submit" class="button">';
print ' &nbsp; <input name="cancel" value="'.$langs->trans("Cancel").'" type="submit" class="button">';
print '</div>';
print '</form>'; print '</form>';
} }

View File

@ -234,7 +234,6 @@ if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td><td align="right" class="liste_total">'.price($total).'</td></tr>'; print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td><td align="right" class="liste_total">'.price($total).'</td></tr>';
print "</table>"; print "</table>";
print "<br>";
/* /*
@ -242,7 +241,7 @@ print "<br>";
*/ */
print '<div class="tabsAction">'."\n"; print '<div class="tabsAction">'."\n";
if ($user->rights->banque->configurer) if ($user->rights->banque->configurer)
{ {
print '<a class="butAction" href="fiche.php?action=create">'.$langs->trans("NewFinancialAccount").'</a>'; print '<a class="butAction" href="fiche.php?action=create">'.$langs->trans("NewFinancialAccount").'</a>';
} }

View File

@ -903,7 +903,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
$numlines=count($lines); $numlines=count($lines);
for ($i=0; $i<$numlines; $i++) for ($i=0; $i<$numlines; $i++)
{ {
$totalamount += $lines[$i]->subprice; $totalamount += $lines[$i]->total_ht;
} }
if ($totalamount!=0) if ($totalamount!=0)
@ -1422,7 +1422,7 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
} }
} }
elseif ($action == 'updateligne' && $user->rights->facture->creer && $_POST['save'] == $langs->trans('Save')) elseif ($action == 'updateligne' && $user->rights->facture->creer && ! GETPOST('cancel'))
{ {
if (! $object->fetch($id) > 0) dol_print_error($db); if (! $object->fetch($id) > 0) dol_print_error($db);
$object->fetch_thirdparty(); $object->fetch_thirdparty();
@ -1479,7 +1479,8 @@ elseif ($action == 'updateligne' && $user->rights->facture->creer && $_POST['sav
$label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label'):''); $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label'):'');
if ($price_min && (price2num($pu_ht)*(1-price2num(GETPOST('remise_percent'))/100) < price2num($price_min))) // Check price is not lower than minimum (check is done only for standard or replacement invoices)
if (($object->type == 0 || $object->type == 1) && $price_min && (price2num($pu_ht)*(1-price2num(GETPOST('remise_percent'))/100) < price2num($price_min)))
{ {
setEventMessage($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min,'MU'),0,$langs,0,0,-1,$conf->currency)), 'errors'); setEventMessage($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min,'MU'),0,$langs,0,0,-1,$conf->currency)), 'errors');
$error++; $error++;
@ -3873,7 +3874,7 @@ else if ($id > 0 || ! empty($ref))
$modelmail='facture_relance'; $modelmail='facture_relance';
$action='relance'; $action='relance';
} }
else $action='send'; else $action='send';
$ref = dol_sanitizeFileName($object->ref); $ref = dol_sanitizeFileName($object->ref);
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';

View File

@ -1323,7 +1323,7 @@ class Facture extends CommonInvoice
{ {
// On efface le repertoire de pdf provisoire // On efface le repertoire de pdf provisoire
$ref = dol_sanitizeFileName($this->ref); $ref = dol_sanitizeFileName($this->ref);
if ($conf->facture->dir_output) if ($conf->facture->dir_output && !empty($this->ref))
{ {
$dir = $conf->facture->dir_output . "/" . $ref; $dir = $conf->facture->dir_output . "/" . $ref;
$file = $conf->facture->dir_output . "/" . $ref . "/" . $ref . ".pdf"; $file = $conf->facture->dir_output . "/" . $ref . "/" . $ref . ".pdf";
@ -2908,19 +2908,21 @@ class Facture extends CommonInvoice
$sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)'; $sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)';
$sql .= ' VALUES ('.$this->id; $sql .= ' VALUES ('.$this->id;
$sql .= ",'".price2num($resteapayer)."'"; $sql .= ",'".price2num($resteapayer)."'";
$sql .= ",'".$this->db->idate($now)."',"; $sql .= ",'".$this->db->idate($now)."'";
$sql .= ",".$user->id; $sql .= ",".$user->id;
$sql .= ",'".$bac->code_banque."'"; $sql .= ",'".$bac->code_banque."'";
$sql .= ",'".$bac->code_guichet."'"; $sql .= ",'".$bac->code_guichet."'";
$sql .= ",'".$bac->number."'"; $sql .= ",'".$bac->number."'";
$sql .= ",'".$bac->cle_rib."')"; $sql .= ",'".$bac->cle_rib."')";
if ( $this->db->query($sql))
dol_syslog(get_class($this)."::demande_prelevement sql=".$sql);
if ($this->db->query($sql))
{ {
return 1; return 1;
} }
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->lasterror();
dol_syslog(get_class($this).'::demandeprelevement Erreur'); dol_syslog(get_class($this).'::demandeprelevement Erreur');
return -1; return -1;
} }
@ -3394,7 +3396,7 @@ class FactureLigne extends CommonInvoiceLine
$sql = 'SELECT fd.rowid, fd.fk_facture, fd.fk_parent_line, fd.fk_product, fd.product_type, fd.label as custom_label, fd.description, fd.price, fd.qty, fd.tva_tx,'; $sql = 'SELECT fd.rowid, fd.fk_facture, fd.fk_parent_line, fd.fk_product, fd.product_type, fd.label as custom_label, fd.description, fd.price, fd.qty, fd.tva_tx,';
$sql.= ' fd.localtax1_tx, fd. localtax2_tx, fd.remise, fd.remise_percent, fd.fk_remise_except, fd.subprice,'; $sql.= ' fd.localtax1_tx, fd. localtax2_tx, fd.remise, fd.remise_percent, fd.fk_remise_except, fd.subprice,';
$sql.= ' fd.date_start as date_start, fd.date_end as date_end, fd.fk_product_fournisseur_price as fk_fournprice, fd.buy_price_ht as pa_ht,'; $sql.= ' fd.date_start as date_start, fd.date_end as date_end, fd.fk_product_fournisseur_price as fk_fournprice, fd.buy_price_ht as pa_ht,';
$sql.= ' fd.info_bits, fd.total_ht, fd.total_tva, fd.total_ttc, fd.total_localtax1, fd.total_localtax2, fd.rang,'; $sql.= ' fd.info_bits, fd.special_code, fd.total_ht, fd.total_tva, fd.total_ttc, fd.total_localtax1, fd.total_localtax2, fd.rang,';
$sql.= ' fd.fk_code_ventilation,'; $sql.= ' fd.fk_code_ventilation,';
$sql.= ' p.ref as product_ref, p.label as product_libelle, p.description as product_desc'; $sql.= ' p.ref as product_ref, p.label as product_libelle, p.description as product_desc';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet as fd'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet as fd';
@ -3423,6 +3425,7 @@ class FactureLigne extends CommonInvoiceLine
$this->date_start = $this->db->jdate($objp->date_start); $this->date_start = $this->db->jdate($objp->date_start);
$this->date_end = $this->db->jdate($objp->date_end); $this->date_end = $this->db->jdate($objp->date_end);
$this->info_bits = $objp->info_bits; $this->info_bits = $objp->info_bits;
$this->special_code = $objp->special_code;
$this->total_ht = $objp->total_ht; $this->total_ht = $objp->total_ht;
$this->total_tva = $objp->total_tva; $this->total_tva = $objp->total_tva;
$this->total_localtax1 = $objp->total_localtax1; $this->total_localtax1 = $objp->total_localtax1;

View File

@ -49,7 +49,7 @@ $result = restrictedArea($user,'facture',$id,'');
* Action * Action
*/ */
if ($action == "builddoc" && $user->rights->facture->lire) if ($action == "builddoc" && $user->rights->facture->lire && ! GETPOST('button_search'))
{ {
if (is_array($_POST['toGenerate'])) if (is_array($_POST['toGenerate']))
{ {
@ -149,14 +149,14 @@ if ($action == 'remove_file')
* View * View
*/ */
$form = new Form($db);
$formfile = new FormFile($db);
$title=$langs->trans("BillsCustomersUnpaid"); $title=$langs->trans("BillsCustomersUnpaid");
if ($option=='late') $title=$langs->trans("BillsCustomersUnpaid"); if ($option=='late') $title=$langs->trans("BillsCustomersUnpaid");
llxHeader('',$title); llxHeader('',$title);
$form = new Form($db);
$formfile = new FormFile($db);
?> ?>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
@ -170,12 +170,6 @@ $(document).ready(function() {
</script> </script>
<?php <?php
/***************************************************************************
* *
* Mode Liste *
* *
***************************************************************************/
$now=dol_now(); $now=dol_now();
$search_ref = GETPOST("search_ref"); $search_ref = GETPOST("search_ref");
@ -222,10 +216,10 @@ if (GETPOST('filtre'))
$sql .= " AND " . $filt[0] . " = " . $filt[1]; $sql .= " AND " . $filt[0] . " = " . $filt[1];
} }
} }
if ($search_ref) $sql .= " AND f.facnumber LIKE '%".$search_ref."%'"; if ($search_ref) $sql .= " AND f.facnumber LIKE '%".$db->escape($search_ref)."%'";
if ($search_societe) $sql .= " AND s.nom LIKE '%".$search_societe."%'"; if ($search_societe) $sql .= " AND s.nom LIKE '%".$db->escape($search_societe)."%'";
if ($search_montant_ht) $sql .= " AND f.total = '".$search_montant_ht."'"; if ($search_montant_ht) $sql .= " AND f.total = '".$db->escape($search_montant_ht)."'";
if ($search_montant_ttc) $sql .= " AND f.total_ttc = '".$search_montant_ttc."'"; if ($search_montant_ttc) $sql .= " AND f.total_ttc = '".$db->escape($search_montant_ttc)."'";
if (GETPOST('sf_ref')) $sql .= " AND f.facnumber LIKE '%".$db->escape(GETPOST('sf_ref'))."%'"; if (GETPOST('sf_ref')) $sql .= " AND f.facnumber LIKE '%".$db->escape(GETPOST('sf_ref'))."%'";
$sql.= " GROUP BY s.nom, s.rowid, f.facnumber, f.increment, f.total, f.tva, f.total_ttc, f.datef, f.date_lim_reglement, f.paye, f.rowid, f.fk_statut, f.type "; $sql.= " GROUP BY s.nom, s.rowid, f.facnumber, f.increment, f.total, f.tva, f.total_ttc, f.datef, f.date_lim_reglement, f.paye, f.rowid, f.fk_statut, f.type ";
if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user "; if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user ";
@ -271,10 +265,13 @@ if ($resql)
dol_htmloutput_mesg($mesg); dol_htmloutput_mesg($mesg);
print '<form id="form_generate_pdf" method="POST" action="'.$_SERVER["PHP_SELF"].'?sortfield='. $sortfield .'&sortorder='. $sortorder .'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
if ($late) print '<input type="hidden" name="late" value="'.dol_escape_htmltag($late).'">';
$i = 0; $i = 0;
print '<table class="liste" width="100%">'; print '<table class="liste" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateDue"),$_SERVER["PHP_SELF"],"f.date_lim_reglement","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateDue"),$_SERVER["PHP_SELF"],"f.date_lim_reglement","",$param,'align="center"',$sortfield,$sortorder);
@ -289,17 +286,16 @@ if ($resql)
print "</tr>\n"; print "</tr>\n";
// Lignes des champs de filtre // Lignes des champs de filtre
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
// Ref // Ref
print '<td class="liste_titre">'; print '<td class="liste_titre">';
print '<input class="flat" size="10" type="text" name="search_ref" value="'.$search_ref.'"></td>'; print '<input class="flat" size="10" type="text" name="search_ref" value="'.$search_ref.'"></td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="left"><input class="flat" type="text" size="10" name="search_societe" value="'.$search_societe.'"></td>'; print '<td class="liste_titre" align="left"><input class="flat" type="text" size="10" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>';
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="8" name="search_montant_ht" value="'.$search_montant_ht.'"></td>'; print '<td class="liste_titre" align="right"><input class="flat" type="text" size="8" name="search_montant_ht" value="'.dol_escape_htmltag($search_montant_ht).'"></td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="8" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>'; print '<td class="liste_titre" align="right"><input class="flat" type="text" size="8" name="search_montant_ttc" value="'.dol_escape_htmltag($search_montant_ttc).'"></td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
@ -309,7 +305,6 @@ if ($resql)
if ($conf->use_javascript_ajax) print '<a href="#" id="checkall">'.$langs->trans("All").'</a> / <a href="#" id="checknone">'.$langs->trans("None").'</a>'; if ($conf->use_javascript_ajax) print '<a href="#" id="checkall">'.$langs->trans("All").'</a> / <a href="#" id="checknone">'.$langs->trans("None").'</a>';
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
print '</form>';
if ($num > 0) if ($num > 0)
{ {
@ -321,9 +316,6 @@ if ($resql)
$facturestatic=new Facture($db); $facturestatic=new Facture($db);
print '<form id="form_generate_pdf" method="POST" action="'.$_SERVER["PHP_SELF"].'?sortfield='. $sortfield .'&sortorder='. $sortorder .'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
@ -426,17 +418,13 @@ if ($resql)
* Show list of available documents * Show list of available documents
*/ */
$filedir=$diroutputpdf; $filedir=$diroutputpdf;
if ($search_ref) print '<input type="hidden" name="search_ref" value="'.$search_ref.'">';
if ($search_societe) print '<input type="hidden" name="search_societe" value="'.$search_societe.'">';
if ($search_montant_ht) print '<input type="hidden" name="search_montant_ht" value="'.$search_montant_ht.'">';
if ($search_montant_ttc) print '<input type="hidden" name="search_montant_ttc" value="'.$search_montant_ttc.'">';
if ($late) print '<input type="hidden" name="late" value="'.$late.'">';
$genallowed=$user->rights->facture->lire; $genallowed=$user->rights->facture->lire;
$delallowed=$user->rights->facture->lire; $delallowed=$user->rights->facture->lire;
print '<br>'; print '<br>';
print '<input type="hidden" name="option" value="'.$option.'">'; print '<input type="hidden" name="option" value="'.$option.'">';
$formfile->show_documents('unpaid','',$filedir,$urlsource,$genallowed,$delallowed,'',1,0,0,48,1,$param,$langs->trans("PDFMerge"),$langs->trans("PDFMerge")); // We disable multilang because we concat already existing pdf.
$formfile->show_documents('unpaid','',$filedir,$urlsource,$genallowed,$delallowed,'',1,1,0,48,1,$param,$langs->trans("PDFMerge"),$langs->trans("PDFMerge"));
print '</form>'; print '</form>';
$db->free($resql); $db->free($resql);

View File

@ -211,7 +211,6 @@ if ($object->id > 0)
} }
print ')'; print ')';
} }
// FIXME $facidnext not defined
/* /*
if ($facidnext > 0) if ($facidnext > 0)
{ {

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (c) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (c) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -266,14 +267,14 @@ foreach ($data as $val)
{ // If we have empty year { // If we have empty year
$oldyear--; $oldyear--;
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.'">'.$oldyear.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'&amp;mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$oldyear.'</a></td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '<td align="right">0</td>'; print '<td align="right">0</td>';
print '</tr>'; print '</tr>';
} }
print '<tr height="24">'; print '<tr height="24">';
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&amp;mode='.$mode.'">'.$year.'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&amp;mode='.$mode.($socid>0?'&socid='.$socid:'').($userid>0?'&userid='.$userid:'').'">'.$year.'</a></td>';
print '<td align="right">'.$val['nb'].'</td>'; print '<td align="right">'.$val['nb'].'</td>';
print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>';
print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>'; print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>';

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -62,30 +62,6 @@ if ($user->societe_id > 0)
* Actions * Actions
*/ */
if ($action == 'add_bookmark')
{
$now=dol_now();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark WHERE fk_soc = ".$socid." AND fk_user=".$user->id;
if (! $db->query($sql) )
{
dol_print_error($db);
}
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$socid.", ".$db->idate($now).",".$user->id.");";
if (! $db->query($sql) )
{
dol_print_error($db);
}
}
if ($action == 'del_bookmark' && ! empty($bid))
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark WHERE rowid=".$db->escape($bid);
$result = $db->query($sql);
}
/* /*
* View * View
@ -216,7 +192,7 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$i = 0; $i = 0;
$tot_ttc = 0; $tot_ttc = 0;
while ($i < $num && $i < 20) while ($i < $num)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
print '<tr '.$bc[$var].'><td class="nowrap">'; print '<tr '.$bc[$var].'><td class="nowrap">';
@ -285,7 +261,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
$i = 0; $i = 0;
$tot_ttc = 0; $tot_ttc = 0;
while ($i < $num && $i < 20) while ($i < $num)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
print '<tr '.$bc[$var].'><td class="nowrap">'; print '<tr '.$bc[$var].'><td class="nowrap">';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -29,6 +30,7 @@ require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT .'/core/modules/facture/modules_facture.php'; require_once DOL_DOCUMENT_ROOT .'/core/modules/facture/modules_facture.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
$langs->load('bills'); $langs->load('bills');
@ -173,19 +175,9 @@ if ($result <= 0)
$form = new Form($db); $form = new Form($db);
$h=0; $head = payment_prepare_head($object);
$head[$h][0] = $_SERVER['PHP_SELF'].'?id='.$id; dol_fiche_head($head, 'payment', $langs->trans("PaymentCustomerInvoice"), 0, 'payment');
$head[$h][1] = $langs->trans("Card");
$hselected = $h;
$h++;
$head[$h][0] = DOL_URL_ROOT.'/compta/paiement/info.php?id='.$id;
$head[$h][1] = $langs->trans("Info");
$h++;
dol_fiche_head($head, $hselected, $langs->trans("PaymentCustomerInvoice"), 0, 'payment');
/* /*
* Confirmation de la suppression du paiement * Confirmation de la suppression du paiement

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -25,6 +26,7 @@
require '../../main.inc.php'; require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
$langs->load("bills"); $langs->load("bills");
$langs->load("companies"); $langs->load("companies");
@ -40,20 +42,9 @@ $paiement = new Paiement($db);
$paiement->fetch($_GET["id"], $user); $paiement->fetch($_GET["id"], $user);
$paiement->info($_GET["id"]); $paiement->info($_GET["id"]);
$head = payment_prepare_head($paiement);
$h=0; dol_fiche_head($head, 'info', $langs->trans("PaymentCustomerInvoice"), 0, 'payment');
$head[$h][0] = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$_GET["id"];
$head[$h][1] = $langs->trans("Card");
$h++;
$head[$h][0] = DOL_URL_ROOT.'/compta/paiement/info.php?id='.$_GET["id"];
$head[$h][1] = $langs->trans("Info");
$hselected = $h;
$h++;
dol_fiche_head($head, $hselected, $langs->trans("PaymentCustomerInvoice"), 0, 'payment');
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';

View File

@ -795,7 +795,6 @@ class BonPrelevement extends CommonObject
{ {
require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php'; require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php';
$soc = new Societe($this->db); $soc = new Societe($this->db);
$bac = new CompanyBankAccount($this->db);
// Check RIB // Check RIB
$i = 0; $i = 0;
@ -810,6 +809,7 @@ class BonPrelevement extends CommonObject
{ {
if ($soc->fetch($fact->socid) >= 0) if ($soc->fetch($fact->socid) >= 0)
{ {
$bac = new CompanyBankAccount($this->db);
$bac->fetch(0,$soc->id); $bac->fetch(0,$soc->id);
if ($bac->verif() >= 1) if ($bac->verif() >= 1)
{ {

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -31,7 +31,7 @@ $langs->load("compta");
$langs->load("banks"); $langs->load("banks");
$langs->load("bills"); $langs->load("bills");
$id=GETPOST("id"); $id=GETPOST("id",'int');
$action=GETPOST('action'); $action=GETPOST('action');
// Security check // Security check
@ -87,7 +87,7 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
if ($action == 'delete') if ($action == 'delete')
{ {
$result=$tva->fetch($_GET['id']); $result=$tva->fetch($id);
if ($tva->rappro == 0) if ($tva->rappro == 0)
{ {
@ -100,10 +100,10 @@ if ($action == 'delete')
{ {
$accountline=new AccountLine($db); $accountline=new AccountLine($db);
$result=$accountline->fetch($tva->fk_bank); $result=$accountline->fetch($tva->fk_bank);
$result=$accountline->delete($user); if ($result > 0) $result=$accountline->delete($user); // $result may be 0 if not found (when bank entry was deleted manually and fk_bank point to nothing)
} }
if ($result > 0) if ($result >= 0)
{ {
$db->commit(); $db->commit();
header("Location: ".DOL_URL_ROOT.'/compta/tva/reglement.php'); header("Location: ".DOL_URL_ROOT.'/compta/tva/reglement.php');
@ -289,4 +289,4 @@ if ($id)
$db->close(); $db->close();
llxFooter(); llxFooter();
?> ?>

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