public static NavPurchaseOrder GetPurchaseOrderForNAV(string navAPIUrl, string navAPIUserName, string navAPIPassword, string poNumber) { NavPurchaseOrder navPurchaseOrderResponse = null; string serviceCall = string.Format("{0}/PurchaseOrder('Order', '{1}')", navAPIUrl, poNumber); 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 navPurchaseOrderResponseStream = response.GetResponseStream()) { using (TextReader navPurchaseOrderReader = new StreamReader(navPurchaseOrderResponseStream)) { string responceString = navPurchaseOrderReader.ReadToEnd(); using (var stringReader = new StringReader(responceString)) { navPurchaseOrderResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <NavPurchaseOrder>(responceString); } } } } catch (Exception exp) { _logger.Log(exp, string.Format("Error is occuring while Getting the purchase order: Request Url is: {0}.", serviceCall), string.Format("Get the Purchase Order Information for PONumber: {0}", poNumber), LogType.Error); } return(navPurchaseOrderResponse); }
public static NavPurchaseOrder UpdatePurchaseOrderForNAV(ActiveUser activeUser, List <long> jobIdList, string poNumer, string navAPIUrl, string navAPIUserName, string navAPIPassword, bool electronicInvoice, List <PurchaseOrderItem> purchaseOrderItemRequest) { string navPurchaseOrderJson = string.Empty; string dimensionCode = string.Empty; string divisionCode = string.Empty; NavPurchaseOrder navPurchaseOrderResponse = null; string proFlag = null; Newtonsoft.Json.Linq.JObject jsonObject = null; string serviceCall = string.Format("{0}/PurchaseOrder('Order', '{1}')", navAPIUrl, poNumer); try { NavPurchaseOrder existingSalesOrderData = GetPurchaseOrderForNAV(navAPIUrl, navAPIUserName, navAPIPassword, poNumer); NavPurchaseOrderRequest navPurchaseOrderRequest = _purchaseCommands.GetPurchaseOrderCreationData(activeUser, jobIdList, Entities.EntitiesAlias.PurchaseOrder); if (navPurchaseOrderRequest == null) { return(null); } var dimensions = CommonCommands.GetSalesOrderDimensionValues(navAPIUserName, navAPIPassword, navAPIUrl); if (dimensions != null && dimensions.NavSalesOrderDimensionValues != null && dimensions.NavSalesOrderDimensionValues.Count > 0) { divisionCode = dimensions.NavSalesOrderDimensionValues.Where(x => !string.IsNullOrEmpty(x.Dimension_Code) && x.Dimension_Code.ToUpper() == "DIVISION" && x.ERPId == navPurchaseOrderRequest.Sell_to_Customer_No).Any() ? dimensions.NavSalesOrderDimensionValues.Where(x => !string.IsNullOrEmpty(x.Dimension_Code) && x.Dimension_Code.ToUpper() == "DIVISION" && x.ERPId == navPurchaseOrderRequest.Sell_to_Customer_No).FirstOrDefault().Code : string.Empty; if (!string.IsNullOrEmpty(navPurchaseOrderRequest.Ship_from_City) && !string.IsNullOrEmpty(navPurchaseOrderRequest.Ship_from_County)) { string dimensionMatchCode = navPurchaseOrderRequest.Ship_from_City.Length >= 3 ? string.Format("{0}{1}", navPurchaseOrderRequest.Ship_from_City.Substring(0, 3), navPurchaseOrderRequest.Ship_from_County) : string.Empty; if (!string.IsNullOrEmpty(dimensionMatchCode)) { dimensionCode = dimensions.NavSalesOrderDimensionValues.Where(codeMatch => !string.IsNullOrEmpty(codeMatch.Code) && codeMatch.Code.Length > 4 && codeMatch.Code.Substring(codeMatch.Code.Length - 5).ToUpper() == dimensionMatchCode.ToUpper()).Any() ? dimensions.NavSalesOrderDimensionValues.Where(codeMatch => !string.IsNullOrEmpty(codeMatch.Code) && codeMatch.Code.Length > 4 && codeMatch.Code.Substring(codeMatch.Code.Length - 5).ToUpper() == dimensionMatchCode.ToUpper()).FirstOrDefault().Code : dimensionCode; } } } navPurchaseOrderRequest.Shortcut_Dimension_2_Code = dimensionCode; navPurchaseOrderRequest.Shortcut_Dimension_1_Code = divisionCode; navPurchaseOrderRequest.Electronic_Invoice = electronicInvoice; NetworkCredential myCredentials = new NetworkCredential(navAPIUserName, navAPIPassword); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceCall); request.Credentials = myCredentials; request.KeepAlive = false; request.ContentType = "application/json"; request.Method = "PATCH"; request.Headers.Add(HttpRequestHeader.IfMatch, existingSalesOrderData.DataETag); using (var streamWriter = new StreamWriter(request.GetRequestStream())) { navPurchaseOrderJson = JsonConvert.SerializeObject(navPurchaseOrderRequest); jsonObject = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(navPurchaseOrderJson); jsonObject.Property("Ship_from_City").Remove(); jsonObject.Property("Ship_from_County").Remove(); navPurchaseOrderJson = jsonObject.ToString(); streamWriter.Write(navPurchaseOrderJson); } WebResponse response = request.GetResponse(); using (Stream navPurchaseOrderResponseStream = response.GetResponseStream()) { using (TextReader navPurchaseOrderReader = new StreamReader(navPurchaseOrderResponseStream)) { string responceString = navPurchaseOrderReader.ReadToEnd(); using (var stringReader = new StringReader(responceString)) { navPurchaseOrderResponse = Newtonsoft.Json.JsonConvert.DeserializeObject <NavPurchaseOrder>(responceString); } } } if (navPurchaseOrderResponse != null && !string.IsNullOrWhiteSpace(navPurchaseOrderResponse.No)) { if (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0) { purchaseOrderItemRequest.ForEach(x => x.Document_No = navPurchaseOrderResponse.No); } UpdateLineItemInformationForPurchaseOrder(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, dimensionCode, divisionCode, navPurchaseOrderResponse.No, out proFlag, electronicInvoice, purchaseOrderItemRequest); } } catch (Exception exp) { proFlag = Entities.ProFlag.H.ToString(); _logger.Log(exp, string.Format("Error is occuring while Updating the purchase order: Request Url is: {0}, Request body json was {1}", serviceCall, navPurchaseOrderJson), string.Format("Purchase order updation for JobId: {0}", Newtonsoft.Json.JsonConvert.SerializeObject(jobIdList)), LogType.Error); } _commands.UpdateJobProFlag(activeUser, proFlag, jobIdList, Entities.EntitiesAlias.PurchaseOrder); return(navPurchaseOrderResponse); }
public static void PurchaseOrderCreationProcessForNAV(ActiveUser activeUser, List <long> jobIdList, string navAPIUrl, string navAPIUserName, string navAPIPassword, bool electronicInvoice) { bool isElectronicInvoice = false; bool isManualInvoice = false; NavPurchaseOrder manualPurchaseOrder = null; NavPurchaseOrder electronicPurchaseOrder = null; List <PurchaseOrderItem> manualPurchaseOrderItemRequest = null; List <PurchaseOrderItem> electronicPurchaseOrderItemRequest = null; List <PurchaseOrderItem> purchaseOrderItemRequest = _commands.GetPurchaseOrderItemCreationData(activeUser, jobIdList, Entities.EntitiesAlias.PurchaseOrderItem); if (purchaseOrderItemRequest == null || (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count == 0)) { isManualInvoice = true; isElectronicInvoice = false; } else if (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0) { isElectronicInvoice = purchaseOrderItemRequest.Where(x => x.Electronic_Invoice).Any() ? true : false; isManualInvoice = purchaseOrderItemRequest.Where(x => !x.Electronic_Invoice).Any() ? true : false; manualPurchaseOrderItemRequest = isManualInvoice ? purchaseOrderItemRequest.Where(x => !x.Electronic_Invoice).ToList() : null; electronicPurchaseOrderItemRequest = isElectronicInvoice ? purchaseOrderItemRequest.Where(x => x.Electronic_Invoice).ToList() : null; } if (jobIdList != null && jobIdList.Count > 0) { foreach (var currentJob in jobIdList) { Entities.Job.Job jobData = _jobCommands.GetJobByProgram(activeUser, currentJob, 0); if ((!jobData.JobElectronicInvoice || (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0 && !purchaseOrderItemRequest.Where(x => x.Electronic_Invoice).Any())) && !string.IsNullOrEmpty(jobData.JobElectronicInvoicePONumber)) { bool isDeleted = false; DeletePurchaseOrderForNAV(jobData.JobElectronicInvoicePONumber, jobData.Id, true, navAPIUrl, navAPIUserName, navAPIPassword, out isDeleted); jobData.JobElectronicInvoicePONumber = isDeleted ? string.Empty : jobData.JobElectronicInvoicePONumber; } if (!string.IsNullOrEmpty(jobData.JobPONumber) && ((purchaseOrderItemRequest == null || (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count == 0)) || (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0 && !purchaseOrderItemRequest.Where(x => !x.Electronic_Invoice).Any()))) { bool isDeleted = false; DeletePurchaseOrderForNAV(jobData.JobPONumber, jobData.Id, false, navAPIUrl, navAPIUserName, navAPIPassword, out isDeleted); jobData.JobPONumber = isDeleted ? string.Empty : jobData.JobPONumber; } if (!jobData.JobElectronicInvoice || (jobData.JobElectronicInvoice && (purchaseOrderItemRequest == null || (purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count == 0))) || (jobData.JobElectronicInvoice && purchaseOrderItemRequest != null && purchaseOrderItemRequest.Count > 0 && !purchaseOrderItemRequest.Where(x => x.Electronic_Invoice).Any())) { if (jobData.JobElectronicInvoice) { if (string.IsNullOrEmpty(jobData.JobElectronicInvoicePONumber)) { manualPurchaseOrder = GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, jobData.JobElectronicInvoice, purchaseOrderItemRequest); } else { manualPurchaseOrder = UpdatePurchaseOrderForNAV(activeUser, jobIdList, string.IsNullOrEmpty(jobData.JobElectronicInvoicePONumber) ? jobData.JobPONumber : jobData.JobElectronicInvoicePONumber, navAPIUrl, navAPIUserName, navAPIPassword, jobData.JobElectronicInvoice, purchaseOrderItemRequest); } } else { if (string.IsNullOrEmpty(jobData.JobPONumber)) { manualPurchaseOrder = GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, jobData.JobElectronicInvoice, purchaseOrderItemRequest); } else { manualPurchaseOrder = UpdatePurchaseOrderForNAV(activeUser, jobIdList, string.IsNullOrEmpty(jobData.JobPONumber) ? jobData.JobElectronicInvoicePONumber : jobData.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, jobData.JobElectronicInvoice, purchaseOrderItemRequest); } } } else { if (isManualInvoice) { if (string.IsNullOrEmpty(jobData.JobPONumber)) { manualPurchaseOrder = GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, false, manualPurchaseOrderItemRequest); } else { manualPurchaseOrder = UpdatePurchaseOrderForNAV(activeUser, jobIdList, string.IsNullOrEmpty(jobData.JobPONumber) ? jobData.JobElectronicInvoicePONumber : jobData.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, false, manualPurchaseOrderItemRequest); } } if (isElectronicInvoice) { if (string.IsNullOrEmpty(jobData.JobElectronicInvoicePONumber)) { electronicPurchaseOrder = GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, true, electronicPurchaseOrderItemRequest); } else { electronicPurchaseOrder = UpdatePurchaseOrderForNAV(activeUser, jobIdList, !string.IsNullOrEmpty(jobData.JobElectronicInvoicePONumber) ? jobData.JobElectronicInvoicePONumber : jobData.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, true, electronicPurchaseOrderItemRequest); } } } } } }
public virtual NavPurchaseOrder Put(NavPurchaseOrder navPurchaseOrder) { _navPurchaseOrderCommands.ActiveUser = Models.ApiContext.ActiveUser; return(_navPurchaseOrderCommands.Put(navPurchaseOrder)); }