Jump to content

Mostrar precio grupo y precio por defecto. AYUDA!


Sabu

Recommended Posts

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

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

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

  • 4 months later...

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 by infocrm (see edit history)
  • Like 1
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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

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

  • 2 weeks later...

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...