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:  * Enter description here ...
 30:  *
 31:  * @method Mage_Sales_Model_Resource_Order_Invoice _getResource()
 32:  * @method Mage_Sales_Model_Resource_Order_Invoice getResource()
 33:  * @method int getStoreId()
 34:  * @method Mage_Sales_Model_Order_Invoice setStoreId(int $value)
 35:  * @method float getBaseGrandTotal()
 36:  * @method Mage_Sales_Model_Order_Invoice setBaseGrandTotal(float $value)
 37:  * @method float getShippingTaxAmount()
 38:  * @method Mage_Sales_Model_Order_Invoice setShippingTaxAmount(float $value)
 39:  * @method float getTaxAmount()
 40:  * @method Mage_Sales_Model_Order_Invoice setTaxAmount(float $value)
 41:  * @method float getBaseTaxAmount()
 42:  * @method Mage_Sales_Model_Order_Invoice setBaseTaxAmount(float $value)
 43:  * @method float getStoreToOrderRate()
 44:  * @method Mage_Sales_Model_Order_Invoice setStoreToOrderRate(float $value)
 45:  * @method float getBaseShippingTaxAmount()
 46:  * @method Mage_Sales_Model_Order_Invoice setBaseShippingTaxAmount(float $value)
 47:  * @method float getBaseDiscountAmount()
 48:  * @method Mage_Sales_Model_Order_Invoice setBaseDiscountAmount(float $value)
 49:  * @method float getBaseToOrderRate()
 50:  * @method Mage_Sales_Model_Order_Invoice setBaseToOrderRate(float $value)
 51:  * @method float getGrandTotal()
 52:  * @method Mage_Sales_Model_Order_Invoice setGrandTotal(float $value)
 53:  * @method float getShippingAmount()
 54:  * @method Mage_Sales_Model_Order_Invoice setShippingAmount(float $value)
 55:  * @method float getSubtotalInclTax()
 56:  * @method Mage_Sales_Model_Order_Invoice setSubtotalInclTax(float $value)
 57:  * @method float getBaseSubtotalInclTax()
 58:  * @method Mage_Sales_Model_Order_Invoice setBaseSubtotalInclTax(float $value)
 59:  * @method float getStoreToBaseRate()
 60:  * @method Mage_Sales_Model_Order_Invoice setStoreToBaseRate(float $value)
 61:  * @method float getBaseShippingAmount()
 62:  * @method Mage_Sales_Model_Order_Invoice setBaseShippingAmount(float $value)
 63:  * @method float getTotalQty()
 64:  * @method Mage_Sales_Model_Order_Invoice setTotalQty(float $value)
 65:  * @method float getBaseToGlobalRate()
 66:  * @method Mage_Sales_Model_Order_Invoice setBaseToGlobalRate(float $value)
 67:  * @method float getSubtotal()
 68:  * @method Mage_Sales_Model_Order_Invoice setSubtotal(float $value)
 69:  * @method float getBaseSubtotal()
 70:  * @method Mage_Sales_Model_Order_Invoice setBaseSubtotal(float $value)
 71:  * @method float getDiscountAmount()
 72:  * @method Mage_Sales_Model_Order_Invoice setDiscountAmount(float $value)
 73:  * @method int getBillingAddressId()
 74:  * @method Mage_Sales_Model_Order_Invoice setBillingAddressId(int $value)
 75:  * @method int getIsUsedForRefund()
 76:  * @method Mage_Sales_Model_Order_Invoice setIsUsedForRefund(int $value)
 77:  * @method int getOrderId()
 78:  * @method Mage_Sales_Model_Order_Invoice setOrderId(int $value)
 79:  * @method int getEmailSent()
 80:  * @method Mage_Sales_Model_Order_Invoice setEmailSent(int $value)
 81:  * @method int getCanVoidFlag()
 82:  * @method Mage_Sales_Model_Order_Invoice setCanVoidFlag(int $value)
 83:  * @method int getState()
 84:  * @method Mage_Sales_Model_Order_Invoice setState(int $value)
 85:  * @method int getShippingAddressId()
 86:  * @method Mage_Sales_Model_Order_Invoice setShippingAddressId(int $value)
 87:  * @method string getCybersourceToken()
 88:  * @method Mage_Sales_Model_Order_Invoice setCybersourceToken(string $value)
 89:  * @method string getStoreCurrencyCode()
 90:  * @method Mage_Sales_Model_Order_Invoice setStoreCurrencyCode(string $value)
 91:  * @method string getTransactionId()
 92:  * @method Mage_Sales_Model_Order_Invoice setTransactionId(string $value)
 93:  * @method string getOrderCurrencyCode()
 94:  * @method Mage_Sales_Model_Order_Invoice setOrderCurrencyCode(string $value)
 95:  * @method string getBaseCurrencyCode()
 96:  * @method Mage_Sales_Model_Order_Invoice setBaseCurrencyCode(string $value)
 97:  * @method string getGlobalCurrencyCode()
 98:  * @method Mage_Sales_Model_Order_Invoice setGlobalCurrencyCode(string $value)
 99:  * @method string getIncrementId()
100:  * @method Mage_Sales_Model_Order_Invoice setIncrementId(string $value)
101:  * @method string getCreatedAt()
102:  * @method Mage_Sales_Model_Order_Invoice setCreatedAt(string $value)
103:  * @method string getUpdatedAt()
104:  * @method Mage_Sales_Model_Order_Invoice setUpdatedAt(string $value)
105:  * @method float getHiddenTaxAmount()
106:  * @method Mage_Sales_Model_Order_Invoice setHiddenTaxAmount(float $value)
107:  * @method float getBaseHiddenTaxAmount()
108:  * @method Mage_Sales_Model_Order_Invoice setBaseHiddenTaxAmount(float $value)
109:  * @method float getShippingHiddenTaxAmount()
110:  * @method Mage_Sales_Model_Order_Invoice setShippingHiddenTaxAmount(float $value)
111:  * @method float getBaseShippingHiddenTaxAmount()
112:  * @method Mage_Sales_Model_Order_Invoice setBaseShippingHiddenTaxAmount(float $value)
113:  * @method float getShippingInclTax()
114:  * @method Mage_Sales_Model_Order_Invoice setShippingInclTax(float $value)
115:  * @method float getBaseShippingInclTax()
116:  * @method Mage_Sales_Model_Order_Invoice setBaseShippingInclTax(float $value)
117:  *
118:  * @category    Mage
119:  * @package     Mage_Sales
120:  * @author      Magento Core Team <core@magentocommerce.com>
121:  */
122: class Mage_Sales_Model_Order_Invoice extends Mage_Sales_Model_Abstract
123: {
124:     /**
125:      * Invoice states
126:      */
127:     const STATE_OPEN       = 1;
128:     const STATE_PAID       = 2;
129:     const STATE_CANCELED   = 3;
130: 
131:     const CAPTURE_ONLINE   = 'online';
132:     const CAPTURE_OFFLINE  = 'offline';
133:     const NOT_CAPTURE      = 'not_capture';
134: 
135:     const XML_PATH_EMAIL_TEMPLATE               = 'sales_email/invoice/template';
136:     const XML_PATH_EMAIL_GUEST_TEMPLATE         = 'sales_email/invoice/guest_template';
137:     const XML_PATH_EMAIL_IDENTITY               = 'sales_email/invoice/identity';
138:     const XML_PATH_EMAIL_COPY_TO                = 'sales_email/invoice/copy_to';
139:     const XML_PATH_EMAIL_COPY_METHOD            = 'sales_email/invoice/copy_method';
140:     const XML_PATH_EMAIL_ENABLED                = 'sales_email/invoice/enabled';
141: 
142:     const XML_PATH_UPDATE_EMAIL_TEMPLATE        = 'sales_email/invoice_comment/template';
143:     const XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE  = 'sales_email/invoice_comment/guest_template';
144:     const XML_PATH_UPDATE_EMAIL_IDENTITY        = 'sales_email/invoice_comment/identity';
145:     const XML_PATH_UPDATE_EMAIL_COPY_TO         = 'sales_email/invoice_comment/copy_to';
146:     const XML_PATH_UPDATE_EMAIL_COPY_METHOD     = 'sales_email/invoice_comment/copy_method';
147:     const XML_PATH_UPDATE_EMAIL_ENABLED         = 'sales_email/invoice_comment/enabled';
148: 
149:     const REPORT_DATE_TYPE_ORDER_CREATED        = 'order_created';
150:     const REPORT_DATE_TYPE_INVOICE_CREATED      = 'invoice_created';
151: 
152:     /*
153:      * Identifier for order history item
154:      */
155:     const HISTORY_ENTITY_NAME = 'invoice';
156: 
157:     protected static $_states;
158: 
159:     protected $_items;
160:     protected $_comments;
161:     protected $_order;
162: 
163:     /**
164:      * Calculator instances for delta rounding of prices
165:      *
166:      * @var array
167:      */
168:     protected $_rounders = array();
169: 
170:     protected $_saveBeforeDestruct = false;
171: 
172:     protected $_eventPrefix = 'sales_order_invoice';
173:     protected $_eventObject = 'invoice';
174: 
175:     /**
176:      * Whether the pay() was called
177:      * @var bool
178:      */
179:     protected $_wasPayCalled = false;
180: 
181:     public function __destruct()
182:     {
183:         if ($this->_saveBeforeDestruct) {
184:             $this->save();
185:         }
186:     }
187: 
188:     /**
189:      * Initialize invoice resource model
190:      */
191:     protected function _construct()
192:     {
193:         $this->_init('sales/order_invoice');
194:     }
195: 
196:     /**
197:      * Init mapping array of short fields to its full names
198:      *
199:      * @return Mage_Sales_Model_Order_Invoice
200:      */
201:     protected function _initOldFieldsMap()
202:     {
203:         $this->_oldFieldsMap = Mage::helper('sales')->getOldFieldMap('order_invoice');
204:         return $this;
205:     }
206: 
207:     /**
208:      * Load invoice by increment id
209:      *
210:      * @param string $incrementId
211:      * @return Mage_Sales_Model_Order_Invoice
212:      */
213:     public function loadByIncrementId($incrementId)
214:     {
215:         $ids = $this->getCollection()
216:             ->addAttributeToFilter('increment_id', $incrementId)
217:             ->getAllIds();
218: 
219:         if (!empty($ids)) {
220:             reset($ids);
221:             $this->load(current($ids));
222:         }
223:         return $this;
224:     }
225: 
226:     /**
227:      * Retrieve invoice configuration model
228:      *
229:      * @return Mage_Sales_Model_Order_Invoice_Config
230:      */
231:     public function getConfig()
232:     {
233:         return Mage::getSingleton('sales/order_invoice_config');
234:     }
235: 
236:     /**
237:      * Retrieve store model instance
238:      *
239:      * @return Mage_Core_Model_Store
240:      */
241:     public function getStore()
242:     {
243:         return $this->getOrder()->getStore();
244:     }
245: 
246:     /**
247:      * Declare order for invoice
248:      *
249:      * @param   Mage_Sales_Model_Order $order
250:      * @return  Mage_Sales_Model_Order_Invoice
251:      */
252:     public function setOrder(Mage_Sales_Model_Order $order)
253:     {
254:         $this->_order = $order;
255:         $this->setOrderId($order->getId())
256:             ->setStoreId($order->getStoreId());
257:         return $this;
258:     }
259: 
260:     /**
261:      * Retrieve the order the invoice for created for
262:      *
263:      * @return Mage_Sales_Model_Order
264:      */
265:     public function getOrder()
266:     {
267:         if (!$this->_order instanceof Mage_Sales_Model_Order) {
268:             $this->_order = Mage::getModel('sales/order')->load($this->getOrderId());
269:         }
270:         return $this->_order->setHistoryEntityName(self::HISTORY_ENTITY_NAME);
271:     }
272: 
273:     /**
274:      * Retrieve the increment_id of the order
275:      *
276:      * @return string
277:      */
278:     public function getOrderIncrementId()
279:     {
280:         return Mage::getModel('sales/order')->getResource()->getIncrementId($this->getOrderId());
281:     }
282: 
283:     /**
284:      * Retrieve billing address
285:      *
286:      * @return Mage_Sales_Model_Order_Address
287:      */
288:     public function getBillingAddress()
289:     {
290:         return $this->getOrder()->getBillingAddress();
291:     }
292: 
293:     /**
294:      * Retrieve shipping address
295:      *
296:      * @return Mage_Sales_Model_Order_Address
297:      */
298:     public function getShippingAddress()
299:     {
300:         return $this->getOrder()->getShippingAddress();
301:     }
302: 
303:     /**
304:      * Check invoice cancel state
305:      *
306:      * @return bool
307:      */
308:     public function isCanceled()
309:     {
310:         return $this->getState() == self::STATE_CANCELED;
311:     }
312: 
313:     /**
314:      * Check invice capture action availability
315:      *
316:      * @return bool
317:      */
318:     public function canCapture()
319:     {
320:         return $this->getState() != self::STATE_CANCELED
321:             && $this->getState() != self::STATE_PAID
322:             && $this->getOrder()->getPayment()->canCapture();
323:     }
324: 
325:     /**
326:      * Check invice void action availability
327:      *
328:      * @return bool
329:      */
330:     public function canVoid()
331:     {
332:         $canVoid = false;
333:         if ($this->getState() == self::STATE_PAID) {
334:             $canVoid = $this->getCanVoidFlag();
335:             /**
336:              * If we not retrieve negative answer from payment yet
337:              */
338:             if (is_null($canVoid)) {
339:                 $canVoid = $this->getOrder()->getPayment()->canVoid($this);
340:                 if ($canVoid === false) {
341:                     $this->setCanVoidFlag(false);
342:                     $this->_saveBeforeDestruct = true;
343:                 }
344:             }
345:             else {
346:                 $canVoid = (bool) $canVoid;
347:             }
348:         }
349:         return $canVoid;
350:     }
351: 
352:     /**
353:      * Check invoice cancel action availability
354:      *
355:      * @return bool
356:      */
357:     public function canCancel()
358:     {
359:         return $this->getState() == self::STATE_OPEN;
360:     }
361: 
362:     /**
363:      * Check invoice refund action availability
364:      *
365:      * @return bool
366:      */
367:     public function canRefund()
368:     {
369:         if ($this->getState() != self::STATE_PAID) {
370:             return false;
371:         }
372:         if (abs($this->getBaseGrandTotal() - $this->getBaseTotalRefunded()) < .0001) {
373:             return false;
374:         }
375:         return true;
376:     }
377: 
378:     /**
379:      * Capture invoice
380:      *
381:      * @return Mage_Sales_Model_Order_Invoice
382:      */
383:     public function capture()
384:     {
385:         $this->getOrder()->getPayment()->capture($this);
386:         if ($this->getIsPaid()) {
387:             $this->pay();
388:         }
389:         return $this;
390:     }
391: 
392:     /**
393:      * Pay invoice
394:      *
395:      * @return Mage_Sales_Model_Order_Invoice
396:      */
397:     public function pay()
398:     {
399:         if ($this->_wasPayCalled) {
400:             return $this;
401:         }
402:         $this->_wasPayCalled = true;
403: 
404:         $invoiceState = self::STATE_PAID;
405:         if ($this->getOrder()->getPayment()->hasForcedState()) {
406:             $invoiceState = $this->getOrder()->getPayment()->getForcedState();
407:         }
408: 
409:         $this->setState($invoiceState);
410: 
411:         $this->getOrder()->getPayment()->pay($this);
412:         $this->getOrder()->setTotalPaid(
413:             $this->getOrder()->getTotalPaid()+$this->getGrandTotal()
414:         );
415:         $this->getOrder()->setBaseTotalPaid(
416:             $this->getOrder()->getBaseTotalPaid()+$this->getBaseGrandTotal()
417:         );
418:         Mage::dispatchEvent('sales_order_invoice_pay', array($this->_eventObject=>$this));
419:         return $this;
420:     }
421: 
422:     /**
423:      * Whether pay() method was called (whether order and payment totals were updated)
424:      * @return bool
425:      */
426:     public function wasPayCalled()
427:     {
428:         return $this->_wasPayCalled;
429:     }
430: 
431:     /**
432:      * Void invoice
433:      *
434:      * @return Mage_Sales_Model_Order_Invoice
435:      */
436:     public function void()
437:     {
438:         $this->getOrder()->getPayment()->void($this);
439:         $this->cancel();
440:         return $this;
441:     }
442: 
443:     /**
444:      * Cancel invoice action
445:      *
446:      * @return Mage_Sales_Model_Order_Invoice
447:      */
448:     public function cancel()
449:     {
450:         $order = $this->getOrder();
451:         $order->getPayment()->cancelInvoice($this);
452:         foreach ($this->getAllItems() as $item) {
453:             $item->cancel();
454:         }
455: 
456:         /**
457:          * Unregister order totals only for invoices in state PAID
458:          */
459:         $order->setTotalInvoiced($order->getTotalInvoiced() - $this->getGrandTotal());
460:         $order->setBaseTotalInvoiced($order->getBaseTotalInvoiced() - $this->getBaseGrandTotal());
461: 
462:         $order->setSubtotalInvoiced($order->getSubtotalInvoiced() - $this->getSubtotal());
463:         $order->setBaseSubtotalInvoiced($order->getBaseSubtotalInvoiced() - $this->getBaseSubtotal());
464: 
465:         $order->setTaxInvoiced($order->getTaxInvoiced() - $this->getTaxAmount());
466:         $order->setBaseTaxInvoiced($order->getBaseTaxInvoiced() - $this->getBaseTaxAmount());
467: 
468:         $order->setHiddenTaxInvoiced($order->getHiddenTaxInvoiced() - $this->getHiddenTaxAmount());
469:         $order->setBaseHiddenTaxInvoiced($order->getBaseHiddenTaxInvoiced() - $this->getBaseHiddenTaxAmount());
470: 
471:         $order->setShippingTaxInvoiced($order->getShippingTaxInvoiced() - $this->getShippingTaxAmount());
472:         $order->setBaseShippingTaxInvoiced($order->getBaseShippingTaxInvoiced() - $this->getBaseShippingTaxAmount());
473: 
474:         $order->setShippingInvoiced($order->getShippingInvoiced() - $this->getShippingAmount());
475:         $order->setBaseShippingInvoiced($order->getBaseShippingInvoiced() - $this->getBaseShippingAmount());
476: 
477:         $order->setDiscountInvoiced($order->getDiscountInvoiced() - $this->getDiscountAmount());
478:         $order->setBaseDiscountInvoiced($order->getBaseDiscountInvoiced() - $this->getBaseDiscountAmount());
479:         $order->setBaseTotalInvoicedCost($order->getBaseTotalInvoicedCost() - $this->getBaseCost());
480: 
481: 
482:         if ($this->getState() == self::STATE_PAID) {
483:             $this->getOrder()->setTotalPaid($this->getOrder()->getTotalPaid()-$this->getGrandTotal());
484:             $this->getOrder()->setBaseTotalPaid($this->getOrder()->getBaseTotalPaid()-$this->getBaseGrandTotal());
485:         }
486:         $this->setState(self::STATE_CANCELED);
487:         $this->getOrder()->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
488:         Mage::dispatchEvent('sales_order_invoice_cancel', array($this->_eventObject=>$this));
489:         return $this;
490:     }
491: 
492:     /**
493:      * Invoice totals collecting
494:      *
495:      * @return Mage_Sales_Model_Order_Invoice
496:      */
497:     public function collectTotals()
498:     {
499:         foreach ($this->getConfig()->getTotalModels() as $model) {
500:             $model->collect($this);
501:         }
502:         return $this;
503:     }
504: 
505:     /**
506:      * Round price considering delta
507:      *
508:      * @param float $price
509:      * @param string $type
510:      * @param bool $negative Indicates if we perform addition (true) or subtraction (false) of rounded value
511:      * @return float
512:      */
513:     public function roundPrice($price, $type = 'regular', $negative = false)
514:     {
515:         if ($price) {
516:             if (!isset($this->_rounders[$type])) {
517:                 $this->_rounders[$type] = Mage::getModel('core/calculator', $this->getStore());
518:             }
519:             $price = $this->_rounders[$type]->deltaRound($price, $negative);
520:         }
521:         return $price;
522:     }
523: 
524:     /**
525:      * Get invoice items collection
526:      *
527:      * @return Mage_Sales_Model_Mysql4_Order_Invoice_Item_Collection
528:      */
529:     public function getItemsCollection()
530:     {
531:         if (empty($this->_items)) {
532:             $this->_items = Mage::getResourceModel('sales/order_invoice_item_collection')
533:                 ->setInvoiceFilter($this->getId());
534: 
535:             if ($this->getId()) {
536:                 foreach ($this->_items as $item) {
537:                     $item->setInvoice($this);
538:                 }
539:             }
540:         }
541:         return $this->_items;
542:     }
543: 
544:     public function getAllItems()
545:     {
546:         $items = array();
547:         foreach ($this->getItemsCollection() as $item) {
548:             if (!$item->isDeleted()) {
549:                 $items[] =  $item;
550:             }
551:         }
552:         return $items;
553:     }
554: 
555:     public function getItemById($itemId)
556:     {
557:         foreach ($this->getItemsCollection() as $item) {
558:             if ($item->getId()==$itemId) {
559:                 return $item;
560:             }
561:         }
562:         return false;
563:     }
564: 
565:     public function addItem(Mage_Sales_Model_Order_Invoice_Item $item)
566:     {
567:         $item->setInvoice($this)
568:             ->setParentId($this->getId())
569:             ->setStoreId($this->getStoreId());
570: 
571:         if (!$item->getId()) {
572:             $this->getItemsCollection()->addItem($item);
573:         }
574:         return $this;
575:     }
576: 
577:     /**
578:      * Retrieve invoice states array
579:      *
580:      * @return array
581:      */
582:     public static function getStates()
583:     {
584:         if (is_null(self::$_states)) {
585:             self::$_states = array(
586:                 self::STATE_OPEN       => Mage::helper('sales')->__('Pending'),
587:                 self::STATE_PAID       => Mage::helper('sales')->__('Paid'),
588:                 self::STATE_CANCELED   => Mage::helper('sales')->__('Canceled'),
589:             );
590:         }
591:         return self::$_states;
592:     }
593: 
594:     /**
595:      * Retrieve invoice state name by state identifier
596:      *
597:      * @param   int $stateId
598:      * @return  string
599:      */
600:     public function getStateName($stateId = null)
601:     {
602:         if (is_null($stateId)) {
603:             $stateId = $this->getState();
604:         }
605: 
606:         if (is_null(self::$_states)) {
607:             self::getStates();
608:         }
609:         if (isset(self::$_states[$stateId])) {
610:             return self::$_states[$stateId];
611:         }
612:         return Mage::helper('sales')->__('Unknown State');
613:     }
614: 
615:     /**
616:      * Register invoice
617:      *
618:      * Apply to order, order items etc.
619:      *
620:      * @return unknown
621:      */
622:     public function register()
623:     {
624:         if ($this->getId()) {
625:             Mage::throwException(Mage::helper('sales')->__('Cannot register existing invoice'));
626:         }
627: 
628:         foreach ($this->getAllItems() as $item) {
629:             if ($item->getQty()>0) {
630:                 $item->register();
631:             }
632:             else {
633:                 $item->isDeleted(true);
634:             }
635:         }
636: 
637:         $order = $this->getOrder();
638:         $captureCase = $this->getRequestedCaptureCase();
639:         if ($this->canCapture()) {
640:             if ($captureCase) {
641:                 if ($captureCase == self::CAPTURE_ONLINE) {
642:                     $this->capture();
643:                 }
644:                 elseif ($captureCase == self::CAPTURE_OFFLINE) {
645:                     $this->setCanVoidFlag(false);
646:                     $this->pay();
647:                 }
648:             }
649:         } elseif(!$order->getPayment()->getMethodInstance()->isGateway() || $captureCase == self::CAPTURE_OFFLINE) {
650:             if (!$order->getPayment()->getIsTransactionPending()) {
651:                 $this->setCanVoidFlag(false);
652:                 $this->pay();
653:             }
654:         }
655: 
656:         $order->setTotalInvoiced($order->getTotalInvoiced() + $this->getGrandTotal());
657:         $order->setBaseTotalInvoiced($order->getBaseTotalInvoiced() + $this->getBaseGrandTotal());
658: 
659:         $order->setSubtotalInvoiced($order->getSubtotalInvoiced() + $this->getSubtotal());
660:         $order->setBaseSubtotalInvoiced($order->getBaseSubtotalInvoiced() + $this->getBaseSubtotal());
661: 
662:         $order->setTaxInvoiced($order->getTaxInvoiced() + $this->getTaxAmount());
663:         $order->setBaseTaxInvoiced($order->getBaseTaxInvoiced() + $this->getBaseTaxAmount());
664: 
665:         $order->setHiddenTaxInvoiced($order->getHiddenTaxInvoiced() + $this->getHiddenTaxAmount());
666:         $order->setBaseHiddenTaxInvoiced($order->getBaseHiddenTaxInvoiced() + $this->getBaseHiddenTaxAmount());
667: 
668:         $order->setShippingTaxInvoiced($order->getShippingTaxInvoiced() + $this->getShippingTaxAmount());
669:         $order->setBaseShippingTaxInvoiced($order->getBaseShippingTaxInvoiced() + $this->getBaseShippingTaxAmount());
670: 
671: 
672:         $order->setShippingInvoiced($order->getShippingInvoiced() + $this->getShippingAmount());
673:         $order->setBaseShippingInvoiced($order->getBaseShippingInvoiced() + $this->getBaseShippingAmount());
674: 
675:         $order->setDiscountInvoiced($order->getDiscountInvoiced() + $this->getDiscountAmount());
676:         $order->setBaseDiscountInvoiced($order->getBaseDiscountInvoiced() + $this->getBaseDiscountAmount());
677:         $order->setBaseTotalInvoicedCost($order->getBaseTotalInvoicedCost() + $this->getBaseCost());
678: 
679:         $state = $this->getState();
680:         if (is_null($state)) {
681:             $this->setState(self::STATE_OPEN);
682:         }
683: 
684:         Mage::dispatchEvent('sales_order_invoice_register', array($this->_eventObject=>$this, 'order' => $order));
685:         return $this;
686:     }
687: 
688:     /**
689:      * Checking if the invoice is last
690:      *
691:      * @return bool
692:      */
693:     public function isLast()
694:     {
695:         foreach ($this->getAllItems() as $item) {
696:             if (!$item->isLast()) {
697:                 return false;
698:             }
699:         }
700:         return true;
701:     }
702: 
703:     /**
704:      * Adds comment to invoice with additional possibility to send it to customer via email
705:      * and show it in customer account
706:      *
707:      * @param bool $notify
708:      * @param bool $visibleOnFront
709:      *
710:      * @return Mage_Sales_Model_Order_Invoice
711:      */
712:     public function addComment($comment, $notify=false, $visibleOnFront=false)
713:     {
714:         if (!($comment instanceof Mage_Sales_Model_Order_Invoice_Comment)) {
715:             $comment = Mage::getModel('sales/order_invoice_comment')
716:                 ->setComment($comment)
717:                 ->setIsCustomerNotified($notify)
718:                 ->setIsVisibleOnFront($visibleOnFront);
719:         }
720:         $comment->setInvoice($this)
721:             ->setStoreId($this->getStoreId())
722:             ->setParentId($this->getId());
723:         if (!$comment->getId()) {
724:             $this->getCommentsCollection()->addItem($comment);
725:         }
726:         $this->_hasDataChanges = true;
727:         return $this;
728:     }
729: 
730:     public function getCommentsCollection($reload=false)
731:     {
732:         if (is_null($this->_comments) || $reload) {
733:             $this->_comments = Mage::getResourceModel('sales/order_invoice_comment_collection')
734:                 ->setInvoiceFilter($this->getId())
735:                 ->setCreatedAtOrder();
736:             /**
737:              * When invoice created with adding comment, comments collection
738:              * must be loaded before we added this comment.
739:              */
740:             $this->_comments->load();
741: 
742:             if ($this->getId()) {
743:                 foreach ($this->_comments as $comment) {
744:                     $comment->setInvoice($this);
745:                 }
746:             }
747:         }
748:         return $this->_comments;
749:     }
750: 
751:     /**
752:      * Send email with invoice data
753:      *
754:      * @param boolean $notifyCustomer
755:      * @param string $comment
756:      * @return Mage_Sales_Model_Order_Invoice
757:      */
758:     public function sendEmail($notifyCustomer = true, $comment = '')
759:     {
760:         $order = $this->getOrder();
761:         $storeId = $order->getStore()->getId();
762: 
763:         if (!Mage::helper('sales')->canSendNewInvoiceEmail($storeId)) {
764:             return $this;
765:         }
766:         // Get the destination email addresses to send copies to
767:         $copyTo = $this->_getEmails(self::XML_PATH_EMAIL_COPY_TO);
768:         $copyMethod = Mage::getStoreConfig(self::XML_PATH_EMAIL_COPY_METHOD, $storeId);
769:         // Check if at least one recepient is found
770:         if (!$notifyCustomer && !$copyTo) {
771:             return $this;
772:         }
773: 
774:         // Start store emulation process
775:         $appEmulation = Mage::getSingleton('core/app_emulation');
776:         $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
777: 
778:         try {
779:             // Retrieve specified view block from appropriate design package (depends on emulated store)
780:             $paymentBlock = Mage::helper('payment')->getInfoBlock($order->getPayment())
781:                 ->setIsSecureMode(true);
782:             $paymentBlock->getMethod()->setStore($storeId);
783:             $paymentBlockHtml = $paymentBlock->toHtml();
784:         } catch (Exception $exception) {
785:             // Stop store emulation process
786:             $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
787:             throw $exception;
788:         }
789: 
790:         // Stop store emulation process
791:         $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
792: 
793:         // Retrieve corresponding email template id and customer name
794:         if ($order->getCustomerIsGuest()) {
795:             $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_GUEST_TEMPLATE, $storeId);
796:             $customerName = $order->getBillingAddress()->getName();
797:         } else {
798:             $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE, $storeId);
799:             $customerName = $order->getCustomerName();
800:         }
801: 
802:         $mailer = Mage::getModel('core/email_template_mailer');
803:         if ($notifyCustomer) {
804:             $emailInfo = Mage::getModel('core/email_info');
805:             $emailInfo->addTo($order->getCustomerEmail(), $customerName);
806:             if ($copyTo && $copyMethod == 'bcc') {
807:                 // Add bcc to customer email
808:                 foreach ($copyTo as $email) {
809:                     $emailInfo->addBcc($email);
810:                 }
811:             }
812:             $mailer->addEmailInfo($emailInfo);
813:         }
814: 
815:         // Email copies are sent as separated emails if their copy method is 'copy' or a customer should not be notified
816:         if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) {
817:             foreach ($copyTo as $email) {
818:                 $emailInfo = Mage::getModel('core/email_info');
819:                 $emailInfo->addTo($email);
820:                 $mailer->addEmailInfo($emailInfo);
821:             }
822:         }
823: 
824:         // Set all required params and send emails
825:         $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_EMAIL_IDENTITY, $storeId));
826:         $mailer->setStoreId($storeId);
827:         $mailer->setTemplateId($templateId);
828:         $mailer->setTemplateParams(array(
829:                 'order'        => $order,
830:                 'invoice'      => $this,
831:                 'comment'      => $comment,
832:                 'billing'      => $order->getBillingAddress(),
833:                 'payment_html' => $paymentBlockHtml
834:             )
835:         );
836:         $mailer->send();
837:         $this->setEmailSent(true);
838:         $this->_getResource()->saveAttribute($this, 'email_sent');
839: 
840:         return $this;
841:     }
842: 
843:     /**
844:      * Send email with invoice update information
845:      *
846:      * @param boolean $notifyCustomer
847:      * @param string $comment
848:      * @return Mage_Sales_Model_Order_Invoice
849:      */
850:     public function sendUpdateEmail($notifyCustomer = true, $comment = '')
851:     {
852:         $order = $this->getOrder();
853:         $storeId = $order->getStore()->getId();
854: 
855:         if (!Mage::helper('sales')->canSendInvoiceCommentEmail($storeId)) {
856:             return $this;
857:         }
858:         // Get the destination email addresses to send copies to
859:         $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO);
860:         $copyMethod = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, $storeId);
861:         // Check if at least one recepient is found
862:         if (!$notifyCustomer && !$copyTo) {
863:             return $this;
864:         }
865: 
866:         // Retrieve corresponding email template id and customer name
867:         if ($order->getCustomerIsGuest()) {
868:             $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, $storeId);
869:             $customerName = $order->getBillingAddress()->getName();
870:         } else {
871:             $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, $storeId);
872:             $customerName = $order->getCustomerName();
873:         }
874: 
875:         $mailer = Mage::getModel('core/email_template_mailer');
876:         if ($notifyCustomer) {
877:             $emailInfo = Mage::getModel('core/email_info');
878:             $emailInfo->addTo($order->getCustomerEmail(), $customerName);
879:             if ($copyTo && $copyMethod == 'bcc') {
880:                 // Add bcc to customer email
881:                 foreach ($copyTo as $email) {
882:                     $emailInfo->addBcc($email);
883:                 }
884:             }
885:             $mailer->addEmailInfo($emailInfo);
886:         }
887: 
888:         // Email copies are sent as separated emails if their copy method is 'copy' or a customer should not be notified
889:         if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) {
890:             foreach ($copyTo as $email) {
891:                 $emailInfo = Mage::getModel('core/email_info');
892:                 $emailInfo->addTo($email);
893:                 $mailer->addEmailInfo($emailInfo);
894:             }
895:         }
896: 
897:         // Set all required params and send emails
898:         $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_IDENTITY, $storeId));
899:         $mailer->setStoreId($storeId);
900:         $mailer->setTemplateId($templateId);
901:         $mailer->setTemplateParams(array(
902:                 'order'        => $order,
903:                 'invoice'      => $this,
904:                 'comment'      => $comment,
905:                 'billing'      => $order->getBillingAddress()
906:             )
907:         );
908:         $mailer->send();
909: 
910:         return $this;
911:     }
912: 
913:     protected function _getEmails($configPath)
914:     {
915:         $data = Mage::getStoreConfig($configPath, $this->getStoreId());
916:         if (!empty($data)) {
917:             return explode(',', $data);
918:         }
919:         return false;
920:     }
921: 
922:     protected function _beforeDelete()
923:     {
924:         $this->_protectFromNonAdmin();
925:         return parent::_beforeDelete();
926:     }
927: 
928:     /**
929:      * Reset invoice object
930:      *
931:      * @return Mage_Sales_Model_Order_Invoice
932:      */
933:     public function reset()
934:     {
935:         $this->unsetData();
936:         $this->_origData = null;
937:         $this->_items = null;
938:         $this->_comments = null;
939:         $this->_order = null;
940:         $this->_saveBeforeDestruct = false;
941:         $this->_wasPayCalled = false;
942:         return $this;
943:     }
944: 
945:     /**
946:      * Before object save manipulations
947:      *
948:      * @return Mage_Sales_Model_Order_Shipment
949:      */
950:     protected function _beforeSave()
951:     {
952:         parent::_beforeSave();
953: 
954:         if (!$this->getOrderId() && $this->getOrder()) {
955:             $this->setOrderId($this->getOrder()->getId());
956:             $this->setBillingAddressId($this->getOrder()->getBillingAddress()->getId());
957:         }
958: 
959:         return $this;
960:     }
961: 
962:     /**
963:      * After object save manipulation
964:      *
965:      * @return Mage_Sales_Model_Order_Shipment
966:      */
967:     protected function _afterSave()
968:     {
969: 
970:         if (null !== $this->_items) {
971:             /**
972:              * Save invoice items
973:              */
974:             foreach ($this->_items as $item) {
975:                 $item->setOrderItem($item->getOrderItem());
976:                 $item->save();
977:             }
978:         }
979: 
980:         if (null !== $this->_comments) {
981:             foreach($this->_comments as $comment) {
982:                 $comment->save();
983:             }
984:         }
985: 
986:         return parent::_afterSave();
987:     }
988: }
989: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0