/// <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); }