예제 #1
0
        //
        // CUSTOM MODULES
        //
        public DTO.FactoryProformaInvoiceMng.EditFormData GetData(int userId, int id, int factoryId, string season, int factoryOrderId, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            DTO.FactoryProformaInvoiceMng.EditFormData data = new DTO.FactoryProformaInvoiceMng.EditFormData();
            data.Data         = new DTO.FactoryProformaInvoiceMng.FactoryProformaInvoice();
            data.Data.Details = new List <DTO.FactoryProformaInvoiceMng.FactoryProformaInvoiceDetail>();

            //try to get data
            try
            {
                // check permission
                if (id > 0 && fwFactory.CheckFactoryProformaInvoicePermission(userId, id) == 0)
                {
                    throw new Exception("Current user don't have access permission for the selected proforma invoice data!");
                }

                if (id <= 0 && fwFactory.CheckFactoryPermission(userId, factoryId) == 0)
                {
                    throw new Exception("Current user don't have access permission for the selected factory data!");
                }

                if (id <= 0 && fwFactory.CheckFactoryOrderPermission(userId, factoryOrderId) == 0)
                {
                    throw new Exception("Current user don't have access permission for the selected factory order data!");
                }

                using (FactoryProformaInvoiceMngEntities context = CreateContext())
                {
                    if (id == 0)
                    {
                        data.Data.Season    = season;
                        data.Data.FactoryID = factoryId;
                        DTO.Support.Factory dtoFactory = supportFactory.GetFactory().FirstOrDefault(o => o.FactoryID == factoryId);
                        FactoryProformaInvoiceMng_FactoryOrderSearchResult_View dbFactoryOrder = context.FactoryProformaInvoiceMng_FactoryOrderSearchResult_View.FirstOrDefault(o => o.FactoryOrderID == factoryOrderId);
                        if (dtoFactory != null)
                        {
                            data.Data.FactoryUD = dtoFactory.FactoryUD;
                        }
                        else
                        {
                            throw new Exception("Factory not found!");
                        }

                        if (dbFactoryOrder != null)
                        {
                            data.Data.FactoryOrderID = factoryOrderId;
                            data.Data.FactoryOrderUD = dbFactoryOrder.FactoryOrderUD;

                            // get products
                            int index = -1;
                            foreach (FactoryProformaInvoiceMng_FactoryOrderItemSearchResult_View dbDetail in context.FactoryProformaInvoiceMng_FactoryOrderItemSearchResult_View.Where(o => o.FactoryOrderID == factoryOrderId))
                            {
                                data.Data.Details.Add(new DTO.FactoryProformaInvoiceMng.FactoryProformaInvoiceDetail()
                                {
                                    FactoryProformaInvoiceDetailID = index,
                                    FactoryOrderDetailID           = dbDetail.FactoryOrderDetailID,
                                    FactoryOrderSparepartDetailID  = dbDetail.FactoryOrderSparepartDetailID,
                                    ArticleCode      = dbDetail.ArticleCode,
                                    Description      = dbDetail.Description,
                                    ClientUD         = dbDetail.ClientUD,
                                    FactoryOrderUD   = dbDetail.FactoryOrderUD,
                                    LDS              = dbDetail.LDS.Value.ToString("dd/MM/yyyy"),
                                    OrderQnt         = dbDetail.OrderQnt,
                                    ProductionStatus = dbDetail.ProductionStatus,
                                    PurchasingPrice  = dbDetail.PurchasingPrice,
                                    Remark           = string.Empty,
                                    UnitPrice        = dbDetail.PurchasingPrice
                                });
                                index--;
                            }
                        }
                        else
                        {
                            throw new Exception("Factory order not found!");
                        }
                    }
                    else
                    {
                        data.Data = converter.DB2DTO_FactoryProformaInvoice(context.FactoryProformaInvoiceMng_FactoryProformaInvoice_View.FirstOrDefault(o => o.FactoryProformaInvoiceID == id));
                    }
                }
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
            }

            return(data);
        }
예제 #2
0
        public DTO.QuotationMng.EditFormData GetData(int id, int factoryID, string season, List <int> orders, int userId, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            DTO.QuotationMng.EditFormData data = new DTO.QuotationMng.EditFormData();
            data.Data = new DTO.QuotationMng.Quotation();
            data.Data.QuotationDetails = new List <DTO.QuotationMng.QuotationDetail>();
            data.Data.QuotationOffers  = new List <DTO.QuotationMng.QuotationOffer>();
            data.DeliveryTerms         = new List <DTO.Support.DeliveryTerm>();
            data.PaymentTerms          = new List <DTO.Support.PaymentTerm>();
            data.OfferDirections       = new List <DTO.Support.OfferDirection>();
            data.PriceDifferences      = new List <DTO.Support.PriceDifference>();
            data.QuotationStatuses     = new List <DTO.Support.QuotationStatus>();

            //try to get data
            try
            {
                using (QuotationMngEntities context = CreateContext())
                {
                    // add new case
                    if (id == 0)
                    {
                        data.Data.Season = season;

                        DTO.Support.Factory dtoFactory = supportFactory.GetFactory().FirstOrDefault(o => o.FactoryID == factoryID);
                        data.Data.FactoryID   = factoryID;
                        data.Data.FactoryUD   = dtoFactory.FactoryUD;
                        data.Data.FactoryName = dtoFactory.FactoryName;
                        data.Data.QuotationUD = "---/" + dtoFactory.FactoryUD.Substring(0, 3) + "/" + season.Replace("/", "-");

                        int index = -1;
                        foreach (QuotationMng_FactoryOrderDetailSearchResult_View detail in context.QuotationMng_FactoryOrderDetailSearchResult_View.Where(o => o.FactoryOrderID.HasValue && orders.Contains(o.FactoryOrderID.Value)))
                        {
                            DTO.QuotationMng.QuotationDetail dtoDetail = new DTO.QuotationMng.QuotationDetail();
                            dtoDetail.QuotationDetailID             = index;
                            dtoDetail.ArticleCode                   = detail.ArticleCode;
                            dtoDetail.Description                   = detail.Description;
                            dtoDetail.FactoryOrderDetailID          = detail.FactoryOrderDetailID;
                            dtoDetail.FactoryOrderSparepartDetailID = detail.FactoryOrderSparepartDetailID;
                            dtoDetail.ClientUD       = detail.ClientUD;
                            dtoDetail.FactoryOrderUD = detail.FactoryOrderUD;
                            if (detail.LDS.HasValue)
                            {
                                dtoDetail.LDS = detail.LDS.Value.ToString("dd/MM/yyyy");
                            }
                            dtoDetail.StatusID          = 1; // hardcode for PENDING
                            dtoDetail.QuotationStatusNM = "PENDING";
                            dtoDetail.StatusUpdatedBy   = userId;
                            dtoDetail.StatusUpdatedDate = DateTime.Now.ToString("dd/MM/yyyy");
                            dtoDetail.UpdatorName       = supportFactory.GetUser().FirstOrDefault(o => o.UserID == userId).FullName;
                            dtoDetail.UpdatorName2      = supportFactory.GetUser().FirstOrDefault(o => o.UserID == userId).FullName;
                            data.Data.QuotationDetails.Add(dtoDetail);

                            index--;
                        }
                    }
                    else
                    {
                        data.Data = converter.DB2DTO_Quotation(context.QuotationMng_Quotation_View.Include("QuotationMng_QuotationDetail_View").Include("QuotationMng_QuotationOffer_View").Include("QuotationMng_QuotationOffer_View.QuotationMng_QuotationOfferDetail_View").FirstOrDefault(o => o.QuotationID == id));
                        season    = data.Data.Season;
                    }
                }

                Task task2 = Task.Factory.StartNew(() => { data.DeliveryTerms = supportFactory.GetDeliveryTerm().ToList(); });
                Task task3 = Task.Factory.StartNew(() => { data.PaymentTerms = supportFactory.GetPaymentTerm().ToList(); });
                Task task4 = Task.Factory.StartNew(() => { data.OfferDirections = supportFactory.GetOfferDirection().ToList(); });
                Task task5 = Task.Factory.StartNew(() => { data.PriceDifferences = supportFactory.GetPriceDifference(season).ToList(); });
                Task task6 = Task.Factory.StartNew(() => { data.QuotationStatuses = supportFactory.GetQuotationStatus().ToList(); });
                Task.WaitAll(task2, task3, task4, task5, task6);
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
            }

            return(data);
        }