在Acumatica REST API调用之间更改ID的解决方法是使用Acumatica提供的“Temporary ID”(临时ID)功能。Temporary ID是一个在创建记录时自动生成的临时唯一标识符,它可以在API调用之间使用。
以下是一个使用Acumatica REST API创建销售订单并更改ID的示例代码:
import requests
import json
# 创建销售订单
def create_sales_order():
base_url = 'https://your-acumatica-instance.com/'
endpoint = 'entity/Default/18.200.001/SalesOrder'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# 使用Temporary ID创建销售订单
payload = {
'TemporaryID': 'TEMP-ORDER-123',
'OrderType': {
'value': 'SO'
},
'CustomerID': {
'value': 'CUSTOMER-123'
},
'Date': '2022-01-01',
'Description': 'Test sales order'
}
response = requests.post(base_url + endpoint, headers=headers, data=json.dumps(payload))
if response.status_code == 201:
print('Sales order created successfully')
sales_order = response.json()
temporary_id = sales_order['TemporaryID']
new_sales_order_id = sales_order['OrderNbr']
# 使用新ID更新Temporary ID
update_temporary_id(temporary_id, new_sales_order_id)
else:
print('Failed to create sales order')
print(response.text)
# 更新Temporary ID
def update_temporary_id(temporary_id, new_id):
endpoint = 'entity/Default/18.200.001/SalesOrder'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
# 使用新ID更新Temporary ID
payload = {
'TemporaryID': temporary_id,
'OrderNbr': new_id
}
response = requests.put(base_url + endpoint, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
print('Temporary ID updated successfully')
else:
print('Failed to update Temporary ID')
print(response.text)
# 调用创建销售订单函数
create_sales_order()
请确保将示例代码中的YOUR_ACCESS_TOKEN
替换为您的实际访问令牌,并根据您的实际情况修改URL和其他参数。
在示例代码中,首先我们使用Temporary ID创建销售订单。然后,我们从创建的销售订单响应中提取Temporary ID和新的销售订单ID。最后,我们使用新的销售订单ID更新Temporary ID。
这样,您就可以在Acumatica REST API调用之间更改ID。