MySql到IIF(PHP)

时间:2014-01-05 13:55:06

标签: php quickbooks

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

这是IIF文件

enter image description here

这是我的数据库结构

enter image description here

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

enter image description here

    <?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);
        ?>

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

3 个答案:

答案 0 :(得分:0)

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

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

如果你遵循这个原则,你需要大约一个小时的时间才能将客户工作,自动导出到QuickBooks。

答案 1 :(得分:0)

我以正确的顺序在SQL服务器上建立了数据视图,然后让php cli脚本为我建立了扩展名为.iif的文本文件。 php用必需的制表符分隔写出了iif的标头,然后数据从查询中出来,而不是CSV格式,它将一个制表符插入到输出中作为列分隔符。不需要SDK。

答案 2 :(得分:-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批准时是不正确的,实际上他们仍在继续扩大IIF的使用范围。但是,IIF似乎并不是您真正想要使用的工具。