瀏覽代碼

New: works with variants:
- If product is variant disable prices modify
- Add function isVariant for knowing if product is a Variant

Juanjo Menent 6 年之前
父節點
當前提交
e40ee879dc
共有 3 個文件被更改,包括 56 次插入22 次删除
  1. 1 0
      htdocs/langs/en_US/products.lang
  2. 30 0
      htdocs/product/class/product.class.php
  3. 25 22
      htdocs/product/price.php

+ 1 - 0
htdocs/langs/en_US/products.lang

@@ -331,6 +331,7 @@ NbProducts=No. of products
 ParentProduct=Parent product
 HideChildProducts=Hide variant products
 ShowChildProducts=Show variant products
+NoEditVariants=Go to Parent product card and edit variants price impact in the variants tab
 ConfirmCloneProductCombinations=Would you like to copy all the product variants to the other parent product with the given reference?
 CloneDestinationReference=Destination product reference
 ErrorCopyProductCombinations=There was an error while copying the product variants

+ 30 - 0
htdocs/product/class/product.class.php

@@ -3529,6 +3529,36 @@ class Product extends CommonObject
 		return $nb;
 	}
 
+
+	/**
+	 * Return if loaded product is a variant
+	 *
+	 * @return int
+	 */
+	function isVariant()
+	{
+		global $conf;
+		if (!empty($conf->variants->enabled)) {
+			$sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "product_attribute_combination WHERE fk_product_child = " . $this->id . " AND entity IN (" . getEntity('product') . ")";
+
+			$query = $this->db->query($sql);
+
+			if ($query) {
+				if (!$this->db->num_rows($query)) {
+					return false;
+				}
+				return true;
+			} else {
+				dol_print_error($this->db);
+				return -1;
+			}
+
+		} else {
+			return false;
+		}
+
+	}
+
 	/**
 	 *  Return all parent products for current product (first level only)
 	 *

+ 25 - 22
htdocs/product/price.php

@@ -5,7 +5,7 @@
  * Copyright (C) 2005-2017	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2006		Andre Cianfarani			<acianfa@free.fr>
  * Copyright (C) 2014		Florian Henry			<florian.henry@open-concept.pro>
- * Copyright (C) 2014-2016	Juanjo Menent			<jmenent@2byte.es>
+ * Copyright (C) 2014-2018	Juanjo Menent			<jmenent@2byte.es>
  * Copyright (C) 2014-2018 	Philippe Grand 		    <philippe.grand@atoo-net.com>
  * Copyright (C) 2014		Ion agorria				<ion@agorria.com>
  * Copyright (C) 2015		Alexandre Spangaro		<aspangaro.dolibarr@gmail.com>
@@ -1109,30 +1109,33 @@ if (! $action || $action == 'delete' || $action == 'showlog_customer_price' || $
 {
 	print "\n" . '<div class="tabsAction">' . "\n";
 
-	if (empty($conf->global->PRODUIT_MULTIPRICES) && empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES))
-	{
-    	if ($user->rights->produit->creer || $user->rights->service->creer) {
-    		print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_price&amp;id=' . $object->id . '">' . $langs->trans("UpdateDefaultPrice") . '</a></div>';
-    	}
-	}
+    if ($object->isVariant()) {
+		if ($user->rights->produit->creer || $user->rights->service->creer) {
+			print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NoEditVariants")).'">'.$langs->trans("UpdateDefaultPrice").'</a></div>';
+		}
+	} else {
+		if (empty($conf->global->PRODUIT_MULTIPRICES) && empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) {
+			if ($user->rights->produit->creer || $user->rights->service->creer) {
+				print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_price&amp;id=' . $object->id . '">' . $langs->trans("UpdateDefaultPrice") . '</a></div>';
+			}
+		}
 
-	if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
-	{
-	    if ($user->rights->produit->creer || $user->rights->service->creer) {
-	 		print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=add_customer_price&amp;id=' . $object->id . '">' . $langs->trans("AddCustomerPrice") . '</a></div>';
-	  	}
-	}
+		if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
+			if ($user->rights->produit->creer || $user->rights->service->creer) {
+				print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=add_customer_price&amp;id=' . $object->id . '">' . $langs->trans("AddCustomerPrice") . '</a></div>';
+			}
+		}
 
-	if (! empty($conf->global->PRODUIT_MULTIPRICES) || ! empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES))
-	{
-	    if ($user->rights->produit->creer || $user->rights->service->creer) {
-    		print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_vat&amp;id=' . $object->id . '">' . $langs->trans("UpdateVAT") . '</a></div>';
-    	}
+		if (!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) {
+			if ($user->rights->produit->creer || $user->rights->service->creer) {
+				print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_vat&amp;id=' . $object->id . '">' . $langs->trans("UpdateVAT") . '</a></div>';
+			}
 
-	    if ($user->rights->produit->creer || $user->rights->service->creer) {
-    		print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_price&amp;id=' . $object->id . '">' . $langs->trans("UpdateLevelPrices") . '</a></div>';
-    	}
-	}
+			if ($user->rights->produit->creer || $user->rights->service->creer) {
+				print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER['PHP_SELF'] . '?action=edit_price&amp;id=' . $object->id . '">' . $langs->trans("UpdateLevelPrices") . '</a></div>';
+			}
+		}
+    }
 
 	print "\n</div>\n";
 }