Example #1
0
File: Object.php Project: rme/pm2qb
 /**
  * Convert a QuickBooks_XML_Node object to a QuickBooks_Object_* object instance 
  * 
  * @param QuickBooks_XML_Node $XML
  * @param string $action_or_object
  * @return QuickBooks_Object
  */
 public static function fromXML($XML, $action_or_object = null)
 {
     if (!$action_or_object) {
         $action_or_object = $XML->name();
     }
     $type = QuickBooks_Utilities::actionToObject($action_or_object);
     $class = 'QuickBooks_Object_' . ucfirst(strtolower($type));
     if (class_exists($class)) {
         $Object = QuickBooks_Object::_fromXMLHelper($class, $XML);
         $children = array();
         switch ($Object->object()) {
             case QUICKBOOKS_OBJECT_PURCHASEORDER:
                 $children = array('PurchaseOrderLineRet' => array('QuickBooks_Object_PurchaseOrder_PurchaseOrderLine', 'addPurchaseOrderLine'));
                 break;
             case QUICKBOOKS_OBJECT_INVOICE:
                 $children = array('InvoiceLineRet' => array('QuickBooks_Object_Invoice_InvoiceLine', 'addInvoiceLine'));
                 break;
             case QUICKBOOKS_OBJECT_ESTIMATE:
                 $children = array('EstimateLineRet' => array('QuickBooks_Object_Estimate_EstimateLine', 'addEstimateLine'));
                 break;
             case QUICKBOOKS_OBJECT_SALESRECEIPT:
                 $children = array('SalesReceiptLineRet' => array('QuickBooks_Object_SalesReceipt_SalesReceiptLine', 'addSalesReceiptLine'));
                 break;
             case QUICKBOOKS_OBJECT_JOURNALENTRY:
                 $children = array('JournalCreditLine' => array('QuickBooks_Object_JournalEntry_JournalCreditLine', 'addCreditLine'), 'JournalDebitLine' => array('QuickBooks_Object_JournalEntry_JournalDebitLine', 'addDebitLine'));
                 break;
         }
         foreach ($children as $node => $tmp) {
             $childclass = $tmp[0];
             $childmethod = $tmp[1];
             if (class_exists($childclass)) {
                 foreach ($XML->children() as $ChildXML) {
                     if ($ChildXML->name() == $node) {
                         $ChildObject = QuickBooks_Object::_fromXMLHelper($childclass, $ChildXML);
                         $Object->{$childmethod}($ChildObject);
                     }
                 }
             }
         }
         return $Object;
     }
     return false;
 }