SanvD Posted January 19, 2013 Share Posted January 19, 2013 (edited) Hallo, Ik wil graag het referentie nummer dat bestaat uit letters zoals WEOJDEN veranderen in het ordernummer id_order. zie mijn factuur. hoe pas ik dat aan? Ik begreep ook dat voorheen het referentienummer wel een getallenreeks was, dan zou ik wellicht ook de verandering als beschreven in dit topic kunnen doen, word dan het referentienummer hetzelfde als het order id? http://www.prestasho...ce-with-number/ Alleen begrijp ik niet hoe ik dat nu precies moet doen in mijn php. ik heb deze biijgevoegd. Wie kan en wil me helpen? Sandra order_conf.html Edited January 19, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 19, 2013 Share Posted January 19, 2013 Hoi, Allereerst. Welke 1.5 versie gebruik je? Ten tweede, wat je hebt bijgesloten is geen php maar de mail template voor de order bevestiging in html. De template voor de factuur is weer een ander html bestand. De oplossing die word aangedragen in het engelse topic is aardig, maar verre van de juiste oplossing. Wat de betreffende user heeft gedaan bevat nogal veel haken en ogen, en dat is ook precies waar de andere gebruikers op stuiten. De makkelijkste en beste methode is door de Validateorder functie in PaymentModule class te vervangen. Maak een PaymentModule.php aan in /override/classes/ en zet daar het volgende in: <?php abstract class PaymentModule extends PaymentModuleCore { /** * Validate an order in database * Function called from a payment module * * @param integer $id_cart Value * @param integer $id_order_state Value * @param float $amount_paid Amount really paid by customer (in the default currency) * @param string $payment_method Payment method (eg. 'Credit card') * @param string $message Message to attach to order */ public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null) { $this->context->cart = new Cart($id_cart); $this->context->customer = new Customer($this->context->cart->id_customer); $this->context->language = new Language($this->context->cart->id_lang); $this->context->shop = ($shop ? $shop : new Shop($this->context->cart->id_shop)); $id_currency = $currency_special ? (int)$currency_special : (int)$this->context->cart->id_currency; $this->context->currency = new Currency($id_currency, null, $this->context->shop->id); if (Configuration::get('PS_TAX_ADDRESS_TYPE') == 'id_address_delivery') $context_country = $this->context->country; $order_status = new OrderState((int)$id_order_state, (int)$this->context->language->id); if (!Validate::isLoadedObject($order_status)) throw new PrestaShopException('Can\'t load Order state status'); if (!$this->active) die(Tools::displayError()); // Does order already exists ? if (Validate::isLoadedObject($this->context->cart) && $this->context->cart->OrderExists() == false) { if ($secure_key !== false && $secure_key != $this->context->cart->secure_key) die(Tools::displayError()); // For each package, generate an order $delivery_option_list = $this->context->cart->getDeliveryOptionList(); $package_list = $this->context->cart->getPackageList(); $cart_delivery_option = $this->context->cart->getDeliveryOption(); // If some delivery options are not defined, or not valid, use the first valid option foreach ($delivery_option_list as $id_address => $package) if (!isset($cart_delivery_option[$id_address]) || !array_key_exists($cart_delivery_option[$id_address], $package)) foreach ($package as $key => $val) { $cart_delivery_option[$id_address] = $key; break; } $order_list = array(); $order_detail_list = array(); $reference = Order::generateReference(); $this->currentOrderReference = $reference; $order_creation_failed = false; $cart_total_paid = (float)Tools::ps_round((float)$this->context->cart->getOrderTotal(true, Cart::BOTH), 2); if ($this->context->cart->orderExists()) { $error = Tools::displayError('An order has already been placed using this cart.'); Logger::addLog($error, 4, '0000001', 'Cart', intval($this->context->cart->id)); die($error); } foreach ($cart_delivery_option as $id_address => $key_carriers) foreach ($delivery_option_list[$id_address][$key_carriers]['carrier_list'] as $id_carrier => $data) foreach ($data['package_list'] as $id_package) { // Rewrite the id_warehouse $package_list[$id_address][$id_package]['id_warehouse'] = (int)$this->context->cart->getPackageIdWarehouse($package_list[$id_address][$id_package], (int)$id_carrier); $package_list[$id_address][$id_package]['id_carrier'] = $id_carrier; } // Make sure CarRule caches are empty CartRule::cleanCache(); foreach ($package_list as $id_address => $packageByAddress) foreach ($packageByAddress as $id_package => $package) { $order = new Order(); $order->product_list = $package['product_list']; if (Configuration::get('PS_TAX_ADDRESS_TYPE') == 'id_address_delivery') { $address = new Address($id_address); $this->context->country = new Country($address->id_country, $this->context->cart->id_lang); } $carrier = null; if (!$this->context->cart->isVirtualCart() && isset($package['id_carrier'])) { $carrier = new Carrier($package['id_carrier'], $this->context->cart->id_lang); $order->id_carrier = (int)$carrier->id; $id_carrier = (int)$carrier->id; } else { $order->id_carrier = 0; $id_carrier = 0; } $order->id_customer = (int)$this->context->cart->id_customer; $order->id_address_invoice = (int)$this->context->cart->id_address_invoice; $order->id_address_delivery = (int)$id_address; $order->id_currency = $this->context->currency->id; $order->id_lang = (int)$this->context->cart->id_lang; $order->id_cart = (int)$this->context->cart->id; $order->reference = $reference; $order->id_shop = (int)$this->context->shop->id; $order->id_shop_group = (int)$this->context->shop->id_shop_group; $order->secure_key = ($secure_key ? pSQL($secure_key) : pSQL($this->context->customer->secure_key)); $order->payment = $payment_method; if (isset($this->name)) $order->module = $this->name; $order->recyclable = $this->context->cart->recyclable; $order->gift = (int)$this->context->cart->gift; $order->gift_message = $this->context->cart->gift_message; $order->conversion_rate = $this->context->currency->conversion_rate; $amount_paid = !$dont_touch_amount ? Tools::ps_round((float)$amount_paid, 2) : $amount_paid; $order->total_paid_real = 0; $order->total_products = (float)$this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS, $order->product_list, $id_carrier); $order->total_products_wt = (float)$this->context->cart->getOrderTotal(true, Cart::ONLY_PRODUCTS, $order->product_list, $id_carrier); $order->total_discounts_tax_excl = (float)abs($this->context->cart->getOrderTotal(false, Cart::ONLY_DISCOUNTS, $order->product_list, $id_carrier)); $order->total_discounts_tax_incl = (float)abs($this->context->cart->getOrderTotal(true, Cart::ONLY_DISCOUNTS, $order->product_list, $id_carrier)); $order->total_discounts = $order->total_discounts_tax_incl; $order->total_shipping_tax_excl = (float)$this->context->cart->getPackageShippingCost((int)$id_carrier, false, null, $order->product_list); $order->total_shipping_tax_incl = (float)$this->context->cart->getPackageShippingCost((int)$id_carrier, true, null, $order->product_list); $order->total_shipping = $order->total_shipping_tax_incl; if (!is_null($carrier) && Validate::isLoadedObject($carrier)) $order->carrier_tax_rate = $carrier->getTaxesRate(new Address($this->context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); $order->total_wrapping_tax_excl = (float)abs($this->context->cart->getOrderTotal(false, Cart::ONLY_WRAPPING, $order->product_list, $id_carrier)); $order->total_wrapping_tax_incl = (float)abs($this->context->cart->getOrderTotal(true, Cart::ONLY_WRAPPING, $order->product_list, $id_carrier)); $order->total_wrapping = $order->total_wrapping_tax_incl; $order->total_paid_tax_excl = (float)Tools::ps_round((float)$this->context->cart->getOrderTotal(false, Cart::BOTH, $order->product_list, $id_carrier), 2); $order->total_paid_tax_incl = (float)Tools::ps_round((float)$this->context->cart->getOrderTotal(true, Cart::BOTH, $order->product_list, $id_carrier), 2); $order->total_paid = $order->total_paid_tax_incl; $order->invoice_date = '0000-00-00 00:00:00'; $order->delivery_date = '0000-00-00 00:00:00'; // Creating order $result = $order->add(); if (!$result) throw new PrestaShopException('Can\'t save Order'); $reference = sprintf(sprintf('%09d', $order->id); $this->currentOrderReference = $reference; $order->update(); // Amount paid by customer is not the right one -> Status = payment error // We don't use the following condition to avoid the float precision issues : http://www.php.net/manual/en/language.types.float.php // if ($order->total_paid != $order->total_paid_real) // We use number_format in order to compare two string if ($order_status->logable && number_format($cart_total_paid, 2) != number_format($amount_paid, 2)) $id_order_state = Configuration::get('PS_OS_ERROR'); $order_list[] = $order; // Insert new Order detail list using cart for the current order $order_detail = new OrderDetail(null, null, $this->context); $order_detail->createList($order, $this->context->cart, $id_order_state, $order->product_list, 0, true, $package_list[$id_address][$id_package]['id_warehouse']); $order_detail_list[] = $order_detail; // Adding an entry in order_carrier table if (!is_null($carrier)) { $order_carrier = new OrderCarrier(); $order_carrier->id_order = (int)$order->id; $order_carrier->id_carrier = (int)$id_carrier; $order_carrier->weight = (float)$order->getTotalWeight(); $order_carrier->shipping_cost_tax_excl = (float)$order->total_shipping_tax_excl; $order_carrier->shipping_cost_tax_incl = (float)$order->total_shipping_tax_incl; $order_carrier->add(); } } // The country can only change if the address used for the calculation is the delivery address, and if multi-shipping is activated if (Configuration::get('PS_TAX_ADDRESS_TYPE') == 'id_address_delivery') $this->context->country = $context_country; // Register Payment only if the order status validate the order if ($order_status->logable) { // $order is the last order loop in the foreach // The method addOrderPayment of the class Order make a create a paymentOrder // linked to the order reference and not to the order id if (isset($extra_vars['transaction_id'])) $transaction_id = $extra_vars['transaction_id']; else $transaction_id = null; if (!$order->addOrderPayment($amount_paid, null, $transaction_id)) throw new PrestaShopException('Can\'t save Order Payment'); } // Next ! $only_one_gift = false; $cart_rule_used = array(); $products = $this->context->cart->getProducts(); $cart_rules = $this->context->cart->getCartRules(); // Make sure CarRule caches are empty CartRule::cleanCache(); foreach ($order_detail_list as $key => $order_detail) { $order = $order_list[$key]; if (!$order_creation_failed & isset($order->id)) { if (!$secure_key) $message .= '<br />'.Tools::displayError('Warning: the secure key is empty, check your payment account before validation'); // Optional message to attach to this order if (isset($message) & !empty($message)) { $msg = new Message(); $message = strip_tags($message, '<br>'); if (Validate::isCleanHtml($message)) { $msg->message = $message; $msg->id_order = intval($order->id); $msg->private = 1; $msg->add(); } } // Insert new Order detail list using cart for the current order //$orderDetail = new OrderDetail(null, null, $this->context); //$orderDetail->createList($order, $this->context->cart, $id_order_state); // Construct order detail table for the email $products_list = ''; $virtual_product = true; foreach ($products as $key => $product) { $price = Product::getPriceStatic((int)$product['id_product'], false, ($product['id_product_attribute'] ? (int)$product['id_product_attribute'] : null), 6, null, false, true, $product['cart_quantity'], false, (int)$order->id_customer, (int)$order->id_cart, (int)$order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); $price_wt = Product::getPriceStatic((int)$product['id_product'], true, ($product['id_product_attribute'] ? (int)$product['id_product_attribute'] : null), 2, null, false, true, $product['cart_quantity'], false, (int)$order->id_customer, (int)$order->id_cart, (int)$order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); $customization_quantity = 0; if (isset($customized_datas[$product['id_product']][$product['id_product_attribute']])) { $customization_text = ''; foreach ($customized_datas[$product['id_product']][$product['id_product_attribute']] as $customization) { if (isset($customization['datas'][Product::CUSTOMIZE_TEXTFIELD])) foreach ($customization['datas'][Product::CUSTOMIZE_TEXTFIELD] as $text) $customization_text .= $text['name'].': '.$text['value'].'<br />'; if (isset($customization['datas'][Product::CUSTOMIZE_FILE])) $customization_text .= sprintf(Tools::displayError('%d image(s)'), count($customization['datas'][Product::CUSTOMIZE_FILE])).'<br />'; $customization_text .= '---<br />'; } $customization_text = rtrim($customization_text, '---<br />'); $customization_quantity = (int)$product['customizationQuantityTotal']; $products_list .= '<tr style="background-color: '.($key % 2 ? '#DDE2E6' : '#EBECEE').';"> <td style="padding: 0.6em 0.4em;width: 15%;">'.$product['reference'].'</td> <td style="padding: 0.6em 0.4em;width: 30%;"><strong>'.$product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : '').' - '.Tools::displayError('Customized').(!empty($customization_text) ? ' - '.$customization_text : '').'</strong></td> <td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt, $this->context->currency, false).'</td> <td style="padding: 0.6em 0.4em; width: 15%;">'.$customization_quantity.'</td> <td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice($customization_quantity * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt), $this->context->currency, false).'</td> </tr>'; } if (!$customization_quantity || (int)$product['cart_quantity'] > $customization_quantity) $products_list .= '<tr style="background-color: '.($key % 2 ? '#DDE2E6' : '#EBECEE').';"> <td style="padding: 0.6em 0.4em;width: 15%;">'.$product['reference'].'</td> <td style="padding: 0.6em 0.4em;width: 30%;"><strong>'.$product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : '').'</strong></td> <td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt, $this->context->currency, false).'</td> <td style="padding: 0.6em 0.4em; width: 15%;">'.((int)$product['cart_quantity'] - $customization_quantity).'</td> <td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(((int)$product['cart_quantity'] - $customization_quantity) * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt), $this->context->currency, false).'</td> </tr>'; // Check if is not a virutal product for the displaying of shipping if (!$product['is_virtual']) $virtual_product &= false; } // end foreach ($products) $cart_rules_list = ''; foreach ($cart_rules as $cart_rule) { $package = array('id_carrier' => $order->id_carrier, 'id_address' => $order->id_address_delivery, 'products' => $order->product_list); $values = array( 'tax_incl' => $cart_rule['obj']->getContextualValue(true, $this->context, CartRule::FILTER_ACTION_ALL, $package), 'tax_excl' => $cart_rule['obj']->getContextualValue(false, $this->context, CartRule::FILTER_ACTION_ALL, $package) ); // If the reduction is not applicable to this order, then continue with the next one if (!$values['tax_excl']) continue; $order->addCartRule($cart_rule['obj']->id, $cart_rule['obj']->name, $values); /* IF ** - This is not multi-shipping ** - The value of the voucher is greater than the total of the order ** - Partial use is allowed ** - This is an "amount" reduction, not a reduction in % or a gift ** THEN ** The voucher is cloned with a new value corresponding to the remainder */ if (count($order_list) == 1 && $values['tax_incl'] > $order->total_products_wt && $cart_rule['obj']->partial_use == 1 && $cart_rule['obj']->reduction_amount > 0) { // Create a new voucher from the original $voucher = new CartRule($cart_rule['obj']->id); // We need to instantiate the CartRule without lang parameter to allow saving it unset($voucher->id); // Set a new voucher code $voucher->code = empty($voucher->code) ? substr(md5($order->id.'-'.$order->id_customer.'-'.$cart_rule['obj']->id), 0, 16) : $voucher->code.'-2'; if (preg_match('/\-([0-9]{1,2})\-([0-9]{1,2})$/', $voucher->code, $matches) && $matches[1] == $matches[2]) $voucher->code = preg_replace('/'.$matches[0].'$/', '-'.(intval($matches[1]) + 1), $voucher->code); // Set the new voucher value if ($voucher->reduction_tax) $voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt; else $voucher->reduction_amount = $values['tax_excl'] - $order->total_products; $voucher->id_customer = $order->id_customer; $voucher->quantity = 1; if ($voucher->add()) { // If the voucher has conditions, they are now copied to the new voucher CartRule::copyConditions($cart_rule['obj']->id, $voucher->id); $params = array( '{voucher_amount}' => Tools::displayPrice($voucher->reduction_amount, $this->context->currency, false), '{voucher_num}' => $voucher->code, '{firstname}' => $this->context->customer->firstname, '{lastname}' => $this->context->customer->lastname, '{id_order}' => $order->reference, '{order_name}' => $order->getUniqReference() ); Mail::Send( (int)$order->id_lang, 'voucher', sprintf(Mail::l('New voucher regarding your order %s', (int)$order->id_lang), $order->reference), $params, $this->context->customer->email, $this->context->customer->firstname.' '.$this->context->customer->lastname, null, null, null, null, _PS_MAIL_DIR_, false, (int)$order->id_shop ); } } if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && !in_array($cart_rule['obj']->id, $cart_rule_used)) { $cart_rule_used[] = $cart_rule['obj']->id; // Create a new instance of Cart Rule without id_lang, in order to update its quantity $cart_rule_to_update = new CartRule($cart_rule['obj']->id); $cart_rule_to_update->quantity = max(0, $cart_rule_to_update->quantity - 1); $cart_rule_to_update->update(); } $cart_rules_list .= ' <tr> <td colspan="4" style="padding:0.6em 0.4em;text-align:right">'.Tools::displayError('Voucher name:').' '.$cart_rule['obj']->name.'</td> <td style="padding:0.6em 0.4em;text-align:right">'.($values['tax_incl'] != 0.00 ? '-' : '').Tools::displayPrice($values['tax_incl'], $this->context->currency, false).'</td> </tr>'; } // Specify order id for message $old_message = Message::getMessageByCartId((int)$this->context->cart->id); if ($old_message) { $update_message = new Message((int)$old_message['id_message']); $update_message->id_order = (int)$order->id; $update_message->update(); // Add this message in the customer thread $customer_thread = new CustomerThread(); $customer_thread->id_contact = 0; $customer_thread->id_customer = (int)$order->id_customer; $customer_thread->id_shop = (int)$this->context->shop->id; $customer_thread->id_order = (int)$order->id; $customer_thread->id_lang = (int)$this->context->language->id; $customer_thread->email = $this->context->customer->email; $customer_thread->status = 'open'; $customer_thread->token = Tools::passwdGen(12); $customer_thread->add(); $customer_message = new CustomerMessage(); $customer_message->id_customer_thread = $customer_thread->id; $customer_message->id_employee = 0; $customer_message->message = htmlentities($update_message->message, ENT_COMPAT, 'UTF-8'); $customer_message->private = 0; if (!$customer_message->add()) $this->errors[] = Tools::displayError('An error occurred while saving message'); } // Hook validate order Hook::exec('actionValidateOrder', array( 'cart' => $this->context->cart, 'order' => $order, 'customer' => $this->context->customer, 'currency' => $this->context->currency, 'orderStatus' => $order_status )); foreach ($this->context->cart->getProducts() as $product) if ($order_status->logable) ProductSale::addProductSale((int)$product['id_product'], (int)$product['cart_quantity']); if (Configuration::get('PS_STOCK_MANAGEMENT') && $order_detail->getStockState()) { $history = new OrderHistory(); $history->id_order = (int)$order->id; $history->changeIdOrderState(Configuration::get('PS_OS_OUTOFSTOCK'), $order, true); $history->addWithemail(); } // Set order state in order history ONLY even if the "out of stock" status has not been yet reached // So you migth have two order states $new_history = new OrderHistory(); $new_history->id_order = (int)$order->id; $new_history->changeIdOrderState((int)$id_order_state, $order, true); $new_history->addWithemail(true, $extra_vars); unset($order_detail); // Order is reloaded because the status just changed $order = new Order($order->id); // Send an e-mail to customer (one order = one email) if ($id_order_state != Configuration::get('PS_OS_ERROR') && $id_order_state != Configuration::get('PS_OS_CANCELED') && $this->context->customer->id) { $invoice = new Address($order->id_address_invoice); $delivery = new Address($order->id_address_delivery); $delivery_state = $delivery->id_state ? new State($delivery->id_state) : false; $invoice_state = $invoice->id_state ? new State($invoice->id_state) : false; $data = array( '{firstname}' => $this->context->customer->firstname, '{lastname}' => $this->context->customer->lastname, '{email}' => $this->context->customer->email, '{delivery_block_txt}' => $this->_getFormatedAddress($delivery, "\n"), '{invoice_block_txt}' => $this->_getFormatedAddress($invoice, "\n"), '{delivery_block_html}' => $this->_getFormatedAddress($delivery, '<br />', array( 'firstname' => '<span style="font-weight:bold;">%s</span>', 'lastname' => '<span style="font-weight:bold;">%s</span>' )), '{invoice_block_html}' => $this->_getFormatedAddress($invoice, '<br />', array( 'firstname' => '<span style="font-weight:bold;">%s</span>', 'lastname' => '<span style="font-weight:bold;">%s</span>' )), '{delivery_company}' => $delivery->company, '{delivery_firstname}' => $delivery->firstname, '{delivery_lastname}' => $delivery->lastname, '{delivery_address1}' => $delivery->address1, '{delivery_address2}' => $delivery->address2, '{delivery_city}' => $delivery->city, '{delivery_postal_code}' => $delivery->postcode, '{delivery_country}' => $delivery->country, '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', '{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile, '{delivery_other}' => $delivery->other, '{invoice_company}' => $invoice->company, '{invoice_vat_number}' => $invoice->vat_number, '{invoice_firstname}' => $invoice->firstname, '{invoice_lastname}' => $invoice->lastname, '{invoice_address2}' => $invoice->address2, '{invoice_address1}' => $invoice->address1, '{invoice_city}' => $invoice->city, '{invoice_postal_code}' => $invoice->postcode, '{invoice_country}' => $invoice->country, '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', '{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile, '{invoice_other}' => $invoice->other, '{order_name}' => $order->getUniqReference(), '{date}' => Tools::displayDate(date('Y-m-d H:i:s'), (int)$order->id_lang, 1), '{carrier}' => $virtual_product ? Tools::displayError('No carrier') : $carrier->name, '{payment}' => Tools::substr($order->payment, 0, 32), '{products}' => $this->formatProductAndVoucherForEmail($products_list), '{discounts}' => $this->formatProductAndVoucherForEmail($cart_rules_list), '{total_paid}' => Tools::displayPrice($order->total_paid, $this->context->currency, false), '{total_products}' => Tools::displayPrice($order->total_paid - $order->total_shipping - $order->total_wrapping + $order->total_discounts, $this->context->currency, false), '{total_discounts}' => Tools::displayPrice($order->total_discounts, $this->context->currency, false), '{total_shipping}' => Tools::displayPrice($order->total_shipping, $this->context->currency, false), '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $this->context->currency, false)); if (is_array($extra_vars)) $data = array_merge($data, $extra_vars); // Join PDF invoice if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number) { $pdf = new PDF($order->getInvoicesCollection(), PDF::TEMPLATE_INVOICE, $this->context->smarty); $file_attachement['content'] = $pdf->render(false); $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang).sprintf('%06d', $order->invoice_number).'.pdf'; $file_attachement['mime'] = 'application/pdf'; } else $file_attachement = null; if (Validate::isEmail($this->context->customer->email)) Mail::Send( (int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $this->context->customer->email, $this->context->customer->firstname.' '.$this->context->customer->lastname, null, null, $file_attachement, null, _PS_MAIL_DIR_, false, (int)$order->id_shop ); } // updates stock in shops if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) { $product_list = $order->getProducts(); foreach ($product_list as $product) { // if the available quantities depends on the physical stock if (StockAvailable::dependsOnStock($product['product_id'])) { // synchronizes StockAvailable::synchronize($product['product_id'], $order->id_shop); } } } } else { $error = Tools::displayError('Order creation failed'); Logger::addLog($error, 4, '0000002', 'Cart', intval($order->id_cart)); die($error); } } // End foreach $order_detail_list // Use the last order as currentOrder $this->currentOrder = (int)$order->id; return true; } else { $error = Tools::displayError('Cart cannot be loaded or an order has already been placed using this cart'); Logger::addLog($error, 4, '0000001', 'Cart', intval($this->context->cart->id)); die($error); } } } Link to comment Share on other sites More sharing options...
SanvD Posted January 19, 2013 Author Share Posted January 19, 2013 oke, en die moet ik dan opnieuw uploaden? Sandra Link to comment Share on other sites More sharing options...
Telesight Posted January 19, 2013 Share Posted January 19, 2013 @SanvD Het Bestelnummer is het Order number of order_id. Dit bestelnummer kun je niet gelijkmaken aan je Factuurnummer. Je factuurnummer is een opeenvolgende reeks die je moet aanhouden voor je boekhouding (Belastingen). Als een bestelling geanulleerd wordt dan komen de volgende nummers al niet meer overeen. Waarom ze zijn overgegaan van een cijferreeks naar een letterreeks weet ik niet, maar op de letterreeks kun je gewoon zoeken in je winkelachterkant naar een bestelling. Link to comment Share on other sites More sharing options...
SanvD Posted January 19, 2013 Author Share Posted January 19, 2013 (edited) Dan zijn er dus 3 nummers per bestelling 1 referentienummer met WEPWJFPJ o.i.d. 2 ordernummer 3 factuurnummer ik begrijp nu ook dat ordernummer en factuurnummer niet synchroom gaan lopen. Maar ik wil dan dat het referentienummer overal het ordernummer word, hoe pas ik dat het makkelijkste aan? of blijf je altijd met 3 verschillende nummers zitten, waarom is dat eigenlijk? ik blijf in de order_config die stomme nummerreeks halen, ik heb geprobeerd order_name te veranderen in id_order maar dan pakt hij hem niet <td align="left">Order: <strong><span style="color: {color};">{order_name}</span> geplaatst op {date}</strong> <br />Betaalmethode: <strong>{payment}</strong></td> in <td align="left">Bestelling: <strong>{id_order}</strong> geplaatst op {date}</strong> <br> Betaalmethode: <strong>{payment}</strong></td> Dus als ik wil dan dat het referentienummer overal het ordernummer word, hoe pas ik dat dan het makkelijkste aan? of blijf je altijd met 3 verschillende nummers zitten, waarom is dat eigenlijk? Sandra Edited January 19, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
Telesight Posted January 19, 2013 Share Posted January 19, 2013 @SanvD In je winkelachterkant staat bij de bestellingen achter Bestelling het bestelnummer (#123) met daarachter het referentienummer. Waarom dit referentienummer wordt gebruikt is mij ook niet duidelijk, het komt in ieder geval op je factuur terug. Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 19, 2013 Share Posted January 19, 2013 @SanvD In je winkelachterkant staat bij de bestellingen achter Bestelling het bestelnummer (#123) met daarachter het referentienummer. Waarom dit referentienummer wordt gebruikt is mij ook niet duidelijk, het komt in ieder geval op je factuur terug. Voor zover ik het heb kunnen nagaan is het referentienummer enkel van belang bij multishipping (order verdeeld over meerdere verzendingen) en een enkele paymentmodule die de referentienummer gebruikt om naar te refereren zoals bankoverschrijving. Link to comment Share on other sites More sharing options...
SanvD Posted January 19, 2013 Author Share Posted January 19, 2013 (edited) Weet je, ik heb gewoon de verwijzing naar het referentienummer uit het mailtje verwijderd, dan zien ze het niet, er staat dan alleen: Order: geplaatst op en dan de datum. Ze kunnen onderin op de link klikken naar de bestelling. Bij het mailtje van de bankoverschrijving staat wel netjes het ordernummer, dus dan verschijnt dat achtelijke nummer nu alleen nog in mijn administratie gedeelte en helaas dus op de factuur. dus als iemand nog weet hoe ik het gewoon van de factuur af kan halen dan zou ik helemaal blij zijn. Alvast heel erg bedankt voor jullie hulp en het brainstormen. Edited January 19, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 19, 2013 Share Posted January 19, 2013 Weet je, ik heb gewoon de verwijzing naar het referentienummer uit het mailtje verwijderd, dan zien ze het niet, er staat dan alleen: Order: geplaatst op en dan de datum. Ze kunnen onderin op de link klikken naar de bestelling. Bij het mailtje van de bankoverschrijving staat wel netjes het ordernummer, dus dan verschijnt dat achtelijke nummer nu alleen nog in mijn administratie gedeelte en helaas dus op de factuur. dus als iemand nog weet hoe ik het gewoon van de factuur af kan halen dan zou ik helemaal blij zijn. Alvast heel erg bedankt voor jullie hulp en het brainstormen. Voer gewoon de code uit die ik in de 2de post heb voorzien en het referentienummer word vervangen door de order_id met voorloop-nullen. Dan hoef je verder niks aan te passen en kan het referentienummer in de orderbevestiging, factuur, BO, etc. blijven staan. Link to comment Share on other sites More sharing options...
Telesight Posted January 20, 2013 Share Posted January 20, 2013 @scorpionsworld Voor zover ik het heb kunnen nagaan is het referentienummer enkel van belang bij multishipping (order verdeeld over meerdere verzendingen) en een enkele paymentmodule die de referentienummer gebruikt om naar te refereren zoals bankoverschrijving. Ik dacht al zoiets, met de name de referentie bij een betalingsmodule. Ze hebben het natuurlijk niet voor niets toegevoegd, dus ik laat het gewoon staan. Link to comment Share on other sites More sharing options...
SanvD Posted January 20, 2013 Author Share Posted January 20, 2013 Voer gewoon de code uit die ik in de 2de post heb voorzien en het referentienummer word vervangen door de order_id met voorloop-nullen. Dan hoef je verder niks aan te passen en kan het referentienummer in de orderbevestiging, factuur, BO, etc. blijven staan. Ik ga het proberen en die moet ik dus uploaden toch? Sandra Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 20, 2013 Share Posted January 20, 2013 Ik ga het proberen en die moet ik dus uploaden toch? Sandra Inderdaad Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 (edited) Nou als ik dat doe dan kan ik niet meer bij mijn facturen en of bestellingen ik krijg dan een wit scherm. als ik dan mijn oude weer upload kan het wel. ik heb de file met jouw script erbij gedaan, klopt die zo dan of heb ik iets fout gedaan? Sandra PaymentModule.php Edited January 21, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 Nou als ik dat doe dan kan ik niet meer bij mijn facturen en of bestellingen ik krijg dan een wit scherm. als ik dan mijn oude weer upload kan het wel. ik heb de file met jouw script erbij gedaan, klopt die zo dan of heb ik iets fout gedaan? Sandra Mijn fout Er stond een stukje code teveel op een regel. Bijgaand bestand moet goed zijn. PaymentModule.php Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 (edited) nee hoor hij doet het nog niet, onderstaand verschijnt in de zoekbalk, ik kan dan niet eens in mijn admin komen. http://www.sannalin....4a8ac5cf00b0a5e bijgaand mij php die het wel doet. PaymentModule.php Edited January 21, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 nee hoor hij doet het nog niet, onderstaand verschijnt in de zoekbalk, ik kan dan niet eens in mijn admin komen. http://www.sannalin....4a8ac5cf00b0a5e bijgaand mij php die het wel doet. Dat is de core file uit [prestashoproot]/classes/ Het bestand wat ik je heb gegeven moet geupload worden naar [prestashoproot]/override/classes Geen wonder dat het dan niet werkt. Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 Oeps, nu doet me admin het wel, maar nu is pas dat nummer zichtbaar bij een nieuwe order zeker? Hoe kan ik het nu checken? een nieuwe order even plaatsen? Sandra Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 Oeps, nu doet me admin het wel, maar nu is pas dat nummer zichtbaar bij een nieuwe order zeker? Hoe kan ik het nu checken? een nieuwe order even plaatsen? Sandra Dat ja. of even wachten tot er een nieuwe order binnenkomt. Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 Dat ja. of even wachten tot er een nieuwe order binnenkomt. Het is trouwens raadzaam om aanpassingen eerst te testen in een testomgeving.Hoe een testomgeving aan te maken is uitgebreid uitgelegd op http://www.prestashopmaken.nl/handleidingen/testomgeving-maken/ Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 (edited) Ik heb een nieuwe order geplaatst en die stomme letterreeks staat er nog steeds grrrrrrrrr zowel op de factuur als op de bestellings bevestiging Sandra Edited January 21, 2013 by SanvD (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 Ik heb een nieuwe order geplaatst en die stomme letterreeks staat er nog steeds grrrrrrrrr zowel op de factuur als op de bestellings bevestiging Sandra Momentje. Ik ben op het moment bezig om een kleine module te maken om de referentie aan te passen naar je wensen.Gooi de override voorlopig maar weg. Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 je bent geweldig! Link to comment Share on other sites More sharing options...
scorpionsworld Posted January 21, 2013 Share Posted January 21, 2013 Order referentie wijzigingsmodule v1.0 Module voor het wijzigen van de order referentie door gebruik te maken van de Order ID en/of Cart ID. Compatibility: Prestashop v1.5.X Screenshots: Downloadlink: https://www.dropbox.com/s/xu8taabdcrr47b8/modrefchange.zip Link to comment Share on other sites More sharing options...
SanvD Posted January 21, 2013 Author Share Posted January 21, 2013 Je bent echt geweldig, ik heb het getest en dit is wat ik bedoelde! ik denk dat je hier een heleboel mensen blij mee maakt. Groetjes Sandra Link to comment Share on other sites More sharing options...
Denman74 Posted February 2, 2013 Share Posted February 2, 2013 Hallo, Ik heb dit ook geprobeerd bij 1.5.2.0 want ik wil ook van die lettercombi af. Heb hem geinstalleerd en alleen ingesteld dat hij order id moet gebruiken, nu is het laatse scherm van betalen met overschrijving een wit scherm, ook na deinstalleren van de module ?? wat doe ik fout ? Groet Dennis Link to comment Share on other sites More sharing options...
scorpionsworld Posted February 3, 2013 Share Posted February 3, 2013 Hallo, Ik heb dit ook geprobeerd bij 1.5.2.0 want ik wil ook van die lettercombi af. Heb hem geinstalleerd en alleen ingesteld dat hij order id moet gebruiken, nu is het laatse scherm van betalen met overschrijving een wit scherm, ook na deinstalleren van de module ?? wat doe ik fout ? Groet Dennis In principe doe je niks fout. Probleem is dat de module een stukje van de database aanpast. na de-installatie word dit niet teruggezet (is ook niet perse nodig). Ik heb bij de ontwikkeling zowel bankoverschrijving als de ideal checkout module (ideal simulator) gebruikt om te testen, dat je dus een blanco scherm krijgt is wel wat vreemd. Een blanco scherm wil zoveel zeggen als 'Er is een fatale fout gebeurd, maar omdat error reporting uit staat laat ik niks zien', dat kan dus door vanalles veroorzaakt worden. Om te achterhalen wat er fout gaat zou je error reporting in moeten schakelen, zie hier hoe, om de foutmelding te kunnen zien. Link to comment Share on other sites More sharing options...
Guorilla Posted March 18, 2013 Share Posted March 18, 2013 (edited) Ik krijg dezelfde witte pagina in een testshop van me. In een andere testshop weer niet... Ik heb de error reporting aan staan, maar waar vind ik die report terug? Ik heb overigens ook versie 1.5.2 en kreeg op het scherm geen foutmelding te zien, puur een witte pagina... Edited March 18, 2013 by dekarperboer (see edit history) Link to comment Share on other sites More sharing options...
scorpionsworld Posted March 18, 2013 Share Posted March 18, 2013 Ik krijg dezelfde witte pagina in een testshop van me. In een andere testshop weer niet... Ik heb de error reporting aan staan, maar waar vind ik die report terug? Ik heb overigens ook versie 1.5.2 en kreeg op het scherm geen foutmelding te zien, puur een witte pagina... error reporting logt geen report maar geeft een foutmelding op het beeldscherm. Link to comment Share on other sites More sharing options...
Guorilla Posted March 18, 2013 Share Posted March 18, 2013 Goed dat komt er dus niet, maar alleen een wit scherm... Wat kan er mis zijn? Link to comment Share on other sites More sharing options...
scorpionsworld Posted March 18, 2013 Share Posted March 18, 2013 Goed dat komt er dus niet, maar alleen een wit scherm... Wat kan er mis zijn? Geen flauw idee eerlijk gezegd. Ik ga even testen en uitzoeken. Link to comment Share on other sites More sharing options...
Guorilla Posted March 18, 2013 Share Posted March 18, 2013 Heb je mijn gegevens nodig anders? Link to comment Share on other sites More sharing options...
scorpionsworld Posted March 19, 2013 Share Posted March 19, 2013 Heb je mijn gegevens nodig anders? Ik zal eerst nog eens op m'n eigen testomgeving testen met bankoverschrijving. Vermoedelijk dat er toch iets bijt tussen de payment modules en deze module. Ben op het moment toch bezig met een nieuwe release van de module ivm andere bugs Link to comment Share on other sites More sharing options...
Guorilla Posted March 19, 2013 Share Posted March 19, 2013 (edited) Als ik de module verwijder en de-installeer, dan doet de bankoverschrijving het wel weer normaal... Herstel, dan blijft de witte pagina... /index.php?fc=module&module=bankwire&controller=validation op bovenstaande url gaat het fout... Edited March 19, 2013 by dekarperboer (see edit history) Link to comment Share on other sites More sharing options...
Guorilla Posted March 20, 2013 Share Posted March 20, 2013 Hallo Scorpion, Enig idee wat ik uit een werkende database terug moet zetten om de witte pagina kwijt te raken? Of kan het door modules te de-installeren en opnieuw te installeren? Link to comment Share on other sites More sharing options...
scorpionsworld Posted March 20, 2013 Share Posted March 20, 2013 Hallo Scorpion, Enig idee wat ik uit een werkende database terug moet zetten om de witte pagina kwijt te raken? Of kan het door modules te de-installeren en opnieuw te installeren? De-installeren zou voldoende moeten zijn. Link to comment Share on other sites More sharing options...
Guorilla Posted March 20, 2013 Share Posted March 20, 2013 Helaas... Link to comment Share on other sites More sharing options...
Guorilla Posted March 21, 2013 Share Posted March 21, 2013 Kan iemand mij vertellen welke database tabellen ik moet exporteren vanuit een nagenoeg gelijkende prestahop installatie om van de blanco pagina af te komen? Link to comment Share on other sites More sharing options...
scorpionsworld Posted March 22, 2013 Share Posted March 22, 2013 Kan iemand mij vertellen welke database tabellen ik moet exporteren vanuit een nagenoeg gelijkende prestahop installatie om van de blanco pagina af te komen? welke versie van de modrefchange module gebruik je?Zie topic [MODULE] Change Order reference using Order ID and/or Cart ID Vandaag of morgen kom ik met versie 1.2 met wat bugfixes Echter niet de bug van de blanco pagina, daar ik die niet kan reproduceren Link to comment Share on other sites More sharing options...
Guorilla Posted March 22, 2013 Share Posted March 22, 2013 De versie die hierboven te downloaden staat: bericht 23 Link to comment Share on other sites More sharing options...
AntoniaU Posted May 26, 2016 Share Posted May 26, 2016 Hi kan ik deze module ook gebruiken in 1.6.1 de nieuwste versie dus? Link to comment Share on other sites More sharing options...
Erik G Posted June 7, 2016 Share Posted June 7, 2016 Als je de website bekijkt lijkt het er niet op. Ik heb de module nog wel ergens in een zip bestandje. Niet getest op 1.6 versie van Prestashop maar als je de module wilt bekijken wil ik hem wel even ergens plaatsen. Link to comment Share on other sites More sharing options...
Erik G Posted June 9, 2016 Share Posted June 9, 2016 (edited) Hierbij de link https://drive.google.com/file/d/0B0MDkXkYcS_WTXFlbzgyeHZ5bm8/view?usp=sharing Edited June 9, 2016 by Erik G (see edit history) Link to comment Share on other sites More sharing options...
Don-H Posted June 20, 2016 Share Posted June 20, 2016 Ik heb mijn prestashop van de week ge-update naar de versie 1.6.1.6. Het enige wat niet werkt is de Order reference module. Ik krijg nu weer die rare order nummers als bv. SDFGTEJHNSV nu heb ik de order reference module even per winkel bekeken, maar de instellingen staan goed. Voor de zekerheid nog een keer opgeslagen, cache geleegd, maar krijg nog steeds die rare order nummers.Iemand enig idee? Link to comment Share on other sites More sharing options...
Don-H Posted June 20, 2016 Share Posted June 20, 2016 Opgelost....werkt weer zoals het hoort. Ik had nog een oudere module 1.5.3 nu de versie 1.5.5.1 gedownload. (oude versie uitgeschakeld/gedeleted - cache geleegd en daarna de nieuwe geïnstalleerd - en opnieuw geconfigureerd). De 1.5.5.1 order change reference module kun je hier bij post 62 downloaden. Deze werkt dus goed met prestashop versie 1.6.1.6 Succes 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