public static NavPurchaseOrderItem GetPurchaseOrderItemForNAV(string navAPIUrl, string navAPIUserName, string navAPIPassword, string poNumber, int lineNo) { NavPurchaseOrderItem navPurchaseOrderItemResponse = null; string serviceCall = string.Format("{0}/PurchaseLine('Order', '{1}', {2})", navAPIUrl, poNumber, 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 navPurchaseOrderItemResponseStream = response.GetResponseStream()) { using (TextReader navPurchaseOrderItemReader = new StreamReader(navPurchaseOrderItemResponseStream)) { string responceString = navPurchaseOrderItemReader.ReadToEnd(); using (var stringReader = new StringReader(responceString)) { navPurchaseOrderItemResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <NavPurchaseOrderItem>(responceString); } } } } catch (Exception exp) { _logger.Log(exp, string.Format("Error is occuring while Getting the purchase order item: Request Url is: {0}", serviceCall), string.Format("Purchase order item get for Purchase Order: {0} and Line number {1}.", poNumber, lineNo), LogType.Error); } return(navPurchaseOrderItemResponse); }
private static NavPurchaseOrderItem UpdatePurchaseOrderItemForNAV(NavPurchaseOrderItemRequest navPurchaseOrderItemRequest, string navAPIUrl, string navAPIUserName, string navAPIPassword, ActiveUser activeUser, List <long> jobIdList, out bool isRecordUpdated) { NavPurchaseOrderItem navPurchaseOrderItemResponse = null; string navPurchaseOrderItemJson = string.Empty; string dataToRemove = string.Format("{0}:{1},", "\"M4PLItemId\"", navPurchaseOrderItemRequest.M4PLItemId); string serviceCall = string.Format("{0}/PurchaseLine('Order', '{1}', {2})", navAPIUrl, navPurchaseOrderItemRequest.Document_No, navPurchaseOrderItemRequest.Line_No); try { NavPurchaseOrderItem existingNavPurchaseOrderItem = GetPurchaseOrderItemForNAV(navAPIUrl, navAPIUserName, navAPIPassword, navPurchaseOrderItemRequest.Document_No, navPurchaseOrderItemRequest.Line_No); NetworkCredential myCredentials = new NetworkCredential(navAPIUserName, navAPIPassword); HttpWebRequest navPurchaseOrderItemrequest = (HttpWebRequest)WebRequest.Create(serviceCall); navPurchaseOrderItemrequest.Credentials = myCredentials; navPurchaseOrderItemrequest.KeepAlive = false; navPurchaseOrderItemrequest.ContentType = "application/json"; navPurchaseOrderItemrequest.Method = "PATCH"; navPurchaseOrderItemrequest.Headers.Add(HttpRequestHeader.IfMatch, existingNavPurchaseOrderItem.DataETag); using (var navPurchaseOrderItemStreamWriter = new StreamWriter(navPurchaseOrderItemrequest.GetRequestStream())) { navPurchaseOrderItemJson = JsonConvert.SerializeObject(navPurchaseOrderItemRequest); navPurchaseOrderItemJson = navPurchaseOrderItemJson.Replace(dataToRemove, string.Empty); navPurchaseOrderItemStreamWriter.Write(navPurchaseOrderItemJson); } WebResponse response = navPurchaseOrderItemrequest.GetResponse(); using (Stream navPurchaseOrderItemResponseStream = response.GetResponseStream()) { using (TextReader navSalesOrderItemSyncReader = new StreamReader(navPurchaseOrderItemResponseStream)) { string navSalesOrderItemResponseString = navSalesOrderItemSyncReader.ReadToEnd(); using (var stringReader = new StringReader(navSalesOrderItemResponseString)) { navPurchaseOrderItemResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <NavPurchaseOrderItem>(navSalesOrderItemResponseString); } } } } catch (Exception exp) { _logger.Log(exp, string.Format("Error is occuring while Updating the purchase order item: Request Url is: {0}, Request body json was {1}", serviceCall, navPurchaseOrderItemJson), string.Format("Purchase order item update for JobId: {0}, Line number: {1}", navPurchaseOrderItemRequest.M4PL_Job_ID, navPurchaseOrderItemRequest.Line_No), LogType.Error); } isRecordUpdated = navPurchaseOrderItemResponse == null ? false : true; if (navPurchaseOrderItemResponse != null) { _commands.UpdateJobOrderItemMapping(navPurchaseOrderItemRequest.M4PLItemId, activeUser, jobIdList, Entities.EntitiesAlias.PurchaseOrderItem.ToString(), navPurchaseOrderItemRequest.Line_No, navPurchaseOrderItemRequest.Document_No); } return(navPurchaseOrderItemResponse); }
private static void UpdateLineItemInformationForPurchaseOrder(ActiveUser activeUser, List <long> jobIdList, string navAPIUrl, string navAPIUserName, string navAPIPassword, string dimensionCode, string divisionCode, string poNumber, out string proFlag, bool isElectronicInvoice, List <PurchaseOrderItem> purchaseOrderItemRequest) { bool allLineItemsUpdated = true; string deleteProFlag = null; bool allLineItemsDeleted = true; List <NavPurchaseOrderItemRequest> navPurchaseOrderItemRequest = null; if (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0) { navPurchaseOrderItemRequest = new List <NavPurchaseOrderItemRequest>(); purchaseOrderItemRequest.ToList().ForEach(x => navPurchaseOrderItemRequest.Add(new NavPurchaseOrderItemRequest() { No = x.No, M4PLItemId = x.M4PLItemId, Document_No = x.Document_No, M4PL_Job_ID = x.M4PL_Job_ID, Quantity = x.Quantity, Qty_to_Receive = x.Qty_to_Receive, Qty_to_Invoice = x.Qty_to_Invoice, Promised_Receipt_Date = x.Promised_Receipt_Date, Expected_Receipt_Date = x.Expected_Receipt_Date, Order_Date = x.Order_Date, Line_No = x.Line_No, Type = x.Type, FilteredTypeField = x.FilteredTypeField, 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.PurchaseOrder, isElectronicInvoice); bool isRecordUpdated = true; bool isRecordDeleted = true; if (jobOrderItemMapping != null && jobOrderItemMapping.Count > 0) { DeleteLineItemInformationForPurchaseOrder(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, isElectronicInvoice, allLineItemsUpdated, navPurchaseOrderItemRequest, jobOrderItemMapping, poNumber, ref deleteProFlag, ref allLineItemsDeleted, ref isRecordDeleted); } NavPurchaseOrderItem navPurchaseOrderItemResponse = null; if (navPurchaseOrderItemRequest != null && navPurchaseOrderItemRequest.Count > 0) { foreach (var navPurchaseOrderItemRequestItem in navPurchaseOrderItemRequest) { navPurchaseOrderItemRequestItem.Shortcut_Dimension_2_Code = dimensionCode; navPurchaseOrderItemRequestItem.Shortcut_Dimension_1_Code = divisionCode; if (jobOrderItemMapping != null && jobOrderItemMapping.Count > 0 && jobOrderItemMapping.Where(x => x.EntityName == Entities.EntitiesAlias.PurchaseOrderItem.ToString() && x.LineNumber == navPurchaseOrderItemRequestItem.Line_No && x.M4PLItemId == navPurchaseOrderItemRequestItem.M4PLItemId).Any()) { navPurchaseOrderItemResponse = UpdatePurchaseOrderItemForNAV(navPurchaseOrderItemRequestItem, navAPIUrl, navAPIUserName, navAPIPassword, activeUser, jobIdList, out isRecordUpdated); } else { navPurchaseOrderItemResponse = GeneratePurchaseOrderItemForNAV(navPurchaseOrderItemRequestItem, navAPIUrl, navAPIUserName, navAPIPassword, activeUser, jobIdList, out isRecordUpdated); } allLineItemsUpdated = !allLineItemsUpdated ? allLineItemsUpdated : isRecordUpdated; isRecordUpdated = true; navPurchaseOrderItemResponse = null; } } proFlag = allLineItemsUpdated ? deleteProFlag : Entities.ProFlag.I.ToString(); _commands.UpdateJobProFlag(activeUser, proFlag, jobIdList, Entities.EntitiesAlias.PurchaseOrder); }