Debug price per customer

This commit is contained in:
Laurent Destailleur 2015-06-19 12:13:05 +02:00
parent 5376c771d7
commit b3c1ebf30a
2 changed files with 61 additions and 44 deletions

View File

@ -818,15 +818,16 @@ class Form
* *
* @param string $selected Preselected type * @param string $selected Preselected type
* @param string $htmlname Name of field in form * @param string $htmlname Name of field in form
* @param string $filter optional filters criteras (example: 's.rowid <> x') * @param string $filter optional filters criteras (example: 's.rowid <> x', 's.client IN (1,3)')
* @param int $showempty Add an empty field * @param int $showempty Add an empty field
* @param int $showtype Show third party type in combolist (customer, prospect or supplier) * @param int $showtype Show third party type in combolist (customer, prospect or supplier)
* @param int $forcecombo Force to use combo box * @param int $forcecombo Force to use combo box
* @param array $events Ajax event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @param array $events Ajax event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
* @param int $limit Maximum number of elements * @param int $limit Maximum number of elements
* @param string $morecss Add more css styles to the SELECT component
* @return string HTML string with select box for thirdparty. * @return string HTML string with select box for thirdparty.
*/ */
function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0) function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0, $morecss='minwidth100')
{ {
$out=''; $out='';
@ -860,7 +861,7 @@ class Form
} }
else else
{*/ {*/
$out.=$this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit); $out.=$this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit, $morecss);
//} //}
return $out; return $out;
@ -879,9 +880,10 @@ class Form
* @param string $filterkey Filter on key value * @param string $filterkey Filter on key value
* @param int $outputmode 0=HTML select string, 1=Array * @param int $outputmode 0=HTML select string, 1=Array
* @param int $limit Limit number of answers * @param int $limit Limit number of answers
* @param string $morecss Add more css styles to the SELECT component
* @return string HTML string with * @return string HTML string with
*/ */
function select_thirdparty_list($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0, $forcecombo=0, $events=array(), $filterkey='', $outputmode=0, $limit=0) function select_thirdparty_list($selected='',$htmlname='socid',$filter='',$showempty=0, $showtype=0, $forcecombo=0, $events=array(), $filterkey='', $outputmode=0, $limit=0, $morecss='minwidth100')
{ {
global $conf,$user,$langs; global $conf,$user,$langs;
@ -935,7 +937,7 @@ class Form
} }
// Construct $out and $outarray // Construct $out and $outarray
$out.= '<select id="'.$htmlname.'" class="flat minwidth100" name="'.$htmlname.'"'.$nodatarole.'>'."\n"; $out.= '<select id="'.$htmlname.'" class="flat'.($morecss?' '.$morecss:'').'" name="'.$htmlname.'"'.$nodatarole.'>'."\n";
$textifempty=''; $textifempty='';
// Do not use textempty = ' ' or '&nbsp;' here, or search on key will search on ' key'. // Do not use textempty = ' ' or '&nbsp;' here, or search on key will search on ' key'.

View File

@ -110,7 +110,9 @@ if (empty($reshook))
break; // We found submited price break; // We found submited price
} }
} }
} else { }
else
{
$level = 0; $level = 0;
$newprice = price2num($_POST ["price"], 'MU'); $newprice = price2num($_POST ["price"], 'MU');
$newprice_min = price2num($_POST ["price_min"], 'MU'); $newprice_min = price2num($_POST ["price_min"], 'MU');
@ -128,7 +130,8 @@ if (empty($reshook))
$action='edit_price'; $action='edit_price';
} }
if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) { if ($newprice < $newprice_min && ! empty($object->fk_price_expression))
{
$newprice = $newprice_min; //Set price same as min, the user will not see the $newprice = $newprice_min; //Set price same as min, the user will not see the
} }
@ -185,11 +188,13 @@ if (empty($reshook))
$object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1); $object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1);
} }
if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité if ($action == 'edit_price_by_qty')
{ // Edition d'un prix par quantité
$rowid = GETPOST('rowid'); $rowid = GETPOST('rowid');
} }
if ($action == 'update_price_by_qty') { // Ajout / Mise à jour d'un prix par quantité if ($action == 'update_price_by_qty')
{ // Ajout / Mise à jour d'un prix par quantité
// Récupération des variables // Récupération des variables
$rowid = GETPOST('rowid'); $rowid = GETPOST('rowid');
@ -237,7 +242,8 @@ if (empty($reshook))
} }
} }
if ($action == 'delete_price_by_qty') { if ($action == 'delete_price_by_qty')
{
$rowid = GETPOST('rowid'); $rowid = GETPOST('rowid');
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
@ -246,7 +252,8 @@ if (empty($reshook))
$result = $db->query($sql); $result = $db->query($sql);
} }
if ($action == 'delete_all_price_by_qty') { if ($action == 'delete_all_price_by_qty')
{
$priceid = GETPOST('priceid'); $priceid = GETPOST('priceid');
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty"; $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
@ -289,14 +296,15 @@ if (empty($reshook))
if ($result < 0) { if ($result < 0) {
setEventMessage($prodcustprice->error, 'errors'); setEventMessage($prodcustprice->error, 'errors');
} else { } else {
setEventMessage($langs->trans('Save'), 'mesgs'); setEventMessage($langs->trans('RecordSaved'), 'mesgs');
} }
$action = ''; $action = '';
} }
} }
if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer)) { if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer))
{
// Delete price by customer // Delete price by customer
$prodcustprice->id = GETPOST('lineid'); $prodcustprice->id = GETPOST('lineid');
$result = $prodcustprice->delete($user); $result = $prodcustprice->delete($user);
@ -304,13 +312,13 @@ if (empty($reshook))
if ($result < 0) { if ($result < 0) {
setEventMessage($prodcustprice->error, 'mesgs'); setEventMessage($prodcustprice->error, 'mesgs');
} else { } else {
setEventMessage($langs->trans('Delete'), 'errors'); setEventMessage($langs->trans('RecordDeleted'), 'errors');
} }
$action = ''; $action = '';
} }
if ($action == 'update_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) { if ($action == 'update_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer))
{
$maxpricesupplier = $object->min_recommended_price(); $maxpricesupplier = $object->min_recommended_price();
$update_child_soc = GETPOST('updatechildprice'); $update_child_soc = GETPOST('updatechildprice');
@ -644,7 +652,7 @@ print '</td></tr>';
print "</table>\n"; print "</table>\n";
print "</div>\n"; dol_fiche_end();
/* ************************************************************************** */ /* ************************************************************************** */
@ -653,7 +661,7 @@ print "</div>\n";
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
if (! $action || $action == 'delete') if (! $action || $action == 'delete' || $action == 'showlog_customer_price' || $action == 'add_customer_price')
{ {
print "\n" . '<div class="tabsAction">' . "\n"; print "\n" . '<div class="tabsAction">' . "\n";
@ -669,7 +677,7 @@ if (! $action || $action == 'delete')
*/ */
if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights->service->creer)) if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights->service->creer))
{ {
print_fiche_titre($langs->trans("NewPrice"), '', ''); print_fiche_titre($langs->trans("NewPrice"), '');
if (empty($conf->global->PRODUIT_MULTIPRICES)) if (empty($conf->global->PRODUIT_MULTIPRICES))
{ {
@ -853,8 +861,6 @@ if ($result)
if ($num > 0) if ($num > 0)
{ {
print '<br>';
if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) print_fiche_titre($langs->trans("DefaultPrice"),'',''); if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) print_fiche_titre($langs->trans("DefaultPrice"),'','');
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
@ -932,7 +938,8 @@ if ($result)
print '<td align="right"><a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $objp->user_id . '">' . img_object($langs->trans("ShowUser"), 'user') . ' ' . $objp->login . '</a></td>'; print '<td align="right"><a href="' . DOL_URL_ROOT . '/user/card.php?id=' . $objp->user_id . '">' . img_object($langs->trans("ShowUser"), 'user') . ' ' . $objp->login . '</a></td>';
// Action // Action
if ($user->rights->produit->supprimer) { if ($user->rights->produit->supprimer)
{
print '<td align="right">'; print '<td align="right">';
if ($i > 0) { if ($i > 0) {
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=delete&amp;id=' . $object->id . '&amp;lineid=' . $objp->rowid . '">'; print '<a href="' . $_SERVER["PHP_SELF"] . '?action=delete&amp;id=' . $object->id . '&amp;lineid=' . $objp->rowid . '">';
@ -955,9 +962,9 @@ if ($result)
} }
// Add area to show/add/edit a price for a dedicated customer
if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
{ {
$prodcustprice = new Productcustomerprice($db); $prodcustprice = new Productcustomerprice($db);
$sortfield = GETPOST("sortfield", 'alpha'); $sortfield = GETPOST("sortfield", 'alpha');
@ -997,7 +1004,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
print '<tr>'; print '<tr>';
print '<td>' . $langs->trans('ThirdParty') . '</td>'; print '<td>' . $langs->trans('ThirdParty') . '</td>';
print '<td>'; print '<td>';
print $form->select_company('', 'socid', 's.rowid NOT IN (SELECT fk_soc FROM ' . MAIN_DB_PREFIX . 'product_customer_price WHERE fk_product='.$object->id.')', 1); print $form->select_company('', 'socid', 's.client in (1,2,3) AND s.rowid NOT IN (SELECT fk_soc FROM ' . MAIN_DB_PREFIX . 'product_customer_price WHERE fk_product='.$object->id.')', 1, 0, 0, array(), 0, 'minwidth300');
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -1165,9 +1172,10 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
$option = '&socid=' . GETPOST('socid', 'int') . '&id=' . $object->id; $option = '&socid=' . GETPOST('socid', 'int') . '&id=' . $object->id;
print_barre_liste($langs->trans('PriceByCustomerLog'), $page, $_SERVEUR ['PHP_SELF'], $option, $sortfield, $sortorder, '', count($prodcustprice->lines), $nbtotalofrecords); print_barre_liste($langs->trans('PriceByCustomerLog'), $page, $_SERVEUR['PHP_SELF'], $option, $sortfield, $sortorder, '', count($prodcustprice->lines), $nbtotalofrecords, '');
if (count($prodcustprice->lines) > 0) { if (count($prodcustprice->lines) > 0)
{
print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="POST">'; print '<form action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '" method="POST">';
print '<input type="hidden" name="id" value="' . $object->id . '">'; print '<input type="hidden" name="id" value="' . $object->id . '">';
@ -1189,9 +1197,9 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
$var = True; $var = True;
foreach ($prodcustprice->lines as $line) { foreach ($prodcustprice->lines as $line)
{
print "<tr $bc[$var]>"; print "<tr ".$bc[$var].">";
// Date // Date
$staticsoc = new Societe($db); $staticsoc = new Societe($db);
$staticsoc->fetch($line->fk_soc); $staticsoc->fetch($line->fk_soc);
@ -1219,7 +1227,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
} }
print "\n" . '<div class="tabsAction">' . "\n"; print "\n" . '<div class="tabsAction">' . "\n";
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '">' . $langs->trans("Ok") . '</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '">' . $langs->trans("Back") . '</a></div>';
print "\n</div><br>\n"; print "\n</div><br>\n";
} }
else else
@ -1268,12 +1276,12 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
if (count($prodcustprice->lines) > 0) { if (count($prodcustprice->lines) > 0)
{
$var = True; $var = False;
foreach ($prodcustprice->lines as $line) {
foreach ($prodcustprice->lines as $line)
{
print "<tr ".$bc[$var].">"; print "<tr ".$bc[$var].">";
// Date // Date
$staticsoc = new Societe($db); $staticsoc = new Societe($db);
@ -1298,26 +1306,33 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
// Todo Edit or delete button // Todo Edit or delete button
// Action // Action
if ($user->rights->produit->supprimer || $user->rights->service->supprimer) { if ($user->rights->produit->supprimer || $user->rights->service->supprimer)
{
print '<td align="right">'; print '<td align="right">';
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=delete_customer_price&amp;id=' . $object->id . '&amp;lineid=' . $line->id . '">';
print img_delete();
print '</a>';
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=edit_customer_price&amp;id=' . $object->id . '&amp;lineid=' . $line->id . '">';
print img_edit();
print '</a>';
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=showlog_customer_price&amp;id=' . $object->id . '&amp;socid=' . $line->fk_soc . '">'; print '<a href="' . $_SERVER["PHP_SELF"] . '?action=showlog_customer_price&amp;id=' . $object->id . '&amp;socid=' . $line->fk_soc . '">';
print img_info(); print img_info();
print '</a>'; print '</a>';
print ' ';
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=edit_customer_price&amp;id=' . $object->id . '&amp;lineid=' . $line->id . '">';
print img_edit('default', 0, 'style="vertical-align: middle;"');
print '</a>';
print ' ';
print '<a href="' . $_SERVER["PHP_SELF"] . '?action=delete_customer_price&amp;id=' . $object->id . '&amp;lineid=' . $line->id . '">';
print img_delete('default', 'style="vertical-align: middle;"');
print '</a>';
print '</td>'; print '</td>';
} }
print "</tr>\n"; print "</tr>\n";
} }
} else { }
else
{
$colspan=9; $colspan=9;
if ($user->rights->produit->supprimer || $user->rights->service->supprimer) $colspan+=1; if ($user->rights->produit->supprimer || $user->rights->service->supprimer) $colspan+=1;
print "<tr ".$bc[false].">";
print '<td colspan="'.$colspan.'">'.$langs->trans('None').'</td>'; print '<td colspan="'.$colspan.'">'.$langs->trans('None').'</td>';
print "</tr>";
} }
print "</table>"; print "</table>";