diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php
index ed8fc8ecc7e..a8531ca0887 100644
--- a/htdocs/accountancy/closure/index.php
+++ b/htdocs/accountancy/closure/index.php
@@ -25,11 +25,16 @@
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
// Load translation files required by the page
$langs->loadLangs(array("compta", "bills", "other", "main", "accountancy"));
+$socid = GETPOST('socid', 'int');
+
+$action = GETPOST('action', 'aZ09');
+
// Security check
if (empty($conf->accounting->enabled)) {
accessforbidden();
@@ -39,6 +44,7 @@ if ($user->socid > 0)
if (!$user->rights->accounting->fiscalyear->write)
accessforbidden();
+$object = new BookKeeping($db);
$month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
if (GETPOST("year", 'int')) $year_start = GETPOST("year", 'int');
@@ -60,14 +66,91 @@ $year_current = $year_start;
/*
* Actions
*/
+if ($action == 'validate_movements_confirm' && $user->rights->accounting->fiscalyear->write) {
+ $result = $object->fetchAll();
+ if ($result < 0)
+ {
+ setEventMessages($object->error, $object->errors, 'errors');
+ } else {
+ // Specify as export : update field date_validated on selected month/year
+ $error = 0;
+ $db->begin();
+
+ $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int'));
+ $date_end = dol_mktime(23, 59, 59, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int'));
+
+ if (is_array($object->lines))
+ {
+ foreach ($object->lines as $movement)
+ {
+ $now = dol_now();
+
+ $sql = " UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping";
+ $sql .= " SET date_validated = '".$db->idate($now)."'";
+ $sql .= " WHERE rowid = ".$movement->id;
+ $sql .= " AND doc_date >= '" . dol_print_date($date_start, 'dayrfc') . "'";
+ $sql .= " AND doc_date <= '" . dol_print_date($date_end, 'dayrfc') . "'";
+
+ dol_syslog("/accountancy/closure/index.php :: Function validate_movement_confirm Specify movements as validated sql=".$sql, LOG_DEBUG);
+ $result = $db->query($sql);
+ if (!$result)
+ {
+ $error++;
+ break;
+ }
+ }
+ }
+
+ if (!$error)
+ {
+ $db->commit();
+ setEventMessages($langs->trans("AllMovementsWereRecordedAsValidated"), null, 'mesgs');
+ } else {
+ $error++;
+ $db->rollback();
+ setEventMessages($langs->trans("NotAllMovementsCouldBeRecordedAsValidated"), null, 'errors');
+ }
+ header("Location: ".$_SERVER['PHP_SELF']."?year=".$year_start);
+ exit;
+ }
+}
/*
* View
*/
+$form = new Form($db);
+$formaccounting = new FormAccounting($db);
+
llxHeader('', $langs->trans("Closure"));
+if ($action == 'validate_movements') {
+ $form_question = array();
+
+ $month = isset($conf->global->SOCIETE_FISCAL_MONTH_START) ? intval($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
+ $date_start = new DateTime(sprintf('%04d-%02d-%02d', $year_start, $month, 1));
+ $date_end = new DateTime(sprintf('%04d-%02d-%02d', $year_start, $month, 1));
+ $date_end->add(new DateInterval('P1Y'));
+ $date_end->sub(new DateInterval('P1D'));
+
+ $form_question['date_start'] = array(
+ 'name' => 'date_start',
+ 'type' => 'date',
+ 'label' => $langs->trans('DateStart'),
+ 'value' => $date_start->format('Y-m-d')
+ );
+ $form_question['date_end'] = array(
+ 'name' => 'date_end',
+ 'type' => 'date',
+ 'label' => $langs->trans('DateEnd'),
+ 'value' => $date_end->format('Y-m-d')
+ );
+
+ $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?year='.$year_start, $langs->trans('ValidateMovements'), $langs->trans('DescValidateMovements', $langs->transnoentitiesnoconv("RegistrationInAccounting")), 'validate_movements_confirm', $form_question, '', 1, 300);
+ print $formconfirm;
+}
+
$textprevyear = ''.img_previous().'';
$textnextyear = ' '.img_next().'';
@@ -80,9 +163,9 @@ print '
';
$y = $year_current;
-$buttonbind = ''.$langs->trans("ValidateMovements").'';
+$buttonvalidate = ''.$langs->trans("ValidateMovements").'';
-print_barre_liste($langs->trans("OverviewOfMovementsNotValidated"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1);
+print_barre_liste($langs->trans("OverviewOfMovementsNotValidated"), '', '', '', '', '', '', -1, '', '', 0, $buttonvalidate, '', 0, 1, 1);
print '
';
print '
';
@@ -104,6 +187,7 @@ $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b";
$sql .= " WHERE b.doc_date >= '".$db->idate($search_date_start)."'";
$sql .= " AND b.doc_date <= '".$db->idate($search_date_end)."'";
$sql .= " AND b.entity IN (".getEntity('bookkeeping', 0).")"; // We don't share object for accountancy
+$sql .= " AND date_validated IS NULL";
dol_syslog('htdocs/accountancy/closure/index.php sql='.$sql, LOG_DEBUG);
$resql = $db->query($sql);
diff --git a/htdocs/accountancy/closure/validate.php b/htdocs/accountancy/closure/validate.php
deleted file mode 100644
index 1013ad1b6ce..00000000000
--- a/htdocs/accountancy/closure/validate.php
+++ /dev/null
@@ -1,156 +0,0 @@
-
- *
- * 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/closure/validate.php
- * \ingroup Accountancy
- * \brief Validate entries page
- */
-
-require '../../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php';
-
-// Load translation files required by the page
-$langs->loadLangs(array("compta", "bills", "other", "main", "accountancy"));
-
-// Security check
-if (empty($conf->accounting->enabled)) {
- accessforbidden();
-}
-if ($user->socid > 0)
- accessforbidden();
- if (!$user->rights->accounting->fiscalyear->write)
- accessforbidden();
-
-
-$month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
-if (GETPOST("year", 'int')) $year_start = GETPOST("year", 'int');
-else {
- $year_start = dol_print_date(dol_now(), '%Y');
- if (dol_print_date(dol_now(), '%m') < $month_start) $year_start--; // If current month is lower that starting fiscal month, we start last year
-}
-$year_end = $year_start + 1;
-$month_end = $month_start - 1;
-if ($month_end < 1)
-{
- $month_end = 12;
- $year_end--;
-}
-$search_date_start = dol_mktime(0, 0, 0, $month_start, 1, $year_start);
-$search_date_end = dol_get_last_day($year_end, $month_end);
-$year_current = $year_start;
-
-/*
- * Actions
- */
-
-if ($action == 'validate')
-{
- $now = dol_now();
-
- // Update database
- $db->begin();
- $sql = "UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping as b";
- $sql .= " SET b.date_validated = '".$db->idate($now)."'";
- $sql .= ' WHERE b.date_validated IS NULL';
-
- dol_syslog("htdocs/accountancy/closure/validate.php validate", LOG_DEBUG);
- $resql = $db->query($sql);
- if (!$resql1) {
- $error++;
- $db->rollback();
- setEventMessages($db->lasterror(), null, 'errors');
- } else {
- $db->commit();
- }
- // End clean database
-}
-
-
-/*
- * View
- */
-
-llxHeader('', $langs->trans("ValidateMovements"));
-
-$textprevyear = ''.img_previous().'';
-$textnextyear = ' '.img_next().'';
-
-
-print load_fiche_titre($langs->trans("ValidateMovements")." ".$textprevyear." ".$langs->trans("Year")." ".$year_start." ".$textnextyear, '', 'title_accountancy');
-
-print $langs->trans("DescValidateMovements").'
';
-print '
';
-
-
-$y = $year_current;
-
-print_barre_liste($langs->trans("SelectMonthAndValidate"), '', '', '', '', '', '', -1, '', '', 0, '', 'class="right"', 0, 1, 1);
-
-print '';
-print '
';
-print '';
-for ($i = 1; $i <= 12; $i++) {
- $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1;
- if ($j > 12) $j -= 12;
- print '| '.$langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT)).' | ';
-}
-print ''.$langs->trans("Total").' |
';
-
-print '';
-$sql = "SELECT COUNT(b.rowid) as detail,";
-for ($i = 1; $i <= 12; $i++) {
- $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1;
- if ($j > 12) $j -= 12;
- $sql .= " SUM(".$db->ifsql('MONTH(b.doc_date)='.$j, '1', '0').") AS month".str_pad($j, 2, '0', STR_PAD_LEFT).",";
-}
-$sql .= " COUNT(b.rowid) as total";
-$sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b";
-$sql .= " WHERE b.doc_date >= '".$db->idate($search_date_start)."'";
-$sql .= " AND b.doc_date <= '".$db->idate($search_date_end)."'";
-$sql .= " AND b.entity IN (".getEntity('bookkeeping', 0).")"; // We don't share object for accountancy
-
-dol_syslog('htdocs/accountancy/closure/index.php sql='.$sql, LOG_DEBUG);
-$resql = $db->query($sql);
-if ($resql) {
- $num = $db->num_rows($resql);
-
- while ($row = $db->fetch_row($resql)) {
- for ($i = 1; $i <= 12; $i++) {
- print ''.$row[$i].'
';
- print '';
- print ' | ';
- }
- print ''.$row[13].' | ';
- }
-
- $db->free($resql);
-} else {
- print $db->lasterror(); // Show last sql error
-}
-print '
';
-print "
\n";
-
-print '
';
-print '
';
-
-// End of page
-llxFooter();
-$db->close();
diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php
index 9e1647d9760..d2755c9acd8 100644
--- a/htdocs/adherents/card.php
+++ b/htdocs/adherents/card.php
@@ -1761,7 +1761,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if ($linktoelem) print ($somethingshown?'':'
').$linktoelem;
*/
- // Shon online payment link
+ // Show online payment link
$useonlinepayment = (!empty($conf->paypal->enabled) || !empty($conf->stripe->enabled) || !empty($conf->paybox->enabled));
if ($useonlinepayment) {
diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index 6726e53eef1..08c19091caa 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -299,7 +299,7 @@ if (empty($mysoc->country_code))
print ''.$langs->trans("UnitPriceOfProduct").": ".price2num($s, 'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
- print ' -> '.$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."
\n";
+ print ' -> '.$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."
\n";
$s = 10 / 3; $qty = 2; $vat = 10;
$tmparray = calcul_price_total($qty, price2num($s, 'MU'), 0, $vat, -1, -1, 0, 'HT', 0, 0, $mysoc, $localtax_array);
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index b5e92bb2961..1cf784de3c5 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -1151,7 +1151,7 @@ if ($mode == 'deploy') {
print ' ';
- print '';
+ print '';
if (!empty($conf->global->MAIN_UPLOAD_DOC)) {
if ($user->admin) {
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index f572f6110bf..10a2238088b 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -600,6 +600,7 @@ class Propal extends CommonObject
// Clean vat code
$reg = array();
$vat_src_code = '';
+ $reg = array();
if (preg_match('/\((.*)\)/', $txtva, $reg))
{
$vat_src_code = $reg[1];
@@ -771,7 +772,9 @@ class Propal extends CommonObject
$qty = price2num($qty);
$pu = price2num($pu);
$pu_ht_devise = price2num($pu_ht_devise);
- $txtva = price2num($txtva);
+ if (!preg_match('/\((.*)\)/', $txtva)) {
+ $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5'
+ }
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
$pa_ht = price2num($pa_ht);
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 3a4cfde8057..b8061bcea93 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -631,9 +631,9 @@ if (empty($reshook))
// Set if we used free entry or predefined product
$predef = '';
- $product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
- $price_ht = GETPOST('price_ht');
- $price_ht_devise = GETPOST('multicurrency_price_ht');
+ $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
+ $price_ht = price2num(GETPOST('price_ht'), 'MU');
+ $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
$prod_entry_mode = GETPOST('prod_entry_mode');
if ($prod_entry_mode == 'free')
{
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index d8fdb51141e..3cc0fa72ae6 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -3060,7 +3060,9 @@ class Commande extends CommonOrder
$pu = price2num($pu);
$pa_ht = price2num($pa_ht);
$pu_ht_devise = price2num($pu_ht_devise);
- $txtva = price2num($txtva);
+ if (!preg_match('/\((.*)\)/', $txtva)) {
+ $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5'
+ }
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php
index d0089b0323e..25505325c98 100644
--- a/htdocs/compta/facture/card-rec.php
+++ b/htdocs/compta/facture/card-rec.php
@@ -437,9 +437,9 @@ if (empty($reshook))
// Set if we used free entry or predefined product
$predef = '';
- $product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
- $price_ht = GETPOST('price_ht');
- $price_ht_devise = GETPOST('multicurrency_price_ht');
+ $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
+ $price_ht = price2num(GETPOST('price_ht'), 'MU');
+ $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
$prod_entry_mode = GETPOST('prod_entry_mode', 'alpha');
if ($prod_entry_mode == 'free')
{
@@ -450,7 +450,7 @@ if (empty($reshook))
$tva_tx = '';
}
- $qty = GETPOST('qty'.$predef);
+ $qty = price2num(GETPOST('qty'.$predef), 'alpha');
$remise_percent = GETPOST('remise_percent'.$predef);
// Extrafields
diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php
index 9c0d191f0cf..29e78f90af8 100644
--- a/htdocs/compta/facture/class/facture-rec.class.php
+++ b/htdocs/compta/facture/class/facture-rec.class.php
@@ -853,7 +853,9 @@ class FactureRec extends CommonInvoice
$qty = price2num($qty);
$pu_ht = price2num($pu_ht);
$pu_ttc = price2num($pu_ttc);
- $txtva = price2num($txtva);
+ if (!preg_match('/\((.*)\)/', $txtva)) {
+ $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5'
+ }
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
if (empty($txtva)) $txtva = 0;
@@ -1031,7 +1033,9 @@ class FactureRec extends CommonInvoice
$pu_ht = price2num($pu_ht);
$pu_ttc = price2num($pu_ttc);
$pu_ht_devise = price2num($pu_ht_devise);
- $txtva = price2num($txtva);
+ if (!preg_match('/\((.*)\)/', $txtva)) {
+ $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5'
+ }
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
if (empty($txlocaltax1)) $txlocaltax1 = 0;
@@ -1057,6 +1061,7 @@ class FactureRec extends CommonInvoice
// Clean vat code
$vat_src_code = '';
+ $reg = array();
if (preg_match('/\((.*)\)/', $txtva, $reg))
{
$vat_src_code = $reg[1];
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index ac1270ed550..24f5b748e52 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -3283,7 +3283,9 @@ class Facture extends CommonInvoice
$pu = price2num($pu);
$pu_ht_devise = price2num($pu_ht_devise);
$pa_ht = price2num($pa_ht);
- $txtva = price2num($txtva);
+ if (!preg_match('/\((.*)\)/', $txtva)) {
+ $txtva = price2num($txtva); // $txtva can have format '5.0(XXX)' or '5'
+ }
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php
index 28635a2df60..6b7f1612836 100644
--- a/htdocs/compta/paiement/class/paiement.class.php
+++ b/htdocs/compta/paiement/class/paiement.class.php
@@ -294,7 +294,7 @@ class Paiement extends CommonObject
$sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement (entity, ref, ref_ext, datec, datep, amount, multicurrency_amount, fk_paiement, num_paiement, note, ext_payment_id, ext_payment_site, fk_user_creat, pos_change)";
$sql .= " VALUES (".$conf->entity.", '".$this->db->escape($this->ref)."', '".$this->db->escape($this->ref_ext)."', '".$this->db->idate($now)."', '".$this->db->idate($this->datepaye)."', ".$total.", ".$mtotal.", ".$this->paiementid.", ";
- $sql .= "'".$this->db->escape($num_payment)."', '".$this->db->escape($note)."', ".($this->ext_payment_id ? "'".$this->db->escape($this->ext_payment_id)."'" : "null").", ".($this->ext_payment_site ? "'".$this->db->escape($this->ext_payment_site)."'" : "null").", ".$user->id.", ".((int) $this->pos_change).")";
+ $sql .= "'".$this->db->escape($num_payment)."', '".$this->db->escape($note)."', ".($this->ext_payment_id ? "'".$this->db->escape($this->ext_payment_id)."'" : "null").", ".($this->ext_payment_site ? "'".$this->db->escape($this->ext_payment_site)."'" : "null").", ".$user->id.", ".((float) $this->pos_change).")";
$resql = $this->db->query($sql);
if ($resql)
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index 3ed21f03873..3906d376243 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -89,6 +89,7 @@ $extralabelslines = $extrafields->fetch_name_optionals_label($object->table_elem
$permissionnote = $user->rights->contrat->creer; // Used by the include of actions_setnotes.inc.php
$permissiondellink = $user->rights->contrat->creer; // Used by the include of actions_dellink.inc.php
+$error = 0;
/*
@@ -383,9 +384,9 @@ if (empty($reshook))
{
// Set if we used free entry or predefined product
$predef = '';
- $product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
- $price_ht = price2num(GETPOST('price_ht'));
- $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'));
+ $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
+ $price_ht = price2num(GETPOST('price_ht'), 'MU');
+ $price_ht_devise = price2num(GETPOST('multicurrency_price_ht', 'CR'));
if (GETPOST('prod_entry_mode', 'alpha') == 'free')
{
$idprod = 0;
@@ -395,7 +396,7 @@ if (empty($reshook))
$tva_tx = '';
}
- $qty = price2num(GETPOST('qty'.$predef));
+ $qty = price2num(GETPOST('qty'.$predef), 'alpha');
$remise_percent = ((GETPOST('remise_percent'.$predef) != '') ? GETPOST('remise_percent'.$predef) : 0);
if ($qty == '')
diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php
index 9bdb1d5a846..36edee80669 100644
--- a/htdocs/contrat/class/contrat.class.php
+++ b/htdocs/contrat/class/contrat.class.php
@@ -1465,7 +1465,6 @@ class Contrat extends CommonObject
$vat_src_code = $reg[1];
$txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate.
}
-
$txtva = price2num($txtva);
$txlocaltax1 = price2num($txlocaltax1);
$txlocaltax2 = price2num($txlocaltax2);
diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php
index 0be919de0dd..929d35d9730 100644
--- a/htdocs/core/actions_sendmails.inc.php
+++ b/htdocs/core/actions_sendmails.inc.php
@@ -33,8 +33,7 @@
/*
* Add file in email form
*/
-if (GETPOST('addfile', 'alpha'))
-{
+if (GETPOST('addfile', 'alpha')) {
$trackid = GETPOST('trackid', 'aZ09');
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@@ -50,8 +49,7 @@ if (GETPOST('addfile', 'alpha'))
/*
* Remove file in email form
*/
-if (!empty($_POST['removedfile']) && empty($_POST['removAll']))
-{
+if (!empty($_POST['removedfile']) && empty($_POST['removAll'])) {
$trackid = GETPOST('trackid', 'aZ09');
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@@ -69,24 +67,28 @@ if (!empty($_POST['removedfile']) && empty($_POST['removAll']))
/*
* Remove all files in email form
*/
-if (GETPOST('removAll', 'alpha'))
-{
+if (GETPOST('removAll', 'alpha')) {
$trackid = GETPOST('trackid', 'aZ09');
$listofpaths = array();
$listofnames = array();
$listofmimes = array();
$keytoavoidconflict = empty($trackid) ? '' : '-'.$trackid;
- if (!empty($_SESSION["listofpaths".$keytoavoidconflict])) $listofpaths = explode(';', $_SESSION["listofpaths".$keytoavoidconflict]);
- if (!empty($_SESSION["listofnames".$keytoavoidconflict])) $listofnames = explode(';', $_SESSION["listofnames".$keytoavoidconflict]);
- if (!empty($_SESSION["listofmimes".$keytoavoidconflict])) $listofmimes = explode(';', $_SESSION["listofmimes".$keytoavoidconflict]);
+ if (!empty($_SESSION["listofpaths".$keytoavoidconflict])) {
+ $listofpaths = explode(';', $_SESSION["listofpaths".$keytoavoidconflict]);
+ }
+ if (!empty($_SESSION["listofnames".$keytoavoidconflict])) {
+ $listofnames = explode(';', $_SESSION["listofnames".$keytoavoidconflict]);
+ }
+ if (!empty($_SESSION["listofmimes".$keytoavoidconflict])) {
+ $listofmimes = explode(';', $_SESSION["listofmimes".$keytoavoidconflict]);
+ }
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
$formmail->trackid = $trackid;
- foreach ($listofpaths as $key => $value)
- {
+ foreach ($listofpaths as $key => $value) {
$pathtodelete = $value;
$filetodelete = $listofnames[$key];
$result = dol_delete_file($pathtodelete, 1); // Delete uploded Files
@@ -101,50 +103,56 @@ if (GETPOST('removAll', 'alpha'))
/*
* Send mail
*/
-if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST['removAll'] && !$_POST['removedfile'] && !$_POST['cancel'] && !$_POST['modelselected'])
-{
- if (empty($trackid)) $trackid = GETPOST('trackid', 'aZ09');
+if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST['removAll'] && !$_POST['removedfile'] && !$_POST['cancel'] && !$_POST['modelselected']) {
+ if (empty($trackid)) {
+ $trackid = GETPOST('trackid', 'aZ09');
+ }
$subject = ''; $actionmsg = ''; $actionmsg2 = '';
$langs->load('mails');
- if (is_object($object))
- {
+ if (is_object($object)) {
$result = $object->fetch($id);
$sendtosocid = 0; // Id of related thirdparty
- if (method_exists($object, "fetch_thirdparty") && !in_array($object->element, array('member', 'user', 'expensereport', 'societe', 'contact')))
- {
+ if (method_exists($object, "fetch_thirdparty") && !in_array($object->element, array('member', 'user', 'expensereport', 'societe', 'contact'))) {
$resultthirdparty = $object->fetch_thirdparty();
$thirdparty = $object->thirdparty;
- if (is_object($thirdparty)) $sendtosocid = $thirdparty->id;
- } elseif ($object->element == 'member' || $object->element == 'user')
- {
+ if (is_object($thirdparty)) {
+ $sendtosocid = $thirdparty->id;
+ }
+ } elseif ($object->element == 'member' || $object->element == 'user') {
$thirdparty = $object;
- if ($object->socid > 0) $sendtosocid = $object->socid;
- } elseif ($object->element == 'expensereport')
- {
+ if ($object->socid > 0) {
+ $sendtosocid = $object->socid;
+ }
+ } elseif ($object->element == 'expensereport') {
$tmpuser = new User($db);
$tmpuser->fetch($object->fk_user_author);
$thirdparty = $tmpuser;
- if ($object->socid > 0) $sendtosocid = $object->socid;
- } elseif ($object->element == 'societe')
- {
+ if ($object->socid > 0) {
+ $sendtosocid = $object->socid;
+ }
+ } elseif ($object->element == 'societe') {
$thirdparty = $object;
- if (is_object($thirdparty) && $thirdparty->id > 0) $sendtosocid = $thirdparty->id;
- } elseif ($object->element == 'contact')
- {
+ if (is_object($thirdparty) && $thirdparty->id > 0) {
+ $sendtosocid = $thirdparty->id;
+ }
+ } elseif ($object->element == 'contact') {
$contact = $object;
if ($contact->id > 0) {
$contact->fetch_thirdparty();
$thirdparty = $contact->thirdparty;
- if (is_object($thirdparty) && $thirdparty->id > 0) $sendtosocid = $thirdparty->id;
+ if (is_object($thirdparty) && $thirdparty->id > 0) {
+ $sendtosocid = $thirdparty->id;
+ }
}
- } else dol_print_error('', "Use actions_sendmails.in.php for an element/object '".$object->element."' that is not supported");
+ } else {
+ dol_print_error('', "Use actions_sendmails.in.php for an element/object '".$object->element."' that is not supported");
+ }
- if (is_object($hookmanager))
- {
+ if (is_object($hookmanager)) {
$parameters = array();
$reshook = $hookmanager->executeHooks('initSendToSocid', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
}
@@ -152,8 +160,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$thirdparty = $mysoc;
}
- if ($result > 0)
- {
+ if ($result > 0) {
$sendto = '';
$sendtocc = '';
$sendtobcc = '';
@@ -163,48 +170,40 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
// Define $sendto
$receiver = $_POST['receiver'];
- if (!is_array($receiver))
- {
- if ($receiver == '-1') $receiver = array();
- else $receiver = array($receiver);
+ if (!is_array($receiver)) {
+ if ($receiver == '-1') {
+ $receiver = array();
+ } else {
+ $receiver = array($receiver);
+ }
}
$tmparray = array();
- if (trim($_POST['sendto']))
- {
+ if (trim($_POST['sendto'])) {
// Recipients are provided into free text
$tmparray[] = trim($_POST['sendto']);
}
- if (count($receiver) > 0)
- {
+ if (count($receiver) > 0) {
// Recipient was provided from combo list
- foreach ($receiver as $key=>$val)
- {
- if ($val == 'thirdparty') // Key selected means current third party ('thirdparty' may be used for current member or current user too)
- {
+ foreach ($receiver as $key => $val) {
+ if ($val == 'thirdparty') { // Key selected means current third party ('thirdparty' may be used for current member or current user too)
$tmparray[] = dol_string_nospecial($thirdparty->getFullName($langs), ' ', array(",")).' <'.$thirdparty->email.'>';
- }
- elseif ($val == 'contact') // Key selected means current contact
- {
+ } elseif ($val == 'contact') { // Key selected means current contact
$tmparray[] = dol_string_nospecial($contact->getFullName($langs), ' ', array(",")).' <'.$contact->email.'>';
$sendtoid[] = $contact->id;
- } elseif ($val) // $val is the Id of a contact
- {
+ } elseif ($val) { // $val is the Id of a contact
$tmparray[] = $thirdparty->contact_get_property((int) $val, 'email');
$sendtoid[] = ((int) $val);
}
}
}
- if (!empty($conf->global->MAIN_MAIL_ENABLED_USER_DEST_SELECT))
- {
+ if (!empty($conf->global->MAIN_MAIL_ENABLED_USER_DEST_SELECT)) {
$receiveruser = $_POST['receiveruser'];
- if (is_array($receiveruser) && count($receiveruser) > 0)
- {
+ if (is_array($receiveruser) && count($receiveruser) > 0) {
$fuserdest = new User($db);
- foreach ($receiveruser as $key=>$val)
- {
+ foreach ($receiveruser as $key => $val) {
$tmparray[] = $fuserdest->user_get_property($val, 'email');
$sendtouserid[] = $val;
}
@@ -215,32 +214,27 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
// Define $sendtocc
$receivercc = $_POST['receivercc'];
- if (!is_array($receivercc))
- {
- if ($receivercc == '-1') $receivercc = array();
- else $receivercc = array($receivercc);
+ if (!is_array($receivercc)) {
+ if ($receivercc == '-1') {
+ $receivercc = array();
+ } else {
+ $receivercc = array($receivercc);
+ }
}
$tmparray = array();
- if (trim($_POST['sendtocc']))
- {
+ if (trim($_POST['sendtocc'])) {
$tmparray[] = trim($_POST['sendtocc']);
}
- if (count($receivercc) > 0)
- {
- foreach ($receivercc as $key=>$val)
- {
- // Recipient was provided from combo list
- if ($val == 'thirdparty') // Key selected means currentthird party (may be usd for current member or current user too)
- {
+ if (count($receivercc) > 0) {
+ foreach ($receivercc as $key => $val) {
+ if ($val == 'thirdparty') { // Key selected means currentthird party (may be usd for current member or current user too)
+ // Recipient was provided from combo list
$tmparray[] = dol_string_nospecial($thirdparty->name, ' ', array(",")).' <'.$thirdparty->email.'>';
- }
- // Recipient was provided from combo list
- elseif ($val == 'contact') // Key selected means current contact
- {
+ } elseif ($val == 'contact') { // Key selected means current contact
+ // Recipient was provided from combo list
$tmparray[] = dol_string_nospecial($contact->name, ' ', array(",")).' <'.$contact->email.'>';
//$sendtoid[] = $contact->id; TODO Add also id of contact in CC ?
- } elseif ($val) // $val is the Id of a contact
- {
+ } elseif ($val) { // $val is the Id of a contact
$tmparray[] = $thirdparty->contact_get_property((int) $val, 'email');
//$sendtoid[] = ((int) $val); TODO Add also id of contact in CC ?
}
@@ -249,11 +243,9 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
if (!empty($conf->global->MAIN_MAIL_ENABLED_USER_DEST_SELECT)) {
$receiverccuser = $_POST['receiverccuser'];
- if (is_array($receiverccuser) && count($receiverccuser) > 0)
- {
+ if (is_array($receiverccuser) && count($receiverccuser) > 0) {
$fuserdest = new User($db);
- foreach ($receiverccuser as $key=>$val)
- {
+ foreach ($receiverccuser as $key => $val) {
$tmparray[] = $fuserdest->user_get_property($val, 'email');
$sendtoccuserid[] = $val;
}
@@ -261,8 +253,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
}
$sendtocc = implode(',', $tmparray);
- if (dol_strlen($sendto))
- {
+ if (dol_strlen($sendto)) {
// Define $urlwithroot
$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
@@ -291,8 +282,7 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$sql .= ' WHERE rowid = '.(int) $reg[1];
$resql = $db->query($sql);
$obj = $db->fetch_object($resql);
- if ($obj)
- {
+ if ($obj) {
$from = dol_string_nospecial($obj->label, ' ', array(",")).' <'.$obj->email.'>';
}
} else {
@@ -312,21 +302,20 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$sendtobcc = GETPOST('sendtoccc');
// Autocomplete the $sendtobcc
// $autocopy can be MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO, MAIN_MAIL_AUTOCOPY_SUPPLIER_PROPOSAL_TO...
- if (!empty($autocopy))
- {
+ if (!empty($autocopy)) {
$sendtobcc .= (empty($conf->global->$autocopy) ? '' : (($sendtobcc ? ", " : "").$conf->global->$autocopy));
}
$deliveryreceipt = $_POST['deliveryreceipt'];
- if ($action == 'send' || $action == 'relance')
- {
+ if ($action == 'send' || $action == 'relance') {
$actionmsg2 = $langs->transnoentities('MailSentBy').' '.CMailFile::getValidAddress($from, 4, 0, 1).' '.$langs->transnoentities('at').' '.CMailFile::getValidAddress($sendto, 4, 0, 1);
- if ($message)
- {
+ if ($message) {
$actionmsg = $langs->transnoentities('MailFrom').': '.dol_escape_htmltag($from);
$actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTo').': '.dol_escape_htmltag($sendto));
- if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc').": ".dol_escape_htmltag($sendtocc));
+ if ($sendtocc) {
+ $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc').": ".dol_escape_htmltag($sendtocc));
+ }
$actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic').": ".$subject);
$actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody').":");
$actionmsg = dol_concatdesc($actionmsg, $message);
@@ -343,50 +332,6 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$filename = $attachedfiles['names'];
$mimetype = $attachedfiles['mimes'];
- // Feature to push mail sent into Sent folder
- /* This code must be now included into the hook mail, method sendMailAfter
- if (! empty($conf->dolimail->enabled))
- {
- $mailfromid = explode("#", $_POST['frommail'],3); // $_POST['frommail'] = 'aaa#Sent# ' // TODO Use a better way to define Sent dir.
- if (count($mailfromid)==0) $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>';
- else
- {
- $mbid = $mailfromid[1];
-
- // IMAP Postbox
- $mailboxconfig = new IMAP($db);
- $mailboxconfig->fetch($mbid);
- if ($mailboxconfig->mailbox_imap_host) $ref=$mailboxconfig->get_ref();
-
- $mailboxconfig->folder_id=$mailboxconfig->mailbox_imap_outbox;
- $mailboxconfig->userfolder_fetch();
-
- if ($mailboxconfig->mailbox_save_sent_mails == 1)
- {
-
- $folder=str_replace($ref, '', $mailboxconfig->folder_cache_key);
- if (!$folder) $folder = "Sent"; // Default Sent folder
-
- $mailboxconfig->mbox = imap_open($mailboxconfig->get_connector_url().$folder, $mailboxconfig->mailbox_imap_login, $mailboxconfig->mailbox_imap_password);
- if (false === $mailboxconfig->mbox)
- {
- $info = false;
- $err = $langs->trans('Error3_Imap_Connection_Error');
- setEventMessages($err,$mailboxconfig->element, null, 'errors');
- }
- else
- {
- $mailboxconfig->mailboxid=$_POST['frommail'];
- $mailboxconfig->foldername=$folder;
- $from = $mailfromid[0] . $mailfromid[2];
- $imap=1;
- }
-
- }
- }
- }
- */
-
// Make substitution in email content
$substitutionarray = getCommonSubstitutionArray($langs, 0, null, $object);
$substitutionarray['__EMAIL__'] = $sendto;
@@ -398,38 +343,38 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$subject = make_substitutions($subject, $substitutionarray);
$message = make_substitutions($message, $substitutionarray);
- if (method_exists($object, 'makeSubstitution'))
- {
+ if (method_exists($object, 'makeSubstitution')) {
$subject = $object->makeSubstitution($subject);
$message = $object->makeSubstitution($message);
}
// Send mail (substitutionarray must be done just before this)
- if (empty($sendcontext)) $sendcontext = 'standard';
+ if (empty($sendcontext)) {
+ $sendcontext = 'standard';
+ }
$mailfile = new CMailFile($subject, $sendto, $from, $message, $filepath, $mimetype, $filename, $sendtocc, $sendtobcc, $deliveryreceipt, -1, '', '', $trackid, '', $sendcontext);
- if ($mailfile->error)
- {
+ if ($mailfile->error) {
setEventMessages($mailfile->error, $mailfile->errors, 'errors');
$action = 'presend';
} else {
$result = $mailfile->sendfile();
- if ($result)
- {
+ if ($result) {
// Initialisation of datas of object to call trigger
- if (is_object($object))
- {
- if (empty($actiontypecode)) $actiontypecode = 'AC_OTH_AUTO'; // Event insert into agenda automatically
+ if (is_object($object)) {
+ if (empty($actiontypecode)) {
+ $actiontypecode = 'AC_OTH_AUTO'; // Event insert into agenda automatically
+ }
$object->socid = $sendtosocid; // To link to a company
$object->sendtoid = $sendtoid; // To link to contact-addresses. This is an array.
$object->actiontypecode = $actiontypecode; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
$object->actionmsg = $actionmsg; // Long text (@todo Replace this with $message, we already have details of email in dedicated properties)
- $object->actionmsg2 = $actionmsg2; // Short text ($langs->transnoentities('MailSentBy')...);
+ $object->actionmsg2 = $actionmsg2; // Short text ($langs->transnoentities('MailSentBy')...);
$object->trackid = $trackid;
- $object->fk_element = $object->id;
- $object->elementtype = $object->element;
+ $object->fk_element = $object->id;
+ $object->elementtype = $object->element;
if (is_array($attachedfiles) && count($attachedfiles) > 0) {
$object->attachedfiles = $attachedfiles;
}
@@ -447,11 +392,12 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$object->email_msgid = $mailfile->msgid;
// Call of triggers (you should have set $triggersendname to execute trigger. $trigger_name is deprecated)
- if (!empty($triggersendname) || !empty($trigger_name))
- {
+ if (!empty($triggersendname) || !empty($trigger_name)) {
// Call trigger
$result = $object->call_trigger(empty($triggersendname) ? $trigger_name : $triggersendname, $user);
- if ($result < 0) $error++;
+ if ($result < 0) {
+ $error++;
+ }
// End call triggers
if ($error) {
@@ -466,10 +412,12 @@ if (($action == 'send' || $action == 'relance') && !$_POST['addfile'] && !$_POST
$mesg = $langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($sendto, 2));
setEventMessages($mesg, null, 'mesgs');
- $moreparam = '';
- if (isset($paramname2) || isset($paramval2)) $moreparam .= '&'.($paramname2 ? $paramname2 : 'mid').'='.$paramval2;
- header('Location: '.$_SERVER["PHP_SELF"].'?'.($paramname ? $paramname : 'id').'='.(is_object($object) ? $object->id : '').$moreparam);
- exit;
+ $moreparam = '';
+ if (isset($paramname2) || isset($paramval2)) {
+ $moreparam .= '&'.($paramname2 ? $paramname2 : 'mid').'='.$paramval2;
+ }
+ header('Location: '.$_SERVER["PHP_SELF"].'?'.($paramname ? $paramname : 'id').'='.(is_object($object) ? $object->id : '').$moreparam);
+ exit;
} else {
$langs->load("other");
$mesg = '';
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 7be97293938..20721b8ea05 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -6668,8 +6668,7 @@ class Form
});
';
- if ($acceptdelayedhtml)
- {
+ if ($acceptdelayedhtml) {
$delayedhtmlcontent .= $outdelayed;
} else {
$out .= $outdelayed;
@@ -6707,24 +6706,20 @@ class Form
}
// Add code for jquery to use multiselect
- if (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT'))
- {
+ if (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) {
$out .= "\n".'