当尝试使用REST API创建新客户时,在端点https://my.site/entity/Default/17.200.001/Customer上进行PUT时会引发以下异常:
PX.Data.PXException: Error: 'Cash Account' cannot be empty.
PX.Data.PXOuterException: Error: Inserting 'Customer Payment Method' record raised at least one error. Please review the errors.
at PX.Data.PXUIFieldAttribute.CommandPreparing(PXCache sender, PXCommandPreparingEventArgs e)
at PX.Data.PXCache.OnCommandPreparing(String name, Object row, Object value, PXDBOperation operation, Type table, FieldDescription& description)
at PX.Data.PXTableAttribute.PrepareParametersForInsert(PXCache sender, Object row, Type[] tables, ISqlDialect dialect, Boolean audit, List`1[] pars)
at PX.Data.PXTableAttribute.PersistInserted(PXCache sender, Object row)
at PX.Data.PXCache`1.PersistInserted(Object row)
at PX.Data.PXCache`1.Persist(PXDBOperation operation)
at PX.Data.PXGraph.Persist(Type cacheType, PXDBOperation operation)
at PX.Data.PXGraph.Persist()
at PX.Objects.CR.BusinessAccountGraphBase`3.Persist()
at PX.Objects.AR.CustomerMaint.Persist()
at PX.Data.PXSave`1.d__2.MoveNext()
at PX.Data.PXAction`1.d__31.MoveNext()
at PX.Data.PXAction`1.d__31.MoveNext()
at PX.Api.SyImportProcessor.SyStep.a(Object A_0, PXFilterRow[] A_1, PXFilterRow[] A_2)
at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable()
我用来创建客户的JSON是:
{
"CustomerID": {
"value": "ABCD1234"
},
"CustomerName": {
"value": "TEST CUSTOMER"
},
"CustomerClass": {
"value": "01"
},
"StatementCycleId": {
"value": "01"
},
"ShippingAddressSameAsMain": {
"value": true
},
"CashAccount": {
"value": "BANAMEXMN"
},
"MainContact": {
"DisplayName": {
"value": "TEST CUSTOMER"
},
"Email": {
"value": "a@b.com"
},
"Address": {
"AddressLine1": {
"value": "Test test"
},
"AddressLine2": {
"value": "Test test"
},
"City": {
"value": "Monterrey"
},
"State": {
"value": "NL"
},
"PostalCode": {
"value": "00300"
},
"Country": {
"value": "MX"
}
}
}
}
我已经查看了“端点”屏幕,但是在“客户”定义下找不到CashAccount属性。我唯一找到它的地方是在Customer Payment Method
下,但这是为了创建一个新方法,而不是将方法添加到客户。
答案 0 :(得分:0)
对于REST Web服务:
然后在左窗格树视图中选择PaymentInstructions实体,然后单击Extend Entity,然后填充:
最后,当您调用Web服务时,将URL中的“默认”终结点名称更改为为扩展终结点选择的名称:
例如:
http://domain/virtual_directory/entity/DefaultPlus/
代替:
http://domain/virtual_directory/entity/Default/
对于屏幕Web服务:
使用Help->Web Service->Service Description
查找字段:
这将打开XML Web服务描述,您可以在其中查看可以使用JSON传递哪个字段:
请注意,该字段容器名为BillingSettingsDefaultPaymentMethod
,与CashAccount
字段所在的标签和组框的名称匹配:
在BillingSettingsDefaultPaymentMethod
组中传递字段的JSON模式与您已经在MainContact
中使用的模式相同。请注意,它仅填充MainContact,而不会创建新的联系人。默认付款方式组同样如此,它不会创建新的付款方式,只会填充“结算设置”标签的默认付款方式组字段。
您请求中的CashAccount
字段位于顶级实体(客户/帐户)上,而不是BillingSettingsDefaultPaymentMethod
组中。我怀疑它在该级别上不存在,因此您应该将其删除。要确认它不存在,请查看JSON响应,它应忽略响应中的无效字段。它无提示地执行此操作,而不会引发错误。