Php 如何使用web连接器从QuickBooks桌面获取每日销售详细信息?

Php 如何使用web连接器从QuickBooks桌面获取每日销售详细信息?,php,report,quickbooks,Php,Report,Quickbooks,我想从Quickbooks桌面获取所有销售数据。我有以下代码 $xml = '<?xml version="1.0" encoding="utf-8"?> <?qbxml version="13.0"?> <QBXML> <QBXMLMsgsRq onError="stopOnError"> <Gener

我想从Quickbooks桌面获取所有销售数据。我有以下代码

$xml = '<?xml version="1.0" encoding="utf-8"?>
                <?qbxml version="13.0"?>
                <QBXML>
                  <QBXMLMsgsRq onError="stopOnError">
                    <GeneralSummaryReportQueryRq  requestID="' . $requestID . '">
                        <GeneralSummaryReportType>SalesByCustomerSummary</GeneralSummaryReportType>

                          <DisplayReport>false</DisplayReport>
                          <ReportPeriod>
                            <FromReportDate>2011-01-01</FromReportDate>
                            <ToReportDate>2017-09-15</ToReportDate>
                          </ReportPeriod>

                        </GeneralSummaryReportQueryRq>
                      </QBXMLMsgsRq>
                    </QBXML>';

    return $xml;
$xml='1!'
顾客销售摘要
假的
2011-01-01
2017-09-15
';
返回$xml;
当我将SalesByCustomerSummary替换为 DailySalesDetail,然后返回错误,我的第二个问题是如何停止web连接器和QuickBook之间的通信,因为它多次插入相同的记录

提前谢谢

-----------代码------------ 我有两个功能:

    public function _quickbooks_import_daily_sale_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale){
    $xml = '<?xml version="1.0" encoding="utf-8"?>
                <?qbxml version="13.0"?>
                <QBXML>
                  <QBXMLMsgsRq onError="stopOnError">
                    <GeneralDetailReportQueryRq>
                        <GeneralDetailReportType>SalesByItemDetail</GeneralDetailReportType>

                          <DisplayReport>false</DisplayReport>
                          <ReportPeriod>
                            <FromReportDate>2011-01-01</FromReportDate>
                            <ToReportDate>2017-09-15</ToReportDate>
                          </ReportPeriod>

                        </GeneralDetailReportQueryRq>
                      </QBXMLMsgsRq>
                    </QBXML>';

    return $xml;
}

public function _quickbooks_import_daily_sale_response($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $xml, $idents)
{   




    $array = array(
                            'text' => $requestID.' <br />'.$xml
                        );
        $this->db->insert('save_response', $array);
//  echo "done";
    return false;
}
public function\u quickbook\u import\u daily\u sale\u request($requestID,$user,$action,$ID,$extra,&$err,$last\u action\u time,$last\u action ident\u time,$version,$locale){
$xml='0
SalesByItemDetail
假的
2011-01-01
2017-09-15
';
返回$xml;
}
公共函数\u quickbooks\u import\u daily\u sale\u response($requestID、$user、$action、$ID、$extra、$err、$last\u action\u time、$last\u ActionIdentit\u time、$xml、$Identits)
{   
$array=array(
“text'=>$requestID.
”。$xml ); $this->db->insert('save_response',$array); //回应“完成”; 返回false; }
---------------排队-----------------------

        //echo (__FILE__); exit;
        $user = $this->config->item('quickbooks_user');
        $pass = $this->config->item('quickbooks_pass');

        // Memory limit
        ini_set('memory_limit', $this->config->item('quickbooks_memorylimit'));

        // We need to make sure the correct timezone is set, or some PHP installations will complain
        if (function_exists('date_default_timezone_set'))
        {
            // * MAKE SURE YOU SET THIS TO THE CORRECT TIMEZONE! *
            // List of valid timezones is here: http://us3.php.net/manual/en/timezones.php
            date_default_timezone_set($this->config->item('quickbooks_tz'));
        }

        // Map QuickBooks actions to handler functions
        $map = array(
            //QUICKBOOKS_IMPORT_CUSTOMER => array( array( $this, '_quickbooks_customer_import_request' ), array( $this, '_quickbooks_customer_import_response' ) ),
            /*QUICKBOOKS_IMPORT_EMPLOYEE => array( array( $this, '_quickbooks_employee_import_request' ), array( $this, '_quickbooks_employee_import_response' ) ),*/
QUICKBOOKS_QUERY_INVOICE => array( array( $this, '_quickbooks_import_daily_sale_request' ), array( $this, '_quickbooks_import_daily_sale_response' ) ),
            //QUICKBOOKS_IMPORT_CUSTOMER => array( '_quickbooks_customer_import_request', '_quickbooks_customer_import_response' ), 
            );

        // Catch all errors that QuickBooks throws with this function 
        $errmap = array(
            '*' => array( $this, '_catchallErrors' ),
            );

        // Call this method whenever the Web Connector connects
        $hooks = array(
            QuickBooks_WebConnector_Handlers::HOOK_LOGINSUCCESS => array( array( $this, '_loginSuccess' ) ),    // Run this function whenever a successful login occurs
            );

        // An array of callback options
        $callback_options = array();

        // Logging level
        $log_level = $this->config->item('quickbooks_loglevel');

        // What SOAP server you're using 
        //$soapserver = QUICKBOOKS_SOAPSERVER_PHP;          // The PHP SOAP extension, see: www.php.net/soap
        $soapserver = QUICKBOOKS_SOAPSERVER_BUILTIN;        // A pure-PHP SOAP server (no PHP ext/soap extension required, also makes debugging easier)

        $soap_options = array(      // See http://www.php.net/soap
            );

        $handler_options = array(
            'deny_concurrent_logins' => false, 
            'deny_reallyfast_logins' => false, 
            );      // See the comments in the QuickBooks/Server/Handlers.php file

        $driver_options = array(        // See the comments in the QuickBooks/Driver/<YOUR DRIVER HERE>.php file ( i.e. 'Mysql.php', etc. )
            'max_log_history' => 32000, // Limit the number of quickbooks_log entries to 1024
            'max_queue_history' => 1024,    // Limit the number of *successfully processed* quickbooks_queue entries to 64
            );

        // Build the database connection string
        $dsn = 'mysqli://' . $this->db->username . ':' . $this->db->password . '@' . $this->db->hostname . '/' . $this->db->database;

        // Check to make sure our database is set up 
        if (!QuickBooks_Utilities::initialized($dsn))
        {
            // Initialize creates the neccessary database schema for queueing up requests and logging
            QuickBooks_Utilities::initialize($dsn);

            // This creates a username and password which is used by the Web Connector to authenticate
            QuickBooks_Utilities::createUser($dsn, $user, $pass);
        }

        // Set up our queue singleton
        QuickBooks_WebConnector_Queue_Singleton::initialize($dsn);

        // Create a new server and tell it to handle the requests
        // __construct($dsn_or_conn, $map, $errmap = array(), $hooks = array(), $log_level = QUICKBOOKS_LOG_NORMAL, $soap = QUICKBOOKS_SOAPSERVER_PHP, $wsdl = QUICKBOOKS_WSDL, $soap_options = array(), $handler_options = array(), $driver_options = array(), $callback_options = array()

        $Server = new QuickBooks_WebConnector_Server($dsn, $map, $errmap, $hooks, $log_level, $soapserver, QUICKBOOKS_WSDL, $soap_options, $handler_options, $driver_options, $callback_options);
        $response = $Server->handle();
        $Queue = new QuickBooks_WebConnector_Queue($dsn);
            $Queue->enqueue(QUICKBOOKS_QUERY_INVOICE);


    //exit;
        //echo "<pre>"; print_r($response);
        //echo "Mujtaba";
//echo(\uuuuu文件\uuuuuu);出口
    $Queue = new QuickBooks_WebConnector_Queue($dsn);
    $Queue->enqueue(QUICKBOOKS_QUERY_INVOICE);
$user=$this->config->item('quickbooks_user'); $pass=$this->config->item('quickbooks_-pass'); //内存限制 ini_set('memory_limit',$this->config->item('quickbooks_memorylimit'); //我们需要确保设置了正确的时区,否则一些PHP安装会抱怨 如果(函数_存在('date_default_timezone_set')) { //*确保将此设置为正确的时区* //有效时区列表如下所示:http://us3.php.net/manual/en/timezones.php 日期默认时区设置($this->config->item('quickbooks_tz'); } //将QuickBooks操作映射到处理程序函数 $map=数组( //QUICKBOOKS\u IMPORT\u CUSTOMER=>数组(数组($this,'''.\u QUICKBOOKS\u CUSTOMER\u IMPORT\u request')、数组($this,'.\u QUICKBOOKS\u CUSTOMER\u IMPORT\u response'), /*QUICKBOOKS\u IMPORT\u EMPLOYEE=>数组(数组($this,'''.\u QUICKBOOKS\u EMPLOYEE\u IMPORT\u request')、数组($this,'.\u QUICKBOOKS\u EMPLOYEE\u IMPORT\u response')*/ QUICKBOOKS\u QUERY\u INVOICE=>array(数组($this,''QUICKBOOKS\u import\u daily\u sale\u request')、数组($this,''QUICKBOOKS\u import\u daily\u sale\u response')), //QUICKBOOKS\u IMPORT\u CUSTOMER=>array(“\u QUICKBOOKS\u CUSTOMER\u IMPORT\u request”,“\u QUICKBOOKS\u CUSTOMER\u IMPORT\u response”), ); //捕获QuickBooks使用此函数引发的所有错误 $errmap=array( “*”=>数组($this,“\u catchallErrors”), ); //每当Web连接器连接时调用此方法 $hooks=数组( QuickBooks\u WebConnector\u Handlers::HOOK\u LoginsAccess=>array(array($this,“\u LoginsAccess”),//在成功登录时运行此函数 ); //回调选项数组 $callback_options=array(); //日志记录级别 $log_level=$this->config->item('quickbooks_loglevel'); //您正在使用什么SOAP服务器 //$soapserver=QUICKBOOKS\u soapserver\u PHP;//PHP SOAP扩展,请参阅:www.PHP.net/SOAP $soapserver=QUICKBOOKS\u soapserver\u内置;//纯PHPSOAP服务器(不需要PHPEXT/SOAP扩展,也使调试更容易) $soap\u options=array(//请参阅http://www.php.net/soap ); $handler\u options=数组( “拒绝并发登录”=>false, 'deny_reallyfast_logins'=>false, ); // 请参阅QuickBooks/Server/Handlers.php文件中的注释 $driver\u options=array(//查看QuickBooks/driver/.php文件(即“Mysql.php”等)中的注释) 'max_log_history'=>32000,//将quickbooks_日志项的数量限制为1024个 'max_queue_history'=>1024,//将*已成功处理*quickbooks_队列条目的数量限制为64个 ); //构建数据库连接字符串 $dsn='mysqli://'$此->数据库->用户名。“:”$此->数据库->密码'@'$此->数据库->主机名'/'$这个->数据库->数据库; //检查以确保我们的数据库已设置 如果(!QuickBooks_Utilities::initialized($dsn)) { //Initialize创建用于排队请求和日志记录的必要数据库架构 QuickBooks_实用程序::初始化($dsn); //这将创建一个用户名和密码,Web连接器使用该用户名和密码进行身份验证 QuickBooks_实用程序::createUser($dsn,$user,$pass); } //设置我们的队列单例 QuickBooks\u WebConnector\u Queue\u Singleton::initialize($dsn); //创建一个新服务器并告诉它处理请求 //构造($dsn\u或\u conn,$map,$errmap=array(),$hooks=array(),$log\u level=QUICKBOOKS\u log\u NORMAL,$soap=QUICKBOOKS\u SOAPSERVER\u PHP,$wsdl=QUICKBOOKS\u wsdl,$soap\u options=array(),$handler\u options=array(),$driver\u options=array(),$callback\u options=array()) $Server=new QuickBooks\u WebConnector\u Server($dsn、$map、$errmap、$hooks、$log\u level、$soapserver、QuickBooks)_
$hooks = array(
    QuickBooks_WebConnector_Handlers::HOOK_LOGINSUCCESS => '_quickbooks_hook_loginsuccess',     // call this whenever a successful login occurs
    );
function _quickbooks_hook_loginsuccess($requestID, $user, $hook, &$err, $hook_data, $callback_config)
{
    // For new users, we need to set up a few things
    // Fetch the queue instance
    $Queue = QuickBooks_WebConnector_Queue_Singleton::getInstance();

    $Queue->enqueue(... whatever you want to do here ...)
}