コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                            }
                        }
                    }
                }
            }
        }
コード例 #4
0
 public virtual NavPurchaseOrder Put(NavPurchaseOrder navPurchaseOrder)
 {
     _navPurchaseOrderCommands.ActiveUser = Models.ApiContext.ActiveUser;
     return(_navPurchaseOrderCommands.Put(navPurchaseOrder));
 }