Итак, я пытаюсь передать заказ на продажу Odoo со строками заказа на продажу, используя XML-RPC и PHP.
Это работает отлично … Кроме того, я не могу передать product_id
так что это работает …
$lines[] = new xmlrpcval(
array(
new xmlrpcval(0, 'int'),
new xmlrpcval(0, 'int'),
new xmlrpcval(
array(
'name' => new xmlrpcval('Product Name', 'string'),
'product_uom_qty' => new xmlrpcval(5, 'int'),
'price_unit' => new xmlrpcval(10.00, 'double'),
'sub_total' => new xmlrpcval(50.00, 'double'),
),
"struct")
),
"array");
$arr = array(
'partner_id' => new xmlrpcval(236,"int"),
'partner_invoice_id' => new xmlrpcval(236,"int"),
'partner_shipping_id' => new xmlrpcval(236,"int"),
'client_order_ref' => new xmlrpcval($this->id,"int"),
'order_line' => new xmlrpcval($lines, "array"),
);
var_dump($arr);
$client = new xmlrpc_client($this->server."object");
$client->return_type = 'phpvals';
// ['execute','userid','password','module.name',{values....}]
$msg = new xmlrpcmsg('execute');
$msg->addParam(new xmlrpcval($this->database, "string")); //* database name */
$msg->addParam(new xmlrpcval($this->uid, "int")); /* useid */
$msg->addParam(new xmlrpcval($this->password, "string"));/** password */
$msg->addParam(new xmlrpcval("sale.order", "string"));/** model name where operation will held * */
$msg->addParam(new xmlrpcval("create", "string"));/** method which u like to execute */
$msg->addParam(new xmlrpcval($arr, "struct"));/** parameters of the methods with values.... */
$resp = $client->send($msg);
if ($resp->faultCode()){
echo 'failed';
var_dump($resp);
return -1; /* if the record is not created */
}else{
echo 'success';
var_dump($resp);
return $resp->value(); /* return new generated id of record */
}
Поэтому, чтобы правильно прикрепить продукты (сопоставьте продукты в базе данных openerp / odoo), мне нужно передать идентификатор продукта …
Так что, если я добавлю в массив следующую строку …
'product_id' => new xmlrpcval(38, 'int'),
Затем я получаю сообщение об ошибке, как следующее …
warning -- MissingError
One of the documents you are trying to access has been deleted, please try again after refreshing.
Не уверен, что я делаю не так, но это сводит меня с ума!
И я проверил, что идентификатор продукта 38 существует!
Много, много, ОГРОМНОЕ спасибо заранее !!
Ваш product_id неверен. Чтобы убедиться, экспортируйте ваш продукт в CSV, а затем проверьте его в настройках -> внешний идентификатор & последовательности. Посмотрите, каков ваш идентификатор записи продукта.
Оберните product_id
в intval