public IHttpActionResult CreateReturnData(DTO.SaleOrderMng.SaleOrder dtoItem)
        {
            BLL.SaleOrderMng         bll = new BLL.SaleOrderMng();
            Library.DTO.Notification notification;
            bool data = bll.CreateReturnData(dtoItem, out notification);

            return(Ok(new Library.DTO.ReturnData <bool>()
            {
                Data = data, Message = notification
            }));
        }
        public IHttpActionResult Revise(int id, DTO.SaleOrderMng.SaleOrder dtoItem)
        {
            // authentication
            Module.Framework.BLL fwBll = new Module.Framework.BLL();
            if (!fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanReset))
            {
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }

            BLL.SaleOrderMng         bll = new BLL.SaleOrderMng();
            Library.DTO.Notification notification;
            bll.Revise(id, ref dtoItem, ControllerContext.GetAuthUserId(), out notification);
            return(Ok(new Library.DTO.ReturnData <DTO.SaleOrderMng.SaleOrder>()
            {
                Data = dtoItem, Message = notification
            }));
        }
        public IHttpActionResult Update(int id, DTO.SaleOrderMng.SaleOrder dtoItem)
        {
            Library.DTO.Notification notification;

            // authentication
            Module.Framework.BLL fwBll = new Module.Framework.BLL();
            if (id > 0 && !fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanUpdate))
            {
                // edit case
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }
            else if (id == 0 && !fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanCreate))
            {
                // create new case
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }

            // validation
            if (!Helper.CommonHelper.ValidateDTO <DTO.SaleOrderMng.SaleOrder>(dtoItem, out notification))
            {
                return(Ok(new Library.DTO.ReturnData <DTO.SaleOrderMng.SaleOrder>()
                {
                    Data = dtoItem, Message = notification
                }));
            }

            // continue processing
            BLL.SaleOrderMng bll = new BLL.SaleOrderMng();

            //validate quantity in stock
            if (!bll.ValidateStockQuantity(id, dtoItem, ControllerContext.GetAuthUserId(), out notification))
            {
                return(Ok(new Library.DTO.ReturnData <DTO.SaleOrderMng.SaleOrder>()
                {
                    Data = dtoItem, Message = notification
                }));
            }

            bll.UpdateData(id, ref dtoItem, ControllerContext.GetAuthUserId(), out notification);

            return(Ok(new Library.DTO.ReturnData <DTO.SaleOrderMng.SaleOrder>()
            {
                Data = dtoItem, Message = notification
            }));
        }
        /// <summary>
        /// Hien thoi khong su dung ham nay (entities dang bi loi, sau nay se bo)
        /// </summary>
        /// <param name="dtoItem"></param>
        /// <param name="notification"></param>
        /// <returns></returns>
        public bool CreateReturnData(DTO.SaleOrderMng.SaleOrder dtoItem, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success, Message = "You have been returned goods success"
            };

            if (dtoItem.SaleOrderID <= 0)
            {
                throw new Exception("You need save PI before return data");
            }

            try
            {
                using (SaleOrderReturnEntities context = CreateContext())
                {
                    //check quantity return that user entered
                    foreach (var item in dtoItem.SaleOrderProductReturns.Where(o => o.SaleOrderProductReturnID < 0))
                    {
                        var dbRemain = context.SaleOrderMng_LoadingPlanDetail_View.Where(o => o.LoadingPlanDetailID == item.LoadingPlanDetailID).FirstOrDefault();
                        if (dbRemain != null && item.OrderQnt > dbRemain.RemaingReturnQnt)
                        {
                            throw new Exception("Quantity of product: " + item.ArticleCode + "(" + item.Description + ") must be less than quantity of return remaining");
                        }
                    }

                    foreach (var item in dtoItem.SaleOrderSparepartReturns.Where(o => o.SaleOrderSparepartReturnID < 0))
                    {
                        var dbRemain = context.SaleOrderMng_LoadingPlanSparepartDetail_View.Where(o => o.LoadingPlanSparepartDetailID == item.LoadingPlanSparepartDetailID).FirstOrDefault();
                        if (dbRemain != null && item.OrderQnt > dbRemain.RemaingReturnQnt)
                        {
                            throw new Exception("Quantity of product: " + item.ArticleCode + "(" + item.Description + ") must be less than quantity of return remaining");
                        }
                    }

                    //get reuturn index
                    int?returnIdex          = 1;
                    int?returnIdexSparepart = 1;

                    if (dtoItem.SaleOrderProductReturns.Where(o => o.SaleOrderProductReturnID > 0).Count() > 0)
                    {
                        returnIdex = dtoItem.SaleOrderProductReturns.OrderByDescending(o => o.ReturnIndex).FirstOrDefault().ReturnIndex + 1;
                    }
                    if (dtoItem.SaleOrderSparepartReturns.Where(o => o.SaleOrderSparepartReturnID > 0).Count() > 0)
                    {
                        returnIdexSparepart = dtoItem.SaleOrderSparepartReturns.OrderByDescending(o => o.ReturnIndex).FirstOrDefault().ReturnIndex + 1;
                    }

                    //create offer and fobwarehouse saleorder to prepare to import data to warehouse
                    Offer_Return dbOffer = new Offer_Return();
                    dbOffer.ClientID     = 70560; //EUROFAR
                    dbOffer.SaleID       = 23;    //IRON
                    dbOffer.Season       = dtoItem.Season;
                    dbOffer.OfferVersion = 1;
                    dbOffer.Currency     = dtoItem.Currency;
                    dbOffer.OfferUD      = context.OfferMng_function_GenerateOfferCode_Return(null, dbOffer.Season, dbOffer.SaleID, dbOffer.ClientID).FirstOrDefault();

                    OfferStatus_Return dbOfferStatus = new OfferStatus_Return();
                    dbOfferStatus.TrackingStatusID = DALBase.Helper.CREATED;
                    dbOfferStatus.StatusDate       = DateTime.Now;
                    dbOfferStatus.UpdatedBy        = dtoItem.UpdatedBy;
                    dbOfferStatus.IsCurrentStatus  = true;
                    dbOffer.OfferStatus.Add(dbOfferStatus);

                    SaleOrder_Return dbSaleOrder = new SaleOrder_Return();
                    dbSaleOrder.Season            = dtoItem.Season;
                    dbSaleOrder.InvoiceDate       = DateTime.Now;
                    dbSaleOrder.OrderType         = "FOB_WAREHOUSE";
                    dbSaleOrder.ProformaInvoiceNo = context.SaleOrderMng_function_GeneratePINo_Return(dtoItem.UpdatedBy).FirstOrDefault();
                    dbSaleOrder.CreatedBy         = dtoItem.UpdatedBy;
                    dbSaleOrder.CreatedDate       = DateTime.Now;
                    dbSaleOrder.OriginSaleOrderID = dtoItem.SaleOrderID;
                    dbOffer.SaleOrder.Add(dbSaleOrder);

                    SaleOrderStatus_Return dbSaleOrderStatus = new SaleOrderStatus_Return();
                    dbSaleOrderStatus.TrackingStatusID = DALBase.Helper.CREATED;
                    dbSaleOrderStatus.StatusDate       = DateTime.Now;
                    dbSaleOrderStatus.UpdatedBy        = dtoItem.UpdatedBy;
                    dbSaleOrderStatus.IsCurrentStatus  = true;
                    dbSaleOrder.SaleOrderStatus.Add(dbSaleOrderStatus);

                    WarehouseImport dbWarehouseImport = new WarehouseImport();
                    dbWarehouseImport.ReceiptNo     = context.SaleOrderMng_funtions_GenerateWarehouseImportReceiptNo(dtoItem.Season).FirstOrDefault();
                    dbWarehouseImport.ImportedDate  = DateTime.Now;
                    dbWarehouseImport.IsConfirmed   = true;
                    dbWarehouseImport.UpdatedBy     = dtoItem.UpdatedBy;
                    dbWarehouseImport.UpdatedDate   = DateTime.Now;
                    dbWarehouseImport.ConfirmedBy   = dtoItem.UpdatedBy;
                    dbWarehouseImport.ConfirmedDate = DateTime.Now;
                    dbWarehouseImport.ImportTypeID  = 2;
                    dbWarehouseImport.Season        = dtoItem.Season;

                    //create offerline
                    var selected_products = from p in dtoItem.SaleOrderProductReturns.Where(o => o.SaleOrderProductReturnID < 0)
                                            group p by new
                    {
                        p.ProductID,
                        p.ArticleCode,
                        p.ModelID,
                        p.MaterialID,
                        p.MaterialTypeID,
                        p.MaterialColorID,
                        p.FrameMaterialID,
                        p.FrameMaterialColorID,
                        p.SubMaterialID,
                        p.SubMaterialColorID,
                        p.SeatCushionID,
                        p.BackCushionID,
                        p.CushionColorID,
                        p.FSCTypeID,
                        p.FSCPercentID
                    } into g
                        select new
                    {
                        g.Key.ProductID,
                        g.Key.ArticleCode,
                        g.Key.ModelID,
                        g.Key.MaterialID,
                        g.Key.MaterialTypeID,
                        g.Key.MaterialColorID,
                        g.Key.FrameMaterialID,
                        g.Key.FrameMaterialColorID,
                        g.Key.SubMaterialID,
                        g.Key.SubMaterialColorID,
                        g.Key.SeatCushionID,
                        g.Key.BackCushionID,
                        g.Key.CushionColorID,
                        g.Key.FSCTypeID,
                        g.Key.FSCPercentID,
                        TotalQnt = g.Sum(x => x.OrderQnt)
                    };
                    OfferLine_Return             dbOfferLine              = new OfferLine_Return();
                    SaleOrderDetail_Return       dbSaleOrderDetail        = new SaleOrderDetail_Return();
                    SaleOrderProductReturn       dbProductReturn          = new SaleOrderProductReturn();
                    WarehouseImportProductDetail dbWarehouseImportProduct = new WarehouseImportProductDetail();
                    foreach (var item in selected_products)
                    {
                        dbOfferLine                      = new OfferLine_Return();
                        dbOfferLine.ArticleCode          = item.ArticleCode;
                        dbOfferLine.Description          = dtoItem.SaleOrderProductReturns.Where(o => o.ProductID == item.ProductID).FirstOrDefault().Description;
                        dbOfferLine.ModelID              = item.ModelID;
                        dbOfferLine.MaterialID           = item.MaterialID;
                        dbOfferLine.MaterialTypeID       = item.MaterialTypeID;
                        dbOfferLine.MaterialColorID      = item.MaterialColorID;
                        dbOfferLine.FrameMaterialID      = item.FrameMaterialID;
                        dbOfferLine.FrameMaterialColorID = item.FrameMaterialColorID;
                        dbOfferLine.SubMaterialID        = item.SubMaterialID;
                        dbOfferLine.SubMaterialColorID   = item.SubMaterialColorID;
                        dbOfferLine.SeatCushionID        = item.SeatCushionID;
                        dbOfferLine.BackCushionID        = item.BackCushionID;
                        dbOfferLine.CushionColorID       = item.CushionColorID;
                        dbOfferLine.FSCTypeID            = item.FSCTypeID;
                        dbOfferLine.FSCPercentID         = item.FSCPercentID;
                        dbOfferLine.Quantity             = item.TotalQnt;
                        dbOffer.OfferLine.Add(dbOfferLine);

                        //create saleOrderDetail
                        dbSaleOrderDetail                 = new SaleOrderDetail_Return();
                        dbSaleOrderDetail.OrderQnt        = item.TotalQnt;
                        dbSaleOrderDetail.ProductStatusID = 1;
                        dbOfferLine.SaleOrderDetail.Add(dbSaleOrderDetail);
                        dbSaleOrder.SaleOrderDetail.Add(dbSaleOrderDetail);

                        //create saleorder product return
                        foreach (var item_return in dtoItem.SaleOrderProductReturns.Where(o => o.SaleOrderProductReturnID < 0 && o.ProductID == item.ProductID))
                        {
                            dbProductReturn = new SaleOrderProductReturn();
                            dbProductReturn.LoadingPlanDetailID = item_return.LoadingPlanDetailID;
                            dbProductReturn.OrderQnt            = item_return.OrderQnt;
                            dbProductReturn.ReturnIndex         = returnIdex;
                            dbProductReturn.CreatedDate         = DateTime.Now;
                            dbSaleOrderDetail.SaleOrderProductReturn.Add(dbProductReturn);
                        }

                        //create fob warehouse import
                        var loadingplans = from p in dtoItem.SaleOrderProductReturns.Where(o => o.SaleOrderProductReturnID < 0 && o.ProductID == item.ProductID)
                                           group p by new { p.ProductID, p.LoadingPlanID } into g
                            select new { g.Key.ProductID, g.Key.LoadingPlanID, TotalQnt = g.Sum(x => x.OrderQnt) };

                        foreach (var item_loadingplan in loadingplans)
                        {
                            dbWarehouseImportProduct                 = new WarehouseImportProductDetail();
                            dbWarehouseImportProduct.ProductID       = item_loadingplan.ProductID;
                            dbWarehouseImportProduct.Quantity        = item_loadingplan.TotalQnt;
                            dbWarehouseImportProduct.ProductStatusID = 1;
                            //dbWarehouseImportProduct.LoadingPlanID = item_loadingplan.LoadingPlanID;

                            dbWarehouseImportProduct.WarehouseImport = dbWarehouseImport;
                            dbSaleOrderDetail.WarehouseImportProductDetail.Add(dbWarehouseImportProduct);
                        }
                    }

                    //create offerlinesparepart
                    var selected_spareparts = from s in dtoItem.SaleOrderSparepartReturns.Where(o => o.SaleOrderSparepartReturnID < 0)
                                              group s by new { s.SparepartID, s.ArticleCode, s.ModelID, s.PartID } into g
                        select new { g.Key.SparepartID, g.Key.ArticleCode, g.Key.ModelID, g.Key.PartID, TotalQnt = g.Sum(o => o.OrderQnt) };

                    OfferLineSparepart_Return       dbOfferLineSparepart       = new OfferLineSparepart_Return();
                    SaleOrderDetailSparepart_Return dbSaleOrderDetailSparepart = new SaleOrderDetailSparepart_Return();
                    SaleOrderSparepartReturn        dbSparepartReturn          = new SaleOrderSparepartReturn();
                    WarehouseImportSparepartDetail  dbWarehouseImportSparepart = new WarehouseImportSparepartDetail();

                    foreach (var item in selected_spareparts)
                    {
                        dbOfferLineSparepart             = new OfferLineSparepart_Return();
                        dbOfferLineSparepart.ArticleCode = item.ArticleCode;
                        dbOfferLineSparepart.Description = dtoItem.SaleOrderSparepartReturns.Where(o => o.SparepartID == item.SparepartID).FirstOrDefault().Description;
                        dbOfferLineSparepart.ModelID     = item.ModelID;
                        dbOfferLineSparepart.PartID      = item.PartID;
                        dbOfferLine.Quantity             = item.TotalQnt;
                        dbOffer.OfferLineSparepart.Add(dbOfferLineSparepart);

                        //create SaleOrderDetailSparepart
                        dbSaleOrderDetailSparepart                 = new SaleOrderDetailSparepart_Return();
                        dbSaleOrderDetailSparepart.OrderQnt        = item.TotalQnt;
                        dbSaleOrderDetailSparepart.ProductStatusID = 1;

                        dbSaleOrderDetailSparepart.SaleOrder = dbSaleOrder;
                        dbOfferLineSparepart.SaleOrderDetailSparepart.Add(dbSaleOrderDetailSparepart);

                        //create sparepart return
                        foreach (var item_return in dtoItem.SaleOrderSparepartReturns.Where(o => o.SaleOrderSparepartReturnID < 0 && o.SparepartID == item.SparepartID))
                        {
                            dbSparepartReturn = new SaleOrderSparepartReturn();
                            dbSparepartReturn.LoadingPlanSparepartDetailID = item_return.LoadingPlanSparepartDetailID;
                            dbSparepartReturn.OrderQnt    = item_return.OrderQnt;
                            dbSparepartReturn.ReturnIndex = returnIdexSparepart;
                            dbSparepartReturn.CreatedDate = DateTime.Now;
                            dbSaleOrderDetailSparepart.SaleOrderSparepartReturn.Add(dbSparepartReturn);
                        }

                        //create fob warehouse import sparepart
                        var loadingplans = from p in dtoItem.SaleOrderSparepartReturns.Where(o => o.SaleOrderSparepartReturnID < 0 && o.SparepartID == item.SparepartID)
                                           group p by new { p.SparepartID, p.LoadingPlanID } into g
                            select new { g.Key.SparepartID, g.Key.LoadingPlanID, TotalQnt = g.Sum(x => x.OrderQnt) };

                        foreach (var item_loadingplan in loadingplans)
                        {
                            dbWarehouseImportSparepart                 = new WarehouseImportSparepartDetail();
                            dbWarehouseImportSparepart.SparepartID     = item_loadingplan.SparepartID;
                            dbWarehouseImportSparepart.Quantity        = item_loadingplan.TotalQnt;
                            dbWarehouseImportSparepart.ProductStatusID = 1;
                            //dbWarehouseImportSparepart.LoadingPlanID = item_loadingplan.LoadingPlanID;

                            dbWarehouseImportSparepart.WarehouseImport = dbWarehouseImport;
                            dbSaleOrderDetailSparepart.WarehouseImportSparepartDetail.Add(dbWarehouseImportSparepart);
                        }
                    }
                    //save data
                    context.Offer.Add(dbOffer);
                    context.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
                if (ex.InnerException != null && !string.IsNullOrEmpty(ex.InnerException.Message))
                {
                    notification.DetailMessage.Add(ex.InnerException.Message);
                }
                return(false);
            }
        }
示例#5
0
        public void DTO2DB_SaleOrder(DTO.SaleOrderMng.SaleOrder dtoItem, ref SaleOrder dbItem)
        {
            /*
             * MAP & CHECK SaleOrder
             */
            List <SaleOrderDetail>       itemNeedDelete_Details = new List <SaleOrderDetail>();
            List <SaleOrderDetailExtend> itemNeedDelete_DetailExtends;

            if (dtoItem.SaleOrderDetails != null)
            {
                //CHECK
                foreach (SaleOrderDetail dbDetail in dbItem.SaleOrderDetail)
                {
                    //DB NOT EXIST IN DTO
                    if (!dtoItem.SaleOrderDetails.Select(s => s.SaleOrderDetailID).Contains(dbDetail.SaleOrderDetailID))
                    {
                        itemNeedDelete_Details.Add(dbDetail);
                    }
                    else //DB IS EXIST IN DB
                    {
                        itemNeedDelete_DetailExtends = new List <SaleOrderDetailExtend>();
                        foreach (SaleOrderDetailExtend dbDetailExtend in dbDetail.SaleOrderDetailExtend)
                        {
                            if (!dtoItem.SaleOrderDetails.Where(o => o.SaleOrderDetailID == dbDetail.SaleOrderDetailID).FirstOrDefault().SaleOrderDetailExtends.Select(x => x.SaleOrderDetailExtendID).Contains(dbDetailExtend.SaleOrderDetailExtendID))
                            {
                                itemNeedDelete_DetailExtends.Add(dbDetailExtend);
                            }
                        }
                        foreach (SaleOrderDetailExtend dbDetailExtend in itemNeedDelete_DetailExtends)
                        {
                            dbDetail.SaleOrderDetailExtend.Remove(dbDetailExtend);
                        }
                    }
                }

                foreach (SaleOrderDetail dbDetail in itemNeedDelete_Details)
                {
                    List <SaleOrderDetailExtend> item_deleteds = new List <SaleOrderDetailExtend>();
                    foreach (SaleOrderDetailExtend dbDetailExtend in dbDetail.SaleOrderDetailExtend)
                    {
                        item_deleteds.Add(dbDetailExtend);
                    }
                    foreach (SaleOrderDetailExtend item in item_deleteds)
                    {
                        dbItem.SaleOrderDetail.Where(o => o.SaleOrderDetailID == dbDetail.SaleOrderDetailID).FirstOrDefault().SaleOrderDetailExtend.Remove(item);
                    }
                    dbItem.SaleOrderDetail.Remove(dbDetail);
                }

                //MAP
                SaleOrderDetail       _dbDetail;
                SaleOrderDetailExtend _dbDetailExtend;
                foreach (DTO.SaleOrderMng.SaleOrderDetail dtoDetail in dtoItem.SaleOrderDetails)
                {
                    if (dtoDetail.SaleOrderDetailID < 0)
                    {
                        _dbDetail = new SaleOrderDetail();

                        if (dtoDetail.SaleOrderDetailExtends != null)
                        {
                            foreach (DTO.SaleOrderMng.SaleOrderDetailExtend dtoDetailExtend in dtoDetail.SaleOrderDetailExtends)
                            {
                                _dbDetailExtend = new SaleOrderDetailExtend();
                                _dbDetail.SaleOrderDetailExtend.Add(_dbDetailExtend);
                                AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetailExtend, SaleOrderDetailExtend>(dtoDetailExtend, _dbDetailExtend);
                            }
                        }

                        dbItem.SaleOrderDetail.Add(_dbDetail);
                    }
                    else
                    {
                        _dbDetail = dbItem.SaleOrderDetail.FirstOrDefault(o => o.SaleOrderDetailID == dtoDetail.SaleOrderDetailID);
                        if (_dbDetail != null && dtoDetail.SaleOrderDetailExtends != null)
                        {
                            foreach (DTO.SaleOrderMng.SaleOrderDetailExtend dtoDetailExtend in dtoDetail.SaleOrderDetailExtends)
                            {
                                if (dtoDetailExtend.SaleOrderDetailExtendID < 0)
                                {
                                    _dbDetailExtend = new SaleOrderDetailExtend();
                                    _dbDetail.SaleOrderDetailExtend.Add(_dbDetailExtend);
                                }
                                else
                                {
                                    _dbDetailExtend = _dbDetail.SaleOrderDetailExtend.FirstOrDefault(o => o.SaleOrderDetailExtendID == dtoDetailExtend.SaleOrderDetailExtendID);
                                }
                                if (_dbDetailExtend != null)
                                {
                                    AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetailExtend, SaleOrderDetailExtend>(dtoDetailExtend, _dbDetailExtend);
                                }
                            }
                        }
                    }

                    if (_dbDetail != null)
                    {
                        AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetail, SaleOrderDetail>(dtoDetail, _dbDetail);
                    }
                }
            }

            /*
             * MAP & CHECK SaleOrderExtend
             */
            List <SaleOrderExtend> ItemNeedDelete_Extends = new List <SaleOrderExtend>();

            if (dtoItem.SaleOrderExtends != null)
            {
                //CHECK
                foreach (SaleOrderExtend dbExtend in dbItem.SaleOrderExtend.Where(o => !dtoItem.SaleOrderExtends.Select(s => s.SaleOrderExtendID).Contains(o.SaleOrderExtendID)))
                {
                    ItemNeedDelete_Extends.Add(dbExtend);
                }
                foreach (SaleOrderExtend dbExtend in ItemNeedDelete_Extends)
                {
                    dbItem.SaleOrderExtend.Remove(dbExtend);
                }
                //MAP
                foreach (DTO.SaleOrderMng.SaleOrderExtend dtoDescription in dtoItem.SaleOrderExtends)
                {
                    SaleOrderExtend dbExtend;
                    if (dtoDescription.SaleOrderExtendID < 0)
                    {
                        dbExtend = new SaleOrderExtend();
                        dbItem.SaleOrderExtend.Add(dbExtend);
                    }
                    else
                    {
                        dbExtend = dbItem.SaleOrderExtend.FirstOrDefault(o => o.SaleOrderExtendID == dtoDescription.SaleOrderExtendID);
                    }

                    if (dbExtend != null)
                    {
                        AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderExtend, SaleOrderExtend>(dtoDescription, dbExtend);
                    }
                }
            }

            /*
             * MAP & CHECK SaleOrderDetailSparepart
             */
            List <SaleOrderDetailSparepart> itemNeedDelete = new List <SaleOrderDetailSparepart>();

            if (dtoItem.SaleOrderDetailSpareparts != null)
            {
                //CHECK
                foreach (SaleOrderDetailSparepart item in dbItem.SaleOrderDetailSparepart.Where(o => !dtoItem.SaleOrderDetailSpareparts.Select(s => s.SaleOrderDetailSparepartID).Contains(o.SaleOrderDetailSparepartID)))
                {
                    itemNeedDelete.Add(item);
                }
                foreach (SaleOrderDetailSparepart item in itemNeedDelete)
                {
                    dbItem.SaleOrderDetailSparepart.Remove(item);
                }
                //MAP
                foreach (DTO.SaleOrderMng.SaleOrderDetailSparepart item in dtoItem.SaleOrderDetailSpareparts)
                {
                    SaleOrderDetailSparepart dbSparepart;
                    if (item.SaleOrderDetailSparepartID < 0)
                    {
                        dbSparepart = new SaleOrderDetailSparepart();
                        dbItem.SaleOrderDetailSparepart.Add(dbSparepart);
                    }
                    else
                    {
                        dbSparepart = dbItem.SaleOrderDetailSparepart.FirstOrDefault(o => o.SaleOrderDetailSparepartID == item.SaleOrderDetailSparepartID);
                    }

                    if (dbSparepart != null)
                    {
                        AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetailSparepart, SaleOrderDetailSparepart>(item, dbSparepart);
                    }
                }
            }

            /*
             * MAP & CHECK Sample
             */
            List <SaleOrderDetailSample> itemNeedDelete_Sample = new List <SaleOrderDetailSample>();

            if (dtoItem.SaleOrderDetailSamples != null)
            {
                //CHECK
                foreach (SaleOrderDetailSample item in dbItem.SaleOrderDetailSample.Where(o => !dtoItem.SaleOrderDetailSamples.Select(s => s.SaleOrderDetailSampleID).Contains(o.SaleOrderDetailSampleID)))
                {
                    itemNeedDelete_Sample.Add(item);
                }
                foreach (SaleOrderDetailSample item in itemNeedDelete_Sample)
                {
                    dbItem.SaleOrderDetailSample.Remove(item);
                }
                //MAP
                foreach (DTO.SaleOrderMng.SaleOrderDetailSample item in dtoItem.SaleOrderDetailSamples)
                {
                    SaleOrderDetailSample dbSample;
                    if (item.SaleOrderDetailSampleID < 0)
                    {
                        dbSample = new SaleOrderDetailSample();
                        dbItem.SaleOrderDetailSample.Add(dbSample);
                    }
                    else
                    {
                        dbSample = dbItem.SaleOrderDetailSample.FirstOrDefault(o => o.SaleOrderDetailSampleID == item.SaleOrderDetailSampleID);
                    }

                    if (dbSample != null)
                    {
                        AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetailSample, SaleOrderDetailSample>(item, dbSample);
                    }
                }
            }

            /*
             * MAP SaleOrder History
             */
            SaleOrderHistory       dbHistory = new SaleOrderHistory();
            SaleOrderHistoryDetail dbHistoryDetail;

            foreach (DTO.SaleOrderMng.SaleOrderDetail dtoDetail in dtoItem.SaleOrderDetails)
            {
                dbHistoryDetail = new SaleOrderHistoryDetail();
                AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrderDetail, SaleOrderHistoryDetail>(dtoDetail, dbHistoryDetail);
                dbHistory.SaleOrderHistoryDetail.Add(dbHistoryDetail);
            }
            AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrder, SaleOrderHistory>(dtoItem, dbHistory);
            dbItem.SaleOrderHistory.Add(dbHistory);

            /*
             * SETUP FORMATED FIELD
             */
            if (!string.IsNullOrEmpty(dtoItem.InvoiceDateFormated))
            {
                dtoItem.InvoiceDate = DateTime.ParseExact(dtoItem.InvoiceDateFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.InvoiceDate = null;
            }

            if (!string.IsNullOrEmpty(dtoItem.LDSFormated))
            {
                dtoItem.LDS = DateTime.ParseExact(dtoItem.LDSFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.LDS = null;
            }

            if (!string.IsNullOrEmpty(dtoItem.DeliveryDateFormated))
            {
                dtoItem.DeliveryDate = DateTime.ParseExact(dtoItem.DeliveryDateFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.DeliveryDate = null;
            }

            if (!string.IsNullOrEmpty(dtoItem.DeliveryDateInternalFormated))
            {
                dtoItem.DeliveryDateInternal = DateTime.ParseExact(dtoItem.DeliveryDateInternalFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.DeliveryDateInternal = null;
            }

            if (!string.IsNullOrEmpty(dtoItem.PIReceivedDateFormated))
            {
                dtoItem.PIReceivedDate = DateTime.ParseExact(dtoItem.PIReceivedDateFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.PIReceivedDate = null;
            }

            if (!string.IsNullOrEmpty(dtoItem.paymentDateFormated))
            {
                dtoItem.PaymentDate = DateTime.ParseExact(dtoItem.paymentDateFormated, "d", new System.Globalization.CultureInfo("vi-VN"));
            }
            else
            {
                dtoItem.PaymentDate = null;
            }

            AutoMapper.Mapper.Map <DTO.SaleOrderMng.SaleOrder, SaleOrder>(dtoItem, dbItem);
        }
示例#6
0
        public DTO.SaleOrderMng.SaleOrder DB2DTO_SaleOrder(SaleOrderMng_SaleOrder_View dbItem)
        {
            DTO.SaleOrderMng.SaleOrder dtoItem = AutoMapper.Mapper.Map <SaleOrderMng_SaleOrder_View, DTO.SaleOrderMng.SaleOrder>(dbItem);

            /*
             *  FORMAT FIELDS DATETIME
             */
            if (dbItem.ConcurrencyFlag != null)
            {
                dtoItem.ConcurrencyFlag_String = Convert.ToBase64String(dbItem.ConcurrencyFlag);
            }

            if (dbItem.InvoiceDate.HasValue)
            {
                dtoItem.InvoiceDateFormated = dbItem.InvoiceDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.PIReceivedDate.HasValue)
            {
                dtoItem.PIReceivedDateFormated = dbItem.PIReceivedDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.DeliveryDate.HasValue)
            {
                dtoItem.DeliveryDateFormated = dbItem.DeliveryDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.DeliveryDateInternal.HasValue)
            {
                dtoItem.DeliveryDateInternalFormated = dbItem.DeliveryDateInternal.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.LDS.HasValue)
            {
                dtoItem.LDSFormated = dbItem.LDS.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.CreatedDate.HasValue)
            {
                dtoItem.CreatedDateFormated = dbItem.CreatedDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.UpdatedDate.HasValue)
            {
                dtoItem.UpdatedDateFormated = dbItem.UpdatedDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.PaymentDate.HasValue)
            {
                dtoItem.paymentDateFormated = dbItem.PaymentDate.Value.ToString("dd/MM/yyyy");
            }

            if (dbItem.IsDPReceived == true)
            {
                dbItem.IsDPReceived = dbItem.IsDPReceived.Value == true;
            }
            else
            {
                dbItem.IsDPReceived = dbItem.IsDPReceived.Value == false;
            }
            return(dtoItem);
        }