public ActionResult UpdateDataPhieuThu(KcbPhieuthu objPhieuthu, KcbThanhtoanChitiet[] arrPaymentDetail) { try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { StoredProcedure sp = SPs.KcbThanhtoanThemmoiPhieuthu( objPhieuthu.MaPhieuthu, objPhieuthu.IdThanhtoan, objPhieuthu.NgayThuchien, objPhieuthu.NguoiNop, objPhieuthu.LydoNop, objPhieuthu.SoTien, objPhieuthu.SotienGoc, objPhieuthu.TienChietkhau, objPhieuthu.TienChietkhauchitiet, objPhieuthu.TienChietkhauhoadon, objPhieuthu.SoluongChungtugoc, objPhieuthu.TaikhoanNo, objPhieuthu.TaikhoanCo, objPhieuthu.LoaiPhieuthu, globalVariables.UserName, globalVariables.SysDate, globalVariables.gv_intIDNhanvien, globalVariables.idKhoatheoMay, globalVariables.UserName, globalVariables.SysDate); sp.Execute(); foreach (KcbThanhtoanChitiet objThanhtoanDetail in arrPaymentDetail) { new Update(KcbThanhtoanChitiet.Schema) .Set(KcbThanhtoanChitiet.Columns.SttIn).EqualTo(objThanhtoanDetail.SttIn) // .Set(KcbThanhtoanChitiet.Columns.PhuThu).EqualTo(objThanhtoanDetail.PhuThu) .Where(KcbThanhtoanChitiet.Columns.IdChitiet).IsEqualTo( objThanhtoanDetail.IdChitiet).Execute(); log.Info("Cạp nhạp lại thong tin cua voi ma ID=" + objThanhtoanDetail.IdChitiet); } new Update(KcbThanhtoan.Schema) .Set(KcbThanhtoan.Columns.NguoiIn).EqualTo(globalVariables.UserName) .Set(KcbThanhtoan.Columns.NgayIn).EqualTo(globalVariables.SysDate) .Set(KcbThanhtoan.Columns.TrangthaiIn).EqualTo(1) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objPhieuthu.IdThanhtoan).Execute(); } scope.Complete(); return ActionResult.Success; } } catch (Exception exception) { log.Error("Ban ra loi Exception={0}", exception); return ActionResult.Error; } }
private KcbPhieuthu CreatePhieuThu(int _Payment_ID, decimal TONG_TIEN) { var objPhieuThu = new KcbPhieuthu(); objPhieuThu.IdThanhtoan = _Payment_ID; objPhieuThu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0); objPhieuThu.SoluongChungtugoc = 1; objPhieuThu.LoaiPhieuthu = Convert.ToByte(0); objPhieuThu.NgayThuchien = globalVariables.SysDate; objPhieuThu.SoTien = TONG_TIEN; objPhieuThu.NguoiNop = globalVariables.UserName; objPhieuThu.IdNhanvien = globalVariables.gv_intIDNhanvien; objPhieuThu.IdKhoaThuchien = globalVariables.idKhoatheoMay; objPhieuThu.TaikhoanCo = ""; objPhieuThu.TaikhoanNo = ""; objPhieuThu.LydoNop = "Thu phí KCB bệnh nhân"; objPhieuThu.NguoiTao = globalVariables.UserName; objPhieuThu.NgayTao = globalVariables.SysDate; return objPhieuThu; }
/// <summary> /// Trả lại tiền /// </summary> /// <param name="objThanhtoan"></param> /// <param name="objLuotkham"></param> /// <param name="objArrPaymentDetail"></param> /// <returns></returns> public ActionResult Tratien(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham,List<Int64>lstIdChitiet,string noidunghuy,string lydotratien) { 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()) { List<KcbThanhtoanChitiet> ArrKcbThanhtoanChitiet_Huy = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdChitiet).In(lstIdChitiet) .ExecuteAsCollection<KcbThanhtoanChitietCollection>().ToList<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 List<KcbThanhtoanChitiet> lsttemp = new List<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("KCB_THANHTOAN_TINHLAITONGTIEN_CACTHANHTOAN_BITRALAITIEN", "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 where q.IdThanhtoan == IdThanhtoan 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.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.IdPhieuChitiet); if (globalVariables.UserName != "ADMIN") { if (objKcbChidinhclsChitiet != null && objKcbChidinhclsChitiet.TrangThai>= 3)//Đã có kết quả { return ActionResult.AssignIsConfirmed; } } new Update(KcbChidinhclsChitiet.Schema) .Set(KcbChidinhclsChitiet.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbChidinhclsChitiet.Columns.IdChitietchidinh).IsEqualTo(objKcbThanhtoanChitiet.IdPhieuChitiet) .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.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham; objPhieuthu.NoiDung = noidunghuy; 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 = lydotratien; 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; } }
public ActionResult UpdateDataPhieuThu(KcbPhieuthu objPhieuthu) { try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { StoredProcedure sp = SPs.KcbThanhtoanThemmoiPhieuthu(objPhieuthu.MaPhieuthu, objPhieuthu.IdThanhtoan, objPhieuthu.NgayThuchien, objPhieuthu.NguoiNop, objPhieuthu.LydoNop, objPhieuthu.SoTien, objPhieuthu.SotienGoc, objPhieuthu.TienChietkhau, objPhieuthu.TienChietkhauchitiet, objPhieuthu.TienChietkhauhoadon, objPhieuthu.SoluongChungtugoc, objPhieuthu.TaikhoanNo, objPhieuthu.TaikhoanCo, objPhieuthu.LoaiPhieuthu, globalVariables.UserName, globalVariables.SysDate, globalVariables.gv_intIDNhanvien, globalVariables.idKhoatheoMay, globalVariables.UserName, globalVariables.SysDate); sp.Execute(); new Update(KcbThanhtoan.Schema) .Set(KcbThanhtoan.Columns.NguoiIn).EqualTo(globalVariables.UserName) .Set(KcbThanhtoan.Columns.NgayIn).EqualTo(globalVariables.SysDate) .Set(KcbThanhtoan.Columns.TrangthaiIn).EqualTo(1) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objPhieuthu.IdThanhtoan).Execute(); } scope.Complete(); return ActionResult.Success; } } catch (Exception exception) { log.InfoException("Ban ra loi exception=", exception); return ActionResult.Error; } }
public ActionResult Payment4SelectedItems_Ao(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham, List<KcbThanhtoanChitiet> objArrPaymentDetail, ref int id_thanhtoan, long IdHdonLog, bool Layhoadondo) { 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_dblTongtienDCT = 0; ///tổng tiền đã thanh toán decimal v_TotalPaymentDetail = 0; try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { ///lấy tổng số Payment của mang truyền vào của pay ment hiện tại v_dblTongtienDCT = TongtienKhongTutuc(objArrPaymentDetail); KcbThanhtoanCollection paymentCollection = 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)); //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 paymentCollection) { KcbThanhtoanChitietCollection paymentDetailCollection = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(Payment.IdThanhtoan) .And(KcbThanhtoanChitiet.Columns.TrangthaiHuy).IsEqualTo(0).ExecuteAsCollection <KcbThanhtoanChitietCollection>(); foreach (KcbThanhtoanChitiet paymentDetail in paymentDetailCollection) { if (paymentDetail.TuTuc == 0) { lstKcbThanhtoanChitiet.Add(paymentDetail); v_TotalPaymentDetail += Utility.Int32Dbnull(paymentDetail.SoLuong) * Utility.DecimaltoDbnull(paymentDetail.DonGia); } } } //Tính toán lại phần trăm BHYT chủ yếu liên quan đến phần lương cơ bản. //Phần trăm này có thể bị biến đổi và khác với % trong bảng lượt khám LayThongtinPtramBHYT(v_dblTongtienDCT + v_TotalPaymentDetail, objLuotkham, ref PtramBHYT); objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(Convert.ToDateTime(objThanhtoan.NgayThanhtoan)); objThanhtoan.IsNew = true; objThanhtoan.Save(); //Tính lại Bnhan chi trả và BHYT chi trả THU_VIEN_CHUNG.TinhPhamTramBHYT(objLuotkham, ref objArrPaymentDetail,ref lstKcbThanhtoanChitiet, PtramBHYT); foreach (KcbThanhtoanChitiet objThanhtoanDetail in lstKcbThanhtoanChitiet) { objThanhtoanDetail.IsNew = false; objThanhtoanDetail.MarkOld(); objThanhtoanDetail.Save(); } decimal TT_BN = 0m; decimal TT_BHYT = 0m; decimal TT_Chietkhau_Chitiet = 0m; foreach (KcbThanhtoanChitiet objThanhtoanDetail in objArrPaymentDetail) { TT_BN += (objThanhtoanDetail.BnhanChitra + objThanhtoanDetail.PhuThu) * objThanhtoanDetail.SoLuong; TT_BHYT += objThanhtoanDetail.BhytChitra * objThanhtoanDetail.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objThanhtoanDetail.TienChietkhau, 0); objThanhtoanDetail.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); objThanhtoanDetail.IsNew = true; objThanhtoanDetail.Save(); UpdatePaymentStatus(objThanhtoan, objThanhtoanDetail); } #region Hoadondo if (Layhoadondo) { int record = -1; if (IdHdonLog > 0) { record = new Delete().From(HoadonLog.Schema) .Where(HoadonLog.Columns.IdHdonLog) .IsEqualTo(IdHdonLog) .Execute(); if (record <= 0) { Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin serie hóa đơn đã hủy để cấp lại cho lần thanh toán này."); return ActionResult.Error; } } var obj = new HoadonLog(); obj.IdThanhtoan = objThanhtoan.IdThanhtoan; obj.TongTien = objThanhtoan.TongTien - Utility.DecimaltoDbnull(objThanhtoan.TongtienChietkhau, 0); obj.IdBenhnhan = objThanhtoan.IdBenhnhan; obj.MaLuotkham = objThanhtoan.MaLuotkham; obj.MauHoadon = objThanhtoan.MauHoadon; obj.KiHieu = objThanhtoan.KiHieu; obj.IdCapphat = objThanhtoan.IdCapphat.Value; obj.MaQuyen = objThanhtoan.MaQuyen; obj.Serie = objThanhtoan.Serie; obj.MaNhanvien = globalVariables.UserName; obj.MaLydo = "0"; obj.NgayIn = globalVariables.SysDate; obj.TrangThai = 0; obj.IsNew = true; obj.Save(); IdHdonLog = obj.IdHdonLog;//Để update lại vào bảng thanh toán new Update(HoadonCapphat.Schema).Set(HoadonCapphat.Columns.SerieHientai) .EqualTo(objThanhtoan.Serie) .Set(HoadonCapphat.Columns.TrangThai).EqualTo(1) .Where(HoadonCapphat.Columns.IdCapphat).IsEqualTo(obj.IdCapphat) .Execute(); } #endregion KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham; objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan; objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0); objPhieuthu.SoluongChungtugoc = 1; objPhieuthu.LoaiPhieuthu = Convert.ToByte(0); 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.KieuThanhtoan; objPhieuthu.LydoNop = "Thu tiền bệnh nhân"; objPhieuthu.IdKhoaThuchien = globalVariables.idKhoatheoMay; objPhieuthu.IdNhanvien = globalVariables.gv_intIDNhanvien; objPhieuthu.IsNew = true; objPhieuthu.Save(); objLuotkham.IsNew = false; objLuotkham.MarkOld(); objLuotkham.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) .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute(); } scope.Complete(); id_thanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); return ActionResult.Success; } } catch (Exception ex) { log.Error("Loi thuc hien thanh toan:" + ex.ToString()); return ActionResult.Error; } }
public ActionResult ThanhtoanDonthuoctaiquay(KcbThanhtoan objThanhtoan, KcbDanhsachBenhnhan objBenhnhan,List< KcbThanhtoanChitiet> objArrPaymentDetail, ref int id_thanhtoan, long IdHdonLog, bool Layhoadondo) { 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_dblTongtienDCT = 0; ///tổng tiền đã thanh toán decimal v_TotalPaymentDetail = 0; try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { ///lấy tổng số Payment của mang truyền vào của pay ment hiện tại v_dblTongtienDCT = TongtienKhongTutuc(objArrPaymentDetail); KcbThanhtoanCollection paymentCollection = new KcbThanhtoanController() .FetchByQuery( KcbThanhtoan.CreateQuery() .AddWhere //(KcbThanhtoan.Columns.MaLuotkham, Comparison.Equals, objLuotkham.MaLuotkham).AND (KcbThanhtoan.Columns.IdBenhnhan, Comparison.Equals, objBenhnhan.IdBenhnhan) .AND(KcbThanhtoan.Columns.TrangThai, Comparison.Equals, 0) .AND(KcbThanhtoan.Columns.KieuThanhtoan, Comparison.Equals, 0) .AND(KcbThanhtoan.Columns.TrangThai, Comparison.Equals, 0)); //Lấy tổng tiền của các lần thanh toán trước int id_donthuoc = -1; foreach (KcbThanhtoan Payment in paymentCollection) { KcbThanhtoanChitietCollection paymentDetailCollection = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(Payment.IdThanhtoan) .And(KcbThanhtoanChitiet.Columns.TrangthaiHuy).IsEqualTo(0).ExecuteAsCollection <KcbThanhtoanChitietCollection>(); foreach (KcbThanhtoanChitiet paymentDetail in paymentDetailCollection) { if (id_donthuoc == -1) id_donthuoc = paymentDetail.IdPhieu; if (paymentDetail.TuTuc == 0) v_TotalPaymentDetail += Utility.Int32Dbnull(paymentDetail.SoLuong) * Utility.DecimaltoDbnull(paymentDetail.DonGia); } } //LayThongtinPtramBHYT(v_dblTongtienDCT + v_TotalPaymentDetail, objLuotkham, ref PtramBHYT); objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(Convert.ToDateTime(objThanhtoan.NgayThanhtoan)); objThanhtoan.IsNew = true; objThanhtoan.Save(); if (id_donthuoc == -1) id_donthuoc = objArrPaymentDetail[0].IdPhieu; KcbDonthuoc objDonthuoc = KcbDonthuoc.FetchByID(id_donthuoc); KcbDonthuocChitietCollection lstChitiet = new Select().From(KcbDonthuoc.Schema).Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(id_donthuoc).ExecuteAsCollection<KcbDonthuocChitietCollection>(); ActionResult actionResult = ActionResult.Success; if (objDonthuoc != null && lstChitiet.Count>0) { if (!XuatThuoc.InValiKiemTraDonThuoc(lstChitiet,(byte)0)) return ActionResult.NotEnoughDrugInStock; actionResult = new XuatThuoc().LinhThuocBenhNhan(id_donthuoc, Utility.Int16Dbnull(lstChitiet[0].IdKho, 0), globalVariables.SysDate); switch (actionResult) { case ActionResult.Success: break; case ActionResult.Error: return actionResult; } } //Tính lại Bnhan chi trả và BHYT chi trả //objArrPaymentDetail = THU_VIEN_CHUNG.TinhPhamTramBHYT(objArrPaymentDetail, PtramBHYT); decimal TT_BN = 0m; decimal TT_BHYT = 0m; decimal TT_Chietkhau_Chitiet = 0m; foreach (KcbThanhtoanChitiet objThanhtoanDetail in objArrPaymentDetail) { TT_BN += (objThanhtoanDetail.BnhanChitra + objThanhtoanDetail.PhuThu) * objThanhtoanDetail.SoLuong; TT_BHYT += objThanhtoanDetail.BhytChitra * objThanhtoanDetail.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objThanhtoanDetail.TienChietkhau, 0); objThanhtoanDetail.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); objThanhtoanDetail.IsNew = true; objThanhtoanDetail.Save(); UpdatePaymentStatus(objThanhtoan, objThanhtoanDetail); } #region Hoadondo if (Layhoadondo) { int record = -1; if (IdHdonLog > 0) { record = new Delete().From(HoadonLog.Schema) .Where(HoadonLog.Columns.IdHdonLog) .IsEqualTo(IdHdonLog) .Execute(); if (record <= 0) { Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin serie hóa đơn đã hủy để cấp lại cho lần thanh toán này."); return ActionResult.Error; } } var obj = new HoadonLog(); obj.IdThanhtoan = objThanhtoan.IdThanhtoan; obj.TongTien = objThanhtoan.TongTien - Utility.DecimaltoDbnull(objThanhtoan.TongtienChietkhau, 0); obj.IdBenhnhan = objThanhtoan.IdBenhnhan; obj.MaLuotkham = objThanhtoan.MaLuotkham; obj.MauHoadon = objThanhtoan.MauHoadon; obj.KiHieu = objThanhtoan.KiHieu; obj.IdCapphat = objThanhtoan.IdCapphat.Value; obj.MaQuyen = objThanhtoan.MaQuyen; obj.Serie = objThanhtoan.Serie; obj.MaNhanvien = globalVariables.UserName; obj.MaLydo = "0"; obj.NgayIn = globalVariables.SysDate; obj.TrangThai = 0; obj.IsNew = true; obj.Save(); IdHdonLog = obj.IdHdonLog;//Để update lại vào bảng thanh toán new Update(HoadonCapphat.Schema).Set(HoadonCapphat.Columns.SerieHientai) .EqualTo(objThanhtoan.Serie) .Set(HoadonCapphat.Columns.TrangThai).EqualTo(1) .Where(HoadonCapphat.Columns.IdCapphat).IsEqualTo(obj.IdCapphat) .Execute(); } #endregion KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham; objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan; objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0); objPhieuthu.SoluongChungtugoc = 1; objPhieuthu.LoaiPhieuthu = Convert.ToByte(0); 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.LydoNop = "Thu 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.IdHdonLog).EqualTo(IdHdonLog) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute(); } scope.Complete(); id_thanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); return ActionResult.Success; } } catch (Exception ex) { log.Error("Loi thuc hien thanh toan:" + ex.ToString()); return ActionResult.Error; } }
public void Insert(string MaPhieuthu,long IdThanhtoan,DateTime NgayThuchien,string NguoiNop,string LydoNop,decimal SoTien,decimal? SotienGoc,string MaLydoChietkhau,decimal? TienChietkhauchitiet,decimal? TienChietkhau,decimal? TienChietkhauhoadon,short? SoluongChungtugoc,string TaikhoanNo,string TaikhoanCo,byte? LoaiPhieuthu,short? IdNhanvien,short? IdKhoaThuchien,string NguoiTao,DateTime? NgayTao,string NguoiSua,DateTime? NgaySua) { KcbPhieuthu item = new KcbPhieuthu(); item.MaPhieuthu = MaPhieuthu; item.IdThanhtoan = IdThanhtoan; item.NgayThuchien = NgayThuchien; item.NguoiNop = NguoiNop; item.LydoNop = LydoNop; item.SoTien = SoTien; item.SotienGoc = SotienGoc; item.MaLydoChietkhau = MaLydoChietkhau; item.TienChietkhauchitiet = TienChietkhauchitiet; item.TienChietkhau = TienChietkhau; item.TienChietkhauhoadon = TienChietkhauhoadon; item.SoluongChungtugoc = SoluongChungtugoc; item.TaikhoanNo = TaikhoanNo; item.TaikhoanCo = TaikhoanCo; item.LoaiPhieuthu = LoaiPhieuthu; item.IdNhanvien = IdNhanvien; item.IdKhoaThuchien = IdKhoaThuchien; item.NguoiTao = NguoiTao; item.NgayTao = NgayTao; item.NguoiSua = NguoiSua; item.NgaySua = NgaySua; item.Save(UserName); }
/// <summary> /// /// </summary> /// <param name="objThanhtoan"></param> /// <param name="objLuotkham"></param> /// <param name="objArrPaymentDetail"></param> /// <param name="id_thanhtoan"></param> /// <param name="IdHdonLog"></param> /// <param name="Layhoadondo"></param> /// <param name="TongtienBNchitra"></param> /// <returns></returns> public ActionResult Payment4SelectedItems(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham, List<KcbThanhtoanChitiet> objArrPaymentDetail, ref int id_thanhtoan, long IdHdonLog, bool Layhoadondo, ref decimal TongtienBNchitra) { 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_dblTongtienDCT = 0; ///tổng tiền đã thanh toán decimal v_TotalPaymentDetail = 0; try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { if (Utility.Byte2Bool(objThanhtoan.NoiTru)) { if (THU_VIEN_CHUNG.Laygiatrithamsohethong("NOITRU_TUDONGHOANUNG_KHITHANHTOANNOITRU", "0", false) == "1") { SPs.NoitruHoanung(objLuotkham.MaLuotkham, objLuotkham.IdBenhnhan, objThanhtoan.NgayThanhtoan, globalVariables.gv_intIDNhanvien,globalVariables.UserName, (int)objLuotkham.IdKhoanoitru, (long)objLuotkham.IdRavien, (int)objLuotkham.IdBuong, (int)objLuotkham.IdGiuong).Execute(); } } ///Tính tổng tiền đồng chi trả v_dblTongtienDCT = TongtienKhongTutuc(objArrPaymentDetail); KcbThanhtoanCollection paymentCollection = 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 paymentCollection) { KcbThanhtoanChitietCollection paymentDetailCollection = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).IsEqualTo(Payment.IdThanhtoan) .And(KcbThanhtoanChitiet.Columns.NoiTru).IsEqualTo(objThanhtoan.NoiTru) .And(KcbThanhtoanChitiet.Columns.TrangthaiHuy).IsEqualTo(0).ExecuteAsCollection <KcbThanhtoanChitietCollection>(); foreach (KcbThanhtoanChitiet paymentDetail in paymentDetailCollection) { if (paymentDetail.TuTuc == 0) { lstKcbThanhtoanChitiet.Add(paymentDetail); paymentDetail.IsNew = false; paymentDetail.MarkOld(); v_TotalPaymentDetail += Utility.Int32Dbnull(paymentDetail.SoLuong) * Utility.DecimaltoDbnull(paymentDetail.DonGia); } } } List<int> lstIdThanhtoan = (from q in lstKcbThanhtoanChitiet select q.IdThanhtoan).ToList<int>(); //Tính toán lại phần trăm BHYT chủ yếu liên quan đến phần lương cơ bản. //Phần trăm này có thể bị biến đổi và khác với % trong các bảng dịch vụ LayThongtinPtramBHYT(v_dblTongtienDCT + v_TotalPaymentDetail, objLuotkham, ref PtramBHYT); objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(Convert.ToDateTime(objThanhtoan.NgayThanhtoan)); objThanhtoan.IdLoaidoituongKcb = objLuotkham.IdLoaidoituongKcb; objThanhtoan.IsNew = true; objThanhtoan.Save(); //Tính lại Bnhan chi trả và BHYT chi trả THU_VIEN_CHUNG.TinhPhamTramBHYT(objLuotkham, ref objArrPaymentDetail, ref lstKcbThanhtoanChitiet,PtramBHYT); decimal TT_BN = 0m; decimal TT_BHYT = 0m; decimal TT_Chietkhau_Chitiet = 0m; if (THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_TINHLAI_TOANBODICHVU", "1", false) == "1") { foreach (int IdThanhtoan in lstIdThanhtoan) { 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); 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) .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog) .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 để không bị cộng dồn với các thanh toán cũ TT_BN = 0m; TT_BHYT = 0m; TT_Chietkhau_Chitiet = 0m; foreach (KcbThanhtoanChitiet objThanhtoanDetail in objArrPaymentDetail) { 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); objThanhtoanDetail.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); objThanhtoanDetail.IsNew = true; objThanhtoanDetail.Save(); UpdatePaymentStatus(objThanhtoan, objThanhtoanDetail); } TongtienBNchitra = TT_BN; #region Hoadondo if (Layhoadondo) { int record = -1; if (IdHdonLog > 0) { record = new Delete().From(HoadonLog.Schema) .Where(HoadonLog.Columns.IdHdonLog) .IsEqualTo(IdHdonLog) .Execute(); if (record <= 0) { Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin serie hóa đơn đã hủy để cấp lại cho lần thanh toán này."); return ActionResult.Error; } } var obj = new HoadonLog(); obj.IdThanhtoan = objThanhtoan.IdThanhtoan; obj.TongTien = objThanhtoan.TongTien - Utility.DecimaltoDbnull(objThanhtoan.TongtienChietkhau, 0); obj.IdBenhnhan = objThanhtoan.IdBenhnhan; obj.MaLuotkham = objThanhtoan.MaLuotkham; obj.MauHoadon = objThanhtoan.MauHoadon; obj.KiHieu = objThanhtoan.KiHieu; obj.IdCapphat = objThanhtoan.IdCapphat.Value; obj.MaQuyen = objThanhtoan.MaQuyen; obj.Serie = objThanhtoan.Serie; obj.MaNhanvien = globalVariables.UserName; obj.MaLydo = "0"; obj.NgayIn = globalVariables.SysDate; obj.TrangThai = 0; obj.IsNew = true; obj.Save(); IdHdonLog = obj.IdHdonLog;//Để update lại vào bảng thanh toán new Update(HoadonCapphat.Schema).Set(HoadonCapphat.Columns.SerieHientai) .EqualTo(objThanhtoan.Serie) .Set(HoadonCapphat.Columns.TrangThai).EqualTo(1) .Where(HoadonCapphat.Columns.IdCapphat).IsEqualTo(obj.IdCapphat) .Execute(); } #endregion KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham; objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan; objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0); objPhieuthu.SoluongChungtugoc = 1; objPhieuthu.LoaiPhieuthu = Convert.ToByte(0); 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 = "Thu 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) .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute(); if (Utility.Byte2Bool(objThanhtoan.NoiTru) && Utility.ByteDbnull(objLuotkham.TrangthaiNoitru,0)>=2) new Update(KcbLuotkham.Schema).Set(KcbLuotkham.Columns.TthaiThanhtoannoitru).EqualTo(1) .Where(KcbLuotkham.Columns.IdBenhnhan).IsEqualTo(objLuotkham.IdBenhnhan) .And(KcbLuotkham.Columns.MaLuotkham).IsEqualTo(objLuotkham.MaLuotkham) .Execute(); } scope.Complete(); id_thanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); return ActionResult.Success; } } catch (Exception ex) { log.Error("Loi thuc hien thanh toan:" + ex.ToString()); return ActionResult.Error; } }
/// <summary> /// Trả lại tiền /// </summary> /// <param name="objThanhtoan"></param> /// <param name="objLuotkham"></param> /// <param name="objArrPaymentDetail"></param> /// <returns></returns> public ActionResult Tratien(KcbThanhtoan objPhieuchi, KcbLuotkham objLuotkham, List<Int64> lstIdChitiet, string malydohuy, string noidunghuy, string lydotratien) { 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()) { decimal TT_BN = 0m; decimal TT_BNCT = 0m; decimal TT_PT = 0m; decimal TT_TT = 0m; decimal TT_BHYT = 0m; decimal TT_Chietkhau_Chitiet = 0m; List<KcbThanhtoanChitiet> ArrKcbThanhtoanChitiet_Huy = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdChitiet).In(lstIdChitiet) .ExecuteAsCollection<KcbThanhtoanChitietCollection>().ToList<KcbThanhtoanChitiet>(); //Thêm mới dòng thanh toán hủy objPhieuchi.KieuThanhtoan = 1; objPhieuchi.IdNhanvienThanhtoan = globalVariables.gv_intIDNhanvien; objPhieuchi.NgayThanhtoan = globalVariables.SysDate; objPhieuchi.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(globalVariables.SysDate); objPhieuchi.MaLydoHuy = malydohuy; objPhieuchi.IsNew = true; objPhieuchi.Save(); //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_BNCT = 0m; TT_PT = 0m; TT_TT = 0m; TT_BHYT = 0m; TT_Chietkhau_Chitiet = 0; //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) { if (!Utility.Byte2Bool(objKcbThanhtoanChitiet.TuTuc)) TT_BHYT += objKcbThanhtoanChitiet.BhytChitra * objKcbThanhtoanChitiet.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objKcbThanhtoanChitiet.TienChietkhau, 0); TT_PT += objKcbThanhtoanChitiet.PhuThu * objKcbThanhtoanChitiet.SoLuong; if (Utility.Byte2Bool(objKcbThanhtoanChitiet.TuTuc)) TT_TT += objKcbThanhtoanChitiet.BnhanChitra * objKcbThanhtoanChitiet.SoLuong; else TT_BNCT += objKcbThanhtoanChitiet.BnhanChitra * objKcbThanhtoanChitiet.SoLuong; ///Phí Khám chữa bệnh)) if (objKcbThanhtoanChitiet.IdLoaithanhtoan == 1) { new Update(KcbDangkyKcb.Schema) .Set(KcbDangkyKcb.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbDangkyKcb.Columns.IdKham).IsEqualTo(objKcbThanhtoanChitiet.IdPhieu).Execute(); } ///Dịch vụ cận lâm sàng if (objKcbThanhtoanChitiet.IdLoaithanhtoan == 2) { KcbChidinhclsChitiet objKcbChidinhclsChitiet = KcbChidinhclsChitiet.FetchByID(objKcbThanhtoanChitiet.IdPhieuChitiet); if (globalVariables.UserName != "ADMIN") { if (objKcbChidinhclsChitiet != null && objKcbChidinhclsChitiet.TrangThai >= 3)//Đã có kết quả { return ActionResult.AssignIsConfirmed; } } new Update(KcbChidinhclsChitiet.Schema) .Set(KcbChidinhclsChitiet.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbChidinhclsChitiet.Columns.IdChitietchidinh).IsEqualTo(objKcbThanhtoanChitiet.IdPhieuChitiet) .Execute(); } ///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.IdThanhtoanhuy = objPhieuchi.IdThanhtoan;//Để biết dòng hủy này hủy cho chi tiết thanh toán nào objKcbThanhtoanChitiet.TrangthaiHuy = 1; objKcbThanhtoanChitiet.IsNew = false; objKcbThanhtoanChitiet.MarkOld(); objKcbThanhtoanChitiet.Save(); } TT_BN += TT_PT + TT_BNCT + TT_TT; //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_BNCT) .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT) .Set(KcbThanhtoan.Columns.PhuThu).EqualTo(TT_PT) .Set(KcbThanhtoan.Columns.TuTuc).EqualTo(TT_TT) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objPhieuchi.IdThanhtoan).Execute(); KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdThanhtoan = objPhieuchi.IdThanhtoan; objPhieuthu.IdBenhnhan = objPhieuchi.IdBenhnhan; objPhieuthu.MaLuotkham = objPhieuchi.MaLuotkham; objPhieuthu.NoiDung = noidunghuy; 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 = objPhieuchi.MaLydoChietkhau; objPhieuthu.TienChietkhauchitiet = TT_Chietkhau_Chitiet; objPhieuthu.TienChietkhau = objPhieuchi.TongtienChietkhau; objPhieuthu.TienChietkhauhoadon = objPhieuthu.TienChietkhau - objPhieuthu.TienChietkhauchitiet; objPhieuthu.NguoiNop = globalVariables.UserName; objPhieuthu.TaikhoanCo = ""; objPhieuthu.TaikhoanNo = ""; objPhieuthu.NoiTru = (byte)objPhieuchi.NoiTru; objPhieuthu.LydoNop = lydotratien; objPhieuthu.IdKhoaThuchien = globalVariables.idKhoatheoMay; objPhieuthu.IdNhanvien = globalVariables.gv_intIDNhanvien; objPhieuthu.IsNew = true; objPhieuthu.Save(); //Kết thúc tạo thông tin phiếu trả tiền(Phiếu chi)-->Kế tiếp cần tính toán lại % BHYT và tiền chênh lệch cho đối tượng BHYT //Riêng đối tượng dịch vụ Giữ nguyên các giá trị thanh toán(Thực thu= Tổng thanh toán-Tổng trả lại) if (THU_VIEN_CHUNG.IsBaoHiem(objLuotkham.IdLoaidoituongKcb)) { v_dblTongtienHuy = TongtienKhongTutuc(ArrKcbThanhtoanChitiet_Huy); //Thường chỉ trả về 1 bản ghi thanh toán duy nhất vì là đối tượng BHYT 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, 0) ); List<long> lstIdThanhtoanAll = (from q in lstKcbThanhtoanCollection select q.IdThanhtoan).Distinct().ToList<long>(); //Biến chứa danh sách tất cả các chi tiết dùng để tính lại tổng tiền thanh toán cho thanh toán có bản ghi bị hủy List<KcbThanhtoanChitiet> lstKcbThanhtoanChitiet_Tatca = new List<KcbThanhtoanChitiet>(); if (lstIdThanhtoanAll.Count>0) lstKcbThanhtoanChitiet_Tatca= new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).In(lstIdThanhtoanAll) .ExecuteAsCollection<KcbThanhtoanChitietCollection>().ToList<KcbThanhtoanChitiet>(); v_TotalPaymentDetail = (from p in lstKcbThanhtoanChitiet_Tatca where p.TuTuc == 0 select p).Sum(c => c.SoLuong * c.DonGia); //Tính lại % BHYT mới sau khi đã trả lại tiền một số dịch vụ LayThongtinPtramBHYT(v_TotalPaymentDetail - v_dblTongtienHuy, objLuotkham, ref PtramBHYT); //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 List<KcbThanhtoanChitiet> lsttemp = new List<KcbThanhtoanChitiet>(); THU_VIEN_CHUNG.TinhPhamTramBHYT(objLuotkham, ref lsttemp, ref lstKcbThanhtoanChitiet_Tatca, PtramBHYT); List<long> lstIdThanhtoanTinhlai = (from q in lstKcbThanhtoanChitiet_Tatca select q.IdThanhtoan).Distinct().ToList<long>(); //99% đặt thông số này=1 if (THU_VIEN_CHUNG.Laygiatrithamsohethong("KCB_THANHTOAN_TINHLAITONGTIEN_CACTHANHTOAN_BITRALAITIEN", "1", false) == "1") { foreach (int IdThanhtoan in lstIdThanhtoanTinhlai)//Chỉ thực hiện tính lại thanh toán có chứa các chi tiết bị thay đổi { TT_BN = 0m; TT_BNCT = 0m; TT_PT = 0m; TT_TT = 0m; TT_BHYT = 0m; TT_Chietkhau_Chitiet = 0; //Lấy lại từ CSDL List<KcbThanhtoanChitiet> _LstChitiet = (from p in lstKcbThanhtoanChitiet_Tatca where p.IdThanhtoan == IdThanhtoan select p).ToList<KcbThanhtoanChitiet>(); if (_LstChitiet.Count > 0) { foreach (KcbThanhtoanChitiet objChitietThanhtoan in _LstChitiet) { objChitietThanhtoan.MarkOld(); objChitietThanhtoan.IsNew = false; objChitietThanhtoan.Save(); if (!Utility.Byte2Bool(objChitietThanhtoan.TrangthaiHuy))//Bỏ qua các bản ghi đã bị hủy { if (!Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_BHYT += objChitietThanhtoan.BhytChitra * objChitietThanhtoan.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objChitietThanhtoan.TienChietkhau, 0); TT_PT += objChitietThanhtoan.PhuThu * objChitietThanhtoan.SoLuong; if (Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_TT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; else TT_BNCT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; } } TT_BN += TT_PT + TT_BNCT + TT_TT; //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_BNCT) .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT) .Set(KcbThanhtoan.Columns.PhuThu).EqualTo(TT_PT) .Set(KcbThanhtoan.Columns.TuTuc).EqualTo(TT_TT) .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(); } } } } } scope.Complete(); return ActionResult.Success; } } catch (Exception exception) { log.Error("Loi trong qua trinh tra tien lai:{0}", exception.ToString()); return ActionResult.Error; } }
/// <summary> /// /// </summary> /// <param name="objThanhtoan"></param> /// <param name="objLuotkham"></param> /// <param name="objArrPaymentDetail"></param> /// <param name="id_thanhtoan"></param> /// <param name="IdHdonLog"></param> /// <param name="Layhoadondo"></param> /// <param name="TongtienBNchitra"></param> /// <returns></returns> public ActionResult ThanhtoanChiphiDVuKCB(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham, List<KcbThanhtoanChitiet> objArrPaymentDetail, ref int id_thanhtoan, long IdHdonLog, bool Layhoadondo, ref decimal TongtienBNchitra,ref string ErrMsg) { ErrMsg = ""; 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_dblTongtienDCT = 0; ///tổng tiền đã thanh toán decimal v_TotalPaymentDetail = 0; try { using (var scope = new TransactionScope()) { using (var dbscope = new SharedDbConnectionScope()) { if (Utility.Byte2Bool(objThanhtoan.NoiTru)) { if (THU_VIEN_CHUNG.Laygiatrithamsohethong("NOITRU_TUDONGHOANUNG_KHITHANHTOANNOITRU", "0", false) == "1") { SPs.NoitruHoanung(objLuotkham.MaLuotkham, objLuotkham.IdBenhnhan, objThanhtoan.NgayThanhtoan, globalVariables.gv_intIDNhanvien, globalVariables.UserName, (int)objLuotkham.IdKhoanoitru, (long)objLuotkham.IdRavien, (int)objLuotkham.IdBuong, (int)objLuotkham.IdGiuong, (byte)1).Execute(); } } else { if (THU_VIEN_CHUNG.Laygiatrithamsohethong("KCB_THANHTOAN_KICHHOAT_TAMUNG_NGOAITRU", "0", false) == "1") if (THU_VIEN_CHUNG.Laygiatrithamsohethong("NGOAITRU_TUDONGHOANUNG_KHITHANHTOANNGOAITRU", "0", false) == "1") { SPs.NoitruHoanung(objLuotkham.MaLuotkham, objLuotkham.IdBenhnhan, objThanhtoan.NgayThanhtoan, globalVariables.gv_intIDNhanvien, globalVariables.UserName, (int)objLuotkham.IdKhoanoitru, (long)objLuotkham.IdRavien, (int)objLuotkham.IdBuong, (int)objLuotkham.IdGiuong, (byte)0).Execute(); } } ///Tính tổng tiền đồng chi trả v_dblTongtienDCT = TongtienKhongTutuc(objArrPaymentDetail); 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, 0) ); List<long> lstIdThanhtoan = (from q in lstKcbThanhtoanCollection select q.IdThanhtoan).Distinct().ToList<long>(); //Biến chứa danh sách tất cả các chi tiết dùng để tính lại tổng tiền thanh toán cho thanh toán có bản ghi bị hủy List<KcbThanhtoanChitiet> lstKcbThanhtoanChitiet = new List<KcbThanhtoanChitiet>(); if (lstIdThanhtoan.Count > 0) lstKcbThanhtoanChitiet = new Select().From(KcbThanhtoanChitiet.Schema) .Where(KcbThanhtoanChitiet.Columns.IdThanhtoan).In(lstIdThanhtoan) .ExecuteAsCollection<KcbThanhtoanChitietCollection>().ToList<KcbThanhtoanChitiet>(); v_TotalPaymentDetail = (from p in lstKcbThanhtoanChitiet where p.TuTuc == 0 select p).Sum(c => c.SoLuong * c.DonGia); //Tính toán lại phần trăm BHYT chủ yếu liên quan đến phần lương cơ bản. //Phần trăm này có thể bị biến đổi và khác với % trong các bảng dịch vụ LayThongtinPtramBHYT(v_dblTongtienDCT + v_TotalPaymentDetail, objLuotkham, ref PtramBHYT); objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(Convert.ToDateTime(objThanhtoan.NgayThanhtoan)); objThanhtoan.PtramBhyt = Utility.Int16Dbnull(PtramBHYT, 0); objThanhtoan.IdLoaidoituongKcb = objLuotkham.IdLoaidoituongKcb; objThanhtoan.IsNew = true; objThanhtoan.Save(); //Tính lại Bnhan chi trả và BHYT chi trả theo % BHYT mới THU_VIEN_CHUNG.TinhPhamTramBHYT(objLuotkham, ref objArrPaymentDetail, ref lstKcbThanhtoanChitiet, PtramBHYT); decimal TT_BN = 0m; decimal TT_BNCT = 0m; decimal TT_PT = 0m; decimal TT_TT = 0m; decimal TT_BHYT = 0m; decimal TT_Chietkhau_Chitiet = 0m; if (THU_VIEN_CHUNG.Laygiatrithamsohethong("BHYT_TINHLAI_TOANBODICHVU", "1", false) == "1") { foreach (int IdThanhtoan in lstIdThanhtoan) { TT_BN = 0m; TT_BHYT = 0m; TT_PT = 0m; TT_TT = 0m; TT_BNCT = 0m; TT_Chietkhau_Chitiet = 0m; List<KcbThanhtoanChitiet> _LstChitiet = (from q in lstKcbThanhtoanChitiet where q.IdThanhtoan == IdThanhtoan select q).ToList<KcbThanhtoanChitiet>(); if (_LstChitiet.Count > 0) { foreach (KcbThanhtoanChitiet objChitietThanhtoan in _LstChitiet) { if (!Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_BHYT += objChitietThanhtoan.BhytChitra * objChitietThanhtoan.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objChitietThanhtoan.TienChietkhau, 0); TT_PT += objChitietThanhtoan.PhuThu * objChitietThanhtoan.SoLuong; if (Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_TT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; else TT_BNCT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; objChitietThanhtoan.IsNew = false; objChitietThanhtoan.MarkOld(); objChitietThanhtoan.Save(); } TT_BN += TT_PT + TT_BNCT + TT_TT; //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_BNCT) .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT) .Set(KcbThanhtoan.Columns.PhuThu).EqualTo(TT_PT) .Set(KcbThanhtoan.Columns.TuTuc).EqualTo(TT_TT) .Set(KcbThanhtoan.Columns.MaDoituongKcb).EqualTo(objLuotkham.MaDoituongKcb) .Set(KcbThanhtoan.Columns.IdDoituongKcb).EqualTo(objLuotkham.IdDoituongKcb) .Set(KcbThanhtoan.Columns.PtramBhyt).EqualTo(objLuotkham.PtramBhyt) .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog) .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 để không bị cộng dồn với các thanh toán cũ TT_BN = 0m; TT_BHYT = 0m; TT_PT = 0m; TT_TT = 0m; TT_BNCT = 0m; TT_Chietkhau_Chitiet = 0m; int reval = -1; foreach (KcbThanhtoanChitiet objChitietThanhtoan in objArrPaymentDetail) { if (!Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_BHYT += objChitietThanhtoan.BhytChitra * objChitietThanhtoan.SoLuong; TT_Chietkhau_Chitiet += Utility.DecimaltoDbnull(objChitietThanhtoan.TienChietkhau, 0); TT_PT += objChitietThanhtoan.PhuThu * objChitietThanhtoan.SoLuong; if (Utility.Byte2Bool(objChitietThanhtoan.TuTuc)) TT_TT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; else TT_BNCT += objChitietThanhtoan.BnhanChitra * objChitietThanhtoan.SoLuong; objChitietThanhtoan.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); objChitietThanhtoan.IsNew = true; objChitietThanhtoan.Save(); reval= UpdatePaymentStatus(objThanhtoan, objChitietThanhtoan); if (reval <= 0) { ErrMsg = string.Format("Dịch vụ {0} đã bị người dùng khác hủy bỏ nên bạn không thể thanh toán. Hãy nhấn nút OK và chọn lại Bệnh nhân để lấy lại các chi phí thanh toán mới nhất", objChitietThanhtoan.TenChitietdichvu); return ActionResult.Cancel; } } TT_BN += TT_PT + TT_BNCT + TT_TT; TongtienBNchitra = TT_BN; objThanhtoan.TongTien = TT_BN + TT_BHYT; #region Hoadondo if (Layhoadondo) { int record = -1; if (IdHdonLog > 0) { record = new Delete().From(HoadonLog.Schema) .Where(HoadonLog.Columns.IdHdonLog) .IsEqualTo(IdHdonLog) .Execute(); if (record <= 0) { Utility.ShowMsg("Có lỗi trong quá trình xóa thông tin serie hóa đơn đã hủy để cấp lại cho lần thanh toán này."); return ActionResult.Error; } } var obj = new HoadonLog(); obj.IdThanhtoan = objThanhtoan.IdThanhtoan; obj.TongTien = objThanhtoan.TongTien - Utility.DecimaltoDbnull(objThanhtoan.TongtienChietkhau, 0); obj.IdBenhnhan = objThanhtoan.IdBenhnhan; obj.MaLuotkham = objThanhtoan.MaLuotkham; obj.MauHoadon = objThanhtoan.MauHoadon; obj.KiHieu = objThanhtoan.KiHieu; obj.IdCapphat = objThanhtoan.IdCapphat.Value; obj.MaQuyen = objThanhtoan.MaQuyen; obj.Serie = objThanhtoan.Serie; obj.MaNhanvien = globalVariables.UserName; obj.MaLydo = "0"; obj.NgayIn = globalVariables.SysDate; obj.TrangThai = 0; obj.IsNew = true; obj.Save(); IdHdonLog = obj.IdHdonLog;//Để update lại vào bảng thanh toán new Update(HoadonCapphat.Schema).Set(HoadonCapphat.Columns.SerieHientai) .EqualTo(objThanhtoan.Serie) .Set(HoadonCapphat.Columns.TrangThai).EqualTo(1) .Where(HoadonCapphat.Columns.IdCapphat).IsEqualTo(obj.IdCapphat) .Execute(); } #endregion KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhieuthu.MaLuotkham = objThanhtoan.MaLuotkham; objPhieuthu.IdThanhtoan = objThanhtoan.IdThanhtoan; objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, 0); objPhieuthu.SoluongChungtugoc = 1; objPhieuthu.LoaiPhieuthu = Convert.ToByte(0); 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 = "Thu 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_BNCT) .Set(KcbThanhtoan.Columns.BhytChitra).EqualTo(TT_BHYT) .Set(KcbThanhtoan.Columns.PhuThu).EqualTo(TT_PT) .Set(KcbThanhtoan.Columns.TuTuc).EqualTo(TT_TT) .Set(KcbThanhtoan.Columns.MaDoituongKcb).EqualTo(objLuotkham.MaDoituongKcb) .Set(KcbThanhtoan.Columns.IdDoituongKcb).EqualTo(objLuotkham.IdDoituongKcb) .Set(KcbThanhtoan.Columns.PtramBhyt).EqualTo(objLuotkham.PtramBhyt) .Set(KcbThanhtoan.Columns.IdHdonLog).EqualTo(IdHdonLog) .Where(KcbThanhtoan.Columns.IdThanhtoan).IsEqualTo(objThanhtoan.IdThanhtoan).Execute(); //Tạo bản ghi trong bảng phân bổ tiền theo phương thức thanh toán new Delete().From(KcbThanhtoanPhanbotheoPTTT.Schema) .Where(KcbThanhtoanPhanbotheoPTTT.Columns.IdThanhtoan) .IsEqualTo(objThanhtoan.IdThanhtoan).Execute(); KcbThanhtoanPhanbotheoPTTT objPhanbotienTT = new KcbThanhtoanPhanbotheoPTTT(); objPhanbotienTT.IdThanhtoan = objThanhtoan.IdThanhtoan; objPhanbotienTT.IdBenhnhan = objThanhtoan.IdBenhnhan; objPhanbotienTT.MaLuotkham = objThanhtoan.MaLuotkham; objPhanbotienTT.MaPttt = objThanhtoan.MaPttt; objPhanbotienTT.SoTien = TT_BN - TT_Chietkhau_Chitiet; objPhanbotienTT.NoiTru = objThanhtoan.NoiTru; objPhanbotienTT.TongTien = objPhanbotienTT.SoTien; objPhanbotienTT.NguoiTao = objThanhtoan.NguoiTao; objPhanbotienTT.NgayTao = objThanhtoan.NgayTao; objPhanbotienTT.IsNew = true; objPhanbotienTT.Save(); if (Utility.Byte2Bool(objThanhtoan.NoiTru) && Utility.ByteDbnull(objLuotkham.TrangthaiNoitru, 0) >= 2) new Update(KcbLuotkham.Schema).Set(KcbLuotkham.Columns.TthaiThanhtoannoitru).EqualTo(1) .Where(KcbLuotkham.Columns.IdBenhnhan).IsEqualTo(objLuotkham.IdBenhnhan) .And(KcbLuotkham.Columns.MaLuotkham).IsEqualTo(objLuotkham.MaLuotkham) .Execute(); } scope.Complete(); id_thanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); return ActionResult.Success; } } catch (Exception ex) { log.Error("Loi thuc hien thanh toan:" + ex.ToString()); return ActionResult.Error; } }
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); } }
/// <summary> /// Trả lại tiền /// </summary> /// <param name="objThanhtoan"></param> /// <param name="objLuotkham"></param> /// <param name="objArrPaymentDetail"></param> /// <returns></returns> public ActionResult HUYTHANHTOAN_NGOAITRU(KcbThanhtoan objThanhtoan, KcbLuotkham objLuotkham, KcbThanhtoanChitiet[] objArrPaymentDetail) { decimal v_DiscountRate = 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_TotalOrginPrice = 0; ///tổng tiền đã thanh toán decimal v_TotalPaymentDetail = 0; try { using (var scope = new TransactionScope()) { using (var sh = new SharedDbConnectionScope()) { v_TotalOrginPrice = SumOfPaymentDetail(objArrPaymentDetail); KcbThanhtoanCollection paymentCollection = new KcbThanhtoanController().FetchByQuery( KcbThanhtoan.CreateQuery().AddWhere(KcbThanhtoan.Columns.MaLuotkham, Comparison.Equals, objLuotkham.MaLuotkham).AND( KcbThanhtoan.Columns.IdBenhnhan, Comparison.Equals, objLuotkham.IdBenhnhan)); foreach (KcbThanhtoan payment in paymentCollection) { KcbThanhtoanChitietCollection paymentDetailCollection = new KcbThanhtoanChitietController().FetchByQuery( KcbThanhtoanChitiet.CreateQuery().AddWhere(KcbThanhtoanChitiet.Columns.IdThanhtoan, Comparison.Equals, payment.IdThanhtoan)); foreach (KcbThanhtoanChitiet paymentDetail in paymentDetailCollection) { if (paymentDetail.TuTuc == 0) v_TotalPaymentDetail += Utility.DecimaltoDbnull(paymentDetail.DonGia); } } ///lấy thông tin chiết khấu xem đã thực hiện chưa LayThongtinPtramBHYT(v_TotalPaymentDetail - v_TotalOrginPrice, objLuotkham, ref v_DiscountRate); objThanhtoan.TrangThai = 1; objThanhtoan.IdNhanvienThanhtoan = globalVariables.gv_intIDNhanvien; objThanhtoan.NgayThanhtoan = globalVariables.SysDate; //objThanhtoan.IpMayTao = THU_VIEN_CHUNG.GetIP4Address(); //objThanhtoan.IpMacTao = THU_VIEN_CHUNG.GetMACAddress(); // objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.GenerateMaThanhtoan(globalVariables.SysDate, 0); objThanhtoan.MaThanhtoan = THU_VIEN_CHUNG.TaoMathanhtoan(globalVariables.SysDate); objThanhtoan.IsNew = true; objThanhtoan.Save(); //StoredProcedure spPament = SPs.KcbThanhtoanThemmoi(objThanhtoan.IdThanhtoan, objThanhtoan.MaLuotkham, objThanhtoan.IdBenhnhan, // objThanhtoan.NgayThanhtoan, objThanhtoan.StaffId, objThanhtoan.Status, // objThanhtoan.CreatedBy, objThanhtoan.CreatedDate, objThanhtoan.NgaySua, // objThanhtoan.NguoiSua, objThanhtoan.MaThanhtoan, objThanhtoan.KieuThanhToan, // objThanhtoan.DaIn, objThanhtoan.NgayIn, objThanhtoan.NgayTHop, objThanhtoan.NguoiIn, // objThanhtoan.NguoiTHop, Utility.Int32Dbnull(objThanhtoan.TrongGoi), objThanhtoan.IpMayTao, objThanhtoan.IpMacTao, globalVariables.MA_KHOA_THIEN); //spPament.Execute(); //objThanhtoan.IdThanhtoan = Utility.Int32Dbnull(spPament.OutputValues[0], -1); // objThanhtoan.IdThanhtoan = Utility.Int32Dbnull(_queryPayment.GetMax(KcbThanhtoan.Columns.IdThanhtoan), -1); foreach (KcbThanhtoanChitiet objPayDetail in objArrPaymentDetail) { new Update(KcbThanhtoanChitiet.Schema) //.Set(KcbThanhtoanChitiet.Columns.ng).EqualTo(1) .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(objPayDetail.IdChitiet). Execute(); ///thanh toán khám chữa bệnh)) if (objPayDetail.IdLoaithanhtoan == 1) { new Update(KcbDangkyKcb.Schema) .Set(KcbDangkyKcb.Columns.TrangthaiThanhtoan).EqualTo(1) .Set(KcbDangkyKcb.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbDangkyKcb.Columns.IdKham).IsEqualTo(objPayDetail.IdPhieu).Execute(); } ///thah toán phần dịch vụ cận lâm sàng if (objPayDetail.IdLoaithanhtoan == 2) { int status = Utility.Int32Dbnull( new Select(KcbChidinhclsChitiet.Columns.TrangThai).From(KcbChidinhclsChitiet.Schema). Where(KcbChidinhclsChitiet.Columns.IdChitietchidinh).IsEqualTo(objPayDetail.IdChitietdichvu) .ExecuteScalar().ToString(), 0); if (globalVariables.UserName != "ADMIN") { if (status == 1) { return ActionResult.AssginIsConfirmed; } } new Update(KcbChidinhclsChitiet.Schema) .Set(KcbChidinhclsChitiet.Columns.TrangthaiThanhtoan).EqualTo(1) .Set(KcbChidinhclsChitiet.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbChidinhclsChitiet.Columns.IdChitietchidinh).IsEqualTo(objPayDetail.IdChitietdichvu) .Execute(); } ///thanh toán phần thuốc if (objPayDetail.IdLoaithanhtoan == 3) { int Status = Utility.Int32Dbnull( new Select(KcbDonthuoc.Columns.TrangThai).From(KcbDonthuoc.Schema).Where( KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(objPayDetail.IdPhieu).ExecuteScalar(), -1); if (globalVariables.UserName != "ADMIN") { if (Status == 3) { return ActionResult.PresIsConfirmed; } } new Update(KcbDonthuoc.Schema) // .Set(KcbDonthuoc.Columns.TrangthaiThanhtoan).EqualTo(1) .Set(KcbDonthuoc.Columns.TrangThai).EqualTo(0) .Where(KcbDonthuoc.Columns.IdDonthuoc).IsEqualTo(objPayDetail.IdPhieu).Execute(); new Update(KcbDonthuocChitiet.Schema) .Set(KcbDonthuocChitiet.Columns.TrangthaiHuy).EqualTo(1) .Set(KcbDonthuocChitiet.Columns.TrangthaiThanhtoan).EqualTo(1) .Where(KcbDonthuocChitiet.Columns.IdDonthuoc).IsEqualTo(objPayDetail.IdPhieu) .And(KcbDonthuocChitiet.Columns.IdThuoc).IsEqualTo(objPayDetail.IdDichvu) .Execute(); } new Update(KcbThanhtoanChitiet.Schema) .Set(KcbThanhtoanChitiet.Columns.NgayHuy).EqualTo(globalVariables.SysDate) .Set(KcbThanhtoanChitiet.Columns.NguoiHuy).EqualTo(globalVariables.UserName) .Set(KcbThanhtoanChitiet.Columns.TrangthaiHuy).EqualTo(1) .Where(KcbThanhtoanChitiet.Columns.IdChitiet).IsEqualTo(objPayDetail.IdChitiet). Execute(); objPayDetail.IdPhieu = Utility.Int32Dbnull(objPayDetail.IdThanhtoan); objPayDetail.IdChitietdichvu = Utility.Int32Dbnull(objPayDetail.IdChitietdichvu); //objPayDetail.IpMayTao = THU_VIEN_CHUNG.GetIP4Address(); //objPayDetail.IpMacTao = THU_VIEN_CHUNG.GetMACAddress(); objPayDetail.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan, -1); objPayDetail.IsNew = true; objPayDetail.Save(); } KcbPhieuthu objPhieuthu = new KcbPhieuthu(); objPhieuthu.IdThanhtoan = Utility.Int32Dbnull(objThanhtoan.IdThanhtoan); objPhieuthu.NgayThuchien = globalVariables.SysDate; //objPhieuthu.IpMayTao = THU_VIEN_CHUNG.GetIP4Address(); objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, Utility.Int32Dbnull(objPhieuthu.LoaiPhieuthu, 0)); objPhieuthu.LoaiPhieuthu = 1; KcbDanhsachBenhnhan objPatientInfo = KcbDanhsachBenhnhan.FetchByID(objThanhtoan.IdBenhnhan); if (objPatientInfo != null) { objPhieuthu.NguoiNop = Utility.sDbnull(objPatientInfo.TenBenhnhan); } var query = (from loz in objArrPaymentDetail.AsEnumerable() select loz.TenChitietdichvu).ToArray(); decimal SoTien = Utility.DecimaltoDbnull(objArrPaymentDetail.Sum(c => c.BnhanChitra * c.SoLuong)) + Utility.DecimaltoDbnull(objArrPaymentDetail.Sum(c => c.PhuThu * c.SoLuong)); objPhieuthu.LydoNop = string.Join(";", query); objPhieuthu.LoaiPhieuthu = 1; objPhieuthu.SoTien = SoTien; objPhieuthu.MaPhieuthu = THU_VIEN_CHUNG.GetMaPhieuThu(globalVariables.SysDate, Utility.Int32Dbnull(objPhieuthu.LoaiPhieuthu)); objPhieuthu.IsNew = true; objPhieuthu.Save(); //CAN XEM LAIJ PHAN THU TUC //StoredProcedure sp = SPs.KcbThanhtoanThemmoiPhieuthu(objPhieuthu.MaPthu, objThanhtoan.IdThanhtoan, // objPhieuthu.NgayThien, // objPhieuthu.NguoiNop, objPhieuthu.LdoNop, // objPhieuthu.SoTien, // objPhieuthu.SluongCtuGoc, objPhieuthu.TkhoanNo, // objPhieuthu.TkhoanCo, // objPhieuthu.LoaiPhieu, globalVariables.UserName, // globalVariables.SysDate, // globalVariables.gv_intIDNhanvien, // globalVariables.DepartmentID, // globalVariables.UserName, globalVariables.SysDate); //sp.Execute(); } scope.Complete(); return ActionResult.Success; } } catch (Exception exception) { log.Error("Loi trong qua trinh tra tien lai:{0}", exception.ToString()); return ActionResult.Error; } }
public void Update(long IdPhieuthu,string MaPhieuthu,long IdThanhtoan,long? IdBenhnhan,string MaLuotkham,DateTime NgayThuchien,string NguoiNop,string LydoNop,decimal SoTien,decimal? SotienGoc,string MaLydoChietkhau,decimal? TienChietkhauchitiet,decimal? TienChietkhau,decimal? TienChietkhauhoadon,short? SoluongChungtugoc,string TaikhoanNo,string TaikhoanCo,byte? LoaiPhieuthu,short? IdNhanvien,short? IdKhoaThuchien,byte? NoiTru,string NoiDung,string NguoiTao,DateTime? NgayTao,string NguoiSua,DateTime? NgaySua) { KcbPhieuthu item = new KcbPhieuthu(); item.MarkOld(); item.IsLoaded = true; item.IdPhieuthu = IdPhieuthu; item.MaPhieuthu = MaPhieuthu; item.IdThanhtoan = IdThanhtoan; item.IdBenhnhan = IdBenhnhan; item.MaLuotkham = MaLuotkham; item.NgayThuchien = NgayThuchien; item.NguoiNop = NguoiNop; item.LydoNop = LydoNop; item.SoTien = SoTien; item.SotienGoc = SotienGoc; item.MaLydoChietkhau = MaLydoChietkhau; item.TienChietkhauchitiet = TienChietkhauchitiet; item.TienChietkhau = TienChietkhau; item.TienChietkhauhoadon = TienChietkhauhoadon; item.SoluongChungtugoc = SoluongChungtugoc; item.TaikhoanNo = TaikhoanNo; item.TaikhoanCo = TaikhoanCo; item.LoaiPhieuthu = LoaiPhieuthu; item.IdNhanvien = IdNhanvien; item.IdKhoaThuchien = IdKhoaThuchien; item.NoiTru = NoiTru; item.NoiDung = NoiDung; item.NguoiTao = NguoiTao; item.NgayTao = NgayTao; item.NguoiSua = NguoiSua; item.NgaySua = NgaySua; item.Save(UserName); }