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); }
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 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); }
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); }