Ejemplo n.º 1
0
 public override Hashtable ChangeStoreNum(BillMaster billMaster, List <BillOrder> orderList)
 {
     try
     {
         Hashtable storeNumHash = new Hashtable();
         foreach (BillOrder order in orderList)
         {
             YP_CheckOrder orderCheck = (YP_CheckOrder)order;
             YP_StoreNum   storeNum   = new YP_StoreNum();
             if (orderCheck.CheckNum != orderCheck.FactNum)
             {
                 storeNum.makerDicId = orderCheck.MakerDicID;
                 storeNum.smallUnit  = orderCheck.LeastUnit;
                 storeNum.storeNum   = Convert.ToInt32(orderCheck.CheckNum);
                 storeNumHash.Add(storeNum.makerDicId, storeNum);
                 UpdateStoreNum(orderCheck.MakerDicID, orderCheck.DeptID, Convert.ToInt32(orderCheck.CheckNum));
             }
         }
         return(storeNumHash);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 修改盘点单据
        /// </summary>
        /// <param name="billMaster">盘点单表头</param>
        /// <param name="listOrder">盘点单明细列表</param>
        /// <param name="deptId">药剂科室ID</param>
        public override void UpdateBill(BillMaster billMaster, List <BillOrder> listOrder, long deptId)
        {
            try
            {
                YP_CheckMaster masterCheck = (YP_CheckMaster)billMaster;
                ComputeMasterFee(masterCheck, listOrder);
                oleDb.BeginTransaction();
                //声明操作对象
                HIS.DAL.YP_Dal ypDal = new YP_Dal();
                ypDal._oleDb = oleDb;
                YP_CheckOrder checkOrder = new YP_CheckOrder();
                BindEntity <HIS.Model.YP_CheckMaster> .CreateInstanceDAL(oleDb, Tables.YF_CHECKMASTER).Update(masterCheck);

                foreach (BillOrder order in listOrder)
                {
                    checkOrder = (YP_CheckOrder)order;
                    BindEntity <HIS.Model.YP_CheckOrder> .CreateInstanceDAL(oleDb, Tables.YF_CHECKORDER).Update(checkOrder);
                }
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }
Ejemplo n.º 3
0
        private void YF_ComputeCheckFee(DataRow dRow, YP_CheckOrder checkOrder)
        {
            //盘点包装量
            decimal cPackNum = Convert.ToDecimal(dRow["CPACKNUM"]);
            //盘点基本量
            decimal cBaseNum = Convert.ToDecimal(dRow["CBASENUM"]);
            //包装单位比例
            decimal pUnitNum = Convert.ToDecimal(checkOrder.UnitNum);
            //零售价
            decimal retailPrice = checkOrder.RetailPrice;
            //批发价
            decimal tradePrice = checkOrder.TradePrice;
            //实际包装量
            decimal packNum = Convert.ToDecimal(dRow["PACKNUM"]);
            //实际基本量
            decimal baseNum = Convert.ToDecimal(dRow["BASENUM"]);

            checkOrder.CheckNum = cPackNum * pUnitNum + cBaseNum;
            checkOrder.FactNum  = packNum * pUnitNum + baseNum;
            //计算盘盈,盘亏金额
            checkOrder.CKRetailFee = cPackNum * retailPrice + (cBaseNum / pUnitNum) * retailPrice;
            checkOrder.CKTradeFee  = cPackNum * tradePrice + (cBaseNum / pUnitNum) * tradePrice;
            checkOrder.FTRetailFee = packNum * retailPrice + (baseNum / pUnitNum) * retailPrice;
            checkOrder.FTTradeFee  = packNum * tradePrice + (baseNum / pUnitNum) * tradePrice;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 根据单据信息构造台帐信息
        /// </summary>
        /// <param name="billMaster">单据头</param>
        /// <param name="billOrder">单据明细信息</param>
        /// <param name="storeNum">库存处理后药品库存信息</param>
        /// <param name="accountYear">会计年份</param>
        /// <param name="accountMonth">会计月份</param>
        /// <param name="smallUnit">基本单位</param>
        /// <returns>台帐信息</returns>
        override protected YP_Account BuildAccount(BillMaster billMaster, BillOrder billOrder, decimal storeNum,
                                                   int accountYear, int accountMonth, int smallUnit)
        {
            YP_Account     account = new YP_Account();
            YP_CheckMaster master  = (YP_CheckMaster)billMaster;
            YP_CheckOrder  order   = (YP_CheckOrder)billOrder;

            account.AccountYear  = accountYear;
            account.AccountMonth = accountMonth;;
            account.AccountType  = 2;
            account.Balance_Flag = 0;
            account.BillNum      = master.BillNum;
            account.OpType       = master.OpType;
            account.DeptID       = master.DeptID;
            account.LeastUnit    = smallUnit;
            account.UnitNum      = order.UnitNum;
            account.MakerDicID   = order.MakerDicID;
            account.RegTime      = master.AuditTime;
            account.RetailPrice  = order.RetailPrice;
            account.StockPrice   = order.TradePrice;
            account.OrderID      = order.CheckOrderID;
            if (order.CheckNum - order.FactNum > 0)
            {
                account.LenderNum = order.CheckNum - order.FactNum;
                account.LenderFee = Math.Abs(order.CKRetailFee - order.FTRetailFee);
            }
            else
            {
                account.DebitNum = order.FactNum - order.CheckNum;
                account.DebitFee = Math.Abs(order.CKRetailFee - order.FTRetailFee);
            }
            account.OverNum = storeNum;
            return(account);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 保存药库盘点单
        /// </summary>
        /// <param name="billMaster">药库盘点单表头</param>
        /// <param name="listOrder">药库盘点单明细列表</param>
        /// <param name="deptId">药剂科室ID</param>
        public override void SaveBill(BillMaster billMaster, List <BillOrder> listOrder, long deptId)
        {
            try
            {
                YP_CheckMaster masterCheck = (YP_CheckMaster)billMaster;
                ComputeMasterFee(masterCheck, listOrder);
                oleDb.BeginTransaction();
                YP_CheckMaster inDBMaster = BindEntity <YP_CheckMaster> .CreateInstanceDAL(oleDb,
                                                                                           Tables.YK_CHECKMASTER).GetModel(masterCheck.MasterCheckID);

                if (inDBMaster.Del_Flag == 1)
                {
                    throw new Exception("当前单据已经被强制清除,无法保证盘存数量的正确性,请重新录入新的盘点单");
                }
                //声明操作对象
                HIS.DAL.YP_Dal ypDal = new YP_Dal();
                ypDal._oleDb = oleDb;
                YP_CheckOrder checkOrder = new YP_CheckOrder();
                //获取盘点单据号
                int billNum = (ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_CHECK, masterCheck.DeptID)).BillNum;
                masterCheck.BillNum  = billNum;
                masterCheck.Del_Flag = 0;
                BindEntity <HIS.Model.YP_CheckMaster> .CreateInstanceDAL(oleDb, Tables.YK_CHECKMASTER).Update(masterCheck);

                foreach (YP_CheckOrder order in listOrder)
                {
                    //遍历DataTable取出明细记录并设置记录的值
                    checkOrder = (YP_CheckOrder)order;
                    checkOrder.MasterCheckID = masterCheck.MasterCheckID;
                    checkOrder.DeptID        = masterCheck.DeptID;
                    checkOrder.BillNum       = masterCheck.BillNum;
                    checkOrder.BillTime      = masterCheck.RegTime;
                    //依次添加明细记录
                    BindEntity <HIS.Model.YP_CheckOrder> .CreateInstanceDAL(oleDb, Tables.YK_CHECKORDER).Add(checkOrder);
                }
                //更新盘点标识位
                ConfigManager.BeginCheck((long)(masterCheck.DeptID));
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }
Ejemplo n.º 6
0
        private void YK_ComputeCheckFee(DataRow dRow, YP_CheckOrder checkOrder)
        {
            //盘点包装量
            decimal cPackNum = Convert.ToDecimal(dRow["CPACKNUM"]);
            //零售价
            decimal retailPrice = Convert.ToDecimal(dRow["RETAILPRICE"]);
            //批发价
            decimal tradePrice = Convert.ToDecimal(dRow["TRADEPRICE"]);
            //实际包装量
            decimal packNum = Convert.ToDecimal(dRow["PACKNUM"]);

            checkOrder.CheckNum = cPackNum;
            checkOrder.FactNum  = packNum;
            //计算盘盈,盘亏金额
            checkOrder.CKRetailFee = cPackNum * retailPrice;
            checkOrder.CKTradeFee  = cPackNum * tradePrice;
            checkOrder.FTRetailFee = packNum * retailPrice;
            checkOrder.FTTradeFee  = packNum * tradePrice;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 将指定审核明细信息表的行记录转成盘点明细对象
        /// </summary>
        /// <param name="orderTable">盘点明细信息表</param>
        /// <param name="index">行记录索引</param>
        /// <param name="opType">业务类型</param>
        /// <returns>
        /// 盘点明细对象
        /// </returns>
        private List <BillOrder> GetOrderList()
        {
            try
            {
                DataTable        orderTable = _checkOrderDt;
                List <BillOrder> orderList  = new List <BillOrder>();
                for (int index = 0; index < orderTable.Rows.Count; index++)
                {
                    DataRow       dRow       = orderTable.Rows[index];
                    YP_CheckOrder checkOrder = new YP_CheckOrder();
                    HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(orderTable, index, checkOrder);
                    //包装单位比例
                    checkOrder.UnitNum = Convert.ToInt32(dRow["PUNITNUM"]);
                    //如果是药房盘点业务
                    if (_belongSystem == ConfigManager.YF_SYSTEM)
                    {
                        if (_currentState == ADD)
                        {
                            //单位标识ID
                            checkOrder.LeastUnit = Convert.ToInt32(dRow["LEASTUNIT"]);
                        }
                        YF_ComputeCheckFee(dRow, checkOrder);
                    }
                    //如果是药库盘点业务
                    else
                    {
                        //单位标识ID
                        if (_currentState == ADD)
                        {
                            checkOrder.LeastUnit = Convert.ToInt32(dRow["LEASTUNIT"]);
                        }
                        YK_ComputeCheckFee(dRow, checkOrder);
                    }
                    orderList.Add(checkOrder);
                }

                return(orderList);
            }
            catch (Exception error)
            {
                throw error;
            }
        }