gpt4 book ai didi

android - Magento API 的创建发票方法无法正常工作

转载 作者:太空狗 更新时间:2023-10-29 15:17:24 24 4
gpt4 key购买 nike

我正在尝试使用 XMLRPC 在 android 应用程序中使用 Magento API 创建销售订单发票。我正在使用方法“sales_order_invoice.create”来创建发票。此方法在对给定数量的响应,如 magento wiki 中所述.但问题是发票数量没有在 magento store 上更新。另一件事是订单状态正在更改为处理中,这是正确的,并且创建的发票条目也出现在商店的发票列表中,但它显示的是已付金额作为 $0.0 这是不正确的。

不知道在调用sales_order_invoice.create之前是否需要调用其他方法或者方法有什么问题??
下面是我调用方法的部分代码:

import java.util.HashMap;
import org.xmlrpc.android.XMLRPCClient;
import org.xmlrpc.android.XMLRPCException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MagentoStore extends Activity {

private XMLRPCClient client;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
String sessionId = "";


client = new XMLRPCClient("http://www.mystore.com/index.php/api/xmlrpc");
try {

sessionId = (String)client.call("login", "tester", "tester");
Log.d("MY_XMLRPC_SUCCESS_SESSION_ID", sessionId);
}
catch (XMLRPCException e) {

Log.d("MY_XMLRPCException_MSG", e.getMessage());
}

Object salesorderInfo = null;
Object[] methodParams = new Object[]{"100000028"};
Object[] callParams = new Object[]{sessionId,"sales_order.info", methodParams};
String salesorderinvoice= null;
try {
salesorderInfo = (Object)client.callEx("call",callParams);
HashMap map = (HashMap)salesorderInfo;
Object[]items=(Object[])map.get("items");
for(Object item :items)
{
HashMap itemlist=(HashMap)item;
String item_id=(String)itemlist.get("item_id");
int itemids=Integer.parseInt(item_id);
String base_price=(String)itemlist.get("base_price");
if(base_price.equals("0.0000"))
{
continue;
}
String name=(String)itemlist.get("name");
Double qty=1.0;
String qty_ordered =(String)itemlist.get("qty_ordered");
String qty_invoiced=(String)itemlist.get("qty_invoiced");
Object[] methodParams1 = new Object[]{"100000028",itemids,qty};
Object[] callParams1 = new Object[]{sessionId,"sales_order_invoice.create", methodParams1};
salesorderinvoice= (String)client.callEx("call",callParams1);

}
} catch (Exception e) {
Log.d("APP_INFO", "Exception: " + e.getMessage());
}
}
}

有人有什么想法吗??提前致谢

最佳答案

仅供引用

当您调用API sales_order_invoice.create 时,您必须分配数组指针名称。

String qty_ordered =(String)itemlist.get("qty_ordered");
String qty_invoiced=(String)itemlist.get("qty_invoiced");
Object[] methodParams1 = new Object[]{"100000028",itemids,qty};

尝试使用 var_dump methodParams1

methodParams1.toString();

必须和

一样
array(
'orderIncrementId' => '200000008',
array(
'order_item_id' => '11',
'qty' => '1'
)
);

因为这是将参数放入sales_order_invoice.create

的方法
$result = $client->call(
$session,
'sales_order_invoice.create',
array('orderIncrementId' => '200000008', array('order_item_id' => '11', 'qty' => '1'))
);

关于android - Magento API 的创建发票方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11499043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com