示例#1
0
        private void generateBangThuTienKhoanThu(int bangThuTienId, int khoiId, DateTime ngayTinh, ViewBangThuTienRow preMonthViewBangThuTien)
        {
            KhoanThuHangNamTableAdapter     khoanThuHangNamTableAdapter     = (KhoanThuHangNamTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterKhoanThuHangNam);
            BangThuTienTableAdapter         bangThuTienTableAdapter         = (BangThuTienTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterBangThuTien);
            BangThuTienKhoanThuTableAdapter bangThuTienKhoanThuTableAdapter = (BangThuTienKhoanThuTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterBangThuTienKhoanThu);

            int[]      khoanThuIds       = new int[] { BangThuTienConstant.KhoanThuIdBanTru, BangThuTienConstant.KhoanThuIdHocPhi, BangThuTienConstant.KhoanThuIdPhuPhi, BangThuTienConstant.KhoanThuIdTienAnSua, BangThuTienConstant.KhoanThuIdAnSang, BangThuTienConstant.KhoanThuIdAnToi };
            List <int> ignoreKhoanThuIds = getKhoanThuIdsToIgnoreGenerating(preMonthViewBangThuTien);

            QLMamNon.Dao.QLMamNonDs.KhoanThuHangNamDataTable khoanThuHangNamTable = khoanThuHangNamTableAdapter.GetKhoanThuHangNamByParams(String.Join(",", khoanThuIds), khoiId, ngayTinh);
            BangThuTienDataTable bangThuTienTable = bangThuTienTableAdapter.GetDataById(bangThuTienId);

            QLMamNon.Dao.QLMamNonDs.BangThuTienRow bangThuTienRow = bangThuTienTable[0];

            foreach (QLMamNon.Dao.QLMamNonDs.KhoanThuHangNamRow row in khoanThuHangNamTable)
            {
                long soTien = 0;

                if (!ignoreKhoanThuIds.Contains(row.KhoanThuId))
                {
                    soTien = BangThuTienUtil.CalculateSoTienPhi(khoiId, 0, row.SoTien, row.KhoanThuId);
                }

                bangThuTienKhoanThuTableAdapter.Insert(row.KhoanThuId, bangThuTienId, soTien);

                if (soTien != 0)
                {
                    switch (row.KhoanThuId)
                    {
                    case BangThuTienConstant.KhoanThuIdAnSang:
                        bangThuTienRow.SoTienAnSangThangNay = soTien;
                        break;

                    case BangThuTienConstant.KhoanThuIdAnToi:
                        bangThuTienRow.SoTienAnToiThangNay = soTien;
                        break;

                    default:
                        break;
                    }
                }
            }

            bangThuTienTableAdapter.Update(bangThuTienRow);
        }
示例#2
0
        public int GenerateSoThuTienByHocSinhRows(DateTime ngayTinh, List <HocSinhRow> hocSinhRows)
        {
            ViewBangThuTienTableAdapter viewBangThuTienTableAdapter = (ViewBangThuTienTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterViewBangThuTien);
            ViewBangThuTienDataTable    viewBangThuTienTable        = viewBangThuTienTableAdapter.GetViewBangThuTienByNgayTinhAndLop(ngayTinh, null);

            List <int>        hocSinhIds = new List <int>();
            List <HocSinhRow> needToGenerateHocSinhRows = new List <Dao.QLMamNonDs.HocSinhRow>();

            foreach (HocSinhRow hocSinh in hocSinhRows)
            {
                DataRow[] rows = viewBangThuTienTable.Select(String.Format("HocSinhId={0}", hocSinh.HocSinhId));

                if (ArrayUtil.IsEmpty(rows))
                {
                    hocSinhIds.Add(hocSinh.HocSinhId);
                    needToGenerateHocSinhRows.Add(hocSinh);
                }
            }

            Dictionary <int, HocSinhLopRow> hocSinhIdsToHocSinhLops = StaticDataUtil.GetHocSinhLopsByHocSinhIds(hocSinhIds, ngayTinh);
            Dictionary <int, Dictionary <int, ViewBangThuTienRow> > lopToHocSinhToViewBangThuTienRowsMap          = buildLopToHocSinhToViewBangThuTienRowsMap(viewBangThuTienTable, ngayTinh);
            Dictionary <int, Dictionary <int, ViewBangThuTienRow> > prevMonthLopToHocSinhToViewBangThuTienRowsMap = getAndSortPrevMonthViewBangThuTienRows(ngayTinh, viewBangThuTienTableAdapter, hocSinhIds, hocSinhIdsToHocSinhLops, lopToHocSinhToViewBangThuTienRowsMap);
            Dictionary <int, int> generatedLopToSTTs = buildGeneratedLopIdToSTTMap(lopToHocSinhToViewBangThuTienRowsMap);

            // Generate SoThuTien for HocSinhs that exist in previous month
            foreach (HocSinhRow hocSinh in needToGenerateHocSinhRows)
            {
                if (hocSinhIdsToHocSinhLops.ContainsKey(hocSinh.HocSinhId))
                {
                    int lopId = hocSinhIdsToHocSinhLops[hocSinh.HocSinhId].LopId;
                    ViewBangThuTienRow preMonthViewBangThuTien = null;

                    if (prevMonthLopToHocSinhToViewBangThuTienRowsMap.ContainsKey(lopId))
                    {
                        Dictionary <int, ViewBangThuTienRow> prevMonthhocSinhToViewBangThuTienRowsMap = prevMonthLopToHocSinhToViewBangThuTienRowsMap[lopId];

                        if (prevMonthhocSinhToViewBangThuTienRowsMap.ContainsKey(hocSinh.HocSinhId))
                        {
                            preMonthViewBangThuTien = prevMonthhocSinhToViewBangThuTienRowsMap[hocSinh.HocSinhId];
                        }
                    }

                    if (preMonthViewBangThuTien != null)
                    {
                        GenerateSoThuTienByHocSinhAndLopAndNgayTinh(hocSinh.HocSinhId, lopId, ngayTinh, preMonthViewBangThuTien.STT, preMonthViewBangThuTien);

                        if (!generatedLopToSTTs.ContainsKey(lopId))
                        {
                            generatedLopToSTTs.Add(lopId, 0);
                        }

                        int currentSTT = generatedLopToSTTs[lopId];

                        if (currentSTT < preMonthViewBangThuTien.STT)
                        {
                            generatedLopToSTTs[lopId] = preMonthViewBangThuTien.STT;
                        }
                    }
                }
            }

            // Generate SoThuTien for HocSinhs that NOT exist in previous month
            foreach (HocSinhRow hocSinh in needToGenerateHocSinhRows)
            {
                if (hocSinhIdsToHocSinhLops.ContainsKey(hocSinh.HocSinhId))
                {
                    int lopId = hocSinhIdsToHocSinhLops[hocSinh.HocSinhId].LopId;
                    ViewBangThuTienRow preMonthViewBangThuTien = null;

                    if (prevMonthLopToHocSinhToViewBangThuTienRowsMap.ContainsKey(lopId))
                    {
                        Dictionary <int, ViewBangThuTienRow> prevMonthhocSinhToViewBangThuTienRowsMap = prevMonthLopToHocSinhToViewBangThuTienRowsMap[lopId];

                        if (prevMonthhocSinhToViewBangThuTienRowsMap.ContainsKey(hocSinh.HocSinhId))
                        {
                            preMonthViewBangThuTien = prevMonthhocSinhToViewBangThuTienRowsMap[hocSinh.HocSinhId];
                        }
                    }

                    if (preMonthViewBangThuTien == null)
                    {
                        if (!generatedLopToSTTs.ContainsKey(lopId))
                        {
                            generatedLopToSTTs.Add(lopId, 0);
                        }

                        int stt = generatedLopToSTTs[lopId] + 1;
                        GenerateSoThuTienByHocSinhAndLopAndNgayTinh(hocSinh.HocSinhId, lopId, ngayTinh, stt, preMonthViewBangThuTien);
                        generatedLopToSTTs[lopId] = stt;
                    }
                }
            }

            return(hocSinhIds.Count);
        }
示例#3
0
        public void GenerateSoThuTienByHocSinhAndLopAndNgayTinh(int hocSinhId, int lopId, DateTime ngayTinh, int stt, ViewBangThuTienRow preMonthViewBangThuTien)
        {
            BangThuTienTableAdapter bangThuTienTableAdapter = (BangThuTienTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterBangThuTien);
            LopKhoiTableAdapter     lopKhoiTableAdapter     = (LopKhoiTableAdapter)StaticDataFacade.Get(StaticDataKeys.AdapterLopKhoi);

            int    sXThangTruoc           = 0;
            long   soTienSXThangTruoc     = 0;
            int    anSangThangTruoc       = 0;
            long   soTienAnSangThangTruoc = 0;
            long   soTienAnSangThangNay   = 0;
            int    anToiThangTruoc        = 0;
            long   soTienAnToiThangTruoc  = 0;
            long   soTienAnToiThangNay    = 0;
            long   soTienNangKhieu        = 0;
            long   soTienTruyThu          = 0;
            long   soTienDieuHoa          = 0;
            long   soTienDoDung           = 0;
            String ghiChu = "";

            bangThuTienTableAdapter.Insert(hocSinhId, lopId, sXThangTruoc, soTienSXThangTruoc, anSangThangTruoc, soTienAnSangThangTruoc, soTienAnSangThangNay, soTienAnToiThangTruoc, anToiThangTruoc, soTienAnToiThangNay, soTienDoDung, soTienNangKhieu, soTienTruyThu, soTienDieuHoa, ngayTinh, stt, 0, DateTime.Now, ghiChu);
            int bangThuTienId = (int)bangThuTienTableAdapter.Adapter.InsertCommand.LastInsertedId;
            int khoiId        = StaticDataUtil.GetKhoiIdByLopId(lopKhoiTableAdapter, lopId).Value;

            this.generateBangThuTienKhoanThu(bangThuTienId, khoiId, ngayTinh, preMonthViewBangThuTien);
        }
示例#4
0
        private static void evaluateValuesForAdditionalFields(QLMamNon.Dao.QLMamNonDs.ViewBangThuTienRow row,
                                                              QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuDataTable bTTKTDataTable,
                                                              bool isCalculateAnSangAnToi, bool isCalculateHocPhi)
        {
            if (isCalculateHocPhi)
            {
                row.TienAnSua = 0;
                row.PhuPhi    = 0;
                row.BanTru    = 0;
                row.HocPhi    = 0;
            }

            if (isCalculateAnSangAnToi)
            {
                row.SoTienAnSangThangNay = 0;
                row.SoTienAnToiThangNay  = 0;
            }

            QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuRow[] bangThuTienKhoanThuRows = bTTKTDataTable.Select(String.Format("BangThuTienId={0}", row.BangThuTienId)) as QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuRow[];

            if (!ListUtil.IsEmpty(bangThuTienKhoanThuRows))
            {
                foreach (QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuRow bangThuTienKhoanThuRow in bangThuTienKhoanThuRows)
                {
                    switch (bangThuTienKhoanThuRow.KhoanThuId)
                    {
                    case BangThuTienConstant.KhoanThuIdTienAnSua:
                        if (isCalculateHocPhi)
                        {
                            row.TienAnSua = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    case BangThuTienConstant.KhoanThuIdPhuPhi:
                        if (isCalculateHocPhi)
                        {
                            row.PhuPhi = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    case BangThuTienConstant.KhoanThuIdBanTru:
                        if (isCalculateHocPhi)
                        {
                            row.BanTru = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    case BangThuTienConstant.KhoanThuIdHocPhi:
                        if (isCalculateHocPhi)
                        {
                            row.HocPhi = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    case BangThuTienConstant.KhoanThuIdAnSang:
                        if (isCalculateAnSangAnToi)
                        {
                            row.SoTienAnSangThangNay = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    case BangThuTienConstant.KhoanThuIdAnToi:
                        if (isCalculateAnSangAnToi)
                        {
                            row.SoTienAnToiThangNay = bangThuTienKhoanThuRow.SoTien;
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
示例#5
0
        public static long CalculateTruyThu(QLMamNon.Dao.QLMamNonDs.ViewBangThuTienRow row, QLMamNon.Dao.QLMamNonDs.ViewBangThuTienRow bangThuTienThangTruocRow)
        {
            if (Settings.Default.AppLannchDate.Year == row.NgayTinh.Year && Settings.Default.AppLannchDate.Month == row.NgayTinh.Month)
            {
                return(row.SoTienTruyThu);
            }

            if (bangThuTienThangTruocRow != null)
            {
                return(bangThuTienThangTruocRow.ThanhTien - bangThuTienThangTruocRow.SoTienNopLan1 - bangThuTienThangTruocRow.SoTienNopLan2);
            }

            return(0);
        }
示例#6
0
 public static long CalculateThanhTien(QLMamNon.Dao.QLMamNonDs.ViewBangThuTienRow bangThuTienRow)
 {
     return(bangThuTienRow.TienAnSua + bangThuTienRow.PhuPhi + bangThuTienRow.BanTru + bangThuTienRow.HocPhi -
            bangThuTienRow.SoTienSXThangTruoc + bangThuTienRow.SoTienAnSangConLai + bangThuTienRow.SoTienAnToiConLai +
            bangThuTienRow.SoTienNangKhieu + bangThuTienRow.SoTienTruyThu + bangThuTienRow.SoTienDieuHoa + bangThuTienRow.SoTienDoDung);
 }
示例#7
0
        protected override void onSaving()
        {
            ViewBangThuTienDataTable table = this.DataTable as ViewBangThuTienDataTable;
            List <int> bangThuTienIds      = new List <int>();

            foreach (ViewBangThuTienRow viewBangThuTienRow in table)
            {
                viewBangThuTienRow.SoTienSXThangTruoc     = BangThuTienUtil.SXToSoTienSX(viewBangThuTienRow.SXThangTruoc, Settings.Default.TienAnChinh);
                viewBangThuTienRow.SoTienAnSangThangTruoc = BangThuTienUtil.SXAnSangToSoTienAnSang(viewBangThuTienRow.AnSangThangTruoc, Settings.Default.TienAnSang);
                viewBangThuTienRow.SoTienAnToiThangTruoc  = BangThuTienUtil.SXAnToiToSoTienAnToi(viewBangThuTienRow.AnToiThangTruoc, Settings.Default.TienAnToi);

                if (this.isNeedToUpdateBangThuTienKhoanThu(viewBangThuTienRow))
                {
                    bangThuTienIds.Add(viewBangThuTienRow.BangThuTienId);
                }
            }

            if (!ListUtil.IsEmpty(bangThuTienIds))
            {
                QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuDataTable bangThuTienKhoanThuDataTable = bangThuTienKhoanThuTableAdapter.GetBangThuTienKhoanThuByBangThuTienIds(StringUtil.Join(bangThuTienIds, ","));

                foreach (QLMamNon.Dao.QLMamNonDs.BangThuTienKhoanThuRow bangThuTienKhoanThuRow in bangThuTienKhoanThuDataTable)
                {
                    ViewBangThuTienRow[] viewBangThuTienRows = (ViewBangThuTienRow[])table.Select(String.Format("BangThuTienId={0}", bangThuTienKhoanThuRow.BangThuTienId));
                    ViewBangThuTienRow   viewBangThuTienRow  = viewBangThuTienRows[0];
                    switch (bangThuTienKhoanThuRow.KhoanThuId)
                    {
                    case BangThuTienConstant.KhoanThuIdTienAnSua:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.TienAnSua;
                        break;

                    case BangThuTienConstant.KhoanThuIdPhuPhi:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.PhuPhi;
                        break;

                    case BangThuTienConstant.KhoanThuIdBanTru:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.BanTru;
                        break;

                    case BangThuTienConstant.KhoanThuIdHocPhi:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.HocPhi;
                        break;

                    case BangThuTienConstant.KhoanThuIdAnSang:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.SoTienAnSangThangNay;
                        break;

                    case BangThuTienConstant.KhoanThuIdAnToi:
                        bangThuTienKhoanThuRow.SoTien = viewBangThuTienRow.SoTienAnToiThangNay;
                        break;

                    default:
                        break;
                    }
                }

                bangThuTienKhoanThuTableAdapter.Update(bangThuTienKhoanThuDataTable);
            }

            // Start Updating SoTienTruyThu for each BangThuTienRow
            QLMNDaoJobInvoker qlmnDaoJobInvoker = new QLMNDaoJobInvoker();

            qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand = new UpdateSoTienTruyThuOfBangThuTienCommand();
            qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand.CommandParameter.Add(UpdateSoTienTruyThuOfBangThuTienCommand.ParameterViewBangThuTienTableAdapter, this.viewBangThuTienTableAdapter);

            foreach (ViewBangThuTienRow viewBangThuTienRow in table)
            {
                if (viewBangThuTienRow[ViewBangThuTienFieldName.ThanhTien, DataRowVersion.Original] != DBNull.Value && viewBangThuTienRow[ViewBangThuTienFieldName.ThanhTien, DataRowVersion.Current] != DBNull.Value)
                {
                    long originalVersionToCompare = (long)viewBangThuTienRow[ViewBangThuTienFieldName.ThanhTien, DataRowVersion.Original];
                    long currentVersionToCompare  = (long)viewBangThuTienRow[ViewBangThuTienFieldName.ThanhTien, DataRowVersion.Current];

                    if (originalVersionToCompare != currentVersionToCompare)
                    {
                        qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand.CommandParameter.Remove(UpdateSoTienTruyThuOfBangThuTienCommand.ParameterCurrentViewBangThuTien);
                        qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand.CommandParameter.Remove(UpdateSoTienTruyThuOfBangThuTienCommand.ParameterSoTienAdded);
                        qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand.CommandParameter.Add(UpdateSoTienTruyThuOfBangThuTienCommand.ParameterCurrentViewBangThuTien, viewBangThuTienRow);
                        qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTienCommand.CommandParameter.Add(UpdateSoTienTruyThuOfBangThuTienCommand.ParameterSoTienAdded, currentVersionToCompare - originalVersionToCompare);
                        qlmnDaoJobInvoker.UpdateSoTienTruyThuOfBangThuTien();
                    }
                }
            }
            // Finished Updating SoTienTruyThu for each BangThuTien

            base.onSaving();
        }