We had webservice integration and it was working all the way, but suddenly it started to throw the below error when creating a RC type order. Dont understand what exactly is going wrong. We didnt update anything so i believe this is some data related issue.
I tried the same process via UI and it is not giving this error. Please assist. Your help is deeply appreciated.
PX.Data.PXRowPersistingException: Error #4: 'RevisionID' cannot be empty.
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> PX.Data.PXRowPersistingException: Error #4: 'RevisionID' cannot be empty. at PX.Data.PXDefaultAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e) at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation) at PX.Data.PXCache
1.PersistInserted(Object row) at PX.Objects.CS.SharedRecordAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e) at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation) at PX.Data.PXCache
1.PersistInserted(Object row) at PX.Data.PXCache1.Persist(PXDBOperation operation) at PX.Data.PXGraph.Persist(Type cacheType, PXDBOperation operation) at PX.Data.PXGraph.Persist() at PX.Objects.SO.SOShipmentEntry.Persist() at PX.Data.PXSave
1.d__2.MoveNext() at PX.Data.PXAction1.<Press>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() at PX.Api.ScreenUtils.Submit(String screenId, Command[] commands, SchemaMode schemaMode, PXGraph& graph, String& redirectContainerView, String& redirectScreen, Boolean mobile, Dictionary2 viewFilters)
1 commands, SchemaMode schemaMode, Boolean mobile, PXGraph& forceGraph, String& redirectContainerView, String& redirectScreen, Dictionary
at PX.Api.Services.ScreenService.Submit(String id, IEnumerable2 viewFilters) at PX.Api.Services.ScreenService.Submit(String id, IEnumerable
1 commands, SchemaMode schemaMode) at PX.Api.Soap.Screen.ScreenGate.Submit(Command[] commands)--- End of inner exception stack trace ---
EDIT
The autonumbering is enabled for this order type and the code is as below. Acumatica version 6.00.1384
As mentioned before, this code was working correctly. suddenly the behavior changed and i dont know what is the reason.
apitest.Screen context = BuisnessLogicACU.context;
SO301000Content SOSchema;
try
{
SOSchema = context.SO301000GetSchema();
}
catch
{
BuisnessLogicACU.contextLogin();
SOSchema = context.SO301000GetSchema();
}
SOSchema.Actions.LSSOLineBinLotSerial.Commit = true;
SOSchema.Actions.CreateReceiptAction.Commit = true;
//HEADER INFO
AcumaticaInterface.apitest.Command[] commands = new AcumaticaInterface.apitest.Command[]
{
new Value
{
Value = returnInterfaceStatus.SalesOrderType,
LinkedCommand = SOSchema.OrderSummary.OrderType
},
SOSchema.Actions.Insert,
new Value
{
Value = "false",
LinkedCommand = SOSchema.OrderSummary.Hold
},
new Value
{
Value = OrderStatus == POSOrderstatus.Normal ? (ConfigValues.POSNormalCustomerID ?? CustomerID) : CustomerID,
LinkedCommand = SOSchema.OrderSummary.Customer
},
new Value
{
Value = BizDate.HasValue ? ((DateTime)BizDate).ToLongDateString() : "",
LinkedCommand = SOSchema.OrderSummary.Date
},
new Value
{
Value = BizDate.HasValue ? ((DateTime)BizDate.Value).ToLongDateString() : "",
LinkedCommand = SOSchema.OrderSummary.RequestedOn
},
new Value
{
Value = POSID,
LinkedCommand = SOSchema.OrderSummary.ExternalReference
},
new Value
{
Value = SIPosOrdrCreatedBy,
LinkedCommand = SOSchema.OrderSummary.POSOrdrBy
},
new Value
{
Value = CustomerTaxZone,
LinkedCommand = SOSchema.FinancialSettingsFinancialInformation.CustomerTaxZone
}
};
AcumaticaInterface.apitest.Command[] commandline = new AcumaticaInterface.apitest.Command[]
{
SOSchema.DocumentDetails.ServiceCommands.NewRow,
new Value
{
Value = line.InventoryID,
LinkedCommand = SOSchema.DocumentDetails.InventoryID
},
new Value
{
Value = SIOutletCode,
LinkedCommand = SOSchema.DocumentDetails.Warehouse
},
new Value
{
Value = line.Quantity.ToString(),
LinkedCommand = SOSchema.DocumentDetails.Quantity,
Commit = true
},
new Value
{
Value = line.UnitPrice.ToString(),
LinkedCommand = SOSchema.DocumentDetails.UnitPrice
},
new Value
{
Value = line.Uom,
LinkedCommand = SOSchema.DocumentDetails.UOM
},
new Value
{
Value = (line.DiscTotal ?? 0).ToString(),
LinkedCommand = SOSchema.DocumentDetails.DiscountAmount
},
new Value
{
Value = (line.LineTotal ?? 0).ToString(),
LinkedCommand = SOSchema.DocumentDetails.ExtPrice
},
new Value
{
Value = line.DiscType ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSDiscType
},
new Value
{
Value = line.LineType ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSLineType
},
new Value
{
Value = line.VoucherSerial ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSVoucherSerial
},
new Value
{
Value = line.PromoID ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSPromoID
},
new Value
{
Value = line.PromoType ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSPromoType
},
new Value
{
Value = (line.PromoPct ?? 0).ToString(),
LinkedCommand = SOSchema.DocumentDetails.POSPromoPct
},
new Value
{
Value = line.PromoBaseItem ?? "",
LinkedCommand = SOSchema.DocumentDetails.POSPromoBaseItem
},
//new Value
//{
// Value = SalesPerson,
// LinkedCommand = SOSchema.DocumentDetails.SalespersonID
//},
new Value
{
Value = line.Remarks ?? "",
LinkedCommand = SOSchema.DocumentDetails.NoteText,
Commit = true
},
new Value
{
Value = POSID,
LinkedCommand = SOSchema.DocumentDetails.PackUoM,
Commit = true
}
};
commands = commands.Concat(commandline).ToArray();
AcumaticaInterface.apitest.Command[] save = new AcumaticaInterface.apitest.Command[] {
SOSchema.Actions.Save
};
commands = commands.Concat(save).ToArray();
AcumaticaInterface.apitest.Command[] returnResult= new AcumaticaInterface.apitest.Command[] {
SOSchema.OrderSummary.OrderType,
SOSchema.OrderSummary.OrderNbr,
SOSchema.OrderSummary.Status
};
commands = commands.Concat(returnResult).ToArray();
var SOrder = context.SO301000Submit(commands)[0];