private void dgrdAdjMaster_CurrentCellChanged(object sender, EventArgs e)
 {
     try
     {
         this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor();
         if (dgrdAdjMaster.CurrentCell != null)
         {
             int currentIndex = dgrdAdjMaster.CurrentCell.RowIndex;
             _currentMaster          = GetAdjMasterFromDt(_masterDt.DefaultView.ToTable(), currentIndex, _currentMaster);
             _orderDt                = _billQuery.LoadOrder(_currentMaster);
             dgrdAdjOrder.DataSource = _orderDt;
         }
         else
         {
             dgrdAdjOrder.DataSource = null;
             _currentMaster          = null;
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
     finally
     {
         this.Cursor = DefaultCursor;
     }
 }
Exemple #2
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_AdjMaster master  = (YP_AdjMaster)billMaster;
            YP_AdjOrder  order   = (YP_AdjOrder)billOrder;
            YP_Account   account = new YP_Account();

            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.ExeTime;
            account.RetailPrice  = order.NewRetailPrice;
            account.StockPrice   = order.NewTradePrice;
            account.OrderID      = order.OrderAdjPriceID;
            if (order.AdjRetailFee > 0)
            {
                account.LenderFee = Math.Abs(order.AdjRetailFee);
            }
            else
            {
                account.DebitFee = Math.Abs(order.AdjRetailFee);
            }
            account.OverNum = storeNum;
            return(account);
        }
        /// <summary>
        /// 审核调价单
        /// </summary>
        /// <param name="billMaster">调价单头表</param>
        /// <param name="auditerID">审核人员ID</param>
        /// <param name="auditDeptID">审核科室ID</param>
        public override void AuditBill(BillMaster billMaster, long auditerID, long auditDeptID)
        {
            try
            {
                HIS.DAL.YP_Dal ypDal = new YP_Dal();
                ypDal._oleDb = oleDb;
                string       strWhere;
                YP_AdjMaster masterAdj    = (YP_AdjMaster)billMaster;
                string       belongSystem = (masterAdj.OpType == ConfigManager.OP_YF_ADJPRICE ? ConfigManager.YF_SYSTEM : ConfigManager.YK_SYSTEM);
                if (ConfigManager.IsChecking((long)masterAdj.DeptID))
                {
                    string deptName = BaseData.GetDeptName(masterAdj.DeptID.ToString());
                    throw new Exception("[" + deptName + "]" + "库房药品正在盘点中....");
                }
                masterAdj.Audit_Flag = 1;
                masterAdj.Over_Flag  = 1;
                BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Update(masterAdj);

                strWhere = Tables.yp_adjorder.MASTERIADJPRICED + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID;
                List <YP_AdjOrder> orderList = BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).GetListArray(strWhere);

                List <BillOrder> billOrderList = new List <BillOrder>();
                Hashtable        storeTable    = new Hashtable();
                foreach (YP_AdjOrder adjOrder in orderList)
                {
                    YP_StoreNum yp_StoreNum = new YP_StoreNum();
                    decimal     storeNum    = StoreFactory.GetQuery(belongSystem).QueryNum(adjOrder.MakerDicID, adjOrder.DeptID);
                    adjOrder.Audit_Flag    = 1;
                    adjOrder.AdjNum        = storeNum;
                    yp_StoreNum.makerDicId = adjOrder.MakerDicID;
                    if (belongSystem == ConfigManager.YK_SYSTEM)
                    {
                        yp_StoreNum.smallUnit = adjOrder.LeastUnit;
                    }
                    else
                    {
                        yp_StoreNum.smallUnit = ypDal.Unit_GetSmallUnit(adjOrder.MakerDicID);
                    }
                    yp_StoreNum.storeNum = storeNum;
                    storeTable.Add(yp_StoreNum.makerDicId, yp_StoreNum);
                    //计算调赢/亏金额
                    ComputeAdjFee(adjOrder, belongSystem);
                    billOrderList.Add(adjOrder);
                    BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).Update(adjOrder);
                }
                //记账
                AccountFactory.GetWriter(masterAdj.OpType).WriteAccount(masterAdj, billOrderList, storeTable);
                //更新药典价格
                foreach (YP_AdjOrder adjOrder in orderList)
                {
                    ChangePrice(adjOrder.NewRetailPrice, true, adjOrder.MakerDicID);
                    ChangePrice(adjOrder.NewTradePrice, false, adjOrder.MakerDicID);
                }
            }
            catch (Exception error)
            {
                throw error;
            }
        }
        /// <summary>
        /// 构造调价单明细
        /// </summary>
        /// <param name="deptId">药剂科室ID</param>
        /// <param name="master">对应调价单表头</param>
        /// <returns>调价单明细</returns>
        public override BillOrder BuildNewoder(long deptId, BillMaster master)
        {
            YP_AdjOrder adjOrder = new YP_AdjOrder();

            try
            {
                YP_AdjMaster adjMaster = (YP_AdjMaster)master;
                adjOrder.DeptID          = adjMaster.DeptID;
                adjOrder.MasterAdjPrice  = adjMaster;
                adjOrder.MakerDic        = new YP_MakerDic();
                adjOrder.LeastUnitEntity = new YP_UnitDic();
                return(adjOrder);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Exemple #5
0
        /// <summary>
        /// 写入台帐
        /// </summary>
        /// <param name="billMaster">单据头表信息</param>
        /// <param name="orderList">单据明细信息</param>
        /// <param name="storeTable">库存处理后的最新药品库存信息</param>
        public override void WriteAccount(BillMaster billMaster, List <BillOrder> orderList, Hashtable storeTable)
        {
            try
            {
                int          actYear = 0, actMonth = 0;
                decimal      storeNum;
                int          smallUnit;
                YP_AdjMaster master = (YP_AdjMaster)billMaster;
                if (master.OpType == ConfigManager.OP_YF_ADJPRICE)
                {
                    IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, BLL.Tables.YF_ACCOUNT);

                    AccountFactory.GetQuery(ConfigManager.YF_SYSTEM).GetAccountTime(master.ExeTime, ref actYear,
                                                                                    ref actMonth, master.DeptID);
                    foreach (YP_AdjOrder order in orderList)
                    {
                        storeNum  = ((YP_StoreNum)(storeTable[order.MakerDicID])).storeNum;
                        smallUnit = ((YP_StoreNum)(storeTable[order.MakerDicID])).smallUnit;
                        YP_Account account = BuildAccount(billMaster, order, storeNum, actYear, actMonth, smallUnit);
                        ComputeFee(account);
                        accountDao.Add(account);
                    }
                }
                else
                {
                    IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, BLL.Tables.YK_ACCOUNT);

                    AccountFactory.GetQuery(ConfigManager.YK_SYSTEM).GetAccountTime(master.ExeTime, ref actYear,
                                                                                    ref actMonth, master.DeptID);
                    foreach (YP_AdjOrder order in orderList)
                    {
                        storeNum  = ((YP_StoreNum)(storeTable[order.MakerDicID])).storeNum;
                        smallUnit = ((YP_StoreNum)(storeTable[order.MakerDicID])).smallUnit;
                        YP_Account account = BuildAccount(billMaster, order, storeNum, actYear, actMonth, smallUnit);
                        ComputeFee(account);
                        accountDao.Add(account);
                    }
                }
            }
            catch (Exception error)
            {
                throw error;
            }
        }
 /// <summary>
 /// 从调价表头信息表中获取指定行记录对应的调价表头对象
 /// </summary>
 /// <param name="dtTable">调价表头信息表</param>
 /// <param name="index">指定行记录索引</param>
 /// <param name="_AdjMaster">调价表头对象</param>
 /// <returns>调价表头信息表</returns>
 private YP_AdjMaster GetAdjMasterFromDt(DataTable dtTable, int index, YP_AdjMaster _AdjMaster)
 {
     try
     {
         if (dtTable.Rows.Count < index || dtTable.Rows.Count == 0)
         {
             return(null);
         }
         if (_AdjMaster == null)
         {
             _AdjMaster = new YP_AdjMaster();
         }
         HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(dtTable, index, _AdjMaster);
         return(_AdjMaster);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
        private void tsrbtnNew_Click(object sender, EventArgs e)
        {
            try
            {
                //生成一个新的单据表头
                _adjMaster = (YP_AdjMaster)(_billProcessor.BuildNewMaster(_adjMaster.DeptID, _adjMaster.RegPeople));

                _currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster));
                //加载数据
                LoadData();
                ClearOrderTextbox();
                ShowMaster();
                //设置金额初始值
                this.txtNewTrade.Text  = "0.00";
                this.txtNewRetail.Text = "0.00";
                this.txtAdjCode.Focus();
                _currentState = ADD;
            }
            catch (Exception error)
            {
                MessageBox.Show(error.Message);
            }
        }
 /// <summary>
 /// 构造调价单空表头
 /// </summary>
 /// <param name="deptId">药剂科室ID</param>
 /// <param name="userId">操作人员ID</param>
 /// <returns>调价单表头</returns>
 public override BillMaster BuildNewMaster(long deptId, long userId)
 {
     try
     {
         YP_AdjMaster masterAdj = new YP_AdjMaster();
         DateTime     adjDate   = XcDate.ServerDateTime;
         masterAdj.AdjCode    = "TJ" + adjDate.Year.ToString() + adjDate.Month.ToString() + adjDate.Day.ToString();
         masterAdj.Audit_Flag = 1;
         masterAdj.BillNum    = 0;
         masterAdj.Del_Flag   = 0;
         masterAdj.DeptID     = Convert.ToInt32(deptId);
         masterAdj.Over_Flag  = 0;
         masterAdj.RegPeople  = Convert.ToInt32(userId);
         masterAdj.RegTime    = XcDate.ServerDateTime;
         masterAdj.ExeTime    = masterAdj.RegTime;
         masterAdj.Remark     = "";
         return(masterAdj);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Exemple #9
0
 public override DataTable LoadOrder(BillMaster billMaster)
 {
     try
     {
         //A表指的是调价表头
         YP_AdjMaster master   = (YP_AdjMaster)billMaster;
         string       strWhere = "";
         if (master != null)
         {
             strWhere = "A.MasterIAdjPriceD=" + master.MasterAdjPriceID.ToString();
         }
         else
         {
             strWhere = "0<>0";
         }
         HIS.DAL.YP_Dal ypDal = new YP_Dal();
         ypDal._oleDb = oleDb;
         return(ypDal.YP_Adjorder_GetList(strWhere));
     }
     catch (Exception error)
     {
         throw error;
     }
 }
        /// <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
            {
                int          count     = 0;
                YP_AdjMaster masterAdj = (YP_AdjMaster)billMaster;
                oleDb.BeginTransaction();
                //声明操作对象
                YP_AdjOrder    adjOrder = new YP_AdjOrder();
                HIS.DAL.YP_Dal ypDal    = new YP_Dal();
                ypDal._oleDb = oleDb;
                List <YP_DeptDic> deptList = new List <YP_DeptDic>();
                //获取调价药剂科室
                deptList = BindEntity <HIS.Model.YP_DeptDic> .CreateInstanceDAL(oleDb).GetListArray("");

                foreach (YP_DeptDic dept in deptList)
                {
                    count = 0;
                    if (dept.DeptType1 == "药房")
                    {
                        if (dept.Use_Flag == 1)
                        {
                            masterAdj.OpType = ConfigManager.OP_YF_ADJPRICE;
                        }
                    }
                    else
                    {
                        if (dept.Use_Flag == 1)
                        {
                            masterAdj.OpType = ConfigManager.OP_YK_ADJPRICE;
                        }
                    }
                    masterAdj.Over_Flag = 0;
                    masterAdj.AdjCode   = GWIString.FilterSpecial(masterAdj.AdjCode);
                    masterAdj.Remark    = GWIString.FilterSpecial(masterAdj.Remark);
                    masterAdj.DeptID    = dept.DeptID;
                    BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Add(masterAdj);

                    foreach (BillOrder order in listOrder)
                    {
                        adjOrder = (YP_AdjOrder)order;
                        adjOrder.MasterIAdjPriceD = masterAdj.MasterAdjPriceID;
                        adjOrder.DeptID           = masterAdj.DeptID;
                        string belongSystem = (dept.DeptType1 == "药房" ? ConfigManager.YF_SYSTEM : ConfigManager.YK_SYSTEM);
                        if (StoreFactory.GetQuery(belongSystem).QueryNum(adjOrder.MakerDicID, adjOrder.DeptID) < 0)
                        {
                            continue;
                        }
                        count++;
                        BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).Add(adjOrder);
                    }
                    if (count > 0)
                    {
                        masterAdj.BillNum = (ypDal.YP_Bill_GetBillNum(masterAdj.OpType, dept.DeptID)).BillNum;
                        if (masterAdj.BillNum == 0)
                        {
                            throw new Exception("药剂科室设置错误,请确认当前科室是药剂科室");
                        }
                        BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Update(masterAdj);

                        AuditBill(masterAdj, (long)(masterAdj.RegPeople), (long)(masterAdj.DeptID));
                    }
                    else
                    {
                        string strwhere = Tables.yp_adjmaster.DEPTID + oleDb.EuqalTo() + masterAdj.DeptID
                                          + oleDb.And() + Tables.yp_adjmaster.MASTERADJPRICEID + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID;
                        BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Delete(strwhere);

                        strwhere = Tables.yp_adjorder.DEPTID + oleDb.EuqalTo() + masterAdj.DeptID
                                   + oleDb.And() + Tables.yp_adjorder.MASTERIADJPRICED + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID;
                        BindEntity <YP_AdjOrder> .CreateInstanceDAL(oleDb).Delete(strwhere);
                    }
                }
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }