Beispiel #1
0
        public NavSalesOrderCreationResponse CreateOrderInNAVFromM4PLJob(List <long> jobIdList)
        {
            NavSalesOrderCreationResponse result = null;

            Entities.Job.Job jobResult = _jobCommands.GetJobByProgram(ActiveUser, jobIdList.FirstOrDefault(), 0);
            if (jobResult != null && jobResult.JobCompleted && jobResult.JobDeliveryDateTimeActual.HasValue && jobResult.JobOriginDateTimeActual.HasValue)
            {
                bool isDeliveryChargeRemovalRequired = false;
                if (!string.IsNullOrEmpty(jobResult.JobSONumber) || !string.IsNullOrEmpty(jobResult.JobElectronicInvoiceSONumber))
                {
                    isDeliveryChargeRemovalRequired = false;
                }
                else
                {
                    isDeliveryChargeRemovalRequired = _jobCommands.GetJobDeliveryChargeRemovalRequired(Convert.ToInt64(jobResult.Id), M4PLBusinessConfiguration.ElectroluxCustomerId.ToLong());
                }

                if (isDeliveryChargeRemovalRequired)
                {
                    _jobCommands.UpdateJobPriceOrCostCodeStatus(jobResult.Id, (int)StatusType.Delete, M4PLBusinessConfiguration.ElectroluxCustomerId.ToLong());
                }

                try
                {
                    result = CreateSalesOrderForRollup(jobIdList, jobResult);
                }
                catch (Exception exp)
                {
                    M4PL.DataAccess.Logger.ErrorLogger.Log(exp, "Error is occuring while create/update the order in NAV from M4PL.", "CreateOrderInNAVFromM4PLJob", Utilities.Logger.LogType.Error);
                }

                if (isDeliveryChargeRemovalRequired)
                {
                    _jobCommands.UpdateJobPriceOrCostCodeStatus((long)jobIdList?.FirstOrDefault(), (int)StatusType.Active, M4PLBusinessConfiguration.ElectroluxCustomerId.ToLong());
                }
            }

            return(result);
        }
Beispiel #2
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);
                            }
                        }
                    }
                }
            }
        }
Beispiel #3
0
        public static DataTable GetJobCostCodeReportDataTable(ActiveUser activeUser, long jobId, List <PostedPurchaseOrderItem> navPurchaseOrderItem)
        {
            Entities.Job.Job jobDetails           = DataAccess.Job.JobCommands.GetJobByProgram(activeUser, jobId, 0);
            DataTable        tblJobCostCodeReport = new DataTable();

            tblJobCostCodeReport.Columns.Add("Job ID");
            tblJobCostCodeReport.Columns.Add("Scheduled Delivery Date");
            tblJobCostCodeReport.Columns.Add("Arrival Date Planned");
            tblJobCostCodeReport.Columns.Add("Job Gateway Scheduled");
            tblJobCostCodeReport.Columns.Add("Site Code");
            tblJobCostCodeReport.Columns.Add("Contract #");
            tblJobCostCodeReport.Columns.Add("Plant Code");
            tblJobCostCodeReport.Columns.Add("Quantity Actual");
            tblJobCostCodeReport.Columns.Add("Parts Actual");
            tblJobCostCodeReport.Columns.Add("Cubes Unit");
            tblJobCostCodeReport.Columns.Add("Charge Code");
            tblJobCostCodeReport.Columns.Add("Title");
            tblJobCostCodeReport.Columns.Add("Rate");
            tblJobCostCodeReport.Columns.Add("Service Mode");
            tblJobCostCodeReport.Columns.Add("Customer Purchase Order");
            tblJobCostCodeReport.Columns.Add("Brand");
            tblJobCostCodeReport.Columns.Add("Status");
            tblJobCostCodeReport.Columns.Add("Delivery Site POC");
            tblJobCostCodeReport.Columns.Add("Delivery Site Phone");
            tblJobCostCodeReport.Columns.Add("Delivery Site POC 2");
            tblJobCostCodeReport.Columns.Add("Phone POC Email");
            tblJobCostCodeReport.Columns.Add("Site Name");
            tblJobCostCodeReport.Columns.Add("Delivery Site Name");
            tblJobCostCodeReport.Columns.Add("Delivery Address");
            tblJobCostCodeReport.Columns.Add("Delivery Address2");
            tblJobCostCodeReport.Columns.Add("Delivery City");
            tblJobCostCodeReport.Columns.Add("Delivery State");
            tblJobCostCodeReport.Columns.Add("Delivery Postal Code");
            tblJobCostCodeReport.Columns.Add("Delivery Date Actual");
            tblJobCostCodeReport.Columns.Add("Origin Date Actual");
            tblJobCostCodeReport.Columns.Add("Ordered Date");

            if (navPurchaseOrderItem?.Count > 0)
            {
                foreach (var purchaseOrderItem in navPurchaseOrderItem)
                {
                    var row = tblJobCostCodeReport.NewRow();
                    row["Job ID"] = jobDetails.Id;
                    row["Scheduled Delivery Date"] = jobDetails.JobDeliveryDateTimePlanned;
                    row["Arrival Date Planned"]    = jobDetails.JobOriginDateTimePlanned;
                    row["Job Gateway Scheduled"]   = jobDetails.JobGatewayStatus;
                    row["Site Code"]               = jobDetails.JobSiteCode;
                    row["Contract #"]              = jobDetails.JobCustomerSalesOrder;
                    row["Plant Code"]              = jobDetails.PlantIDCode;
                    row["Quantity Actual"]         = jobDetails.JobQtyActual;
                    row["Parts Actual"]            = jobDetails.JobPartsActual;
                    row["Cubes Unit"]              = jobDetails.JobTotalCubes;
                    row["Charge Code"]             = string.IsNullOrEmpty(purchaseOrderItem.Cross_Reference_No) ? purchaseOrderItem.No : purchaseOrderItem.Cross_Reference_No;
                    row["Title"]                   = purchaseOrderItem.Description;
                    row["Rate"]                    = purchaseOrderItem.Unit_Cost_LCY;
                    row["Service Mode"]            = jobDetails.JobServiceMode;
                    row["Customer Purchase Order"] = jobDetails.JobCustomerPurchaseOrder;
                    row["Brand"]                   = jobDetails.JobCarrierContract;
                    row["Status"]                  = jobDetails.StatusId == 1 ? "Active" : jobDetails.StatusId == 2 ? "InActive" : "Archive";
                    row["Delivery Site POC"]       = jobDetails.JobDeliverySitePOC;
                    row["Delivery Site Phone"]     = jobDetails.JobDeliverySitePOCPhone;
                    row["Delivery Site POC 2"]     = jobDetails.JobDeliverySitePOCPhone2;
                    row["Phone POC Email"]         = jobDetails.JobDeliverySitePOCEmail;
                    row["Site Name"]               = jobDetails.JobOriginSiteName;
                    row["Delivery Site Name"]      = jobDetails.JobDeliverySiteName;
                    row["Delivery Address"]        = jobDetails.JobDeliveryStreetAddress;
                    row["Delivery Address2"]       = jobDetails.JobDeliveryStreetAddress2;
                    row["Delivery City"]           = jobDetails.JobDeliveryCity;
                    row["Delivery State"]          = jobDetails.JobDeliveryState;
                    row["Delivery Postal Code"]    = jobDetails.JobDeliveryPostalCode;
                    row["Delivery Date Actual"]    = jobDetails.JobDeliveryDateTimeActual;
                    row["Origin Date Actual"]      = jobDetails.JobOriginDateTimeActual;
                    row["Ordered Date"]            = jobDetails.JobOrderedDate;
                    tblJobCostCodeReport.Rows.Add(row);
                    tblJobCostCodeReport.AcceptChanges();
                }
            }

            return(tblJobCostCodeReport);
        }
Beispiel #4
0
        private NavSalesOrderCreationResponse CreateSalesOrderForRollup(List <long> jobIdList, Entities.Job.Job jobResult)
        {
            bool isElectronicInvoice = false;
            bool isManualInvoice     = false;
            List <SalesOrderItem>         manualSalesOrderItemRequest     = null;
            List <SalesOrderItem>         electronicSalesOrderItemRequest = null;
            NavSalesOrderCreationResponse navSalesOrderCreationResponse   = new NavSalesOrderCreationResponse();
            List <SalesOrderItem>         salesOrderItemRequest           = _commands.GetSalesOrderItemCreationData(ActiveUser, jobIdList, Entities.EntitiesAlias.ShippingItem);

            if (salesOrderItemRequest == null || (salesOrderItemRequest != null && salesOrderItemRequest.Count == 0))
            {
                isManualInvoice     = true;
                isElectronicInvoice = false;
            }
            else if (salesOrderItemRequest != null && salesOrderItemRequest.Count > 0)
            {
                isElectronicInvoice             = salesOrderItemRequest.Where(x => x.Electronic_Invoice).Any() ? true : false;
                isManualInvoice                 = salesOrderItemRequest.Where(x => !x.Electronic_Invoice).Any() ? true : false;
                manualSalesOrderItemRequest     = isManualInvoice ? salesOrderItemRequest.Where(x => !x.Electronic_Invoice).ToList() : null;
                electronicSalesOrderItemRequest = isElectronicInvoice ? salesOrderItemRequest.Where(x => x.Electronic_Invoice).ToList() : null;
            }

            if ((!jobResult.JobElectronicInvoice || (salesOrderItemRequest != null && salesOrderItemRequest.Count > 0 && !salesOrderItemRequest.Where(x => x.Electronic_Invoice).Any())) && !string.IsNullOrEmpty(jobResult.JobElectronicInvoiceSONumber))
            {
                bool isDeleted = false;
                NavSalesOrderHelper.DeleteSalesOrderForNAV(ActiveUser, jobResult.Id, true, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.JobElectronicInvoiceSONumber, out isDeleted);
                jobResult.JobElectronicInvoiceSONumber = isDeleted ? string.Empty : jobResult.JobElectronicInvoiceSONumber;
            }

            if (!string.IsNullOrEmpty(jobResult.JobSONumber) && ((salesOrderItemRequest == null || (salesOrderItemRequest != null && salesOrderItemRequest.Count == 0)) || (salesOrderItemRequest != null && salesOrderItemRequest.Count > 0 && !salesOrderItemRequest.Where(x => !x.Electronic_Invoice).Any())))
            {
                bool isDeleted = false;
                NavSalesOrderHelper.DeleteSalesOrderForNAV(ActiveUser, jobResult.Id, false, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.JobSONumber, out isDeleted);
                jobResult.JobSONumber = isDeleted ? string.Empty : jobResult.JobSONumber;
            }

            if (!jobResult.JobElectronicInvoice || (jobResult.JobElectronicInvoice && (salesOrderItemRequest == null || (salesOrderItemRequest != null && salesOrderItemRequest.Count == 0))) || (jobResult.JobElectronicInvoice && salesOrderItemRequest != null && salesOrderItemRequest.Count > 0 && !salesOrderItemRequest.Where(x => x.Electronic_Invoice).Any()))
            {
                if (!jobResult.JobElectronicInvoice)
                {
                    if (string.IsNullOrEmpty(jobResult.JobSONumber))
                    {
                        navSalesOrderCreationResponse.ManualNavSalesOrder = NavSalesOrderHelper.StartOrderCreationProcessForNAV(ActiveUser, jobIdList, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, jobResult.JobElectronicInvoice, salesOrderItemRequest);
                    }
                    else
                    {
                        navSalesOrderCreationResponse.ManualNavSalesOrder = NavSalesOrderHelper.StartOrderUpdationProcessForNAV(ActiveUser, jobIdList, jobResult.JobSONumber, string.IsNullOrEmpty(jobResult.JobCustomerPurchaseOrder) ? jobResult.JobElectronicInvoicePONumber : jobResult.JobCustomerPurchaseOrder, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, jobResult.JobElectronicInvoice, salesOrderItemRequest);
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(jobResult.JobElectronicInvoiceSONumber))
                    {
                        navSalesOrderCreationResponse.ElectronicNavSalesOrder = NavSalesOrderHelper.StartOrderCreationProcessForNAV(ActiveUser, jobIdList, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, jobResult.JobElectronicInvoice, salesOrderItemRequest);
                    }
                    else
                    {
                        navSalesOrderCreationResponse.ElectronicNavSalesOrder = NavSalesOrderHelper.StartOrderUpdationProcessForNAV(ActiveUser, jobIdList, jobResult.JobElectronicInvoiceSONumber, string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber) ? jobResult.JobCustomerPurchaseOrder : jobResult.JobElectronicInvoicePONumber, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, jobResult.JobElectronicInvoice, salesOrderItemRequest);
                    }
                }
            }
            else
            {
                if (isManualInvoice)
                {
                    if (string.IsNullOrEmpty(jobResult.JobSONumber))
                    {
                        navSalesOrderCreationResponse.ManualNavSalesOrder = NavSalesOrderHelper.StartOrderCreationProcessForNAV(ActiveUser, jobIdList, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, false, manualSalesOrderItemRequest);
                    }
                    else
                    {
                        navSalesOrderCreationResponse.ManualNavSalesOrder = NavSalesOrderHelper.StartOrderUpdationProcessForNAV(ActiveUser, jobIdList, jobResult.JobSONumber, jobResult.JobCustomerPurchaseOrder, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, false, manualSalesOrderItemRequest);
                    }
                }

                if (isElectronicInvoice)
                {
                    if (string.IsNullOrEmpty(jobResult.JobElectronicInvoiceSONumber))
                    {
                        navSalesOrderCreationResponse.ElectronicNavSalesOrder = NavSalesOrderHelper.StartOrderCreationProcessForNAV(ActiveUser, jobIdList, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, true, electronicSalesOrderItemRequest);
                    }
                    else
                    {
                        navSalesOrderCreationResponse.ElectronicNavSalesOrder = NavSalesOrderHelper.StartOrderUpdationProcessForNAV(ActiveUser, jobIdList, jobResult.JobElectronicInvoiceSONumber, jobResult.JobElectronicInvoicePONumber, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.VendorERPId, true, electronicSalesOrderItemRequest);
                    }
                }
            }

            if (!string.IsNullOrEmpty(jobResult.VendorERPId))
            {
                //Task.Run(() =>
                //{
                NavPurchaseOrderHelper.PurchaseOrderCreationProcessForNAV(ActiveUser, jobIdList, M4PLBusinessConfiguration.NavAPIUrl, M4PLBusinessConfiguration.NavAPIUserName, M4PLBusinessConfiguration.NavAPIPassword, jobResult.JobElectronicInvoice);
                //});
            }

            return(navSalesOrderCreationResponse);
        }