Jump to content

alepul

Members
  • Posts

    18
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

alepul's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. Ciao a tutti. io ho risolto diversamente con un "accrocchio". Ho direttamente modificato la classe PaymentModule.php (prestashop 1.4.10) dovrebbe essere più o meno la stessa cosa nella 1.5 il modulo cacheondelivery originale va a richiamare una funzione validateOrder() direttamente dal file validation.php Questa funzione è inclusa nella classe PaymentModule.php nella riga 126 ho apportato la seguente modifica if ( $paymentMethod == 'nomedelmodulo') **** { $order->total_paid_real = $amountPaid+(valore contrassegno);* $order->total_shipping = (float)($cart->getOrderShippingCost()+(valorecontrassegno));* $order->total_paid = (float)(Tools::ps_round((float)($cart->getOrderTotal(true, Cart::BOTH)+(valorecontrassegno)), 2));* } else { $order->total_paid_real = $amountPaid; $order->total_shipping = (float)($cart->getOrderShippingCost()); $order->total_paid = (float)(Tools::ps_round((float)($cart->getOrderTotal(true, Cart::BOTH)), 2)); } dove "nomedelmodulo" è il nome assegnato al modulo nella traduzione, e "valorecontrassegno" è il valore numerico aggiuntivo al contrassegno. ovviamente se volessimo aggiungere altri parametri dovrei effettuare operazioni differenti ma per quello che serve ame funziona benissimo, devo solo segnare le modifiche che effettuo per poi riportarle negli aggiornamenti successivi di prestashop. Inutile dire che la cosa migliore è creare una nuova funzione validateOrderFEE() in cacheondelivery.php (contenuto all'interno del modulo ), copiando la validateOrder() dalla classe PaymentModule.php e modificandola per quello che serve, senza dover toccare la classe stessa. io l'ho fatto anche così e funciona perfettamente almeno a livello di dati ...non capisco perchè non carica la pagina di avvenuta conferma ordine.. appena ho un po di tempo ci smaetto un po .... fatemi sapere se qualcuno di voi ha risolto prima di me ..un saluto a tutti!!
  2. Ho risolto il problema per la 1.3.6 Lo vado a postare per capire se può essere utile a qualcuno. Nel file classes/category.php ho modificato la seguente funzione public function getProducts (riga 353) alla riga 386. aggiungere il seguente comando. $id_manufacturer = intval(Tools::getValue('id_manufacturer')); alla riga 399 dopo la condizione '.($id_manufacturer ? 'AND p.id_manufacturer = '.$id_manufacturer : '').' alla riga 418 il seguente '.($id_manufacturer ? 'AND p.id_manufacturer = '.$id_manufacturer : '').' non ho fatto altro che inserire l' id_manufacrurer alla select dei prodotti (in egual modo dell' id_supplier) di seguito tutta la funzione public function getSubCategories($id_lang, $active = true) { global $cookie; if (!Validate::isBool($active)) die(Tools::displayError()); $result = Db::getInstance()->ExecuteS(' SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.intval($id_lang).') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE `id_parent` = '.intval($this->id).' '.($active ? 'AND `active` = 1' : '').' AND cg.`id_group` '.(!$cookie->id_customer ? '= 1' : 'IN (SELECT id_group FROM '._DB_PREFIX_.'customer_group WHERE id_customer = '.intval($cookie->id_customer).')').' GROUP BY c.`id_category` ORDER BY `name` ASC'); /* Modify SQL result */ foreach ($result AS &$row) { $row['name'] = Category::hideCategoryPosition($row['name']); $row['id_image'] = (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg')) ? intval($row['id_category']) : Language::getIsoById($cookie->id_lang).'-default'; $row['legend'] = 'no picture'; } return $result; } private static function getAllSubCats(&$all_cats, $id_cat, $id_lang) { $category = new Category(intval($id_cat)); $sub_cats = $category->getSubcategories($id_lang); if(count($sub_cats) > 0) foreach ($sub_cats AS $sub_cat) { $all_cats[] = $sub_cat['id_category']; self::getAllSubCats($all_cats, $sub_cat['id_category'], $id_lang); } } /** * Return current category products * * @param integer $id_lang Language ID * @param integer $p Page number * @param integer $n Number of products per page * @param boolean $getTotal return the number of results instead of the results themself * @param boolean $active return only active products * @param boolean $random active a random filter for returned products * @param int $randomNumberProducts number of products to return if random is activated * @return mixed Products or number of products */ public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1) { global $cookie; if ($p < 1) $p = 1; if (empty($orderBy)) $orderBy = 'position'; else /* Fix for all modules which are now using lowercase values for 'orderBy' parameter */ $orderBy = strtolower($orderBy); if (empty($orderWay)) $orderWay = 'ASC'; if ($orderBy == 'id_product' OR $orderBy == 'date_add') $orderByPrefix = 'p'; elseif ($orderBy == 'name') $orderByPrefix = 'pl'; elseif ($orderBy == 'manufacturer') { $orderByPrefix = 'm'; $orderBy = 'name'; } elseif ($orderBy == 'position') $orderByPrefix = 'cp'; if ($orderBy == 'price') $orderBy = 'orderprice'; if (!Validate::isBool($active) OR !Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) die (Tools::displayError()); $id_manufacturer = intval(Tools::getValue('id_manufacturer')); $id_supplier = intval(Tools::getValue('id_supplier')); /* Return only the number of products */ if ($getTotal) { $result = Db::getInstance()->getRow(' SELECT COUNT(cp.`id_product`) AS total FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').' '.($id_manufacturer ? 'AND p.id_manufacturer = '.$id_manufacturer : '').' '.($id_supplier ? 'AND p.id_supplier = '.intval($id_supplier) : '')); return isset($result) ? $result['total'] : 0; } $sql = ' SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, (p.`price` * IF(t.`rate`,((100 + (t.`rate`))/100),1) - IF((DATEDIFF(`reduction_from`, CURDATE()) <= 0 AND DATEDIFF(`reduction_to`, CURDATE()) >=0) OR `reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * IF(t.`rate`,((100 + (t.`rate`))/100),1) * `reduction_percent` / 100)),0)) AS orderprice FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.intval($id_lang).') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).') LEFT JOIN `'._DB_PREFIX_.'tax` t ON t.`id_tax` = p.`id_tax` LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.intval($id_lang).') LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').' '.($id_manufacturer ? 'AND p.id_manufacturer = '.$id_manufacturer : '').' '.($id_supplier ? 'AND p.id_supplier = '.$id_supplier : ''); if ($random === true) { $sql .= ' ORDER BY RAND()'; $sql .= ' LIMIT 0, '.intval($randomNumberProducts); } else { $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n); } $result = Db::getInstance()->ExecuteS($sql); if ($orderBy == 'orderprice') { Tools::orderbyPrice($result, $orderWay); } if (!$result) return false; /* Modify SQL result */ return Product::getProductsProperties($id_lang, $result); } /** * Hide category prefix used for position * * @param string $name Category name * @return string Name without position
  3. cerco la stessa soluzionione... per prestashop 1.3.6 ho trovato qualche post sulla 1.4 ma per me non va bene. ecco il post http://www.prestashop.com/forums/topic/171430-manufacturer-filter-in-categorylist-productlist/ saluti Ale
  4. Ciao. Penso ti serva un filtro di navigazione. io uso live filter pro...costa 70 euro e lo trovi qui http://addons.prestashop.com/it/search.php?search_query=live+filter+pro un saluto Ale
  5. Hello guys! I have been following your discussion, and I will try to make changes to the version being restyling 1.4.9. In the meantime, I need to make the same change to version 1.3.6 Any advice .... I just can not figure out which file to edit? Tanks!
  6. Ciao.. so che è un po generica come risposta, ma se hai modo di collegarti al database di presta, esegui un export dal tuo pc...lo puoi fare anche con access... se usi strumenti di export non riesci a visualizzare correttamente i dati...in un paio di giorni sono riuscito ad ottimizzare il feed e ho caricato più di 10000 prodotti ... è importante visualizzare bene i dati prima di pubblicarli...se ci sono "buchi" google merchant di blocca... e non fa passare il feed. un saluto
  7. Ciao a tutti, Nella form contenuta in order-carrire.tpl ho aggiunto un nuovo campo di testo che in teoria dovrebbe "portare con se" un valore lungo tutto il percorso dell'ordine, sino alla sua chiusura e ovviamente scrivere il dato in un nuovo record( tipo text) contenuto nella tabella ps_orders. chiamato ws_ddt inoltre questo valore lo dovrò riportare in fattura. Premetto che sono già riuscito a legare la presenza o meno del campo testo in base al gruppo di utenza collegato.Mi spiegerò meglio più avanti con l'esempio pratico. Diciamo che il comportamento dovrebbe essere simile a quello del valore gift_message, ma senza la necessità di abilitare o meno la confezione regalo. Ovviamente voglio mantenere integro il codice inerente la scelta o meno della confezione regalo legata al suo messaggio. questo è quello che ho fatto. creo un corriere legato solo a un gruppo di utenza. ho forzato il codice del file "order-carrier.tpl" in questo modo: {if $carrier.id_carrier == 22} <p id="ws_ddt" class="textarea"> <label for="ws_ddt">{l s='DDT n'}</label> <textarea rows="1" cols="15" id="ws_ddt" name="ws_ddt" >{$cart->ws_ddt|escape:'htmlall':'UTF-8'}</textarea> </p> {else} {$carrier.delay|escape:'htmlall':'UTF-8'} {/if} dove 22 è il valore dell'id del correre che intendo utilizzare per un solo gruppo di utenza. ho modificato la classe Order.php in questo modo: public $ws_ddt; protected $fieldsValidate = array( 'id_address_delivery' => 'isUnsignedId', .... .... 'ws_ddt' => 'isMessage' ); poi ho aggiunto : public function getFields() { parent::validateFields(); $fields['id_address_delivery'] = intval($this->id_address_delivery); .... .... $fields['ws_ddt'] = pSQL($this->ws_ddt); return $fields; } Ho apportato anche le modifice nel file order.php contenuto nella root di prestashop intorno alla riga 217 /* Carrier step */ function processCarrier() { global $cart, $smarty, $isVirtualCart, $orderTotal; $errors = array(); $cart->recyclable = (isset($_POST['recyclable']) AND !empty($_POST['recyclable'])) ? 1 : 0; $cart->ws_ddt = ($_POST['ws_ddt']); nonostante tutto il valore della variabile "ws_ddt" si perde subito dopo il suo inserimento, già nella fase di scelta della forma di pagamento, mentre , pur simulandone il "comportamento", il valore inserito nel campo "gift_message" viene trascinato sino alla fine del processo dell'ordine e scritto nel database . qualcuno è in grado di aiutarmi?? Grazie per la disponibilità. Ale. p.s. ho dato già un occhiata al seguente topic http://www.prestasho...-order-carrier/
  8. Sono pienamente daccordo. Passando all'utilizzo di Prestashop la nostra azienda è costretta a registrare n fatture al giorno, e in più c'è la scomodità di dover registrare un anagrafica cliente, quasi inutile almeno per il settore contabile, dato che il cliente web non è che acquista tutte le volte solo sul nostro sito... nell' 80 - 90 % dei casi è sempre un nuovo cliente... Ne backoffice, il pannello della fatturazione dovrebbe chiamarsi fatture/corrispettivi. se disabilito le fatture abilito i corrispettivi, lasciando invariata la ricerca de documenti. Così avremo un unioco documento sia se voglio un finegiornata sia che un finemese... potrebbe essere un opzione ?
  9. Cortesemente postresti inviarmi qalche link che riguardano degli interfacciamenti? ti ringrazio in anticipo
  10. ciao... grazie per la considerazione... ti dico la verità... per ora non ho ricostruito niente ho solo collegato le tabelle di prestashop a un semplice db in access... via ODBC eseguo solo delle query di aggiornamento per riportare i dati di un database anagrafiche abbigliamneto già esistente e li riporto sui campi delle tabelle del db di prestashop. scrivo quello che sto facendo in modo da aprire una discussione a riguardo in modo da convogliare eventuali pareri della community, anche perchè ancora non ho trovato informazioni valide a riguardo...
  11. Ok.. pare che le relazioni con cenrino niente Ho usato il MYSQL Workbench per visualizzare graficamente la struttura delle tabelle, ma non viene visualizzata nessuna relazione...probabilmente non lo so usare benissimo...cmq è uno strumento molto potente... Sono riuscito ad allineare i prodotti che avevo in un database locale, direttamente sulle tabelle collegate di Prestashop. esattamente le tabelle product (che contiene l'anagrafica articolo) e product_lang (che contiene le descrizioni del'articolo). l'aggiornamento chiaramente viene fatto con query di aggiornamento. Bisogna fare molta attenzione agli ID delle tabelle di prestashop.... bisogna fare in modo che quando si aggiornano gli articoli gli ID siano sempre gli stessi...inoltre quando cancelli un prodotto dalla tabella product non vengono cancellate le informazioni della descrizione contenute in product_lang stesse problematiche le si riscontrano anche nelle tabelle che gestiscono le immagini dei prodotti (image e image_lang) e nelle tabelle di gestione dei marchi o produttori (manufactured e manufactured_lang)
  12. OK... non sono pazzo ... qualcuno ha pensato la mia stessa cosa ... ho trovato qualche informaziono ma il francese non è il mio forte... http://www.prestashop.com/blog/article/615 effettivamente quando colleghi le tabelle non ti importi mica le relazioni.... esiste una soluzione per importare le relazioni tra le tabelle?
  13. Buongiorno a tutti Sto cercando una soluzione per gestire il database di prestashop in locale attraverso un file di access con il sistema delle tabelle collegate. L'esigenza nasce dal fatto che ho già un data entry costruito a doc pelr la mia azienda e lo voglio "adattare " a quello di prestashop senza variare le altre applicazioni che ho costruito per avere una giacenza della merce in tempo reale. Il dominio è appoggiato su un server virtuale, quindi riesco ad accedere al database anche via ODBC senza alcun problema... sono riuscito a trovare anche uno schema del database, anche se non so quanto sia attendibile, che troverete in allegato a questo post, oppure sul sito. http://www.daveegerton.com Per ora ho collegato le tabelle che fanno riferimento ai prodotti, alle categorie...e e tutto quello che mi serve ... riesco a modificare , aggiungere ed eliminare un record su tutte le tabelle collegate...l'idea è quella di cerare una procedura che vada ad aggiornare i record di prestashop direttamente in locale chiaramente con un sistema temporizzato ... il data entry non verrebbe effettuato direttamente sul database di prestashop ma su un altro ... solo in fase di temporizzazione andrei ad aggiornare le tabelle di prestashop. il fatto è che non voglio usare import da csv Ora arrivo alla domanda... Travate che sia una cosa poco gestibile e che nelle grosse quantità di dati potrebbe creare problemi di instabilità al sistema di prestashop? C'è qualcuno che ha già pensato a questa soluzione ed è riuscito a realizzarla? Qal'è la strada giusta da percorrere... esiste già una soluzione simile che mi eviti di perdere troppo tempo sulla gestione dei dati? Grazie a tutti per le eventuali risposte
  14. Non è una cattiva idea... Fammi sapere appena lo realizzi... ciao
  15. ...pensavo fosse più complesso.. Grazie mi sei stato di aiuto Un saluto
×
×
  • Create New...