Esempio n. 1
0
        /// <summary>
        /// vd: muốn thống kê cho năm 2014 thì from=(2014,1,1), to=(2014,12,31)
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <returns></returns>
        public static List <TK_TangGiam_TheoLoaiTS> getAll(DateTime?from, DateTime?to)
        {
            var list_loaits = LoaiTaiSan.getAll();// LoaiTaiSan.getAll();
            List <TK_TangGiam_TheoLoaiTS> re = new List <TK_TangGiam_TheoLoaiTS>();

            foreach (var item in list_loaits)
            {
                TK_TangGiam_TheoLoaiTS obj = new TK_TangGiam_TheoLoaiTS();
                obj.tenloai   = item.ten;
                obj.id_loai   = item.id;
                obj.donvitinh = item.donvitinh == null ? "":item.donvitinh.ten;
                int count = 0;
                foreach (var taisan in item.taisans)
                {
                    //Tính số đầu năm
                    foreach (var ctts in taisan.cttaisans.Where(
                                 c =>
                                 c.soluong > 0
                                 &&
                                 (
                                     (c.ngay != null && c.ngay < from)
                                 )
                                 )
                             )
                    {
                        obj.sodaunam_soluong += ctts.soluong;
                        obj.sodaunam_giatri  += ctts.thanhtien;
                    }
                    var list_log_ctts = taisan.logtanggiamtaisans.Where(c => c.ngay != null && c.ngay >= from && c.ngay <= to && c.soluong > 0);

                    //Tính tăng/giảm trong năm
                    foreach (var ctts in list_log_ctts.Where(c => c.tang_giam == 1 || c.tang_giam == -1))
                    {
                        if (ctts.tang_giam == 1)
                        {
                            obj.tangtrongnam_soluong += ctts.soluong;
                            obj.tangtrongnam_giatri  += ctts.thanhtien;
                        }
                        else if (ctts.tang_giam == -1)
                        {
                            obj.giamtrongnam_soluong += ctts.soluong;
                            obj.giamtrongnam_giatri  += ctts.thanhtien;
                        }
                    }
                    //Tính số cuối năm
                    obj.socuoinam_soluong = obj.sodaunam_soluong + obj.tangtrongnam_soluong - obj.giamtrongnam_soluong;
                    obj.socuoinam_giatri  = obj.sodaunam_giatri + obj.tangtrongnam_giatri - obj.giamtrongnam_giatri;
                }
                //add to list
                re.Add(obj);
            }
            //final filter, tự động tính tổng cho loại TS cha nếu cần
            //...
            return(re);
        }