Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }