コード例 #1
0
 /**
  * @deprecated		Use QuickBooks_XML::extractTagContents() instead
  */
 protected static function _extractTagContents($tag, $data)
 {
     $tmp = QuickBooks_XML::extractTagContents($tag, $data);
     return $tmp;
 }
コード例 #2
0
ファイル: IPP.php プロジェクト: rnewton/quickbooks-php
 /**
  * 
  */
 protected function _hasErrors($response)
 {
     // @todo This should first check for HTTP errors
     // ...
     // v3 errors
     if (false !== strpos($response, '<Error')) {
         $errcode = QuickBooks_XML::extractTagAttribute('code', $response);
         $errtext = QuickBooks_XML::extractTagContents('Message', $response);
         $errdetail = QuickBooks_XML::extractTagContents('Detail', $response);
         $this->_setError($errcode, $errtext, $errdetail);
         return true;
         // Yes, there's an error!
     } else {
         // Check for generic IPP XML node errors
         $errcode = QuickBooks_XML::extractTagContents('errcode', $response);
         $errtext = QuickBooks_XML::extractTagContents('errtext', $response);
         $errdetail = QuickBooks_XML::extractTagContents('errdetail', $response);
         if ($errcode != QuickBooks_IPP::OK) {
             // Has errors!
             $this->_setError($errcode, $errtext, $errdetail);
             return true;
         }
         // Check for IDS XML error codes
         $errorcode = QuickBooks_XML::extractTagContents('ErrorCode', $response);
         $errordesc = QuickBooks_XML::extractTagContents('ErrorDesc', $response);
         if ($errorcode) {
             $this->_setError($errorcode, $errordesc);
             return true;
         }
         // Does not have any errors
         return false;
     }
 }
コード例 #3
0
ファイル: Parser.php プロジェクト: scragz/quickbooks-php
 protected function _parseIDS_v3($xml, $optype, $flavor, $version, &$xml_errnum, &$xml_errmsg, &$err_code, &$err_desc, &$err_db)
 {
     /*
     if ($optype == QuickBooks_IPP_IDS::OPTYPE_ENTITLEMENTS)
     {
     	$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><EntitlementsResponse><QboCompany>true</QboCompany><PlanName>QBWEBVAR1MO</PlanName><MaxUsers>3</MaxUsers><CurrentUsers>1</CurrentUsers><DaysRemainingTrial>0</DaysRemainingTrial><Entitlement id="7"><name>PayPal</name><term>Off</term></Entitlement><Entitlement id="8"><name>Merchant Service</name><term>Off</term></Entitlement><Entitlement id="50"><name>Adjusted Trial Balance Report</name><term>Off</term></Entitlement><Entitlement id="51"><name>Adjusting Journal Entries</name><term>Off</term></Entitlement><Entitlement id="52"><name>Accountant Menu</name><term>Off</term></Entitlement><Entitlement id="53"><name>Reconciliation Troubleshooting</name><term>Off</term></Entitlement><Entitlement id="54"><name>Reclassify Transactions</name><term>Off</term></Entitlement><Entitlement id="55"><name>Write Off Invoices</name><term>Off</term></Entitlement><Entitlement id="1"><name>Class Tracking</name><term>Off</term></Entitlement><Entitlement id="3"><name>Expense Tracking by Customer</name><term>Off</term></Entitlement><Entitlement id="4"><name>Time Tracking</name><term>Off</term></Entitlement><Entitlement id="5"><name>Budgets</name><term>Off</term></Entitlement><Entitlement id="6"><name>Custom Invoice Styles</name><term>On</term></Entitlement><Entitlement id="9"><name>1099 Forms for Vendors</name><term>Off</term></Entitlement><Entitlement id="10"><name>Managing Bills to Pay Later</name><term>On</term></Entitlement><Entitlement id="11"><name>Complete Set of Reports</name><term>On</term></Entitlement><Entitlement id="12"><name>Enhanced Reporting</name><term>On</term></Entitlement><Entitlement id="13"><name>Exporting to Excel</name><term>On</term></Entitlement><Entitlement id="15"><name>Delayed Charges</name><term>On</term></Entitlement><Entitlement id="16"><name>Custom Sales Fields</name><term>On</term></Entitlement><Entitlement id="17"><name>More Users -- up to 20</name><term>On</term></Entitlement><Entitlement id="19"><name>Recurring Transactions</name><term>On</term></Entitlement><Entitlement id="20"><name>Closing the Books</name><term>On</term></Entitlement><Entitlement id="21"><name>Location Tracking</name><term>Off</term></Entitlement><Entitlement id="22"><name>More Names</name><term>On</term></Entitlement><Entitlement id="25"><name>Custom Home Page</name><term>On</term></Entitlement><Entitlement id="26"><name>Do-it-yourself Payroll</name><term>Off</term></Entitlement><Entitlement id="28"><name>Online Banking</name><term>On</term></Entitlement><Entitlement id="29"><name>Basic Sales</name><term>On</term></Entitlement><Entitlement id="30"><name>Basic Banking</name><term>On</term></Entitlement><Entitlement id="31"><name>Accounting</name><term>On</term></Entitlement><Entitlement id="33"><name>Reports Only User</name><term>Off</term></Entitlement><Entitlement id="35"><name>Estimates</name><term>On</term></Entitlement><Entitlement id="41"><name>Company Snapshot</name><term>On</term></Entitlement><Entitlement id="42"><name>Purchase Order</name><term>Off</term></Entitlement><Entitlement id="43"><name>Inventory</name><term>Off</term></Entitlement><Entitlement id="44"><name>Do-it-yourself Payroll (Paycycle)</name><term>Off</term></Entitlement><Entitlement id="45"><name>Multi-Currency</name><term>On</term></Entitlement><Entitlement id="46"><name>Trends</name><term>On</term></Entitlement><Entitlement id="47"><name>Hide Employee List</name><term>Off</term></Entitlement><Entitlement id="48"><name>Simple Report List</name><term>Off</term></Entitlement><Entitlement id="49"><name>Global Tax Model</name><term>On</term></Entitlement><Entitlement id="56"><name>Text Messaging</name><term>On</term></Entitlement><Entitlement id="58"><name>Vendor Collaboration</name><term>On</term></Entitlement></EntitlementsResponse>';
     }
     */
     // Parse it
     $Parser = new QuickBooks_XML_Parser($xml);
     // Initial to success
     $xml_errnum = QuickBooks_XML::ERROR_OK;
     $err_code = QuickBooks_IPP::ERROR_OK;
     // Try to parse the XML IDS response
     $errnum = QuickBooks_XML::ERROR_OK;
     $errmsg = null;
     if ($Doc = $Parser->parse($errnum, $errmsg)) {
         $Root = $Doc->getRoot();
         switch ($optype) {
             case QuickBooks_IPP_IDS::OPTYPE_ENTITLEMENTS:
                 $e = array('_i' => array(), '_e' => array());
                 $List = $Root->getChildAt('EntitlementsResponse');
                 foreach ($List->children() as $ObjList) {
                     if ($ObjList->name() == 'Entitlement') {
                         $Entitlement = new QuickBooks_IPP_Entitlement($ObjList->getAttribute('id'), $ObjList->getChildDataAt('Entitlement/name'), $ObjList->getChildDataAt('Entitlement/term'));
                         $e['_e'][] = $Entitlement;
                     } else {
                         $e['_i'][$ObjList->name()] = $ObjList->data();
                     }
                 }
                 return $e;
                 break;
             case QuickBooks_IPP_IDS::OPTYPE_CDC:
                 $types = array();
                 $List = $Root->getChildAt('IntuitResponse CDCResponse');
                 foreach ($List->children() as $ObjList) {
                     foreach ($ObjList->children() as $Child) {
                         $type = $Child->name();
                         if (empty($types[$type])) {
                             $types[$type] = array();
                         }
                         $class = 'QuickBooks_IPP_Object_' . $Child->name();
                         $Object = new $class();
                         foreach ($Child->children() as $Data) {
                             $this->_push($Data, $Object);
                         }
                         $types[$type][] = $Object;
                     }
                 }
                 return $types;
                 break;
             case QuickBooks_IPP_IDS::OPTYPE_ADD:
                 // Parse an ADD type response
                 return QuickBooks_IPP_IDS::buildIDType('', QuickBooks_XML::extractTagContents('Id', $xml));
             case QuickBooks_IPP_IDS::OPTYPE_MOD:
                 return true;
                 // If we got this far, it was a success
             // If we got this far, it was a success
             case QuickBooks_IPP_IDS::OPTYPE_QUERY:
                 $list = array();
                 $List = $Root->getChildAt('IntuitResponse QueryResponse');
                 $attrs = $List->attributes();
                 if (!array_key_exists('startPosition', $attrs) and array_key_exists('totalCount', $attrs)) {
                     return $attrs['totalCount'];
                 } else {
                     foreach ($List->children() as $Child) {
                         $class = 'QuickBooks_IPP_Object_' . $Child->name();
                         $Object = new $class();
                         foreach ($Child->children() as $Data) {
                             $this->_push($Data, $Object);
                         }
                         $list[] = $Object;
                     }
                     return $list;
                 }
         }
     } else {
         $xml_errnum = $errnum;
         $xml_errmsg = $errmsg;
         return false;
     }
 }
コード例 #4
0
 public function disconnect($app_username, $app_tenant, $force = false)
 {
     if ($arr = $this->_driver->oauthLoad($this->_key, $app_username, $app_tenant) and strlen($arr['oauth_access_token']) > 0 and strlen($arr['oauth_access_token_secret']) > 0) {
         $arr['oauth_consumer_key'] = $this->_consumer_key;
         $arr['oauth_consumer_secret'] = $this->_consumer_secret;
         $retr = $this->_request(QuickBooks_IPP_OAuth::METHOD_GET, QuickBooks_IPP_IntuitAnywhere::URL_CONNECT_DISCONNECT, array(), $arr['oauth_access_token'], $arr['oauth_access_token_secret']);
         // Extract the error code
         $code = (int) QuickBooks_XML::extractTagContents('ErrorCode', $retr);
         if ($code == 0 or $code == 270 or $force) {
             return $this->_driver->oauthAccessDelete($arr['app_username'], $arr['app_tenant']);
         }
     }
     return false;
 }
コード例 #5
0
 protected function _parseResponse($type, $path, $xml, &$errnum, &$errmsg)
 {
     static $look_trans = array('CreditCardTransID' => null, 'AuthorizationCode' => null, 'AVSStreet' => null, 'AVSZip' => null, 'CardSecurityCodeMatch' => null, 'ClientTransID' => null, 'MerchantAccountNumber' => null, 'ReconBatchID' => null, 'PaymentGroupingCode' => null, 'PaymentStatus' => null, 'TxnAuthorizationTime' => null, 'TxnAuthorizationStamp' => null, 'NetworkName' => null, 'NetworkNumber' => null, 'DebitCardTransID' => null);
     static $look_card = array('MaskedCreditCardNumber' => null, 'ExpirationMonth' => null, 'ExpirationYear' => null, 'NameOnCard' => null, 'CreditCardAddress' => null, 'CreditCardPostalCode' => null);
     if ($type == QuickBooks_MerchantService::TYPE_WALLETADD) {
         // This was a wallet add, return the wallet ID
         return QuickBooks_XML::extractTagContents('WalletEntryID', $xml);
     } else {
         if ($type == QuickBooks_MerchantService::TYPE_WALLETMOD or $type == QuickBooks_MerchantService::TYPE_WALLETDEL) {
             // These just return TRUE or FALSE based on error code
             return true;
         } else {
             if ($type == QuickBooks_MerchantService::TYPE_WALLETQUERY) {
                 // This returns a single credit card object
                 $Parser = new QuickBooks_XML_Parser($xml);
                 if ($Doc = $Parser->parse($errnum, $errmsg)) {
                     $Node = $Doc->getRoot();
                     $card = array();
                     foreach ($look_card as $node => $null) {
                         $card[$node] = $Node->getChildDataAt($path . '/' . $node);
                     }
                     return new QuickBooks_MerchantService_CreditCard($card['NameOnCard'], str_replace('*', 'x', $card['MaskedCreditCardNumber']), $card['ExpirationYear'], $card['ExpirationMonth'], $card['CreditCardAddress'], $card['CreditCardPostalCode']);
                 }
             } else {
                 $Parser = new QuickBooks_XML_Parser($xml);
                 if ($Doc = $Parser->parse($errnum, $errmsg)) {
                     $Node = $Doc->getRoot();
                     $trans = array();
                     foreach ($look_trans as $node => $null) {
                         $trans[$node] = $Node->getChildDataAt($path . '/' . $node);
                     }
                     //
                     if ($trans['DebitCardTransID']) {
                         $trans['CreditCardTransID'] = $trans['DebitCardTransID'];
                     }
                     return new QuickBooks_MerchantService_Transaction($type, $trans['CreditCardTransID'], $trans['ClientTransID'], $trans['AuthorizationCode'], $trans['MerchantAccountNumber'], $trans['ReconBatchID'], $trans['PaymentGroupingCode'], $trans['PaymentStatus'], $trans['TxnAuthorizationTime'], $trans['TxnAuthorizationStamp'], $trans['AVSStreet'], $trans['AVSZip'], $trans['CardSecurityCodeMatch'], $trans['NetworkName'], $trans['NetworkNumber']);
                 }
             }
         }
     }
     return false;
 }
コード例 #6
0
ファイル: Parser.php プロジェクト: djeraseit/quickbooks-php
 protected function _parseIDS_v3($xml, $optype, $flavor, $version, &$xml_errnum, &$xml_errmsg, &$err_code, &$err_desc, &$err_db)
 {
     // Parse it
     $Parser = new QuickBooks_XML_Parser($xml);
     // Initial to success
     $xml_errnum = QuickBooks_XML::ERROR_OK;
     $err_code = QuickBooks_IPP::ERROR_OK;
     // Try to parse the XML IDS response
     $errnum = QuickBooks_XML::ERROR_OK;
     $errmsg = null;
     if ($Doc = $Parser->parse($errnum, $errmsg)) {
         $Root = $Doc->getRoot();
         switch ($optype) {
             case QuickBooks_IPP_IDS::OPTYPE_CDC:
                 $types = array();
                 $List = $Root->getChildAt('IntuitResponse CDCResponse');
                 foreach ($List->children() as $ObjList) {
                     foreach ($ObjList->children() as $Child) {
                         $type = $Child->name();
                         if (empty($types[$type])) {
                             $types[$type] = array();
                         }
                         $class = 'QuickBooks_IPP_Object_' . $Child->name();
                         $Object = new $class();
                         foreach ($Child->children() as $Data) {
                             $this->_push($Data, $Object);
                         }
                         $types[$type][] = $Object;
                     }
                 }
                 return $types;
                 break;
             case QuickBooks_IPP_IDS::OPTYPE_ADD:
                 // Parse an ADD type response
                 return QuickBooks_IPP_IDS::buildIDType('', QuickBooks_XML::extractTagContents('Id', $xml));
             case QuickBooks_IPP_IDS::OPTYPE_MOD:
                 return true;
                 // If we got this far, it was a success
             // If we got this far, it was a success
             case QuickBooks_IPP_IDS::OPTYPE_QUERY:
                 $list = array();
                 $List = $Root->getChildAt('IntuitResponse QueryResponse');
                 $attrs = $List->attributes();
                 if (!array_key_exists('startPosition', $attrs) and array_key_exists('totalCount', $attrs)) {
                     return $attrs['totalCount'];
                 } else {
                     foreach ($List->children() as $Child) {
                         $class = 'QuickBooks_IPP_Object_' . $Child->name();
                         $Object = new $class();
                         foreach ($Child->children() as $Data) {
                             $this->_push($Data, $Object);
                         }
                         $list[] = $Object;
                     }
                     return $list;
                 }
         }
     } else {
         $xml_errnum = $errnum;
         $xml_errmsg = $errmsg;
         return false;
     }
 }
コード例 #7
0
<?php

require_once '../QuickBooks.php';
$data = '<QBXML><something>stuff</something><CustomerQueryRs iteratorRemainingCount="364q34" iteratorID="{1234-1234-1234}">...</CustomerQueryRs></QBXML>';
print 'contents: ' . QuickBooks_XML::extractTagContents('something', $data) . "\n";
print 'attribute: ' . QuickBooks_XML::extractTagAttribute('iteratorRemainingCount', $data) . "\n";
$data = '<CustomerQueryRs iteratorRemainingCount="123" iteratorID="{1234-1234-1234}">';
print 'attribuets: ' . print_r(QuickBooks_XML::extractTagAttributes($data, true), true) . "\n";