예제 #1
0
        /// <summary>
        /// hàm thực hienj việc tính phâm trăm bảo hiểm
        /// </summary>
        /// <param name="objChidinhChitiet"></param>
        /// <param name="PTramBHYT"></param>
        public static void GB_TinhPhtramBHYT(KcbChidinhclsChitiet objChidinhChitiet, KcbLuotkham objLuotkham, bool noitru, decimal PTramBHYT)
        {
            byte    trangthaiBhyt            = 1;
            decimal bhytPtramTraituyennoitru = Utility.DecimaltoDbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false), 0m);
            bool    bExistPtramBHYT          = false;

            if (objLuotkham.IdLoaidoituongKcb != null && !THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb.Value))//Đối tượng DV
            {
                trangthaiBhyt           = (byte)0;
                objChidinhChitiet.TuTuc = 0;
            }
            else
            {
                trangthaiBhyt = (byte)(globalVariables.gv_blnApdungChedoDuyetBHYT ? 0 : 1);
            }
            if (Utility.Int32Dbnull(objChidinhChitiet.TrangthaiHuy, -1) == -1)
            {
                objChidinhChitiet.TrangthaiHuy = 0;
            }
            //DataTable dtDichvu =  SPs.SpKcbLaydoituongDichvuChitiet(objChidinhChitiet.IdChitietdichvu).GetDataSet().Tables[0];
            //if (dtDichvu != null && dtDichvu.Rows.Count>0)
            //{
            //    objChidinhChitiet.GiaDanhmuc = Utility.DecimaltoDbnull(dtDichvu.Rows[0]["Don_Gia"]);
            //}
            objChidinhChitiet.GiaDanhmuc    = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0);
            objChidinhChitiet.PtramBhyt     = PTramBHYT;
            objChidinhChitiet.PtramBhytGoc  = objLuotkham.PtramBhytGoc;
            objChidinhChitiet.LoaiChietkhau = 0;
            objChidinhChitiet.TrangthaiBhyt = trangthaiBhyt;
            objChidinhChitiet.IdLoaichidinh = 0;//Chưa hiểu trường này-->Cần xem lại
            if (Utility.Int32Dbnull(objChidinhChitiet.TuTuc, 0) == 1)
            {
                objChidinhChitiet.BhytChitra  = 0;
                objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0);
                objChidinhChitiet.PtramBhyt   = 0;
            }
            else
            {
                //Mục tính BHYT đặc biệt để dành sử dụng trong tương lai
                PtramBHYTDacBiet(objChidinhChitiet, objLuotkham, 2, ref bExistPtramBHYT);
                if (bExistPtramBHYT)
                {
                    objChidinhChitiet.BhytChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia) *
                                                   Utility.DecimaltoDbnull(objChidinhChitiet.PtramBhyt) / 100;
                    objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) -
                                                    Utility.DecimaltoDbnull(objChidinhChitiet.BhytChitra);
                }
                else//99% rơi vào nhánh này
                {
                    PTramBHYT = Utility.DecimaltoDbnull(objLuotkham.PtramBhyt);
                    decimal BHCT = 0m;
                    if (objLuotkham.DungTuyen == 1)//BHYT đúng tuyến rơi vào nhánh này dù nội trú ngay ngoại trú
                    {
                        BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                    }
                    else//DV và BHYT trái tuyến
                    {
                        if (objLuotkham.TrangthaiNoitru <= 0 || !noitru)//Đối tượng ngoại trú hoặc Chỉ định ngoại trú-->Lấy phần trăm ngoại trú
                        {
                            BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                        }
                        else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                        if (objChidinhChitiet.DonGia != null)
                        {
                            BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia.Value, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (bhytPtramTraituyennoitru / 100);
                        }
                    }
                    decimal bnct = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) - BHCT;
                    objChidinhChitiet.BhytChitra  = BHCT;
                    objChidinhChitiet.BnhanChitra = bnct;
                }
            }
        }
예제 #2
0
        public static bool CapnhatTrangthaiTutuc(KcbDangkyKcb objDoituong, KcbLuotkham objLuotkham, bool noitru, byte tu_tuc, decimal PTramBHYT)
        {
            try
            {
                byte    TrangthaiBhyt = 1;
                decimal BHYT_PTRAM_TRAITUYENNOITRU = Utility.DecimaltoDbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false), 0m);
                bool    b_ExistPtramBHYT           = false;
                objDoituong.TuTuc = tu_tuc;
                if (!THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb.Value))//Đối tượng DV
                {
                    TrangthaiBhyt     = (byte)0;
                    objDoituong.TuTuc = 0;
                }
                else
                {
                    TrangthaiBhyt = (byte)(globalVariables.gv_blnApdungChedoDuyetBHYT ? 0 : 1);
                }
                if (Utility.Int32Dbnull(objDoituong.TrangthaiHuy, -1) == -1)
                {
                    objDoituong.TrangthaiHuy = 0;
                }

                objDoituong.PtramBhyt    = PTramBHYT;
                objDoituong.PtramBhytGoc = objLuotkham.PtramBhytGoc;
                // objChidinhChitiet.LoaiChietkhau = 0;
                // objChidinhChitiet.TrangthaiBhyt = TrangthaiBhyt;
                //objChidinhChitiet.IdLoaichidinh = 0;//Chưa hiểu trường này-->Cần xem lại
                if (Utility.Int32Dbnull(objDoituong.TuTuc, 0) == 1)
                {
                    objDoituong.BhytChitra  = 0;
                    objDoituong.BnhanChitra = Utility.DecimaltoDbnull(objDoituong.DonGia, 0);
                    objDoituong.PtramBhyt   = 0;
                }
                else
                {
                    if (b_ExistPtramBHYT)
                    {
                        objDoituong.BhytChitra = Utility.DecimaltoDbnull(objDoituong.DonGia) *
                                                 Utility.DecimaltoDbnull(objDoituong.PtramBhyt) / 100;
                        objDoituong.BnhanChitra = Utility.DecimaltoDbnull(objDoituong.DonGia, 0) -
                                                  Utility.DecimaltoDbnull(objDoituong.BhytChitra);
                    }
                    else//99% rơi vào nhánh này
                    {
                        PTramBHYT = Utility.DecimaltoDbnull(objLuotkham.PtramBhyt);
                        decimal BHCT = 0m;
                        if (objLuotkham.DungTuyen == 1)//BHYT đúng tuyến rơi vào nhánh này dù nội trú ngay ngoại trú
                        {
                            BHCT = Utility.DecimaltoDbnull(objDoituong.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                        }
                        else//DV và BHYT trái tuyến
                        {
                            if (objLuotkham.TrangthaiNoitru <= 0 || !noitru)//Đối tượng ngoại trú hoặc Chỉ định ngoại trú-->Lấy phần trăm ngoại trú
                            {
                                BHCT = Utility.DecimaltoDbnull(objDoituong.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                            }
                            else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                            {
                                BHCT = Utility.DecimaltoDbnull(objDoituong.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (BHYT_PTRAM_TRAITUYENNOITRU / 100);
                            }
                        }
                        decimal BNCT = Utility.DecimaltoDbnull(objDoituong.DonGia, 0) - BHCT;
                        objDoituong.BhytChitra  = BHCT;
                        objDoituong.BnhanChitra = BNCT;
                    }
                }
                objDoituong.MarkOld();
                objDoituong.IsNew = false;
                objDoituong.Save();
                return(true);
            }
            catch (Exception ex)
            {
                Utility.CatchException(ex);
                return(false);
            }
        }
예제 #3
0
        public static void GB_TinhPhtramBHYT(KcbChidinhclsChitiet objChidinhChitiet, KcbLichsuDoituongKcb objLichsu, bool noitru, decimal PTramBHYT)
        {
            byte    TrangthaiBhyt = 1;
            decimal BHYT_PTRAM_TRAITUYENNOITRU = Utility.DecimaltoDbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false), 0m);
            bool    b_ExistPtramBHYT           = false;

            if (!THU_VIEN_CHUNG.IsBaoHiem(objLichsu.IdLoaidoituongKcb.Value))//Đối tượng DV
            {
                TrangthaiBhyt           = (byte)0;
                objChidinhChitiet.TuTuc = 0;
            }
            else
            {
                TrangthaiBhyt = (byte)(globalVariables.gv_blnApdungChedoDuyetBHYT ? 0 : 1);
            }
            if (Utility.Int32Dbnull(objChidinhChitiet.TrangthaiHuy, -1) == -1)
            {
                objChidinhChitiet.TrangthaiHuy = 0;
            }
            DmucDichvuclsChitiet obServiceDetail =
                DmucDichvuclsChitiet.FetchByID(Utility.Int32Dbnull(objChidinhChitiet.IdChitietdichvu));

            if (obServiceDetail != null)
            {
                objChidinhChitiet.GiaDanhmuc = Utility.DecimaltoDbnull(obServiceDetail.DonGia);
            }
            objChidinhChitiet.PtramBhyt     = PTramBHYT;
            objChidinhChitiet.PtramBhytGoc  = objLichsu.PtramBhytGoc;
            objChidinhChitiet.LoaiChietkhau = 0;
            objChidinhChitiet.TrangthaiBhyt = TrangthaiBhyt;
            objChidinhChitiet.IdLoaichidinh = 0;//Chưa hiểu trường này-->Cần xem lại
            if (Utility.Int32Dbnull(objChidinhChitiet.TuTuc, 0) == 1)
            {
                objChidinhChitiet.BhytChitra  = 0;
                objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0);
                objChidinhChitiet.PtramBhyt   = 0;
            }
            else
            {
                //Mục tính BHYT đặc biệt để dành sử dụng trong tương lai
                PtramBHYTDacBiet(objChidinhChitiet, objLichsu, 2, ref b_ExistPtramBHYT);
                if (b_ExistPtramBHYT)
                {
                    objChidinhChitiet.BhytChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia) *
                                                   Utility.DecimaltoDbnull(objChidinhChitiet.PtramBhyt) / 100;
                    objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) -
                                                    Utility.DecimaltoDbnull(objChidinhChitiet.BhytChitra);
                }
                else//99% rơi vào nhánh này
                {
                    PTramBHYT = Utility.DecimaltoDbnull(objLichsu.PtramBhyt);
                    decimal BHCT = 0m;
                    if (objLichsu.DungTuyen == 1)//BHYT đúng tuyến rơi vào nhánh này dù nội trú ngay ngoại trú
                    {
                        BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLichsu.PtramBhyt, 0) / 100);
                    }
                    else//DV và BHYT trái tuyến
                    {
                        if (objLichsu.TrangthaiNoitru <= 0 || !noitru)//Đối tượng ngoại trú hoặc Chỉ định ngoại trú-->Lấy phần trăm ngoại trú
                        {
                            BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLichsu.PtramBhyt, 0) / 100);
                        }
                        else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                        {
                            BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia.Value, 0) * (Utility.DecimaltoDbnull(objLichsu.PtramBhytGoc, 0) / 100) * (BHYT_PTRAM_TRAITUYENNOITRU / 100);
                        }
                    }
                    decimal BNCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) - BHCT;
                    objChidinhChitiet.BhytChitra  = BHCT;
                    objChidinhChitiet.BnhanChitra = BNCT;
                }
            }
        }
예제 #4
0
        public static bool CapnhatTrangthaiTutuc(KcbChidinhclsChitiet objChidinhChitiet, KcbLuotkham objLuotkham, bool noitru, byte tu_tuc, decimal PTramBHYT)
        {
            try
            {
                byte    TrangthaiBhyt = 1;
                decimal BHYT_PTRAM_TRAITUYENNOITRU = Utility.DecimaltoDbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false), 0m);
                bool    b_ExistPtramBHYT           = false;
                objChidinhChitiet.TuTuc = tu_tuc;
                if (!THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb.Value))//Đối tượng DV
                {
                    TrangthaiBhyt           = (byte)0;
                    objChidinhChitiet.TuTuc = 0;
                }
                else
                {
                    TrangthaiBhyt = (byte)(globalVariables.gv_blnApdungChedoDuyetBHYT ? 0 : 1);
                }

                if (Utility.Int32Dbnull(objChidinhChitiet.TrangthaiHuy, -1) == -1)
                {
                    objChidinhChitiet.TrangthaiHuy = 0;
                }

                DmucDichvuclsChitiet obServiceDetail =
                    DmucDichvuclsChitiet.FetchByID(Utility.Int32Dbnull(objChidinhChitiet.IdChitietdichvu));
                QheDoituongDichvucl objqhedoituong = new QheDoituongDichvucl();
                if (obServiceDetail != null)
                {
                    if (Utility.Int32Dbnull(objChidinhChitiet.TuTuc, 0) == 1)
                    {
                        objqhedoituong = LayGiaTheoDoiTuong("DV", objChidinhChitiet.IdChitietdichvu,
                                                            objLuotkham.MaKhoaThuchien);
                    }
                    else
                    {
                        objqhedoituong = LayGiaTheoDoiTuong(objLuotkham.MaDoituongKcb, objChidinhChitiet.IdChitietdichvu,
                                                            objLuotkham.MaKhoaThuchien);
                    }
                    // objChidinhChitiet.GiaDanhmuc = Utility.DecimaltoDbnull(obServiceDetail.DonGia);
                    if (objqhedoituong != null)
                    {
                        objChidinhChitiet.GiaDanhmuc    = Utility.DecimaltoDbnull(objqhedoituong.DonGia, 0);
                        objChidinhChitiet.DonGia        = Utility.DecimaltoDbnull(objqhedoituong.DonGia, 0);
                        objChidinhChitiet.MadoituongGia = Utility.sDbnull(objqhedoituong.MaDoituongKcb);
                    }
                }
                objChidinhChitiet.PtramBhyt    = PTramBHYT;
                objChidinhChitiet.PtramBhytGoc = objLuotkham.PtramBhytGoc;
                // objChidinhChitiet.LoaiChietkhau = 0;
                // objChidinhChitiet.TrangthaiBhyt = TrangthaiBhyt;
                //objChidinhChitiet.IdLoaichidinh = 0;//Chưa hiểu trường này-->Cần xem lại
                if (Utility.Int32Dbnull(objChidinhChitiet.TuTuc, 0) == 1)
                {
                    objChidinhChitiet.BhytChitra = 0;
                    if (objqhedoituong != null)
                    {
                        objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objqhedoituong.DonGia, 0);
                    }
                    objChidinhChitiet.PtramBhyt = 0;
                }
                else
                {
                    //Mục tính BHYT đặc biệt để dành sử dụng trong tương lai
                    PtramBHYTDacBiet(objChidinhChitiet, objLuotkham, 2, ref b_ExistPtramBHYT);
                    if (b_ExistPtramBHYT)
                    {
                        objChidinhChitiet.BhytChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia) *
                                                       Utility.DecimaltoDbnull(objChidinhChitiet.PtramBhyt) / 100;
                        objChidinhChitiet.BnhanChitra = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) -
                                                        Utility.DecimaltoDbnull(objChidinhChitiet.BhytChitra);
                    }
                    else//99% rơi vào nhánh này
                    {
                        PTramBHYT = Utility.DecimaltoDbnull(objLuotkham.PtramBhyt);
                        decimal BHCT = 0m;
                        if (objLuotkham.DungTuyen == 1)//BHYT đúng tuyến rơi vào nhánh này dù nội trú ngay ngoại trú
                        {
                            BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                        }
                        else//DV và BHYT trái tuyến
                        {
                            if (objLuotkham.TrangthaiNoitru <= 0 || !noitru)//Đối tượng ngoại trú hoặc Chỉ định ngoại trú-->Lấy phần trăm ngoại trú
                            {
                                BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                            }
                            else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                            {
                                BHCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia.Value, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (BHYT_PTRAM_TRAITUYENNOITRU / 100);
                            }
                        }
                        decimal BNCT = Utility.DecimaltoDbnull(objChidinhChitiet.DonGia, 0) - BHCT;
                        objChidinhChitiet.BhytChitra  = BHCT;
                        objChidinhChitiet.BnhanChitra = BNCT;
                    }
                }
                objChidinhChitiet.MarkOld();
                objChidinhChitiet.IsNew = false;
                objChidinhChitiet.Save();
                return(true);
            }
            catch (Exception ex)
            {
                Utility.CatchException(ex);
                return(false);
            }
        }
예제 #5
0
        /// <summary>
        /// hàm thực hienj việc tính phâm trăm bảo hiểm
        /// </summary>
        /// <param name="objAssignDetail"></param>
        /// <param name="PTramBHYT"></param>
        public static void GB_TinhPhtramBHYT(KcbChidinhclsChitiet objAssignDetail, KcbLuotkham objLuotkham, decimal PTramBHYT)
        {
            byte    TrangthaiBhyt = 1;
            decimal BHYT_PTRAM_TRAITUYENNOITRU = Utility.DecimaltoDbnull(THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_PTRAM_TRAITUYENNOITRU", "0", false), 0m);
            bool    b_ExistPtramBHYT           = false;

            if (!THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb.Value))//(objLuotkham.MaDoituongKcb == "DV")//Tự túc
            {
                TrangthaiBhyt         = (byte)0;
                objAssignDetail.TuTuc = 0;
            }
            else
            {
                TrangthaiBhyt = (byte)(globalVariables.gv_blnApdungChedoDuyetBHYT ? 0 : 1);
            }
            if (Utility.Int32Dbnull(objAssignDetail.TrangthaiHuy, -1) == -1)
            {
                objAssignDetail.TrangthaiHuy = 0;
            }
            DmucDichvuclsChitiet obServiceDetail =
                DmucDichvuclsChitiet.FetchByID(Utility.Int32Dbnull(objAssignDetail.IdChitietchidinh));

            if (obServiceDetail != null)
            {
                objAssignDetail.GiaDanhmuc = Utility.DecimaltoDbnull(obServiceDetail.DonGia);
            }
            objAssignDetail.PtramBhyt     = PTramBHYT;
            objAssignDetail.PtramBhytGoc  = objLuotkham.PtramBhytGoc;
            objAssignDetail.LoaiChietkhau = 0;
            objAssignDetail.TrangthaiBhyt = TrangthaiBhyt;
            objAssignDetail.IdLoaichidinh = 0;

            if (Utility.Int32Dbnull(objAssignDetail.TuTuc, 0) == 1)
            {
                objAssignDetail.BhytChitra  = 0;
                objAssignDetail.BnhanChitra = Utility.DecimaltoDbnull(objAssignDetail.DonGia, 0);
                objAssignDetail.PtramBhyt   = 0;
            }
            else
            {
                PtramBHYTDacBiet(objAssignDetail, objLuotkham, 2, ref b_ExistPtramBHYT);
                if (b_ExistPtramBHYT)
                {
                    objAssignDetail.BhytChitra = Utility.DecimaltoDbnull(objAssignDetail.DonGia) *
                                                 Utility.DecimaltoDbnull(objAssignDetail.PtramBhyt) / 100;
                    objAssignDetail.BnhanChitra = Utility.DecimaltoDbnull(objAssignDetail.DonGia, 0) -
                                                  Utility.DecimaltoDbnull(objAssignDetail.BhytChitra);
                }
                else
                {
                    PTramBHYT = Utility.DecimaltoDbnull(objLuotkham.PtramBhyt);
                    decimal BHCT = 0m;
                    if (objLuotkham.DungTuyen == 1)
                    {
                        BHCT = Utility.DecimaltoDbnull(objAssignDetail.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                    }
                    else
                    {
                        if (objLuotkham.TrangthaiNoitru <= 0)
                        {
                            BHCT = Utility.DecimaltoDbnull(objAssignDetail.DonGia, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhyt, 0) / 100);
                        }
                        else//Nội trú cần tính=đơn giá * % đầu thẻ * % tuyến
                        {
                            BHCT = Utility.DecimaltoDbnull(objAssignDetail.DonGia.Value, 0) * (Utility.DecimaltoDbnull(objLuotkham.PtramBhytGoc, 0) / 100) * (BHYT_PTRAM_TRAITUYENNOITRU / 100);
                        }
                    }
                    decimal BNCT =
                        Utility.DecimaltoDbnull(objAssignDetail.DonGia, 0) -
                        BHCT;
                    objAssignDetail.BhytChitra  = BHCT;
                    objAssignDetail.BnhanChitra = BNCT;
                    //objAssignDetail.BhytChitra = Utility.DecimaltoDbnull(objAssignDetail.DonGia) *
                    //                     Utility.DecimaltoDbnull(PTramBHYT) / 100;
                }
            }
        }