public static NavSalesOrderItem GetSalesOrderItemForNAV(string navAPIUrl, string navAPIUserName, string navAPIPassword, string soNumber, int lineNo) { NavSalesOrderItem navSalesOrderItemResponse = null; string serviceCall = string.Format("{0}/SalesLine('Order', '{1}', {2})", navAPIUrl, soNumber, lineNo); try { NetworkCredential myCredentials = new NetworkCredential(navAPIUserName, navAPIPassword); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceCall); request.Credentials = myCredentials; request.KeepAlive = false; request.ContentType = "application/json"; WebResponse response = request.GetResponse(); using (Stream navSalesOrderItemResponseStream = response.GetResponseStream()) { using (TextReader navSalesOrderItemReader = new StreamReader(navSalesOrderItemResponseStream)) { string responceString = navSalesOrderItemReader.ReadToEnd(); using (var stringReader = new StringReader(responceString)) { navSalesOrderItemResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <NavSalesOrderItem>(responceString); } } } } catch (Exception exp) { _logger.Log(exp, string.Format("Error is occuring while Getting the Sales order item: Request Url is: {0}", serviceCall), string.Format("Sales order item get for Sales Order: {0} and Line number {1}.", soNumber, lineNo), LogType.Error); } return(navSalesOrderItemResponse); }
public static NavSalesOrderItem UpdateSalesOrderItemForNAV(ActiveUser activeUser, NavSalesOrderItemRequest navSalesOrderItemRequest, string navAPIUrl, string navAPIUserName, string navAPIPassword, List <long> jobIdList, out bool isRecordUpdated) { NavSalesOrderItem navSalesOrderItemResponse = null; string navSalesOrderItemJson = string.Empty; string dataToRemove = string.Format("{0}:{1},", "\"M4PLItemId\"", navSalesOrderItemRequest.M4PLItemId); string serviceCall = string.Format("{0}/SalesLine('Order', '{1}', {2})", navAPIUrl, navSalesOrderItemRequest.Document_No, navSalesOrderItemRequest.Line_No); try { NavSalesOrderItem existingNavSalesOrderItem = GetSalesOrderItemForNAV(navAPIUrl, navAPIUserName, navAPIPassword, navSalesOrderItemRequest.Document_No, navSalesOrderItemRequest.Line_No); NetworkCredential myCredentials = new NetworkCredential(navAPIUserName, navAPIPassword); HttpWebRequest salesOrderItemrequest = (HttpWebRequest)WebRequest.Create(serviceCall); salesOrderItemrequest.Credentials = myCredentials; salesOrderItemrequest.KeepAlive = false; salesOrderItemrequest.ContentType = "application/json"; salesOrderItemrequest.Method = "PATCH"; salesOrderItemrequest.Headers.Add(HttpRequestHeader.IfMatch, existingNavSalesOrderItem.DataETag); using (var navSalesOrderItemStreamWriter = new StreamWriter(salesOrderItemrequest.GetRequestStream())) { navSalesOrderItemJson = JsonConvert.SerializeObject(navSalesOrderItemRequest); navSalesOrderItemJson = navSalesOrderItemJson.Replace(dataToRemove, string.Empty); navSalesOrderItemStreamWriter.Write(navSalesOrderItemJson); } WebResponse response = salesOrderItemrequest.GetResponse(); using (Stream navSalesOrderItemResponseStream = response.GetResponseStream()) { using (TextReader navSalesOrderItemSyncReader = new StreamReader(navSalesOrderItemResponseStream)) { string navSalesOrderItemResponseString = navSalesOrderItemSyncReader.ReadToEnd(); using (var stringReader = new StringReader(navSalesOrderItemResponseString)) { navSalesOrderItemResponse = JsonConvert.DeserializeObject <NavSalesOrderItem>(navSalesOrderItemResponseString); } } } } catch (Exception exp) { _logger.Log(exp, string.Format("Error is occuring while Updating the Sales order Item: Request Url is: {0}, Request body json was {1}", serviceCall, navSalesOrderItemJson), string.Format("Sales order Item updation for JobId: {0}, Line number: {1}", navSalesOrderItemRequest.M4PL_Job_ID, navSalesOrderItemRequest.Line_No), LogType.Error); } isRecordUpdated = navSalesOrderItemResponse != null ? true : false; if (navSalesOrderItemResponse != null) { _commands.UpdateJobOrderItemMapping(navSalesOrderItemRequest.M4PLItemId, activeUser, jobIdList, Entities.EntitiesAlias.ShippingItem.ToString(), navSalesOrderItemRequest.Line_No, navSalesOrderItemRequest.Document_No); } return(navSalesOrderItemResponse); }
private static void UpdateSalesOrderItemDetails(ActiveUser activeUser, List <long> jobIdList, string navAPIUrl, string navAPIUserName, string navAPIPassword, string dimensionCode, string divisionCode, string soNumber, ref bool allLineItemsUpdated, ref string proFlag, bool isElectronicInvoice, List <SalesOrderItem> salesOrderItemRequest) { List <NavSalesOrderItemRequest> navSalesOrderItemRequest = null; if (salesOrderItemRequest != null && salesOrderItemRequest.Count > 0) { navSalesOrderItemRequest = new List <NavSalesOrderItemRequest>(); salesOrderItemRequest.ToList().ForEach(x => navSalesOrderItemRequest.Add(new NavSalesOrderItemRequest() { No = x.No, M4PLItemId = x.M4PLItemId, Qty_to_Invoice = x.Qty_to_Invoice, Qty_to_Ship = x.Qty_to_Ship, Quantity = x.Quantity, Planned_Delivery_Date = x.Planned_Delivery_Date, Shipment_Date = x.Shipment_Date, Planned_Shipment_Date = x.Planned_Shipment_Date, M4PL_Job_ID = x.M4PL_Job_ID, FilteredTypeField = x.FilteredTypeField, Document_No = x.Document_No, Line_No = x.Line_No, Type = x.Type, Shortcut_Dimension_1_Code = x.Shortcut_Dimension_1_Code, Shortcut_Dimension_2_Code = x.Shortcut_Dimension_2_Code })); } List <JobOrderItemMapping> jobOrderItemMapping = _commands.GetJobOrderItemMapping(jobIdList, Entities.EntitiesAlias.SalesOrder, isElectronicInvoice); NavSalesOrderItem navSalesOrderItemResponse = null; string deleteProFlag = null; bool allLineItemsDeleted = true; bool isRecordUpdated = true; bool isRecordDeleted = true; if (jobOrderItemMapping != null && jobOrderItemMapping.Count > 0) { DeleteNAVSalesOrderItem(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, isElectronicInvoice, allLineItemsUpdated, navSalesOrderItemRequest, jobOrderItemMapping, soNumber, ref deleteProFlag, ref allLineItemsDeleted, ref isRecordDeleted); } if (navSalesOrderItemRequest != null && navSalesOrderItemRequest.Count > 0) { foreach (var navSalesOrderItemRequestItem in navSalesOrderItemRequest) { navSalesOrderItemRequestItem.Shortcut_Dimension_2_Code = dimensionCode; navSalesOrderItemRequestItem.Shortcut_Dimension_1_Code = divisionCode; if (jobOrderItemMapping != null && jobOrderItemMapping.Count > 0 && jobOrderItemMapping.Where(x => x.EntityName == Entities.EntitiesAlias.ShippingItem.ToString() && x.LineNumber == navSalesOrderItemRequestItem.Line_No && x.Document_Number == navSalesOrderItemRequestItem.Document_No).Any()) { navSalesOrderItemResponse = UpdateSalesOrderItemForNAV(activeUser, navSalesOrderItemRequestItem, navAPIUrl, navAPIUserName, navAPIPassword, jobIdList, out isRecordUpdated); } else { navSalesOrderItemResponse = GenerateSalesOrderItemForNAV(activeUser, navSalesOrderItemRequestItem, navAPIUrl, navAPIUserName, navAPIPassword, jobIdList, out isRecordUpdated); } allLineItemsUpdated = !allLineItemsUpdated ? allLineItemsUpdated : isRecordUpdated; isRecordUpdated = true; navSalesOrderItemResponse = null; } proFlag = allLineItemsUpdated ? deleteProFlag : Entities.ProFlag.I.ToString(); _commands.UpdateJobProFlag(activeUser, proFlag, jobIdList, Entities.EntitiesAlias.SalesOrder); } }