NEW reputation for price supplier

This commit is contained in:
Alexis Algoud 2016-04-04 15:06:54 +02:00
parent b59b758016
commit 61a077b0ee
3 changed files with 32 additions and 7 deletions

View File

@ -178,9 +178,10 @@ class ProductFournisseur extends Product
* @param float $remise Discount regarding qty (amount) * @param float $remise Discount regarding qty (amount)
* @param int $newnpr Set NPR or not * @param int $newnpr Set NPR or not
* @param int $delivery_time_days Delay in days for delivery (max). May be '' if not defined. * @param int $delivery_time_days Delay in days for delivery (max). May be '' if not defined.
* @param string $supplier_reputation Reputation with this product to the defined supplier (empty, FAVORITE, DONOTORDER)
* @return int <0 if KO, >=0 if OK * @return int <0 if KO, >=0 if OK
*/ */
function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0) function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0, $supplier_reputation='')
{ {
global $conf, $langs; global $conf, $langs;
//global $mysoc; //global $mysoc;
@ -191,6 +192,7 @@ class ProductFournisseur extends Product
if (empty($charges)) $charges=0; if (empty($charges)) $charges=0;
if (empty($availability)) $availability=0; if (empty($availability)) $availability=0;
if (empty($remise_percent)) $remise_percent=0; if (empty($remise_percent)) $remise_percent=0;
if (empty($supplier_reputation)) $supplier_reputation='';
if ($delivery_time_days != '' && ! is_numeric($delivery_time_days)) $delivery_time_days = ''; if ($delivery_time_days != '' && ! is_numeric($delivery_time_days)) $delivery_time_days = '';
if ($price_base_type == 'TTC') if ($price_base_type == 'TTC')
{ {
@ -225,7 +227,8 @@ class ProductFournisseur extends Product
$sql.= " entity = ".$conf->entity.","; $sql.= " entity = ".$conf->entity.",";
$sql.= " info_bits = ".$newnpr.","; $sql.= " info_bits = ".$newnpr.",";
$sql.= " charges = ".$charges.","; $sql.= " charges = ".$charges.",";
$sql.= " delivery_time_days = ".($delivery_time_days != '' ? $delivery_time_days : 'null'); $sql.= " delivery_time_days = ".($delivery_time_days != '' ? $delivery_time_days : 'null').",";
$sql.= " supplier_reputation = ".(empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'");
$sql.= " WHERE rowid = ".$this->product_fourn_price_id; $sql.= " WHERE rowid = ".$this->product_fourn_price_id;
// TODO Add price_base_type and price_ttc // TODO Add price_base_type and price_ttc
@ -268,7 +271,7 @@ class ProductFournisseur extends Product
{ {
// Add price for this quantity to supplier // Add price for this quantity to supplier
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price("; $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price(";
$sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, info_bits, entity, delivery_time_days)"; $sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, info_bits, entity, delivery_time_days,supplier_reputation)";
$sql.= " values('".$this->db->idate($now)."',"; $sql.= " values('".$this->db->idate($now)."',";
$sql.= " ".$this->id.","; $sql.= " ".$this->id.",";
$sql.= " ".$fourn->id.","; $sql.= " ".$fourn->id.",";
@ -285,7 +288,8 @@ class ProductFournisseur extends Product
$sql.= " ".$availability.","; $sql.= " ".$availability.",";
$sql.= " ".$newnpr.","; $sql.= " ".$newnpr.",";
$sql.= $conf->entity.","; $sql.= $conf->entity.",";
$sql.= $delivery_time_days; $sql.= $delivery_time_days.",";
$sql.= (empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'");
$sql.=")"; $sql.=")";
dol_syslog(get_class($this)."::update_buyprice", LOG_DEBUG); dol_syslog(get_class($this)."::update_buyprice", LOG_DEBUG);
@ -359,7 +363,8 @@ class ProductFournisseur extends Product
{ {
global $conf; global $conf;
$sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability,"; $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability,";
$sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days,"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price
$sql.=" pfp.supplier_reputation";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= " WHERE pfp.rowid = ".$rowid; $sql.= " WHERE pfp.rowid = ".$rowid;
@ -389,6 +394,7 @@ class ProductFournisseur extends Product
$this->delivery_time_days = $obj->delivery_time_days; $this->delivery_time_days = $obj->delivery_time_days;
//$this->fourn_tva_npr = $obj->fourn_tva_npr; // TODO this field not exist in llx_product_fournisseur_price. We should add it ? //$this->fourn_tva_npr = $obj->fourn_tva_npr; // TODO this field not exist in llx_product_fournisseur_price. We should add it ?
$this->fk_supplier_price_expression = $obj->fk_supplier_price_expression; $this->fk_supplier_price_expression = $obj->fk_supplier_price_expression;
$this->supplier_reputation = $obj->supplier_reputation;
if (empty($ignore_expression) && !empty($this->fk_supplier_price_expression)) if (empty($ignore_expression) && !empty($this->fk_supplier_price_expression))
{ {
@ -437,7 +443,7 @@ class ProductFournisseur extends Product
$sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,"; $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,";
$sql.= " pfp.rowid as product_fourn_pri_id, pfp.ref_fourn, pfp.fk_product as product_fourn_id, pfp.fk_supplier_price_expression,"; $sql.= " pfp.rowid as product_fourn_pri_id, pfp.ref_fourn, pfp.fk_product as product_fourn_id, pfp.fk_supplier_price_expression,";
$sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days"; $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")"; $sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")";
@ -476,6 +482,7 @@ class ProductFournisseur extends Product
$prodfourn->id = $prodid; $prodfourn->id = $prodid;
$prodfourn->fourn_tva_npr = $record["info_bits"]; $prodfourn->fourn_tva_npr = $record["info_bits"];
$prodfourn->fk_supplier_price_expression = $record["fk_supplier_price_expression"]; $prodfourn->fk_supplier_price_expression = $record["fk_supplier_price_expression"];
$prodfourn->supplier_reputation = $record["supplier_reputation"];
if (!empty($conf->dynamicprices->enabled) && !empty($prodfourn->fk_supplier_price_expression)) { if (!empty($conf->dynamicprices->enabled) && !empty($prodfourn->fk_supplier_price_expression)) {
$priceparser = new PriceParser($this->db); $priceparser = new PriceParser($this->db);

View File

@ -45,3 +45,7 @@ MenuOrdersSupplierToBill=Supplier orders to invoice
NbDaysToDelivery=Delivery delay in days NbDaysToDelivery=Delivery delay in days
DescNbDaysToDelivery=The biggest deliver delay of the products from this order DescNbDaysToDelivery=The biggest deliver delay of the products from this order
UseDoubleApproval=Use double approval when amount (without tax) is higher than (The second approval can be done by any user with the dedicated permission. Set to 0 for no double approval) UseDoubleApproval=Use double approval when amount (without tax) is higher than (The second approval can be done by any user with the dedicated permission. Set to 0 for no double approval)
SupplierReputation=Supplier reputation
DoNotOrderThisProductToThisSupplier=Do not order
NotTheGoodQualitySupplier=Wrong quality
ReputationForThisProduct=Reputation

View File

@ -77,6 +77,8 @@ if ($id > 0 || $ref)
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha'); $sortorder = GETPOST("sortorder",'alpha');
$reputations=array(''=>$langs->trans('Standard'),'FAVORITE'=>$langs->trans('Favorite'),'NOTTHGOOD'=>$langs->trans('NotTheGoodQualitySupplier'), 'DONOTORDER'=>$langs->trans('DoNotOrderThisProductToThisSupplier'));
if (! $sortfield) $sortfield="s.nom"; if (! $sortfield) $sortfield="s.nom";
if (! $sortorder) $sortorder="ASC"; if (! $sortorder) $sortorder="ASC";
@ -141,6 +143,7 @@ if (empty($reshook))
$tva_tx = price2num($tva_tx); $tva_tx = price2num($tva_tx);
$price_expression = GETPOST('eid', 'int') ? GETPOST('eid', 'int') : ''; // Discard expression if not in expression mode $price_expression = GETPOST('eid', 'int') ? GETPOST('eid', 'int') : ''; // Discard expression if not in expression mode
$delivery_time_days = GETPOST('delivery_time_days', 'int') ? GETPOST('delivery_time_days', 'int') : ''; $delivery_time_days = GETPOST('delivery_time_days', 'int') ? GETPOST('delivery_time_days', 'int') : '';
$supplier_reputation = GETPOST('supplier_reputation');
if ($tva_tx == '') if ($tva_tx == '')
{ {
@ -379,6 +382,11 @@ if ($id > 0 || $ref)
} }
print '</td></tr>'; print '</td></tr>';
//reputation
print '<tr><td class="fieldrequired">'.$langs->trans("SupplierReputation").'</td><td>';
echo $form->selectarray('supplier_reputation', $reputations,$product->supplier_reputation);
print '</td></tr>';
// Ref supplier // Ref supplier
print '<tr><td class="fieldrequired">'.$langs->trans("SupplierRef").'</td><td>'; print '<tr><td class="fieldrequired">'.$langs->trans("SupplierRef").'</td><td>';
if ($rowid) if ($rowid)
@ -566,6 +574,7 @@ if ($id > 0 || $ref)
$param="&id=".$object->id; $param="&id=".$object->id;
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Suppliers"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Suppliers"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("ReputationForThisProduct"));
print_liste_field_titre($langs->trans("SupplierRef")); print_liste_field_titre($langs->trans("SupplierRef"));
if (!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) print_liste_field_titre($langs->trans("Availability"),$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder); if (!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) print_liste_field_titre($langs->trans("Availability"),$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("QtyMin"),$_SERVER["PHP_SELF"],"pfp.quantity","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("QtyMin"),$_SERVER["PHP_SELF"],"pfp.quantity","",$param,'align="right"',$sortfield,$sortorder);
@ -597,6 +606,11 @@ if ($id > 0 || $ref)
print "<tr ".$bc[$var].">"; print "<tr ".$bc[$var].">";
print '<td>'.$productfourn->getSocNomUrl(1,'supplier').'</td>'; print '<td>'.$productfourn->getSocNomUrl(1,'supplier').'</td>';
print '<td>';
if(!empty($productfourn->supplier_reputation) && !empty($reputations[$productfourn->supplier_reputation])) {
print $reputations[$productfourn->supplier_reputation];
}
print'</td>';
// Supplier // Supplier
print '<td align="left">'.$productfourn->fourn_ref.'</td>'; print '<td align="left">'.$productfourn->fourn_ref.'</td>';