php - 在 openerp 上创建 sale.order 时访问被拒绝

标签 php database postgresql openerp

我想用我在其他数据库中的数据在 openerp 中创建 sale.order。我的数据库查询是正确的,因为我已经尝试过了。而且我试过create sale.order代码是对的(输入数据是在代码中手动添加的)。但是当我收集代码时,它变成错误 Array ( [faultCode] => AccessDenied [faultString] => Access denied )。是因为 create sale.order 代码不能在 while 中循环,或者在包含其他数据库(不是 oopenerp 的数据库)的配置文件中不需要。
有人可以给我解决方案吗?谢谢。

<?php
        // Ripcord can be cloned from https://github.com/poef/ripcord
        require_once('ripcord/ripcord.php');

        // Login information
        $url = 'http://localhost:8069';
        $url_auth = $url . '/xmlrp/common';
        $url_exec = $url . '/xmlrpc/object';

        $db = 'openerp';
        $username = 'admin';
        $password = 'admin';

        // Login
        $common = ripcord::client("$url/xmlrpc/common");

        //$common = ripcord::client($url_auth);
        $uid = $common->authenticate($db, $username, $password, array());


        $models = ripcord::client($url_exec);

        include "config.php";
        $sql = "SELECT so.id as id,
                       so.cust_id,
                       so.numb,
                       p.ktr,
                       p.store_id,
                       so.write_date,
                       p.store_name,
                       p.sales_id
                FROM sales_order so
                INNER JOIN store p on p.store_id = so.store_id
               ";

        $exec = pg_query($sql);

        while ($row = pg_fetch_array($exec)){

            $query = pg_query(
                "SELECT sod.product_id, sod.qty_sales, p.name
                               FROM sales_order_line sod
                               INNER JOIN product p on p.id = sod.product_id
                               WHERE sales_order_id = ".$row['id']
            );

            while ($data = pg_fetch_array($query)) {

                $id = $models->execute_kw($db, $uid, $password,
                    'sale.order', 'create',
                    array(array(
                        'partner_id' => $row['store_id'],
                        'sales_id' => $row['sales_id'],
                        'order_line' => [array(
                            0, false, array(
                                'product_id' => $data['product_id'],
                                'name' => $data['name'],
                                'qty' => $data['quantity'])
                        )]
                    )));

                var_dump($id);

            }
        }
    ?>

最佳答案

这是因为您include config.php 包含其他数据库(不是您的 openerp 使用的数据库)。

将配置文件写在同一个文件上:

$config = pg_connect("host= 'yourhost' port='yourport' dbname= 'yourdbname' user='yourdbuser' password='yourdbpass' ") or die('Failed');

关于php - 在 openerp 上创建 sale.order 时访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830485/

相关文章:

sql - 为插入、修改和删除创建数据库触发器的正确​​语法是什么

PHP PDO 多个查询是不好的做法?

javascript - 如何检查 jsgrid 中插入/编辑的项目是否重复?

javascript - 使用 AJAX 创建 LIKE 按钮 - laravel 5

php - 将选择计数数据放入获取数组查询行 PHP

php - Codeigniter - “下一步”按钮更改页面上的值和数据,但 "active"类不会更改

database - oracle - 违反完整性约束 - 找到子记录

sql - PostgreSQL - 替代像在,包含

oracle - 将 Oracle SQL 转换为 PostgreSQL

javascript - 如何在javascript函数中包含php文件?