24require
'../../main.inc.php';
25require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
26require_once DOL_DOCUMENT_ROOT.
'/core/lib/product.lib.php';
29$langs->loadLangs(array(
'admin',
'products'));
31$action =
GETPOST(
'action',
'aZ09');
34if (!$user->admin || (!isModEnabled(
"product") && !isModEnabled(
"service"))) {
45if ($action ==
'update') {
46 $var_percent =
GETPOST(
'var_percent',
'array');
47 $var_min_percent =
GETPOST(
'var_min_percent',
'array');
48 $fk_level =
GETPOST(
'fk_level',
'array');
50 $produit_multiprices_limit =
getDolGlobalInt(
'PRODUIT_MULTIPRICES_LIMIT');
51 for ($i = 1; $i <= $produit_multiprices_limit; $i++) {
52 $check = isset($var_min_percent[$i]);
55 $check = $check && isset($var_percent[$i]) && isset($fk_level[$i]);
66 $i_var_percent = (float)
price2num($var_percent[$i]);
69 $i_var_min_percent = (float)
price2num($var_min_percent[$i]);
70 $i_fk_level = (int) $fk_level[$i];
74 $check2 = $i_var_min_percent;
76 $check1 = $i_fk_level >= 1 && $i_fk_level <= $produit_multiprices_limit;
77 $check2 = $i_var_percent && ($i_var_min_percent || (string) $i_var_min_percent ===
'0');
80 if (empty($i_var_percent) && empty($i_var_min_percent)) {
82 $db->query(
"DELETE FROM ".MAIN_DB_PREFIX.
"product_pricerules WHERE level = ".((
int) $i));
86 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"product_pricerules (level, fk_level, var_percent, var_min_percent) VALUES (";
87 $sql .= ((int) $i).
", ".$db->escape($i_fk_level).
", ".$i_var_percent.
", ".$i_var_min_percent.
")";
89 if (!$db->query($sql)) {
91 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"product_pricerules";
92 $sql .=
" SET fk_level = ".$db->escape($i_fk_level).
", var_percent = ".$i_var_percent.
", var_min_percent = ".$i_var_min_percent.
" WHERE level = ".((int) $i);
94 if (!$db->query($sql)) {
111$sql =
"SELECT rowid, level, fk_level, var_percent, var_min_percent";
112$sql .=
" FROM ".MAIN_DB_PREFIX.
"product_pricerules";
113$query = $db->query($sql);
117while ($result = $db->fetch_object($query)) {
118 $rules[$result->level] = $result;
121$title = $langs->trans(
'ProductServiceSetup');
122$tab = $langs->trans(
"ProductsAndServices");
124if (!isModEnabled(
"product")) {
125 $title = $langs->trans(
'ServiceSetup');
126 $tab = $langs->trans(
'Services');
127} elseif (!isModEnabled(
"service")) {
128 $title = $langs->trans(
'ProductSetup');
129 $tab = $langs->trans(
'Products');
132llxHeader(
'', $langs->trans(
'MultipriceRules'),
'',
'', 0, 0,
'',
'',
'',
'mod-product page-admin_price_rules');
134$linkback =
'<a href="'.DOL_URL_ROOT.
'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToModuleList").
'</a>';
138print
'<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
139print
'<input type="hidden" name="token" value="'.newToken().
'">';
140print
'<input type="hidden" name="action" value="update">';
145print
'<span class="opacitymedium">'.$langs->trans(
"MultiPriceRuleDesc").
'</span><br><br>';
148$price_options = array();
150$produit_multiprices_limit =
getDolGlobalInt(
'PRODUIT_MULTIPRICES_LIMIT');
151for ($i = 1; $i <= $produit_multiprices_limit; $i++) {
152 $price_options[$i] = $langs->trans(
'SellingPrice').
' '.$i;
156 <
table class=
"noborder centpercent">
157 <tr
class=
"liste_titre">
158 <td style=
"text-align: center"><?php echo $langs->trans(
'PriceLevel') ?></td>
159 <td style=
"text-align: center"><?php echo $langs->trans(
'Price') ?></td>
160 <td style=
"text-align: center"><?php echo $langs->trans(
'MinPrice') ?></td></tr>
162 <td
class=
"fieldrequired" style=
"text-align: center"><?php echo $langs->trans(
'SellingPrice') ?> 1</td>
164 <td style=
"text-align: center"><input
type=
"text" style=
"text-align: right" name=
"var_min_percent[1]" size=
"5" value=
"<?php echo price(isset($rules[1]) ? $rules[1]->var_min_percent : 0, 1) ?>"> <?php echo $langs->trans(
'PercentDiscountOver', $langs->trans(
'SellingPrice').
' 1') ?></td>
166 <?php
for ($i = 2; $i <= $produit_multiprices_limit; $i++) : ?>
168 <td
class=
"fieldrequired" style=
"text-align: center"><?php
169 echo $langs->trans(
'SellingPrice').
' '.$i;
171 $keyforlabel =
'PRODUIT_MULTIPRICES_LABEL'.$i;
177 <td style=
"text-align: center">
178 <input
type=
"text" style=
"text-align: right" name=
"var_percent[<?php echo $i ?>]" size=
"5" value=
"<?php echo price(isset($rules[$i]) ? $rules[$i]->var_percent : 0, 1) ?>">
181 for ($j = 1; $j < $i; $j++) {
182 $return[$j] = $price_options[$j];
184 $texttoshow = $langs->trans(
'PercentVariationOver',
'{s1}');
185 $texttoshow = str_replace(
'{s1}',
Form::selectarray(
"fk_level[$i]", $return, (isset($rules[$i]) ? $rules[$i]->fk_level : null)), $texttoshow);
189 <td style=
"text-align: center">
190 <input
type=
"text" style=
"text-align: right" name=
"var_min_percent[<?php echo $i ?>]" size=
"5" value=
"<?php echo price(isset($rules[$i]) ? $rules[$i]->var_min_percent : 0, 1) ?>">
191 <?php echo $langs->trans(
'PercentDiscountOver', $langs->transnoentitiesnoconv(
'SellingPrice').
' '.$i) ?>
201print
'<div style="text-align: center">
202 <input type="submit" value="'.$langs->trans(
"Save").
'" class="button button-save">
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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.
treeview li table
No Email.
product_admin_prepare_head()
Return array head with list of tabs to view object information.
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
$conf db name
Only used if Module[ID]Name translation string is not found.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.