public virtual InvokeServicesCallResponse InvokeServicesCalls(PXGraph graph, ServiceCallParameters objParams) { InvokeServicesCallResponse objSyncOrderResponse = new InvokeServicesCallResponse(); try { if (objParams.objSOAmazonSetup != null) { MarketplaceWebServiceOrders.MarketplaceWebServiceOrders serviceConfig = this.Configurations(objParams.objSOAmazonSetup.IntegrationType.Trim(), objParams.objSOAmazonSetup.AccessKey, objParams.objSOAmazonSetup.SecretKey); switch (objParams.methodCall) { case SOConstants.invokeListOrders: objSyncOrderResponse.objListOrderResponse = new SOOrdersServiceCall(serviceConfig).InvokeListOrders(graph, objParams); break; case SOConstants.invokeGetOrder: objSyncOrderResponse.objGetOrderResponse = new SOOrdersServiceCall(serviceConfig).InvokeGetOrder(graph, objParams); break; case SOConstants.invokeListOrderItems: objSyncOrderResponse.objListOrderItemsResponse = new SOOrdersServiceCall(serviceConfig).GetSalesOrderLineItems(graph, objParams); break; case SOConstants.invokeListOrdersByNextToken: objSyncOrderResponse.objListOrdersByNextToken = new SOOrdersServiceCall(serviceConfig).InvokeListOrdersByNextToken(graph, objParams); break; } } return(objSyncOrderResponse); } catch (Exception ex) { throw new PXException(ex.Message); } }
protected void ListOrdersByNextToken(SOImportProcess graph, OrdersParameters objOrderParams) { objServiceCallParams = new ServiceCallParameters(); objServiceCallParams.objSOAmazonSetup = objOrderParams.objSOAmazonSetup; objServiceCallParams.amwOrderID = string.Empty; objServiceCallParams.methodCall = SOConstants.invokeListOrdersByNextToken; objServiceCallParams.fromDate = objOrderParams.objSOImportFilter.FromDate; objServiceCallParams.toDate = objOrderParams.objSOImportFilter.TODate; objServiceCallParams.nextToken = objOrderParams.nextToken; objServiceCallParams.liListOrderResponse = objOrderParams.liListOrderResponse; objOrderParams.objSyncOrderResponse = new SOOrdersServiceCall(clientOrder).InvokeServicesCalls(graph, objServiceCallParams); if (objOrderParams.objSyncOrderResponse != null && objOrderParams.objSyncOrderResponse.objListOrdersByNextToken != null && objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult != null && objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.Orders != null && objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.Orders.Count > 0) { objOrderParams.integrationID = objOrderParams.objSOAmazonSetup.IntegrationID; foreach (Order item in objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.Orders) { objOrderParams.objItem = item; LoadDataToGrid(graph, objOrderParams); } if (objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.NextToken != null) { objOrderParams.nextToken = objOrderParams.objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.NextToken; ListOrdersByNextToken(graph, objOrderParams); } } }
public virtual void GetAmazonOrdersbyNextToken(SOScheduleProcess graph, PrepareAndImportOrdersParams objScheduleParams, ref bool isErrorOccured) { objSyncOrderResponse = new InvokeServicesCallResponse(); amwOrders = new List <Order>(); amwLineItems = new List <OrderItem>(); objServiceCallParams = new ServiceCallParameters(); objServiceCallParams.objSOAmazonSetup = objScheduleParams.objSOAmazonSetup; objServiceCallParams.amwOrderID = string.Empty; objServiceCallParams.methodCall = SOConstants.invokeListOrdersByNextToken; objServiceCallParams.fromDate = objScheduleParams.objSOPrepareAndImport.LastSyncDate; objServiceCallParams.toDate = objScheduleParams.objSOPrepareAndImport.ToDate; objServiceCallParams.nextToken = objScheduleParams.objNextToken; objSyncOrderResponse = new SOOrdersServiceCall(clientOrder).InvokeServicesCalls(graph, objServiceCallParams); if (objSyncOrderResponse != null && objSyncOrderResponse.objListOrdersByNextToken != null && objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult != null && objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.Orders.Count > 0) { amwOrders = objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.Orders.ToList(); objScheduleParams.amwOrders = amwOrders; SOHelper.PrepareRecord(graph, objScheduleParams, ref isErrorOccured); if (objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.NextToken != null) { objScheduleParams.objNextToken = objSyncOrderResponse.objListOrdersByNextToken.ListOrdersByNextTokenResult.NextToken; GetAmazonOrdersbyNextToken(graph, objScheduleParams, ref isErrorOccured); } } }
public static void GetAmazonOrderItems(SOScheduleProcess graph, PrepareAndImportOrdersParams objScheduleParams) { List <SOFieldMapping> liUsrMapping = new List <SOFieldMapping>(); InvokeServicesCallResponse objSyncOrderResponse = new InvokeServicesCallResponse(); List <OrderItem> amwLineItems = new List <OrderItem>(); objScheduleParams.objSOOrderEntry.Clear(); objScheduleParams.objSOPartialMaint.Clear(); objSyncOrderResponse = new InvokeServicesCallResponse(); amwLineItems = new List <OrderItem>(); ServiceCallParameters objServiceCallParams = new ServiceCallParameters(); objServiceCallParams.objSOAmazonSetup = objScheduleParams.objSOAmazonSetup; objServiceCallParams.amwOrderID = objScheduleParams.amazonOrderID; objServiceCallParams.methodCall = SOConstants.invokeListOrderItems; objSyncOrderResponse = new SOOrdersServiceCall(clientOrder).InvokeServicesCalls(graph, objServiceCallParams); amwLineItems = objSyncOrderResponse != null && objSyncOrderResponse.objListOrderItemsResponse != null && objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult != null && objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult.OrderItems.Count > 0 ? objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult.OrderItems : amwLineItems; if (objScheduleParams.ObjCurrentOrder != null) { objScheduleParams.objamwLineItems = amwLineItems; objScheduleParams.objliUsrMapping = liUsrMapping; CreateSO.CreateSalesOrderandPayments(objScheduleParams); } }
private ListOrdersResponse InvokeListOrders(PXGraph graph, ServiceCallParameters objParams) { ListOrdersResponse response = new ListOrdersResponse(); try { ListOrdersRequest request = new ListOrdersRequest(); request.SellerId = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; List <string> marketplaceId = new List <string>(); marketplaceId.Add(objParams.objSOAmazonSetup.MarketplaceId); request.MarketplaceId = marketplaceId; request.CreatedAfter = Convert.ToDateTime(objParams.fromDate); if (objParams.toDate.Value.Date < DateTime.Now.Date) { request.CreatedBefore = objParams.toDate.Value.AddDays(1).AddTicks(-1); } PXTrace.WriteInformation("objParams.fromDate.Value.Date:" + objParams.fromDate.Value.Date.ToString()); PXTrace.WriteInformation("objParams.toDate.Value.Date:" + objParams.toDate.Value.Date.ToString()); PXTrace.WriteInformation("request.CreatedAfter:" + request.CreatedAfter.ToString()); PXTrace.WriteInformation("request.CreatedBefore:" + request.CreatedBefore.ToString()); List <string> liFulfillmentChannel = null; List <string> liOrderStatus = null; SOHelper.GetFilterValues(objParams.objSOAmazonSetup.IntegrationType.Trim(), out liFulfillmentChannel, out liOrderStatus); request.FulfillmentChannel = liFulfillmentChannel; request.OrderStatus = liOrderStatus; response = this.clientOrder.ListOrders(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceOrdersException) { MarketplaceWebServiceOrdersException exception = ex as MarketplaceWebServiceOrdersException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOMessages.requestThrottled) { Thread.Sleep(SOHelper.DelayProcess(graph, SOConstants.apiListOrders)); response = InvokeListOrders(graph, objParams); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } return(response); }
private GetOrderResponse InvokeGetOrder(PXGraph graph, ServiceCallParameters objParams) { GetOrderResponse getOrderRes = new GetOrderResponse(); try { GetOrderRequest request = new GetOrderRequest(); request.SellerId = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; List <string> liAmazonOrderId = new List <string>(); if (!string.IsNullOrEmpty(objParams.amwOrderID)) { liAmazonOrderId.Add(objParams.amwOrderID); } request.AmazonOrderId = liAmazonOrderId; getOrderRes = this.clientOrder.GetOrder(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceOrdersException) { MarketplaceWebServiceOrdersException exception = ex as MarketplaceWebServiceOrdersException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOMessages.requestThrottled) { Thread.Sleep(SOHelper.DelayProcess(graph, SOConstants.apiGetOrder)); getOrderRes = InvokeGetOrder(graph, objParams); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } return(getOrderRes); }
private ListOrderItemsResponse GetSalesOrderLineItems(PXGraph graph, ServiceCallParameters objParams) { ListOrderItemsResponse lineItemsRes = new ListOrderItemsResponse(); try { ListOrderItemsRequest request = new ListOrderItemsRequest(); request.SellerId = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; request.AmazonOrderId = objParams.amwOrderID; lineItemsRes = this.clientOrder.ListOrderItems(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceOrdersException) { MarketplaceWebServiceOrdersException exception = ex as MarketplaceWebServiceOrdersException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOMessages.requestThrottled) { Thread.Sleep(SOHelper.DelayProcess(graph, SOConstants.apiGetListOrderItems)); lineItemsRes = GetSalesOrderLineItems(graph, objParams); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } return(lineItemsRes); #endregion }
public ListOrdersByNextTokenResponse InvokeListOrdersByNextToken(PXGraph graph, ServiceCallParameters objParams) { ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); ListOrdersByNextTokenResponse responseOrderByNextToken = new ListOrdersByNextTokenResponse(); try { request.SellerId = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; request.NextToken = objParams.nextToken; responseOrderByNextToken = this.clientOrder.ListOrdersByNextToken(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceOrdersException) { MarketplaceWebServiceOrdersException exception = ex as MarketplaceWebServiceOrdersException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOMessages.requestThrottled) { Thread.Sleep(SOHelper.DelayProcess(graph, SOConstants.apiListOrdersByNextToken)); responseOrderByNextToken = InvokeListOrdersByNextToken(graph, objParams); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } return(responseOrderByNextToken); }
public virtual void ImportAmazonRecords(SOImportProcess graph, List <SOProcessOrder> list, SOImportFilter currentFilter) { if (list.Count < 0) { return; } List <Order> amwOrder = null; List <OrderItem> amwLineItems = null; string amwOrderID = string.Empty; List <SOAmazonSetup> liSOAmazonSetup = new List <SOAmazonSetup>(); List <SOFieldMapping> liUsrMapping = new List <SOFieldMapping>(); SOAmazonSetup objamwSetup = null; SOOrderProcessLog objProcessLog = null; SOPartialMaint logGraph = PXGraph.CreateInstance <SOPartialMaint>(); if (currentFilter.ProcessAllTypes == true) { foreach (SOAmazonSetup objSetup in PXSelect <SOAmazonSetup, Where <SOAmazonSetup.status, Equal <True> > > .Select(graph)) { liSOAmazonSetup.Add(objSetup); } } else if (SOHelper.MarketplaceConfigurations(graph, currentFilter.IntegrationID, out objamwSetup)) { liSOAmazonSetup.Add(objamwSetup); } if (liSOAmazonSetup.Count > 0) { ARPaymentEntry docgraph = PXGraph.CreateInstance <ARPaymentEntry>(); SOOrderEntry orderEntry = PXGraph.CreateInstance <SOOrderEntry>(); orderEntry.RowUpdated.AddHandler <SOOrder>((sender, e) => { if (!sender.ObjectsEqual <SOOrder.orderDate>(e.Row, e.OldRow)) { SOOrder order = (SOOrder)e.Row; order.OrderDate = order.OrderDate.HasValue ? order.OrderDate.Value.Date : order.OrderDate; } }); InvokeServicesCallResponse objSyncOrderResponse = null; PrepareAndImportOrdersParams objScheduleParams = null; objProcessLog = new SOOrderProcessLog(); objProcessLog.ProcessDate = PX.Common.PXTimeZoneInfo.Now; objProcessLog.TotalRecordstoImport = list.Count; objProcessLog.Operation = SOConstants.btnImport; objProcessLog.ImportedRecordsCount = 0; objProcessLog.FailedRecordsCount = 0; bool isErrorOccured = false; List <string> liCarriers = PXSelect <Carrier> .Select(graph).RowCast <Carrier>().Select(c => c.CarrierID).ToList(); foreach (SOProcessOrder currentRecord in list) { try { orderEntry.Clear(); logGraph.Clear(); docgraph.Clear(); objProcessLog.IntegrationID = currentFilter.IntegrationID != null ? currentFilter.IntegrationID : currentRecord.IntegrationID; logGraph.OrderProcessLog.Insert(objProcessLog); logGraph.Actions.PressSave(); foreach (SOAmazonSetup objSOAmazonSetup in liSOAmazonSetup.Where(x => x.IntegrationID == currentRecord.IntegrationID)) { if (orderEntry.sosetup.Current != null) { if (!SOHelper.CheckOrderExist(graph, currentRecord.AmazonOrderID, currentRecord.IntegrationID)) { amwOrderID = currentRecord.AmazonOrderID; if (amwLineItems != null && amwLineItems.Count > 0) { amwLineItems.Clear(); } amwOrder = new List <Order>(); amwOrder.Add(SOHelper.SchemaDeserialization(graph, amwOrderID)); objServiceCallParams = new ServiceCallParameters(); objServiceCallParams.objSOAmazonSetup = objSOAmazonSetup; objServiceCallParams.amwOrderID = currentRecord.AmazonOrderID; objServiceCallParams.methodCall = SOConstants.invokeListOrderItems; objSyncOrderResponse = new InvokeServicesCallResponse(); objSyncOrderResponse = new SOOrdersServiceCall(clientOrder).InvokeServicesCalls(graph, objServiceCallParams); amwLineItems = objSyncOrderResponse != null && objSyncOrderResponse.objListOrderItemsResponse != null && objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult != null && objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult.OrderItems.Count > 0 ? objSyncOrderResponse.objListOrderItemsResponse.ListOrderItemsResult.OrderItems : amwLineItems; objScheduleParams = new PrepareAndImportOrdersParams(); objScheduleParams.objSOPartialMaint = logGraph; objScheduleParams.objSOAmazonSetup = objSOAmazonSetup; objScheduleParams.objSOOrderEntry = orderEntry; objScheduleParams.paymentGraph = docgraph; objScheduleParams.objSOProcessOrderRecord = currentRecord; objScheduleParams.ObjCurrentOrder = amwOrder[0]; objScheduleParams.objamwLineItems = amwLineItems; objScheduleParams.objliUsrMapping = liUsrMapping; objScheduleParams.listOfCarriers = liCarriers; objScheduleParams.CurrentOrderIndex = list.IndexOf(currentRecord); CreateSO.CreateSalesOrderandPayments(objScheduleParams); } else { isErrorOccured = true; SOLogService.LogImportStatus(objScheduleParams, true, SOMessages.recordAlreadyImported); PXProcessing <SOProcessOrder> .SetInfo(list.IndexOf(currentRecord), SOMessages.recordAlreadyImported); } } else { throw new PXException(SOMessages.configMissing); } } } catch (Exception ex) { isErrorOccured = true; SOLogService.LogImportStatus(objScheduleParams, false, ex.Message); PXProcessing <SOProcessOrder> .SetError(list.IndexOf(currentRecord), ex.Message); } } if (isErrorOccured) { throw new PXException(SOMessages.showErrorMsgOrders); } } }
public void PrepareAndImportAmazonRecords(SOScheduleProcess graph, List <SOPrepareAndImport> listOfPrepareAndImport) { objSyncOrderResponse = new InvokeServicesCallResponse(); amwOrders = new List <Order>(); amwLineItems = new List <OrderItem>(); SOAmazonSetup objSOAmazonSetup = null; SOPartialMaint logGraph = PXGraph.CreateInstance <SOPartialMaint>(); SOOrderEntry orderEntry = PXGraph.CreateInstance <SOOrderEntry>(); ARPaymentEntry paymentGraph = PXGraph.CreateInstance <ARPaymentEntry>(); bool isErrorOccured = false; DateTime? businessDateTime = PX.Common.PXTimeZoneInfo.Now; List <string> liCarriers = PXSelect <Carrier> .Select(graph).RowCast <Carrier>().Select(c => c.CarrierID).ToList(); try { SOSetupAmazonExt objSOOSetupext = orderEntry.sosetup.Current.GetExtension <SOSetupAmazonExt>(); if (SOHelper.IsSOPreferencesDetailsExist(orderEntry, objSOOSetupext)) { foreach (SOPrepareAndImport currentRecord in listOfPrepareAndImport) { objSOAmazonSetup = null; if (SOHelper.MarketplaceConfigurations(graph, currentRecord.IntegrationID, out objSOAmazonSetup)) { objSyncOrderResponse = objSyncOrderResponse != null ? null : objSyncOrderResponse; if (amwOrders != null && amwOrders.Count > 0) { amwOrders.Clear(); } if (amwLineItems != null && amwLineItems.Count > 0) { amwLineItems.Clear(); } orderEntry.Clear(); logGraph.Clear(); paymentGraph.Clear(); objServiceCallParams = new ServiceCallParameters(); objServiceCallParams.objSOAmazonSetup = objSOAmazonSetup; objServiceCallParams.amwOrderID = string.Empty; objServiceCallParams.methodCall = SOConstants.invokeListOrders; objServiceCallParams.fromDate = currentRecord.LastSyncDate; objServiceCallParams.toDate = currentRecord.ToDate; // Prepare action is invoked objSyncOrderResponse = new SOOrdersServiceCall(clientOrder).InvokeServicesCalls(graph, objServiceCallParams); if (amwLineItems != null && amwLineItems.Count > 0) { amwLineItems.Clear(); } if (objSyncOrderResponse != null && objSyncOrderResponse.objListOrderResponse != null && objSyncOrderResponse.objListOrderResponse.ListOrdersResult != null && objSyncOrderResponse.objListOrderResponse.ListOrdersResult.Orders != null && objSyncOrderResponse.objListOrderResponse.ListOrdersResult.Orders.Count > 0) { amwOrders = objSyncOrderResponse.objListOrderResponse.ListOrdersResult.Orders.ToList(); // Saving the prepare action response objScheduleParams = new PrepareAndImportOrdersParams(); objScheduleParams.objSOPrepareAndImport = currentRecord; objScheduleParams.objSOAmazonSetup = objSOAmazonSetup; objScheduleParams.objSOOrderEntry = orderEntry; objScheduleParams.objSOPartialMaint = logGraph; objScheduleParams.businessDateTime = businessDateTime; objScheduleParams.paymentGraph = paymentGraph; objScheduleParams.listOfCarriers = liCarriers; objScheduleParams.amwOrders = amwOrders; SOHelper.PrepareRecord(graph, objScheduleParams, ref isErrorOccured); if (objSyncOrderResponse.objListOrderResponse.ListOrdersResult.NextToken != null) { objScheduleParams.objNextToken = objSyncOrderResponse.objListOrderResponse.ListOrdersResult.NextToken; objScheduleParams.paymentGraph = paymentGraph; GetAmazonOrdersbyNextToken(graph, objScheduleParams, ref isErrorOccured); } } else { SOLogService.LogImportCount(null, currentRecord.IntegrationID, logGraph, currentRecord.ProcessID, SOConstants.scheduleimportorders, true); } } else { throw new PXException(SOMessages.apidetailsMissing); } } } else { throw new PXException(SOMessages.configMissing); } } catch (Exception ex) { SOLogService.LogImportStatus(objScheduleParams, false, ex.Message); throw new PXException(ex.Message); } }