MySql到IIF(PHP)

问题描述 投票:0回答:3

我的客户端使用Quickbooks App,我需要将数据从quickbook导入PHP数组,以便我可以添加到数据库。

这是IIF文件

这是我的数据库结构

我找到了这个精彩的程序http://php-quickbooks-iif-viewer-or-converter.soft112.com/download.html并设法读取数据并存储它。

    <?php
        $out="";
        $i=1;
            $data = file_get_contents("customers.IIF");
            $lines = split("\n", $data);
            $customers = array();
            $j = 1;

            foreach ($lines as $line) 
            {
                $endtag = strpos($line, "\t");
                $tag = substr($line, 0, $endtag);

                if ($tag=="!CUST") 
                {
                    $line = str_replace("\"", "", $line);
                    $arline = explode("\t", $line);

                    echo print_r($arline);
                    echo "<br><br>";
                } 
                elseif ($tag=="CUST") 
                {
                    $line = str_replace("\"", "", $line);
                    $arline = explode("\t", $line);

                    $name = explode(" ", $arline[19]);
                    if ( count($name) == 2 ) 
                    {
                        $fname = $name[0];
                        $lname = "'" . $name[1] . "'";
                    } 
                    else 
                    {
                        $fname = $arline[19];
                        $lname = 'NULL';
                    }

                    $i++; $j++;
                    $cli = "INSERT INTO 'bamboo_clients' ('id', 'name', 'address1', 'address2', 'city', 'province', 'country', 'postal_code', 'website', 'tax_status', 'client_notes') VALUES\n"
                         . "($i, '$arline[1]', '$arline[5]', '', '$arline[6]', '$arline[7]', 'USA', '$arline[8]', NULL, 1, NULL);\n\n";

                    $con = "INSERT INTO 'bamboo_clientcontacts' ('id', 'client_id', 'first_name', 'last_name', 'title', 'email', 'phone', 'password', 'access_level', 'supervisor', 'last_login', 'password_reset') VALUES\n"
                         . "($j, $i, '$fname', $lname, NULL, '$arline[17]', '$arline[14]', NULL, 0, NULL, NULL, NULL);\n\n";

                    $out .= $cli . $con;

                    print_r($arline);


                    // Create connection
                    $connection=mysqli_connect("localhost","root","","cakephp");

                    // Check connection
                    if (mysqli_connect_errno())
                    {
                        echo "Failed to connect to MySQL: " . mysqli_connect_error();
                    }

                    $query="INSERT INTO customers 
                            (country,company,user_id     ,mobile       ,        email,        title,cutomer_name)
                        VALUES
                            ('$arline[5]','$arline[1]','$arline[2]','$arline[14]','$arline[17]','$arline[28]','$arline[18]');";


                    print_r($query);
                    mysqli_query($connection,$query);


                    //echo $cli;
                    //echo $con;
                }
            }
            file_put_contents("bambooinvoice-customers.sql", $out);
        ?>

以上是我修改过的代码来读取IF。现在我需要导出到IIF。反正有没有实现?我只需要出口客户名单。

php quickbooks
3个回答
0
投票

Intuit已经多年,多年来不推荐使用IIF文件格式。众所周知,它会损坏QuickBooks公司的文件,并且它的功能非常有限。您不应该使用IIF导入/导出。

您应该使用QuickBooks SDK。最简单的方法是从QuickBooks PHP DevKit开始(免责声明:我是作者)。

如果您遵循该规则,您应该花费大约一个小时的时间将客户的工作,自动化导出到QuickBooks。


0
投票

我按正确的顺序在数据库的SQL服务器上构建了一个视图,然后有一个php cli脚本为我构建了一个文本文件,扩展名为.iif。 php写出了iif的标题,带有必要的制表符分隔,然后数据来自查询,而不是CSV格式,它将选项卡作为列分隔符推入输出。无需SDK。


-1
投票

答案是没有第三方插件或通过开发自己的插件,只有从quickbooks导出IIF文件的手动方式。 (https://quickbooks.intuit.com/community/Reports-and-accounting/Export-or-import-Intuit-Interchange-Format-IIF-files/m-p/203229

由于您的目标是PHP,因此Palmer提到使用webconnect并且PHP DevKit可能就是您正在寻找的目标。

然而,当暗示IIF未经QB批准时,Palmer先生不正确,事实上他们继续扩大IIF的使用范围。但是,IIF似乎并不是您实际使用的工具。

© www.soinside.com 2019 - 2024. All rights reserved.