Пример #1
0
        /// <summary>
        /// 按最新价格重新核算出库单明细价格和头表金额
        /// </summary>
        /// <param name="outMaster">出库单表头</param>
        /// <param name="billOrder">出库单明细列表</param>
        /// <param name="belongSystem">所属系统(药房系统,药库系统)</param>
        protected void AuditPrice(YP_OutMaster outMaster, List <YP_OutOrder> billOrder, string belongSystem)
        {
            outMaster.RetailFee = 0;
            outMaster.TradeFee  = 0;
            outMaster.OutFee    = 0;
            foreach (YP_OutOrder order in billOrder)
            {
                YP_MakerDic makerDic = BindEntity <YP_MakerDic> .CreateInstanceDAL(oleDb).GetModel(order.MakerDicID);

                if (makerDic.RetailPrice != order.RetailPrice || makerDic.TradePrice != order.TradePrice)
                {
                    order.RetailPrice = makerDic.RetailPrice;
                    order.TradePrice  = makerDic.TradePrice;
                    if (belongSystem == ConfigManager.YF_SYSTEM)
                    {
                        order.RetailFee = AccountWriter.YF_ComputeTotalFee(order.RetailPrice, order.OutNum, order.UnitNum);
                        order.TradeFee  = AccountWriter.YF_ComputeTotalFee(order.TradePrice, order.OutNum, order.UnitNum);
                    }
                    else
                    {
                        order.RetailFee = AccountWriter.YK_ComputeTotalFee(order.RetailPrice, order.OutNum);
                        order.TradeFee  = AccountWriter.YK_ComputeTotalFee(order.TradePrice, order.OutNum);
                    }
                }
                outMaster.RetailFee += order.RetailFee;
                outMaster.TradeFee  += order.TradeFee;
                outMaster.OutFee    += order.RetailFee;
            }
        }
Пример #2
0
 /// <summary>
 /// 从厂家信息表中获取厂家典记录对象
 /// </summary>
 /// <param name="dtTable">
 /// 厂家信息表
 /// </param>
 /// <param name="index">
 /// 指定记录行索引
 /// </param>
 /// <returns>
 /// 厂家典记录对象
 /// </returns>
 private YP_MakerDic GetMakerFromDt(DataTable dtTable, int index)
 {
     try
     {
         if (dtTable.Rows.Count < index || dtTable.Rows.Count == 0)
         {
             return(null);
         }
         YP_MakerDic currentMaker = new YP_MakerDic();
         ApiFunction.DataTableToObject(dtTable, index, currentMaker);
         return(currentMaker);
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Пример #3
0
 private void dgrdMaker_CurrentCellChanged(object sender, EventArgs e)
 {
     try
     {
         int index;
         if (dgrdMaker.CurrentCell != null)
         {
             index         = dgrdMaker.CurrentCell.RowIndex;
             _currentMaker = GetMakerFromDt(_makerDt.DefaultView.ToTable(), index);
             ShowCurrentMaker();
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Пример #4
0
 private void tsrbtnAdd_Click(object sender, EventArgs e)
 {
     if (_currentState == NORMAL)
     {
         TextBoxClear();
         TextBoxEnable(true);
         _currentState = ADD;
         ButtonEnable();
         _currentMaker             = new YP_MakerDic();
         _currentMaker.UnifGettype = "01";
         cobUniType.SelectedIndex  = 0;
         _currentMaker.SpecDicID   = _currentSpec.SpecDicID;
         //清空checkbox和currentMaker的值
         this.chkOwnPay.Checked = false;
         this.chkRecipe.Checked = false;
         this.txtMakerName.Focus();
     }
 }
Пример #5
0
 private void tsrbtnDel_Click(object sender, EventArgs e)
 {
     if (_currentMaker == null || dgrdMaker.CurrentCell == null)
     {
         MessageBox.Show("没有数据被选择");
         return;
     }
     if (_currentMaker.Del_Flag == 1)
     {
         MessageBox.Show("该药品已被删除");
         return;
     }
     try
     {
         if (_currentState == NORMAL)
         {
             int lastRowIndex = dgrdMaker.CurrentCell.RowIndex;
             DrugBaseDataBll.DeleteDgMaker(_currentMaker);
             LoadData();
             if (_makerDt.Rows.Count > 0)
             {
                 if (lastRowIndex != 0)
                 {
                     dgrdMaker.CurrentCell = dgrdMaker[dgrdMaker.CurrentCell.ColumnIndex, lastRowIndex - 1];
                 }
                 else
                 {
                     dgrdMaker.CurrentCell = dgrdMaker[dgrdMaker.CurrentCell.ColumnIndex, 0];
                 }
             }
             else
             {
                 TextBoxClear();
                 _currentMaker = null;
             }
             MessageBox.Show("删除成功");
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Пример #6
0
 private void FrmDrugMaker_Load(object sender, EventArgs e)
 {
     try
     {
         LoadData();
         if (_makerDt.Rows.Count != 0)
         {
             _currentMaker = GetMakerFromDt(_makerDt, 0);
             ShowCurrentMaker();
         }
         TextBoxEnable(false);
         _currentState = NORMAL;
         ButtonEnable();
         this.lblDgName.Text = _currentSpec.Name;
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Пример #7
0
        /// <summary>
        /// 计算余额
        /// </summary>
        /// <param name="account">台帐信息</param>
        protected override void ComputeFee(YP_Account account)
        {
            IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YF_ACCOUNT);

            //库存金额
            decimal storeFee     = 0;
            decimal adjLenderFee = 0;
            decimal adjDebitFee  = 0;
            //判断退药期间是否有调价发生
            YP_MakerDic            makerDic = new YP_MakerDic();
            IBaseDAL <YP_MakerDic> makerDao = BindEntity <YP_MakerDic> .CreateInstanceDAL(oleDb);

            makerDic = makerDao.GetModel(account.MakerDicID);
            //计算库存金额
            storeFee = AccountWriter.YF_ComputeTotalFee(makerDic.RetailPrice, account.OverNum, account.UnitNum);
            //如果在发/退药期间调价
            if (makerDic.RetailPrice != account.RetailPrice)
            {
                //调赢
                if (makerDic.RetailPrice > account.RetailPrice)
                {
                    //账务调整
                    adjLenderFee = (Convert.ToDecimal(account.LenderNum) / Convert.ToDecimal(account.UnitNum)) *
                                   (makerDic.RetailPrice - account.RetailPrice);
                    account.BalanceFee = storeFee - adjLenderFee;
                    //写发/退药台帐
                    accountDao.Add(account);
                    //写调整台帐
                    account.AccountType = 3;
                    account.DebitNum    = 0;
                    account.DebitFee    = 0;
                    account.LenderNum   = 0;
                    account.LenderFee   = adjLenderFee;
                    account.BalanceFee  = storeFee;
                    accountDao.Add(account);
                }
                //调亏
                else
                {
                    //账务调整
                    adjDebitFee = (Convert.ToDecimal(account.LenderNum) / Convert.ToDecimal(account.UnitNum)) *
                                  (account.RetailPrice - makerDic.RetailPrice);
                    account.BalanceFee = storeFee + adjDebitFee;
                    //写发/退药台帐
                    accountDao.Add(account);
                    //写调整台帐
                    account.AccountType = 3;
                    account.DebitNum    = 0;
                    account.DebitFee    = adjDebitFee;
                    account.LenderNum   = 0;
                    account.LenderFee   = 0;
                    account.BalanceFee  = storeFee;
                    accountDao.Add(account);
                }
            }
            else
            {
                account.BalanceFee = storeFee;
                accountDao.Add(account);
            }
        }