Ejemplo n.º 1
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>
        protected override HIS.Model.YP_Account BuildAccount(HIS.Model.BillMaster billMaster, HIS.Model.BillOrder billOrder, decimal storeNum, int accountYear, int accountMonth, int smallUnit)
        {
            YP_InMaster master  = (YP_InMaster)billMaster;
            YP_InOrder  order   = (YP_InOrder)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.AuditTime;
            account.RetailPrice  = order.RetailPrice;
            account.StockPrice   = order.TradePrice;
            account.OrderID      = order.InStorageID;
            account.DebitFee     = order.RetailFee;
            account.DebitNum     = order.InNum;
            account.OverNum      = storeNum;
            return(account);
        }
Ejemplo n.º 2
0
 private void FrmInorder_Load(object sender, EventArgs e)
 {
     CreateProcessorBySystem();
     //如果是添加单据状态
     if (_currentState == ADD || _currentState == BACK)
     {
         _currentMaster = (YP_InMaster)(_billProcessor.BuildNewMaster(_currentDeptId, _currentUserId));
         _currentOrder  = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
         LoadData();
         //设置金额初始值
         this.txtStockFee.Text      = "0.00";
         this.txtStockPrice.Text    = "0.000";
         this.txtDefStockPrice.Text = "0.000";
     }
     else if (_currentState == UPDATE)
     {
         _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
         LoadData();
         dgrdInOrder_CurrentCellChanged(null, null);
     }
     if (_currentMaster.OpType == ConfigManager.OP_YK_BACKSTORE)
     {
         this.FormTitle = "退库单据";
     }
     //显示当前表头信息
     ShowCurrentMaster();
     this.txtSupport.Focus();
 }
Ejemplo n.º 3
0
        private void btnDelOrder_Click(object sender, EventArgs e)
        {
            try
            {
                if (_currentOrder == null || _inOrderDt.Rows.Count == 0 || dgrdInOrder.CurrentCell == null)
                {
                    MessageBox.Show("没有选中数据");
                    return;
                }
                else
                {
                    _inOrderDt.Rows.RemoveAt(dgrdInOrder.CurrentCell.RowIndex);
                    if (dgrdInOrder.CurrentCell == null)
                    {
                        _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
                        ClearOrderTextbox();
                    }

                    else if (dgrdInOrder.CurrentCell.RowIndex > _inOrderDt.Rows.Count - 1)
                    {
                        dgrdInOrder.CurrentCell = dgrdInOrder[dgrdInOrder.CurrentCell.ColumnIndex, dgrdInOrder.CurrentCell.RowIndex - 1];
                    }
                    else
                    {
                        DataRowToorder(_inOrderDt.Rows[dgrdInOrder.CurrentCell.RowIndex], _currentOrder);
                        ShowCurrentOrder();
                    }
                }
                MessageBox.Show("删除成功");
            }
            catch (Exception error)
            {
                MessageBox.Show(error.Message);
            }
        }
Ejemplo n.º 4
0
//add  平级药房调拨 张运辉 [20100531]
        /// <summary>
        /// 将药房申请入库单明细转换为药库出库单明细
        /// </summary>
        /// <param name="inOrder">入库单明细</param>
        /// <param name="outMaster">药库出库单表头</param>
        /// <returns>药库出库单明细</returns>
        private YP_OutOrder ChangeInorderToOutorder(YP_InOrder inOrder)
        {
            YP_OutOrder outOrder = new YP_OutOrder();

            outOrder.MakerDic        = new YP_MakerDic();
            outOrder.LeastUnitEntity = new YP_UnitDic();

            outOrder.Audit_Flag = 0;
            outOrder.LeastUnit  = inOrder.LeastUnit;
            outOrder.MakerDicID = inOrder.MakerDicID;
            //outOrder.MasterOutStorageID = outMaster.MasterOutStorageID;
            outOrder.OutNum       = inOrder.InNum;
            outOrder.ProductNum   = inOrder.BatchNum;
            outOrder.RecScale     = inOrder.RecScale;
            outOrder.Remark       = inOrder.Remark;
            outOrder.RetailFee    = inOrder.RetailFee;
            outOrder.RetailPrice  = inOrder.RetailPrice;
            outOrder.TradeFee     = inOrder.TradeFee;
            outOrder.TradePrice   = inOrder.TradePrice;
            outOrder.UnitNum      = inOrder.UnitNum;
            outOrder.ValidityDate = inOrder.ValidityDate;
            outOrder.DeptID       = (int)_currentDeptId;
            outOrder.OutDeptID    = inOrder.DeptID;
            return(outOrder);
        }
Ejemplo n.º 5
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>
        protected override YP_Account BuildAccount(BillMaster billMaster, BillOrder billOrder, decimal storeNum,
                                                   int accountYear, int accountMonth, int smallUnit)
        {
            YP_InOrder order   = (YP_InOrder)billOrder;
            YP_Account account = base.BuildAccount(billMaster, billOrder, storeNum, accountYear, accountMonth, smallUnit);

            account.LenderNum = order.InNum;
            return(account);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 将指定数据表中的行记录值赋给入库明细记录对象
 /// </summary>
 /// <param name="dR">指定行记录</param>
 /// <param name="inOrder">入库明细记录对象</param>
 private void DataRowToorder(DataRow dR, YP_InOrder inOrder)
 {
     try
     {
         if (dR == null || inOrder == null)
         {
             return;
         }
         else
         {
             inOrder.Audit_Flag                    = Convert.ToInt32(dR["Audit_Flag"]);
             inOrder.BillNum                       = Convert.ToInt32(dR["BillNum"]);
             inOrder.DeliverNum                    = dR["DeliverNum"].ToString();
             inOrder.DeptID                        = Convert.ToInt32(dR["DeptID"]);
             inOrder.InNum                         = Convert.ToDecimal(dR["INNUM"]);
             inOrder.InStorageID                   = Convert.ToInt32(dR["InStorageID"]);
             inOrder.LeastUnit                     = Convert.ToInt32(dR["LeastUnit"]);
             inOrder.MakerDicID                    = Convert.ToInt32(dR["MakerDicID"]);
             inOrder.MasterInStorageID             = Convert.ToInt32(dR["MasterInStorageID"]);
             inOrder.BatchNum                      = dR["BatchNum"].ToString();
             inOrder.RecScale                      = Convert.ToDecimal(dR["RecScale"]);
             inOrder.Remark                        = dR["Remark"].ToString();
             inOrder.RetailFee                     = Convert.ToDecimal(dR["RetailFee"]);
             inOrder.RetailPrice                   = Convert.ToDecimal(dR["RetailPrice"]);
             inOrder.StockFee                      = Convert.ToDecimal(dR["StockFee"]);
             inOrder.StockPrice                    = Convert.ToDecimal(dR["StockPrice"]);
             inOrder.TradeFee                      = Convert.ToDecimal(dR["TradeFee"]);
             inOrder.TradePrice                    = Convert.ToDecimal(dR["TradePrice"]);
             inOrder.UnitNum                       = Convert.ToInt32(dR["UnitNum"]);
             inOrder.ValidityDate                  = Convert.ToDateTime(dR["ValidityDate"]);
             inOrder.MakerDic.DrugInfo.spec        = dR["SPEC"].ToString();
             inOrder.MakerDic.DrugInfo.chemname    = dR["CHEMNAME"].ToString();
             inOrder.LeastUnitEntity.UnitName      = dR["UNITNAME"].ToString();
             inOrder.MakerDic.DrugInfo.productname = dR["PRODUCTNAME"].ToString();
             inOrder.MakerDic.DefStockPrice        = Convert.ToDecimal(dR["DefStockPrice"]);
             inOrder.BatchNum                      = dR["BATCHNUM"].ToString();
             if (dR["CurrentNum"] != DBNull.Value)
             {
                 inOrder.CurrentNum = Convert.ToDecimal(dR["CurrentNum"]);
             }
             else
             {
                 inOrder.CurrentNum = 0;
             }
         }
         return;
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Ejemplo n.º 7
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_InMaster masterInstore = (YP_InMaster)billMaster;
                YP_InOrder  inStore       = new YP_InOrder();
                oleDb.BeginTransaction();
                //声明操作对象
                IBaseDAL <YP_InMaster> inMasterDao = BindEntity <YP_InMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YK_INMASTER);

                IBaseDAL <YP_InOrder> inOrderDao = BindEntity <YP_InOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YK_INORDER);

                IBaseDAL <YP_Storage> storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YK_STORAGE);

                YP_Dal ypDal = new YP_Dal();
                ypDal._oleDb = oleDb;
                //获取入库单据号
                if (masterInstore.OpType == ConfigManager.OP_YK_INOPTYPE)
                {
                    masterInstore.BillNum = ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_INOPTYPE, deptId).BillNum;
                }
                else if (masterInstore.OpType == ConfigManager.OP_YK_BACKSTORE)
                {
                    masterInstore.BillNum = ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_BACKSTORE, deptId).BillNum;
                }
                else
                {
                    masterInstore.BillNum = ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_FIRSTIN, deptId).BillNum;
                }
                inMasterDao.Add(masterInstore);
                foreach (BillOrder order in listOrder)
                {
                    //遍历DataTable取出明细记录并设置记录的值
                    inStore = (YP_InOrder)order;
                    //计算入库金额
                    masterInstore.RetailFee  += inStore.RetailFee;
                    masterInstore.StockFee   += inStore.StockFee;
                    masterInstore.TradeFee   += inStore.TradeFee;
                    inStore.MasterInStorageID = masterInstore.MasterInStorageID;
                    inStore.BillNum           = masterInstore.BillNum;
                    //依次添加明细记录
                    inOrderDao.Add(inStore);
                }
                inMasterDao.Update(masterInstore);
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }
Ejemplo n.º 8
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>
        protected override YP_Account BuildAccount(BillMaster billMaster, BillOrder billOrder, decimal storeNum,
                                                   int accountYear, int accountMonth, int smallUnit)
        {
            YP_InOrder order   = (YP_InOrder)billOrder;
            YP_Account account = base.BuildAccount(billMaster, billOrder, storeNum, accountYear, accountMonth, smallUnit);

            if (account.OpType != ConfigManager.OP_YF_APPLYIN)
            {
                account.LenderNum = Convert.ToInt32(order.InNum);
            }
            else
            {
                account.LenderNum = Convert.ToInt32(order.InNum * order.UnitNum);
            }
            return(account);
        }
Ejemplo n.º 9
0
        public override Hashtable ChangeStoreNum(BillMaster billMaster, List <BillOrder> orderList)
        {
            try
            {
                Hashtable   storeNumHash = new Hashtable();
                YP_InMaster inStore      = (YP_InMaster)billMaster;
                foreach (BillOrder order in orderList)
                {
                    YP_StoreNum storeNum     = new YP_StoreNum();
                    YP_InOrder  orderInstore = (YP_InOrder)order;
                    storeNum.makerDicId = orderInstore.MakerDicID;
                    storeNum.smallUnit  = orderInstore.LeastUnit;
                    IBaseDAL <YP_Storage> storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YK_STORAGE);

                    //增加库存
                    decimal rtn = base.AddStoreNum(orderInstore.MakerDicID, orderInstore.DeptID, orderInstore.InNum);
                    if (rtn == -1)
                    {
                        YP_Storage drugStore = new YP_Storage();
                        drugStore.CurrentNum  = orderInstore.InNum;
                        drugStore.Del_Flag    = 0;
                        drugStore.DeptID      = inStore.DeptID;
                        drugStore.LeastUnit   = storeNum.smallUnit;
                        drugStore.LowerLimit  = 0;
                        drugStore.LStockPrice = orderInstore.StockPrice;
                        drugStore.MakerDicID  = orderInstore.MakerDicID;
                        drugStore.RegTime     = inStore.RegTime;
                        drugStore.UnitNum     = orderInstore.UnitNum;
                        drugStore.UpperLimit  = 0;
                        storeDao.Add(drugStore);
                        storeNum.storeNum = orderInstore.InNum;
                    }
                    else
                    {
                        storeNum.storeNum = rtn;
                    }
                    storeNum.queryKey = orderInstore.MakerDicID.ToString() + orderInstore.BatchNum.ToString();
                    storeNumHash.Add(storeNum.queryKey, storeNum);
                }
                BatchProcessor.AddBatchNum(orderList, inStore.RegTime);
                return(storeNumHash);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// 将数据表中指定位置的记录转成入库明细记录对象
 /// </summary>
 /// <param name="dtTable">
 /// 数据表
 /// </param>
 /// <param name="index">
 /// 对应记录的索引
 /// </param>
 /// <returns>
 /// 转换之后生成的入库明细记录对象
 /// </returns>
 private YP_InOrder GetOrderFromDt(DataTable dtTable, int index)
 {
     try
     {
         if (dtTable.Rows.Count < index || dtTable.Rows.Count == 0)
         {
             return(null);
         }
         YP_InOrder currentInorder = new YP_InOrder();
         HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(dtTable, index, currentInorder);
         return(currentInorder);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Ejemplo n.º 11
0
 /// <summary>
 /// 将入库明细记录对象的值赋给数据表行记录
 /// </summary>
 /// <param name="dR">指定数据行记录</param>
 /// <param name="inOrder">入库明细记录对象</param>
 private void orderToDataRow(DataRow dR, YP_InOrder inOrder)
 {
     try
     {
         if (dR == null || inOrder == null)
         {
             return;
         }
         else
         {
             dR["Audit_Flag"]        = inOrder.Audit_Flag;
             dR["BillNum"]           = inOrder.BillNum;
             dR["DeliverNum"]        = inOrder.DeliverNum;
             dR["DeptID"]            = inOrder.DeptID;
             dR["InNum"]             = inOrder.InNum;
             dR["InStorageID"]       = inOrder.InStorageID;
             dR["LeastUnit"]         = inOrder.LeastUnit;
             dR["MakerDicID"]        = inOrder.MakerDicID;
             dR["MasterInStorageID"] = inOrder.MasterInStorageID;
             dR["BatchNum"]          = inOrder.BatchNum;
             dR["RecScale"]          = inOrder.RecScale;
             dR["Remark"]            = inOrder.Remark;
             dR["RetailFee"]         = inOrder.RetailFee;
             dR["RetailPrice"]       = inOrder.RetailPrice;
             dR["StockFee"]          = inOrder.StockFee;
             dR["StockPrice"]        = inOrder.StockPrice;
             dR["TradeFee"]          = inOrder.TradeFee;
             dR["TradePrice"]        = inOrder.TradePrice;
             dR["UnitNum"]           = inOrder.UnitNum;
             dR["ValidityDate"]      = inOrder.ValidityDate;
             dR["SPEC"]          = inOrder.MakerDic.DrugInfo.spec;
             dR["CHEMNAME"]      = inOrder.MakerDic.DrugInfo.chemname;
             dR["UNITNAME"]      = inOrder.LeastUnitEntity.UnitName;
             dR["PRODUCTNAME"]   = inOrder.MakerDic.DrugInfo.productname;
             dR["DefStockPrice"] = inOrder.MakerDic.DefStockPrice;
             dR["CurrentNum"]    = inOrder.CurrentNum;
             dR["BATCHNUM"]      = inOrder.BatchNum;
         }
         return;
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Ejemplo n.º 12
0
//add  平级药房调拨 张运辉 [20100531]
        private YP_InOrder GetIntOrderFromDt(DataTable dtTable, int index)
        {
            try
            {
                if (dtTable.Rows.Count < index || dtTable.Rows.Count == 0)
                {
                    return(null);
                }
                YP_InOrder currentIntorder = new YP_InOrder();
                ApiFunction.DataTableToObject(dtTable, index, currentIntorder);
                currentIntorder.InNum = decimal.Parse(dtTable.Rows[index]["OUTNUM"].ToString());
                return(currentIntorder);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Ejemplo n.º 13
0
 private void btnAddOrder_Click(object sender, EventArgs e)
 {
     try
     {
         if (CheckSaveOrder() == true)
         {
             txtInNum_TextChanged(null, null);
             AddOrderToDT(_currentOrder, _inOrderDt);
             ClearOrderTextbox();
             _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
             this.txtDgCode.Focus();
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Ejemplo n.º 14
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_InMaster masterInstore = (YP_InMaster)billMaster;
                YP_InOrder  orderInstore  = new YP_InOrder();
                oleDb.BeginTransaction();
                //声明操作对象
                IBaseDAL <YP_InMaster> inMasterDao = BindEntity <YP_InMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YK_INMASTER);

                IBaseDAL <YP_InOrder> inOrderDao = BindEntity <YP_InOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YK_INORDER);

                //如果明细不为空重新更新整个入库单表头及明细
                if (listOrder != null)
                {
                    masterInstore.RetailFee = 0;
                    masterInstore.StockFee  = 0;
                    masterInstore.TradeFee  = 0;
                    inOrderDao.Delete("MasterInStorageID=" + masterInstore.MasterInStorageID.ToString());
                    foreach (BillOrder order in listOrder)
                    {
                        //遍历DataTable取出明细记录并设置记录的值
                        orderInstore = (YP_InOrder)order;
                        //计算入库金额
                        masterInstore.RetailFee       += orderInstore.RetailFee;
                        masterInstore.TradeFee        += orderInstore.TradeFee;
                        masterInstore.StockFee        += orderInstore.StockFee;
                        orderInstore.MasterInStorageID = masterInstore.MasterInStorageID;
                        orderInstore.BillNum           = masterInstore.BillNum;
                        //依次添加明细记录
                        inOrderDao.Add(orderInstore);
                    }
                }
                //明细为空仅更新表头
                inMasterDao.Update(masterInstore);
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }
Ejemplo n.º 15
0
 private void tsrbtnNew_Click(object sender, EventArgs e)
 {
     try
     {
         //生成一个新的单据表头
         _currentMaster = (YP_InMaster)(_billProcessor.BuildNewMaster(_currentDeptId, _currentUserId));
         _currentMaster.SupportDicID = _outDept.DeptID;
         _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
         //加载数据
         LoadData();
         ClearOrderTextbox();
         ShowCurrentMaster();
         _currentState = ADD;
         this.cobBillTime.Focus();
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Ejemplo n.º 16
0
        /// <summary>
        /// 根据指定信息创建明细记录对象
        /// </summary>
        /// <param name="deptId">部门标识ID</param>
        /// <param name="master">对应的入库表头记录对象</param>
        /// <returns> 新建的明细记录对象</returns>
        override public BillOrder BuildNewoder(long deptId, BillMaster master)
        {
            YP_InOrder inStore = new YP_InOrder();

            try
            {
                //如果是添加状态创建明细对象
                {
                    inStore.DeptID = Convert.ToInt32(deptId);
                }
                inStore.MasterInStorage = (YP_InMaster)master;
                inStore.MakerDic        = new YP_MakerDic();
                inStore.LeastUnitEntity = new YP_UnitDic();
                return(inStore);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 退药品批次数量
        /// </summary>
        /// <param name="orderList">药品退库明细</param>
        static public void BackBatchNum(List <BillOrder> orderList)
        {
            string   strWhere = "";
            YP_Batch reduceBatch;

            foreach (BillOrder billOrder in orderList)
            {
                YP_InOrder order = (YP_InOrder)billOrder;
                //获取出库单选择的出库明细对应的批次
                strWhere = BLL.Tables.yk_batch.BATCHNUM + oleDb.EuqalTo() + "'" + order.BatchNum + "'" +
                           oleDb.And() + BLL.Tables.yk_batch.MAKERDICID + oleDb.EuqalTo() + order.MakerDicID +
                           oleDb.And() + BLL.Tables.yk_batch.DEPTID + oleDb.EuqalTo() + order.DeptID;
                reduceBatch = BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).GetModel(strWhere);

                if (reduceBatch != null)
                {
                    if (reduceBatch.Currentnum - order.InNum > 0)
                    {
                        reduceBatch.Currentnum = reduceBatch.Currentnum - order.InNum;
                        reduceBatch.Del_flag   = 0;
                        BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).Update(reduceBatch);
                    }
                    else if (reduceBatch.Currentnum - order.InNum == 0)
                    {
                        reduceBatch.Currentnum = 0;
                        reduceBatch.Del_flag   = 1;
                        BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).Update(reduceBatch);
                    }
                    else
                    {
                        string strName = DrugBaseDataBll.GetDurgName(reduceBatch.Makerdicid);
                        throw new Exception("[" + strName + "]" + "该药品退库批次数量大于药库批次库存数量,请修改退库单");
                    }
                }
                else
                {
                    string drugName = DrugBaseDataBll.GetDurgName(order.MakerDicID);
                    throw new Exception("[" + drugName + "]" + "药品批次输入错误。。。。。。");
                }
            }
        }
Ejemplo n.º 18
0
 private void FrmYFInorder_Load(object sender, EventArgs e)
 {
     try
     {
         this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor();
         if (!_isBuildByLimit)
         {
             if (_currentState == ADD)
             {
                 //生成一个新的单据表头
                 _currentMaster = (YP_InMaster)(_billProcessor.BuildNewMaster(_currentDeptId, _currentUserId));
                 _currentMaster.SupportDicID = _outDept.DeptID;
             }
             _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
             LoadData();
         }
         else
         {
             _billProcessor.BuildApplyInByStoreLimit(out _currentMaster,
                                                     out _inOrderDt, (int)_currentDeptId, (int)_currentUserId, _outDept.DeptID, _limitDt);
             _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
             dgrdInOrder.AutoGenerateColumns = false;
             dgrdInOrder.DataSource          = _inOrderDt;
             _drugInfoDt = _storeQuery.LoadDrugInfo(_outDept.DeptID, (int)_currentDeptId);
             txtDgCode.SetSelectionCardDataSource(_drugInfoDt);
             _isBuildByLimit = false;
         }
         //显示当前表头信息
         this.txtApplyDept.Text = _outDept.DeptName;
         ShowCurrentMaster();
         this.cobBillTime.Focus();
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
     finally
     {
         this.Cursor = DefaultCursor;
     }
 }
Ejemplo n.º 19
0
 private void btnAddOrder_Click(object sender, EventArgs e)
 {
     try
     {
         ComputeFeeAndNum();
         if (CheckSaveOrder() == true)
         {
             AddOrderToDT(_currentOrder, _inOrderDt);
             ClearOrderTextbox();
             _currentOrder = (YP_InOrder)(_billProcessor.BuildNewoder(_currentMaster.DeptID, _currentMaster));
             //设置金额初始值
             this.txtStockFee.Text      = "0.00";
             this.txtDefStockPrice.Text = "0.000";
             this.txtDgCode.Focus();
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Ejemplo n.º 20
0
 private void tsrbtnNew_Click(object sender, EventArgs e)
 {
     try
     {
         //生成一个新的单据表头
         if (_belongSystem == ConfigManager.YF_SYSTEM)
         {
             _currentMaster = (YP_InMaster)(_billProcessor.BuildNewMaster(_currentDeptId, _currentUserId));
             _currentOrder  = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
             _inOrderDt     = BillFactory.GetQuery(ConfigManager.OP_YF_INSTORE).LoadOrder(_currentMaster);
         }
         else
         {
             _currentMaster = (YP_InMaster)(_billProcessor.BuildNewMaster(_currentDeptId, _currentUserId));
             _currentOrder  = (YP_InOrder)(_billProcessor.BuildNewoder(_currentDeptId, _currentMaster));
             _inOrderDt     = BillFactory.GetQuery(ConfigManager.OP_YK_INOPTYPE).LoadOrder(_currentMaster);
         }
         //加载数据
         dgrdInOrder.DataSource = _inOrderDt;
         ClearOrderTextbox();
         ShowCurrentMaster();
         //设置金额初始值
         txtStockFee.Text      = "0.00";
         txtStockPrice.Text    = "0.000";
         txtDefStockPrice.Text = "0.000";
         if (_currentMaster.OpType == ConfigManager.OP_YK_BACKSTORE)
         {
             _currentState = BACK;
         }
         else
         {
             _currentState = ADD;
         }
         this.txtSupport.Focus();
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Ejemplo n.º 21
0
 /// <summary>
 /// 添加一个入库明细记录对象数据到指定数据表中
 /// </summary>
 /// <param name="order">入库明细记录对象</param>
 /// <param name="orderDt">指定数据表</param>
 private void AddOrderToDT(YP_InOrder order, DataTable orderDt)
 {
     try
     {
         DataRow newRow = orderDt.NewRow();
         orderToDataRow(newRow, order);
         //判断新增明细药品是否已经存在于入库单明细表中
         for (int index = 0; index < orderDt.Rows.Count; index++)
         {
             if ((Convert.ToInt32(orderDt.Rows[index]["MAKERDICID"]) == Convert.ToInt32(newRow["MAKERDICID"])) &&
                 (orderDt.Rows[index]["BATCHNUM"].ToString() == newRow["BATCHNUM"].ToString()))
             {
                 throw new Exception("该药品已经存在于明细中,无法添加.....");
             }
         }
         orderDt.Rows.Add(newRow);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Ejemplo n.º 22
0
        public override Hashtable ChangeStoreNum(BillMaster billMaster, List <BillOrder> orderList)
        {
            try
            {
                Hashtable   storeNumHash = new Hashtable();
                YP_InMaster inStore      = (YP_InMaster)billMaster;
                foreach (BillOrder order in orderList)
                {
                    YP_StoreNum storeNum     = new YP_StoreNum();
                    YP_InOrder  orderInstore = (YP_InOrder)order;
                    storeNum.makerDicId = orderInstore.MakerDicID;
                    storeNum.smallUnit  = orderInstore.LeastUnit;
                    IBaseDAL <YP_Storage> storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YK_STORAGE);

                    //增加库存
                    decimal rtn = base.ReduceStoreNum(orderInstore.MakerDicID, orderInstore.DeptID, orderInstore.InNum);
                    if (rtn != -1)
                    {
                        storeNum.storeNum = rtn;
                        storeNum.queryKey = storeNum.makerDicId.ToString() + orderInstore.BatchNum;
                    }
                    else
                    {
                        string drugName = DrugBaseDataBll.GetDurgName(storeNum.makerDicId);
                        throw new Exception("[" + drugName + "]" + "退库数量过多,审核失败");
                    }
                    storeNumHash.Add(storeNum.queryKey, storeNum);
                }
                BatchProcessor.BackBatchNum(orderList);
                return(storeNumHash);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 根据出库表明细生成出库表明细并添加到数据库中
        /// </summary>
        /// <param name="orderDao">出库表明细数据访问对象</param>
        /// <param name="inOrder">入库表明细</param>
        /// <param name="deptId">入库部门ID</param>
        /// <param name="outMaster">出库表头</param>
        private void AddYKOutOrder(IBaseDAL <YP_OutOrder> orderDao, YP_InOrder inOrder, long deptId, YP_OutMaster outMaster)
        {
            YP_OutOrder outOrder = ChangeInorderToOutorder(inOrder, outMaster);

            orderDao.Add(outOrder);
        }
Ejemplo n.º 24
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
            {
                IBaseDAL <YP_OutMaster> outMasterDao;
                IBaseDAL <YP_OutOrder>  outOrderDao;
                IBaseDAL <YP_Storage>   storeDao;
                YP_InMaster             masterInstore = (YP_InMaster)billMaster;
                ////update 20100624
                if (HIS.SYSTEM.Core.BindEntity <object> .CreateInstanceDAL(oleDb, "YP_DEPTDIC").GetFieldValue("DEPTTYPE1", "DEPTID=" + deptId).ToString() == "药房")
                {
                    boPjdb = true;
                }
                else
                {
                    boPjdb = false;
                }
                YP_InOrder inStore = new YP_InOrder();
                oleDb.BeginTransaction();
                IBaseDAL <YP_InMaster> inMasterDao = BindEntity <YP_InMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YF_INMASTER);

                IBaseDAL <YP_InOrder> inOrderDao = BindEntity <YP_InOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YF_INORDER);

                if (boPjdb)
                {
                    outMasterDao = BindEntity <YP_OutMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YF_OUTMASTER);

                    outOrderDao = BindEntity <YP_OutOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YF_OUTORDER);

                    storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YF_STORAGE);
                }
                else
                {
                    outMasterDao = BindEntity <YP_OutMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YK_OUTMASTER);

                    outOrderDao = BindEntity <YP_OutOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YK_OUTORDER);

                    storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YK_STORAGE);
                }
                YP_Dal ypDal = new YP_Dal();
                ypDal._oleDb = oleDb;
                //获取入库单据号
                masterInstore.BillNum = (ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YF_APPLYIN, masterInstore.DeptID)).BillNum;
                if (!boPjdb)
                {
                    masterInstore.OpType = ConfigManager.OP_YF_APPLYIN;
                }
                inMasterDao.Add(masterInstore);
                YP_OutMaster outMaster = AddYKOutMaster(outMasterDao, masterInstore, ypDal, Convert.ToInt32(deptId));
                foreach (BillOrder order in listOrder)
                {
                    //遍历DataTable取出明细记录并设置记录的值
                    inStore = (YP_InOrder)order;
                    //计算入库金额
                    masterInstore.RetailFee  += inStore.RetailFee;
                    masterInstore.StockFee   += inStore.StockFee;
                    masterInstore.TradeFee   += inStore.TradeFee;
                    inStore.MasterInStorageID = masterInstore.MasterInStorageID;
                    inStore.BillNum           = masterInstore.BillNum;
                    inStore.DeptID            = masterInstore.DeptID;
                    //依次添加明细记录
                    inOrderDao.Add(inStore);
                    AddYKOutOrder(outOrderDao, inStore, deptId, outMaster);
                }
                inMasterDao.Update(masterInstore);
                outMaster.RetailFee = masterInstore.RetailFee;
                outMaster.TradeFee  = masterInstore.TradeFee;
                outMaster.OutFee    = masterInstore.RetailFee;
                outMasterDao.Update(outMaster);
                oleDb.CommitTransaction();
            }
            catch (Exception error)
            {
                oleDb.RollbackTransaction();
                throw error;
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 根据药房申请入库单更新对应药库出库单明细
        /// </summary>
        /// <param name="listOrder">药库出库单明细列表</param>
        /// <param name="deptId">出库科室ID</param>
        /// <param name="masterInstore">药房申请入库单</param>
        /// <param name="orderInstore">申请入库单明细</param>
        /// <returns>申请入库单明细</returns>
        private YP_InOrder UpdateOutMaster(List <BillOrder> listOrder, long deptId, YP_InMaster masterInstore, YP_InOrder orderInstore)
        {
            IBaseDAL <YP_OutMaster> ypOutMaster;
            IBaseDAL <YP_OutOrder>  outOrderDao;
            string strWhere;

            //update 20100624
            if (HIS.SYSTEM.Core.BindEntity <object> .CreateInstanceDAL(oleDb, "YP_DEPTDIC").GetFieldValue("DEPTTYPE1", "DEPTID=" + deptId).ToString() == "药房")
            {
                boPjdb = true;
            }
            else
            {
                boPjdb = false;
            }
            if (boPjdb)
            {
                ypOutMaster = BindEntity <YP_OutMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YF_OUTMASTER);

                strWhere = BLL.Tables.yf_outmaster.BILLNUM + oleDb.EuqalTo() + masterInstore.BillNum
                           + oleDb.And() + BLL.Tables.yf_outmaster.OPTYPE + oleDb.EuqalTo() + "'" + ConfigManager.OP_YF_DEPTDRAW + "'"
                           + oleDb.And() + BLL.Tables.yf_outmaster.AUDIT_FLAG + oleDb.EuqalTo() + 0
                           + oleDb.And() + BLL.Tables.yf_outmaster.REGTIME + oleDb.EuqalTo() + "'" + masterInstore.RegTime + "'";
            }
            else
            {
                ypOutMaster = BindEntity <YP_OutMaster> .CreateInstanceDAL(oleDb, BLL.Tables.YK_OUTMASTER);

                strWhere = BLL.Tables.yk_outmaster.RELATIONNUM + oleDb.EuqalTo() + masterInstore.BillNum
                           + oleDb.And() + BLL.Tables.yk_outmaster.OPTYPE + oleDb.EuqalTo() + "'" + ConfigManager.OP_YK_OUTTOYF + "'"
                           + oleDb.And() + BLL.Tables.yk_outmaster.AUDIT_FLAG + oleDb.EuqalTo() + 0
                           + oleDb.And() + BLL.Tables.yk_outmaster.REGTIME + oleDb.EuqalTo() + "'" + masterInstore.RegTime + "'";
            }
            YP_OutMaster outMaster = ypOutMaster.GetModel(strWhere);

            outMaster.RetailFee = 0;
            outMaster.TradeFee  = 0;
            outMaster.OutFee    = 0;
            if (outMaster != null)
            {
                int storeDeptId = outMaster.DeptID;
                ChangeInmasterToOutmaster(masterInstore, storeDeptId, outMaster);
                if (boPjdb)
                {
                    outOrderDao = BindEntity <YP_OutOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YF_OUTORDER);

                    outOrderDao.Delete(BLL.Tables.yf_outorder.MASTEROUTSTORAGEID
                                       + oleDb.EuqalTo() + outMaster.MasterOutStorageID);
                }
                else
                {
                    outOrderDao = BindEntity <YP_OutOrder> .CreateInstanceDAL(oleDb, BLL.Tables.YK_OUTORDER);

                    outOrderDao.Delete(BLL.Tables.yk_outorder.MASTEROUTSTORAGEID
                                       + oleDb.EuqalTo() + outMaster.MasterOutStorageID);
                }
                foreach (BillOrder order in listOrder)
                {
                    orderInstore = (YP_InOrder)order;
                    AddYKOutOrder(outOrderDao, orderInstore, deptId, outMaster);
                }
            }
            ypOutMaster.Update(outMaster);
            return(orderInstore);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// 增加药品批次记录
        /// </summary>
        /// <param name="orderList">明细链表</param>
        /// <param name="inStoreTime">入库时间</param>
        static public void AddBatchNum(List <BillOrder> orderList, DateTime inStoreTime)
        {
            string   strWhere = "";
            YP_Batch newBatch = new YP_Batch();

            foreach (BillOrder billOrder in orderList)
            {
                YP_InOrder order = (YP_InOrder)billOrder;
                //查询入库明细中的药品是否已经有批次了
                strWhere = BLL.Tables.yk_batch.BATCHNUM + oleDb.EuqalTo() + "'" + order.BatchNum.ToString() + "'" +
                           oleDb.And() + BLL.Tables.yk_batch.MAKERDICID + oleDb.EuqalTo() + order.MakerDicID.ToString() +
                           oleDb.And() + BLL.Tables.yk_batch.DEPTID + oleDb.EuqalTo() + order.DeptID.ToString();
                YP_Batch oldBatch = BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).GetModel(strWhere);

                //如果不是针对批次表中药品入库,则自动在批次表中增加一条批次记录
                if (oldBatch == null)
                {
                    if (order.InNum <= 0)
                    {
                        throw new Exception("新入库药品入库数量不能小于0");
                    }
                    newBatch.Batchnum     = order.BatchNum;
                    newBatch.Currentnum   = order.InNum;
                    newBatch.Del_flag     = 0;
                    newBatch.Deptid       = order.DeptID;
                    newBatch.Instoretime  = inStoreTime;
                    newBatch.Makerdicid   = order.MakerDicID;
                    newBatch.Unit         = order.LeastUnit;
                    newBatch.Unitnum      = order.UnitNum;
                    newBatch.ValidityDate = order.ValidityDate;
                    BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).Add(newBatch);
                }
                //如果是批次表中的药品,增加批次表中药品数量
                else
                {
                    if (order.InNum > 0)
                    {
                        oldBatch.Currentnum = oldBatch.Currentnum + order.InNum;
                        oldBatch.Del_flag   = 0;
                    }
                    else
                    {
                        if (oldBatch.Currentnum + order.InNum < 0)
                        {
                            string drugName = "药品名称:" + DrugBaseDataBll.GetDurgName(order.MakerDicID);
                            string batchNum = " 批次号:" + order.BatchNum;
                            throw new Exception(drugName + batchNum + " 退库数量过多,无法退库");
                        }
                        else
                        {
                            oldBatch.Currentnum = oldBatch.Currentnum + order.InNum;
                            if (oldBatch.Currentnum == 0)
                            {
                                oldBatch.Del_flag = 1;
                            }
                        }
                    }
                    BindEntity <YP_Batch> .CreateInstanceDAL(oleDb, BLL.Tables.YK_BATCH).Update(oldBatch);
                }
            }
        }