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:  * Sales implementation of recurring payment profiles
 29:  * Implements saving and manageing profiles
 30:  *
 31:  * @method Mage_Sales_Model_Resource_Recurring_Profile _getResource()
 32:  * @method Mage_Sales_Model_Resource_Recurring_Profile getResource()
 33:  * @method string getState()
 34:  * @method Mage_Sales_Model_Recurring_Profile setState(string $value)
 35:  * @method int getCustomerId()
 36:  * @method Mage_Sales_Model_Recurring_Profile setCustomerId(int $value)
 37:  * @method int getStoreId()
 38:  * @method Mage_Sales_Model_Recurring_Profile setStoreId(int $value)
 39:  * @method string getMethodCode()
 40:  * @method Mage_Sales_Model_Recurring_Profile setMethodCode(string $value)
 41:  * @method string getCreatedAt()
 42:  * @method Mage_Sales_Model_Recurring_Profile setCreatedAt(string $value)
 43:  * @method string getUpdatedAt()
 44:  * @method Mage_Sales_Model_Recurring_Profile setUpdatedAt(string $value)
 45:  * @method string getReferenceId()
 46:  * @method Mage_Sales_Model_Recurring_Profile setReferenceId(string $value)
 47:  * @method string getSubscriberName()
 48:  * @method Mage_Sales_Model_Recurring_Profile setSubscriberName(string $value)
 49:  * @method string getStartDatetime()
 50:  * @method Mage_Sales_Model_Recurring_Profile setStartDatetime(string $value)
 51:  * @method string getInternalReferenceId()
 52:  * @method Mage_Sales_Model_Recurring_Profile setInternalReferenceId(string $value)
 53:  * @method string getScheduleDescription()
 54:  * @method Mage_Sales_Model_Recurring_Profile setScheduleDescription(string $value)
 55:  * @method int getSuspensionThreshold()
 56:  * @method Mage_Sales_Model_Recurring_Profile setSuspensionThreshold(int $value)
 57:  * @method int getBillFailedLater()
 58:  * @method Mage_Sales_Model_Recurring_Profile setBillFailedLater(int $value)
 59:  * @method string getPeriodUnit()
 60:  * @method Mage_Sales_Model_Recurring_Profile setPeriodUnit(string $value)
 61:  * @method int getPeriodFrequency()
 62:  * @method Mage_Sales_Model_Recurring_Profile setPeriodFrequency(int $value)
 63:  * @method int getPeriodMaxCycles()
 64:  * @method Mage_Sales_Model_Recurring_Profile setPeriodMaxCycles(int $value)
 65:  * @method float getBillingAmount()
 66:  * @method Mage_Sales_Model_Recurring_Profile setBillingAmount(float $value)
 67:  * @method string getTrialPeriodUnit()
 68:  * @method Mage_Sales_Model_Recurring_Profile setTrialPeriodUnit(string $value)
 69:  * @method int getTrialPeriodFrequency()
 70:  * @method Mage_Sales_Model_Recurring_Profile setTrialPeriodFrequency(int $value)
 71:  * @method int getTrialPeriodMaxCycles()
 72:  * @method Mage_Sales_Model_Recurring_Profile setTrialPeriodMaxCycles(int $value)
 73:  * @method float getTrialBillingAmount()
 74:  * @method Mage_Sales_Model_Recurring_Profile setTrialBillingAmount(float $value)
 75:  * @method string getCurrencyCode()
 76:  * @method Mage_Sales_Model_Recurring_Profile setCurrencyCode(string $value)
 77:  * @method float getShippingAmount()
 78:  * @method Mage_Sales_Model_Recurring_Profile setShippingAmount(float $value)
 79:  * @method float getTaxAmount()
 80:  * @method Mage_Sales_Model_Recurring_Profile setTaxAmount(float $value)
 81:  * @method float getInitAmount()
 82:  * @method Mage_Sales_Model_Recurring_Profile setInitAmount(float $value)
 83:  * @method int getInitMayFail()
 84:  * @method Mage_Sales_Model_Recurring_Profile setInitMayFail(int $value)
 85:  * @method string getOrderInfo()
 86:  * @method Mage_Sales_Model_Recurring_Profile setOrderInfo(string $value)
 87:  * @method string getOrderItemInfo()
 88:  * @method Mage_Sales_Model_Recurring_Profile setOrderItemInfo(string $value)
 89:  * @method string getBillingAddressInfo()
 90:  * @method Mage_Sales_Model_Recurring_Profile setBillingAddressInfo(string $value)
 91:  * @method string getShippingAddressInfo()
 92:  * @method Mage_Sales_Model_Recurring_Profile setShippingAddressInfo(string $value)
 93:  * @method string getProfileVendorInfo()
 94:  * @method Mage_Sales_Model_Recurring_Profile setProfileVendorInfo(string $value)
 95:  * @method string getAdditionalInfo()
 96:  * @method Mage_Sales_Model_Recurring_Profile setAdditionalInfo(string $value)
 97:  *
 98:  * @category    Mage
 99:  * @package     Mage_Sales
100:  * @author      Magento Core Team <core@magentocommerce.com>
101:  */
102: class Mage_Sales_Model_Recurring_Profile extends Mage_Payment_Model_Recurring_Profile
103: {
104:     /**
105:      * Available states
106:      *
107:      * @var string
108:      */
109:     const STATE_UNKNOWN   = 'unknown';
110:     const STATE_PENDING   = 'pending';
111:     const STATE_ACTIVE    = 'active';
112:     const STATE_SUSPENDED = 'suspended';
113:     const STATE_CANCELED  = 'canceled';
114:     const STATE_EXPIRED   = 'expired';
115: 
116:     /**
117:      * Payment types
118:      *
119:      * @var string
120:      */
121:     const PAYMENT_TYPE_REGULAR   = 'regular';
122:     const PAYMENT_TYPE_TRIAL     = 'trial';
123:     const PAYMENT_TYPE_INITIAL   = 'initial';
124: 
125:     /**
126:      * Allowed actions matrix
127:      *
128:      * @var array
129:      */
130:     protected $_workflow = null;
131: 
132:     /**
133:      * Load order by system increment identifier
134:      *
135:      * @param string $incrementId
136:      * @return Mage_Sales_Model_Order
137:      */
138:     public function loadByInternalReferenceId($internalReferenceId)
139:     {
140:         return $this->load($internalReferenceId, 'internal_reference_id');
141:     }
142: 
143:     /**
144:      * Submit a recurring profile right after an order is placed
145:      *
146:      */
147:     public function submit()
148:     {
149:         $this->_getResource()->beginTransaction();
150:         try {
151:             $this->setInternalReferenceId(Mage::helper('core')->uniqHash('temporary-'));
152:             $this->save();
153:             $this->setInternalReferenceId(Mage::helper('core')->uniqHash($this->getId() . '-'));
154:             $this->getMethodInstance()->submitRecurringProfile($this, $this->getQuote()->getPayment());
155:             $this->save();
156:             $this->_getResource()->commit();
157:         } catch (Exception $e) {
158:             $this->_getResource()->rollBack();
159:             throw $e;
160:         }
161:     }
162: 
163:     /**
164:      * Activate the suspended profile
165:      */
166:     public function activate()
167:     {
168:         $this->_checkWorkflow(self::STATE_ACTIVE, false);
169:         $this->setNewState(self::STATE_ACTIVE);
170:         $this->getMethodInstance()->updateRecurringProfileStatus($this);
171:         $this->setState(self::STATE_ACTIVE)
172:             ->save();
173:     }
174: 
175:     /**
176:      * Check whether the workflow allows to activate the profile
177:      *
178:      * @return bool
179:      */
180:     public function canActivate()
181:     {
182:         return $this->_checkWorkflow(self::STATE_ACTIVE);
183:     }
184: 
185:     /**
186:      * Suspend active profile
187:      */
188:     public function suspend()
189:     {
190:         $this->_checkWorkflow(self::STATE_SUSPENDED, false);
191:         $this->setNewState(self::STATE_SUSPENDED);
192:         $this->getMethodInstance()->updateRecurringProfileStatus($this);
193:         $this->setState(self::STATE_SUSPENDED)
194:             ->save();
195:     }
196: 
197:     /**
198:      * Check whether the workflow allows to suspend the profile
199:      *
200:      * @return bool
201:      */
202:     public function canSuspend()
203:     {
204:         return $this->_checkWorkflow(self::STATE_SUSPENDED);
205:     }
206: 
207:     /**
208:      * Cancel active or suspended profile
209:      */
210:     public function cancel()
211:     {
212:         $this->_checkWorkflow(self::STATE_CANCELED, false);
213:         $this->setNewState(self::STATE_CANCELED);
214:         $this->getMethodInstance()->updateRecurringProfileStatus($this);
215:         $this->setState(self::STATE_CANCELED)
216:             ->save();
217:     }
218: 
219:     /**
220:      * Check whether the workflow allows to cancel the profile
221:      *
222:      * @return bool
223:      */
224:     public function canCancel()
225:     {
226:         return $this->_checkWorkflow(self::STATE_CANCELED);
227:     }
228: 
229:     public function fetchUpdate()
230:     {
231:         $result = new Varien_Object();
232:         $this->getMethodInstance()->getRecurringProfileDetails($this->getReferenceId(), $result);
233: 
234:         if ($result->getIsProfileActive()) {
235:             $this->setState(self::STATE_ACTIVE);
236:         } elseif ($result->getIsProfilePending()) {
237:             $this->setState(self::STATE_PENDING);
238:         } elseif ($result->getIsProfileCanceled()) {
239:             $this->setState(self::STATE_CANCELED);
240:         } elseif ($result->getIsProfileSuspended()) {
241:             $this->setState(self::STATE_SUSPENDED);
242:         } elseif ($result->getIsProfileExpired()) {
243:             $this->setState(self::STATE_EXPIRED);
244:         }
245:     }
246: 
247:     public function canFetchUpdate()
248:     {
249:         return $this->getMethodInstance()->canGetRecurringProfileDetails();
250:     }
251: //
252: ////    public function billOutstandingAmount($baseAmount, Varien_Object $info = null)
253: ////    {
254: ////
255: ////    }
256: ////
257: ////    public function canBillOutstandingAmount()
258: ////    {
259: ////        // check method instance?
260: ////    }
261: //
262: //    public function processSubmissionNotification(Varien_Object $info)
263: //    {
264: //        // confirmation that this profile was created on the gateway
265: //    }
266: //
267: //    public function processPaymentNotification(Varien_Object $info)
268: //    {
269: //        // create new order basing on original order item and addresses
270: //    }
271: //
272: //    public function processStateNotification(Varien_Object $info)
273: //    {
274: //        // update self state
275: //    }
276: //
277: ////    public function loadByInternalReferenceId($internalReferenceId)
278: ////    {
279: ////
280: ////    }
281: 
282:     /**
283:      * Initialize new order based on profile data
284:      *
285:      * Takes arbitrary number of Varien_Object instances to be treated as items for new order
286:      *
287:      * @return Mage_Sales_Model_Order
288:      */
289:     public function createOrder()
290:     {
291:         $items = array();
292:         $itemInfoObjects = func_get_args();
293: 
294:         $billingAmount = 0;
295:         $shippingAmount = 0;
296:         $taxAmount = 0;
297:         $isVirtual = 1;
298:         $weight = 0;
299:         foreach ($itemInfoObjects as $itemInfo) {
300:             $item = $this->_getItem($itemInfo);
301:             $billingAmount += $item->getPrice();
302:             $shippingAmount += $item->getShippingAmount();
303:             $taxAmount += $item->getTaxAmount();
304:             $weight += $item->getWeight();
305:             if (!$item->getIsVirtual()) {
306:                 $isVirtual = 0;
307:             }
308:             $items[] = $item;
309:         }
310:         $grandTotal = $billingAmount + $shippingAmount + $taxAmount;
311: 
312:         $order = Mage::getModel('sales/order');
313: 
314:         $billingAddress = Mage::getModel('sales/order_address')
315:             ->setData($this->getBillingAddressInfo())
316:             ->setId(null);
317: 
318:         $shippingInfo = $this->getShippingAddressInfo();
319:         $shippingAddress = Mage::getModel('sales/order_address')
320:             ->setData($shippingInfo)
321:             ->setId(null);
322: 
323:         $payment = Mage::getModel('sales/order_payment')
324:             ->setMethod($this->getMethodCode());
325: 
326:         $transferDataKays = array(
327:             'store_id',             'store_name',           'customer_id',          'customer_email',
328:             'customer_firstname',   'customer_lastname',    'customer_middlename',  'customer_prefix',
329:             'customer_suffix',      'customer_taxvat',      'customer_gender',      'customer_is_guest',
330:             'customer_note_notify', 'customer_group_id',    'customer_note',        'shipping_method',
331:             'shipping_description', 'base_currency_code',   'global_currency_code', 'order_currency_code',
332:             'store_currency_code',  'base_to_global_rate',  'base_to_order_rate',   'store_to_base_rate',
333:             'store_to_order_rate'
334:         );
335: 
336:         $orderInfo = $this->getOrderInfo();
337:         foreach ($transferDataKays as $key) {
338:             if (isset($orderInfo[$key])) {
339:                 $order->setData($key, $orderInfo[$key]);
340:             } elseif (isset($shippingInfo[$key])) {
341:                 $order->setData($key, $shippingInfo[$key]);
342:             }
343:         }
344: 
345:         $order->setStoreId($this->getStoreId())
346:             ->setState(Mage_Sales_Model_Order::STATE_NEW)
347:             ->setBaseToOrderRate($this->getInfoValue('order_info', 'base_to_quote_rate'))
348:             ->setStoreToOrderRate($this->getInfoValue('order_info', 'store_to_quote_rate'))
349:             ->setOrderCurrencyCode($this->getInfoValue('order_info', 'quote_currency_code'))
350:             ->setBaseSubtotal($billingAmount)
351:             ->setSubtotal($billingAmount)
352:             ->setBaseShippingAmount($shippingAmount)
353:             ->setShippingAmount($shippingAmount)
354:             ->setBaseTaxAmount($taxAmount)
355:             ->setTaxAmount($taxAmount)
356:             ->setBaseGrandTotal($grandTotal)
357:             ->setGrandTotal($grandTotal)
358:             ->setIsVirtual($isVirtual)
359:             ->setWeight($weight)
360:             ->setTotalQtyOrdered($this->getInfoValue('order_info', 'items_qty'))
361:             ->setBillingAddress($billingAddress)
362:             ->setShippingAddress($shippingAddress)
363:             ->setPayment($payment);
364: 
365:         foreach ($items as $item) {
366:             $order->addItem($item);
367:         }
368: 
369:         return $order;
370:     }
371: 
372:     /**
373:      * Validate states
374:      *
375:      * @return bool
376:      */
377:     public function isValid()
378:     {
379:         parent::isValid();
380: 
381:         // state
382:         if (!in_array($this->getState(), $this->getAllStates(false), true)) {
383:             $this->_errors['state'][] = Mage::helper('sales')->__('Wrong state: "%s".', $this->getState());
384:         }
385: 
386:         return empty($this->_errors);
387:     }
388: 
389:     /**
390:      * Import quote information to the profile
391:      *
392:      * @param Mage_Sales_Model_Quote_ $quote
393:      * @return Mage_Sales_Model_Recurring_Profile
394:      */
395:     public function importQuote(Mage_Sales_Model_Quote $quote)
396:     {
397:         $this->setQuote($quote);
398: 
399:         if ($quote->getPayment() && $quote->getPayment()->getMethod()) {
400:             $this->setMethodInstance($quote->getPayment()->getMethodInstance());
401:         }
402: 
403:         $orderInfo = $quote->getData();
404:         $this->_cleanupArray($orderInfo);
405:         $this->setOrderInfo($orderInfo);
406: 
407:         $addressInfo = $quote->getBillingAddress()->getData();
408:         $this->_cleanupArray($addressInfo);
409:         $this->setBillingAddressInfo($addressInfo);
410:         if (!$quote->isVirtual()) {
411:             $addressInfo = $quote->getShippingAddress()->getData();
412:             $this->_cleanupArray($addressInfo);
413:             $this->setShippingAddressInfo($addressInfo);
414:         }
415: 
416:         $this->setCurrencyCode($quote->getBaseCurrencyCode());
417:         $this->setCustomerId($quote->getCustomerId());
418:         $this->setStoreId($quote->getStoreId());
419: 
420:         return $this;
421:     }
422: 
423:     /**
424:      * Import quote item information to the profile
425:      *
426:      * @param Mage_Sales_Model_Quote_Item_Abstract $item
427:      * @return Mage_Sales_Model_Recurring_Profile
428:      */
429:     public function importQuoteItem(Mage_Sales_Model_Quote_Item_Abstract $item)
430:     {
431:         $this->setQuoteItemInfo($item);
432: 
433:         // TODO: make it abstract from amounts
434:         $this->setBillingAmount($item->getBaseRowTotal())
435:             ->setTaxAmount($item->getBaseTaxAmount())
436:             ->setShippingAmount($item->getBaseShippingAmount())
437:         ;
438:         if (!$this->getScheduleDescription()) {
439:             $this->setScheduleDescription($item->getName());
440:         }
441: 
442:         $orderItemInfo = $item->getData();
443:         $this->_cleanupArray($orderItemInfo);
444: 
445:         $customOptions = $item->getOptionsByCode();
446:         if ($customOptions['info_buyRequest']) {
447:             $orderItemInfo['info_buyRequest'] = $customOptions['info_buyRequest']->getValue();
448:         }
449: 
450:         $this->setOrderItemInfo($orderItemInfo);
451: 
452:         return $this->_filterValues();
453:     }
454: 
455:     /**
456:      * Getter for sales-related field labels
457:      *
458:      * @param string $field
459:      * @return string|null
460:      */
461:     public function getFieldLabel($field)
462:     {
463:         switch ($field) {
464:             case 'order_item_id':
465:                 return Mage::helper('sales')->__('Purchased Item');
466:             case 'state':
467:                 return Mage::helper('sales')->__('Profile State');
468:             case 'created_at':
469:                 return Mage::helper('adminhtml')->__('Created At');
470:             case 'updated_at':
471:                 return Mage::helper('adminhtml')->__('Updated At');
472:             default:
473:                 return parent::getFieldLabel($field);
474:         }
475:     }
476: 
477:     /**
478:      * Getter for sales-related field comments
479:      *
480:      * @param string $field
481:      * @return string|null
482:      */
483:     public function getFieldComment($field)
484:     {
485:         switch ($field) {
486:             case 'order_item_id':
487:                 return Mage::helper('sales')->__('Original order item that recurring payment profile correspondss to.');
488:             default:
489:                 return parent::getFieldComment($field);
490:         }
491:     }
492: 
493:     /**
494:      * Getter for all available states
495:      *
496:      * @param bool $withLabels
497:      * @return array
498:      */
499:     public function getAllStates($withLabels = true)
500:     {
501:         $states = array(self::STATE_UNKNOWN, self::STATE_PENDING, self::STATE_ACTIVE,
502:             self::STATE_SUSPENDED, self::STATE_CANCELED, self::STATE_EXPIRED,
503:         );
504:         if ($withLabels) {
505:             $result = array();
506:             foreach ($states as $state) {
507:                 $result[$state] = $this->getStateLabel($state);
508:             }
509:             return $result;
510:         }
511:         return $states;
512:     }
513: 
514:     /**
515:      * Get state label based on the code
516:      *
517:      * @param string $state
518:      * @return string
519:      */
520:     public function getStateLabel($state)
521:     {
522:         switch ($state) {
523:             case self::STATE_UNKNOWN:   return Mage::helper('sales')->__('Not Initialized');
524:             case self::STATE_PENDING:   return Mage::helper('sales')->__('Pending');
525:             case self::STATE_ACTIVE:    return Mage::helper('sales')->__('Active');
526:             case self::STATE_SUSPENDED: return Mage::helper('sales')->__('Suspended');
527:             case self::STATE_CANCELED:  return Mage::helper('sales')->__('Canceled');
528:             case self::STATE_EXPIRED:   return Mage::helper('sales')->__('Expired');
529:             default: return $state;
530:         }
531:     }
532: 
533:     /**
534:      * Render state as label
535:      *
536:      * @param string $key
537:      * @return mixed
538:      */
539:     public function renderData($key)
540:     {
541:         $value = $this->_getData($key);
542:         switch ($key) {
543:             case 'state':
544:                 return $this->getStateLabel($value);
545:         }
546:         return parent::renderData($key);
547:     }
548: 
549:     /**
550:      * Getter for additional information value
551:      * It is assumed that the specified additional info is an object or associative array
552:      *
553:      * @param string $infoKey
554:      * @param string $infoValueKey
555:      * @return mixed|null
556:      */
557:     public function getInfoValue($infoKey, $infoValueKey)
558:     {
559:         $info = $this->getData($infoKey);
560:         if (!$info) {
561:             return;
562:         }
563:         if (!is_object($info)) {
564:             if (is_array($info) && isset($info[$infoValueKey])) {
565:                 return $info[$infoValueKey];
566:             }
567:         } else {
568:             if ($info instanceof Varien_Object) {
569:                 return $info->getDataUsingMethod($infoValueKey);
570:             } elseif (isset($info->$infoValueKey)) {
571:                 return $info->$infoValueKey;
572:             }
573:         }
574:     }
575: 
576:     /**
577:      * Initialize resource model
578:      */
579:     protected function _construct()
580:     {
581:         $this->_init('sales/recurring_profile');
582:     }
583: 
584:     /**
585:      * Automatically set "unknown" state if not defined
586:      *
587:      * @return Mage_Payment_Model_Recurring_Profile
588:      */
589:     protected function _filterValues()
590:     {
591:         $result = parent::_filterValues();
592: 
593:         if (!$this->getState()) {
594:             $this->setState(self::STATE_UNKNOWN);
595:         }
596: 
597:         return $result;
598:     }
599: 
600:     /**
601:      * Initialize the workflow reference
602:      */
603:     protected function _initWorkflow()
604:     {
605:         if (null === $this->_workflow) {
606:             $this->_workflow = array(
607:                 'unknown'   => array('pending', 'active', 'suspended', 'canceled'),
608:                 'pending'   => array('active', 'canceled'),
609:                 'active'    => array('suspended', 'canceled'),
610:                 'suspended' => array('active', 'canceled'),
611:                 'canceled'  => array(),
612:                 'expired'   => array(),
613:             );
614:         }
615:     }
616: 
617:     /**
618:      * Check whether profile can be changed to specified state
619:      *
620:      * @param string $againstState
621:      * @param bool $soft
622:      * @return bool
623:      * @throws Mage_Core_Exception
624:      */
625:     protected function _checkWorkflow($againstState, $soft = true)
626:     {
627:         $this->_initWorkflow();
628:         $state = $this->getState();
629:         $result = (!empty($this->_workflow[$state])) && in_array($againstState, $this->_workflow[$state]);
630:         if (!$soft && !$result) {
631:             Mage::throwException(
632:                 Mage::helper('sales')->__('This profile state cannot be changed to "%s".', $againstState)
633:             );
634:         }
635:         return $result;
636:     }
637: 
638:     /**
639:      * Return recurring profile child orders Ids
640:      *
641:      * @return array
642:      */
643:     public function getChildOrderIds()
644:     {
645:         $ids = $this->_getResource()->getChildOrderIds($this);
646:         if (empty($ids)){
647:             $ids[] = '-1';
648:         }
649:         return $ids;
650:     }
651: 
652:     /**
653:      * Add order relation to recurring profile
654:      *
655:      * @param int $recurringProfileId
656:      * @return Mage_Sales_Model_Recurring_Profile
657:      */
658:     public function addOrderRelation($orderId)
659:     {
660:         $this->getResource()->addOrderRelation($this->getId(), $orderId);
661:         return $this;
662:     }
663: 
664:     /**
665:      * Create and return new order item based on profile item data and $itemInfo
666:      *
667:      * @param Varien_Object $itemInfo
668:      * @return Mage_Sales_Model_Order_Item
669:      */
670:     protected function _getItem($itemInfo)
671:     {
672:         $paymentType = $itemInfo->getPaymentType();
673:         if (!$paymentType) {
674:             throw new Exception("Recurring profile payment type is not specified.");
675:         }
676: 
677:         switch ($paymentType) {
678:             case self::PAYMENT_TYPE_REGULAR: return $this->_getRegularItem($itemInfo);
679:             case self::PAYMENT_TYPE_TRIAL: return $this->_getTrialItem($itemInfo);
680:             case self::PAYMENT_TYPE_INITIAL: return $this->_getInitialItem($itemInfo);
681:             default: new Exception("Invalid recurring profile payment type '{$paymentType}'.");
682:         }
683:     }
684: 
685:     /**
686:      * Create and return new order item based on profile item data and $itemInfo
687:      * for regular payment
688:      *
689:      * @param Varien_Object $itemInfo
690:      * @return Mage_Sales_Model_Order_Item
691:      */
692:     protected function _getRegularItem($itemInfo)
693:     {
694:         $price = $itemInfo->getPrice() ? $itemInfo->getPrice() : $this->getBillingAmount();
695:         $shippingAmount = $itemInfo->getShippingAmount() ? $itemInfo->getShippingAmount() : $this->getShippingAmount();
696:         $taxAmount = $itemInfo->getTaxAmount() ? $itemInfo->getTaxAmount() : $this->getTaxAmount();
697: 
698:         $item = Mage::getModel('sales/order_item')
699:             ->setData($this->getOrderItemInfo())
700:             ->setQtyOrdered($this->getInfoValue('order_item_info', 'qty'))
701:             ->setBaseOriginalPrice($this->getInfoValue('order_item_info', 'price'))
702:             ->setPrice($price)
703:             ->setBasePrice($price)
704:             ->setRowTotal($price)
705:             ->setBaseRowTotal($price)
706:             ->setTaxAmount($taxAmount)
707:             ->setShippingAmount($shippingAmount)
708:             ->setId(null);
709:         return $item;
710:     }
711: 
712:     /**
713:      * Create and return new order item based on profile item data and $itemInfo
714:      * for trial payment
715:      *
716:      * @param Varien_Object $itemInfo
717:      * @return Mage_Sales_Model_Order_Item
718:      */
719:     protected function _getTrialItem($itemInfo)
720:     {
721:         $item = $this->_getRegularItem($itemInfo);
722: 
723:         $item->setName(
724:             Mage::helper('sales')->__('Trial ') . $item->getName()
725:         );
726: 
727:         $option = array(
728:             'label' => Mage::helper('sales')->__('Payment type'),
729:             'value' => Mage::helper('sales')->__('Trial period payment')
730:         );
731: 
732:         $this->_addAdditionalOptionToItem($item, $option);
733: 
734:         return $item;
735:     }
736: 
737:     /**
738:      * Create and return new order item based on profile item data and $itemInfo
739:      * for initial payment
740:      *
741:      * @param Varien_Object $itemInfo
742:      * @return Mage_Sales_Model_Order_Item
743:      */
744:     protected function _getInitialItem($itemInfo)
745:     {
746:         $price = $itemInfo->getPrice() ? $itemInfo->getPrice() : $this->getInitAmount();
747:         $shippingAmount = $itemInfo->getShippingAmount() ? $itemInfo->getShippingAmount() : 0;
748:         $taxAmount = $itemInfo->getTaxAmount() ? $itemInfo->getTaxAmount() : 0;
749:         $item = Mage::getModel('sales/order_item')
750:             ->setStoreId($this->getStoreId())
751:             ->setProductType(Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL)
752:             ->setIsVirtual(1)
753:             ->setSku('initial_fee')
754:             ->setName(Mage::helper('sales')->__('Recurring Profile Initial Fee'))
755:             ->setDescription('')
756:             ->setWeight(0)
757:             ->setQtyOrdered(1)
758:             ->setPrice($price)
759:             ->setOriginalPrice($price)
760:             ->setBasePrice($price)
761:             ->setBaseOriginalPrice($price)
762:             ->setRowTotal($price)
763:             ->setBaseRowTotal($price)
764:             ->setTaxAmount($taxAmount)
765:             ->setShippingAmount($shippingAmount);
766: 
767:         $option = array(
768:             'label' => Mage::helper('sales')->__('Payment type'),
769:             'value' => Mage::helper('sales')->__('Initial period payment')
770:         );
771: 
772:         $this->_addAdditionalOptionToItem($item, $option);
773:         return $item;
774:     }
775: 
776:     /**
777:      * Add additional options suboption into itev
778:      *
779:      * @param Mage_Sales_Model_Order_Item $itemInfo
780:      * @param array $option
781:      */
782:     protected function _addAdditionalOptionToItem($item, $option)
783:     {
784:         $options = $item->getProductOptions();
785:         $additionalOptions = $item->getProductOptionByCode('additional_options');
786:         if (is_array($additionalOptions)) {
787:             $additionalOptions[] = $option;
788:         } else {
789:             $additionalOptions = array($option);
790:         }
791:         $options['additional_options'] = $additionalOptions;
792:         $item->setProductOptions($options);
793:     }
794: 
795:     /**
796:      * Recursively cleanup array from objects
797:      *
798:      * @param array &$array
799:      */
800:     private function _cleanupArray(&$array)
801:     {
802:         if (!$array) {
803:             return;
804:         }
805:         foreach ($array as $key => $value) {
806:             if (is_object($value)) {
807:                 unset($array[$key]);
808:             } elseif (is_array($value)) {
809:                 $this->_cleanupArray($array[$key]);
810:             }
811:         }
812:     }
813: }
814: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0