Sabu Posted January 9, 2012 Share Posted January 9, 2012 Necesito conseguir hacer algo así: Prix de départ : 50€ (groupe 1 par defaut) Votre prix : 40€ (groupe x ) Uso varios descuentos de grupo. el primero tendría que ser referente al precio UNO, y el segundo, al grupo al que pertenezca el usuario. En el foro francés hay algo, pero no veo una "gran solución", pues el código que ponen al final, es el mismo que trae prestashop. Alguna ayuda? http://www.prestashop.com/forums/topic/118340-prestashop-14-affichage-prix-par-groupe-et-prix-de-base-barre/ Link to comment Share on other sites More sharing options...
nadie Posted January 9, 2012 Share Posted January 9, 2012 Necesito conseguir hacer algo así: Prix de départ : 50€ (groupe 1 par defaut) Votre prix : 40€ (groupe x ) Uso varios descuentos de grupo. el primero tendría que ser referente al precio UNO, y el segundo, al grupo al que pertenezca el usuario. En el foro francés hay algo, pero no veo una "gran solución", pues el código que ponen al final, es el mismo que trae prestashop. Alguna ayuda? http://www.prestasho...-de-base-barre/ Esto, supongo que es a la hora de ver el precio en la ficha del producto, que se vea el precio de tu grupo y el de los otros tachados ?? Link to comment Share on other sites More sharing options...
Sabu Posted January 10, 2012 Author Share Posted January 10, 2012 Hola! Gracias por responder Exactamente es eso. El tema es que el código que aparece en el último post, no cambia comparado con el real. ¿Cómo se podría hacer la modificación? En ese hilo, hay un código PHP, ¿hay que insertarlo? ¿Cómo se haría?... Me causa confusión el segundo mensaje. Muchas gracias por la respuesta! Link to comment Share on other sites More sharing options...
infocrm Posted June 6, 2012 Share Posted June 6, 2012 (edited) Hola! Puedes hacerlo de esta forma, poniendo esta línea en product.tpl <span class="prices"> {convertPrice price=$product->getPriceStatic($product->id, true, $smarty.const.NULL, 6, $smarty.const.NULL, false, false, 1, false, $smarty.const.NULL, $smarty.const.NULL, $smarty.const.NULL, $getReductionPricen, false, false)}</span> Con esta línea podrás mostrar el precio real del artículo sin aplicar descuentos por el grupo al que pertenece el cliente. Edited June 6, 2012 by infocrm (see edit history) 1 Link to comment Share on other sites More sharing options...
nadie Posted June 6, 2012 Share Posted June 6, 2012 Buen aporte Hola! Puedes hacerlo de esta forma, poniendo esta línea en product.tpl <span class="prices"> {convertPrice price=$product->getPriceStatic($product->id, true, $smarty.const.NULL, 6, $smarty.const.NULL, false, false, 1, false, $smarty.const.NULL, $smarty.const.NULL, $smarty.const.NULL, $getReductionPricen, false, false)}</span> Con esta línea podrás mostrar el precio real del artículo sin aplicar descuentos por el grupo al que pertenece el cliente. 1 Link to comment Share on other sites More sharing options...
nadie Posted June 6, 2012 Share Posted June 6, 2012 Por si algún usuario le interesa saber el funcionamiento de tal función la puede encontrar en el fichero classes/Product.php: public static function getPriceStatic($id_product, $usetax = true, $id_product_attribute = NULL, $decimals = 6, $divisor = NULL, $only_reduc = false, $usereduc = true, $quantity = 1, $forceAssociatedTax = false, $id_customer = NULL, $id_cart = NULL, $id_address = NULL, &$specificPriceOutput = NULL, $with_ecotax = true, $use_groupReduction = true) { global $cookie, $cart; $cur_cart = $cart; if (isset($divisor)) Tools::displayParameterAsDeprecated('divisor'); if (!Validate::isBool($usetax) OR !Validate::isUnsignedId($id_product)) die(Tools::displayError()); // Initializations if (!$id_customer) $id_customer = ((Validate::isCookie($cookie) AND isset($cookie->id_customer) AND $cookie->id_customer) ? (int)($cookie->id_customer) : NULL); $id_group = $id_customer ? (int)(Customer::getDefaultGroupId($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_; if (!is_object($cur_cart) OR (Validate::isUnsignedInt($id_cart) AND $id_cart)) { /* * When a user (e.g., guest, customer, Google...) is on PrestaShop, he has already its cart as the global (see /init.php) * When a non-user calls directly this method (e.g., payment module...) is on PrestaShop, he does not have already it BUT knows the cart ID */ if (!$id_cart AND !Validate::isCookie($cookie)) die(Tools::displayError()); $cur_cart = $id_cart ? new Cart((int)($id_cart)) : new Cart((int)($cookie->id_cart)); } $cart_quantity = 0; if ((int)($id_cart)) { $condition = ''; $cache_name = (int)($id_cart).'_'.(int)($id_product); if(Configuration::get('PS_QTY_DISCOUNT_ON_COMBINATION')) { $cache_name = (int)($id_cart).'_'.(int)($id_product).'_'.(int)($id_product_attribute); $condition = ' AND `id_product_attribute` = '.(int)($id_product_attribute); } if (!isset(self::$_cart_quantity[$cache_name]) OR self::$_cart_quantity[$cache_name] != (int)($quantity)) { self::$_cart_quantity[$cache_name] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT SUM(`quantity`) FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.(int)($id_product).' AND `id_cart` = '.(int)($id_cart).' '.$condition ); $cart_quantity = self::$_cart_quantity[$cache_name]; } } $quantity = ($id_cart AND $cart_quantity) ? $cart_quantity : $quantity; $id_currency = (int)(Validate::isLoadedObject($cur_cart) ? $cur_cart->id_currency : ((isset($cookie->id_currency) AND (int)($cookie->id_currency)) ? $cookie->id_currency : Configuration::get('PS_CURRENCY_DEFAULT'))); // retrieve address informations $id_country = (int)Country::getDefaultCountryId(); $id_state = 0; $id_county = 0; if (!$id_address) $id_address = $cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; if ($id_address) { $address_infos = Address::getCountryAndState($id_address); if ($address_infos['id_country']) { $id_country = (int)($address_infos['id_country']); $id_state = (int)($address_infos['id_state']); $postcode = (int)$address_infos['postcode']; $id_county = (int)County::getIdCountyByZipCode($id_state, $postcode); } } elseif (isset($cookie->id_country)) { // fetch address from cookie $id_country = (int)$cookie->id_country; $id_state = (int)$cookie->id_state; $postcode = (int)$cookie->postcode; $id_county = (int)County::getIdCountyByZipCode($id_state, $postcode); } if (Tax::excludeTaxeOption()) $usetax = false; if ($usetax != false AND !empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) $usetax = false; $id_shop = (int)(Shop::getCurrentShop()); return Product::priceCalculation($id_shop, $id_product, $id_product_attribute, $id_country, $id_state, $id_county, $id_currency, $id_group, $quantity, $usetax, $decimals, $only_reduc, $usereduc, $with_ecotax, $specificPriceOutput, $use_groupReduction); } Link to comment Share on other sites More sharing options...
ManTheCavern Posted June 14, 2012 Share Posted June 14, 2012 El precio se muestra en todos los grupos de clientes, incluso sin estar en tu cuenta. Esto queda mal, porque muestra el precio dos veces. Como podriamos hacer que este codigo solo se mostrara en X grupo? Es decir, grupo profesionales, muestre arriba este precio tachado, y justo debajo su precio. Link to comment Share on other sites More sharing options...
ManTheCavern Posted June 15, 2012 Share Posted June 15, 2012 ¿Nadie me puede ayudar? Link to comment Share on other sites More sharing options...
Rolige Posted June 27, 2012 Share Posted June 27, 2012 Podrías agregar unas líneas antes que esa preguntando si esta loggeado y si no pertenece al grupo por defecto, si ese es el caso entonces mostrarías la línea k te mencionan. Esto lo vería solamente los clientes que han iniciado sesion y que no son del grupo predeterminado. Link to comment Share on other sites More sharing options...
Recommended Posts