Debug v17
This commit is contained in:
parent
ddea62fe19
commit
d07669a92c
@ -3275,7 +3275,7 @@ class Form
|
||||
$langs->load('other');
|
||||
}
|
||||
|
||||
$sql = "SELECT p.rowid, p.ref, p.label, p.price, p.duration, p.fk_product_type, p.stock,";
|
||||
$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.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";
|
||||
@ -3371,6 +3371,12 @@ class Form
|
||||
while ($i < $num) {
|
||||
$objp = $this->db->fetch_object($result);
|
||||
|
||||
if (is_null($objp->idprodfournprice)) {
|
||||
// There is no supplier price found, we will use the vat rate for sale
|
||||
$objp->tva_tx = $objp->tva_tx_sale;
|
||||
$objp->default_vat_code = $objp->default_vat_code_sale;
|
||||
}
|
||||
|
||||
$outkey = $objp->idprodfournprice; // id in table of price
|
||||
if (!$outkey && $alsoproductwithnosupplierprice) {
|
||||
$outkey = 'idprod_'.$objp->rowid; // id of product
|
||||
@ -3566,14 +3572,17 @@ class Form
|
||||
if (empty($objp->idprodfournprice) && empty($alsoproductwithnosupplierprice)) {
|
||||
$optstart .= ' disabled';
|
||||
}
|
||||
|
||||
if (!empty($objp->idprodfournprice) && $objp->idprodfournprice > 0) {
|
||||
$opt .= ' data-product-id="'.dol_escape_htmltag($objp->rowid).'"';
|
||||
$opt .= ' data-price-id="'.dol_escape_htmltag($objp->idprodfournprice).'"';
|
||||
$opt .= ' data-qty="'.dol_escape_htmltag($objp->quantity).'"';
|
||||
$opt .= ' data-up="'.dol_escape_htmltag($objp->unitprice).'"';
|
||||
$opt .= ' data-up-locale="'.dol_escape_htmltag(price($objp->unitprice)).'"';
|
||||
$opt .= ' data-discount="'.dol_escape_htmltag($outdiscount).'"';
|
||||
$opt .= ' data-tvatx="'.dol_escape_htmltag($objp->tva_tx).'"';
|
||||
$optstart .= ' data-product-id="'.dol_escape_htmltag($objp->rowid).'"';
|
||||
$optstart .= ' data-price-id="'.dol_escape_htmltag($objp->idprodfournprice).'"';
|
||||
$optstart .= ' data-qty="'.dol_escape_htmltag($objp->quantity).'"';
|
||||
$optstart .= ' data-up="'.dol_escape_htmltag(price2num($objp->unitprice)).'"';
|
||||
$optstart .= ' data-up-locale="'.dol_escape_htmltag(price($objp->unitprice)).'"';
|
||||
$optstart .= ' data-discount="'.dol_escape_htmltag($outdiscount).'"';
|
||||
$optstart .= ' data-tvatx="'.dol_escape_htmltag(price2num($objp->tva_tx)).'"';
|
||||
$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-description="'.dol_escape_htmltag($objp->description, 0, 1).'"';
|
||||
|
||||
@ -3585,7 +3594,8 @@ class Form
|
||||
'price_qty_ht' => price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty
|
||||
'price_unit_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price
|
||||
'price_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility)
|
||||
'tva_tx' => $objp->tva_tx,
|
||||
'tva_tx_formated' => price($objp->tva_tx, 0, $langs, 1, -1, 2),
|
||||
'tva_tx' => price2num($objp->tva_tx),
|
||||
'default_vat_code' => $objp->default_vat_code,
|
||||
'discount' => $outdiscount,
|
||||
'type' => $outtype,
|
||||
@ -3613,14 +3623,15 @@ class Form
|
||||
$outarray,
|
||||
array('key'=>$outkey,
|
||||
'value'=>$outref,
|
||||
'label'=>$outval,
|
||||
'label'=>$outvallabel,
|
||||
'qty'=>$outqty,
|
||||
'price_qty_ht'=>price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty
|
||||
'price_unit_ht'=>price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price
|
||||
'price_ht'=>price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility)
|
||||
'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_locale'=>price($objp->unitprice),
|
||||
'tva_tx'=>$objp->tva_tx,
|
||||
'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'=>price2num($objp->tva_tx),
|
||||
'default_vat_code'=>$objp->default_vat_code,
|
||||
'discount'=>$outdiscount,
|
||||
'type'=>$outtype,
|
||||
|
||||
@ -197,6 +197,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
|
||||
if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)) {
|
||||
$script .= '
|
||||
// For customer price when PRODUIT_CUSTOMER_PRICES_BY_QTY is on
|
||||
console.log("PRODUIT_CUSTOMER_PRICES_BY_QTY is on, propagate also prices by quantity into data-pbqxxx properties");
|
||||
$("#'.$htmlnamejquery.'").attr("data-pbq", ui.item.pbq);
|
||||
$("#'.$htmlnamejquery.'").attr("data-pbqup", ui.item.price_ht);
|
||||
$("#'.$htmlnamejquery.'").attr("data-pbqbase", ui.item.pricebasetype);
|
||||
|
||||
@ -153,7 +153,7 @@ class doc_generic_product_odt extends ModelePDFProduct
|
||||
$texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1);
|
||||
$texte .= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
|
||||
$texte .= '<textarea class="flat" cols="60" name="value1">';
|
||||
$texte .= $conf->global->PRODUCT_ADDON_PDF_ODT_PATH;
|
||||
$texte .= getDolGlobalString('PRODUCT_ADDON_PDF_ODT_PATH');
|
||||
$texte .= '</textarea>';
|
||||
$texte .= '</div><div style="display: inline-block; vertical-align: middle;">';
|
||||
$texte .= '<input type="submit" class="button small reposition" name="modify" value="'.$langs->trans("Modify").'">';
|
||||
|
||||
@ -971,10 +971,11 @@ if (!empty($usemargins) && $user->rights->margins->creer) {
|
||||
}
|
||||
?>
|
||||
|
||||
// Deal with supplier ref price
|
||||
|
||||
// Deal with supplier ref price (idprodfournprice = int)
|
||||
if (jQuery('#idprodfournprice').val() > 0)
|
||||
{
|
||||
console.log("objectline_create.tpl #idprodfournprice is > 0, so we set some properties into page");
|
||||
console.log("objectline_create.tpl #idprodfournprice is is an ID > 0, so we set some properties into page");
|
||||
|
||||
var up = parseFloat($('option:selected', this).attr('data-up')); // When select is done from HTML select
|
||||
if (isNaN(up)) { up = parseFloat(jQuery('#idprodfournprice').attr('data-up'));} // When select is done from HTML input with ajax autocomplete
|
||||
@ -1023,14 +1024,15 @@ if (!empty($usemargins) && $user->rights->margins->creer) {
|
||||
}
|
||||
|
||||
<?php
|
||||
if (!empty($conf->global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) {
|
||||
if (getDolGlobalInt('PRODUIT_AUTOFILL_DESC') == 1) {
|
||||
?>
|
||||
var description = $('option:selected', this).attr('data-description');
|
||||
if (typeof description == 'undefined') { description = jQuery('#idprodfournprice').attr('data-description'); }
|
||||
|
||||
console.log("Load desciption into text area : "+description);
|
||||
<?php
|
||||
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
|
||||
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) {
|
||||
?>
|
||||
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||
{
|
||||
var editor = CKEDITOR.instances['dp_desc'];
|
||||
@ -1039,15 +1041,41 @@ if (!empty($usemargins) && $user->rights->margins->creer) {
|
||||
}
|
||||
}
|
||||
<?php
|
||||
} else { ?>
|
||||
} else {
|
||||
?>
|
||||
jQuery('#dp_desc').text(description);
|
||||
<?php
|
||||
}
|
||||
}?>
|
||||
}
|
||||
?>
|
||||
} else if (jQuery('#idprodfournprice').length > 0) {
|
||||
console.log("objectline_create.tpl #idprodfournprice is not an int but is a string so we set only few properties into page");
|
||||
|
||||
var tva_tx = parseFloat($('option:selected', this).attr('data-tvatx')); // When select is done from HTML select
|
||||
if (isNaN(tva_tx)) { tva_tx = parseFloat(jQuery('#idprodfournprice').attr('data-tvatx'));} // When select is done from HTML input with ajax autocomplete
|
||||
|
||||
var default_vat_code = $('option:selected', this).attr('data-default-vat-code'); // When select is done from HTML select
|
||||
if (typeof default_vat_code === 'undefined') { default_vat_code = jQuery('#idprodfournprice').attr('data-default-vat-code');} // When select is done from HTML input with ajax autocomplete
|
||||
|
||||
var stringforvatrateselection = tva_tx;
|
||||
if (typeof default_vat_code != 'undefined' && default_vat_code != null) {
|
||||
stringforvatrateselection = stringforvatrateselection+' ('+default_vat_code+')';
|
||||
}
|
||||
|
||||
console.log("objectline_create.tpl We find data for price : tva_tx = "+tva_tx+", default_vat_code = "+default_vat_code+", stringforvatrateselection="+stringforvatrateselection+" for product id = "+jQuery('#idprodfournprice').val());
|
||||
|
||||
// Set vat rate if field is an input box
|
||||
$('#tva_tx').val(tva_tx);
|
||||
// Set vat rate by selecting the combo
|
||||
//$('#tva_tx option').val(tva_tx); // This is bugged, it replaces the vat key of all options
|
||||
$('#tva_tx option').removeAttr('selected');
|
||||
console.log("stringforvatrateselection="+stringforvatrateselection+" -> value of option label for this key="+$('#tva_tx option[value="'+stringforvatrateselection+'"]').val());
|
||||
$('#tva_tx option[value="'+stringforvatrateselection+'"]').prop('selected', true);
|
||||
|
||||
<?php
|
||||
if (!empty($conf->global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) {
|
||||
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
|
||||
if (getDolGlobalInt('PRODUIT_AUTOFILL_DESC') == 1) {
|
||||
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) {
|
||||
?>
|
||||
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||
{
|
||||
var editor = CKEDITOR.instances['dp_desc'];
|
||||
@ -1056,11 +1084,13 @@ if (!empty($usemargins) && $user->rights->margins->creer) {
|
||||
}
|
||||
}
|
||||
<?php
|
||||
} else { ?>
|
||||
} else {
|
||||
?>
|
||||
jQuery('#dp_desc').text('');
|
||||
<?php
|
||||
}
|
||||
}?>
|
||||
}
|
||||
?>
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -204,7 +204,7 @@ if ($action == 'set') {
|
||||
if ($action == 'del') {
|
||||
$ret = delDocumentModel($value, $type);
|
||||
if ($ret > 0) {
|
||||
if ($conf->global->PRODUCT_ADDON_PDF == "$value") {
|
||||
if (getDolGlobalString('PRODUCT_ADDON_PDF') == "$value") {
|
||||
dolibarr_del_const($db, 'PRODUCT_ADDON_PDF', $conf->entity);
|
||||
}
|
||||
}
|
||||
@ -461,7 +461,7 @@ foreach ($dirmodels as $reldir) {
|
||||
|
||||
// Defaut
|
||||
print '<td class="center">';
|
||||
if ($conf->global->PRODUCT_ADDON_PDF == $name) {
|
||||
if (getDolGlobalString('PRODUCT_ADDON_PDF') == $name) {
|
||||
print img_picto($langs->trans("Default"), 'on');
|
||||
} else {
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||
|
||||
@ -5156,11 +5156,7 @@ class Product extends CommonObject
|
||||
|
||||
// Positionne le modele sur le nom du modele a utiliser
|
||||
if (!dol_strlen($modele)) {
|
||||
if (!empty($conf->global->PRODUCT_ADDON_PDF)) {
|
||||
$modele = $conf->global->PRODUCT_ADDON_PDF;
|
||||
} else {
|
||||
$modele = 'strato';
|
||||
}
|
||||
$modele = getDolGlobalString('PRODUCT_ADDON_PDF', 'strato');
|
||||
}
|
||||
|
||||
$modelpath = "core/modules/product/doc/";
|
||||
|
||||
@ -465,7 +465,8 @@ if (empty($reshook)) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($object->multiprices[$key] != $newprice || $object->multiprices_min[$key] != $newprice_min || $object->multiprices_base_type[$key] != $val['price_base_type'] || $object->multiprices_tva_tx[$key] != $newvattx) {
|
||||
// If price has changed, we update it
|
||||
if (!array_key_exists($key, $object->multiprices) || $object->multiprices[$key] != $newprice || $object->multiprices_min[$key] != $newprice_min || $object->multiprices_base_type[$key] != $val['price_base_type'] || $object->multiprices_tva_tx[$key] != $newvattx) {
|
||||
$res = $object->updatePrice($newprice, $val['price_base_type'], $user, $val['vat_tx'], $newprice_min, $key, $val['npr'], $psq, 0, $val['localtaxes_array'], $val['default_vat_code']);
|
||||
} else {
|
||||
$res = 0;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user