2
0
forked from Wavyzz/dolibarr

NEW determine multi-currency price on object line create tpl (#28021)

This commit is contained in:
lvessiller-opendsi
2024-02-10 01:09:24 +01:00
committed by GitHub
parent eecb1141b4
commit 5092d17d2a
3 changed files with 83 additions and 29 deletions

View File

@@ -3489,9 +3489,12 @@ class Form
} }
$sql = "SELECT p.rowid, p.ref, p.label, p.price, p.duration, p.fk_product_type, p.stock, p.tva_tx as tva_tx_sale, p.default_vat_code as default_vat_code_sale,"; $sql = "SELECT p.rowid, p.ref, p.label, p.price, p.duration, p.fk_product_type, p.stock, p.tva_tx as tva_tx_sale, p.default_vat_code as default_vat_code_sale,";
$sql .= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,"; $sql .= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice";
$sql .= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.default_vat_code, pfp.fk_soc, s.nom as name,"; if (isModEnabled('multicurrency')) {
$sql .= " pfp.supplier_reputation"; $sql .= ", pfp.multicurrency_code, pfp.multicurrency_unitprice";
}
$sql .= ", pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.default_vat_code, pfp.fk_soc, s.nom as name";
$sql .= ", pfp.supplier_reputation";
// if we use supplier description of the products // if we use supplier description of the products
if (getDolGlobalString('PRODUIT_FOURN_TEXTS')) { if (getDolGlobalString('PRODUIT_FOURN_TEXTS')) {
$sql .= ", pfp.desc_fourn as description"; $sql .= ", pfp.desc_fourn as description";
@@ -3814,6 +3817,10 @@ class Form
$optstart .= ' data-tvatx-formated="' . dol_escape_htmltag(price($objp->tva_tx, 0, $langs, 1, -1, 2)) . '"'; $optstart .= ' data-tvatx-formated="' . dol_escape_htmltag(price($objp->tva_tx, 0, $langs, 1, -1, 2)) . '"';
$optstart .= ' data-default-vat-code="' . dol_escape_htmltag($objp->default_vat_code) . '"'; $optstart .= ' data-default-vat-code="' . dol_escape_htmltag($objp->default_vat_code) . '"';
$optstart .= ' data-supplier-ref="' . dol_escape_htmltag($objp->ref_fourn) . '"'; $optstart .= ' data-supplier-ref="' . dol_escape_htmltag($objp->ref_fourn) . '"';
if (isModEnabled('multicurrency')) {
$optstart .= ' data-multicurrency-code="' . dol_escape_htmltag($objp->multicurrency_code) . '"';
$optstart .= ' data-multicurrency-up="' . dol_escape_htmltag($objp->multicurrency_unitprice) . '"';
}
} }
$optstart .= ' data-description="' . dol_escape_htmltag($objp->description, 0, 1) . '"'; $optstart .= ' data-description="' . dol_escape_htmltag($objp->description, 0, 1) . '"';
@@ -3835,6 +3842,10 @@ class Form
'disabled' => (empty($objp->idprodfournprice) ? true : false), 'disabled' => (empty($objp->idprodfournprice) ? true : false),
'description' => $objp->description 'description' => $objp->description
); );
if (isModEnabled('multicurrency')) {
$outarrayentry['multicurrency_code'] = $objp->multicurrency_code;
$outarrayentry['multicurrency_unitprice'] = price2num($objp->multicurrency_unitprice, 'MU');
}
$parameters = array( $parameters = array(
'objp' => &$objp, 'objp' => &$objp,
@@ -3850,28 +3861,32 @@ class Form
// "key" value of json key array is used by jQuery automatically as selected value. Example: 'type' = product or service, 'price_ht' = unit price without tax // "key" value of json key array is used by jQuery automatically as selected value. Example: 'type' = product or service, 'price_ht' = unit price without tax
// "label" value of json key array is used by jQuery automatically as text for combo box // "label" value of json key array is used by jQuery automatically as text for combo box
$out .= $optstart . ' data-html="' . dol_escape_htmltag($optlabel) . '">' . $optlabel . "</option>\n"; $out .= $optstart . ' data-html="' . dol_escape_htmltag($optlabel) . '">' . $optlabel . "</option>\n";
array_push( $outarraypush = array(
$outarray, 'key' => $outkey,
array('key' => $outkey, 'value' => $outref,
'value' => $outref, 'label' => $outvallabel,
'label' => $outvallabel, 'qty' => $outqty,
'qty' => $outqty, 'price_qty_ht' => price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty
'price_qty_ht' => price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty 'price_qty_ht_locale' => price($objp->fprice),
'price_qty_ht_locale' => price($objp->fprice), 'price_unit_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price
'price_unit_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price 'price_unit_ht_locale' => price($objp->unitprice),
'price_unit_ht_locale' => price($objp->unitprice), 'price_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility)
'price_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility) 'tva_tx_formated' => price($objp->tva_tx),
'tva_tx_formated' => price($objp->tva_tx), 'tva_tx' => price2num($objp->tva_tx),
'tva_tx' => price2num($objp->tva_tx), 'default_vat_code' => $objp->default_vat_code,
'default_vat_code' => $objp->default_vat_code, 'discount' => $outdiscount,
'discount' => $outdiscount, 'type' => $outtype,
'type' => $outtype, 'duration_value' => $outdurationvalue,
'duration_value' => $outdurationvalue, 'duration_unit' => $outdurationunit,
'duration_unit' => $outdurationunit, 'disabled' => (empty($objp->idprodfournprice) ? true : false),
'disabled' => (empty($objp->idprodfournprice) ? true : false), 'description' => $objp->description
'description' => $objp->description
)
); );
if (isModEnabled('multicurrency')) {
$outarraypush['multicurrency_code'] = $objp->multicurrency_code;
$outarraypush['multicurrency_unitprice'] = price2num($objp->multicurrency_unitprice, 'MU');
}
array_push($outarray, $outarraypush);
// Example of var_dump $outarray // Example of var_dump $outarray
// array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp" // array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp"
// ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)" // ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)"

View File

@@ -161,6 +161,14 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
price_ttc: item.price_ttc, price_ttc: item.price_ttc,
price_unit_ht: item.price_unit_ht, price_unit_ht: item.price_unit_ht,
price_unit_ht_locale: item.price_unit_ht_locale, price_unit_ht_locale: item.price_unit_ht_locale,
';
if (isModEnabled('multicurrency')) {
$script .= '
multicurrency_code: item.multicurrency_code,
multicurrency_unitprice: item.multicurrency_unitprice,
';
}
$script .= '
description : item.description, description : item.description,
ref_customer: item.ref_customer, ref_customer: item.ref_customer,
tva_tx: item.tva_tx, tva_tx: item.tva_tx,
@@ -192,6 +200,13 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
$("#'.$htmlnamejquery.'").attr("data-tvatx", ui.item.tva_tx); $("#'.$htmlnamejquery.'").attr("data-tvatx", ui.item.tva_tx);
$("#'.$htmlnamejquery.'").attr("data-default-vat-code", ui.item.default_vat_code); $("#'.$htmlnamejquery.'").attr("data-default-vat-code", ui.item.default_vat_code);
'; ';
if (isModEnabled('multicurrency')) {
$script .= '
// For multi-currency values
$("#'.$htmlnamejquery.'").attr("data-multicurrency-code", ui.item.multicurrency_code);
$("#'.$htmlnamejquery.'").attr("data-multicurrency-unitprice", ui.item.multicurrency_unitprice);
';
}
if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES_BY_QTY') || getDolGlobalString('PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES')) { if (getDolGlobalString('PRODUIT_CUSTOMER_PRICES_BY_QTY') || getDolGlobalString('PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES')) {
$script .= ' $script .= '
// For customer price when PRODUIT_CUSTOMER_PRICES_BY_QTY is on // For customer price when PRODUIT_CUSTOMER_PRICES_BY_QTY is on

View File

@@ -1093,12 +1093,36 @@ if (!empty($usemargins) && $user->hasRight('margins', 'creer')) {
var supplier_ref = $('option:selected', this).attr('data-supplier-ref'); // When select is done from HTML select var supplier_ref = $('option:selected', this).attr('data-supplier-ref'); // When select is done from HTML select
if (typeof supplier_ref === 'undefined') { supplier_ref = jQuery('#idprodfournprice').attr('data-supplier-ref');} // When select is done from HTML input with ajax autocomplete if (typeof supplier_ref === 'undefined') { supplier_ref = jQuery('#idprodfournprice').attr('data-supplier-ref');} // When select is done from HTML input with ajax autocomplete
console.log("objectline_create.tpl We find supplier price : up = "+up+", up_locale = "+up_locale+", supplier_ref = "+supplier_ref+" qty = "+qty+", tva_tx = "+tva_tx+", default_vat_code = "+default_vat_code+", stringforvatrateselection="+stringforvatrateselection+", discount = "+discount+" for product supplier ref id = "+jQuery('#idprodfournprice').val()); var has_multicurrency_up = false;
<?php
if (isModEnabled('multicurrency') && $object->multicurrency_code != $conf->currency) {
?>
var object_multicurrency_code = '<?php print dol_escape_js($object->multicurrency_code); ?>';
if (typeof up_locale === 'undefined') { var multicurrency_code = $('option:selected', this).attr('data-multicurrency-code'); // When select is done from HTML select
jQuery("#price_ht").val(up); if (multicurrency_code == undefined) { multicurrency_code = jQuery('#idprodfournprice').attr('data-multicurrency-code'); } // When select is done from HTML input with ajax autocomplete
} else {
jQuery("#price_ht").val(up_locale); var multicurrency_up = parseFloat($('option:selected', this).attr('data-multicurrency-unitprice')); // When select is done from HTML select
if (isNaN(multicurrency_up)) { multicurrency_up = parseFloat(jQuery('#idprodfournprice').attr('data-multicurrency-unitprice')); } // When select is done from HTML input with ajax autocomplete
if (multicurrency_code == object_multicurrency_code) {
has_multicurrency_up = true;
jQuery("#multicurrency_price_ht").val(multicurrency_up);
}
console.log("objectline_create.tpl Multicurrency values : object_multicurrency_code = "+object_multicurrency_code+", multicurrency_code = "+multicurrency_code+", multicurrency_up = "+multicurrency_up);
<?php
}
?>
console.log("objectline_create.tpl We find supplier price : up = "+up+", up_locale = "+up_locale+", has_multicurrency_up = "+has_multicurrency_up+", supplier_ref = "+supplier_ref+" qty = "+qty+", tva_tx = "+tva_tx+", default_vat_code = "+default_vat_code+", stringforvatrateselection="+stringforvatrateselection+", discount = "+discount+" for product supplier ref id = "+jQuery('#idprodfournprice').val());
if (has_multicurrency_up === false) {
if (typeof up_locale === 'undefined') {
jQuery("#price_ht").val(up);
} else {
jQuery("#price_ht").val(up_locale);
}
} }
// Set supplier_ref // Set supplier_ref