コード例 #1
0
        public M4PLPurchaseOrderCreationResponse GeneratePurchaseOrderInNav(long jobId, string navAPIUrl, string navAPIUserName, string navAPIPassword, long customerId, ActiveUser activeUser)
        {
            var jobResult = DataAccess.Job.JobCommands.Get(activeUser, Convert.ToInt64(jobId));
            M4PLPurchaseOrderCreationResponse m4PLPurchaseOrderCreationResponse = null;

            if (jobResult != null && jobResult.JobCompleted && jobResult.JobOriginDateTimeActual.HasValue && jobResult.JobDeliveryDateTimeActual.HasValue)
            {
                List <long> jobIdList                                       = new List <long>();
                bool        isElectronicInvoice                             = false;
                bool        isManualInvoice                                 = false;
                bool        isDeliveryChargeRemovalRequired                 = false;
                bool        isPurchaseItemPresent                           = false;
                List <PurchaseOrderItem> manualPurchaseOrderItemRequest     = null;
                List <PurchaseOrderItem> electronicPurchaseOrderItemRequest = null;
                jobIdList.Add(jobResult.Id);
                m4PLPurchaseOrderCreationResponse = new M4PLPurchaseOrderCreationResponse();
                if (!jobResult.IsParentOrder)
                {
                    isDeliveryChargeRemovalRequired = DataAccess.Job.JobCommands.GetJobDeliveryChargeRemovalRequired(Convert.ToInt64(jobResult.Id), customerId);
                }

                if (isDeliveryChargeRemovalRequired)
                {
                    DataAccess.Job.JobCommands.UpdateJobCostCodeStatus(jobResult.Id, (int)StatusType.Delete, customerId);
                }

                List <PurchaseOrderItem> purchaseOrderItemRequest = DataAccess.Finance.NavSalesOrderCommand.GetPurchaseOrderItemCreationData(activeUser, jobIdList, Entities.EntitiesAlias.PurchaseOrderItem);
                isPurchaseItemPresent = purchaseOrderItemRequest?.Any() ?? false;

                isManualInvoice = !isPurchaseItemPresent || (isPurchaseItemPresent && purchaseOrderItemRequest.Any(x => !x.Electronic_Invoice)) ? true : false;
                manualPurchaseOrderItemRequest = isPurchaseItemPresent && isManualInvoice?purchaseOrderItemRequest.Where(x => !x.Electronic_Invoice).ToList() : null;

                isElectronicInvoice = isPurchaseItemPresent && purchaseOrderItemRequest.Any(x => x.Electronic_Invoice) ? true : false;
                electronicPurchaseOrderItemRequest = isElectronicInvoice ? purchaseOrderItemRequest.Where(x => x.Electronic_Invoice).ToList() : null;

                if (!string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber) && (!jobResult.JobElectronicInvoice || !isElectronicInvoice))
                {
                    bool isDeleted = false;
                    NavPurchaseOrderHelper.DeletePurchaseOrderForNAV(jobResult.JobElectronicInvoicePONumber, jobResult.Id, true, navAPIUrl, navAPIUserName, navAPIPassword, out isDeleted);
                    jobResult.JobElectronicInvoicePONumber = isDeleted ? string.Empty : jobResult.JobElectronicInvoicePONumber;
                }

                if (!string.IsNullOrEmpty(jobResult.JobPONumber) && (!isManualInvoice || !isPurchaseItemPresent))
                {
                    bool isDeleted = false;
                    NavPurchaseOrderHelper.DeletePurchaseOrderForNAV(jobResult.JobPONumber, jobResult.Id, false, navAPIUrl, navAPIUserName, navAPIPassword, out isDeleted);
                    jobResult.JobPONumber = isDeleted ? string.Empty : jobResult.JobPONumber;
                }

                if (!string.IsNullOrEmpty(jobResult.JobPONumber))
                {
                    var existingPurchaseOrder = NavPurchaseOrderHelper.GetPurchaseOrderForNAV(navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobPONumber);
                    if (existingPurchaseOrder == null)
                    {
                        M4PL.DataAccess.Finance.NavSalesOrderCommand.DeleteJobOrderMapping(jobResult.Id, false, Entities.EntitiesAlias.PurchaseOrder.ToString());
                        jobResult.JobPONumber = string.Empty;
                    }
                }

                if (!string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber))
                {
                    var existingElectronicPurchaseOrder = NavPurchaseOrderHelper.GetPurchaseOrderForNAV(navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobElectronicInvoicePONumber);
                    if (existingElectronicPurchaseOrder == null)
                    {
                        M4PL.DataAccess.Finance.NavSalesOrderCommand.DeleteJobOrderMapping(jobResult.Id, true, Entities.EntitiesAlias.PurchaseOrder.ToString());
                        jobResult.JobElectronicInvoicePONumber = string.Empty;
                    }
                }

                if (!jobResult.JobElectronicInvoice)
                {
                    if (string.IsNullOrEmpty(jobResult.JobPONumber))
                    {
                        m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobElectronicInvoice, purchaseOrderItemRequest);
                    }
                    else
                    {
                        m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.UpdatePurchaseOrderForNAV(activeUser, jobIdList,
                                                                                                                                 string.IsNullOrEmpty(jobResult.JobPONumber) ? jobResult.JobElectronicInvoicePONumber : jobResult.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobElectronicInvoice, purchaseOrderItemRequest);
                    }
                }
                else if (jobResult.JobElectronicInvoice && (!isPurchaseItemPresent || !isElectronicInvoice))
                {
                    if (string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber))
                    {
                        m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobElectronicInvoice, purchaseOrderItemRequest);
                    }
                    else
                    {
                        m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.UpdatePurchaseOrderForNAV(activeUser, jobIdList,
                                                                                                                                 string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber) ? jobResult.JobPONumber : jobResult.JobElectronicInvoicePONumber,
                                                                                                                                 navAPIUrl, navAPIUserName, navAPIPassword, jobResult.JobElectronicInvoice, purchaseOrderItemRequest);
                    }
                }
                else
                {
                    if (isManualInvoice)
                    {
                        if (string.IsNullOrEmpty(jobResult.JobPONumber))
                        {
                            m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, false, manualPurchaseOrderItemRequest);
                        }
                        else
                        {
                            m4PLPurchaseOrderCreationResponse.ManualPurchaseOrder = NavPurchaseOrderHelper.UpdatePurchaseOrderForNAV(activeUser, jobIdList, string.IsNullOrEmpty(jobResult.JobPONumber) ? jobResult.JobElectronicInvoicePONumber : jobResult.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, false, manualPurchaseOrderItemRequest);
                        }
                    }

                    if (isElectronicInvoice)
                    {
                        if (string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber))
                        {
                            m4PLPurchaseOrderCreationResponse.ElectronicPurchaseOrder = NavPurchaseOrderHelper.GeneratePurchaseOrderForNAV(activeUser, jobIdList, navAPIUrl, navAPIUserName, navAPIPassword, true, electronicPurchaseOrderItemRequest);
                        }
                        else
                        {
                            m4PLPurchaseOrderCreationResponse.ElectronicPurchaseOrder = NavPurchaseOrderHelper.UpdatePurchaseOrderForNAV(activeUser, jobIdList, !string.IsNullOrEmpty(jobResult.JobElectronicInvoicePONumber) ? jobResult.JobElectronicInvoicePONumber : jobResult.JobPONumber, navAPIUrl, navAPIUserName, navAPIPassword, true, electronicPurchaseOrderItemRequest);
                        }
                    }
                }

                if (isDeliveryChargeRemovalRequired)
                {
                    DataAccess.Job.JobCommands.UpdateJobCostCodeStatus((long)jobIdList?.FirstOrDefault(), (int)StatusType.Active, customerId);
                }
            }

            return(m4PLPurchaseOrderCreationResponse);
        }
コード例 #2
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);
        }