Cliente: Spanisland, S.L.
Este trabajo consistió en integrar la clase Zend_Pdf de Zend Framework en la aplicación de comercio electrónico OpenCart para poder emitir facturas en PDF totalmente personalizadas y adaptadas a la imagen corporativa del cliente. Añadí un botón «Factura PDF» al listado de órdenes de compra de OpenCart del área de administración y también dentro de la vista individual de cada orden. Al ser pulsado generaba una factura a partir de la plantilla de la siguiente imagen y la rellenaba automáticamente con todos los datos relevantes de dicha orden (se han omitido estos datos por razones de confidencialidad).
El usuario sólo tenía que guardar así el fichero PDF y enviárselo al cliente de forma manual, pues no se llegó a implementar ninguna funcionalidad de envío automático de las facturas al cliente que realizaba la compra. Al nombre del fichero PDF se le añadió el número de factura, el número de orden, el nombre del cliente y la fecha de facturación para que fuera totalmente descriptivo y más fácil de gestionar.
Error: Your Requested widget " ai_widget-6" is not in the widget list.
- [do_widget_area above-nav-left]
- [do_widget_area above-nav-right]
- [do_widget_area footer-1]
- [do_widget id="wpp-4"]
- [do_widget_area footer-2]
- [do_widget id="recent-posts-4"]
- [do_widget_area footer-3]
- [do_widget id="recent-comments-3"]
- [do_widget_area footer-4]
- [do_widget id="archives-4"]
- [do_widget_area logo-bar]
- [do_widget id="oxywidgetwpml-3"]
- [do_widget_area menu-bar]
- [do_widget id="search-3"]
- [do_widget_area sidebar]
- [do_widget id="search-4"]
- [do_widget id="ai_widget-2"]
- [do_widget id="categories-5"]
- [do_widget id="ai_widget-3"]
- [do_widget id="ai_widget-4"]
- [do_widget id="ai_widget-5"]
- [do_widget_area sub-footer-1]
- [do_widget id="text-4"]
- [do_widget_area sub-footer-2]
- [do_widget_area sub-footer-3]
- [do_widget_area sub-footer-4]
- [do_widget_area upper-footer-1]
- [do_widget id="search-2"]
- [do_widget id="recent-posts-2"]
- [do_widget id="recent-comments-2"]
- [do_widget id="archives-2"]
- [do_widget id="categories-2"]
- [do_widget id="meta-2"]
- [do_widget_area upper-footer-2]
- [do_widget_area upper-footer-3]
- [do_widget_area upper-footer-4]
- [do_widget_area widgets_for_shortcodes]
- [do_widget id="search-5"]
- [do_widget id="ai_widget-6"]
- [do_widget_area wp_inactive_widgets]
- [do_widget id="wpp-2"]
- [do_widget id="text-1"]
- [do_widget id="recent-posts-3"]
- [do_widget id="categories-3"]
- [do_widget id="archives-3"]
- [do_widget id="icl_lang_sel_widget-3"]
A continuación se muestra un pequeño fragmento de la función myinvoice() que se añadió a OpenCart para generar las facturas usando Zend_Pdf:
/** * Generates the PDF invoice * * @return void */ public function myinvoice() { // Load Zend_Pdf class set_include_path ( get_include_path().":". DIR_SYSTEM . "external/" ); require_once( DIR_SYSTEM . 'external/Zend/Pdf.php'); $encoding = "UTF-8"; $templateName = "factura_spanisland"; $templatesDir = DIR_TEMPLATE . 'sale/'; $templateVersion = $this->_getLastPdfTemplateVersion($templateName, $templatesDir); // Load PDF document from a file. $pdfTemplate = $templatesDir . $templateName . '_v'. $templateVersion . '.pdf'; $pdf = Zend_Pdf::load($pdfTemplate); $page = $pdf->pages[0]; // Apply style $style = $this->_getPdfTemplateStyle(); $page->setStyle($style); // Define fonts $font1 = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD); $font2 = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); $font3 = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD); $this->load->language('sale/order'); ///////////////////////// /// LOAD INVOICE DATA /// ///////////////////////// $this->load->model('sale/order'); $this->data['orders'] = array(); $orders = array(); if (isset($this->request->post['selected'])) { $orders = $this->request->post['selected']; } elseif (isset($this->request->get['order_id'])) { $orders[] = $this->request->get['order_id']; } foreach ($orders as $order_id) { $order_info = $this->model_sale_order->getOrder($order_id); if ($order_info) { if ($order_info['invoice_id']) { $invoice_id = $order_info['invoice_prefix'] . sprintf("%04d", $order_info['invoice_id']); } else { $invoice_id = $this->model_sale_order->generateInvoiceId($order_id); $order_info = $this->model_sale_order->getOrder($order_id); $invoice_id = $order_info['invoice_prefix'] . sprintf("%04d", $order_info['invoice_id']); } $product_data = array(); $products = $this->model_sale_order->getOrderProducts($order_id); ... ... ...
Deja una respuesta