Beispiel #1
0
 public Page_凭证录入_子细目(string id, bool isTwo)
 {
     InitializeComponent();
     this.id    = id;
     this.isTwo = isTwo;
     ChildData  = cb.GetChildSubjectList("", id, isTwo);
     this.ListBox_子细目.ItemsSource = ChildData;
 }
        /// <summary>
        /// 支持1.2.3级科目查询子科目
        /// </summary>
        /// <param name="subject_id"></param>
        /// <param name="detail_id"></param>
        /// <returns></returns>
        public List <Model_费用明细> GetFeeDetail(string subject_id, string detail_id)
        {
            bool          flag = true;
            ComboBox_科目   cb   = new ComboBox_科目();
            List <string> lst  = new List <string>();

            lst = cb.GetChildSubjectList("", detail_id, true);
            string _tempstr = string.Empty;

            foreach (string i in lst)
            {
                _tempstr += ",total(case when t.detail='"
                            + i.Split('\t')[0]
                            + "' then (t.fee1+t.fee2) else '0' end) as '"
                            + i.Split('\t')[1]
                            + "'";
            }
            for (int i = lst.Count; i < 18; i++)
            {
                _tempstr += ",0";
            }

            List <Model_费用明细> list = new List <Model_费用明细>();
            string            sql  = "select strftime(time),number,comments,total(fee1),total(fee2)"
                                     + _tempstr
                                     + " from "
                                     + "(select b.op_time as time ,a.voucher_no as number,a.abstract as comments,a.debit as fee1,a.credit as fee2,a.detail as detail from "
                                     + DBTablesName.T_VOUCHER_DETAIL
                                     + " a left join "
                                     + DBTablesName.T_VOUCHER
                                     + " b on a.parentid=b.id where a.subject_id='"
                                     + subject_id
                                     + "' and a.detail in (select subject_id from "
                                     + DBTablesName.T_SUBJECT
                                     + " where parent_id='"
                                     + detail_id
                                     + "') and b.delete_mark=0 and b.REVIEW_MARK=1 order by b.op_time)t group by t.time,t.number order by t.time ";

            //查年初数
            string sql2 = "select a.fee*b.borrow_mark from t_yearfee a left join "
                          + DBTablesName.T_SUBJECT
                          + " b on a.subject_id = b.subject_id where a.subject_id='"
                          + subject_id
                          + "' and a.bookid='"
                          + CommonInfo.账薄号
                          + "'";

            string yearfee = db.GetAllData(sql2).Split('\t')[0].Split(',')[0];

            string YearStartFee   = yearfee; //年初值
            String MonthLastValue = "01";

            //月合计
            List <decimal> MonthList = new List <decimal>(20);
            List <decimal> YearList  = new List <decimal>(20);

            for (int i = 0; i < 20; i++)
            {
                decimal childvalue = 0;
                MonthList.Add(childvalue);
                YearList.Add(childvalue);
            }
            //月累计


            DataTable dt        = db.Query(sql).Tables[0];
            bool      isHasData = false;

            if (dt.Rows.Count > 0)
            {
                foreach (DataRow d in dt.Rows)
                {
                    decimal    debit  = 0;
                    decimal    credit = 0;
                    Model_费用明细 m      = new Model_费用明细();
                    string     date   = d[0].ToString().Split(' ')[0];
                    #region 赋值
                    m.年    = date.Split('-')[0];
                    m.月    = date.Split('-')[1];
                    m.日    = date.Split('-')[2];
                    m.号数   = d[1].ToString();
                    m.摘要   = d[2].ToString();
                    m.借方金额 = d[3].ToString();
                    m.贷方金额 = d[4].ToString();

                    if (m.贷方金额.Contains("-") || m.借方金额.Contains("-"))
                    {
                        m.红字标记 = 1;
                        flag   = false;
                    }
                    else
                    {
                        flag = true;
                    }

                    decimal.TryParse(m.借方金额, out debit);
                    decimal.TryParse(m.贷方金额, out credit);
                    yearfee = (Convert.ToDecimal(yearfee) - credit + debit).ToString();

                    #region 赋值
                    List <string> _list = new List <string>();

                    _list    = ut.Turn(d[3].ToString(), 10, flag);
                    m.借方金额1  = _list[0];
                    m.借方金额2  = _list[1];
                    m.借方金额3  = _list[2];
                    m.借方金额4  = _list[3];
                    m.借方金额5  = _list[4];
                    m.借方金额6  = _list[5];
                    m.借方金额7  = _list[6];
                    m.借方金额8  = _list[7];
                    m.借方金额9  = _list[8];
                    m.借方金额10 = _list[9];

                    _list    = ut.Turn(d[4].ToString(), 10, flag);
                    m.贷方金额1  = _list[0];
                    m.贷方金额2  = _list[1];
                    m.贷方金额3  = _list[2];
                    m.贷方金额4  = _list[3];
                    m.贷方金额5  = _list[4];
                    m.贷方金额6  = _list[5];
                    m.贷方金额7  = _list[6];
                    m.贷方金额8  = _list[7];
                    m.贷方金额9  = _list[8];
                    m.贷方金额10 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(yearfee, 10, flag);
                    m.余额1  = _list[0];
                    m.余额2  = _list[1];
                    m.余额3  = _list[2];
                    m.余额4  = _list[3];
                    m.余额5  = _list[4];
                    m.余额6  = _list[5];
                    m.余额7  = _list[6];
                    m.余额8  = _list[7];
                    m.余额9  = _list[8];
                    m.余额10 = _list[9];
                    _list.Clear();

                    _list  = ut.Turn(d[5].ToString(), 10, flag);
                    m.金额31 = _list[0];
                    m.金额32 = _list[1];
                    m.金额33 = _list[2];
                    m.金额34 = _list[3];
                    m.金额35 = _list[4];
                    m.金额36 = _list[5];
                    m.金额37 = _list[6];
                    m.金额38 = _list[7];
                    m.金额39 = _list[8];
                    m.金额40 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(d[6].ToString(), 10, flag);
                    m.金额41 = _list[0];
                    m.金额42 = _list[1];
                    m.金额43 = _list[2];
                    m.金额44 = _list[3];
                    m.金额45 = _list[4];
                    m.金额46 = _list[5];
                    m.金额47 = _list[6];
                    m.金额48 = _list[7];
                    m.金额49 = _list[8];
                    m.金额50 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(d[7].ToString(), 10, flag);
                    m.金额51 = _list[0];
                    m.金额52 = _list[1];
                    m.金额53 = _list[2];
                    m.金额54 = _list[3];
                    m.金额55 = _list[4];
                    m.金额56 = _list[5];
                    m.金额57 = _list[6];
                    m.金额58 = _list[7];
                    m.金额59 = _list[8];
                    m.金额60 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(d[8].ToString(), 10, flag);
                    m.金额61 = _list[0];
                    m.金额62 = _list[1];
                    m.金额63 = _list[2];
                    m.金额64 = _list[3];
                    m.金额65 = _list[4];
                    m.金额66 = _list[5];
                    m.金额67 = _list[6];
                    m.金额68 = _list[7];
                    m.金额69 = _list[8];
                    m.金额70 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(d[9].ToString(), 10, flag);
                    m.金额71 = _list[0];
                    m.金额72 = _list[1];
                    m.金额73 = _list[2];
                    m.金额74 = _list[3];
                    m.金额75 = _list[4];
                    m.金额76 = _list[5];
                    m.金额77 = _list[6];
                    m.金额78 = _list[7];
                    m.金额79 = _list[8];
                    m.金额80 = _list[9];

                    _list.Clear();
                    _list  = ut.Turn(d[10].ToString(), 10, flag);
                    m.金额81 = _list[0];
                    m.金额82 = _list[1];
                    m.金额83 = _list[2];
                    m.金额84 = _list[3];
                    m.金额85 = _list[4];
                    m.金额86 = _list[5];
                    m.金额87 = _list[6];
                    m.金额88 = _list[7];
                    m.金额89 = _list[8];
                    m.金额90 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[11].ToString(), 10, flag);
                    m.金额91  = _list[0];
                    m.金额92  = _list[1];
                    m.金额93  = _list[2];
                    m.金额94  = _list[3];
                    m.金额95  = _list[4];
                    m.金额96  = _list[5];
                    m.金额97  = _list[6];
                    m.金额98  = _list[7];
                    m.金额99  = _list[8];
                    m.金额100 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[12].ToString(), 10, flag);
                    m.金额101 = _list[0];
                    m.金额102 = _list[1];
                    m.金额103 = _list[2];
                    m.金额104 = _list[3];
                    m.金额105 = _list[4];
                    m.金额106 = _list[5];
                    m.金额107 = _list[6];
                    m.金额108 = _list[7];
                    m.金额109 = _list[8];
                    m.金额110 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[13].ToString(), 10, flag);
                    m.金额111 = _list[0];
                    m.金额112 = _list[1];
                    m.金额113 = _list[2];
                    m.金额114 = _list[3];
                    m.金额115 = _list[4];
                    m.金额116 = _list[5];
                    m.金额117 = _list[6];
                    m.金额118 = _list[7];
                    m.金额119 = _list[8];
                    m.金额120 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[14].ToString(), 10, flag);
                    m.金额121 = _list[0];
                    m.金额122 = _list[1];
                    m.金额123 = _list[2];
                    m.金额124 = _list[3];
                    m.金额125 = _list[4];
                    m.金额126 = _list[5];
                    m.金额127 = _list[6];
                    m.金额128 = _list[7];
                    m.金额129 = _list[8];
                    m.金额130 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[15].ToString(), 10, flag);
                    m.金额131 = _list[0];
                    m.金额132 = _list[1];
                    m.金额133 = _list[2];
                    m.金额134 = _list[3];
                    m.金额135 = _list[4];
                    m.金额136 = _list[5];
                    m.金额137 = _list[6];
                    m.金额138 = _list[7];
                    m.金额139 = _list[8];
                    m.金额140 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[16].ToString(), 10, flag);
                    m.金额141 = _list[0];
                    m.金额142 = _list[1];
                    m.金额143 = _list[2];
                    m.金额144 = _list[3];
                    m.金额145 = _list[4];
                    m.金额146 = _list[5];
                    m.金额147 = _list[6];
                    m.金额148 = _list[7];
                    m.金额149 = _list[8];
                    m.金额150 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[17].ToString(), 10, flag);
                    m.金额151 = _list[0];
                    m.金额152 = _list[1];
                    m.金额153 = _list[2];
                    m.金额154 = _list[3];
                    m.金额155 = _list[4];
                    m.金额156 = _list[5];
                    m.金额157 = _list[6];
                    m.金额158 = _list[7];
                    m.金额159 = _list[8];
                    m.金额160 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[18].ToString(), 10, flag);
                    m.金额161 = _list[0];
                    m.金额162 = _list[1];
                    m.金额163 = _list[2];
                    m.金额164 = _list[3];
                    m.金额165 = _list[4];
                    m.金额166 = _list[5];
                    m.金额167 = _list[6];
                    m.金额168 = _list[7];
                    m.金额169 = _list[8];
                    m.金额170 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[19].ToString(), 10, flag);
                    m.金额171 = _list[0];
                    m.金额172 = _list[1];
                    m.金额173 = _list[2];
                    m.金额174 = _list[3];
                    m.金额175 = _list[4];
                    m.金额176 = _list[5];
                    m.金额177 = _list[6];
                    m.金额178 = _list[7];
                    m.金额179 = _list[8];
                    m.金额180 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[20].ToString(), 10, flag);
                    m.金额181 = _list[0];
                    m.金额182 = _list[1];
                    m.金额183 = _list[2];
                    m.金额184 = _list[3];
                    m.金额185 = _list[4];
                    m.金额186 = _list[5];
                    m.金额187 = _list[6];
                    m.金额188 = _list[7];
                    m.金额189 = _list[8];
                    m.金额190 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[21].ToString(), 10, flag);
                    m.金额191 = _list[0];
                    m.金额192 = _list[1];
                    m.金额193 = _list[2];
                    m.金额194 = _list[3];
                    m.金额195 = _list[4];
                    m.金额196 = _list[5];
                    m.金额197 = _list[6];
                    m.金额198 = _list[7];
                    m.金额199 = _list[8];
                    m.金额200 = _list[9];

                    _list.Clear();
                    _list   = ut.Turn(d[22].ToString(), 10, flag);
                    m.金额201 = _list[0];
                    m.金额202 = _list[1];
                    m.金额203 = _list[2];
                    m.金额204 = _list[3];
                    m.金额205 = _list[4];
                    m.金额206 = _list[5];
                    m.金额207 = _list[6];
                    m.金额208 = _list[7];
                    m.金额209 = _list[8];
                    m.金额210 = _list[9];

                    m.列名 = lst;

                    decimal dValue = 0;
                    if (MonthLastValue.Equals(m.月))
                    {
                        for (int i = 0; i < 20; i++)
                        {
                            decimal.TryParse(d[i + 3].ToString(), out dValue);
                            MonthList[i] += dValue;
                            YearList[i]  += dValue;
                        }
                        isHasData = true;  //f1001
                    }
                    else
                    {
                        if (isHasData)
                        {
                            Model_费用明细 mm = new Model_费用明细();
                            mm    = GetFeeDetail(MonthList, MonthList[0] - MonthList[1] + decimal.Parse(YearStartFee), flag);
                            mm.摘要 = "本月合计";
                            list.Add(mm);

                            if (!MonthLastValue.Equals("01"))
                            {
                                Model_费用明细 mmm = new Model_费用明细();
                                mmm    = GetFeeDetail(YearList, YearList[0] - YearList[1] + decimal.Parse(YearStartFee), flag);
                                mmm.摘要 = "本月累计";
                                list.Add(mmm);
                            }
                        }
                        MonthList = new List <decimal>(20);
                        for (int i = 0; i < 20; i++)
                        {
                            decimal childvalue = 0;
                            MonthList.Add(childvalue);
                        }
                        for (int i = 0; i < 20; i++)
                        {
                            decimal.TryParse(d[i + 3].ToString(), out dValue);
                            MonthList[i] += dValue;
                            YearList[i]  += dValue;
                        }
                    }
                    MonthLastValue = m.月;
                    #endregion


                    #endregion
                    list.Add(m);
                }
                Model_费用明细 mlast = new Model_费用明细();
                mlast    = GetFeeDetail(MonthList, decimal.Parse(yearfee), flag);
                mlast.摘要 = "本月合计";
                list.Add(mlast);
                if (!MonthLastValue.Equals("01"))
                {
                    Model_费用明细 mmm = new Model_费用明细();
                    mmm = GetFeeDetail(YearList, decimal.Parse(yearfee), flag);
                    if (MonthLastValue.Equals("12"))
                    {
                        mmm.摘要 = "本年结账";
                    }
                    else
                    {
                        mmm.摘要 = "本月累计";
                    }
                    list.Add(mmm);
                }
            }
            return(list);
        }