From 9cbdbc460d74516acfdb08ece2e93bb664843fb4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 4 Dec 2020 19:10:43 +0100 Subject: [PATCH] Fix multicurrency --- .../fourn/class/fournisseur.product.class.php | 44 +++++++++++++------ htdocs/product/fournisseurs.php | 5 +-- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 43a9f271f04..64fbabedb2b 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -61,11 +61,15 @@ class ProductFournisseur extends Product * @see $ref_supplier */ public $fourn_ref; + public $delivery_time_days; public $ref_supplier; // ref supplier (can be set by get_buyprice) public $desc_supplier; public $vatrate_supplier; // default vat rate for this supplier/qty/product (can be set by get_buyprice) + public $product_id; + public $product_ref; + public $fourn_id; //supplier id public $fourn_qty; // quantity for price (can be set by get_buyprice) public $fourn_pu; // unit price for quantity (can be set by get_buyprice) @@ -73,7 +77,9 @@ class ProductFournisseur extends Product public $fourn_price; // price for quantity public $fourn_remise_percent; // discount for quantity (percent) public $fourn_remise; // discount for quantity (amount) + public $product_fourn_id; // product-supplier id + public $product_fourn_entity; /** * @var int ID user_id - user who created/updated supplier price @@ -612,15 +618,15 @@ class ProductFournisseur extends Product // phpcs:enable global $conf; - $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,"; + $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id, p.ref as product_ref,"; $sql .= " pfp.rowid as product_fourn_pri_id, pfp.entity, pfp.ref_fourn, pfp.desc_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.info_bits, pfp.delivery_time_days, pfp.supplier_reputation,"; $sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code, pfp.datec, pfp.tms,"; $sql .= " pfp.barcode, pfp.fk_barcode_type"; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= ", pfp.packaging"; - $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."societe as s"; + $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product as p, ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE pfp.entity IN (".getEntity('productsupplierprice').")"; - $sql .= " AND pfp.fk_soc = s.rowid"; + $sql .= " AND pfp.fk_soc = s.rowid AND pfp.fk_product = p.rowid"; $sql .= " AND s.status=1"; // only enabled company selected $sql .= " AND pfp.fk_product = ".$prodid; if (empty($sortfield)) $sql .= " ORDER BY s.nom, pfp.quantity, pfp.price"; @@ -638,11 +644,12 @@ class ProductFournisseur extends Product //define base attribute $prodfourn = new ProductFournisseur($this->db); + $prodfourn->product_ref = $record["product_ref"]; $prodfourn->product_fourn_price_id = $record["product_fourn_pri_id"]; $prodfourn->product_fourn_id = $record["product_fourn_id"]; $prodfourn->product_fourn_entity = $record["entity"]; - $prodfourn->fourn_ref = $record["ref_fourn"]; $prodfourn->ref_supplier = $record["ref_fourn"]; + $prodfourn->fourn_ref = $record["ref_fourn"]; $prodfourn->desc_supplier = $record["desc_fourn"]; $prodfourn->fourn_price = $record["price"]; $prodfourn->fourn_qty = $record["quantity"]; @@ -958,11 +965,13 @@ class ProductFournisseur extends Product public function listProductFournisseurPriceLog($product_fourn_price_id, $sortfield = '', $sortorder = '', $limit = 0, $offset = 0) { $sql = "SELECT"; - $sql .= " pfpl.rowid, pfp.ref_fourn as supplier_ref, pfpl.datec, u.lastname,"; - $sql .= " pfpl.price, pfpl.quantity"; - $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price_log as pfpl"; - $sql .= ", ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; - $sql .= ", ".MAIN_DB_PREFIX."user as u"; + $sql .= " u.lastname,"; + $sql .= " pfpl.rowid, pfp.ref_fourn as supplier_ref, pfpl.datec,"; + $sql .= " pfpl.price, pfpl.quantity,"; + $sql .= " pfpl.fk_multicurrency, pfpl.multicurrency_code, pfpl.multicurrency_tx, pfpl.multicurrency_price, pfpl.multicurrency_unitprice"; + $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price_log as pfpl,"; + $sql .= " ".MAIN_DB_PREFIX."product_fournisseur_price as pfp,"; + $sql .= " ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE pfp.entity IN (".getEntity('productprice').")"; $sql .= " AND pfpl.fk_user = u.rowid"; $sql .= " AND pfp.rowid = pfpl.fk_product_fournisseur"; @@ -986,6 +995,11 @@ class ProductFournisseur extends Product $tmparray['lastname'] = $obj->lastname; $tmparray['price'] = $obj->price; $tmparray['quantity'] = $obj->quantity; + $tmparray['fk_multicurrency'] = $obj->fk_multicurrency; + $tmparray['multicurrency_code'] = $obj->multicurrency_code; + $tmparray['multicurrency_tx'] = $obj->multicurrency_tx; + $tmparray['multicurrency_price'] = $obj->multicurrency_price; + $tmparray['multicurrency_unitprice'] = $obj->multicurrency_unitprice; $retarray[] = $tmparray; } @@ -1007,19 +1021,23 @@ class ProductFournisseur extends Product */ public function displayPriceProductFournisseurLog($productFournLogList = array()) { - global $langs; + global $conf, $langs; $out = ''; $langs->load("suppliers"); if (count($productFournLogList) > 0) { - $out .= ''; + $out .= '
'; $out .= ''; $out .= ''; //$out .= ''; $out .= ''; foreach ($productFournLogList as $productFournLog) { $out .= ''; - $out .= ''; + $out .= ''; //$out.= ''; $out .= ''; } @@ -1050,7 +1068,7 @@ class ProductFournisseur extends Product $label = ''.$langs->trans("SupplierRef").''; $label .= '
'; - $label .= ''.$langs->trans('Product').': '.$this->ref; + $label .= ''.$langs->trans('Product').': '.$this->product_ref; $label .= '
'.$langs->trans('RefSupplier').': '.$this->ref_supplier; $logPrices = $this->listProductFournisseurPriceLog($this->product_fourn_price_id, 'pfpl.datec', 'DESC'); // set sort order here diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 4853d04f120..edd7622d82b 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -980,8 +980,7 @@ END; } // Supplier ref - if ($usercancreate) // change required right here - { + if ($usercancreate) { // change required right here print ''; } else { print ''; @@ -1138,7 +1137,7 @@ END; if ($usercancreate) { - print ''.img_edit().""; + print ''.img_edit().""; print '   '; print ''.img_picto($langs->trans("Remove"), 'delete').''; }
'.$langs->trans("Date").''.$langs->trans("Price").''.$langs->trans("QtyMin").''.$langs->trans("User").'
'.dol_print_date($productFournLog['datec'], 'dayhour', 'tzuser').''.price($productFournLog['price']).''.price($productFournLog['price'], 0, $langs, 1, -1, -1, $conf->currency); + if ($productFournLog['multicurrency_code'] != $conf->currency) { + $out .= ' ('.price($productFournLog['multicurrency_price'], 0, $langs, 1, -1, -1, $productFournLog['multicurrency_code']).')'; + } + $out .= ''.$productFournLog['quantity'].''.$productFournLog['lastname'].'
'.$productfourn->getNomUrl().''.$productfourn->fourn_ref.'