25 if (!defined(
'NOTOKENRENEWAL')) {
26 define(
'NOTOKENRENEWAL',
'1');
28 if (!defined(
'NOREQUIREMENU')) {
29 define(
'NOREQUIREMENU',
'1');
31 if (!defined(
'NOREQUIREAJAX')) {
32 define(
'NOREQUIREAJAX',
'1');
34 if (!defined(
'NOREQUIRESOC')) {
35 define(
'NOREQUIRESOC',
'1');
39 require
'../../main.inc.php';
40 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
42 $idprod =
GETPOST(
'idprod',
'int');
47 $langs->loadLangs(array(
"stocks",
"margins",
"products"));
60 $producttmp->fetch($idprod);
62 $sorttouse =
's.nom, pfp.quantity, pfp.price';
63 if (
GETPOST(
'bestpricefirst')) {
64 $sorttouse =
'pfp.unitprice, s.nom, pfp.quantity, pfp.price';
67 $productSupplierArray = $producttmp->list_product_fournisseur_price($idprod, $sorttouse);
68 if (is_array($productSupplierArray)) {
69 foreach ($productSupplierArray as $productSupplier) {
70 $price = $productSupplier->fourn_price * (1 - $productSupplier->fourn_remise_percent / 100);
71 $unitprice = $productSupplier->fourn_unitprice * (1 - $productSupplier->fourn_remise_percent / 100);
73 $title = $productSupplier->fourn_name.
' - '.$productSupplier->fourn_ref.
' - ';
75 if ($productSupplier->fourn_qty == 1) {
76 $title .=
price($price, 0, $langs, 0, 0, -1, $conf->currency).
"/";
78 $title .= $productSupplier->fourn_qty.
' '.($productSupplier->fourn_qty == 1 ? $langs->trans(
"Unit") : $langs->trans(
"Units"));
80 if ($productSupplier->fourn_qty > 1) {
82 $title .=
price($unitprice, 0, $langs, 0, 0, -1, $conf->currency).
"/".$langs->trans(
"Unit");
86 $label =
price($price, 0, $langs, 0, 0, -1, $conf->currency).
"/".$langs->trans(
"Unit");
87 if ($productSupplier->fourn_ref) {
88 $label .=
' ('.$productSupplier->fourn_ref.
')';
91 $prices[] = array(
"id" => $productSupplier->product_fourn_price_id,
"price" =>
price2num($price,
'', 0),
"label" => $label,
"title" => $title);
98 $price = $producttmp->pmp;
99 if (empty($price) && !empty($conf->global->PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY)) {
101 $producttmp->get_sousproduits_arbo();
102 $prods_arbo=$producttmp->get_arbo_each_prod();
103 if (!empty($prods_arbo)) {
105 foreach ($prods_arbo as $child) {
107 $sousprod->fetch($child[
'id']);
108 $price += $sousprod->pmp;
113 $prices[] = array(
"id" =>
'pmpprice',
"price" =>
price2num($price),
"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));
117 $price = $producttmp->cost_price;
118 if (empty($price) && !empty($conf->global->PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY)) {
120 $producttmp->get_sousproduits_arbo();
121 $prods_arbo=$producttmp->get_arbo_each_prod();
122 if (!empty($prods_arbo)) {
124 foreach ($prods_arbo as $child) {
126 $sousprod->fetch($child[
'id']);
127 $price += $sousprod->cost_price;
132 $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));
135 echo json_encode($prices);
Class to manage predefined suppliers products.
Class to manage products or services.
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.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
isModEnabled($module)
Is Dolibarr module enabled.
if(!defined('NOREQUIREMENU')) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.