“现金帐户”不能为空

时间:2019-02-06 17:20:39

标签: acumatica

当尝试使用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下,但这是为了创建一个新方法,而不是将方法添加到客户。

1 个答案:

答案 0 :(得分:0)

对于REST Web服务:

您需要扩展端点以添加现金帐户字段: enter image description here

然后在左窗格树视图中选择PaymentInstructions实体,然后单击Extend Entity,然后填充: enter image description here

这将打开一个弹出窗口,您可以在其中添加现金帐户字段: enter image description here

最后,当您调用Web服务时,将URL中的“默认”终结点名称更改为为扩展终结点选择的名称: enter image description here

例如:

http://domain/virtual_directory/entity/DefaultPlus/

代替:

http://domain/virtual_directory/entity/Default/

对于屏幕Web服务:

使用Help->Web Service->Service Description查找字段:

enter image description here

enter image description here

这将打开XML Web服务描述,您可以在其中查看可以使用JSON传递哪个字段: enter image description here

请注意,该字段容器名为BillingSettingsDefaultPaymentMethod,与CashAccount字段所在的标签和组框的名称匹配:

enter image description here

BillingSettingsDefaultPaymentMethod组中传递字段的JSON模式与您已经在MainContact中使用的模式相同。请注意,它仅填充MainContact,而不会创建新的联系人。默认付款方式组同样如此,它不会创建新的付款方式,只会填充“结算​​设置”标签的默认付款方式组字段。

您请求中的CashAccount字段位于顶级实体(客户/帐户)上,而不是BillingSettingsDefaultPaymentMethod组中。我怀疑它在该级别上不存在,因此您应该将其删除。要确认它不存在,请查看JSON响应,它应忽略响应中的无效字段。它无提示地执行此操作,而不会引发错误。