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