Exemplo n.º 1
0
        public ActionResult CapnhatChitiet(long id_chitiet, decimal PtramBHYT, byte tu_tuc)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    using (SharedDbConnectionScope sh = new SharedDbConnectionScope())
                    {
                        KcbDonthuocChitiet objChitietDonthuoc = KcbDonthuocChitiet.FetchByID(id_chitiet);
                        if (objChitietDonthuoc != null)
                        {
                            if (tu_tuc == 1)
                            {
                                objChitietDonthuoc.BhytChitra  = 0;
                                objChitietDonthuoc.BnhanChitra = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0);
                                objChitietDonthuoc.PtramBhyt   = 0;
                            }
                            else
                            {
                                objChitietDonthuoc.BhytChitra = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia) *
                                                                Utility.DecimaltoDbnull(PtramBHYT) / 100;

                                objChitietDonthuoc.BnhanChitra = Utility.DecimaltoDbnull(objChitietDonthuoc.DonGia, 0) -
                                                                 Utility.DecimaltoDbnull(objChitietDonthuoc.BhytChitra, 0);
                                objChitietDonthuoc.PtramBhyt = Utility.DecimaltoDbnull(PtramBHYT);
                            }
                            objChitietDonthuoc.IsNew = false;
                            objChitietDonthuoc.MarkOld();
                            objChitietDonthuoc.Save();
                        }
                    }
                    scope.Complete();
                    return(ActionResult.Success);
                }
            }
            catch (Exception exception)
            {
                log.Error("Loi trong qua trinh luu don thuoc", exception);
                return(ActionResult.Error);
            }
        }
Exemplo n.º 2
0
        public ActionResult SaoChepDonThuocTheoPhieuDieuTriFullTransaction(KcbDonthuoc objDonthuoc, NoitruPhieudieutri objTreatment, KcbDonthuocChitiet[] arrChitietdonthuoc)
        {
            try
            {
                using (var scope = new TransactionScope())
                {
                    using (var dbscope = new SharedDbConnectionScope())
                    {
                        objDonthuoc.IdPhieudieutri    = objTreatment.IdPhieudieutri;
                        objDonthuoc.IdDonthuocthaythe = -1;
                        objDonthuoc.IdKham            = objTreatment.IdPhieudieutri;
                        objDonthuoc.IdBacsiChidinh    = objTreatment.IdBacsi;
                        objDonthuoc.NgaySua           = null;
                        objDonthuoc.NguoiSua          = null;
                        objDonthuoc.NgayKedon         = Convert.ToDateTime(objTreatment.NgayDieutri);
                        objDonthuoc.Noitru            = 1;
                        NoitruPhanbuonggiuong objPatientDept = NoitruPhanbuonggiuong.FetchByID(objTreatment.IdBuongGiuong);
                        if (objPatientDept != null)
                        {
                            objDonthuoc.IdKhoadieutri  = Utility.Int16Dbnull(objPatientDept.IdKhoanoitru);
                            objDonthuoc.IdBuongNoitru  = Utility.Int16Dbnull(objPatientDept.IdBuong);
                            objDonthuoc.IdGiuongNoitru = Utility.Int16Dbnull(objPatientDept.IdGiuong);
                        }
                        objDonthuoc.NgayXacnhan        = null;
                        objDonthuoc.NgayCapphat        = null;
                        objDonthuoc.TrangThai          = 0;
                        objDonthuoc.TrangthaiThanhtoan = 0;
                        objDonthuoc.KieuDonthuoc       = 0;
                        objDonthuoc.MaKhoaThuchien     = globalVariables.MA_KHOA_THIEN;
                        //objDonthuoc.IdBacsiChidinh = globalVariables.gv_intIDNhanvien;
                        objDonthuoc.MotaThem  = "Sao chép";
                        objDonthuoc.NguoiTao  = globalVariables.UserName;
                        objDonthuoc.NgayTao   = globalVariables.SysDate;
                        objDonthuoc.IpMaytao  = globalVariables.gv_strIPAddress;
                        objDonthuoc.TenMaytao = globalVariables.gv_strComputerName;
                        objDonthuoc.IsNew     = true;
                        objDonthuoc.Save();
                        foreach (var objChitietdonthuoc in arrChitietdonthuoc)
                        {
                            KcbDonthuocChitiet newItem = KcbDonthuocChitiet.FetchByID(objChitietdonthuoc.IdChitietdonthuoc);
                            newItem.IdKham = objTreatment.IdPhieudieutri;

                            newItem.SoluongHuy         = 0;
                            newItem.NgayHuy            = null;
                            newItem.TrangthaiHuy       = 0;
                            newItem.NguoiHuy           = null;
                            newItem.TrangThai          = 0;
                            newItem.SluongLinh         = 0;
                            newItem.SluongSua          = 0;
                            newItem.NgayXacnhan        = null;
                            newItem.IdThanhtoan        = -1;
                            newItem.TrangthaiThanhtoan = 0;
                            newItem.TrangthaiTonghop   = 0;
                            newItem.NgayThanhtoan      = null;
                            newItem.TrangthaiChuyen    = 0;

                            newItem.NgaySua       = null;
                            newItem.NguoiSua      = null;
                            newItem.TileChietkhau = 0;
                            newItem.TienChietkhau = 0;
                            newItem.IdGoi         = -1;
                            newItem.TrongGoi      = 0;



                            newItem.IdDonthuoc = Utility.Int32Dbnull(objDonthuoc.IdDonthuoc);

                            newItem.NguoiTao  = globalVariables.UserName;
                            newItem.NgayTao   = globalVariables.SysDate;
                            newItem.IpMaytao  = globalVariables.gv_strIPAddress;
                            newItem.TenMaytao = globalVariables.gv_strComputerName;

                            newItem.IsNew = true;
                            newItem.Save();
                        }
                    }
                    scope.Complete();
                    return(ActionResult.Success);
                }
            }
            catch (Exception exception)
            {
                return(ActionResult.Error);
            }
        }
Exemplo n.º 3
0
        public ActionResult Tratien(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham, List <Int64> lstIdChitiet)
        {
            decimal PtramBHYT = 0;
            ///tổng tiền hiện tại truyền vào của lần payment đang thực hiện
            decimal v_dblTongtienHuy = 0;
            ///tổng tiền đã thanh toán
            decimal v_TotalPaymentDetail = 0;

            try
            {
                using (var scope = new TransactionScope())
                {
                    using (var sh = new SharedDbConnectionScope())
                    {
                        KcbThanhtoanChitiet[] ArrKcbThanhtoanChitiet_Huy = new Select().From(KcbThanhtoanChitiet.Schema)
                                                                           .Where(KcbThanhtoanChitiet.Columns.IdChitiet).In(lstIdChitiet)
                                                                           .ExecuteAsCollection <KcbThanhtoanChitietCollection>().ToArray <KcbThanhtoanChitiet>();

                        List <int> lstIdThanhtoanTinhtoanlai = (from q in ArrKcbThanhtoanChitiet_Huy
                                                                select q.IdThanhtoan).ToList <int>();

                        v_dblTongtienHuy = TongtienKhongTutuc(ArrKcbThanhtoanChitiet_Huy);
                        KcbThanhtoanCollection lstKcbThanhtoanCollection =
                            new KcbThanhtoanController()
                            .FetchByQuery(
                                KcbThanhtoan.CreateQuery()
                                .AddWhere(KcbThanhtoan.Columns.MaLuotkham, Comparison.Equals, objLuotkham.MaLuotkham)
                                .AND(KcbThanhtoan.Columns.IdBenhnhan, Comparison.Equals, objLuotkham.IdBenhnhan)
                                .AND(KcbThanhtoan.Columns.KieuThanhtoan, Comparison.Equals, objThanhtoan.KieuThanhtoan)
                                .AND(KcbThanhtoan.Columns.TrangThai, Comparison.Equals, 0));//Chỉ lấy về các bản ghi thanh toán thường(0= thường;1= thanh toán hủy(trả lại tiền))
                        //Lấy tổng tiền của các lần thanh toán trước
                        List <KcbThanhtoanChitiet> lstKcbThanhtoanChitiet = new List <KcbThanhtoanChitiet>();

                        foreach (KcbThanhtoan Payment in lstKcbThanhtoanCollection)
                        {
                            KcbThanhtoanChitietCollection lstKcbThanhtoanChitietCollection = new Select().From(KcbThanhtoanChitiet.Schema)
                                                                                             .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(Payment.IdThanhtoan)
                                                                                             .And(KcbThanhtoanChitiet.Columns.TrangthaiHuy).IsEqualTo(0).ExecuteAsCollection
                                                                                             <KcbThanhtoanChitietCollection>();

                            foreach (KcbThanhtoanChitiet _KcbThanhtoanChitiet in lstKcbThanhtoanChitietCollection)
                            {
                                if (_KcbThanhtoanChitiet.TuTuc == 0)
                                {
                                    //Lấy các chi tiết sẽ update lại toàn bộ thông tin bhyt,bn chi trả theo % BHYT mới sau khi đã hủy một số dịch vụ
                                    //Các bản ghi hủy sẽ giữ nguyên thông tin không cần cập nhật
                                    if (!lstIdChitiet.Contains(_KcbThanhtoanChitiet.IdChitiet))
                                    {
                                        lstKcbThanhtoanChitiet.Add(_KcbThanhtoanChitiet);
                                        _KcbThanhtoanChitiet.IsNew = false;
                                        _KcbThanhtoanChitiet.MarkOld();
                                    }
                                    v_TotalPaymentDetail += Utility.Int32Dbnull(_KcbThanhtoanChitiet.SoLuong) *
                                                            Utility.DecimaltoDbnull(_KcbThanhtoanChitiet.DonGia);
                                }
                            }
                        }
                        List <int> lstIdThanhtoanCu = (from q in lstKcbThanhtoanChitiet
                                                       select q.IdThanhtoan).Distinct().ToList <int>();



                        LayThongtinPtramBHYT(v_TotalPaymentDetail - v_dblTongtienHuy, objLuotkham, ref PtramBHYT);
                        //Thêm mới dòng thanh toán hủy
                        objThanhtoan.TrangThai           = 1;
                        objThanhtoan.IdNhanvienThanhtoan = globalVariables.gv_intIDNhanvien;
                        objThanhtoan.NgayThanhtoan       = globalVariables.SysDate;
                        objThanhtoan.MaThanhtoan         = THU_VIEN_CHUNG.TaoMathanhtoan(globalVariables.SysDate);
                        objThanhtoan.IsNew = true;
                        objThanhtoan.Save();
                        //Tính lại thông tin BHYT,BN chi trả cho toàn bộ các chi tiết của BN đã thanh toán mà không bị hủy
                        KcbThanhtoanChitiet[] lsttemp = new List <KcbThanhtoanChitiet>().ToArray <KcbThanhtoanChitiet>();
                        THU_VIEN_CHUNG.TinhPhamTramBHYT(objLuotkham, ref lsttemp, ref lstKcbThanhtoanChitiet, PtramBHYT);
                        decimal TT_BN   = 0m;
                        decimal TT_BHYT = 0m;
                        decimal TT_Chietkhau_Chitiet = 0m;
                        //99% đặt thông số này=1
                        if (THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_TINHLAI_TOANBODICHVU", "1", false) == "1")
                        {
                            foreach (int IdThanhtoan in lstIdThanhtoanCu)
                            {
                                TT_BN   = 0m;
                                TT_BHYT = 0m;
                                TT_Chietkhau_Chitiet = 0m;
                                List <KcbThanhtoanChitiet> _LstChitiet = (from q in lstKcbThanhtoanChitiet
                                                                          select q).ToList <KcbThanhtoanChitiet>();

                                if (_LstChitiet.Count > 0)
                                {
                                    foreach (KcbThanhtoanChitiet objThanhtoanDetail in _LstChitiet)
                                    {
                                        TT_BN += (objThanhtoanDetail.BnhanChitra + objThanhtoanDetail.PhuThu) * objThanhtoanDetail.SoLuong;
                                        if (!Utility.Byte2Bool(objThanhtoanDetail.TuTuc))
                                        {
                                            TT_BHYT += objThanhtoanDetail.BhytChitra * objThanhtoanDetail.SoLuong;
                                        }
                                        TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objThanhtoanDetail.TienChietkhau, 0);
                                        //Lưu lại các thông tin tiền đã được tính toán lại ở thủ tục THU_VIEN_CHUNG.TinhPhamTramBHYT(...)
                                        objThanhtoanDetail.IsNew = false;
                                        objThanhtoanDetail.MarkOld();
                                        objThanhtoanDetail.Save();
                                    }
                                    //Update lại tiền thanh toán
                                    new Update(KcbThanhtoan.Schema)
                                    .Set(KcbThanhtoan.Columns.TongTien).EqualTo(TT_BHYT + TT_BN)
                                    .Set(KcbThanhtoan.Columns.BnhanChitra).EqualTo(TT_BN)
                                    .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT)
                                    .Set(KcbThanhtoan.Columns.MaDoituongKcb).EqualTo(objLuotkham.MaDoituongKcb)
                                    .Set(KcbThanhtoan.Columns.IdDoituongKcb).EqualTo(objLuotkham.IdDoituongKcb)
                                    .Set(KcbThanhtoan.Columns.PtramBhyt).EqualTo(objLuotkham.PtramBhyt)
                                    .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(IdThanhtoan).Execute();
                                    //Update phiếu thu
                                    new Update(KcbPhieuthu.Schema)
                                    .Set(KcbPhieuthu.Columns.SoTien).EqualTo(TT_BN - TT_Chietkhau_Chitiet)
                                    .Set(KcbPhieuthu.Columns.SotienGoc).EqualTo(TT_BN)
                                    .Where(KcbPhieuthu.Columns.IdThanhtoan).IsEqualTo(IdThanhtoan).Execute();
                                }
                            }
                        }
                        //Reset và tính toán các số tiền liên quan đến các bản ghi hủy
                        TT_BN   = 0m;
                        TT_BHYT = 0m;
                        TT_Chietkhau_Chitiet = 0m;
                        //Cập nhật các dòng chi tiết được chọn hủy về trạng thái hủy và các dịch vụ trong các bảng tương ứng theo id_loaithanhtoan
                        foreach (KcbThanhtoanChitiet objKcbThanhtoanChitiet in ArrKcbThanhtoanChitiet_Huy)
                        {
                            TT_BN += (objKcbThanhtoanChitiet.BnhanChitra + objKcbThanhtoanChitiet.PhuThu) * objKcbThanhtoanChitiet.SoLuong;
                            if (!Utility.Byte2Bool(objKcbThanhtoanChitiet.TuTuc))
                            {
                                TT_BHYT += objKcbThanhtoanChitiet.BhytChitra * objKcbThanhtoanChitiet.SoLuong;
                            }
                            TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objKcbThanhtoanChitiet.TienChietkhau, 0);

                            new Update(KcbThanhtoanChitiet.Schema)
                            .Set(KcbThanhtoanChitiet.Columns.TrangthaiHuy).EqualTo(1)
                            .Set(KcbThanhtoanChitiet.Columns.NgayHuy).EqualTo(globalVariables.SysDate)
                            .Set(KcbThanhtoanChitiet.Columns.NguoiHuy).EqualTo(globalVariables.UserName)
                            .Where(KcbThanhtoanChitiet.Columns.IdChitiet).IsEqualTo(objKcbThanhtoanChitiet.IdChitiet).
                            Execute();
                            ///thanh toán khám chữa bệnh))
                            if (objKcbThanhtoanChitiet.IdLoaithanhtoan == 1)
                            {
                                new Update(KcbDangkyKcb.Schema)
                                .Set(KcbDangkyKcb.Columns.TrangthaiThanhtoan).EqualTo(1)
                                .Set(KcbDangkyKcb.Columns.TrangthaiHuy).EqualTo(1)
                                .Where(KcbDangkyKcb.Columns.IdKham).IsEqualTo(objKcbThanhtoanChitiet.IdPhieu).Execute();
                            }
                            ///thah toán phần dịch vụ cận lâm sàng
                            if (objKcbThanhtoanChitiet.IdLoaithanhtoan == 2)
                            {
                                KcbChidinhclsChitiet objKcbChidinhclsChitiet = KcbChidinhclsChitiet.FetchByID(objKcbThanhtoanChitiet.IdChitietdichvu);
                                if (globalVariables.UserName != "ADMIN")
                                {
                                    if (objKcbChidinhclsChitiet != null && objKcbChidinhclsChitiet.TrangThai >= 3)//Đã có kết quả
                                    {
                                        return(ActionResult.AssignIsConfirmed);
                                    }
                                }
                                new Update(KcbChidinhclsChitiet.Schema)
                                .Set(KcbChidinhclsChitiet.Columns.TrangthaiThanhtoan).EqualTo(1)
                                .Set(KcbChidinhclsChitiet.Columns.TrangthaiHuy).EqualTo(1)
                                .Where(KcbChidinhclsChitiet.Columns.IdChitietchidinh).IsEqualTo(objKcbThanhtoanChitiet.IdChitietdichvu)
                                .Execute();
                            }
                            ///thanh toán phần thuốc
                            if (objKcbThanhtoanChitiet.IdLoaithanhtoan == 3)
                            {
                                KcbDonthuocChitiet objKcbDonthuocChitiet = KcbDonthuocChitiet.FetchByID(objKcbThanhtoanChitiet.IdPhieuChitiet);

                                if (globalVariables.UserName != "ADMIN")
                                {
                                    if (objKcbDonthuocChitiet != null && Utility.Byte2Bool(objKcbDonthuocChitiet.TrangThai))
                                    {
                                        return(ActionResult.PresIsConfirmed);
                                    }
                                }
                                new Update(KcbDonthuoc.Schema)
                                .Set(KcbDonthuoc.Columns.TrangThai).EqualTo(0)
                                .Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(objKcbThanhtoanChitiet.IdPhieu).Execute();
                                new Update(KcbDonthuocChitiet.Schema)
                                .Set(KcbDonthuocChitiet.Columns.TrangthaiHuy).EqualTo(1)
                                .Where(KcbDonthuocChitiet.Columns.IdChitietdonthuoc).IsEqualTo(objKcbThanhtoanChitiet.IdPhieuChitiet)
                                .Execute();
                            }
                            //Tạo dữ liệu hủy tiền

                            objKcbThanhtoanChitiet.IdChitiethuy = objKcbThanhtoanChitiet.IdChitiet;//Để biết dòng hủy này hủy cho chi tiết thanh toán nào
                            objKcbThanhtoanChitiet.TrangthaiHuy = 0;
                            objKcbThanhtoanChitiet.NguoiHuy     = null;
                            objKcbThanhtoanChitiet.NgayHuy      = null;
                            objKcbThanhtoanChitiet.IdThanhtoan  = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1);
                            objKcbThanhtoanChitiet.IsNew        = true;
                            objKcbThanhtoanChitiet.Save();
                        }

                        KcbPhieuthu objPhieuthu = new KcbPhieuthu();
                        objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan;

                        objPhieuthu.SoluongChungtugoc    = 1;
                        objPhieuthu.LoaiPhieuthu         = Convert.ToByte(1);//0= phiếu thu tiền;1= phiếu chi
                        objPhieuthu.MaPhieuthu           = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 1);
                        objPhieuthu.NgayThuchien         = globalVariables.SysDate;
                        objPhieuthu.SoTien               = TT_BN - TT_Chietkhau_Chitiet;
                        objPhieuthu.SotienGoc            = TT_BN;
                        objPhieuthu.MaLydoChietkhau      = objThanhtoan.MaLydoChietkhau;
                        objPhieuthu.TienChietkhauchitiet = TT_Chietkhau_Chitiet;
                        objPhieuthu.TienChietkhau        = objThanhtoan.TongtienChietkhau;
                        objPhieuthu.TienChietkhauhoadon  = objPhieuthu.TienChietkhau - objPhieuthu.TienChietkhauchitiet;
                        objPhieuthu.NguoiNop             = globalVariables.UserName;
                        objPhieuthu.TaikhoanCo           = "";
                        objPhieuthu.TaikhoanNo           = "";
                        objPhieuthu.NoiTru               = (byte)objThanhtoan.NoiTru;
                        objPhieuthu.LydoNop              = "Trả tiền bệnh nhân";
                        objPhieuthu.IdKhoaThuchien       = globalVariables.idKhoatheoMay;
                        objPhieuthu.IdNhanvien           = globalVariables.gv_intIDNhanvien;
                        objPhieuthu.IsNew = true;
                        objPhieuthu.Save();

                        new Update(KcbThanhtoan.Schema)
                        .Set(KcbThanhtoan.Columns.TongTien).EqualTo(TT_BHYT + TT_BN)
                        .Set(KcbThanhtoan.Columns.BnhanChitra).EqualTo(TT_BN)
                        .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT)
                        .Set(KcbThanhtoan.Columns.MaDoituongKcb).EqualTo(objLuotkham.MaDoituongKcb)
                        .Set(KcbThanhtoan.Columns.IdDoituongKcb).EqualTo(objLuotkham.IdDoituongKcb)
                        .Set(KcbThanhtoan.Columns.PtramBhyt).EqualTo(objLuotkham.PtramBhyt)
                        .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute();
                    }
                    scope.Complete();
                    return(ActionResult.Success);
                }
            }
            catch (Exception exception)
            {
                log.Error("Loi trong qua trinh tra tien lai:{0}", exception.ToString());
                return(ActionResult.Error);
            }
        }