/// <summary>
        /// 根据交款ID得到结算交款表对象
        /// </summary>
        /// <param name="rpt">结算交款表对象</param>
        /// <param name="Accountid">交款ID</param>
        public void GetAccountRptInfo(AbstractCostAccountRpt rpt, int[] Accountids, int type)
        {
            AllAccount        zyAccount  = new AllAccount();
            List <ZY_Account> zyAccounts = zyAccount.GetAccounts(Accountids, type);

            CommMethod.list_AddString.Clear();
            for (int i = 0; i < zyAccounts.Count; i++)
            {
                rpt.交款人 = CommMethod.AddString(zyAccounts[i].AccountName);
            }

            rpt.医院名称 = HIS.SYSTEM.BussinessLogicLayer.Classes.BaseData.WorkName + "住院每日缴款清单";
            rpt.交款时间 = zyAccounts[0].AccountDate.ToString();

            #region 发票项目
            DataTable dt       = zyAccount.GetTicketTotle(Accountids);
            decimal   AllKMFee = 0;
            //dt = null;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                AllKMFee += Convert.ToDecimal(dt.Rows[i]["Tolal_Fee"]);
            }


            #endregion
            rpt.发票项目   = dt;
            rpt.发票科目合计 = AllKMFee.ToString();
            List <ZY_CostMaster> zy_CML = zyAccount.GetCostData(Accountids);
            if (zy_CML != null && zy_CML.Count > 0)
            {
                #region 收费票据

                rpt.收费发票开始号 = zy_CML[0].TicketCode;
                rpt.收费发票结束号 = zy_CML[zy_CML.Count - 1].TicketCode;
                rpt.收费发票张数  = zy_CML.Count.ToString();
                List <ZY_CostMaster> zy_CMLx = zy_CML.FindAll(delegate(ZY_CostMaster x) { return(x.Record_Flag == 2); });
                rpt.收费退费张数 = zy_CMLx.Count.ToString();
                rpt.收费退费金额 = zy_CMLx.Sum(x => x.Total_Fee).ToString();
                rpt.废票张数   = zyAccount.GetBadTicketCount(Accountids).ToString();
                #endregion

                #region 记账部分
                DataTable             dt1  = BaseDataFactory.GetData(baseDataType.病人类型);
                List <AccountPatType> apts = new List <AccountPatType>();
                AccountPatType        apt;
                int AllNum = 0;
                for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    List <ZY_CostMaster> zy_CMLy = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.PatType.Trim() == dt1.Rows[i]["code"].ToString()); });
                    apt          = new AccountPatType();
                    apt.TypeName = dt1.Rows[i]["name"].ToString();
                    apt.CostNum  = zy_CMLy.Count.ToString();
                    apt.CostFee  = zy_CMLy.Sum(x => x.NotWorkUnit_Fee).ToString();
                    apts.Add(apt);
                    AllNum += zy_CMLy.Count;
                }

                apt = new AccountPatType();
                //单位
                List <ZY_CostMaster> zy_CMLy5 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.WorkUnit_Fee != 0); });
                apt.TypeName = "单位";
                apt.CostNum  = zy_CMLy5.Count.ToString();
                apt.CostFee  = zy_CMLy5.Sum(y => y.WorkUnit_Fee).ToString();
                apts.Add(apt);
                //合计
                apt          = new AccountPatType();
                apt.TypeName = "合计";
                apt.CostNum  = (AllNum + zy_CMLy5.Count).ToString();
                apt.CostFee  = zy_CML.Sum(y => y.Village_Fee).ToString();
                apts.Add(apt);

                rpt.记账内容 = apts.ToArray();

                #endregion

                #region 收现金

                rpt.优惠金额 = zy_CML.Sum(z => z.Favor_Fee).ToString();
                rpt.应收金额 = zy_CML.Sum(z => z.Self_Fee).ToString();
                rpt.预收金额 = zy_CML.Sum(z => z.Deptosit_Fee).ToString();
                decimal decR = zy_CML.Sum(z => z.Reality_Fee);
                //补收
                List <ZY_CostMaster> zy_CML11 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Reality_Fee > 0); });
                //补退
                List <ZY_CostMaster> zy_CML22 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Reality_Fee < 0); });
                //欠费
                List <ZY_CostMaster> zy_CML33 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Ntype == 3); });

                rpt.补收金额 = zy_CML11.Sum(x => x.Reality_Fee).ToString("0.00");
                rpt.补退金额 = (0 - zy_CML22.Sum(x => x.Reality_Fee)).ToString("0.00");
                rpt.实收金额 = decR.ToString();
                rpt.小写合计 = decR.ToString();
                rpt.大写合计 = decR.ToString();

                List <ZY_ChargeList> zy_cl = zyAccount.GetChargeListData(Accountids);
                //现金
                List <ZY_ChargeList> zy_cl0 = zy_cl.FindAll(x => x.FeeType == 0);
                //POS
                List <ZY_ChargeList> zy_cl1 = zy_cl.FindAll(x => x.FeeType == 1);
                rpt.预交金现金   = zy_cl0.Sum(x => x.Total_Fee).ToString();
                rpt.预交金POS  = zy_cl1.Sum(x => x.Total_Fee).ToString();
                rpt.补收金额现金  = zy_CML11.Sum(x => x.Money_Fee).ToString();
                rpt.补收金额POS = zy_CML11.Sum(x => x.Pos_Fee).ToString();
                rpt.费金额     = zy_CML33.Sum(x => (x.Self_Fee - x.Deptosit_Fee)).ToString();
                #endregion
            }
        }
Example #2
0
        /// <summary>
        /// 根据交款ID得到结算交款表对象
        /// </summary>
        /// <param name="rpt">结算交款表对象</param>
        /// <param name="Accountid">交款ID</param>
        public void GetAccountRptInfo(AbstractCostAccountRpt_sz rpt, int Accountid)
        {
            ZY_Account zyAccount = new ZY_Account();

            zyAccount = zyAccount.GetAccount(Accountid);
            rpt.交款单位  = HIS.SYSTEM.BussinessLogicLayer.Classes.BaseData.WorkName + "住院每日缴款清单";
            rpt.交款人   = zyAccount.AccountName;
            rpt.交款时间  = zyAccount.AccountDate.ToString();

            //#region 发票项目
            //DataTable dt = zyAccount.GetTicketTotle(Accountid);
            //decimal AllKMFee = 0;
            ////dt = null;
            //for (int i = 0; i < dt.Rows.Count; i++)
            //{
            //    AllKMFee += Convert.ToDecimal(dt.Rows[i]["Tolal_Fee"]);
            //}


            //#endregion

            //rpt.发票项目 = dt;
            //rpt.发票科目合计 = AllKMFee.ToString();
            decimal[] dec = zyAccount.GetTotleType(Accountid);
            rpt.药品收入     = dec[0].ToString();
            rpt.医疗收入     = dec[1].ToString();
            rpt.其他收入     = dec[2].ToString();
            rpt.应用金额大写合计 = (dec[0] + dec[1]).ToString();
            rpt.应用金额小写合计 = (dec[0] + dec[1]).ToString();

            List <ZY_CostMaster> zy_CML = zyAccount.GetCostData(Accountid);

            if (zy_CML != null && zy_CML.Count > 0)
            {
                #region 收费票据

                rpt.收费发票开始号 = zy_CML[0].TicketCode;
                rpt.收费发票结束号 = zy_CML[zy_CML.Count - 1].TicketCode;
                rpt.收费发票张数  = zy_CML.Count.ToString();
                List <ZY_CostMaster> zy_CMLx = zy_CML.FindAll(delegate(ZY_CostMaster x) { return(x.Record_Flag == 2); });
                rpt.收费退费张数 = zy_CMLx.Count.ToString();
                rpt.收费退费金额 = zy_CMLx.Sum(x => x.Total_Fee).ToString();
                rpt.废票张数   = zyAccount.GetBadTicketCount(Accountid).ToString();
                #endregion

                #region 记账部分
                DataTable             dt1  = BaseDataFactory.GetData(baseDataType.病人类型);
                DataTable             dt2  = BaseDataFactory.GetData(baseDataType.记账单位);
                List <AccountPatType> apts = new List <AccountPatType>();
                AccountPatType        apt;
                //int AllNum = 0;
                //医保、农合(病人类型)
                for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    List <ZY_CostMaster> zy_CMLy = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.PatType.Trim() == dt1.Rows[i]["code"].ToString()); });
                    apt          = new AccountPatType();
                    apt.TypeName = dt1.Rows[i]["name"].ToString();
                    apt.CostNum  = zy_CMLy.Count.ToString();
                    apt.CostFee  = zy_CMLy.Sum(x => x.NotWorkUnit_Fee).ToString();
                    apts.Add(apt);
                    //AllNum += zy_CMLy.Count;
                }

                //单位集合
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    apt = new AccountPatType();

                    List <ZY_CostMaster> zy_CMLy = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.WorkUnit_Fee != 0 && y.WorkUnit.Trim() == dt2.Rows[i]["code"].ToString()); });
                    apt.TypeName = dt2.Rows[i]["name"].ToString();
                    apt.CostNum  = zy_CMLy.Count.ToString();
                    apt.CostFee  = zy_CMLy.Sum(y => y.WorkUnit_Fee).ToString();
                    apts.Add(apt);
                }
                //刷卡(POS)
                apt = new AccountPatType();
                List <ZY_CostMaster> zy_CMLy5 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Pos_Fee != 0); });
                apt.TypeName = "银联刷卡";
                apt.CostNum  = (zy_CMLy5.Count).ToString();
                apt.CostFee  = zy_CMLy5.Sum(y => y.Pos_Fee).ToString();
                apts.Add(apt);

                //大写合计
                apt          = new AccountPatType();
                apt.TypeName = "大写合计";
                apt.CostNum  = (zy_CML.Count).ToString();
                apt.CostFee  = zy_CML.Sum(y => y.Village_Fee).ToString();
                apts.Add(apt);
                //小写合计
                apt          = new AccountPatType();
                apt.TypeName = "小写合计";
                apt.CostNum  = (zy_CML.Count).ToString();
                apt.CostFee  = zy_CML.Sum(y => y.Village_Fee).ToString();
                apts.Add(apt);
                rpt.记账内容 = apts.ToArray();

                #endregion

                #region 收现金

                rpt.折扣金额 = zy_CML.Sum(z => z.Favor_Fee).ToString();
                rpt.应收金额 = zy_CML.Sum(z => z.Self_Fee).ToString();
                rpt.预收金额 = zy_CML.Sum(z => z.Deptosit_Fee).ToString();
                decimal decR = zy_CML.Sum(z => z.Reality_Fee);
                //补收
                List <ZY_CostMaster> zy_CML11 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Reality_Fee > 0); });
                //补退
                List <ZY_CostMaster> zy_CML22 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Reality_Fee < 0); });
                //欠费
                List <ZY_CostMaster> zy_CML33 = zy_CML.FindAll(delegate(ZY_CostMaster y) { return(y.Ntype == 3); });

                rpt.补收金额 = zy_CML11.Sum(x => x.Reality_Fee).ToString("0.00");
                rpt.补退金额 = (0 - zy_CML22.Sum(x => x.Reality_Fee)).ToString("0.00");
                rpt.实收金额 = decR.ToString();
                rpt.小写合计 = decR.ToString();
                rpt.大写合计 = decR.ToString();

                List <ZY_ChargeList> zy_cl = zyAccount.GetChargeListData(Accountid);
                //现金
                List <ZY_ChargeList> zy_cl0 = zy_cl.FindAll(x => x.FeeType == 0);
                //POS
                List <ZY_ChargeList> zy_cl1 = zy_cl.FindAll(x => x.FeeType == 1);
                rpt.预交金现金   = zy_cl0.Sum(x => x.Total_Fee).ToString();
                rpt.预交金POS  = zy_cl1.Sum(x => x.Total_Fee).ToString();
                rpt.补收金额现金  = zy_CML11.Sum(x => x.Money_Fee).ToString();
                rpt.补收金额POS = zy_CML11.Sum(x => x.Pos_Fee).ToString();
                rpt.费金额     = zy_CML33.Sum(x => (x.Self_Fee - x.Deptosit_Fee)).ToString();
                #endregion
            }
        }