Exemple #1
0
        public IStockDAO CreateStockDAO()
        {
            IStockDAO dao = null;

            if (_DbType == DatabaseType.SqlServer)
            {
                dao = new SqlServer.StockDAO();
            }
            else if (_DbType == DatabaseType.MySql)
            {
                dao = new SqlServer.StockDAO();
            }
            else if (_DbType == DatabaseType.Oracole)
            {
                dao = new SqlServer.StockDAO();
            }
            else if (_DbType == DatabaseType.DB2)
            {
                dao = new SqlServer.StockDAO();
            }
            else if (_DbType == DatabaseType.Postgre)
            {
                dao = new SqlServer.StockDAO();
            }
            return(dao);
        }
 public TransactionsController(IGameDAO gameDao, IUserDAO userDao, ITransactionDAO transactDao, IStockDAO stockDao)
 {
     this.gameDao        = gameDao;
     this.userDao        = userDao;
     this.transactionDao = transactDao;
     this.stockDao       = stockDao;
 }
        public ScheduledJobs(IUserDAO userDao, IGameDAO gameDao, ITransactionDAO transactionDao, IOwnedStocksHelper ownedHelper, IStockAPIDAO stockAPIDao, IStockDAO stockDao, IStockHistoryAPIDAO stockHistoryAPIDao)

        {
            this.userDao            = userDao;
            this.gameDao            = gameDao;
            this.transactionDao     = transactionDao;
            this.ownedHelper        = ownedHelper;
            this.stockAPIDao        = stockAPIDao;
            this.stockDao           = stockDao;
            this.stockHistoryAPIDao = stockHistoryAPIDao;
        }
        public StocksController(IGameDAO gameDao, IUserDAO userDao, ITransactionDAO transactDao, IStockAPIDAO stockAPIDao, IStockDAO stockDao, IOwnedStocksHelper ownedHelper)
        {
            this.userDao     = userDao;
            this.stockDao    = stockDao;
            this.ownedHelper = ownedHelper;

            // TODO: Determine if these properties are needed with later refactoring
            this.gameDao     = gameDao;
            this.transactDao = transactDao;
            this.stockAPIDao = stockAPIDao;
        }
Exemple #5
0
 /// <summary>
 /// 作废一条票据
 /// </summary>
 /// <param name="bill">作废的票据</param>
 /// <param name="maker">做废人</param>
 /// <param name="makeDate">作废日期</param>
 /// <param name="remark">备注</param>
 public void BlankOutBill(Bills bill, string remark)
 {
     if (!bill.Actived)
     {
         throw new ApplicationException(string.Format("票据{0}已经被作废,不能重复被作废。", bill.ID));
     }
     if (bill.IsCancelOut)
     {
         throw new ApplicationException(string.Format("票据{0}已被冲销,不能作废。", bill.ID));
     }
     if (bill.IsRedBill)
     {
         throw new ApplicationException(string.Format("票据{0}是冲销票,不能作废。", bill.ID));
     }
     using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
     {
         IDbTransaction trans = conn.BeginTransaction();
         try
         {
             //1、更新票据状态
             bill.Actived = false;
             bill.Remark += remark;
             IBillsDAO billDao = DAOFactory.Instance.CreateBillsDAO();
             billDao.UpdateBill(bill, conn, trans);
             //2、更改库存数据
             IStockDAO stockDao = DAOFactory.Instance.CreateStockDAO();
             foreach (BillsItem item in bill.Items)
             {
                 Stock stock = stockDao.SelectStockByDrugsAndStorehouse(item.Drugs.ID, bill.Storehouse.ID, conn, trans);
                 if (bill.BillsType.IsOut)
                 {
                     stock.Count += item.Count;
                 }
                 else
                 {
                     stock.Count -= item.Count;
                 }
                 stockDao.UpdateStock(stock, conn, trans);
             }
             //3、记录票据作废事件日志
             LogServices.Info("作废票据" + bill.ID);
             //4、提交
             trans.Commit();
         }
         catch (Exception ex)
         {
             //5、回滚
             bill.Actived = true;
             trans.Rollback();
             throw ex;
         }
     }
 }
        /// <summary>
        /// 开票并更改库存
        /// </summary>
        /// <param name="bill"></param>
        public void MakeBill(StockBill bill)
        {
            using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
            {
                IDbTransaction trans = conn.BeginTransaction();
                try
                {
                    // 1. 保存票据信息
                    IStockBillDAO sbDao = DAOFactory.Instance.CreateStockBillDAO();
                    sbDao.InsertBill(bill, conn, trans);

                    // 2. 更改库存数据
                    IStockDAO sDao = DAOFactory.Instance.CreateStockDAO();
                    foreach (StockBillItem item in bill.Items)
                    {
                        Stock stock = sDao.SelectStockByGoodsAndStorehouse(item.Goods.ID, bill.Storehouse.ID, conn, trans);

                        //如果库存中没有该商品,则创建该商品的库存信息。
                        if (stock == null)
                        {
                            stock            = new Stock();
                            stock.Storehouse = bill.Storehouse;
                            stock.Goods      = item.Goods;
                            stock.Count      = 0;
                            sDao.InsertStock(stock, conn, trans);
                        }

                        //执行出入库操作
                        if (bill.BillType.IsOutStorehouse)//出库
                        {
                            stock.Count -= item.Count;
                        }
                        else// 入库
                        {
                            stock.Count += item.Count;
                        }
                        sDao.UpdateStock(stock, conn, trans);
                    }


                    // 3. 提交
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    // 4. 回滚
                    trans.Rollback();
                    throw ex;
                }
            }
        }
Exemple #7
0
        public IStockDAO CreateStockDAO()
        {
            IStockDAO dao = null;

            if (_DbType == DatabaseType.SqlServer)
            {
                dao = new SqlServer.StockDAO();
            }
            else if (_DbType == DatabaseType.MySQL)
            {
                //dao = new MySQL.EventLogDAO();
            }
            return(dao);
        }
Exemple #8
0
        /// <summary>
        /// 开出库或则入库的票
        /// </summary>
        /// <param name="bill">票据</param>
        public void MakeBill(Bills bill)
        {
            using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
            {
                IDbTransaction trans = conn.BeginTransaction();
                try
                {
                    //1、保存票据信息;
                    IBillsDAO billDao = DAOFactory.Instance.CreateBillsDAO();
                    billDao.InsertBill(bill, conn, trans);
                    //2、更改库存数据;
                    IStockDAO stockDao = DAOFactory.Instance.CreateStockDAO();
                    foreach (BillsItem item in bill.Items)
                    {
                        Stock stock = stockDao.SelectStockByDrugsAndStorehouse(item.Drugs.ID, bill.Storehouse.ID, conn, trans);
                        //如果库存中没有该商品,则创建库存信息
                        if (stock == null)
                        {
                            stock            = new Stock();
                            stock.Storehouse = bill.Storehouse;
                            stock.Drug       = item.Drugs;
                            stock.Count      = 0;
                            stockDao.InsertStock(stock, conn, trans);
                        }

                        if (bill.BillsType.IsOut)
                        {
                            stock.Count -= item.Count;
                        }
                        else
                        {
                            stock.Count += item.Count;
                        }
                        stockDao.UpdateStock(stock, conn, trans);
                    }

                    //3、提交
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    //4、回滚
                    trans.Rollback();
                    throw ex;
                }
            }
        }
Exemple #9
0
 public StockHistoryAPIDAO(IStockDAO stockDao)
 {
     this.stockDao = stockDao;
 }
        /// <summary>
        /// 冲销一个票据
        /// </summary>
        /// <param name="bill">要冲销的票据</param>
        /// <param name="maker">冲销人</param>
        /// <param name="makeDate">冲销日期</param>
        /// <param name="remark">备注</param>
        public StockBill CancelOutBill(StockBill bill, string maker, DateTime makeDate, string remark)
        {
            using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
            {
                bill = this.FindBill(bill.ID);

                // 1. 构造负字票
                StockBill redBill = new StockBill();
                redBill.Actived     = true;
                redBill.BillType    = bill.BillType;
                redBill.Code        = bill.Code;
                redBill.Company     = bill.Company;
                redBill.CreateDate  = DateTime.Now;
                redBill.IsCancelOut = false;
                redBill.IsRedBill   = true;
                redBill.MakeDate    = makeDate;
                redBill.Maker       = maker;
                redBill.Remark      = "对冲票据" + bill.ID.ToString();
                redBill.Storehouse  = bill.Storehouse;
                foreach (StockBillItem item in bill.Items)
                {
                    StockBillItem redBillItem = new StockBillItem();
                    redBillItem.Goods     = item.Goods;
                    redBillItem.Count     = item.Count * (-1);
                    redBillItem.UnitPrice = item.UnitPrice;
                    redBill.Items.Add(redBillItem);
                }

                IDbTransaction trans = conn.BeginTransaction();
                try
                {
                    IStockBillDAO sbDao = DAOFactory.Instance.CreateStockBillDAO();
                    // 2. 保存红票
                    sbDao.InsertBill(redBill, conn, trans);

                    // 3. 保存原票据信息
                    bill.IsCancelOut = true;
                    bill.Remark     += " 被冲销" + redBill.ID.ToString();
                    sbDao.UpdateBill(bill, conn, trans);

                    // 4. 更改库存数据
                    IStockDAO sDao = DAOFactory.Instance.CreateStockDAO();
                    foreach (StockBillItem redBillItem in redBill.Items)
                    {
                        Stock stock = sDao.SelectStockByGoodsAndStorehouse(redBillItem.Goods.ID, bill.Storehouse.ID, conn, trans);

                        //执行出入库操作
                        if (redBill.BillType.IsOutStorehouse)//出库
                        {
                            stock.Count -= redBillItem.Count;
                        }
                        else// 入库
                        {
                            stock.Count += redBillItem.Count;
                        }
                        sDao.UpdateStock(stock, conn, trans);
                    }


                    // 5. 提交
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    // 6. 回滚
                    bill.IsCancelOut = false;
                    trans.Rollback();
                    throw ex;
                }


                return(redBill);
            }
        }
        /// <summary>
        /// 作废一个票据
        /// </summary>
        /// <param name="bill">要做作废的票据</param>
        /// <param name="remark">备注</param>
        public void BlankOutBill(StockBill bill, string remark)
        {
            if (!bill.Actived)
            {
                throw new ApplicationException(string.Format("票据{0}已经被作废,不能重复作废。", bill.ID));
            }
            if (bill.IsCancelOut)
            {
                throw new ApplicationException(string.Format("票据{0}已经被冲销,不能作废。", bill.ID));
            }
            if (bill.IsRedBill)
            {
                throw new ApplicationException(string.Format("票据{0}是冲销票,不能作废。", bill.ID));
            }

            using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
            {
                IDbTransaction trans = conn.BeginTransaction();
                try
                {
                    //1. 更新票据状态
                    bill.Actived = false;
                    bill.Remark += remark;
                    IStockBillDAO sbDao = DAOFactory.Instance.CreateStockBillDAO();
                    sbDao.UpdateBill(bill, conn, trans);

                    //2. 更改库存数据
                    IStockDAO sDao = DAOFactory.Instance.CreateStockDAO();
                    foreach (StockBillItem item in bill.Items)
                    {
                        //List<Stock> stockList = sDao.SelectStocksByGoodsID(item.Goods.ID, conn);
                        //Stock stock = null;
                        //foreach (Stock s in stockList)
                        //{
                        //    if (s.Storehouse.ID == bill.Storehouse.ID)
                        //    {
                        //        stock = s;
                        //        break;
                        //    }
                        //}
                        Stock stock = sDao.SelectStockByGoodsAndStorehouse(item.Goods.ID, bill.Storehouse.ID, conn, trans);


                        //执行出入库操作
                        if (bill.BillType.IsOutStorehouse)//出库
                        {
                            stock.Count += item.Count;
                        }
                        else// 入库
                        {
                            stock.Count -= item.Count;
                        }
                        sDao.UpdateStock(stock, conn, trans);
                    }


                    //3. 记录作废票据的事件日志
                    LogService.Info("作废单据" + bill.ID);


                    // 4. 提交
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    // 4. 回滚
                    bill.Actived = true;
                    trans.Rollback();
                    throw ex;
                }
            }
        }
Exemple #12
0
        /// <summary>
        /// 冲销一条票据
        /// </summary>
        /// <param name="bill">票据</param>
        /// <param name="maker">冲票人</param>
        /// <param name="makeDate">冲票日期</param>
        /// <param name="remark">备注</param>
        public Bills CancelOutBill(Bills bill, string maker, DateTime makeDate, string remark)
        {
            using (IDbConnection conn = DAOFactory.Instance.OpenConnection())
            {
                //1、构造负子票
                Bills redBill = new Bills();
                redBill.Actived     = true;
                redBill.BillsType   = bill.BillsType;
                redBill.Code        = bill.Code;
                redBill.Company     = bill.Company;
                redBill.CreateDate  = DateTime.Now;
                redBill.IsCancelOut = false;
                redBill.IsRedBill   = true;
                redBill.MakeDate    = makeDate;
                redBill.Maker       = maker;
                redBill.Storehouse  = bill.Storehouse;
                redBill.Remark      = "对冲票据" + bill.ID.ToString();
                foreach (BillsItem item in bill.Items)
                {
                    BillsItem redbillitem = new BillsItem();
                    redbillitem.Drugs     = item.Drugs;
                    redbillitem.Count     = item.Count * (-1);
                    redbillitem.UnitPrice = item.UnitPrice;
                    redbillitem.Money     = item.Money * (-1);
                    redBill.Items.Add(redbillitem);
                }

                IDbTransaction trans = conn.BeginTransaction();
                try
                {
                    IBillsDAO billDao = DAOFactory.Instance.CreateBillsDAO();
                    // 2. 保存红票
                    billDao.InsertBill(redBill, conn, trans);

                    // 3. 保存原票据信息
                    bill.IsCancelOut = true;
                    bill.Remark     += " 被冲销" + redBill.ID.ToString();
                    billDao.UpdateBill(bill, conn, trans);

                    // 4. 更改库存数据
                    IStockDAO stockDao = DAOFactory.Instance.CreateStockDAO();

                    foreach (BillsItem item in redBill.Items)
                    {
                        Stock stock = stockDao.SelectStockByDrugsAndStorehouse(item.Drugs.ID, bill.Storehouse.ID, conn, trans);
                        if (redBill.BillsType.IsOut)
                        {
                            stock.Count -= item.Count;
                        }
                        else
                        {
                            stock.Count += item.Count;
                        }
                        stockDao.UpdateStock(stock, conn, trans);
                    }

                    //5、提交
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    //6、回滚
                    bill.IsCancelOut = false;
                    trans.Rollback();
                    throw ex;
                }
                return(redBill);
            }
        }
Exemple #13
0
 public OwnedStocksHelper(ITransactionDAO transactDao, IStockDAO stockDao)
 {
     this.transactDao = transactDao;
     this.stockDao    = stockDao;
 }