Esempio n. 1
0
 public override bool DeleteData(int id, out Library.DTO.Notification notification)
 {
     notification = new Library.DTO.Notification()
     {
         Type = Library.DTO.NotificationType.Success
     };
     try
     {
         using (WarehouseTransportMngEntities context = CreateContext())
         {
             WarehouseTransport dbItem = context.WarehouseTransport.FirstOrDefault(o => o.WarehouseTransportID == id);
             if (dbItem == null)
             {
                 notification.Message = "receipt not found!";
                 return(false);
             }
             else
             {
                 context.WarehouseTransport.Remove(dbItem);
                 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);
     }
 }
Esempio n. 2
0
        private List <DTO.WarehouseTransportMng.PhysicalStockByWarehouseArea> GetPhysicalStockByWarehouseArea()
        {
            List <DTO.WarehouseTransportMng.PhysicalStockByWarehouseArea> data = new List <DTO.WarehouseTransportMng.PhysicalStockByWarehouseArea>();

            try
            {
                using (WarehouseTransportMngEntities context = CreateContext())
                {
                    data = converter.DB2DTO_PhysicalStockByWarehouseArea(context.WarehouseTransportMng_PhysicalStockByWarehouseArea_View.ToList());
                }
            }
            catch (Exception ex)
            {
                return(new List <DTO.WarehouseTransportMng.PhysicalStockByWarehouseArea>());
            }
            return(data);
        }
Esempio n. 3
0
        public override DTO.WarehouseTransportMng.WarehouseTransport GetData(int id, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            try
            {
                using (WarehouseTransportMngEntities context = CreateContext())
                {
                    DTO.WarehouseTransportMng.WarehouseTransport dtoItem = new DTO.WarehouseTransportMng.WarehouseTransport();

                    if (id > 0)
                    {
                        WarehouseTransportMng_WarehouseTransport_View dbItem;
                        dbItem = context.WarehouseTransportMng_WarehouseTransport_View
                                 .Include("WarehouseTransportMng_WarehouseTransportProductDetail_View")
                                 .Include("WarehouseTransportMng_WarehouseTransportSparepartDetail_View")
                                 .FirstOrDefault(o => o.WarehouseTransportID == id);

                        dtoItem = converter.DB2DTO_WarehouseTransport(dbItem);
                    }
                    else
                    {
                        dtoItem.Season = DALBase.Helper.GetCurrentSeason();
                        dtoItem.WarehouseTransportProductDetails   = new List <DTO.WarehouseTransportMng.WarehouseTransportProductDetail>();
                        dtoItem.WarehouseTransportSparepartDetails = new List <DTO.WarehouseTransportMng.WarehouseTransportSparepartDetail>();
                    }

                    return(dtoItem);
                }
            }
            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(new DTO.WarehouseTransportMng.WarehouseTransport());
            }
        }
Esempio n. 4
0
        private bool ValidateTransferQuantity(DTO.WarehouseTransportMng.WarehouseTransport dtoItem)
        {
            int?stockQnt = 0;
            int?inputQnt = 0;

            using (WarehouseTransportMngEntities context = CreateContext())
            {
                //validate product qnt
                foreach (var item in dtoItem.WarehouseTransportProductDetails)
                {
                    inputQnt = item.Quantity;
                    if (item.WarehouseTransportProductDetailID > 0)
                    {
                        inputQnt = item.Quantity - context.WarehouseTransportProductDetail.Where(o => o.WarehouseTransportProductDetailID == item.WarehouseTransportProductDetailID).FirstOrDefault().Quantity;
                    }
                    var dbCurrentProduct = context.WarehouseTransportMng_PhysicalStockByWarehouseArea_View.Where(o => o.GoodsID == item.ProductID && o.ProductStatusID == item.ProductStatusID && o.ProductType == "PRODUCT" && o.WarehouseAreaID == item.FromWarehouseAreaID).FirstOrDefault();
                    stockQnt = dbCurrentProduct == null ? 0 : dbCurrentProduct.PhysicalQnt;
                    if (inputQnt > stockQnt)
                    {
                        throw new Exception("Quantity (" + (item.Quantity.HasValue ? item.Quantity : 0) + " pieces) of product " + item.ArticleCode + " (" + item.Description + " ) in area " + item.FromWarehouseAreaUD + " is greater than current physical stock (" + stockQnt.ToString() + " pieces)");
                    }
                }
                //validate sparepart qnt
                foreach (var item in dtoItem.WarehouseTransportSparepartDetails)
                {
                    inputQnt = item.Quantity;
                    if (item.WarehouseTransportSparepartDetailID > 0)
                    {
                        inputQnt = item.Quantity - context.WarehouseTransportProductDetail.Where(o => o.WarehouseTransportProductDetailID == item.WarehouseTransportSparepartDetailID).FirstOrDefault().Quantity;
                    }
                    var dbCurrentProduct = context.WarehouseTransportMng_PhysicalStockByWarehouseArea_View.Where(o => o.GoodsID == item.SparepartID && o.ProductStatusID == item.ProductStatusID && o.ProductType == "SPAREPART" && o.WarehouseAreaID == item.FromWarehouseAreaID).FirstOrDefault();
                    stockQnt = dbCurrentProduct == null ? 0 : dbCurrentProduct.PhysicalQnt;
                    if (inputQnt > stockQnt)
                    {
                        throw new Exception("Quantity (" + (item.Quantity.HasValue ? item.Quantity : 0) + " pieces) of sparepart " + item.ArticleCode + " (" + item.Description + " ) in area " + item.FromWarehouseAreaUD + " is greater than current physical stock (" + stockQnt.ToString() + " pieces)");
                    }
                }
            }
            return(true);
        }
Esempio n. 5
0
        //public DTO.WarehouseTransportMng.WarehouseTransport GetEditData(int id, out Library.DTO.Notification notification)
        //{
        //    notification = new Library.DTO.Notification() { Type = Library.DTO.NotificationType.Success };
        //    try
        //    {
        //        using (WarehouseTransportMngEntities context = CreateContext())
        //        {
        //            DTO.WarehouseTransportMng.WarehouseTransport dtoItem = new DTO.WarehouseTransportMng.WarehouseTransport();

        //            if (id > 0)
        //            {
        //                WarehouseTransportMng_WarehouseTransport_View dbItem;
        //                dbItem = context.WarehouseTransportMng_WarehouseTransport_View
        //                    .Include("PurchasingInvoiceMng_PurchasingInvoiceDetail_View")
        //                    .Include("PurchasingInvoiceMng_PurchasingInvoiceSparepartDetail_View")
        //                    .FirstOrDefault(o => o.WarehouseTransportID == id);

        //                dtoItem = converter.DB2DTO_WarehouseTransport(dbItem);
        //            }
        //            else
        //            {

        //            }
        //            return dtoItem;
        //        }
        //    }
        //    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 new DTO.WarehouseTransportMng.WarehouseTransport();
        //    }
        //}

        public List <DTO.WarehouseTransportMng.PhysicalStock> QuickSearchProduct(System.Collections.Hashtable filters, int pageSize, int pageIndex, string orderBy, string orderDirection, out int totalRows, out Library.DTO.Notification notification)
        {
            List <DTO.WarehouseTransportMng.PhysicalStock> data = new List <DTO.WarehouseTransportMng.PhysicalStock>();

            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            totalRows = 0;
            try
            {
                using (WarehouseTransportMngEntities context = CreateContext())
                {
                    string productType = null;
                    string searchQuery = null;

                    productType = filters["productType"].ToString().Replace("'", "''");
                    if (filters.ContainsKey("searchQuery") && !string.IsNullOrEmpty(filters["searchQuery"].ToString()))
                    {
                        searchQuery = filters["searchQuery"].ToString().Replace("'", "''");
                    }

                    totalRows = context.WarehouseTransportMng_action_QuickSearchProduct(orderBy, orderDirection, productType, searchQuery).Count();
                    var result = context.WarehouseTransportMng_action_QuickSearchProduct(orderBy, orderDirection, productType, searchQuery);

                    data = converter.DB2DTO_PhysicalStock(result.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList());
                }
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
                notification.DetailMessage.Add(ex.Message);
                if (ex.GetBaseException() != null)
                {
                    notification.DetailMessage.Add(ex.GetBaseException().Message);
                }
            }
            return(data);
        }
Esempio n. 6
0
        public override IEnumerable <DTO.WarehouseTransportMng.WarehouseTransportSearch> GetDataWithFilter(System.Collections.Hashtable filters, int pageSize, int pageIndex, string orderBy, string orderDirection, out int totalRows, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            totalRows = 0;

            string ReceiptNo = string.Empty;
            string Remark    = string.Empty;

            if (filters.ContainsKey("ReceiptNo") && filters["ReceiptNo"] != null)
            {
                ReceiptNo = filters["ReceiptNo"].ToString();
            }
            if (filters.ContainsKey("Remark") && filters["Remark"] != null)
            {
                Remark = filters["Remark"].ToString();
            }
            try
            {
                using (WarehouseTransportMngEntities context = CreateContext())
                {
                    totalRows = context.WarehouseTransportMng_function_SearchWarehouseTransport(orderBy, orderDirection, ReceiptNo, Remark).Count();
                    var result = context.WarehouseTransportMng_function_SearchWarehouseTransport(orderBy, orderDirection, ReceiptNo, Remark);
                    return(converter.DB2DTO_WarehouseTransportSearch(result.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList()));
                }
            }
            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(new List <DTO.WarehouseTransportMng.WarehouseTransportSearch>());
            }
        }
Esempio n. 7
0
        public override bool UpdateData(int id, ref DTO.WarehouseTransportMng.WarehouseTransport dtoItem, out Library.DTO.Notification notification)
        {
            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            try
            {
                using (WarehouseTransportMngEntities context = CreateContext())
                {
                    WarehouseTransport dbItem = null;
                    if (id == 0)
                    {
                        dbItem = new WarehouseTransport();
                        context.WarehouseTransport.Add(dbItem);
                    }
                    else
                    {
                        dbItem = context.WarehouseTransport.FirstOrDefault(o => o.WarehouseTransportID == id);
                    }

                    if (dbItem == null)
                    {
                        notification.Message = "receipt not found!";
                        return(false);
                    }
                    else
                    {
                        // check concurrency
                        if (dbItem.ConcurrencyFlag != null && !dbItem.ConcurrencyFlag.SequenceEqual(Convert.FromBase64String(dtoItem.ConcurrencyFlag_String)))
                        {
                            throw new Exception(DALBase.Helper.TEXT_CONCURRENCY_CONFLICT);
                        }
                        //validate transfer qnt
                        ValidateTransferQuantity(dtoItem);

                        //convert dto to db
                        converter.DTO2DB_WarehouseTransport(dtoItem, ref dbItem);

                        context.WarehouseTransportProductDetail.Local.Where(o => o.WarehouseTransport == null).ToList().ForEach(o => context.WarehouseTransportProductDetail.Remove(o));
                        context.WarehouseTransportSparepartDetail.Local.Where(o => o.WarehouseTransport == null).ToList().ForEach(o => context.WarehouseTransportSparepartDetail.Remove(o));
                        context.SaveChanges();

                        if (id == 0)
                        {
                            context.WarehouseTransportMng_function_GenerateReceiptNo(dbItem.WarehouseTransportID, dbItem.Season);
                        }                                                                                                                      //update ReceiptNo

                        //Get return data
                        dtoItem = GetData(dbItem.WarehouseTransportID, out notification);
                        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);
            }
        }