Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by girtri

  1. Hi, on catalog/_partials/product-variants.tpl.. how can I test if attribute have a certain Id: what I'm trying to do is understand if product have size variant and show additional information in that case. Thank you in advance
  2. found bug: problem is caused by my attempt to limit the number of execution of code in "getOrderShippingCost".. $curPage = $this->context->controller->php_self; if ($curPage == "order") { ... from page "order" to "order-confirmation", prestashop invoke multiple times "getOrderShippingCost" in which $curPage is null and my code didn't return a value to the function: I handled the case and now it seems to work.
  3. this is an example of module (txshipping.php) code that, in the end, reproduces the exact same problem: after choosing "my new carrier", the payment method and confirming the order, the shipping costs disappear: <?php if (!defined('_PS_VERSION_')) { exit; } class TxShipping extends CarrierModule { const PREFIX = 'tx_'; public $id_carrier; private $loopCount = 0; private $shipCost = 0; protected $_hooks = array( 'actionCarrierUpdate', 'displayOrderConfirmation', ); protected $_carriers = array( //"Public carrier name" => "technical name", 'My new carrier' => 'txshipping', ); public function __construct() { $this->name = 'txshipping'; $this->tab = 'shipping_logistics'; $this->version = '1.0.0'; $this->author = 'Gerry'; $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '', 'max' => _PS_VERSION_ ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Tx Shipping'); $this->description = $this->l('manage shipping costs'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); if (!Configuration::get('TXSHIPPING_NAME')) { $this->warning = $this->l('No name provided'); } } public function getTemplate($area, $file) { return 'views/templates/' . $area . '/' . $file; } //------------------------------------------------- // Hooks //------------------------------------------------- public function hookActionCartSave($params) { global $smarty; $product_list = $params['cart']->getProducts(); $total_weight = 0; $total_extra_cost = 0; foreach ( $product_list as $product ): $total_weight += $product['weight_attribute']; endforeach; $total_extra_cost = $total_weight * 33; } public function hookActionCarrierUpdate($params) { if ($params['carrier']->id_reference == Configuration::get(self::PREFIX . 'fcd_reference')) { Configuration::updateValue(self::PREFIX . 'fcd', $params['carrier']->id); } } public function getOrderShippingCost($params = null, $shipping_cost = 0) { $curPage = $this->context->controller->php_self; /* using test on wich page is running cause the following code is always executed (even if is loading home page!?) I don't understand why */ if ($curPage == "order") { $this->loopCount++; if ($this->loopCount == 1) { $this->shipCost = 77; $address = new Address($params->id_address_delivery); $cap = $address->postcode; $curID = $this->id_carrier; } return floatval($this->shipCost); } elseif ($curPage == "order-confirmation") { $test = 77; // for simple test return floatval($test); } else { if ($curPage != "pagenotfound") { $this->loopCount = 0; $this->shipCost = 0; } } } public function getOrderShippingCostExternal($params){ //return 999; costi spedizione return $this->getOrderShippingCost($params, 0); } //------------------------------------------------- // Setup //------------------------------------------------- public function install() { if (parent::install()) { /* foreach ($this->_hooks as $hook) { if (!$this->registerHook($hook)) { return false; } }*/ if (!$this->createCarriers()) { return false; } return true; } return false; } public function uninstall() { if (parent::uninstall()) { foreach ($this->_hooks as $hook) { if (!$this->unregisterHook($hook)) { return false; } } if (!$this->deleteCarriers()) { return false; } return true; } return false; } //------------------------------------------------- // Funzioni private //------------------------------------------------- protected function createCarriers() { foreach ($this->_carriers as $key => $value) { //Create own carrier $carrier = new Carrier(); $carrier->name = $key; $carrier->id_tax_rules_group = 0; $carrier->active = 1; $carrier->deleted = 0; foreach (Language::getLanguages(true) as $language) $carrier->delay[(int)$language['id_lang']] = 'Delay [1-2 days]'; $carrier->shipping_handling = false; $carrier->range_behavior = 0; $carrier->is_module = true; $carrier->shipping_external = true; $carrier->external_module_name = $this->name; $carrier->need_range = true; if ($carrier->add()) { $groups = Group::getGroups(true); foreach ($groups as $group) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_group', array( 'id_carrier' => (int) $carrier->id, 'id_group' => (int) $group['id_group'] ), 'INSERT'); } $rangePrice = new RangePrice(); $rangePrice->id_carrier = $carrier->id; $rangePrice->delimiter1 = '0'; $rangePrice->delimiter2 = '1000000'; $rangePrice->add(); $rangeWeight = new RangeWeight(); $rangeWeight->id_carrier = $carrier->id; $rangeWeight->delimiter1 = '0'; $rangeWeight->delimiter2 = '1000000'; $rangeWeight->add(); $zones = Zone::getZones(true); foreach ($zones as $z) { Db::getInstance()->autoExecute(_DB_PREFIX_ . 'carrier_zone', array('id_carrier' => (int) $carrier->id, 'id_zone' => (int) $z['id_zone']), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => (int) $rangePrice->id, 'id_range_weight' => NULL, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_ . 'delivery', array('id_carrier' => $carrier->id, 'id_range_price' => NULL, 'id_range_weight' => (int) $rangeWeight->id, 'id_zone' => (int) $z['id_zone'], 'price' => '0'), 'INSERT'); } copy(dirname(__FILE__) . '/views/img/carrier.jpg', _PS_SHIP_IMG_DIR_ . '/' . (int) $carrier->id . '.jpg'); Configuration::updateValue(self::PREFIX . $value, $carrier->id); Configuration::updateValue(self::PREFIX . $value . '_reference', $carrier->id); } } return TRUE; } protected function deleteCarriers() { foreach ($this->_carriers as $value) { $tmp_carrier_id = Configuration::get(self::PREFIX . $value); $carrier = new Carrier($tmp_carrier_id); $carrier->delete(); } return true; } }
  4. In my module, on getOrderShippingCost($cart, $shipping_cost), when the current page is "order" (get by $this->context->controller->php_self) I calculate carrier shipping cost and return it to the function: this works fine and I can see costs of carriers! When I'm on page "order-confirmation" I return ship cost too, but in this case it seems have no effect! Another thing: the second parameter of function (that I called $shipping_cost) value is always set to zero.
  5. I created a custom module that inherits from CarrierModule (I'm on vers. 1.7.6) following the "classic example code" that can be found on web (which I do not report for brevity). This module adds custom carriers (with properties shipping_external = true and need_range = true). When I go to checkout and choose the shipper, it calculates the order summary correctly by adding the shipping cost line and the cart total is correct! Everything seems to work perfectly .. But when I choose the payment method and confirm the order, prestashop records everything and redirect me to the order confirmation page but, at this point, summarizes the order with FREE shipping cost!? even in the invoice the shipping cost is no longer there but it becomes free! Could someone tell me what happens during the order registration? why is the shipping cost reset? What can I check? Thanks in advance
  6. Ho creato un modulo personalizzato che eredita da CarrierModule (sono su vers. 1.7.6) seguendo il "classico codice di esempio" che si può trovare in rete (che non riporto per brevità). Questo modulo aggiunge degli spedizionieri (con proprietà shipping_external = true e need_range = true). Quando vado al checkout ed eseguo la scelta dello spedizioniere mi calcola il riepilogo ordine correttamente aggiungendo al costo dei prodotti la riga del costo spedizione e il totale del carrello è corretto! Sembra funzionare tutto perfettamente.. Quando però scelgo il metodo di pagamento e confermo l'ordine, registra il tutto, mi manda alla pagina che dice che l'ordine è stato confermato ma a questo punto mi riepiloga l'ordine con un bel costo di spedizione FREE !?!? anche nella fattura il costo spedizione non c'è più ma diventa gratis! Spariscono i costi di spedizione che fino ad un passo prima della conferma e pagamento dell'ordine invece c'erano! Qualcuno mi saprebbe dire cosa succede in fase di registrazione ordine? perchè si azzera il costo spedizione? Cosa potrei controllare? Grazie in anticipo
  7. Sto provando ad usare la funzionalità multistore in Prestashop (Php version is 7.2.24). Ho installato prestashop con il setup standard e dati di esempio, rimosso i dati col prestashop cleaner e attivato la modalità multi negozio. Quindi ho aggiunto un negozio chiamandolo shop2 (virtual url shop2). Ho provato ad importare dati di catalogo in questo modo:: 1) import brands da csv con "All shops" selezionato: tutto ok. 2) import categories da csv con "All shops" selezionato: tutto ok. 3) import products con campo "id_name_of_shop" impostato correttamente: da notare che il file csv contiene i prodotti di entrambi i negozi. Se provo ad importare selezionando "All shops" ricevo un generico messaggio di errore (nessuna informazione di dettaglio). Se provo ad importare selezionando "Default group" ricevo ugualmente un generico messaggio "si è verificato un errore". Se provo ad importare selezionando il negozio principale sembra funzionare tutto correttamente: i prodotti vengono caricati associandoli al loro negozio di appartenenza. Infatti se visualizzo il catalogo nel backend vedo la lista dei prodotti filtrata in base al negozio selezionato. 4) Il problema si verifica cercando di importare le varianti (combinations) pur avendo valorizzato correttamente il campo "id_name_of_shop": anche in questo caso il file csv contiene i dati di entrambi i negozi. Anche in questo caso se provo ad importare selezionando "All shops" (oppure "Default group") ricevo un messaggio "si è verificato un errore". Speravo la procedura di import potesse funzionare selezionando il negozio principale (come avviene per i prodotti) ma il risultato dell'importazione non è corretto (pur terminando senza segnalazioni di errore). Dopo aver importato le varianti, un "product with combinations" appartenente al secondo negozio (quindi non del negozio principale dove ho lanciato l'import) perde l'informazione riguardante la categoria di appartenenza ed anche altri dati come, ad esempio, l'id tax rules. L'ho verificato eseguendo una query sulla tabella "ps_product" dove il campo "id_category_default" è stato valorizzato a zero! (mentre prima dell'importazione del file combinations.csv era valorizzato correttamente). Qual'è la procedura corretta per importare le varianti in presenza di multinegozio? Ringrazio in anticipo
  8. Hi I'm trying to use multistore in Prestashop (Php version is 7.2.24). I have installed prestashop normally with samples data, then clear data and activated multistore. Then I added new shop called shop2 (virtual url shop2). Now I do this things, trying to import data from csv: 1) import brands from csv with "All shops" selected: everything ok. 2) import categories from csv with "All shops" selected: everything ok. 3) import products with field "id_name_of_shop" set correctly: note that csv files contains the products of both stores. If I try to import with "All shops" selected I get an error (generic error without details). If I try to import with "Default group" I get an error. If I try to import with the first (main) shop selected everything seems to be working properly: products are loaded with the correct association with their shop. In fact, if I go on catalog and change selected shop I see the correct products listed (filtered by shop). 4) Now my problem trying import combinations (with field "id_name_of_shop" correctly set): note that csv file contains the combinations of both stores. If I try to import with "All shops" I get an error. If I try to import with "Default group" I get an error. Then I think it could work like importing products, I select the main shop and import csv but this procedure does not work properly! After importing combinations, a product with combinations of the second shop (not the main where I imported) loses information about the category and also other data (like id tax rules!). I verified this querying the "ps_product" table on database where I can see the field "id_category_default" with zero value (before import combinations it was correctly valued). Can anyone help me understand where is the problem and what I'm doing wrong? Thank you in advance.
  9. Ciao, sono "nuovo in prestashop" e mi sono appena installato la versione 1.7. Mi piacerebbe capire dove è configurato il contenuto della home page della demo iniziale. Ad esempio: dove si configura lo slider? come si cambiano le immagini dello slider? Come si può cambiare il contenuto della home page? Scusate ma.. da qualche parte dovrò iniziare.. al limite dove trovo documentazione in merito alla demo? Grazie in anticipo
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More