Merge remote-tracking branch 'upstream/develop' into better-practice
Conflicts: htdocs/core/lib/functions.lib.php test/phpunit/FunctionsLibTest.php
This commit is contained in:
commit
60e2524fc2
@ -220,6 +220,9 @@ Dolibarr better:
|
|||||||
- Fix: [ bug #1832 ] SQL error when adding a product with no price defined to an object
|
- Fix: [ bug #1832 ] SQL error when adding a product with no price defined to an object
|
||||||
- Fix: [ bug #1826 ] Supplier payment types are not translated into fourn/facture/paiement.php
|
- Fix: [ bug #1826 ] Supplier payment types are not translated into fourn/facture/paiement.php
|
||||||
- Fix: [ bug #1830 ] Salaries payment only allows checking accounts
|
- Fix: [ bug #1830 ] Salaries payment only allows checking accounts
|
||||||
|
- Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work
|
||||||
|
- Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key
|
||||||
|
- Fix: Bad SEPA xml file creation
|
||||||
|
|
||||||
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
||||||
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
||||||
@ -386,6 +389,7 @@ Fix: [ bug #1752 ] Date filter of margins module, filters since 12H instead of 0
|
|||||||
Fix: [ bug #1757 ] Sorting breaks product/service statistics
|
Fix: [ bug #1757 ] Sorting breaks product/service statistics
|
||||||
Fix: [ bug #1797 ] Tulip supplier invoice module takes creation date instead of invoice date
|
Fix: [ bug #1797 ] Tulip supplier invoice module takes creation date instead of invoice date
|
||||||
Fix: [ bug #1792 ] Users are not allowed to see margins module index page when no product view permission is enabled
|
Fix: [ bug #1792 ] Users are not allowed to see margins module index page when no product view permission is enabled
|
||||||
|
Fix: [ bug #1846 ] Browser IE11 not detected
|
||||||
|
|
||||||
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
|
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
|
||||||
Fix: Avoid missing class error for fetch_thirdparty method #1973
|
Fix: Avoid missing class error for fetch_thirdparty method #1973
|
||||||
|
|||||||
@ -21,8 +21,9 @@ vous devez vous réorienter vers DoliWamp (la version tout-en-un
|
|||||||
de Dolibarr pour Windows), DoliDeb (la version tout-en-un pour Debian ou
|
de Dolibarr pour Windows), DoliDeb (la version tout-en-un pour Debian ou
|
||||||
Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat,
|
Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat,
|
||||||
OpenSuse, Mandriva ou Mageia).
|
OpenSuse, Mandriva ou Mageia).
|
||||||
Vous pouvez les télécharger à l'adresse:
|
|
||||||
http://www.dolibarr.org/downloads/
|
Vous pouvez les télécharger depuis la rubrique *download* du portail officiel:
|
||||||
|
http://www.dolibarr.org/
|
||||||
|
|
||||||
Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (Mysql),
|
Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (Mysql),
|
||||||
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
||||||
|
|||||||
@ -22,7 +22,7 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](COPYRIGHT)
|
|||||||
|
|
||||||
### Download
|
### Download
|
||||||
|
|
||||||
Official releases are available on the [website](http://www.dolibarr.org/downloads).
|
Releases can be downloaded from [official website](http://www.dolibarr.org/).
|
||||||
|
|
||||||
### Simple setup
|
### Simple setup
|
||||||
|
|
||||||
|
|||||||
70
build/generate_filecheck_xml.php
Normal file
70
build/generate_filecheck_xml.php
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/php
|
||||||
|
<?php
|
||||||
|
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file build/generate_filecheck_xml.php
|
||||||
|
* \ingroup dev
|
||||||
|
* \brief This script create a xml checksum file
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sapi_type = php_sapi_name();
|
||||||
|
$script_file = basename(__FILE__);
|
||||||
|
$path=dirname(__FILE__).'/';
|
||||||
|
|
||||||
|
// Test if batch mode
|
||||||
|
if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||||
|
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Main
|
||||||
|
parse_str($argv[1]);
|
||||||
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
|
$outputfile=dirname(__FILE__).'/../htdocs/install/filelist.xml';
|
||||||
|
$fp = fopen($outputfile,'w');
|
||||||
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
|
fputs($fp, '<checksum_list>'."\n");
|
||||||
|
fputs($fp, '<dolibarr_root_dir version="'.$release.'">'."\n");
|
||||||
|
$dir_iterator = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
||||||
|
$iterator = new RecursiveIteratorIterator($dir_iterator);
|
||||||
|
// need to ignore document custom etc
|
||||||
|
$files = new RegexIterator($iterator, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install|nltechno))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
|
$dir='';
|
||||||
|
$needtoclose=0;
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
||||||
|
if ($newdir!=$dir) {
|
||||||
|
if ($needtoclose)
|
||||||
|
fputs($fp, '</dir>'."\n");
|
||||||
|
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
||||||
|
$dir = $newdir;
|
||||||
|
$needtoclose=1;
|
||||||
|
}
|
||||||
|
if (filetype($file)=="file") {
|
||||||
|
fputs($fp, '<md5file name="'.basename($file).'">'.md5_file($file).'</md5file>'."\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fputs($fp, '</dir>'."\n");
|
||||||
|
fputs($fp, '</dolibarr_root_dir>'."\n");
|
||||||
|
fputs($fp, '</checksum_list>'."\n");
|
||||||
|
fclose($fp);
|
||||||
|
|
||||||
|
print "File ".$outputfile." generated\n";
|
||||||
|
|
||||||
|
exit(0);
|
||||||
@ -204,7 +204,10 @@ else {
|
|||||||
my $NUM_SCRIPT;
|
my $NUM_SCRIPT;
|
||||||
my $cpt=0;
|
my $cpt=0;
|
||||||
while (! $found) {
|
while (! $found) {
|
||||||
printf(" %2d - %-14s (%s)\n",$cpt,"ALL (1..9)","Need ".join(",",values %REQUIREMENTTARGET));
|
$cpt=0;
|
||||||
|
printf(" %2d - %-14s (%s)\n",$cpt,"ALL (1..10)","Need ".join(",",values %REQUIREMENTTARGET));
|
||||||
|
$cpt++;
|
||||||
|
printf(" %2d - %-14s\n",$cpt,"Generate check file");
|
||||||
foreach my $target (@LISTETARGET) {
|
foreach my $target (@LISTETARGET) {
|
||||||
$cpt++;
|
$cpt++;
|
||||||
printf(" %2d - %-14s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target});
|
printf(" %2d - %-14s (%s)\n",$cpt,$target,"Need ".$REQUIREMENTTARGET{$target});
|
||||||
@ -215,7 +218,7 @@ else {
|
|||||||
printf(" %2d - %-14s (%s)\n",$cpt,"SF (publish)","Need ".join(",",values %REQUIREMENTPUBLISH));
|
printf(" %2d - %-14s (%s)\n",$cpt,"SF (publish)","Need ".join(",",values %REQUIREMENTPUBLISH));
|
||||||
|
|
||||||
# Ask which target to build
|
# Ask which target to build
|
||||||
print "Choose one package number or several separated with space (0 - ".$cpt."): ";
|
print "Choose one target number or several separated with space (0 - ".$cpt."): ";
|
||||||
$NUM_SCRIPT=<STDIN>;
|
$NUM_SCRIPT=<STDIN>;
|
||||||
chomp($NUM_SCRIPT);
|
chomp($NUM_SCRIPT);
|
||||||
if ($NUM_SCRIPT !~ /^[0-9\s]+$/)
|
if ($NUM_SCRIPT !~ /^[0-9\s]+$/)
|
||||||
@ -232,30 +235,30 @@ else {
|
|||||||
if ($NUM_SCRIPT eq "98") {
|
if ($NUM_SCRIPT eq "98") {
|
||||||
$CHOOSEDPUBLISH{"ASSO"}=1;
|
$CHOOSEDPUBLISH{"ASSO"}=1;
|
||||||
}
|
}
|
||||||
else
|
elsif ($NUM_SCRIPT eq "99") {
|
||||||
{
|
|
||||||
if ($NUM_SCRIPT eq "99") {
|
|
||||||
$CHOOSEDPUBLISH{"SF"}=1;
|
$CHOOSEDPUBLISH{"SF"}=1;
|
||||||
}
|
}
|
||||||
else {
|
elsif ($NUM_SCRIPT eq "0") {
|
||||||
if ($NUM_SCRIPT eq "0") {
|
$CHOOSEDTARGET{"-CHKSUM"}=1;
|
||||||
foreach my $key (@LISTETARGET) {
|
foreach my $key (@LISTETARGET) {
|
||||||
if ($key ne 'SNAPSHOT' && $key ne 'ASSO' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; }
|
if ($key ne 'SNAPSHOT' && $key ne 'ASSO' && $key ne 'SF') { $CHOOSEDTARGET{$key}=1; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elsif ($NUM_SCRIPT eq "1") {
|
||||||
|
$CHOOSEDTARGET{"-CHKSUM"}=1
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
foreach my $num (split(/\s+/,$NUM_SCRIPT)) {
|
foreach my $num (split(/\s+/,$NUM_SCRIPT)) {
|
||||||
$CHOOSEDTARGET{$LISTETARGET[$num-1]}=1;
|
$CHOOSEDTARGET{$LISTETARGET[$num-2]}=1;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Test if requirement is ok
|
# Test if requirement is ok
|
||||||
#--------------------------
|
#--------------------------
|
||||||
$atleastonerpm=0;
|
$atleastonerpm=0;
|
||||||
foreach my $target (keys %CHOOSEDTARGET) {
|
foreach my $target (sort keys %CHOOSEDTARGET) {
|
||||||
if ($target =~ /RPM/i)
|
if ($target =~ /RPM/i)
|
||||||
{
|
{
|
||||||
if ($atleastonerpm && ($DESTI eq "$SOURCE/build"))
|
if ($atleastonerpm && ($DESTI eq "$SOURCE/build"))
|
||||||
@ -297,20 +300,32 @@ foreach my $target (keys %CHOOSEDTARGET) {
|
|||||||
|
|
||||||
print "\n";
|
print "\n";
|
||||||
|
|
||||||
# Check if there is at least on target to build
|
# Build xml check file
|
||||||
|
#-----------------------
|
||||||
|
if ($CHOOSEDTARGET{'-CHKSUM'})
|
||||||
|
{
|
||||||
|
print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filecheck_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n";
|
||||||
|
$ret=`php $SOURCE/build/generate_filecheck_xml.php release=$MAJOR.$MINOR.$BUILD`;
|
||||||
|
print $ret."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#print join(',',sort keys %CHOOSEDTARGET)."\n";
|
||||||
|
|
||||||
|
# Check if there is at least one target to build
|
||||||
#----------------------------------------------
|
#----------------------------------------------
|
||||||
$nboftargetok=0;
|
$nboftargetok=0;
|
||||||
$nboftargetneedbuildroot=0;
|
$nboftargetneedbuildroot=0;
|
||||||
$nbofpublishneedtag=0;
|
$nbofpublishneedtag=0;
|
||||||
foreach my $target (keys %CHOOSEDTARGET) {
|
foreach my $target (sort keys %CHOOSEDTARGET) {
|
||||||
if ($CHOOSEDTARGET{$target} < 0) { next; }
|
if ($CHOOSEDTARGET{$target} < 0) { next; }
|
||||||
if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP')
|
if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM')
|
||||||
{
|
{
|
||||||
$nboftargetneedbuildroot++;
|
$nboftargetneedbuildroot++;
|
||||||
}
|
}
|
||||||
$nboftargetok++;
|
$nboftargetok++;
|
||||||
}
|
}
|
||||||
foreach my $target (keys %CHOOSEDPUBLISH) {
|
foreach my $target (sort keys %CHOOSEDPUBLISH) {
|
||||||
if ($CHOOSEDPUBLISH{$target} < 0) { next; }
|
if ($CHOOSEDPUBLISH{$target} < 0) { next; }
|
||||||
if ($target eq 'ASSO') { $nbofpublishneedtag++; }
|
if ($target eq 'ASSO') { $nbofpublishneedtag++; }
|
||||||
if ($target eq 'SF') { $nbofpublishneedtag++; }
|
if ($target eq 'SF') { $nbofpublishneedtag++; }
|
||||||
@ -474,9 +489,10 @@ if ($nboftargetok) {
|
|||||||
|
|
||||||
# Build package for each target
|
# Build package for each target
|
||||||
#------------------------------
|
#------------------------------
|
||||||
foreach my $target (keys %CHOOSEDTARGET)
|
foreach my $target (sort keys %CHOOSEDTARGET)
|
||||||
{
|
{
|
||||||
if ($CHOOSEDTARGET{$target} < 0) { next; }
|
if ($CHOOSEDTARGET{$target} < 0) { next; }
|
||||||
|
if ($target eq '-CHKSUM') { next; }
|
||||||
|
|
||||||
print "\nBuild package for target $target\n";
|
print "\nBuild package for target $target\n";
|
||||||
|
|
||||||
@ -979,7 +995,7 @@ if ($nboftargetok) {
|
|||||||
|
|
||||||
# Publish package for each target
|
# Publish package for each target
|
||||||
#--------------------------------
|
#--------------------------------
|
||||||
foreach my $target (keys %CHOOSEDPUBLISH)
|
foreach my $target (sort keys %CHOOSEDPUBLISH)
|
||||||
{
|
{
|
||||||
if ($CHOOSEDPUBLISH{$target} < 0) { next; }
|
if ($CHOOSEDPUBLISH{$target} < 0) { next; }
|
||||||
|
|
||||||
@ -1062,7 +1078,8 @@ if ($nboftargetok) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print "\n----- Summary -----\n";
|
print "\n----- Summary -----\n";
|
||||||
foreach my $target (keys %CHOOSEDTARGET) {
|
foreach my $target (sort keys %CHOOSEDTARGET) {
|
||||||
|
if ($target eq '-CHKSUM') { print "Checksum was generated"; next; }
|
||||||
if ($CHOOSEDTARGET{$target} < 0) {
|
if ($CHOOSEDTARGET{$target} < 0) {
|
||||||
print "Package $target not built (bad requirement).\n";
|
print "Package $target not built (bad requirement).\n";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -103,9 +103,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "bank as b";
|
|||||||
$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid";
|
$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'";
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid";
|
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid";
|
||||||
// To isolate the cash of the other accounts
|
$sql .= " WHERE ba.rowid=".$id_accountancy_journal;
|
||||||
$sql .= " WHERE ba.courant <> 2";
|
|
||||||
$sql .= " AND ba.rowid=".$id_accountancy_journal;
|
|
||||||
if (! empty($conf->multicompany->enabled)) {
|
if (! empty($conf->multicompany->enabled)) {
|
||||||
$sql .= " AND ba.entity = " . $conf->entity;
|
$sql .= " AND ba.entity = " . $conf->entity;
|
||||||
}
|
}
|
||||||
@ -172,7 +170,8 @@ if ($result) {
|
|||||||
// get_url may return -1 which is not traversable
|
// get_url may return -1 which is not traversable
|
||||||
if (is_array($links))
|
if (is_array($links))
|
||||||
{
|
{
|
||||||
foreach ($links as $key => $val)
|
|
||||||
|
foreach ( $links as $key => $val )
|
||||||
{
|
{
|
||||||
$tabtype[$obj->rowid] = $links[$key]['type'];
|
$tabtype[$obj->rowid] = $links[$key]['type'];
|
||||||
|
|
||||||
@ -200,24 +199,6 @@ if ($result) {
|
|||||||
$chargestatic->id = $links[$key]['url_id'];
|
$chargestatic->id = $links[$key]['url_id'];
|
||||||
$chargestatic->ref = $links[$key]['url_id'];
|
$chargestatic->ref = $links[$key]['url_id'];
|
||||||
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2);
|
|
||||||
if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) {
|
|
||||||
if ($reg[1] == 'socialcontribution')
|
|
||||||
$reg[1] = 'SocialContribution';
|
|
||||||
$chargestatic->lib = $langs->trans($reg[1]);
|
|
||||||
}
|
|
||||||
else if ($links[$key]['type'] == 'company')
|
|
||||||
{
|
|
||||||
$societestatic->id = $links[$key]['url_id'];
|
|
||||||
$societestatic->name = $links[$key]['label'];
|
|
||||||
$tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30);
|
|
||||||
$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
|
|
||||||
}
|
|
||||||
else if ($links[$key]['type'] == 'sc')
|
|
||||||
{
|
|
||||||
$chargestatic->id = $links[$key]['url_id'];
|
|
||||||
$chargestatic->ref = $links[$key]['url_id'];
|
|
||||||
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2);
|
$tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2);
|
||||||
if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) {
|
if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) {
|
||||||
if ($reg[1] == 'socialcontribution')
|
if ($reg[1] == 'socialcontribution')
|
||||||
@ -238,6 +219,7 @@ if ($result) {
|
|||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid";
|
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid";
|
||||||
$sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid;
|
$sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid;
|
||||||
|
|
||||||
|
|
||||||
dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
||||||
$resultmid = $db->query($sqlmid);
|
$resultmid = $db->query($sqlmid);
|
||||||
if ($resultmid)
|
if ($resultmid)
|
||||||
@ -257,6 +239,7 @@ if ($result) {
|
|||||||
{
|
{
|
||||||
$paymentsalstatic->id = $links[$key]['url_id'];
|
$paymentsalstatic->id = $links[$key]['url_id'];
|
||||||
$paymentsalstatic->ref = $links[$key]['url_id'];
|
$paymentsalstatic->ref = $links[$key]['url_id'];
|
||||||
|
$paymentsalstatic->label = $links[$key]['label'];
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2);
|
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2);
|
||||||
$tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount;
|
$tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount;
|
||||||
}
|
}
|
||||||
@ -269,36 +252,14 @@ if ($result) {
|
|||||||
$tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount;
|
$tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount;
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
else if ($links[$key]['type'] == 'payment_vat')
|
|
||||||
{
|
|
||||||
$paymentvatstatic->id = $links[$key]['url_id'];
|
|
||||||
$paymentvatstatic->ref = $links[$key]['url_id'];
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2);
|
|
||||||
$tabtp[$obj->rowid][$cpttva] += $obj->amount;
|
|
||||||
}
|
|
||||||
else if ($links[$key]['type'] == 'payment_salary')
|
|
||||||
{
|
|
||||||
$paymentsalstatic->id = $links[$key]['url_id'];
|
|
||||||
$paymentsalstatic->ref = $links[$key]['url_id'];
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2);
|
|
||||||
$tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount;
|
|
||||||
}
|
|
||||||
else if ($links[$key]['type'] == 'banktransfert')
|
|
||||||
{
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2);
|
|
||||||
$tabtp[$obj->rowid][$cpttva] += $obj->amount;
|
|
||||||
}
|
|
||||||
/*else {
|
|
||||||
$tabtp [$obj->rowid] [$accountancy_account_salary] += $obj->amount;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$tabbq[$obj->rowid][$compta_bank] += $obj->amount;
|
$tabbq[$obj->rowid][$compta_bank] += $obj->amount;
|
||||||
|
|
||||||
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
|
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
|
||||||
|
|
||||||
$i ++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
@ -306,17 +267,16 @@ if ($result) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
* FIXME Action should be before any view
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Write bookkeeping
|
// Write bookkeeping
|
||||||
if ($action == 'writeBookKeeping')
|
if ($action == 'writeBookKeeping')
|
||||||
{
|
{
|
||||||
$error = 0;
|
$error = 0;
|
||||||
foreach ($tabpay as $key => $val)
|
foreach ( $tabpay as $key => $val )
|
||||||
{
|
{
|
||||||
// Bank
|
// Bank
|
||||||
foreach ($tabbq[$key] as $k => $mt)
|
foreach ( $tabbq[$key] as $k => $mt )
|
||||||
{
|
{
|
||||||
$bookkeeping = new BookKeeping($db);
|
$bookkeeping = new BookKeeping($db);
|
||||||
$bookkeeping->doc_date = $val["date"];
|
$bookkeeping->doc_date = $val["date"];
|
||||||
@ -368,7 +328,7 @@ if ($action == 'writeBookKeeping')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Third party
|
// Third party
|
||||||
foreach ($tabtp[$key] as $k => $mt)
|
foreach ( $tabtp[$key] as $k => $mt )
|
||||||
{
|
{
|
||||||
$bookkeeping = new BookKeeping($db);
|
$bookkeeping = new BookKeeping($db);
|
||||||
$bookkeeping->doc_date = $val["date"];
|
$bookkeeping->doc_date = $val["date"];
|
||||||
@ -467,6 +427,7 @@ if ($action == 'export_csv')
|
|||||||
foreach ( $tabpay as $key => $val ) {
|
foreach ( $tabpay as $key => $val ) {
|
||||||
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
|
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
|
||||||
|
|
||||||
|
|
||||||
$companystatic->id = $tabcompany[$key]['id'];
|
$companystatic->id = $tabcompany[$key]['id'];
|
||||||
$companystatic->name = $tabcompany[$key]['name'];
|
$companystatic->name = $tabcompany[$key]['name'];
|
||||||
|
|
||||||
@ -484,8 +445,12 @@ if ($action == 'export_csv')
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Third party
|
// Third party
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
if (is_array ( $tabtp[$key]))
|
||||||
if ($mt) {
|
{
|
||||||
|
foreach ( $tabtp[$key] as $k => $mt )
|
||||||
|
{
|
||||||
|
if ($mt)
|
||||||
|
{
|
||||||
print $date . $sep;
|
print $date . $sep;
|
||||||
print $bank_journal . $sep;
|
print $bank_journal . $sep;
|
||||||
if ($val["lib"] == '(SupplierInvoicePayment)') {
|
if ($val["lib"] == '(SupplierInvoicePayment)') {
|
||||||
@ -502,6 +467,25 @@ if ($action == 'export_csv')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach ( $tabbq[$key] as $k => $mt )
|
||||||
|
{
|
||||||
|
if (1)
|
||||||
|
{
|
||||||
|
print $date . $sep;
|
||||||
|
print $bank_journal . $sep;
|
||||||
|
print $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . $sep;
|
||||||
|
print $sep;
|
||||||
|
print ($mt < 0 ? 'D' : 'C') . $sep;
|
||||||
|
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
|
||||||
|
print $val["type_payment"] . $sep;
|
||||||
|
print $val["ref"] . $sep;
|
||||||
|
print "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else // Model Classic Export
|
} else // Model Classic Export
|
||||||
{
|
{
|
||||||
foreach ( $tabpay as $key => $val ) {
|
foreach ( $tabpay as $key => $val ) {
|
||||||
@ -522,7 +506,10 @@ if ($action == 'export_csv')
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Third party
|
// Third party
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
if (is_array ( $tabtp[$key]))
|
||||||
|
{
|
||||||
|
foreach ( $tabtp[$key] as $k => $mt )
|
||||||
|
{
|
||||||
if ($mt) {
|
if ($mt) {
|
||||||
print '"' . $date . '"' . $sep;
|
print '"' . $date . '"' . $sep;
|
||||||
print '"' . $val["type_payment"] . '"' . $sep;
|
print '"' . $val["type_payment"] . '"' . $sep;
|
||||||
@ -534,6 +521,23 @@ if ($action == 'export_csv')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach ( $tabbq[$key] as $k => $mt )
|
||||||
|
{
|
||||||
|
if (1)
|
||||||
|
{
|
||||||
|
print '"' . $date . '"' . $sep;
|
||||||
|
print '"' . $val["ref"] . '"' . $sep;
|
||||||
|
print '"' . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . '"' . $sep;
|
||||||
|
print '"' . $langs->trans("Bank") . '"' . $sep;
|
||||||
|
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
||||||
|
print '"' . ($mt >= 0 ? price($mt) : '') . '"';
|
||||||
|
print "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -544,13 +548,53 @@ else
|
|||||||
llxHeader('', $langs->trans("BankJournal"));
|
llxHeader('', $langs->trans("BankJournal"));
|
||||||
|
|
||||||
$namereport = $langs->trans("BankJournal");
|
$namereport = $langs->trans("BankJournal");
|
||||||
$namelink = '';
|
$description = $langs->trans("DescBankJournal");
|
||||||
$periodlink = '';
|
|
||||||
$exportlink = '';
|
|
||||||
$builddate = time();
|
|
||||||
$description = $langs->trans("DescBankJournal") . '<br>';
|
|
||||||
$period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1);
|
$period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1);
|
||||||
report_header($namereport, $namelink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''));
|
|
||||||
|
// Report
|
||||||
|
$h=0;
|
||||||
|
$head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal;
|
||||||
|
$head[$h][1] = $langs->trans("Report");
|
||||||
|
$head[$h][2] = 'report';
|
||||||
|
|
||||||
|
dol_fiche_head($head, $hselected);
|
||||||
|
|
||||||
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">';
|
||||||
|
print '<table width="100%" class="border">';
|
||||||
|
|
||||||
|
// Title
|
||||||
|
print '<tr>';
|
||||||
|
print '<td valign="top" width="110">'.$langs->trans("ReportName").'</td>';
|
||||||
|
print '<td colspan="3">'.$namereport.'</td>';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Period report
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>'.$langs->trans("ReportPeriod").'</td>';
|
||||||
|
if (! $periodlink) print '<td colspan="3">';
|
||||||
|
else print '<td>';
|
||||||
|
if ($period) print $period;
|
||||||
|
if ($periodlink) print '</td><td colspan="2">'.$periodlink;
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Description
|
||||||
|
print '<tr>';
|
||||||
|
print '<td valign="top">'.$langs->trans("ReportDescription").'</td>';
|
||||||
|
print '<td colspan="3">'.$description.'</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr>';
|
||||||
|
print '<td colspan="4" align="center"><input type="submit" class="button" name="submit" value="'.$langs->trans("Refresh").'"></td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
print '</div>';
|
||||||
|
// End report
|
||||||
|
|
||||||
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
|
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
|
||||||
|
|
||||||
@ -611,6 +655,8 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Third party
|
// Third party
|
||||||
|
if (is_array ( $tabtp[$key]))
|
||||||
|
{
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
foreach ( $tabtp[$key] as $k => $mt ) {
|
||||||
if ($k != 'type') {
|
if ($k != 'type') {
|
||||||
print "<tr " . $bc[$var] . ">";
|
print "<tr " . $bc[$var] . ">";
|
||||||
@ -624,7 +670,21 @@ else
|
|||||||
print "</tr>";
|
print "</tr>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach ( $tabbq[$key] as $k => $mt )
|
||||||
|
{
|
||||||
|
print "<tr " . $bc[$var] . ">";
|
||||||
|
print "<td>" . $date . "</td>";
|
||||||
|
print "<td>" . $reflabel . "</td>";
|
||||||
|
print "<td>" . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . "</td>";
|
||||||
|
print "<td>" . $langs->trans('ThirdParty') . "</td>";
|
||||||
|
print "<td align='right'>" . ($mt < 0 ? price(- $mt) : '') . "</td>";
|
||||||
|
print "<td align='right'>" . ($mt >= 0 ? price($mt) : '') . "</td>";
|
||||||
|
print "</tr>";
|
||||||
|
}
|
||||||
|
}
|
||||||
$var = ! $var;
|
$var = ! $var;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,533 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) 2007-2010 Jean Heimburger <jean@tiaris.info>
|
|
||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
|
||||||
* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
|
|
||||||
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
|
||||||
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
|
||||||
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.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
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file htdocs/accountancy/journal/cashjournal.php
|
|
||||||
* \ingroup Accounting Expert
|
|
||||||
* \brief Page with cash journal
|
|
||||||
*/
|
|
||||||
|
|
||||||
require '../../main.inc.php';
|
|
||||||
|
|
||||||
// Class
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
|
|
||||||
|
|
||||||
// Langs
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
$langs->load("compta");
|
|
||||||
$langs->load("bank");
|
|
||||||
$langs->load("accountancy");
|
|
||||||
|
|
||||||
$date_startmonth = GETPOST('date_startmonth');
|
|
||||||
$date_startday = GETPOST('date_startday');
|
|
||||||
$date_startyear = GETPOST('date_startyear');
|
|
||||||
$date_endmonth = GETPOST('date_endmonth');
|
|
||||||
$date_endday = GETPOST('date_endday');
|
|
||||||
$date_endyear = GETPOST('date_endyear');
|
|
||||||
|
|
||||||
// Security check
|
|
||||||
if ($user->societe_id > 0)
|
|
||||||
accessforbidden();
|
|
||||||
|
|
||||||
$action = GETPOST('action');
|
|
||||||
|
|
||||||
/*
|
|
||||||
* View
|
|
||||||
*/
|
|
||||||
|
|
||||||
$year_current = strftime("%Y", dol_now());
|
|
||||||
$pastmonth = strftime("%m", dol_now()) - 1;
|
|
||||||
$pastmonthyear = $year_current;
|
|
||||||
if ($pastmonth == 0) {
|
|
||||||
$pastmonth = 12;
|
|
||||||
$pastmonthyear --;
|
|
||||||
}
|
|
||||||
|
|
||||||
$date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear);
|
|
||||||
$date_end = dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear);
|
|
||||||
|
|
||||||
if (empty($date_start) || empty($date_end)) // We define date_start and date_end
|
|
||||||
{
|
|
||||||
$date_start = dol_get_first_day($pastmonthyear, $pastmonth, false);
|
|
||||||
$date_end = dol_get_last_day($pastmonthyear, $pastmonth, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
$p = explode(":", $conf->global->MAIN_INFO_SOCIETE_COUNTRY);
|
|
||||||
$idpays = $p[0];
|
|
||||||
|
|
||||||
$sql = "SELECT b.rowid , b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type, soc.code_compta, ba.courant,";
|
|
||||||
$sql .= " soc.code_compta_fournisseur, soc.rowid as socid, soc.nom as name, ba.account_number, bu1.type as typeop";
|
|
||||||
$sql .= " FROM " . MAIN_DB_PREFIX . "bank as b";
|
|
||||||
$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid";
|
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'";
|
|
||||||
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid";
|
|
||||||
|
|
||||||
// Code opération type caisse
|
|
||||||
$sql .= " WHERE ba.courant = 2";
|
|
||||||
if (! empty($conf->multicompany->enabled)) {
|
|
||||||
$sql .= " AND ba.entity = " . $conf->entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($date_start && $date_end)
|
|
||||||
$sql .= " AND b.dateo >= '" . $db->idate($date_start) . "' AND b.dateo <= '" . $db->idate($date_end) . "'";
|
|
||||||
$sql .= " ORDER BY b.datev";
|
|
||||||
|
|
||||||
$object = new Account($db);
|
|
||||||
$paymentstatic = new Paiement($db);
|
|
||||||
$paymentsupplierstatic = new PaiementFourn($db);
|
|
||||||
$societestatic = new Societe($db);
|
|
||||||
$chargestatic = new ChargeSociales($db);
|
|
||||||
$paymentvatstatic = new TVA($db);
|
|
||||||
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sql=" . $sql, LOG_DEBUG);
|
|
||||||
$result = $db->query($sql);
|
|
||||||
if ($result) {
|
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
|
||||||
// les variables
|
|
||||||
$cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef"));
|
|
||||||
$cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef"));
|
|
||||||
$cpttva = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) ? $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE : $langs->trans("CodeNotDef"));
|
|
||||||
$cptsociale = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) ? $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE : $langs->trans("CodeNotDef"));
|
|
||||||
|
|
||||||
$tabpay = array ();
|
|
||||||
$tabbq = array ();
|
|
||||||
$tabtp = array ();
|
|
||||||
$tabcompany = array ();
|
|
||||||
$tabtype = array ();
|
|
||||||
|
|
||||||
$i = 0;
|
|
||||||
while ($i < $num)
|
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($result);
|
|
||||||
|
|
||||||
// controls
|
|
||||||
$compta_bank = $obj->account_number;
|
|
||||||
if ($obj->label == '(SupplierInvoicePayment)')
|
|
||||||
$compta_soc = (! empty($obj->code_compta_fournisseur) ? $obj->code_compta_fournisseur : $cptfour);
|
|
||||||
if ($obj->label == '(CustomerInvoicePayment)')
|
|
||||||
$compta_soc = (! empty($obj->code_compta) ? $obj->code_compta : $cptcli);
|
|
||||||
if ($obj->typeop == '(BankTransfert)')
|
|
||||||
$compta_soc = $conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH;
|
|
||||||
|
|
||||||
// variable bookkeeping
|
|
||||||
|
|
||||||
$tabpay[$obj->rowid]["date"] = $obj->do;
|
|
||||||
$tabpay[$obj->rowid]["ref"] = $obj->label;
|
|
||||||
$tabpay[$obj->rowid]["fk_bank"] = $obj->rowid;
|
|
||||||
if (preg_match('/^\((.*)\)$/i', $obj->label, $reg)) {
|
|
||||||
$tabpay[$obj->rowid]["lib"] = $langs->trans($reg[1]);
|
|
||||||
} else {
|
|
||||||
$tabpay[$obj->rowid]["lib"] = dol_trunc($obj->label, 60);
|
|
||||||
}
|
|
||||||
$links = $object->get_url($obj->rowid);
|
|
||||||
|
|
||||||
// get_url may return -1 which is not traversable
|
|
||||||
if (is_array($links))
|
|
||||||
{
|
|
||||||
foreach ( $links as $key => $val )
|
|
||||||
{
|
|
||||||
$tabtype[$obj->rowid] = $links[$key]['type'];
|
|
||||||
|
|
||||||
if ($links[$key]['type'] == 'payment') {
|
|
||||||
$paymentstatic->id = $links[$key]['url_id'];
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2);
|
|
||||||
} else if ($links[$key]['type'] == 'payment_supplier') {
|
|
||||||
$paymentsupplierstatic->id = $links[$key]['url_id'];
|
|
||||||
$paymentsupplierstatic->ref = $links[$key]['url_id'];
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2);
|
|
||||||
} else if ($links[$key]['type'] == 'company') {
|
|
||||||
|
|
||||||
$societestatic->id = $links[$key]['url_id'];
|
|
||||||
$societestatic->name = $links[$key]['label'];
|
|
||||||
$tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30);
|
|
||||||
$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
|
|
||||||
} else if ($links[$key]['type'] == 'sc') {
|
|
||||||
|
|
||||||
$chargestatic->id = $links[$key]['url_id'];
|
|
||||||
$chargestatic->ref = $links[$key]['url_id'];
|
|
||||||
|
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2);
|
|
||||||
if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) {
|
|
||||||
if ($reg[1] == 'socialcontribution')
|
|
||||||
$reg[1] = 'SocialContribution';
|
|
||||||
$chargestatic->lib = $langs->trans($reg[1]);
|
|
||||||
} else {
|
|
||||||
$chargestatic->lib = $links[$key]['label'];
|
|
||||||
}
|
|
||||||
$chargestatic->ref = $chargestatic->lib;
|
|
||||||
$tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30);
|
|
||||||
|
|
||||||
$sqlmid = 'SELECT cchgsoc.accountancy_code';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid";
|
|
||||||
$sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount;
|
|
||||||
}
|
|
||||||
/*else {
|
|
||||||
$tabtp [$obj->rowid] [$cptsociale] += $obj->amount;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$tabbq[$obj->rowid][$compta_bank] += $obj->amount;
|
|
||||||
|
|
||||||
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
|
|
||||||
|
|
||||||
$i ++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Actions
|
|
||||||
*/
|
|
||||||
|
|
||||||
// write bookkeeping
|
|
||||||
if ($action == 'writeBookKeeping')
|
|
||||||
{
|
|
||||||
$error = 0;
|
|
||||||
foreach ( $tabpay as $key => $val )
|
|
||||||
{
|
|
||||||
// cash
|
|
||||||
foreach ( $tabbq[$key] as $k => $mt )
|
|
||||||
{
|
|
||||||
$bookkeeping = new BookKeeping($db);
|
|
||||||
$bookkeeping->doc_date = $val["date"];
|
|
||||||
$bookkeeping->doc_ref = $val["ref"];
|
|
||||||
$bookkeeping->doc_type = 'cash';
|
|
||||||
$bookkeeping->fk_doc = $key;
|
|
||||||
$bookkeeping->fk_docdet = $val["fk_bank"];
|
|
||||||
$bookkeeping->code_tiers = $tabcompany[$key]['code_client'];
|
|
||||||
$bookkeeping->numero_compte = $k;
|
|
||||||
$bookkeeping->label_compte = $compte->label;
|
|
||||||
$bookkeeping->montant = ($mt < 0 ? - $mt : $mt);
|
|
||||||
$bookkeeping->sens = ($mt >= 0) ? 'D' : 'C';
|
|
||||||
$bookkeeping->debit = ($mt >= 0 ? $mt : 0);
|
|
||||||
$bookkeeping->credit = ($mt < 0 ? - $mt : 0);
|
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_CASH_JOURNAL;
|
|
||||||
|
|
||||||
if ($tabtype[$key] == 'payment')
|
|
||||||
{
|
|
||||||
$sqlmid = 'SELECT fac.facnumber';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid";
|
|
||||||
$sqlmid .= " WHERE pay.fk_bank=" . $key;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$bookkeeping->doc_ref = $objmid->facnumber;
|
|
||||||
}
|
|
||||||
} else if ($tabtype[$key] == 'payment_supplier') {
|
|
||||||
|
|
||||||
$sqlmid = 'SELECT facf.facnumber';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid";
|
|
||||||
$sqlmid .= " WHERE payf.fk_bank=" . $key;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$bookkeeping->doc_ref = $objmid->facnumber;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $bookkeeping->create();
|
|
||||||
if ($result < 0) {
|
|
||||||
$error ++;
|
|
||||||
setEventMessage($object->errors, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// third party
|
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
|
||||||
|
|
||||||
$bookkeeping = new BookKeeping($db);
|
|
||||||
$bookkeeping->doc_date = $val["date"];
|
|
||||||
$bookkeeping->doc_ref = $val["ref"];
|
|
||||||
$bookkeeping->doc_type = 'cash';
|
|
||||||
$bookkeeping->fk_doc = $key;
|
|
||||||
$bookkeeping->fk_docdet = $val["fk_bank"];
|
|
||||||
$bookkeeping->label_compte = $tabcompany[$key]['name'];
|
|
||||||
$bookkeeping->montant = ($mt < 0 ? - $mt : $mt);
|
|
||||||
$bookkeeping->sens = ($mt < 0) ? 'D' : 'C';
|
|
||||||
$bookkeeping->debit = ($mt < 0 ? - $mt : 0);
|
|
||||||
$bookkeeping->credit = ($mt >= 0 ? $mt : 0);
|
|
||||||
$bookkeeping->code_journal = $conf->global->ACCOUNTING_CASH_JOURNAL;
|
|
||||||
|
|
||||||
if ($tabtype[$key] == 'sc') {
|
|
||||||
$bookkeeping->code_tiers = '';
|
|
||||||
$bookkeeping->numero_compte = $k;
|
|
||||||
} else if ($tabtype[$key] == 'payment') {
|
|
||||||
|
|
||||||
$sqlmid = 'SELECT fac.facnumber';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid";
|
|
||||||
$sqlmid .= " WHERE pay.fk_bank=" . $key;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$bookkeeping->doc_ref = $objmid->facnumber;
|
|
||||||
}
|
|
||||||
$bookkeeping->code_tiers = $k;
|
|
||||||
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
|
|
||||||
} else if ($tabtype[$key] == 'payment_supplier') {
|
|
||||||
|
|
||||||
$sqlmid = 'SELECT facf.facnumber';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid";
|
|
||||||
$sqlmid .= " WHERE payf.fk_bank=" . $key;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$bookkeeping->doc_ref = $objmid->facnumber;
|
|
||||||
}
|
|
||||||
$bookkeeping->code_tiers = $k;
|
|
||||||
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER;
|
|
||||||
} else if ($tabtype[$key] == 'company') {
|
|
||||||
|
|
||||||
$sqlmid = 'SELECT fac.facnumber';
|
|
||||||
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac ";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid";
|
|
||||||
$sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid";
|
|
||||||
$sqlmid .= " WHERE pay.fk_bank=" . $key;
|
|
||||||
dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG);
|
|
||||||
$resultmid = $db->query($sqlmid);
|
|
||||||
if ($resultmid) {
|
|
||||||
$objmid = $db->fetch_object($resultmid);
|
|
||||||
$bookkeeping->doc_ref = $objmid->facnumber;
|
|
||||||
}
|
|
||||||
$bookkeeping->code_tiers = $k;
|
|
||||||
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$bookkeeping->doc_ref = $k;
|
|
||||||
$bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER;
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $bookkeeping->create();
|
|
||||||
if ($result < 0) {
|
|
||||||
$error ++;
|
|
||||||
setEventMessage($object->errors, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($error)) {
|
|
||||||
setEventMessage($langs->trans('Success'), 'mesgs');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Export
|
|
||||||
if ($action == 'export_csv') {
|
|
||||||
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
|
|
||||||
$cash_journal = $conf->global->ACCOUNTING_CASH_JOURNAL;
|
|
||||||
|
|
||||||
header('Content-Type: text/csv');
|
|
||||||
header('Content-Disposition:attachment;filename=journal_caisse.csv');
|
|
||||||
|
|
||||||
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export
|
|
||||||
{
|
|
||||||
$sep = ";";
|
|
||||||
|
|
||||||
foreach ( $tabpay as $key => $val ) {
|
|
||||||
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
|
|
||||||
|
|
||||||
// Cash
|
|
||||||
foreach ( $tabbq[$key] as $k => $mt ) {
|
|
||||||
print $date . $sep;
|
|
||||||
print $cash_journal . $sep;
|
|
||||||
print length_accountg(html_entity_decode($k)) . $sep;
|
|
||||||
print $sep;
|
|
||||||
print ($mt < 0 ? 'C' : 'D') . $sep;
|
|
||||||
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
|
|
||||||
print $val["type_payment"] . $sep;
|
|
||||||
print $val["ref"] . $sep;
|
|
||||||
print "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Third party
|
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
|
||||||
if ($mt) {
|
|
||||||
print $date . $sep;
|
|
||||||
print $cash_journal . $sep;
|
|
||||||
if ($val["lib"] == '(SupplierInvoicePayment)') {
|
|
||||||
print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep;
|
|
||||||
} else {
|
|
||||||
print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep;
|
|
||||||
}
|
|
||||||
print length_accounta(html_entity_decode($k)) . $sep;
|
|
||||||
print ($mt < 0 ? 'D' : 'C') . $sep;
|
|
||||||
print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
|
|
||||||
print $val["type_payment"] . $sep;
|
|
||||||
print $val["ref"] . $sep;
|
|
||||||
print "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else // Model Classic Export
|
|
||||||
{
|
|
||||||
foreach ( $tabpay as $key => $val ) {
|
|
||||||
$date = dol_print_date($db->jdate($val["date"]), 'day');
|
|
||||||
|
|
||||||
// Cash
|
|
||||||
foreach ( $tabbq[$key] as $k => $mt ) {
|
|
||||||
print '"' . $date . '"' . $sep;
|
|
||||||
print '"' . $val["ref"] . '"' . $sep;
|
|
||||||
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
|
|
||||||
print '"' . $langs->trans("Cash") . '"' . $sep;
|
|
||||||
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
|
|
||||||
print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
|
|
||||||
print "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Third party
|
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
|
||||||
if ($mt) {
|
|
||||||
print '"' . $date . '"' . $sep;
|
|
||||||
print '"' . $val["ref"] . '"' . $sep;
|
|
||||||
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
|
|
||||||
print '"' . $langs->trans("ThirdParty") . '"' . $sep;
|
|
||||||
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
|
|
||||||
print '"' . ($mt >= 0 ? price($mt) : '') . '"';
|
|
||||||
print "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
|
|
||||||
llxHeader('', $langs->trans("CashJournal"), '');
|
|
||||||
|
|
||||||
$name = $langs->trans("CashJournal");
|
|
||||||
$nomlink = '';
|
|
||||||
$periodlink = '';
|
|
||||||
$exportlink = '';
|
|
||||||
$builddate = time();
|
|
||||||
$description = $langs->trans("DescCashJournal") . '<br>';
|
|
||||||
$period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1);
|
|
||||||
report_header($name, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''));
|
|
||||||
|
|
||||||
print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />';
|
|
||||||
|
|
||||||
print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />';
|
|
||||||
|
|
||||||
print '
|
|
||||||
<script type="text/javascript">
|
|
||||||
function launch_export() {
|
|
||||||
$("div.fiche div.tabBar form input[name=\"action\"]").val("export_csv");
|
|
||||||
$("div.fiche div.tabBar form input[type=\"submit\"]").click();
|
|
||||||
$("div.fiche div.tabBar form input[name=\"action\"]").val("");
|
|
||||||
}
|
|
||||||
function writeBookKeeping() {
|
|
||||||
$("div.fiche div.tabBar form input[name=\"action\"]").val("writeBookKeeping");
|
|
||||||
$("div.fiche div.tabBar form input[type=\"submit\"]").click();
|
|
||||||
$("div.fiche div.tabBar form input[name=\"action\"]").val("");
|
|
||||||
}
|
|
||||||
</script>';
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Show result array
|
|
||||||
*/
|
|
||||||
print '<br><br>';
|
|
||||||
|
|
||||||
$i = 0;
|
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
|
||||||
print "<tr class=\"liste_titre\">";
|
|
||||||
print "<td>" . $langs->trans("Date") . "</td>";
|
|
||||||
print "<td>" . $langs->trans("Piece") . ' (' . $langs->trans("InvoiceRef") . ")</td>";
|
|
||||||
print "<td>" . $langs->trans("Account") . "</td>";
|
|
||||||
print "<td align='right'>" . $langs->trans("Debit") . "</td><td align='right'>" . $langs->trans("Credit") . "</td>";
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
$var = true;
|
|
||||||
$r = '';
|
|
||||||
|
|
||||||
foreach ( $tabpay as $key => $val ) {
|
|
||||||
$date = dol_print_date($db->jdate($val["date"]), 'day');
|
|
||||||
|
|
||||||
// Cash
|
|
||||||
foreach ( $tabbq[$key] as $k => $mt ) {
|
|
||||||
if (1) {
|
|
||||||
print "<tr " . $bc[$var] . " >";
|
|
||||||
print "<td>" . $date . "</td>";
|
|
||||||
print "<td>" . $val["lib"] . "</td>";
|
|
||||||
print "<td>" . length_accountg($k) . "</td>";
|
|
||||||
print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>";
|
|
||||||
print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>";
|
|
||||||
print "</tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// third party
|
|
||||||
foreach ( $tabtp[$key] as $k => $mt ) {
|
|
||||||
if ($k != 'type') {
|
|
||||||
print "<tr " . $bc[$var] . ">";
|
|
||||||
|
|
||||||
print "<td>" . $date . "</td>";
|
|
||||||
print "<td>" . $val["soclib"] . "</td>";
|
|
||||||
|
|
||||||
print "<td>" . length_accounta($k) . "</td>";
|
|
||||||
print '<td align="right">' . ($mt < 0 ? price(- $mt) : '') . "</td>";
|
|
||||||
print '<td align="right">' . ($mt >= 0 ? price($mt) : '') . "</td>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$var = ! $var;
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</table>";
|
|
||||||
|
|
||||||
// End of page
|
|
||||||
llxFooter();
|
|
||||||
}
|
|
||||||
$db->close();
|
|
||||||
499
htdocs/admin/expensereport.php
Normal file
499
htdocs/admin/expensereport.php
Normal file
@ -0,0 +1,499 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
|
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||||
|
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||||
|
* Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
|
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||||
|
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
|
||||||
|
* Copyright (C) 2011-2013 Philippe Grand <philippe.grand@atoo-net.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
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/admin/expensereport.php
|
||||||
|
* \ingroup expensereport
|
||||||
|
* \brief Setup page of module ExpenseReport
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/expensereport.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
|
|
||||||
|
$langs->load("admin");
|
||||||
|
$langs->load("errors");
|
||||||
|
$langs->load("trips");
|
||||||
|
$langs->load('other');
|
||||||
|
|
||||||
|
if (! $user->admin) accessforbidden();
|
||||||
|
|
||||||
|
$action = GETPOST('action','alpha');
|
||||||
|
$value = GETPOST('value','alpha');
|
||||||
|
$label = GETPOST('label','alpha');
|
||||||
|
$scandir = GETPOST('scandir','alpha');
|
||||||
|
$type='expensereport';
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
if ($action == 'updateMask')
|
||||||
|
{
|
||||||
|
$maskconst=GETPOST('maskconst','alpha');
|
||||||
|
$maskvalue=GETPOST('maskvalue','alpha');
|
||||||
|
if ($maskconst) $res = dolibarr_set_const($db,$maskconst,$maskvalue,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("SetupSaved"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("Error"),'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'specimen') // For fiche inter
|
||||||
|
{
|
||||||
|
$modele= GETPOST('module','alpha');
|
||||||
|
|
||||||
|
$inter = new ExpenseReport($db);
|
||||||
|
$inter->initAsSpecimen();
|
||||||
|
|
||||||
|
// Search template files
|
||||||
|
$file=''; $classname=''; $filefound=0;
|
||||||
|
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
||||||
|
foreach($dirmodels as $reldir)
|
||||||
|
{
|
||||||
|
$file=dol_buildpath($reldir."core/modules/expensereport/doc/pdf_".$modele.".modules.php",0);
|
||||||
|
if (file_exists($file))
|
||||||
|
{
|
||||||
|
$filefound=1;
|
||||||
|
$classname = "pdf_".$modele;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($filefound)
|
||||||
|
{
|
||||||
|
require_once $file;
|
||||||
|
|
||||||
|
$module = new $classname($db);
|
||||||
|
|
||||||
|
if ($module->write_file($inter,$langs) > 0)
|
||||||
|
{
|
||||||
|
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=expensereport&file=SPECIMEN.pdf");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessage($obj->error,'errors');
|
||||||
|
dol_syslog($obj->error, LOG_ERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("ErrorModuleNotFound"),'errors');
|
||||||
|
dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define constants for submodules that contains parameters (forms with param1, param2, ... and value1, value2, ...)
|
||||||
|
if ($action == 'setModuleOptions')
|
||||||
|
{
|
||||||
|
$post_size=count($_POST);
|
||||||
|
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
for($i=0;$i < $post_size;$i++)
|
||||||
|
{
|
||||||
|
if (array_key_exists('param'.$i,$_POST))
|
||||||
|
{
|
||||||
|
$param=GETPOST("param".$i,'alpha');
|
||||||
|
$value=GETPOST("value".$i,'alpha');
|
||||||
|
if ($param) $res = dolibarr_set_const($db,$param,$value,'chaine',0,'',$conf->entity);
|
||||||
|
if (! $res > 0) $error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$db->commit();
|
||||||
|
setEventMessage($langs->trans("SetupSaved"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$db->rollback();
|
||||||
|
setEventMessage($langs->trans("Error"),'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Activate a model
|
||||||
|
else if ($action == 'set')
|
||||||
|
{
|
||||||
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'del')
|
||||||
|
{
|
||||||
|
$ret = delDocumentModel($value, $type);
|
||||||
|
if ($ret > 0)
|
||||||
|
{
|
||||||
|
if ($conf->global->EXPENSEREPORT_ADDON_PDF == "$value") dolibarr_del_const($db, 'EXPENSEREPORT_ADDON_PDF',$conf->entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set default model
|
||||||
|
else if ($action == 'setdoc')
|
||||||
|
{
|
||||||
|
if (dolibarr_set_const($db, "EXPENSEREPORT_ADDON_PDF",$value,'chaine',0,'',$conf->entity))
|
||||||
|
{
|
||||||
|
// La constante qui a ete lue en avant du nouveau set
|
||||||
|
// on passe donc par une variable pour avoir un affichage coherent
|
||||||
|
$conf->global->EXPENSEREPORT_ADDON_PDF = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// On active le modele
|
||||||
|
$ret = delDocumentModel($value, $type);
|
||||||
|
if ($ret > 0)
|
||||||
|
{
|
||||||
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'setmod')
|
||||||
|
{
|
||||||
|
// TODO Verifier si module numerotation choisi peut etre active
|
||||||
|
// par appel methode canBeActivated
|
||||||
|
|
||||||
|
dolibarr_set_const($db, "EXPENSEREPORT_ADDON",$value,'chaine',0,'',$conf->entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'set_EXPENSEREPORT_FREE_TEXT')
|
||||||
|
{
|
||||||
|
$freetext= GETPOST('EXPENSEREPORT_FREE_TEXT','alpha');
|
||||||
|
$res = dolibarr_set_const($db, "EXPENSEREPORT_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("SetupSaved"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("Error"),'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ($action == 'set_EXPENSEREPORT_DRAFT_WATERMARK')
|
||||||
|
{
|
||||||
|
$draft= GETPOST('EXPENSEREPORT_DRAFT_WATERMARK','alpha');
|
||||||
|
|
||||||
|
$res = dolibarr_set_const($db, "EXPENSEREPORT_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("SetupSaved"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessage($langs->trans("Error"),'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']);
|
||||||
|
|
||||||
|
llxHeader();
|
||||||
|
|
||||||
|
$form=new Form($db);
|
||||||
|
|
||||||
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
|
print_fiche_titre($langs->trans("ExpenseReportsSetup"),$linkback,'setup');
|
||||||
|
|
||||||
|
|
||||||
|
$head=expensereport_admin_prepare_head();
|
||||||
|
|
||||||
|
dol_fiche_head($head, 'expensereport', $langs->trans("ExpenseReports"), 0, 'trip');
|
||||||
|
|
||||||
|
// Interventions numbering model
|
||||||
|
/*
|
||||||
|
print_titre($langs->trans("FicheinterNumberingModules"));
|
||||||
|
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td width="100">'.$langs->trans("Name").'</td>';
|
||||||
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
|
print '<td>'.$langs->trans("Example").'</td>';
|
||||||
|
print '<td align="center" width="60">'.$langs->trans("Status").'</td>';
|
||||||
|
print '<td align="center" width="80">'.$langs->trans("ShortInfo").'</td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
foreach ($dirmodels as $reldir)
|
||||||
|
{
|
||||||
|
$dir = dol_buildpath($reldir."core/modules/fichinter/");
|
||||||
|
|
||||||
|
if (is_dir($dir))
|
||||||
|
{
|
||||||
|
$handle = opendir($dir);
|
||||||
|
if (is_resource($handle))
|
||||||
|
{
|
||||||
|
$var=true;
|
||||||
|
|
||||||
|
while (($file = readdir($handle))!==false)
|
||||||
|
{
|
||||||
|
if (preg_match('/^(mod_.*)\.php$/i',$file,$reg))
|
||||||
|
{
|
||||||
|
$file = $reg[1];
|
||||||
|
$classname = substr($file,4);
|
||||||
|
|
||||||
|
require_once $dir.$file.'.php';
|
||||||
|
|
||||||
|
$module = new $file;
|
||||||
|
|
||||||
|
if ($module->isEnabled())
|
||||||
|
{
|
||||||
|
// Show modules according to features level
|
||||||
|
if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue;
|
||||||
|
if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue;
|
||||||
|
|
||||||
|
$var=!$var;
|
||||||
|
print '<tr '.$bc[$var].'><td>'.$module->nom."</td><td>\n";
|
||||||
|
print $module->info();
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Show example of numbering model
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
$tmp=$module->getExample();
|
||||||
|
if (preg_match('/^Error/',$tmp)) print '<div class="error">'.$langs->trans($tmp).'</div>';
|
||||||
|
elseif ($tmp=='NotConfigured') print $langs->trans($tmp);
|
||||||
|
else print $tmp;
|
||||||
|
print '</td>'."\n";
|
||||||
|
|
||||||
|
print '<td align="center">';
|
||||||
|
if ($conf->global->FICHEINTER_ADDON == $classname)
|
||||||
|
{
|
||||||
|
print img_picto($langs->trans("Activated"),'switch_on');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&value='.$classname.'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
$ficheinter=new Fichinter($db);
|
||||||
|
$ficheinter->initAsSpecimen();
|
||||||
|
|
||||||
|
// Info
|
||||||
|
$htmltooltip='';
|
||||||
|
$htmltooltip.=''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
|
||||||
|
$nextval=$module->getNextValue($mysoc,$ficheinter);
|
||||||
|
if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
|
||||||
|
$htmltooltip.=''.$langs->trans("NextValue").': ';
|
||||||
|
if ($nextval) {
|
||||||
|
if (preg_match('/^Error/',$nextval) || $nextval=='NotConfigured')
|
||||||
|
$nextval = $langs->trans($nextval);
|
||||||
|
$htmltooltip.=$nextval.'<br>';
|
||||||
|
} else {
|
||||||
|
$htmltooltip.=$langs->trans($module->error).'<br>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '<td align="center">';
|
||||||
|
print $form->textwithpicto('',$htmltooltip,1,0);
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table><br>';
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Documents models for Interventions
|
||||||
|
*/
|
||||||
|
|
||||||
|
print_titre($langs->trans("TemplatePDFExpenseReports"));
|
||||||
|
|
||||||
|
// Defini tableau def des modeles
|
||||||
|
$type='expensereport';
|
||||||
|
$def = array();
|
||||||
|
$sql = "SELECT nom";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
|
||||||
|
$sql.= " WHERE type = '".$type."'";
|
||||||
|
$sql.= " AND entity = ".$conf->entity;
|
||||||
|
$resql=$db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$i = 0;
|
||||||
|
$num_rows=$db->num_rows($resql);
|
||||||
|
while ($i < $num_rows)
|
||||||
|
{
|
||||||
|
$array = $db->fetch_array($resql);
|
||||||
|
array_push($def, $array[0]);
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>'.$langs->trans("Name").'</td>';
|
||||||
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
|
print '<td align="center" width="60">'.$langs->trans("Status")."</td>\n";
|
||||||
|
print '<td align="center" width="60">'.$langs->trans("Default")."</td>\n";
|
||||||
|
print '<td align="center" width="80">'.$langs->trans("ShortInfo").'</td>';
|
||||||
|
print '<td align="center" width="80">'.$langs->trans("Preview").'</td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
$var=true;
|
||||||
|
foreach ($dirmodels as $reldir)
|
||||||
|
{
|
||||||
|
$dir = dol_buildpath($reldir."core/modules/expensereport/doc");
|
||||||
|
|
||||||
|
if (is_dir($dir))
|
||||||
|
{
|
||||||
|
$handle=opendir($dir);
|
||||||
|
if (is_resource($handle))
|
||||||
|
{
|
||||||
|
while (($file = readdir($handle))!==false)
|
||||||
|
{
|
||||||
|
$filelist[]=$file;
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
arsort($filelist);
|
||||||
|
|
||||||
|
foreach($filelist as $file)
|
||||||
|
{
|
||||||
|
if (preg_match('/\.modules\.php$/i',$file) && preg_match('/^(pdf_|doc_)/',$file))
|
||||||
|
{
|
||||||
|
|
||||||
|
if (file_exists($dir.'/'.$file))
|
||||||
|
{
|
||||||
|
$var=!$var;
|
||||||
|
|
||||||
|
$name = substr($file, 4, dol_strlen($file) -16);
|
||||||
|
$classname = substr($file, 0, dol_strlen($file) -12);
|
||||||
|
|
||||||
|
require_once $dir.'/'.$file;
|
||||||
|
$module = new $classname($db);
|
||||||
|
|
||||||
|
$modulequalified=1;
|
||||||
|
if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified=0;
|
||||||
|
if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified=0;
|
||||||
|
|
||||||
|
if ($modulequalified)
|
||||||
|
{
|
||||||
|
print '<tr '.$bc[$var].'><td width="100">';
|
||||||
|
print (empty($module->name)?$name:$module->name);
|
||||||
|
print "</td><td>\n";
|
||||||
|
if (method_exists($module,'info')) print $module->info($langs);
|
||||||
|
else print $module->description;
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Active
|
||||||
|
if (in_array($name, $def))
|
||||||
|
{
|
||||||
|
print "<td align=\"center\">\n";
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'">';
|
||||||
|
print img_picto($langs->trans("Enabled"),'switch_on');
|
||||||
|
print '</a>';
|
||||||
|
print "</td>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "<td align=\"center\">\n";
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
|
||||||
|
print "</td>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default
|
||||||
|
print "<td align=\"center\">";
|
||||||
|
if ($conf->global->EXPENSEREPORT_ADDON_PDF == "$name")
|
||||||
|
{
|
||||||
|
print img_picto($langs->trans("Default"),'on');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&value='.$name.'&scandir='.$module->scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Info
|
||||||
|
$htmltooltip = ''.$langs->trans("Name").': '.$module->name;
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown"));
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
|
||||||
|
$htmltooltip.='<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1);
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1);
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang,1,1);
|
||||||
|
$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraftOrders").': '.yn($module->option_draft_watermark,1,1);
|
||||||
|
print '<td align="center">';
|
||||||
|
print $form->textwithpicto('',$htmltooltip,-1,0);
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Preview
|
||||||
|
print '<td align="center">';
|
||||||
|
if ($module->type == 'pdf')
|
||||||
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'">'.img_object($langs->trans("Preview"),'intervention').'</a>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print img_object($langs->trans("PreviewNotAvailable"),'generic');
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
@ -33,6 +33,7 @@ $langs->load("orders");
|
|||||||
$langs->load("propal");
|
$langs->load("propal");
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
|
$langs->load("mails");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if (!$user->admin)
|
if (!$user->admin)
|
||||||
@ -76,7 +77,9 @@ if ($action == 'setvalue' && $user->admin)
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
llxHeader();
|
$form=new Form($db);
|
||||||
|
|
||||||
|
llxHeader('',$langs->trans("NotificationSetup"));
|
||||||
|
|
||||||
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
print_fiche_titre($langs->trans("NotificationSetup"),$linkback,'setup');
|
print_fiche_titre($langs->trans("NotificationSetup"),$linkback,'setup');
|
||||||
@ -132,9 +135,19 @@ foreach($listofnotifiedevents as $notifiedevent)
|
|||||||
print '<td>'.$elementLabel.'</td>';
|
print '<td>'.$elementLabel.'</td>';
|
||||||
print '<td>'.$notifiedevent['code'].'</td>';
|
print '<td>'.$notifiedevent['code'].'</td>';
|
||||||
print '<td>'.$label.'</td>';
|
print '<td>'.$label.'</td>';
|
||||||
|
print '<td>';
|
||||||
$param='NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'];
|
$param='NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'];
|
||||||
print '<td><input type="email" size="32" name="'.$param.'" value="'.dol_escape_htmltag(GETPOST($param)?GETPOST($param,'alpha'):$conf->global->$param).'">';
|
$value=GETPOST($param)?GETPOST($param,'alpha'):$conf->global->$param;
|
||||||
if (! empty($conf->global->$param) && ! isValidEmail($conf->global->$param)) print ' '.img_warning($langs->trans("ErrorBadEMail"));
|
$s='<input type="text" size="32" name="'.$param.'" value="'.dol_escape_htmltag($value).'">'; // Do not use type="email" here, we must be able to enter a list of email with , separator.
|
||||||
|
$arrayemail=explode(',',$value);
|
||||||
|
$showwarning=0;
|
||||||
|
foreach($arrayemail as $key=>$valuedet)
|
||||||
|
{
|
||||||
|
$valuedet=trim($valuedet);
|
||||||
|
if (! empty($valuedet) && ! isValidEmail($valuedet)) $showwarning++;
|
||||||
|
}
|
||||||
|
if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail"));
|
||||||
|
print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,6 +87,9 @@ if($action)
|
|||||||
if($action == 'STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT') {
|
if($action == 'STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT') {
|
||||||
$res = dolibarr_set_const($db, "STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT", GETPOST('STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT','alpha'),'chaine',0,'',$conf->entity);
|
$res = dolibarr_set_const($db, "STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT", GETPOST('STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT','alpha'),'chaine',0,'',$conf->entity);
|
||||||
}
|
}
|
||||||
|
if($action == 'INDEPENDANT_SUBPRODUCT_STOCK') {
|
||||||
|
$res = dolibarr_set_const($db, "INDEPENDANT_SUBPRODUCT_STOCK", GETPOST('INDEPENDANT_SUBPRODUCT_STOCK','alpha'),'chaine',0,'',$conf->entity);
|
||||||
|
}
|
||||||
|
|
||||||
if (! $res > 0) $error++;
|
if (! $res > 0) $error++;
|
||||||
|
|
||||||
@ -339,9 +342,29 @@ print '</form>';
|
|||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '</table>';
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
|
/* I keep the option/feature, but hidden to end users for the moment. If feature is used by module, no need to have users see it.
|
||||||
|
If not used by a module, I still need to understand in which case user may need this now we can set rule on product page.
|
||||||
|
if ($conf->global->PRODUIT_SOUSPRODUITS)
|
||||||
|
{
|
||||||
|
$var=!$var;
|
||||||
|
|
||||||
|
print "<tr ".$bc[$var].">";
|
||||||
|
print '<td width="60%">'.$langs->trans("IndependantSubProductStock").'</td>';
|
||||||
|
|
||||||
|
print '<td width="160" align="right">';
|
||||||
|
print "<form method=\"post\" action=\"stock.php\">";
|
||||||
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
print "<input type=\"hidden\" name=\"action\" value=\"INDEPENDANT_SUBPRODUCT_STOCK\">";
|
||||||
|
print $form->selectyesno("INDEPENDANT_SUBPRODUCT_STOCK",$conf->global->INDEPENDANT_SUBPRODUCT_STOCK,1);
|
||||||
|
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||||
|
print '</form>';
|
||||||
|
print "</td>\n";
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
|
|||||||
@ -31,6 +31,7 @@ require '../main.inc.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
|
||||||
|
$langs->load("orders");
|
||||||
|
|
||||||
if (!$user->admin)
|
if (!$user->admin)
|
||||||
accessforbidden();
|
accessforbidden();
|
||||||
|
|||||||
138
htdocs/admin/system/filecheck.php
Normal file
138
htdocs/admin/system/filecheck.php
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
|
* Copyright (C) 2007-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/admin/system/filecheck.php
|
||||||
|
* \brief Page to check Dolibarr files integrity
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../../main.inc.php';
|
||||||
|
|
||||||
|
$langs->load("admin");
|
||||||
|
|
||||||
|
if (!$user->admin)
|
||||||
|
accessforbidden();
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
llxHeader();
|
||||||
|
|
||||||
|
print_fiche_titre($langs->trans("FileCheckDolibarr"),'','setup');
|
||||||
|
|
||||||
|
// Version
|
||||||
|
$var = true;
|
||||||
|
print '<table class="noborder" width="100%">';
|
||||||
|
print '<tr class="liste_titre"><td>'.$langs->trans("Version").'</td><td>'.$langs->trans("Value").'</td></tr>'."\n";
|
||||||
|
$var = ! $var;
|
||||||
|
print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastInstall").'</td><td>'.$conf->global->MAIN_VERSION_LAST_INSTALL.'</td></tr>'."\n";
|
||||||
|
$var = ! $var;
|
||||||
|
print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionLastUpgrade").'</td><td>'.$conf->global->MAIN_VERSION_LAST_UPGRADE.'</td></tr>'."\n";
|
||||||
|
$var = ! $var;
|
||||||
|
print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("VersionProgram").'</td><td>'.DOL_VERSION;
|
||||||
|
// If current version differs from last upgrade
|
||||||
|
if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE)) {
|
||||||
|
// Compare version with last install database version (upgrades never occured)
|
||||||
|
if (DOL_VERSION != $conf->global->MAIN_VERSION_LAST_INSTALL)
|
||||||
|
print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_INSTALL));
|
||||||
|
} else {
|
||||||
|
// Compare version with last upgrade database version
|
||||||
|
if (DOL_VERSION != $conf->global->MAIN_VERSION_LAST_UPGRADE)
|
||||||
|
print ' '.img_warning($langs->trans("RunningUpdateProcessMayBeRequired",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE));
|
||||||
|
}
|
||||||
|
print '</td></tr>'."\n";
|
||||||
|
print '</table>';
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
|
||||||
|
// Modified or missing files
|
||||||
|
$file_list = array('missing' => array(), 'updated' => array());
|
||||||
|
$xmlfile = DOL_DOCUMENT_ROOT.'/core/filelist-'.DOL_VERSION.'.xml';
|
||||||
|
if (file_exists($xmlfile)) {
|
||||||
|
$xml = simplexml_load_file($xmlfile);
|
||||||
|
if ($xml) {
|
||||||
|
$ret = getFilesUpdated($xml->dolibarr_root_dir[0]);
|
||||||
|
print '<table class="noborder">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>' . $langs->trans("FilesMissing") . '</td>';
|
||||||
|
print '</tr>'."\n";
|
||||||
|
$var = true;
|
||||||
|
foreach ($file_list['missing'] as $file) {
|
||||||
|
$var = !$var;
|
||||||
|
print '<tr ' . $bc[$var] . '>';
|
||||||
|
print '<td>'.$file.'</td>' . "\n";
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
print '<table class="noborder">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>' . $langs->trans("FilesUpdated") . '</td>';
|
||||||
|
print '</tr>'."\n";
|
||||||
|
$var = true;
|
||||||
|
foreach ($file_list['updated'] as $file) {
|
||||||
|
$var = !$var;
|
||||||
|
print '<tr ' . $bc[$var] . '>';
|
||||||
|
print '<td>'.$file.'</td>' . "\n";
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print $langs->trans('XmlNotFound') . ': ' . DOL_DOCUMENT_ROOT . '/core/filelist-' . DOL_VERSION . '.xml';
|
||||||
|
}
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get list of updated or modified files
|
||||||
|
*
|
||||||
|
* @param object $dir SimpleXMLElement of files to test
|
||||||
|
* @param string $path Path of file
|
||||||
|
* @return array Array of filenames
|
||||||
|
*/
|
||||||
|
function getFilesUpdated(SimpleXMLElement $dir, $path = '')
|
||||||
|
{
|
||||||
|
global $file_list;
|
||||||
|
$exclude = 'install';
|
||||||
|
|
||||||
|
foreach ($dir->md5file as $file) {
|
||||||
|
$filename = $path.$file['name'];
|
||||||
|
|
||||||
|
if (preg_match('#'.$exclude.'#', $filename))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!file_exists(DOL_DOCUMENT_ROOT.'/'.$filename)) {
|
||||||
|
$file_list['missing'][] = $filename;
|
||||||
|
} else {
|
||||||
|
$md5_local = md5_file(DOL_DOCUMENT_ROOT.'/'.$filename);
|
||||||
|
if ($md5_local != (string) $file)
|
||||||
|
$file_list['updated'][] = $filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($dir->dir as $subdir)
|
||||||
|
getFilesUpdated($subdir, $path.$subdir['name'].'/');
|
||||||
|
return $file_list;
|
||||||
|
}
|
||||||
@ -316,7 +316,7 @@ class ActionComm extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
||||||
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".($val['mandatory']?$val['mandatory']:'0').", ".($val['transparency']?$val['transparency']:'0').", ".($val['answer_status']?$val['answer_status']:'0').")";
|
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['mandatory'])?'0':$val['mandatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
@ -680,7 +680,7 @@ class ActionComm extends CommonObject
|
|||||||
foreach($this->userassigned as $key => $val)
|
foreach($this->userassigned as $key => $val)
|
||||||
{
|
{
|
||||||
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
||||||
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".($val['manadatory']?$val['manadatory']:'0').", ".($val['transparency']?$val['transparency']:'0').", ".($val['answer_status']?$val['answer_status']:'0').")";
|
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['manadatory'])?'0':$val['manadatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
|
|||||||
@ -23,10 +23,11 @@
|
|||||||
* \ingroup agenda
|
* \ingroup agenda
|
||||||
* \brief File of class to parse ical calendars
|
* \brief File of class to parse ical calendars
|
||||||
*/
|
*/
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/xcal.lib.php';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to parse ICal calendars
|
* Class to read/parse ICal calendars
|
||||||
*/
|
*/
|
||||||
class ICal
|
class ICal
|
||||||
{
|
{
|
||||||
@ -107,6 +108,7 @@ class ICal
|
|||||||
if (!stristr($this->file_text[0],'BEGIN:VCALENDAR')) return 'error not VCALENDAR';
|
if (!stristr($this->file_text[0],'BEGIN:VCALENDAR')) return 'error not VCALENDAR';
|
||||||
|
|
||||||
$insidealarm=0;
|
$insidealarm=0;
|
||||||
|
$tmpkey='';$tmpvalue='';
|
||||||
foreach ($this->file_text as $text)
|
foreach ($this->file_text as $text)
|
||||||
{
|
{
|
||||||
$text = trim($text); // trim one line
|
$text = trim($text); // trim one line
|
||||||
@ -137,7 +139,7 @@ class ICal
|
|||||||
case "BEGIN:DAYLIGHT":
|
case "BEGIN:DAYLIGHT":
|
||||||
case "BEGIN:VTIMEZONE":
|
case "BEGIN:VTIMEZONE":
|
||||||
case "BEGIN:STANDARD":
|
case "BEGIN:STANDARD":
|
||||||
$type = $value; // save tu array under value key
|
$type = $value; // save array under value key
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "END:VTODO": // end special text - goto VCALENDAR key
|
case "END:VTODO": // end special text - goto VCALENDAR key
|
||||||
@ -159,8 +161,31 @@ class ICal
|
|||||||
$insidealarm=0;
|
$insidealarm=0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: // no special string
|
default: // no special string (SUMMARY, DESCRIPTION, ...)
|
||||||
if (! $insidealarm) $this->add_to_array($type, $key, $value); // add to array
|
if ($tmpvalue)
|
||||||
|
{
|
||||||
|
$tmpvalue .= $text;
|
||||||
|
if (! preg_match('/=$/',$text)) // No more lines
|
||||||
|
{
|
||||||
|
$key=$tmpkey;
|
||||||
|
$value=quotedPrintDecode(preg_replace('/^ENCODING=QUOTED-PRINTABLE:/i','',$tmpvalue));
|
||||||
|
$tmpkey='';
|
||||||
|
$tmpvalue='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif (preg_match('/^ENCODING=QUOTED-PRINTABLE:/i',$value))
|
||||||
|
{
|
||||||
|
if (preg_match('/=$/',$value))
|
||||||
|
{
|
||||||
|
$tmpkey=$key;
|
||||||
|
$tmpvalue=$tmpvalue.preg_replace('/=$/',"",$value); // We must wait to have next line to have complete message
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$value=quotedPrintDecode(preg_replace('/^ENCODING=QUOTED-PRINTABLE:/i','',$tmpvalue.$value));
|
||||||
|
}
|
||||||
|
} //$value=quotedPrintDecode($tmpvalue.$value);
|
||||||
|
if (! $insidealarm && ! $tmpkey) $this->add_to_array($type, $key, $value); // add to array
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -361,6 +361,7 @@ if (! empty($conf->use_javascript_ajax))
|
|||||||
foreach ($showextcals as $val)
|
foreach ($showextcals as $val)
|
||||||
{
|
{
|
||||||
$htmlname = dol_string_nospecial($val['name']);
|
$htmlname = dol_string_nospecial($val['name']);
|
||||||
|
$htmlname = dol_string_nospecial($htmlname,'_',array("\.","#"));
|
||||||
$s.='<script type="text/javascript">' . "\n";
|
$s.='<script type="text/javascript">' . "\n";
|
||||||
$s.='jQuery(document).ready(function () {' . "\n";
|
$s.='jQuery(document).ready(function () {' . "\n";
|
||||||
$s.=' jQuery("#check_' . $htmlname . '").click(function() {';
|
$s.=' jQuery("#check_' . $htmlname . '").click(function() {';
|
||||||
|
|||||||
@ -143,10 +143,10 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update outstandng limit
|
// update outstandng limit
|
||||||
if ($action == 'setOutstandingBill')
|
if ($action == 'setoutstanding_limit')
|
||||||
{
|
{
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$object->outstanding_limit=GETPOST('OutstandingBill');
|
$object->outstanding_limit=GETPOST('setoutstanding_limit');
|
||||||
$result=$object->set_OutstandingBill($user);
|
$result=$object->set_OutstandingBill($user);
|
||||||
if ($result < 0) setEventMessage($object->error,'errors');
|
if ($result < 0) setEventMessage($object->error,'errors');
|
||||||
}
|
}
|
||||||
@ -393,9 +393,10 @@ if ($id > 0)
|
|||||||
{
|
{
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->editfieldkey("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer);
|
print $form->editfieldkey("OutstandingBill",'outstanding_limit',$object->outstanding_limit,$object,$user->rights->societe->creer);
|
||||||
print '</td><td colspan="3">';
|
print '</td><td colspan="3">';
|
||||||
print $form->editfieldval("OutstandingBill",'OutstandingBill',$object->outstanding_limit,$object,$user->rights->societe->creer,'amount',($object->outstanding_limit != '' ? price($object->outstanding_limit) : ''));
|
$limit_field_type = (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) ? 'numeric' : 'amount';
|
||||||
|
print $form->editfieldval("OutstandingBill",'outstanding_limit',$object->outstanding_limit,$object,$user->rights->societe->creer,$limit_field_type,($object->outstanding_limit != '' ? price($object->outstanding_limit) : ''));
|
||||||
// display amount and link to unpaid bill
|
// display amount and link to unpaid bill
|
||||||
$outstandigBills = $object->get_OutstandingBill();
|
$outstandigBills = $object->get_OutstandingBill();
|
||||||
if ($outstandigBills != 0)
|
if ($outstandigBills != 0)
|
||||||
|
|||||||
@ -267,6 +267,8 @@ class Mailing extends CommonObject
|
|||||||
|
|
||||||
$object=new Mailing($this->db);
|
$object=new Mailing($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone']='createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -362,6 +364,8 @@ class Mailing extends CommonObject
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($object->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -235,27 +235,30 @@ class Propal extends CommonObject
|
|||||||
return -5;
|
return -5;
|
||||||
}
|
}
|
||||||
|
|
||||||
$propalligne=new PropaleLigne($this->db);
|
$line=new PropaleLigne($this->db);
|
||||||
$propalligne->fk_propal=$this->id;
|
|
||||||
$propalligne->fk_remise_except=$remise->id;
|
$this->line->context = $this->context;
|
||||||
$propalligne->desc=$remise->description; // Description ligne
|
|
||||||
$propalligne->tva_tx=$remise->tva_tx;
|
$line->fk_propal=$this->id;
|
||||||
$propalligne->subprice=-$remise->amount_ht;
|
$line->fk_remise_except=$remise->id;
|
||||||
$propalligne->fk_product=0; // Id produit predefini
|
$line->desc=$remise->description; // Description ligne
|
||||||
$propalligne->qty=1;
|
$line->tva_tx=$remise->tva_tx;
|
||||||
$propalligne->remise=0;
|
$line->subprice=-$remise->amount_ht;
|
||||||
$propalligne->remise_percent=0;
|
$line->fk_product=0; // Id produit predefini
|
||||||
$propalligne->rang=-1;
|
$line->qty=1;
|
||||||
$propalligne->info_bits=2;
|
$line->remise=0;
|
||||||
|
$line->remise_percent=0;
|
||||||
|
$line->rang=-1;
|
||||||
|
$line->info_bits=2;
|
||||||
|
|
||||||
// TODO deprecated
|
// TODO deprecated
|
||||||
$propalligne->price=-$remise->amount_ht;
|
$line->price=-$remise->amount_ht;
|
||||||
|
|
||||||
$propalligne->total_ht = -$remise->amount_ht;
|
$line->total_ht = -$remise->amount_ht;
|
||||||
$propalligne->total_tva = -$remise->amount_tva;
|
$line->total_tva = -$remise->amount_tva;
|
||||||
$propalligne->total_ttc = -$remise->amount_ttc;
|
$line->total_ttc = -$remise->amount_ttc;
|
||||||
|
|
||||||
$result=$propalligne->insert();
|
$result=$line->insert();
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$result=$this->update_price(1);
|
$result=$this->update_price(1);
|
||||||
@ -272,7 +275,7 @@ class Propal extends CommonObject
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$propalligne->error;
|
$this->error=$line->error;
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
@ -389,6 +392,8 @@ class Propal extends CommonObject
|
|||||||
// Insert line
|
// Insert line
|
||||||
$this->line=new PropaleLigne($this->db);
|
$this->line=new PropaleLigne($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
$this->line->fk_propal=$this->id;
|
$this->line->fk_propal=$this->id;
|
||||||
$this->line->label=$label;
|
$this->line->label=$label;
|
||||||
$this->line->desc=$desc;
|
$this->line->desc=$desc;
|
||||||
@ -541,6 +546,8 @@ class Propal extends CommonObject
|
|||||||
// Update line
|
// Update line
|
||||||
$this->line=new PropaleLigne($this->db);
|
$this->line=new PropaleLigne($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
// Stock previous line records
|
// Stock previous line records
|
||||||
$staticline=new PropaleLigne($this->db);
|
$staticline=new PropaleLigne($this->db);
|
||||||
$staticline->fetch($rowid);
|
$staticline->fetch($rowid);
|
||||||
@ -949,6 +956,8 @@ class Propal extends CommonObject
|
|||||||
{
|
{
|
||||||
global $user,$langs,$conf,$hookmanager;
|
global $user,$langs,$conf,$hookmanager;
|
||||||
|
|
||||||
|
$this->context['createfromclone']='createfromclone';
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
|
|
||||||
@ -1042,6 +1051,8 @@ class Propal extends CommonObject
|
|||||||
// End call triggers
|
// End call triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
@ -3112,6 +3123,7 @@ class PropaleLigne extends CommonObject
|
|||||||
if (empty($this->special_code)) $this->special_code=0;
|
if (empty($this->special_code)) $this->special_code=0;
|
||||||
if (empty($this->fk_parent_line)) $this->fk_parent_line=0;
|
if (empty($this->fk_parent_line)) $this->fk_parent_line=0;
|
||||||
if (empty($this->fk_fournprice)) $this->fk_fournprice=0;
|
if (empty($this->fk_fournprice)) $this->fk_fournprice=0;
|
||||||
|
if (empty($this->subprice)) $this->subprice=0;
|
||||||
|
|
||||||
if (empty($this->pa_ht)) $this->pa_ht=0;
|
if (empty($this->pa_ht)) $this->pa_ht=0;
|
||||||
|
|
||||||
|
|||||||
@ -877,6 +877,8 @@ class Commande extends CommonOrder
|
|||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
|
$this->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// get extrafields so they will be clone
|
// get extrafields so they will be clone
|
||||||
@ -941,6 +943,8 @@ class Commande extends CommonOrder
|
|||||||
// End call triggers
|
// End call triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
@ -1200,6 +1204,8 @@ class Commande extends CommonOrder
|
|||||||
// Insert line
|
// Insert line
|
||||||
$this->line=new OrderLine($this->db);
|
$this->line=new OrderLine($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
$this->line->fk_commande=$this->id;
|
$this->line->fk_commande=$this->id;
|
||||||
$this->line->label=$label;
|
$this->line->label=$label;
|
||||||
$this->line->desc=$desc;
|
$this->line->desc=$desc;
|
||||||
@ -1314,6 +1320,8 @@ class Commande extends CommonOrder
|
|||||||
|
|
||||||
$line=new OrderLine($this->db);
|
$line=new OrderLine($this->db);
|
||||||
|
|
||||||
|
$line->context = $this->context;
|
||||||
|
|
||||||
$line->fk_product=$idproduct;
|
$line->fk_product=$idproduct;
|
||||||
$line->desc=$prod->description;
|
$line->desc=$prod->description;
|
||||||
$line->qty=$qty;
|
$line->qty=$qty;
|
||||||
@ -2396,6 +2404,8 @@ class Commande extends CommonOrder
|
|||||||
// Update line
|
// Update line
|
||||||
$this->line=new OrderLine($this->db);
|
$this->line=new OrderLine($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
// Stock previous line records
|
// Stock previous line records
|
||||||
$staticline=new OrderLine($this->db);
|
$staticline=new OrderLine($this->db);
|
||||||
$staticline->fetch($rowid);
|
$staticline->fetch($rowid);
|
||||||
|
|||||||
@ -300,6 +300,8 @@ class BankCateg // extends CommonObject
|
|||||||
|
|
||||||
$object=new BankCateg($this->db);
|
$object=new BankCateg($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -327,6 +329,8 @@ class BankCateg // extends CommonObject
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($object->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -639,6 +639,8 @@ class Facture extends CommonInvoice
|
|||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
|
$this->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// get extrafields so they will be clone
|
// get extrafields so they will be clone
|
||||||
@ -725,6 +727,8 @@ class Facture extends CommonInvoice
|
|||||||
// End call triggers
|
// End call triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
@ -2120,6 +2124,9 @@ class Facture extends CommonInvoice
|
|||||||
|
|
||||||
// Insert line
|
// Insert line
|
||||||
$this->line=new FactureLigne($this->db);
|
$this->line=new FactureLigne($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
$this->line->fk_facture=$this->id;
|
$this->line->fk_facture=$this->id;
|
||||||
$this->line->label=$label; // deprecated
|
$this->line->label=$label; // deprecated
|
||||||
$this->line->desc=$desc;
|
$this->line->desc=$desc;
|
||||||
@ -2263,6 +2270,8 @@ class Facture extends CommonInvoice
|
|||||||
// Update line into database
|
// Update line into database
|
||||||
$this->line=new FactureLigne($this->db);
|
$this->line=new FactureLigne($this->db);
|
||||||
|
|
||||||
|
$this->line->context = $this->context;
|
||||||
|
|
||||||
// Stock previous line records
|
// Stock previous line records
|
||||||
$staticline=new FactureLigne($this->db);
|
$staticline=new FactureLigne($this->db);
|
||||||
$staticline->fetch($rowid);
|
$staticline->fetch($rowid);
|
||||||
@ -2403,6 +2412,8 @@ class Facture extends CommonInvoice
|
|||||||
|
|
||||||
$line=new FactureLigne($this->db);
|
$line=new FactureLigne($this->db);
|
||||||
|
|
||||||
|
$line->context = $this->context;
|
||||||
|
|
||||||
// For triggers
|
// For triggers
|
||||||
$line->fetch($rowid);
|
$line->fetch($rowid);
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,7 @@ class PaymentTerm // extends CommonObject
|
|||||||
var $errors=array(); //!< To return several error codes (or messages)
|
var $errors=array(); //!< To return several error codes (or messages)
|
||||||
//public $element='c_payment_term'; //!< Id that identify managed objects
|
//public $element='c_payment_term'; //!< Id that identify managed objects
|
||||||
//public $table_element='c_payment_term'; //!< Name of table without prefix where object is stored
|
//public $table_element='c_payment_term'; //!< Name of table without prefix where object is stored
|
||||||
|
var $context =array();
|
||||||
|
|
||||||
var $id;
|
var $id;
|
||||||
|
|
||||||
@ -409,6 +410,8 @@ class PaymentTerm // extends CommonObject
|
|||||||
|
|
||||||
$object=new PaymentTerm($this->db);
|
$object=new PaymentTerm($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -436,6 +439,8 @@ class PaymentTerm // extends CommonObject
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -897,7 +897,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT substring(ref from char_length(ref) - 1)";
|
$sql = "SELECT substring(ref from char_length(ref) - 1)";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons";
|
$sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons";
|
||||||
$sql.= " WHERE ref LIKE '%".$ref."%'";
|
$sql.= " WHERE ref LIKE '%".$this->db->escape($ref)."%'";
|
||||||
$sql.= " AND entity = ".$conf->entity;
|
$sql.= " AND entity = ".$conf->entity;
|
||||||
$sql.= " ORDER BY ref DESC LIMIT 1";
|
$sql.= " ORDER BY ref DESC LIMIT 1";
|
||||||
|
|
||||||
@ -935,13 +935,13 @@ class BonPrelevement extends CommonObject
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_syslog(__METHOD__."::Create withdraw receipt ".$this->db->error(), LOG_ERR);
|
dol_syslog(__METHOD__."::Create withdraw receipt ".$this->db->lasterror(), LOG_ERR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_syslog(__METHOD__."::Get last withdraw receipt ".$this->db->error(), LOG_ERR);
|
dol_syslog(__METHOD__."::Get last withdraw receipt ".$this->db->lasterror(), LOG_ERR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -975,10 +975,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// Update invoice requests as done
|
||||||
* Update orders
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
|
||||||
$sql.= " SET traite = 1";
|
$sql.= " SET traite = 1";
|
||||||
$sql.= ", date_traite = '".$this->db->idate($now)."'";
|
$sql.= ", date_traite = '".$this->db->idate($now)."'";
|
||||||
@ -1025,7 +1022,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
$bonprev->factures = $factures_prev_id;
|
$bonprev->factures = $factures_prev_id;
|
||||||
|
|
||||||
//Build file
|
// Generation of SEPA file
|
||||||
$bonprev->generate();
|
$bonprev->generate();
|
||||||
}
|
}
|
||||||
dol_syslog(__METHOD__."::End withdraw receipt, file ".$filebonprev, LOG_DEBUG);
|
dol_syslog(__METHOD__."::End withdraw receipt, file ".$filebonprev, LOG_DEBUG);
|
||||||
@ -1034,7 +1031,6 @@ class BonPrelevement extends CommonObject
|
|||||||
/*
|
/*
|
||||||
* Update total
|
* Update total
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
||||||
$sql.= " SET amount = ".price2num($bonprev->total);
|
$sql.= " SET amount = ".price2num($bonprev->total);
|
||||||
$sql.= " WHERE rowid = ".$prev_id;
|
$sql.= " WHERE rowid = ".$prev_id;
|
||||||
@ -1047,9 +1043,6 @@ class BonPrelevement extends CommonObject
|
|||||||
dol_syslog(__METHOD__."::Error update total: ".$this->db->error(), LOG_ERR);
|
dol_syslog(__METHOD__."::Error update total: ".$this->db->error(), LOG_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Rollback or Commit
|
|
||||||
*/
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
@ -1256,13 +1249,28 @@ class BonPrelevement extends CommonObject
|
|||||||
$fileDebiteurSection = '';
|
$fileDebiteurSection = '';
|
||||||
$fileEmetteurSection = '';
|
$fileEmetteurSection = '';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
$j = 0;
|
||||||
$this->total = 0;
|
$this->total = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* section Debiteur (sepa Debiteurs bloc lines)
|
* section Debiteur (sepa Debiteurs bloc lines)
|
||||||
*/
|
*/
|
||||||
$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, c.code as country_code,";
|
|
||||||
$sql.= " pl.client_nom as name, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
|
$sql = "SELECT f.facnumber as fac FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."prelevement_facture as pf, ".MAIN_DB_PREFIX."societe as soc, ".MAIN_DB_PREFIX."c_country as p, ".MAIN_DB_PREFIX."societe_rib as rib WHERE pl.fk_prelevement_bons = ".$this->id." AND pl.rowid = pf.fk_prelevement_lignes AND pf.fk_facture = f.rowid AND soc.fk_pays = p.rowid AND soc.rowid = f.fk_soc AND rib.fk_soc = f.fk_soc AND rib.default_rib = 1";
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
while ($j < $num)
|
||||||
|
{
|
||||||
|
$objfac = $this->db->fetch_object($resql);
|
||||||
|
$ListOfFactures = $ListOfFactures . $objfac->fac . ",";
|
||||||
|
$j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, p.code as country_code,";
|
||||||
|
$sql.= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
|
||||||
$sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum";
|
$sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum";
|
||||||
$sql.= " FROM";
|
$sql.= " FROM";
|
||||||
$sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
$sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||||
@ -1286,7 +1294,7 @@ class BonPrelevement extends CommonObject
|
|||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->name, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->facnumber, $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum);
|
$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures , $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum);
|
||||||
$this->total = $this->total + $obj->somme;
|
$this->total = $this->total + $obj->somme;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
@ -1321,13 +1329,14 @@ class BonPrelevement extends CommonObject
|
|||||||
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
||||||
fputs($this->file, ' <InitgPty>'.$CrLf);
|
fputs($this->file, ' <InitgPty>'.$CrLf);
|
||||||
fputs($this->file, ' <Nm>'.$this->raison_sociale.'</Nm>'.$CrLf);
|
fputs($this->file, ' <Nm>'.$this->raison_sociale.'</Nm>'.$CrLf);
|
||||||
/* fputs($this->file, ' <Id>'.$CrLf);
|
fputs($this->file, ' <Id>'.$CrLf);
|
||||||
fputs($this->file, ' <Othr>'.$CrLf);
|
fputs($this->file, ' <PrvtId>'.$CrLf);
|
||||||
fputs($this->file, ' <Id>0533883248</Id>'.$CrLf);
|
|
||||||
fputs($this->file, ' <Issr>KBO-BCE</Issr>'.$CrLf);
|
|
||||||
fputs($this->file, ' <Othr>'.$CrLf);
|
fputs($this->file, ' <Othr>'.$CrLf);
|
||||||
|
fputs($this->file, ' <Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
|
||||||
|
fputs($this->file, ' </Othr>'.$CrLf);
|
||||||
|
fputs($this->file, ' </PrvtId>'.$CrLf);
|
||||||
fputs($this->file, ' </Id>'.$CrLf);
|
fputs($this->file, ' </Id>'.$CrLf);
|
||||||
*/ fputs($this->file, ' </InitgPty>'.$CrLf);
|
fputs($this->file, ' </InitgPty>'.$CrLf);
|
||||||
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
||||||
// SEPA File Emetteur
|
// SEPA File Emetteur
|
||||||
if ($result != -2)
|
if ($result != -2)
|
||||||
@ -1504,15 +1513,19 @@ class BonPrelevement extends CommonObject
|
|||||||
* @param string $row_idfac pf.fk_facture AS idfac,
|
* @param string $row_idfac pf.fk_facture AS idfac,
|
||||||
* @param string $row_iban rib.iban_prefix AS iban,
|
* @param string $row_iban rib.iban_prefix AS iban,
|
||||||
* @param string $row_bic rib.bic AS bic,
|
* @param string $row_bic rib.bic AS bic,
|
||||||
* @param string $row_datec soc.datec,
|
* @param string $row_datec rib.datec,
|
||||||
* @param string $row_drum soc.rowid AS drum
|
* @param string $row_drum rib.rowid AS drum
|
||||||
* @return string Return string with SEPA part DrctDbtTxInf
|
* @return string Return string with SEPA part DrctDbtTxInf
|
||||||
*/
|
*/
|
||||||
function EnregDestinataireSEPA($row_code_client, $row_nom, $row_address, $row_zip, $row_town, $row_country_code, $row_cb, $row_cg, $row_cc, $row_somme, $row_facnumber, $row_idfac, $row_iban, $row_bic, $row_datec, $row_drum)
|
function EnregDestinataireSEPA($row_code_client, $row_nom, $row_address, $row_zip, $row_town, $row_country_code, $row_cb, $row_cg, $row_cc, $row_somme, $row_facnumber, $row_idfac, $row_iban, $row_bic, $row_datec, $row_drum)
|
||||||
{
|
{
|
||||||
$CrLf = "\n";
|
$CrLf = "\n";
|
||||||
$Rowing = sprintf("%06d", $row_idfac);
|
$Rowing = sprintf("%06d", $row_idfac);
|
||||||
|
|
||||||
|
// Define value for RUM
|
||||||
|
// Example: RUMCustomerCode-CustomerBankAccountId-01424448606 (note: Date is date of creation of CustomerBankAccountId)
|
||||||
$Date_Rum = strtotime($row_datec);
|
$Date_Rum = strtotime($row_datec);
|
||||||
|
$DtOfSgntr = dol_print_date($row_datec, '%Y-%m-%d');
|
||||||
$pre = ($date_Rum > 1359673200) ? 'Rum' : '++R';
|
$pre = ($date_Rum > 1359673200) ? 'Rum' : '++R';
|
||||||
$Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum);
|
$Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum);
|
||||||
$XML_DEBITOR ='';
|
$XML_DEBITOR ='';
|
||||||
@ -1520,11 +1533,11 @@ class BonPrelevement extends CommonObject
|
|||||||
$XML_DEBITOR .=' <PmtId>'.$CrLf;
|
$XML_DEBITOR .=' <PmtId>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <EndToEndId>'.('AS-'.$row_facnumber.'-'.$Rowing).'</EndToEndId>'.$CrLf;
|
$XML_DEBITOR .=' <EndToEndId>'.('AS-'.$row_facnumber.'-'.$Rowing).'</EndToEndId>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </PmtId>'.$CrLf;
|
$XML_DEBITOR .=' </PmtId>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <InstdAmt Ccy.="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
|
$XML_DEBITOR .=' <InstdAmt Ccy="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <DrctDbtTx>'.$CrLf;
|
$XML_DEBITOR .=' <DrctDbtTx>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <MndtRltdInf>'.$CrLf;
|
$XML_DEBITOR .=' <MndtRltdInf>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <MndtId>'.$Rum.'</MndtId>'.$CrLf;
|
$XML_DEBITOR .=' <MndtId>'.$Rum.'</MndtId>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <DtOfSgntr>'.$row_datec.'</DtOfSgntr>'.$CrLf;
|
$XML_DEBITOR .=' <DtOfSgntr>'.$DtOfSgntr.'</DtOfSgntr>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <AmdmntInd>false</AmdmntInd>'.$CrLf;
|
$XML_DEBITOR .=' <AmdmntInd>false</AmdmntInd>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </MndtRltdInf>'.$CrLf;
|
$XML_DEBITOR .=' </MndtRltdInf>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </DrctDbtTx>'.$CrLf;
|
$XML_DEBITOR .=' </DrctDbtTx>'.$CrLf;
|
||||||
@ -1537,17 +1550,18 @@ class BonPrelevement extends CommonObject
|
|||||||
$XML_DEBITOR .=' <Nm>'.strtoupper(dol_string_unaccent($row_nom)).'</Nm>'.$CrLf;
|
$XML_DEBITOR .=' <Nm>'.strtoupper(dol_string_unaccent($row_nom)).'</Nm>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <PstlAdr>'.$CrLf;
|
$XML_DEBITOR .=' <PstlAdr>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <Ctry>'.$row_country_code.'</Ctry>'.$CrLf;
|
$XML_DEBITOR .=' <Ctry>'.$row_country_code.'</Ctry>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <AdrLine>'.strtr($row_adr, array(CHR(13) => ", ", CHR(10) => "")).'</AdrLine>'.$CrLf;
|
$XML_DEBITOR .=' <AdrLine>'.strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")).'</AdrLine>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <AdrLine>'.dol_string_unaccent($row_zip.' '.$row_town).'</AdrLine>'.$CrLf;
|
$XML_DEBITOR .=' <AdrLine>'.dol_string_unaccent($row_zip.' '.$row_town).'</AdrLine>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </PstlAdr>'.$CrLf;
|
$XML_DEBITOR .=' </PstlAdr>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </Dbtr>'.$CrLf;
|
$XML_DEBITOR .=' </Dbtr>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <DbtrAcct>'.$CrLf;
|
$XML_DEBITOR .=' <DbtrAcct>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <Id>'.$CrLf;
|
$XML_DEBITOR .=' <Id>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <IBAN>'.$row_iban.'</IBAN>'.$CrLf;
|
$XML_DEBITOR .=' <IBAN>'.preg_replace('/\s/', '', $row_iban).'</IBAN>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </Id>'.$CrLf;
|
$XML_DEBITOR .=' </Id>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </DbtrAcct>'.$CrLf;
|
$XML_DEBITOR .=' </DbtrAcct>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <RmtInf>'.$CrLf;
|
$XML_DEBITOR .=' <RmtInf>'.$CrLf;
|
||||||
$XML_DEBITOR .=' <Ustrd>'.($row_facnumber.'/'.$Rowing.'/'.$Rum).'</Ustrd>'.$CrLf;
|
// $XML_DEBITOR .=' <Ustrd>'.($row_facnumber.'/'.$Rowing.'/'.$Rum).'</Ustrd>'.$CrLf;
|
||||||
|
$XML_DEBITOR .=' <Ustrd>'.$row_facnumber.'</Ustrd>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </RmtInf>'.$CrLf;
|
$XML_DEBITOR .=' </RmtInf>'.$CrLf;
|
||||||
$XML_DEBITOR .=' </DrctDbtTxInf>'.$CrLf;
|
$XML_DEBITOR .=' </DrctDbtTxInf>'.$CrLf;
|
||||||
return $XML_DEBITOR;
|
return $XML_DEBITOR;
|
||||||
|
|||||||
@ -384,6 +384,8 @@ class PaymentSocialContribution extends CommonObject
|
|||||||
|
|
||||||
$object=new PaymentSocialContribution($this->db);
|
$object=new PaymentSocialContribution($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -411,6 +413,8 @@ class PaymentSocialContribution extends CommonObject
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -36,7 +36,7 @@ $langs->load("companies");
|
|||||||
// Security check
|
// Security check
|
||||||
$id = GETPOST('id','int');
|
$id = GETPOST('id','int');
|
||||||
if ($user->societe_id) $id=$user->societe_id;
|
if ($user->societe_id) $id=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'societe', $id, '&societe');
|
$result = restrictedArea($user, 'contact', $id, 'socpeople&societe');
|
||||||
|
|
||||||
$object = new Contact($db);
|
$object = new Contact($db);
|
||||||
if ($id > 0) $object->fetch($id);
|
if ($id > 0) $object->fetch($id);
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
|
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -27,6 +28,7 @@
|
|||||||
|
|
||||||
require ("../main.inc.php");
|
require ("../main.inc.php");
|
||||||
require_once (DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php");
|
require_once (DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php");
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
|
||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
@ -47,6 +49,8 @@ $sall=GETPOST('sall');
|
|||||||
$search_status=GETPOST('search_status');
|
$search_status=GETPOST('search_status');
|
||||||
$socid=GETPOST('socid');
|
$socid=GETPOST('socid');
|
||||||
|
|
||||||
|
$search_sale = GETPOST('search_sale','int');
|
||||||
|
|
||||||
if (! $sortfield) $sortfield="c.rowid";
|
if (! $sortfield) $sortfield="c.rowid";
|
||||||
if (! $sortorder) $sortorder="DESC";
|
if (! $sortorder) $sortorder="DESC";
|
||||||
|
|
||||||
@ -63,6 +67,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
|
|||||||
$search_name="";
|
$search_name="";
|
||||||
$search_contract="";
|
$search_contract="";
|
||||||
$search_ref_supplier="";
|
$search_ref_supplier="";
|
||||||
|
$search_sale="";
|
||||||
$sall="";
|
$sall="";
|
||||||
$search_status="";
|
$search_status="";
|
||||||
}
|
}
|
||||||
@ -75,6 +80,8 @@ if ($search_status == '') $search_status=1;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
$socstatic = new Societe($db);
|
||||||
|
|
||||||
llxHeader();
|
llxHeader();
|
||||||
|
|
||||||
@ -87,13 +94,13 @@ $sql.= ' SUM('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NOT NULL AND
|
|||||||
$sql.= ' SUM('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NOT NULL AND cd.date_fin_validite < '".$db->idate($now - $conf->contrat->services->expires->warning_delay)."')",1,0).') as nb_late,';
|
$sql.= ' SUM('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NOT NULL AND cd.date_fin_validite < '".$db->idate($now - $conf->contrat->services->expires->warning_delay)."')",1,0).') as nb_late,';
|
||||||
$sql.= ' SUM('.$db->ifsql("cd.statut=5",1,0).') as nb_closed';
|
$sql.= ' SUM('.$db->ifsql("cd.statut=5",1,0).') as nb_closed';
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
|
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||||
$sql.= ", ".MAIN_DB_PREFIX."contrat as c";
|
$sql.= ", ".MAIN_DB_PREFIX."contrat as c";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
|
||||||
$sql.= " WHERE c.fk_soc = s.rowid ";
|
$sql.= " WHERE c.fk_soc = s.rowid ";
|
||||||
$sql.= " AND c.entity = ".$conf->entity;
|
$sql.= " AND c.entity = ".$conf->entity;
|
||||||
if ($socid) $sql.= " AND s.rowid = ".$socid;
|
if ($socid) $sql.= " AND s.rowid = ".$socid;
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
|
|
||||||
if ($search_name) {
|
if ($search_name) {
|
||||||
$sql .= natural_search('s.nom', $search_name);
|
$sql .= natural_search('s.nom', $search_name);
|
||||||
}
|
}
|
||||||
@ -103,6 +110,12 @@ if ($search_contract) {
|
|||||||
if (!empty($search_ref_supplier)) {
|
if (!empty($search_ref_supplier)) {
|
||||||
$sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier);
|
$sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($search_sale > 0)
|
||||||
|
{
|
||||||
|
$sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;
|
||||||
|
}
|
||||||
|
|
||||||
if ($sall) {
|
if ($sall) {
|
||||||
$sql .= natural_search(array('s.nom', 'cd.label', 'cd.description'), $sall);
|
$sql .= natural_search(array('s.nom', 'cd.label', 'cd.description'), $sall);
|
||||||
}
|
}
|
||||||
@ -121,13 +134,34 @@ if ($resql)
|
|||||||
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
|
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
|
||||||
print '<table class="liste" width="100%">';
|
print '<table class="liste" width="100%">';
|
||||||
|
|
||||||
|
// If the user can view prospects other than his'
|
||||||
|
$moreforfilter='';
|
||||||
|
if ($user->rights->societe->client->voir || $socid)
|
||||||
|
{
|
||||||
|
$langs->load("commercial");
|
||||||
|
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
|
||||||
|
$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
|
||||||
|
$moreforfilter.=' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($moreforfilter)
|
||||||
|
{
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td class="liste_titre" colspan="9">';
|
||||||
|
print $moreforfilter;
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
$param='&search_contract='.$search_contract;
|
$param='&search_contract='.$search_contract;
|
||||||
$param.='&search_name='.$search_name;
|
$param.='&search_name='.$search_name;
|
||||||
$param.='&search_ref_supplier='.$search_ref_supplier;
|
$param.='&search_ref_supplier='.$search_ref_supplier;
|
||||||
|
$param.='&search_sale=' .$search_sale;
|
||||||
|
|
||||||
print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","$param",'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","$param",'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("RefCustomer"), $_SERVER["PHP_SELF"], "c.ref_supplier","","$param",'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("RefCustomer"), $_SERVER["PHP_SELF"], "c.ref_supplier","","$param",'',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","$param",'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","$param",'',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre($langs->trans("SalesRepresentative"), $_SERVER["PHP_SELF"], "","","$param",'',$sortfield,$sortorder);
|
||||||
//print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","$param",'align="center"',$sortfield,$sortorder);
|
//print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","$param",'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("DateContract"), $_SERVER["PHP_SELF"], "c.date_contrat","","$param",'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("DateContract"), $_SERVER["PHP_SELF"], "c.date_contrat","","$param",'align="center"',$sortfield,$sortorder);
|
||||||
//print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","$param",'align="center"',$sortfield,$sortorder);
|
//print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","$param",'align="center"',$sortfield,$sortorder);
|
||||||
@ -150,7 +184,7 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"> </td>';
|
print '<td class="liste_titre"> </td>';
|
||||||
//print '<td class="liste_titre"> </td>';
|
//print '<td class="liste_titre"> </td>';
|
||||||
print '<td colspan="4" class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
print '<td colspan="5" class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||||
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
@ -167,6 +201,43 @@ if ($resql)
|
|||||||
print '<td>'.$obj->ref_supplier.'</td>';
|
print '<td>'.$obj->ref_supplier.'</td>';
|
||||||
print '<td><a href="../comm/card.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.'</a></td>';
|
print '<td><a href="../comm/card.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.'</a></td>';
|
||||||
//print '<td align="center">'.dol_print_date($obj->datec).'</td>';
|
//print '<td align="center">'.dol_print_date($obj->datec).'</td>';
|
||||||
|
|
||||||
|
// Sales Rapresentatives
|
||||||
|
print '<td>';
|
||||||
|
if($obj->socid)
|
||||||
|
{
|
||||||
|
$socstatic->fetch($obj->socid);
|
||||||
|
$listsalesrepresentatives=$socstatic->getSalesRepresentatives($user);
|
||||||
|
$nbofsalesrepresentative=count($listsalesrepresentatives);
|
||||||
|
if ($nbofsalesrepresentative > 3) // We print only number
|
||||||
|
{
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/societe/commerciaux.php?socid='.$socstatic->id.'">';
|
||||||
|
print $nbofsalesrepresentative;
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
else if ($nbofsalesrepresentative > 0)
|
||||||
|
{
|
||||||
|
$userstatic=new User($db);
|
||||||
|
$j=0;
|
||||||
|
foreach($listsalesrepresentatives as $val)
|
||||||
|
{
|
||||||
|
$userstatic->id=$val['id'];
|
||||||
|
$userstatic->lastname=$val['lastname'];
|
||||||
|
$userstatic->firstname=$val['firstname'];
|
||||||
|
print $userstatic->getNomUrl(1);
|
||||||
|
$j++;
|
||||||
|
if ($j < $nbofsalesrepresentative) print '<br/>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else print $langs->trans("NoSalesRepresentativeAffected");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print ' ';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
|
||||||
print '<td align="center">'.dol_print_date($db->jdate($obj->date_contrat)).'</td>';
|
print '<td align="center">'.dol_print_date($db->jdate($obj->date_contrat)).'</td>';
|
||||||
//print '<td align="center">'.$staticcontrat->LibStatut($obj->statut,3).'</td>';
|
//print '<td align="center">'.$staticcontrat->LibStatut($obj->statut,3).'</td>';
|
||||||
print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>';
|
print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>';
|
||||||
|
|||||||
@ -49,6 +49,7 @@ abstract class CommonObject
|
|||||||
public $errors;
|
public $errors;
|
||||||
|
|
||||||
public $canvas; // Contains canvas name if it is
|
public $canvas; // Contains canvas name if it is
|
||||||
|
public $context=array(); // Use to pass context information
|
||||||
|
|
||||||
public $name;
|
public $name;
|
||||||
public $lastname;
|
public $lastname;
|
||||||
|
|||||||
@ -148,9 +148,10 @@ class Ctypent // extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $id Id object
|
* @param int $id Id object
|
||||||
* @param string $code Code
|
* @param string $code Code
|
||||||
|
* @param string $label Label
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function fetch($id,$code='')
|
function fetch($id,$code='',$label='')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
@ -163,8 +164,8 @@ class Ctypent // extends CommonObject
|
|||||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_typent as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."c_typent as t";
|
||||||
if ($id) $sql.= " WHERE t.id = ".$id;
|
if ($id) $sql.= " WHERE t.id = ".$id;
|
||||||
elseif ($code) $sql.= " WHERE t.code = '".$this->db->escape($code)."'";
|
elseif ($code) $sql.= " WHERE t.code = '".$this->db->escape($code)."'";
|
||||||
|
elseif ($label) $sql.= " WHERE t.libelle = '".$this->db->escape($label)."'";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -183,6 +183,7 @@ class DolEditor
|
|||||||
customConfig : ckeditorConfig,
|
customConfig : ckeditorConfig,
|
||||||
readOnly : '.($this->readonly?'true':'false').',
|
readOnly : '.($this->readonly?'true':'false').',
|
||||||
htmlEncodeOutput :'.$htmlencode_force.',
|
htmlEncodeOutput :'.$htmlencode_force.',
|
||||||
|
allowedContent :'.(empty($conf->global->FCKEDITOR_ALLOW_ANY_CONTENT)?'false':'true').',
|
||||||
toolbar: \''.$this->toolbarname.'\',
|
toolbar: \''.$this->toolbarname.'\',
|
||||||
toolbarStartupExpanded: '.($this->toolbarstartexpanded ? 'true' : 'false').',
|
toolbarStartupExpanded: '.($this->toolbarstartexpanded ? 'true' : 'false').',
|
||||||
width: '.($this->width ? '\''.$this->width.'\'' : '\'\'').',
|
width: '.($this->width ? '\''.$this->width.'\'' : '\'\'').',
|
||||||
|
|||||||
@ -1263,7 +1263,7 @@ class ExtraFields
|
|||||||
*
|
*
|
||||||
* @param array $extralabels $array of extrafields
|
* @param array $extralabels $array of extrafields
|
||||||
* @param object $object Object
|
* @param object $object Object
|
||||||
* @param string $onlykey Only following key is filled
|
* @param string $onlykey Only following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must must set this to avoid to have other extrafields being reset.
|
||||||
* @return int 1 if array_options set / 0 if no value
|
* @return int 1 if array_options set / 0 if no value
|
||||||
*/
|
*/
|
||||||
function setOptionalsFromPost($extralabels,&$object,$onlykey='')
|
function setOptionalsFromPost($extralabels,&$object,$onlykey='')
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
|
||||||
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -269,6 +270,7 @@ class FormMail
|
|||||||
if ($this->withform == 1)
|
if ($this->withform == 1)
|
||||||
{
|
{
|
||||||
$out.= '<form method="POST" name="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n";
|
$out.= '<form method="POST" name="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n";
|
||||||
|
$out.= '<input style="display:none" type="submit" id="sendmail" name="sendmail">';
|
||||||
$out.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
$out.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
|
||||||
}
|
}
|
||||||
foreach ($this->param as $key=>$value)
|
foreach ($this->param as $key=>$value)
|
||||||
|
|||||||
@ -140,6 +140,10 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
|
|||||||
if (empty($conf->dol_use_jmobile)) print ' - ';
|
if (empty($conf->dol_use_jmobile)) print ' - ';
|
||||||
print '<input type="number" class="short" name="end_d" value="'.$end_d.'" min="1" max="7">';
|
print '<input type="number" class="short" name="end_d" value="'.$end_d.'" min="1" max="7">';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td>'.$langs->trans("AgendaShowBirthdayEvents").' <input type="checkbox" id="check_birthday" name="check_birthday"></td></tr>';
|
||||||
|
print '</table>';
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hooks
|
// Hooks
|
||||||
|
|||||||
@ -59,3 +59,46 @@ function expensereport_prepare_head($object)
|
|||||||
|
|
||||||
return $head;
|
return $head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return array head with list of tabs to view object informations.
|
||||||
|
*
|
||||||
|
* @return array head array with tabs
|
||||||
|
*/
|
||||||
|
function expensereport_admin_prepare_head()
|
||||||
|
{
|
||||||
|
global $langs, $conf, $user;
|
||||||
|
|
||||||
|
$h = 0;
|
||||||
|
$head = array();
|
||||||
|
|
||||||
|
$h = 0;
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT."/admin/expensereport.php";
|
||||||
|
$head[$h][1] = $langs->trans("ExpenseReports");
|
||||||
|
$head[$h][2] = 'expensereport';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
// Show more tabs from modules
|
||||||
|
// Entries must be declared in modules descriptor with line
|
||||||
|
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||||
|
// $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab
|
||||||
|
complete_head_from_modules($conf,$langs,null,$head,$h,'expensereport_admin');
|
||||||
|
|
||||||
|
/*$head[$h][0] = DOL_URL_ROOT.'/fichinter/admin/fichinter_extrafields.php';
|
||||||
|
$head[$h][1] = $langs->trans("ExtraFields");
|
||||||
|
$head[$h][2] = 'attributes';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT.'/fichinter/admin/fichinterdet_extrafields.php';
|
||||||
|
$head[$h][1] = $langs->trans("ExtraFieldsLines");
|
||||||
|
$head[$h][2] = 'attributesdet';
|
||||||
|
$h++;
|
||||||
|
*/
|
||||||
|
|
||||||
|
complete_head_from_modules($conf,$langs,null,$head,$h,'expensereport_admin','remove');
|
||||||
|
|
||||||
|
return $head;
|
||||||
|
}
|
||||||
|
|||||||
@ -187,7 +187,7 @@ function supplierorder_admin_prepare_head()
|
|||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierorderdet_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierorderdet_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFieldsLines");
|
$head[$h][1] = $langs->trans("ExtraFieldsSupplierOrdersLines");
|
||||||
$head[$h][2] = 'supplierorderdet';
|
$head[$h][2] = 'supplierorderdet';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ function supplierorder_admin_prepare_head()
|
|||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierinvoicedet_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierinvoicedet_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFieldsLines");
|
$head[$h][1] = $langs->trans("ExtraFieldsSupplierInvoicesLines");
|
||||||
$head[$h][2] = 'supplierinvoicedet';
|
$head[$h][2] = 'supplierinvoicedet';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
* Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
|
||||||
* Copyright (C) 2014 Cédric GROSS <c.gross@kreiz-it.fr>
|
* Copyright (C) 2014 Cédric GROSS <c.gross@kreiz-it.fr>
|
||||||
|
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -95,13 +95,13 @@ function getDoliDBInstance($type, $host, $user, $pass, $name, $port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get entity to use
|
* Get list of entity id to use
|
||||||
*
|
*
|
||||||
* @param string $element Current element
|
* @param string $element Current element
|
||||||
* @param int $shared 1=Return shared entities
|
* @param int $shared 0=Return id of entity, 1=Return id entity + shared entities
|
||||||
* @return mixed Entity id(s) to use
|
* @return mixed Entity id(s) to use
|
||||||
*/
|
*/
|
||||||
function getEntity($element=false, $shared=false)
|
function getEntity($element=false, $shared=0)
|
||||||
{
|
{
|
||||||
global $conf, $mc;
|
global $conf, $mc;
|
||||||
|
|
||||||
@ -112,12 +112,9 @@ function getEntity($element=false, $shared=false)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$out='';
|
$out='';
|
||||||
|
|
||||||
$addzero = array('user', 'usergroup');
|
$addzero = array('user', 'usergroup');
|
||||||
if (in_array($element, $addzero)) $out.= '0,';
|
if (in_array($element, $addzero)) $out.= '0,';
|
||||||
|
|
||||||
$out.= $conf->entity;
|
$out.= $conf->entity;
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,7 +183,7 @@ function getBrowserInfo($user_agent)
|
|||||||
elseif (preg_match('/epiphany/i', $user_agent)) { $name='epiphany'; $version=$reg[2]; }
|
elseif (preg_match('/epiphany/i', $user_agent)) { $name='epiphany'; $version=$reg[2]; }
|
||||||
elseif (preg_match('/safari(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='safari'; $version=$reg[2]; } // Safari is often present in string for mobile but its not.
|
elseif (preg_match('/safari(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='safari'; $version=$reg[2]; } // Safari is often present in string for mobile but its not.
|
||||||
elseif (preg_match('/opera(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='opera'; $version=$reg[2]; }
|
elseif (preg_match('/opera(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='opera'; $version=$reg[2]; }
|
||||||
elseif (preg_match('/msie(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='ie'; $version=$reg[2]; } // MS products at end
|
elseif (preg_match('/(MSIE\s([0-9]+\.[0-9]))|.*(Trident\/[0-9]+.[0-9];\srv:([0-9]+\.[0-9]+))/i', $user_agent, $reg)) { $name='ie'; $version=end($reg); } // MS products at end
|
||||||
|
|
||||||
if ($tablet) {
|
if ($tablet) {
|
||||||
$layout = 'tablet';
|
$layout = 'tablet';
|
||||||
@ -492,16 +489,16 @@ function dol_string_unaccent($str)
|
|||||||
*
|
*
|
||||||
* @param string $str String to clean
|
* @param string $str String to clean
|
||||||
* @param string $newstr String to replace forbidden chars with
|
* @param string $newstr String to replace forbidden chars with
|
||||||
* @param array $badchars List of forbidden characters
|
* @param array $badcharstoreplace List of forbidden characters
|
||||||
* @return string Cleaned string
|
* @return string Cleaned string
|
||||||
*
|
*
|
||||||
* @see dol_sanitizeFilename, dol_string_unaccent
|
* @see dol_sanitizeFilename, dol_string_unaccent
|
||||||
*/
|
*/
|
||||||
function dol_string_nospecial($str,$newstr='_',$badchars='')
|
function dol_string_nospecial($str,$newstr='_',$badcharstoreplace='')
|
||||||
{
|
{
|
||||||
$forbidden_chars_to_replace=array(" ","'","/","\\",":","*","?","\"","<",">","|","[","]",",",";","=");
|
$forbidden_chars_to_replace=array(" ","'","/","\\",":","*","?","\"","<",">","|","[","]",",",";","=");
|
||||||
$forbidden_chars_to_remove=array();
|
$forbidden_chars_to_remove=array();
|
||||||
if (is_array($badchars)) $forbidden_chars_to_replace=$badchars;
|
if (is_array($badcharstoreplace)) $forbidden_chars_to_replace=$badcharstoreplace;
|
||||||
//$forbidden_chars_to_remove=array("(",")");
|
//$forbidden_chars_to_remove=array("(",")");
|
||||||
|
|
||||||
return str_replace($forbidden_chars_to_replace,$newstr,str_replace($forbidden_chars_to_remove,"",$str));
|
return str_replace($forbidden_chars_to_replace,$newstr,str_replace($forbidden_chars_to_remove,"",$str));
|
||||||
@ -2743,7 +2740,7 @@ function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath
|
|||||||
$return='';
|
$return='';
|
||||||
|
|
||||||
if ($picto == 'setup') $picto='title.png';
|
if ($picto == 'setup') $picto='title.png';
|
||||||
if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif';
|
if (($conf->browser->name == 'ie') && $picto=='title.png') $picto='title.gif';
|
||||||
|
|
||||||
$return.= "\n";
|
$return.= "\n";
|
||||||
$return.= '<table '.($id?'id="'.$id.'" ':'').'summary="" width="100%" border="0" class="notopnoleftnoright" style="margin-bottom: 2px;"><tr>';
|
$return.= '<table '.($id?'id="'.$id.'" ':'').'summary="" width="100%" border="0" class="notopnoleftnoright" style="margin-bottom: 2px;"><tr>';
|
||||||
@ -2782,7 +2779,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
|
|||||||
global $conf,$langs;
|
global $conf,$langs;
|
||||||
|
|
||||||
if ($picto == 'setup') $picto='title.png';
|
if ($picto == 'setup') $picto='title.png';
|
||||||
if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif';
|
if (($conf->browser->name == 'ie') && $picto=='title.png') $picto='title.gif';
|
||||||
|
|
||||||
if (($num > $conf->liste_limit) || ($num == -1))
|
if (($num > $conf->liste_limit) || ($num == -1))
|
||||||
{
|
{
|
||||||
@ -3097,7 +3094,7 @@ function price2num($amount,$rounding='',$alreadysqlnb=0)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return localtax rate for a particular vat, when selling a product with vat $tva, from a $thirdparty_buyer to a $thirdparty_seller
|
* Return localtax rate for a particular vat, when selling a product with vat $tva, from a $thirdparty_buyer to a $thirdparty_seller
|
||||||
* Note: It applies same rule than get_default_tva
|
* Note: This function applies same rules than get_default_tva
|
||||||
*
|
*
|
||||||
* @param float $tva Vat taxe
|
* @param float $tva Vat taxe
|
||||||
* @param int $local Local tax to search and return (1 or 2 return only tax rate 1 or tax rate 2)
|
* @param int $local Local tax to search and return (1 or 2 return only tax rate 1 or tax rate 2)
|
||||||
@ -3198,13 +3195,10 @@ function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
|
$sql = "SELECT t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$thirdparty_seller->country_code."'";
|
$sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$thirdparty_seller->country_code."'";
|
||||||
$sql .= " AND t.taux = ".((float) $tva)." AND t.active = 1";
|
$sql .= " AND t.taux = ".((float) $tva)." AND t.active = 1";
|
||||||
|
|
||||||
dol_syslog("get_localtax", LOG_DEBUG);
|
dol_syslog("get_localtax", LOG_DEBUG);
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -4706,6 +4700,8 @@ function picto_from_langcode($codelang)
|
|||||||
|
|
||||||
if (empty($codelang)) return '';
|
if (empty($codelang)) return '';
|
||||||
|
|
||||||
|
if (empty($codelang)) return '';
|
||||||
|
|
||||||
if ($codelang == 'auto')
|
if ($codelang == 'auto')
|
||||||
{
|
{
|
||||||
return img_picto_common($langs->trans('AutoDetectLang'), 'flags/int.png');
|
return img_picto_common($langs->trans('AutoDetectLang'), 'flags/int.png');
|
||||||
|
|||||||
@ -39,10 +39,11 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
|
|||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 201__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/dolibarr.php?leftmenu=admintools', 'InfoDolibarr', 1, 'admin', '', '', 2, 0, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 201__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/dolibarr.php?leftmenu=admintools', 'InfoDolibarr', 1, 'admin', '', '', 2, 0, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 202__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/system/modules.php?leftmenu=admintools', 'Modules', 2, 'admin', '', '', 2, 2, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 202__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/system/modules.php?leftmenu=admintools', 'Modules', 2, 'admin', '', '', 2, 2, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 203__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/triggers.php?leftmenu=admintools', 'Triggers', 2, 'admin', '', '', 2, 3, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 203__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/triggers.php?leftmenu=admintools', 'Triggers', 2, 'admin', '', '', 2, 3, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 204__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/browser.php?leftmenu=admintools', 'InfoBrowser', 1, 'admin', '', '', 2, 1, __ENTITY__);
|
--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 204__+MAX_llx_menu__, 'home', '', 201__+MAX_llx_menu__, '/admin/system/filecheck.php?leftmenu=admintools', 'FileCheck', 2, 'admin', '', '', 2, 4, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 205__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/os.php?leftmenu=admintools', 'InfoOS', 1, 'admin', '', '', 2, 2, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 205__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/browser.php?leftmenu=admintools', 'InfoBrowser', 1, 'admin', '', '', 2, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 206__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/web.php?leftmenu=admintools', 'InfoWebServer', 1, 'admin', '', '', 2, 3, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 206__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/os.php?leftmenu=admintools', 'InfoOS', 1, 'admin', '', '', 2, 2, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 207__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/phpinfo.php?leftmenu=admintools', 'InfoPHP', 1, 'admin', '', '', 2, 4, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 207__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/web.php?leftmenu=admintools', 'InfoWebServer', 1, 'admin', '', '', 2, 3, __ENTITY__);
|
||||||
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 208__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/phpinfo.php?leftmenu=admintools', 'InfoPHP', 1, 'admin', '', '', 2, 4, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 210__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/database.php?leftmenu=admintools', 'InfoDatabase', 1, 'admin', '', '', 2, 5, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 210__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/system/database.php?leftmenu=admintools', 'InfoDatabase', 1, 'admin', '', '', 2, 5, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 301__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/tools/dolibarr_export.php?leftmenu=admintools', 'Backup', 1, 'admin', '', '', 2, 6, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 301__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/tools/dolibarr_export.php?leftmenu=admintools', 'Backup', 1, 'admin', '', '', 2, 6, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 302__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/tools/dolibarr_import.php?leftmenu=admintools', 'Restore', 1, 'admin', '', '', 2, 7, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$leftmenu=="admintools"', __HANDLER__, 'left', 302__+MAX_llx_menu__, 'home', '', 300__+MAX_llx_menu__, '/admin/tools/dolibarr_import.php?leftmenu=admintools', 'Restore', 1, 'admin', '', '', 2, 7, __ENTITY__);
|
||||||
|
|||||||
@ -503,6 +503,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
$newmenu->add('/admin/system/dolibarr.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1);
|
$newmenu->add('/admin/system/dolibarr.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1);
|
||||||
if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2);
|
if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Modules'), 2);
|
||||||
if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2);
|
if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('Triggers'), 2);
|
||||||
|
//if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/filecheck.php?mainmenu=home&leftmenu=admintools_info', $langs->trans('FileCheck'), 2);
|
||||||
$newmenu->add('/admin/system/browser.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoBrowser'), 1);
|
$newmenu->add('/admin/system/browser.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoBrowser'), 1);
|
||||||
$newmenu->add('/admin/system/os.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoOS'), 1);
|
$newmenu->add('/admin/system/os.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoOS'), 1);
|
||||||
$newmenu->add('/admin/system/web.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoWebServer'), 1);
|
$newmenu->add('/admin/system/web.php?mainmenu=home&leftmenu=admintools', $langs->trans('InfoWebServer'), 1);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -19,10 +19,10 @@
|
|||||||
/**
|
/**
|
||||||
* \file htdocs/core/modules/expensereport/doc/pdf_standard.modules.php
|
* \file htdocs/core/modules/expensereport/doc/pdf_standard.modules.php
|
||||||
* \ingroup expensereport
|
* \ingroup expensereport
|
||||||
* \brief File of class to generate invoices from standard model
|
* \brief File of class to generate expense report from standard model
|
||||||
*/
|
*/
|
||||||
|
|
||||||
dol_include_once("/expensereport/core/modules/expensereport/modules_expensereport.php");
|
require_once DOL_DOCUMENT_ROOT.'/core/modules/expensereport/modules_expensereport.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
|
require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
|
require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php');
|
require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php');
|
||||||
@ -34,8 +34,24 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
/**
|
/**
|
||||||
* Classe permettant de generer les factures au modele Crabe
|
* Classe permettant de generer les factures au modele Crabe
|
||||||
*/
|
*/
|
||||||
class pdf_ extends ModeleExpenseReport
|
class pdf_standard extends ModeleExpenseReport
|
||||||
{
|
{
|
||||||
|
var $db;
|
||||||
|
var $name;
|
||||||
|
var $description;
|
||||||
|
var $type;
|
||||||
|
|
||||||
|
var $phpmin = array(4,3,0); // Minimum version of PHP required by module
|
||||||
|
var $version = 'dolibarr';
|
||||||
|
|
||||||
|
var $page_largeur;
|
||||||
|
var $page_hauteur;
|
||||||
|
var $format;
|
||||||
|
var $marge_gauche;
|
||||||
|
var $marge_droite;
|
||||||
|
var $marge_haute;
|
||||||
|
var $marge_basse;
|
||||||
|
|
||||||
var $emetteur; // Objet societe qui emet
|
var $emetteur; // Objet societe qui emet
|
||||||
|
|
||||||
|
|
||||||
@ -51,11 +67,11 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$langs->load("main");
|
$langs->load("main");
|
||||||
$langs->load("trips");
|
$langs->load("trips");
|
||||||
$langs->load("project");
|
$langs->load("project");
|
||||||
$langs->load("expensereport@expensereport");
|
$langs->load("trips");
|
||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->name = "";
|
$this->name = "";
|
||||||
$this->description = $langs->trans('PDFDescription');
|
$this->description = $langs->trans('PDFStandardExpenseReports');
|
||||||
|
|
||||||
// Dimension page pour format A4
|
// Dimension page pour format A4
|
||||||
$this->type = 'pdf';
|
$this->type = 'pdf';
|
||||||
@ -85,17 +101,16 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$this->emetteur=$mysoc;
|
$this->emetteur=$mysoc;
|
||||||
if (empty($this->emetteur->country_code)) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default, if was not defined
|
if (empty($this->emetteur->country_code)) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default, if was not defined
|
||||||
|
|
||||||
// Defini position des colonnes
|
// Define position of columns
|
||||||
// Defini position des colonnes
|
|
||||||
$this->posxpiece=$this->marge_gauche+1;
|
$this->posxpiece=$this->marge_gauche+1;
|
||||||
$this->posxdesc=20;
|
$this->posxdesc=20;
|
||||||
$this->posxdate=85;
|
$this->posxdate=85;
|
||||||
$this->posxtype=105;
|
$this->posxtype=105;
|
||||||
$this->posxprojet=125;
|
$this->posxprojet=125;
|
||||||
$this->posxtva=145;
|
$this->posxtva=145;
|
||||||
$this->posxup=158;
|
$this->posxup=162;
|
||||||
$this->posxqty=170;
|
$this->posxqty=176;
|
||||||
$this->postotalttc=176;
|
$this->postotalttc=186;
|
||||||
if ($this->page_largeur < 210) // To work with US executive format
|
if ($this->page_largeur < 210) // To work with US executive format
|
||||||
{
|
{
|
||||||
$this->posxdate-=20;
|
$this->posxdate-=20;
|
||||||
@ -124,6 +139,7 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
* @param int $hidedetails Do not show line details
|
* @param int $hidedetails Do not show line details
|
||||||
* @param int $hidedesc Do not show desc
|
* @param int $hidedesc Do not show desc
|
||||||
* @param int $hideref Do not show ref
|
* @param int $hideref Do not show ref
|
||||||
|
* @return int 1=OK, 0=KO
|
||||||
*/
|
*/
|
||||||
function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0)
|
function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0)
|
||||||
{
|
{
|
||||||
@ -133,40 +149,27 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
|
// For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO
|
||||||
if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1';
|
if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1';
|
||||||
|
|
||||||
|
|
||||||
// Hack to use expensereport dir
|
|
||||||
$rootfordata = DOL_DATA_ROOT;
|
|
||||||
$rootforuser = DOL_DATA_ROOT;
|
|
||||||
// If multicompany module is enabled, we redefine the root of data
|
|
||||||
//if (! empty($this->multicompany->enabled) && ! empty($this->entity) && $this->entity > 1)
|
|
||||||
//{
|
|
||||||
// $rootfordata.='/'.$this->entity;
|
|
||||||
//}
|
|
||||||
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
|
||||||
$conf->expensereport_->dir_output = $rootfordata.'/expensereport';
|
|
||||||
|
|
||||||
|
|
||||||
$outputlangs->load("main");
|
$outputlangs->load("main");
|
||||||
$outputlangs->load("dict");
|
$outputlangs->load("dict");
|
||||||
$outputlangs->load("trips");
|
$outputlangs->load("trips");
|
||||||
$outputlangs->load("project");
|
$outputlangs->load("project");
|
||||||
$outputlangs->load("expensereport@expensereport");
|
|
||||||
|
|
||||||
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
$nblignes = count($object->lines);
|
||||||
|
|
||||||
if ($conf->expensereport_->dir_output)
|
if ($conf->expensereport->dir_output)
|
||||||
{
|
{
|
||||||
// Definition de l'objet $object (pour compatibilite ascendante)
|
// Definition of $dir and $file
|
||||||
if (! is_object($object))
|
if ($object->specimen)
|
||||||
{
|
{
|
||||||
$id = $object;
|
$dir = $conf->expensereport->dir_output;
|
||||||
$object = new ExpenseReport($db);
|
$file = $dir . "/SPECIMEN.pdf";
|
||||||
$ret=$object->fetch($id,$user);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
$objectref = dol_sanitizeFileName($object->ref_number);
|
{
|
||||||
$dir = $conf->expensereport_->dir_output . "/" . $objectref;
|
$objectref = dol_sanitizeFileName($object->ref);
|
||||||
|
$dir = $conf->expensereport->dir_output . "/" . $objectref;
|
||||||
$file = $dir . "/" . $objectref . ".pdf";
|
$file = $dir . "/" . $objectref . ".pdf";
|
||||||
|
}
|
||||||
|
|
||||||
if (! file_exists($dir))
|
if (! file_exists($dir))
|
||||||
{
|
{
|
||||||
@ -181,10 +184,24 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
|
|
||||||
if (file_exists($dir))
|
if (file_exists($dir))
|
||||||
{
|
{
|
||||||
$nblignes = count($object->lines);
|
// Add pdfgeneration hook
|
||||||
|
if (! is_object($hookmanager))
|
||||||
|
{
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||||
|
$hookmanager=new HookManager($this->db);
|
||||||
|
}
|
||||||
|
$hookmanager->initHooks(array('pdfgeneration'));
|
||||||
|
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
|
||||||
|
global $action;
|
||||||
|
$reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
// Create pdf instance
|
// Create pdf instance
|
||||||
$pdf=pdf_getInstance($this->format);
|
$pdf=pdf_getInstance($this->format);
|
||||||
|
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
|
||||||
|
$heightforinfotot = 50; // Height reserved to output the info and total part
|
||||||
|
$heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page
|
||||||
|
$heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin)
|
||||||
|
$pdf->SetAutoPageBreak(1,0);
|
||||||
|
|
||||||
if (class_exists('TCPDF'))
|
if (class_exists('TCPDF'))
|
||||||
{
|
{
|
||||||
@ -205,13 +222,12 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
|
|
||||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref_number));
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref_number));
|
||||||
$pdf->SetSubject($outputlangs->transnoentities("Trips"));
|
$pdf->SetSubject($outputlangs->transnoentities("Trips"));
|
||||||
$pdf->SetCreator("");
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref_number)." ".$outputlangs->transnoentities("Trips"));
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Trips"));
|
||||||
if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false);
|
||||||
|
|
||||||
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
$pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right
|
||||||
$pdf->SetAutoPageBreak(1,0);
|
|
||||||
|
|
||||||
// Positionne $this->atleastonediscount si on a au moins une remise
|
// Positionne $this->atleastonediscount si on a au moins une remise
|
||||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||||
@ -232,17 +248,29 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
$tab_top = 95;
|
$tab_top = 95;
|
||||||
$tab_top_newpage = 95;
|
$tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)?95:10);
|
||||||
$tab_height = 110;
|
$tab_height = 110;
|
||||||
$tab_height_newpage = 110;
|
$tab_height_newpage = 110;
|
||||||
|
|
||||||
// Affiche notes
|
// Affiche notes
|
||||||
if (! empty($object->note))
|
$notetoshow=empty($object->note_public)?'':$object->note_public;
|
||||||
|
if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE))
|
||||||
{
|
{
|
||||||
$tab_top = 93;
|
// Get first sale rep
|
||||||
|
if (is_object($object->thirdparty))
|
||||||
|
{
|
||||||
|
$salereparray=$object->thirdparty->getSalesRepresentatives($user);
|
||||||
|
$salerepobj=new User($this->db);
|
||||||
|
$salerepobj->fetch($salereparray[0]['id']);
|
||||||
|
if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($notetoshow)
|
||||||
|
{
|
||||||
|
$tab_top = 95;
|
||||||
|
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->posxpiece-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
$height_note=$nexY-$tab_top;
|
$height_note=$nexY-$tab_top;
|
||||||
|
|
||||||
@ -265,11 +293,20 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
// Loop on each lines
|
// Loop on each lines
|
||||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||||
{
|
{
|
||||||
|
$piece_comptable = $i +1;
|
||||||
|
|
||||||
$curY = $nexY;
|
$curY = $nexY;
|
||||||
$pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage
|
$pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage
|
||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
$piece_comptable = $i +1;
|
$pdf->setTopMargin($tab_top_newpage);
|
||||||
|
$pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
$pageposbefore=$pdf->getPage();
|
||||||
|
|
||||||
|
// Description of product line
|
||||||
|
$curX = $this->posxdesc-1;
|
||||||
|
|
||||||
|
$showpricebeforepagebreak=1;
|
||||||
|
|
||||||
// Piece comptable
|
// Piece comptable
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
@ -277,46 +314,50 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
|
|
||||||
// Comments
|
// Comments
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxcomment, $curY);
|
$pdf->SetXY($this->posxcomment, $curY);
|
||||||
$pdf->writeHTMLCell($this->posxdate-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $object->lignes[$i]->comments, 0, 1);
|
$pdf->writeHTMLCell($this->posxdate-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $object->lines[$i]->comments, 0, 1);
|
||||||
|
|
||||||
//nexY
|
//nexY
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
|
$pageposafter=$pdf->getPage();
|
||||||
|
$pdf->setPage($pageposbefore);
|
||||||
|
$pdf->setTopMargin($this->marge_haute);
|
||||||
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxdate, $curY);
|
$pdf->SetXY($this->posxdate, $curY);
|
||||||
$pdf->MultiCell($this->posxtype-$this->posxdate-1, 3,dol_print_date($object->lignes[$i]->date,"day",false,$outpulangs), 0, 'C');
|
$pdf->MultiCell($this->posxtype-$this->posxdate-1, 3,dol_print_date($object->lines[$i]->date,"day",false,$outpulangs), 0, 'C');
|
||||||
|
|
||||||
// Type
|
// Type
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxtype, $curY);
|
$pdf->SetXY($this->posxtype, $curY);
|
||||||
$pdf->MultiCell($this->posxprojet-$this->posxtype-1, 3,$outputlangs->transnoentities($object->lignes[$i]->type_fees_code), 0, 'C');
|
$pdf->MultiCell($this->posxprojet-$this->posxtype-1, 3,$outputlangs->transnoentities($object->lines[$i]->type_fees_code), 0, 'C');
|
||||||
|
|
||||||
// Projet
|
// Projet
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxprojet, $curY);
|
$pdf->SetXY($this->posxprojet, $curY);
|
||||||
$pdf->MultiCell($this->posxtva-$this->posxprojet-1, 3,$object->lignes[$i]->projet_ref, 0, 'C');
|
$pdf->MultiCell($this->posxtva-$this->posxprojet-1, 3,$object->lines[$i]->projet_ref, 0, 'C');
|
||||||
|
|
||||||
// TVA
|
// VAT Rate
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxtva, $curY);
|
$pdf->SetXY($this->posxtva, $curY);
|
||||||
$pdf->MultiCell($this->posxup-$this->posxtva-1, 3,vatrate($object->lignes[$i]->tva_taux,true), 0, 'R');
|
$pdf->MultiCell($this->posxup-$this->posxtva-1, 3,vatrate($object->lines[$i]->tva_taux,true), 0, 'R');
|
||||||
|
|
||||||
// UP
|
// UP
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxup, $curY);
|
$pdf->SetXY($this->posxup, $curY);
|
||||||
$pdf->MultiCell($this->posxqty-$this->posxup-1, 3,price($object->lignes[$i]->value_unit), 0, 'R');
|
$pdf->MultiCell($this->posxqty-$this->posxup-1, 3,price($object->lines[$i]->value_unit), 0, 'R');
|
||||||
|
|
||||||
// QTY
|
// Quantity
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->posxqty, $curY);
|
$pdf->SetXY($this->posxqty, $curY);
|
||||||
$pdf->MultiCell($this->postotalttc-$this->posxqty, 3,$object->lignes[$i]->qty, 0, 'C');
|
$pdf->MultiCell($this->postotalttc-$this->posxqty, 3,$object->lines[$i]->qty, 0, 'C');
|
||||||
|
|
||||||
// TotalTTC
|
// TotalTTC
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY ($this->postotalttc-2, $curY);
|
$pdf->SetXY($this->postotalttc-2, $curY);
|
||||||
$pdf->MultiCell(26, 3,price($object->lignes[$i]->total_ttc), 0, 'R');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 3, price($object->lines[$i]->total_ttc), 0, 'R');
|
||||||
|
|
||||||
$nexY+=5;
|
$nexY+=5;
|
||||||
|
|
||||||
@ -338,38 +379,42 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$nblineFollowDesc = 0;
|
$nblineFollowDesc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test if a new page is required
|
$nexY+=2; // Passe espace entre les lignes
|
||||||
|
|
||||||
|
// Detect if some page were added automatically and output _tableau for past pages
|
||||||
|
while ($pagenb < $pageposafter)
|
||||||
|
{
|
||||||
|
$pdf->setPage($pagenb);
|
||||||
if ($pagenb == 1)
|
if ($pagenb == 1)
|
||||||
{
|
{
|
||||||
$tab_top_in_current_page=$tab_top;
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1);
|
||||||
$tab_height_in_current_page=$tab_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$tab_top_in_current_page=$tab_top_newpage;
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1);
|
||||||
$tab_height_in_current_page=$tab_height_newpage;
|
|
||||||
}
|
}
|
||||||
if (($nexY+$nblineFollowDesc) > ($tab_top_in_current_page+$tab_height_in_current_page) && $i < ($nblignes - 1))
|
$this->_pagefoot($pdf,$object,$outputlangs,1);
|
||||||
|
$pagenb++;
|
||||||
|
$pdf->setPage($pagenb);
|
||||||
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
|
}
|
||||||
|
if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak)
|
||||||
{
|
{
|
||||||
if ($pagenb == 1):
|
if ($pagenb == 1)
|
||||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
|
{
|
||||||
$nexY=$tab_top + $tab_height + 1;
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1);
|
||||||
else:
|
}
|
||||||
$this->_tableau($pdf, $tab_top_newpage, $tab_height_newpage, $nexY, $outputlangs);
|
else
|
||||||
$nexY=$tab_top_newpage + $tab_height_newpage + 1;
|
{
|
||||||
endif;
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1);
|
||||||
|
}
|
||||||
$this->_pagefoot($pdf,$object,$outputlangs);
|
$this->_pagefoot($pdf,$object,$outputlangs,1);
|
||||||
|
|
||||||
// New page
|
// New page
|
||||||
$pdf->AddPage();
|
$pdf->AddPage();
|
||||||
|
if (! empty($tplidx)) $pdf->useTemplate($tplidx);
|
||||||
$pagenb++;
|
$pagenb++;
|
||||||
$this->_pagehead($pdf, $object, 0, $outputlangs);
|
if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
|
||||||
$pdf->MultiCell(0, 3, ''); // Set interline to 3
|
|
||||||
$pdf->SetTextColor(0,0,0);
|
|
||||||
|
|
||||||
$nexY = $tab_top_newpage + 7;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -377,30 +422,30 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
// Show square
|
// Show square
|
||||||
if ($pagenb == 1)
|
if ($pagenb == 1)
|
||||||
{
|
{
|
||||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
|
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0);
|
||||||
$bottomlasttab=$tab_top + $tab_height + 1;
|
$bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->_tableau($pdf, $tab_top_newpage, $tab_height_newpage, $nexY, $outputlangs);
|
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0);
|
||||||
$bottomlasttab=$tab_top_newpage + $tab_height_newpage + 1;
|
$bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affiche zone totaux
|
// Show total area box
|
||||||
$posy=$bottomlasttab+5;//$nexY+95;
|
$posy=$bottomlasttab+5;//$nexY+95;
|
||||||
$pdf->SetXY(120, $posy);
|
$pdf->SetXY(100, $posy);
|
||||||
$pdf->MultiCell(50, 5, $outputlangs->transnoentities("TotalHT"), 1, 'L');
|
$pdf->MultiCell(60, 5, $outputlangs->transnoentities("TotalHT"), 1, 'L');
|
||||||
$pdf->SetXY (170, $posy);
|
$pdf->SetXY(160, $posy);
|
||||||
$pdf->MultiCell(30, 5, price($object->total_ht), 1, 'R');
|
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - 160, 5, price($object->total_ht), 1, 'R');
|
||||||
$pdf->SetFillColor(248,248,248);
|
$pdf->SetFillColor(248,248,248);
|
||||||
|
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY (120, $posy);
|
$pdf->SetXY(100, $posy);
|
||||||
$pdf->SetFont('','B', 10);
|
$pdf->SetFont('','B', 10);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(50, 5, $outputlangs->transnoentities("TotalTTC"), 1,'L');
|
$pdf->MultiCell(60, 5, $outputlangs->transnoentities("TotalTTC"), 1,'L');
|
||||||
$pdf->SetXY (170, $posy);
|
$pdf->SetXY(160, $posy);
|
||||||
$pdf->MultiCell(30, 5, price($object->total_ttc),1, 'R');
|
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - 160, 5, price($object->total_ttc),1, 'R');
|
||||||
|
|
||||||
// Pied de page
|
// Pied de page
|
||||||
$this->_pagefoot($pdf,$object,$outputlangs);
|
$this->_pagefoot($pdf,$object,$outputlangs);
|
||||||
@ -411,11 +456,6 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$pdf->Output($file,'F');
|
$pdf->Output($file,'F');
|
||||||
|
|
||||||
// Add pdfgeneration hook
|
// Add pdfgeneration hook
|
||||||
if (! is_object($hookmanager))
|
|
||||||
{
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
|
||||||
$hookmanager=new HookManager($this->db);
|
|
||||||
}
|
|
||||||
$hookmanager->initHooks(array('pdfgeneration'));
|
$hookmanager->initHooks(array('pdfgeneration'));
|
||||||
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
|
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
|
||||||
global $action;
|
global $action;
|
||||||
@ -434,7 +474,7 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$langs->trans("ErrorConstantNotDefined","DEPLACEMENT_OUTPUTDIR");
|
$this->error=$langs->trans("ErrorConstantNotDefined","EXPENSEREPORT_OUTPUTDIR");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
$this->error=$langs->trans("ErrorUnknown");
|
$this->error=$langs->trans("ErrorUnknown");
|
||||||
@ -468,9 +508,9 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Filligrane brouillon
|
// Filligrane brouillon
|
||||||
if($object->fk_c_expensereport_statuts==1)
|
if ($object->fk_c_expensereport_statuts==1 && ! empty($conf->global->EXPENSEREPORT_FREE_TEXT))
|
||||||
{
|
{
|
||||||
pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',"' - PREVIEW ONLY");
|
pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->EXPENSEREPORT_FREE_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
@ -504,48 +544,37 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
|
$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
|
||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetFont('','B', $default_font_size + 6);
|
$pdf->SetFont('','B', $default_font_size + 4);
|
||||||
$pdf->SetXY($posx,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(255,255,255);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->SetFillColor(193,219,62);
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx,6,$langs->trans("ExpenseReport"), 0, 'L');
|
||||||
$ref_text = explode($conf->global->NDF_EXPLODE_CHAR,$object->ref_number);
|
|
||||||
$ref_text = substr($ref_text[1],3,$conf->global->NDF_NUM_CAR_REF);
|
|
||||||
$pdf->MultiCell(110,6,"Note de frais ".$ref_text, 0, 'L', 1);
|
|
||||||
|
|
||||||
$pdf->SetFont('','', $default_font_size -1);
|
$pdf->SetFont('','', $default_font_size -1);
|
||||||
|
|
||||||
// Réf complète
|
// Réf complète
|
||||||
$posy+=8;
|
$posy+=8;
|
||||||
$pdf->SetXY(100,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("Ref")." : " . $object->ref_number, '', 'L');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("Ref")." : " . $object->ref, '', 'L');
|
||||||
|
|
||||||
// Date début période
|
// Date début période
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY(100,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateStart")." : " . ($object->date_debut>0?$object->date_debut:dol_print_date($object->date_debut,"day",false,$outpulangs)), '', 'L');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateStart")." : " . ($object->date_debut>0?dol_print_date($object->date_debut,"day",false,$outpulangs):''), '', 'L');
|
||||||
|
|
||||||
// Date fin période
|
// Date fin période
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY(100,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateEnd")." : " . ($object->date_fin>0?dol_print_date($object->date_fin,"day",false,$outpulangs):''), '', 'L');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $outputlangs->transnoentities("DateEnd")." : " . ($object->date_fin>0?dol_print_date($object->date_fin,"day",false,$outpulangs):''), '', 'L');
|
||||||
|
|
||||||
// Statut NDF
|
// Statut NDF
|
||||||
$posy+=7;
|
$posy+=6;
|
||||||
$pdf->SetXY(100,$posy);
|
$pdf->SetXY($posx,$posy);
|
||||||
$pdf->SetFont('','B',20);
|
$pdf->SetFont('','B',18);
|
||||||
$pdf->SetTextColor(111,81,124);
|
$pdf->SetTextColor(111,81,124);
|
||||||
if(preg_match("#Pay#",$object->libelle_statut) && !preg_match("#A P#",$object->libelle_statut)):
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $object->getLibStatut(0), '', 'R');
|
||||||
$pdf->MultiCell(100, 3,$outputlangs->convToOutputCharset("Payée"), '', 'L');
|
|
||||||
elseif(preg_match("#Annul#",$object->libelle_statut)):
|
|
||||||
$pdf->MultiCell(100, 3,$outputlangs->convToOutputCharset("Annulée"), '', 'L');
|
|
||||||
elseif(preg_match("#Refus#",$object->libelle_statut)):
|
|
||||||
$pdf->MultiCell(100, 3,$outputlangs->convToOutputCharset("Refusée"), '', 'L');
|
|
||||||
else:
|
|
||||||
$pdf->MultiCell(100, 3,$object->libelle_statut, '', 'L');
|
|
||||||
endif;
|
|
||||||
|
|
||||||
// Sender properties
|
// Sender properties
|
||||||
$carac_emetteur = '';
|
$carac_emetteur = '';
|
||||||
@ -596,64 +625,80 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$pdf->SetFont('','B',8);
|
$pdf->SetFont('','B',8);
|
||||||
$pdf->SetXY($posx,$posy-5);
|
$pdf->SetXY($posx,$posy-5);
|
||||||
$pdf->MultiCell(80,5, $outputlangs->transnoentities("TripNDF")." :", 0, 'L');
|
$pdf->MultiCell(80,5, $outputlangs->transnoentities("TripNDF")." :", 0, 'L');
|
||||||
$pdf->rect($posx, $posy, 100, $hautcadre);
|
$pdf->rect($posx, $posy, $this->page_largeur - $this->marge_gauche - $posx, $hautcadre);
|
||||||
|
|
||||||
// Informations for trip (dates and users workflow)
|
// Informations for trip (dates and users workflow)
|
||||||
|
if ($object->fk_user_author > 0)
|
||||||
|
{
|
||||||
$userfee=new User($this->db);
|
$userfee=new User($this->db);
|
||||||
$userfee->fetch($object->fk_user_author); $posy+=3;
|
$userfee->fetch($object->fk_user_author); $posy+=3;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->SetFont('','',10);
|
$pdf->SetFont('','',10);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHOR")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_SAVE")." : ".dol_print_date($object->date_create,"day",false,$outpulangs),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DateCreation")." : ".dol_print_date($object->date_create,"day",false,$outpulangs),0,'L');
|
||||||
|
}
|
||||||
|
|
||||||
if($object->fk_c_expensereport_statuts<3):
|
if ($object->fk_c_expensereport_statuts==99)
|
||||||
$userfee=new User($this->db);
|
{
|
||||||
$userfee->fetch($object->fk_user_validator); $posy+=6;
|
if ($object->fk_user_refuse > 0)
|
||||||
$pdf->SetXY($posx+2,$posy);
|
{
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("VALIDATOR")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
|
||||||
elseif($object->fk_c_expensereport_statuts==99):
|
|
||||||
$userfee=new User($this->db);
|
$userfee=new User($this->db);
|
||||||
$userfee->fetch($object->fk_user_refuse); $posy+=6;
|
$userfee->fetch($object->fk_user_refuse); $posy+=6;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("REFUSEUR")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("REFUSEUR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_REFUS")." : ".$outputlangs->convToOutputCharset($object->detail_refuse),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_REFUS")." : ".$outputlangs->convToOutputCharset($object->detail_refuse),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_REFUS")." : ".dol_print_date($object->date_refuse,"day",false,$outpulangs),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_REFUS")." : ".dol_print_date($object->date_refuse,"day",false,$outpulangs),0,'L');
|
||||||
elseif($object->fk_c_expensereport_statuts==4):
|
}
|
||||||
|
}
|
||||||
|
else if($object->fk_c_expensereport_statuts==4)
|
||||||
|
{
|
||||||
|
if ($object->fk_user_cancel > 0)
|
||||||
|
{
|
||||||
$userfee=new User($this->db);
|
$userfee=new User($this->db);
|
||||||
$userfee->fetch($object->fk_user_cancel); $posy+=6;
|
$userfee->fetch($object->fk_user_cancel); $posy+=6;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("CANCEL_USER")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("CANCEL_USER")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_CANCEL")." : ".$outputlangs->convToOutputCharset($object->detail_cancel),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_CANCEL")." : ".$outputlangs->convToOutputCharset($object->detail_cancel),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_CANCEL")." : ".dol_print_date($object->date_cancel,"day",false,$outpulangs),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_CANCEL")." : ".dol_print_date($object->date_cancel,"day",false,$outpulangs),0,'L');
|
||||||
else:
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($object->fk_user_approve > 0)
|
||||||
|
{
|
||||||
$userfee=new User($this->db);
|
$userfee=new User($this->db);
|
||||||
$userfee->fetch($object->fk_user_validator); $posy+=6;
|
$userfee->fetch($object->fk_user_approve); $posy+=6;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("VALIDOR")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("VALIDOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_VALIDE")." : ".dol_print_date($object->date_valide,"day",false,$outpulangs),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DateApprove")." : ".dol_print_date($object->date_approve,"day",false,$outpulangs),0,'L');
|
||||||
endif;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($object->fk_c_expensereport_statuts==6):
|
if($object->fk_c_expensereport_statuts==6)
|
||||||
|
{
|
||||||
|
if ($object->fk_user_paid > 0)
|
||||||
|
{
|
||||||
$userfee=new User($this->db);
|
$userfee=new User($this->db);
|
||||||
$userfee->fetch($object->fk_user_paid); $posy+=6;
|
$userfee->fetch($object->fk_user_paid); $posy+=6;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHORPAIEMENT")." : ".$outputlangs->convToOutputCharset($userfee->firstname)." ".$outputlangs->convToOutputCharset($userfee->lastname),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHORPAIEMENT")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L');
|
||||||
$posy+=5;
|
$posy+=5;
|
||||||
$pdf->SetXY($posx+2,$posy);
|
$pdf->SetXY($posx+2,$posy);
|
||||||
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_PAIEMENT")." : ".dol_print_date($object->date_paiement,"day",false,$outpulangs),0,'L');
|
$pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_PAIEMENT")." : ".dol_print_date($object->date_paiement,"day",false,$outpulangs),0,'L');
|
||||||
endif;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,48 +735,48 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
$pdf->SetFont('','',8);
|
$pdf->SetFont('','',8);
|
||||||
|
|
||||||
//Piece comptable
|
//Piece comptable
|
||||||
$pdf->SetXY ($this->posxpiece-1, $tab_top+1);
|
$pdf->SetXY($this->posxpiece-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxpiece-$this->posxpiece-1,1,$outputlangs->transnoentities("Piece"),'','L');
|
$pdf->MultiCell($this->posxdesc-$this->posxpiece-1,1,'','','R');
|
||||||
|
|
||||||
//Comments
|
//Comments
|
||||||
$pdf->line($this->posxdesc-1, $tab_top, $this->posxdesc-1, $tab_top + $tab_height);
|
$pdf->line($this->posxdesc-1, $tab_top, $this->posxdesc-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxdesc-1, $tab_top+1);
|
$pdf->SetXY($this->posxdesc-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxdate-$this->posxdesc-1,1,$outputlangs->transnoentities("Description"),'','L');
|
$pdf->MultiCell($this->posxdate-$this->posxdesc-1,1,$outputlangs->transnoentities("Description"),'','L');
|
||||||
|
|
||||||
//Date
|
//Date
|
||||||
$pdf->line($this->posxdate-1, $tab_top, $this->posxdate-1, $tab_top + $tab_height);
|
$pdf->line($this->posxdate-1, $tab_top, $this->posxdate-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxdate-1, $tab_top+1);
|
$pdf->SetXY($this->posxdate-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxtype-$this->posxdate-1,2, $outputlangs->transnoentities("Date"),'','C');
|
$pdf->MultiCell($this->posxtype-$this->posxdate-1,2, $outputlangs->transnoentities("Date"),'','C');
|
||||||
|
|
||||||
//Type
|
//Type
|
||||||
$pdf->line($this->posxtype-1, $tab_top, $this->posxtype-1, $tab_top + $tab_height);
|
$pdf->line($this->posxtype-1, $tab_top, $this->posxtype-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxtype-1, $tab_top+1);
|
$pdf->SetXY($this->posxtype-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxprojet-$this->posxtype-1,2, $outputlangs->transnoentities("Type"),'','C');
|
$pdf->MultiCell($this->posxprojet-$this->posxtype-1,2, $outputlangs->transnoentities("Type"),'','C');
|
||||||
|
|
||||||
// Projet
|
// Projet
|
||||||
$pdf->line($this->posxprojet-1, $tab_top, $this->posxprojet-1, $tab_top + $tab_height);
|
$pdf->line($this->posxprojet-1, $tab_top, $this->posxprojet-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxprojet-1, $tab_top+1);
|
$pdf->SetXY($this->posxprojet-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxtva-$this->posxprojet-1,2, $outputlangs->transnoentities("Project"),'','C');
|
$pdf->MultiCell($this->posxtva-$this->posxprojet-1,2, $outputlangs->transnoentities("Project"),'','C');
|
||||||
|
|
||||||
//TVA
|
//TVA
|
||||||
$pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height);
|
$pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxtva-1, $tab_top+1);
|
$pdf->SetXY($this->posxtva-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxup-$this->posxtva-1,2, $outputlangs->transnoentities("VAT"),'','C');
|
$pdf->MultiCell($this->posxup-$this->posxtva-1,2, $outputlangs->transnoentities("VAT"),'','C');
|
||||||
|
|
||||||
//PU
|
//PU
|
||||||
$pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height);
|
$pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxup-1, $tab_top+1);
|
$pdf->SetXY($this->posxup-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PU"),'','C');
|
$pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("UP"),'','C');
|
||||||
|
|
||||||
//QTY
|
//QTY
|
||||||
$pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height);
|
$pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->posxqty-1, $tab_top+1);
|
$pdf->SetXY($this->posxqty-1, $tab_top+1);
|
||||||
$pdf->MultiCell($this->postotalttc-$this->posxqty,2, $outputlangs->transnoentities("Q"),'','R');
|
$pdf->MultiCell($this->postotalttc-$this->posxqty,2, $outputlangs->transnoentities("Qty"),'','R');
|
||||||
|
|
||||||
//TOTALTTC
|
//TOTALTTC
|
||||||
$pdf->line($this->postotalttc, $tab_top, $this->postotalttc, $tab_top + $tab_height);
|
$pdf->line($this->postotalttc, $tab_top, $this->postotalttc, $tab_top + $tab_height);
|
||||||
$pdf->SetXY ($this->postotalttc-4, $tab_top+1);
|
$pdf->SetXY($this->postotalttc-1, $tab_top+1);
|
||||||
$pdf->MultiCell(28,2, $outputlangs->transnoentities("TotalTTC"),'','R');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 2, $outputlangs->transnoentities("TotalTTC"),'','R');
|
||||||
|
|
||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
}
|
}
|
||||||
@ -747,7 +792,8 @@ class pdf_ extends ModeleExpenseReport
|
|||||||
*/
|
*/
|
||||||
function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0)
|
function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0)
|
||||||
{
|
{
|
||||||
return pdf_pagefoot($pdf,$outputlangs,'DEPLACEMENT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,0,$hidefreetext);
|
$showdetails=0;
|
||||||
|
return pdf_pagefoot($pdf,$outputlangs,'EXPENSEREPORT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -13,7 +13,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php';
|
||||||
@ -49,62 +48,20 @@ class ModeleExpenseReport extends CommonDocGenerator
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function expensereport_pdf_create($db, $id, $message, $modele, $outputlangs)
|
/**
|
||||||
|
* expensereport_pdf_create
|
||||||
|
*
|
||||||
|
* @param DoliDB $db Database handler
|
||||||
|
* @param Object $object Object order
|
||||||
|
* @param string $message Message
|
||||||
|
* @param string $modele Force le modele a utiliser ('' to not force)
|
||||||
|
* @param Translate $outputlangs objet lang a utiliser pour traduction
|
||||||
|
* @param int $hidedetails Hide details of lines
|
||||||
|
* @param int $hidedesc Hide description
|
||||||
|
* @param int $hideref Hide ref
|
||||||
|
* @return int 0 if KO, 1 if OK
|
||||||
|
*/
|
||||||
|
function expensereport_pdf_create(DoliDB $db, ExpenseReport $object, $message, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
|
||||||
{
|
{
|
||||||
global $conf,$langs;
|
return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
$langs->load("trips");
|
|
||||||
|
|
||||||
// Increase limit for PDF build
|
|
||||||
$err=error_reporting();
|
|
||||||
error_reporting(0);
|
|
||||||
@set_time_limit(120);
|
|
||||||
error_reporting($err);
|
|
||||||
|
|
||||||
$dir = dol_buildpath('/expensereport/core/modules/expensereport/');
|
|
||||||
|
|
||||||
// Positionne modele sur le nom du modele a utiliser
|
|
||||||
if (! strlen($modele))
|
|
||||||
{
|
|
||||||
if ($conf->global->DEPLACEMENT_ADDON_PDF)
|
|
||||||
{
|
|
||||||
$modele = $conf->global->DEPLACEMENT_ADDON_PDF;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print $langs->trans("Error")." ".$langs->trans("Error_DEPLACEMENT_ADDON_PDF_NotDefined");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Charge le modele
|
|
||||||
$file = "pdf_".$modele.".modules.php";
|
|
||||||
if (file_exists($dir.$file))
|
|
||||||
{
|
|
||||||
$classname = "pdf_".$modele;
|
|
||||||
require_once($dir.$file);
|
|
||||||
|
|
||||||
$obj = new $classname($db);
|
|
||||||
$obj->message = $message;
|
|
||||||
|
|
||||||
// We save charset_output to restore it because write_file can change it if needed for
|
|
||||||
// output format that does not support UTF8.
|
|
||||||
$sav_charset_output=$outputlangs->charset_output;
|
|
||||||
if ($obj->write_file($id, $outputlangs) > 0)
|
|
||||||
{
|
|
||||||
$outputlangs->charset_output=$sav_charset_output;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$outputlangs->charset_output=$sav_charset_output;
|
|
||||||
dol_print_error($db,"expensereport_pdf_create Error: ".$obj->error);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dol_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -354,6 +354,7 @@ class ImportCsv extends ModeleImports
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
$last_insert_id_array = array(); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id (eg: extrafields fk_object will be set with the last inserted object's id)
|
||||||
// For each table to insert, me make a separate insert
|
// For each table to insert, me make a separate insert
|
||||||
foreach($objimport->array_import_tables[0] as $alias => $tablename)
|
foreach($objimport->array_import_tables[0] as $alias => $tablename)
|
||||||
{
|
{
|
||||||
@ -414,21 +415,34 @@ class ImportCsv extends ModeleImports
|
|||||||
if (! empty($objimport->array_import_convertvalue[0][$val]))
|
if (! empty($objimport->array_import_convertvalue[0][$val]))
|
||||||
{
|
{
|
||||||
//print 'Must convert '.$newval.' with rule '.join(',',$objimport->array_import_convertvalue[0][$val]).'. ';
|
//print 'Must convert '.$newval.' with rule '.join(',',$objimport->array_import_convertvalue[0][$val]).'. ';
|
||||||
if ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeid' || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromref')
|
if ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeid'
|
||||||
|
|| $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromref'
|
||||||
|
|| $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel'
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (! is_numeric($newval) && $newval != '') // If value into input import file is not a numeric, we apply the function defined into descriptor
|
if (! is_numeric($newval) && $newval != '') // If value into input import file is not a numeric, we apply the function defined into descriptor
|
||||||
{
|
{
|
||||||
$file=$objimport->array_import_convertvalue[0][$val]['classfile'];
|
$file=$objimport->array_import_convertvalue[0][$val]['classfile'];
|
||||||
$class=$objimport->array_import_convertvalue[0][$val]['class'];
|
$class=$objimport->array_import_convertvalue[0][$val]['class'];
|
||||||
$method=$objimport->array_import_convertvalue[0][$val]['method'];
|
$method=$objimport->array_import_convertvalue[0][$val]['method'];
|
||||||
if (empty($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]))
|
if ($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval] != '')
|
||||||
|
{
|
||||||
|
$newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
dol_include_once($file);
|
dol_include_once($file);
|
||||||
$classinstance=new $class($this->db);
|
$classinstance=new $class($this->db);
|
||||||
|
// Try the fetch from code or ref
|
||||||
call_user_func_array(array($classinstance, $method),array('', $newval));
|
call_user_func_array(array($classinstance, $method),array('', $newval));
|
||||||
|
// If not found, try the fetch from label
|
||||||
|
if (! ($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel')
|
||||||
|
{
|
||||||
|
call_user_func_array(array($classinstance, $method),array('', '', $newval));
|
||||||
|
}
|
||||||
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]=$classinstance->id;
|
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]=$classinstance->id;
|
||||||
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
||||||
if (! empty($classinstance->id))
|
if ($classinstance->id != '') // id may be 0, it is a found value
|
||||||
{
|
{
|
||||||
$newval=$classinstance->id;
|
$newval=$classinstance->id;
|
||||||
}
|
}
|
||||||
@ -442,10 +456,6 @@ class ImportCsv extends ModeleImports
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
$newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -581,7 +591,7 @@ class ImportCsv extends ModeleImports
|
|||||||
elseif (preg_match('/^lastrowid-/',$val))
|
elseif (preg_match('/^lastrowid-/',$val))
|
||||||
{
|
{
|
||||||
$tmp=explode('-',$val);
|
$tmp=explode('-',$val);
|
||||||
$lastinsertid=$this->db->last_insert_id($tmp[1]);
|
$lastinsertid=(isset($last_insert_id_array[$tmp[1]]))?$last_insert_id_array[$tmp[1]]:0;
|
||||||
$listfields.=preg_replace('/^'.preg_quote($alias).'\./','',$key);
|
$listfields.=preg_replace('/^'.preg_quote($alias).'\./','',$key);
|
||||||
$listvalues.=$lastinsertid;
|
$listvalues.=$lastinsertid;
|
||||||
//print $key."-".$val."-".$listfields."-".$listvalues."<br>";exit;
|
//print $key."-".$val."-".$listfields."-".$listvalues."<br>";exit;
|
||||||
@ -623,6 +633,7 @@ class ImportCsv extends ModeleImports
|
|||||||
if ($sql)
|
if ($sql)
|
||||||
{
|
{
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
|
$last_insert_id_array[$tablename] = $this->db->last_insert_id($tablename); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id. This must be done just after the INSERT request, else we risk losing the id (because another sql query will be issued somewhere in Dolibarr).
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
//print '.';
|
//print '.';
|
||||||
|
|||||||
@ -393,7 +393,7 @@ class modAgenda extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'socpeople as sp on ac.fk_contact = sp.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'socpeople as sp on ac.fk_contact = sp.rowid';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s on ac.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s on ac.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co on s.fk_pays = co.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co on s.fk_pays = co.rowid';
|
||||||
$this->export_sql_end[$r] .=' Where ac.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' WHERE ac.entity IN ('.getEntity('agenda',1).')';
|
||||||
$this->export_sql_end[$r] .=' ORDER BY ac.datep';
|
$this->export_sql_end[$r] .=' ORDER BY ac.datep';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -157,7 +157,7 @@ class modBanque extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')";
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')";
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON bu.url_id = s.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON bu.url_id = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account';
|
$this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account';
|
||||||
$this->export_sql_end[$r] .=' AND ba.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND ba.entity IN ('.getEntity('bank',1).')';
|
||||||
$this->export_sql_order[$r] =' ORDER BY b.datev, b.num_releve';
|
$this->export_sql_order[$r] =' ORDER BY b.datev, b.num_releve';
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
@ -184,7 +184,7 @@ class modBanque extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account AND bch.rowid = b.fk_bordereau and bch.fk_bank_account=ba.rowid';
|
$this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account AND bch.rowid = b.fk_bordereau and bch.fk_bank_account=ba.rowid';
|
||||||
$this->export_sql_end[$r] .=" AND b.fk_type = 'CHQ'";
|
$this->export_sql_end[$r] .=" AND b.fk_type = 'CHQ'";
|
||||||
$this->export_sql_end[$r] .=' AND p.fk_paiement = 7';
|
$this->export_sql_end[$r] .=' AND p.fk_paiement = 7';
|
||||||
$this->export_sql_end[$r] .=' AND ba.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND ba.entity IN ('.getEntity('bank',1).')';
|
||||||
$this->export_sql_order[$r] =' ORDER BY b.datev, b.num_releve';
|
$this->export_sql_order[$r] =' ORDER BY b.datev, b.num_releve';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,7 +122,7 @@ class modCategorie extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_fournisseur as cf, '.MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_fournisseur as cf, '.MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code';
|
||||||
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_societe = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_societe = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND u.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category',1).')';
|
||||||
$this->export_sql_end[$r] .=' AND u.type = 1'; // Supplier categories
|
$this->export_sql_end[$r] .=' AND u.type = 1'; // Supplier categories
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
@ -137,7 +137,7 @@ class modCategorie extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_societe as cf, '.MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_societe as cf, '.MAIN_DB_PREFIX.'societe as s LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid LEFT JOIN '.MAIN_DB_PREFIX.'c_effectif as ce ON s.fk_effectif = ce.id LEFT JOIN '.MAIN_DB_PREFIX.'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code';
|
||||||
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_societe = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE u.rowid = cf.fk_categorie AND cf.fk_societe = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND u.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category',1).')';
|
||||||
$this->export_sql_end[$r] .=' AND u.type = 2'; // Customer/Prospect categories
|
$this->export_sql_end[$r] .=' AND u.type = 2'; // Customer/Prospect categories
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
@ -152,7 +152,7 @@ class modCategorie extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_product as cp, '.MAIN_DB_PREFIX.'product as p';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_product as cp, '.MAIN_DB_PREFIX.'product as p';
|
||||||
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_product = p.rowid';
|
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_product = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND u.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category',1).')';
|
||||||
$this->export_sql_end[$r] .=' AND u.type = 0'; // Supplier categories
|
$this->export_sql_end[$r] .=' AND u.type = 0'; // Supplier categories
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
@ -167,8 +167,8 @@ class modCategorie extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p';
|
||||||
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_member = p.rowid';
|
$this->export_sql_end[$r] .=' WHERE u.rowid = cp.fk_categorie AND cp.fk_member = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND u.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('category',1).')';
|
||||||
$this->export_sql_end[$r] .=' AND u.type = 3'; // Supplier categories
|
$this->export_sql_end[$r] .=' AND u.type = 3'; // Member categories
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->export_code[$r]='category_'.$r;
|
$this->export_code[$r]='category_'.$r;
|
||||||
@ -232,7 +232,7 @@ class modCategorie extends DolibarrModules
|
|||||||
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
|
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] = ' FROM ' . MAIN_DB_PREFIX . 'categorie as u, '.MAIN_DB_PREFIX . 'categorie_contact as cp, '.MAIN_DB_PREFIX . 'socpeople as p';
|
$this->export_sql_end[$r] = ' FROM ' . MAIN_DB_PREFIX . 'categorie as u, '.MAIN_DB_PREFIX . 'categorie_contact as cp, '.MAIN_DB_PREFIX . 'socpeople as p';
|
||||||
$this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_country as country ON p.fk_pays = country.rowid';
|
$this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_country as country ON p.fk_pays = country.rowid';
|
||||||
$this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_socpeople = p.rowid AND u.entity = ' . $conf->entity;
|
$this->export_sql_end[$r] .= ' WHERE u.rowid = cp.fk_categorie AND cp.fk_socpeople = p.rowid AND u.entity IN ('.getEntity('category',1).')';
|
||||||
$this->export_sql_end[$r] .= ' AND u.type = 4'; // contact categories
|
$this->export_sql_end[$r] .= ' AND u.type = 4'; // contact categories
|
||||||
|
|
||||||
// Imports
|
// Imports
|
||||||
|
|||||||
@ -192,7 +192,7 @@ class modCommande extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'commandedet as cd';
|
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'commandedet as cd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_commande';
|
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_commande';
|
||||||
$this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('commande',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -162,7 +162,7 @@ class modContrat extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'contratdet as cod';
|
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'contratdet as cod';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cod.fk_product = p.rowid)';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cod.fk_product = p.rowid)';
|
||||||
$this->export_sql_end[$r] .=' WHERE co.fk_soc = s.rowid and co.rowid = cod.fk_contrat';
|
$this->export_sql_end[$r] .=' WHERE co.fk_soc = s.rowid and co.rowid = cod.fk_contrat';
|
||||||
$this->export_sql_end[$r] .=' AND co.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND co.entity IN ('.getEntity('contract',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -124,7 +124,7 @@ class modDeplacement extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'deplacement as d';
|
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'deplacement as d';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON d.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON d.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE d.fk_user = u.rowid';
|
$this->export_sql_end[$r] .=' WHERE d.fk_user = u.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND d.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND d.entity IN ('.getEntity('deplacement',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -229,7 +229,7 @@ class modExpedition extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'expeditiondet as ed, '.MAIN_DB_PREFIX.'commandedet as cd';
|
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'expeditiondet as ed, '.MAIN_DB_PREFIX.'commandedet as cd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = ed.fk_expedition AND ed.fk_origin_line = cd.rowid';
|
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = ed.fk_expedition AND ed.fk_origin_line = cd.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('shipment',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -14,7 +14,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,8 +49,6 @@ class modExpenseReport extends DolibarrModules
|
|||||||
// Id for module (must be unique).
|
// Id for module (must be unique).
|
||||||
// Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id).
|
// Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id).
|
||||||
$this->numero = 770;
|
$this->numero = 770;
|
||||||
// Key text used to identify module (for permissions, menus, etc...)
|
|
||||||
$this->rights_class = 'deplacement';
|
|
||||||
|
|
||||||
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
|
||||||
// It is used to group modules in module setup page
|
// It is used to group modules in module setup page
|
||||||
@ -83,21 +80,29 @@ class modExpenseReport extends DolibarrModules
|
|||||||
//$this->style_sheet = '/mymodule/mymodule.css.php';
|
//$this->style_sheet = '/mymodule/mymodule.css.php';
|
||||||
|
|
||||||
// Config pages. Put here list of php page names stored in admmin directory used to setup module.
|
// Config pages. Put here list of php page names stored in admmin directory used to setup module.
|
||||||
$this->config_page_url = array();
|
$this->config_page_url = array('expensereport.php');
|
||||||
|
|
||||||
// Dependencies
|
// Dependencies
|
||||||
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
|
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
|
||||||
// $this->conflictwith = array("modDeplacement");
|
$this->conflictwith = array("modDeplacement");
|
||||||
$this->requiredby = array(); // List of modules id to disable if this one is disabled
|
$this->requiredby = array(); // List of modules id to disable if this one is disabled
|
||||||
$this->phpmin = array(4,3); // Minimum version of PHP required by module
|
$this->phpmin = array(4,3); // Minimum version of PHP required by module
|
||||||
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
|
$this->need_dolibarr_version = array(3,7); // Minimum version of Dolibarr required by module
|
||||||
$this->langfiles = array("companies","trips","deplacement@deplacement");
|
$this->langfiles = array("companies","trips");
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
// Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',0),
|
// Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',0),
|
||||||
// 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0) );
|
// 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0) );
|
||||||
// 2=>array('MAIN_MODULE_MYMODULE_NEEDSMARTY','chaine',1,'Constant to say module need smarty',0)
|
// 2=>array('MAIN_MODULE_MYMODULE_NEEDSMARTY','chaine',1,'Constant to say module need smarty',0)
|
||||||
$this->const = array(); // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 0 or 'allentities')
|
$this->const = array(); // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 0 or 'allentities')
|
||||||
|
$r=0;
|
||||||
|
|
||||||
|
$this->const[$r][0] = "EXPENSEREPORT_ADDON_PDF";
|
||||||
|
$this->const[$r][1] = "chaine";
|
||||||
|
$this->const[$r][2] = "standard";
|
||||||
|
$this->const[$r][3] = 'Name of manager to build PDF expense reports documents';
|
||||||
|
$this->const[$r][4] = 0;
|
||||||
|
$r++;
|
||||||
|
|
||||||
// Array to add new pages in new tabs
|
// Array to add new pages in new tabs
|
||||||
$this->tabs = array();
|
$this->tabs = array();
|
||||||
@ -195,19 +200,21 @@ class modExpenseReport extends DolibarrModules
|
|||||||
$r=0;
|
$r=0;
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->export_code[$r]='trips_'.$r;
|
$this->export_code[$r]='expensereport_'.$r;
|
||||||
$this->export_label[$r]='ListTripsAndExpenses';
|
$this->export_label[$r]='ListTripsAndExpenses';
|
||||||
|
$this->export_icon[$r]='trip';
|
||||||
$this->export_permission[$r]=array(array("expensereport","export"));
|
$this->export_permission[$r]=array(array("expensereport","export"));
|
||||||
$this->export_fields_array[$r]=array('d.rowid'=>"TripId",'d.type'=>"Type",'d.km'=>"FeesKilometersOrAmout",'d.note'=>'NotePrivate','d.note_public'=>'NotePublic','s.nom'=>'ThirdParty','u.lastname'=>'Lastname','u.firstname'=>'Firstname','d.dated'=>"Date");
|
$this->export_fields_array[$r]=array('d.rowid'=>"TripId",'d.ref'=>'Ref','d.date_debut'=>'DateStart','d.date_fin'=>'DateEnd','d.date_create'=>'DateCreation','d.date_approve'=>'DateApprove','d.total_ht'=>"TotalHT",'d.total_tva'=>'TotalVAT','d.total_ttc'=>'TotalTTC','d.note_private'=>'NotePrivate','d.note_public'=>'NotePublic','u.lastname'=>'Lastname','u.firstname'=>'Firstname','u.login'=>"Login",'ed.rowid'=>'LineId','tf.code'=>'Type','ed.date'=>'Date','ed.fk_c_tva'=>'VATRate','ed.total_ht'=>'TotalHT','ed.total_tva'=>'TotalVAT','ed.total_ttc'=>'TotalTTC','ed.comments'=>'Comment','p.rowid'=>'ProjectId','p.ref'=>'Ref');
|
||||||
$this->export_entities_array[$r]=array('d.rowid'=>"Trip",'d.type'=>"Trip",'d.km'=>"Trip",'d.note'=>'Trip','d.note_public'=>'Trip','s.nom'=>'company','u.lastname'=>'user','u.firstname'=>'user','d.dated'=>"Date");
|
$this->export_entities_array[$r]=array('u.lastname'=>'user','u.firstname'=>'user','u.login'=>'user','ed.rowid'=>'expensereport_line','ed.date'=>'expensereport_line','ed.fk_c_tva'=>'expensereport_line','ed.total_ht'=>'expensereport_line','ed.total_tva'=>'expensereport_line','ed.total_ttc'=>'expensereport_line','ed.comments'=>'expensereport_line','tf.code'=>'expensereport_line','p.project_ref'=>'expensereport_line','p.rowid'=>'project','p.ref'=>'project');
|
||||||
$this->export_alias_array[$r]=array('d.rowid'=>"idtrip",'d.type'=>"type",'d.km'=>"km",'d.note'=>'note','d.note_public'=>'note_public','s.nom'=>'companyname','u.lastname'=>'name','u.firstname'=>'firstname','d.dated'=>'date');
|
$this->export_alias_array[$r]=array('d.rowid'=>"idtrip",'d.type'=>"type",'d.note_private'=>'note_private','d.note_public'=>'note_public','u.lastname'=>'name','u.firstname'=>'firstname','u.login'=>'login');
|
||||||
|
$this->export_dependencies_array[$r]=array('expensereport_line'=>'ed.rowid','type_fees'=>'tf.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
||||||
|
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'user as u';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'expensereport as d, '.MAIN_DB_PREFIX.'user as u,';
|
||||||
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'expensereport as d';
|
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'expensereport_det as ed LEFT JOIN '.MAIN_DB_PREFIX.'c_type_fees as tf ON ed.fk_c_type_fees = tf.id';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON d.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as p ON ed.fk_projet = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE d.fk_user = u.rowid';
|
$this->export_sql_end[$r] .=' WHERE ed.fk_expensereport = d.rowid AND d.fk_user_author = u.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND d.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND d.entity IN ('.getEntity('expensereport',1).')';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -216,10 +223,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
$r=0;
|
$r=0;
|
||||||
|
|
||||||
// Example to declare a Left Menu entry: fk_mainmenu=home,fk_leftmenu=modulesadmintools
|
// Example to declare a Left Menu entry: fk_mainmenu=home,fk_leftmenu=modulesadmintools
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'TripsAndExpenses',
|
'titre'=>'TripsAndExpenses',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport',
|
'leftmenu'=>'expensereport',
|
||||||
'url'=>'/expensereport/index.php',
|
'url'=>'/expensereport/index.php',
|
||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -230,10 +237,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'New',
|
'titre'=>'New',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detailnew',
|
'leftmenu'=>'expensereport_detailnew',
|
||||||
'url'=>'/expensereport/card.php?action=create',
|
'url'=>'/expensereport/card.php?action=create',
|
||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -244,10 +251,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'List',
|
'titre'=>'List',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detaillist',
|
'leftmenu'=>'expensereport_detaillist',
|
||||||
'url'=>'/expensereport/list.php',
|
'url'=>'/expensereport/list.php',
|
||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -258,10 +265,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport_detaillist', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport_detaillist', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'ListToApprove',
|
'titre'=>'ListToApprove',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detaillist_approve',
|
'leftmenu'=>'expensereport_detaillist_approve',
|
||||||
'url'=>'/expensereport/list.php?search_state=2',
|
'url'=>'/expensereport/list.php?search_state=2',
|
||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -272,10 +279,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'Statistics',
|
'titre'=>'Statistics',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detail',
|
'leftmenu'=>'expensereport_detail',
|
||||||
'url'=>'/expensereport/stats/index.php',
|
'url'=>'/expensereport/stats/index.php',
|
||||||
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -288,10 +295,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
|
|
||||||
|
|
||||||
// Disabled, not yet stable
|
// Disabled, not yet stable
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'ExportTripCSV',
|
'titre'=>'ExportTripCSV',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detail',
|
'leftmenu'=>'expensereport_detail',
|
||||||
'url'=>'/expensereport/export_csv.php',
|
'url'=>'/expensereport/export_csv.php',
|
||||||
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -302,10 +309,10 @@ class modExpenseReport extends DolibarrModules
|
|||||||
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=accountancy,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=hrm,fk_leftmenu=expensereport', // Use r=value where r is index key used for the parent menu entry (higher parent must be a top menu entry)
|
||||||
'type'=>'left', // This is a Left menu entry
|
'type'=>'left', // This is a Left menu entry
|
||||||
'titre'=>'Synchro_Compta',
|
'titre'=>'Synchro_Compta',
|
||||||
'mainmenu'=>'accountancy',
|
'mainmenu'=>'hrm',
|
||||||
'leftmenu'=>'expensereport_detail',
|
'leftmenu'=>'expensereport_detail',
|
||||||
'url'=>'/expensereport/synchro_compta.php',
|
'url'=>'/expensereport/synchro_compta.php',
|
||||||
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
'langs'=>'expensereport', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
@ -329,13 +336,12 @@ class modExpenseReport extends DolibarrModules
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
// Remove permissions and default values
|
||||||
$this->remove($options);
|
$this->remove($options);
|
||||||
|
|
||||||
$result=$this->_load_tables('/deplacement/sql/');
|
|
||||||
|
|
||||||
$sql = array(
|
$sql = array(
|
||||||
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'teclib' AND entity = ".$conf->entity,
|
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'standard' AND entity = ".$conf->entity,
|
||||||
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('teclib','deplacement',".$conf->entity.")"
|
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('standard','deplacement',".$conf->entity.")"
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->_init($sql,$options);
|
return $this->_init($sql,$options);
|
||||||
@ -355,6 +361,4 @@ class modExpenseReport extends DolibarrModules
|
|||||||
|
|
||||||
return $this->_remove($sql,$options);
|
return $this->_remove($sql,$options);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -228,7 +228,7 @@ class modFacture extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facturedet as fd';
|
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facturedet as fd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')';
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
@ -284,7 +284,7 @@ class modFacture extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON pf.fk_paiement = p.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON pf.fk_paiement = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')';
|
||||||
$r++;
|
$r++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -147,7 +147,7 @@ class modFicheinter extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'fichinter as f, '.MAIN_DB_PREFIX.'fichinterdet as fd, '.MAIN_DB_PREFIX.'societe as s)';
|
$this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'fichinter as f, '.MAIN_DB_PREFIX.'fichinterdet as fd, '.MAIN_DB_PREFIX.'societe as s)';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_fichinter';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_fichinter';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('intervention',1).')';
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -297,7 +297,7 @@ class modFournisseur extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facture_fourn_det as fd';
|
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facture_fourn_det as fd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture_fourn';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture_fourn';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('supplier_invoice',1).')';
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
@ -351,7 +351,7 @@ class modFournisseur extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_facturefourn = f.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_facturefourn = f.rowid';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn as p ON pf.fk_paiementfourn = p.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn as p ON pf.fk_paiementfourn = p.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('supplier_invoice',1).')';
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
@ -369,7 +369,7 @@ class modFournisseur extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseur as f, '.MAIN_DB_PREFIX.'commande_fournisseurdet as fd';
|
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseur as f, '.MAIN_DB_PREFIX.'commande_fournisseurdet as fd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_commande';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_commande';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('supplier_order',1).')';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -81,7 +81,7 @@ class modMargin extends DolibarrModules
|
|||||||
// New pages on tabs
|
// New pages on tabs
|
||||||
$this->tabs = array(
|
$this->tabs = array(
|
||||||
'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__',
|
'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__',
|
||||||
'thirdparty:+margin:Margins:margins:empty($user->societe_id) && $user->rights->margins->liretous:/margin/tabs/thirdpartyMargins.php?socid=__ID__'
|
'thirdparty:+margin:Margins:margins:empty($user->societe_id) && $user->rights->margins->liretous && ($societe->client > 0):/margin/tabs/thirdpartyMargins.php?socid=__ID__'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -289,7 +289,7 @@ class modProjet extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON pt.rowid = ptt.fk_task,";
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON pt.rowid = ptt.fk_task,";
|
||||||
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'societe as s';
|
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'societe as s';
|
||||||
$this->export_sql_end[$r] .=' WHERE p.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE p.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND p.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND p.entity IN ('.getEntity('project',1).')';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -186,7 +186,7 @@ class modPropale extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd';
|
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)';
|
||||||
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal';
|
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal';
|
||||||
$this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('propal',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -132,21 +132,7 @@ class modSalaries extends DolibarrModules
|
|||||||
// Exports
|
// Exports
|
||||||
//--------
|
//--------
|
||||||
$r=0;
|
$r=0;
|
||||||
/*
|
|
||||||
$r++;
|
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
|
||||||
$this->export_label[$r]='Payment of salaries';
|
|
||||||
$this->export_permission[$r]=array(array("tax","charges","export"));
|
|
||||||
$this->export_fields_array[$r]=array('cc.libelle'=>"Type",'c.rowid'=>"IdSocialContribution",'c.libelle'=>"Label",'c.date_ech'=>'DateDue','c.periode'=>'Period','c.amount'=>"AmountExpected","c.paye"=>"Status",'p.rowid'=>'PaymentId','p.datep'=>'DatePayment','p.amount'=>'AmountPayment','p.num_paiement'=>'Numero');
|
|
||||||
$this->export_TypeFields_array[$r]=array('cc.libelle'=>"List:c_chargesociales:libelle:id",'c.libelle'=>"Text",'c.date_ech'=>'Date','c.periode'=>'Period','c.amount'=>"Number","c.paye"=>"Boolean",'p.datep'=>'Date','p.amount'=>'Number','p.num_paiement'=>'Number');
|
|
||||||
$this->export_entities_array[$r]=array('cc.libelle'=>"tax_type",'c.rowid'=>"tax",'c.libelle'=>'tax','c.date_ech'=>'tax','c.periode'=>'tax','c.amount'=>"tax","c.paye"=>"tax",'p.rowid'=>'payment','p.datep'=>'payment','p.amount'=>'payment','p.num_paiement'=>'payment');
|
|
||||||
|
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'c_chargesociales as cc, '.MAIN_DB_PREFIX.'chargesociales as c';
|
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementcharge as p ON p.fk_charge = c.rowid';
|
|
||||||
$this->export_sql_end[$r] .=' WHERE c.fk_type = cc.id';
|
|
||||||
$this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -382,7 +382,7 @@ class modSociete extends DolibarrModules
|
|||||||
$this->import_icon[$r]='company';
|
$this->import_icon[$r]='company';
|
||||||
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
|
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
|
||||||
$this->import_tables_array[$r]=array('s'=>MAIN_DB_PREFIX.'societe','extra'=>MAIN_DB_PREFIX.'societe_extrafields'); // List of tables to insert into (insert done in same order)
|
$this->import_tables_array[$r]=array('s'=>MAIN_DB_PREFIX.'societe','extra'=>MAIN_DB_PREFIX.'societe_extrafields'); // List of tables to insert into (insert done in same order)
|
||||||
$this->import_fields_array[$r]=array('s.nom'=>"Name*",'s.status'=>"Status",'s.client'=>"Customer*",'s.fournisseur'=>"Supplier*",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"CustomerAccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'s.fk_departement'=>"StateId",'s.fk_pays'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.fk_typent'=>"ThirdPartyType",'s.fk_effectif'=>"Staff","s.fk_forme_juridique"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','s.fk_stcomm'=>'ProspectStatus','s.default_lang'=>'DefaultLanguage','s.barcode'=>'BarCode','s.datec'=>"DateCreation");
|
$this->import_fields_array[$r]=array('s.nom'=>"Name*",'s.status'=>"Status",'s.client'=>"Customer*",'s.fournisseur'=>"Supplier*",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"CustomerAccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'s.fk_departement'=>"StateId",'s.fk_pays'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.fk_typent'=>"ThirdPartyType",'s.fk_effectif'=>"Staff","s.fk_forme_juridique"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','s.fk_stcomm'=>'ProspectStatus','s.default_lang'=>'DefaultLanguage','s.barcode'=>'BarCode','s.datec'=>"DateCreation");
|
||||||
// Add extra fields
|
// Add extra fields
|
||||||
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity = ".$conf->entity;
|
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity = ".$conf->entity;
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
@ -398,7 +398,7 @@ class modSociete extends DolibarrModules
|
|||||||
// End add extra fields
|
// End add extra fields
|
||||||
$this->import_fieldshidden_array[$r]=array('s.fk_user_creat'=>'user->id','extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'societe'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
|
$this->import_fieldshidden_array[$r]=array('s.fk_user_creat'=>'user->id','extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'societe'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
|
||||||
$this->import_convertvalue_array[$r]=array(
|
$this->import_convertvalue_array[$r]=array(
|
||||||
's.fk_typent'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ctypent.class.php','class'=>'Ctypent','method'=>'fetch','dict'=>'DictionaryCompanyType'),
|
's.fk_typent'=>array('rule'=>'fetchidfromcodeorlabel','classfile'=>'/core/class/ctypent.class.php','class'=>'Ctypent','method'=>'fetch','dict'=>'DictionaryCompanyType'),
|
||||||
's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'),
|
's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'),
|
||||||
's.fk_stcomm'=>array('rule'=>'zeroifnull'),
|
's.fk_stcomm'=>array('rule'=>'zeroifnull'),
|
||||||
's.code_client'=>array('rule'=>'getcustomercodeifauto'),
|
's.code_client'=>array('rule'=>'getcustomercodeifauto'),
|
||||||
@ -407,8 +407,8 @@ class modSociete extends DolibarrModules
|
|||||||
's.code_compta_fournisseur'=>array('rule'=>'getsupplieraccountancycodeifauto')
|
's.code_compta_fournisseur'=>array('rule'=>'getsupplieraccountancycodeifauto')
|
||||||
);
|
);
|
||||||
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
|
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
|
||||||
$this->import_regex_array[$r]=array('s.status'=>'^[0|1]','s.client'=>'^[0|1|2|3]','s.fournisseur'=>'^[0|1]','s.fk_typent'=>'id@'.MAIN_DB_PREFIX.'c_typent','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
|
$this->import_regex_array[$r]=array('s.status'=>'^[0|1]','s.client'=>'^[0|1|2|3]','s.fournisseur'=>'^[0|1]','s.fk_typent'=>'id@'.MAIN_DB_PREFIX.'c_typent','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$');
|
||||||
$this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789');
|
$this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.idprof5'=>"",'s.idprof6'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789','s.datec'=>"2015-01-01 or 2015-01-01 12:30:00");
|
||||||
|
|
||||||
// Import list of contact and attributes
|
// Import list of contact and attributes
|
||||||
$r++;
|
$r++;
|
||||||
@ -437,7 +437,7 @@ class modSociete extends DolibarrModules
|
|||||||
's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'),
|
's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'),
|
||||||
);
|
);
|
||||||
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
|
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
|
||||||
$this->import_regex_array[$r]=array('s.birthday'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
|
$this->import_regex_array[$r]=array('s.birthday'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$');
|
||||||
$this->import_examplevalues_array[$r]=array('s.fk_soc'=>'MyBigCompany','s.civility'=>"MR",'s.lastname'=>"Smith",'s.firstname'=>'John','s.address'=>'61 jump street','s.zip'=>'75000','s.town'=>'Bigtown','s.fk_pays'=>'US, FR, DE...','s.datec'=>'1972-10-10','s.poste'=>"Director",'s.phone'=>"5551122",'s.phone_perso'=>"5551133",'s.phone_mobile'=>"5551144",'s.fax'=>"5551155",'s.email'=>"johnsmith@email.com",'s.note_private'=>"My private note",'s.note_public'=>"My public note");
|
$this->import_examplevalues_array[$r]=array('s.fk_soc'=>'MyBigCompany','s.civility'=>"MR",'s.lastname'=>"Smith",'s.firstname'=>'John','s.address'=>'61 jump street','s.zip'=>'75000','s.town'=>'Bigtown','s.fk_pays'=>'US, FR, DE...','s.datec'=>'1972-10-10','s.poste'=>"Director",'s.phone'=>"5551122",'s.phone_perso'=>"5551133",'s.phone_mobile'=>"5551144",'s.fax'=>"5551155",'s.email'=>"johnsmith@email.com",'s.note_private'=>"My private note",'s.note_public'=>"My public note");
|
||||||
|
|
||||||
// Import Bank Accounts
|
// Import Bank Accounts
|
||||||
|
|||||||
@ -131,7 +131,7 @@ class modStock extends DolibarrModules
|
|||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p, '.MAIN_DB_PREFIX.'product_stock as ps, '.MAIN_DB_PREFIX.'entrepot as e';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p, '.MAIN_DB_PREFIX.'product_stock as ps, '.MAIN_DB_PREFIX.'entrepot as e';
|
||||||
$this->export_sql_end[$r] .=' WHERE p.rowid = ps.fk_product AND ps.fk_entrepot = e.rowid';
|
$this->export_sql_end[$r] .=' WHERE p.rowid = ps.fk_product AND ps.fk_entrepot = e.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND e.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND e.entity IN ('.getEntity('stock',1).')';
|
||||||
|
|
||||||
|
|
||||||
// Imports
|
// Imports
|
||||||
|
|||||||
@ -133,7 +133,7 @@ class modTax extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'c_chargesociales as cc, '.MAIN_DB_PREFIX.'chargesociales as c';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'c_chargesociales as cc, '.MAIN_DB_PREFIX.'chargesociales as c';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementcharge as p ON p.fk_charge = c.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementcharge as p ON p.fk_charge = c.rowid';
|
||||||
$this->export_sql_end[$r] .=' WHERE c.fk_type = cc.id';
|
$this->export_sql_end[$r] .=' WHERE c.fk_type = cc.id';
|
||||||
$this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity;
|
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('tax',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -220,7 +220,7 @@ class modUser extends DolibarrModules
|
|||||||
}
|
}
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'user as u';
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'user as u';
|
||||||
$this->export_sql_end[$r] .=' WHERE u.entity IN (0,'.$conf->entity.')';
|
$this->export_sql_end[$r] .=' WHERE u.entity IN ('.getEntity('user',1).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -718,6 +718,8 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
$object=new Cronjob($this->db);
|
$object=new Cronjob($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -744,6 +746,8 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -16,7 +16,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -15,7 +15,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,16 +24,17 @@
|
|||||||
|
|
||||||
$res=0;
|
$res=0;
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php');
|
require_once DOL_DOCUMENT_ROOT . '/core/class/CMailFile.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formmail.class.php");
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formprojet.class.php");
|
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
|
require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/lib/expensereport.lib.php");
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/expensereport.lib.php';
|
||||||
require_once(DOL_DOCUMENT_ROOT."/core/lib/price.lib.php");
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/price.lib.php';
|
||||||
dol_include_once('/expensereport/core/modules/expensereport/modules_expensereport.php');
|
require_once DOL_DOCUMENT_ROOT . '/core/modules/expensereport/modules_expensereport.php';
|
||||||
dol_include_once("/expensereport/class/expensereport.class.php");
|
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
|
|
||||||
$langs->load("trips");
|
$langs->load("trips");
|
||||||
|
|
||||||
@ -68,13 +68,17 @@ if (! empty($conf->multicompany->enabled) && ! empty($conf->entity) && $conf->en
|
|||||||
$rootfordata.='/'.$conf->entity;
|
$rootfordata.='/'.$conf->entity;
|
||||||
}
|
}
|
||||||
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
||||||
$conf->expensereport->dir_output = $rootfordata.'/expensereport';
|
|
||||||
|
|
||||||
// Define $urlwithroot
|
// Define $urlwithroot
|
||||||
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
|
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
|
||||||
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
|
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
|
||||||
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
|
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
|
||||||
|
|
||||||
|
// PDF
|
||||||
|
$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
|
||||||
|
$hidedesc = (GETPOST('hidedesc', 'int') ? GETPOST('hidedesc', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
|
||||||
|
$hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -83,7 +87,7 @@ $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain
|
|||||||
|
|
||||||
if ($cancel) $action='';
|
if ($cancel) $action='';
|
||||||
|
|
||||||
if ($action == 'confirm_delete' && $_GET["confirm"] == "yes" && $id > 0 && $user->rights->expensereport->supprimer)
|
if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$result=$object->delete($id);
|
$result=$object->delete($id);
|
||||||
@ -108,7 +112,8 @@ if ($action == 'add' && $user->rights->expensereport->creer)
|
|||||||
$object->fk_c_expensereport_statuts = 1;
|
$object->fk_c_expensereport_statuts = 1;
|
||||||
$object->fk_c_paiement = GETPOST('fk_c_paiement','int');
|
$object->fk_c_paiement = GETPOST('fk_c_paiement','int');
|
||||||
$object->fk_user_validator = GETPOST('fk_user_validator','int');
|
$object->fk_user_validator = GETPOST('fk_user_validator','int');
|
||||||
$object->note = GETPOST('note');
|
$object->note_public = GETPOST('note_public');
|
||||||
|
$object->note_private = GETPOST('note_private');
|
||||||
|
|
||||||
if ($object->periode_existe($user,$object->date_debut,$object->date_fin))
|
if ($object->periode_existe($user,$object->date_debut,$object->date_fin))
|
||||||
{
|
{
|
||||||
@ -152,7 +157,8 @@ if ($action == 'update' && $user->rights->expensereport->creer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$object->fk_c_paiement = GETPOST('fk_c_paiement','int');
|
$object->fk_c_paiement = GETPOST('fk_c_paiement','int');
|
||||||
$object->note = GETPOST('note');
|
$object->note_public = GETPOST('note_public');
|
||||||
|
$object->note_private = GETPOST('note_private');
|
||||||
|
|
||||||
$result = $object->update($user);
|
$result = $object->update($user);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
@ -171,6 +177,27 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $object->setValidate($user);
|
$result = $object->setValidate($user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0 && $object->fk_user_validator > 0)
|
if ($result > 0 && $object->fk_user_validator > 0)
|
||||||
{
|
{
|
||||||
$langs->load("mails");
|
$langs->load("mails");
|
||||||
@ -252,6 +279,27 @@ if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id
|
|||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $object->set_save_from_refuse($user);
|
$result = $object->set_save_from_refuse($user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// Send mail
|
// Send mail
|
||||||
@ -283,7 +331,7 @@ if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id
|
|||||||
|
|
||||||
// Génération du pdf avant attachement
|
// Génération du pdf avant attachement
|
||||||
$object->setDocModel($user,"");
|
$object->setDocModel($user,"");
|
||||||
$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
|
$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
|
||||||
|
|
||||||
if($resultPDF):
|
if($resultPDF):
|
||||||
// ATTACHMENT
|
// ATTACHMENT
|
||||||
@ -329,6 +377,27 @@ if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $u
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$result = $object->setApproved($user);
|
$result = $object->setApproved($user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||||
@ -360,7 +429,7 @@ if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $u
|
|||||||
|
|
||||||
// Génération du pdf avant attachement
|
// Génération du pdf avant attachement
|
||||||
$object->setDocModel($user,"");
|
$object->setDocModel($user,"");
|
||||||
$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
|
$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
|
||||||
|
|
||||||
if($resultPDF):
|
if($resultPDF):
|
||||||
// ATTACHMENT
|
// ATTACHMENT
|
||||||
@ -412,6 +481,27 @@ if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$result = $object->setDeny($user,GETPOST('detail_refuse'));
|
$result = $object->setDeny($user,GETPOST('detail_refuse'));
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||||
@ -477,6 +567,26 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && GETPOST('detail_
|
|||||||
{
|
{
|
||||||
$result = $object->set_cancel($user,GETPOST('detail_cancel'));
|
$result = $object->set_cancel($user,GETPOST('detail_cancel'));
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||||
@ -541,6 +651,27 @@ if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user->
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
|
||||||
$result = $object->setPaid($user);
|
$result = $object->setPaid($user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||||
@ -569,7 +700,7 @@ if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user->
|
|||||||
|
|
||||||
// Génération du pdf avant attachement
|
// Génération du pdf avant attachement
|
||||||
$object->setDocModel($user,"");
|
$object->setDocModel($user,"");
|
||||||
$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
|
$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
|
||||||
|
|
||||||
// PREPARE SEND
|
// PREPARE SEND
|
||||||
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message);
|
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message);
|
||||||
@ -638,6 +769,27 @@ if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 &&
|
|||||||
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
|
||||||
{
|
{
|
||||||
$result = $object->setStatut(0);
|
$result = $object->setStatut(0);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id);
|
header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id);
|
||||||
@ -746,7 +898,7 @@ if ($action == "addline")
|
|||||||
$action='';
|
$action='';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_delete_line' && $_POST["confirm"] == "yes")
|
if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes")
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
@ -759,6 +911,26 @@ if ($action == 'confirm_delete_line' && $_POST["confirm"] == "yes")
|
|||||||
$result=$object->deleteline($_GET["rowid"]);
|
$result=$object->deleteline($_GET["rowid"]);
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$object->update_totaux_del($object_ligne->total_ht,$object_ligne->total_tva);
|
$object->update_totaux_del($object_ligne->total_ht,$object_ligne->total_tva);
|
||||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_GET['id']);
|
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_GET['id']);
|
||||||
exit;
|
exit;
|
||||||
@ -801,6 +973,26 @@ if ($action == "updateligne" )
|
|||||||
$result = $object->updateline($rowid, $type_fees_id, $projet_id, $c_tva, $comments, $qty, $value_unit, $date, $object_id);
|
$result = $object->updateline($rowid, $type_fees_id, $projet_id, $c_tva, $comments, $qty, $value_unit, $date, $object_id);
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Define output language
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$object->recalculer($object_id);
|
$object->recalculer($object_id);
|
||||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object_id);
|
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object_id);
|
||||||
exit;
|
exit;
|
||||||
@ -812,20 +1004,6 @@ if ($action == "updateligne" )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == "recalc" && $id > 0)
|
|
||||||
{
|
|
||||||
$object = new ExpenseReport($db);
|
|
||||||
$object->fetch($id);
|
|
||||||
if($object->recalculer($id) > 0)
|
|
||||||
{
|
|
||||||
header("Location: ".$_SERVER["PHP_SELF"]."?id=".$_GET['id']);
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generer ou regenerer le document PDF
|
* Generer ou regenerer le document PDF
|
||||||
@ -846,7 +1024,7 @@ if ($action == 'builddoc') // En get ou en post
|
|||||||
$outputlangs = new Translate("",$conf);
|
$outputlangs = new Translate("",$conf);
|
||||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||||
}
|
}
|
||||||
$result=expensereport_pdf_create($db, $depl->id, '', $depl->modelpdf, $outputlangs);
|
$result=expensereport_pdf_create($db, $depl, '', $depl->modelpdf, $outputlangs);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db,$result);
|
dol_print_error($db,$result);
|
||||||
@ -957,21 +1135,36 @@ if ($action == 'create')
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Public note
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("Note").'</td>';
|
print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>';
|
||||||
print '<td>';
|
print '<td valign="top" colspan="2">';
|
||||||
print '<textarea name="note" class="flat" rows="'.ROWS_3.'" cols="100">'.GETPOST('note').'</textarea>';
|
|
||||||
print '</td>';
|
$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
|
||||||
print '</tr>';
|
print $doleditor->Create(1);
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// Private note
|
||||||
|
if (empty($user->societe_id)) {
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>';
|
||||||
|
print '<td valign="top" colspan="2">';
|
||||||
|
|
||||||
|
$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
|
||||||
|
print $doleditor->Create(1);
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<tbody>';
|
print '<tbody>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<center>';
|
print '<div align="center">';
|
||||||
print '<input type="submit" value="'.$langs->trans("AddTrip").'" name="bouton" class="button" />';
|
print '<input type="submit" value="'.$langs->trans("AddTrip").'" name="bouton" class="button" />';
|
||||||
print ' <input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />';
|
print ' <input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />';
|
||||||
print '</center>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
}
|
}
|
||||||
@ -1021,8 +1214,6 @@ else
|
|||||||
print '<input type="hidden" name="action" value="update">';
|
print '<input type="hidden" name="action" value="update">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<table class="border" style="width:100%;">';
|
print '<table class="border" style="width:100%;">';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
||||||
@ -1095,19 +1286,34 @@ else
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Public note
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("Note").'</td>';
|
print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>';
|
||||||
print '<td>';
|
print '<td valign="top" colspan="2">';
|
||||||
print '<textarea name="note" class="flat" rows="'.ROWS_2.'" cols="70">'.$object->note.'</textarea>';
|
|
||||||
print '</td>';
|
$doleditor = new DolEditor('note_public', $object->note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
|
||||||
print '</tr>';
|
print $doleditor->Create(1);
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// Private note
|
||||||
|
if (empty($user->societe_id)) {
|
||||||
|
print '<tr>';
|
||||||
|
print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>';
|
||||||
|
print '<td valign="top" colspan="2">';
|
||||||
|
|
||||||
|
$doleditor = new DolEditor('note_private', $object->note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
|
||||||
|
print $doleditor->Create(1);
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|
||||||
print '<div class="center">';
|
print '<div class="center">';
|
||||||
print '<input type="submit" value="'.$langs->trans("Modify").'" name="bouton" class="button"> ';
|
print '<input type="submit" value="'.$langs->trans("Modify").'" name="bouton" class="button">';
|
||||||
print '<input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />';
|
print ' <input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
@ -1194,8 +1400,12 @@ else
|
|||||||
print '<td>'.$object->getLibStatut(4).'</td>';
|
print '<td>'.$object->getLibStatut(4).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("Note").'</td>';
|
print '<td>'.$langs->trans("NotePublic").'</td>';
|
||||||
print '<td>'.$object->note.'</td>';
|
print '<td>'.$object->note_public.'</td>';
|
||||||
|
print '</tr>';
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>'.$langs->trans("NotePrivate").'</td>';
|
||||||
|
print '<td>'.$object->note_private.'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("AmountHT").'</td>';
|
print '<td>'.$langs->trans("AmountHT").'</td>';
|
||||||
|
|||||||
@ -19,12 +19,14 @@ class ExpenseReport extends CommonObject
|
|||||||
var $total_ht;
|
var $total_ht;
|
||||||
var $total_tva;
|
var $total_tva;
|
||||||
var $total_ttc;
|
var $total_ttc;
|
||||||
var $note;
|
var $note_public;
|
||||||
|
var $note_private;
|
||||||
var $date_debut;
|
var $date_debut;
|
||||||
var $date_fin;
|
var $date_fin;
|
||||||
|
|
||||||
var $fk_user_validator;
|
var $fk_user_validator;
|
||||||
var $fk_c_expensereport_statuts; // -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
var $status;
|
||||||
|
var $fk_c_expensereport_statuts; // -- 1=draft, 2=validated (attente approb), 4=canceled, 5=approved, 6=payed, 99=denied
|
||||||
var $fk_c_paiement;
|
var $fk_c_paiement;
|
||||||
|
|
||||||
var $user_author_infos;
|
var $user_author_infos;
|
||||||
@ -133,7 +135,8 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= ",fk_user_validator";
|
$sql.= ",fk_user_validator";
|
||||||
$sql.= ",fk_c_expensereport_statuts";
|
$sql.= ",fk_c_expensereport_statuts";
|
||||||
$sql.= ",fk_c_paiement";
|
$sql.= ",fk_c_paiement";
|
||||||
$sql.= ",note";
|
$sql.= ",note_public";
|
||||||
|
$sql.= ",note_private";
|
||||||
$sql.= ") VALUES(";
|
$sql.= ") VALUES(";
|
||||||
$sql.= "'(PROV)'";
|
$sql.= "'(PROV)'";
|
||||||
$sql.= ", ".$this->total_ht;
|
$sql.= ", ".$this->total_ht;
|
||||||
@ -146,7 +149,8 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
$sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
||||||
$sql.= ", ".($this->fk_c_expensereport_statuts > 1 ? $this->fk_c_expensereport_statuts:0);
|
$sql.= ", ".($this->fk_c_expensereport_statuts > 1 ? $this->fk_c_expensereport_statuts:0);
|
||||||
$sql.= ", ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
$sql.= ", ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
||||||
$sql.= ", ".($this->note?"'".$this->db->escape($this->note)."'":"null");
|
$sql.= ", ".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null");
|
||||||
|
$sql.= ", ".($this->note_private?"'".$this->db->escape($this->note_private)."'":"null");
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
||||||
@ -229,7 +233,8 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= " , fk_user_paid = ".($this->fk_user_paid > 0 ? $this->fk_user_paid:"null");
|
$sql.= " , fk_user_paid = ".($this->fk_user_paid > 0 ? $this->fk_user_paid:"null");
|
||||||
$sql.= " , fk_c_expensereport_statuts = ".($this->fk_c_expensereport_statuts >= 0 ? $this->fk_c_expensereport_statuts:'0');
|
$sql.= " , fk_c_expensereport_statuts = ".($this->fk_c_expensereport_statuts >= 0 ? $this->fk_c_expensereport_statuts:'0');
|
||||||
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
||||||
$sql.= " , note = ".(!empty($this->note)?"'".$this->db->escape($this->note)."'":"''");
|
$sql.= " , note_public = ".(!empty($this->note_public)?"'".$this->db->escape($this->note_public)."'":"''");
|
||||||
|
$sql.= " , note_private = ".(!empty($this->note_private)?"'".$this->db->escape($this->note_private)."'":"''");
|
||||||
$sql.= " , detail_refuse = ".(!empty($this->detail_refuse)?"'".$this->db->escape($this->detail_refuse)."'":"''");
|
$sql.= " , detail_refuse = ".(!empty($this->detail_refuse)?"'".$this->db->escape($this->detail_refuse)."'":"''");
|
||||||
$sql.= " WHERE rowid = ".$this->id;
|
$sql.= " WHERE rowid = ".$this->id;
|
||||||
|
|
||||||
@ -257,7 +262,7 @@ class ExpenseReport extends CommonObject
|
|||||||
{
|
{
|
||||||
global $conf,$db;
|
global $conf,$db;
|
||||||
|
|
||||||
$sql = "SELECT d.rowid, d.ref, d.note,"; // DEFAULT
|
$sql = "SELECT d.rowid, d.ref, d.note_public, d.note_private,"; // DEFAULT
|
||||||
$sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS
|
$sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS
|
||||||
$sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS
|
$sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS
|
||||||
$sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int)
|
$sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int)
|
||||||
@ -282,7 +287,8 @@ class ExpenseReport extends CommonObject
|
|||||||
$this->total_ht = $obj->total_ht;
|
$this->total_ht = $obj->total_ht;
|
||||||
$this->total_tva = $obj->total_tva;
|
$this->total_tva = $obj->total_tva;
|
||||||
$this->total_ttc = $obj->total_ttc;
|
$this->total_ttc = $obj->total_ttc;
|
||||||
$this->note = $obj->note;
|
$this->note_public = $obj->note_public;
|
||||||
|
$this->note_private = $obj->note_private;
|
||||||
$this->detail_refuse = $obj->detail_refuse;
|
$this->detail_refuse = $obj->detail_refuse;
|
||||||
$this->detail_cancel = $obj->detail_cancel;
|
$this->detail_cancel = $obj->detail_cancel;
|
||||||
|
|
||||||
@ -467,6 +473,67 @@ class ExpenseReport extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialise an instance with random values.
|
||||||
|
* Used to build previews or test instances.
|
||||||
|
* id must be 0 if object instance is a specimen.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function initAsSpecimen()
|
||||||
|
{
|
||||||
|
global $user,$langs,$conf;
|
||||||
|
|
||||||
|
$now=dol_now();
|
||||||
|
|
||||||
|
// Initialise parametres
|
||||||
|
$this->id=0;
|
||||||
|
$this->ref = 'SPECIMEN';
|
||||||
|
$this->specimen=1;
|
||||||
|
$this->date_create = $now;
|
||||||
|
$this->date_debut = $now;
|
||||||
|
$this->date_fin = $now;
|
||||||
|
$this->date_approve = $now;
|
||||||
|
|
||||||
|
$this->status = 5;
|
||||||
|
$this->fk_c_expensereport_statuts = 5;
|
||||||
|
|
||||||
|
$this->fk_user_author = $user->id;
|
||||||
|
$this->fk_user_valid = $user->id;
|
||||||
|
$this->fk_user_approve = $user->id;
|
||||||
|
$this->fk_user_validator = $user->id;
|
||||||
|
|
||||||
|
$this->note_private='Private note';
|
||||||
|
$this->note_public='SPECIMEN';
|
||||||
|
$nbp = 5;
|
||||||
|
$xnbp = 0;
|
||||||
|
while ($xnbp < $nbp)
|
||||||
|
{
|
||||||
|
$line=new ExpenseReportLine($this->db);
|
||||||
|
$line->comments=$langs->trans("Comment")." ".$xnbp;
|
||||||
|
$line->date=($now-3600*(1+$xnbp));
|
||||||
|
$line->total_ht=100;
|
||||||
|
$line->total_tva=20;
|
||||||
|
$line->total_ttc=120;
|
||||||
|
$line->qty=1;
|
||||||
|
$line->fk_c_tva=20;
|
||||||
|
$line->tva_taux=20;
|
||||||
|
$line->value_unit=120;
|
||||||
|
$line->fk_expensereport=0;
|
||||||
|
$line->type_fees_code='TRA';
|
||||||
|
|
||||||
|
$line->projet_ref = 'ABC';
|
||||||
|
|
||||||
|
$this->lines[$xnbp]=$line;
|
||||||
|
$xnbp++;
|
||||||
|
|
||||||
|
$this->total_ht+=$line->total_ht;
|
||||||
|
$this->total_tva+=$line->total_tva;
|
||||||
|
$this->total_ttc+=$line->total_ttc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fetch_line_by_project
|
* fetch_line_by_project
|
||||||
*
|
*
|
||||||
@ -1302,6 +1369,41 @@ class ExpenseReport extends CommonObject
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a document onto disk accordign to template module.
|
||||||
|
*
|
||||||
|
* @param string $modele Force le mnodele a utiliser ('' to not force)
|
||||||
|
* @param Translate $outputlangs objet lang a utiliser pour traduction
|
||||||
|
* @param int $hidedetails Hide details of lines
|
||||||
|
* @param int $hidedesc Hide description
|
||||||
|
* @param int $hideref Hide ref
|
||||||
|
* @return int 0 if KO, 1 if OK
|
||||||
|
*/
|
||||||
|
public function generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
|
||||||
|
{
|
||||||
|
global $conf,$langs;
|
||||||
|
|
||||||
|
$langs->load("trips");
|
||||||
|
|
||||||
|
// Positionne le modele sur le nom du modele a utiliser
|
||||||
|
if (! dol_strlen($modele))
|
||||||
|
{
|
||||||
|
if (! empty($conf->global->EXPENSEREPORT_ADDON_PDF))
|
||||||
|
{
|
||||||
|
$modele = $conf->global->EXPENSEREPORT_ADDON_PDF;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$modele = 'standard';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$modelpath = "core/modules/expensereport/doc/";
|
||||||
|
|
||||||
|
return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -16,7 +16,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,8 +36,24 @@ $socid = $_GET["socid"]?$_GET["socid"]:'';
|
|||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'expensereport','','');
|
$result = restrictedArea($user, 'expensereport','','');
|
||||||
|
|
||||||
$search_ref=GETPOST('search_ref');
|
$search_ref = GETPOST('search_ref');
|
||||||
|
$search_user = GETPOST('search_user','int');
|
||||||
|
$search_state = GETPOST('search_state','int');
|
||||||
|
$month_start = GETPOST("month_start","int");
|
||||||
|
$year_start = GETPOST("year_start","int");
|
||||||
|
$month_end = GETPOST("month_end","int");
|
||||||
|
$year_end = GETPOST("year_end","int");
|
||||||
|
|
||||||
|
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers
|
||||||
|
{
|
||||||
|
$search_ref="";
|
||||||
|
$search_user="";
|
||||||
|
$search_state="";
|
||||||
|
$month_start="";
|
||||||
|
$year_start="";
|
||||||
|
$month_end="";
|
||||||
|
$year_end="";
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -53,15 +68,6 @@ llxHeader('', $langs->trans("ListOfExpenseReports"));
|
|||||||
$max_year = 5;
|
$max_year = 5;
|
||||||
$min_year = 5;
|
$min_year = 5;
|
||||||
|
|
||||||
$month_start = $_GET['month_start'];
|
|
||||||
$year_start = $_GET['year_start'];
|
|
||||||
$month_end = $_GET['month_end'];
|
|
||||||
$year_end = $_GET['year_end'];
|
|
||||||
|
|
||||||
$search_ref = GETPOST('search_ref');
|
|
||||||
$search_user = GETPOST('search_user','int');
|
|
||||||
$search_state = GETPOST('search_state','int');
|
|
||||||
|
|
||||||
$sortorder = $_GET["sortorder"];
|
$sortorder = $_GET["sortorder"];
|
||||||
$sortfield = $_GET["sortfield"];
|
$sortfield = $_GET["sortfield"];
|
||||||
$page = $_GET["page"];
|
$page = $_GET["page"];
|
||||||
@ -183,10 +189,10 @@ if ($resql)
|
|||||||
print_liste_field_titre($langs->trans("TotalVAT"),$_SERVER["PHP_SELF"],"d.total_tva","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("TotalVAT"),$_SERVER["PHP_SELF"],"d.total_tva","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("TotalTTC"),$_SERVER["PHP_SELF"],"d.total_ttc","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("TotalTTC"),$_SERVER["PHP_SELF"],"d.total_ttc","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre($langs->trans("Statut"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans("Statut"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre();
|
print '<td class="liste_titre"> </td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
// FILTRES
|
// Filters
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td class="liste_titre" align="left">';
|
print '<td class="liste_titre" align="left">';
|
||||||
print '<input class="flat" size="15" type="text" name="search_ref" value="'.$search_ref.'">';
|
print '<input class="flat" size="15" type="text" name="search_ref" value="'.$search_ref.'">';
|
||||||
@ -224,9 +230,11 @@ if ($resql)
|
|||||||
print '<td class="liste_titre" align="right">';
|
print '<td class="liste_titre" align="right">';
|
||||||
select_expensereport_statut($search_state,'search_state');
|
select_expensereport_statut($search_state,'search_state');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre" align="right" width="20px">';
|
|
||||||
print ' <input type="image" class="liste_titre" name="button_search" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" alt="'.$langs->trans('Search').'">';
|
print '<td class="liste_titre" align="right">';
|
||||||
print "</td>";
|
print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||||
|
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -13,7 +13,6 @@
|
|||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* or see http://www.gnu.org/
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
|
|||||||
@ -60,7 +60,9 @@ $entitytoicon = array(
|
|||||||
'warehouse' => 'stock',
|
'warehouse' => 'stock',
|
||||||
'category' => 'category',
|
'category' => 'category',
|
||||||
'shipment' => 'sending',
|
'shipment' => 'sending',
|
||||||
'shipment_line'=> 'sending'
|
'shipment_line'=> 'sending',
|
||||||
|
'expensereport'=> 'trip',
|
||||||
|
'expensereport_line'=> 'trip'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Translation code
|
// Translation code
|
||||||
@ -95,7 +97,9 @@ $entitytolang = array(
|
|||||||
'project' => 'Projects',
|
'project' => 'Projects',
|
||||||
'projecttask' => 'Tasks',
|
'projecttask' => 'Tasks',
|
||||||
'task_time' => 'TaskTimeSpent',
|
'task_time' => 'TaskTimeSpent',
|
||||||
'action' => 'Action'
|
'action' => 'Action',
|
||||||
|
'expensereport'=> 'ExpenseReport',
|
||||||
|
'expensereport_line'=> 'ExpenseReportLine',
|
||||||
);
|
);
|
||||||
|
|
||||||
$array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_selected_fields"]:array();
|
$array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_selected_fields"]:array();
|
||||||
|
|||||||
@ -662,7 +662,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
if (! empty($conf->global->SUPPLIER_ORDER_AUTOADD_USER_CONTACT))
|
if (! empty($conf->global->SUPPLIER_ORDER_AUTOADD_USER_CONTACT))
|
||||||
{
|
{
|
||||||
$result=$this->add_contact($user->id, 'SALESREPFOLL', 'internal', 1);
|
$result=$this->add_contact($user->id, 'SALESREPFOLL', 'internal', 1);
|
||||||
if ($result < 0)
|
if ($result < 0 && $result != -2) // -2 means already exists
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -907,7 +907,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
$sql.= ", entity";
|
$sql.= ", entity";
|
||||||
$sql.= ", fk_soc";
|
$sql.= ", fk_soc";
|
||||||
$sql.= ", date_creation";
|
$sql.= ", date_creation";
|
||||||
//$sql.= ", date_livraison";
|
$sql.= ", date_livraison";
|
||||||
$sql.= ", fk_user_author";
|
$sql.= ", fk_user_author";
|
||||||
$sql.= ", fk_statut";
|
$sql.= ", fk_statut";
|
||||||
$sql.= ", source";
|
$sql.= ", source";
|
||||||
@ -919,12 +919,12 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
$sql.= " VALUES (";
|
$sql.= " VALUES (";
|
||||||
$sql.= "''";
|
$sql.= "''";
|
||||||
$sql.= ", '".$this->ref_supplier."'";
|
$sql.= ", '".$this->ref_supplier."'";
|
||||||
$sql.= ", '".$this->note_private."'";
|
$sql.= ", '".$this->db->escape($this->note_private)."'";
|
||||||
$sql.= ", '".$this->note_public."'";
|
$sql.= ", '".$this->db->escape($this->note_public)."'";
|
||||||
$sql.= ", ".$conf->entity;
|
$sql.= ", ".$conf->entity;
|
||||||
$sql.= ", ".$this->socid;
|
$sql.= ", ".$this->socid;
|
||||||
$sql.= ", '".$this->db->idate($now)."'";
|
$sql.= ", '".$this->db->idate($now)."'";
|
||||||
//$sql.= ", '".$this->db->idate($now)."'";
|
$sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null");
|
||||||
$sql.= ", ".$user->id;
|
$sql.= ", ".$user->id;
|
||||||
$sql.= ", 0";
|
$sql.= ", 0";
|
||||||
$sql.= ", " . $this->source;
|
$sql.= ", " . $this->source;
|
||||||
@ -1044,6 +1044,8 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
|
$this->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -1080,6 +1082,8 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
// End call triggers
|
// End call triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($this->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
545
htdocs/fourn/class/fournisseur.commande.dispatch.class.php
Normal file
545
htdocs/fourn/class/fournisseur.commande.dispatch.class.php
Normal file
@ -0,0 +1,545 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2014 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
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file dev/skeletons/commandefournisseurdispatch.class.php
|
||||||
|
* \ingroup fournisseur stock
|
||||||
|
* \brief This file is an example for a CRUD class file (Create/Read/Update/Delete)
|
||||||
|
* Initialy built by build_class_from_table on 2015-02-24 10:38
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Put here all includes required by your class file
|
||||||
|
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
|
||||||
|
//require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
|
||||||
|
//require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to manage table commandefournisseurdispatch
|
||||||
|
*/
|
||||||
|
class CommandeFournisseurDispatch extends CommonObject
|
||||||
|
{
|
||||||
|
var $db; //!< To store db handler
|
||||||
|
var $error; //!< To return error code (or message)
|
||||||
|
var $errors=array(); //!< To return several error codes (or messages)
|
||||||
|
var $element='commandefournisseurdispatch'; //!< Id that identify managed objects
|
||||||
|
var $table_element='commande_fournisseur_dispatch'; //!< Name of table without prefix where object is stored
|
||||||
|
|
||||||
|
var $id;
|
||||||
|
|
||||||
|
var $fk_commande;
|
||||||
|
var $fk_product;
|
||||||
|
var $fk_commandefourndet;
|
||||||
|
var $qty;
|
||||||
|
var $fk_entrepot;
|
||||||
|
var $fk_user;
|
||||||
|
var $datec='';
|
||||||
|
var $comment;
|
||||||
|
var $status;
|
||||||
|
var $tms='';
|
||||||
|
var $batch;
|
||||||
|
var $eatby='';
|
||||||
|
var $sellby='';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param DoliDb $db Database handler
|
||||||
|
*/
|
||||||
|
function __construct($db)
|
||||||
|
{
|
||||||
|
$this->db = $db;
|
||||||
|
|
||||||
|
// List of language codes for status
|
||||||
|
$this->statuts[0] = 'Received';
|
||||||
|
$this->statuts[1] = 'Approved';
|
||||||
|
$this->statuts[2] = 'Denied';
|
||||||
|
$this->statutshort[0] = 'Received';
|
||||||
|
$this->statutshort[1] = 'Approved';
|
||||||
|
$this->statutshort[2] = 'Denied';
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create object into database
|
||||||
|
*
|
||||||
|
* @param User $user User that creates
|
||||||
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
|
* @return int <0 if KO, Id of created object if OK
|
||||||
|
*/
|
||||||
|
function create($user, $notrigger=0)
|
||||||
|
{
|
||||||
|
global $conf, $langs;
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
// Clean parameters
|
||||||
|
|
||||||
|
if (isset($this->fk_commande)) $this->fk_commande=trim($this->fk_commande);
|
||||||
|
if (isset($this->fk_product)) $this->fk_product=trim($this->fk_product);
|
||||||
|
if (isset($this->fk_commandefourndet)) $this->fk_commandefourndet=trim($this->fk_commandefourndet);
|
||||||
|
if (isset($this->qty)) $this->qty=trim($this->qty);
|
||||||
|
if (isset($this->fk_entrepot)) $this->fk_entrepot=trim($this->fk_entrepot);
|
||||||
|
if (isset($this->fk_user)) $this->fk_user=trim($this->fk_user);
|
||||||
|
if (isset($this->comment)) $this->comment=trim($this->comment);
|
||||||
|
if (isset($this->status)) $this->status=trim($this->status);
|
||||||
|
if (isset($this->batch)) $this->batch=trim($this->batch);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Check parameters
|
||||||
|
// Put here code to add control on parameters values
|
||||||
|
|
||||||
|
// Insert request
|
||||||
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."(";
|
||||||
|
|
||||||
|
$sql.= "fk_commande,";
|
||||||
|
$sql.= "fk_product,";
|
||||||
|
$sql.= "fk_commandefourndet,";
|
||||||
|
$sql.= "qty,";
|
||||||
|
$sql.= "fk_entrepot,";
|
||||||
|
$sql.= "fk_user,";
|
||||||
|
$sql.= "datec,";
|
||||||
|
$sql.= "comment,";
|
||||||
|
$sql.= "status,";
|
||||||
|
$sql.= "batch,";
|
||||||
|
$sql.= "eatby,";
|
||||||
|
$sql.= "sellby";
|
||||||
|
|
||||||
|
|
||||||
|
$sql.= ") VALUES (";
|
||||||
|
|
||||||
|
$sql.= " ".(! isset($this->fk_commande)?'NULL':"'".$this->fk_commande."'").",";
|
||||||
|
$sql.= " ".(! isset($this->fk_product)?'NULL':"'".$this->fk_product."'").",";
|
||||||
|
$sql.= " ".(! isset($this->fk_commandefourndet)?'NULL':"'".$this->fk_commandefourndet."'").",";
|
||||||
|
$sql.= " ".(! isset($this->qty)?'NULL':"'".$this->qty."'").",";
|
||||||
|
$sql.= " ".(! isset($this->fk_entrepot)?'NULL':"'".$this->fk_entrepot."'").",";
|
||||||
|
$sql.= " ".(! isset($this->fk_user)?'NULL':"'".$this->fk_user."'").",";
|
||||||
|
$sql.= " ".(! isset($this->datec) || dol_strlen($this->datec)==0?'NULL':"'".$this->db->idate($this->datec)."'").",";
|
||||||
|
$sql.= " ".(! isset($this->comment)?'NULL':"'".$this->db->escape($this->comment)."'").",";
|
||||||
|
$sql.= " ".(! isset($this->status)?'NULL':"'".$this->status."'").",";
|
||||||
|
$sql.= " ".(! isset($this->batch)?'NULL':"'".$this->db->escape($this->batch)."'").",";
|
||||||
|
$sql.= " ".(! isset($this->eatby) || dol_strlen($this->eatby)==0?'NULL':"'".$this->db->idate($this->eatby)."'").",";
|
||||||
|
$sql.= " ".(! isset($this->sellby) || dol_strlen($this->sellby)==0?'NULL':"'".$this->db->idate($this->sellby)."'")."";
|
||||||
|
|
||||||
|
|
||||||
|
$sql.= ")";
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
|
||||||
|
|
||||||
|
if (! $notrigger)
|
||||||
|
{
|
||||||
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
|
// want this action calls a trigger.
|
||||||
|
|
||||||
|
//// Call triggers
|
||||||
|
//$result=$this->call_trigger('MYOBJECT_CREATE',$user);
|
||||||
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
|
//// End call triggers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit or rollback
|
||||||
|
if ($error)
|
||||||
|
{
|
||||||
|
foreach($this->errors as $errmsg)
|
||||||
|
{
|
||||||
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
|
}
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1*$error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->db->commit();
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load object in memory from the database
|
||||||
|
*
|
||||||
|
* @param int $id Id object
|
||||||
|
* @param string $ref Ref
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
function fetch($id,$ref='')
|
||||||
|
{
|
||||||
|
global $langs;
|
||||||
|
$sql = "SELECT";
|
||||||
|
$sql.= " t.rowid,";
|
||||||
|
|
||||||
|
$sql.= " t.fk_commande,";
|
||||||
|
$sql.= " t.fk_product,";
|
||||||
|
$sql.= " t.fk_commandefourndet,";
|
||||||
|
$sql.= " t.qty,";
|
||||||
|
$sql.= " t.fk_entrepot,";
|
||||||
|
$sql.= " t.fk_user,";
|
||||||
|
$sql.= " t.datec,";
|
||||||
|
$sql.= " t.comment,";
|
||||||
|
$sql.= " t.status,";
|
||||||
|
$sql.= " t.tms,";
|
||||||
|
$sql.= " t.batch,";
|
||||||
|
$sql.= " t.eatby,";
|
||||||
|
$sql.= " t.sellby";
|
||||||
|
|
||||||
|
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t";
|
||||||
|
if ($ref) $sql.= " WHERE t.ref = '".$ref."'";
|
||||||
|
else $sql.= " WHERE t.rowid = ".$id;
|
||||||
|
|
||||||
|
dol_syslog(get_class($this)."::fetch");
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
if ($this->db->num_rows($resql))
|
||||||
|
{
|
||||||
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
|
||||||
|
$this->id = $obj->rowid;
|
||||||
|
|
||||||
|
$this->fk_commande = $obj->fk_commande;
|
||||||
|
$this->fk_product = $obj->fk_product;
|
||||||
|
$this->fk_commandefourndet = $obj->fk_commandefourndet;
|
||||||
|
$this->qty = $obj->qty;
|
||||||
|
$this->fk_entrepot = $obj->fk_entrepot;
|
||||||
|
$this->fk_user = $obj->fk_user;
|
||||||
|
$this->datec = $this->db->jdate($obj->datec);
|
||||||
|
$this->comment = $obj->comment;
|
||||||
|
$this->status = $obj->status;
|
||||||
|
$this->tms = $this->db->jdate($obj->tms);
|
||||||
|
$this->batch = $obj->batch;
|
||||||
|
$this->eatby = $this->db->jdate($obj->eatby);
|
||||||
|
$this->sellby = $this->db->jdate($obj->sellby);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
$this->db->free($resql);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->error="Error ".$this->db->lasterror();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update object into database
|
||||||
|
*
|
||||||
|
* @param User $user User that modifies
|
||||||
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
function update($user, $notrigger=0)
|
||||||
|
{
|
||||||
|
global $conf, $langs;
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
// Clean parameters
|
||||||
|
|
||||||
|
if (isset($this->fk_commande)) $this->fk_commande=trim($this->fk_commande);
|
||||||
|
if (isset($this->fk_product)) $this->fk_product=trim($this->fk_product);
|
||||||
|
if (isset($this->fk_commandefourndet)) $this->fk_commandefourndet=trim($this->fk_commandefourndet);
|
||||||
|
if (isset($this->qty)) $this->qty=trim($this->qty);
|
||||||
|
if (isset($this->fk_entrepot)) $this->fk_entrepot=trim($this->fk_entrepot);
|
||||||
|
if (isset($this->fk_user)) $this->fk_user=trim($this->fk_user);
|
||||||
|
if (isset($this->comment)) $this->comment=trim($this->comment);
|
||||||
|
if (isset($this->status)) $this->status=trim($this->status);
|
||||||
|
if (isset($this->batch)) $this->batch=trim($this->batch);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Check parameters
|
||||||
|
// Put here code to add a control on parameters values
|
||||||
|
|
||||||
|
// Update request
|
||||||
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET";
|
||||||
|
|
||||||
|
$sql.= " fk_commande=".(isset($this->fk_commande)?$this->fk_commande:"null").",";
|
||||||
|
$sql.= " fk_product=".(isset($this->fk_product)?$this->fk_product:"null").",";
|
||||||
|
$sql.= " fk_commandefourndet=".(isset($this->fk_commandefourndet)?$this->fk_commandefourndet:"null").",";
|
||||||
|
$sql.= " qty=".(isset($this->qty)?$this->qty:"null").",";
|
||||||
|
$sql.= " fk_entrepot=".(isset($this->fk_entrepot)?$this->fk_entrepot:"null").",";
|
||||||
|
$sql.= " fk_user=".(isset($this->fk_user)?$this->fk_user:"null").",";
|
||||||
|
$sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').",";
|
||||||
|
$sql.= " comment=".(isset($this->comment)?"'".$this->db->escape($this->comment)."'":"null").",";
|
||||||
|
$sql.= " status=".(isset($this->status)?$this->status:"null").",";
|
||||||
|
$sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').",";
|
||||||
|
$sql.= " batch=".(isset($this->batch)?"'".$this->db->escape($this->batch)."'":"null").",";
|
||||||
|
$sql.= " eatby=".(dol_strlen($this->eatby)!=0 ? "'".$this->db->idate($this->eatby)."'" : 'null').",";
|
||||||
|
$sql.= " sellby=".(dol_strlen($this->sellby)!=0 ? "'".$this->db->idate($this->sellby)."'" : 'null')."";
|
||||||
|
|
||||||
|
|
||||||
|
$sql.= " WHERE rowid=".$this->id;
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
dol_syslog(__METHOD__);
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
if (! $notrigger)
|
||||||
|
{
|
||||||
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
|
// want this action calls a trigger.
|
||||||
|
|
||||||
|
//// Call triggers
|
||||||
|
//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
|
||||||
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
|
//// End call triggers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit or rollback
|
||||||
|
if ($error)
|
||||||
|
{
|
||||||
|
foreach($this->errors as $errmsg)
|
||||||
|
{
|
||||||
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
|
}
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1*$error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete object in database
|
||||||
|
*
|
||||||
|
* @param User $user User that deletes
|
||||||
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
function delete($user, $notrigger=0)
|
||||||
|
{
|
||||||
|
global $conf, $langs;
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
if (! $notrigger)
|
||||||
|
{
|
||||||
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
|
// want this action calls a trigger.
|
||||||
|
|
||||||
|
//// Call triggers
|
||||||
|
//$result=$this->call_trigger('MYOBJECT_DELETE',$user);
|
||||||
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
|
//// End call triggers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element;
|
||||||
|
$sql.= " WHERE rowid=".$this->id;
|
||||||
|
|
||||||
|
dol_syslog(__METHOD__);
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit or rollback
|
||||||
|
if ($error)
|
||||||
|
{
|
||||||
|
foreach($this->errors as $errmsg)
|
||||||
|
{
|
||||||
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
|
}
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1*$error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load an object from its id and create a new one in database
|
||||||
|
*
|
||||||
|
* @param int $fromid Id of object to clone
|
||||||
|
* @return int New id of clone
|
||||||
|
*/
|
||||||
|
function createFromClone($fromid)
|
||||||
|
{
|
||||||
|
global $user,$langs;
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
$object=new Commandefournisseurdispatch($this->db);
|
||||||
|
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
// Load source object
|
||||||
|
$object->fetch($fromid);
|
||||||
|
$object->id=0;
|
||||||
|
$object->statut=0;
|
||||||
|
|
||||||
|
// Clear fields
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// Create clone
|
||||||
|
$result=$object->create($user);
|
||||||
|
|
||||||
|
// Other options
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$this->error=$object->error;
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// End
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$this->db->commit();
|
||||||
|
return $object->id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->db->rollback();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return label of the status of object
|
||||||
|
*
|
||||||
|
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=short label + picto
|
||||||
|
* @return string Label
|
||||||
|
*/
|
||||||
|
function getLibStatut($mode=0)
|
||||||
|
{
|
||||||
|
return $this->LibStatut($this->status,$mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return label of a status
|
||||||
|
*
|
||||||
|
* @param int $statut Id statut
|
||||||
|
* @param int $mode 0=Long label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Long label, 5=Short label + Picto
|
||||||
|
* @return string Label of status
|
||||||
|
*/
|
||||||
|
function LibStatut($statut,$mode=0)
|
||||||
|
{
|
||||||
|
global $langs;
|
||||||
|
$langs->load('orders');
|
||||||
|
|
||||||
|
if ($mode == 0)
|
||||||
|
{
|
||||||
|
return $langs->trans($this->statuts[$statut]);
|
||||||
|
}
|
||||||
|
if ($mode == 1)
|
||||||
|
{
|
||||||
|
return $langs->trans($this->statutshort[$statut]);
|
||||||
|
}
|
||||||
|
if ($mode == 2)
|
||||||
|
{
|
||||||
|
return $langs->trans($this->statuts[$statut]);
|
||||||
|
}
|
||||||
|
if ($mode == 3)
|
||||||
|
{
|
||||||
|
if ($statut==0) return img_picto($langs->trans($this->statuts[$statut]),'statut0');
|
||||||
|
if ($statut==1) return img_picto($langs->trans($this->statuts[$statut]),'statut1');
|
||||||
|
if ($statut==2) return img_picto($langs->trans($this->statuts[$statut]),'statut3');
|
||||||
|
if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut5');
|
||||||
|
}
|
||||||
|
if ($mode == 4)
|
||||||
|
{
|
||||||
|
if ($statut==0) return img_picto($langs->trans($this->statuts[$statut]),'statut0').' '.$langs->trans($this->statuts[$statut]);
|
||||||
|
if ($statut==1) return img_picto($langs->trans($this->statuts[$statut]),'statut1').' '.$langs->trans($this->statuts[$statut]);
|
||||||
|
if ($statut==2) return img_picto($langs->trans($this->statuts[$statut]),'statut3').' '.$langs->trans($this->statuts[$statut]);
|
||||||
|
if ($statut==3) return img_picto($langs->trans($this->statuts[$statut]),'statut5').' '.$langs->trans($this->statuts[$statut]);
|
||||||
|
}
|
||||||
|
if ($mode == 5)
|
||||||
|
{
|
||||||
|
if ($statut==0) return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$statut]).' </span>'.img_picto($langs->trans($this->statuts[$statut]),'statut0');
|
||||||
|
if ($statut==1) return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$statut]).' </span>'.img_picto($langs->trans($this->statuts[$statut]),'statut1');
|
||||||
|
if ($statut==2) return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$statut]).' </span>'.img_picto($langs->trans($this->statuts[$statut]),'statut3');
|
||||||
|
if ($statut==3) return '<span class="hideonsmartphone">'.$langs->trans($this->statutshort[$statut]).' </span>'.img_picto($langs->trans($this->statuts[$statut]),'statut5');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialise object with example values
|
||||||
|
* Id must be 0 if object instance is a specimen
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function initAsSpecimen()
|
||||||
|
{
|
||||||
|
$this->id=0;
|
||||||
|
|
||||||
|
$this->fk_commande='';
|
||||||
|
$this->fk_product='';
|
||||||
|
$this->fk_commandefourndet='';
|
||||||
|
$this->qty='';
|
||||||
|
$this->fk_entrepot='';
|
||||||
|
$this->fk_user='';
|
||||||
|
$this->datec='';
|
||||||
|
$this->comment='';
|
||||||
|
$this->status='';
|
||||||
|
$this->tms='';
|
||||||
|
$this->batch='';
|
||||||
|
$this->eatby='';
|
||||||
|
$this->sellby='';
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1716,6 +1716,8 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
|
|
||||||
$object=new FactureFournisseur($this->db);
|
$object=new FactureFournisseur($this->db);
|
||||||
|
|
||||||
|
$object->context['createfromclone'] = 'createfromclone';
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Load source object
|
// Load source object
|
||||||
@ -1762,6 +1764,8 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($object->context['createfromclone']);
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -262,7 +262,7 @@ class ProductFournisseur extends Product
|
|||||||
$sql.= " ".$availability.",";
|
$sql.= " ".$availability.",";
|
||||||
$sql.= " ".$newnpr.",";
|
$sql.= " ".$newnpr.",";
|
||||||
$sql.= $conf->entity.",";
|
$sql.= $conf->entity.",";
|
||||||
$sql.= $this->delivery_time_days;
|
$sql.= $delivery_time_days;
|
||||||
$sql.=")";
|
$sql.=")";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::update_buyprice", LOG_DEBUG);
|
dol_syslog(get_class($this)."::update_buyprice", LOG_DEBUG);
|
||||||
|
|||||||
@ -69,6 +69,8 @@ $hidedetails = (GETPOST('hidedetails','int') ? GETPOST('hidedetails','int') : (!
|
|||||||
$hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
|
$hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
|
||||||
$hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
$hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
|
||||||
|
|
||||||
|
$datelivraison=dol_mktime(GETPOST('liv_hour','int'), GETPOST('liv_min','int'), GETPOST('liv_sec','int'), GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int'));
|
||||||
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
@ -144,8 +146,6 @@ if ($action == 'setbankaccount' && $user->rights->fournisseur->commande->creer)
|
|||||||
// date de livraison
|
// date de livraison
|
||||||
if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer)
|
if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer)
|
||||||
{
|
{
|
||||||
$datelivraison=dol_mktime(GETPOST('liv_hour','int'), GETPOST('liv_min','int'), GETPOST('liv_sec','int'), GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int'));
|
|
||||||
|
|
||||||
$result=$object->set_date_livraison($user,$datelivraison);
|
$result=$object->set_date_livraison($user,$datelivraison);
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
@ -783,9 +783,8 @@ if ($action == 'update_extras')
|
|||||||
{
|
{
|
||||||
// Fill array 'array_options' with data from add form
|
// Fill array 'array_options' with data from add form
|
||||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||||
|
if ($ret < 0) $error++;
|
||||||
if($ret < 0) $error++;
|
|
||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
@ -800,7 +799,6 @@ if ($action == 'update_extras')
|
|||||||
{
|
{
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||||
{
|
{
|
||||||
|
|
||||||
$result=$object->insertExtraFields();
|
$result=$object->insertExtraFields();
|
||||||
|
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -844,6 +842,7 @@ if ($action == 'add' && $user->rights->fournisseur->commande->creer)
|
|||||||
$object->fk_account = GETPOST('fk_account', 'int');
|
$object->fk_account = GETPOST('fk_account', 'int');
|
||||||
$object->note_private = GETPOST('note_private');
|
$object->note_private = GETPOST('note_private');
|
||||||
$object->note_public = GETPOST('note_public');
|
$object->note_public = GETPOST('note_public');
|
||||||
|
$object->date_livraison = $datelivraison;
|
||||||
|
|
||||||
// Fill array 'array_options' with data from add form
|
// Fill array 'array_options' with data from add form
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||||
@ -1275,6 +1274,16 @@ if ($action=="create")
|
|||||||
$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
|
$form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// Planned delivery date
|
||||||
|
print '<tr><td>';
|
||||||
|
print $langs->trans('DateDeliveryPlanned');
|
||||||
|
print '</td>';
|
||||||
|
print '<td>';
|
||||||
|
$usehourmin=0;
|
||||||
|
if (! empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin=1;
|
||||||
|
$form->select_date($datelivraison?$datelivraison:-1,'liv_',$usehourmin,$usehourmin,'',"set");
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
// Bank Account
|
// Bank Account
|
||||||
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && ! empty($conf->banque->enabled))
|
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && ! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_order/modules_commandefou
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php';
|
||||||
if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
|
||||||
$langs->load('orders');
|
$langs->load('orders');
|
||||||
@ -106,6 +107,7 @@ if ($_POST["action"] == 'dispatch' && $user->rights->fournisseur->commande->rece
|
|||||||
$qty = "qty_".$reg[1]."_".$reg[2];
|
$qty = "qty_".$reg[1]."_".$reg[2];
|
||||||
$ent = "entrepot_".$reg[1]."_".$reg[2];
|
$ent = "entrepot_".$reg[1]."_".$reg[2];
|
||||||
$pu = "pu_".$reg[1]."_".$reg[2];
|
$pu = "pu_".$reg[1]."_".$reg[2];
|
||||||
|
$fk_commandefourndet = "fk_commandefourndet_".$reg[1]."_".$reg[2];
|
||||||
$lot = "lot_number_".$reg[1]."_".$reg[2];
|
$lot = "lot_number_".$reg[1]."_".$reg[2];
|
||||||
$dDLUO = dol_mktime(12, 0, 0, $_POST['dluo_'.$reg[1]."_".$reg[2].'month'], $_POST['dluo_'.$reg[1]."_".$reg[2].'day'], $_POST['dluo_'.$reg[1]."_".$reg[2].'year']);
|
$dDLUO = dol_mktime(12, 0, 0, $_POST['dluo_'.$reg[1]."_".$reg[2].'month'], $_POST['dluo_'.$reg[1]."_".$reg[2].'day'], $_POST['dluo_'.$reg[1]."_".$reg[2].'year']);
|
||||||
$dDLC = dol_mktime(12, 0, 0, $_POST['dlc_'.$reg[1]."_".$reg[2].'month'], $_POST['dlc_'.$reg[1]."_".$reg[2].'day'], $_POST['dlc_'.$reg[1]."_".$reg[2].'year']);
|
$dDLC = dol_mktime(12, 0, 0, $_POST['dlc_'.$reg[1]."_".$reg[2].'month'], $_POST['dlc_'.$reg[1]."_".$reg[2].'day'], $_POST['dlc_'.$reg[1]."_".$reg[2].'year']);
|
||||||
@ -129,7 +131,7 @@ if ($_POST["action"] == 'dispatch' && $user->rights->fournisseur->commande->rece
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$result = $commande->dispatchProduct($user, GETPOST($prod,'int'), GETPOST($qty), GETPOST($ent,'int'), GETPOST($pu), GETPOST("comment"), $dDLC, $dDLUO, GETPOST($lot));
|
$result = $commande->dispatchProduct($user, GETPOST($prod,'int'), GETPOST($qty), GETPOST($ent,'int'), GETPOST($pu), GETPOST("comment"), $dDLC, $dDLUO, GETPOST($lot, 'alpha'), GETPOST($fk_commandefourndet, 'int'));
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
setEventMessages($commande->error, $commande->errors, 'errors');
|
setEventMessages($commande->error, $commande->errors, 'errors');
|
||||||
@ -173,6 +175,11 @@ if ($_POST["action"] == 'dispatch' && $user->rights->fournisseur->commande->rece
|
|||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
$warehouse_static = new Entrepot($db);
|
||||||
|
$supplierorderdispatch = new CommandeFournisseurDispatch($db);
|
||||||
|
|
||||||
|
|
||||||
$help_url='EN:CommandeFournisseur';
|
$help_url='EN:CommandeFournisseur';
|
||||||
if (!empty($conf->productbatch->enabled))
|
if (!empty($conf->productbatch->enabled))
|
||||||
{
|
{
|
||||||
@ -183,9 +190,6 @@ else
|
|||||||
llxHeader('',$langs->trans("OrderCard"),$help_url);
|
llxHeader('',$langs->trans("OrderCard"),$help_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
$warehouse_static = new Entrepot($db);
|
|
||||||
|
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
|
|
||||||
$id = GETPOST('id','int');
|
$id = GETPOST('id','int');
|
||||||
@ -282,7 +286,7 @@ if ($id > 0 || ! empty($ref))
|
|||||||
print '<input type="hidden" name="action" value="dispatch">';
|
print '<input type="hidden" name="action" value="dispatch">';
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
|
|
||||||
// Set $products_dispatched with qty dispatech for each product id
|
// Set $products_dispatched with qty dispatched for each product id
|
||||||
$products_dispatched = array();
|
$products_dispatched = array();
|
||||||
$sql = "SELECT l.rowid, cfd.fk_product, sum(cfd.qty) as qty";
|
$sql = "SELECT l.rowid, cfd.fk_product, sum(cfd.qty) as qty";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as cfd";
|
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as cfd";
|
||||||
@ -421,6 +425,7 @@ if ($id > 0 || ! empty($ref))
|
|||||||
|
|
||||||
print '<tr '.$bc[$var].' name="dluo'.$suffix.'">';
|
print '<tr '.$bc[$var].' name="dluo'.$suffix.'">';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
print '<input name="fk_commandefourndet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||||
print '<input name="product'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
print '<input name="product'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
||||||
print '<input name="pu'.$suffix.'" type="hidden" value="'.$up_ht_disc.'"><!-- This is a up including discount -->';
|
print '<input name="pu'.$suffix.'" type="hidden" value="'.$up_ht_disc.'"><!-- This is a up including discount -->';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -441,8 +446,8 @@ if ($id > 0 || ! empty($ref))
|
|||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if (empty($conf->productbatch->enabled) || $objp->tobatch!=1)
|
if (empty($conf->productbatch->enabled) || $objp->tobatch!=1)
|
||||||
{
|
{
|
||||||
print '<input name="product'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
|
||||||
print '<input name="fk_commandefourndet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
print '<input name="fk_commandefourndet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||||
|
print '<input name="product'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
||||||
print '<input name="pu'.$suffix.'" type="hidden" value="'.$up_ht_disc.'"><!-- This is a up including discount -->';
|
print '<input name="pu'.$suffix.'" type="hidden" value="'.$up_ht_disc.'"><!-- This is a up including discount -->';
|
||||||
}
|
}
|
||||||
print '<input id="qty'.$suffix.'" name="qty'.$suffix.'" type="text" size="8" value="'.($remaintodispatch).'">';
|
print '<input id="qty'.$suffix.'" name="qty'.$suffix.'" type="text" size="8" value="'.($remaintodispatch).'">';
|
||||||
@ -578,8 +583,10 @@ if ($id > 0 || ! empty($ref))
|
|||||||
// Status
|
// Status
|
||||||
if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS))
|
if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS))
|
||||||
{
|
{
|
||||||
print '<td>';
|
print '<td align="right">';
|
||||||
print $objp->status;
|
$supplierorderdispatch->status = (empty($objp->status)?0:$objp->status);
|
||||||
|
//print $supplierorderdispatch->status;
|
||||||
|
print $supplierorderdispatch->getLibStatut(5);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@ $search_user=GETPOST('search_user');
|
|||||||
$search_ht=GETPOST('search_ht');
|
$search_ht=GETPOST('search_ht');
|
||||||
$search_ttc=GETPOST('search_ttc');
|
$search_ttc=GETPOST('search_ttc');
|
||||||
$sall=GETPOST('search_all');
|
$sall=GETPOST('search_all');
|
||||||
$search_status=GETPOST('search_status','int');
|
$search_status=(GETPOST('search_status','int')!=''?GETPOST('search_status','int'):GETPOST('statut','int'));
|
||||||
|
|
||||||
$page = GETPOST('page','int');
|
$page = GETPOST('page','int');
|
||||||
$socid = GETPOST('socid','int');
|
$socid = GETPOST('socid','int');
|
||||||
|
|||||||
@ -1073,7 +1073,7 @@ elseif ($action == 'update_extras')
|
|||||||
{
|
{
|
||||||
// Fill array 'array_options' with data from add form
|
// Fill array 'array_options' with data from add form
|
||||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
$ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute'));
|
||||||
|
|
||||||
if($ret < 0) $error++;
|
if($ret < 0) $error++;
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@ -13,8 +13,7 @@
|
|||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/import.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/import.lib.php';
|
||||||
|
|
||||||
$langs->load("exports");
|
$langs->load("exports");
|
||||||
|
$langs->load("compta");
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
|
|||||||
@ -486,11 +486,14 @@ IMG;
|
|||||||
|
|
||||||
$execmethod=(empty($conf->global->MAIN_EXEC_USE_POPEN)?1:2); // 1 or 2
|
$execmethod=(empty($conf->global->MAIN_EXEC_USE_POPEN)?1:2); // 1 or 2
|
||||||
|
|
||||||
$name=str_replace('.odt', '', $name);
|
$name=preg_replace('/\.odt/i', '', $name);
|
||||||
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT)) {
|
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT))
|
||||||
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.$name;
|
{
|
||||||
}else {
|
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.$name.' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
|
||||||
$command = '../../scripts/odt2pdf/odt2pdf.sh '.$name;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$command = '../../scripts/odt2pdf/odt2pdf.sh '.$name.' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -318,6 +318,7 @@ if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read)
|
|||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
||||||
$board=new ActionComm($db);
|
$board=new ActionComm($db);
|
||||||
|
|
||||||
$dashboardlines[] = $board->load_board($user);
|
$dashboardlines[] = $board->load_board($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12451
htdocs/install/filelist.xml
Normal file
12451
htdocs/install/filelist.xml
Normal file
File diff suppressed because it is too large
Load Diff
@ -1161,4 +1161,4 @@ ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_b
|
|||||||
UPDATE llx_bank_url set url = REPLACE( url, 'fiche.php', 'card.php');
|
UPDATE llx_bank_url set url = REPLACE( url, 'fiche.php', 'card.php');
|
||||||
|
|
||||||
-- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order
|
-- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order
|
||||||
ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INT(11) NOT NULL DEFAULT '0' AFTER fk_product;
|
ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INTEGER NOT NULL DEFAULT 0 AFTER fk_product;
|
||||||
|
|||||||
@ -19,6 +19,12 @@
|
|||||||
-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
|
-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE llx_commande_fournisseur MODIFY COLUMN date_livraison datetime;
|
||||||
|
|
||||||
|
-- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order
|
||||||
|
ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INTEGER NOT NULL DEFAULT 0 AFTER fk_product;
|
||||||
|
|
||||||
|
|
||||||
-- Remove menu entries of removed or renamed modules
|
-- Remove menu entries of removed or renamed modules
|
||||||
DELETE FROM llx_menu where module = 'printipp';
|
DELETE FROM llx_menu where module = 'printipp';
|
||||||
|
|
||||||
@ -148,7 +154,7 @@ CREATE TABLE llx_expensereport (
|
|||||||
fk_user_paid integer DEFAULT NULL,
|
fk_user_paid integer DEFAULT NULL,
|
||||||
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||||
fk_c_paiement integer DEFAULT NULL,
|
fk_c_paiement integer DEFAULT NULL,
|
||||||
note text,
|
note_public text,
|
||||||
note_private text,
|
note_private text,
|
||||||
detail_refuse varchar(255) DEFAULT NULL,
|
detail_refuse varchar(255) DEFAULT NULL,
|
||||||
detail_cancel varchar(255) DEFAULT NULL,
|
detail_cancel varchar(255) DEFAULT NULL,
|
||||||
@ -190,3 +196,16 @@ CREATE TABLE llx_expensereport_det
|
|||||||
|
|
||||||
ALTER TABLE llx_projet ADD COLUMN budget_amount double(24,8);
|
ALTER TABLE llx_projet ADD COLUMN budget_amount double(24,8);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
create table llx_commande_fournisseurdet_extrafields
|
||||||
|
(
|
||||||
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
tms timestamp,
|
||||||
|
fk_object integer NOT NULL,
|
||||||
|
import_key varchar(14)
|
||||||
|
) ENGINE=innodb;
|
||||||
|
|
||||||
|
ALTER TABLE llx_commande_fournisseurdet_extrafields ADD INDEX idx_commande_fournisseurdet_extrafields (fk_object);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ CREATE TABLE llx_expensereport (
|
|||||||
fk_user_paid integer DEFAULT NULL,
|
fk_user_paid integer DEFAULT NULL,
|
||||||
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||||
fk_c_paiement integer DEFAULT NULL,
|
fk_c_paiement integer DEFAULT NULL,
|
||||||
note text,
|
note_public text,
|
||||||
note_private text,
|
note_private text,
|
||||||
detail_refuse varchar(255) DEFAULT NULL,
|
detail_refuse varchar(255) DEFAULT NULL,
|
||||||
detail_cancel varchar(255) DEFAULT NULL,
|
detail_cancel varchar(255) DEFAULT NULL,
|
||||||
|
|||||||
@ -9,13 +9,13 @@ Menuaccount=Buchhaltung Konten
|
|||||||
Menuthirdpartyaccount=Partnerkonten
|
Menuthirdpartyaccount=Partnerkonten
|
||||||
MenuTools=Werkzeuge
|
MenuTools=Werkzeuge
|
||||||
|
|
||||||
ConfigAccountingExpert=Configuration of the module accounting expert
|
ConfigAccountingExpert=Konfiguration des Experten Buchhaltungsmodul
|
||||||
Journaux=Journale
|
Journaux=Journale
|
||||||
JournalFinancial=Finanz-Journale
|
JournalFinancial=Finanz-Journale
|
||||||
Exports=Exports
|
Exports=Exports
|
||||||
Export=Export
|
Export=Exportieren
|
||||||
Modelcsv=Exportmodell
|
Modelcsv=Exportmodell
|
||||||
OptionsDeactivatedForThisExportModel=For this export model, options are deactivated
|
OptionsDeactivatedForThisExportModel=Für dieses Exportierungsmodell, sind die Einstellungen deaktiviert
|
||||||
Selectmodelcsv=Wählen Sie ein Exportmodell
|
Selectmodelcsv=Wählen Sie ein Exportmodell
|
||||||
Modelcsv_normal=Klassischer Export
|
Modelcsv_normal=Klassischer Export
|
||||||
Modelcsv_CEGID=Export zu CEGID Expert
|
Modelcsv_CEGID=Export zu CEGID Expert
|
||||||
@ -27,12 +27,12 @@ Selectchartofaccounts=Kontenplan wählen
|
|||||||
Validate=Freigeben
|
Validate=Freigeben
|
||||||
Addanaccount=Fügen Sie ein Buchhaltungskonto hinzu
|
Addanaccount=Fügen Sie ein Buchhaltungskonto hinzu
|
||||||
AccountAccounting=Buchhaltungs Konto
|
AccountAccounting=Buchhaltungs Konto
|
||||||
Ventilation=Breakdown
|
Ventilation=Abbauen
|
||||||
ToDispatch=Zu versenden
|
ToDispatch=Zu versenden
|
||||||
Dispatched=Versandt
|
Dispatched=Versandt
|
||||||
|
|
||||||
CustomersVentilation=Breakdown customers
|
CustomersVentilation=Kundenabbau
|
||||||
SuppliersVentilation=Breakdown suppliers
|
SuppliersVentilation=Lieferantenabbau
|
||||||
TradeMargin=Handelsspanne
|
TradeMargin=Handelsspanne
|
||||||
Reports=Berichte
|
Reports=Berichte
|
||||||
ByCustomerInvoice=Nach Kundenrechnungen
|
ByCustomerInvoice=Nach Kundenrechnungen
|
||||||
@ -41,81 +41,81 @@ NewAccount=Neues Buchhaltungskonto
|
|||||||
Update=Aktualisieren
|
Update=Aktualisieren
|
||||||
List=Liste
|
List=Liste
|
||||||
Create=Erstelle
|
Create=Erstelle
|
||||||
UpdateAccount=Modification of an accounting account
|
UpdateAccount=Änderung eines Bilanz-Kontos
|
||||||
UpdateMvts=Modification of a movement
|
UpdateMvts=Änderung einer Bewegung
|
||||||
WriteBookKeeping=Record accounts in general ledger
|
WriteBookKeeping=Konten ins Hauptbuch übernehmen
|
||||||
Bookkeeping=Hauptbuch
|
Bookkeeping=Hauptbuch
|
||||||
AccountBalanceByMonth=Kontostand pro Monat
|
AccountBalanceByMonth=Kontostand pro Monat
|
||||||
|
|
||||||
AccountingVentilation=Breakdown accounting
|
AccountingVentilation=Rechnungswesenabbau
|
||||||
AccountingVentilationSupplier=Breakdown accounting supplier
|
AccountingVentilationSupplier=Abbau von Buchhaltungs-Lieferanten
|
||||||
AccountingVentilationCustomer=Breakdown accounting customer
|
AccountingVentilationCustomer=Abbau von Buchhaltungs-Kunden
|
||||||
Line=Zeile
|
Line=Zeile
|
||||||
|
|
||||||
CAHTF=Total purchase supplier HT
|
CAHTF=Total purchase supplier HT
|
||||||
InvoiceLines=Lines of invoice to be ventilated
|
InvoiceLines=Rechnungszeile bereinigen
|
||||||
InvoiceLinesDone=Ventilated lines of invoice
|
InvoiceLinesDone=Bereinigte Rechnungszeilen
|
||||||
IntoAccount=In the accounting account
|
IntoAccount=Im Buchhaltungs-Konto
|
||||||
|
|
||||||
Ventilate=erörtern
|
Ventilate=erörtern
|
||||||
VentilationAuto=Automatic breakdown
|
VentilationAuto=Automatischer Abbau
|
||||||
|
|
||||||
Processing=Bearbeitung
|
Processing=Bearbeitung
|
||||||
EndProcessing=Das Ende der Verarbeitung
|
EndProcessing=Das Ende der Verarbeitung
|
||||||
AnyLineVentilate=Any lines to ventilate
|
AnyLineVentilate=Beliebige Zeile zu bereinigen
|
||||||
SelectedLines=Gewählte Zeilen
|
SelectedLines=Gewählte Zeilen
|
||||||
Lineofinvoice=Rechnungszeile
|
Lineofinvoice=Rechnungszeile
|
||||||
VentilatedinAccount=Ventilated successfully in the accounting account
|
VentilatedinAccount=Erfolgreich im Rechnungskonto bereinigt
|
||||||
NotVentilatedinAccount=Not ventilated in the accounting account
|
NotVentilatedinAccount=Nicht im Rechnungskonto bereinigt
|
||||||
|
|
||||||
ACCOUNTING_SEPARATORCSV=Column separator in export file
|
ACCOUNTING_SEPARATORCSV=Spaltentrennzeichen in Exportdatei
|
||||||
|
|
||||||
ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50)
|
ACCOUNTING_LIMIT_LIST_VENTILATION=Anzahl der Elemente, die Aufgliederung nach Seite angezeigt werden (empfohlenes Maximum: 50)
|
||||||
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements
|
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Beginnen Sie die Sortierung der Abbau Seiten "Muss sortiert werden" durch die aktuellen Elemente
|
||||||
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements
|
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Beginnen Sie die Sortierung der Abbau Seiten "Abbau" durch die aktuellen Elemente
|
||||||
|
|
||||||
AccountLength=Length of the accounting accounts shown in Dolibarr
|
AccountLength=Länge der in Dolibarr gezeigten Rechnungskonten
|
||||||
AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software.
|
AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software.
|
||||||
ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts
|
ACCOUNTING_LENGTH_GACCOUNT=Länge der Finanzbuchführung
|
||||||
ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts
|
ACCOUNTING_LENGTH_AACCOUNT=Länge der Partner
|
||||||
|
|
||||||
ACCOUNTING_SELL_JOURNAL=Verkaufsjournal
|
ACCOUNTING_SELL_JOURNAL=Verkaufsjournal
|
||||||
ACCOUNTING_PURCHASE_JOURNAL=Einkaufsjournal
|
ACCOUNTING_PURCHASE_JOURNAL=Einkaufsjournal
|
||||||
ACCOUNTING_BANK_JOURNAL=Bankauszug
|
ACCOUNTING_BANK_JOURNAL=Bankauszug
|
||||||
ACCOUNTING_CASH_JOURNAL=Kassenbeleg
|
ACCOUNTING_CASH_JOURNAL=Kassenbeleg
|
||||||
ACCOUNTING_MISCELLANEOUS_JOURNAL=Verschiedenes Journal
|
ACCOUNTING_MISCELLANEOUS_JOURNAL=Verschiedenes Journal
|
||||||
ACCOUNTING_SOCIAL_JOURNAL=Social journal
|
ACCOUNTING_SOCIAL_JOURNAL=Sozial-Journal
|
||||||
|
|
||||||
ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer
|
ACCOUNTING_ACCOUNT_TRANSFER_CASH=Konto der Transaktion
|
||||||
ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait
|
ACCOUNTING_ACCOUNT_SUSPENSE=Konto der Warte
|
||||||
|
|
||||||
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Buchhaltungskonto standardmäßig für die gekauften Produkte (wenn nicht im Produktblatt definiert)
|
||||||
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Buchhaltungskonto standardmäßig für die verkauften Produkte (wenn nicht im Produktblatt definiert)
|
||||||
ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet)
|
ACCOUNTING_SERVICE_BUY_ACCOUNT=Buchhaltungskonto standardmäßig für die gekauften Dienstleistungen (wenn nicht im Produktblatt definiert)
|
||||||
ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet)
|
ACCOUNTING_SERVICE_SOLD_ACCOUNT=Buchhaltungskonto standardmäßig für die verkauften Dienstleistungen (wenn nicht im Produktblatt definiert)
|
||||||
|
|
||||||
Doctype=Dokumententyp
|
Doctype=Dokumententyp
|
||||||
Docdate=Datum
|
Docdate=Datum
|
||||||
Docref=Referenz
|
Docref=Referenz
|
||||||
Numerocompte=Konto
|
Numerocompte=Konto
|
||||||
Code_tiers=Thirdparty
|
Code_tiers=Partner
|
||||||
Labelcompte=Label account
|
Labelcompte=Label-Account
|
||||||
Debit=Soll
|
Debit=Soll
|
||||||
Credit=Haben
|
Credit=Haben
|
||||||
Amount=Betrag
|
Amount=Betrag
|
||||||
Sens=Sens
|
Sens=Sens
|
||||||
Codejournal=Journal
|
Codejournal=Journal
|
||||||
|
|
||||||
DelBookKeeping=Delete the records of the general ledger
|
DelBookKeeping=Löschen Sie die Einträge des Hauptbuchs
|
||||||
|
|
||||||
SellsJournal=Verkaufsjournal
|
SellsJournal=Verkaufsjournal
|
||||||
PurchasesJournal=Einkaufsjournal
|
PurchasesJournal=Einkaufsjournal
|
||||||
DescSellsJournal=Verkaufsjournal
|
DescSellsJournal=Verkaufsjournal
|
||||||
DescPurchasesJournal=Einkaufsjournal
|
DescPurchasesJournal=Einkaufsjournal
|
||||||
BankJournal=Bankauszug
|
BankJournal=Bankauszug
|
||||||
DescBankJournal=Bank journal including all the types of payments other than cash
|
DescBankJournal=Bankjournal enthält alle Arten von anderen Zahlungsmitteln als Barzahlungen
|
||||||
CashJournal=Kassenbeleg
|
CashJournal=Kassenbeleg
|
||||||
DescCashJournal=Cash journal including the type of payment cash
|
DescCashJournal=Barjournal enthält die Zahlungsart: bar
|
||||||
|
|
||||||
CashPayment=Barzahlung
|
CashPayment=Barzahlung
|
||||||
|
|
||||||
@ -125,36 +125,36 @@ CustomerInvoicePayment=Rechnungszahlung (Kunde)
|
|||||||
ThirdPartyAccount=Partner Konto
|
ThirdPartyAccount=Partner Konto
|
||||||
|
|
||||||
NewAccountingMvt=Neue Änderung
|
NewAccountingMvt=Neue Änderung
|
||||||
NumMvts=Number of movement
|
NumMvts=Anzahl der Änderungen
|
||||||
ListeMvts=List of the movement
|
ListeMvts=Liste der Bewegungen
|
||||||
ErrorDebitCredit=Soll und Haben können nicht gleichzeitig eingegeben werden
|
ErrorDebitCredit=Soll und Haben können nicht gleichzeitig eingegeben werden
|
||||||
|
|
||||||
ReportThirdParty=List thirdparty account
|
ReportThirdParty=Liste der Partner Konten
|
||||||
DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts
|
DescThirdPartyReport=Konsultieren Sie hier die Liste der Drittkunden und die Anbieter und ihre Buchhaltungskonten
|
||||||
|
|
||||||
ListAccounts=List of the accounting accounts
|
ListAccounts=Liste der Abrechnungskonten
|
||||||
|
|
||||||
Pcgversion=Version des Plans
|
Pcgversion=Version des Plans
|
||||||
Pcgtype=Kontenklasse
|
Pcgtype=Kontenklasse
|
||||||
Pcgsubtype=Unterkontenklasse
|
Pcgsubtype=Unterkontenklasse
|
||||||
Accountparent=Root of the account
|
Accountparent=Wurzeln des Kontos
|
||||||
Active=Auszug
|
Active=Auszug
|
||||||
|
|
||||||
NewFiscalYear=Neues fiskalisches Jahr
|
NewFiscalYear=Neues fiskalisches Jahr
|
||||||
|
|
||||||
DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers
|
DescVentilCustomer=Konsultieren Sie hier die jährliche Aufteilung der Buchhaltung Ihrer Rechnungs-Kunden
|
||||||
TotalVente=Total turnover HT
|
TotalVente=Totaler Umsatz
|
||||||
TotalMarge=Gesamt-Spanne
|
TotalMarge=Gesamt-Spanne
|
||||||
DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account
|
DescVentilDoneCustomer=Konsultieren Sie hier die Liste der Zeilen der Rechnungs-Kunden und deren Abbrechnungskonto
|
||||||
DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account
|
DescVentilTodoCustomer=Bereinigen Sie die Zeilen der Kundenrechnung mit einem Rechnungskonto
|
||||||
ChangeAccount=Change the accounting account for lines selected by the account:
|
ChangeAccount=Ändern sie das Abrechnungskonto für markierte Zeilen durch das Konto:
|
||||||
Vide=-
|
Vide=-
|
||||||
DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers
|
DescVentilSupplier=Konsultieren Sie hier die jährliche Aufteilung der Buchhaltung, Ihrer Rechnungen der Lieferanten
|
||||||
DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account
|
DescVentilTodoSupplier=Bereinigen Sie die Zeilen der Rechnung für Lieferanten, mit einem Abrechnungskonto
|
||||||
DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account
|
DescVentilDoneSupplier=Konsultieren Sie hier die Liste der Zeilen der Rechnungs-Kunden und deren Abbrechnungskonto
|
||||||
|
|
||||||
ValidateHistory=Automatisch geltend machen
|
ValidateHistory=Automatisch geltend machen
|
||||||
|
|
||||||
ErrorAccountancyCodeIsAlreadyUse=Fehler, Sie können dieses Buchaltungskonto nicht löschen, da es benutzt wird.
|
ErrorAccountancyCodeIsAlreadyUse=Fehler, Sie können dieses Buchaltungskonto nicht löschen, da es benutzt wird.
|
||||||
|
|
||||||
FicheVentilation=Breakdown card
|
FicheVentilation=Abbau-Karte
|
||||||
|
|||||||
@ -60,7 +60,7 @@ SupplierOrderSentByEMail=Lieferantenbestellung %s per E-Mail versendet
|
|||||||
SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet
|
SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet
|
||||||
ShippingSentByEMail=Lieferung %s per Email versendet
|
ShippingSentByEMail=Lieferung %s per Email versendet
|
||||||
ShippingValidated= Sendung %s freigegeben
|
ShippingValidated= Sendung %s freigegeben
|
||||||
InterventionSentByEMail=Intervention %s sent by EMail
|
InterventionSentByEMail=Intervention %s gesendet via E-Mail
|
||||||
NewCompanyToDolibarr= Partner erstellt
|
NewCompanyToDolibarr= Partner erstellt
|
||||||
DateActionPlannedStart= Geplantes Startdatum
|
DateActionPlannedStart= Geplantes Startdatum
|
||||||
DateActionPlannedEnd= Geplantes Enddatum
|
DateActionPlannedEnd= Geplantes Enddatum
|
||||||
@ -69,7 +69,7 @@ DateActionDoneEnd= Effektives Ende
|
|||||||
DateActionStart= Startdatum
|
DateActionStart= Startdatum
|
||||||
DateActionEnd= Enddatum
|
DateActionEnd= Enddatum
|
||||||
AgendaUrlOptions1=Sie können die Ausgabe über folgende Parameter filtern:
|
AgendaUrlOptions1=Sie können die Ausgabe über folgende Parameter filtern:
|
||||||
AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>.
|
AgendaUrlOptions2=<b>Login =%s</b> für die Ausgabe an Aktionen erstellt, die von oder an den Benutzer <b>%s</b> zugeordnet beschränken.
|
||||||
AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> erstellte Maßnahmen.
|
AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> erstellte Maßnahmen.
|
||||||
AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> betroffene Maßnahmen.
|
AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> betroffene Maßnahmen.
|
||||||
AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die die Ausgabe auf Maßnahmen im Zusammenhang mit Projekt <b>PROJECT_ID</b>.
|
AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die die Ausgabe auf Maßnahmen im Zusammenhang mit Projekt <b>PROJECT_ID</b>.
|
||||||
|
|||||||
@ -348,7 +348,7 @@ ChequeNumber=Schecknummer
|
|||||||
ChequeOrTransferNumber=Scheck-/Überweisungsnummer
|
ChequeOrTransferNumber=Scheck-/Überweisungsnummer
|
||||||
ChequeMaker=Scheckaussteller
|
ChequeMaker=Scheckaussteller
|
||||||
ChequeBank=Scheckbank
|
ChequeBank=Scheckbank
|
||||||
CheckBank=Check
|
CheckBank=Prüfen
|
||||||
NetToBePaid=Netto Zahlbetrag
|
NetToBePaid=Netto Zahlbetrag
|
||||||
PhoneNumber=Tel
|
PhoneNumber=Tel
|
||||||
FullPhoneNumber=Telefon
|
FullPhoneNumber=Telefon
|
||||||
@ -389,7 +389,7 @@ DisabledBecausePayments=Nicht möglich, da es Zahlungen gibt
|
|||||||
CantRemovePaymentWithOneInvoicePaid=Die Zahlung kann nicht entfernt werden, da es mindestens eine Rechnung gibt, die als bezahlt markiert ist
|
CantRemovePaymentWithOneInvoicePaid=Die Zahlung kann nicht entfernt werden, da es mindestens eine Rechnung gibt, die als bezahlt markiert ist
|
||||||
ExpectedToPay=Erwartete Zahlung
|
ExpectedToPay=Erwartete Zahlung
|
||||||
PayedByThisPayment=mit dieser Zahlung beglichen
|
PayedByThisPayment=mit dieser Zahlung beglichen
|
||||||
ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
|
ClosePaidInvoicesAutomatically=Markiert alle Standard- oder Ersatzrechnungen als "bezahlt", wenn diese vollständig beglichen sind.
|
||||||
ClosePaidCreditNotesAutomatically=Markiert alle Gutschriften als "bezahlt", wenn diese vollständig beglichen sind.
|
ClosePaidCreditNotesAutomatically=Markiert alle Gutschriften als "bezahlt", wenn diese vollständig beglichen sind.
|
||||||
AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen ohne ausstehende Zahlungen werden automatisch geschlossen und als "bezahlt" markiert.
|
AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen ohne ausstehende Zahlungen werden automatisch geschlossen und als "bezahlt" markiert.
|
||||||
ToMakePayment=Bezahlen
|
ToMakePayment=Bezahlen
|
||||||
@ -400,7 +400,7 @@ RevenueStamp=Steuermarke
|
|||||||
YouMustCreateInvoiceFromThird=Diese Option steht nur zur Verfügung, wenn eine Rechnung vom Reiter "Kunde" eines Partners aus erstellt wird
|
YouMustCreateInvoiceFromThird=Diese Option steht nur zur Verfügung, wenn eine Rechnung vom Reiter "Kunde" eines Partners aus erstellt wird
|
||||||
PDFCrabeDescription=Rechnungs-Modell Crabe. Eine vollständige Rechnung (Empfohlene Vorlage)
|
PDFCrabeDescription=Rechnungs-Modell Crabe. Eine vollständige Rechnung (Empfohlene Vorlage)
|
||||||
TerreNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen und %syymm-nnnn für Gutschriften, wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist
|
TerreNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen und %syymm-nnnn für Gutschriften, wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist
|
||||||
MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
|
MarsNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen, %syymm-nnnn für den Austausch von Rechnungen, %syymm-nnnn für Gutschriften und %syymm-nnnn für Gutschrifen wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist
|
||||||
TerreNumRefModelError=Eine Rechnung, beginnend mit $ syymm existiert bereits und ist nicht kompatibel mit diesem Modell der Reihe. Entfernen oder umbenennen, um dieses Modul.
|
TerreNumRefModelError=Eine Rechnung, beginnend mit $ syymm existiert bereits und ist nicht kompatibel mit diesem Modell der Reihe. Entfernen oder umbenennen, um dieses Modul.
|
||||||
##### Types de contacts #####
|
##### Types de contacts #####
|
||||||
TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Kundenrechnung
|
TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Kundenrechnung
|
||||||
@ -420,11 +420,11 @@ InvoiceSituationDesc=Create a new situation following an already existing one
|
|||||||
SituationAmount=Situation invoice amount(net)
|
SituationAmount=Situation invoice amount(net)
|
||||||
SituationDeduction=Situation subtraction
|
SituationDeduction=Situation subtraction
|
||||||
Progress=Progress
|
Progress=Progress
|
||||||
ModifyAllLines=Modify all lines
|
ModifyAllLines=Bearbeite alle Zeilen
|
||||||
CreateNextSituationInvoice=Create next situation
|
CreateNextSituationInvoice=Create next situation
|
||||||
NotLastInCycle=This invoice in not the last in cycle and must not be modified.
|
NotLastInCycle=This invoice in not the last in cycle and must not be modified.
|
||||||
DisabledBecauseNotLastInCycle=The next situation already exists.
|
DisabledBecauseNotLastInCycle=The next situation already exists.
|
||||||
DisabledBecauseFinal=This situation is final.
|
DisabledBecauseFinal=This situation is final.
|
||||||
CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation.
|
CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation.
|
||||||
NoSituations=No opened situations
|
NoSituations=No opened situations
|
||||||
InvoiceSituationLast=Final and general invoice
|
InvoiceSituationLast=Allgemeine Endrechnung
|
||||||
|
|||||||
@ -3,7 +3,7 @@ RefProject=Projekt-Nr.
|
|||||||
ProjectId=Projekt-ID
|
ProjectId=Projekt-ID
|
||||||
Project=Projekt
|
Project=Projekt
|
||||||
Projects=Projekte
|
Projects=Projekte
|
||||||
ProjectStatus=Project status
|
ProjectStatus=Projekt Status
|
||||||
SharedProject=Jeder
|
SharedProject=Jeder
|
||||||
PrivateProject=Kontakte zum Projekt
|
PrivateProject=Kontakte zum Projekt
|
||||||
MyProjectsDesc=Hier können Sie nur die Projekte einsehen, bei welchen Sie als Kontakt hinzugefügt sind.
|
MyProjectsDesc=Hier können Sie nur die Projekte einsehen, bei welchen Sie als Kontakt hinzugefügt sind.
|
||||||
@ -103,7 +103,7 @@ CloneContacts=Dupliziere Kontakte
|
|||||||
CloneNotes=Dupliziere Hinweise
|
CloneNotes=Dupliziere Hinweise
|
||||||
CloneProjectFiles=Dupliziere verbundene Projektdateien
|
CloneProjectFiles=Dupliziere verbundene Projektdateien
|
||||||
CloneTaskFiles=Clone task(s) joined files (if task(s) cloned)
|
CloneTaskFiles=Clone task(s) joined files (if task(s) cloned)
|
||||||
CloneMoveDate=Update project/tasks dates from now ?
|
CloneMoveDate=Projekt / Aufgaben Daten vom aktuellen Zeitpunkt updaten?
|
||||||
ConfirmCloneProject=Möchten Sie dieses Projekt wirklich duplizieren?
|
ConfirmCloneProject=Möchten Sie dieses Projekt wirklich duplizieren?
|
||||||
ProjectReportDate=Passe Aufgaben-Datum dem Projekt-Startdatum an
|
ProjectReportDate=Passe Aufgaben-Datum dem Projekt-Startdatum an
|
||||||
ErrorShiftTaskDate=Es ist nicht möglich, das Aufgabendatum dem neuen Projektdatum anzupassen
|
ErrorShiftTaskDate=Es ist nicht möglich, das Aufgabendatum dem neuen Projektdatum anzupassen
|
||||||
|
|||||||
@ -4,8 +4,8 @@ Sending=Sendung
|
|||||||
Sendings=Sendungen
|
Sendings=Sendungen
|
||||||
Shipment=Sendung
|
Shipment=Sendung
|
||||||
Shipments=Lieferungen
|
Shipments=Lieferungen
|
||||||
ShowSending=Show Sending
|
ShowSending=Zeige Sendung
|
||||||
Receivings=Receipts
|
Receivings=Beleg
|
||||||
SendingsArea=Versandübersicht
|
SendingsArea=Versandübersicht
|
||||||
ListOfSendings=Versandliste
|
ListOfSendings=Versandliste
|
||||||
SendingMethod=Versandart
|
SendingMethod=Versandart
|
||||||
@ -15,7 +15,7 @@ SearchASending=Suche Sendung
|
|||||||
StatisticsOfSendings=Versandstatistik
|
StatisticsOfSendings=Versandstatistik
|
||||||
NbOfSendings=Anzahl der Sendungen
|
NbOfSendings=Anzahl der Sendungen
|
||||||
NumberOfShipmentsByMonth=Anzahl der Sendungen nach Monaten
|
NumberOfShipmentsByMonth=Anzahl der Sendungen nach Monaten
|
||||||
SendingCard=Shipment card
|
SendingCard=Sendungs-Karte
|
||||||
NewSending=Neue Sendung
|
NewSending=Neue Sendung
|
||||||
CreateASending=Erzeuge eine Sendung
|
CreateASending=Erzeuge eine Sendung
|
||||||
CreateSending=Sendung erzeugen
|
CreateSending=Sendung erzeugen
|
||||||
@ -38,7 +38,7 @@ StatusSendingCanceledShort=Storno
|
|||||||
StatusSendingDraftShort=Entwurf
|
StatusSendingDraftShort=Entwurf
|
||||||
StatusSendingValidatedShort=Freigegeben
|
StatusSendingValidatedShort=Freigegeben
|
||||||
StatusSendingProcessedShort=Fertig
|
StatusSendingProcessedShort=Fertig
|
||||||
SendingSheet=Shipment sheet
|
SendingSheet=Sendungs Blatt
|
||||||
Carriers=Spediteure
|
Carriers=Spediteure
|
||||||
Carrier=Spediteur
|
Carrier=Spediteur
|
||||||
CarriersArea=Spediteursübersicht
|
CarriersArea=Spediteursübersicht
|
||||||
@ -55,19 +55,19 @@ StatsOnShipmentsOnlyValidated=Versandstatistik (nur Freigegebene). Das Datum ist
|
|||||||
DateDeliveryPlanned=Geplantes Zustellungsdatum
|
DateDeliveryPlanned=Geplantes Zustellungsdatum
|
||||||
DateReceived=Datum der Zustellung
|
DateReceived=Datum der Zustellung
|
||||||
SendShippingByEMail=Verand per E-Mail
|
SendShippingByEMail=Verand per E-Mail
|
||||||
SendShippingRef=Submission of shipment %s
|
SendShippingRef=Abgabe der Sendung %s
|
||||||
ActionsOnShipping=Anmerkungen zur Sendung
|
ActionsOnShipping=Anmerkungen zur Sendung
|
||||||
LinkToTrackYourPackage=Link zur Sendungsnachverfolgung
|
LinkToTrackYourPackage=Link zur Sendungsnachverfolgung
|
||||||
ShipmentCreationIsDoneFromOrder=Aktuell ist die Erstellung der neuen Sendung über die Bestellkarte erfolgt.
|
ShipmentCreationIsDoneFromOrder=Aktuell ist die Erstellung der neuen Sendung über die Bestellkarte erfolgt.
|
||||||
RelatedShippings=Related shipments
|
RelatedShippings=Ähnliche Sendungen
|
||||||
ShipmentLine=Sendungszeilen
|
ShipmentLine=Sendungszeilen
|
||||||
CarrierList=Liste der Transporter
|
CarrierList=Liste der Transporter
|
||||||
SendingRunning=Product from ordered customer orders
|
SendingRunning=Die Produktion von dem bestellten Kundenaufträge
|
||||||
SuppliersReceiptRunning=Product from ordered supplier orders
|
SuppliersReceiptRunning=Produkt aus Lieferantenbestellung
|
||||||
ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders
|
ProductQtyInCustomersOrdersRunning=Produktmenge in geöffneter Kunden Bestellungen
|
||||||
ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
|
ProductQtyInSuppliersOrdersRunning=Produktmenge in geöffneter Lieferantenbestellungen
|
||||||
ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent
|
ProductQtyInShipmentAlreadySent=Produktmenge aus geöffneter Kundenbestellung bereits versandt
|
||||||
ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
|
ProductQtyInSuppliersShipmentAlreadyRecevied=Produktmenge aus Lieferantenbestellung bereits erhalten
|
||||||
|
|
||||||
# Sending methods
|
# Sending methods
|
||||||
SendingMethodCATCH=Abholung durch Kunden
|
SendingMethodCATCH=Abholung durch Kunden
|
||||||
|
|||||||
@ -8,6 +8,11 @@ VersionExperimental=Experimental
|
|||||||
VersionDevelopment=Development
|
VersionDevelopment=Development
|
||||||
VersionUnknown=Unknown
|
VersionUnknown=Unknown
|
||||||
VersionRecommanded=Recommended
|
VersionRecommanded=Recommended
|
||||||
|
FileCheck=Files Integrity
|
||||||
|
FilesMissing=Missing Files
|
||||||
|
FilesUpdated=Updated Files
|
||||||
|
FileCheckDolibarr=Check Dolibarr Files Integrity
|
||||||
|
XmlNotFound=Xml File of Dolibarr Integrity Not Found
|
||||||
SessionId=Session ID
|
SessionId=Session ID
|
||||||
SessionSaveHandler=Handler to save sessions
|
SessionSaveHandler=Handler to save sessions
|
||||||
SessionSavePath=Storage session localization
|
SessionSavePath=Storage session localization
|
||||||
@ -1036,6 +1041,8 @@ MAIN_PROXY_PASS=Password to use the proxy server
|
|||||||
DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s.
|
DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s.
|
||||||
ExtraFields=Complementary attributes
|
ExtraFields=Complementary attributes
|
||||||
ExtraFieldsLines=Complementary attributes (lines)
|
ExtraFieldsLines=Complementary attributes (lines)
|
||||||
|
ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines)
|
||||||
|
ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines)
|
||||||
ExtraFieldsThirdParties=Complementary attributes (thirdparty)
|
ExtraFieldsThirdParties=Complementary attributes (thirdparty)
|
||||||
ExtraFieldsContacts=Complementary attributes (contact/address)
|
ExtraFieldsContacts=Complementary attributes (contact/address)
|
||||||
ExtraFieldsMember=Complementary attributes (member)
|
ExtraFieldsMember=Complementary attributes (member)
|
||||||
@ -1581,3 +1588,5 @@ SortOrder=Sort order
|
|||||||
Format=Format
|
Format=Format
|
||||||
TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type
|
TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type
|
||||||
IncludePath=Include path (defined into variable %s)
|
IncludePath=Include path (defined into variable %s)
|
||||||
|
ExpenseReportsSetup=Setup of module Expense Reports
|
||||||
|
TemplatePDFExpenseReports=Document templates to generate expense report document
|
||||||
|
|||||||
@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur
|
|||||||
ErrorPasswordsMustMatch=Both typed passwords must match each other
|
ErrorPasswordsMustMatch=Both typed passwords must match each other
|
||||||
ErrorContactEMail=A technical error occured. Please, contact administrator to following email <b>%s</b> en provide the error code <b>%s</b> in your message, or even better by adding a screen copy of this page.
|
ErrorContactEMail=A technical error occured. Please, contact administrator to following email <b>%s</b> en provide the error code <b>%s</b> in your message, or even better by adding a screen copy of this page.
|
||||||
ErrorWrongValueForField=Wrong value for field number <b>%s</b> (value '<b>%s</b>' does not match regex rule <b>%s</b>)
|
ErrorWrongValueForField=Wrong value for field number <b>%s</b> (value '<b>%s</b>' does not match regex rule <b>%s</b>)
|
||||||
ErrorFieldValueNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a value available into field <b>%s</b> of table <b>%s</b>)
|
ErrorFieldValueNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a value available into field <b>%s</b> of table <b>%s</b> = <b>%s</b>)
|
||||||
ErrorFieldRefNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a <b>%s</b> existing ref)
|
ErrorFieldRefNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a <b>%s</b> existing ref)
|
||||||
ErrorsOnXLines=Errors on <b>%s</b> source record(s)
|
ErrorsOnXLines=Errors on <b>%s</b> source record(s)
|
||||||
ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus)
|
ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus)
|
||||||
|
|||||||
@ -141,6 +141,7 @@ Cancel=Cancel
|
|||||||
Modify=Modify
|
Modify=Modify
|
||||||
Edit=Edit
|
Edit=Edit
|
||||||
Validate=Validate
|
Validate=Validate
|
||||||
|
ValidateAndApprove=Validate and Approve
|
||||||
ToValidate=To validate
|
ToValidate=To validate
|
||||||
Save=Save
|
Save=Save
|
||||||
SaveAs=Save As
|
SaveAs=Save As
|
||||||
|
|||||||
@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are
|
|||||||
PriceExpressionEditorHelp4=In product/service price only: <b>#supplier_min_price#</b><br>In supplier prices only: <b>#supplier_quantity# and #supplier_tva_tx#</b>
|
PriceExpressionEditorHelp4=In product/service price only: <b>#supplier_min_price#</b><br>In supplier prices only: <b>#supplier_quantity# and #supplier_tva_tx#</b>
|
||||||
PriceMode=Price mode
|
PriceMode=Price mode
|
||||||
PriceNumeric=Number
|
PriceNumeric=Number
|
||||||
|
DefaultPrice=Default price
|
||||||
|
ComposedProductIncDecStock=Increase/Decrease stock on parent change
|
||||||
|
ComposedProduct=Sub-product
|
||||||
|
MinSupplierPrice=Minimun supplier price
|
||||||
|
|||||||
@ -8,8 +8,10 @@ SharedProject=Everybody
|
|||||||
PrivateProject=Contacts of project
|
PrivateProject=Contacts of project
|
||||||
MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type).
|
MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type).
|
||||||
ProjectsPublicDesc=This view presents all projects you are allowed to read.
|
ProjectsPublicDesc=This view presents all projects you are allowed to read.
|
||||||
|
ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read.
|
||||||
ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything).
|
ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything).
|
||||||
MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type).
|
MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type).
|
||||||
|
OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible).
|
||||||
TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
|
TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
|
||||||
TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
|
TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
|
||||||
ProjectsArea=Projects area
|
ProjectsArea=Projects area
|
||||||
|
|||||||
@ -47,6 +47,7 @@ PMPValue=Weighted average price
|
|||||||
PMPValueShort=WAP
|
PMPValueShort=WAP
|
||||||
EnhancedValueOfWarehouses=Warehouses value
|
EnhancedValueOfWarehouses=Warehouses value
|
||||||
UserWarehouseAutoCreate=Create a warehouse automatically when creating a user
|
UserWarehouseAutoCreate=Create a warehouse automatically when creating a user
|
||||||
|
IndependantSubProductStock=Product stock and subproduct stock are independant
|
||||||
QtyDispatched=Quantity dispatched
|
QtyDispatched=Quantity dispatched
|
||||||
QtyDispatchedShort=Qty dispatched
|
QtyDispatchedShort=Qty dispatched
|
||||||
QtyToDispatchShort=Qty to dispatch
|
QtyToDispatchShort=Qty to dispatch
|
||||||
|
|||||||
@ -27,10 +27,10 @@ AnyOtherInThisListCanValidate=Person to inform for validation.
|
|||||||
TripSociete=Information company
|
TripSociete=Information company
|
||||||
TripSalarie=Informations user
|
TripSalarie=Informations user
|
||||||
TripNDF=Informations expense report
|
TripNDF=Informations expense report
|
||||||
|
|
||||||
DeleteLine=Delete a ligne of the expense report
|
DeleteLine=Delete a ligne of the expense report
|
||||||
ConfirmDeleteLine=Are you sure you want to delete this line ?
|
ConfirmDeleteLine=Are you sure you want to delete this line ?
|
||||||
|
PDFStandardExpenseReports=Standard template to generate a PDF document for expense report
|
||||||
|
ExpenseReportLine=Expense report line
|
||||||
TF_OTHER=Other
|
TF_OTHER=Other
|
||||||
TF_TRANSPORTATION=Transportation
|
TF_TRANSPORTATION=Transportation
|
||||||
TF_LUNCH=Lunch
|
TF_LUNCH=Lunch
|
||||||
@ -67,10 +67,11 @@ MOTIF_REFUS=Reason
|
|||||||
MOTIF_CANCEL=Reason
|
MOTIF_CANCEL=Reason
|
||||||
|
|
||||||
DATE_REFUS=Deny date
|
DATE_REFUS=Deny date
|
||||||
DATE_CANCEL=Cancelation date
|
DATE_SAVE=Validation date
|
||||||
DATE_VALIDE=Validation date
|
DATE_VALIDE=Validation date
|
||||||
|
DateApprove=Approving date
|
||||||
|
DATE_CANCEL=Cancelation date
|
||||||
DATE_PAIEMENT=Payment date
|
DATE_PAIEMENT=Payment date
|
||||||
DATE_SAVE=Recording date
|
|
||||||
|
|
||||||
Deny=Deny
|
Deny=Deny
|
||||||
TO_PAID=Pay
|
TO_PAID=Pay
|
||||||
|
|||||||
@ -13,9 +13,9 @@ ConfigAccountingExpert=Configuración del módulo contable
|
|||||||
Journaux=Diarios
|
Journaux=Diarios
|
||||||
JournalFinancial=Diarios financieros
|
JournalFinancial=Diarios financieros
|
||||||
Exports=Exportaciones
|
Exports=Exportaciones
|
||||||
Export=Export
|
Export=Exportar
|
||||||
Modelcsv=Modelo de exportación
|
Modelcsv=Modelo de exportación
|
||||||
OptionsDeactivatedForThisExportModel=For this export model, options are deactivated
|
OptionsDeactivatedForThisExportModel=Las opciones están desactivadas para este modelo de exportación
|
||||||
Selectmodelcsv=Seleccione un modelo de exportación
|
Selectmodelcsv=Seleccione un modelo de exportación
|
||||||
Modelcsv_normal=Exportación clásica
|
Modelcsv_normal=Exportación clásica
|
||||||
Modelcsv_CEGID=Exportar a Cegid Expert
|
Modelcsv_CEGID=Exportar a Cegid Expert
|
||||||
@ -68,7 +68,7 @@ Lineofinvoice=Línea de la factura
|
|||||||
VentilatedinAccount=Contabilizada con éxito en la cuenta contable
|
VentilatedinAccount=Contabilizada con éxito en la cuenta contable
|
||||||
NotVentilatedinAccount=Cuenta sin contabilización en la contabilidad
|
NotVentilatedinAccount=Cuenta sin contabilización en la contabilidad
|
||||||
|
|
||||||
ACCOUNTING_SEPARATORCSV=Column separator in export file
|
ACCOUNTING_SEPARATORCSV=Separador de columnas en el archivo de exportación
|
||||||
|
|
||||||
ACCOUNTING_LIMIT_LIST_VENTILATION=Número de elementos a contabilizar que se muestran por página (máximo recomendado: 50)
|
ACCOUNTING_LIMIT_LIST_VENTILATION=Número de elementos a contabilizar que se muestran por página (máximo recomendado: 50)
|
||||||
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Ordenar las páginas de contabilización "A contabilizar" por los elementos más recientes
|
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Ordenar las páginas de contabilización "A contabilizar" por los elementos más recientes
|
||||||
|
|||||||
@ -1568,4 +1568,4 @@ SalariesSetup=Configuración del módulo salarios
|
|||||||
SortOrder=Ordenación
|
SortOrder=Ordenación
|
||||||
Format=Formatear
|
Format=Formatear
|
||||||
TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor
|
TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor
|
||||||
IncludePath=Include path (defined into variable %s)
|
IncludePath=Include path (definida en la variable %s)
|
||||||
|
|||||||
@ -60,7 +60,7 @@ SupplierOrderSentByEMail=Pedido a proveedor %s enviada por e-mail
|
|||||||
SupplierInvoiceSentByEMail=Factura de proveedor %s enviada por e-mail
|
SupplierInvoiceSentByEMail=Factura de proveedor %s enviada por e-mail
|
||||||
ShippingSentByEMail=Expedición %s enviada por email
|
ShippingSentByEMail=Expedición %s enviada por email
|
||||||
ShippingValidated= Expedición %s validada
|
ShippingValidated= Expedición %s validada
|
||||||
InterventionSentByEMail=Intervention %s sent by EMail
|
InterventionSentByEMail=Intervención %s enviada por e-mail
|
||||||
NewCompanyToDolibarr= Tercero creado
|
NewCompanyToDolibarr= Tercero creado
|
||||||
DateActionPlannedStart= Fecha de inicio prevista
|
DateActionPlannedStart= Fecha de inicio prevista
|
||||||
DateActionPlannedEnd= Fecha de fin prevista
|
DateActionPlannedEnd= Fecha de fin prevista
|
||||||
|
|||||||
@ -29,7 +29,7 @@ ReportTurnover=Volumen de ventas
|
|||||||
PaymentsNotLinkedToInvoice=Pagos vinculados a ninguna factura, por lo que ninguún tercero
|
PaymentsNotLinkedToInvoice=Pagos vinculados a ninguna factura, por lo que ninguún tercero
|
||||||
PaymentsNotLinkedToUser=Pagos no vinculados a un usuario
|
PaymentsNotLinkedToUser=Pagos no vinculados a un usuario
|
||||||
Profit=Beneficio
|
Profit=Beneficio
|
||||||
AccountingResult=Accounting result
|
AccountingResult=Resultado contable
|
||||||
Balance=Saldo
|
Balance=Saldo
|
||||||
Debit=Debe
|
Debit=Debe
|
||||||
Credit=Haber
|
Credit=Haber
|
||||||
|
|||||||
@ -14,8 +14,8 @@ URLToLaunchCronJobs=URL para ejecutar tareas Cron
|
|||||||
OrToLaunchASpecificJob=O para ejecutar una tarea en concreto
|
OrToLaunchASpecificJob=O para ejecutar una tarea en concreto
|
||||||
KeyForCronAccess=Clave para la URL para ejecutar tareas Cron
|
KeyForCronAccess=Clave para la URL para ejecutar tareas Cron
|
||||||
FileToLaunchCronJobs=Comando para ejecutar tareas Cron
|
FileToLaunchCronJobs=Comando para ejecutar tareas Cron
|
||||||
CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
|
CronExplainHowToRunUnix=En entornos Unix se debe utilizar la siguiente entrada crontab para ejecutar el comando cada 5 minutos
|
||||||
CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes
|
CronExplainHowToRunWin=En entornos Microsoft (tm) Windows, puede utilizar las herramienta tareas programadas para ejecutar el comando cada 5 minutos
|
||||||
# Menu
|
# Menu
|
||||||
CronJobs=Tareas programadas
|
CronJobs=Tareas programadas
|
||||||
CronListActive=Listado de tareas activas/programadas
|
CronListActive=Listado de tareas activas/programadas
|
||||||
|
|||||||
@ -158,8 +158,8 @@ ErrorPriceExpression21=Resultado '%s' vacío
|
|||||||
ErrorPriceExpression22=Resultado '%s' negativo
|
ErrorPriceExpression22=Resultado '%s' negativo
|
||||||
ErrorPriceExpressionInternal=Error interno '%s'
|
ErrorPriceExpressionInternal=Error interno '%s'
|
||||||
ErrorPriceExpressionUnknown=Error desconocido '%s'
|
ErrorPriceExpressionUnknown=Error desconocido '%s'
|
||||||
ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs
|
ErrorSrcAndTargetWarehouseMustDiffers=Los almacenes de origen y destino deben de ser diferentes
|
||||||
ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information
|
ErrorTryToMakeMoveOnProductRequiringBatchData=Error, intenta hacer un movimiento de stock sin indicar lote/serie, en un producto que requiere de lote/serie
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos
|
WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user