Exemplo n.º 1
0
        private void butOk_Click(object sender, System.EventArgs e)
        {
            bOk = true;
            bool bChieu_sang = m.bChieu_sang;

            if (bChieu_sang)
            {
                DataRow r1, r2;
                r2 = d.getrowbyid(dtphieu, "id=" + int.Parse(phieu.SelectedValue.ToString()));
                if (r2 != null)
                {
                    if (r2["buoi"].ToString() == "0")
                    {
                        r1 = d.getrowbyid(dtkp, "id=" + int.Parse(makp.SelectedValue.ToString()));
                        if (r1 != null)
                        {
                            if (d.get_ttngay(s_ngay, r1["makp"].ToString()))
                            {
                                MessageBox.Show(lan.Change_language_MessageText("Ngày") + " " + s_ngay + " " + lan.Change_language_MessageText("viện phí đã in danh sách thu tiền") + "\n" + lan.Change_language_MessageText("Yêu cầu chọn phiếu buổi chiều !"), d.Msg);
                                return;
                            }
                        }
                    }
                }
            }
            if (makp.SelectedIndex == -1 || phieu.SelectedIndex == -1)
            {
                if (makp.SelectedIndex == -1)
                {
                    makp.Focus();
                }
                else
                {
                    phieu.Focus();
                }
                return;
            }
            i_makp  = int.Parse(makp.SelectedValue.ToString());
            i_phieu = int.Parse(phieu.SelectedValue.ToString());
            DataTable tmp = d.get_data("select * from " + xxx + ".d_daduyet where nhom=" + i_nhom + " and to_char(ngay,'dd/mm/yyyy')='" + s_ngay + "' and makp=" + i_makp + " and loai=" + i_loai + " and phieu=" + i_phieu + " and makp=" + i_makp).Tables[0];

            if (tmp.Select("done=1").Length > 0)
            {
                MessageBox.Show(lan.Change_language_MessageText("Phiếu này đã đánh dấu phát") + "\n" + lan.Change_language_MessageText("Không cho phép hủy ?"), d.Msg);
                makp.Focus();
                return;
            }
            try
            {
                bDuyettreole = tmp.Select("duyettreole=1").Length > 0;
            }
            catch { bDuyettreole = false; }
            string tenfile = (i_loai == 2 || bBuhaophi)?"d_bucstt":"d_xuatsdct";

            sql = "select distinct a.mabn,a.maql";
            if (!bIntheocstt)
            {
                sql += ",a.makhoa";
            }
            sql += ",b.mabd";
            sql += " from " + xxx + ".d_xuatsdll a," + xxx + "." + tenfile + " b where a.id=b.id and to_char(a.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
            sql += " and a.nhom=" + i_nhom + " and a.loai=" + i_loai + " and a.phieu=" + i_phieu;
            if (i_loai == 2)
            {
                if (bIntheocstt)
                {
                    sql += " and a.makp=" + i_makp;
                }
                else
                {
                    sql += " and a.makhoa=" + i_makp;
                }
            }
            else
            {
                sql += " and a.makhoa=" + i_makp;
            }
            sql += " and a.thuoc=" + i_thuoc;
            if (bBuhaophi || i_loai == 4 || bThua || i_thuoc == 2)
            {
                sql += " and a.maql=0";
            }
            else
            {
                sql += " and a.maql<>0";
            }
            tmp = d.get_data(sql).Tables[0];
            if (tmp.Rows.Count == 0)
            {
                if (kiemtra())
                {
                    MessageBox.Show(lan.Change_language_MessageText("Đã thu hồi xong."), lan.Change_language_MessageText("Thu hồi"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    d.close(); this.Close();
                    return;
                }
                MessageBox.Show(lan.Change_language_MessageText("Không có số liệu !"), d.Msg);
                f_thuhoi_phieu_biloi(s_mmyy, s_ngay, i_makp, i_nhom, i_phieu);
                makp.Focus();
                return;
            }
            string s_makhoa = "";

            if (!bIntheocstt)
            {
                foreach (DataRow r in tmp.Select("true", "makhoa"))
                {
                    if (s_makhoa.IndexOf(r["makhoa"].ToString().Trim() + ",") == -1)
                    {
                        s_makhoa += r["makhoa"].ToString().Trim() + ",";
                    }
                }
            }

            bool bFound = false;

            if (i_loai == 1 || i_loai == 3)
            {
                string s_id = "";
                sql  = "select distinct a.id";
                sql += " from " + xxx + ".d_xuatsdll a," + xxx + "." + tenfile + " b where a.id=b.id and to_char(a.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
                sql += " and a.nhom=" + i_nhom + " and a.loai=" + i_loai + " and a.phieu=" + i_phieu;
                sql += " and a.makhoa=" + i_makp;
                sql += " and a.thuoc=" + i_thuoc;
                sql += " and a.maql<>0";
                foreach (DataRow r in d.get_data(sql).Tables[0].Rows)
                {
                    s_id += r["id"].ToString().Trim() + ",";
                }
                if (s_id != "")
                {
                    string _mabn = "";
                    foreach (DataRow r in d.get_data("select a.mabn,b.hoten from " + xxx + ".d_tienthuoc a," + user + ".btdbn b where a.mabn=b.mabn and a.id in (" + s_id.Substring(0, s_id.Length - 1) + ") and a.done=1 order by a.mabn").Tables[0].Rows)
                    {
                        if (_mabn.IndexOf(r["mabn"].ToString() + " " + r["hoten"].ToString().Trim()) == -1)
                        {
                            _mabn += r["mabn"].ToString() + " " + r["hoten"].ToString().Trim() + "\n";
                        }
                    }
                    if (_mabn != "")
                    {
                        MessageBox.Show(lan.Change_language_MessageText("Những người bệnh sau :\n" + _mabn + " đã thanh toán, không được thu hồi !"), d.Msg);
                        makp.Focus();
                        return;
                    }
                }
            }
            if (i_loai == 1)
            {
                string s_mabd = "", s_maql = "";
                foreach (DataRow r in tmp.Select("true", "maql"))
                {
                    if (s_maql.IndexOf(r["maql"].ToString().Trim() + ",") == -1)
                    {
                        s_maql += r["maql"].ToString().Trim() + ",";
                    }
                }
                sql  = "select distinct c.mabd, b.mabn, to_char(a.ngay,'dd/mm/yyyy') as ngay, d.ten as phieu from xxx.d_duyet a,xxx.d_hoantrall b,xxx.d_hoantract c," + user + ".d_loaiphieu d where a.id=b.idduyet and b.id=c.id and a.phieu=d.id";
                sql += " and a.done=2 and c.slthuc>0 and a.nhom=" + i_nhom + " and a.loai=3 and to_char(c.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
                sql += " and a.makp=" + i_makp;
                if (s_maql != "")
                {
                    sql += " and b.maql in (" + s_maql.Substring(0, s_maql.Length - 1) + ")";
                }
                string s_ptra = "";
                foreach (DataRow r in d.get_data_mmyy(sql, s_ngay, s_ngay, true).Tables[0].Rows)
                {
                    s_mabd += r["mabd"].ToString().PadLeft(7, '0') + ",";
                    s_ptra  = "Ngày: " + r["ngay"].ToString() + "- Phiếu: " + r["phieu"].ToString() + "- MSBN: " + r["mabn"].ToString();
                }
                if (s_mabd != "")
                {
                    foreach (DataRow r in tmp.Rows)
                    {
                        if (s_mabd.IndexOf(r["mabd"].ToString().PadLeft(7, '0')) != -1)
                        {
                            bFound = true;
                            break;
                        }
                    }
                    if (bFound)
                    {
                        MessageBox.Show(phieu.Text + " có hoàn trả, không được thu hồi.\nPhải thu hồi phiếu hoàn trả trước !.\n" + s_ptra, d.Msg);
                        makp.Focus();
                        return;
                    }
                }
            }
            else if (i_loai == 2 && d.bThuhoi_kiemtra_tutruc(i_nhom))
            {
                bFound = false;
                DataRow r1;
                sql  = "select a.makp, b.sttt,b.makho,sum(b.soluong) as soluong from " + xxx + ".d_xuatsdll a," + xxx + ".d_thucbucstt b where a.id=b.id and to_char(a.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
                sql += " and a.nhom=" + i_nhom + " and a.loai=" + i_loai + " and a.phieu=" + i_phieu;
                if (bIntheocstt)
                {
                    sql += " and a.makp=" + i_makp;
                }
                else
                {
                    sql += " and a.makhoa=" + i_makp;
                }
                sql += " and a.thuoc=" + i_thuoc;
                if (bBuhaophi || i_loai == 4 || bThua || i_thuoc == 2)
                {
                    sql += " and a.maql=0";
                }
                else
                {
                    sql += " and a.maql<>0";
                }
                sql += " group by b.sttt,b.makho,a.makp";
                //
                DataSet lds       = d.get_data(sql);
                string  s_makp_tt = ",";
                foreach (DataRow dr in lds.Tables[0].Rows)
                {
                    s_makp_tt += (s_makp_tt.IndexOf("," + dr["makp"].ToString() + ",") < 0) ? dr["makp"].ToString() + "," : "";
                }
                if (s_makp_tt.Trim().Trim(',') == "")
                {
                    s_makp_tt = i_makp.ToString();
                }
                else
                {
                    s_makp_tt = s_makp_tt.Trim().Trim(',');
                }
                //
                tmp = d.get_data("select makp,makho,stt,sum(tondau+slnhap-slxuat) as soluong from " + xxx + ".d_tutrucct where makp in (" + s_makp_tt.Trim().Trim(',') + ") group by makho,stt,makp").Tables[0];
                foreach (DataRow r in lds.Tables[0].Rows)
                {
                    r1 = d.getrowbyid(tmp, "makho=" + int.Parse(r["makho"].ToString()) + " and stt=" + decimal.Parse(r["sttt"].ToString()) + " and makp=" + r["makp"].ToString());
                    if (r1 != null)
                    {
                        if (decimal.Parse(r["soluong"].ToString()) > decimal.Parse(r1["soluong"].ToString()))
                        {
                            bFound = true;
                            break;
                        }
                    }
                }
                if (bFound)
                {
                    MessageBox.Show(phieu.Text + " có xuất, không được thu hồi.\nPhải thu hồi phiếu xuất tủ trực trước !", d.Msg);
                    makp.Focus();
                    return;
                }
            }
            if (bKiemtra)
            {
                if (i_loai == 1 || (i_loai == 3 && i_thuoc == 1 && !bThua))
                {
                    bFound = false;
                    DataRow   r2;
                    DataTable dthoten  = new DataTable();
                    string    s_ravien = "";
                    r2 = d.getrowbyid(dtkp, "id=" + int.Parse(makp.SelectedValue.ToString()));
                    if (r2 != null)
                    {
                        sql     = "select maql from " + user + ".xuatvien where makp='" + r2["makp"].ToString() + "'";
                        dthoten = d.get_data(sql).Tables[0];
                        bFound  = true;
                    }
                    if (bFound)
                    {
                        foreach (DataRow r in tmp.Rows)
                        {
                            r2 = d.getrowbyid(dthoten, "maql=" + decimal.Parse(r["maql"].ToString()));
                            if (r2 != null)
                            {
                                s_ravien += r["mabn"].ToString() + "\n";
                            }
                        }
                    }
                    if (s_ravien != "")
                    {
                        MessageBox.Show(lan.Change_language_MessageText("Người bệnh đã ra viện") + "\n" + s_ravien + lan.Change_language_MessageText("không được thu hồi !"), d.Msg);
                        return;
                    }
                }
            }
            Cursor = Cursors.WaitCursor;
            if (i_loai == 2 && d.bBucstt_tronso(i_nhom))
            {
                if (s_makhoa != "")
                {
                    sql = "select idduyet from " + xxx + ".d_ngayduyet where nhom=" + i_nhom + " and loai=" + i_loai + " and phieu=" + i_phieu + " and makp in (" + s_makhoa.Substring(0, s_makhoa.Length - 1) + ") and to_char(ngay,'dd/mm/yyyy')='" + s_ngay + "'";
                }
                else
                {
                    sql = "select idduyet from " + xxx + ".d_ngayduyet where nhom=" + i_nhom + " and loai=" + i_loai + " and phieu=" + i_phieu + " and makp=" + i_makp + " and to_char(ngay,'dd/mm/yyyy')='" + s_ngay + "'";
                }
                if (s_makho != "")
                {
                    sql += " and makho='" + s_makho + "'";
                }
                tmp = d.get_data(sql).Tables[0];
                string sid = "";
                foreach (DataRow r in tmp.Rows)
                {
                    sid += r["idduyet"].ToString() + ",";
                }
                string sql1 = "select to_char(a.ngay,'dd/mm/yyyy') as ngay,c.ten from xxx.d_xuatsdll a,xxx.d_bucstt b," + user + ".d_loaiphieu c where a.id=b.id and a.phieu=c.id and b.sltreo>0 ";
                if (sid != "")
                {
                    sql1 += " and a.idduyet in (" + sid.Substring(0, sid.Length - 1) + ")";
                }
                sql1 += " and a.makp=" + i_makp + " and a.nhom=" + i_nhom;
                sid   = "";

                ////Binh 23032012: comment --> chua hieu kiem tra de lam gi???
                ////foreach(DataRow r in d.get_data_mmyy(sql1, s_ngay, s_ngay, 30).Tables[0].Rows)
                ////{
                ////    sid = "Ngày " + r["ngay"].ToString() + "\nPhiếu " + r["ten"].ToString() + " có duyệt treo\nPhải thu hồi phiếu này trước !";
                ////    break;
                ////}
                ////if (sid != "")
                ////{
                ////    MessageBox.Show(sid, d.Msg);
                ////    Cursor = Cursors.Default;
                ////    return;
                ////}
                foreach (DataRow r in tmp.Rows)
                {
                    sql = "select b.* from xxx.d_xtutrucll a," + user + ".d_treoduyet b where a.id=b.id and a.idduyet=" + decimal.Parse(r["idduyet"].ToString());
                    foreach (DataRow r1 in d.get_data_mmyy(sql, s_ngay, s_ngay, 30).Tables[0].Rows)
                    {
                        if (d.get_data("select a.* from " + xxx + ".d_xuatsdll a," + xxx + ".d_bucstt b where a.id=b.id and a.idduyet=" + decimal.Parse(r1["id"].ToString()) + " and b.sttduyet=" + int.Parse(r1["stt"].ToString())).Tables[0].Rows.Count == 0)
                        {
                            d.execute_data("update " + user + ".d_treoduyet set slthuc=0 where id=" + decimal.Parse(r1["id"].ToString()) + " and stt=" + int.Parse(r1["stt"].ToString()));
                        }
                    }
                }
            }
            d.upd_duyet(s_mmyy, i_makp, i_nhom, i_loai, i_phieu, s_ngay, (bNguoiduyet_nguoithuhoi ? s_makho : ""));//s_makho
            d.upd_theodoiduyet(s_mmyy, s_ngay, i_nhom, i_loai, i_makp, 1);
            d.upd_thuhoi(s_mmyy, i_nhom, s_ngay, i_loai, i_makp, i_userid, i_phieu);
            sql  = "select distinct a.id, to_char(a.ngayylenh,'dd/mm/yyyy') as ngayylenh from " + xxx + ".d_xuatsdll a," + xxx + "." + tenfile + " b where a.id=b.id and to_char(a.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
            sql += " and a.nhom=" + i_nhom + " and a.loai=" + i_loai + " and a.phieu=" + i_phieu;
            if (i_loai == 2)
            {
                if (bIntheocstt)
                {
                    sql += " and a.makp=" + i_makp;
                }
                else
                {
                    sql += " and a.makhoa=" + i_makp;
                }
            }
            else
            {
                sql += " and a.makhoa=" + i_makp;
            }
            sql += " and a.thuoc=" + i_thuoc;
            if (b1kho)
            {
                sql += " and a.lydo=" + int.Parse(s_makho.Substring(0, s_makho.Length - 1));
            }
            if (bBuhaophi || i_loai == 4 || bThua || i_thuoc == 2)
            {
                sql += " and a.maql=0";
            }
            else
            {
                sql += " and a.maql<>0";
            }
            foreach (DataRow r in d.get_data(sql).Tables[0].Rows)
            {
                d.del(s_mmyy, tenfile, decimal.Parse(r["id"].ToString()), dtll, i_loai, bBuhaophi, i_nhom, i_phieu, s_ngay, i_userid, bDuyettreole, r["ngayylenh"].ToString());
            }
            //
            string file = (i_loai == 2) ? "d_thucbucstt" : "d_thucxuat";

            sql  = "select distinct a.id from " + xxx + ".d_xuatsdll a," + xxx + "." + file + " b where a.id=b.id and to_char(a.ngay,'dd/mm/yyyy')='" + s_ngay + "'";
            sql += " and a.nhom=" + i_nhom + " and a.loai=" + i_loai + " and a.phieu=" + i_phieu;
            if (i_loai == 2)
            {
                if (bIntheocstt)
                {
                    sql += " and a.makp=" + i_makp;
                }
                else
                {
                    sql += " and a.makhoa=" + i_makp;
                }
            }
            else
            {
                sql += " and a.makhoa=" + i_makp;
            }
            sql += " and a.thuoc=" + i_thuoc;
            if (b1kho)
            {
                sql += " and a.lydo=" + int.Parse(s_makho.Substring(0, s_makho.Length - 1));
            }
            if (bBuhaophi || i_loai == 4 || bThua || i_thuoc == 2)
            {
                sql += " and a.maql=0";
            }
            else
            {
                sql += " and a.maql<>0";
            }
            foreach (DataRow r in d.get_data(sql).Tables[0].Rows)
            {
                d.execute_data("delete from " + xxx + "." + file + " where id=" + decimal.Parse(r["id"].ToString()));
            }
            //
            dtct.Clear();
            sql = "select * from " + user + ".d_dmkho where nhom=" + i_nhom;
            if (s_makho != "")
            {
                sql += " and id in (" + s_makho.Substring(0, s_makho.Length - 1) + ")";
            }
            foreach (DataRow r in d.get_data(sql).Tables[0].Rows)
            {
                d.execute_data("delete from " + xxx + ".d_daduyet where nhom=" + i_nhom + " and to_char(ngay,'dd/mm/yyyy')='" + s_ngay + "' and makp=" + i_makp + " and loai=" + i_loai + " and phieu=" + i_phieu + " and makho=" + int.Parse(r["id"].ToString()));
            }
            if (d.bKiemtra_duyet(i_nhom))
            {
                d.upd_tonkho(s_mmyy, i_nhom, 0);
            }
            int itable = d.tableid(s_mmyy, "d_ngayduyet");

            d.upd_eve_tables(s_mmyy, itable, i_userid, "del");
            d.upd_eve_upd_del(s_mmyy, itable, i_userid, "del", i_nhom.ToString() + "^" + i_loai.ToString() + "^" + i_makp.ToString() + "^" + s_ngay + "^0^" + i_phieu.ToString() + "^" + s_makho + "^0");

            Cursor = Cursors.Default;
            if (d.bTinnhan(i_nhom))
            {
                DataRow r = d.getrowbyid(dtkp, "id=" + int.Parse(makp.SelectedValue.ToString()));
                if (r != null)
                {
                    if (r["computer"].ToString() != "")
                    {
                        d.netsend(d.sDomain(i_nhom), r["computer"].ToString().Trim(), s_noidung + " KHOA " + m.khongdau(makp.Text) + " PHIEU " + m.khongdau(phieu.Text) + " DA THU HOI !");
                    }
                }
            }
            //
            MessageBox.Show(lan.Change_language_MessageText("Đã thu hồi xong."), lan.Change_language_MessageText("Thu hồi"), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            d.close(); this.Close();
        }