';
print '';
print '| '.$langs->trans("Type").' | ';
print ''.$langs->trans("Name").' | ';
- print ' | ';
+ print ' | ';
print "
\n";
$listtype = array(
@@ -659,6 +660,7 @@ print load_fiche_titre($langs->trans("SuggestedPaymentModesIfNotDefinedInInvoice
print '';
@@ -777,6 +785,7 @@ $htmltext .= '';
print '';
@@ -796,12 +805,13 @@ print '';
print '';
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index e62067bd89a..6d3048b8e65 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -2903,19 +2903,23 @@ if ($action == 'create') {
print '' . $langs->transcountry("AmountLT1", $mysoc->country_code) . ' | ';
print '' . price($object->total_localtax1, 0, $langs, 1, -1, -1, $conf->currency) . ' | ';
if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($object->total_localtax1, 0, $langs, 1, -1, -1, $object->multicurrency_code) . ' | ';
+ $object->multicurrency_total_localtax1 = price2num($object->total_localtax1 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($object->multicurrency_total_localtax1, 0, $langs, 1, -1, -1, $object->multicurrency_code) . ' | ';
}
print '';
+ }
- if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) {
- print '';
- print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
- print '' . price($object->total_localtax2, 0, $langs, 1, -1, -1, $conf->currency) . ' | ';
- if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($object->total_localtax2, 0, $langs, 1, -1, -1, $object->multicurrency_code) . ' | ';
- }
- print '
';
+ if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) {
+ print '';
+ print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
+ print '' . price($object->total_localtax2, 0, $langs, 1, -1, -1, $conf->currency) . ' | ';
+ if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
+ $object->multicurrency_total_localtax2 = price2num($object->total_localtax2 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($object->multicurrency_total_localtax2, 0, $langs, 1, -1, -1, $object->multicurrency_code) . ' | ';
}
+ print '
';
}
print '';
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index 51cb5484af0..00311e60480 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -281,18 +281,6 @@ class Propal extends CommonObject
public $labelStatus = array();
public $labelStatusShort = array();
- // Multicurrency
- /**
- * @var int ID
- */
- public $fk_multicurrency;
-
- public $multicurrency_code;
- public $multicurrency_tx;
- public $multicurrency_total_ht;
- public $multicurrency_total_tva;
- public $multicurrency_total_ttc;
-
/**
* 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 1f13f844c5c..f918d886795 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -2804,20 +2804,24 @@ if ($action == 'create' && $usercancreate) {
print '| ' . $langs->transcountry("AmountLT1", $mysoc->country_code) . ' | ';
print '' . price($object->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($object->total_localtax1, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
+ $object->multicurrency_total_localtax1 = price2num($object->total_localtax1 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($object->multicurrency_total_localtax1, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
}
print '
';
+ }
- // Amount Local Taxes
- if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) {
- print '';
- print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
- print '' . price($object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
- if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($object->total_localtax2, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
- }
- print '
';
+ // Amount Local Taxes
+ if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) {
+ print '';
+ print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
+ print '' . price($object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
+ if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
+ $object->multicurrency_total_localtax2 = price2num($object->total_localtax2 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($object->multicurrency_total_localtax2, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
}
+ print '
';
}
print '';
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 07dccd2bf24..0929345915b 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -253,20 +253,6 @@ class Commande extends CommonOrder
*/
public $lines = array();
- // Multicurrency
- /**
- * @var int Currency ID
- */
- public $fk_multicurrency;
-
- /**
- * @var string multicurrency code
- */
- public $multicurrency_code;
- public $multicurrency_tx;
- public $multicurrency_total_ht;
- public $multicurrency_total_tva;
- public $multicurrency_total_ttc;
//! key of module source when order generated from a dedicated module ('cashdesk', 'takepos', ...)
public $module_source;
diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php
index 30b7d6e655a..7296c3dd820 100644
--- a/htdocs/compta/facture/card.php
+++ b/htdocs/compta/facture/card.php
@@ -5014,21 +5014,24 @@ if ($action == 'create') {
print '| ' . $langs->transcountry("AmountLT1", $mysoc->country_code) . ' | ';
print '' . price($sign * $object->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($sign * $object->total_localtax1, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
+ $object->multicurrency_total_localtax1 = price2num($object->total_localtax1 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($sign * $object->multicurrency_total_localtax1, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
}
print '
';
-
- if (($mysoc->localtax2_assuj == "1" && $mysoc->useLocalTax(2)) || $object->total_localtax2 != 0) {
- print '';
- print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
- print '' . price($sign * $object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
- if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
- print '' . price($sign * $object->total_localtax2, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
- }
- print '
';
- }
}
+ if (($mysoc->localtax2_assuj == "1" && $mysoc->useLocalTax(2)) || $object->total_localtax2 != 0) {
+ print '';
+ print '| ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ' | ';
+ print '' . price($sign * $object->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency) . ' | ';
+ if (isModEnabled("multicurrency") && ($object->multicurrency_code && $object->multicurrency_code != $conf->currency)) {
+ $object->multicurrency_total_localtax2 = price2num($object->total_localtax2 * $object->multicurrency_tx, 'MT');
+
+ print '' . price($sign * $object->multicurrency_total_localtax2, 0, $langs, 0, -1, -1, $object->multicurrency_code) . ' | ';
+ }
+ print '
';
+ }
// Add the revenue stamp
if ($selleruserevenustamp) {
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 8aee3548b16..d1d37f33589 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -194,6 +194,7 @@ class Facture extends CommonInvoice
public $date_pointoftax;
+
/**
* @var int Situation cycle reference number
*/
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 19ae71b14e2..6d3d2c65557 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -504,6 +504,16 @@ abstract class CommonObject
*/
public $multicurrency_total_ttc;
+ /**
+ * @var float Multicurrency total localta1
+ */
+ public $multicurrency_total_localtax1; // not in database
+
+ /**
+ * @var float Multicurrency total localtax2
+ */
+ public $multicurrency_total_localtax2; // not in database
+
/**
* @var string
* @see SetDocModel()
diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php
index d19e28faa01..960d9ee7eec 100644
--- a/htdocs/core/lib/files.lib.php
+++ b/htdocs/core/lib/files.lib.php
@@ -644,19 +644,17 @@ function dol_fileperm($pathoffile)
/**
* Make replacement of strings into a file.
*
- * @param string $srcfile Source file (can't be a directory)
+ * @param string $srcfile Source file (can't be a directory)
* @param array $arrayreplacement Array with strings to replace. Example: array('valuebefore'=>'valueafter', ...)
- * @param string $destfile Destination file (can't be a directory). If empty, will be same than source file.
- * @param string $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666'
- * @param int $indexdatabase 1=index new file into database.
- * @param int $arrayreplacementisregex 1=Array of replacement is already an array with key that is a regex. Warning: the key must be escaped with preg_quote for '/'
- * @return int Return integer <0 if error, 0 if nothing done (dest file already exists), >0 if OK
+ * @param string $destfile Destination file (can't be a directory). If empty, will be same than source file.
+ * @param string $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666'
+ * @param int $indexdatabase 1=index new file into database.
+ * @param int $arrayreplacementisregex 1=Array of replacement is already an array with key that is a regex. Warning: the key must be escaped with preg_quote for '/'
+ * @return int Return integer <0 if error, 0 if nothing done (dest file already exists), >0 if OK
* @see dol_copy()
*/
function dolReplaceInFile($srcfile, $arrayreplacement, $destfile = '', $newmask = '0', $indexdatabase = 0, $arrayreplacementisregex = 0)
{
- global $conf;
-
dol_syslog("files.lib.php::dolReplaceInFile srcfile=".$srcfile." destfile=".$destfile." newmask=".$newmask." indexdatabase=".$indexdatabase." arrayreplacementisregex=".$arrayreplacementisregex);
if (empty($srcfile)) {
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index a2775bed055..2d1fade00b6 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -8322,7 +8322,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
'__USER_SIGNATURE__' => (string) (($usersignature && !getDolGlobalString('MAIN_MAIL_DO_NOT_USE_SIGN')) ? ($onlykey == 2 ? dol_trunc(dol_string_nohtmltag($usersignature), 30) : $usersignature) : '')
));
- if (is_object($user)) {
+ if (is_object($user) && ($user instanceof User)) {
$substitutionarray = array_merge($substitutionarray, array(
'__USER_ID__' => (string) $user->id,
'__USER_LOGIN__' => (string) $user->login,
diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php
index 19d9c9319a2..68e8b982cce 100644
--- a/htdocs/core/lib/modulebuilder.lib.php
+++ b/htdocs/core/lib/modulebuilder.lib.php
@@ -456,20 +456,37 @@ function dolGetListOfObjectClasses($destdir)
return -1;
}
+
/**
- * function for check if comment begin an end exist in modMyModule class
- * @param string $file filename or path
- * @param int $number 0 = For Menus,1 = For permissions, 2 = For Dictionaries
- * @return int 1 if OK , -1 if KO
+ * Function to check if comment begin an end exist in modMyModule class
+ *
+ * @param string $file Filename or path
+ * @param int $number 0 = For Menus,1 = For permissions, 2 = For Dictionaries
+ * @return int 1 if OK , -1 if KO
*/
function checkExistComment($file, $number)
{
if (!file_exists($file)) {
return -1;
}
+
$content = file_get_contents($file);
if ($number === 0) {
- if (strpos($content, '/* BEGIN MODULEBUILDER LEFTMENU MYOBJECT */') !== false && strpos($content, '/* END MODULEBUILDER LEFTMENU MYOBJECT */') !== false) {
+ $ret = 0;
+ if (strpos($content, '/* BEGIN MODULEBUILDER TOPMENU MYOBJECT */') !== false) {
+ $ret++;
+ }
+ if (strpos($content, '/* END MODULEBUILDER TOPMENU MYOBJECT */') !== false) {
+ $ret++;
+ }
+ if (strpos($content, '/* BEGIN MODULEBUILDER LEFTMENU MYOBJECT */') !== false) {
+ $ret++;
+ }
+ if (strpos($content, '/* END MODULEBUILDER LEFTMENU MYOBJECT */') !== false) {
+ $ret++;
+ }
+
+ if ($ret == 4) {
return 1;
}
} elseif ($number === 1) {
diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
index 22fb04d708e..fafec559fad 100644
--- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
+++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
@@ -947,8 +947,10 @@ class pdf_einstein extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -977,8 +979,10 @@ class pdf_einstein extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1038,8 +1042,11 @@ class pdf_einstein extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1071,8 +1078,10 @@ class pdf_einstein extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
index ca7209733f5..4b9e85e2589 100644
--- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
+++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php
@@ -1149,8 +1149,10 @@ class pdf_eratosthene extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1179,8 +1181,10 @@ class pdf_eratosthene extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1240,8 +1244,11 @@ class pdf_eratosthene extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1273,8 +1280,10 @@ class pdf_eratosthene extends ModelePDFCommandes
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
index f2f05ed7f84..4be06d41f7d 100644
--- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
@@ -1397,8 +1397,6 @@ class pdf_crabe extends ModelePDFFactures
if (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_IFNULL') && $tvaisnull) {
// Nothing to do
} else {
- // FIXME amount of vat not supported with multicurrency
-
//Local tax 1 before VAT
//if (!empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on')
//{
@@ -1425,8 +1423,10 @@ class pdf_crabe extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1456,8 +1456,10 @@ class pdf_crabe extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1517,8 +1519,11 @@ class pdf_crabe extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1547,8 +1552,10 @@ class pdf_crabe extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
//}
diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
index a95a53f4084..baf4e960678 100644
--- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
@@ -1658,8 +1658,6 @@ class pdf_sponge extends ModelePDFFactures
if (getDolGlobalString('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_IFNULL') && $tvaisnull) {
// Nothing to do
} else {
- // FIXME amount of vat not supported with multicurrency
-
//Local tax 1 before VAT
//if (!empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on')
//{
@@ -1686,8 +1684,10 @@ class pdf_sponge extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1717,8 +1717,10 @@ class pdf_sponge extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1802,8 +1804,11 @@ class pdf_sponge extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1835,8 +1840,10 @@ class pdf_sponge extends ModelePDFFactures
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php
index 1bdaa836188..dae580d2d47 100644
--- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php
+++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php
@@ -1132,8 +1132,10 @@ class pdf_azur extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1150,8 +1152,6 @@ class pdf_azur extends ModelePDFPropales
if ($tvakey != 0) { // On affiche pas taux 0
//$this->atleastoneratenotnull++;
-
-
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
@@ -1164,8 +1164,10 @@ class pdf_azur extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1224,8 +1226,11 @@ class pdf_azur extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1256,8 +1261,10 @@ class pdf_azur extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php
index 47f76988e44..d661b0ce260 100644
--- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php
+++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php
@@ -1232,8 +1232,10 @@ class pdf_cyan extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1250,8 +1252,6 @@ class pdf_cyan extends ModelePDFPropales
if ($tvakey != 0) { // On affiche pas taux 0
//$this->atleastoneratenotnull++;
-
-
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
@@ -1265,8 +1265,10 @@ class pdf_cyan extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1320,8 +1322,11 @@ class pdf_cyan extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
@@ -1353,8 +1358,10 @@ class pdf_cyan extends ModelePDFPropales
$totalvat .= vatrate(abs($tvakey), 1).$tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
+ $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval);
+
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
- $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
+ $pdf->MultiCell($largcol2, $tab2_hl, price($total_localtax, 0, $outputlangs), 0, 'R', 1);
}
}
}
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 3290d9a2251..fe7cb304610 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -374,7 +374,7 @@ WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to e
WarningPermissionAlreadyExist=Existing permissions for this object
WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account.
WarningCorrectedInvoiceNotFound=Corrected invoice not found
-WarningCommentNotFound=Please check placement of start and end comments for %s section in file %s before submitting your action
+WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s
WarningAlreadyReverse=Stock movement already reversed
SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments.
diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php
index 6d1a5a85d06..1e78c341f06 100644
--- a/htdocs/modulebuilder/index.php
+++ b/htdocs/modulebuilder/index.php
@@ -1017,6 +1017,8 @@ if ($dirins && $action == 'confirm_removefile' && !empty($module)) {
// Init an object
if ($dirins && $action == 'initobject' && $module && $objectname) {
+ $warning = 0;
+
$objectname = ucfirst($objectname);
$dirins = $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath'];
@@ -1365,13 +1367,12 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
}
}
-
if (!$error) {
foreach ($filetogenerate as $srcfile => $destfile) {
$result = dol_copy($srcdir.'/'.$srcfile, $destdir.'/'.$destfile, $newmask, 0);
if ($result <= 0) {
if ($result < 0) {
- $error++;
+ $warning++;
$langs->load("errors");
setEventMessages($langs->trans("ErrorFailToCopyFile", $srcdir.'/'.$srcfile, $destdir.'/'.$destfile), null, 'errors');
} else {
@@ -1383,6 +1384,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
'/myobject\.class\.php/' => strtolower($objectname).'.class.php',
'/myobject\.lib\.php/' => strtolower($objectname).'.lib.php',
);
+
dolReplaceInFile($destdir.'/'.$destfile, $arrayreplacement, '', 0, 0, 1);
}
}
@@ -1529,8 +1531,8 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
if (!$counter) {
$checkComment = checkExistComment($moduledescriptorfile, 0);
if ($checkComment < 0) {
- $error++;
- setEventMessages($langs->trans("WarningCommentNotFound", $langs->trans("Menus"), "mod".$module."class.php"), null, 'warnings');
+ $warning++;
+ setEventMessages($langs->trans("WarningCommentNotFound", $langs->trans("Menus"), basename($moduledescriptorfile)), null, 'warnings');
} else {
$arrayofreplacement = array('/* END MODULEBUILDER LEFTMENU MYOBJECT */' => '/*LEFTMENU '.strtoupper($objectname).'*/'.$stringtoadd."\n\t\t".'/*END LEFTMENU '.strtoupper($objectname).'*/'."\n\t\t".'/* END MODULEBUILDER LEFTMENU MYOBJECT */');
dolReplaceInFile($moduledescriptorfile, $arrayofreplacement);
@@ -1580,7 +1582,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
if (is_numeric($object) && $object <= 0) {
$pathoffiletoeditsrc = $destdir.'/class/'.strtolower($objectname).'.class.php';
setEventMessages($langs->trans('ErrorFailToCreateFile', $pathoffiletoeditsrc), null, 'errors');
- $error++;
+ $warning++;
}
// check if documentation was generate and add table of properties object
$file = $destdir.'/class/'.strtolower($objectname).'.class.php';
@@ -1610,7 +1612,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname) {
// check if module is enabled
if (isModEnabled(strtolower($module))) {
$result = unActivateModule(strtolower($module));
- dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", (int) $conf->global->MAIN_IHM_PARAMS_REV + 1, 'chaine', 0, '', $conf->entity);
+ dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
if ($result) {
setEventMessages($result, null, 'errors');
}
@@ -1898,11 +1900,12 @@ if ($dirins && $action == 'confirm_deletemodule') {
} else {
$error++;
$langs->load("errors");
- dol_print_error($db, $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module));
- exit;
+ setEventMessages($langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module), null, 'warnings');
}
- $moduleobj->remove();
+ if ($moduleobj) {
+ $moduleobj->remove();
+ }
$result = dol_delete_dir_recursive($dir);
diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
index 0b166dd54b1..53c7957cf78 100644
--- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
+++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php
@@ -28,6 +28,7 @@
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
+
/**
* Description and activation class for module MyModule
*/
@@ -303,8 +304,10 @@ class modMyModule extends DolibarrModules
// Main menu entries to add
$this->menu = array();
$r = 0;
+
// Add here entries to declare new menus
- /* BEGIN MODULEBUILDER TOPMENU */
+
+ /* BEGIN MODULEBUILDER TOPMENU MYOBJECT */
$this->menu[$r++] = array(
'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'type'=>'top', // This is a Top menu entry
@@ -320,7 +323,8 @@ class modMyModule extends DolibarrModules
'target'=>'',
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
);
- /* END MODULEBUILDER TOPMENU */
+ /* END MODULEBUILDER TOPMENU MYOBJECT */
+
/* BEGIN MODULEBUILDER LEFTMENU MYOBJECT */
/*$this->menu[$r++]=array(
'fk_menu'=>'fk_mainmenu=mymodule', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
@@ -366,6 +370,8 @@ class modMyModule extends DolibarrModules
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
);*/
/* END MODULEBUILDER LEFTMENU MYOBJECT */
+
+
// Exports profiles provided by this module
$r = 1;
/* BEGIN MODULEBUILDER EXPORT MYOBJECT */
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index c124d0b7220..9cbcc07479d 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -12,7 +12,7 @@
* Copyright (C) 2014 Henry Florian
* Copyright (C) 2014-2016 Philippe Grand
* Copyright (C) 2014 Ion agorria
- * Copyright (C) 2016-2018 Ferran Marcet
+ * Copyright (C) 2016-2024 Ferran Marcet
* Copyright (C) 2017 Gustavo Novaro
* Copyright (C) 2019-2024 Frédéric France
* Copyright (C) 2023 Benjamin Falière
@@ -1362,8 +1362,8 @@ class Product extends CommonObject
if (!$this->hasbatch() && $this->oldcopy->hasbatch()) {
// Selection of all product stock movements that contains batchs
- $sql = 'SELECT pb.qty, pb.fk_entrepot, pb.batch FROM '.MAIN_DB_PREFIX.'product_batch as pb';
- $sql .= ' INNER JOIN '.MAIN_DB_PREFIX.'product_stock as ps ON (ps.rowid = batch.fk_product_stock)';
+ $sql = 'SELECT pb.qty, ps.fk_entrepot, pb.batch FROM '.MAIN_DB_PREFIX.'product_batch as pb';
+ $sql .= ' INNER JOIN '.MAIN_DB_PREFIX.'product_stock as ps ON (ps.rowid = pb.fk_product_stock)';
$sql .= ' WHERE ps.fk_product = '.(int) $this->id;
$resql = $this->db->query($sql);
diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php
index 2da779311c4..7322dcdb0dd 100644
--- a/htdocs/product/class/productbatch.class.php
+++ b/htdocs/product/class/productbatch.class.php
@@ -1,7 +1,8 @@
* Copyright (C) 2013-2014 Cedric GROSS
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024 Ferran Marcet
*
* 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
@@ -522,7 +523,7 @@ class Productbatch extends CommonObject
$tmp->import_key = $obj->import_key;
if (getDolGlobalString('SHIPPING_DISPLAY_STOCK_ENTRY_DATE')) {
- $tmp->context['stock_date_entry'] = $obj->date_entree;
+ $tmp->context['stock_entry_date'] = $dbs->jdate($obj->date_entree);
}
if ($fk_product > 0) {
diff --git a/htdocs/website/index.php b/htdocs/website/index.php
index 566a1c2feb9..37430439427 100644
--- a/htdocs/website/index.php
+++ b/htdocs/website/index.php
@@ -1155,7 +1155,17 @@ if ($action == 'addcontainer' && $usercanedit) {
$substitutionarray = array();
$substitutionarray['__WEBSITE_CREATE_BY__'] = $user->getFullName($langs);
- // Define id of page the new page is translation of
+ // Define id of the page the new page is translation of
+ /*
+ if ($objectpage->lang == $object->lang) {
+ // If
+ $pageidfortranslation = (GETPOSTINT('pageidfortranslation') > 0 ? GETPOSTINT('pageidfortranslation') : 0);
+ if ($pageidfortranslation > 0) {
+ // We must update the page $pageidfortranslation to set fk_page = $object->id.
+ // But what if page $pageidfortranslation is already linked to another ?
+ }
+ } else {
+ */
$pageidfortranslation = (GETPOSTINT('pageidfortranslation') > 0 ? GETPOSTINT('pageidfortranslation') : 0);
if ($pageidfortranslation > 0) {
// Check if the page we are translation of is already a translation of a source page. if yes, we will use source id instead
@@ -1166,6 +1176,7 @@ if ($action == 'addcontainer' && $usercanedit) {
}
}
$objectpage->fk_page = $pageidfortranslation;
+ //}
$sample = GETPOST('sample', 'alpha');
if (empty($sample)) {
@@ -2406,6 +2417,22 @@ if ($usercanedit && (($action == 'updatesource' || $action == 'updatecontent' ||
}
}
+if ($action == 'deletelang' && $usercanedit) {
+ $sql = "UPDATE ".MAIN_DB_PREFIX."website_page SET fk_page = NULL";
+ $sql .= " WHERE rowid = ".GETPOSTINT('deletelangforid');
+ //$sql .= " AND fk_page = ".((int) $objectpage->id);
+
+ $resql = $db->query($sql);
+ if (!$resql) {
+ setEventMessages($db->lasterror(), null, 'errors');
+ } else {
+ $objectpage->fk_page = null;
+ }
+
+ $action = 'editmeta';
+}
+
+
// Export site
if ($action == 'exportsite' && $user->hasRight('website', 'export')) {
$fileofzip = $object->exportWebSite();
@@ -4360,7 +4387,9 @@ if ($action == 'editmeta' || $action == 'createcontainer') { // Edit properties
if ($i > 0) {
$tmpstring .= '
';
}
- $tmpstring .= $tmppage->getNomUrl(1).' ('.$tmppage->lang.')';
+ $tmpstring .= $tmppage->getNomUrl(1).' '.picto_from_langcode($tmppage->lang).' '.$tmppage->lang;
+ // Button unlink
+ $tmpstring .= ' ref).'&pageid='.((int) $objectpage->id).'&action=deletelang&token='.newToken().'&deletelangforid='.((int) $tmppage->id).'">'.img_picto($langs->trans("Remove"), 'unlink').'';
$translatedby++;
$i++;
}
@@ -4376,17 +4405,27 @@ if ($action == 'editmeta' || $action == 'createcontainer') { // Edit properties
dol_print_error($db);
}
}
- if (empty($translatedby) && ($action == 'editmeta' || $action == 'createcontainer' || $objectpage->fk_page > 0)) {
+ if ((empty($translatedby) || ($objectpage->lang != $object->lang)) && ($action == 'editmeta' || $action == 'createcontainer' || $objectpage->fk_page > 0)) {
$sourcepage = new WebsitePage($db);
- $result = $sourcepage->fetch($objectpage->fk_page);
- if ($result == 0) {
- // not found, we can reset value to clean database
- } elseif ($result > 0) {
+ $result = 1;
+ if ($objectpage->fk_page > 0) {
+ $result = $sourcepage->fetch($objectpage->fk_page);
+ if ($result == 0) {
+ // not found, we can reset value to clean database
+ // TODO
+ }
+ }
+ if ($result >= 0) {
+ if ($translatedby) {
+ print '
';
+ }
$translationof = $objectpage->fk_page;
print ''.$langs->trans('ThisPageIsTranslationOf').' ';
- print $formwebsite->selectContainer($website, 'pageidfortranslation', ($translationof ? $translationof : -1), 1, $action, 'minwidth300', array($objectpage->id));
+ print $sourcepage->getNomUrl(2).' '.$formwebsite->selectContainer($website, 'pageidfortranslation', ($translationof ? $translationof : -1), 1, $action, 'minwidth300', array($objectpage->id));
if ($translationof > 0 && $sourcepage->lang) {
- print $sourcepage->getNomUrl(2).' ('.$sourcepage->lang.')';
+ print picto_from_langcode($sourcepage->lang).' '.$sourcepage->lang;
+ // Button unlink
+ print ' ref).'&pageid='.((int) $objectpage->id).'&action=deletelang&token='.newToken().'&deletelangforid='.((int) $objectpage->id).'">'.img_picto($langs->trans("Remove"), 'unlink').'';
}
}
}