Thứ Ba, 21 tháng 10, 2014

Thêm text phần vào invoice pdf trong magento

Adding a title to Invoice PDF in Magento

Muốn thêm text vào phần header hay footer trong file pdf cua invoice theo hình dưới:



Tạo module tên pdf

app/code/local/Pdf/Sales/Model/Order/Pdf/Abstract.php

<?php

abstract class Pdf_Sales_Model_Order_Pdf_Abstract extends Mage_Sales_Model_Order_Pdf_Abstract
{
    public function insertTitle(Zend_Pdf_Page $page, $text)
    {
        $this->_setFontBold($page, 17);
        $docHeader = $this->getDocHeaderCoordinates();
        $page->drawText($text, 200, $docHeader[1]+13, 'UTF-8');
    }

}

app/code/local/Pdf/Sales/Model/Order/Pdf/Invoice.php

<?php



class Pdf_Sales_Model_Order_Pdf_Invoice extends Pdf_Sales_Model_Order_Pdf_Abstract
{
    /**
     * Draw header for item table
     *
     * @param Zend_Pdf_Page $page
     * @return void
     */
    protected function _drawHeader(Zend_Pdf_Page $page)
    {
        /* Add table head */

        $this->_setFontRegular($page, 11);
        $page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
        $page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
        $page->setLineWidth(0.5);
        $page->drawRectangle(25, $this->y, 570, $this->y -15);
        $this->y -= 10;
        $page->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));


        //columns headers
        $lines[0][] = array(
            'text' => Mage::helper('sales')->__('Products'),
            'feed' => 35
        );

        $lines[0][] = array(
            'text'  => Mage::helper('sales')->__('SKU'),
            'feed'  => 290,
            'align' => 'right'
        );

        $lines[0][] = array(
            'text'  => Mage::helper('sales')->__('Qty'),
            'feed'  => 435,
            'align' => 'right'
        );

        $lines[0][] = array(
            'text'  => Mage::helper('sales')->__('Price'),
            'feed'  => 360,
            'align' => 'right'
        );

        $lines[0][] = array(
            'text'  => Mage::helper('sales')->__('Tax'),
            'feed'  => 495,
            'align' => 'right'
        );

        $lines[0][] = array(
            'text'  => Mage::helper('sales')->__('Subtotal'),
            'feed'  => 565,
            'align' => 'right'
        );

        $lineBlock = array(
            'lines'  => $lines,
            'height' => 5
        );

        $this->drawLineBlocks($page, array($lineBlock), array('table_header' => true));
        $page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
        $this->y -= 20;
    }

    /**
     * Return PDF document
     *
     * @param  array $invoices
     * @return Zend_Pdf
     */
    public function getPdf($invoices = array())
    {
        $this->_beforeGetPdf();
        $this->_initRenderer('invoice');

        $pdf = new Zend_Pdf();
        $this->_setPdf($pdf);
        $style = new Zend_Pdf_Style();
        $this->_setFontBold($style, 10);

        foreach ($invoices as $invoice) {
            if ($invoice->getStoreId()) {
                Mage::app()->getLocale()->emulate($invoice->getStoreId());
                Mage::app()->setCurrentStore($invoice->getStoreId());
            }
            $page  = $this->newPage();
            $order = $invoice->getOrder();

            /* Add image */
            $this->insertLogo($page, $invoice->getStore());

            /* Add address */
            $this->insertAddress($page, $invoice->getStore());

            $page->setFillColor(new Zend_Pdf_Color_Html('#ffffff'));
            $page->setLineColor(new Zend_Pdf_Color_Html('#ffffff'));
            $page->setLineWidth(0.5);
            $page->drawRectangle(25, $this->y, 570, $this->y-145);
            $this->y -= 35;

            /* Add head */
            $this->insertOrder(
                $page,
                $order,
                Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())
            );

            /* Add Title */
            $this->insertTitle($page,Mage::helper('sales')->__('INVOICE TO BUY'));

            /* Add document text and number */
            $this->insertDocumentNumber(
                $page,
                Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId()
            );


            /* Add table */

            $this->_drawHeader($page);
            /* Add body */
            foreach ($invoice->getAllItems() as $item){
                if ($item->getOrderItem()->getParentItem()) {
                    continue;
                }
                /* Draw item */
                $this->_drawItem($item, $page, $order);
                $page = end($pdf->pages);
            }
            /* Add totals */
            $this->insertTotals($page, $invoice);
            if ($invoice->getStoreId()) {
                Mage::app()->getLocale()->revert();
            }
        }
        $this->_afterGetPdf();
        return $pdf;
    }

    /**
     * Create new page and assign to PDF object
     *
     * @param  array $settings
     * @return Zend_Pdf_Page
     */
    public function newPage(array $settings = array())
    {
        /* Add new table head */
        $page = $this->_getPdf()->newPage(Zend_Pdf_Page::SIZE_A4);
        $this->_getPdf()->pages[] = $page;
        $this->y = 800;

        if (!empty($settings['table_header'])) {
            $this->_drawHeader($page);
//            $this->_setFontRegular($page);
//            $page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
//            $page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
//            $page->setLineWidth(0.5);
//            $page->drawRectangle(25, $this->y, 570, $this->y-15);
//            $this->y -=10;
//            $page->setFillColor(new Zend_Pdf_Color_RGB(0.4, 0.4, 0.4));
//            $page->drawText(Mage::helper('sales')->__('Product'), 35, $this->y, 'UTF-8');
//            $page->drawText(Mage::helper('sales')->__('SKU'), 255, $this->y, 'UTF-8');
//            $page->drawText(Mage::helper('sales')->__('Price'), 380, $this->y, 'UTF-8');
//            $page->drawText(Mage::helper('sales')->__('QTY'), 430, $this->y, 'UTF-8');
//            $page->drawText(Mage::helper('sales')->__('Tax'), 480, $this->y, 'UTF-8');
//            $page->drawText(Mage::helper('sales')->__('Subtotal'), 535, $this->y, 'UTF-8');
//
//            $page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
//            $this->y -=20;
        }
        //This is the textline for the footer next page

        $this->_setFontBold($page, $size = 8);
        $page->drawText(Mage::helper('sales')->__('Thank you buy at sieuthithucpham.com') , 80, 30, 'UTF-8');
        return $page;
    }

}

app/code/local/Pdf/Sales/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Pdf_Sales>
            <version>1.0</version>
        </Pdf_Sales>
    </modules>
    <!-- following tells magento to override core models-->
    <global>
        <models>
            <sales>
                <rewrite>
                    <order_pdf_abstract>Pdf_Sales_Model_Order_Pdf_Abstract</order_pdf_abstract>
                    <order_pdf_invoice>Pdf_Sales_Model_Order_Pdf_Invoice</order_pdf_invoice>                    <order_pdf_creditmemo>Pdf_Sales_Model_Order_Pdf_Creditmemo</order_pdf_creditmemo>
                </rewrite>
            </sales>
        </models>
    </global>

</config>
app/etc/modules/Pdf_Sales.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Pdf_Sales>
            <active>true</active>
            <codePool>local</codePool>
        </Pdf_Sales>
    </modules>

</config>


Thứ Năm, 16 tháng 10, 2014

Lỗi không print được hóa đơn trong magento


Fatal error: Declaration of Zend_Pdf_FileParserDataSource_File::__construct() must be compatible with Zend_Pdf_FileParserDataSource::__construct() in /var/www/vhosts/website/httpdocs/includes/src/Zend_Pdf_FileParserDataSource_File.php on line 41

Tìm :
 function lib/Zend/Pdf/FileParserDataSource.php.
change
abstract public function __construct();
to

abstract public function __construct($filePath);

Sửa lỗi You don't have permission to access /phpmyadmin/ on this server Wamp

Solution:

goto C:\wamp\alias\ and edit the phpmyadmin.conf file using notepad

Alias /phpmyadmin "c:/wamp/apps/phpmyadmin2.11.6/"

# to give access to phpmyadmin from outside
# replace the lines
#
#        Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
# by
#
#        Order Allow,Deny
#   Allow from all
#

<Directory "c:/wamp/apps/phpmyadmin2.11.6/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order Deny,Allow
 Allow from all
 Allow from 127.0.0.1
</Directory>

Thay toàn bộ code trên vào file của bạn. Chú ý nhớ sữa đường dẫn thư mục phpmyadmin đúng với thư mục mà bạn cài đặt nhé.

Thứ Sáu, 15 tháng 8, 2014

Bỏ dấu cộng trong options products trong mangento

Mở file 
app/code/core/Mage/Catalog/Block/Product/View/Options/Abstract.php

Tìm 2 dòng priceInclTax đóng nó lại và thay bằng 2 dòng dưới.

//$_priceInclTax = $this->getPrice($value['pricing_value'], true);
//$_priceExclTax = $this->getPrice($value['pricing_value']);

Thay bằng

$_priceInclTax = $this->getPrice($value['pricing_value'], true)+$this->getProduct()->getFinalPrice();

$_priceExclTax = $this->getPrice($value['pricing_value'])+$this->getProduct()->getFinalPrice();

Muốn bỏ dấu + có trong option tìm $sign='+'; đóng nó hoặc thay = dấu khác

Thứ Năm, 14 tháng 8, 2014

Thay đổi tiền tệ viêt nam trong magento

root/lib/Zend/Locale/Data/vi.xml 
Tìm:
 1.Trong <symbols>
                                     <symbols>
                                    <decimal>.</decimal> 
                                    <group>.</group>
                                    <list>;</list>
………….</symbols>
<!—từ dấu , sửa thành dấu .à định vị tiền 1,000 đ thành 1.000 đ
2.Bạn tìm function roundPrice() trong

app/code/core/Mage/Core/Model/Store.php 

public function roundPrice($price)
    {
        return round($price, 2);
    }
 Sửa lại thành=>
public function roundPrice($price,$roundTo=3)
    {
        return round($price, $roundTo);
    }
3.Tim /lib/zend/Currency.php 

protected $_options = array(
        'position'  => self::STANDARD,
        'script'    => null,
        'format'    => null,
        'display'   => self::NO_SYMBOL,
        'precision' => 2,
        'name'      => null,
        'currency'  => null,
        'symbol'    => null
    );
Thay bằng:
protected $_options = array(
        'position'  => self::STANDARD,
        'script'    => null,
        'format'    => null,
        'display'   => self::NO_SYMBOL,
        'precision' => 3,
        'name'      => null,
        'currency'  => null,
        'symbol'    => null
    );

4.Mở file Currency.php trong app\code\core\Mage\Directory\Mode
Tìm:

public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
    {
        return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
    }
ð  Sửa lại thành số 3
public function format($price, $options = array(), $includeContainer = true, $addBrackets = false)
    {
        return $this->formatPrecision($price, 3, $options, $includeContainer, $addBrackets);
    }
5.Sửa định vị tiền hiển thị danh sách sản phẩm trong admin. Tìm

/js\varien\js.js: dòng 254:
    var r = (j ? i.substr(0, j) + groupSymbol : "") + i.substr(j).replace(re, "$1" + groupSymbol) + (precision ? decimalSymbol + Math.abs(price - i).toFixed(precision).replace(/-/, 0).slice(2) : "")
Thêm +'0' vào cuối dòng:
    var r = (j ? i.substr(0, j) + groupSymbol : "") + i.substr(j).replace(re, "$1" + groupSymbol) + (precision ? decimalSymbol + Math.abs(price - i).toFixed(precision).replace(/-/, 0).slice(2) : "")+'0'

vào trang admin xóa cache và xem kết quả