deech123 Posted October 30, 2015 Share Posted October 30, 2015 hi, ik heb een aantal zaken al geprogrammeerd die niet standaard zijn. zo haal ik 's avonds alle trackingcodes op uit een .csv file, en ga ik deze één voor één gaan updaten in de juiste tabel. alles werkt, enkel wil ik nu nog weten hoe ik de email MET de trackcode kan verzenden. manueel de trackingcode invullen lukt perfect, de email gaat weg. maar ik wil dat nu vanuit een PHP pagina oproepen. dit werkt bv al perfect : $order_carrier = new OrderCarrier($id_order_carrier); $order_carrier->tracking_number = $shipping_number; $order_carrier->update(); waar het shipping_number mijn eigen tracking code is van de vervoerder. maar wat moet ik nog meer bijzetten om de email effectief te verzenden? iemand een idee? D. Link to comment Share on other sites More sharing options...
deech123 Posted December 14, 2015 Author Share Posted December 14, 2015 iemand die hier de oplossing van weet? ik blijf maar zoeken maar niemand kan mij blijkbaar het antwoord geven :-( Link to comment Share on other sites More sharing options...
deech123 Posted December 15, 2015 Author Share Posted December 15, 2015 Beste MDekker, thx voor dit stukje. maar wel zie ik dat je het niet zomaar kan gebruiken, je moet dus nml ook nog de variabelen kunnen opvragen en invullen : '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{shipping_number}' => $order->shipping_number, '{order_name}' => $order->getUniqReference() dus de vraag is dan, ken jij een class in prestashop waarmee ik aan de hand van het orderid of ordernummer direct die gegevens kan bemachtigen zonder weer 3 of 4 querries te schrijven? thx voor je voorzet alvast !! Link to comment Share on other sites More sharing options...
deech123 Posted December 15, 2015 Author Share Posted December 15, 2015 hi bedankt, maar met die 3 lijntjes kan je volgens mij onmogelijk de gegevens opvragen die nodig zijn om de email te versturen toch? Link to comment Share on other sites More sharing options...
deech123 Posted December 15, 2015 Author Share Posted December 15, 2015 okey.... dus met deze : $order = new Order($id_order);$carrier = new Carrier($order->id_carrier);$customer = new Customer($order->id_customer); haal ik alle nodige gegevens op om die email te kunnen verzenden? ik heb dus enkel het id_order, id_carrier (kan ik eventueel vast zetten want is altijd dezelfde) en dan id_customer nodig. daarna voer ik de lap code uit die jij hierboven schreef om de email te verzenden.... en dat moet volgens jouw lukken? ik ga de proberen... ik hou je op de hoogte. D. Link to comment Share on other sites More sharing options...
deech123 Posted December 15, 2015 Author Share Posted December 15, 2015 Dus dit zou moeten lukken? <?php $directory = dirname(__FILE__); $order = new Order(9); // deze variabele haal ik op = Id_order $carrier = new Carrier(10); // deze variabele haal ik op = Id_order_carrier $customer = new Customer(1); // deze variabele haal ik op = Id_customer $orderTrack = '323299950770070483590112'; // dit is bv een track code.. /* Update shipping number */ if (Tools::isSubmit('submitShippingNumber') && isset($order)) { if ($this->tabAccess['edit'] === '1') { $order_carrier = new OrderCarrier(Tools::getValue($carrier)); if (!Validate::isLoadedObject($carrier)) { $this->errors[] = Tools::displayError('The order carrier ID is invalid.'); } elseif (!Validate::isTrackingNumber(Tools::getValue($orderTrack))) { $this->errors[] = Tools::displayError('The tracking number is incorrect.'); } else { // update shipping number // Keep these two following lines for backward compatibility, remove on 1.6 version $order->shipping_number = Tools::getValue($orderTrack); $order->update(); // Update order_carrier $order_carrier->tracking_number = pSQL(Tools::getValue($orderTrack)); if ($order_carrier->update()) { // Send mail to customer $customer = new Customer((int)$order->id_customer); $carrier = new Carrier((int)$order->id_carrier, $order->id_lang); if (!Validate::isLoadedObject($carrier)) { throw new PrestaShopException('Can\'t load Customer object'); } if (!Validate::isLoadedObject($carrier)) { throw new PrestaShopException('Can\'t load Carrier object'); } $templateVars = array( '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{shipping_number}' => $order->shipping_number, '{order_name}' => $order->getUniqReference() ); if (@Mail::Send((int)$order->id_lang, 'in_transit', Mail::l('Package in transit', (int)$order->id_lang), $templateVars, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop)) { Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order, 'customer' => $customer, 'carrier' => $carrier), null, false, true, false, $order->id_shop); Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); } else { $this->errors[] = Tools::displayError('An error occurred while sending an email to the customer.'); } } else { $this->errors[] = Tools::displayError('The order carrier cannot be updated.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } ?> Link to comment Share on other sites More sharing options...
deech123 Posted December 23, 2015 Author Share Posted December 23, 2015 Hi ik heb nu deze effen gemaakt in een PHP file, maar die werkt niet :-( enig idee wat ik mis doe? je zal zien dat ik als test de waardes manueel heb ingevuld die echt wel bestaan als order en als carrier etc..$order = new Order(9);$id_order_carrier = new Carrier(10);$customer = new Customer(1);$tracking_number = '323299950770070483590112'; deze lijnen heb ik in commentaar gezet, want ik doe geen submit :-) /*if (Tools::isSubmit('submitShippingNumber') && isset($order)) { if ($this->tabAccess['edit'] === '1') {*/ <?php echo "TEST"; include(dirname(__FILE__).'/../config/config.inc.php'); $order = new Order(9); $id_order_carrier = new Carrier(10); $customer = new Customer(1); $tracking_number = '323299950770070483590112'; /* Update shipping number */ /*if (Tools::isSubmit('submitShippingNumber') && isset($order)) { if ($this->tabAccess['edit'] === '1') {*/ $order_carrier = new OrderCarrier(Tools::getValue('id_order_carrier')); if (!Validate::isLoadedObject($order_carrier)) { $this->errors[] = Tools::displayError('The order carrier ID is invalid.'); } elseif (!Validate::isTrackingNumber(Tools::getValue('tracking_number'))) { $this->errors[] = Tools::displayError('The tracking number is incorrect.'); } else { // update shipping number // Keep these two following lines for backward compatibility, remove on 1.6 version $order->shipping_number = Tools::getValue('tracking_number'); $order->update(); // Update order_carrier $order_carrier->tracking_number = pSQL(Tools::getValue('tracking_number')); if ($order_carrier->update()) { // Send mail to customer $customer = new Customer((int)$order->id_customer); $carrier = new Carrier((int)$order->id_carrier, $order->id_lang); if (!Validate::isLoadedObject($customer)) { throw new PrestaShopException('Can\'t load Customer object'); } if (!Validate::isLoadedObject($carrier)) { throw new PrestaShopException('Can\'t load Carrier object'); } $templateVars = array( '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{shipping_number}' => $order->shipping_number, '{order_name}' => $order->getUniqReference() ); if (@Mail::Send((int)$order->id_lang, 'in_transit', Mail::l('Package in transit', (int)$order->id_lang), $templateVars, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop)) { Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order, 'customer' => $customer, 'carrier' => $carrier), null, false, true, false, $order->id_shop); Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); } else { $this->errors[] = Tools::displayError('An error occurred while sending an email to the customer.'); } } else { $this->errors[] = Tools::displayError('The order carrier cannot be updated.'); } } /* } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } }*/ ?> als ik dit uitvoer krijg ik dit als fout TESTFatal error: Using $this when not in object context in /data/sites/web/testdegrootstebe/www/getftp/trackSend.php on line 15 enig idee waar ik de mist inga? thx Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now