/** * @param OrderInvoice $order_invoice * @param $smarty * @throws PrestaShopException */ public function __construct(OrderInvoice $order_invoice, $smarty, $bulk_mode = false) { $this->order_invoice = $order_invoice; $this->order = new Order((int) $this->order_invoice->id_order); $this->smarty = $smarty; // If shop_address is null, then update it with current one. // But no DB save required here to avoid massive updates for bulk PDF generation case. // (DB: bug fixed in 1.6.1.1 with upgrade SQL script to avoid null shop_address in old orderInvoices) if (!isset($this->order_invoice->shop_address) || !$this->order_invoice->shop_address) { $this->order_invoice->shop_address = OrderInvoice::getCurrentFormattedShopAddress((int) $this->order->id_shop); if (!$bulk_mode) { OrderInvoice::fixAllShopAddresses(); } } // header informations $this->date = Tools::displayDate($order_invoice->date_add); $id_lang = Context::getContext()->language->id; $this->title = $order_invoice->getInvoiceNumberFormatted($id_lang); $this->shop = new Shop((int) $this->order->id_shop); }
/** * @param OrderInvoice $order_invoice * @param $smarty * @throws PrestaShopException */ public function __construct(OrderInvoice $order_invoice, $smarty, $bulk_mode = false) { $this->order_invoice = $order_invoice; $this->order = new Order($this->order_invoice->id_order); $this->smarty = $smarty; // If shop_address is null, then update it with current one. // But no DB save required here to avoid massive updates for bulk PDF generation case. // (DB: bug fixed in 1.6.1.1 with upgrade SQL script to avoid null shop_address in old orderInvoices) if (!isset($this->order_invoice->shop_address) || !$this->order_invoice->shop_address) { $this->order_invoice->shop_address = OrderInvoice::getCurrentFormattedShopAddress((int) $this->order->id_shop); if (!$bulk_mode) { OrderInvoice::fixAllShopAddresses(); } } // header informations $this->date = Tools::displayDate($order_invoice->date_add); $prefix = Configuration::get('PS_DELIVERY_PREFIX', Context::getContext()->language->id); $this->title = sprintf(HTMLTemplateDeliverySlip::l('%1$s%2$06d'), $prefix, $this->order_invoice->delivery_number); // footer informations $this->shop = new Shop((int) $this->order->id_shop); }
/** * This method is used to fix shop addresses that cannot be fixed during upgrade process * (because uses the whole environnement of PS classes that is not available during upgrade). * This method should execute once on an upgraded PrestaShop to fix all OrderInvoices in one shot. * This method is triggered once during a (non bulk) creation of a PDF from an OrderInvoice that is not fixed yet. * * @since 1.6.1.1 */ public static function fixAllShopAddresses() { $shop_ids = Shop::getShops(false, null, true); $db = Db::getInstance(); foreach ($shop_ids as $id_shop) { $address = OrderInvoice::getCurrentFormattedShopAddress($id_shop); $escaped_address = $db->escape($address, true, true); $db->execute('UPDATE `' . _DB_PREFIX_ . 'order_invoice` INNER JOIN `' . _DB_PREFIX_ . 'orders` USING (`id_order`) SET `shop_address` = \'' . $escaped_address . '\' WHERE `shop_address` IS NULL AND `id_shop` = ' . $id_shop); } }