diff --git a/README-FR.md b/README-FR.md
index 8d3d7f36aa9..3f1819f6370 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -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
Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat,
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),
vous pouvez installer Dolibarr avec cette version de la manière suivante:
diff --git a/README.md b/README.md
index e133ec9d031..cf1e99bef37 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](COPYRIGHT)
### 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
diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php
index 64a2dfa12da..fc3157c318a 100644
--- a/htdocs/accountancy/journal/bankjournal.php
+++ b/htdocs/accountancy/journal/bankjournal.php
@@ -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 .= " 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";
-// To isolate the cash of the other accounts
-$sql .= " WHERE ba.courant <> 2";
-$sql .= " AND ba.rowid=".$id_accountancy_journal;
+$sql .= " WHERE ba.rowid=".$id_accountancy_journal;
if (! empty($conf->multicompany->enabled)) {
$sql .= " AND ba.entity = " . $conf->entity;
}
@@ -143,9 +141,9 @@ if ($result) {
$obj = $db->fetch_object($result);
$tabcompany[$obj->rowid] = array(
- 'id' => $obj->socid,
- 'name' => $obj->name,
- 'code_client' => $obj->code_compta
+ 'id' => $obj->socid,
+ 'name' => $obj->name,
+ 'code_client' => $obj->code_compta
);
// Controls
@@ -172,133 +170,96 @@ if ($result) {
// get_url may return -1 which is not traversable
if (is_array($links))
{
- foreach ($links as $key => $val)
+
+ foreach ( $links as $key => $val )
+ {
+ $tabtype[$obj->rowid] = $links[$key]['type'];
+
+
+ if ($links[$key]['type'] == 'payment')
{
- $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 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/bankjournal.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 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;
- }*/
- }
- 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;
- }*/
+ $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/bankjournal.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 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'];
+ $paymentsalstatic->label = $links[$key]['label'];
+ $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;
// if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount;
- $i ++;
+ $i++;
}
} else {
dol_print_error($db);
@@ -306,17 +267,16 @@ if ($result) {
/*
* Actions
- * FIXME Action should be before any view
*/
// Write bookkeeping
if ($action == 'writeBookKeeping')
{
$error = 0;
- foreach ($tabpay as $key => $val)
+ foreach ( $tabpay as $key => $val )
{
// Bank
- foreach ($tabbq[$key] as $k => $mt)
+ foreach ( $tabbq[$key] as $k => $mt )
{
$bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"];
@@ -368,7 +328,7 @@ if ($action == 'writeBookKeeping')
}
}
// Third party
- foreach ($tabtp[$key] as $k => $mt)
+ foreach ( $tabtp[$key] as $k => $mt )
{
$bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"];
@@ -467,6 +427,7 @@ if ($action == 'export_csv')
foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
+
$companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name'];
@@ -484,21 +445,44 @@ if ($action == 'export_csv')
}
// Third party
- foreach ( $tabtp[$key] as $k => $mt ) {
- if ($mt) {
- print $date . $sep;
- print $bank_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;
+ if (is_array ( $tabtp[$key]))
+ {
+ foreach ( $tabtp[$key] as $k => $mt )
+ {
+ if ($mt)
+ {
+ print $date . $sep;
+ print $bank_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
+ {
+ 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";
}
- 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";
}
}
}
@@ -522,15 +506,35 @@ if ($action == 'export_csv')
}
// Third party
- foreach ( $tabtp[$key] as $k => $mt ) {
- if ($mt) {
- print '"' . $date . '"' . $sep;
- print '"' . $val["type_payment"] . '"' . $sep;
- print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
- print '"' . $companystatic->name . '"' . $sep;
- print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
- print '"' . ($mt >= 0 ? price($mt) : '') . '"';
- print "\n";
+ if (is_array ( $tabtp[$key]))
+ {
+ foreach ( $tabtp[$key] as $k => $mt )
+ {
+ if ($mt) {
+ print '"' . $date . '"' . $sep;
+ print '"' . $val["type_payment"] . '"' . $sep;
+ print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
+ print '"' . $companystatic->name . '"' . $sep;
+ print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep;
+ print '"' . ($mt >= 0 ? price($mt) : '') . '"';
+ print "\n";
+ }
+ }
+ }
+ 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";
+ }
}
}
}
@@ -544,13 +548,53 @@ else
llxHeader('', $langs->trans("BankJournal"));
$namereport = $langs->trans("BankJournal");
- $namelink = '';
- $periodlink = '';
- $exportlink = '';
- $builddate = time();
- $description = $langs->trans("DescBankJournal") . '
';
+ $description = $langs->trans("DescBankJournal");
$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 '
';
+
+ print '';
+ // End report
print '';
@@ -611,20 +655,36 @@ else
}
// Third party
- foreach ( $tabtp[$key] as $k => $mt ) {
- if ($k != 'type') {
+ if (is_array ( $tabtp[$key]))
+ {
+ foreach ( $tabtp[$key] as $k => $mt ) {
+ if ($k != 'type') {
+ print "";
+ print "| " . $date . " | ";
+ print "" . $val["soclib"] . " | ";
+ print "" . length_accounta($k) . " | ";
+ print "" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ") | ";
+ print "" . $val["type_payment"] . " | ";
+ print "" . ($mt < 0 ? price(- $mt) : '') . " | ";
+ print "" . ($mt >= 0 ? price($mt) : '') . " | ";
+ print "
";
+ }
+ }
+ }
+ else
+ {
+ foreach ( $tabbq[$key] as $k => $mt )
+ {
print "";
print "| " . $date . " | ";
- print "" . $val["soclib"] . " | ";
- print "" . length_accounta($k) . " | ";
- print "" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ") | ";
- print "" . $val["type_payment"] . " | ";
+ print "" . $reflabel . " | ";
+ print "" . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . " | ";
+ print "" . $langs->trans('ThirdParty') . " | ";
print "" . ($mt < 0 ? price(- $mt) : '') . " | ";
print "" . ($mt >= 0 ? price($mt) : '') . " | ";
print "
";
}
}
-
$var = ! $var;
}
diff --git a/htdocs/accountancy/journal/cashjournal.php b/htdocs/accountancy/journal/cashjournal.php
deleted file mode 100644
index 8bc33f2c1bb..00000000000
--- a/htdocs/accountancy/journal/cashjournal.php
+++ /dev/null
@@ -1,533 +0,0 @@
-
- * Copyright (C) 2007-2010 Jean Heimburger
- * Copyright (C) 2011 Juanjo Menent
- * Copyright (C) 2012 Regis Houssin
- * Copyright (C) 2013 Christophe Battarel
- * Copyright (C) 2013-2015 Alexandre Spangaro
- * Copyright (C) 2013-2014 Florian Henry
- * Copyright (C) 2013-2014 Olivier Geffroy
- *
- * 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 .
- */
-
-/**
- * \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") . '
';
- $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 '';
-
- print '';
-
- print '
- ';
-
- /*
- * Show result array
- */
- print '
';
-
- $i = 0;
- print "";
- print "";
- print "| " . $langs->trans("Date") . " | ";
- print "" . $langs->trans("Piece") . ' (' . $langs->trans("InvoiceRef") . ") | ";
- print "" . $langs->trans("Account") . " | ";
- print "" . $langs->trans("Debit") . " | " . $langs->trans("Credit") . " | ";
- print "
\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 "";
- print "| " . $date . " | ";
- print "" . $val["lib"] . " | ";
- print "" . length_accountg($k) . " | ";
- print '' . ($mt >= 0 ? price($mt) : '') . " | ";
- print '' . ($mt < 0 ? price(- $mt) : '') . " | ";
- print "
";
- }
- }
-
- // third party
- foreach ( $tabtp[$key] as $k => $mt ) {
- if ($k != 'type') {
- print "";
-
- print "| " . $date . " | ";
- print "" . $val["soclib"] . " | ";
-
- print "" . length_accounta($k) . " | ";
- print '' . ($mt < 0 ? price(- $mt) : '') . " | ";
- print '' . ($mt >= 0 ? price($mt) : '') . " | ";
- }
- }
-
- $var = ! $var;
- }
-
- print "
";
-
- // End of page
- llxFooter();
-}
-$db->close();
diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php
index 81b58727745..5be0df34371 100644
--- a/htdocs/comm/action/class/actioncomm.class.php
+++ b/htdocs/comm/action/class/actioncomm.class.php
@@ -185,12 +185,12 @@ class ActionComm extends CommonObject
$now=dol_now();
// Check parameters
- if (empty($this->userownerid))
+ if (empty($this->userownerid))
{
$this->errors[]='ErrorPropertyUserowneridNotDefined';
return -1;
}
-
+
// Clean parameters
$this->label=dol_trunc(trim($this->label),128);
$this->location=dol_trunc(trim($this->location),128);
@@ -222,7 +222,7 @@ class ActionComm extends CommonObject
$userdoneid=$this->userdoneid;
// Be sure assigned user is defined as an array of array('id'=>,'mandatory'=>,...).
- if (empty($this->userassigned) || count($this->userassigned) == 0 || ! is_array($this->userassigned))
+ if (empty($this->userassigned) || count($this->userassigned) == 0 || ! is_array($this->userassigned))
$this->userassigned = array($userownerid=>array('id'=>$userownerid));
if (! $this->type_id || ! $this->type_code)
@@ -314,9 +314,9 @@ class ActionComm extends CommonObject
{
$val=array('id'=>$val);
}
-
+
$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);
if (! $resql)
@@ -680,7 +680,7 @@ class ActionComm extends CommonObject
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.=" 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);
if (! $resql)
diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php
index 2f8f7f18e4e..69a3520d1e8 100644
--- a/htdocs/comm/mailing/class/mailing.class.php
+++ b/htdocs/comm/mailing/class/mailing.class.php
@@ -57,7 +57,7 @@ class Mailing extends CommonObject
var $date_creat;
var $date_valid;
-
+
var $extraparams=array();
public $statut_dest=array();
@@ -78,12 +78,12 @@ class Mailing extends CommonObject
$this->statuts[1] = 'MailingStatusValidated';
$this->statuts[2] = 'MailingStatusSentPartialy';
$this->statuts[3] = 'MailingStatusSentCompletely';
-
+
$this->statut_dest[-1] = 'MailingStatusError';
$this->statut_dest[1] = 'MailingStatusSent';
$this->statut_dest[2] = 'MailingStatusRead';
$this->statut_dest[3] = 'MailingStatusNotContact';
-
+
}
/**
@@ -186,7 +186,7 @@ class Mailing extends CommonObject
function fetch($rowid)
{
global $conf;
-
+
$sql = "SELECT m.rowid, m.titre, m.sujet, m.body, m.bgcolor, m.bgimage";
$sql.= ", m.email_from, m.email_replyto, m.email_errorsto";
$sql.= ", m.statut, m.nbemail";
@@ -211,14 +211,14 @@ class Mailing extends CommonObject
$this->statut = $obj->statut;
$this->nbemail = $obj->nbemail;
$this->titre = $obj->titre;
-
- $this->sujet = $obj->sujet;
+
+ $this->sujet = $obj->sujet;
if (!empty($conf->global->FCKEDITOR_ENABLE_MAILING) && dol_textishtml(dol_html_entity_decode($obj->body, ENT_COMPAT | ENT_HTML401))) {
$this->body = dol_html_entity_decode($obj->body, ENT_COMPAT | ENT_HTML401);
}else {
$this->body = $obj->body;
}
-
+
$this->bgcolor = $obj->bgcolor;
$this->bgimage = $obj->bgimage;
@@ -232,7 +232,7 @@ class Mailing extends CommonObject
$this->date_creat = $this->db->jdate($obj->date_creat);
$this->date_valid = $this->db->jdate($obj->date_valid);
$this->date_envoi = $this->db->jdate($obj->date_envoi);
-
+
$this->extraparams = (array) json_decode($obj->extraparams, true);
return 1;
@@ -267,6 +267,8 @@ class Mailing extends CommonObject
$object=new Mailing($this->db);
+ $object->context['createfromclone']='createfromclone';
+
$this->db->begin();
// Load source object
@@ -313,13 +315,13 @@ class Mailing extends CommonObject
{
//Clone target
if (!empty($option2)) {
-
+
require_once DOL_DOCUMENT_ROOT .'/core/modules/mailings/modules_mailings.php';
-
+
$mailing_target = new MailingTargets($this->db);
-
+
$target_array=array();
-
+
$sql = "SELECT fk_contact, ";
$sql.=" lastname, ";
$sql.=" firstname,";
@@ -330,7 +332,7 @@ class Mailing extends CommonObject
$sql.=" source_type ";
$sql.= " FROM ".MAIN_DB_PREFIX."mailing_cibles ";
$sql.= " WHERE fk_mailing = ".$fromid;
-
+
dol_syslog(get_class($this)."::createFromClone", LOG_DEBUG);
$result=$this->db->query($sql);
if ($result)
@@ -338,17 +340,17 @@ class Mailing extends CommonObject
if ($this->db->num_rows($result))
{
while ($obj = $this->db->fetch_object($result)) {
-
+
$target_array[]=array('fk_contact'=>$obj->fk_contact,
'lastname'=>$obj->lastname,
'firstname'=>$obj->firstname,
- 'email'=>$obj->email,
+ 'email'=>$obj->email,
'other'=>$obj->other,
'source_url'=>$obj->source_url,
'source_id'=>$obj->source_id,
'source_type'=>$obj->source_type);
}
-
+
}
}
else
@@ -356,12 +358,14 @@ class Mailing extends CommonObject
$this->error=$this->db->lasterror();
return -1;
}
-
+
$mailing_target->add_to_target($object->id, $target_array);
}
}
+ unset($object->context['createfromclone']);
+
// End
if (! $error)
{
@@ -514,7 +518,7 @@ class Mailing extends CommonObject
}
}
-
+
/**
* Renvoi le libelle d'un statut donne
*
@@ -526,7 +530,7 @@ class Mailing extends CommonObject
{
global $langs;
$langs->load('mails');
-
+
if ($mode == 0)
{
return $langs->trans($this->statut_dest[$statut]);
@@ -563,10 +567,10 @@ class Mailing extends CommonObject
if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6');
if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8');
}
-
-
-
-
+
+
+
+
}
}
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index c01a7795286..dc1184b7490 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -235,27 +235,30 @@ class Propal extends CommonObject
return -5;
}
- $propalligne=new PropaleLigne($this->db);
- $propalligne->fk_propal=$this->id;
- $propalligne->fk_remise_except=$remise->id;
- $propalligne->desc=$remise->description; // Description ligne
- $propalligne->tva_tx=$remise->tva_tx;
- $propalligne->subprice=-$remise->amount_ht;
- $propalligne->fk_product=0; // Id produit predefini
- $propalligne->qty=1;
- $propalligne->remise=0;
- $propalligne->remise_percent=0;
- $propalligne->rang=-1;
- $propalligne->info_bits=2;
+ $line=new PropaleLigne($this->db);
+
+ $this->line->context = $this->context;
+
+ $line->fk_propal=$this->id;
+ $line->fk_remise_except=$remise->id;
+ $line->desc=$remise->description; // Description ligne
+ $line->tva_tx=$remise->tva_tx;
+ $line->subprice=-$remise->amount_ht;
+ $line->fk_product=0; // Id produit predefini
+ $line->qty=1;
+ $line->remise=0;
+ $line->remise_percent=0;
+ $line->rang=-1;
+ $line->info_bits=2;
// TODO deprecated
- $propalligne->price=-$remise->amount_ht;
+ $line->price=-$remise->amount_ht;
- $propalligne->total_ht = -$remise->amount_ht;
- $propalligne->total_tva = -$remise->amount_tva;
- $propalligne->total_ttc = -$remise->amount_ttc;
+ $line->total_ht = -$remise->amount_ht;
+ $line->total_tva = -$remise->amount_tva;
+ $line->total_ttc = -$remise->amount_ttc;
- $result=$propalligne->insert();
+ $result=$line->insert();
if ($result > 0)
{
$result=$this->update_price(1);
@@ -272,7 +275,7 @@ class Propal extends CommonObject
}
else
{
- $this->error=$propalligne->error;
+ $this->error=$line->error;
$this->db->rollback();
return -2;
}
@@ -389,6 +392,8 @@ class Propal extends CommonObject
// Insert line
$this->line=new PropaleLigne($this->db);
+ $this->line->context = $this->context;
+
$this->line->fk_propal=$this->id;
$this->line->label=$label;
$this->line->desc=$desc;
@@ -541,6 +546,8 @@ class Propal extends CommonObject
// Update line
$this->line=new PropaleLigne($this->db);
+ $this->line->context = $this->context;
+
// Stock previous line records
$staticline=new PropaleLigne($this->db);
$staticline->fetch($rowid);
@@ -949,6 +956,8 @@ class Propal extends CommonObject
{
global $user,$langs,$conf,$hookmanager;
+ $this->context['createfromclone']='createfromclone';
+
$error=0;
$now=dol_now();
@@ -1042,6 +1051,8 @@ class Propal extends CommonObject
// End call triggers
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
@@ -3112,6 +3123,7 @@ class PropaleLigne extends CommonObject
if (empty($this->special_code)) $this->special_code=0;
if (empty($this->fk_parent_line)) $this->fk_parent_line=0;
if (empty($this->fk_fournprice)) $this->fk_fournprice=0;
+ if (empty($this->subprice)) $this->subprice=0;
if (empty($this->pa_ht)) $this->pa_ht=0;
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index d166398b8fe..dd0d3163bba 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -877,6 +877,8 @@ class Commande extends CommonOrder
$error=0;
+ $this->context['createfromclone'] = 'createfromclone';
+
$this->db->begin();
// get extrafields so they will be clone
@@ -941,6 +943,8 @@ class Commande extends CommonOrder
// End call triggers
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
@@ -1200,6 +1204,8 @@ class Commande extends CommonOrder
// Insert line
$this->line=new OrderLine($this->db);
+ $this->line->context = $this->context;
+
$this->line->fk_commande=$this->id;
$this->line->label=$label;
$this->line->desc=$desc;
@@ -1314,6 +1320,8 @@ class Commande extends CommonOrder
$line=new OrderLine($this->db);
+ $line->context = $this->context;
+
$line->fk_product=$idproduct;
$line->desc=$prod->description;
$line->qty=$qty;
@@ -2396,6 +2404,8 @@ class Commande extends CommonOrder
// Update line
$this->line=new OrderLine($this->db);
+ $this->line->context = $this->context;
+
// Stock previous line records
$staticline=new OrderLine($this->db);
$staticline->fetch($rowid);
diff --git a/htdocs/compta/bank/class/bankcateg.class.php b/htdocs/compta/bank/class/bankcateg.class.php
index fb796b219ee..5004d13caf1 100644
--- a/htdocs/compta/bank/class/bankcateg.class.php
+++ b/htdocs/compta/bank/class/bankcateg.class.php
@@ -300,7 +300,9 @@ class BankCateg // extends CommonObject
$object=new BankCateg($this->db);
- $this->db->begin();
+ $object->context['createfromclone'] = 'createfromclone';
+
+ $this->db->begin();
// Load source object
$object->fetch($fromid);
@@ -327,6 +329,8 @@ class BankCateg // extends CommonObject
}
+ unset($object->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 56dc4592632..0c277014a64 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -639,6 +639,8 @@ class Facture extends CommonInvoice
$error=0;
+ $this->context['createfromclone'] = 'createfromclone';
+
$this->db->begin();
// get extrafields so they will be clone
@@ -725,6 +727,8 @@ class Facture extends CommonInvoice
// End call triggers
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
@@ -2120,6 +2124,9 @@ class Facture extends CommonInvoice
// Insert line
$this->line=new FactureLigne($this->db);
+
+ $this->line->context = $this->context;
+
$this->line->fk_facture=$this->id;
$this->line->label=$label; // deprecated
$this->line->desc=$desc;
@@ -2263,7 +2270,9 @@ class Facture extends CommonInvoice
// Update line into database
$this->line=new FactureLigne($this->db);
- // Stock previous line records
+ $this->line->context = $this->context;
+
+ // Stock previous line records
$staticline=new FactureLigne($this->db);
$staticline->fetch($rowid);
$this->line->oldline = $staticline;
@@ -2403,6 +2412,8 @@ class Facture extends CommonInvoice
$line=new FactureLigne($this->db);
+ $line->context = $this->context;
+
// For triggers
$line->fetch($rowid);
diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php
index b75bb056e03..d524c501698 100644
--- a/htdocs/compta/facture/class/paymentterm.class.php
+++ b/htdocs/compta/facture/class/paymentterm.class.php
@@ -33,6 +33,7 @@ class PaymentTerm // extends CommonObject
var $errors=array(); //!< To return several error codes (or messages)
//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
+ var $context =array();
var $id;
@@ -409,6 +410,8 @@ class PaymentTerm // extends CommonObject
$object=new PaymentTerm($this->db);
+ $object->context['createfromclone'] = 'createfromclone';
+
$this->db->begin();
// Load source object
@@ -436,6 +439,8 @@ class PaymentTerm // extends CommonObject
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
index d6d3ec04771..e736cb2a5a3 100644
--- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
+++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
@@ -384,6 +384,8 @@ class PaymentSocialContribution extends CommonObject
$object=new PaymentSocialContribution($this->db);
+ $object->context['createfromclone'] = 'createfromclone';
+
$this->db->begin();
// Load source object
@@ -411,6 +413,8 @@ class PaymentSocialContribution extends CommonObject
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 4a979ac5694..da9971b1b4e 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -49,6 +49,7 @@ abstract class CommonObject
public $errors;
public $canvas; // Contains canvas name if it is
+ public $context=array(); // Use to pass context information
public $name;
public $lastname;
diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php
index 2fd213c3774..cd3a35e4060 100644
--- a/htdocs/core/modules/import/import_csv.modules.php
+++ b/htdocs/core/modules/import/import_csv.modules.php
@@ -354,6 +354,7 @@ class ImportCsv extends ModeleImports
}
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
foreach($objimport->array_import_tables[0] as $alias => $tablename)
{
@@ -590,7 +591,7 @@ class ImportCsv extends ModeleImports
elseif (preg_match('/^lastrowid-/',$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);
$listvalues.=$lastinsertid;
//print $key."-".$val."-".$listfields."-".$listvalues."
";exit;
@@ -632,6 +633,7 @@ class ImportCsv extends ModeleImports
if ($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)
{
//print '.';
diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php
index 723660f1d9c..5f2ef68b194 100644
--- a/htdocs/cron/class/cronjob.class.php
+++ b/htdocs/cron/class/cronjob.class.php
@@ -718,6 +718,8 @@ class Cronjob extends CommonObject
$object=new Cronjob($this->db);
+ $object->context['createfromclone'] = 'createfromclone';
+
$this->db->begin();
// Load source object
@@ -744,6 +746,8 @@ class Cronjob extends CommonObject
}
+ unset($this->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 08cf9d4bbf2..410e69c3e6a 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -1044,7 +1044,9 @@ class CommandeFournisseur extends CommonOrder
$error=0;
- $this->db->begin();
+ $this->context['createfromclone'] = 'createfromclone';
+
+ $this->db->begin();
// Load source object
$objFrom = dol_clone($this);
@@ -1080,7 +1082,9 @@ class CommandeFournisseur extends CommonOrder
// End call triggers
}
- // End
+ unset($this->context['createfromclone']);
+
+ // End
if (! $error)
{
$this->db->commit();
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index d7252d188db..ff36c171298 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -1716,7 +1716,9 @@ class FactureFournisseur extends CommonInvoice
$object=new FactureFournisseur($this->db);
- $this->db->begin();
+ $object->context['createfromclone'] = 'createfromclone';
+
+ $this->db->begin();
// Load source object
$object->fetch($fromid);
@@ -1762,6 +1764,8 @@ class FactureFournisseur extends CommonInvoice
}
+ unset($object->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php
index 4362d54a403..d6d848b8ef1 100644
--- a/htdocs/product/class/productbatch.class.php
+++ b/htdocs/product/class/productbatch.class.php
@@ -324,7 +324,9 @@ class Productbatch extends CommonObject
$object=new Productbatch($this->db);
- $this->db->begin();
+ $object->context['createfromclone']='createfromclone';
+
+ $this->db->begin();
// Load source object
$object->fetch($fromid);
@@ -350,6 +352,8 @@ class Productbatch extends CommonObject
}
+ unset($object->context['createfromclone']);
+
// End
if (! $error)
{
diff --git a/htdocs/product/class/productcustomerprice.class.php b/htdocs/product/class/productcustomerprice.class.php
index 4cc6e7feb49..62d9bb0a406 100644
--- a/htdocs/product/class/productcustomerprice.class.php
+++ b/htdocs/product/class/productcustomerprice.class.php
@@ -75,9 +75,9 @@ class Productcustomerprice extends CommonObject
global $conf, $langs;
$error = 0;
-
+
// Clean parameters
-
+
if (isset($this->entity))
$this->entity = trim($this->entity);
if (isset($this->fk_product))
@@ -106,16 +106,16 @@ class Productcustomerprice extends CommonObject
$this->fk_user = trim($this->fk_user);
if (isset($this->import_key))
$this->import_key = trim($this->import_key);
-
+
// Check parameters
// Put here code to add control on parameters values
-
+
if ($this->price != '' || $this->price == 0) {
if ($this->price_base_type == 'TTC') {
$this->price_ttc = price2num($this->price, 'MU');
$this->price = price2num($this->price) / (1 + ($this->tva_tx / 100));
$this->price = price2num($this->price, 'MU');
-
+
if ($this->price_min != '' || $this->price_min == 0) {
$this->price_min_ttc = price2num($this->price_min, 'MU');
$this->price_min = price2num($this->price_min) / (1 + ($this->tva_tx / 100));
@@ -128,7 +128,7 @@ class Productcustomerprice extends CommonObject
$this->price = price2num($this->price, 'MU');
$this->price_ttc = ($this->recuperableonly != 1) ? price2num($this->price) * (1 + ($this->tva_tx / 100)) : $this->price;
$this->price_ttc = price2num($this->price_ttc, 'MU');
-
+
if ($this->price_min != '' || $this->price_min == 0) {
$this->price_min = price2num($this->price_min, 'MU');
$this->price_min_ttc = price2num($this->price_min) * (1 + ($this->tva_tx / 100));
@@ -140,10 +140,10 @@ class Productcustomerprice extends CommonObject
}
}
}
-
+
// Insert request
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_customer_price(";
-
+
$sql .= "entity,";
$sql .= "datec,";
$sql .= "fk_product,";
@@ -159,9 +159,9 @@ class Productcustomerprice extends CommonObject
$sql .= "localtax2_tx,";
$sql .= "fk_user,";
$sql .= "import_key";
-
+
$sql .= ") VALUES (";
-
+
$sql .= " " . $conf->entity . ",";
$sql .= " '" . $this->db->idate(dol_now()) . "',";
$sql .= " " . (! isset($this->fk_product) ? 'NULL' : "'" . $this->fk_product . "'") . ",";
@@ -177,25 +177,25 @@ class Productcustomerprice extends CommonObject
$sql .= " " . (! isset($this->localtax2_tx) ? 'NULL' : "'" . $this->localtax2_tx . "'") . ",";
$sql .= " " . $user->id . ",";
$sql .= " " . (! isset($this->import_key) ? 'NULL' : "'" . $this->db->escape($this->import_key) . "'") . "";
-
+
$sql .= ")";
-
+
$this->db->begin();
-
+
dol_syslog(get_class($this) . "::create", 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 . "product_customer_price");
-
+
if (! $notrigger) {
// Uncomment this and change MYOBJECT to your own tag if you
// want this action calls a trigger.
-
+
// // Call triggers
// include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
// $interface=new Interfaces($this->db);
@@ -204,14 +204,14 @@ class Productcustomerprice extends CommonObject
// // End call triggers
}
}
-
+
if (! $error) {
$result = $this->setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate);
if ($result < 0) {
$error ++;
}
}
-
+
// Commit or rollback
if ($error) {
foreach ( $this->errors as $errmsg ) {
@@ -237,7 +237,7 @@ class Productcustomerprice extends CommonObject
global $langs;
$sql = "SELECT";
$sql .= " t.rowid,";
-
+
$sql .= " t.entity,";
$sql .= " t.datec,";
$sql .= " t.tms,";
@@ -254,18 +254,18 @@ class Productcustomerprice extends CommonObject
$sql .= " t.localtax2_tx,";
$sql .= " t.fk_user,";
$sql .= " t.import_key";
-
+
$sql .= " FROM " . MAIN_DB_PREFIX . "product_customer_price as t";
$sql .= " WHERE t.rowid = " . $id;
-
+
dol_syslog(get_class($this) . "::fetch", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
if ($this->db->num_rows($resql)) {
$obj = $this->db->fetch_object($resql);
-
+
$this->id = $obj->rowid;
-
+
$this->entity = $obj->entity;
$this->datec = $this->db->jdate($obj->datec);
$this->tms = $this->db->jdate($obj->tms);
@@ -284,7 +284,7 @@ class Productcustomerprice extends CommonObject
$this->import_key = $obj->import_key;
}
$this->db->free($resql);
-
+
return 1;
} else {
$this->error = "Error " . $this->db->lasterror();
@@ -307,7 +307,7 @@ class Productcustomerprice extends CommonObject
global $langs;
$sql = "SELECT";
$sql .= " t.rowid,";
-
+
$sql .= " t.entity,";
$sql .= " t.datec,";
$sql .= " t.tms,";
@@ -332,7 +332,7 @@ class Productcustomerprice extends CommonObject
$sql .= " WHERE soc.rowid=t.fk_soc ";
$sql .= " AND prod.rowid=t.fk_product ";
$sql .= " AND prod.entity IN (" . getEntity('product', 1) . ")";
-
+
// Manage filter
if (count($filter) > 0) {
foreach ( $filter as $key => $value ) {
@@ -346,27 +346,27 @@ class Productcustomerprice extends CommonObject
}
}
}
-
+
if (! empty($sortfield)) {
$sql .= " ORDER BY " . $sortfield . ' ' . $sortorder;
}
if (! empty($limit)) {
$sql .= ' ' . $this->db->plimit($limit + 1, $offset);
}
-
+
dol_syslog(get_class($this) . "::fetch_all", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
-
+
$this->lines = array ();
$num = $this->db->num_rows($resql);
-
+
while ( $obj = $this->db->fetch_object($resql) ) {
-
+
$line = new PriceByCustomerLine();
-
+
$line->id = $obj->rowid;
-
+
$line->entity = $obj->entity;
$line->datec = $this->db->jdate($obj->datec);
$line->tms = $this->db->jdate($obj->tms);
@@ -385,11 +385,11 @@ class Productcustomerprice extends CommonObject
$line->import_key = $obj->import_key;
$line->socname = $obj->socname;
$line->prodref = $obj->prodref;
-
+
$this->lines [] = $line;
}
$this->db->free($resql);
-
+
return $num;
} else {
$this->error = "Error " . $this->db->lasterror();
@@ -412,7 +412,7 @@ class Productcustomerprice extends CommonObject
global $langs;
$sql = "SELECT";
$sql .= " t.rowid,";
-
+
$sql .= " t.entity,";
$sql .= " t.datec,";
$sql .= " t.fk_product,";
@@ -436,7 +436,7 @@ class Productcustomerprice extends CommonObject
$sql .= " WHERE soc.rowid=t.fk_soc ";
$sql .= " AND prod.rowid=t.fk_product ";
$sql .= " AND prod.entity IN (" . getEntity('product', 1) . ")";
-
+
// Manage filter
if (count($filter) > 0) {
foreach ( $filter as $key => $value ) {
@@ -450,27 +450,27 @@ class Productcustomerprice extends CommonObject
}
}
}
-
+
if (! empty($sortfield)) {
$sql .= " ORDER BY " . $sortfield . ' ' . $sortorder;
}
if (! empty($limit)) {
$sql .= ' ' . $this->db->plimit($limit + 1, $offset);
}
-
+
dol_syslog(get_class($this) . "::fetch_all_log", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
-
+
$this->lines = array ();
$num = $this->db->num_rows($resql);
-
+
while ( $obj = $this->db->fetch_object($resql) ) {
-
+
$line = new PriceByCustomerLine();
-
+
$line->id = $obj->rowid;
-
+
$line->entity = $obj->entity;
$line->datec = $this->db->jdate($obj->datec);
$line->tms = $this->db->jdate($obj->tms);
@@ -489,11 +489,11 @@ class Productcustomerprice extends CommonObject
$line->import_key = $obj->import_key;
$line->socname = $obj->socname;
$line->prodref = $obj->prodref;
-
+
$this->lines [] = $line;
}
$this->db->free($resql);
-
+
return $num;
} else {
$this->error = "Error " . $this->db->lasterror();
@@ -513,9 +513,9 @@ class Productcustomerprice extends CommonObject
global $conf, $langs;
$error = 0;
-
+
// Clean parameters
-
+
if (isset($this->entity))
$this->entity = trim($this->entity);
if (isset($this->fk_product))
@@ -544,16 +544,16 @@ class Productcustomerprice extends CommonObject
$this->fk_user = trim($this->fk_user);
if (isset($this->import_key))
$this->import_key = trim($this->import_key);
-
+
// Check parameters
// Put here code to add a control on parameters values
-
+
if ($this->price != '' || $this->price == 0) {
if ($this->price_base_type == 'TTC') {
$this->price_ttc = price2num($this->price, 'MU');
$this->price = price2num($this->price) / (1 + ($this->tva_tx / 100));
$this->price = price2num($this->price, 'MU');
-
+
if ($this->price_min != '' || $this->price_min == 0) {
$this->price_min_ttc = price2num($this->price_min, 'MU');
$this->price_min = price2num($this->price_min) / (1 + ($this->tva_tx / 100));
@@ -566,7 +566,7 @@ class Productcustomerprice extends CommonObject
$this->price = price2num($this->price, 'MU');
$this->price_ttc = ($this->recuperableonly != 1) ? price2num($this->price) * (1 + ($this->tva_tx / 100)) : $this->price;
$this->price_ttc = price2num($this->price_ttc, 'MU');
-
+
if ($this->price_min != '' || $this->price_min == 0) {
$this->price_min = price2num($this->price_min, 'MU');
$this->price_min_ttc = price2num($this->price_min) * (1 + ($this->tva_tx / 100));
@@ -578,11 +578,11 @@ class Productcustomerprice extends CommonObject
}
}
}
-
+
// Do a copy of current record into log table
// Insert request
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_customer_price_log(";
-
+
$sql .= "entity,";
$sql .= "datec,";
$sql .= "fk_product,";
@@ -598,10 +598,10 @@ class Productcustomerprice extends CommonObject
$sql .= "localtax2_tx,";
$sql .= "fk_user,";
$sql .= "import_key";
-
+
$sql .= ") ";
$sql .= "SELECT";
-
+
$sql .= " t.entity,";
$sql .= " t.datec,";
$sql .= " t.fk_product,";
@@ -617,10 +617,10 @@ class Productcustomerprice extends CommonObject
$sql .= " t.localtax2_tx,";
$sql .= " t.fk_user,";
$sql .= " t.import_key";
-
+
$sql .= " FROM " . MAIN_DB_PREFIX . "product_customer_price as t";
$sql .= " WHERE t.rowid = " . $this->id;
-
+
$this->db->begin();
dol_syslog(get_class($this) . "::update", LOG_DEBUG);
$resql = $this->db->query($sql);
@@ -628,10 +628,10 @@ class Productcustomerprice extends CommonObject
$error ++;
$this->errors [] = "Error " . $this->db->lasterror();
}
-
+
// Update request
$sql = "UPDATE " . MAIN_DB_PREFIX . "product_customer_price SET";
-
+
$sql .= " entity=" . $conf->entity . ",";
$sql .= " datec='" . $this->db->idate(dol_now()) . "',";
$sql .= " tms=" . (dol_strlen($this->tms) != 0 ? "'" . $this->db->idate($this->tms) . "'" : 'null') . ",";
@@ -648,21 +648,21 @@ class Productcustomerprice extends CommonObject
$sql .= " localtax2_tx=" . (isset($this->localtax2_tx) ? $this->localtax2_tx : "null") . ",";
$sql .= " fk_user=" . $user->id . ",";
$sql .= " import_key=" . (isset($this->import_key) ? "'" . $this->db->escape($this->import_key) . "'" : "null") . "";
-
+
$sql .= " WHERE rowid=" . $this->id;
-
+
dol_syslog(get_class($this) . "::update", LOG_DEBUG);
$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
// include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
// $interface=new Interfaces($this->db);
@@ -671,14 +671,14 @@ class Productcustomerprice extends CommonObject
// // End call triggers
}
}
-
+
if (! $error) {
$result = $this->setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate);
if ($result < 0) {
$error ++;
}
}
-
+
// Commit or rollback
if ($error) {
foreach ( $this->errors as $errmsg ) {
@@ -703,50 +703,50 @@ class Productcustomerprice extends CommonObject
function setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate) {
$error = 0;
-
+
// Find all susidiaries
$sql = "SELECT s.rowid";
$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
$sql .= " WHERE s.parent = " . $this->fk_soc;
$sql .= " AND s.entity IN (" . getEntity('societe', 1) . ")";
-
+
dol_syslog(get_class($this) . "::setPriceOnAffiliateThirdparty", LOG_DEBUG);
$resql = $this->db->query($sql);
-
+
if ($resql) {
-
+
$this->lines = array ();
$num = $this->db->num_rows($resql);
-
+
while ( ($obj = $this->db->fetch_object($resql)) && (empty($error)) ) {
-
+
// find if there is an existing line for the product and the subsidiaries
$prodsocprice = new Productcustomerprice($this->db);
-
+
$filter = array (
- 't.fk_product' => $this->fk_product,'t.fk_soc' => $obj->rowid
+ 't.fk_product' => $this->fk_product,'t.fk_soc' => $obj->rowid
);
-
+
$result = $prodsocprice->fetch_all('', '', 0, 0, $filter);
if ($result < 0) {
$error ++;
$this->error = $prodsocprice->error;
} else {
-
+
// There is one line
if (count($prodsocprice->lines) > 0) {
// If force update => Update
if (! empty($forceupdateaffiliate)) {
-
+
$prodsocpriceupd = new Productcustomerprice($this->db);
$prodsocpriceupd->fetch($prodsocprice->lines [0]->id);
-
+
$prodsocpriceupd->price = $this->price;
$prodsocpriceupd->price_min = $this->price_min;
$prodsocpriceupd->price_base_type = $this->price_base_type;
$prodsocpriceupd->tva_tx = $this->tva_tx;
$prodsocpriceupd->recuperableonly = $this->recuperableonly;
-
+
$resultupd = $prodsocpriceupd->update($user, 0, $forceupdateaffiliate);
if ($result < 0) {
$error ++;
@@ -763,7 +763,7 @@ class Productcustomerprice extends CommonObject
$prodsocpricenew->price_base_type = $this->price_base_type;
$prodsocpricenew->tva_tx = $this->tva_tx;
$prodsocpricenew->recuperableonly = $this->recuperableonly;
-
+
$resultupd = $prodsocpricenew->create($user, 0, $forceupdateaffiliate);
if ($result < 0) {
$error ++;
@@ -773,7 +773,7 @@ class Productcustomerprice extends CommonObject
}
}
$this->db->free($resql);
-
+
if (empty($error)) {
return 1;
} else {
@@ -796,14 +796,14 @@ class Productcustomerprice extends CommonObject
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
// include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
// $interface=new Interfaces($this->db);
@@ -812,11 +812,11 @@ class Productcustomerprice extends CommonObject
// // End call triggers
}
}
-
+
if (! $error) {
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_customer_price";
$sql .= " WHERE rowid=" . $this->id;
-
+
dol_syslog(get_class($this) . "::delete", LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql) {
@@ -824,7 +824,7 @@ class Productcustomerprice extends CommonObject
$this->errors [] = "Error " . $this->db->lasterror();
}
}
-
+
// Commit or rollback
if ($error) {
foreach ( $this->errors as $errmsg ) {
@@ -848,33 +848,37 @@ class Productcustomerprice extends CommonObject
function createFromClone($fromid) {
global $user, $langs;
-
+
$error = 0;
-
+
$object = new Productcustomerprice($this->db);
-
+
+ $object->context['createfromclone']='createfromclone';
+
$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) {
}
-
+
+ unset($object->context['createfromclone']);
+
// End
if (! $error) {
$this->db->commit();
@@ -894,7 +898,7 @@ class Productcustomerprice extends CommonObject
function initAsSpecimen() {
$this->id = 0;
-
+
$this->entity = '';
$this->datec = '';
$this->tms = '';
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index 83b394ab663..3225916c913 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -1039,6 +1039,8 @@ class Project extends CommonObject
$clone_project=new Project($this->db);
+ $clone_project->context['createfromclone']='createfromclone';
+
$this->db->begin();
// Load source object
@@ -1092,8 +1094,6 @@ class Project extends CommonObject
if (! $error)
{
- $this->db->commit();
-
//Get the new project id
$clone_project_id=$clone_project->id;
@@ -1247,23 +1247,19 @@ class Project extends CommonObject
}
}
}
+ }
+ unset($clone_project->context['createfromclone']);
-
- if (! $error)
- {
- return $clone_project_id;
- }
- else
- {
- dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR);
- return -1;
- }
-
+ if (! $error)
+ {
+ $this->db->commit();
+ return $clone_project_id;
}
else
{
$this->db->rollback();
+ dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR);
return -1;
}
}
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index 5dde5e21b88..8b6d70196a7 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -1092,6 +1092,8 @@ class Task extends CommonObject
$clone_task=new Task($this->db);
$origin_task=new Task($this->db);
+ $clone_task->context['createfromclone']='createfromclone';
+
$this->db->begin();
// Load source object
@@ -1158,8 +1160,6 @@ class Task extends CommonObject
// End
if (! $error)
{
- $this->db->commit();
-
$clone_task_id=$clone_task->id;
$clone_task_ref = $clone_task->ref;
@@ -1279,20 +1279,19 @@ class Task extends CommonObject
{
//TODO clone time of affectation
}
+ }
- if (! $error)
- {
- return $clone_task_id;
- }
- else
- {
- dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR);
- return -1;
- }
+ unset($clone_task->context['createfromclone']);
+
+ if (! $error)
+ {
+ $this->db->commit();
+ return $clone_task_id;
}
else
{
$this->db->rollback();
+ dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR);
return -1;
}
}