Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_Bundle_Model_Sales_Order_Pdf_Items_Creditmemo
  • Mage_Bundle_Model_Sales_Order_Pdf_Items_Invoice
  • Mage_ImportExport_Model_Resource_Helper_Mysql4
  • Mage_Sales_Billing_AgreementController
  • Mage_Sales_Block_Adminhtml_Billing_Agreement
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_Grid
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_View
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_View_Form
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_View_Tab_Info
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_View_Tab_Orders
  • Mage_Sales_Block_Adminhtml_Billing_Agreement_View_Tabs
  • Mage_Sales_Block_Adminhtml_Customer_Edit_Tab_Agreement
  • Mage_Sales_Block_Adminhtml_Customer_Edit_Tab_Recurring_Profile
  • Mage_Sales_Block_Adminhtml_Recurring_Profile
  • Mage_Sales_Block_Adminhtml_Recurring_Profile_Edit_Form
  • Mage_Sales_Block_Adminhtml_Recurring_Profile_Grid
  • Mage_Sales_Block_Adminhtml_Recurring_Profile_View
  • Mage_Sales_Block_Adminhtml_Recurring_Profile_View_Tab_Info
  • Mage_Sales_Block_Adminhtml_Recurring_Profile_View_Tab_Orders
  • Mage_Sales_Block_Adminhtml_Report_Filter_Form
  • Mage_Sales_Block_Adminhtml_Report_Filter_Form_Coupon
  • Mage_Sales_Block_Adminhtml_Report_Filter_Form_Order
  • Mage_Sales_Block_Billing_Agreement_View
  • Mage_Sales_Block_Billing_Agreements
  • Mage_Sales_Block_Guest_Links
  • Mage_Sales_Block_Items_Abstract
  • Mage_Sales_Block_Order_Comments
  • Mage_Sales_Block_Order_Creditmemo
  • Mage_Sales_Block_Order_Creditmemo_Items
  • Mage_Sales_Block_Order_Creditmemo_Totals
  • Mage_Sales_Block_Order_Details
  • Mage_Sales_Block_Order_Email_Creditmemo_Items
  • Mage_Sales_Block_Order_Email_Invoice_Items
  • Mage_Sales_Block_Order_Email_Items
  • Mage_Sales_Block_Order_Email_Items_Default
  • Mage_Sales_Block_Order_Email_Items_Order_Default
  • Mage_Sales_Block_Order_Email_Items_Order_Grouped
  • Mage_Sales_Block_Order_Email_Shipment_Items
  • Mage_Sales_Block_Order_History
  • Mage_Sales_Block_Order_Info
  • Mage_Sales_Block_Order_Info_Buttons
  • Mage_Sales_Block_Order_Invoice
  • Mage_Sales_Block_Order_Invoice_Items
  • Mage_Sales_Block_Order_Invoice_Totals
  • Mage_Sales_Block_Order_Item_Renderer_Default
  • Mage_Sales_Block_Order_Item_Renderer_Grouped
  • Mage_Sales_Block_Order_Items
  • Mage_Sales_Block_Order_Print
  • Mage_Sales_Block_Order_Print_Creditmemo
  • Mage_Sales_Block_Order_Print_Invoice
  • Mage_Sales_Block_Order_Print_Shipment
  • Mage_Sales_Block_Order_Recent
  • Mage_Sales_Block_Order_Shipment
  • Mage_Sales_Block_Order_Shipment_Items
  • Mage_Sales_Block_Order_Totals
  • Mage_Sales_Block_Order_View
  • Mage_Sales_Block_Payment_Form_Billing_Agreement
  • Mage_Sales_Block_Payment_Info_Billing_Agreement
  • Mage_Sales_Block_Recurring_Profile_View
  • Mage_Sales_Block_Recurring_Profiles
  • Mage_Sales_Block_Reorder_Sidebar
  • Mage_Sales_Block_Widget_Guest_Form
  • Mage_Sales_Controller_Abstract
  • Mage_Sales_DownloadController
  • Mage_Sales_Exception
  • Mage_Sales_Helper_Data
  • Mage_Sales_Helper_Guest
  • Mage_Sales_Helper_Reorder
  • Mage_Sales_Model_Abstract
  • Mage_Sales_Model_Api2_Order
  • Mage_Sales_Model_Api2_Order_Address
  • Mage_Sales_Model_Api2_Order_Address_Rest
  • Mage_Sales_Model_Api2_Order_Address_Rest_Admin_V1
  • Mage_Sales_Model_Api2_Order_Address_Rest_Customer_V1
  • Mage_Sales_Model_Api2_Order_Comment
  • Mage_Sales_Model_Api2_Order_Comment_Rest
  • Mage_Sales_Model_Api2_Order_Comment_Rest_Admin_V1
  • Mage_Sales_Model_Api2_Order_Comment_Rest_Customer_V1
  • Mage_Sales_Model_Api2_Order_Item
  • Mage_Sales_Model_Api2_Order_Item_Rest
  • Mage_Sales_Model_Api2_Order_Item_Rest_Admin_V1
  • Mage_Sales_Model_Api2_Order_Item_Rest_Customer_V1
  • Mage_Sales_Model_Api2_Order_Rest
  • Mage_Sales_Model_Api2_Order_Rest_Admin_V1
  • Mage_Sales_Model_Api2_Order_Rest_Customer_V1
  • Mage_Sales_Model_Api_Resource
  • Mage_Sales_Model_Billing_Agreement
  • Mage_Sales_Model_Config
  • Mage_Sales_Model_Config_Ordered
  • Mage_Sales_Model_Convert_Order
  • Mage_Sales_Model_Convert_Quote
  • Mage_Sales_Model_Email_Template
  • Mage_Sales_Model_Entity_Order
  • Mage_Sales_Model_Entity_Order_Address
  • Mage_Sales_Model_Entity_Order_Address_Collection
  • Mage_Sales_Model_Entity_Order_Attribute_Backend_Billing
  • Mage_Sales_Model_Entity_Order_Attribute_Backend_Child
  • Mage_Sales_Model_Entity_Order_Attribute_Backend_Parent
  • Mage_Sales_Model_Entity_Order_Attribute_Backend_Shipping
  • Mage_Sales_Model_Entity_Order_Collection
  • Mage_Sales_Model_Entity_Order_Creditmemo
  • Mage_Sales_Model_Entity_Order_Creditmemo_Attribute_Backend_Child
  • Mage_Sales_Model_Entity_Order_Creditmemo_Attribute_Backend_Parent
  • Mage_Sales_Model_Entity_Order_Creditmemo_Collection
  • Mage_Sales_Model_Entity_Order_Creditmemo_Comment
  • Mage_Sales_Model_Entity_Order_Creditmemo_Comment_Collection
  • Mage_Sales_Model_Entity_Order_Creditmemo_Item
  • Mage_Sales_Model_Entity_Order_Creditmemo_Item_Collection
  • Mage_Sales_Model_Entity_Order_Invoice
  • Mage_Sales_Model_Entity_Order_Invoice_Attribute_Backend_Child
  • Mage_Sales_Model_Entity_Order_Invoice_Attribute_Backend_Item
  • Mage_Sales_Model_Entity_Order_Invoice_Attribute_Backend_Order
  • Mage_Sales_Model_Entity_Order_Invoice_Attribute_Backend_Parent
  • Mage_Sales_Model_Entity_Order_Invoice_Collection
  • Mage_Sales_Model_Entity_Order_Invoice_Comment
  • Mage_Sales_Model_Entity_Order_Invoice_Comment_Collection
  • Mage_Sales_Model_Entity_Order_Invoice_Item
  • Mage_Sales_Model_Entity_Order_Invoice_Item_Collection
  • Mage_Sales_Model_Entity_Order_Item
  • Mage_Sales_Model_Entity_Order_Item_Collection
  • Mage_Sales_Model_Entity_Order_Payment
  • Mage_Sales_Model_Entity_Order_Payment_Collection
  • Mage_Sales_Model_Entity_Order_Shipment
  • Mage_Sales_Model_Entity_Order_Shipment_Attribute_Backend_Child
  • Mage_Sales_Model_Entity_Order_Shipment_Attribute_Backend_Parent
  • Mage_Sales_Model_Entity_Order_Shipment_Collection
  • Mage_Sales_Model_Entity_Order_Shipment_Comment
  • Mage_Sales_Model_Entity_Order_Shipment_Comment_Collection
  • Mage_Sales_Model_Entity_Order_Shipment_Item
  • Mage_Sales_Model_Entity_Order_Shipment_Item_Collection
  • Mage_Sales_Model_Entity_Order_Shipment_Track
  • Mage_Sales_Model_Entity_Order_Shipment_Track_Collection
  • Mage_Sales_Model_Entity_Order_Status_History
  • Mage_Sales_Model_Entity_Order_Status_History_Collection
  • Mage_Sales_Model_Entity_Quote
  • Mage_Sales_Model_Entity_Quote_Address
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Backend
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Backend_Child
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Backend_Parent
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Backend_Region
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Custbalance
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Discount
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Grand
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Shipping
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Subtotal
  • Mage_Sales_Model_Entity_Quote_Address_Attribute_Frontend_Tax
  • Mage_Sales_Model_Entity_Quote_Address_Collection
  • Mage_Sales_Model_Entity_Quote_Address_Item
  • Mage_Sales_Model_Entity_Quote_Address_Item_Collection
  • Mage_Sales_Model_Entity_Quote_Address_Rate
  • Mage_Sales_Model_Entity_Quote_Address_Rate_Collection
  • Mage_Sales_Model_Entity_Quote_Collection
  • Mage_Sales_Model_Entity_Quote_Item
  • Mage_Sales_Model_Entity_Quote_Item_Collection
  • Mage_Sales_Model_Entity_Quote_Payment
  • Mage_Sales_Model_Entity_Quote_Payment_Collection
  • Mage_Sales_Model_Entity_Sale_Collection
  • Mage_Sales_Model_Entity_Setup
  • Mage_Sales_Model_Mysql4_Abstract
  • Mage_Sales_Model_Mysql4_Billing_Agreement
  • Mage_Sales_Model_Mysql4_Billing_Agreement_Collection
  • Mage_Sales_Model_Mysql4_Collection_Abstract
  • Mage_Sales_Model_Mysql4_Order
  • Mage_Sales_Model_Mysql4_Order_Abstract
  • Mage_Sales_Model_Mysql4_Order_Address
  • Mage_Sales_Model_Mysql4_Order_Address_Collection
  • Mage_Sales_Model_Mysql4_Order_Attribute_Backend_Billing
  • Mage_Sales_Model_Mysql4_Order_Attribute_Backend_Child
  • Mage_Sales_Model_Mysql4_Order_Attribute_Backend_Parent
  • Mage_Sales_Model_Mysql4_Order_Attribute_Backend_Shipping
  • Mage_Sales_Model_Mysql4_Order_Collection
  • Mage_Sales_Model_Mysql4_Order_Collection_Abstract
  • Mage_Sales_Model_Mysql4_Order_Comment_Collection_Abstract
  • Mage_Sales_Model_Mysql4_Order_Creditmemo
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Attribute_Backend_Child
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Attribute_Backend_Parent
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Collection
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Comment
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Comment_Collection
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Grid_Collection
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Item
  • Mage_Sales_Model_Mysql4_Order_Creditmemo_Item_Collection
  • Mage_Sales_Model_Mysql4_Order_Grid_Collection
  • Mage_Sales_Model_Mysql4_Order_Invoice
  • Mage_Sales_Model_Mysql4_Order_Invoice_Attribute_Backend_Child
  • Mage_Sales_Model_Mysql4_Order_Invoice_Attribute_Backend_Item
  • Mage_Sales_Model_Mysql4_Order_Invoice_Attribute_Backend_Order
  • Mage_Sales_Model_Mysql4_Order_Invoice_Attribute_Backend_Parent
  • Mage_Sales_Model_Mysql4_Order_Invoice_Collection
  • Mage_Sales_Model_Mysql4_Order_Invoice_Comment
  • Mage_Sales_Model_Mysql4_Order_Invoice_Comment_Collection
  • Mage_Sales_Model_Mysql4_Order_Invoice_Grid_Collection
  • Mage_Sales_Model_Mysql4_Order_Invoice_Item
  • Mage_Sales_Model_Mysql4_Order_Invoice_Item_Collection
  • Mage_Sales_Model_Mysql4_Order_Item
  • Mage_Sales_Model_Mysql4_Order_Item_Collection
  • Mage_Sales_Model_Mysql4_Order_Payment
  • Mage_Sales_Model_Mysql4_Order_Payment_Collection
  • Mage_Sales_Model_Mysql4_Order_Payment_Transaction
  • Mage_Sales_Model_Mysql4_Order_Payment_Transaction_Collection
  • Mage_Sales_Model_Mysql4_Order_Shipment
  • Mage_Sales_Model_Mysql4_Order_Shipment_Attribute_Backend_Child
  • Mage_Sales_Model_Mysql4_Order_Shipment_Attribute_Backend_Parent
  • Mage_Sales_Model_Mysql4_Order_Shipment_Collection
  • Mage_Sales_Model_Mysql4_Order_Shipment_Comment
  • Mage_Sales_Model_Mysql4_Order_Shipment_Comment_Collection
  • Mage_Sales_Model_Mysql4_Order_Shipment_Grid_Collection
  • Mage_Sales_Model_Mysql4_Order_Shipment_Item
  • Mage_Sales_Model_Mysql4_Order_Shipment_Item_Collection
  • Mage_Sales_Model_Mysql4_Order_Shipment_Track
  • Mage_Sales_Model_Mysql4_Order_Shipment_Track_Collection
  • Mage_Sales_Model_Mysql4_Order_Status
  • Mage_Sales_Model_Mysql4_Order_Status_Collection
  • Mage_Sales_Model_Mysql4_Order_Status_History
  • Mage_Sales_Model_Mysql4_Order_Status_History_Collection
  • Mage_Sales_Model_Mysql4_Order_Tax
  • Mage_Sales_Model_Mysql4_Order_Tax_Collection
  • Mage_Sales_Model_Mysql4_Quote
  • Mage_Sales_Model_Mysql4_Quote_Address
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Backend
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Backend_Child
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Backend_Parent
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Backend_Region
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Custbalance
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Discount
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Grand
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Shipping
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Subtotal
  • Mage_Sales_Model_Mysql4_Quote_Address_Attribute_Frontend_Tax
  • Mage_Sales_Model_Mysql4_Quote_Address_Collection
  • Mage_Sales_Model_Mysql4_Quote_Address_Item
  • Mage_Sales_Model_Mysql4_Quote_Address_Item_Collection
  • Mage_Sales_Model_Mysql4_Quote_Address_Rate
  • Mage_Sales_Model_Mysql4_Quote_Address_Rate_Collection
  • Mage_Sales_Model_Mysql4_Quote_Collection
  • Mage_Sales_Model_Mysql4_Quote_Item
  • Mage_Sales_Model_Mysql4_Quote_Item_Collection
  • Mage_Sales_Model_Mysql4_Quote_Item_Option
  • Mage_Sales_Model_Mysql4_Quote_Item_Option_Collection
  • Mage_Sales_Model_Mysql4_Quote_Payment
  • Mage_Sales_Model_Mysql4_Quote_Payment_Collection
  • Mage_Sales_Model_Mysql4_Recurring_Profile
  • Mage_Sales_Model_Mysql4_Recurring_Profile_Collection
  • Mage_Sales_Model_Mysql4_Report
  • Mage_Sales_Model_Mysql4_Report_Abstract
  • Mage_Sales_Model_Mysql4_Report_Bestsellers
  • Mage_Sales_Model_Mysql4_Report_Bestsellers_Collection
  • Mage_Sales_Model_Mysql4_Report_Collection_Abstract
  • Mage_Sales_Model_Mysql4_Report_Invoiced
  • Mage_Sales_Model_Mysql4_Report_Invoiced_Collection_Invoiced
  • Mage_Sales_Model_Mysql4_Report_Invoiced_Collection_Order
  • Mage_Sales_Model_Mysql4_Report_Order
  • Mage_Sales_Model_Mysql4_Report_Order_Collection
  • Mage_Sales_Model_Mysql4_Report_Order_Updatedat_Collection
  • Mage_Sales_Model_Mysql4_Report_Refunded
  • Mage_Sales_Model_Mysql4_Report_Refunded_Collection_Order
  • Mage_Sales_Model_Mysql4_Report_Refunded_Collection_Refunded
  • Mage_Sales_Model_Mysql4_Report_Shipping
  • Mage_Sales_Model_Mysql4_Report_Shipping_Collection_Order
  • Mage_Sales_Model_Mysql4_Report_Shipping_Collection_Shipment
  • Mage_Sales_Model_Mysql4_Sale_Collection
  • Mage_Sales_Model_Mysql4_Setup
  • Mage_Sales_Model_Observer
  • Mage_Sales_Model_Order
  • Mage_Sales_Model_Order_Address
  • Mage_Sales_Model_Order_Api
  • Mage_Sales_Model_Order_Api_V2
  • Mage_Sales_Model_Order_Config
  • Mage_Sales_Model_Order_Creditmemo
  • Mage_Sales_Model_Order_Creditmemo_Api
  • Mage_Sales_Model_Order_Creditmemo_Api_V2
  • Mage_Sales_Model_Order_Creditmemo_Comment
  • Mage_Sales_Model_Order_Creditmemo_Config
  • Mage_Sales_Model_Order_Creditmemo_Item
  • Mage_Sales_Model_Order_Creditmemo_Total_Abstract
  • Mage_Sales_Model_Order_Creditmemo_Total_Cost
  • Mage_Sales_Model_Order_Creditmemo_Total_Discount
  • Mage_Sales_Model_Order_Creditmemo_Total_Grand
  • Mage_Sales_Model_Order_Creditmemo_Total_Shipping
  • Mage_Sales_Model_Order_Creditmemo_Total_Subtotal
  • Mage_Sales_Model_Order_Creditmemo_Total_Tax
  • Mage_Sales_Model_Order_Invoice
  • Mage_Sales_Model_Order_Invoice_Api
  • Mage_Sales_Model_Order_Invoice_Api_V2
  • Mage_Sales_Model_Order_Invoice_Comment
  • Mage_Sales_Model_Order_Invoice_Config
  • Mage_Sales_Model_Order_Invoice_Item
  • Mage_Sales_Model_Order_Invoice_Total_Abstract
  • Mage_Sales_Model_Order_Invoice_Total_Cost
  • Mage_Sales_Model_Order_Invoice_Total_Discount
  • Mage_Sales_Model_Order_Invoice_Total_Grand
  • Mage_Sales_Model_Order_Invoice_Total_Shipping
  • Mage_Sales_Model_Order_Invoice_Total_Subtotal
  • Mage_Sales_Model_Order_Invoice_Total_Tax
  • Mage_Sales_Model_Order_Item
  • Mage_Sales_Model_Order_Payment
  • Mage_Sales_Model_Order_Payment_Transaction
  • Mage_Sales_Model_Order_Pdf_Abstract
  • Mage_Sales_Model_Order_Pdf_Creditmemo
  • Mage_Sales_Model_Order_Pdf_Invoice
  • Mage_Sales_Model_Order_Pdf_Items_Abstract
  • Mage_Sales_Model_Order_Pdf_Items_Creditmemo_Default
  • Mage_Sales_Model_Order_Pdf_Items_Creditmemo_Grouped
  • Mage_Sales_Model_Order_Pdf_Items_Invoice_Default
  • Mage_Sales_Model_Order_Pdf_Items_Invoice_Grouped
  • Mage_Sales_Model_Order_Pdf_Items_Shipment_Default
  • Mage_Sales_Model_Order_Pdf_Shipment
  • Mage_Sales_Model_Order_Pdf_Shipment_Packaging
  • Mage_Sales_Model_Order_Pdf_Total_Default
  • Mage_Sales_Model_Order_Shipment
  • Mage_Sales_Model_Order_Shipment_Api
  • Mage_Sales_Model_Order_Shipment_Api_V2
  • Mage_Sales_Model_Order_Shipment_Comment
  • Mage_Sales_Model_Order_Shipment_Item
  • Mage_Sales_Model_Order_Shipment_Track
  • Mage_Sales_Model_Order_Status
  • Mage_Sales_Model_Order_Status_History
  • Mage_Sales_Model_Order_Tax
  • Mage_Sales_Model_Order_Total
  • Mage_Sales_Model_Order_Total_Abstract
  • Mage_Sales_Model_Order_Total_Config_Base
  • Mage_Sales_Model_Payment_Method_Billing_AgreementAbstract
  • Mage_Sales_Model_Quote
  • Mage_Sales_Model_Quote_Address
  • Mage_Sales_Model_Quote_Address_Item
  • Mage_Sales_Model_Quote_Address_Rate
  • Mage_Sales_Model_Quote_Address_Total
  • Mage_Sales_Model_Quote_Address_Total_Abstract
  • Mage_Sales_Model_Quote_Address_Total_Custbalance
  • Mage_Sales_Model_Quote_Address_Total_Discount
  • Mage_Sales_Model_Quote_Address_Total_Grand
  • Mage_Sales_Model_Quote_Address_Total_Msrp
  • Mage_Sales_Model_Quote_Address_Total_Nominal
  • Mage_Sales_Model_Quote_Address_Total_Nominal_Collector
  • Mage_Sales_Model_Quote_Address_Total_Nominal_Recurring_Initial
  • Mage_Sales_Model_Quote_Address_Total_Nominal_Recurring_Trial
  • Mage_Sales_Model_Quote_Address_Total_Nominal_RecurringAbstract
  • Mage_Sales_Model_Quote_Address_Total_Nominal_Shipping
  • Mage_Sales_Model_Quote_Address_Total_Nominal_Subtotal
  • Mage_Sales_Model_Quote_Address_Total_Shipping
  • Mage_Sales_Model_Quote_Address_Total_Subtotal
  • Mage_Sales_Model_Quote_Address_Total_Tax
  • Mage_Sales_Model_Quote_Config
  • Mage_Sales_Model_Quote_Item
  • Mage_Sales_Model_Quote_Item_Abstract
  • Mage_Sales_Model_Quote_Item_Option
  • Mage_Sales_Model_Quote_Payment
  • Mage_Sales_Model_Recurring_Profile
  • Mage_Sales_Model_Resource_Abstract
  • Mage_Sales_Model_Resource_Billing_Agreement
  • Mage_Sales_Model_Resource_Billing_Agreement_Collection
  • Mage_Sales_Model_Resource_Collection_Abstract
  • Mage_Sales_Model_Resource_Helper_Mysql4
  • Mage_Sales_Model_Resource_Order
  • Mage_Sales_Model_Resource_Order_Abstract
  • Mage_Sales_Model_Resource_Order_Address
  • Mage_Sales_Model_Resource_Order_Address_Collection
  • Mage_Sales_Model_Resource_Order_Attribute_Backend_Billing
  • Mage_Sales_Model_Resource_Order_Attribute_Backend_Child
  • Mage_Sales_Model_Resource_Order_Attribute_Backend_Parent
  • Mage_Sales_Model_Resource_Order_Attribute_Backend_Shipping
  • Mage_Sales_Model_Resource_Order_Collection
  • Mage_Sales_Model_Resource_Order_Collection_Abstract
  • Mage_Sales_Model_Resource_Order_Comment_Collection_Abstract
  • Mage_Sales_Model_Resource_Order_Creditmemo
  • Mage_Sales_Model_Resource_Order_Creditmemo_Attribute_Backend_Child
  • Mage_Sales_Model_Resource_Order_Creditmemo_Attribute_Backend_Parent
  • Mage_Sales_Model_Resource_Order_Creditmemo_Collection
  • Mage_Sales_Model_Resource_Order_Creditmemo_Comment
  • Mage_Sales_Model_Resource_Order_Creditmemo_Comment_Collection
  • Mage_Sales_Model_Resource_Order_Creditmemo_Grid_Collection
  • Mage_Sales_Model_Resource_Order_Creditmemo_Item
  • Mage_Sales_Model_Resource_Order_Creditmemo_Item_Collection
  • Mage_Sales_Model_Resource_Order_Grid_Collection
  • Mage_Sales_Model_Resource_Order_Invoice
  • Mage_Sales_Model_Resource_Order_Invoice_Attribute_Backend_Child
  • Mage_Sales_Model_Resource_Order_Invoice_Attribute_Backend_Item
  • Mage_Sales_Model_Resource_Order_Invoice_Attribute_Backend_Order
  • Mage_Sales_Model_Resource_Order_Invoice_Attribute_Backend_Parent
  • Mage_Sales_Model_Resource_Order_Invoice_Collection
  • Mage_Sales_Model_Resource_Order_Invoice_Comment
  • Mage_Sales_Model_Resource_Order_Invoice_Comment_Collection
  • Mage_Sales_Model_Resource_Order_Invoice_Grid_Collection
  • Mage_Sales_Model_Resource_Order_Invoice_Item
  • Mage_Sales_Model_Resource_Order_Invoice_Item_Collection
  • Mage_Sales_Model_Resource_Order_Item
  • Mage_Sales_Model_Resource_Order_Item_Collection
  • Mage_Sales_Model_Resource_Order_Payment
  • Mage_Sales_Model_Resource_Order_Payment_Collection
  • Mage_Sales_Model_Resource_Order_Payment_Transaction
  • Mage_Sales_Model_Resource_Order_Payment_Transaction_Collection
  • Mage_Sales_Model_Resource_Order_Shipment
  • Mage_Sales_Model_Resource_Order_Shipment_Attribute_Backend_Child
  • Mage_Sales_Model_Resource_Order_Shipment_Attribute_Backend_Parent
  • Mage_Sales_Model_Resource_Order_Shipment_Collection
  • Mage_Sales_Model_Resource_Order_Shipment_Comment
  • Mage_Sales_Model_Resource_Order_Shipment_Comment_Collection
  • Mage_Sales_Model_Resource_Order_Shipment_Grid_Collection
  • Mage_Sales_Model_Resource_Order_Shipment_Item
  • Mage_Sales_Model_Resource_Order_Shipment_Item_Collection
  • Mage_Sales_Model_Resource_Order_Shipment_Track
  • Mage_Sales_Model_Resource_Order_Shipment_Track_Collection
  • Mage_Sales_Model_Resource_Order_Status
  • Mage_Sales_Model_Resource_Order_Status_Collection
  • Mage_Sales_Model_Resource_Order_Status_History
  • Mage_Sales_Model_Resource_Order_Status_History_Collection
  • Mage_Sales_Model_Resource_Order_Tax
  • Mage_Sales_Model_Resource_Order_Tax_Collection
  • Mage_Sales_Model_Resource_Quote
  • Mage_Sales_Model_Resource_Quote_Address
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Backend
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Backend_Child
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Backend_Parent
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Backend_Region
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Custbalance
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Discount
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Grand
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Shipping
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Subtotal
  • Mage_Sales_Model_Resource_Quote_Address_Attribute_Frontend_Tax
  • Mage_Sales_Model_Resource_Quote_Address_Collection
  • Mage_Sales_Model_Resource_Quote_Address_Item
  • Mage_Sales_Model_Resource_Quote_Address_Item_Collection
  • Mage_Sales_Model_Resource_Quote_Address_Rate
  • Mage_Sales_Model_Resource_Quote_Address_Rate_Collection
  • Mage_Sales_Model_Resource_Quote_Collection
  • Mage_Sales_Model_Resource_Quote_Item
  • Mage_Sales_Model_Resource_Quote_Item_Collection
  • Mage_Sales_Model_Resource_Quote_Item_Option
  • Mage_Sales_Model_Resource_Quote_Item_Option_Collection
  • Mage_Sales_Model_Resource_Quote_Payment
  • Mage_Sales_Model_Resource_Quote_Payment_Collection
  • Mage_Sales_Model_Resource_Recurring_Profile
  • Mage_Sales_Model_Resource_Recurring_Profile_Collection
  • Mage_Sales_Model_Resource_Report
  • Mage_Sales_Model_Resource_Report_Abstract
  • Mage_Sales_Model_Resource_Report_Bestsellers
  • Mage_Sales_Model_Resource_Report_Bestsellers_Collection
  • Mage_Sales_Model_Resource_Report_Collection_Abstract
  • Mage_Sales_Model_Resource_Report_Invoiced
  • Mage_Sales_Model_Resource_Report_Invoiced_Collection_Invoiced
  • Mage_Sales_Model_Resource_Report_Invoiced_Collection_Order
  • Mage_Sales_Model_Resource_Report_Order
  • Mage_Sales_Model_Resource_Report_Order_Collection
  • Mage_Sales_Model_Resource_Report_Order_Createdat
  • Mage_Sales_Model_Resource_Report_Order_Updatedat
  • Mage_Sales_Model_Resource_Report_Order_Updatedat_Collection
  • Mage_Sales_Model_Resource_Report_Refunded
  • Mage_Sales_Model_Resource_Report_Refunded_Collection_Order
  • Mage_Sales_Model_Resource_Report_Refunded_Collection_Refunded
  • Mage_Sales_Model_Resource_Report_Shipping
  • Mage_Sales_Model_Resource_Report_Shipping_Collection_Order
  • Mage_Sales_Model_Resource_Report_Shipping_Collection_Shipment
  • Mage_Sales_Model_Resource_Sale_Collection
  • Mage_Sales_Model_Resource_Setup
  • Mage_Sales_Model_Service_Order
  • Mage_Sales_Model_Service_Quote
  • Mage_Sales_Model_Status_List
  • Mage_Sales_OrderController
  • Mage_Sales_Recurring_ProfileController
  • Mage_Shipping_TrackingController
  • Test

Interfaces

  • Mage_Sales_Model_Resource_Helper_Interface
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Magento
  4:  *
  5:  * NOTICE OF LICENSE
  6:  *
  7:  * This source file is subject to the Open Software License (OSL 3.0)
  8:  * that is bundled with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://opensource.org/licenses/osl-3.0.php
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@magentocommerce.com so we can send you a copy immediately.
 14:  *
 15:  * DISCLAIMER
 16:  *
 17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
 18:  * versions in the future. If you wish to customize Magento for your
 19:  * needs please refer to http://www.magentocommerce.com for more information.
 20:  *
 21:  * @category    Mage
 22:  * @package     Mage_Sales
 23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 25:  */
 26: 
 27: 
 28: /**
 29:  * Sales observer
 30:  *
 31:  * @category   Mage
 32:  * @package    Mage_Sales
 33:  * @author     Magento Core Team <core@magentocommerce.com>
 34:  */
 35: class Mage_Sales_Model_Observer
 36: {
 37:     /**
 38:      * Expire quotes additional fields to filter
 39:      *
 40:      * @var array
 41:      */
 42:     protected $_expireQuotesFilterFields = array();
 43: 
 44:     /**
 45:      * Clean expired quotes (cron process)
 46:      *
 47:      * @param Mage_Cron_Model_Schedule $schedule
 48:      * @return Mage_Sales_Model_Observer
 49:      */
 50:     public function cleanExpiredQuotes($schedule)
 51:     {
 52:         Mage::dispatchEvent('clear_expired_quotes_before', array('sales_observer' => $this));
 53: 
 54:         $lifetimes = Mage::getConfig()->getStoresConfigByPath('checkout/cart/delete_quote_after');
 55:         foreach ($lifetimes as $storeId=>$lifetime) {
 56:             $lifetime *= 86400;
 57: 
 58:             /** @var $quotes Mage_Sales_Model_Mysql4_Quote_Collection */
 59:             $quotes = Mage::getModel('sales/quote')->getCollection();
 60: 
 61:             $quotes->addFieldToFilter('store_id', $storeId);
 62:             $quotes->addFieldToFilter('updated_at', array('to'=>date("Y-m-d", time()-$lifetime)));
 63:             $quotes->addFieldToFilter('is_active', 0);
 64: 
 65:             foreach ($this->getExpireQuotesAdditionalFilterFields() as $field => $condition) {
 66:                 $quotes->addFieldToFilter($field, $condition);
 67:             }
 68: 
 69:             $quotes->walk('delete');
 70:         }
 71:         return $this;
 72:     }
 73: 
 74:     /**
 75:      * Retrieve expire quotes additional fields to filter
 76:      *
 77:      * @return array
 78:      */
 79:     public function getExpireQuotesAdditionalFilterFields()
 80:     {
 81:         return $this->_expireQuotesFilterFields;
 82:     }
 83: 
 84:     /**
 85:      * Set expire quotes additional fields to filter
 86:      *
 87:      * @param array $fields
 88:      * @return Mage_Sales_Model_Observer
 89:      */
 90:     public function setExpireQuotesAdditionalFilterFields(array $fields)
 91:     {
 92:         $this->_expireQuotesFilterFields = $fields;
 93:         return $this;
 94:     }
 95: 
 96:     /**
 97:      * When deleting product, substract it from all quotes quantities
 98:      *
 99:      * @throws Exception
100:      * @param Varien_Event_Observer
101:      * @return Mage_Sales_Model_Observer
102:      */
103:     public function substractQtyFromQuotes($observer)
104:     {
105:         $product = $observer->getEvent()->getProduct();
106:         Mage::getResourceSingleton('sales/quote')->substractProductFromQuotes($product);
107:         return $this;
108:     }
109: 
110:     /**
111:      * When applying a catalog price rule, make related quotes recollect on demand
112:      *
113:      * @param Varien_Event_Observer $observer
114:      * @return Mage_Sales_Model_Observer
115:      */
116:     public function markQuotesRecollectOnCatalogRules($observer)
117:     {
118:         Mage::getResourceSingleton('sales/quote')->markQuotesRecollectOnCatalogRules();
119:         return $this;
120:     }
121: 
122:     /**
123:      * Catalog Product After Save (change status process)
124:      *
125:      * @param Varien_Event_Observer $observer
126:      * @return Mage_Sales_Model_Observer
127:      */
128:     public function catalogProductSaveAfter(Varien_Event_Observer $observer)
129:     {
130:         $product = $observer->getEvent()->getProduct();
131:         if ($product->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED) {
132:             return $this;
133:         }
134: 
135:         Mage::getResourceSingleton('sales/quote')->markQuotesRecollect($product->getId());
136: 
137:         return $this;
138:     }
139: 
140:     /**
141:      * Catalog Mass Status update process
142:      *
143:      * @param Varien_Event_Observer $observer
144:      * @return Mage_Sales_Model_Observer
145:      */
146:     public function catalogProductStatusUpdate(Varien_Event_Observer $observer)
147:     {
148:         $status     = $observer->getEvent()->getStatus();
149:         if ($status == Mage_Catalog_Model_Product_Status::STATUS_ENABLED) {
150:             return $this;
151:         }
152:         $productId  = $observer->getEvent()->getProductId();
153:         Mage::getResourceSingleton('sales/quote')->markQuotesRecollect($productId);
154: 
155:         return $this;
156:     }
157: 
158:     /**
159:      * Refresh sales order report statistics for last day
160:      *
161:      * @param Mage_Cron_Model_Schedule $schedule
162:      * @return Mage_Sales_Model_Observer
163:      */
164:     public function aggregateSalesReportOrderData($schedule)
165:     {
166:         Mage::app()->getLocale()->emulate(0);
167:         $currentDate = Mage::app()->getLocale()->date();
168:         $date = $currentDate->subHour(25);
169:         Mage::getResourceModel('sales/report_order')->aggregate($date);
170:         Mage::app()->getLocale()->revert();
171:         return $this;
172:     }
173: 
174:     /**
175:      * Refresh sales shipment report statistics for last day
176:      *
177:      * @param Mage_Cron_Model_Schedule $schedule
178:      * @return Mage_Sales_Model_Observer
179:      */
180:     public function aggregateSalesReportShipmentData($schedule)
181:     {
182:         Mage::app()->getLocale()->emulate(0);
183:         $currentDate = Mage::app()->getLocale()->date();
184:         $date = $currentDate->subHour(25);
185:         Mage::getResourceModel('sales/report_shipping')->aggregate($date);
186:         Mage::app()->getLocale()->revert();
187:         return $this;
188:     }
189: 
190:     /**
191:      * Refresh sales invoiced report statistics for last day
192:      *
193:      * @param Mage_Cron_Model_Schedule $schedule
194:      * @return Mage_Sales_Model_Observer
195:      */
196:     public function aggregateSalesReportInvoicedData($schedule)
197:     {
198:         Mage::app()->getLocale()->emulate(0);
199:         $currentDate = Mage::app()->getLocale()->date();
200:         $date = $currentDate->subHour(25);
201:         Mage::getResourceModel('sales/report_invoiced')->aggregate($date);
202:         Mage::app()->getLocale()->revert();
203:         return $this;
204:     }
205: 
206:     /**
207:      * Refresh sales refunded report statistics for last day
208:      *
209:      * @param Mage_Cron_Model_Schedule $schedule
210:      * @return Mage_Sales_Model_Observer
211:      */
212:     public function aggregateSalesReportRefundedData($schedule)
213:     {
214:         Mage::app()->getLocale()->emulate(0);
215:         $currentDate = Mage::app()->getLocale()->date();
216:         $date = $currentDate->subHour(25);
217:         Mage::getResourceModel('sales/report_refunded')->aggregate($date);
218:         Mage::app()->getLocale()->revert();
219:         return $this;
220:     }
221: 
222:     /**
223:      * Refresh bestsellers report statistics for last day
224:      *
225:      * @param Mage_Cron_Model_Schedule $schedule
226:      * @return Mage_Sales_Model_Observer
227:      */
228:     public function aggregateSalesReportBestsellersData($schedule)
229:     {
230:         Mage::app()->getLocale()->emulate(0);
231:         $currentDate = Mage::app()->getLocale()->date();
232:         $date = $currentDate->subHour(25);
233:         Mage::getResourceModel('sales/report_bestsellers')->aggregate($date);
234:         Mage::app()->getLocale()->revert();
235:         return $this;
236:     }
237: 
238:     /**
239:      * Add the recurring profile form when editing a product
240:      *
241:      * @param Varien_Event_Observer $observer
242:      */
243:     public function prepareProductEditFormRecurringProfile($observer)
244:     {
245:         // replace the element of recurring payment profile field with a form
246:         $profileElement = $observer->getEvent()->getProductElement();
247:         $block = Mage::app()->getLayout()->createBlock('sales/adminhtml_recurring_profile_edit_form',
248:             'adminhtml_recurring_profile_edit_form')->setParentElement($profileElement)
249:             ->setProductEntity($observer->getEvent()->getProduct());
250:         $observer->getEvent()->getResult()->output = $block->toHtml();
251: 
252:         // make the profile element dependent on is_recurring
253:         $dependencies = Mage::app()->getLayout()->createBlock('adminhtml/widget_form_element_dependence',
254:             'adminhtml_recurring_profile_edit_form_dependence')->addFieldMap('is_recurring', 'product[is_recurring]')
255:             ->addFieldMap($profileElement->getHtmlId(), $profileElement->getName())
256:             ->addFieldDependence($profileElement->getName(), 'product[is_recurring]', '1')
257:             ->addConfigOptions(array('levels_up' => 2));
258:         $observer->getEvent()->getResult()->output .= $dependencies->toHtml();
259:     }
260: 
261:     /**
262:      * Block admin ability to use customer billing agreements
263:      *
264:      * @param Varien_Event_Observer $observer
265:      */
266:     public function restrictAdminBillingAgreementUsage($observer)
267:     {
268:         $methodInstance = $observer->getEvent()->getMethodInstance();
269:         if (!($methodInstance instanceof Mage_Sales_Model_Payment_Method_Billing_AgreementAbstract)) {
270:             return;
271:         }
272:         if (!Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/use')) {
273:             $observer->getEvent()->getResult()->isAvailable = false;
274:         }
275:     }
276: 
277:     /**
278:      * Set new customer group to all his quotes
279:      *
280:      * @param  Varien_Event_Observer $observer
281:      * @return Mage_Sales_Model_Observer
282:      */
283:     public function customerSaveAfter(Varien_Event_Observer $observer)
284:     {
285:         /** @var $customer Mage_Customer_Model_Customer */
286:         $customer = $observer->getEvent()->getCustomer();
287: 
288:         if ($customer->getGroupId() !== $customer->getOrigData('group_id')) {
289:             /**
290:              * It is needed to process customer's quotes for all websites
291:              * if customer accounts are shared between all of them
292:              */
293:             $websites = (Mage::getSingleton('customer/config_share')->isWebsiteScope())
294:                 ? array(Mage::app()->getWebsite($customer->getWebsiteId()))
295:                 : Mage::app()->getWebsites();
296: 
297:             /** @var $quote Mage_Sales_Model_Quote */
298:             $quote = Mage::getSingleton('sales/quote');
299: 
300:             foreach ($websites as $website) {
301:                 $quote->setWebsite($website);
302:                 $quote->loadByCustomer($customer);
303: 
304:                 if ($quote->getId()) {
305:                     $quote->setCustomerGroupId($customer->getGroupId());
306:                     $quote->collectTotals();
307:                     $quote->save();
308:                 }
309:             }
310:         }
311: 
312:         return $this;
313:     }
314: 
315:     /**
316:      * Set Quote information about MSRP price enabled
317:      *
318:      * @param Varien_Event_Observer $observer
319:      */
320:     public function setQuoteCanApplyMsrp(Varien_Event_Observer $observer)
321:     {
322:         /** @var $quote Mage_Sales_Model_Quote */
323:         $quote = $observer->getEvent()->getQuote();
324: 
325:         $canApplyMsrp = false;
326:         if (Mage::helper('catalog')->isMsrpEnabled()) {
327:             foreach ($quote->getAllAddresses() as $adddress) {
328:                 if ($adddress->getCanApplyMsrp()) {
329:                     $canApplyMsrp = true;
330:                     break;
331:                 }
332:             }
333:         }
334: 
335:         $quote->setCanApplyMsrp($canApplyMsrp);
336:     }
337: 
338:     /**
339:      * Add VAT validation request date and identifier to order comments
340:      *
341:      * @param Varien_Event_Observer $observer
342:      * @return null
343:      */
344:     public function addVatRequestParamsOrderComment(Varien_Event_Observer $observer)
345:     {
346:         /** @var $orderInstance Mage_Sales_Model_Order */
347:         $orderInstance = $observer->getOrder();
348:         /** @var $orderAddress Mage_Sales_Model_Order_Address */
349:         $orderAddress = $this->_getVatRequiredSalesAddress($orderInstance);
350:         if (!($orderAddress instanceof Mage_Sales_Model_Order_Address)) {
351:             return;
352:         }
353: 
354:         $vatRequestId = $orderAddress->getVatRequestId();
355:         $vatRequestDate = $orderAddress->getVatRequestDate();
356:         if (is_string($vatRequestId) && !empty($vatRequestId) && is_string($vatRequestDate)
357:             && !empty($vatRequestDate)
358:         ) {
359:             $orderHistoryComment = Mage::helper('customer')->__('VAT Request Identifier')
360:                 . ': ' . $vatRequestId . '<br />' . Mage::helper('customer')->__('VAT Request Date')
361:                 . ': ' . $vatRequestDate;
362:             $orderInstance->addStatusHistoryComment($orderHistoryComment, false);
363:         }
364:     }
365: 
366:     /**
367:      * Retrieve sales address (order or quote) on which tax calculation must be based
368:      *
369:      * @param Mage_Core_Model_Abstract $salesModel
370:      * @param Mage_Core_Model_Store|string|int|null $store
371:      * @return Mage_Customer_Model_Address_Abstract|null
372:      */
373:     protected function _getVatRequiredSalesAddress($salesModel, $store = null)
374:     {
375:         $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType($store);
376:         $requiredAddress = null;
377:         switch ($configAddressType) {
378:             case Mage_Customer_Model_Address_Abstract::TYPE_SHIPPING:
379:                 $requiredAddress = $salesModel->getShippingAddress();
380:                 break;
381:             default:
382:                 $requiredAddress = $salesModel->getBillingAddress();
383:         }
384:         return $requiredAddress;
385:     }
386: 
387:     /**
388:      * Retrieve customer address (default billing or default shipping) ID on which tax calculation must be based
389:      *
390:      * @param Mage_Customer_Model_Customer $customer
391:      * @param Mage_Core_Model_Store|string|int|null $store
392:      * @return int|string
393:      */
394:     protected function _getVatRequiredCustomerAddress(Mage_Customer_Model_Customer $customer, $store = null)
395:     {
396:         $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType($store);
397:         $requiredAddress = null;
398:         switch ($configAddressType) {
399:             case Mage_Customer_Model_Address_Abstract::TYPE_SHIPPING:
400:                 $requiredAddress = $customer->getDefaultShipping();
401:                 break;
402:             default:
403:                 $requiredAddress = $customer->getDefaultBilling();
404:         }
405:         return $requiredAddress;
406:     }
407: 
408:     /**
409:      * Handle customer VAT number if needed on collect_totals_before event of quote address
410:      *
411:      * @param Varien_Event_Observer $observer
412:      */
413:     public function changeQuoteCustomerGroupId(Varien_Event_Observer $observer)
414:     {
415:         /** @var $addressHelper Mage_Customer_Helper_Address */
416:         $addressHelper = Mage::helper('customer/address');
417: 
418:         $quoteAddress = $observer->getQuoteAddress();
419:         $quoteInstance = $quoteAddress->getQuote();
420:         $customerInstance = $quoteInstance->getCustomer();
421: 
422:         $storeId = $customerInstance->getStore();
423: 
424:         $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType($storeId);
425: 
426:         // When VAT is based on billing address then Magento have to handle only billing addresses
427:         $additionalBillingAddressCondition = ($configAddressType == Mage_Customer_Model_Address_Abstract::TYPE_BILLING)
428:             ? $configAddressType != $quoteAddress->getAddressType() : false;
429:         // Handle only addresses that corresponds to VAT configuration
430:         if (!$addressHelper->isVatValidationEnabled($storeId) || $additionalBillingAddressCondition) {
431:             return;
432:         }
433: 
434:         /** @var $customerHelper Mage_Customer_Helper_Data */
435:         $customerHelper = Mage::helper('customer');
436: 
437:         $customerCountryCode = $quoteAddress->getCountryId();
438:         $customerVatNumber = $quoteAddress->getVatId();
439: 
440:         if (empty($customerVatNumber) || !Mage::helper('core')->isCountryInEU($customerCountryCode)) {
441:             $groupId = ($customerInstance->getId()) ? $customerHelper->getDefaultCustomerGroupId($storeId)
442:                 : Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
443: 
444:             $quoteAddress->setPrevQuoteCustomerGroupId($quoteInstance->getCustomerGroupId());
445:             $customerInstance->setGroupId($groupId);
446:             $quoteInstance->setCustomerGroupId($groupId);
447: 
448:             return;
449:         }
450: 
451:         /** @var $coreHelper Mage_Core_Helper_Data */
452:         $coreHelper = Mage::helper('core');
453:         $merchantCountryCode = $coreHelper->getMerchantCountryCode();
454:         $merchantVatNumber = $coreHelper->getMerchantVatNumber();
455: 
456:         $gatewayResponse = null;
457:         if ($addressHelper->getValidateOnEachTransaction($storeId)
458:             || $customerCountryCode != $quoteAddress->getValidatedCountryCode()
459:             || $customerVatNumber != $quoteAddress->getValidatedVatNumber()
460:         ) {
461:             // Send request to gateway
462:             $gatewayResponse = $customerHelper->checkVatNumber(
463:                 $customerCountryCode,
464:                 $customerVatNumber,
465:                 ($merchantVatNumber !== '') ? $merchantCountryCode : '',
466:                 $merchantVatNumber
467:             );
468: 
469:             // Store validation results in corresponding quote address
470:             $quoteAddress->setVatIsValid((int)$gatewayResponse->getIsValid())
471:                 ->setVatRequestId($gatewayResponse->getRequestIdentifier())
472:                 ->setVatRequestDate($gatewayResponse->getRequestDate())
473:                 ->setVatRequestSuccess($gatewayResponse->getRequestSuccess())
474:                 ->setValidatedVatNumber($customerVatNumber)
475:                 ->setValidatedCountryCode($customerCountryCode)
476:                 ->save();
477:         } else {
478:             // Restore validation results from corresponding quote address
479:             $gatewayResponse = new Varien_Object(array(
480:                 'is_valid' => (int)$quoteAddress->getVatIsValid(),
481:                 'request_identifier' => (string)$quoteAddress->getVatRequestId(),
482:                 'request_date' => (string)$quoteAddress->getVatRequestDate(),
483:                 'request_success' => (boolean)$quoteAddress->getVatRequestSuccess()
484:             ));
485:         }
486: 
487:         // Magento always has to emulate group even if customer uses default billing/shipping address
488:         $groupId = $customerHelper->getCustomerGroupIdBasedOnVatNumber(
489:             $customerCountryCode, $gatewayResponse, $customerInstance->getStore()
490:         );
491: 
492:         if ($groupId) {
493:             $quoteAddress->setPrevQuoteCustomerGroupId($quoteInstance->getCustomerGroupId());
494:             $customerInstance->setGroupId($groupId);
495:             $quoteInstance->setCustomerGroupId($groupId);
496:         }
497:     }
498: 
499:     /**
500:      * Restore initial customer group ID in quote if needed on collect_totals_after event of quote address
501:      *
502:      * @param Varien_Event_Observer $observer
503:      */
504:     public function restoreQuoteCustomerGroupId($observer)
505:     {
506:         $quoteAddress = $observer->getQuoteAddress();
507:         $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType();
508:         // Restore initial customer group ID in quote only if VAT is calculated based on shipping address
509:         if ($quoteAddress->hasPrevQuoteCustomerGroupId()
510:             && $configAddressType == Mage_Customer_Model_Address_Abstract::TYPE_SHIPPING
511:         ) {
512:             $quoteAddress->getQuote()->setCustomerGroupId($quoteAddress->getPrevQuoteCustomerGroupId());
513:             $quoteAddress->unsPrevQuoteCustomerGroupId();
514:         }
515:     }
516: }
517: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0