Openerp 通过Odoo API(Java)将产品添加到新的销售报价中
我通过Odoo API以编程方式创建新的销售报价,如下所示:Openerp 通过Odoo API(Java)将产品添加到新的销售报价中,openerp,odoo-8,odoo-9,odoo-10,Openerp,Odoo 8,Odoo 9,Odoo 10,我通过Odoo API以编程方式创建新的销售报价,如下所示: final Object orderLineItem = asList((Object[]) models.execute("execute_kw", asList( db, uid, password, "sale.order.line", "search", asList(asList()), new HashMap() {{ put("limit", 10); }}) ))
final Object orderLineItem = asList((Object[]) models.execute("execute_kw", asList(
db, uid, password,
"sale.order.line", "search",
asList(asList()),
new HashMap() {{
put("limit", 10);
}})
)).get(0);
final Integer id = (Integer) models.execute("execute_kw", asList(
db, uid, password,
"sale.order", "create",
asList(new HashMap() {{
put("currency_id", resCurrency);
put("date_order", dateTime);
put("partner_id", resPartnerId);
put("picking_policy", "");
put("pricelist_id", productPricelistId);
put("name", name);
put("warehouse_id", stockWarehouseId);
put("partner_invoice_id", resPartnerId);
put("partner_shipping_id", resPartnerId);
put("access_token", "");
put("order_line", asList(
asList(1, false, new HashMap<String, Object>() {{
put("product_id", orderLineItem);
}})));
}})
));
final Object orderLineItem=asList((Object[])models.execute(“execute_kw”,asList(
数据库,uid,密码,
“销售.订单.行”,“搜索”,
asList(asList()),
新HashMap(){{
投入(“限额”,10);
}})
)).get(0);
最终整数id=(整数)模型。执行(“执行”,asList(
数据库,uid,密码,
“销售.订单”,“创建”,
asList(新的HashMap(){{
put(“货币id”,再货币);
put(“订单日期”,日期时间);
put(“合伙人id”,resPartnerId);
put(“拣选政策”);
put(“价格列表id”,产品价格列表id);
放置(“名称”,名称);
put(“仓库id”,库存仓库id);
put(“合作伙伴发票id”,负责人id);
put(“合作伙伴装运id”,负责人id);
put(“访问令牌”);
放置(“订单行”,如列表所示(
asList(1,false,新HashMap()){{
put(“产品标识”,orderLineItem);
}})));
}})
));
但是,我无法在报价单的订单行部分列出产品。订单行有一对多的关系,但我不确定这是与可以销售给客户的产品的关系,还是完全不同的关系
我知道sale.order.line资源包含我的所有“订单行”或产品,但我不确定如何将这些产品添加到新的销售报价中
如果您能在Java或python中获得任何帮助,我们将不胜感激。通过将orderLineItem作为product.prodcut的资源来解决此问题。
import Java.util.Arrays;
import java.util.Arrays;
import java.util.HashMap;
import parapremium.beans.Product;
public class CreateSaleOrder extends Service {
private int userid;
public CreateSaleOrder() throws Exception {
super();
userid=(new Authenticate()).getUserId();
}
public int createOrder() throws Exception
{
final int inv=(int) client.execute("execute_kw", Arrays.asList(
database, userid, password,
"sale.order", "create",
Arrays.asList(new HashMap<String, Object>() {{
put("partner_id", 1);
put("currency_id", 1);
// put("date_order", dateTime);
put("picking_policy", "");
put("pricelist_id", 2);
//put("name", "Order");
// put("warehouse_id", 15);
put("access_token", "");
}})
));
return inv;
}
public int createOrderLine(final int inv, int id, final double new_qty) throws Exception
{
final int id_product=id;
client.execute("execute_kw", Arrays.asList(
database, userid, password,
"sale.order.line", "create", Arrays.asList(new HashMap<String, Object>() {{
put("order_id", inv);
//put("theoretical_qty", th_qty);
put("product_id", id_product);
put("product_qty", new_qty);
// put("product_uom", 1);
put("discount", 10);
}}) ));
return 1;
}
public static void main(String arg[]) throws Exception
{
CreateSaleOrder createOrderLine = new CreateSaleOrder();
int i = createOrderLine.createOrder();
System.out.print( i );
System.out.print( createOrderLine.createOrderLine(i,1001, 4) );
}
}
导入java.util.HashMap;
进口副雷米豆制品;
公共类CreateSaleOrder扩展服务{
私有int用户id;
public CreateSaleOrder()引发异常{
超级();
userid=(新的Authenticate()).getUserId();
}
public int createOrder()引发异常
{
final int inv=(int)client.execute(“execute_kw”,Arrays.asList(
数据库、用户ID、密码、,
“销售.订单”,“创建”,
Arrays.asList(新的HashMap(){
put(“合作伙伴id”,1);
看跌期权(“货币id”,1);
//put(“订单日期”,日期时间);
put(“拣选政策”);
put(“价格表id”,2);
//放置(“名称”、“订单”);
//put(“仓库标识”,15);
put(“访问令牌”);
}})
));
退货库存;
}
公共int createOrderLine(最终int inv、int id、最终双新数量)引发异常
{
最终int id_产品=id;
client.execute(“execute_kw”,Arrays.asList(
数据库、用户ID、密码、,
“sale.order.line”、“create”、Arrays.asList(新HashMap(){
put(“订单id”,库存);
//put(“理论数量”,th数量);
put(“产品标识”,标识产品);
放置(“产品数量”,新数量);
//put(“产品计量单位”,1);
卖出价(“折扣”,10);
}}) ));
返回1;
}
公共静态void main(字符串arg[])引发异常
{
CreateSaleOrder createOrderLine=新建CreateSaleOrder();
int i=createOrderLine.createOrder();
系统输出打印(一);
System.out.print(createOrderLine.createOrderLine(i,1001,4));
}
}
到底是什么问题?我不明白这一点:我知道sale.order.line资源包含我的所有“订单行”或产品,但我不确定如何将这些产品添加到新的销售报价中orderLineItem的价值是什么?请在回答中解释此代码的具体用途。