private long GetSpecificQuantity(StockOutDetail searchDetail,IList details, int specificCount)
 {
     foreach (StockOutDetail detail in details)
     {
         if ( detail.Product.ProductId == searchDetail.Product.ProductId &&
             detail.DefectStatus.DefectStatusId == specificCount)
         {
             return detail.Quantity;
         }
     }
     return 0;
 }
 private bool HasCreatedView(StockOutDetail detail)
 {
     foreach (StockOutDetailView outDetailView in stockOutDetailViewList)
     {
         if(outDetailView.StockOutDetail.Product.ProductId == detail.Product.ProductId
            && outDetailView.StockOutDetail.StockOut.StockoutId == detail.StockOut.StockoutId )
         {
             return true;
         }
     }
     return false;
 }
        void _departmentStockAdhocProcessingView_ProcessAdhocStocksEvent(object sender, DepartmentStockAdhocProcessingEventArgs e)
        {
            try
            {

                long departmentId = -1;
                StockOut stockOut = null;
                StockIn stockIn = new StockIn();
                stockIn.CreateDate = DateTime.Now;
                stockIn.UpdateDate = DateTime.Now;
                stockIn.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                stockIn.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                stockIn.StockInDate = DateTime.Now;
                stockIn.StockInType = 2; // stock in for fixing department stock quantity
                stockIn.StockInId = StockInLogic.FindMaxId();
                stockIn.StockInDetails = new ArrayList();
                long stockOutDetailMaxId = StockOutDetailLogic.FindMaxId() + 1;
                long stockOutMaxId = StockOutLogic.FindMaxId()+1;
                for (int i=0; i< e.DeptStockProcessedList.Count;i++)
                {
                    DepartmentStockTemp stockTemp = (DepartmentStockTemp) e.DeptStockProcessedList[i];
                    if(stockTemp.DepartmentStockTempPK.DepartmentId != departmentId)
                    {
                        departmentId = stockTemp.DepartmentStockTempPK.DepartmentId;

                        if (stockOut != null)
                        {
                            StockOutLogic.AddFixedStockOut(stockOut);
                        }
                        stockOut = new StockOut();
                        stockOut.CreateDate = DateTime.Now;
                        stockOut.UpdateDate = DateTime.Now;
                        stockOut.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockOut.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockOut.StockOutDate = DateTime.Now;
                        stockOut.StockOutDetails = new ArrayList();
                        stockOut.DepartmentId = departmentId;
                        stockOut.DefectStatus = new StockDefectStatus{ DefectStatusId = 0};

                        stockOut.StockoutId =  stockOutMaxId++;
                    }

                    stockTemp.Fixed = 1;
                    stockTemp.UpdateDate = DateTime.Now;
                    stockTemp.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                    DepartmentStockTempLogic.Update(stockTemp);
                    long realQty = stockTemp.GoodQuantity + stockTemp.ErrorQuantity + stockTemp.DamageQuantity +
                                   stockTemp.LostQuantity + stockTemp.UnconfirmQuantity;
                    if(stockTemp.Quantity < realQty)
                    {
                        long stockInQty = realQty - stockTemp.Quantity;
                        StockOutDetail stockOutDetail = new StockOutDetail();
                        stockOutDetail.CreateDate = DateTime.Now;
                        stockOutDetail.UpdateDate = DateTime.Now;
                        stockOutDetail.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockOutDetail.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockOutDetail.Quantity = stockInQty;
                        stockOutDetail.Product = stockTemp.Product;
                        stockOutDetail.StockOutId = stockOut.StockoutId;
                        stockOutDetail.StockOut = stockOut;
                        stockOutDetail.DefectStatus = new StockDefectStatus{DefectStatusId = 0};
                        stockOutDetail.Description = "Export goods";
                        stockOutDetail.ProductMaster = stockTemp.ProductMaster;
                        stockOutDetail.StockOutDetailId = stockOutDetailMaxId++;
                        stockOut.StockOutDetails.Add(stockOutDetail);

                        StockInDetail stockInDetail = new StockInDetail();
                        stockInDetail.CreateDate = DateTime.Now;
                        stockInDetail.UpdateDate = DateTime.Now;
                        stockInDetail.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockInDetail.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                        stockInDetail.StockInType = 0;
                        stockInDetail.StockIn = stockIn;

                        stockInDetail.Quantity = stockInQty;
                        stockInDetail.Product = stockTemp.Product;
                        stockInDetail.ProductMaster = stockTemp.ProductMaster;
                        stockInDetail.StockInDetailPK = new StockInDetailPK
                                                            {
                                                                ProductId = stockTemp.Product.ProductId,
                                                                StockInId = stockIn.StockInId
                                                            };
                        stockIn.StockInDetails.Add(stockInDetail);

                    }

                    if (i == e.DeptStockProcessedList.Count - 1) // last item
                    {
                        StockOutLogic.AddFixedStockOut(stockOut);
                    }
                }
                StockInLogic.AddFixedStockIn(stockIn);

            }
            catch (Exception)
            {
                e.HasErrors = true;
                throw;
            }
        }
        public void mainStockOutView_LoadStockStatusEvent(object sender, MainStockOutEventArgs e)
        {
            IList productMasterIds = new ArrayList();
            foreach (ProductMaster master in e.SelectedProductMasterList)
            {
                productMasterIds.Add(master.ProductMasterId);
            }
            var criteria = new ObjectCriteria();
            criteria.AddEqCriteria("DelFlg", CommonConstants.DEL_FLG_NO);
            criteria.AddSearchInCriteria("ProductMaster.ProductMasterId", productMasterIds);
            IList list = StockLogic.FindAll(criteria);
            if (list.Count == 0)
            {
                return;
            }
            e.StockList = new ArrayList();
            e.FoundStockOutDetailList = new ArrayList();
            foreach (Stock stock in list)
            {
                StockOutDetail detail = new StockOutDetail();
                detail.Product = stock.Product;
                detail.GoodQuantity = stock.GoodQuantity;
                detail.ErrorQuantity = stock.ErrorQuantity;
                detail.LostQuantity = stock.LostQuantity;
                detail.DamageQuantity = stock.DamageQuantity;
                detail.UnconfirmQuantity = stock.UnconfirmQuantity;
                detail.Quantity = stock.Quantity;
                e.StockList.Add(stock);

                e.FoundStockOutDetailList.Add(detail);
            }
        }
 private void LockField(int rowIndex, StockOutDetail stockOutDetail)
 {
     stockOutDetail.DefectStatus = cbbStockOutType.SelectedItem as StockDefectStatus;
     // Xuat tam de sua hang
     if (cbbStockOutType.SelectedIndex == 0)
     {
         for (int i = 0; i < dgvDeptStockOut.ColumnCount; i++)
         {
             if (i != 8 && i != 7 ) // for shoes
             {
                 dgvDeptStockOut[i, rowIndex].ReadOnly = true;
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Gray;
             }
             else
             {
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Black;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.LightYellow;
             }
         }
     }
     // Xuất trả về nhà sản xuất
     else if (cbbStockOutType.SelectedIndex == 1)
     {
         for (int i = 0; i < dgvDeptStockOut.ColumnCount; i++)
         {
             if (i != 8 && i != 7 && i != 9)
             {
                 dgvDeptStockOut[i, rowIndex].ReadOnly = true;
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Gray;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.White;
             }
             else
             {
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Black;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.LightGreen;
             }
         }
     }
     //Xuất đi cửa hàng khác
     else if (cbbStockOutType.SelectedIndex == 2)
     {
         for (int i = 0; i < dgvDeptStockOut.ColumnCount; i++)
         {
             if (i != 7)
             {
                 dgvDeptStockOut[i, rowIndex].ReadOnly = true;
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Gray;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.White;
             }
             else
             {
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Black;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.LightGreen;
             }
         }
     }
     else if (cbbStockOutType.SelectedIndex == 3) // xuất hàng mẫu
     {
         for (int i = 0; i < dgvDeptStockOut.ColumnCount; i++)
         {
             if (i != 7)
             {
                 dgvDeptStockOut[i, rowIndex].ReadOnly = true;
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Gray;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.White;
             }
             else
             {
                 dgvDeptStockOut[i, rowIndex].Style.ForeColor = Color.Black;
                 dgvDeptStockOut[i, rowIndex].Style.BackColor = Color.LightGreen;
             }
         }
     }
 }
 private void button2_Click(object sender, EventArgs e)
 {
     if (dgvStockDefect.SelectedRows.Count == 0)
     {
         return;
     }
     DataGridViewSelectedRowCollection selection = dgvStockDefect.SelectedRows;
     if (!DepartmentProcessing)
     {
         foreach (DataGridViewRow row in selection)
         {
             Stock defect = stockDefectList[row.Index];
             StockOutDetail detail = new StockOutDetail();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.ErrorQuantity = defect.ErrorQuantity;
             detail.Quantity = detail.ErrorQuantity;
             detail.DefectStatus = new StockDefectStatus { DefectStatusId = 4 }; // trả về nhà sản xuất
             tempStockOutList.Add(detail);
         }
     }
     else
     {
         foreach (DataGridViewRow row in selection)
         {
             DepartmentStock defect = deptStockDefectList[row.Index];
             DepartmentStockOutDetail detail = new DepartmentStockOutDetail();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.ErrorQuantity = defect.ErrorQuantity;
             detail.Quantity = detail.ErrorQuantity;
             detail.DefectStatus = new StockDefectStatus { DefectStatusId = 4 }; // trả về nhà sản xuất
             deptTempStockOutList.Add(detail);
         }
     }
     bdsTempStockOut.EndEdit();
     dgvTempStockOut.Refresh();
     dgvTempStockOut.Invalidate();
 }
 /// <summary>
 /// Delete StockOutDetail from database.
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public void Delete(StockOutDetail data)
 {
     HibernateTemplate.Delete(data);
 }
        private DepartmentStockIn SaveDeptStockIn(bool isNeedSync)
        {
            // check for department
            var dept = cbbDept.SelectedItem as Department;
            if (dept == null)
            {
                MessageBox.Show("Không có cửa hàng nào để xuất hàng");
                return null;
            }

            // first remove all blank row
            int count = 0;
            int length = deptSIDetailList.Count;
            for (int i = 0; i < length - count; i++)
            {
                DepartmentStockInDetail detail = deptSIDetailList[i];
                if (string.IsNullOrEmpty(detail.Product.ProductMaster.ProductMasterId)
                    && string.IsNullOrEmpty(detail.Product.ProductMaster.ProductName))
                {
                    deptSIDetailList.RemoveAt(i - count);
                    count++;
                }
            }

            if (deptSIDetailList.Count == 0)
            {
                MessageBox.Show("Không có sản phẩm nào để xuất!!!!");
                return null;
            }

            // validate quantity
            StringBuilder errMsg = new StringBuilder();
            int line = 1;
            if(chkRemoveZero.Checked)
            {
                RemoveZeroLines();
            }
            foreach (DepartmentStockInDetail detail in deptSIDetailList)
            {
                if (detail.Quantity == 0)
                {
                    errMsg.Append(" " + line + " ");
                }
                line++;
            }
            if (errMsg.Length > 0)
            {
                MessageBox.Show("Lỗi ở dòng " + errMsg.ToString() + " : Số lượng phải lớn hơn 0");
                return null;
            }

            /*count = 0;
            foreach (DepartmentStockInDetail detail in deptSIDetailList)
            {
                line = 0;
                foreach (DepartmentStockInDetail detail2 in deptSIDetailList)
                {
                    if (detail.DelFlg == CommonConstants.DEL_FLG_NO
                        && detail.Product.ProductId.Equals(detail2.Product.ProductId))
                    {
                        if(count!=line)
                        {
                            MessageBox.Show("Lỗi : Mã vạch " + detail.Product.ProductId + " nhập 2 lần");
                            dgvDeptStockIn.CurrentCell = dgvDeptStockIn[3, line];
                            return null;
                        }
                    }
                    line++;
                }
                count++;
            }*/

            RemoveDuplicateRows();

            if (deptSI == null)
            {
                deptSI = new DepartmentStockIn();
            }

            deptSI.StockInDate = dtpImportDate.Value;
            deptSI.DepartmentId = dept.DepartmentId;
            deptSI.Description = txtDexcription.Text;
            deptSI.DepartmentStockInDetails = deptSIDetailList;

            var eventArgs = new DepartmentStockInEventArgs();
            eventArgs.IsForSync = isNeedSync;
            eventArgs.DepartmentStockIn = deptSI;
            eventArgs.ExportGoodsToDepartment = true;
            // update stock out
            foreach (DepartmentStockInDetail detail in deptSIDetailList)
            {
                bool newRow = true;
                foreach (StockOutDetail outDetail in StockOut.StockOutDetails)
                {
                    if(outDetail.Product.ProductId == detail.Product.ProductId)
                    {
                        newRow = false;
                        outDetail.Quantity = detail.Quantity;
                        outDetail.GoodQuantity = detail.Quantity;
                        outDetail.DelFlg = detail.DelFlg;
                        break;
                    }
                }
                if(newRow)
                {
                    StockOutDetail outDetail = new StockOutDetail();
                    outDetail.Product = detail.Product;
                    outDetail.CreateDate = detail.CreateDate;
                    outDetail.CreateId = detail.CreateId;
                    outDetail.UpdateDate = detail.UpdateDate;
                    outDetail.Price = detail.Price;
                    outDetail.StockOutId = StockOut.StockoutId;
                    outDetail.Quantity = detail.Quantity;
                    outDetail.GoodQuantity = detail.Quantity;
                    outDetail.ProductMaster = detail.Product.ProductMaster;
                    outDetail.StockOut = StockOut;
                    StockOut.StockOutDetails.Add(outDetail);
                }
            }
            eventArgs.UpdateStockOut = StockOut;
            EventUtility.fireEvent(UpdateStockOutEvent, this, eventArgs);
            if (eventArgs.EventResult != null)
            {
                MessageBox.Show("Lưu thành công");
                txtDexcription.Text = "";
                txtQuantity.Text = "";
                txtSumValue.Text = "";
                txtSumProduct.Text = "";
                ClearSelectionOnListBox(lstColor);
                ClearSelectionOnListBox(lstSize);
                return eventArgs.DepartmentStockIn;
            }
            else
            {
                return null;
            }
        }
 /// <summary>
 /// Update StockOutDetail to database.
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public void Update(StockOutDetail data)
 {
     HibernateTemplate.Update(data);
 }
 /// <summary>
 /// Add StockOutDetail to database.
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public StockOutDetail Add(StockOutDetail data)
 {
     HibernateTemplate.Save(data);
     return data;
 }
 private void btnError_Click(object sender, EventArgs e)
 {
     if( dgvStockDefect.SelectedRows.Count == 0)
     {
         return;
     }
     DataGridViewSelectedRowCollection selection = dgvStockDefect.SelectedRows;
     if (!DepartmentProcessing)
     {
         foreach (DataGridViewRow row in selection)
         {
             Stock defect = stockDefectList[row.Index];
             StockOutDetail detail = new StockOutDetail();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.Quantity = defect.ErrorQuantity;
             detail.ErrorQuantity = defect.ErrorQuantity;
             //detail.DamageQuantity = defect.DamageQuantity;
             detail.DefectStatus = new StockDefectStatus{ DefectStatusId = 5}; // trả về nhà sản xuất
             returnGoodsList.Add(detail);
         }
     }
     else
     {
         foreach (DataGridViewRow row in selection)
         {
             DepartmentStock defect = deptStockDefectList[row.Index];
             DepartmentStockOutDetail detail = new DepartmentStockOutDetail();
             detail.DepartmentStockOutDetailPK = new DepartmentStockOutDetailPK();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.Quantity = defect.ErrorQuantity;
             detail.ErrorQuantity = defect.ErrorQuantity;
             //detail.DamageQuantity = defect.DamageQuantity;
             detail.DefectStatus = new StockDefectStatus { DefectStatusId = 6 }; // trả về kho chính
             deptReturnGoodsList.Add(detail);
         }
     }
     bdsReturnGoods.EndEdit();
     dgvReturnStockOut.Refresh();
     dgvReturnStockOut.Invalidate();
 }
 private void button4_Click(object sender, EventArgs e)
 {
     if (dgvStockDefect.SelectedRows.Count == 0)
     {
         return;
     }
     DataGridViewSelectedRowCollection selection = dgvStockDefect.SelectedRows;
     if (!DepartmentProcessing)
     {
         foreach (DataGridViewRow row in selection)
         {
             Stock defect = stockDefectList[row.Index];
             StockOutDetail detail = new StockOutDetail();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.LostQuantity = defect.LostQuantity;
             detail.DamageQuantity = defect.DamageQuantity;
             detail.Quantity = detail.LostQuantity + detail.DamageQuantity;
             detail.DefectStatus = new StockDefectStatus { DefectStatusId = 8 }; // hủy hàng
             destroyGoodsList.Add(detail);
         }
     }
     else
     {
         foreach (DataGridViewRow row in selection)
         {
             DepartmentStock defect = deptStockDefectList[row.Index];
             DepartmentStockOutDetail detail = new DepartmentStockOutDetail();
             detail.DepartmentStockOutDetailPK = new DepartmentStockOutDetailPK();
             detail.Product = defect.Product;
             detail.ProductMaster = defect.ProductMaster;
             detail.LostQuantity = defect.LostQuantity;
             detail.DamageQuantity = defect.DamageQuantity;
             detail.Quantity = detail.LostQuantity + detail.DamageQuantity;
             detail.DefectStatus = new StockDefectStatus { DefectStatusId = 8 }; // hủy hàng
             deptDestroyGoodsList.Add(detail);
         }
     }
     bdsDestroyGoods.EndEdit();
     dgvGoodsDestroy.Refresh();
     dgvGoodsDestroy.Invalidate();
 }
        void mainStockOutView_FindByStockInIdEvent(object sender, MainStockOutEventArgs e)
        {
            if (e.SelectedStockInIds.Count > 0)
            {
                ObjectCriteria objectCriteria = new ObjectCriteria();
                objectCriteria.AddSearchInCriteria("StockInDetailPK.StockInId", e.SelectedStockInIds);
                IList list = StockInDetailLogic.FindAll(objectCriteria);
                IList stockOutList = new ArrayList();
                foreach (StockInDetail inDetail in list)
                {
                    StockOutDetail deptDetail = new StockOutDetail();
                    deptDetail.CreateDate = DateTime.Now;
                    deptDetail.UpdateDate = DateTime.Now;
                    deptDetail.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                    deptDetail.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                    //deptDetail. = new DepartmentStockInDetailPK();
                    deptDetail.Product = inDetail.Product;
                    deptDetail.ProductMaster = inDetail.Product.ProductMaster;
                    deptDetail.Quantity = inDetail.Quantity;
                    deptDetail.GoodQuantity = inDetail.Quantity;
                    stockOutList.Add(deptDetail);
                }
                GetRemainStockNumber(stockOutList);

                e.SelectedStockOutDetails = stockOutList;
            }
            EventUtility.fireEvent(CompletedFindByStockInEvent, this, e);
        }
Example #14
0
 private Stock GetDefectFromStockOut(StockOutDetail detail, IList list)
 {
     foreach (Stock stockDefect in list)
     {
         if(stockDefect.Product.ProductId == detail.Product.ProductId)
         {
             return stockDefect;
         }
     }
     return null;
 }
 public void Update(StockOutDetail data)
 {
     StockOutDetailDAO.Update(data);
 }
Example #16
0
        public void Add(DepartmentStockIn data)
        {
            string deptStr = string.Format("{0:000}", data.DepartmentId);
            string dateStr = data.StockInDate.ToString("yyMMdd");
            var criteria = new ObjectCriteria();
            criteria.AddGreaterCriteria("StockoutId", (long)0);

            var maxId = StockOutDAO.SelectSpecificType(criteria, Projections.Max("StockoutId"));
            var stockOutId = maxId == null ? 1 : Int64.Parse(maxId.ToString()) + 1;

            //var stockInPk = new DepartmentStockInPK { DepartmentId = data.DepartmentId, StockInId = stockOutId + "" };

            //data.DepartmentStockInPK = stockInPk;
            data.CreateDate = DateTime.Now;
            data.UpdateDate = DateTime.Now;
            data.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
            data.CreateId = ClientInfo.getInstance().LoggedUser.Name;

            StockOut stockOut = new StockOut();
            stockOut.StockoutId = stockOutId;
            stockOut.CreateDate = DateTime.Now;
            stockOut.UpdateDate = DateTime.Now;
            stockOut.StockOutDate = DateTime.Now;
            stockOut.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
            stockOut.CreateId = ClientInfo.getInstance().LoggedUser.Name;
            stockOut.NotUpdateMainStock = false;
            stockOut.DefectStatus = new StockDefectStatus { DefectStatusId = 0};
            stockOut.DelFlg = 0;
            stockOut.DepartmentId = data.DepartmentId;

            // we will get the stock to get the data
            IList productMasterIds = new ArrayList();
            foreach (DepartmentStockInDetail stockInDetail in data.DepartmentStockInDetails)
            {
                productMasterIds.Add(stockInDetail.Product.ProductMaster.ProductMasterId);
            }
            IList productIds = new ArrayList();
            foreach (DepartmentStockInDetail stockInDetail in data.DepartmentStockInDetails)
            {
                productIds.Add(stockInDetail.Product.ProductId);
            }

            criteria = new ObjectCriteria();
            criteria.AddEqCriteria("DelFlg", CommonConstants.DEL_FLG_NO);
            criteria.AddGreaterCriteria("Quantity", (long)0);
            //criteria.AddSearchInCriteria("ProductMaster.ProductMasterId", productMasterIds);
            criteria.AddSearchInCriteria("Product.ProductId", productIds);
            //criteria.AddOrder("ProductMaster.ProductMasterId", true);
            criteria.AddOrder("Product.ProductId", true);
            IList stockList = StockDAO.FindAll(criteria);

            IList updateStockList = new ArrayList();
            IList stockOutDetailList = new ArrayList();

            var maxSODetailId = StockOutDetailDAO.SelectSpecificType(new ObjectCriteria(), Projections.Max("StockOutDetailId"));
            long stockOutDetailId = (maxSODetailId == null ? 1 : Int64.Parse(maxSODetailId.ToString()) + 1);

            foreach (DepartmentStockInDetail stockInDetail in data.DepartmentStockInDetails)
            {
                long quantity = stockInDetail.Quantity;
                foreach (Stock stock in stockList)
                {
                    long stockInQty = 0;
                    //if (stock.ProductMaster.ProductMasterId.Equals(stockInDetail.Product.ProductMaster.ProductMasterId) && stock.Quantity > 0)
                    if (stock.Product.ProductId.Equals(stockInDetail.Product.ProductId) && stock.Quantity > 0)
                    {
                        if (quantity > stock.GoodQuantity)
                        {
                            throw new BusinessException("Mặt hàng: " + stock.ProductMaster.ProductName
                                + " - mã vạch: " + stock.Product.ProductId
                                + " không đủ hàng! Tồn: " + stockInDetail.StockQuantity + " , cần xuất: " + quantity);

                            stockInQty = stock.GoodQuantity;
                            quantity -= stock.GoodQuantity;
                            stock.GoodQuantity = 0;
                        }
                        else
                        {
                            stockInQty = quantity;
                            stock.GoodQuantity -= quantity;
                            quantity = 0;
                        }
                        stock.Quantity = stock.GoodQuantity + stock.ErrorQuantity + stock.DamageQuantity +
                                         stock.LostQuantity + stock.UnconfirmQuantity;
                        stock.UpdateDate = DateTime.Now;
                        stock.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                        updateStockList.Add(stock);

                        /*var pk = new StockOutDetailPK
                        {
                            //DepartmentId = data.DepartmentId,
                            ProductId = stock.Product.ProductId,
                            StockOutId = stockOutId
                        };*/

                        var detail = new StockOutDetail
                                         {
                                             //StockOutDetailPK = pk,
                            StockOutDetailId = stockOutDetailId++,
                            StockOutId = stockOutId,
                            StockOut = stockOut,
                            Product =  stock.Product,
                            ProductId = stock.Product.ProductId,
                            Price = stockInDetail.Price,
                            DelFlg = 0,
                            ExclusiveKey = 1,
                            Description = "Export goods",
                            DefectStatus = new StockDefectStatus { DefectStatusId = 0},
                            Quantity = stockInQty,
                            GoodQuantity = stockInQty,
                            CreateDate = DateTime.Now,
                            UpdateDate = DateTime.Now,
                            UpdateId = ClientInfo.getInstance().LoggedUser.Name,
                            CreateId = ClientInfo.getInstance().LoggedUser.Name,
                            ProductMaster = stock.ProductMaster,

                        };
                        /*var deptStock = new DepartmentStock
                        {
                            DepartmentStockPK = new DepartmentStockPK
                            {
                                DepartmentId = data.DepartmentId,
                                ProductId = stock.Product.ProductId
                            },
                            CreateDate = DateTime.Now,
                            UpdateDate = DateTime.Now,
                            UpdateId = ClientInfo.getInstance().LoggedUser.Name,
                            CreateId = ClientInfo.getInstance().LoggedUser.Name,
                            ProductMaster = stock.ProductMaster
                        };*/
                        stockOutDetailList.Add(detail);
                        if (quantity == 0)
                        {
                            break;
                        }
                    }
                }
                if (quantity > 0)
                {
                    if (data.DepartmentStockInPK != null)
                    {
                        data.DepartmentStockInPK.StockInId = null;
                    }
                    throw new BusinessException("Số lượng xuất kho lớn hơn số lượng trong kho : " + stockInDetail.Product.ProductId);
                }
            }
            // insert stock out and stockout detail
            stockOut.StockOutDetails = stockOutDetailList;
            if(ClientSetting.ExportConfirmation)
            {
                stockOut.ConfirmFlg = 1;
            }
            StockOutDAO.Add(stockOut);

            // Remove duplicate rows
            int count = 0;
            while (count < (stockOutDetailList.Count - 1))
            {
                StockOutDetail detail1 = (StockOutDetail)stockOutDetailList[count];
                detail1.CreateDate = DateTime.Now;
                detail1.UpdateDate = DateTime.Now;
                int maxCount = stockOutDetailList.Count - 1;
                while (maxCount > count)
                {
                    StockOutDetail detail2 = (StockOutDetail)stockOutDetailList[maxCount];

                    if (detail1.Product.ProductId.Equals(detail2.Product.ProductId))
                    {
                        detail1.Quantity += detail2.Quantity;
                        stockOutDetailList.RemoveAt(maxCount);
                    }
                    maxCount--;
                }
                count++;
            }

            foreach (StockOutDetail detail in stockOutDetailList)
            {
                StockOutDetailDAO.Add(detail);
            }

            if (!ClientSetting.ExportConfirmation)
            {
                // update stock
                foreach (Stock stock in updateStockList)
                {
                    StockDAO.Update(stock);
                }
            }
        }
 public StockOutDetail Add(StockOutDetail data)
 {
     StockOutDetailDAO.Add(data);
     return data;
 }
 private bool IsInList(StockOutDetailCollection collection, StockOutDetail detail)
 {
     foreach (StockOutDetail outDetail in collection)
     {
         if (detail.Product.ProductId.Equals(outDetail.Product.ProductId))
         {
             return true;
         }
     }
     return false;
 }
 public void Delete(StockOutDetail data)
 {
     StockOutDetailDAO.Delete(data);
 }
Example #20
0
 private bool HasCreatedView(StockOutDetail detail)
 {
     foreach (StockOutDetailView outDetailView in deptStockOutDetailList)
     {
         if (outDetailView.StockOutDetail.Product.ProductId == detail.Product.ProductId
             && outDetailView.StockOutDetail.StockOutDetailId == detail.StockOutDetailId)
             //&& outDetailView.StockOutDetail.DepartmentId == detail.DepartmentStockOut.DepartmentStockOutPK.DepartmentId)
         {
             return true;
         }
     }
     return false;
 }
Example #21
0
        public void Add(DepartmentStockIn data)
        {
            string deptStr = string.Format("{0:000}", data.DepartmentId);
            string dateStr = data.StockInDate.ToString("yyMMdd");
            var criteria = new ObjectCriteria();
            criteria.AddGreaterCriteria("StockoutId", (long)0);

            var maxId = StockOutDAO.SelectSpecificType(criteria, Projections.Max("StockoutId"));
            var stockOutId = maxId == null ? 1 : Int64.Parse(maxId.ToString()) + 1;

            //var stockInPk = new DepartmentStockInPK { DepartmentId = data.DepartmentId, StockInId = stockOutId + "" };

            //data.DepartmentStockInPK = stockInPk;
            data.CreateDate = DateTime.Now;
            data.UpdateDate = DateTime.Now;
            data.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
            data.CreateId = ClientInfo.getInstance().LoggedUser.Name;

            StockOut stockOut = new StockOut();
            stockOut.StockoutId = stockOutId;
            stockOut.CreateDate = DateTime.Now;
            stockOut.UpdateDate = DateTime.Now;
            stockOut.StockOutDate = DateTime.Now;
            stockOut.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
            stockOut.CreateId = ClientInfo.getInstance().LoggedUser.Name;
            stockOut.NotUpdateMainStock = false;
            stockOut.DefectStatus = new StockDefectStatus { DefectStatusId = 0};
            stockOut.DelFlg = 0;
            stockOut.DepartmentId = data.DepartmentId;

            // we will get the stock to get the data
            IList productMasterIds = new ArrayList();
            foreach (DepartmentStockInDetail stockInDetail in data.DepartmentStockInDetails)
            {
                productMasterIds.Add(stockInDetail.Product.ProductMaster.ProductMasterId);
            }

            criteria = new ObjectCriteria();
            criteria.AddEqCriteria("DelFlg", CommonConstants.DEL_FLG_NO);
            criteria.AddGreaterCriteria("Quantity", (long)0);
            criteria.AddSearchInCriteria("ProductMaster.ProductMasterId", productMasterIds);
            criteria.AddOrder("ProductMaster.ProductMasterId", true);
            criteria.AddOrder("Product.ProductId", true);
            IList stockList = StockDAO.FindAll(criteria);

            IList updateStockList = new ArrayList();
            IList stockOutDetailList = new ArrayList();

            var maxSODetailId = StockOutDetailDAO.SelectSpecificType(new ObjectCriteria(), Projections.Max("StockOutDetailId"));
            long stockOutDetailId = (maxSODetailId == null ? 1 : Int64.Parse(maxSODetailId.ToString()) + 1);

            /*if(stockOutIds!= null && ((long)stockOutIds) > 0)
            {
                stockOutDetailId = (long) stockOutIds + 1;
            }
            MessageBox.Show(stockOutDetailId)*/
            /*if (stockOutIds != null && 1 == ((IList)stockOutIds).Count)
            {
                stockOutDetailId = (long)((IList)stockOutIds)[0] + 1;
            }*/

            foreach (DepartmentStockInDetail stockInDetail in data.DepartmentStockInDetails)
            {
                long quantity = stockInDetail.Quantity;
                foreach (Stock stock in stockList)
                {
                    long stockInQty = 0;
                    if (stock.ProductMaster.ProductMasterId.Equals(stockInDetail.Product.ProductMaster.ProductMasterId) && stock.Quantity > 0)
                    {
                        if (quantity >= stock.GoodQuantity)
                        {
                            stockInQty = stock.GoodQuantity;
                            quantity -= stock.GoodQuantity;
                            stock.GoodQuantity = 0;
                        }
                        else
                        {
                            stockInQty = quantity;
                            stock.GoodQuantity -= quantity;
                            quantity = 0;
                        }
                        stock.Quantity = stock.GoodQuantity + stock.ErrorQuantity + stock.DamageQuantity +
                                         stock.LostQuantity + stock.UnconfirmQuantity;
                        stock.UpdateDate = DateTime.Now;
                        stock.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                        updateStockList.Add(stock);

                        /*var pk = new StockOutDetailPK
                        {
                            //DepartmentId = data.DepartmentId,
                            ProductId = stock.Product.ProductId,
                            StockOutId = stockOutId
                        };*/

                        var detail = new StockOutDetail
                                         {
                                             //StockOutDetailPK = pk,
                            StockOutDetailId = stockOutDetailId++,
                            StockOutId = stockOutId,
                            StockOut = stockOut,
                            Product =  stock.Product,
                            ProductId = stock.Product.ProductId,
                            Price = stockInDetail.Price,
                            DelFlg = 0,
                            ExclusiveKey = 1,
                            Description = "Export goods",
                            DefectStatus = new StockDefectStatus { DefectStatusId = 0},
                            Quantity = stockInQty,
                            CreateDate = DateTime.Now,
                            UpdateDate = DateTime.Now,
                            UpdateId = ClientInfo.getInstance().LoggedUser.Name,
                            CreateId = ClientInfo.getInstance().LoggedUser.Name,
                            ProductMaster = stock.ProductMaster,

                        };
                        /*var deptStock = new DepartmentStock
                        {
                            DepartmentStockPK = new DepartmentStockPK
                            {
                                DepartmentId = data.DepartmentId,
                                ProductId = stock.Product.ProductId
                            },
                            CreateDate = DateTime.Now,
                            UpdateDate = DateTime.Now,
                            UpdateId = ClientInfo.getInstance().LoggedUser.Name,
                            CreateId = ClientInfo.getInstance().LoggedUser.Name,
                            ProductMaster = stock.ProductMaster
                        };*/
                        stockOutDetailList.Add(detail);
                        if (quantity == 0)
                        {
                            break;
                        }
                    }
                }
                if (quantity > 0)
                {
                    data.DepartmentStockInPK.StockInId = null;
                    throw new BusinessException("Số lượng xuất kho lớn hơn số lượng trong kho");
                }
            }
            // insert stock out and stockout detail
            stockOut.StockOutDetails = stockOutDetailList;
            StockOutDAO.Add(stockOut);
            foreach (StockOutDetail detail in stockOutDetailList)
            {
                StockOutDetailDAO.Add(detail);
            }

            // update stock
            foreach (Stock stock in updateStockList)
            {
                StockDAO.Update(stock);
            }
        }