26if (!defined(
'NOTOKENRENEWAL')) {
27 define(
'NOTOKENRENEWAL',
'1');
29if (!defined(
'NOREQUIREMENU')) {
30 define(
'NOREQUIREMENU',
'1');
32if (!defined(
'NOREQUIREAJAX')) {
33 define(
'NOREQUIREAJAX',
'1');
35if (!defined(
'NOREQUIRESOC')) {
36 define(
'NOREQUIRESOC',
'1');
40require
'../../main.inc.php';
41require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
51$hookmanager->initHooks(array(
'ajaxGetSupplierPrices'));
58$langs->loadLangs(array(
"stocks",
"margins",
"products"));
63if (!$user->hasRight(
'fournisseur',
'lire')) {
72 if (
$object->type == $object::TYPE_PRODUCT) {
75 if (
$object->type == $object::TYPE_SERVICE) {
79 restrictedArea($user,
'produit|service', 0,
'product&product',
'',
'',
'rowid');
93 $sorttouse =
's.nom, pfp.quantity, pfp.price';
94 if (
GETPOST(
'bestpricefirst')) {
95 $sorttouse =
'pfp.unitprice, s.nom, pfp.quantity, pfp.price';
98 $productSupplierArray =
$object->list_product_fournisseur_price($idprod, $sorttouse);
99 if (is_array($productSupplierArray)) {
100 foreach ($productSupplierArray as $productSupplier) {
101 if (
getDolGlobalInt(
"DISABLE_BAD_REPUTATION_PRODUCT_PRICE") && $productSupplier->supplier_reputation ==
"DONOTORDER") {
105 $price = $productSupplier->fourn_price * (1 - $productSupplier->fourn_remise_percent / 100);
106 $unitprice = $productSupplier->fourn_unitprice * (1 - $productSupplier->fourn_remise_percent / 100);
108 $title = $productSupplier->fourn_name.
' - '.$productSupplier->ref_supplier.
' - ';
110 if ($productSupplier->fourn_qty == 1) {
111 $title .=
price($price, 0, $langs, 0, 0, -1,
$conf->currency).
"/";
113 $title .= $productSupplier->fourn_qty.
' '.($productSupplier->fourn_qty == 1 ? $langs->trans(
"Unit") : $langs->trans(
"Units"));
115 if ($productSupplier->fourn_qty > 1) {
117 $title .=
price($unitprice, 0, $langs, 0, 0, -1,
$conf->currency).
"/".$langs->trans(
"Unit");
121 $label =
price($price, 0, $langs, 0, 0, -1,
$conf->currency).
"/".$langs->trans(
"Unit");
122 if ($productSupplier->ref_supplier) {
123 $label .=
' ('.$productSupplier->ref_supplier.
')';
127 "id" => $productSupplier->product_fourn_price_id,
134 'price' => (
float) $productSupplier->fourn_price,
135 'unitPrice' => (
float) $productSupplier->fourn_price,
136 'discountPercent' => (
float) $productSupplier->fourn_remise_percent,
137 'qty' => (
float) $productSupplier->fourn_qty,
138 'finalUnitPrice' => (
float) $unitprice,
139 'finalPrice' => (
float) $price,
140 'socName' => $productSupplier->fourn_name,
141 'ref' => $productSupplier->ref_supplier,
142 'reputation' => $productSupplier->supplier_reputation,
143 'dateCreation' => $productSupplier->fourn_date_creation,
144 'deliveryTimeDays' => $productSupplier->delivery_time_days,
149 "fk_unit" => $productSupplier->fk_unit
159 if (empty($price) &&
getDolGlobalString(
'PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY')) {
161 $object->get_sousproduits_arbo();
162 $prods_arbo =
$object->get_arbo_each_prod();
163 if (!empty($prods_arbo)) {
165 foreach ($prods_arbo as $child) {
167 $sousprod->fetch($child[
'id']);
168 $price += $sousprod->pmp;
173 $prices[] = array(
"id" =>
'pmpprice',
"price" =>
price2num($price,
'MU'),
"label" => $langs->trans(
"PMPValueShort").
': '.
price($price, 0, $langs, 0, 0, -1,
$conf->currency),
"title" => $langs->trans(
"PMPValueShort").
': '.
price($price, 0, $langs, 0, 0, -1,
$conf->currency));
178 if (empty($price) &&
getDolGlobalString(
'PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY')) {
180 $object->get_sousproduits_arbo();
181 $prods_arbo =
$object->get_arbo_each_prod();
182 if (!empty($prods_arbo)) {
184 foreach ($prods_arbo as $child) {
186 $sousprod->fetch($child[
'id']);
187 $price += $sousprod->cost_price;
192 $prices[] = array(
"id" =>
'costprice',
"price" =>
price2num($price),
"label" => $langs->trans(
"CostPrice").
': '.
price($price, 0, $langs, 0, 0, -1,
$conf->currency),
"title" => $langs->trans(
"PMPValueShort").
': '.
price($price, 0, $langs, 0, 0, -1,
$conf->currency));
195 'prices' => &$prices,
197 'bestpricefirst' =>
GETPOST(
'bestpricefirst')
200 $hookmanager->executeHooks(
'afterGetSupplierPrices', $parameters, $producttmp);
203echo json_encode($prices);
if(! $sortfield) if(! $sortorder) $object
Class to manage predefined suppliers products.
Class to manage products or services.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
if(!defined( 'NOREQUIREMENU')) if(!empty(GETPOST('seteventmessages', 'alpha'))) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.