Merge branch 'upstream/3.5'
This commit is contained in:
commit
f98ec89dec
2
.gitignore
vendored
2
.gitignore
vendored
@ -15,3 +15,5 @@ doxygen_warnings.log
|
||||
.DS_Store
|
||||
.idea
|
||||
*.iml
|
||||
Thumbs.db
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@ file_filter = htdocs/langs/<lang>/admin.lang
|
||||
source_file = htdocs/langs/en_US/admin.lang
|
||||
source_lang = en_US
|
||||
type = MOZILLAPROPERTIES
|
||||
lang_map = uz_UZ: uz
|
||||
|
||||
[dolibarr.agenda]
|
||||
file_filter = htdocs/langs/<lang>/agenda.lang
|
||||
|
||||
@ -130,8 +130,13 @@ parameter. All methods addline in this case were modified to remove this paramet
|
||||
|
||||
|
||||
***** ChangeLog for 3.4.2 compared to 3.4.1 *****
|
||||
Fix: field's problem into company's page (RIB)
|
||||
Fix: Document cerfa doesn't contained firstname & lastname from donator
|
||||
Fix: Bad rounding on margin calculations and display.
|
||||
Fix: Option drop table into backup was broken.
|
||||
Fix: [ bug #1105 ] Searching Boxes other search option
|
||||
Fix: wrong buy price update
|
||||
Fix :[ bug #1142 ] Set paiement on invoice (PGSql)
|
||||
|
||||
***** ChangeLog for 3.4.1 compared to 3.4.0 *****
|
||||
Fix: Display buying price on line edit when no supplier price is defined
|
||||
|
||||
@ -39,7 +39,13 @@ END
|
||||
|
||||
|
||||
# To use Alioth.debian.org
|
||||
* Create a login
|
||||
* Create an account login
|
||||
* Update your ~/.ssh/config file to add:
|
||||
Host svn.debian.org git.debian.org bzr.debian.org hg.debian.org darcs.debian.org arch.debian.org
|
||||
User eldy-guest
|
||||
IdentityFile ~/.ssh/id_rsa
|
||||
* Check login on page https://alioth.debian.org/users/login
|
||||
Ex: https://alioth.debian.org/users/eldy-guest
|
||||
* Setup your ssh as described into page: http://wiki.debian.org/Alioth/SSH
|
||||
* Ask to be included into project collab-maint: http://alioth.debian.org/projects/collab-maint/
|
||||
|
||||
@ -192,8 +198,7 @@ To update dolibarr debian package
|
||||
* You can git clone debian git repo
|
||||
> git clone git.debian.org:/git/collab-maint/dolibarr.git [dolibarr-debian]
|
||||
or better
|
||||
> mkdir gitdebian
|
||||
> cd gitdebian
|
||||
> cd ~; mkdir git-debian; cd git-debian
|
||||
> gbp-clone git.debian.org:/git/collab-maint/dolibarr.git
|
||||
|
||||
* You can then create a PHP project from Eclipse called dolibarr-debian
|
||||
|
||||
@ -14,6 +14,20 @@ dolibarr (3.4.1-3) unstable; urgency=low
|
||||
|
||||
dolibarr (3.4.0-3) 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.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.
|
||||
|
||||
|
||||
@ -2,7 +2,15 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# \file build/makepack-dolibarr.pl
|
||||
# \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps)
|
||||
# \author (c)2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
# \author (c)2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
#
|
||||
# This is list of constant you can set to have generated packages moved into a specific dir:
|
||||
#DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'
|
||||
#DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable'
|
||||
#DESTIMODULES='/media/HDDATA1_LD/Mes Sites/Web/Admin1/wwwroot/files/modules'
|
||||
#DESTIDOLIMEDBETARC='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/lastbuild'
|
||||
#DESTIDOLIMEDMODULES='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/modules'
|
||||
#DESTIDOLIMEDSTABLE='/media/HDDATA1_LD/Mes Sites/Web/DoliCloud/dolimed.com/htdocs/files/stable'
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
use Cwd;
|
||||
|
||||
@ -2,13 +2,15 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# \file build/makepack-dolibarrmodule.pl
|
||||
# \brief Package builder (tgz, zip, rpm, deb, exe)
|
||||
# \author (c)2005-2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
# \author (c)2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
use Cwd;
|
||||
$OWNER="ldestailleur";
|
||||
$GROUP="ldestailleur";
|
||||
|
||||
|
||||
@LISTETARGET=("TGZ"); # Possible packages
|
||||
@LISTETARGET=("ZIP"); # Possible packages
|
||||
%REQUIREMENTTARGET=( # Tool requirement for each package
|
||||
"TGZ"=>"tar",
|
||||
"ZIP"=>"7z"
|
||||
@ -272,7 +274,6 @@ foreach my $PROJECT (@PROJECTLIST) {
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/conf/conf*sav*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom2`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/bureau2crea`;
|
||||
$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/CVS* $BUILDROOT/$PROJECT/*/CVS* $BUILDROOT/$PROJECT/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/*/CVS* $BUILDROOT/$PROJECT/*/*/*/*/*/CVS*`;
|
||||
@ -323,6 +324,7 @@ foreach my $PROJECT (@PROJECTLIST) {
|
||||
|
||||
print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n";
|
||||
$ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`;
|
||||
$ret=`chown $OWNER.$GROUP "$NEWDESTI/$FILENAMEZIP.zip"`;
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
@ -34,3 +34,12 @@ Enter the Remote URL that should looks like this: http://www.dolibarr.org/files/
|
||||
Then add into advanded - attributes
|
||||
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
||||
OBS:QualityCategory Testing
|
||||
|
||||
|
||||
# Move project into official directory
|
||||
- Enter a bug to ask to be a maintener of a category or to add a new one.
|
||||
For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category
|
||||
https://build.opensuse.org/project/show/Application:ERP
|
||||
- Once done, go into project, category, subproject and enter a subproject for your application.
|
||||
Fo example: Dolibarr
|
||||
- Then go onto project into your home and ask a publish to the category/you project your created.
|
||||
|
||||
@ -117,9 +117,9 @@ do
|
||||
lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`;
|
||||
echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang
|
||||
if [ "$lang1" = "$lang2" ] ; then
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
else
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
fi
|
||||
done >>%{name}.lang
|
||||
|
||||
@ -238,20 +238,20 @@ echo Create document directory $docdir
|
||||
export config=%{_sysconfdir}/dolibarr/conf.php
|
||||
if [ -s $config ] && grep -q "File generated by" $config
|
||||
then
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
fi
|
||||
|
||||
# Create config for SE Linux
|
||||
@ -264,13 +264,13 @@ restorecon -R -v /var/lib/dolibarr
|
||||
|
||||
# Create a config link dolibarr.conf
|
||||
if [ ! -L $apachelink ]; then
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
fi
|
||||
|
||||
echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
@ -302,30 +302,30 @@ echo
|
||||
|
||||
if [ "x$1" = "x0" ] ;
|
||||
then
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
/sbin/service httpd restart
|
||||
fi
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
/sbin/service httpd restart
|
||||
fi
|
||||
else
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
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
|
||||
|
||||
@ -190,9 +190,9 @@ do
|
||||
lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`;
|
||||
echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang
|
||||
if [ "$lang1" = "$lang2" ] ; then
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
else
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
fi
|
||||
done >>%{name}.lang
|
||||
|
||||
@ -323,28 +323,28 @@ export installconfig="%{_sysconfdir}/dolibarr/install.forced.php"
|
||||
# Detect OS
|
||||
os='unknown';
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d ]; then
|
||||
export os='fedora-redhat';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
export apacheuser='apache';
|
||||
export apachegroup='apache';
|
||||
export os='fedora-redhat';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
export apacheuser='apache';
|
||||
export apachegroup='apache';
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^wwwrun /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='opensuse';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
export apacheuser='wwwrun';
|
||||
export apachegroup='www';
|
||||
export os='opensuse';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
export apacheuser='wwwrun';
|
||||
export apachegroup='www';
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d -a `grep -i "^mageia\|mandriva" /etc/issue | wc -l` -ge 1 ]; then
|
||||
export os='mageia-mandriva';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
export apacheuser='apache';
|
||||
export apachegroup='apache';
|
||||
export os='mageia-mandriva';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
export apacheuser='apache';
|
||||
export apachegroup='apache';
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^www-data /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='ubuntu-debian';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
export apacheuser='www-data';
|
||||
export apachegroup='www-data';
|
||||
export os='ubuntu-debian';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
export apacheuser='www-data';
|
||||
export apachegroup='www-data';
|
||||
fi
|
||||
echo OS detected: $os
|
||||
%endif
|
||||
@ -363,16 +363,16 @@ echo Create document directory $docdir
|
||||
# Create install.forced.php into Dolibarr install directory
|
||||
if [ "x$os" = "xubuntu-debian" ]
|
||||
then
|
||||
superuserlogin=''
|
||||
superuserpassword=''
|
||||
if [ -f %{_sysconfdir}/mysql/debian.cnf ] ; then
|
||||
# Load superuser login and pass
|
||||
superuserlogin=$(/bin/grep --max-count=1 "user" %{_sysconfdir}/mysql/debian.cnf | /bin/sed -e 's/^user[ =]*//g')
|
||||
superuserpassword=$(/bin/grep --max-count=1 "password" %{_sysconfdir}/mysql/debian.cnf | /bin/sed -e 's/^password[ =]*//g')
|
||||
fi
|
||||
echo Mysql superuser found to use is $superuserlogin
|
||||
%{__cat} /usr/share/dolibarr/build/rpm/install.forced.php.generic | sed -e 's/__SUPERUSERLOGIN__/'$superuserlogin'/g' | sed -e 's/__SUPERUSERPASSWORD__/'$superuserpassword'/g' > $installconfig
|
||||
%{__chmod} -R 660 $installconfig
|
||||
superuserlogin=''
|
||||
superuserpassword=''
|
||||
if [ -f %{_sysconfdir}/mysql/debian.cnf ] ; then
|
||||
# Load superuser login and pass
|
||||
superuserlogin=$(/bin/grep --max-count=1 "user" %{_sysconfdir}/mysql/debian.cnf | /bin/sed -e 's/^user[ =]*//g')
|
||||
superuserpassword=$(/bin/grep --max-count=1 "password" %{_sysconfdir}/mysql/debian.cnf | /bin/sed -e 's/^password[ =]*//g')
|
||||
fi
|
||||
echo Mysql superuser found to use is $superuserlogin
|
||||
%{__cat} /usr/share/dolibarr/build/rpm/install.forced.php.generic | sed -e 's/__SUPERUSERLOGIN__/'$superuserlogin'/g' | sed -e 's/__SUPERUSERPASSWORD__/'$superuserpassword'/g' > $installconfig
|
||||
%{__chmod} -R 660 $installconfig
|
||||
fi
|
||||
%endif
|
||||
|
||||
@ -383,29 +383,29 @@ fi
|
||||
export config=%{_sysconfdir}/dolibarr/conf.php
|
||||
if [ -s $config ] && grep -q "File generated by" $config
|
||||
then
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version}
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
%else
|
||||
%if 0%{?mdkversion}
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
%else
|
||||
%if 0%{?suse_version}
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
%else
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
@ -418,12 +418,12 @@ if [ "x$os" = "xfedora-redhat" -a -s /sbin/restorecon ]; then
|
||||
%endif
|
||||
%if 0%{?mdkversion} || 0%{?suse_version}
|
||||
%else
|
||||
echo Add SE Linux permissions for dolibarr
|
||||
# semanage add records into /etc/selinux/targeted/contexts/files/file_contexts.local
|
||||
semanage fcontext -a -t httpd_sys_script_rw_t "/etc/dolibarr(/.*?)"
|
||||
semanage fcontext -a -t httpd_sys_script_rw_t "/var/lib/dolibarr(/.*?)"
|
||||
restorecon -R -v /etc/dolibarr
|
||||
restorecon -R -v /var/lib/dolibarr
|
||||
echo Add SE Linux permissions for dolibarr
|
||||
# semanage add records into /etc/selinux/targeted/contexts/files/file_contexts.local
|
||||
semanage fcontext -a -t httpd_sys_script_rw_t "/etc/dolibarr(/.*?)"
|
||||
semanage fcontext -a -t httpd_sys_script_rw_t "/var/lib/dolibarr(/.*?)"
|
||||
restorecon -R -v /etc/dolibarr
|
||||
restorecon -R -v /var/lib/dolibarr
|
||||
%endif
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion} || 0%{?suse_version}
|
||||
%else
|
||||
@ -432,13 +432,13 @@ fi
|
||||
|
||||
# Create a config link dolibarr.conf
|
||||
if [ ! -L $apachelink ]; then
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
fi
|
||||
|
||||
echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
@ -451,30 +451,30 @@ echo Restart web server
|
||||
/sbin/service httpd restart
|
||||
%else
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
%endif
|
||||
|
||||
# Restart mysql server
|
||||
echo Restart mysql server
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion}
|
||||
/sbin/service mysqld restart
|
||||
/sbin/service mysqld restart
|
||||
%else
|
||||
%if 0%{?suse_version}
|
||||
if [ -f /etc/init.d/mysqld ]; then
|
||||
/etc/init.d/mysqld restart
|
||||
/etc/init.d/mysqld restart
|
||||
else
|
||||
/sbin/service mysql restart
|
||||
/sbin/service mysql restart
|
||||
fi
|
||||
%else
|
||||
if [ -f /etc/init.d/mysqld ]; then
|
||||
/etc/init.d/mysqld restart
|
||||
/etc/init.d/mysqld restart
|
||||
fi
|
||||
if [ -f /etc/init.d/mysql ]; then
|
||||
/etc/init.d/mysql restart
|
||||
/etc/init.d/mysql restart
|
||||
fi
|
||||
%endif
|
||||
%endif
|
||||
@ -497,63 +497,63 @@ echo
|
||||
|
||||
if [ "x$1" = "x0" ] ;
|
||||
then
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
|
||||
# Define vars
|
||||
os='unknown';
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion}
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
%else
|
||||
%if 0%{?suse_version}
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
%else
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d ]; then
|
||||
export os='fedora-redhat';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^wwwrun /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='opensuse';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d -a `grep -i "^mageia\|mandriva" /etc/issue | wc -l` -ge 1 ]; then
|
||||
export os='mageia-mandriva';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^www-data /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='ubuntu-debian';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
fi
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion}
|
||||
/sbin/service httpd restart
|
||||
%else
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
%endif
|
||||
fi
|
||||
# Define vars
|
||||
os='unknown';
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion}
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
%else
|
||||
%if 0%{?suse_version}
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
%else
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d ]; then
|
||||
export os='fedora-redhat';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^wwwrun /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='opensuse';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/httpd/conf.d -a `grep -i "^mageia\|mandriva" /etc/issue | wc -l` -ge 1 ]; then
|
||||
export os='mageia-mandriva';
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
fi
|
||||
if [ -d %{_sysconfdir}/apache2/conf.d -a `grep ^www-data /etc/passwd | wc -l` -ge 1 ]; then
|
||||
export os='ubuntu-debian';
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
fi
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion}
|
||||
/sbin/service httpd restart
|
||||
%else
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
%endif
|
||||
fi
|
||||
else
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
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
|
||||
|
||||
@ -114,9 +114,9 @@ do
|
||||
lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`;
|
||||
echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang
|
||||
if [ "$lang1" = "$lang2" ] ; then
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
else
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
fi
|
||||
done >>%{name}.lang
|
||||
|
||||
@ -235,31 +235,31 @@ echo Create document directory $docdir
|
||||
export config=%{_sysconfdir}/dolibarr/conf.php
|
||||
if [ -s $config ] && grep -q "File generated by" $config
|
||||
then
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
fi
|
||||
|
||||
# Create a config link dolibarr.conf
|
||||
if [ ! -L $apachelink ]; then
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
fi
|
||||
|
||||
echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
@ -269,19 +269,19 @@ echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
|
||||
# Restart mysql
|
||||
echo Restart mysql
|
||||
if [ -f /etc/init.d/mysqld ]; then
|
||||
/etc/init.d/mysqld restart
|
||||
/etc/init.d/mysqld restart
|
||||
fi
|
||||
if [ -f /etc/init.d/mysql ]; then
|
||||
/etc/init.d/mysql restart
|
||||
/etc/init.d/mysql restart
|
||||
fi
|
||||
|
||||
# Show result
|
||||
@ -301,35 +301,35 @@ echo
|
||||
|
||||
if [ "x$1" = "x0" ] ;
|
||||
then
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
fi
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@ -115,9 +115,9 @@ do
|
||||
lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`;
|
||||
echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang
|
||||
if [ "$lang1" = "$lang2" ] ; then
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
else
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
echo "%lang(${lang}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang"
|
||||
fi
|
||||
done >>%{name}.lang
|
||||
|
||||
@ -246,31 +246,31 @@ echo Create document directory $docdir
|
||||
export config=%{_sysconfdir}/dolibarr/conf.php
|
||||
if [ -s $config ] && grep -q "File generated by" $config
|
||||
then
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
# File already exist. We add params not found.
|
||||
echo Add new params to overwrite path to use shared libraries/fonts
|
||||
grep -q -c "dolibarr_lib_ADODB_PATH" $config || [ ! -d "/usr/share/php/adodb" ] || echo "<?php \$dolibarr_lib_ADODB_PATH='/usr/share/php/adodb'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "<?php \$dolibarr_lib_FPDI_PATH='/usr/share/php/fpdi'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_NUSOAP_PATH" $config || [ ! -d "/usr/share/php/nusoap" ] || echo "<?php \$dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap'; ?>" >> $config
|
||||
grep -q -c "dolibarr_lib_ODTPHP_PATHTOPCLZIP" $config || [ ! -d "/usr/share/php/libphp-pclzip" ] || echo "<?php \$dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip'; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_PHPEXCEL_PATH" $config || echo "<?php \$dolibarr_lib_PHPEXCEL_PATH=''; ?>" >> $config
|
||||
#grep -q -c "dolibarr_lib_TCPDF_PATH" $config || echo "<?php \$dolibarr_lib_TCPDF_PATH=''; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_CKEDITOR" $config || [ ! -d "/usr/share/javascript/ckeditor" ] || echo "<?php \$dolibarr_js_CKEDITOR='/javascript/ckeditor'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "<?php \$dolibarr_js_JQUERY='/javascript/jquery'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "<?php \$dolibarr_js_JQUERY_UI='/javascript/jquery-ui'; ?>" >> $config
|
||||
grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "<?php \$dolibarr_js_JQUERY_FLOT='/javascript/flot'; ?>" >> $config
|
||||
grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "<?php \$dolibarr_font_DOL_DEFAULT_TTF_BOLD='/usr/share/fonts/truetype/DejaVuSans-Bold.ttf'; ?>" >> $config
|
||||
fi
|
||||
|
||||
# Create a config link dolibarr.conf
|
||||
if [ ! -L $apachelink ]; then
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
apachelinkdir=`dirname $apachelink`
|
||||
if [ -d $apachelinkdir ]; then
|
||||
echo Create dolibarr web server config link from %{_sysconfdir}/dolibarr/apache.conf to $apachelink
|
||||
ln -fs %{_sysconfdir}/dolibarr/apache.conf $apachelink
|
||||
else
|
||||
echo Do not create link $apachelink - web server conf dir $apachelinkdir not found. web server package may not be installed
|
||||
fi
|
||||
fi
|
||||
|
||||
echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
@ -280,18 +280,18 @@ echo Set permission to $apacheuser:$apachegroup on /var/lib/dolibarr
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
|
||||
# Restart mysql
|
||||
echo Restart mysql
|
||||
if [ -f /etc/init.d/mysqld ]; then
|
||||
/etc/init.d/mysqld restart
|
||||
/etc/init.d/mysqld restart
|
||||
else
|
||||
/sbin/service mysql restart
|
||||
/sbin/service mysql restart
|
||||
fi
|
||||
|
||||
# Show result
|
||||
@ -311,35 +311,35 @@ echo
|
||||
|
||||
if [ "x$1" = "x0" ] ;
|
||||
then
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
fi
|
||||
# Remove
|
||||
echo "Removed package"
|
||||
|
||||
# Define vars
|
||||
export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf"
|
||||
|
||||
# Remove apache link
|
||||
if [ -L $apachelink ] ;
|
||||
then
|
||||
echo "Delete apache config link for Dolibarr ($apachelink)"
|
||||
%{__rm} -f $apachelink
|
||||
status=purge
|
||||
fi
|
||||
|
||||
# Restart web servers if required
|
||||
if [ "x$status" = "xpurge" ] ;
|
||||
then
|
||||
# Restart web server
|
||||
echo Restart web server
|
||||
if [ -f %{_sysconfdir}/init.d/httpd ]; then
|
||||
%{_sysconfdir}/init.d/httpd restart
|
||||
fi
|
||||
if [ -f %{_sysconfdir}/init.d/apache2 ]; then
|
||||
%{_sysconfdir}/init.d/apache2 restart
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
# Upgrade
|
||||
echo "No remove action done (this is an upgrade)"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
26
dev/fixnotabfiles.sh
Executable file
26
dev/fixnotabfiles.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------
|
||||
# Script to find files that are not Unix encoded
|
||||
#
|
||||
# Laurent Destailleur - eldy@users.sourceforge.net
|
||||
#------------------------------------------------------
|
||||
# Usage: fixnotabfiles.sh [list|fix]
|
||||
#------------------------------------------------------
|
||||
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Usage: fixnotabfiles.sh [list|fix]"
|
||||
fi
|
||||
|
||||
# To detec
|
||||
if [ "x$1" = "xlist" ]
|
||||
then
|
||||
find build \( -iname "*.sh" -o -iname "*.spec" \) -exec grep -l -P '\t' {} \;
|
||||
fi
|
||||
|
||||
# To convert
|
||||
if [ "x$1" = "xfix" ]
|
||||
then
|
||||
echo Feature not implemented. Please fix files manually.
|
||||
fi
|
||||
File diff suppressed because one or more lines are too long
@ -154,14 +154,14 @@ class autoTranslator
|
||||
if (isset($this->_translatedFiles[$file]) && count($this->_translatedFiles[$file])>0)
|
||||
{
|
||||
$fp = fopen($destPath, 'a');
|
||||
fwrite($fp, "\r\n");
|
||||
fwrite($fp, "\r\n");
|
||||
fwrite($fp, "// START - Lines generated via autotranslator.php tool (".$this->_time.").\r\n");
|
||||
fwrite($fp, "// Reference language: ".$this->_refLang." -> ".$my_destlang."\r\n");
|
||||
fwrite($fp, "\n");
|
||||
fwrite($fp, "\n");
|
||||
fwrite($fp, "// START - Lines generated via autotranslator.php tool (".$this->_time.").\n");
|
||||
fwrite($fp, "// Reference language: ".$this->_refLang." -> ".$my_destlang."\n");
|
||||
foreach( $this->_translatedFiles[$file] as $line) {
|
||||
fwrite($fp, $line . "\r\n");
|
||||
fwrite($fp, $line . "\n");
|
||||
}
|
||||
fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->_time_end.").\r\n");
|
||||
fwrite($fp, "// STOP - Lines generated via autotranslator.php tool (".$this->_time_end.").\n");
|
||||
fclose($fp);
|
||||
}
|
||||
return;
|
||||
@ -177,11 +177,11 @@ class autoTranslator
|
||||
private function createTranslationFile($path,$my_destlang)
|
||||
{
|
||||
$fp = fopen($path, 'w+');
|
||||
fwrite($fp, "/*\r\n");
|
||||
fwrite($fp, " * Language code: {$my_destlang}\r\n");
|
||||
fwrite($fp, " * Automatic generated via autotranslator.php tool\r\n");
|
||||
fwrite($fp, " * Generation date " . $this->_time. "\r\n");
|
||||
fwrite($fp, " */\r\n");
|
||||
fwrite($fp, "/*\n");
|
||||
fwrite($fp, " * Language code: {$my_destlang}\n");
|
||||
fwrite($fp, " * Automatic generated via autotranslator.php tool\n");
|
||||
fwrite($fp, " * Generation date " . $this->_time. "\n");
|
||||
fwrite($fp, " */\n");
|
||||
fclose($fp);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ then
|
||||
echo "This push local files to transifex."
|
||||
echo "Note: If you push a language file (not source), file will be skipped if transifex file is newer."
|
||||
echo " Using -f will overwrite translation but not memory."
|
||||
echo "Usage: txpush.sh (source|all|xx_XX) [-r dolibarr.file] [-f] [--skip] [--no-interactive]"
|
||||
echo "Usage: txpush.sh (source|all|xx_XX) [-r dolibarr.file] [-f] [--no-interactive]"
|
||||
exit
|
||||
fi
|
||||
|
||||
@ -22,8 +22,8 @@ if [ "x$1" = "xall" ]
|
||||
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 nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sl_SI sv_SE tr_TR vi_VN zh_CN zh_TW
|
||||
do
|
||||
echo "tx push -t -l $fic $2 $3"
|
||||
tx push -t -l $fic $2 $3
|
||||
echo "tx push --skip -t -l $fic $2 $3"
|
||||
tx push --skip -t -l $fic $2 $3
|
||||
done
|
||||
else
|
||||
if [ "x$1" = "xsource" ]
|
||||
@ -31,7 +31,7 @@ then
|
||||
echo "tx push -s $2 $3"
|
||||
tx push -s $2 $3
|
||||
else
|
||||
echo "tx push -t -l $1 $2 $3 $4"
|
||||
tx push -t -l $1 $2 $3 $4
|
||||
echo "tx push --skip -t -l $1 $2 $3 $4"
|
||||
tx push --skip -t -l $1 $2 $3 $4
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -263,7 +263,7 @@ print '<br>';
|
||||
|
||||
|
||||
/*
|
||||
* Edition des variables globales non rattachées à un theme specifique
|
||||
* Editing global variables not related to a specific theme
|
||||
*/
|
||||
$constantes=array(
|
||||
'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT',
|
||||
@ -295,4 +295,4 @@ dol_fiche_end();
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -321,6 +321,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
$result=$object->update($user,0,$nosyncuser,$nosyncuserpass);
|
||||
if ($result >= 0 && ! count($object->errors))
|
||||
{
|
||||
// Logo/Photo save
|
||||
$dir= $conf->adherent->dir_output . '/' . get_exdir($object->id,2,0,1).'/photos';
|
||||
$file_OK = is_uploaded_file($_FILES['photo']['tmp_name']);
|
||||
if ($file_OK)
|
||||
@ -361,8 +362,21 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
$errmsgs[] = "ErrorBadImageFormat";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch($_FILES['photo']['error'])
|
||||
{
|
||||
case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
|
||||
case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
|
||||
$errors[] = "ErrorFileSizeTooLarge";
|
||||
break;
|
||||
case 3: //uploaded file was only partially uploaded
|
||||
$errors[] = "ErrorFilePartiallyUploaded";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$rowid=$object->id;
|
||||
$rowid=$object->id;
|
||||
$action='';
|
||||
|
||||
if (! empty($backtopage))
|
||||
@ -848,11 +862,11 @@ else
|
||||
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
|
||||
if (! empty($conf->skype->enabled))
|
||||
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>';
|
||||
}
|
||||
|
||||
|
||||
// Birthday
|
||||
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
|
||||
$form->select_date(($object->naiss ? $object->naiss : -1),'naiss','','',1,'formsoc');
|
||||
@ -1093,7 +1107,7 @@ else
|
||||
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>';
|
||||
}
|
||||
|
||||
|
||||
// Birthday
|
||||
print "<tr><td>".$langs->trans("Birthday")."</td><td>\n";
|
||||
$form->select_date(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc');
|
||||
|
||||
@ -561,9 +561,9 @@ if ($action == 'edit' || $action == 'updateedit')
|
||||
print '<td align="right"> </td>';
|
||||
print "</tr>\n";
|
||||
$var=true;
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input type=\"radio\" name=\"optionlocaltax1\" value=\"localtax1on\"".($conf->global->FACTURE_LOCAL_TAX1_OPTION != "localtax1off"?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</label></td>";
|
||||
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input type=\"radio\" name=\"optionlocaltax1\" value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print '<td colspan="2">';
|
||||
print "<table>";
|
||||
print "<tr><td>".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</td></tr>";
|
||||
@ -595,7 +595,8 @@ if ($action == 'edit' || $action == 'updateedit')
|
||||
$var=true;
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input type=\"radio\" name=\"optionlocaltax2\" value=\"localtax2on\"".($conf->global->FACTURE_LOCAL_TAX2_OPTION != "localtax2off"?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</label></td>";
|
||||
// Note: When option is not set, it must not appears as set on on, because there is no default value for this option
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input type=\"radio\" name=\"optionlocaltax2\" value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print '<td colspan="2">';
|
||||
print "<table>";
|
||||
print "<tr><td>".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</td></tr>";
|
||||
@ -941,7 +942,7 @@ else
|
||||
$var=true;
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" disabled value=\"localtax1on\"".($conf->global->FACTURE_LOCAL_TAX1_OPTION != "localtax1off"?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax1\" disabled value=\"localtax1on\"".(($conf->global->FACTURE_LOCAL_TAX1_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX1_OPTION == "localtax1on")?" checked":"")."> ".$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print '<td colspan="2">';
|
||||
print "<table>";
|
||||
print "<tr><td>".$langs->transcountry("LocalTax1IsUsedDesc",$mysoc->country_code)."</td></tr>";
|
||||
@ -974,7 +975,7 @@ else
|
||||
$var=true;
|
||||
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" disabled value=\"localtax2on\"".($conf->global->FACTURE_LOCAL_TAX2_OPTION != "localtax2off"?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print "<tr ".$bc[$var]."><td width=\"140\"><label><input ".$bc[$var]." type=\"radio\" name=\"optionlocaltax2\" disabled value=\"localtax2on\"".(($conf->global->FACTURE_LOCAL_TAX2_OPTION == '1' || $conf->global->FACTURE_LOCAL_TAX2_OPTION == "localtax2on")?" checked":"")."> ".$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code)."</label></td>";
|
||||
print '<td colspan="2">';
|
||||
print "<table>";
|
||||
print "<tr><td>".$langs->transcountry("LocalTax2IsUsedDesc",$mysoc->country_code)."</td></tr>";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.org>
|
||||
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.org>
|
||||
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -40,15 +40,6 @@ $action = GETPOST('action','alpha');
|
||||
* Actions
|
||||
*/
|
||||
|
||||
if ($action == 'setMAILING_EMAIL_UNSUBSCRIBE')
|
||||
{
|
||||
$res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",1,'chaine',0,'',$conf->entity);
|
||||
}
|
||||
if ($action == 'unsetMAILING_EMAIL_UNSUBSCRIBE')
|
||||
{
|
||||
$res=dolibarr_del_const($db, "MAILING_EMAIL_UNSUBSCRIBE");
|
||||
}
|
||||
|
||||
if ($action == 'setvalue')
|
||||
{
|
||||
$db->begin();
|
||||
@ -62,22 +53,8 @@ if ($action == 'setvalue')
|
||||
if (! $res > 0) $error++;
|
||||
$res=dolibarr_set_const($db, "MAILING_EMAIL_ERRORSTO",$mailerror,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
if ($checkread=='on')
|
||||
{
|
||||
$res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",1,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
}
|
||||
else if ($checkread=='off')
|
||||
{
|
||||
$res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",0,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
}
|
||||
|
||||
//Create temporary encryption key if nedded
|
||||
if (($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1) && (empty($checkread_key)))
|
||||
{
|
||||
$checkread_key=getRandomPassword(true);
|
||||
}
|
||||
// Create temporary encryption key if nedded
|
||||
$res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE_KEY",$checkread_key,'chaine',0,'',$conf->entity);
|
||||
if (! $res > 0) $error++;
|
||||
|
||||
@ -157,32 +134,13 @@ print '<input size="32" type="text" name="MAILING_EMAIL_ERRORSTO" value="'.$conf
|
||||
if (!empty($conf->global->MAILING_EMAIL_ERRORSTO) && ! isValidEmail($conf->global->MAILING_EMAIL_ERRORSTO)) print ' '.img_warning($langs->trans("BadEMail"));
|
||||
print '</td></tr>';
|
||||
|
||||
// TODO the precedent values are deleted after turn on this switch
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>';
|
||||
print $langs->trans("ActivateCheckRead").'</td><td>';
|
||||
if (!empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE))
|
||||
{
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetMAILING_EMAIL_UNSUBSCRIBE">';
|
||||
print img_picto($langs->trans("Enabled"),'switch_on');
|
||||
print '</a>';
|
||||
$readonly='';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setMAILING_EMAIL_UNSUBSCRIBE">';
|
||||
print img_picto($langs->trans("Disabled"),'switch_off');
|
||||
print '</a>';
|
||||
$readonly='disabled="disabled"';
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Constant to add salt into the unsubscribe and check read tag.
|
||||
// It is also used as a security key parameter.
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'><td>';
|
||||
print $langs->trans("ActivateCheckReadKey").'</td><td>';
|
||||
print '<input size="32" type="text" name="MAILING_EMAIL_UNSUBSCRIBE_KEY" id="MAILING_EMAIL_UNSUBSCRIBE_KEY" '.$readonly.' value="'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY.'">';
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
||||
print '<input size="32" type="text" name="MAILING_EMAIL_UNSUBSCRIBE_KEY" id="MAILING_EMAIL_UNSUBSCRIBE_KEY" value="'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY.'">';
|
||||
if (! empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
||||
print '</td></tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
|
||||
/* Copyright (C) 2011-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
* 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
|
||||
@ -196,13 +196,14 @@ print '</tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
print '<center>';
|
||||
print '<br><center>';
|
||||
print '<input type="submit" class="button" name="button" value="'.$langs->trans("Modify").'">';
|
||||
print '</center>';
|
||||
|
||||
print '</form><br>';
|
||||
print '</form>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
$db->close();
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
* 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
|
||||
@ -327,7 +327,7 @@ dol_fiche_end();
|
||||
// Form to test upload
|
||||
print '<br>';
|
||||
$formfile=new FormFile($db);
|
||||
$formfile->form_attach_new_file($_SERVER['PHP_SELF'], $langs->trans("FormToTestFileUploadForm"), 0, 0, 1);
|
||||
$formfile->form_attach_new_file($_SERVER['PHP_SELF'], $langs->trans("FormToTestFileUploadForm"), 0, 0, 1, 50, '', '', 1, '', 0);
|
||||
|
||||
// List of document
|
||||
$filearray=dol_dir_list($upload_dir, "files", 0, '', '', 'name', SORT_ASC, 1);
|
||||
|
||||
@ -105,6 +105,11 @@ $url='http://wiki.dolibarr.org/index.php/Subscribe';
|
||||
if (preg_match('/^fr_/i',$langs->getDefaultLang())) $url='http://wiki.dolibarr.org/index.php/Adh%C3%A9rer';
|
||||
if (preg_match('/^es_/i',$langs->getDefaultLang())) $url='http://wiki.dolibarr.org/index.php/Subscribirse';
|
||||
print '<li><a href="'.$url.'" target="_blank">'.$langs->trans("SubscribeToFoundation").'</a></li>';
|
||||
|
||||
print '<li><a href="http://facebook.com/dolibarr" target="_blank">FaceBook</a></li>';
|
||||
print '<li><a href="http://twitter.com/dolibarr" target="_blank">Twitter</a></li>';
|
||||
print '<li><a href="http://plus.google.com/+DolibarrOrg" target="_blank">Google Plus page</a></li>';
|
||||
|
||||
print '</ul>';
|
||||
|
||||
|
||||
|
||||
@ -27,8 +27,7 @@ include_once DOL_DOCUMENT_ROOT.'/boutique/commande/class/boutiquecommande.class.
|
||||
|
||||
|
||||
/**
|
||||
* \class BoutiqueCommande
|
||||
* \brief Classe permettant la gestion des commandes OSC
|
||||
* Class to manage orders OSC
|
||||
*/
|
||||
class BoutiqueCommande
|
||||
{
|
||||
|
||||
@ -118,7 +118,8 @@ if (empty($reshook))
|
||||
}
|
||||
if ($type==1 && $user->rights->societe->creer)
|
||||
{
|
||||
$object = new Societe($db);
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
|
||||
$object = new Fournisseur($db);
|
||||
$result = $object->fetch($objectid);
|
||||
$elementtype = 'fournisseur';
|
||||
}
|
||||
@ -152,7 +153,7 @@ if (empty($reshook))
|
||||
setEventMessage($cat->errors,'errors');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add object into a category
|
||||
if ($parent > 0)
|
||||
{
|
||||
@ -165,7 +166,8 @@ if (empty($reshook))
|
||||
}
|
||||
if ($type==1 && $user->rights->societe->creer)
|
||||
{
|
||||
$object = new Societe($db);
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
|
||||
$object = new Fournisseur($db);
|
||||
$result = $object->fetch($objectid);
|
||||
$elementtype = 'fournisseur';
|
||||
}
|
||||
@ -319,11 +321,11 @@ if ($socid)
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
if ($soc->client) formCategory($db,$soc,2,$socid);
|
||||
if ($soc->client) formCategory($db,$soc,2,$socid,$user->rights->societe->creer);
|
||||
|
||||
if ($soc->client && $soc->fournisseur) print '<br><br>';
|
||||
|
||||
if ($soc->fournisseur) formCategory($db,$soc,1,$socid);
|
||||
if ($soc->fournisseur) formCategory($db,$soc,1,$socid,$user->rights->societe->creer);
|
||||
}
|
||||
else if ($id || $ref)
|
||||
{
|
||||
@ -377,7 +379,7 @@ else if ($id || $ref)
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
formCategory($db,$product,0);
|
||||
formCategory($db,$product,0,($user->rights->produit->creer || $user->rights->service->creer));
|
||||
}
|
||||
|
||||
if ($type == 3)
|
||||
@ -456,7 +458,7 @@ else if ($id || $ref)
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
formCategory($db,$member,3);
|
||||
formCategory($db,$member,3,0,$user->rights->adherent->creer);
|
||||
}
|
||||
if ($type == 4)
|
||||
{
|
||||
@ -602,7 +604,7 @@ else if ($id || $ref)
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
formCategory($db,$object,4);
|
||||
formCategory($db,$object,4,$user->rights->societe->creer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -610,13 +612,14 @@ else if ($id || $ref)
|
||||
/**
|
||||
* Function to output a form to add object into a category
|
||||
*
|
||||
* @param DoliDb $db Database handler
|
||||
* @param Object $object Object we want to see categories it can be classified into
|
||||
* @param int $typeid Type of category (0, 1, 2, 3)
|
||||
* @param int $socid Id thirdparty
|
||||
* @param DoliDb $db Database handler
|
||||
* @param Object $object Object we want to see categories it can be classified into
|
||||
* @param int $typeid Type of category (0, 1, 2, 3)
|
||||
* @param int $socid Id thirdparty
|
||||
* @param string $showclassifyform 1=Add form to 'Classify', 0=Do not show form to 'Classify'
|
||||
* @return int 0
|
||||
*/
|
||||
function formCategory($db,$object,$typeid,$socid=0)
|
||||
function formCategory($db,$object,$typeid,$socid=0,$showclassifyform=1)
|
||||
{
|
||||
global $user,$langs,$form,$bc;
|
||||
|
||||
@ -626,33 +629,37 @@ function formCategory($db,$object,$typeid,$socid=0)
|
||||
if ($typeid == 3) $title = $langs->trans("MembersCategoriesShort");
|
||||
if ($typeid == 4) $title = $langs->trans("ContactCategoriesShort");
|
||||
|
||||
// Form to add record into a category
|
||||
print '<br>';
|
||||
print_fiche_titre($title,'','');
|
||||
print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
|
||||
print '<input type="hidden" name="type" value="'.$typeid.'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre"><td width="40%">';
|
||||
print $langs->trans("ClassifyInCategory").' ';
|
||||
print $form->select_all_categories($typeid,'auto');
|
||||
print '</td><td>';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Classify").'"></td>';
|
||||
if ($user->rights->categorie->creer)
|
||||
|
||||
// Form to add record into a category
|
||||
if ($showclassifyform)
|
||||
{
|
||||
print '<td align="right">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/categories/fiche.php?action=create&origin='.$object->id.'&type='.$typeid.'&urlfrom='.urlencode($_SERVER["PHP_SELF"].'?'.(($typeid==1||$typeid==2)?'socid':'id').'='.$object->id.'&type='.$typeid).'">';
|
||||
print $langs->trans("CreateCat").' ';
|
||||
print img_picto($langs->trans("Create"),'filenew');
|
||||
print "</a>";
|
||||
print '</td>';
|
||||
print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
|
||||
print '<input type="hidden" name="type" value="'.$typeid.'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre"><td width="40%">';
|
||||
print $langs->trans("ClassifyInCategory").' ';
|
||||
print $form->select_all_categories($typeid,'auto');
|
||||
print '</td><td>';
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Classify").'"></td>';
|
||||
if ($user->rights->categorie->creer)
|
||||
{
|
||||
print '<td align="right">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/categories/fiche.php?action=create&origin='.$object->id.'&type='.$typeid.'&urlfrom='.urlencode($_SERVER["PHP_SELF"].'?'.(($typeid==1||$typeid==2)?'socid':'id').'='.$object->id.'&type='.$typeid).'">';
|
||||
print $langs->trans("CreateCat").' ';
|
||||
print img_picto($langs->trans("Create"),'filenew');
|
||||
print "</a>";
|
||||
print '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
print '</table>';
|
||||
print '</form>';
|
||||
print '<br>';
|
||||
}
|
||||
print '</tr>';
|
||||
print '</table>';
|
||||
print '</form>';
|
||||
print '<br/>';
|
||||
|
||||
|
||||
$c = new Categorie($db);
|
||||
|
||||
@ -386,7 +386,7 @@ class Categorie
|
||||
* Link an object to the category
|
||||
*
|
||||
* @param Object $obj Object to link to category
|
||||
* @param string $type Type of category (member, supplier, product, customer, contact)
|
||||
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
|
||||
* @return int 1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked
|
||||
*/
|
||||
function add_type($obj,$type)
|
||||
@ -397,11 +397,14 @@ class Categorie
|
||||
|
||||
if ($this->id == -1) return -2;
|
||||
|
||||
if ($type == 'company') $type='societe';
|
||||
if ($type == 'fournisseur') $type='societe';
|
||||
// For backward compatibility
|
||||
if ($type == 'company') $type='societe';
|
||||
if ($type == 'customer') $type='societe';
|
||||
if ($type == 'supplier') $type='fournisseur';
|
||||
|
||||
$column_name=$type;
|
||||
if ($type=='contact') $column_name='socpeople';
|
||||
if ($type=='fournisseur') $column_name='societe';
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")";
|
||||
$sql .= " VALUES (".$this->id.", ".$obj->id.")";
|
||||
@ -479,7 +482,7 @@ class Categorie
|
||||
* Delete object from category
|
||||
*
|
||||
* @param Object $obj Object
|
||||
* @param string $type Type
|
||||
* @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact')
|
||||
* @return int 1 if OK, -1 if KO
|
||||
*/
|
||||
function del_type($obj,$type)
|
||||
@ -488,12 +491,15 @@ class Categorie
|
||||
|
||||
$error=0;
|
||||
|
||||
if ($type == 'company') $type='societe';
|
||||
if ($type == 'fournisseur') $type='societe';
|
||||
// For backward compatibility
|
||||
if ($type == 'company') $type='societe';
|
||||
if ($type == 'customer') $type='societe';
|
||||
if ($type == 'supplier') $type='fournisseur';
|
||||
|
||||
$column_name=$type;
|
||||
if ($type=='contact') $column_name='socpeople';
|
||||
|
||||
if ($type=='fournisseur') $column_name='societe';
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type;
|
||||
$sql .= " WHERE fk_categorie = ".$this->id;
|
||||
$sql .= " AND fk_".$column_name." = ".$obj->id;
|
||||
|
||||
@ -887,7 +887,7 @@ class ActionComm extends CommonObject
|
||||
$sql.= " AND a.entity = ".$conf->entity;
|
||||
foreach ($filters as $key => $value)
|
||||
{
|
||||
if ($key == 'notolderthan') $sql.=" AND a.datep >= '".$this->db->idate($now-($value*24*60*60))."'";
|
||||
if ($key == 'notolderthan' && $value != '') $sql.=" AND a.datep >= '".$this->db->idate($now-($value*24*60*60))."'";
|
||||
if ($key == 'year') $sql.=" AND a.datep BETWEEN '".$this->db->idate(dol_get_first_day($value,1))."' AND '".$this->db->idate(dol_get_last_day($value,12))."'";
|
||||
if ($key == 'id') $sql.=" AND a.id=".(is_numeric($value)?$value:0);
|
||||
if ($key == 'idfrom') $sql.=" AND a.id >= ".(is_numeric($value)?$value:0);
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
/* 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) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -198,11 +198,11 @@ if ($id > 0)
|
||||
|
||||
print '<div class="fichecenter"><div class="fichehalfleft">';
|
||||
|
||||
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
print '<tr><td width="30%">'.$langs->trans("ThirdPartyName").'</td><td width="70%" colspan="3">';
|
||||
$object->next_prev_filter="te.client in (1,3)";
|
||||
$object->next_prev_filter="te.client in (1,2,3)";
|
||||
print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom','','');
|
||||
print '</td></tr>';
|
||||
|
||||
@ -272,7 +272,7 @@ if ($id > 0)
|
||||
{
|
||||
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
|
||||
print '<tr>';
|
||||
print '<td class="nowrap">'.$langs->trans('VATIsUsed').'</td><td colspan="3">';
|
||||
@ -389,7 +389,7 @@ if ($id > 0)
|
||||
print '<td>';
|
||||
print $form->editfieldkey("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer);
|
||||
print '</td><td colspan="3">';
|
||||
print $form->editfieldval("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer);
|
||||
print $form->editfieldval("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer,'amount',($object->outstanding_limit != '' ? price($object->outstanding_limit) : ''));
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* 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
|
||||
@ -52,6 +53,8 @@ $search_zipcode=GETPOST("search_zipcode");
|
||||
$search_town=GETPOST("search_town");
|
||||
$search_code=GETPOST("search_code");
|
||||
$search_compta=GETPOST("search_compta");
|
||||
$search_status = GETPOST("search_status",'int');
|
||||
if ($search_status=='') $search_status=1; // always display activ customer first
|
||||
|
||||
// Load sale and categ filters
|
||||
$search_sale = GETPOST("search_sale");
|
||||
@ -83,6 +86,7 @@ if (GETPOST("button_removefilter_x"))
|
||||
$search_idprof2='';
|
||||
$search_idprof3='';
|
||||
$search_idprof4='';
|
||||
$seach_status=1;
|
||||
}
|
||||
|
||||
|
||||
@ -92,6 +96,7 @@ if (GETPOST("button_removefilter_x"))
|
||||
*/
|
||||
|
||||
$formother=new FormOther($db);
|
||||
$form = new Form($db);
|
||||
$thirdpartystatic=new Societe($db);
|
||||
|
||||
$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
|
||||
@ -125,6 +130,8 @@ if ($search_town) {
|
||||
}
|
||||
if ($search_code) $sql.= " AND s.code_client LIKE '%".$db->escape($search_code)."%'";
|
||||
if ($search_compta) $sql.= " AND s.code_compta LIKE '%".$db->escape($search_compta)."%'";
|
||||
|
||||
if ($search_status!='') $sql .= " AND s.status = ".$db->escape($search_status);
|
||||
// Insert sale filter
|
||||
if ($search_sale)
|
||||
{
|
||||
@ -152,6 +159,7 @@ if ($result)
|
||||
$param = "&search_nom=".$search_nom."&search_code=".$search_code."&search_zipcode=".$search_zipcode."&search_town=".$search_town;
|
||||
if ($search_categ != '') $param.='&search_categ='.$search_categ;
|
||||
if ($search_sale != '') $param.='&search_sale='.$search_sale;
|
||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||
|
||||
print_barre_liste($langs->trans("ListOfCustomers"), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
|
||||
|
||||
@ -190,7 +198,7 @@ if ($result)
|
||||
print_liste_field_titre($langs->trans("AccountancyCode"),$_SERVER["PHP_SELF"],"s.code_compta","",$param,'align="left"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"datec","",$param,'align="right"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder);
|
||||
|
||||
print '<td class="liste_titre" width="1%"> </td>';
|
||||
$parameters=array();
|
||||
$formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
||||
|
||||
@ -218,7 +226,13 @@ if ($result)
|
||||
print '<input type="text" class="flat" name="search_compta" value="'.$search_compta.'" size="10">';
|
||||
print '</td>';
|
||||
|
||||
print '</td><td> </td>';
|
||||
print '<td class="liste_titre" align="center">';
|
||||
print ' ';
|
||||
print '</td>';
|
||||
|
||||
print '<td class="liste_titre" align="center">';
|
||||
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
||||
print '</td>';
|
||||
|
||||
print '<td class="liste_titre" align="right"><input class="liste_titre" type="image" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
print ' ';
|
||||
@ -243,6 +257,7 @@ if ($result)
|
||||
$thirdpartystatic->id=$obj->rowid;
|
||||
$thirdpartystatic->name=$obj->name;
|
||||
$thirdpartystatic->client=$obj->client;
|
||||
$thirdpartystatic->code_client=$obj->code_client;
|
||||
$thirdpartystatic->canvas=$obj->canvas;
|
||||
$thirdpartystatic->status=$obj->status;
|
||||
print $thirdpartystatic->getNomUrl(1);
|
||||
@ -252,9 +267,10 @@ if ($result)
|
||||
print '<td>'.$obj->code_client.'</td>';
|
||||
print '<td>'.$obj->code_compta.'</td>';
|
||||
print '<td align="right">'.dol_print_date($db->jdate($obj->datec),'day').'</td>';
|
||||
print '<td align="right">'.$thirdpartystatic->getLibStatut(3);
|
||||
print '<td align="center">'.$thirdpartystatic->getLibStatut(3);
|
||||
print '</td>';
|
||||
|
||||
print '<td></td>';
|
||||
|
||||
$parameters=array('obj' => $obj);
|
||||
$formconfirm=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
||||
|
||||
|
||||
@ -67,13 +67,10 @@ $object->substitutionarray=array(
|
||||
'__OTHER4__' => 'Other4',
|
||||
'__OTHER5__' => 'Other5',
|
||||
'__SIGNATURE__' => 'TagSignature',
|
||||
'__CHECK_READ__' => 'TagCheckMail'
|
||||
'__CHECK_READ__' => 'TagCheckMail',
|
||||
'__UNSUBSCRIBE__' => 'TagUnsubscribe'
|
||||
//,'__PERSONALIZED__' => 'Personalized' // Hidden because not used yet
|
||||
);
|
||||
if (! empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE))
|
||||
{
|
||||
$object->substitutionarray=array_merge($object->substitutionarray, array('__UNSUBSCRIBE__' => 'TagUnsubscribe'));
|
||||
}
|
||||
|
||||
$object->substitutionarrayfortest=array(
|
||||
'__ID__' => 'TESTIdRecord',
|
||||
@ -86,19 +83,12 @@ $object->substitutionarrayfortest=array(
|
||||
'__OTHER3__' => 'TESTOther3',
|
||||
'__OTHER4__' => 'TESTOther4',
|
||||
'__OTHER5__' => 'TESTOther5',
|
||||
'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$user->signature:'')
|
||||
//,'__PERSONALIZED__' => 'TESTPersonalized' // Not used yet
|
||||
'__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$user->signature:''),
|
||||
'__CHECK_READ__' => 'TagCheckMail',
|
||||
'__UNSUBSCRIBE__' => 'TagUnsubscribe'
|
||||
//,'__PERSONALIZED__' => 'TESTPersonalized' // Not used yet
|
||||
);
|
||||
if (!empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE))
|
||||
{
|
||||
$object->substitutionarrayfortest=array_merge(
|
||||
$object->substitutionarrayfortest,
|
||||
array(
|
||||
'__CHECK_READ__' => 'TESTCheckMail',
|
||||
'__UNSUBSCRIBE__' => 'TESTUnsubscribe'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@ -221,8 +211,8 @@ if ($action == 'sendallconfirmed' && $confirm == 'yes')
|
||||
$substitutionarray=array(
|
||||
'__ID__' => $obj->source_id,
|
||||
'__EMAIL__' => $obj->email,
|
||||
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj->tag.'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
|
||||
'__UNSUBSCRIBE__' => '<a href="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-unsubscribe.php?tag='.$obj->tag.'&unsuscrib=1" target="_blank">'.$langs->trans("MailUnsubcribe").'</a>',
|
||||
'__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag='.$obj->tag.'&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" width="1" height="1" style="width:1px;height:1px" border="0"/>',
|
||||
'__UNSUBSCRIBE__' => '<a href="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-unsubscribe.php?tag='.$obj->tag.'&unsuscrib=1&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'" target="_blank">'.$langs->trans("MailUnsubcribe").'</a>',
|
||||
'__MAILTOEMAIL__' => '<a href="mailto:'.$obj->email.'">'.$obj->email.'</a>',
|
||||
'__LASTNAME__' => $obj->lastname,
|
||||
'__FIRSTNAME__' => $obj->firstname,
|
||||
|
||||
@ -634,13 +634,33 @@ else if ($action == "setabsolutediscount" && $user->rights->propal->creer)
|
||||
}
|
||||
|
||||
// Add line
|
||||
else if ($action == "addline" && $user->rights->propal->creer)
|
||||
else if (($action == 'addline' || $action == 'addline_predef') && $user->rights->propal->creer)
|
||||
{
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):(GETPOST('dp_desc')?GETPOST('dp_desc'):'')));
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx = (GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
$predef=((! empty($idprod) && $conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
{
|
||||
$predef='';
|
||||
$idprod=0;
|
||||
$product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):'');
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
{
|
||||
$predef=(($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):''));
|
||||
$price_ht = '';
|
||||
$tva_tx = '';
|
||||
}
|
||||
if (GETPOST('usenewaddlineform')) {
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):(GETPOST('dp_desc')?GETPOST('dp_desc'):'')));
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
$qty = GETPOST('qty'.$predef);
|
||||
$remise_percent=GETPOST('remise_percent'.$predef);
|
||||
|
||||
//Extrafields
|
||||
$extrafieldsline = new ExtraFields($db);
|
||||
@ -673,7 +693,7 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (! $error && (GETPOST('qty') >= 0) && (! empty($product_desc) || ! empty($idprod)))
|
||||
if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod)))
|
||||
{
|
||||
$pu_ht=0;
|
||||
$pu_ttc=0;
|
||||
@ -791,8 +811,8 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
}
|
||||
|
||||
// Margin
|
||||
$fournprice=(GETPOST('fournprice')?GETPOST('fournprice'):'');
|
||||
$buyingprice=(GETPOST('buying_price')?GETPOST('buying_price'):'');
|
||||
$fournprice=(GETPOST('fournprice'.$predef)?GETPOST('fournprice'.$predef):'');
|
||||
$buyingprice=(GETPOST('buying_price'.$predef)?GETPOST('buying_price'.$predef):'');
|
||||
|
||||
$date_start=dol_mktime(0, 0, 0, GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||
$date_end=dol_mktime(0, 0, 0, GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||
@ -804,7 +824,7 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
$info_bits=0;
|
||||
if ($tva_npr) $info_bits |= 0x01;
|
||||
|
||||
if (! empty($price_min) && (price2num($pu_ht)*(1-price2num(GETPOST('remise_percent'))/100) < price2num($price_min)))
|
||||
if (! empty($price_min) && (price2num($pu_ht)*(1-price2num($remise_percent)/100) < price2num($price_min)))
|
||||
{
|
||||
$mesg = $langs->trans("CantBeLessThanMinPrice",price(price2num($price_min,'MU'),0,$langs,0,0,-1,$conf->currency));
|
||||
setEventMessage($mesg, 'errors');
|
||||
@ -815,12 +835,12 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
$result=$object->addline(
|
||||
$desc,
|
||||
$pu_ht,
|
||||
GETPOST('qty'),
|
||||
$qty,
|
||||
$tva_tx,
|
||||
$localtax1_tx,
|
||||
$localtax2_tx,
|
||||
$idprod,
|
||||
GETPOST('remise_percent'),
|
||||
$remise_percent,
|
||||
$price_base_type,
|
||||
$pu_ttc,
|
||||
$info_bits,
|
||||
@ -854,7 +874,6 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['remise_percent']);
|
||||
unset($_POST['price_ht']);
|
||||
unset($_POST['price_ttc']);
|
||||
@ -866,10 +885,16 @@ else if ($action == "addline" && $user->rights->propal->creer)
|
||||
unset($_POST['buying_price']);
|
||||
unset($_POST['np_marginRate']);
|
||||
unset($_POST['np_markRate']);
|
||||
|
||||
// old method
|
||||
unset($_POST['np_desc']);
|
||||
unset($_POST['dp_desc']);
|
||||
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['qty_predef']);
|
||||
unset($_POST['remise_percent_predef']);
|
||||
unset($_POST['fournprice_predef']);
|
||||
unset($_POST['buying_price_predef']);
|
||||
unset($_POST['np_marginRate_predef']);
|
||||
unset($_POST['np_markRate_predef']);
|
||||
unset($_POST['np_desc']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1162,7 +1187,7 @@ else if ($action == 'update_extras')
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if($ret < 0) $error++;
|
||||
|
||||
if (! $error)
|
||||
if (! $error)
|
||||
{
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
@ -1179,7 +1204,7 @@ else if ($action == 'update_extras')
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
@ -1924,11 +1949,11 @@ else
|
||||
print '<input type="hidden" name="attribute" value="'.$key.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
|
||||
print $extrafields->showInputField($key,$value);
|
||||
|
||||
|
||||
print '<input type="submit" class="button" value="'.$langs->trans('Modify').'">';
|
||||
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
else
|
||||
@ -2003,15 +2028,25 @@ else
|
||||
* Lines
|
||||
*/
|
||||
|
||||
// Show object lines
|
||||
$result = $object->getLinesArray();
|
||||
|
||||
|
||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
|
||||
<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
|
||||
<input type="hidden" name="action" value="'.(($action != 'editline')?'addline':'updateligne').'">
|
||||
<input type="hidden" name="mode" value="">
|
||||
<input type="hidden" name="id" value="'.$object->id.'">
|
||||
';
|
||||
|
||||
|
||||
if (! empty($conf->use_javascript_ajax) && $object->statut == 0)
|
||||
{
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
|
||||
}
|
||||
|
||||
print '<table id="tablelines" class="noborder" width="100%">';
|
||||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
||||
|
||||
// Show object lines
|
||||
$result = $object->getLinesArray();
|
||||
if (! empty($object->lines))
|
||||
$ret=$object->printObjectLines($action,$mysoc,$soc,$lineid,1);
|
||||
|
||||
@ -2047,8 +2082,9 @@ else
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '</div>';
|
||||
print "\n";
|
||||
print "</form>\n";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
if ($action == 'statut')
|
||||
{
|
||||
|
||||
@ -355,9 +355,9 @@ class Propal extends CommonObject
|
||||
// qty, pu, remise_percent et txtva
|
||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||
|
||||
|
||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc);
|
||||
|
||||
|
||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, '', $localtaxes_type);
|
||||
$total_ht = $tabprice[0];
|
||||
$total_tva = $tabprice[1];
|
||||
@ -510,9 +510,9 @@ class Propal extends CommonObject
|
||||
// qty, pu, remise_percent et txtva
|
||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||
|
||||
|
||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc);
|
||||
|
||||
|
||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type,'', $localtaxes_type);
|
||||
$total_ht = $tabprice[0];
|
||||
$total_tva = $tabprice[1];
|
||||
@ -551,7 +551,7 @@ class Propal extends CommonObject
|
||||
$this->line->localtax1_tx = $txlocaltax1;
|
||||
$this->line->localtax2_tx = $txlocaltax2;
|
||||
$this->line->localtax1_type = $localtaxes_type[0];
|
||||
$this->line->localtax2_type = $localtaxes_type[2];
|
||||
$this->line->localtax2_type = $localtaxes_type[2];
|
||||
$this->line->remise_percent = $remise_percent;
|
||||
$this->line->subprice = $pu;
|
||||
$this->line->info_bits = $info_bits;
|
||||
@ -1318,7 +1318,7 @@ class Propal extends CommonObject
|
||||
}
|
||||
// Fin appel triggers
|
||||
}
|
||||
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
// Rename directory if dir was a temporary ref
|
||||
@ -1333,17 +1333,17 @@ class Propal extends CommonObject
|
||||
if (file_exists($dirsource))
|
||||
{
|
||||
dol_syslog(get_class($this)."::validate rename dir ".$dirsource." into ".$dirdest);
|
||||
|
||||
|
||||
if (@rename($dirsource, $dirdest))
|
||||
{
|
||||
|
||||
|
||||
dol_syslog("Rename ok");
|
||||
// Deleting old PDF in new rep
|
||||
dol_delete_file($conf->propal->dir_output.'/'.$snumfa.'/'.$facref.'*.*');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->brouillon=0;
|
||||
$this->statut = 1;
|
||||
$this->user_valid_id=$user->id;
|
||||
@ -1710,7 +1710,7 @@ class Propal extends CommonObject
|
||||
{
|
||||
if ($statut == 2)
|
||||
{
|
||||
// Classe la société rattachée comme client
|
||||
// The connected company is classified as a client
|
||||
$soc=new Societe($this->db);
|
||||
$soc->id = $this->socid;
|
||||
$result=$soc->set_as_client();
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* \file htdocs/comm/propal/document.php
|
||||
* \ingroup propale
|
||||
* \brief Page de gestion des documents attaches a une proposition commerciale
|
||||
* \brief Management page of documents attached to a business proposal
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
|
||||
@ -47,6 +47,8 @@ $search_town = GETPOST("search_town");
|
||||
$search_state = GETPOST("search_state");
|
||||
$search_datec = GETPOST("search_datec");
|
||||
$search_categ = GETPOST("search_categ",'int');
|
||||
$search_status = GETPOST("search_status",'int');
|
||||
if ($search_status=='') $search_status=1; // always display activ customer first
|
||||
$catid = GETPOST("catid",'int');
|
||||
|
||||
$sortfield = GETPOST("sortfield",'alpha');
|
||||
@ -173,8 +175,9 @@ if ($action == 'cstc')
|
||||
*/
|
||||
|
||||
$formother=new FormOther($db);
|
||||
$form=new Form($db);
|
||||
|
||||
$sql = "SELECT s.rowid, s.nom, s.zip, s.town, s.datec, s.datea, s.status as status,";
|
||||
$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.= " d.nom as departement";
|
||||
// Updated by Matelli
|
||||
@ -205,6 +208,7 @@ if ($search_state) {
|
||||
$sql .= natural_search('d.nom', $search_state);
|
||||
}
|
||||
if ($search_datec) $sql .= " AND s.datec LIKE '%".$db->escape($search_datec)."%'";
|
||||
if ($search_status!='') $sql .= " AND s.status = ".$db->escape($search_status);
|
||||
// Insert levels filters
|
||||
if ($search_levels)
|
||||
{
|
||||
@ -231,7 +235,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||
|
||||
$sql.= " ORDER BY $sortfield $sortorder, s.nom ASC";
|
||||
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
||||
|
||||
dol_syslog('comm/prospect/list.php sql='.$sql,LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -265,6 +269,7 @@ if ($resql)
|
||||
if ($search_level_to != '') $param.='&search_level_to='.$search_level_to;
|
||||
if ($search_categ != '') $param.='&search_categ='.$search_categ;
|
||||
if ($search_sale != '') $param.='&search_sale='.$search_sale;
|
||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||
// $param and $urladd should have the same value
|
||||
$urladd = $param;
|
||||
|
||||
@ -306,7 +311,8 @@ if ($resql)
|
||||
print_liste_field_titre($langs->trans("ProspectLevelShort"),$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("StatusProsp"),$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder);
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="center"',$sortfield,$sortorder);
|
||||
print '<td class="liste_titre"> </td>';
|
||||
|
||||
$parameters=array();
|
||||
$formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
|
||||
@ -368,6 +374,10 @@ if ($resql)
|
||||
print ' ';
|
||||
print '</td>';
|
||||
|
||||
print '<td class="liste_titre" align="center">';
|
||||
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
||||
print '</td>';
|
||||
|
||||
// Print the search button
|
||||
print '<td class="liste_titre" align="right">';
|
||||
print '<input class="liste_titre" name="button_search" type="image" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
@ -395,6 +405,8 @@ if ($resql)
|
||||
$prospectstatic->id=$obj->rowid;
|
||||
$prospectstatic->nom=$obj->nom;
|
||||
$prospectstatic->status=$obj->status;
|
||||
$prospectstatic->code_client=$obj->code_client;
|
||||
$prospectstatic->client=$obj->client;
|
||||
$prospectstatic->fk_prospectlevel=$obj->fk_prospectlevel;
|
||||
print $prospectstatic->getNomUrl(1,'prospect');
|
||||
print '</td>';
|
||||
@ -425,9 +437,10 @@ if ($resql)
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print '<td align="right">';
|
||||
print '<td align="center">';
|
||||
print $prospectstatic->LibStatut($prospectstatic->status,3);
|
||||
print '</td>';
|
||||
print '<td></td>';
|
||||
|
||||
$parameters=array('obj' => $obj);
|
||||
$formconfirm=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
|
||||
|
||||
@ -269,7 +269,7 @@ class Commande extends CommonOrder
|
||||
if (preg_match('/^[\(]?PROV/i', $this->ref))
|
||||
{
|
||||
// On renomme repertoire ($this->ref = ancienne ref, $numfa = nouvelle ref)
|
||||
// afin de ne pas perdre les fichiers attaches
|
||||
// in order not to lose the attachments
|
||||
$comref = dol_sanitizeFileName($this->ref);
|
||||
$snum = dol_sanitizeFileName($num);
|
||||
$dirsource = $conf->commande->dir_output.'/'.$comref;
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* \file htdocs/commande/document.php
|
||||
* \ingroup order
|
||||
* \brief Documents setup page attached to an order
|
||||
* \brief Management page of documents attached to an order
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
|
||||
@ -323,7 +323,7 @@ else if ($action == 'add' && $user->rights->commande->creer)
|
||||
$lines[$i]->fetch_optionals($lines[$i]->rowid);
|
||||
$array_option=$lines[$i]->array_options;
|
||||
}
|
||||
|
||||
|
||||
$result = $object->addline(
|
||||
$desc,
|
||||
$lines[$i]->subprice,
|
||||
@ -564,18 +564,37 @@ else if ($action == 'setnote_private' && $user->rights->commande->creer)
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
/*
|
||||
* Ajout d'une ligne produit dans la commande
|
||||
*/
|
||||
// Add a new line
|
||||
else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
{
|
||||
$langs->load('errors');
|
||||
$error = false;
|
||||
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):(GETPOST('dp_desc')?GETPOST('dp_desc'):'')));
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx = (GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
{
|
||||
$predef='';
|
||||
$idprod=0;
|
||||
$product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):'');
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
{
|
||||
$predef=(($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):''));
|
||||
$price_ht = '';
|
||||
$tva_tx = '';
|
||||
}
|
||||
if (GETPOST('usenewaddlineform')) {
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):(GETPOST('dp_desc')?GETPOST('dp_desc'):'')));
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
$qty = GETPOST('qty'.$predef);
|
||||
$remise_percent=GETPOST('remise_percent'.$predef);
|
||||
|
||||
//Extrafields
|
||||
$extrafieldsline = new ExtraFields($db);
|
||||
@ -591,7 +610,7 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
}
|
||||
}
|
||||
|
||||
if ((empty($idprod) || GETPOST('usenewaddlineform')) && ($price_ht < 0) && (GETPOST('qty') < 0))
|
||||
if ((empty($idprod) || GETPOST('usenewaddlineform')) && ($price_ht < 0) && ($qty < 0))
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), 'errors');
|
||||
$error = true;
|
||||
@ -606,7 +625,7 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("UnitPriceHT")), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (! GETPOST('qty') && GETPOST('qty') == '')
|
||||
if ($qty == '')
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors');
|
||||
$error = true;
|
||||
@ -617,10 +636,9 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if (! $error && (GETPOST('qty') >= 0) && (! empty($product_desc) || ! empty($idprod)))
|
||||
if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod)))
|
||||
{
|
||||
// Clean parameters
|
||||
$predef=((! empty($idprod) && $conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$date_start=dol_mktime(0, 0, 0, GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||
$date_end=dol_mktime(0, 0, 0, GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||
$price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT');
|
||||
@ -737,8 +755,8 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
}
|
||||
|
||||
// Margin
|
||||
$fournprice=(GETPOST('fournprice')?GETPOST('fournprice'):'');
|
||||
$buyingprice=(GETPOST('buying_price')?GETPOST('buying_price'):'');
|
||||
$fournprice=(GETPOST('fournprice'.$predef)?GETPOST('fournprice'.$predef):'');
|
||||
$buyingprice=(GETPOST('buying_price'.$predef)?GETPOST('buying_price'.$predef):'');
|
||||
|
||||
// Local Taxes
|
||||
$localtax1_tx= get_localtax($tva_tx, 1, $object->client);
|
||||
@ -749,7 +767,7 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
$info_bits=0;
|
||||
if ($tva_npr) $info_bits |= 0x01;
|
||||
|
||||
if (! empty($price_min) && (price2num($pu_ht)*(1-price2num(GETPOST('remise_percent'))/100) < price2num($price_min)))
|
||||
if (! empty($price_min) && (price2num($pu_ht)*(1-price2num($remise_percent)/100) < price2num($price_min)))
|
||||
{
|
||||
$mesg = $langs->trans("CantBeLessThanMinPrice",price(price2num($price_min,'MU'),0,$langs,0,0,-1,$conf->currency));
|
||||
setEventMessage($mesg, 'errors');
|
||||
@ -760,12 +778,12 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
$result = $object->addline(
|
||||
$desc,
|
||||
$pu_ht,
|
||||
GETPOST('qty'),
|
||||
$qty,
|
||||
$tva_tx,
|
||||
$localtax1_tx,
|
||||
$localtax2_tx,
|
||||
$idprod,
|
||||
GETPOST('remise_percent'),
|
||||
$remise_percent,
|
||||
$info_bits,
|
||||
0,
|
||||
$price_base_type,
|
||||
@ -803,7 +821,6 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['remise_percent']);
|
||||
unset($_POST['price_ht']);
|
||||
unset($_POST['price_ttc']);
|
||||
@ -815,10 +832,16 @@ else if ($action == 'addline' && $user->rights->commande->creer)
|
||||
unset($_POST['buying_price']);
|
||||
unset($_POST['np_marginRate']);
|
||||
unset($_POST['np_markRate']);
|
||||
|
||||
// old method
|
||||
unset($_POST['np_desc']);
|
||||
unset($_POST['dp_desc']);
|
||||
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['qty_predef']);
|
||||
unset($_POST['remise_percent_predef']);
|
||||
unset($_POST['fournprice_predef']);
|
||||
unset($_POST['buying_price_predef']);
|
||||
unset($_POST['np_marginRate_predef']);
|
||||
unset($_POST['np_markRate_predef']);
|
||||
unset($_POST['np_desc']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1182,7 +1205,7 @@ else if ($action == 'update_extras')
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||
if($ret < 0) $error++;
|
||||
|
||||
if (! $error)
|
||||
if (! $error)
|
||||
{
|
||||
// Actions on extra fields (by external module or standard code)
|
||||
// FIXME le hook fait double emploi avec le trigger !!
|
||||
@ -1199,7 +1222,7 @@ else if ($action == 'update_extras')
|
||||
}
|
||||
else if ($reshook < 0) $error++;
|
||||
}
|
||||
|
||||
|
||||
if ($error) $action = 'edit_extras';
|
||||
}
|
||||
|
||||
@ -1449,7 +1472,7 @@ if (! $error && ! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->righ
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
*/
|
||||
|
||||
llxHeader('',$langs->trans('Order'),'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes');
|
||||
|
||||
@ -1460,9 +1483,9 @@ $formorder = new FormOrder($db);
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* Mode creation
|
||||
*
|
||||
*********************************************************************/
|
||||
* Mode creation
|
||||
*
|
||||
*********************************************************************/
|
||||
if ($action == 'create' && $user->rights->commande->creer)
|
||||
{
|
||||
print_fiche_titre($langs->trans('CreateOrder'));
|
||||
@ -1506,7 +1529,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
||||
$objectsrc->fetch($originid);
|
||||
if (empty($objectsrc->lines) && method_exists($objectsrc,'fetch_lines')) $objectsrc->fetch_lines();
|
||||
$objectsrc->fetch_thirdparty();
|
||||
|
||||
|
||||
//Replicate extrafields
|
||||
$objectsrc->fetch_optionals($originid);
|
||||
$object->array_options=$objectsrc->array_options;
|
||||
@ -2311,25 +2334,34 @@ else
|
||||
|
||||
/*
|
||||
* Lines
|
||||
*/
|
||||
*/
|
||||
$result = $object->getLinesArray();
|
||||
|
||||
$numlines = count($object->lines);
|
||||
|
||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
|
||||
<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
|
||||
<input type="hidden" name="action" value="'.(($action != 'editline')?'addline':'updateligne').'">
|
||||
<input type="hidden" name="mode" value="">
|
||||
<input type="hidden" name="id" value="'.$object->id.'">
|
||||
';
|
||||
|
||||
|
||||
if (! empty($conf->use_javascript_ajax) && $object->statut == 0)
|
||||
{
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
|
||||
}
|
||||
|
||||
print '<table id="tablelines" class="noborder" width="100%">';
|
||||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
||||
|
||||
// Show object lines
|
||||
if (! empty($object->lines))
|
||||
$ret=$object->printObjectLines($action,$mysoc,$soc,$lineid,1);
|
||||
|
||||
$numlines = count($object->lines);
|
||||
|
||||
/*
|
||||
* Form to add new line
|
||||
*/
|
||||
*/
|
||||
if ($object->statut == 0 && $user->rights->commande->creer)
|
||||
{
|
||||
if ($action != 'editline')
|
||||
@ -2359,7 +2391,10 @@ else
|
||||
}
|
||||
}
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
|
||||
print "</form>\n";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@ -65,28 +65,26 @@ llxHeader('',$langs->trans("TaxAndDividendsArea"));
|
||||
$title=$langs->trans("TaxAndDividendsArea");
|
||||
if ($_GET["mode"] == 'sconly') $title=$langs->trans("SocialContributionsPayments");
|
||||
|
||||
print_fiche_titre($title,($year?"<a href='index.php?year=".($year-1)."'>".img_previous()."</a> ".$langs->trans("Year")." $year <a href='index.php?year=".($year+1)."'>".img_next()."</a>":""));
|
||||
$param='';
|
||||
if (GETPOST("mode") == 'sconly') $param='&mode=sconly';
|
||||
if ($sortfield) $param.='&sortfield='.$sortfield;
|
||||
if ($sortorder) $param.='&sortorder='.$sortorder;
|
||||
|
||||
if ($_GET["mode"] != 'sconly')
|
||||
print_fiche_titre($title, ($year?"<a href='index.php?year=".($year-1).$param."'>".img_previous()."</a> ".$langs->trans("Year")." $year <a href='index.php?year=".($year+1).$param."'>".img_next()."</a>":""));
|
||||
|
||||
if ($year) $param.='&year='.$year;
|
||||
|
||||
// Social contributions only
|
||||
if (GETPOST("mode") != 'sconly')
|
||||
{
|
||||
print $langs->trans("DescTaxAndDividendsArea").'<br>';
|
||||
print "<br>";
|
||||
}
|
||||
|
||||
|
||||
// Social contributions
|
||||
if ($_GET["mode"] != 'sconly')
|
||||
{
|
||||
print_titre($langs->trans("SocialContributionsPayments"));
|
||||
}
|
||||
|
||||
if ($_GET["mode"] == 'sconly')
|
||||
{
|
||||
$param='&mode=sconly';
|
||||
print_fiche_titre($langs->trans("SocialContributionsPayments").($year?' ('.$langs->trans("Year").' '.$year.')':''), '', '');
|
||||
}
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
print "<tr class=\"liste_titre\">";
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"cs.date_ech","",$param,'width="120"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"c.libelle","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"cs.fk_type","",$param,'',$sortfield,$sortorder);
|
||||
@ -110,10 +108,10 @@ if ($year > 0)
|
||||
// Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance,
|
||||
// ceci afin d'etre compatible avec les cas ou la periode n'etait pas obligatoire
|
||||
$sql .= " (cs.periode IS NOT NULL AND cs.periode between '".$db->idate(dol_get_first_day($year))."' AND '".$db->idate(dol_get_last_day($year))."')";
|
||||
$sql .= "OR (cs.periode IS NULL AND cs.date_ech between '".$db->idate(dol_get_first_day($year))."' AND '".$db->idate(dol_get_last_day($year))."')";
|
||||
$sql .= " OR (cs.periode IS NULL AND cs.date_ech between '".$db->idate(dol_get_first_day($year))."' AND '".$db->idate(dol_get_last_day($year))."')";
|
||||
$sql .= ")";
|
||||
}
|
||||
$sql.= $db->order($sortfield,$sortorder);
|
||||
if (! preg_match('/^pv/',$sortfield)) $sql.= $db->order($sortfield,$sortorder);
|
||||
//$sql.= $db->plimit($limit+1,$offset);
|
||||
//print $sql;
|
||||
|
||||
@ -184,18 +182,18 @@ if (empty($_GET["mode"]) || $_GET["mode"] != 'sconly')
|
||||
|
||||
$tva = new Tva($db);
|
||||
|
||||
print_titre($langs->trans("VATPayments"));
|
||||
print_fiche_titre($langs->trans("VATPayments").($year?' ('.$langs->trans("Year").' '.$year.')':''), '', '');
|
||||
|
||||
$sql = "SELECT f.rowid, f.amount, f.label, f.datev as dm";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."tva as f ";
|
||||
$sql.= " WHERE f.entity = ".$conf->entity;
|
||||
$sql = "SELECT pv.rowid, pv.amount, pv.label, pv.datev as dm";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."tva as pv";
|
||||
$sql.= " WHERE pv.entity = ".$conf->entity;
|
||||
if ($year > 0)
|
||||
{
|
||||
// Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance,
|
||||
// ceci afin d'etre compatible avec les cas ou la periode n'etait pas obligatoire
|
||||
$sql.= " AND f.datev between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
|
||||
$sql.= " AND pv.datev between '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
|
||||
}
|
||||
$sql.= " ORDER BY dm DESC";
|
||||
if (preg_match('/^pv/',$sortfield)) $sql.= $db->order($sortfield,$sortorder);
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
@ -205,12 +203,12 @@ if (empty($_GET["mode"]) || $_GET["mode"] != 'sconly')
|
||||
$total = 0 ;
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td width="120" class="nowrap">'.$langs->trans("PeriodEndDate").'</td>';
|
||||
print "<td>".$langs->trans("Label")."</td>";
|
||||
print '<td align="right" width="10%">'.$langs->trans("ExpectedToPay")."</td>";
|
||||
print '<td align="right" width="10%">'.$langs->trans("RefPayment")."</td>";
|
||||
print '<td align="center" width="15%">'.$langs->trans("DatePayment")."</td>";
|
||||
print '<td align="right" width="10%">'.$langs->trans("PayedByThisPayment")."</td>";
|
||||
print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"pv.datev","",$param,'width="120"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"pv.label","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("ExpectedToPay"),$_SERVER["PHP_SELF"],"pv.amount","",$param,'align="right"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("RefPayment"),$_SERVER["PHP_SELF"],"pv.rowid","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"pv.datev","",$param,'align="center"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"pv.amount","",$param,'align="right"',$sortfield,$sortorder);
|
||||
print "</tr>\n";
|
||||
$var=1;
|
||||
while ($i < $num)
|
||||
@ -227,12 +225,13 @@ if (empty($_GET["mode"]) || $_GET["mode"] != 'sconly')
|
||||
|
||||
print '<td align="right">'.price($obj->amount)."</td>";
|
||||
|
||||
// Ref payment
|
||||
$tva_static->id=$obj->rowid;
|
||||
$tva_static->ref=$obj->rowid;
|
||||
print '<td align="right">'.$tva_static->getNomUrl(1)."</td>\n";
|
||||
print '<td align="left">'.$tva_static->getNomUrl(1)."</td>\n";
|
||||
|
||||
print '<td align="center">'.dol_print_date($db->jdate($obj->dm),'day')."</td>\n";
|
||||
print "<td align=\"right\">".price($obj->amount)."</td>";
|
||||
print '<td align="right">'.price($obj->amount)."</td>";
|
||||
print "</tr>\n";
|
||||
|
||||
$i++;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -79,7 +79,7 @@ if ($result)
|
||||
print '<table class="liste" width="100%">';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre($langs->trans("WithdrawalReceipt"),"bons.php","p.ref",'','','class="liste_titre"');
|
||||
print_liste_field_titre($langs->trans("WithdrawalReceipts"),"bons.php","p.ref",'','','class="liste_titre"');
|
||||
print_liste_field_titre($langs->trans("Date"),"bons.php","p.datec","","",'class="liste_titre" align="center"');
|
||||
print '<td class="liste_titre" align="right">'.$langs->trans("Amount").'</td>';
|
||||
print '</tr>';
|
||||
|
||||
@ -47,7 +47,7 @@ $page = GETPOST('page','int');
|
||||
$sortorder = ((GETPOST('sortorder','alpha')=="")) ? "DESC" : GETPOST('sortorder','alpha');
|
||||
$sortfield = ((GETPOST('sortfield','alpha')=="")) ? "p.ref" : GETPOST('sortfield','alpha');
|
||||
|
||||
llxHeader('',$langs->trans("WithdrawalReceipt"));
|
||||
llxHeader('',$langs->trans("WithdrawalReceipts"));
|
||||
|
||||
if ($prev_id)
|
||||
{
|
||||
@ -56,7 +56,7 @@ if ($prev_id)
|
||||
if ($bon->fetch($prev_id) == 0)
|
||||
{
|
||||
$head = prelevement_prepare_head($bon);
|
||||
dol_fiche_head($head, 'invoices', $langs->trans("WithdrawalReceipt"), '', 'payment');
|
||||
dol_fiche_head($head, 'invoices', $langs->trans("WithdrawalReceipts"), '', 'payment');
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ $page = GETPOST('page','int');
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
llxHeader('',$langs->trans("WithdrawalReceipt"));
|
||||
llxHeader('',$langs->trans("WithdrawalReceipts"));
|
||||
|
||||
if ($prev_id)
|
||||
{
|
||||
@ -55,7 +55,7 @@ if ($prev_id)
|
||||
if ($bon->fetch($prev_id) == 0)
|
||||
{
|
||||
$head = prelevement_prepare_head($bon);
|
||||
dol_fiche_head($head, 'rejects', $langs->trans("WithdrawalReceipt"), '', 'payment');
|
||||
dol_fiche_head($head, 'rejects', $langs->trans("WithdrawalReceipts"), '', 'payment');
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ $page = GETPOST('page','int');
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader('',$langs->trans("WithdrawalReceipt"));
|
||||
llxHeader('',$langs->trans("WithdrawalReceipts"));
|
||||
|
||||
if ($prev_id)
|
||||
{
|
||||
@ -53,7 +53,7 @@ if ($prev_id)
|
||||
if ($bon->fetch($prev_id) == 0)
|
||||
{
|
||||
$head = prelevement_prepare_head($bon);
|
||||
dol_fiche_head($head, 'statistics', $langs->trans("WithdrawalReceipt"), '', 'payment');
|
||||
dol_fiche_head($head, 'statistics', $langs->trans("WithdrawalReceipts"), '', 'payment');
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
|
||||
@ -133,7 +133,7 @@ if ($action == 'infocredit' && $user->rights->prelevement->bons->credit)
|
||||
$bon = new BonPrelevement($db,"");
|
||||
$form = new Form($db);
|
||||
|
||||
llxHeader('',$langs->trans("WithdrawalReceipt"));
|
||||
llxHeader('',$langs->trans("WithdrawalReceipts"));
|
||||
|
||||
|
||||
if ($id > 0)
|
||||
@ -141,7 +141,7 @@ if ($id > 0)
|
||||
$bon->fetch($id);
|
||||
|
||||
$head = prelevement_prepare_head($bon);
|
||||
dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipt"), '', 'payment');
|
||||
dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipts"), '', 'payment');
|
||||
|
||||
if (GETPOST('error','alpha')!='')
|
||||
{
|
||||
|
||||
@ -130,7 +130,7 @@ if ($id)
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
print '<tr><td width="20%">'.$langs->trans("WithdrawalReceipt").'</td><td>';
|
||||
print '<tr><td width="20%">'.$langs->trans("WithdrawalReceipts").'</td><td>';
|
||||
print '<a href="fiche.php?id='.$lipre->bon_rowid.'">'.$lipre->bon_ref.'</a></td></tr>';
|
||||
print '<tr><td width="20%">'.$langs->trans("Date").'</td><td>'.dol_print_date($bon->datec,'day').'</td></tr>';
|
||||
print '<tr><td width="20%">'.$langs->trans("Amount").'</td><td>'.price($lipre->amount).'</td></tr>';
|
||||
|
||||
@ -54,7 +54,7 @@ $sortfield = ((GETPOST('sortfield','alpha')=="")) ? "pl.fk_soc" : GETPOST('sortf
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader('',$langs->trans("WithdrawalReceipt"));
|
||||
llxHeader('',$langs->trans("WithdrawalReceipts"));
|
||||
|
||||
if ($prev_id)
|
||||
{
|
||||
@ -63,7 +63,7 @@ if ($prev_id)
|
||||
if ($bon->fetch($prev_id) == 0)
|
||||
{
|
||||
$head = prelevement_prepare_head($bon);
|
||||
dol_fiche_head($head, 'lines', $langs->trans("WithdrawalReceipt"), '', 'payment');
|
||||
dol_fiche_head($head, 'lines', $langs->trans("WithdrawalReceipts"), '', 'payment');
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
|
||||
@ -111,7 +111,7 @@ if ($result)
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td class="liste_titre">'.$langs->trans("Line").'</td>';
|
||||
print_liste_field_titre($langs->trans("WithdrawalReceipt"),$_SERVER["PHP_SELF"],"p.ref");
|
||||
print_liste_field_titre($langs->trans("WithdrawalReceipts"),$_SERVER["PHP_SELF"],"p.ref");
|
||||
print_liste_field_titre($langs->trans("Bill"),$_SERVER["PHP_SELF"],"f.facnumber",'',$urladd);
|
||||
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom");
|
||||
print_liste_field_titre($langs->trans("CustomerCode"),$_SERVER["PHP_SELF"],"s.code_client",'','','align="center"');
|
||||
|
||||
@ -40,6 +40,7 @@ class Contact extends CommonObject
|
||||
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
|
||||
|
||||
var $id;
|
||||
var $ref_ext;
|
||||
var $civilite_id; // In fact we store civility_code
|
||||
var $lastname;
|
||||
var $firstname;
|
||||
@ -64,9 +65,13 @@ class Contact extends CommonObject
|
||||
var $code;
|
||||
var $email;
|
||||
var $skype;
|
||||
var $jabberid;
|
||||
var $phone_pro;
|
||||
var $phone_perso;
|
||||
var $phone_mobile;
|
||||
var $fax;
|
||||
|
||||
var $priv;
|
||||
|
||||
var $birthday;
|
||||
var $default_lang;
|
||||
@ -119,6 +124,7 @@ class Contact extends CommonObject
|
||||
if (! empty($conf->global->MAIN_FIRST_TO_UPPER)) $this->firstname=ucwords($this->firstname);
|
||||
if (! $this->socid) $this->socid = 0;
|
||||
if (! $this->priv) $this->priv = 0;
|
||||
if (empty($this->statut)) $this->statut = 0;
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."socpeople (";
|
||||
$sql.= " datec";
|
||||
|
||||
@ -52,7 +52,8 @@ $search_email=GETPOST("search_email");
|
||||
$search_skype=GETPOST("search_skype");
|
||||
$search_priv=GETPOST("search_priv");
|
||||
$search_categ = GETPOST("search_categ",'int');
|
||||
$search_statut=GETPOST("search_statut");
|
||||
$search_status = GETPOST("search_status",'int');
|
||||
if ($search_status=='') $search_status=1; // always display activ customer first
|
||||
|
||||
|
||||
$type=GETPOST("type");
|
||||
@ -104,6 +105,7 @@ if (GETPOST('button_removefilter'))
|
||||
$search_skype="";
|
||||
$search_priv="";
|
||||
$sall="";
|
||||
$seach_status=1;
|
||||
}
|
||||
if ($search_priv < 0) $search_priv='';
|
||||
|
||||
@ -192,6 +194,7 @@ if (strlen($search_skype)) // filtre sur skype
|
||||
{
|
||||
$sql .= " AND p.skype LIKE '%".$db->escape($search_skype)."%'";
|
||||
}
|
||||
if ($search_status!='') $sql .= " AND p.statut = ".$db->escape($search_status);
|
||||
if ($type == "o") // filtre sur type
|
||||
{
|
||||
$sql .= " AND p.fk_soc IS NULL";
|
||||
@ -245,6 +248,7 @@ if ($result)
|
||||
$param ='&begin='.urlencode($begin).'&view='.urlencode($view).'&userid='.urlencode($userid).'&contactname='.urlencode($sall);
|
||||
$param.='&type='.urlencode($type).'&view='.urlencode($view).'&search_lastname='.urlencode($search_lastname).'&search_firstname='.urlencode($search_firstname).'&search_societe='.urlencode($search_societe).'&search_email='.urlencode($search_email);
|
||||
if (!empty($search_categ)) $param.='&search_categ='.$search_categ;
|
||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||
if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=".urlencode($search_priv);
|
||||
|
||||
$num = $db->num_rows($result);
|
||||
@ -335,7 +339,9 @@ if ($result)
|
||||
$selectarray=array('0'=>$langs->trans("ContactPublic"),'1'=>$langs->trans("ContactPrivate"));
|
||||
print $form->selectarray('search_priv',$selectarray,$search_priv,1);
|
||||
print '</td>';
|
||||
print '<td class="liste_titre"> </td>';
|
||||
print '<td class="liste_titre" align="center">';
|
||||
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
||||
print '</td>';
|
||||
print '<td class="liste_titre" align="right">';
|
||||
print '<input type="image" value="button_search" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
print ' ';
|
||||
|
||||
@ -999,6 +999,9 @@ class Contrat extends CommonObject
|
||||
$pu=$pu_ttc;
|
||||
}
|
||||
|
||||
// Check parameters
|
||||
if (empty($remise_percent)) $remise_percent=0;
|
||||
|
||||
// Calcul du total TTC et de la TVA pour la ligne a partir de
|
||||
// qty, pu, remise_percent et txtva
|
||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||
|
||||
@ -158,9 +158,9 @@ if (GETPOST('remonth') && GETPOST('reday') && GETPOST('reyear'))
|
||||
$datecontrat = dol_mktime(GETPOST('rehour'), GETPOST('remin'), 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear'));
|
||||
}
|
||||
|
||||
// Add contract
|
||||
if ($action == 'add' && $user->rights->contrat->creer)
|
||||
{
|
||||
|
||||
// Check
|
||||
if (empty($datecontrat))
|
||||
{
|
||||
@ -339,9 +339,36 @@ else if ($action == 'classin' && $user->rights->contrat->creer)
|
||||
$object->setProject(GETPOST('projectid'));
|
||||
}
|
||||
|
||||
// Add a new line
|
||||
else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
{
|
||||
if (! GETPOST('qty'))
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
{
|
||||
$predef='';
|
||||
$idprod=0;
|
||||
$product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):'');
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
{
|
||||
$predef=(($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):''));
|
||||
$price_ht = '';
|
||||
$tva_tx = '';
|
||||
}
|
||||
if (GETPOST('usenewaddlineform')) {
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):(GETPOST('dp_desc')?GETPOST('dp_desc'):'')));
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
$qty = GETPOST('qty'.$predef);
|
||||
$remise_percent=GETPOST('remise_percent'.$predef);
|
||||
|
||||
if ($qty == '')
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Qty")),'errors');
|
||||
$error++;
|
||||
@ -362,41 +389,19 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
}
|
||||
$ret=$object->fetch_thirdparty();
|
||||
|
||||
$date_start='';
|
||||
$date_end='';
|
||||
// Si ajout champ produit libre
|
||||
if (GETPOST('mode') == 'libre')
|
||||
{
|
||||
if (GETPOST('date_start_slmonth') && GETPOST('date_start_slday') && GETPOST('date_start_slyear'))
|
||||
{
|
||||
$date_start=dol_mktime(GETPOST('date_start_slhour'), GETPOST('date_start_slmin'), 0, GETPOST('date_start_slmonth'), GETPOST('date_start_slday'), GETPOST('date_start_slyear'));
|
||||
}
|
||||
if (GETPOST('date_end_slmonth') && GETPOST('date_end_slday') && GETPOST('date_end_slyear'))
|
||||
{
|
||||
$date_end=dol_mktime(GETPOST('date_end_slhour'), GETPOST('date_end_slmin'), 0, GETPOST('date_end_slmonth'), GETPOST('date_end_slday'), GETPOST('date_end_slyear'));
|
||||
}
|
||||
}
|
||||
// Si ajout champ produit predefini
|
||||
if (GETPOST('mode') == 'predefined')
|
||||
{
|
||||
if (GETPOST('date_startmonth') && GETPOST('date_startday') && GETPOST('date_startyear'))
|
||||
{
|
||||
$date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear'));
|
||||
}
|
||||
if (GETPOST('date_endmonth') && GETPOST('date_endday') && GETPOST('date_endyear'))
|
||||
{
|
||||
$date_end=dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear'));
|
||||
}
|
||||
}
|
||||
// Clean parameters
|
||||
$date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||
$date_end=dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||
$price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT');
|
||||
|
||||
// Ecrase $pu par celui du produit
|
||||
// Ecrase $desc par celui du produit
|
||||
// Ecrase $txtva par celui du produit
|
||||
// Ecrase $base_price_type par celui du produit
|
||||
if (GETPOST('idprod'))
|
||||
if ($idprod > 0)
|
||||
{
|
||||
$prod = new Product($db);
|
||||
$prod->fetch(GETPOST('idprod'));
|
||||
$prod->fetch($idprod);
|
||||
|
||||
$tva_tx = get_default_tva($mysoc,$object->thirdparty,$prod->id);
|
||||
$tva_npr = get_default_npr($mysoc,$object->thirdparty,$prod->id);
|
||||
@ -426,22 +431,21 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
$pu_ht = price2num($pu_ttc / (1 + ($tva_tx/100)), 'MU');
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$pu_ttc = price2num($pu_ht * (1 + ($tva_tx/100)), 'MU');
|
||||
}
|
||||
}
|
||||
|
||||
$desc = $prod->description;
|
||||
$desc.= $prod->description && GETPOST('np_desc') ? "\n" : "";
|
||||
$desc.= GETPOST('np_desc');
|
||||
$desc=$prod->description;
|
||||
$desc=dol_concatdesc($desc,$product_desc);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$pu_ht=GETPOST('price_ht');
|
||||
$price_base_type = 'HT';
|
||||
$tva_tx=GETPOST('tva_tx')?str_replace('*','',GETPOST('tva_tx')):0; // tva_tx field may be disabled, so we use vat rate 0
|
||||
$tva_npr=preg_match('/\*/',GETPOST('tva_tx'))?1:0;
|
||||
$desc=GETPOST('dp_desc');
|
||||
$desc=$product_desc;
|
||||
}
|
||||
|
||||
$localtax1_tx=get_localtax($tva_tx,1,$object->societe);
|
||||
@ -457,23 +461,23 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
$info_bits=0;
|
||||
if ($tva_npr) $info_bits |= 0x01;
|
||||
|
||||
if($price_min && (price2num($pu_ht)*(1-price2num(GETPOST('remise_percent'))/100) < price2num($price_min)))
|
||||
if($price_min && (price2num($pu_ht)*(1-price2num($remise_percent)/100) < price2num($price_min)))
|
||||
{
|
||||
$object->error = $langs->trans("CantBeLessThanMinPrice",price(price2num($price_min,'MU'),0,$langs,0,0,-1,$conf->currency));
|
||||
$result = -1 ;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
// Insert line
|
||||
$result = $object->addline(
|
||||
$desc,
|
||||
$pu_ht,
|
||||
GETPOST('qty'),
|
||||
$qty,
|
||||
$tva_tx,
|
||||
$localtax1_tx,
|
||||
$localtax2_tx,
|
||||
GETPOST('idprod'),
|
||||
GETPOST('remise_percent'),
|
||||
$idprod,
|
||||
$remise_percent,
|
||||
$date_start,
|
||||
$date_end,
|
||||
$price_base_type,
|
||||
@ -506,7 +510,6 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['remise_percent']);
|
||||
unset($_POST['price_ht']);
|
||||
unset($_POST['price_ttc']);
|
||||
@ -516,6 +519,16 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
|
||||
unset($_POST['product_desc']);
|
||||
unset($_POST['fournprice']);
|
||||
unset($_POST['buying_price']);
|
||||
unset($_POST['dp_desc']);
|
||||
|
||||
unset($_POST['idprod']);
|
||||
unset($_POST['qty_predef']);
|
||||
unset($_POST['remise_percent_predef']);
|
||||
unset($_POST['fournprice_predef']);
|
||||
unset($_POST['buying_price_predef']);
|
||||
unset($_POST['np_marginRate_predef']);
|
||||
unset($_POST['np_markRate_predef']);
|
||||
unset($_POST['np_desc']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -948,7 +961,7 @@ else
|
||||
if ($action == 'delete')
|
||||
{
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("DeleteAContract"),$langs->trans("ConfirmDeleteAContract"),"confirm_delete",'',0,1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -969,7 +982,7 @@ else
|
||||
$text=$langs->trans('ConfirmValidateContract',$numref);
|
||||
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("ValidateAContract"),$text,"confirm_valid",'',0,1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -978,7 +991,7 @@ else
|
||||
if ($action == 'close')
|
||||
{
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("CloseAContract"),$langs->trans("ConfirmCloseContract"),"confirm_close",'',0,1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1306,6 +1319,7 @@ else
|
||||
}
|
||||
|
||||
print "</table>";
|
||||
|
||||
print "</form>\n";
|
||||
|
||||
|
||||
@ -1472,6 +1486,7 @@ else
|
||||
* Desactiver la ligne de contrat
|
||||
*/
|
||||
print '<form name="closeline" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&ligne='.$object->lines[$cursorline-1]->id.'&action=closeline" method="post">';
|
||||
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
@ -1525,13 +1540,22 @@ else
|
||||
}
|
||||
//print '</table>';
|
||||
|
||||
|
||||
// Form to add new line
|
||||
if ($user->rights->contrat->creer && ($object->statut >= 0))
|
||||
{
|
||||
$dateSelector=1;
|
||||
|
||||
print '<br>';
|
||||
print '<table id="tablelines" class="noborder" width="100%">'; // Array with (n*2)+1 lines
|
||||
print "\n";
|
||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
|
||||
<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
|
||||
<input type="hidden" name="action" value="'.(($action != 'editline')?'addline':'updateligne').'">
|
||||
<input type="hidden" name="mode" value="">
|
||||
<input type="hidden" name="id" value="'.$object->id.'">
|
||||
';
|
||||
|
||||
print '<br>';
|
||||
print '<table id="tablelines" class="noborder noshadow" width="100%">'; // Array with (n*2)+1 lines
|
||||
|
||||
// Trick to not show product entries
|
||||
$savproductenabled=$conf->product->enabled;
|
||||
@ -1567,13 +1591,12 @@ else
|
||||
// Restore correct setup
|
||||
$conf->product->enabled = $savproductenabled;
|
||||
|
||||
print '</form>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
|
||||
|
||||
print '</div>';
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
/*
|
||||
@ -1642,11 +1665,13 @@ llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
|
||||
<?php
|
||||
if ($conf->margin->enabled) {
|
||||
if ($conf->margin->enabled && $action == 'editline')
|
||||
{
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
<?php if ($action == 'editline') { ?>
|
||||
$(document).ready(function() {
|
||||
var idprod = $("input[name='idprod']").val();
|
||||
var fournprice = $("input[name='fournprice']").val();
|
||||
@ -1695,6 +1720,8 @@ $(document).ready(function() {
|
||||
$('#buying_price').show();
|
||||
}
|
||||
});
|
||||
<?php } ?>
|
||||
</script>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
@ -207,6 +207,7 @@ if (file_exists($fullpathselecteddir))
|
||||
// Enable jquery handlers on new generated HTML objects
|
||||
print '<script type="text/javascript">';
|
||||
print 'jQuery(".classfortooltip").tipTip({ maxWidth: "600px", edgeOffset: 10, delay: 50, fadeIn: 50, fadeOut: 50});';
|
||||
// TODO Remove this. Is replaced with function as 3rd parameter of fileTree
|
||||
print 'jQuery(".fmdirlia").click(function(e) {
|
||||
id=jQuery(this).attr(\'id\').substr(12);
|
||||
jQuery("#formuserfile_section_dir").val(jQuery(this).attr(\'rel\'));
|
||||
@ -221,7 +222,7 @@ if (file_exists($fullpathselecteddir))
|
||||
else print "PermissionDenied";
|
||||
}
|
||||
|
||||
// This ajax service is called only when a directory $selecteddir is opened but not closed.
|
||||
// This ajax service is called only when a directory $selecteddir is opened but not when closed.
|
||||
//print '<script language="javascript">';
|
||||
//print "loadandshowpreview('".dol_escape_js($selecteddir)."');";
|
||||
//print '</script>';
|
||||
|
||||
@ -935,6 +935,10 @@ class ExtraFields
|
||||
|
||||
$sql = 'SELECT '.$keyList;
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
|
||||
if (strpos($InfoFieldList[4], 'extra')!==false)
|
||||
{
|
||||
$sql.= ' as main';
|
||||
}
|
||||
$sql.= ' WHERE '.$selectkey.'=\''.$this->db->escape($value).'\'';
|
||||
//$sql.= ' AND entity = '.$conf->entity;
|
||||
dol_syslog(get_class($this).':showOutputField:$type=sellist sql='.$sql);
|
||||
|
||||
@ -121,8 +121,8 @@ class Form
|
||||
* @param string $value Value to show/edit
|
||||
* @param object $object Object
|
||||
* @param boolean $perm Permission to allow button to edit parameter
|
||||
* @param string $typeofdata Type of data ('string' by default, 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select:xxx'...)
|
||||
* @param string $editvalue When in edit mode, use this value as $value instead of value
|
||||
* @param string $typeofdata Type of data ('string' by default, 'amount', 'email', 'numeric:99', 'text' or 'textarea:rows:cols', 'day' or 'datepicker', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select:xxx'...)
|
||||
* @param string $editvalue When in edit mode, use this value as $value instead of value (for example, you can provide here a formated price instead of value)
|
||||
* @param object $extObject External object
|
||||
* @param string $success Success message
|
||||
* @param string $moreparam More param to add on a href URL
|
||||
@ -134,6 +134,9 @@ class Form
|
||||
|
||||
$ret='';
|
||||
|
||||
// Check parameters
|
||||
if (empty($typeofdata)) return 'ErrorBadParameter';
|
||||
|
||||
// When option to edit inline is activated
|
||||
if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE) && ! preg_match('/^select;|datehourpicker/',$typeofdata)) // FIXME add jquery timepicker
|
||||
{
|
||||
@ -150,7 +153,7 @@ class Form
|
||||
$ret.='<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
$ret.='<table class="nobordernopadding" cellpadding="0" cellspacing="0">';
|
||||
$ret.='<tr><td>';
|
||||
if (preg_match('/^(string|email|numeric)/',$typeofdata))
|
||||
if (preg_match('/^(string|email|numeric|amount)/',$typeofdata))
|
||||
{
|
||||
$tmp=explode(':',$typeofdata);
|
||||
$ret.='<input type="text" id="'.$htmlname.'" name="'.$htmlname.'" value="'.($editvalue?$editvalue:$value).'"'.($tmp[1]?' size="'.$tmp[1].'"':'').'>';
|
||||
@ -191,8 +194,9 @@ class Form
|
||||
$ret.='</form>'."\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if ($typeofdata == 'email') $ret.=dol_print_email($value,0,0,0,0,1);
|
||||
elseif ($typeofdata == 'amount') $ret.=($value != '' ? price($value,'',$langs) : '');
|
||||
elseif (preg_match('/^text/',$typeofdata) || preg_match('/^note/',$typeofdata)) $ret.=dol_htmlentitiesbr($value);
|
||||
elseif ($typeofdata == 'day' || $typeofdata == 'datepicker') $ret.=dol_print_date($value,'day');
|
||||
elseif ($typeofdata == 'datehourpicker') $ret.=dol_print_date($value,'dayhour');
|
||||
|
||||
@ -64,9 +64,10 @@ class FormFile
|
||||
* @param boolean $useajax Use fileupload ajax (0=never, 1=if enabled, 2=always whatever is option). 2 should never be used.
|
||||
* @param string $savingdocmask Mask to use to define output filename. For example 'XXXXX-__YYYYMMDD__-__file__'
|
||||
* @param string $linkfiles 1=Also add form to link files, 0=Do not show form to link files
|
||||
* @param string $htmlname Name and id of HTML form
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function form_attach_new_file($url, $title='', $addcancel=0, $sectionid=0, $perm=1, $size=50, $object='', $options='', $useajax=1, $savingdocmask='', $linkfiles=1)
|
||||
function form_attach_new_file($url, $title='', $addcancel=0, $sectionid=0, $perm=1, $size=50, $object='', $options='', $useajax=1, $savingdocmask='', $linkfiles=1, $htmlname='formuserfile')
|
||||
{
|
||||
global $conf,$langs, $hookmanager;
|
||||
$hookmanager->initHooks(array('formfile'));
|
||||
@ -90,9 +91,9 @@ class FormFile
|
||||
if (empty($title)) $title=$langs->trans("AttachANewFile");
|
||||
if ($title != 'none') print_titre($title);
|
||||
|
||||
$out .= '<form name="formuserfile" action="'.$url.'" enctype="multipart/form-data" method="POST">';
|
||||
$out .= '<input type="hidden" id="formuserfile_section_dir" name="section_dir" value="">';
|
||||
$out .= '<input type="hidden" id="formuserfile_section_id" name="section_id" value="'.$sectionid.'">';
|
||||
$out .= '<form name="'.$htmlname.'" id="'.$htmlname.'" action="'.$url.'" enctype="multipart/form-data" method="POST">';
|
||||
$out .= '<input type="hidden" id="'.$htmlname.'_section_dir" name="section_dir" value="">';
|
||||
$out .= '<input type="hidden" id="'.$htmlname.'_section_id" name="section_id" value="'.$sectionid.'">';
|
||||
$out .= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
$out .= '<table width="100%" class="nobordernopadding">';
|
||||
@ -165,16 +166,16 @@ class FormFile
|
||||
$langs->load('link');
|
||||
$title = $langs->trans("LinkANewFile");
|
||||
$out .= load_fiche_titre($title, null, null);
|
||||
$out .= '<form name="formuserfile" action="'.$url.'" method="POST">';
|
||||
$out .= '<input type="hidden" id="formuserfile_section_dir" name="section_dir" value="">';
|
||||
$out .= '<input type="hidden" id="formuserfile_section_id" name="section_id" value="'.$sectionid.'">';
|
||||
$out .= '<form name="'.$htmlname.'_link" id="'.$htmlname.'_link" action="'.$url.'" method="POST">';
|
||||
$out .= '<input type="hidden" id="'.$htmlname.'_link_section_dir" name="link_section_dir" value="">';
|
||||
$out .= '<input type="hidden" id="'.$htmlname.'_link_section_id" name="link_section_id" value="'.$sectionid.'">';
|
||||
$out .= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
$out .= '<table width="100%" class="nobordernopadding">';
|
||||
$out .= '<tr>';
|
||||
$out .= '<td valign="middle" class="nowrap">';
|
||||
$out .= $langs->trans("Link") . ': ';
|
||||
$out .= '<input type="text" name="link" id="link">';
|
||||
$out .= '<input type="text" name="link" size="'.$maxlength.'" id="link">';
|
||||
$out .= ' ' . $langs->trans("Label") . ': ';
|
||||
$out .= '<input type="text" name="label" id="label">';
|
||||
$out .= '<input type="hidden" name="objecttype" value="' . $object->element . '">';
|
||||
@ -770,14 +771,14 @@ class FormFile
|
||||
print '<a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart='.$modulepart;
|
||||
if ($forcedownload) print '&attachment=1';
|
||||
if (! empty($object->entity)) print '&entity='.$object->entity;
|
||||
print '&file='.urlencode($relativepath.$file['name']);
|
||||
/* Restore old code: When file is at level 2+, full relative path must be in url, not only level1
|
||||
$filepath=$relativepath.$file['name'];
|
||||
/* Restore old code: When file is at level 2+, full relative path (and not only level1) must be into url
|
||||
if ($file['level1name'] <> $object->id)
|
||||
$filepath=urlencode($object->id.'/'.$file['level1name'].'/'.$file['name']);
|
||||
$filepath=$object->id.'/'.$file['level1name'].'/'.$file['name'];
|
||||
else
|
||||
$filepath=urlencode($object->id.'/'.$file['name']);
|
||||
print '&file='.$filepath;
|
||||
*/
|
||||
$filepath=$object->id.'/'.$file['name'];
|
||||
*/
|
||||
print '&file='.urlencode($filepath);
|
||||
print '">';
|
||||
|
||||
print img_mime($file['name'],$file['name'].' ('.dol_print_size($file['size'],0,0).')').' ';
|
||||
@ -800,14 +801,16 @@ class FormFile
|
||||
// Delete or view link
|
||||
// ($param must start with &)
|
||||
print '<td align="right">';
|
||||
if ($useinecm) print '<a href="'.DOL_URL_ROOT.'/ecm/docfile.php?urlfile='.urlencode($file['name']).$param.'" class="editfilelink" rel="'.urlencode($file['name']).$param.'">'.img_view().'</a> ';
|
||||
if ($useinecm) print '<a href="'.DOL_URL_ROOT.'/ecm/docfile.php?urlfile='.urlencode($file['name']).$param.'" class="editfilelink" rel="'.urlencode($file['name']).'">'.img_view().'</a> ';
|
||||
if ($permtodelete)
|
||||
{
|
||||
/*
|
||||
if ($file['level1name'] <> $object->id)
|
||||
$filepath=urlencode($file['level1name'].'/'.$file['name']);
|
||||
$filepath=$file['level1name'].'/'.$file['name'];
|
||||
else
|
||||
$filepath=urlencode($file['name']);
|
||||
print '<a href="'.(($useinecm && ! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))?'#':$url.'?action=delete&urlfile='.$filepath.$param).'" class="deletefilelink" rel="'.$filepath.$param.'">'.img_delete().'</a>';
|
||||
$filepath=$file['name'];
|
||||
*/
|
||||
print '<a href="'.(($useinecm && ! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS))?'#':$url.'?action=delete&urlfile='.urlencode($filepath).$param).'" class="deletefilelink" rel="'.$filepath.'">'.img_delete().'</a>';
|
||||
}
|
||||
else print ' ';
|
||||
print "</td>";
|
||||
@ -831,7 +834,7 @@ class FormFile
|
||||
/**
|
||||
* Show list of documents in a directory
|
||||
*
|
||||
* @param string $upload_dir Directory that was scanned
|
||||
* @param string $upload_dir Directory that was scanned
|
||||
* @param array $filearray Array of files loaded by dol_dir_list function before calling this function
|
||||
* @param string $modulepart Value for modulepart used by download wrapper
|
||||
* @param string $param Parameters on sort links
|
||||
@ -841,7 +844,7 @@ class FormFile
|
||||
* @param int $useinecm Change output for use in ecm module
|
||||
* @param int $textifempty Text to show if filearray is empty
|
||||
* @param int $maxlength Maximum length of file name shown
|
||||
* @param string $url Full url to use for click links ('' = autodetect)
|
||||
* @param string $url Full url to use for click links ('' = autodetect)
|
||||
* @return int <0 if KO, nb of files shown if OK
|
||||
*/
|
||||
function list_of_autoecmfiles($upload_dir,$filearray,$modulepart,$param,$forcedownload=0,$relativepath='',$permtodelete=1,$useinecm=0,$textifempty='',$maxlength=0,$url='')
|
||||
@ -1048,7 +1051,7 @@ class FormFile
|
||||
global $bc;
|
||||
global $sortfield, $sortorder;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT . '/link/class/link.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
|
||||
$link = new Link($this->db);
|
||||
$links = array();
|
||||
if ($sortfield == "name") {
|
||||
@ -1063,6 +1066,9 @@ class FormFile
|
||||
|
||||
// Show list of associated links
|
||||
print_titre($langs->trans("LinkedFiles"));
|
||||
|
||||
print '<form action="' . $_SERVER['PHP_SELF'] . '" method="POST">';
|
||||
|
||||
print '<table width="100%" class="liste">';
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre(
|
||||
@ -1076,7 +1082,7 @@ class FormFile
|
||||
$sortorder
|
||||
);
|
||||
print_liste_field_titre(
|
||||
$langs->trans("Size"),
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
@ -1104,30 +1110,30 @@ class FormFile
|
||||
print_liste_field_titre('','','');
|
||||
print '</tr>';
|
||||
$nboflinks = count($links);
|
||||
if ($nboflinks > 0) {
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
|
||||
}
|
||||
if ($nboflinks > 0) include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
|
||||
|
||||
$var = true;
|
||||
foreach ($links as $link) {
|
||||
foreach ($links as $link)
|
||||
{
|
||||
$var =! $var;
|
||||
print '<tr ' . $bc[$var] . '>';
|
||||
//edit mode
|
||||
if ($action == 'update' && $selected === $link->id) {
|
||||
print '<form action="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '" method="post">';
|
||||
if ($action == 'update' && $selected === $link->id)
|
||||
{
|
||||
print '<td>';
|
||||
print '<input type="hidden" name="id" value="' . $object->id . '">';
|
||||
print '<input type="hidden" name="linkid" value="' . $link->id . '">';
|
||||
print '<input type="hidden" name="action" value="confirm_updateline">';
|
||||
print '<td>';
|
||||
print $langs->trans('Link') . ': <input type="text" name="link" value = "' . $link->url . '">';
|
||||
print $langs->trans('Link') . ': <input type="text" name="link" size="50" value="' . $link->url . '">';
|
||||
print '</td>';
|
||||
print '<td align="right">';
|
||||
print $langs->trans('Label') . ': <input type="text" name="label" value = "' . $link->label . '">';
|
||||
print $langs->trans('Label') . ': <input type="text" name="label" value="' . $link->label . '">';
|
||||
print '</td>';
|
||||
print '<td align="center">' . dol_print_date(dol_now(), "dayhour", "tzuser") . '</td>';
|
||||
print '<td align="right"></td>';
|
||||
print '<td align="right" colspan="2"><input type="submit" name="save" class="button" value="' . $langs->trans('Save') . '">';
|
||||
print '<input type="submit" name="cancel" class="button" value="' . $langs->trans('Cancel') . '"></td>';
|
||||
print '</form>';
|
||||
print '<input type="submit" name="cancel" class="button" value="' . $langs->trans('Cancel') . '">';
|
||||
print '</td>';
|
||||
}
|
||||
else {
|
||||
print '<td>';
|
||||
@ -1142,7 +1148,7 @@ class FormFile
|
||||
print '<a href="' . $_SERVER['PHP_SELF'] . '?action=update&linkid=' . $link->id
|
||||
. '&id=' . $object->id . '" class="editfilelink" >' . img_edit().'</a>';
|
||||
if ($permtodelete) {
|
||||
print '<a href="'. $_SERVER['PHP_SELF'] .'?action=delete&linkid=' . $link->id
|
||||
print ' <a href="'. $_SERVER['PHP_SELF'] .'?action=delete&linkid=' . $link->id
|
||||
. '&id=' . $object->id . '" class="deletefilelink" >' . img_delete() . '</a>';
|
||||
} else {
|
||||
print ' ';
|
||||
@ -1151,13 +1157,16 @@ class FormFile
|
||||
}
|
||||
print "</tr>\n";
|
||||
}
|
||||
if ($nboflinks == 0) {
|
||||
if ($nboflinks == 0)
|
||||
{
|
||||
print '<tr ' . $bc[$var] . '><td colspan="4">';
|
||||
print $langs->trans("NoLinkFound");
|
||||
print '</td></tr>';
|
||||
}
|
||||
print "</table>";
|
||||
|
||||
print '</form>';
|
||||
|
||||
return $nboflinks;
|
||||
}
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/link/class/link.class.php
|
||||
* \file htdocs/core/class/link.class.php
|
||||
* \ingroup link
|
||||
* \brief File for link class
|
||||
*/
|
||||
@ -39,6 +39,7 @@ class Link extends CommonObject
|
||||
public $objecttype;
|
||||
public $objectid;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
@ -102,9 +103,9 @@ class Link extends CommonObject
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('LINK_CREATE', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
} else {
|
||||
@ -154,29 +155,29 @@ class Link extends CommonObject
|
||||
{
|
||||
global $langs,$conf;
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||
|
||||
$langs->load("errors");
|
||||
$error=0;
|
||||
|
||||
dol_syslog(get_class($this)."::Update id = " . $this->id . " call_trigger = " . $call_trigger);
|
||||
|
||||
// Check parameters
|
||||
if (empty($this->url)) {
|
||||
if (empty($this->url))
|
||||
{
|
||||
$this->error = $langs->trans("NoURL");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
// Clean parameters
|
||||
$this->url = clean_url($this->url,0);
|
||||
if(empty($this->label)) {
|
||||
$this->label = basename($this->url);
|
||||
}
|
||||
$this->url = clean_url($this->url,1);
|
||||
if (empty($this->label)) $this->label = basename($this->url);
|
||||
$this->label = trim($this->label);
|
||||
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "UPDATE " . MAIN_DB_PREFIX . "links SET ";
|
||||
$sql .= "entity = '" . $conf->entity ."'";
|
||||
$sql .= "entity = '" . $conf->entity ."'";
|
||||
$sql .= ", datea = '" . $this->db->idate(dol_now()) . "'";
|
||||
$sql .= ", url = '" . $this->db->escape($this->url) . "'";
|
||||
$sql .= ", label = '" . $this->db->escape($this->label) . "'";
|
||||
@ -184,24 +185,25 @@ class Link extends CommonObject
|
||||
$sql .= ", objectid = " . $this->objectid;
|
||||
$sql .= " WHERE rowid = '" . $this->id ."'";
|
||||
|
||||
|
||||
dol_syslog(get_class($this)."::Update sql = " .$sql);
|
||||
dol_syslog(get_class($this)."::update sql = " .$sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($call_trigger) {
|
||||
if ($call_trigger)
|
||||
{
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface = new Interfaces($this->db);
|
||||
$result = $interface->run_triggers('LINK_MODIFY', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
}
|
||||
|
||||
if (! $error) {
|
||||
if (! $error)
|
||||
{
|
||||
dol_syslog(get_class($this) . "::Update success");
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
@ -209,14 +211,19 @@ class Link extends CommonObject
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS')
|
||||
{
|
||||
// Doublon
|
||||
$this->error = $langs->trans("ErrorDuplicateField");
|
||||
$result = -1;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error = $langs->trans("Error sql = " . $sql);
|
||||
dol_syslog(get_class($this) . "::Update fails update sql = " . $sql, LOG_ERR);
|
||||
dol_syslog(get_class($this) . "::Update fails update = " . $this->error, LOG_ERR);
|
||||
$result = -2;
|
||||
}
|
||||
$this->db->rollback();
|
||||
@ -226,34 +233,39 @@ class Link extends CommonObject
|
||||
|
||||
/**
|
||||
* Loads all links from database
|
||||
*
|
||||
*
|
||||
* @param array &$links array of Link objects to fill
|
||||
* @param string $objecttype type of the associated object in dolibarr
|
||||
* @param int $objectid id of the associated object in dolibarr
|
||||
* @param string $sortfield field used to sort
|
||||
* @param string $sortorder sort order
|
||||
* @return 1 if ok, 0 if no records, -1 if error
|
||||
*
|
||||
*
|
||||
* */
|
||||
public function fetchAll(&$links, $objecttype, $objectid, $sortfield=null, $sortorder=null)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT rowid, entity, datea, url, label , objecttype, objectid FROM " . MAIN_DB_PREFIX . "links";
|
||||
$sql .= " WHERE objecttype = '" . $objecttype . "' AND objectid = " . $objectid;
|
||||
if($conf->entity != 0) $sql .= " AND entity = " . $conf->entity;
|
||||
if ($conf->entity != 0) $sql .= " AND entity = " . $conf->entity;
|
||||
if ($sortfield) {
|
||||
if (empty($sortorder)) {
|
||||
$sortorder = "ASC";
|
||||
}
|
||||
$sql .= " ORDER BY " . $sortfield . " " . $sortorder;
|
||||
}
|
||||
|
||||
dol_syslog(get_class($this)."::fetchAll sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
dol_syslog(get_class($this)."::fetchAll " . $sql, LOG_DEBUG);
|
||||
if ($resql) {
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
dol_syslog(get_class($this)."::fetchAll " . $num . "records", LOG_DEBUG);
|
||||
if ($num > 0) {
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
if ($num > 0)
|
||||
{
|
||||
while ($obj = $this->db->fetch_object($resql))
|
||||
{
|
||||
$link = new Link($db);
|
||||
$link->id = $obj->rowid;
|
||||
$link->entity = $obj->entity;
|
||||
@ -274,25 +286,31 @@ class Link extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Loads a link from database
|
||||
* @param rowid id of link to load
|
||||
* @return int 1 if ok, 0 if no record found, -1 if error
|
||||
*
|
||||
* */
|
||||
*
|
||||
* @param int $rowid Id of link to load
|
||||
* @return int 1 if ok, 0 if no record found, -1 if error
|
||||
*
|
||||
**/
|
||||
public function fetch($rowid=null)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
if (empty($rowid)) {
|
||||
$rowid = $this->id;
|
||||
}
|
||||
|
||||
$sql = "SELECT rowid, entity, datea, url, label, objecttype, objectid FROM " . MAIN_DB_PREFIX . "links";
|
||||
$sql .= " WHERE rowid = " . $rowid;
|
||||
if($conf->entity != 0) $sql .= " AND entity = " . $conf->entity;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
dol_syslog(get_class($this)."::fetch " . $sql, LOG_DEBUG);
|
||||
if ($resql) {
|
||||
if($this->db->num_rows($resql) > 0) {
|
||||
if ($resql)
|
||||
{
|
||||
if($this->db->num_rows($resql) > 0)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->entity = $obj->entity;
|
||||
$this->datea = $this->db->jdate($obj->datea);
|
||||
@ -301,14 +319,14 @@ class Link extends CommonObject
|
||||
$this->objecttype = $obj->objecttype;
|
||||
$this->objectid = $obj->objectid;
|
||||
return 1;
|
||||
} else {
|
||||
$this->error = 'Fetch no link found for id = ' . $rowid;
|
||||
dol_syslog($this->error, LOG_ERR);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
dol_syslog($this->db->error(), LOG_ERR);
|
||||
$this->error=$this->db->error();
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog($this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -328,11 +346,12 @@ class Link extends CommonObject
|
||||
$this->db->begin();
|
||||
|
||||
// Remove link
|
||||
|
||||
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "links";
|
||||
$sql.= " WHERE rowid = " . $this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::delete sql=" . $sql, LOG_DEBUG);
|
||||
if (! $this->db->query($sql)) {
|
||||
if (! $this->db->query($sql))
|
||||
{
|
||||
$error++;
|
||||
$this->error = $this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::delete error -4 " . $this->error, LOG_ERR);
|
||||
@ -344,9 +363,9 @@ class Link extends CommonObject
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result = $interface->run_triggers('LINK_DELETE', $this, $user, $langs, $conf);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
$this->errors = $interface->errors;
|
||||
}
|
||||
// Fin appel triggers
|
||||
}
|
||||
@ -210,7 +210,8 @@ class DoliDBPgsql extends DoliDB
|
||||
|
||||
// tinyint type conversion
|
||||
$line=preg_replace('/tinyint\(?[0-9]*\)?/','smallint',$line);
|
||||
|
||||
$line=preg_replace('/tinyint/i','smallint',$line);
|
||||
|
||||
// nuke unsigned
|
||||
$line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line);
|
||||
|
||||
@ -875,7 +876,7 @@ class DoliDBPgsql extends DoliDB
|
||||
42701=> 'DB_ERROR_COLUMN_ALREADY_EXISTS',
|
||||
'42710' => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS',
|
||||
'23505' => 'DB_ERROR_RECORD_ALREADY_EXISTS',
|
||||
'42704' => 'DB_ERROR_NO_INDEX_TO_DROP',
|
||||
'42704' => 'DB_ERROR_NO_INDEX_TO_DROP', // May also be Type xxx does not exists
|
||||
'42601' => 'DB_ERROR_SYNTAX',
|
||||
'42P16' => 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS',
|
||||
1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY',
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
// Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
// Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
@ -290,8 +290,10 @@ function loadXMLDoc(url,readyStateFunction,async)
|
||||
return req;
|
||||
}
|
||||
|
||||
// To hide/show select Boxes with IE6 (and only IE6 because IE6 has a bug and
|
||||
// not put popup completely on the front)
|
||||
/* To hide/show select Boxes with IE6 (and only IE6 because IE6 has a bug and
|
||||
* not put popup completely on the front)
|
||||
* Used only bu popup calendar
|
||||
*/
|
||||
function hideSelectBoxes() {
|
||||
var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
|
||||
if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE 6") > -1)
|
||||
@ -304,6 +306,10 @@ function hideSelectBoxes() {
|
||||
}
|
||||
}
|
||||
}
|
||||
/* To hide/show select Boxes with IE6 (and only IE6 because IE6 has a bug and
|
||||
* not put popup completely on the front)
|
||||
* Used only bu popup calendar
|
||||
*/
|
||||
function displaySelectBoxes() {
|
||||
var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
|
||||
if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE 6") > -1)
|
||||
@ -354,9 +360,7 @@ function formatDate(date,format)
|
||||
c=format.charAt(i); // Recupere char du format
|
||||
substr="";
|
||||
j=i;
|
||||
while ((format.charAt(j)==c) && (j < format.length)) // Recupere char
|
||||
// successif
|
||||
// identiques
|
||||
while ((format.charAt(j)==c) && (j < format.length)) // Recupere char successif identiques
|
||||
{
|
||||
substr += format.charAt(j++);
|
||||
}
|
||||
@ -623,8 +627,9 @@ function hideMessage(fieldId,message) {
|
||||
if (textbox.value == message) textbox.value = '';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* TODO Used by admin page only ?
|
||||
*/
|
||||
function setConstant(url, code, input, entity) {
|
||||
$.get( url, {
|
||||
@ -679,7 +684,7 @@ function setConstant(url, code, input, entity) {
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* TODO Used by admin page only ?
|
||||
*/
|
||||
function delConstant(url, code, input, entity) {
|
||||
$.get( url, {
|
||||
@ -733,7 +738,7 @@ function delConstant(url, code, input, entity) {
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* TODO Used by admin page only ?
|
||||
*/
|
||||
function confirmConstantAction(action, url, code, input, box, entity, yesButton, noButton) {
|
||||
var boxConfirm = box;
|
||||
@ -784,7 +789,9 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton,
|
||||
/*
|
||||
* =================================================================
|
||||
* This is to allow to transform all select box into ajax autocomplete box
|
||||
* with just one line: $(function() { $( "#idofmylist" ).combobox(); });
|
||||
* with just one line:
|
||||
* $(function() { $( "#idofmylist" ).combobox(); });
|
||||
* Do not use it on large combo boxes
|
||||
* =================================================================
|
||||
*/
|
||||
(function( $ ) {
|
||||
@ -894,6 +901,8 @@ function confirmConstantAction(action, url, code, input, box, entity, yesButton,
|
||||
|
||||
/*
|
||||
* Timer for delayed keyup function
|
||||
*
|
||||
* TODO Who use this ?
|
||||
*/
|
||||
(function($){
|
||||
$.widget("ui.onDelayedKeyup", {
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
* @param string $urloption More parameters on URL request
|
||||
* @param int $minLength Minimum number of chars to trigger that Ajax search
|
||||
* @param int $autoselect Automatic selection if just one value
|
||||
* @param array $ajaxoptions Multiple options array
|
||||
* @param array $ajaxoptions Multiple options array (Ex: array('update'=>array('field1','field2'...)) will reset field1 and field2 once select done
|
||||
* @return string Script
|
||||
*/
|
||||
function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLength=2, $autoselect=0, $ajaxoptions=array())
|
||||
|
||||
@ -522,6 +522,17 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
global $user,$conf;
|
||||
global $bc;
|
||||
|
||||
$form= new Form($db);
|
||||
|
||||
$sortfield = GETPOST("sortfield",'alpha');
|
||||
$sortorder = GETPOST("sortorder",'alpha');
|
||||
$search_status = GETPOST("search_status",'int');
|
||||
if ($search_status=='') $search_status=1; // always display activ customer first
|
||||
$search_name = GETPOST("search_name",'alpha');
|
||||
|
||||
if (! $sortorder) $sortorder="ASC";
|
||||
if (! $sortfield) $sortfield="p.lastname";
|
||||
|
||||
$i=-1;
|
||||
|
||||
$contactstatic = new Contact($db);
|
||||
@ -547,20 +558,30 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
|
||||
print "\n".'<table class="noborder" width="100%">'."\n";
|
||||
|
||||
|
||||
$param="socid=".$object->id;
|
||||
if ($search_status != '') $param.='&search_status='.$search_status;
|
||||
if ($search_name != '') $param.='&search_name='.urlencode($search_name);
|
||||
|
||||
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'" name="formfilter">';
|
||||
print '<input type="hidden" name="socid" value="'.$object->id.'">';
|
||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||
|
||||
$colspan=8;
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Name").'</td>';
|
||||
print '<td>'.$langs->trans("Poste").'</td>';
|
||||
print '<td>'.$langs->trans("PhonePro").'</td>';
|
||||
print '<td>'.$langs->trans("PhoneMobile").'</td>';
|
||||
print '<td>'.$langs->trans("Fax").'</td>';
|
||||
print '<td>'.$langs->trans("EMail").'</td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
$colspan++;
|
||||
print '<td>'.$langs->trans("Skype").'</td>';
|
||||
print_liste_field_titre($langs->trans("Name"),$_SERVER["PHP_SELF"],"p.lastname","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Poste"),$_SERVER["PHP_SELF"],"p.poste","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("PhonePro"),$_SERVER["PHP_SELF"],"p.phone","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("PhoneMobile"),$_SERVER["PHP_SELF"],"p.phone_mobile","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("Fax"),$_SERVER["PHP_SELF"],"p.fax","",$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"p.email","",$param,'',$sortfield,$sortorder);
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
$colspan++;
|
||||
print '<td>'.$langs->trans("Skype").'</td>';
|
||||
}
|
||||
print '<td>'.$langs->trans("Status").'</td>';
|
||||
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.statut","",$param,'',$sortfield,$sortorder);
|
||||
print "<td> </td>";
|
||||
if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
|
||||
{
|
||||
@ -573,14 +594,54 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
print '<td> </td>';
|
||||
}
|
||||
print "</tr>";
|
||||
|
||||
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td class="liste_titre">';
|
||||
print '<input type="text" class="flat" name="search_name" size="20" value="'.$search_name.'">';
|
||||
print '</td>';
|
||||
|
||||
print '<td> </td>';
|
||||
print '<td> </td>';
|
||||
|
||||
print '<td> </td>';
|
||||
|
||||
print '<td> </td>';
|
||||
|
||||
print '<td> </td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
$colspan++;
|
||||
print '<td> </td>';
|
||||
}
|
||||
print '<td class="liste_titre">';
|
||||
print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
|
||||
print '</td>';
|
||||
|
||||
print "<td> </td>";
|
||||
if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
|
||||
{
|
||||
$colspan++;
|
||||
print '<td> </td>';
|
||||
}
|
||||
|
||||
|
||||
print '<td class="liste_titre" align="right">';
|
||||
print '<input type="image" class="liste_titre" name="button_search" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||
print '</td>';
|
||||
|
||||
print "</tr>";
|
||||
|
||||
|
||||
$sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays, p.poste, p.phone, p.phone_mobile, p.fax, p.email, p.skype, p.statut ";
|
||||
$sql .= ", p.civilite, p.address, p.zip, p.town";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p";
|
||||
$sql .= " WHERE p.fk_soc = ".$object->id;
|
||||
$sql .= " ORDER by p.datec";
|
||||
if ($search_status!='') $sql .= " AND p.statut = ".$db->escape($search_status);
|
||||
if ($search_name) $sql .= " AND (p.lastname LIKE '%".$db->escape(strtolower($search_name))."%' OR p.firstname LIKE '%".$db->escape(strtolower($search_name))."%')";
|
||||
$sql.= " ORDER BY $sortfield $sortorder";
|
||||
|
||||
dol_syslog('core/lib/company.lib.php :: show_contacts sql='.$sql,LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
$num = $db->num_rows($result);
|
||||
|
||||
@ -592,16 +653,14 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
|
||||
$contactstatic->id = $obj->rowid;
|
||||
$contactstatic->lastname = $obj->lastname;
|
||||
$contactstatic->firstname = $obj->firstname;
|
||||
$contactstatic->statut=$obj->statut;
|
||||
|
||||
$var = !$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
|
||||
print '<td>';
|
||||
$contactstatic->id = $obj->rowid;
|
||||
$contactstatic->statut = $obj->statut;
|
||||
$contactstatic->lastname = $obj->lastname;
|
||||
$contactstatic->firstname = $obj->firstname;
|
||||
print $contactstatic->getNomUrl(1);
|
||||
print '</td>';
|
||||
|
||||
@ -622,14 +681,14 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
print '<td>';
|
||||
print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL');
|
||||
print '</td>';
|
||||
if (! empty($conf->skype->enabled))
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
print '<td>';
|
||||
print dol_print_skype($obj->skype,$obj->rowid,$object->id,'AC_SKYPE');
|
||||
print '</td>';
|
||||
}
|
||||
}
|
||||
|
||||
print '<td>'.$contactstatic->getLibStatut(5).'</td>';
|
||||
print '<td>'.$contactstatic->getLibStatut(5).'</td>';
|
||||
|
||||
// copy in clipboard
|
||||
$coords = '';
|
||||
@ -690,7 +749,6 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
|
||||
}
|
||||
|
||||
|
||||
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
}
|
||||
|
||||
@ -1011,12 +1011,12 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio
|
||||
// Define $destpath (path to file including filename) and $destfile (only filename)
|
||||
$destpath=$upload_dir . "/" . $_FILES[$varfiles]['name'];
|
||||
$destfile=$_FILES[$varfiles]['name'];
|
||||
if ($savingdocmask)
|
||||
if ($savingdocmask)
|
||||
{
|
||||
$destpath=$upload_dir . "/" . preg_replace('/__file__/',$_FILES[$varfiles]['name'],$savingdocmask);
|
||||
$destfile=preg_replace('/__file__/',$_FILES[$varfiles]['name'],$savingdocmask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$resupload = dol_move_uploaded_file($_FILES[$varfiles]['tmp_name'], $destpath, $allowoverwrite, 0, $_FILES[$varfiles]['error'], 0, $varfiles);
|
||||
if (is_numeric($resupload) && $resupload > 0)
|
||||
{
|
||||
@ -1058,7 +1058,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio
|
||||
}
|
||||
} elseif ($link) {
|
||||
if (dol_mkdir($upload_dir) >= 0) {
|
||||
require_once DOL_DOCUMENT_ROOT . '/link/class/link.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
|
||||
$linkObject = new Link($db);
|
||||
$linkObject->entity = $conf->entity;
|
||||
$linkObject->url = $link;
|
||||
|
||||
@ -1212,7 +1212,7 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64)
|
||||
$newskype.='<img src="../theme/'.$conf->theme.'/img/object_skype.png" border="0"> ';
|
||||
$newskype.=dol_trunc($skype,$max);
|
||||
$newskype.='</a>';
|
||||
|
||||
|
||||
if (($cid || $socid) && ! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create)
|
||||
{
|
||||
$type='AC_SKYPE'; $link='';
|
||||
@ -2358,7 +2358,7 @@ function dol_print_error_email($prefixcode)
|
||||
* @param string $field Field to use for new sorting
|
||||
* @param string $begin ("" by defaut)
|
||||
* @param string $moreparam Add more parameters on sort url links ("" by default)
|
||||
* @param string $td Options of attribute td ("" by defaut)
|
||||
* @param string $td Options of attribute td ("" by defaut, example: 'align="center"')
|
||||
* @param string $sortfield Current field used to sort
|
||||
* @param string $sortorder Current sort order
|
||||
* @return void
|
||||
@ -2372,7 +2372,7 @@ function print_liste_field_titre($name, $file="", $field="", $begin="", $morepar
|
||||
* Get title line of an array
|
||||
*
|
||||
* @param string $name Label of field
|
||||
* @param int $thead 0=To use with standard table forat, 1=To use inside <thead><tr>, 2=To use with <div>
|
||||
* @param int $thead 0=To use with standard table forat, 1=To use inside <thead><tr>, 2=To use with <div>
|
||||
* @param string $file Url used when we click on sort picto
|
||||
* @param string $field Field to use for new sorting. Empty if this field is not sortable.
|
||||
* @param string $begin ("" by defaut)
|
||||
@ -2392,11 +2392,11 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m
|
||||
|
||||
$tag='th';
|
||||
if ($thead==2) $tag='div';
|
||||
|
||||
|
||||
// If field is used as sort criteria we use a specific class
|
||||
// Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom")
|
||||
if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel" '. $moreattrib.'>';
|
||||
else $out.= '<'.$tag.' class="liste_titre" '. $moreattrib.'>';
|
||||
if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel'.($field?' nowrap':'').'" '. $moreattrib.'>';
|
||||
else $out.= '<'.$tag.' class="liste_titre'.($field?' nowrap':'').'" '. $moreattrib.'>';
|
||||
|
||||
if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field
|
||||
{
|
||||
@ -2449,7 +2449,7 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m
|
||||
}
|
||||
|
||||
/**
|
||||
* Show a title (deprecated. use print_fiche_titre instrad)
|
||||
* Show a title (deprecated. use print_fiche_titre instead)
|
||||
*
|
||||
* @param string $title Title to show
|
||||
* @return string Title to show
|
||||
@ -2462,16 +2462,16 @@ function print_titre($title)
|
||||
/**
|
||||
* Show a title with picto
|
||||
*
|
||||
* @param string $titre Title to show
|
||||
* @param string $title Title to show
|
||||
* @param string $mesg Added message to show on right
|
||||
* @param string $picto Icon to use before title (should be a 32x32 transparent png file)
|
||||
* @param int $pictoisfullpath 1=Icon name is a full absolute url of image
|
||||
* @param int $id To force an id on html objects
|
||||
* @return void
|
||||
*/
|
||||
function print_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath=0, $id='')
|
||||
function print_fiche_titre($title, $mesg='', $picto='title.png', $pictoisfullpath=0, $id='')
|
||||
{
|
||||
print load_fiche_titre($titre, $mesg, $picto, $pictoisfullpath, $id);
|
||||
print load_fiche_titre($title, $mesg, $picto, $pictoisfullpath, $id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3004,7 +3004,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
||||
$sql.= " WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$thirdparty_seller->country_code."'";
|
||||
$sql.= " ORDER BY t.taux DESC, t.recuperableonly ASC";
|
||||
$sql.= $db->plimit(1);
|
||||
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -442,7 +442,7 @@ function isValidUrl($url,$http=0,$pass=0,$port=0,$path=0,$query=0,$anchor=0)
|
||||
* Clean an url string
|
||||
*
|
||||
* @param string $url Url
|
||||
* @param string $http 1: keep http://, 0: remove also http://
|
||||
* @param string $http 1 = keep both http:// and https://, 0: remove http:// but not https://
|
||||
* @return string Cleaned url
|
||||
*/
|
||||
function clean_url($url,$http=1)
|
||||
|
||||
@ -484,7 +484,7 @@ function quotedPrintEncode($str,$forcal=0)
|
||||
{
|
||||
$newpara = '';
|
||||
|
||||
$strlength=dol_strlen($line);
|
||||
$strlength=strlen($line); // Do not use dol_strlen here, we need number of bytes
|
||||
for ($j = 0; $j <= ($strlength - 1); $j++)
|
||||
{
|
||||
$char = substr($line, $j, 1);
|
||||
@ -493,7 +493,7 @@ function quotedPrintEncode($str,$forcal=0)
|
||||
if ( $ascii < 32 || $ascii == 61 || $ascii > 126 )
|
||||
$char = '=' . strtoupper(sprintf("%02X", $ascii));
|
||||
|
||||
if ((dol_strlen($newpara) + dol_strlen($char)) >= 76 )
|
||||
if ((strlen($newpara) + strlen($char)) >= 76 ) // Do not use dol_strlen here, we need number of bytes
|
||||
{
|
||||
$out .= $newpara . '=' . "\r\n"; // CRLF
|
||||
if ($forcal) $out .= " "; // + Space for cal
|
||||
|
||||
@ -562,7 +562,7 @@ abstract class DolibarrModules
|
||||
if (! $resql) $err++;
|
||||
|
||||
}
|
||||
if (! $err && ! preg_match('/newboxdefonly/',$options))
|
||||
if (! $err && ! preg_match('/newboxdefonly/',$option))
|
||||
{
|
||||
$lastid=$this->db->last_insert_id(MAIN_DB_PREFIX."boxes_def","rowid");
|
||||
|
||||
|
||||
@ -155,24 +155,20 @@ class MailingTargets // This can't be abstract as it is used for some method
|
||||
if (! empty($targetarray['email'])) // avoid empty email address
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " (fk_mailing,";
|
||||
$sql .= " fk_contact,";
|
||||
$sql .= " lastname, firstname, email, other, source_url, source_id,";
|
||||
if (! empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE)) {
|
||||
$sql .= " tag,";
|
||||
}
|
||||
$sql.= " (fk_mailing,";
|
||||
$sql.= " fk_contact,";
|
||||
$sql.= " lastname, firstname, email, other, source_url, source_id,";
|
||||
$sql.= " tag,";
|
||||
$sql.= " source_type)";
|
||||
$sql .= " VALUES (".$mailing_id.",";
|
||||
$sql .= (empty($targetarray['fk_contact']) ? '0' : "'".$targetarray['fk_contact']."'") .",";
|
||||
$sql .= "'".$this->db->escape($targetarray['lastname'])."',";
|
||||
$sql .= "'".$this->db->escape($targetarray['firstname'])."',";
|
||||
$sql .= "'".$this->db->escape($targetarray['email'])."',";
|
||||
$sql .= "'".$this->db->escape($targetarray['other'])."',";
|
||||
$sql .= "'".$this->db->escape($targetarray['source_url'])."',";
|
||||
$sql .= (empty($targetarray['source_id']) ? 'null' : "'".$this->db->escape($targetarray['source_id'])."'").",";
|
||||
if (! empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE)) {
|
||||
$sql .= "'".$this->db->escape(md5($targetarray['email'].';'.$targetarray['name'].';'.$mailing_id.';'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY))."',";
|
||||
}
|
||||
$sql.= " VALUES (".$mailing_id.",";
|
||||
$sql.= (empty($targetarray['fk_contact']) ? '0' : "'".$targetarray['fk_contact']."'") .",";
|
||||
$sql.= "'".$this->db->escape($targetarray['lastname'])."',";
|
||||
$sql.= "'".$this->db->escape($targetarray['firstname'])."',";
|
||||
$sql.= "'".$this->db->escape($targetarray['email'])."',";
|
||||
$sql.= "'".$this->db->escape($targetarray['other'])."',";
|
||||
$sql.= "'".$this->db->escape($targetarray['source_url'])."',";
|
||||
$sql.= (empty($targetarray['source_id']) ? 'null' : "'".$this->db->escape($targetarray['source_id'])."'").",";
|
||||
$sql .= "'".$this->db->escape(dol_hash($targetarray['email'].';'.$targetarray['name'].';'.$mailing_id.';'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY))."',";
|
||||
$sql .= "'".$this->db->escape($targetarray['source_type'])."')";
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
|
||||
@ -529,7 +529,6 @@ class doc_generic_project_odt extends ModelePDFProjects
|
||||
else // Text
|
||||
{
|
||||
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
||||
$odfHandler->setVarsHeadFooter($key, $value, true, 'UTF-8');
|
||||
}
|
||||
}
|
||||
catch(OdfException $e)
|
||||
@ -1037,4 +1036,4 @@ class doc_generic_project_odt extends ModelePDFProjects
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -17,11 +17,11 @@
|
||||
*
|
||||
* Javascript code to activate drag and drop on lines
|
||||
* You can use this if you want to be abale to drag and drop rows of a table.
|
||||
* You must add id="tablelines" ont table level tag and have count($object->lines) or count($taskarray) > 0
|
||||
* You must add id="tablelines" ont table level tag and have count($object->lines) or count($taskarray) > 0
|
||||
*/
|
||||
?>
|
||||
|
||||
<!-- BEGIN PHP TEMPLATE FOR JQUERY -->
|
||||
<!-- BEGIN PHP TEMPLATE AJAXROW.TPL.PHP -->
|
||||
<?php
|
||||
$id=$object->id;
|
||||
$fk_element=$object->fk_element;
|
||||
@ -84,4 +84,4 @@ $(document).ready(function(){
|
||||
});
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- END PHP TEMPLATE -->
|
||||
<!-- END PHP TEMPLATE AJAXROW.TPL.PHP -->
|
||||
@ -20,22 +20,24 @@
|
||||
/*
|
||||
* Confirm suppression
|
||||
*/
|
||||
if ($action == 'delete') {
|
||||
$ret = $form->form_confirm(
|
||||
$_SERVER["PHP_SELF"] . '?id=' . $object->id . '&urlfile=' . urlencode(GETPOST("urlfile")) . '&linkid=' . GETPOST('linkid', 'int'),
|
||||
$langs->trans('DeleteFile'),
|
||||
$langs->trans('ConfirmDeleteFile'),
|
||||
'confirm_deletefile',
|
||||
'',
|
||||
0,
|
||||
1
|
||||
);
|
||||
if ($ret == 'html') print '<br>';
|
||||
|
||||
if ($action == 'delete')
|
||||
{
|
||||
$ret = $form->form_confirm(
|
||||
$_SERVER["PHP_SELF"] . '?id=' . $object->id . '&urlfile=' . urlencode(GETPOST("urlfile")) . '&linkid=' . GETPOST('linkid', 'int'),
|
||||
$langs->trans('DeleteFile'),
|
||||
$langs->trans('ConfirmDeleteFile'),
|
||||
'confirm_deletefile',
|
||||
'',
|
||||
0,
|
||||
1
|
||||
);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
|
||||
$formfile=new FormFile($db);
|
||||
|
||||
// Show upload form
|
||||
// Show upload form (document and links)
|
||||
$formfile->form_attach_new_file(
|
||||
$_SERVER["PHP_SELF"].'?id='.$object->id,
|
||||
'',
|
||||
|
||||
@ -25,7 +25,8 @@ if (GETPOST('sendit') && ! empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
} elseif (GETPOST('linkit') && ! empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
if ($object->id) {
|
||||
$link = GETPOST('link', 'alpha');
|
||||
if ($link) {
|
||||
if ($link)
|
||||
{
|
||||
if (substr($link, 0, 7) != 'http://' && substr($link, 0, 8) != 'https://') {
|
||||
$link = 'http://' . $link;
|
||||
}
|
||||
@ -36,11 +37,14 @@ if (GETPOST('sendit') && ! empty($conf->global->MAIN_UPLOAD_DOC)) {
|
||||
|
||||
|
||||
// Delete file/link
|
||||
if ($action == 'confirm_deletefile' && $confirm == 'yes') {
|
||||
if ($object->id) {
|
||||
if ($action == 'confirm_deletefile' && $confirm == 'yes')
|
||||
{
|
||||
if ($object->id)
|
||||
{
|
||||
$urlfile = GETPOST('urlfile', 'alpha');
|
||||
$linkid = GETPOST('linkid', 'int');
|
||||
if ($urlfile) {
|
||||
if ($urlfile)
|
||||
{
|
||||
$file = $upload_dir . "/" . $urlfile; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
||||
|
||||
$ret = dol_delete_file($file, 0, 0, 0, $object);
|
||||
@ -49,8 +53,10 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') {
|
||||
} else {
|
||||
setEventMessage($langs->trans("ErrorFailToDeleteFile", $urlfile), 'errors');
|
||||
}
|
||||
} elseif ($linkid) {
|
||||
require_once DOL_DOCUMENT_ROOT . '/link/class/link.class.php';
|
||||
}
|
||||
elseif ($linkid)
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
|
||||
$link = new Link($db);
|
||||
$link->id = $linkid;
|
||||
$link->fetch();
|
||||
@ -65,23 +71,30 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') {
|
||||
header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id);
|
||||
exit;
|
||||
}
|
||||
} elseif ($action == 'confirm_updateline' && GETPOST('save') && GETPOST('link', 'alpha')) {
|
||||
require_once DOL_DOCUMENT_ROOT . '/link/class/link.class.php';
|
||||
}
|
||||
elseif ($action == 'confirm_updateline' && GETPOST('save') && GETPOST('link', 'alpha'))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
|
||||
$langs->load('link');
|
||||
$link = new Link($db);
|
||||
$link->id = GETPOST('linkid', 'int');
|
||||
$f = $link->fetch();
|
||||
if ($f) {
|
||||
if ($f)
|
||||
{
|
||||
$link->url = GETPOST('link', 'alpha');
|
||||
if (substr($link->url, 0, 7) != 'http://' && substr($link->url, 0, 8) != 'https://') {
|
||||
if (substr($link->url, 0, 7) != 'http://' && substr($link->url, 0, 8) != 'https://')
|
||||
{
|
||||
$link->url = 'http://' . $link->url;
|
||||
}
|
||||
$link->label = GETPOST('label', 'alpha');
|
||||
$res = $link->update($user);
|
||||
if (!$res) {
|
||||
if (!$res)
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorFailedToUpdateLink", $link->label));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
//error fetching
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,12 +32,6 @@ if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($ob
|
||||
|
||||
<!-- BEGIN PHP TEMPLATE freeproductline_create.tpl.php -->
|
||||
|
||||
<form name="addproduct" id="addproduct" action="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->id; ?>#add" method="POST">
|
||||
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
|
||||
<input type="hidden" name="action" value="addline">
|
||||
<input type="hidden" name="mode" value="libre">
|
||||
<input type="hidden" name="id" value="<?php echo $this->id; ?>">
|
||||
|
||||
<tr class="liste_titre nodrag nodrop">
|
||||
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>
|
||||
<div id="add"></div>
|
||||
@ -116,7 +110,7 @@ else {
|
||||
</td>
|
||||
|
||||
<td align="right"><?php
|
||||
if ($seller->tva_assuj == "0") echo '<input type="hidden" name="np_tva_tx" value="0">0';
|
||||
if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" value="0">0';
|
||||
else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer);
|
||||
?>
|
||||
</td>
|
||||
@ -137,7 +131,7 @@ else {
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
echo '<td align="right"><input type="text" size="2" name="np_marginRate" value="'.(isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:'').'">%</td>';
|
||||
}
|
||||
elseif (! empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
echo '<td align="right"><input type="text" size="2" name="np_markRate" value="'.(isset($_POST["np_markRate"])?$_POST["np_markRate"]:'').'">%</td>';
|
||||
}
|
||||
}
|
||||
@ -155,7 +149,7 @@ else {
|
||||
}
|
||||
?>
|
||||
<td align="center" valign="middle" colspan="<?php echo $colspan; ?>">
|
||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_libre">
|
||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_libre" id="addline_libre">
|
||||
</td>
|
||||
<?php
|
||||
//Line extrafield
|
||||
@ -196,9 +190,9 @@ if (! empty($conf->service->enabled) && $dateSelector)
|
||||
if (! empty($object->element) && $object->element == 'contrat')
|
||||
{
|
||||
print $langs->trans("DateStartPlanned").' ';
|
||||
$form->select_date('',"date_start_sl",$usehm,$usehm,1,"addline_sl");
|
||||
$form->select_date('',"date_start",$usehm,$usehm,1,"addline_sl");
|
||||
print ' '.$langs->trans("DateEndPlanned").' ';
|
||||
$form->select_date('',"date_end_sl",$usehm,$usehm,1,"addline_sl");
|
||||
$form->select_date('',"date_end",$usehm,$usehm,1,"addline_sl");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -214,7 +208,6 @@ if (! empty($conf->service->enabled) && $dateSelector)
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
@ -223,34 +216,29 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
var npRate = null;
|
||||
<?php
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
|
||||
npRate = "np_marginRate";
|
||||
<?php }
|
||||
elseif (! empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
||||
npRate = "np_markRate";
|
||||
<?php }
|
||||
?>
|
||||
|
||||
$("form#addproduct").submit(function(e) {
|
||||
if (npRate) return checkFreeLine(e, npRate);
|
||||
else return true;
|
||||
});
|
||||
if (npRate == 'np_marginRate') {
|
||||
$("input[name='np_marginRate']:first").blur(function(e) {
|
||||
return checkFreeLine(e, npRate);
|
||||
$('#addline_libre').click(function (e) {
|
||||
return checkFreeLine(e, "np_marginRate");
|
||||
});
|
||||
$("input[name='np_marginRate']:first").blur(function(e) {
|
||||
return checkFreeLine(e, "np_marginRate");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
else {
|
||||
if (npRate == 'np_markRate') {
|
||||
$("input[name='np_markRate']:first").blur(function(e) {
|
||||
return checkFreeLine(e, npRate);
|
||||
});
|
||||
}
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
||||
$('#addline_libre').click(function (e) {
|
||||
return checkFreeLine(e, "np_markRate");
|
||||
});
|
||||
$("input[name='np_markRate']:first").blur(function(e) {
|
||||
return checkFreeLine(e, "np_markRate");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
});
|
||||
|
||||
// TODO This works for french numbers only
|
||||
function checkFreeLine(e, npRate)
|
||||
{
|
||||
var buying_price = $("input[name='buying_price']:first");
|
||||
@ -261,14 +249,14 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
return true;
|
||||
if (! $.isNumeric(rate.val().replace(',','.')))
|
||||
{
|
||||
alert('<?php echo $langs->trans("rateMustBeNumeric"); ?>');
|
||||
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
if (npRate == "np_markRate" && rate.val() >= 100)
|
||||
{
|
||||
alert('<?php echo $langs->trans("markRateShouldBeLesserThan100"); ?>');
|
||||
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
@ -284,12 +272,14 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
np_price = ((buying_price.val().replace(',','.') / (1 - rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
}
|
||||
}
|
||||
$("input[name='price_ht']:first").val(formatFloat(np_price));
|
||||
$("input[name='price_ht']:first").val(roundFloat(np_price));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function roundFloat(num) {
|
||||
// TODO This works for french numbers only
|
||||
function roundFloat(num)
|
||||
{
|
||||
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
|
||||
var main_rounding = <?php echo min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?>;
|
||||
|
||||
@ -312,10 +302,6 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
return parseFloat(amount).toFixed(rounding);
|
||||
}
|
||||
|
||||
function formatFloat(num) {
|
||||
return roundFloat(num).replace('.', ',');
|
||||
}
|
||||
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
@ -28,15 +28,8 @@
|
||||
?>
|
||||
|
||||
<!-- BEGIN PHP TEMPLATE objectline_edit.tpl.php -->
|
||||
<form id="editproduct" action="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->id.'#'.$line->id; ?>" method="POST">
|
||||
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
|
||||
<input type="hidden" name="action" value="updateligne">
|
||||
<input type="hidden" name="usenewupdatelineform" value="1" />
|
||||
<input type="hidden" name="id" value="<?php echo $this->id; ?>">
|
||||
<input type="hidden" name="lineid" value="<?php echo $line->id; ?>">
|
||||
<input type="hidden" id="product_type" name="type" value="<?php echo $line->product_type; ?>">
|
||||
<input type="hidden" id="product_id" name="productid" value="<?php echo (! empty($line->fk_product)?$line->fk_product:0); ?>" />
|
||||
<?php
|
||||
|
||||
<?php
|
||||
if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
|
||||
$coldisplay=2;
|
||||
} else {
|
||||
@ -45,7 +38,11 @@ if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
|
||||
?>
|
||||
<tr <?php echo $bc[$var]; ?>>
|
||||
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>
|
||||
<div id="<?php echo $line->id; ?>"></div>
|
||||
<div id="line_<?php echo $line->id; ?>"></div>
|
||||
|
||||
<input type="hidden" name="lineid" value="<?php echo $line->id; ?>">
|
||||
<input type="hidden" id="product_type" name="type" value="<?php echo $line->product_type; ?>">
|
||||
<input type="hidden" id="product_id" name="productid" value="<?php echo (! empty($line->fk_product)?$line->fk_product:0); ?>" />
|
||||
|
||||
<?php
|
||||
if ($conf->global->MAIN_FEATURES_LEVEL > 1)
|
||||
@ -187,12 +184,15 @@ if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
<?php if ($conf->global->MAIN_FEATURES_LEVEL > 1) { ?>
|
||||
<?php
|
||||
if ($conf->global->MAIN_FEATURES_LEVEL > 1) // TODO A virer
|
||||
{
|
||||
?>
|
||||
jQuery(document).ready(function() {
|
||||
|
||||
|
||||
if ($('#product_type').val() == 0) {
|
||||
$('#service_duration_area').hide();
|
||||
@ -290,7 +290,9 @@ $(document).ready(function() {
|
||||
}
|
||||
});
|
||||
|
||||
function update_price(input, output) {
|
||||
// update_price
|
||||
function update_price(input, output)
|
||||
{
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/core/ajax/price.php', {
|
||||
'amount': $('#' + input).val(),
|
||||
'output': output,
|
||||
@ -368,10 +370,19 @@ $(document).ready(function() {
|
||||
});
|
||||
<?php } ?>
|
||||
|
||||
<?php } ?>
|
||||
});
|
||||
|
||||
<?php if (! empty($conf->margin->enabled)) { ?>
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', {'idprod': <?php echo $line->fk_product?$line->fk_product:0; ?>}, function(data) {
|
||||
<?php } // End MAIN_LEVEL_FEATURES > 1 ?>
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
if (! empty($conf->margin->enabled))
|
||||
{
|
||||
?>
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', {'idprod': <?php echo $line->fk_product?$line->fk_product:0; ?>}, function(data) {
|
||||
if (data && data.length > 0) {
|
||||
var options = '';
|
||||
var trouve=false;
|
||||
@ -405,99 +416,101 @@ $(document).ready(function() {
|
||||
$("#fournprice").hide();
|
||||
$('#buying_price').show();
|
||||
}
|
||||
}, 'json');
|
||||
<?php } ?>
|
||||
});
|
||||
var npRate = null;
|
||||
<?php
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
|
||||
npRate = "marginRate";
|
||||
<?php }
|
||||
elseif (! empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
||||
npRate = "markRate";
|
||||
<?php }
|
||||
?>
|
||||
}, 'json');
|
||||
|
||||
$("form#editproduct").submit(function(e) {
|
||||
if (npRate) return checkEditLine(e, npRate);
|
||||
else return true;
|
||||
});
|
||||
if (npRate == 'marginRate') {
|
||||
$("input[name='marginRate']:first").blur(function(e) {
|
||||
return checkEditLine(e, npRate);
|
||||
});
|
||||
}
|
||||
else {
|
||||
if (npRate == 'markRate') {
|
||||
$("input[name='markRate']:first").blur(function(e) {
|
||||
return checkEditLine(e, npRate);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function checkEditLine(e, npRate)
|
||||
{
|
||||
var buying_price = $("input[name='buying_price']:first");
|
||||
var remise = $("input[name='remise_percent']:first");
|
||||
|
||||
var rate = $("input[name='"+npRate+"']:first");
|
||||
if (rate.val() == '')
|
||||
return true;
|
||||
if (! $.isNumeric(rate.val().replace(',','.')))
|
||||
{
|
||||
alert('<?php echo $langs->trans("rateMustBeNumeric"); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
if (npRate == "markRate" && rate.val() >= 100)
|
||||
{
|
||||
alert('<?php echo $langs->trans("markRateShouldBeLesserThan100"); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
|
||||
var price = 0;
|
||||
if (remise.val().replace(',','.') != 100)
|
||||
{
|
||||
if (npRate == "marginRate")
|
||||
price = ((buying_price.val().replace(',','.') * (1 + rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
else {
|
||||
if (npRate == "markRate")
|
||||
price = ((buying_price.val().replace(',','.') / (1 - rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
<?php
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
{
|
||||
?>
|
||||
$('#savelinebutton').click(function (e) {
|
||||
return checkEditLine(e, "marginRate");
|
||||
});
|
||||
$("input[name='np_marginRate']:first").blur(function(e) {
|
||||
return checkEditLine(e, "marginRate");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
{
|
||||
?>
|
||||
$('#savelinebutton').click(function (e) {
|
||||
return checkEditLine(e, "markRate");
|
||||
});
|
||||
$("input[name='np_markRate']:first").blur(function(e) {
|
||||
return checkEditLine(e, "markRate");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
});
|
||||
|
||||
|
||||
// TODO This works for french numbers only
|
||||
function checkEditLine(e, npRate)
|
||||
{
|
||||
var buying_price = $("input[name='buying_price']:first");
|
||||
var remise = $("input[name='remise_percent']:first");
|
||||
|
||||
var rate = $("input[name='"+npRate+"']:first");
|
||||
if (rate.val() == '')
|
||||
return true;
|
||||
if (! $.isNumeric(rate.val().replace(',','.')))
|
||||
{
|
||||
alert('<?php echo $langs->trans("rateMustBeNumeric"); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
if (npRate == "markRate" && rate.val() >= 100)
|
||||
{
|
||||
alert('<?php echo $langs->trans("markRateShouldBeLesserThan100"); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
|
||||
var price = 0;
|
||||
if (remise.val().replace(',','.') != 100)
|
||||
{
|
||||
if (npRate == "marginRate")
|
||||
price = ((buying_price.val().replace(',','.') * (1 + rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
else {
|
||||
if (npRate == "markRate")
|
||||
price = ((buying_price.val().replace(',','.') / (1 - rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
}
|
||||
}
|
||||
$("input[name='price_ht']:first").val(roundFloat(price));
|
||||
|
||||
return true;
|
||||
}
|
||||
$("input[name='price_ht']:first").val(formatFloat(price));
|
||||
|
||||
return true;
|
||||
}
|
||||
function roundFloat(num) {
|
||||
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
|
||||
var main_rounding = <?php echo min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?>;
|
||||
// TODO This works for french numbers only
|
||||
function roundFloat(num) {
|
||||
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
|
||||
var main_rounding = <?php echo min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?>;
|
||||
|
||||
var amount = num.toString().replace(',','.'); // should be useless
|
||||
var nbdec = 0;
|
||||
var rounding = main_rounding;
|
||||
var pos = amount.indexOf('.');
|
||||
var decpart = '';
|
||||
if (pos >= 0)
|
||||
decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale
|
||||
nbdec = decpart.length;
|
||||
if (nbdec > rounding)
|
||||
rounding = nbdec;
|
||||
// Si on depasse max
|
||||
if (rounding > main_max_dec_shown)
|
||||
{
|
||||
rounding = main_max_dec_shown;
|
||||
}
|
||||
//amount = parseFloat(amount) + (1 / Math.pow(100, rounding)); // to avoid floating-point errors
|
||||
return parseFloat(amount).toFixed(rounding);
|
||||
}
|
||||
var amount = num.toString().replace(',','.'); // should be useless
|
||||
var nbdec = 0;
|
||||
var rounding = main_rounding;
|
||||
var pos = amount.indexOf('.');
|
||||
var decpart = '';
|
||||
if (pos >= 0)
|
||||
decpart = amount.substr(pos+1).replace('/0+$/i',''); // Supprime les 0 de fin de partie decimale
|
||||
nbdec = decpart.length;
|
||||
if (nbdec > rounding)
|
||||
rounding = nbdec;
|
||||
// Si on depasse max
|
||||
if (rounding > main_max_dec_shown)
|
||||
{
|
||||
rounding = main_max_dec_shown;
|
||||
}
|
||||
//amount = parseFloat(amount) + (1 / Math.pow(100, rounding)); // to avoid floating-point errors
|
||||
return parseFloat(amount).toFixed(rounding);
|
||||
}
|
||||
|
||||
function formatFloat(num) {
|
||||
return roundFloat(num).replace('.', ',');
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</script>
|
||||
<!-- END PHP TEMPLATE objectline_edit.tpl.php -->
|
||||
|
||||
@ -32,12 +32,6 @@ if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($ob
|
||||
|
||||
<!-- BEGIN PHP TEMPLATE predefinedproductline_create.tpl.php -->
|
||||
|
||||
<form name="addpredefinedproduct" id="addpredefinedproduct" action="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->id; ?>#add" method="POST">
|
||||
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
|
||||
<input type="hidden" name="action" value="addline">
|
||||
<input type="hidden" name="mode" value="predefined">
|
||||
<input type="hidden" name="id" value="<?php echo $this->id; ?>">
|
||||
|
||||
<tr class="liste_titre nodrag nodrop">
|
||||
<td<?php echo (! empty($conf->global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="4"' : ' colspan="3"'); ?>>
|
||||
<?php
|
||||
@ -128,25 +122,25 @@ else {
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td align="right"><input type="hidden" name="price_ht"><input type="text" size="2" name="qty" class="flat" value="1"></td>
|
||||
<td align="right" class="nowrap"><input type="text" size="1" class="flat" name="remise_percent" value="<?php echo $buyer->remise_percent; ?>"><span class="hideonsmartphone">%</span></td>
|
||||
<td align="right"><input type="hidden" name="price_ht_predef"><input type="text" size="2" name="qty_predef" class="flat" value="1"></td>
|
||||
<td align="right" class="nowrap"><input type="text" size="1" class="flat" name="remise_percent_predef" value="<?php echo $buyer->remise_percent; ?>"><span class="hideonsmartphone">%</span></td>
|
||||
<?php
|
||||
$colspan = 4;
|
||||
if (! empty($usemargins))
|
||||
{
|
||||
?>
|
||||
<td align="right">
|
||||
<select id="fournprice" name="fournprice" class="flat" style="display: none;"></select>
|
||||
<input type="text" size="5" id="buying_price" name="buying_price" class="flat" value="<?php echo (isset($_POST["buying_price"])?$_POST["buying_price"]:''); ?>">
|
||||
<select id="fournprice_predef" name="fournprice_predef" class="flat" style="display: none;"></select>
|
||||
<input type="text" size="5" id="buying_price_predef" name="buying_price_predef" class="flat" value="<?php echo (isset($_POST["buying_price_predef"])?$_POST["buying_price_predef"]:''); ?>">
|
||||
</td>
|
||||
<?php
|
||||
if ($user->rights->margins->creer)
|
||||
{
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
echo '<td align="right"><input type="text" size="2" name="np_marginRate" value="'.(isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:'').'">%</td>';
|
||||
echo '<td align="right"><input type="text" size="2" name="np_marginRate_predef" value="'.(isset($_POST["np_marginRate_predef"])?$_POST["np_marginRate_predef"]:'').'">%</td>';
|
||||
}
|
||||
elseif (! empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
echo '<td align="right"><input type="text" size="2" name="np_markRate" value="'.(isset($_POST["np_markRate"])?$_POST["np_markRate"]:'').'">%</td>';
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
echo '<td align="right"><input type="text" size="2" name="np_markRate_predef" value="'.(isset($_POST["np_markRate_predef"])?$_POST["np_markRate_predef"]:'').'">%</td>';
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -163,7 +157,7 @@ else {
|
||||
}
|
||||
?>
|
||||
<td align="center" valign="middle" colspan="<?php echo $colspan; ?>">
|
||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_predefined">
|
||||
<input type="submit" class="button" value="<?php echo $langs->trans('Add'); ?>" name="addline_predefined" id="addline_predefined">
|
||||
</td>
|
||||
<?php
|
||||
//Line extrafield
|
||||
@ -203,9 +197,9 @@ if (! empty($conf->service->enabled) && $dateSelector)
|
||||
if (! empty($object->element) && $object->element == 'contrat')
|
||||
{
|
||||
print $langs->trans("DateStartPlanned").' ';
|
||||
$form->select_date('',"date_start",$usehm,$usehm,1,"addline");
|
||||
$form->select_date('',"date_start_predef",$usehm,$usehm,1,"addline");
|
||||
print ' '.$langs->trans("DateEndPlanned").' ';
|
||||
$form->select_date('',"date_end",$usehm,$usehm,1,"addline");
|
||||
$form->select_date('',"date_end_predef",$usehm,$usehm,1,"addline");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -221,7 +215,6 @@ if (! empty($conf->service->enabled) && $dateSelector)
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
@ -230,52 +223,48 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
var npRate = null;
|
||||
<?php
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
|
||||
npRate = "np_marginRate";
|
||||
<?php }
|
||||
elseif (! empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
||||
npRate = "np_markRate";
|
||||
<?php }
|
||||
?>
|
||||
|
||||
$("form#addpredefinedproduct").submit(function(e) {
|
||||
if (npRate) return checkLine(e, npRate);
|
||||
else return true;
|
||||
});
|
||||
if (npRate == 'np_marginRate') {
|
||||
$("input[name='np_marginRate']:last").blur(function(e) {
|
||||
return checkLine(e, npRate);
|
||||
$('#addline_predefined').click(function (e) {
|
||||
return checkLine(e, "np_marginRate_predef");
|
||||
});
|
||||
$("input[name='np_marginRate_predef']:last").blur(function(e) {
|
||||
return checkLine(e, "np_marginRate_predef");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
else {
|
||||
if (npRate == 'np_markRate') {
|
||||
$("input[name='np_markRate']:last").blur(function(e) {
|
||||
return checkLine(e, npRate);
|
||||
});
|
||||
}
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
?>
|
||||
$('#addline_predefined').click(function (e) {
|
||||
return checkLine(e, "np_markRate_predef");
|
||||
});
|
||||
$("input[name='np_marginRate_predef']:last").blur(function(e) {
|
||||
return checkLine(e, "np_markRate_predef");
|
||||
});
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
});
|
||||
|
||||
// TODO This works for french numbers only
|
||||
function checkLine(e, npRate)
|
||||
{
|
||||
var buying_price = $("input[name='buying_price']:last");
|
||||
var remise = $("input[name='remise_percent']:last");
|
||||
var buying_price = $("input[name='buying_price_predef']:last");
|
||||
var remise = $("input[name='remise_percent_predef']:last");
|
||||
|
||||
var rate = $("input[name='"+npRate+"']:last");
|
||||
if (rate.val() == '')
|
||||
return true;
|
||||
if (! $.isNumeric(rate.val().replace(',','.')))
|
||||
{
|
||||
alert('<?php echo $langs->trans("rateMustBeNumeric"); ?>');
|
||||
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
}
|
||||
if (npRate == "np_markRate" && rate.val() >= 100)
|
||||
if (npRate == "np_markRate_predef" && rate.val() >= 100)
|
||||
{
|
||||
alert('<?php echo $langs->trans("markRateShouldBeLesserThan100"); ?>');
|
||||
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
|
||||
e.stopPropagation();
|
||||
setTimeout(function () { rate.focus() }, 50);
|
||||
return false;
|
||||
@ -284,18 +273,19 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
var np_price = 0;
|
||||
if (remise.val().replace(',','.') != 100)
|
||||
{
|
||||
if (npRate == "np_marginRate")
|
||||
if (npRate == "np_marginRate_predef")
|
||||
np_price = ((buying_price.val().replace(',','.') * (1 + rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
else {
|
||||
if (npRate == "np_markRate")
|
||||
if (npRate == "np_markRate_predef")
|
||||
np_price = ((buying_price.val().replace(',','.') / (1 - rate.val().replace(',','.') / 100)) / (1 - remise.val().replace(',','.') / 100));
|
||||
}
|
||||
}
|
||||
$("input[name='price_ht']:last").val(formatFloat(np_price));
|
||||
$("input[name='price_ht_predef']:last").val(roundFloat(np_price));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO This works for french numbers only
|
||||
function roundFloat(num) {
|
||||
var main_max_dec_shown = <?php echo $conf->global->MAIN_MAX_DECIMALS_SHOWN; ?>;
|
||||
var main_rounding = <?php echo min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?>;
|
||||
@ -319,16 +309,12 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
return parseFloat(amount).toFixed(rounding);
|
||||
}
|
||||
|
||||
function formatFloat(num) {
|
||||
return roundFloat(num).replace('.', ',');
|
||||
}
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
$("#idprod").change(function()
|
||||
{
|
||||
$("#fournprice options").remove();
|
||||
$("#fournprice").hide();
|
||||
$("#buying_price").val("").show();
|
||||
$("#fournprice_predef options").remove();
|
||||
$("#fournprice_predef").hide();
|
||||
$("#buying_price_predef").val("").show();
|
||||
$.post('<?php echo DOL_URL_ROOT; ?>/fourn/ajax/getSupplierPrices.php', { 'idprod': $(this).val() }, function(data) {
|
||||
if (data && data.length > 0)
|
||||
{
|
||||
@ -339,19 +325,19 @@ if (! empty($usemargins) && $user->rights->margins->creer)
|
||||
options += '<option value="'+this.id+'" price="'+this.price+'"';
|
||||
if (i == 1) {
|
||||
options += ' selected';
|
||||
$("#buying_price").val(this.price);
|
||||
$("#buying_price_predef").val(this.price);
|
||||
}
|
||||
options += '>'+this.label+'</option>';
|
||||
});
|
||||
options += '<option value=""><?php echo $langs->trans("InputPrice"); ?></option>';
|
||||
$("#buying_price").hide();
|
||||
$("#fournprice").html(options).show();
|
||||
$("#fournprice").change(function() {
|
||||
$("#buying_price_predef").hide();
|
||||
$("#fournprice_predef").html(options).show();
|
||||
$("#fournprice_predef").change(function() {
|
||||
var selval = $(this).find('option:selected').attr("price");
|
||||
if (selval)
|
||||
$("#buying_price").val(selval).hide();
|
||||
$("#buying_price_predef").val(selval).hide();
|
||||
else
|
||||
$('#buying_price').show();
|
||||
$('#buying_price_predef').show();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@ -120,7 +120,7 @@ if ($action=='add')
|
||||
$object->unitfrequency=GETPOST('unitfrequency','int');
|
||||
$object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
|
||||
|
||||
//Add cron task
|
||||
// Add cron task
|
||||
$result = $object->create($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -154,7 +154,7 @@ if ($action=='update')
|
||||
$object->unitfrequency=GETPOST('unitfrequency','int');
|
||||
$object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
|
||||
|
||||
//Add cron task
|
||||
// Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -172,7 +172,7 @@ if ($action=='activate')
|
||||
{
|
||||
$object->status=1;
|
||||
|
||||
//Add cron task
|
||||
// Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -189,7 +189,8 @@ if ($action=='activate')
|
||||
if ($action=='inactive')
|
||||
{
|
||||
$object->status=0;
|
||||
//Add cron task
|
||||
|
||||
// Add cron task
|
||||
$result = $object->update($user);
|
||||
|
||||
// test du Resultat de la requete
|
||||
@ -250,13 +251,13 @@ if ($conf->use_javascript_ajax)
|
||||
if ($action == 'delete')
|
||||
{
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("CronDelete"),$langs->trans("CronConfirmDelete"),"confirm_delete",'','',1);
|
||||
|
||||
|
||||
$action='';
|
||||
}
|
||||
|
||||
if ($action == 'execute'){
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("CronExecute"),$langs->trans("CronConfirmExecute"),"confirm_execute",'','',1);
|
||||
|
||||
|
||||
$action='';
|
||||
}
|
||||
|
||||
@ -623,4 +624,4 @@ if (($action=="create") || ($action=="edit"))
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -53,6 +53,7 @@ $action=GETPOST("action");
|
||||
$section=GETPOST("section")?GETPOST("section","int"):GETPOST("section_id","int");
|
||||
$module=GETPOST("module");
|
||||
if (! $section) $section=0;
|
||||
$section_dir=GETPOST('section_dir');
|
||||
|
||||
$sortfield = GETPOST("sortfield",'alpha');
|
||||
$sortorder = GETPOST("sortorder",'alpha');
|
||||
@ -93,7 +94,7 @@ if (GETPOST("sendit") && ! empty($conf->global->MAIN_UPLOAD_DOC))
|
||||
// Define relativepath and upload_dir
|
||||
$relativepath='';
|
||||
if ($ecmdir->id) $relativepath=$ecmdir->getRelativePath();
|
||||
else $relativepath=GETPOST('section_dir');
|
||||
else $relativepath=$section_dir;
|
||||
$upload_dir = $conf->ecm->dir_output.'/'.$relativepath;
|
||||
|
||||
if (empty($_FILES['userfile']['tmp_name']))
|
||||
@ -167,16 +168,20 @@ if ($action == 'confirm_deletefile')
|
||||
{
|
||||
if (GETPOST('confirm') == 'yes')
|
||||
{
|
||||
$langs->load("other");
|
||||
$result=$ecmdir->fetch($section);
|
||||
if (! ($result > 0))
|
||||
$langs->load("other");
|
||||
if ($section)
|
||||
{
|
||||
dol_print_error($db,$ecmdir->error);
|
||||
exit;
|
||||
$result=$ecmdir->fetch($section);
|
||||
if (! ($result > 0))
|
||||
{
|
||||
dol_print_error($db,$ecmdir->error);
|
||||
exit;
|
||||
}
|
||||
$relativepath=$ecmdir->getRelativePath();
|
||||
}
|
||||
$relativepath=$ecmdir->getRelativePath();
|
||||
$upload_dir = $conf->ecm->dir_output.'/'.$relativepath;
|
||||
$file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
||||
else $relativepath='';
|
||||
$upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:'');
|
||||
$file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP).
|
||||
|
||||
$ret=dol_delete_file($file);
|
||||
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
|
||||
@ -391,7 +396,7 @@ if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) {
|
||||
if (! empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); }
|
||||
if (! empty($conf->fournisseur->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); }
|
||||
if (! empty($conf->tax->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'tax', 'test'=>$conf->tax->enabled, 'label'=>$langs->trans("SocialContributions"), 'desc'=>$langs->trans("ECMDocsBySocialContributions")); }
|
||||
if (! empty($conf->projet->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'project', 'test'=>$conf->projet->enabled, 'label'=>$langs->trans("Projects"), 'desc'=>$langs->trans("ECMDocsByProjects")); }
|
||||
if (! empty($conf->projet->enabled)) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'project', 'test'=>$conf->projet->enabled, 'label'=>$langs->trans("Projects"), 'desc'=>$langs->trans("ECMDocsByProjects")); }
|
||||
}
|
||||
|
||||
print_fiche_titre($langs->trans("ECMArea").' - '.$langs->trans("ECMFileManager"));
|
||||
@ -461,7 +466,6 @@ if ($action == 'delete_section')
|
||||
// End confirm
|
||||
|
||||
|
||||
|
||||
if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$action) || $action == 'delete')
|
||||
{
|
||||
print '<table width="100%" class="nobordernopadding">';
|
||||
@ -774,8 +778,19 @@ include_once DOL_DOCUMENT_ROOT.'/core/ajax/ajaxdirpreview.php';
|
||||
// To attach new file
|
||||
if ((! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS)) || ! empty($section))
|
||||
{
|
||||
if (empty($section) || $section == -1)
|
||||
{
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery('#formuserfile').hide();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
$formfile=new FormFile($db);
|
||||
$formfile->form_attach_new_file(DOL_URL_ROOT.'/ecm/index.php', 'none', 0, ($section?$section:-1), $user->rights->ecm->upload, 48, null, '', 0, '', 0);
|
||||
$formfile->form_attach_new_file(DOL_URL_ROOT.'/ecm/index.php', 'none', 0, ($section?$section:-1), $user->rights->ecm->upload, 48, null, '', 0, '', 0, 'formuserfile');
|
||||
}
|
||||
else print ' ';
|
||||
|
||||
@ -789,6 +804,8 @@ else print ' ';
|
||||
<?php
|
||||
// End of page
|
||||
|
||||
|
||||
|
||||
if (! empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_ECM_DISABLE_JS)) {
|
||||
include 'tpl/builddatabase.tpl.php';
|
||||
}
|
||||
|
||||
@ -13,28 +13,39 @@
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Output javascript for interactions code of ecm module
|
||||
*/
|
||||
|
||||
$openeddir='/';
|
||||
|
||||
// TODO: just use ajaxdirtree.php for load database after ajax refresh and not scan directories
|
||||
// too slow every page loaded !
|
||||
|
||||
?>
|
||||
|
||||
<!-- BEGIN PHP TEMPLATE FOR JQUERY -->
|
||||
<!-- BEGIN PHP TEMPLATE ecm/tpl/builddatabase.tpl.php -->
|
||||
<!-- Doc of fileTree plugin at http://www.abeautifulsite.net/blog/2008/03/jquery-file-tree/ -->
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready( function() {
|
||||
$('#filetree').fileTree({ root: '<?php print dol_escape_js($openeddir); ?>',
|
||||
// Called if we click on a file (not a dir)
|
||||
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxdirtree.php?modulepart=ecm&openeddir='.urlencode($openeddir); ?>',
|
||||
folderEvent: 'click',
|
||||
multiFolder: false },
|
||||
// Called if we click on a file (not a dir)
|
||||
|
||||
<?php
|
||||
$openeddir='/';
|
||||
?>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$('#filetree').fileTree({
|
||||
root: '<?php print dol_escape_js($openeddir); ?>',
|
||||
// Ajax called if we click to expand a dir (not a file). Parameter of dir is provided as a POST parameter.
|
||||
script: '<?php echo DOL_URL_ROOT.'/core/ajax/ajaxdirtree.php?modulepart=ecm&openeddir='.urlencode($openeddir); ?>',
|
||||
folderEvent: 'click', // 'dblclick'
|
||||
multiFolder: false },
|
||||
// Called if we click on a file (not a dir)
|
||||
function(file) {
|
||||
$("#mesg").hide();
|
||||
loadandshowpreview(file,0);
|
||||
},
|
||||
// Called if we click on a dir (not a file)
|
||||
function(elem) {
|
||||
id=elem.attr('id').substr(12);
|
||||
jQuery("#formuserfile_section_dir").val(elem.attr('rel'));
|
||||
jQuery("#formuserfile_section_id").val(id);
|
||||
jQuery('#formuserfile').show();
|
||||
}
|
||||
);
|
||||
|
||||
@ -78,5 +89,6 @@ ecmBuildDatabase = function() {
|
||||
location.href="<?php echo $_SERVER['PHP_SELF']; ?>";
|
||||
});
|
||||
};
|
||||
|
||||
</script>
|
||||
<!-- END PHP TEMPLATE FOR JQUERY -->
|
||||
<!-- END PHP TEMPLATE ecm/tpl/builddatabase.tpl.php -->
|
||||
@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/modules/fichinter/modules_fichinter.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/fichinter.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcontract.class.php';
|
||||
|
||||
if (! empty($conf->projet->enabled))
|
||||
{
|
||||
|
||||
@ -1229,16 +1229,16 @@ class CommandeFournisseur extends CommonOrder
|
||||
// qty, pu, remise_percent et txtva
|
||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||
|
||||
|
||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty);
|
||||
|
||||
|
||||
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $this->thirdparty, $localtaxes_type);
|
||||
$total_ht = $tabprice[0];
|
||||
$total_tva = $tabprice[1];
|
||||
$total_ttc = $tabprice[2];
|
||||
$total_localtax1 = $tabprice[9];
|
||||
$total_localtax2 = $tabprice[10];
|
||||
|
||||
|
||||
$localtax1_type=$localtaxes_type[0];
|
||||
$localtax2_type=$localtaxes_type[2];
|
||||
|
||||
@ -1255,10 +1255,10 @@ class CommandeFournisseur extends CommonOrder
|
||||
else { $sql.= "null,"; }
|
||||
$sql.= "'".$product_type."',";
|
||||
$sql.= "'".$qty."', ".$txtva.", ".$txlocaltax1.", ".$txlocaltax2;
|
||||
|
||||
|
||||
$sql.= ", '".$localtax1_type."',";
|
||||
$sql.= " '".$localtax2_type."'";
|
||||
|
||||
|
||||
$sql.= ", ".$remise_percent.",'".price2num($subprice,'MU')."','".$ref."',";
|
||||
$sql.= "'".price2num($total_ht)."',";
|
||||
$sql.= "'".price2num($total_tva)."',";
|
||||
@ -1790,16 +1790,16 @@ class CommandeFournisseur extends CommonOrder
|
||||
// qty, pu, remise_percent et txtva
|
||||
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
|
||||
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
|
||||
|
||||
|
||||
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty);
|
||||
|
||||
|
||||
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty, $localtaxes_type);
|
||||
$total_ht = $tabprice[0];
|
||||
$total_tva = $tabprice[1];
|
||||
$total_ttc = $tabprice[2];
|
||||
$total_localtax1 = $tabprice[9];
|
||||
$total_localtax2 = $tabprice[10];
|
||||
|
||||
|
||||
$localtax1_type=$localtaxes_type[0];
|
||||
$localtax2_type=$localtaxes_type[2];
|
||||
|
||||
|
||||
@ -222,7 +222,7 @@ class ProductFournisseur extends Product
|
||||
{
|
||||
// Add price for this quantity to supplier
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price(";
|
||||
$sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, entity, info_bits)";
|
||||
$sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, info_bits, entity)";
|
||||
$sql.= " values('".$this->db->idate($now)."',";
|
||||
$sql.= " ".$this->id.",";
|
||||
$sql.= " ".$fourn->id.",";
|
||||
@ -512,4 +512,4 @@ class ProductFournisseur extends Product
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
/**
|
||||
* \file htdocs/fourn/commande/document.php
|
||||
* \ingroup supplier
|
||||
* \brief Page de gestion des documents attaches a une commande fournisseur
|
||||
* \brief Management page of attached documents to a supplier order
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
|
||||
@ -181,160 +181,195 @@ else if ($action == 'addline' && $user->rights->fournisseur->commande->creer)
|
||||
$langs->load('errors');
|
||||
$error = 0;
|
||||
|
||||
if (GETPOST('pu') < 0 && GETPOST('qty') < 0)
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
{
|
||||
$predef='';
|
||||
$idprod=0;
|
||||
$product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):'');
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
{
|
||||
$predef=(($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):''));
|
||||
$price_ht = '';
|
||||
$tva_tx = '';
|
||||
}
|
||||
$qty = GETPOST('qty'.$predef);
|
||||
$remise_percent=GETPOST('remise_percent'.$predef);
|
||||
|
||||
if (GETPOST('addline_libre') && GETPOST('pu') < 0 && $qty < 0)
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPrice'), $langs->transnoentitiesnoconv('Qty')), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (! GETPOST('idprodfournprice') && GETPOST('type') < 0)
|
||||
if (GETPOST('addline_libre') && ! GETPOST('idprodfournprice') && GETPOST('type') < 0)
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (! GETPOST('idprodfournprice') && (! GETPOST('pu') || GETPOST('pu')=='')) // Unit price can be 0 but not ''
|
||||
if (! GETPOST('addline_predefined') && (! GETPOST('pu') || GETPOST('pu')=='')) // Unit price can be 0 but not ''
|
||||
{
|
||||
setEventMessage($langs->trans($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('UnitPrice'))), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (! GETPOST('idprodfournprice') && ! GETPOST('np_desc') && ! GETPOST('dp_desc'))
|
||||
if (! GETPOST('addline_predefined') && ! GETPOST('np_desc') && ! GETPOST('dp_desc'))
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (! GETPOST('idprodfournprice') && (! GETPOST('qty') || GETPOST('qty') == '')
|
||||
|| GETPOST('idprodfournprice') && (! GETPOST('pqty') || GETPOST('pqty') == ''))
|
||||
if ((! GETPOST('addline_predefined') && (! GETPOST('qty') || GETPOST('qty') == ''))
|
||||
|| (GETPOST('addline_predefined') && (! GETPOST('qty_predef') || GETPOST('qty_predef') == '')))
|
||||
{
|
||||
setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors');
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (! $error && ((GETPOST('qty') || GETPOST('pqty')) && ((GETPOST('pu') && (GETPOST('np_desc') || GETPOST('dp_desc'))) || GETPOST('idprodfournprice'))))
|
||||
// Ecrase $pu par celui du produit
|
||||
// Ecrase $desc par celui du produit
|
||||
// Ecrase $txtva par celui du produit
|
||||
if (GETPOST('addline_predefined') || GETPOST('idprodfournprice')) // With combolist idprodfournprice is > 0 or -1. With autocomplete, idprodfournprice is > 0 or ''
|
||||
{
|
||||
// Ecrase $pu par celui du produit
|
||||
// Ecrase $desc par celui du produit
|
||||
// Ecrase $txtva par celui du produit
|
||||
if (GETPOST('idprodfournprice')) // >0 or -1
|
||||
{
|
||||
$qty = GETPOST('qty') ? GETPOST('qty') : GETPOST('pqty');
|
||||
$idprod=0;
|
||||
$productsupplier = new ProductFournisseur($db);
|
||||
|
||||
$productsupplier = new ProductFournisseur($db);
|
||||
$idprod=$productsupplier->get_buyprice($_POST['idprodfournprice'], $qty); // Just to see if a price exists for the quantity. Not used to found vat
|
||||
if (GETPOST('idprodfournprice') == '')
|
||||
{
|
||||
$idprod=-1;
|
||||
}
|
||||
if (GETPOST('idprodfournprice') > 0)
|
||||
{
|
||||
$idprod=$productsupplier->get_buyprice(GETPOST('idprodfournprice'), $qty); // Just to see if a price exists for the quantity. Not used to found vat
|
||||
}
|
||||
|
||||
if ($idprod > 0)
|
||||
{
|
||||
$res=$productsupplier->fetch($idprod);
|
||||
if ($idprod > 0)
|
||||
{
|
||||
$res=$productsupplier->fetch($idprod);
|
||||
|
||||
// cas special pour lequel on a les meme reference que le fournisseur
|
||||
// $label = '['.$nv_prod->ref.'] - '. $nv_prod->libelle;
|
||||
$label = $productsupplier->libelle;
|
||||
$label = $productsupplier->libelle;
|
||||
|
||||
$desc = $productsupplier->description;
|
||||
$desc.= $productsupplier->description && $_POST['np_desc'] ? "\n" : "";
|
||||
$desc.= $_POST['np_desc'];
|
||||
$desc = $productsupplier->description;
|
||||
if (trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc);
|
||||
|
||||
$remise_percent = GETPOST('remise_percent') ? GETPOST('remise_percent') : GETPOST('p_remise_percent');
|
||||
$tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice'));
|
||||
$type = $productsupplier->type;
|
||||
|
||||
$tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice'));
|
||||
$type = $productsupplier->type;
|
||||
// Local Taxes
|
||||
$localtax1_tx= get_localtax($tva_tx, 1,$mysoc,$object->thirdparty);
|
||||
$localtax2_tx= get_localtax($tva_tx, 2,$mysoc,$object->thirdparty);
|
||||
|
||||
// Local Taxes
|
||||
$localtax1_tx= get_localtax($tva_tx, 1,$mysoc,$object->thirdparty);
|
||||
$localtax2_tx= get_localtax($tva_tx, 2,$mysoc,$object->thirdparty);
|
||||
$result=$object->addline(
|
||||
$desc,
|
||||
$productsupplier->fourn_pu,
|
||||
$qty,
|
||||
$tva_tx,
|
||||
$localtax1_tx,
|
||||
$localtax2_tx,
|
||||
$productsupplier->id,
|
||||
GETPOST('idprodfournprice'),
|
||||
$productsupplier->fourn_ref,
|
||||
$remise_percent,
|
||||
'HT',
|
||||
$type
|
||||
);
|
||||
}
|
||||
if ($idprod == 0)
|
||||
{
|
||||
// Product not selected
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("ProductOrService")), 'errors');
|
||||
}
|
||||
if ($idprod == -1)
|
||||
{
|
||||
// Quantity too low
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$type=$_POST["type"];
|
||||
$desc=$_POST['dp_desc'];
|
||||
$tva_tx = price2num($_POST['tva_tx']);
|
||||
|
||||
$result=$object->addline(
|
||||
$desc,
|
||||
$pu, // FIXME $pu is not defined
|
||||
$qty,
|
||||
$tva_tx,
|
||||
$localtax1_tx,
|
||||
$localtax2_tx,
|
||||
$productsupplier->id,
|
||||
GETPOST('idprodfournprice'),
|
||||
$productsupplier->fourn_ref,
|
||||
$remise_percent,
|
||||
'HT',
|
||||
$type
|
||||
);
|
||||
}
|
||||
if ($idprod == -1)
|
||||
{
|
||||
// Quantity too low
|
||||
setEventMessage($langs->trans("ErrorQtyTooLowForThisSupplier"), 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$type=$_POST["type"];
|
||||
$desc=$_POST['dp_desc'];
|
||||
$tva_tx = price2num($_POST['tva_tx']);
|
||||
// Local Taxes
|
||||
$localtax1_tx= get_localtax($tva_tx, 1,$mysoc,$object->thirdparty);
|
||||
$localtax2_tx= get_localtax($tva_tx, 2,$mysoc,$object->thirdparty);
|
||||
|
||||
// Local Taxes
|
||||
$localtax1_tx= get_localtax($tva_tx, 1,$mysoc,$object->thirdparty);
|
||||
$localtax2_tx= get_localtax($tva_tx, 2,$mysoc,$object->thirdparty);
|
||||
if (! $product_desc)
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!empty($_POST['pu']))
|
||||
{
|
||||
$price_base_type = 'HT';
|
||||
$ht = price2num($_POST['pu']);
|
||||
$result=$object->addline($desc, $ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $remise_percent, $price_base_type, 0, $type);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ttc = price2num($_POST['amountttc']);
|
||||
$ht = $ttc / (1 + ($tauxtva / 100));
|
||||
$price_base_type = 'HT';
|
||||
$result=$object->addline($desc, $ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $remise_percent, $price_base_type, $ttc, $type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! $_POST['dp_desc'])
|
||||
{
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!empty($_POST['pu']))
|
||||
{
|
||||
$price_base_type = 'HT';
|
||||
$ht = price2num($_POST['pu']);
|
||||
$result=$object->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, 0, $type);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ttc = price2num($_POST['amountttc']);
|
||||
$ht = $ttc / (1 + ($tauxtva / 100));
|
||||
$price_base_type = 'HT';
|
||||
$result=$object->addline($desc, $ht, $_POST['qty'], $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $_POST['remise_percent'], $price_base_type, $ttc, $type);
|
||||
}
|
||||
}
|
||||
}
|
||||
//print "xx".$tva_tx; exit;
|
||||
if (! $error && $result > 0)
|
||||
{
|
||||
$ret=$object->fetch($object->id); // Reload to get new records
|
||||
|
||||
//print "xx".$tva_tx; exit;
|
||||
if ($result > 0)
|
||||
{
|
||||
$ret=$object->fetch($object->id); // Reload to get new records
|
||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||
{
|
||||
// Define output language
|
||||
$outputlangs = $langs;
|
||||
$newlang=GETPOST('lang_id','alpha');
|
||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
|
||||
if (! empty($newlang))
|
||||
{
|
||||
$outputlangs = new Translate("",$conf);
|
||||
$outputlangs->setDefaultLang($newlang);
|
||||
}
|
||||
|
||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||
{
|
||||
// Define output language
|
||||
$outputlangs = $langs;
|
||||
$newlang=GETPOST('lang_id','alpha');
|
||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang;
|
||||
if (! empty($newlang))
|
||||
{
|
||||
$outputlangs = new Translate("",$conf);
|
||||
$outputlangs->setDefaultLang($newlang);
|
||||
}
|
||||
supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||
}
|
||||
|
||||
supplier_order_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||
}
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['idprodfournprice']);
|
||||
unset($_POST['remmise_percent']);
|
||||
unset($_POST['dp_desc']);
|
||||
unset($_POST['np_desc']);
|
||||
unset($_POST['pu']);
|
||||
unset($_POST['tva_tx']);
|
||||
unset($localtax1_tx);
|
||||
unset($localtax2_tx);
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['remise_percent']);
|
||||
unset($_POST['dp_desc']);
|
||||
unset($_POST['pu']);
|
||||
unset($_POST['tva_tx']);
|
||||
unset($_POST['label']);
|
||||
unset($localtax1_tx);
|
||||
unset($localtax2_tx);
|
||||
|
||||
unset($_POST['idprodfournprice']);
|
||||
unset($_POST['qty_predef']);
|
||||
unset($_POST['remise_percent_predef']);
|
||||
unset($_POST['fournprice_predef']);
|
||||
unset($_POST['buying_price_predef']);
|
||||
unset($_POST['np_desc']);
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Mise a jour d'une ligne dans la commande
|
||||
*/
|
||||
else if ($action == 'updateligne' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save'))
|
||||
else if ($action == 'update_line' && $user->rights->fournisseur->commande->creer && $_POST['save'] == $langs->trans('Save'))
|
||||
{
|
||||
if ($_POST["elrowid"])
|
||||
{
|
||||
@ -630,7 +665,7 @@ else if ($action == 'builddoc' && $user->rights->fournisseur->commande->creer) /
|
||||
|
||||
// Save last template used to generate document
|
||||
if (GETPOST('model')) $object->setDocModel($user, GETPOST('model','alpha'));
|
||||
|
||||
|
||||
$outputlangs = $langs;
|
||||
if (GETPOST('lang_id'))
|
||||
{
|
||||
@ -973,7 +1008,7 @@ if ($action=="create")
|
||||
$societe=new Societe($db);
|
||||
$societe->fetch($socid);
|
||||
}
|
||||
|
||||
|
||||
$cond_reglement_id = $societe->cond_reglement_supplier_id;
|
||||
$mode_reglement_id = $societe->mode_reglement_supplier_id;
|
||||
|
||||
@ -1005,7 +1040,7 @@ if ($action=="create")
|
||||
print '</tr>';
|
||||
|
||||
print '</td></tr>';
|
||||
|
||||
|
||||
// Payment term
|
||||
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';
|
||||
$form->select_conditions_paiements(isset($_POST['cond_reglement_id'])?$_POST['cond_reglement_id']:$cond_reglement_id,'cond_reglement_id');
|
||||
@ -1061,7 +1096,7 @@ elseif (! empty($object->id))
|
||||
if ($action == 'delete')
|
||||
{
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteOrder'), $langs->trans('ConfirmDeleteOrder'), 'confirm_delete', '', 0, 2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Clone confirmation
|
||||
@ -1073,7 +1108,7 @@ elseif (! empty($object->id))
|
||||
);
|
||||
// Paiement incomplet. On demande si motif = escompte ou autre
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id,$langs->trans('CloneOrder'),$langs->trans('ConfirmCloneOrder',$object->ref),'confirm_clone',$formquestion,'yes',1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1097,7 +1132,7 @@ elseif (! empty($object->id))
|
||||
}
|
||||
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_valid', '', 0, 1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1120,7 +1155,7 @@ elseif (! empty($object->id))
|
||||
}
|
||||
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder",$object->ref),"confirm_approve", $formquestion, 1, 1, 240);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1129,7 +1164,7 @@ elseif (! empty($object->id))
|
||||
if ($action == 'refuse')
|
||||
{
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=$object->id",$langs->trans("DenyingThisOrder"),$langs->trans("ConfirmDenyingThisOrder",$object->ref),"confirm_refuse", '', 0, 1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1138,7 +1173,7 @@ elseif (! empty($object->id))
|
||||
if ($action == 'cancel')
|
||||
{
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=$object->id",$langs->trans("Cancel"),$langs->trans("ConfirmCancelThisOrder",$object->ref),"confirm_cancel", '', 0, 1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1148,7 +1183,7 @@ elseif (! empty($object->id))
|
||||
{
|
||||
$date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
|
||||
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id."&datecommande=".$date_com."&methode=".$_POST["methodecommande"]."&comment=".urlencode($_POST["comment"]), $langs->trans("MakeOrder"),$langs->trans("ConfirmMakeOrder",dol_print_date($date_com,'day')),"confirm_commande",'',0,2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1157,7 +1192,7 @@ elseif (! empty($object->id))
|
||||
if ($action == 'delete_product_line')
|
||||
{
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$_GET["lineid"], $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteproductline','',0,2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1381,8 +1416,20 @@ elseif (! empty($object->id))
|
||||
|
||||
/*
|
||||
* Lines
|
||||
*/
|
||||
print '<table class="noborder" width="100%">';
|
||||
*/
|
||||
|
||||
|
||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?etat=1&id='.$object->id.(($action != 'edit_line')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
|
||||
<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
|
||||
<input type="hidden" name="action" value="'.(($action != 'edit_line')?'addline':'update_line').'">
|
||||
<input type="hidden" name="mode" value="">
|
||||
<input type="hidden" name="id" value="'.$object->id.'">
|
||||
<input type="hidden" name="facid" value="'.$object->id.'">
|
||||
<input type="hidden" name="socid" value="'.$societe->id.'">
|
||||
';
|
||||
|
||||
|
||||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
||||
|
||||
$num = count($object->lines);
|
||||
$i = 0; $total = 0;
|
||||
@ -1422,8 +1469,8 @@ elseif (! empty($object->id))
|
||||
$type=1;
|
||||
}
|
||||
|
||||
// Ligne en mode visu
|
||||
if ($action != 'editline' || $_GET['rowid'] != $line->id)
|
||||
// Edit line
|
||||
if ($action != 'edit_line' || $_GET['rowid'] != $line->id)
|
||||
{
|
||||
print '<tr '.$bc[$var].'>';
|
||||
|
||||
@ -1478,7 +1525,7 @@ elseif (! empty($object->id))
|
||||
print '<td align="right" class="nowrap">'.price($line->total_ht).'</td>';
|
||||
if ($object->statut == 0 && $user->rights->fournisseur->commande->creer)
|
||||
{
|
||||
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=editline&rowid='.$line->id.'#'.$line->id.'">';
|
||||
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit_line&rowid='.$line->id.'#'.$line->id.'">';
|
||||
print img_edit();
|
||||
print '</a></td>';
|
||||
|
||||
@ -1495,16 +1542,14 @@ elseif (! empty($object->id))
|
||||
}
|
||||
|
||||
// Ligne en mode update
|
||||
if ($action == 'editline' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $line->id))
|
||||
if ($action == 'edit_line' && $user->rights->fournisseur->commande->creer && ($_GET["rowid"] == $line->id))
|
||||
{
|
||||
print "\n";
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&etat=1&ligne_id='.$line->id.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="updateligne">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
print '<input type="hidden" name="elrowid" value="'.$_GET['rowid'].'">';
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td>';
|
||||
|
||||
print '<input type="hidden" name="elrowid" value="'.$_GET['rowid'].'">';
|
||||
|
||||
print '<a name="'.$line->id.'"></a>'; // ancre pour retourner sur la ligne
|
||||
if ((! empty($conf->product->enabled) || ! empty($conf->service->enabled)) && $line->fk_product > 0)
|
||||
{
|
||||
@ -1546,7 +1591,6 @@ elseif (! empty($object->id))
|
||||
print '<td align="center" colspan="4"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
|
||||
print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans('Cancel').'"></td>';
|
||||
print '</tr>' . "\n";
|
||||
print "</form>\n";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
@ -1554,7 +1598,7 @@ elseif (! empty($object->id))
|
||||
/*
|
||||
* Form to add new line
|
||||
*/
|
||||
if ($object->statut == 0 && $user->rights->fournisseur->commande->creer && $action <> 'editline')
|
||||
if ($object->statut == 0 && $user->rights->fournisseur->commande->creer && $action <> 'edit_line')
|
||||
{
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
@ -1571,19 +1615,6 @@ elseif (! empty($object->id))
|
||||
// TODO Use the predefinedproductline_create.tpl.php file
|
||||
|
||||
// Add free products/services form
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'#add" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addline">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
print '<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery(\'#idprodfournprice\').change(function() {
|
||||
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
$var=true;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td>';
|
||||
@ -1611,14 +1642,20 @@ elseif (! empty($object->id))
|
||||
print '<td align="right"><input type="text" name="pu" size="5" value="'.GETPOST('pu').'"></td>';
|
||||
print '<td align="right"><input type="text" name="qty" value="'.(GETPOST('qty')?GETPOST('qty'):'1').'" size="2"></td>';
|
||||
print '<td align="right" class="nowrap"><input type="text" name="remise_percent" size="1" value="'.(GETPOST('remise_percent')?GETPOST('remise_percent'):$object->thirdparty->remise_percent).'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td align="center" colspan="4"><input type="submit" class="button" value="'.$langs->trans('Add').'"></td>';
|
||||
print '<td align="center" colspan="4"><input type="submit" class="button" value="'.$langs->trans('Add').'" name="addline_libre"></td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
// Ajout de produits/services predefinis
|
||||
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
|
||||
{
|
||||
print '<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery(\'#idprodfournprice\').change(function() {
|
||||
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="3">';
|
||||
print $langs->trans("AddNewLine").' - ';
|
||||
@ -1636,21 +1673,16 @@ elseif (! empty($object->id))
|
||||
print '<td colspan="4"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
print '<form id="addpredefinedproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'#add" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="addline">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
$var=!$var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td colspan="3">';
|
||||
|
||||
$ajaxoptions=array(
|
||||
'update' => array('pqty' => 'qty', 'p_remise_percent' => 'discount'),
|
||||
'update' => array('qty_predef' => 'qty_predef', 'remise_percent_predef' => 'remise_percent_predef'),
|
||||
'option_disabled' => 'addPredefinedProductButton',
|
||||
'error' => $langs->trans("NoPriceDefinedForThisSupplier")
|
||||
);
|
||||
$form->select_produits_fournisseurs($object->fourn_id, '', 'idprodfournprice', '', '', $ajaxoptions);
|
||||
$form->select_produits_fournisseurs($object->fourn_id, GETPOST('idprodfournprice'), 'idprodfournprice', '', '', $ajaxoptions);
|
||||
|
||||
if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) print '<br>';
|
||||
|
||||
@ -1666,16 +1698,17 @@ elseif (! empty($object->id))
|
||||
$doleditor->Create();
|
||||
|
||||
print '</td>';
|
||||
print '<td align="right"><input type="text" size="2" id="pqty" name="pqty" value="'.(GETPOST('pqty')?GETPOST('pqty'):'1').'"></td>';
|
||||
print '<td align="right" class="nowrap"><input type="text" size="1" id="p_remise_percent" name="p_remise_percent" value="'.(GETPOST('p_remise_percent')?GETPOST('p_remise_percent'):$object->thirdparty->remise_percent).'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td align="center" colspan="4"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans('Add').'"></td>';
|
||||
print '<td align="right"><input type="text" size="2" id="qty_predef" name="qty_predef" value="'.(GETPOST('qty_predef')?GETPOST('qty_predef'):'1').'"></td>';
|
||||
print '<td align="right" class="nowrap"><input type="text" size="1" id="remise_percent_predef" name="remise_percent_predef" value="'.(GETPOST('remise_percent_predef')?GETPOST('remise_percent_predef'):$object->thirdparty->remise_percent).'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td align="center" colspan="4"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans('Add').'" name="addline_predefined"></td>';
|
||||
print '</tr>';
|
||||
|
||||
print '</form>';
|
||||
}
|
||||
}
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
|
||||
print '</form>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
if ($action != 'presend')
|
||||
@ -1683,7 +1716,7 @@ elseif (! empty($object->id))
|
||||
/**
|
||||
* Boutons actions
|
||||
*/
|
||||
if ($user->societe_id == 0 && $action != 'editline' && $action != 'delete')
|
||||
if ($user->societe_id == 0 && $action != 'edit_line' && $action != 'delete')
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
@ -1801,9 +1834,9 @@ elseif (! empty($object->id))
|
||||
* Linked object block
|
||||
*/
|
||||
$somethingshown=$object->showLinkedObjectBlock();
|
||||
|
||||
|
||||
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
||||
|
||||
|
||||
|
||||
// List of actions on element
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
|
||||
|
||||
@ -477,7 +477,7 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer)
|
||||
}
|
||||
|
||||
// Modification d'une ligne
|
||||
elseif ($action == 'update_line')
|
||||
elseif ($action == 'update_line' && $user->rights->fournisseur->facture->creer)
|
||||
{
|
||||
if (GETPOST('etat') == '1' && ! GETPOST('cancel')) // si on valide la modification
|
||||
{
|
||||
@ -524,8 +524,32 @@ elseif ($action == 'update_line')
|
||||
}
|
||||
}
|
||||
|
||||
elseif ($action == 'addline')
|
||||
elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
|
||||
{
|
||||
$langs->load('errors');
|
||||
$error=0;
|
||||
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
{
|
||||
$predef='';
|
||||
$idprod=0;
|
||||
$product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):'');
|
||||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
{
|
||||
$predef=(($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod=GETPOST('idprod', 'int');
|
||||
$product_desc = (GETPOST('product_desc')?GETPOST('product_desc'):(GETPOST('np_desc')?GETPOST('np_desc'):''));
|
||||
$price_ht = '';
|
||||
$tva_tx = '';
|
||||
}
|
||||
$qty = GETPOST('qty'.$predef);
|
||||
$remise_percent=GETPOST('remise_percent'.$predef);
|
||||
|
||||
|
||||
$ret=$object->fetch($id);
|
||||
if ($ret < 0)
|
||||
{
|
||||
@ -534,10 +558,10 @@ elseif ($action == 'addline')
|
||||
}
|
||||
$ret=$object->fetch_thirdparty();
|
||||
|
||||
if (GETPOST('search_idprodfournprice') || GETPOST('idprodfournprice')) // With combolist idprodfournprice is > 0 or -1, with autocomplete, idprodfournprice is > 0 or ''
|
||||
if (GETPOST('addline_predefined') || GETPOST('search_idprodfournprice') || GETPOST('idprodfournprice')) // With combolist idprodfournprice is > 0 or -1. With autocomplete, idprodfournprice is > 0 or ''
|
||||
{
|
||||
$idprod=0;
|
||||
$product=new Product($db);
|
||||
$productsupplier=new ProductFournisseur($db);
|
||||
|
||||
if (GETPOST('idprodfournprice') == '')
|
||||
{
|
||||
@ -545,33 +569,39 @@ elseif ($action == 'addline')
|
||||
}
|
||||
if (GETPOST('idprodfournprice') > 0)
|
||||
{
|
||||
$idprod=$product->get_buyprice(GETPOST('idprodfournprice'), $_POST['qty']); // Just to see if a price exists for the quantity. Not used to found vat
|
||||
$idprod=$productsupplier->get_buyprice(GETPOST('idprodfournprice'), $qty); // Just to see if a price exists for the quantity. Not used to found vat
|
||||
}
|
||||
|
||||
if ($idprod > 0)
|
||||
{
|
||||
$result=$product->fetch($idprod);
|
||||
$result=$productsupplier->fetch($idprod);
|
||||
|
||||
// cas special pour lequel on a les meme reference que le fournisseur
|
||||
// $label = '['.$product->ref.'] - '. $product->libelle;
|
||||
$label = $product->description;
|
||||
$label.= $product->description && $_POST['np_desc'] ? "\n" : "";
|
||||
$label.= $_POST['np_desc'];
|
||||
$label = $productsupplier->libelle;
|
||||
|
||||
$tvatx=get_default_tva($object->thirdparty, $mysoc, $product->id, $_POST['idprodfournprice']);
|
||||
$npr = get_default_npr($object->thirdparty, $mysoc, $product->id, $_POST['idprodfournprice']);
|
||||
$desc = $productsupplier->description;
|
||||
if (trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc);
|
||||
|
||||
$tvatx=get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, $_POST['idprodfournprice']);
|
||||
$npr = get_default_npr($object->thirdparty, $mysoc, $productsupplier->id, $_POST['idprodfournprice']);
|
||||
|
||||
$localtax1tx= get_localtax($tvatx, 1, $mysoc,$object->thirdparty);
|
||||
$localtax2tx= get_localtax($tvatx, 2, $mysoc,$object->thirdparty);
|
||||
$remise_percent=GETPOST('remise_percent');
|
||||
$type = $product->type;
|
||||
|
||||
$result=$object->addline($label, $product->fourn_pu, $tvatx, $localtax1tx, $localtax2tx, $_POST['qty'], $idprod, $remise_percent, '', '', 0, $npr);
|
||||
$type = $productsupplier->type;
|
||||
|
||||
$result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1tx, $localtax2tx, $qty, $idprod, $remise_percent, '', '', 0, $npr);
|
||||
}
|
||||
if ($idprod == 0)
|
||||
{
|
||||
// Product not selected
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("ProductOrService")).'</div>';
|
||||
}
|
||||
if ($idprod == -1)
|
||||
{
|
||||
// Quantity too low
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorQtyTooLowForThisSupplier").'</div>';
|
||||
}
|
||||
@ -583,35 +613,37 @@ elseif ($action == 'addline')
|
||||
$tauxtva = price2num($tauxtva);
|
||||
$localtax1tx= get_localtax($tauxtva, 1, $mysoc,$object->thirdparty);
|
||||
$localtax2tx= get_localtax($tauxtva, 2, $mysoc,$object->thirdparty);
|
||||
$remise_percent=GETPOST('remise_percent');
|
||||
|
||||
if (! $_POST['dp_desc'])
|
||||
if (! $product_desc)
|
||||
{
|
||||
$error++;
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Description")).'</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$type = $_POST["type"];
|
||||
if (! empty($_POST['amount']))
|
||||
|
||||
if (! empty($_POST['amount']))
|
||||
{
|
||||
$ht = price2num($_POST['amount']);
|
||||
$price_base_type = 'HT';
|
||||
|
||||
//$desc, $pu, $txtva, $qty, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $price_base_type='HT', $type=0)
|
||||
$result=$object->addline($_POST['dp_desc'], $ht, $tauxtva, $localtax1tx, $localtax2tx, $_POST['qty'], 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type);
|
||||
//print $product_desc, $pu, $txtva, $qty, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $price_base_type='HT', $type=0
|
||||
$result=$object->addline($product_desc, $ht, $tauxtva, $localtax1tx, $localtax2tx, $qty, 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ttc = price2num($_POST['amountttc']);
|
||||
$ht = $ttc / (1 + ($tauxtva / 100));
|
||||
$price_base_type = 'HT';
|
||||
$result=$object->addline($_POST['dp_desc'], $ht, $tauxtva,$localtax1tx, $localtax2tx, $_POST['qty'], 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type);
|
||||
//print $product_desc, $pu, $txtva, $qty, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $price_base_type='HT', $type=0
|
||||
$result=$object->addline($product_desc, $ht, $tauxtva,$localtax1tx, $localtax2tx, $qty, 0, $remise_percent, $datestart, $dateend, 0, $npr, $price_base_type, $type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//print "xx".$tva_tx; exit;
|
||||
if ($result > 0)
|
||||
if (! $error && $result > 0)
|
||||
{
|
||||
// Define output language
|
||||
$outputlangs = $langs;
|
||||
@ -622,7 +654,8 @@ elseif ($action == 'addline')
|
||||
$outputlangs = new Translate("",$conf);
|
||||
$outputlangs->setDefaultLang($newlang);
|
||||
}
|
||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
|
||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||
{
|
||||
$result=supplier_invoice_pdf_create($db, $object, $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||
if ($result <= 0)
|
||||
{
|
||||
@ -633,15 +666,20 @@ elseif ($action == 'addline')
|
||||
|
||||
unset($_POST['qty']);
|
||||
unset($_POST['type']);
|
||||
unset($_POST['idprodfournprice']);
|
||||
unset($_POST['remise_percent']);
|
||||
unset($_POST['dp_desc']);
|
||||
unset($_POST['np_desc']);
|
||||
unset($_POST['pu']);
|
||||
unset($_POST['tva_tx']);
|
||||
unset($_POST['label']);
|
||||
unset($localtax1_tx);
|
||||
unset($localtax2_tx);
|
||||
|
||||
unset($_POST['idprodfournprice']);
|
||||
unset($_POST['qty_predef']);
|
||||
unset($_POST['remise_percent_predef']);
|
||||
unset($_POST['fournprice_predef']);
|
||||
unset($_POST['buying_price_predef']);
|
||||
unset($_POST['np_desc']);
|
||||
}
|
||||
else if (empty($mesg))
|
||||
{
|
||||
@ -1103,6 +1141,7 @@ if ($action == 'create')
|
||||
print '<input type="hidden" name="action" value="add">';
|
||||
print '<input type="hidden" name="origin" value="'.GETPOST('origin').'">';
|
||||
print '<input type="hidden" name="originid" value="'.GETPOST('originid').'">';
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
// Ref
|
||||
@ -1374,6 +1413,7 @@ else
|
||||
*/
|
||||
$head = facturefourn_prepare_head($object);
|
||||
$titre=$langs->trans('SupplierInvoice');
|
||||
|
||||
dol_fiche_head($head, 'card', $titre, 0, 'bill');
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
@ -1542,7 +1582,7 @@ else
|
||||
{
|
||||
if ($societe->localtax1_assuj=="1") $nbrows++;
|
||||
if ($societe->localtax2_assuj=="1") $nbrows++;
|
||||
}
|
||||
}
|
||||
print '<td rowspan="'.$nbrows.'" valign="top">';
|
||||
|
||||
$sql = 'SELECT p.datep as dp, p.num_paiement, p.rowid, p.fk_bank,';
|
||||
@ -1790,8 +1830,21 @@ else
|
||||
/*
|
||||
* Lines
|
||||
*/
|
||||
|
||||
|
||||
print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?etat=1&id='.$object->id.(($action != 'edit_line')?'#add':'#line_'.GETPOST('lineid')).'" method="POST">
|
||||
<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">
|
||||
<input type="hidden" name="action" value="'.(($action != 'edit_line')?'addline':'update_line').'">
|
||||
<input type="hidden" name="mode" value="">
|
||||
<input type="hidden" name="id" value="'.$object->id.'">
|
||||
<input type="hidden" name="facid" value="'.$object->id.'">
|
||||
<input type="hidden" name="socid" value="'.$societe->id.'">
|
||||
|
||||
';
|
||||
|
||||
|
||||
print '<br>';
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<table id="tablelines" class="noborder noshadow" width="100%">';
|
||||
$var=1;
|
||||
$num=count($object->lines);
|
||||
for ($i = 0; $i < $num; $i++)
|
||||
@ -1833,13 +1886,13 @@ else
|
||||
// Edit line
|
||||
if ($object->statut == 0 && $action == 'edit_line' && $_GET['etat'] == '0' && $_GET['lineid'] == $object->lines[$i]->rowid)
|
||||
{
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&etat=1&lineid='.$object->lines[$i]->rowid.'" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="update_line">';
|
||||
print '<tr '.$bc[$var].'>';
|
||||
|
||||
// Show product and description
|
||||
print '<td>';
|
||||
|
||||
print '<input type="hidden" name="lineid" value="'.$object->lines[$i]->rowid.'">';
|
||||
|
||||
if ((! empty($conf->product->enabled) || ! empty($conf->service->enabled)) && $object->lines[$i]->fk_product)
|
||||
{
|
||||
print '<input type="hidden" name="idprod" value="'.$object->lines[$i]->fk_product.'">';
|
||||
@ -1888,11 +1941,10 @@ else
|
||||
|
||||
print '<td align="right" class="nowrap"> </td>';
|
||||
|
||||
print '<td align="center" colspan="2"><input type="submit" class="button" value="'.$langs->trans('Save').'">';
|
||||
print '<td align="center" colspan="2"><input type="submit" class="button" name="save" value="'.$langs->trans('Save').'">';
|
||||
print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans('Cancel').'"></td>';
|
||||
|
||||
print '</tr>';
|
||||
print '</form>';
|
||||
}
|
||||
else // Affichage simple de la ligne
|
||||
{
|
||||
@ -1972,7 +2024,7 @@ else
|
||||
|
||||
/*
|
||||
* Form to add new line
|
||||
*/
|
||||
*/
|
||||
|
||||
if ($object->statut == 0 && $action != 'edit_line')
|
||||
{
|
||||
@ -1992,11 +2044,6 @@ else
|
||||
print '</tr>';
|
||||
|
||||
// Add free products/services form
|
||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=addline" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="facid" value="'.$object->id.'">';
|
||||
print '<input type="hidden" name="socid" value="'.$societe->id.'">';
|
||||
|
||||
$var=true;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td>';
|
||||
@ -2022,23 +2069,30 @@ else
|
||||
print $form->load_tva('tauxtva',(GETPOST('tauxtva')?GETPOST('tauxtva'):-1),$societe,$mysoc);
|
||||
print '</td>';
|
||||
print '<td align="right">';
|
||||
print '<input size="4" name="amount" type="text">';
|
||||
print '<input size="4" name="amount" type="text" value="'.GETPOST("amount").'">';
|
||||
print '</td>';
|
||||
print '<td align="right">';
|
||||
print '<input size="4" name="amountttc" type="text">';
|
||||
print '<input size="4" name="amountttc" type="text" value="'.GETPOST("amountttc").'">';
|
||||
print '</td>';
|
||||
print '<td align="right">';
|
||||
print '<input size="1" name="qty" type="text" value="1">';
|
||||
print '<input size="1" name="qty" type="text" value="1" value="'.GETPOST("qty").'">';
|
||||
print '</td>';
|
||||
print '<td align="right" class="nowrap"><input size="1" name="remise_percent" type="text" value="'.(GETPOST('remise_percent')?GETPOST('remise_percent'):'0').'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td> </td>';
|
||||
print '<td> </td>';
|
||||
print '<td align="center" valign="middle" colspan="2"><input type="submit" class="button" value="'.$langs->trans('Add').'"></td></tr>';
|
||||
print '</form>';
|
||||
print '<td align="center" valign="middle" colspan="2"><input type="submit" class="button" value="'.$langs->trans('Add').'" name="addline_libre"></td></tr>';
|
||||
|
||||
// Ajout de produits/services predefinis
|
||||
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
|
||||
{
|
||||
print '<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery(\'#idprodfournprice\').change(function() {
|
||||
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="4">';
|
||||
print $langs->trans("AddNewLine").' - ';
|
||||
@ -2057,30 +2111,16 @@ else
|
||||
print '<td colspan="4"> </td>';
|
||||
print '</tr>';
|
||||
|
||||
// TODO Use the predefinedproductline_create.tpl.php file
|
||||
print '<form name="addline_predef" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=addline" method="post">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="socid" value="'. $object->socid .'">';
|
||||
print '<input type="hidden" name="facid" value="'.$object->id.'">';
|
||||
|
||||
print '<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
jQuery(\'#idprodfournprice\').change(function() {
|
||||
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
$var=! $var;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td colspan="4">';
|
||||
|
||||
$ajaxoptions=array(
|
||||
'update' => array('pqty' => 'qty', 'p_remise_percent' => 'discount'),
|
||||
'update' => array('qty_predef' => 'qty_predef', 'remise_percent_predef' => 'remise_percent_predef'),
|
||||
'disabled' => 'addPredefinedProductButton',
|
||||
'error' => $langs->trans("NoPriceDefinedForThisSupplier")
|
||||
);
|
||||
$form->select_produits_fournisseurs($object->socid, '', 'idprodfournprice', '', '', $ajaxoptions);
|
||||
$form->select_produits_fournisseurs($object->socid, GETPOST('idprodfournprice'), 'idprodfournprice', '', '', $ajaxoptions);
|
||||
|
||||
if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) print '<br>';
|
||||
|
||||
@ -2096,19 +2136,21 @@ else
|
||||
$doleditor->Create();
|
||||
|
||||
print '</td>';
|
||||
print '<td align="right"><input type="text" id="pqty" name="qty" value="1" size="1"></td>';
|
||||
print '<td align="right" class="nowrap"><input size="1" id="p_remise_percent" name="remise_percent" type="text" value="'.(GETPOST('remise_percent')?GETPOST('remise_percent'):'0').'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td align="right"><input type="text" id="qty_predef" name="qty_predef" value="1" size="1"></td>';
|
||||
print '<td align="right" class="nowrap"><input size="1" id="remise_percent_predef" name="remise_percent_predef" type="text" value="'.(GETPOST('remise_percent_predef')?GETPOST('remise_percent_predef'):'0').'"><span class="hideonsmartphone">%</span></td>';
|
||||
print '<td> </td>';
|
||||
print '<td> </td>';
|
||||
print '<td align="center" valign="middle" colspan="2"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans("Add").'"></td>';
|
||||
print '<td align="center" valign="middle" colspan="2"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans("Add").'" name="addline_predefined"></td>';
|
||||
print '</tr>';
|
||||
print '</form>';
|
||||
}
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
|
||||
print '</div>';
|
||||
print '</form>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
if ($action != 'presend')
|
||||
{
|
||||
|
||||
@ -59,6 +59,8 @@ if ($user->societe_id > 0)
|
||||
}
|
||||
|
||||
|
||||
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
|
||||
$hookmanager->initHooks(array('paymentsupplier'));
|
||||
|
||||
|
||||
/*
|
||||
@ -265,7 +267,7 @@ if ($action == 'create' || $action == 'add_paiement')
|
||||
$sql.= ' AND f.fk_soc = '.$object->socid;
|
||||
$sql.= ' AND f.paye = 0';
|
||||
$sql.= ' AND f.fk_statut = 1'; // Statut=0 => non validee, Statut=2 => annulee
|
||||
$sql.= ' GROUP BY f.rowid, f.ref_supplier, f.total_ht, f.total_ttc, f.datef';
|
||||
$sql.= ' GROUP BY f.rowid, f.ref, f.ref_supplier, f.total_ht, f.total_ttc, f.datef';
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -467,7 +467,7 @@ if ($object->fetch($id))
|
||||
{
|
||||
print '<br>';
|
||||
// List of contacts
|
||||
show_contacts($conf,$langs,$db,$object,$_SERVER["PHP_SELF"].'?id='.$object->id);
|
||||
show_contacts($conf,$langs,$db,$object,$_SERVER["PHP_SELF"].'?socid='.$object->id);
|
||||
}
|
||||
|
||||
// Addresses list
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
if(jQuery) (function($){
|
||||
|
||||
$.extend($.fn, {
|
||||
fileTree: function(o, h) {
|
||||
fileTree: function(o, h, hd) { // CHANGE DOL_LDR add hd param
|
||||
// Defaults
|
||||
if( !o ) var o = {};
|
||||
if( o.root == undefined ) o.root = '/';
|
||||
@ -77,6 +77,8 @@ if(jQuery) (function($){
|
||||
$(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
|
||||
$(this).parent().removeClass('expanded').addClass('collapsed');
|
||||
}
|
||||
// CHANGE DOL_LDR use hd function provided in param
|
||||
if (hd != null) hd($(this));
|
||||
} else {
|
||||
h($(this).attr('rel'));
|
||||
}
|
||||
|
||||
@ -128,33 +128,6 @@ class Odf
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assing a template variable
|
||||
*
|
||||
* @param string $key name of the variable within the template
|
||||
* @param string $value replacement value
|
||||
* @param bool $encode if true, special XML characters are encoded
|
||||
* @throws OdfException
|
||||
* @return odf
|
||||
*/
|
||||
public function setVarsHeadFooter($key, $value, $encode = true, $charset = 'ISO-8859')
|
||||
{
|
||||
$tag = $this->config['DELIMITER_LEFT'] . $key . $this->config['DELIMITER_RIGHT'];
|
||||
// TODO Warning string may be:
|
||||
// <text:span text:style-name="T13">{</text:span><text:span text:style-name="T12">aaa</text:span><text:span text:style-name="T13">}</text:span>
|
||||
// instead of {aaa} so we should enhance this function.
|
||||
//print $key.'-'.$value.'-'.strpos($this->contentXml, $this->config['DELIMITER_LEFT'] . $key . $this->config['DELIMITER_RIGHT']).'<br>';
|
||||
if (strpos($this->stylesXml, $tag) === false && strpos($this->stylesXml , $tag) === false) {
|
||||
//if (strpos($this->contentXml, '">'. $key . '</text;span>') === false) {
|
||||
throw new OdfException("var $key not found in the document");
|
||||
//}
|
||||
}
|
||||
$value = $encode ? htmlspecialchars($value) : $value;
|
||||
$value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value;
|
||||
$this->vars[$tag] = str_replace("\n", "<text:line-break/>", $value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Evaluating php codes inside the ODT and output the buffer (print, echo) inplace of the code
|
||||
*
|
||||
|
||||
@ -88,13 +88,13 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (80
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (802,80, '0','0','VAT Rate 0',1);
|
||||
|
||||
-- FRANCE (id country=1)
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 11, 1,'19.6','0','VAT standard rate (France hors DOM-TOM)',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 11, 1, '20','0','VAT standard rate (France hors DOM-TOM)',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 12, 1, '8.5','0','VAT standard rate (DOM sauf Guyane et Saint-Martin)',0);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 13, 1, '8.5','1','VAT standard rate (DOM sauf Guyane et Saint-Martin), non perçu par le vendeur mais récupérable par acheteur',0);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 14, 1, '5.5','0','VAT reduced rate (France hors DOM-TOM)',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 15, 1, '0','0','VAT Rate 0 ou non applicable',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 16, 1, '2.1','0','VAT super-reduced rate',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 17, 1, '7','0','VAT reduced rate',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 17, 1, '10','0','VAT reduced rate',1);
|
||||
|
||||
-- GERMANY (id country=5)
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 51, 5, '19.0','0','allgemeine Ust.',1);
|
||||
|
||||
@ -71,12 +71,13 @@ update llx_bank set dateo = datec where datev = '1970-01-01 00:00:00' and rappro
|
||||
|
||||
alter table llx_c_chargesociales add column actioncompta varchar(12) NOT NULL;
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 1, 'Allocations familiales', 1,1,'TAXFAM');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 2, 'GSG Deductible', 1,1,'TAXCSGD');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 3, 'GSG/CRDS NON Deductible',0,1,'TAXCSGND');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (10, 'Taxe apprenttissage', 0,1,'TAXAPP');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 2, 'GSG Déductible', 1,1,'TAXCSGD');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values ( 3, 'GSG/CRDS NON Déductible',0,1,'TAXCSGND');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (10, 'Taxe apprentissage', 0,1,'TAXAPP');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (11, 'Taxe professionnelle', 0,1,'TAXPRO');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (12, 'Contribution à la formation professionnelle', 1,1,'TAXOPCA');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (20, 'Impots locaux/fonciers', 0,1,'TAXFON');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (30, 'Assurance Sante (SECU-URSSAF)', 0,1,'TAXSECU');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (30, 'Assurance Santé (SECU-URSSAF)', 0,1,'TAXSECU');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (40, 'Mutuelle', 0,1,'TAXMUT');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (50, 'Assurance vieillesse (CNAV)', 0,1,'TAXRET');
|
||||
insert into llx_c_chargesociales (id, libelle, deductible, active, actioncompta) values (60, 'Assurance Chomage (ASSEDIC)', 0,1,'TAXCHOM');
|
||||
|
||||
@ -58,7 +58,7 @@ ALTER TABLE llx_facture_fourn DROP INDEX uk_facture_fourn;
|
||||
ALTER TABLE llx_facture_fourn DROP INDEX uk_facture_fourn_ref;
|
||||
UPDATE llx_facture_fourn set ref = NULL where ref = '';
|
||||
ALTER TABLE llx_facture_fourn ADD UNIQUE INDEX uk_facture_fourn_ref (ref, entity);
|
||||
ALTER TABLE llx_facture_fourn CHANGE COLUMN facnumber ref_supplier varchar(30);
|
||||
ALTER TABLE llx_facture_fourn CHANGE COLUMN facnumber ref_supplier varchar(50);
|
||||
ALTER TABLE llx_facture_fourn ADD UNIQUE INDEX uk_facture_fourn_ref_supplier (ref_supplier, fk_soc, entity);
|
||||
|
||||
|
||||
@ -161,22 +161,22 @@ CREATE TABLE llx_c_revenuestamp
|
||||
|
||||
insert into llx_c_revenuestamp(rowid,fk_pays,taux,note,active) values (101, 10, '0.4', 'Timbre fiscal', 1);
|
||||
|
||||
ALTER TABLE llx_c_tva MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_c_tva MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_commandedet MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_commandedet MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_contratdet MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_contratdet MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facture_fourn_det MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facture_fourn_det MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facturedet_rec MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facturedet_rec MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facturedet MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_facturedet MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_propaldet MODIFY COLUMN localtax1_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_propaldet MODIFY COLUMN localtax2_type varchar(10) NOT NULL DEFAULT '0';
|
||||
ALTER TABLE llx_c_tva MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_c_tva MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_commandedet MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_commandedet MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_contratdet MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_contratdet MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facture_fourn_det MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facture_fourn_det MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facturedet_rec MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facturedet_rec MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facturedet MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_facturedet MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_propaldet MODIFY COLUMN localtax1_type varchar(10) DEFAULT NULL;
|
||||
ALTER TABLE llx_propaldet MODIFY COLUMN localtax2_type varchar(10) DEFAULT NULL;
|
||||
-- No more use type 7, use revenuse stamp instead
|
||||
UPDATE llx_c_tva set localtax1=0, localtax1_type='0' where localtax1_type = '7';
|
||||
UPDATE llx_c_tva set localtax2=0, localtax2_type='0' where localtax2_type = '7';
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
DELETE FROM llx_menu where module='holiday';
|
||||
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_type,note,active) values (143, 14,'5','0','9.975','1','TPS and TVQ rate',1);
|
||||
|
||||
-- Fix bad migration of 3.4 that make this text instead of varchar(50)
|
||||
alter table llx_don MODIFY COLUMN town varchar(50);
|
||||
@ -83,7 +84,9 @@ ALTER TABLE llx_propaldet_extrafields ADD INDEX idx_propaldet_extrafields (fk_ob
|
||||
DROP table llx_adherent_options;
|
||||
DROP table llx_adherent_options_label;
|
||||
|
||||
ALTER TABLE llx_user ADD accountancy_code VARCHAR( 24 ) NULL;
|
||||
ALTER TABLE llx_user ADD accountancy_code VARCHAR(24) NULL;
|
||||
ALTER TABLE llx_c_chargesociales ADD accountancy_code varchar(24) DEFAULT NULL;
|
||||
|
||||
|
||||
DELETE FROM llx_boxes where box_id IN (SELECT rowid FROM llx_boxes_def where file='box_activity.php' AND note IS NULL);
|
||||
DELETE FROM llx_boxes_def where file='box_activity.php' AND note IS NULL;
|
||||
@ -357,3 +360,7 @@ ALTER TABLE llx_user ADD skype VARCHAR(255) AFTER job;
|
||||
ALTER TABLE llx_socpeople ADD skype VARCHAR(255) AFTER jabberid;
|
||||
ALTER TABLE llx_societe ADD skype VARCHAR(255) AFTER email;
|
||||
ALTER TABLE llx_adherent ADD skype VARCHAR(255) AFTER email;
|
||||
|
||||
-- multi-rib
|
||||
ALTER TABLE llx_societe_rib ADD default_rib smallint NOT NULL DEFAULT 0 AFTER owner_address;
|
||||
UPDATE llx_societe_rib SET default_rib = 1;
|
||||
|
||||
@ -24,7 +24,7 @@ create table llx_c_chargesociales
|
||||
deductible smallint DEFAULT 0 NOT NULL,
|
||||
active tinyint DEFAULT 1 NOT NULL,
|
||||
code varchar(12) NOT NULL,
|
||||
accountancy_code varchar(15) DEFAULT NULL,
|
||||
accountancy_code varchar(24) DEFAULT NULL,
|
||||
fk_pays integer DEFAULT 1 NOT NULL,
|
||||
module varchar(32) NULL
|
||||
)ENGINE=innodb;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
-- Copyright (C) 2000-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
-- Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
-- Copyright (C) 2013 Peter Fontaine <contact@peterfontaine.fr>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
@ -35,6 +36,7 @@ create table llx_societe_rib
|
||||
domiciliation varchar(255),
|
||||
proprio varchar(60),
|
||||
owner_address varchar(255),
|
||||
default_rib smallint NOT NULL DEFAULT 0,
|
||||
import_key varchar(14) -- import key
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Dolibarr language file - Source file is en_US - agenda
|
||||
# IdAgenda=ID event
|
||||
IdAgenda=Αναγνωριστικού συμβάντος
|
||||
Actions=Ενέργειες
|
||||
ActionsArea=Περιοχή Ενεργειών (γεγονότα και εργασίες)
|
||||
Agenda= Ημερολόγιο
|
||||
@ -68,7 +68,7 @@ AgendaUrlOptions5=<b>logind=%s</b> για να περιορίσετε τα απ
|
||||
AgendaShowBirthdayEvents=Εμφάνιση γενεθλίων των προσώπων επικοινωνίας
|
||||
AgendaHideBirthdayEvents=Απόκρυψη γενεθλίων των προσώπων επικοινωνίας
|
||||
Busy=Απασχολ.
|
||||
# ExportDataset_event1=List of agenda events
|
||||
ExportDataset_event1=Κατάλογος των εκδηλώσεων
|
||||
|
||||
# External Sites ical
|
||||
ExportCal=Εξαγωγή ημερολογίου
|
||||
|
||||
@ -74,7 +74,7 @@ NoRecordedProducts=Δεν υπάρχουν καταχωρημένα προϊόν
|
||||
NoRecordedProspects=Δεν υπάρχουν προσφορές
|
||||
NoContractedProducts=Δεν υπάρχουν καταχωρημένα συμβόλαια με προϊόντα/υπηρεσίες
|
||||
NoRecordedContracts=Δεν υπάρχουν καταχωρημένα συμβόλαια
|
||||
# NoRecordedInterventions=No recorded interventions
|
||||
NoRecordedInterventions=Δεν καταγράφονται παρεμβάσεις
|
||||
BoxLatestSupplierOrders=Τελευταίες παραγγελίες προμηθευτών
|
||||
BoxTitleLatestSupplierOrders=Οι %s τελευταίες παραγγελίες προμηθευτών
|
||||
NoSupplierOrder=Δεν υπάρχουν καταχωρημένες παραγγελίες προμηθευτών
|
||||
@ -84,8 +84,8 @@ BoxCustomersOrdersPerMonth=Παραγγελίες πελατών ανά μήνα
|
||||
BoxSuppliersOrdersPerMonth=Παραγγελίες προμηθευτών ανά μήνα
|
||||
BoxProposalsPerMonth=Προσφορές ανά μήνα
|
||||
NoTooLowStockProducts=Κανένα προϊόν κάτω από το χαμηλό όριο του αποθέματος
|
||||
# BoxProductDistribution=Products/Services distribution
|
||||
# BoxProductDistributionFor=Distribution of %s for %s
|
||||
BoxProductDistribution=Κατανομή Προϊόντα/Υπηρεσίες
|
||||
BoxProductDistributionFor=Κατανομή των %s για %s
|
||||
ForCustomersInvoices=Τιμολόγια Πελάτη
|
||||
# ForCustomersOrders=Customers orders
|
||||
ForCustomersOrders=Παραγγελίες πελατών
|
||||
ForProposals=Προτάσεις
|
||||
|
||||
@ -66,8 +66,8 @@ Country=Χώρα
|
||||
CountryCode=Country code
|
||||
CountryId=Κωδικός Χώρα
|
||||
Phone=Τηλέφωνο
|
||||
# Skype=Skype
|
||||
# Call=Call
|
||||
Skype=Skype
|
||||
Call=Κλήση
|
||||
PhonePro=Επαγγ. τηλέφωνο
|
||||
PhonePerso=Προσωπ. τηλέφωνο
|
||||
PhoneMobile=Κιν. τηλέφωνο
|
||||
@ -398,7 +398,7 @@ InActivity=Ανοιχτό
|
||||
ActivityCeased=Κλειστό
|
||||
ActivityStateFilter=Το καθεστώς της δραστηριότητας
|
||||
ProductsIntoElements=Κατάλογος των προϊόντων σε
|
||||
# OutstandingBill=Max. for outstanding bill
|
||||
OutstandingBill=Μέγιστο. για εκκρεμείς λογαριασμό
|
||||
# Monkey
|
||||
MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0.
|
||||
# Leopard
|
||||
|
||||
@ -124,8 +124,8 @@ ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server
|
||||
ErrorFailedToAddContact=Failed to add contact
|
||||
ErrorDateMustBeBeforeToday=The date can not be greater than today
|
||||
ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode.
|
||||
# ErrorPHPNeedModule=Error, your PHP must have module <b>%s</b> installed to use this feature.
|
||||
# ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s
|
||||
ErrorPHPNeedModule=Σφάλμα, η PHP σας πρέπει να έχει το module <b>%s</ b> εγκατεστημένο για να χρησιμοποιήσετε αυτήν τη δυνατότητα.
|
||||
ErrorOpenIDSetupNotComplete=Μπορείτε να ρυθμίσετε το Dolibarr αρχείο config να επιτρέψει OpenID ταυτότητα, αλλά το URL OpenID υπηρεσίας δεν ορίζεται σε συνεχή %s
|
||||
# ErrorWarehouseMustDiffers=Source and target warehouses must differs
|
||||
|
||||
# Warnings
|
||||
|
||||
@ -87,7 +87,7 @@ FirstDayOfHoliday=Πρώτη μέρα άδειας
|
||||
LastDayOfHoliday=Τελευταία μέρα άδειας
|
||||
HolidaysMonthlyUpdate=Μηνιαία ενημέρωση
|
||||
ManualUpdate=Χειροκίνητη ενημέρωση
|
||||
# HolidaysCancelation=Holidays cancelation
|
||||
HolidaysCancelation=Ακύρωση αδειών
|
||||
|
||||
## Configuration du Module ##
|
||||
ConfCP=Διαμόρφωση τις ενότητας αδειών
|
||||
|
||||
@ -155,7 +155,7 @@ Valid=Έγκυρο
|
||||
Approve=Έγκριση
|
||||
ReOpen=Εκ νέου άνοιγμα
|
||||
Upload=Αποστολή Αρχείου
|
||||
# ToLink=Link
|
||||
ToLink=Σύνδεσμος
|
||||
Select=Επιλογή
|
||||
Choose=Επιλογή
|
||||
ChooseLangage=Παρακαλούμε επιλέξτε την γλώσσα σας
|
||||
@ -659,8 +659,8 @@ from=από
|
||||
toward=προς
|
||||
Access=Πρόσβαση
|
||||
HelpCopyToClipboard=Χρησιμοποιήστε το Ctrl + C για να αντιγράψετε στο πρόχειρο
|
||||
# SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s")
|
||||
# OriginFileName=Nom d'origine
|
||||
SaveUploadedFileWithMask=Αποθηκεύστε το αρχείο στον server με το όνομα "<strong>%s</strong>" (αλλιώς "%s")
|
||||
OriginFileName=Αρχική Ονομασία
|
||||
|
||||
# Week day
|
||||
Monday=Δευτέρα
|
||||
|
||||
@ -8,7 +8,7 @@ Members=Μέλη
|
||||
MemberAccount=Είσοδος μέλους
|
||||
ShowMember=Εμφάνιση καρτέλα μέλους
|
||||
UserNotLinkedToMember=Ο χρήστης δεν συνδέετε με κάποιο μέλος
|
||||
# ThirdpartyNotLinkedToMember=Third-party not linked to a member
|
||||
ThirdpartyNotLinkedToMember=Πελ./Προμ. δεν συνδέεται με ένα μέλος
|
||||
MembersTickets=Tickets Μελών
|
||||
FundationMembers=Μέλη οργανισμού
|
||||
Attributs=Ιδιότητες
|
||||
|
||||
@ -147,7 +147,7 @@ AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order
|
||||
# Documents models
|
||||
PDFEinsteinDescription=Ολοκληρωμένο πρότυπο παραγγελίας (λογότυπο...)
|
||||
PDFEdisonDescription=Απλό πρότυπο παραγγελίας
|
||||
# PDFProformaDescription=A complete proforma invoice (logo…)
|
||||
PDFProformaDescription=Ένα πλήρες προτιμολόγιο (λογότυπο ...)
|
||||
# Orders modes
|
||||
OrderByMail=Ταχυδρομείο
|
||||
OrderByFax=Φαξ
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user