Compare commits

...

30 Commits
13.0.0 ... 10.0

Author SHA1 Message Date
Florian Mortgat
74b67eb6c6 FIX - use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) 2024-09-29 15:57:05 +02:00
Florian Mortgat
c727bbb530 FIX: when qty is not an integer, apply price() (#31138)
* FIX: when qty is not an integer, apply price() to avoid displaying precision errors if php.ini's precision settings are too high

* Apply eldy's suggestion to use price's parameters rather than a test
2024-09-26 18:41:41 +02:00
Laurent Destailleur
34b3113bb7 Merge branch '9.0' of git@github.com:Dolibarr/dolibarr.git into 10.0 2023-08-10 10:41:20 +02:00
Laurent Destailleur
90854dc2bf FIX Use the wrong logo size on PDF 2023-07-30 19:53:56 +02:00
Laurent Destailleur
b44ddaa696 FIX Use the wrong logo size on PDF 2023-07-30 18:04:03 +02:00
Laurent Destailleur
41a970c90f Merge pull request #22922 from ATM-Nicolas/fix_sql_request_parenthesis
FIX sql request parenthesis
2022-11-22 21:39:11 +01:00
ATM-Nicolas
3d9b2a1676 FIX : SQL request parenthesis 2022-11-22 15:32:37 +01:00
Laurent Destailleur
b5f887b3e4 Fix DEBUGBAR_USE_LOG_FILE 2022-05-03 11:52:32 +02:00
Laurent Destailleur
79371f66b0 Merge branch '9.0' of git@github.com:Dolibarr/dolibarr.git into 10.0 2022-03-10 15:52:28 +01:00
Laurent Destailleur
4569cb82b2 Merge branch '8.0' of git@github.com:Dolibarr/dolibarr.git into 9.0 2022-03-10 15:52:04 +01:00
Laurent Destailleur
04d33f4594 Merge branch '7.0' of git@github.com:Dolibarr/dolibarr.git into 8.0 2022-03-10 15:51:42 +01:00
Laurent Destailleur
af6e95aa79 Merge branch '6.0' of git@github.com:Dolibarr/dolibarr.git into 7.0
Conflicts:
	htdocs/core/class/utils.class.php
2022-03-10 15:49:51 +01:00
Laurent Destailleur
5d942c9d1a Fix infinit logs 2022-03-10 15:46:00 +01:00
Laurent Destailleur
5ee74d7c07 Merge branch '9.0' of git@github.com:Dolibarr/dolibarr.git into 10.0 2022-01-07 15:45:51 +01:00
Laurent Destailleur
1541e20870 Merge branch '8.0' of git@github.com:Dolibarr/dolibarr.git into 9.0
Conflicts:
	htdocs/core/class/utils.class.php
2022-01-07 15:43:28 +01:00
Laurent Destailleur
53709cf509 Merge branch '7.0' of git@github.com:Dolibarr/dolibarr.git into 8.0
Conflicts:
	htdocs/core/class/utils.class.php
2022-01-07 15:40:05 +01:00
Laurent Destailleur
10e32c056e FIX avoid infinite loop on dump with popen 2022-01-07 15:35:33 +01:00
Laurent Destailleur
0a72aed3d7 Fix missing space before union 2021-12-23 13:35:38 +01:00
Laurent Destailleur
ba724204a4 FIX Bad use of dol_concatdesc() 2021-11-11 15:50:32 +01:00
Laurent Destailleur
e81023c35a Update doc 2021-06-14 15:12:08 +02:00
Laurent Destailleur
e8d9e9e697 Merge pull request #17659 from gmilad/gmilad-fix-17608-b10
Fix issue #17608 for branch 10
2021-05-20 14:34:12 +02:00
gmilad
57732d4265 Fix issue #17608 for branch 10
Fix issue #17608 for branch 10
2021-05-18 19:45:15 +02:00
Laurent Destailleur
2637f9af63 Merge pull request #17586 from atm-quentin/FIX_missing_town_and_zip_filter
FIX missing town and zip filter in contract list sql request
2021-05-17 10:08:44 +02:00
Quentin VIAL-GOUTEYRON
56d78cf12a FIX missing town and zip filter in contract list sql request 2021-05-12 11:02:27 +02:00
Laurent Destailleur
b9a91f92ea Merge pull request #16984 from aspangaro/10p38
FIX Search on date in accountancy
2021-03-29 16:12:31 +02:00
Alexandre SPANGARO
56ae51375d FIX Search on date in accountancy 2021-03-27 07:11:28 +01:00
Laurent Destailleur
c888ce08c1 Merge pull request #16174 from atm-florianm/fix/10.0_check_withdrawal_already_credited_before_crediting_it
FIX 10.0 - before crediting a withdrawal receipt, check whether it has been credited already
2021-02-06 01:00:56 +01:00
Florian Mortgat
3f862bf43e FIX 10.0 - before crediting a withdrawal receipt, check whether it has been credited already 2021-02-05 11:34:39 +01:00
Laurent Destailleur
9ef5f26624 Merge pull request #14022 from OPEN-DSI/fix_supplier_order_dispatching
FIX: Fix detect dispatched product and set to received completely when the supplier order have services
2021-01-31 18:51:57 +01:00
kamel
5bae9db0a8 FIX: Fix detect distached product and set to received completely when the supplier order have services (support STOCK_SUPPORTS_SERVICES) 2020-06-02 17:29:55 +02:00
25 changed files with 106 additions and 91 deletions

View File

@@ -17,8 +17,6 @@ on Internet on web following sites:<br>
<br> <br>
* <a href="https://demo.dolibarr.org">Dolibarr demo (online)</a><br> * <a href="https://demo.dolibarr.org">Dolibarr demo (online)</a><br>
<br> <br>
* <a href="https://www.nltechno.com/pages/dolibarrwinbin.php">DoliWamp, the Dolibarr for Windows</a><br>
<br>
* <a href="https://www.dolistore.com">DoliStore (official addons/plugins market place)</a><br> * <a href="https://www.dolistore.com">DoliStore (official addons/plugins market place)</a><br>
</body> </body>

View File

@@ -19,7 +19,7 @@ Download
Install Install
-------------------------------- --------------------------------
* For a Quick guide, take a look at README file into root directory. * For a Quick guide, take a look at README.md file into root directory.
* More complete documentations are also available on line on the Dolibarr Wiki: * More complete documentations are also available on line on the Dolibarr Wiki:
https://wiki.dolibarr.org https://wiki.dolibarr.org

View File

@@ -22,7 +22,7 @@ Download / Herunterladen
Installation Installation
-------------------------------- --------------------------------
* Für eine kurze Einleitung, schau auf die README Datei im Hauptverzeichnis. * Für eine kurze Einleitung, schau auf die README.md Datei im Hauptverzeichnis.
* Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden: * Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden:
https://wiki.dolibarr.org/index.php/Hauptseite https://wiki.dolibarr.org/index.php/Hauptseite

View File

@@ -19,9 +19,7 @@ https://www.dolistore.org
Documentation utilisateur Documentation utilisateur
-------------------------------- --------------------------------
* Pour une prise en main et installation rapide, consultez le fichier * Pour une prise en main et installation rapide, consultez le fichier README-FR.md à la racine.
README-FR à la racine.
* Une documentation utilisateur francophone plus consistante est disponible en * Une documentation utilisateur francophone plus consistante est disponible en ligne sur le wiki de Dolibarr à l'adresse:
ligne sur le wiki de Dolibarr à l'adresse: https://wiki.dolibarr.org
https://wiki.dolibarr.org

View File

@@ -4,4 +4,5 @@ User guide
-------------------------------- --------------------------------
* All Dolibarr guides are available, on line, on the Dolibarr Web site: * All Dolibarr guides are available, on line, on the Dolibarr Web site:
https://www.dolibarr.org https://www.dolibarr.org

View File

@@ -3,9 +3,6 @@ README (french)
Documentation utilisateur Documentation utilisateur
-------------------------------- --------------------------------
* Pour une prise en main et installation rapide, consultez le fichier La documentation utilisateur francophone est disponible en ligne sur le site Web de Dolibarr à l'adresse:
README-FR à la racine.
* Une documentation utilisateur francophone plus consistante est disponible en
ligne sur le site Web de Dolibarr à l'adresse:
https://www.dolibarr.fr https://www.dolibarr.fr

View File

@@ -42,14 +42,14 @@ $search_mvt_num = GETPOST('search_mvt_num', 'int');
$search_doc_type = GETPOST("search_doc_type", 'alpha'); $search_doc_type = GETPOST("search_doc_type", 'alpha');
$search_doc_ref = GETPOST("search_doc_ref", 'alpha'); $search_doc_ref = GETPOST("search_doc_ref", 'alpha');
$search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int'), GETPOST('search_date_startday', 'int'), GETPOST('search_date_startyear', 'int')); $search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int'), GETPOST('search_date_startday', 'int'), GETPOST('search_date_startyear', 'int'));
$search_date_end = dol_mktime(0, 0, 0, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int')); $search_date_end = dol_mktime(23, 59, 59, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int'));
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int')); $search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
$search_date_creation_start = dol_mktime(0, 0, 0, GETPOST('date_creation_startmonth', 'int'), GETPOST('date_creation_startday', 'int'), GETPOST('date_creation_startyear', 'int')); $search_date_creation_start = dol_mktime(0, 0, 0, GETPOST('date_creation_startmonth', 'int'), GETPOST('date_creation_startday', 'int'), GETPOST('date_creation_startyear', 'int'));
$search_date_creation_end = dol_mktime(0, 0, 0, GETPOST('date_creation_endmonth', 'int'), GETPOST('date_creation_endday', 'int'), GETPOST('date_creation_endyear', 'int')); $search_date_creation_end = dol_mktime(23, 59, 59, GETPOST('date_creation_endmonth', 'int'), GETPOST('date_creation_endday', 'int'), GETPOST('date_creation_endyear', 'int'));
$search_date_modification_start = dol_mktime(0, 0, 0, GETPOST('date_modification_startmonth', 'int'), GETPOST('date_modification_startday', 'int'), GETPOST('date_modification_startyear', 'int')); $search_date_modification_start = dol_mktime(0, 0, 0, GETPOST('date_modification_startmonth', 'int'), GETPOST('date_modification_startday', 'int'), GETPOST('date_modification_startyear', 'int'));
$search_date_modification_end = dol_mktime(0, 0, 0, GETPOST('date_modification_endmonth', 'int'), GETPOST('date_modification_endday', 'int'), GETPOST('date_modification_endyear', 'int')); $search_date_modification_end = dol_mktime(23, 59, 59, GETPOST('date_modification_endmonth', 'int'), GETPOST('date_modification_endday', 'int'), GETPOST('date_modification_endyear', 'int'));
$search_date_export_start = dol_mktime(0, 0, 0, GETPOST('date_export_startmonth', 'int'), GETPOST('date_export_startday', 'int'), GETPOST('date_export_startyear', 'int')); $search_date_export_start = dol_mktime(0, 0, 0, GETPOST('date_export_startmonth', 'int'), GETPOST('date_export_startday', 'int'), GETPOST('date_export_startyear', 'int'));
$search_date_export_end = dol_mktime(0, 0, 0, GETPOST('date_export_endmonth', 'int'), GETPOST('date_export_endday', 'int'), GETPOST('date_export_endyear', 'int')); $search_date_export_end = dol_mktime(23, 59, 59, GETPOST('date_export_endmonth', 'int'), GETPOST('date_export_endday', 'int'), GETPOST('date_export_endyear', 'int'));
//var_dump($search_date_start);exit; //var_dump($search_date_start);exit;
if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) { if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) {

View File

@@ -42,7 +42,7 @@ $sortorder = GETPOST("sortorder");
$sortfield = GETPOST("sortfield"); $sortfield = GETPOST("sortfield");
$action = GETPOST('action', 'alpha'); $action = GETPOST('action', 'alpha');
$search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int'), GETPOST('search_date_startday', 'int'), GETPOST('search_date_startyear', 'int')); $search_date_start = dol_mktime(0, 0, 0, GETPOST('search_date_startmonth', 'int'), GETPOST('search_date_startday', 'int'), GETPOST('search_date_startyear', 'int'));
$search_date_end = dol_mktime(0, 0, 0, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int')); $search_date_end = dol_mktime(23, 59, 59, GETPOST('search_date_endmonth', 'int'), GETPOST('search_date_endday', 'int'), GETPOST('search_date_endyear', 'int'));
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int')); $search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
$search_accountancy_code = GETPOST("search_accountancy_code"); $search_accountancy_code = GETPOST("search_accountancy_code");

View File

@@ -200,7 +200,7 @@ if ($action == 'delete')
$form = new Form($db); $form = new Form($db);
$formadmin = new FormAdmin($db); $formadmin = new FormAdmin($db);
$wikihelp='EN:Setup|FR:Paramétrage|ES:Configuración'; $wikihelp = 'EN:Setup_Translation|FR:Paramétrage_Traduction|ES:Configuración_Traducción';
llxHeader('', $langs->trans("Setup"), $wikihelp); llxHeader('', $langs->trans("Setup"), $wikihelp);
$param='&mode='.$mode; $param='&mode='.$mode;

View File

@@ -85,16 +85,21 @@ if (empty($reshook))
} }
} }
// Seems to no be used and replaced with $action == 'infocredit' // Seems to no be used and replaced with $action == 'infocredit'
if ( $action == 'confirm_credite' && GETPOST('confirm', 'alpha') == 'yes') if ( $action == 'confirm_credite' && GETPOST('confirm', 'alpha') == 'yes')
{ {
$res=$object->set_credite(); if ($object->statut == 2) {
if ($res >= 0) $res = -1;
{ setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors');
header("Location: card.php?id=".$id); } else {
exit; $res=$object->set_credite();
} }
} if ($res >= 0)
{
header("Location: card.php?id=".$id);
exit;
}
}
if ($action == 'infotrans' && $user->rights->prelevement->bons->send) if ($action == 'infotrans' && $user->rights->prelevement->bons->send)
{ {
@@ -135,14 +140,19 @@ if (empty($reshook))
{ {
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); $dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
$error = $object->set_infocredit($user, $dt); if ($object->statut == 2) {
$error = 1;
setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors');
} else {
$error = $object->set_infocredit($user, $dt);
}
if ($error) if ($error)
{ {
header("Location: card.php?id=".$id."&error=$error"); header("Location: card.php?id=".$id."&error=$error");
exit; exit;
} }
} }
} }

View File

@@ -425,7 +425,7 @@ print_liste_field_titre(
// Quantity // Quantity
print '<td class="right">'; print '<td class="right">';
print $qty[$key]; print price($qty[$key], 1, $langs, 0, 0);
print '</td>'; print '</td>';
// Percent; // Percent;

View File

@@ -256,6 +256,8 @@ if ($search_email) $sql .= natural_search('s.email', $search_email);
if ($search_contract) $sql .= natural_search(array('c.rowid', 'c.ref'), $search_contract); if ($search_contract) $sql .= natural_search(array('c.rowid', 'c.ref'), $search_contract);
if (!empty($search_ref_customer)) $sql .= natural_search(array('c.ref_customer'), $search_ref_customer); if (!empty($search_ref_customer)) $sql .= natural_search(array('c.ref_customer'), $search_ref_customer);
if (!empty($search_ref_supplier)) $sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier); if (!empty($search_ref_supplier)) $sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier);
if ($search_zip) $sql .= natural_search(array('s.zip'), $search_zip);
if ($search_town) $sql .= natural_search(array('s.town'), $search_town);
if ($search_sale > 0) if ($search_sale > 0)
{ {
$sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;

View File

@@ -468,7 +468,7 @@ class Translate
if (! $found && ! empty($conf->global->MAIN_ENABLE_OVERWRITE_TRANSLATION)) if (! $found && ! empty($conf->global->MAIN_ENABLE_OVERWRITE_TRANSLATION))
{ {
// Overwrite translation with database read // Overwrite translation with database read
$sql ="SELECT transkey, transvalue FROM ".MAIN_DB_PREFIX."overwrite_trans where lang='".$db->escape($this->defaultlang)."' OR lang IS NULL"; $sql ="SELECT transkey, transvalue FROM ".MAIN_DB_PREFIX."overwrite_trans where (lang='".$db->escape($this->defaultlang)."' OR lang IS NULL)";
$sql.=" AND entity IN (0, ".getEntity('overwrite_trans').")"; $sql.=" AND entity IN (0, ".getEntity('overwrite_trans').")";
$sql.=$db->order("lang", "DESC"); $sql.=$db->order("lang", "DESC");
$resql=$db->query($sql); $resql=$db->query($sql);

View File

@@ -347,17 +347,19 @@ class Utils
{ {
$handlein = popen($fullcommandclear, 'r'); $handlein = popen($fullcommandclear, 'r');
$i=0; $i=0;
while (!feof($handlein)) if ($handlein) {
{ while (!feof($handlein))
$i++; // output line number {
$read = fgets($handlein); $i++; // output line number
// Exclude warning line we don't want $read = fgets($handlein);
if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) continue; // Exclude warning line we don't want
fwrite($handle, $read); if ($i == 1 && preg_match('/Warning.*Using a password/i', $read)) continue;
if (preg_match('/'.preg_quote('-- Dump completed').'/i', $read)) $ok=1; fwrite($handle, $read);
elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i', $read)) $ok=1; if (preg_match('/'.preg_quote('-- Dump completed').'/i', $read)) $ok=1;
elseif (preg_match('/'.preg_quote('SET SQL_NOTES=@OLD_SQL_NOTES').'/i', $read)) $ok=1;
}
pclose($handlein);
} }
pclose($handlein);
} }

View File

@@ -363,7 +363,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_propale['nb']; print $product->stats_propale['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_propale['qty']; print price($product->stats_propale['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -381,7 +381,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_proposal_supplier['nb']; print $product->stats_proposal_supplier['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_proposal_supplier['qty']; print price($product->stats_proposal_supplier['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -399,7 +399,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_commande['nb']; print $product->stats_commande['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_commande['qty']; print price($product->stats_commande['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -417,7 +417,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_commande_fournisseur['nb']; print $product->stats_commande_fournisseur['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_commande_fournisseur['qty']; print price($product->stats_commande_fournisseur['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -435,7 +435,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_facture['nb']; print $product->stats_facture['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_facture['qty']; print price($product->stats_facture['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -453,7 +453,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_facture_fournisseur['nb']; print $product->stats_facture_fournisseur['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_facture_fournisseur['qty']; print price($product->stats_facture_fournisseur['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
@@ -472,7 +472,7 @@ function show_stats_for_company($product, $socid)
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_contrat['nb']; print $product->stats_contrat['nb'];
print '</td><td class="right">'; print '</td><td class="right">';
print $product->stats_contrat['qty']; print price($product->stats_contrat['qty'], 1, $langs, 0, 0);
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }

View File

@@ -1262,12 +1262,12 @@ class pdf_einstein extends ModelePDFCommandes
{ {
if ($this->emetteur->logo) if ($this->emetteur->logo)
{ {
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) $logodir = $conf->mycompany->dir_output;
{ if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity];
$logo=$conf->mycompany->dir_output.'/logos/thumbs/'.$this->emetteur->logo_small; if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) {
} $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
else { } else {
$logo=$conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; $logo = $logodir.'/logos/'.$this->emetteur->logo;
} }
if (is_readable($logo)) if (is_readable($logo))
{ {

View File

@@ -1573,12 +1573,12 @@ class pdf_crabe extends ModelePDFFactures
{ {
if ($this->emetteur->logo) if ($this->emetteur->logo)
{ {
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) $logodir = $conf->mycompany->dir_output;
{ if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity];
$logo=$conf->mycompany->dir_output.'/logos/thumbs/'.$this->emetteur->logo_small; if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) {
} $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
else { } else {
$logo=$conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; $logo = $logodir.'/logos/'.$this->emetteur->logo;
} }
if (is_readable($logo)) if (is_readable($logo))
{ {

View File

@@ -259,7 +259,7 @@ class pdf_azur extends ModelePDFPropales
if (! $arephoto) if (! $arephoto)
{ {
if ($conf->product->entity != $objphoto->entity) { if ($conf->product->entity != $objphoto->entity) {
$dir = $conf->product->multidir_output[$objphoto->entity].'/'.$midir; //Check repertories of current entities $dir = $conf->product->multidir_output[$objphoto->entity].'/'.$midir; //Check repertories of current entities
}else{ }else{
@@ -1471,12 +1471,12 @@ class pdf_azur extends ModelePDFPropales
{ {
if ($this->emetteur->logo) if ($this->emetteur->logo)
{ {
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) $logodir = $conf->mycompany->dir_output;
{ if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity];
$logo=$conf->mycompany->dir_output.'/logos/thumbs/'.$this->emetteur->logo_small; if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) {
} $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
else { } else {
$logo=$conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; $logo = $logodir.'/logos/'.$this->emetteur->logo;
} }
if (is_readable($logo)) if (is_readable($logo))
{ {

View File

@@ -1509,12 +1509,12 @@ class pdf_cyan extends ModelePDFPropales
{ {
if ($this->emetteur->logo) if ($this->emetteur->logo)
{ {
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) $logodir = $conf->mycompany->dir_output;
{ if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity];
$logo=$conf->mycompany->dir_output.'/logos/thumbs/'.$this->emetteur->logo_small; if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) {
} $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
else { } else {
$logo=$conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; $logo = $logodir.'/logos/'.$this->emetteur->logo;
} }
if (is_readable($logo)) if (is_readable($logo))
{ {

View File

@@ -259,11 +259,11 @@ class DataPolicy
{ {
if ($sendtocc) if ($sendtocc)
{ {
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc);
} }
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject);
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":");
$actionmsg .= dol_concatdesc($actionmsg, $message); $actionmsg = dol_concatdesc($actionmsg, $message);
} }
// Send mail // Send mail
@@ -329,11 +329,11 @@ class DataPolicy
$actionmsg = $langs->transnoentities('MailSentBy') . ' ' . $from . ' ' . $langs->transnoentities('To') . ' ' . $sendto; $actionmsg = $langs->transnoentities('MailSentBy') . ' ' . $from . ' ' . $langs->transnoentities('To') . ' ' . $sendto;
if ($message) { if ($message) {
if ($sendtocc) { if ($sendtocc) {
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc);
} }
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject);
$actionmsg .= dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":");
$actionmsg .= dol_concatdesc($actionmsg, $message); $actionmsg = dol_concatdesc($actionmsg, $message);
} }

View File

@@ -72,7 +72,7 @@ class DolLogsCollector extends MessagesCollector
{ {
global $conf; global $conf;
$uselogfile=$conf->global->DEBUGBAR_USE_LOGFILE; $uselogfile=$conf->global->DEBUGBAR_USE_LOG_FILE;
if ($uselogfile) if ($uselogfile)
{ {

View File

@@ -2174,7 +2174,7 @@ class ExpenseReport extends CommonObject
$sql = "SELECT DISTINCT ur.fk_user"; $sql = "SELECT DISTINCT ur.fk_user";
$sql.= " FROM ".MAIN_DB_PREFIX."user_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd"; $sql.= " FROM ".MAIN_DB_PREFIX."user_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd";
$sql.= " WHERE ur.fk_id = rd.id and rd.module = 'expensereport' AND rd.perms = 'approve'"; // Permission 'Approve'; $sql.= " WHERE ur.fk_id = rd.id and rd.module = 'expensereport' AND rd.perms = 'approve'"; // Permission 'Approve';
$sql.= "UNION"; $sql.= " UNION";
$sql.= " SELECT DISTINCT ugu.fk_user"; $sql.= " SELECT DISTINCT ugu.fk_user";
$sql.= " FROM ".MAIN_DB_PREFIX."usergroup_user as ugu, ".MAIN_DB_PREFIX."usergroup_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd"; $sql.= " FROM ".MAIN_DB_PREFIX."usergroup_user as ugu, ".MAIN_DB_PREFIX."usergroup_rights as ur, ".MAIN_DB_PREFIX."rights_def as rd";
$sql.= " WHERE ugu.fk_usergroup = ur.fk_usergroup AND ur.fk_id = rd.id and rd.module = 'expensereport' AND rd.perms = 'approve'"; // Permission 'Approve'; $sql.= " WHERE ugu.fk_usergroup = ur.fk_usergroup AND ur.fk_id = rd.id and rd.module = 'expensereport' AND rd.perms = 'approve'"; // Permission 'Approve';

View File

@@ -3070,6 +3070,7 @@ class CommandeFournisseur extends CommonOrder
{ {
if (is_array($supplierorderdispatch->lines) && count($supplierorderdispatch->lines)>0) if (is_array($supplierorderdispatch->lines) && count($supplierorderdispatch->lines)>0)
{ {
require_once DOL_DOCUMENT_ROOT.'/htdocs/product/class/product.class.php';
$date_liv = dol_now(); $date_liv = dol_now();
// Build array with quantity deliverd by product // Build array with quantity deliverd by product
@@ -3077,7 +3078,11 @@ class CommandeFournisseur extends CommonOrder
$qtydelivered[$line->fk_product]+=$line->qty; $qtydelivered[$line->fk_product]+=$line->qty;
} }
foreach($this->lines as $line) { foreach($this->lines as $line) {
$qtywished[$line->fk_product]+=$line->qty; if ($line->product_type == Product::TYPE_PRODUCT ||
($line->product_type == Product::TYPE_SERVICE && !empty($conf->global->STOCK_SUPPORTS_SERVICES))
) {
$qtywished[$line->fk_product] += $line->qty;
}
} }
//Compare array //Compare array
$diff_array=array_diff_assoc($qtydelivered, $qtywished); // Warning: $diff_array is done only on common keys. $diff_array=array_diff_assoc($qtydelivered, $qtywished); // Warning: $diff_array is done only on common keys.

View File

@@ -27,6 +27,7 @@ MakeWithdrawRequest=Make a direct debit payment request
WithdrawRequestsDone=%s direct debit payment requests recorded WithdrawRequestsDone=%s direct debit payment requests recorded
ThirdPartyBankCode=Third-party bank code ThirdPartyBankCode=Third-party bank code
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>. NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>.
WithdrawalCantBeCreditedTwice=This withdrawal receipt is already marked as credited; this can't be done twice, as this would potentially create duplicate payments and bank entries.
ClassCredited=Classify credited ClassCredited=Classify credited
ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account?
TransData=Transmission date TransData=Transmission date

View File

@@ -27,6 +27,7 @@ MakeWithdrawRequest=Faire une demande de prélèvement
WithdrawRequestsDone=%s demandes de prélèvements enregistrées WithdrawRequestsDone=%s demandes de prélèvements enregistrées
ThirdPartyBankCode=Code banque du tiers ThirdPartyBankCode=Code banque du tiers
NoInvoiceCouldBeWithdrawed=Aucune facture traitée avec succès. Vérifiez que les factures sont sur les sociétés avec un BAN par défaut valide et que le BAN a un RUM avec le mode <strong> %s </strong>. NoInvoiceCouldBeWithdrawed=Aucune facture traitée avec succès. Vérifiez que les factures sont sur les sociétés avec un BAN par défaut valide et que le BAN a un RUM avec le mode <strong> %s </strong>.
WithdrawalCantBeCreditedTwice=Ce bon de prélèvement est déjà classé crédité; cette opération ne peut pas être réalisée deux fois, car cela pourrait engendrer des doublons dans les paiements et les écritures bancaires.
ClassCredited=Classer crédité ClassCredited=Classer crédité
ClassCreditedConfirm=Êtes-vous sûr de vouloir classer ce bon de prélèvement comme crédité sur votre compte bancaire ? ClassCreditedConfirm=Êtes-vous sûr de vouloir classer ce bon de prélèvement comme crédité sur votre compte bancaire ?
TransData=Date de transmission TransData=Date de transmission