Advertisement
Guest User

Untitled

a guest
Apr 18th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 94.58 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION HIS_MEDICINE."NOT_CTTOATHUOC_DINHMUC_INS"(p_DVTT                 IN VARCHAR2,
  2.                                                                      p_MA_TOA_THUOC         IN VARCHAR2,
  3.                                                                      p_MAKHOVATTU           IN NUMBER,
  4.                                                                      p_MAVATTU_DINMUC       IN NUMBER,
  5.                                                                      p_NGHIEP_VU            IN VARCHAR2,
  6.                                                                      P_SOLUONG              IN NUMBER,
  7.                                                                      p_SO_LUONG_THUC_LINH   IN NUMBER,
  8.                                                                      p_DONGIA_BAN_BV        IN NUMBER,
  9.                                                                      p_DONGIA_BAN_BH        IN NUMBER,
  10.                                                                      P_THANHTIEN            IN NUMBER,
  11.                                                                      p_SO_NGAY_UONG         IN NUMBER,
  12.                                                                      p_SANG_UONG            IN NUMBER,
  13.                                                                      p_TRUA_UONG            IN NUMBER,
  14.                                                                      p_CHIEU_UONG           IN NUMBER,
  15.                                                                      p_TOI_UONG             IN NUMBER,
  16.                                                                      p_NGAY_RA_TOA          IN TIMESTAMP,
  17.                                                                      p_GHI_CHU_CT_TOA_THUOC IN VARCHAR2,
  18.                                                                      p_MA_BAC_SI_THEMTHUOC  IN NUMBER,
  19.                                                                      p_CACH_SU_DUNG         IN VARCHAR2,
  20.                                                                      p_stt_dieutri          IN VARCHAR2,
  21.                                                                      p_stt_benhan           IN VARCHAR2,
  22.                                                                      p_stt_dotdieutri       IN VARCHAR2,
  23.                                                                      p_TU_TU_THUOC          IN NUMBER,
  24.                                                                      p_CO_BHYT              IN NUMBER,
  25.                                                                      p_namhientai           IN NUMBER,
  26.                                                                      p_MABENHNHAN           IN NUMBER,
  27.                                                                      p_sophieuthanhtoan     IN VARCHAR2,
  28.  
  29.                                                                      p_ngayhientai     IN DATE,
  30.                                                                      p_dathanhtoanroi  IN NUMBER,
  31.                                                                      p_maphongban      IN VARCHAR2,
  32.                                                                      p_sovaovien       IN NUMBER,
  33.                                                                      p_sovaovien_dt    IN NUMBER,
  34.                                                                      P_NGAYCHUYEN      IN DATE,
  35.                                                                      p_magoidichvu     IN NUMBER DEFAULT NULL,
  36.                                                                      P_ID_DINHMUC      IN NUMBER,
  37.                                                                      P_SOLUONG_DINHMUC IN NUMBER,
  38.                                                                      p_sophieu         IN VARCHAR2,
  39.                                                                      p_macls           IN NUMBER)
  40.   -----
  41.   -- P_NGHIEP_VU     VARCHAR2,
  42.   -- P_DVTT          VARCHAR2,
  43.   -- P_SOPHIEUCHUYEN VARCHAR2,
  44.   -- P_MADONVIGIAO   VARCHAR2,
  45.   -- P_MADONVINHAN   VARCHAR2,
  46.   -- P_MAVATTU       NUMBER,
  47.   --P_TENVATTU      VARCHAR2,
  48.   --P_SOLUONG       NUMBER,
  49.   -- P_DONGIA        NUMBER,
  50.   -- P_THANHTIEN     NUMBER,
  51.  
  52.   -- P_NGUOINHAP  NUMBER,
  53.   --P_GHICHU     VARCHAR2
  54.  
  55.   RETURN NUMBER IS
  56.   P_MAX_KHOVATTUCHITIET    NUMBER(10);
  57.   P_MAX_NHAPKHOCHITIET     NUMBER(10);
  58.   P_MNGAY                  DATE;
  59.   P_SOLOSANXUAT            VARCHAR2(100);
  60.   P_NGAYSANXUAT            DATE;
  61.   P_NGAYHETHAN             DATE;
  62.   P_MAXHIENTAI             NUMBER(18, 4);
  63.   P_SAISOT                 NUMBER(11);
  64.   P_DUYET                  NUMBER(11);
  65.   P_MACHUYENKHOVATTU       VARCHAR2(1000);
  66.   P_TONTAI_DONVINHAN       NUMBER(11) DEFAULT 0;
  67.   V_THANHTIEN              NUMBER(18, 4);
  68.   V_SOLUONGCANTRU          NUMBER(18, 4);
  69.   V_KEY_QL                 VARCHAR2(100);
  70.   V_SOLUONG_CK             NUMBER(18, 4);
  71.   V_SOLOSANXUAT            VARCHAR2(50);
  72.   V_DONGIA                 NUMBER(18, 4);
  73.   V_FINISHED               NUMBER(10) DEFAULT 0;
  74.   V_NGAYSANXUAT            DATE;
  75.   V_SONHAPKHOCHITIET       NUMBER(10) DEFAULT 0;
  76.   V_SONHAPKHOCHITIET_CU    NUMBER(10) DEFAULT 0;
  77.   V_ERR                    VARCHAR2(500);
  78.   V_KT_TONTAI_TRONNGAY     NUMBER(11) DEFAULT 0;
  79.   E_SL_XUAT_NV3_NGOAI      NUMBER(11);
  80.   V_NGAYBIENDONG           DATE;
  81.   V_NGAYBIENDONG2          DATE;
  82.   V_I                      NUMBER(5) := 0;
  83.   V_COUNT                  NUMBER(5) := 0;
  84.   V_CK                     NUMBER(18, 4);
  85.   V_XULYKHO                NUMBER(11) := 0;
  86.   V_MAX_NGAYBIENDONG       DATE;
  87.   V_CHK_SL_TON             NUMBER(18, 4) := 0;
  88.   V_CHK_SL_CHUYENDI        NUMBER(18, 4) := 0;
  89.   V_ROLLBACK               NUMBER(1) := 0;
  90.   v_stt_toathuoc           NUMBER(11);
  91.   v_KyHieuNhomBC           VARCHAR2(100) DEFAULT '';
  92.   v_HAM_LUONG              VARCHAR2(4000) DEFAULT '';
  93.   v_DUONG_DUNG             VARCHAR2(150) DEFAULT '';
  94.   v_SO_DANG_KY             VARCHAR2(500) DEFAULT '';
  95.   v_KEY_QLDM               NUMBER(11);
  96.   v_NGAY_RA_TOA            TIMESTAMP;
  97.   v_MaLoaiVatTu            VARCHAR2(20);
  98.   v_thanghientai           NUMBER(10) DEFAULT 1;
  99.   V_KIEMTRAKHO             NUMBER(11);
  100.   V_SUM                    NUMBER(18, 4);
  101.   v_id_dieutri             NUMBER(11);
  102.   p_bant                   NUMBER(1);
  103.   v_ngoaidanhmuc           NUMBER(1) DEFAULT 0;
  104.   v_laydongia              VARCHAR2(50);
  105.   v_dongiaban_taiquaythuoc NUMBER(18, 4);
  106.   v_stt_order              NUMBER(11) := 0;
  107.   v_ngaychuyen             DATE;
  108.   v_xacnhan                NUMBER(11);
  109.   v_check_chot_duoc        NUMBER(11);
  110.   v_giochot                NUMBER(11);
  111.   v_thamsochotkhoduoc      NUMBER(1);
  112.   p_MAVATTU                NUMBER(18);
  113.   P_TENVATTU               VARCHAR2(500);
  114.   p_HOAT_CHAT              VARCHAR2(500);
  115.   p_DVT                    VARCHAR2(500);
  116.   v_thamso91133            NUMBER(1);
  117.   v_makhovattu             NUMBER(11);
  118.   v_soluong_temp           NUMBER(11);
  119.   BEGIN
  120.     v_giochot := TO_NUMBER(TO_CHAR(SYSDATE, 'hh24'));
  121.     --Lấy tham số sử dụng toa thuốc tổng hợp không phân kho
  122.     BEGIN
  123.       SELECT TO_NUMBER(mota_thamso)
  124.       INTO v_thamso91133
  125.       FROM his_fw.dm_thamso_donvi
  126.       WHERE dvtt = p_dvtt
  127.             AND ma_thamso = 91133;
  128.       EXCEPTION
  129.       WHEN NO_DATA_FOUND THEN
  130.       v_thamso91133 := 0;
  131.     END;
  132.     --them bat exception
  133.     BEGIN
  134.       SELECT TO_NUMBER(mota_thamso)
  135.       INTO v_thamsochotkhoduoc
  136.       FROM his_fw.dm_thamso_donvi
  137.       WHERE dvtt = p_dvtt
  138.             AND ma_thamso = 313;
  139.       EXCEPTION
  140.       WHEN NO_DATA_FOUND THEN
  141.       v_thamsochotkhoduoc := 0;
  142.     END;
  143.     --end
  144.  
  145.     IF p_TU_TU_THUOC = 0 AND v_thamsochotkhoduoc = 1 AND
  146.        (v_giochot > 17 OR v_giochot < 7) THEN
  147.       RETURN 200; --- chot kho kho
  148.     END IF;
  149.     P_SAISOT    := 0;
  150.     V_THANHTIEN := P_THANHTIEN;
  151.     -- SET TRANSACTION READ WRITE NAME 'not_cttoathuoc_ins_svv';
  152.  
  153.     V_THANHTIEN           := P_SOLUONG * p_DONGIA_BAN_BH;
  154.     P_MAX_KHOVATTUCHITIET := 0;
  155.     P_MAX_NHAPKHOCHITIET  := 0;
  156.     P_MNGAY               := SYSTIMESTAMP;
  157.     V_SOLUONGCANTRU       := P_SOLUONG;
  158.     v_soluong_temp        := 0;
  159.     SELECT COUNT(1)
  160.     INTO v_check_chot_duoc
  161.     FROM his_manager.DUOC_CHOTSOLIEU_BAOCAO
  162.     WHERE dvtt = p_dvtt
  163.           AND TRUNC(p_NGAY_RA_TOA) BETWEEN NGAY_BAT_DAU AND NGAY_KET_THUC
  164.           AND TRANGTHAI = 1;
  165.  
  166.     IF v_check_chot_duoc > 0 THEN
  167.       RETURN 100;
  168.     END IF;
  169.  
  170.     SELECT id_dieutri
  171.     INTO v_id_dieutri
  172.     FROM his_manager.NOITRU_DIEUTRI
  173.     WHERE DVTT = p_dvtt
  174.           AND stt_dieutri = p_stt_dieutri
  175.           AND stt_benhan = p_stt_benhan
  176.           AND stt_dotdieutri = p_stt_dotdieutri
  177.           AND sovaovien = p_sovaovien
  178.           AND sovaovien_dt = p_sovaovien_dt;
  179.  
  180.     SELECT his_manager.SQ_KIEMTRAKHO.NEXTVAL INTO V_KIEMTRAKHO FROM DUAL;
  181.     SELECT his_manager.SQ_XULYKHO.NEXTVAL INTO V_XULYKHO FROM DUAL;
  182.  
  183.     SELECT BANT, NGAY_RA_TOA
  184.     INTO p_bant, v_ngaychuyen
  185.     FROM his_manager.NOITRU_TOA_THUOC
  186.     WHERE DVTT = p_dvtt
  187.           AND stt_dieutri = p_stt_dieutri
  188.           AND stt_benhan = p_stt_benhan
  189.           AND stt_dotdieutri = p_stt_dotdieutri
  190.           AND sovaovien = p_sovaovien
  191.           AND sovaovien_dt = p_sovaovien_dt
  192.           AND ID_DIEUTRI = v_id_dieutri;
  193.     BEGIN
  194.       SELECT XAC_NHAN
  195.       INTO v_xacnhan
  196.       FROM his_manager.NOITRU_CT_TOA_THUOC
  197.       WHERE dvtt = p_DVTT
  198.             AND MA_TOA_THUOC = p_MA_TOA_THUOC
  199.             AND stt_dieutri = p_stt_dieutri
  200.             AND stt_benhan = p_stt_benhan
  201.             AND stt_dotdieutri = p_stt_dotdieutri
  202.             AND ROWNUM = 1;
  203.       EXCEPTION
  204.       WHEN NO_DATA_FOUND THEN
  205.       v_xacnhan := 0;
  206.     END;
  207.  
  208.     IF p_bant = 0 THEN
  209.       v_ngaychuyen := P_NGAYCHUYEN;
  210.     END IF;
  211.     IF v_xacnhan = 1 THEN
  212.       P_SAISOT := 5;
  213.     END IF;
  214.     v_NGAY_RA_TOA  := TO_DATE(TO_CHAR(v_ngaychuyen, 'yyyy-mm-dd') || ' ' ||
  215.                               TO_CHAR(SYSTIMESTAMP, 'HH24:MI:SS'),
  216.                               'yyyy-mm-dd HH24:MI:SS');
  217.     v_thanghientai := EXTRACT(MONTH FROM v_ngaychuyen);
  218.     IF v_thamso91133=1 THEN
  219.       --KIEM TRA TON KHO HIEN TAI
  220.       INSERT INTO his_manager.KIEMTRA_TONKHO_CHUYEN
  221.       (SONHAPKHOCHITIET,
  222.        DVTT,
  223.        MAKHOVATTU,
  224.        SL_TON,
  225.        NGAYBIENDONG,
  226.        MINNGAYBIENDONG,
  227.        MAXNGAYBIENDONG,
  228.        ID_KIEMTRAKHO)
  229.         SELECT SONHAPKHOCHITIET,
  230.           a.DVTT,
  231.           MAKHOVATTU,
  232.           SL_TON,
  233.           NGAYBIENDONG,
  234.           MIN(NGAYBIENDONG) OVER(PARTITION BY SONHAPKHOCHITIET, a.DVTT, MAKHOVATTU) MINNGAYBIENDONG,
  235.           MAX(NGAYBIENDONG) OVER(PARTITION BY SONHAPKHOCHITIET, a.DVTT, MAKHOVATTU) MAXNGAYBIENDONG,
  236.           V_KIEMTRAKHO
  237.         FROM his_manager.DC_TB_XNT_BIENDONG A
  238.           JOIN HIS_MANAGER.DC_TB_VATTU B
  239.             ON A.DVTT = B.DVTT
  240.                AND A.MAVATTU = B.MAVATTU
  241.         WHERE MAKHOVATTU IN
  242.               (SELECT DISTINCT nks.makhovattu FROM HIS_MANAGER.NOITRU_KHOAPHONG_SUDUNGKHODUOC nks
  243.               WHERE nks.dvtt=p_DVTT AND nks.maphongban=p_maphongban AND nks.nghiepvu=p_NGHIEP_VU)
  244.               AND A.DVTT = P_DVTT
  245.               AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  246.               AND KHOA_SONHAPKHOCHITIET = 0
  247.               AND NGAYBIENDONG <= v_ngaychuyen
  248.               AND HOAT_DONG = 1;
  249.       --LAY TON KHO HIEN TAI
  250.       SELECT SUM(SL_TON)
  251.       INTO V_SUM
  252.       FROM his_manager.KIEMTRA_TONKHO_CHUYEN
  253.       WHERE NGAYBIENDONG = MAXNGAYBIENDONG
  254.             AND DVTT = P_DVTT
  255.             AND ID_KIEMTRAKHO = V_KIEMTRAKHO
  256.             AND MAKHOVATTU IN
  257.                 (SELECT DISTINCT nks.makhovattu FROM HIS_MANAGER.NOITRU_KHOAPHONG_SUDUNGKHODUOC nks
  258.                 WHERE nks.dvtt=p_DVTT AND nks.maphongban=p_maphongban AND nks.nghiepvu=p_NGHIEP_VU);
  259.  
  260.       IF V_SUM >= P_SOLUONG THEN
  261.  
  262.         -----------------ID_TEMCHUYENKHO = V_XULYKHO
  263.         INSERT INTO his_manager.TMP_CHUYENKHO
  264.         (SONHAPKHOCHITIET,
  265.          NGAYBIENDONG,
  266.          DVTT,
  267.          ID_TEMCHUYENKHO,
  268.          MAKHOVATTU,
  269.          MAVATTU)
  270.           SELECT SONHAPKHOCHITIET,
  271.             MAX(NGAYBIENDONG),
  272.             P_DVTT,
  273.             V_XULYKHO,
  274.             a.makhovattu,
  275.             a.MAVATTU
  276.           FROM his_manager.DC_TB_XNT_BIENDONG A
  277.             JOIN HIS_MANAGER.DC_TB_VATTU B
  278.               ON A.DVTT = B.DVTT
  279.                  AND A.MAVATTU = B.MAVATTU
  280.           WHERE MAKHOVATTU IN
  281.                 (SELECT DISTINCT nks.makhovattu FROM HIS_MANAGER.NOITRU_KHOAPHONG_SUDUNGKHODUOC nks
  282.                 WHERE nks.dvtt=p_DVTT AND nks.maphongban=p_maphongban AND nks.nghiepvu=p_NGHIEP_VU)
  283.                 AND a.DVTT = P_DVTT
  284.                 AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  285.                 AND HOAT_DONG = 1
  286.                 AND KHOA_SONHAPKHOCHITIET = 0
  287.                 AND NGAYBIENDONG <= v_ngaychuyen
  288.                 -- AND DONGIA = P_DONGIA//Khong phan biet don gia
  289.                 AND EXISTS (SELECT NULL
  290.                             FROM his_manager.KIEMTRA_TONKHO_CHUYEN B
  291.                             WHERE A.SONHAPKHOCHITIET = B.SONHAPKHOCHITIET
  292.                                   AND A.DVTT = B.DVTT
  293.                                   AND A.NGAYBIENDONG = B.MAXNGAYBIENDONG
  294.                                   AND B.NGAYBIENDONG = B.MAXNGAYBIENDONG
  295.                                   AND B.SL_TON > 0
  296.                                   AND b.dvtt = P_DVTT
  297.                                   AND ID_KIEMTRAKHO = V_KIEMTRAKHO
  298.                                   AND b.makhovattu = a.makhovattu)
  299.           --AND NGAYNHAPKHO <= v_ngaychuyen
  300.  
  301.           GROUP BY SONHAPKHOCHITIET, a.MAVATTU, a.makhovattu
  302.           ORDER BY SONHAPKHOCHITIET;
  303.  
  304.         SELECT SUM(SL_TON)
  305.         INTO P_MAXHIENTAI
  306.         FROM his_manager.DC_TB_XNT_BIENDONG A
  307.           JOIN HIS_MANAGER.DC_TB_VATTU B
  308.             ON A.DVTT = B.DVTT
  309.                AND A.MAVATTU = B.MAVATTU
  310.         WHERE A.MAKHOVATTU IN
  311.               (SELECT DISTINCT nks.makhovattu FROM HIS_MANAGER.NOITRU_KHOAPHONG_SUDUNGKHODUOC nks
  312.               WHERE nks.dvtt=p_DVTT AND nks.maphongban=p_maphongban AND nks.nghiepvu=p_NGHIEP_VU)
  313.               AND A.DVTT = P_DVTT
  314.               AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  315.               AND TT_MOINHAT = 1
  316.               AND HOAT_DONG = 1
  317.               -- AND SL_TON > 0
  318.               AND KHOA_SONHAPKHOCHITIET = 0;
  319.         -- AND DONGIA = p_DONGIA_BAN_BH;
  320.         /*
  321.           INSERT INTO TMP_TEST SELECT * FROM TMP_CHUYENKHO WHERE ID_TEMCHUYENKHO = V_XULYKHO;
  322.         COMMIT;
  323.         */
  324.         --GET NGAY BIEN DONG KE CAN
  325.  
  326.         IF P_MAXHIENTAI >= P_SOLUONG AND P_SOLUONG > 0 THEN
  327.           SELECT NVL(MAX(STT_order), 0)
  328.           INTO v_stt_order
  329.           FROM his_manager.NOITRU_CT_TOA_THUOC
  330.           WHERE DVTT = p_dvtt
  331.                 AND MA_TOA_THUOC = p_MA_TOA_THUOC
  332.                 AND stt_dieutri = p_stt_dieutri
  333.                 AND stt_benhan = p_stt_benhan
  334.                 AND stt_dotdieutri = p_stt_dotdieutri
  335.                 AND sovaovien = p_sovaovien
  336.                 AND sovaovien_dt = p_sovaovien_dt;
  337.           BEGIN
  338.             DECLARE
  339.               CURSOR XUATKHO_CURSOR IS
  340.                 -- KHAI BÁO CON TR? QUÉT QUA S? LU?NG T?N
  341.  
  342.                 SELECT KEY_QL,
  343.                   SL_TON,
  344.                   SOLOSANXUAT,
  345.                   DONGIA,
  346.                   NGAYSANXUAT,
  347.                   SONHAPKHOCHITIET,
  348.                   MAVATTU, makhovattu
  349.                 FROM (SELECT KEY_QL,
  350.                         MIN(a.SL_TON) AS SL_TON,
  351.                         SOLOSANXUAT,
  352.                         DONGIA,
  353.                         NGAYSANXUAT,
  354.                         A.SONHAPKHOCHITIET,
  355.                         NGAYNHAPKHO,
  356.                         a.MAVATTU, a.makhovattu
  357.                       --SL_XUAT_NV3_NGOAI,
  358.                       --A.NGAYBIENDONG
  359.                       FROM his_manager.DC_TB_XNT_BIENDONG A
  360.                         INNER JOIN his_manager.TMP_CHUYENKHO B
  361.                           ON A.NGAYBIENDONG >= B.NGAYBIENDONG
  362.                              AND A.SONHAPKHOCHITIET = B.SONHAPKHOCHITIET
  363.                              AND a.dvtt = b.DVTT
  364.                              AND a.makhovattu = b.makhovattu
  365.                       WHERE A.DVTT = P_DVTT
  366.                             AND A.MAKHOVATTU IN
  367.                                 (SELECT DISTINCT nks.makhovattu FROM HIS_MANAGER.NOITRU_KHOAPHONG_SUDUNGKHODUOC nks
  368.                                 WHERE nks.dvtt=p_DVTT AND nks.maphongban=p_maphongban AND nks.nghiepvu=p_NGHIEP_VU)
  369.                             AND A.MAVATTU = B.MAVATTU
  370.  
  371.                             --AND SONHAPKHOCHITIET IN (SELECT A.SONHAPKHOCHITIET FROM TMP_CHUYENKHO A)
  372.                             AND ID_TEMCHUYENKHO = V_XULYKHO
  373.                             AND a.hoat_dong = 1
  374.                             AND KHOA_SONHAPKHOCHITIET = 0
  375.                       GROUP BY KEY_QL,
  376.                         NGAYNHAPKHO,
  377.                         SOLOSANXUAT,
  378.                         DONGIA,
  379.                         NGAYSANXUAT,
  380.                         A.SONHAPKHOCHITIET,
  381.                         NGAYNHAPKHO,
  382.                         A.MAVATTU, a.makhovattu
  383.                   --SL_XUAT_NV3_NGOAI,
  384.                   --A.NGAYBIENDONG
  385.                 )
  386.                 WHERE SL_TON > 0
  387.                 -- FOR UPDATE OF A.SONHAPKHOCHITIET
  388.                 ORDER BY NGAYNHAPKHO, SONHAPKHOCHITIET ASC; --,NGAYBIENDONG
  389.  
  390.             BEGIN
  391.               OPEN XUATKHO_CURSOR;
  392.               LOOP
  393.  
  394.                 FETCH XUATKHO_CURSOR
  395.                 INTO V_KEY_QL,
  396.                 V_SOLUONG_CK,
  397.                 V_SOLOSANXUAT,
  398.                 V_DONGIA,
  399.                 V_NGAYSANXUAT,
  400.                 V_SONHAPKHOCHITIET,
  401.                 p_MAVATTU, v_makhovattu; --,
  402.                 --E_SL_XUAT_NV3_NGOAI,
  403.                 --V_NGAYBIENDONG;
  404.                 EXIT WHEN XUATKHO_CURSOR%NOTFOUND;
  405.                 IF V_FINISHED = 1 THEN
  406.                   EXIT;
  407.                 END IF;
  408.                 IF V_SOLUONG_CK < v_soluongcantru THEN
  409.                   v_soluong_temp := v_soluongcantru;
  410.                   v_soluongcantru := V_SOLUONG_CK;
  411.                 END IF;
  412.                 SELECT NGAYBIENDONG
  413.                 INTO V_NGAYBIENDONG
  414.                 FROM his_manager.TMP_CHUYENKHO A
  415.                 WHERE A.DVTT = P_DVTT
  416.                       AND A.MAKHOVATTU = v_makhovattu
  417.                       AND A.MAVATTU = p_MAVATTU
  418.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  419.                       AND ID_TEMCHUYENKHO = V_XULYKHO;
  420.                 --KIEM TRA NGAY CHUYEN
  421.                 IF p_NGHIEP_VU = 'noitru_toaquaybanthuocbv' THEN
  422.                   BEGIN
  423.                     SELECT mota_thamso
  424.                     INTO v_laydongia
  425.                     FROM HIS_FW.DM_THAMSO_DONVI
  426.                     WHERE dvtt = p_dvtt
  427.                           AND MA_THAMSO = 210;
  428.                     EXCEPTION
  429.                     WHEN NO_DATA_FOUND THEN
  430.                     v_laydongia := '0';
  431.                   END;
  432.                   BEGIN
  433.                     SELECT DonGia_BV
  434.                     INTO v_dongiaban_taiquaythuoc
  435.                     FROM his_manager.dc_tb_vattu
  436.                     WHERE DVTT = p_DVTT
  437.                           AND MaVatTu = p_MAVATTU;
  438.                     EXCEPTION
  439.                     WHEN NO_DATA_FOUND THEN
  440.                     v_finished := 1;
  441.                   END;
  442.                   IF v_laydongia = '1' THEN
  443.                     v_dongiaban_taiquaythuoc := v_dongia;
  444.                   END IF;
  445.                 ELSE
  446.                   v_dongiaban_taiquaythuoc := v_dongia;
  447.                 END IF;
  448.  
  449.                 SELECT vt.malienthong_dmdc,
  450.                   KyHieuNhomBC,
  451.                   vt.HamLuong,
  452.                   vt.maduongdung_dmdc,
  453.                   vt.so_dangky_dmdc,
  454.                   nhom.maloaivattu,
  455.                   VT.NGOAIDANHMUCBHYT,
  456.                   TENVATTU,
  457.                   HOATCHAT,
  458.                   DVT
  459.                 INTO v_KEY_QLDM,
  460.                   v_KyHieuNhomBC,
  461.                   v_HAM_LUONG,
  462.                   v_DUONG_DUNG,
  463.                   v_SO_DANG_KY,
  464.                   v_MaLoaiVatTu,
  465.                   v_ngoaidanhmuc,
  466.                   P_TENVATTU,
  467.                   p_HOAT_CHAT,
  468.                   p_DVT
  469.                 FROM his_manager.dc_tb_nhomvattu nhom,
  470.                   his_manager.dc_tb_vattu     vt
  471.                 WHERE nhom.DVTT = p_DVTT
  472.                       AND vt.DVTT = p_DVTT
  473.                       AND nhom.TamNgung = 0
  474.                       AND vt.MaVatTu = p_MAVATTU
  475.                       AND vt.MaNhomVatTu = nhom.MaNhomVatTu
  476.                       AND ROWNUM = 1;
  477.  
  478.                 IF V_SOLUONG_CK >= V_SOLUONGCANTRU AND V_SOLUONGCANTRU > 0 THEN
  479.                   -- -------------------------------- TH?C HI?N C?U L?NH
  480.                   --------------------// ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  481.                   SELECT NVL(MAX(CAST(NVL(his_manager.SUBSTRING_INDEX(STT_TOATHUOC,
  482.                                                                       '_',
  483.                                                                       -1),
  484.                                           0) AS NUMBER(10, 0))),
  485.                              0)
  486.                   INTO v_stt_toathuoc
  487.                   FROM his_manager.NOITRU_CT_TOA_THUOC
  488.                   WHERE DVTT = p_dvtt
  489.                         AND MA_TOA_THUOC = p_MA_TOA_THUOC
  490.                         AND stt_dieutri = p_stt_dieutri
  491.                         AND stt_benhan = p_stt_benhan
  492.                         AND stt_dotdieutri = p_stt_dotdieutri
  493.                         AND sovaovien = p_sovaovien
  494.                         AND sovaovien_dt = p_sovaovien_dt;
  495.  
  496.                   INSERT INTO his_manager.NOITRU_CT_TOA_THUOC
  497.                   (STT_TOATHUOC,
  498.                    STT_order,
  499.                    DVTT,
  500.                    MA_TOA_THUOC,
  501.                    MAKHOVATTU,
  502.                    MAVATTU,
  503.                    TEN_VAT_TU,
  504.                    HOAT_CHAT,
  505.                    DVT,
  506.                    NGHIEP_VU,
  507.                    SO_LUONG,
  508.                    SO_LUONG_THUC_LINH,
  509.                    DONGIA_BAN_BV,
  510.                    DONGIA_BAN_BH,
  511.                    THANHTIEN_THUOC,
  512.                    SO_NGAY_UONG,
  513.                    SANG_UONG,
  514.                    TRUA_UONG,
  515.                    CHIEU_UONG,
  516.                    TOI_UONG,
  517.  
  518.                    NGAY_RA_TOA,
  519.                    GHI_CHU_CT_TOA_THUOC,
  520.                    MA_BAC_SI_THEMTHUOC,
  521.  
  522.                    CACH_SU_DUNG,
  523.                    NAM,
  524.                    stt_dieutri,
  525.                    stt_benhan,
  526.                    stt_dotdieutri,
  527.                    TU_TU_THUOC,
  528.                    NGAY,
  529.                    THANG,
  530.                    mabenhnhan,
  531.                    khoalap,
  532.                    TRANG_THAI,
  533.                    KEY_QL,
  534.                    SOLOSANXUAT,
  535.                    NGAYSANXUAT,
  536.                    MaLoaiVatTu,
  537.                    KyHieuNhomBC,
  538.                    HAM_LUONG,
  539.                    DUONG_DUNG,
  540.                    SO_DANG_KY,
  541.                    sovaovien,
  542.                    sovaovien_dt,
  543.                    SONHAPKHOCHITIET,
  544.                    ID_DIEUTRI,
  545.                    BANT,
  546.                    NGOAI_DANH_MUC,
  547.                    MAGOIDICHVU,
  548.                    ID_DINHMUC,
  549.                    SOLUONG_DINHMUC,
  550.                    SO_PHIEU_XN,
  551.                    MA_XN,
  552.                    SO_PHIEU_CDHA,
  553.                    MA_CDHA,
  554.                    SO_PHIEU_DV,
  555.                    MA_DV)
  556.                   VALUES
  557.                     (p_MA_TOA_THUOC || '_' ||
  558.                      CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  559.                       v_stt_order + 1,
  560.                       p_DVTT,
  561.                       p_MA_TOA_THUOC,
  562.                       v_makhovattu,
  563.                       p_MAVATTU,
  564.                       P_TENVATTU,
  565.                       p_HOAT_CHAT,
  566.                       p_DVT,
  567.                       p_NGHIEP_VU,
  568.                       v_soluongcantru, -- p_SO_LUONG    ,
  569.                                        v_soluongcantru, -- pp_SO_LUONG_THUC_LINH   ,
  570.                                        v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV   ,
  571.                                        v_dongia, -- p_DONGIA_BAN_BH   ,
  572.                                        v_soluongcantru * v_dongiaban_taiquaythuoc, -- p_THANHTIEN_THUOC   ,
  573.                                        p_SO_NGAY_UONG,
  574.                                        p_SANG_UONG,
  575.                                        p_TRUA_UONG,
  576.                                        p_CHIEU_UONG,
  577.                                        p_TOI_UONG,
  578.                                        v_NGAY_RA_TOA,
  579.                       p_GHI_CHU_CT_TOA_THUOC,
  580.                       p_MA_BAC_SI_THEMTHUOC,
  581.                       p_CACH_SU_DUNG,
  582.                       p_namhientai,
  583.                       p_stt_dieutri,
  584.                       p_stt_benhan,
  585.                       p_stt_dotdieutri,
  586.                       p_TU_TU_THUOC,
  587.                       v_ngaychuyen,
  588.                       v_thanghientai,
  589.                       p_MABENHNHAN,
  590.                       p_maphongban,
  591.                       1,
  592.                       v_KEY_QL,
  593.                       v_SOLOSANXUAT,
  594.                       v_NGAYSANXUAT,
  595.                       v_MaLoaiVatTu,
  596.                       v_KyHieuNhomBC,
  597.                       v_HAM_LUONG,
  598.                       v_DUONG_DUNG,
  599.                       v_SO_DANG_KY,
  600.                       p_sovaovien,
  601.                       p_sovaovien_dt,
  602.                       v_SONHAPKHOCHITIET,
  603.                       v_id_dieutri,
  604.                       p_bant,
  605.                       v_ngoaidanhmuc,
  606.                       p_magoidichvu,
  607.                       P_ID_DINHMUC,
  608.                       P_SOLUONG_DINHMUC,
  609.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  610.                        p_sophieu ELSE NULL END,
  611.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  612.                        p_macls ELSE NULL END,
  613.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  614.                        p_sophieu ELSE NULL END,
  615.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  616.                        p_macls ELSE NULL END,
  617.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  618.                        p_sophieu ELSE NULL END,
  619.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  620.                        p_macls ELSE NULL END);
  621.  
  622.                   IF SQL%ROWCOUNT <= 0 THEN
  623.                     v_rollback := 1;
  624.                   END IF;
  625.                   -- them vao tru kho benh vien --------------------------------------------------------
  626.                   INSERT INTO his_public_list.ls_sudungthuoc
  627.                   (MA_BENH_NHAN,
  628.                    DVTT,
  629.                    MA_TOA_THUOC,
  630.                    STT_TOATHUOC,
  631.                    MAVATTU,
  632.                    TEN_VAT_TU,
  633.                    HOAT_CHAT,
  634.                    SO_LUONG,
  635.                    DONGIA,
  636.                    THANHTIEN,
  637.                    SO_NGAY_UONG,
  638.                    SANG_UONG,
  639.                    TRUA_UONG,
  640.                    CHIEU_UONG,
  641.                    TOI_UONG,
  642.                    NGAY_RA_TOA,
  643.                    NGAY_HET_THUOC,
  644.                    MA_BAC_SI_THEMTHUOC,
  645.                    GHI_CHU_CT_TOA_THUOC,
  646.                    NGHIEP_VU,
  647.                    NOITRU,
  648.                    STT_DIEUTRI,
  649.                    STT_BENHAN,
  650.                    STT_DOTDIEUTRI,
  651.                    SOVAOVIEN_NOI,
  652.                    SOVAOVIEN_DT,
  653.                    ID_DIEUTRI)
  654.                   VALUES
  655.                     (p_MABENHNHAN,
  656.                       p_DVTT,
  657.                       p_MA_TOA_THUOC,
  658.                       p_MA_TOA_THUOC || '_' ||
  659.                       CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  660.                       p_MAVATTU,
  661.                       P_TENVATTU,
  662.                       p_HOAT_CHAT,
  663.                       V_soluongcantru, -- p_SO_LUONG,
  664.                       v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV,
  665.                       V_soluongcantru * v_dongiaban_taiquaythuoc, -- V_THANHTIEN_THUOC,
  666.                       p_SO_NGAY_UONG,
  667.                       p_SANG_UONG,
  668.                       p_TRUA_UONG,
  669.                       p_CHIEU_UONG,
  670.                       p_TOI_UONG,
  671.                       v_ngaychuyen,
  672.                       v_ngaychuyen + p_SO_NGAY_UONG,
  673.                       p_MA_BAC_SI_THEMTHUOC,
  674.                       p_GHI_CHU_CT_TOA_THUOC,
  675.                       p_NGHIEP_VU,
  676.                       1,
  677.                      p_stt_dieutri,
  678.                      p_stt_benhan,
  679.                      p_stt_dotdieutri,
  680.                      p_sovaovien,
  681.                      p_sovaovien_dt,
  682.                      v_id_dieutri);
  683.  
  684.                   --------------------END // ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  685.                   -- X? L? NGHI?P V? KHO
  686.                   V_KT_TONTAI_TRONNGAY := 0;
  687.                   SELECT COUNT(1)
  688.                   INTO V_KT_TONTAI_TRONNGAY
  689.                   FROM his_manager.DC_TB_XNT_BIENDONG
  690.                   WHERE --KEY_QL = V_KEY_QL
  691.                     DVTT = P_DVTT
  692.                     AND MAKHOVATTU =v_makhovattu
  693.                     AND MAVATTU = P_MAVATTU
  694.                     AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  695.                     AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  696.  
  697.                   BEGIN
  698.                     IF V_KT_TONTAI_TRONNGAY > 0 THEN
  699.                       --IF V_I = 1 THEN
  700.  
  701.                       -- NEU NGAY BIEN DONG LA NGUYEN CHUYEN THI CAP NHAT SO LUONG CHUYEN DI
  702.                       UPDATE his_manager.DC_TB_XNT_BIENDONG
  703.                       SET SL_TON          = SL_TON - V_SOLUONGCANTRU,
  704.                         SL_XUAT_NV3_NOI = SL_XUAT_NV3_NOI + V_SOLUONGCANTRU
  705.                       WHERE --KEY_QL = V_KEY_QL
  706.                         DVTT = P_DVTT
  707.                         AND MAKHOVATTU = v_makhovattu
  708.                         AND MAVATTU = P_MAVATTU
  709.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  710.                         AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  711.                       IF sql%rowcount = 0 THEN
  712.                         V_ROLLBACK := 1;
  713.                       END IF;
  714.                     ELSE
  715.                       INSERT INTO his_manager.DC_TB_XNT_BIENDONG
  716.                       (KEY_QL,
  717.                        DVTT,
  718.                        MAKHOVATTU,
  719.                        MAVATTU,
  720.                        TENVATTU,
  721.                        DONGIA,
  722.                        NGAY,
  723.                        SOLOSANXUAT,
  724.                        NGAYSANXUAT,
  725.                        NGAYHETHAN,
  726.                        HOATCHAT,
  727.                        HAMLUONG,
  728.                        DVT,
  729.                        CACHSUDUNG,
  730.                        NGOAIDANHMUCBHYT,
  731.                        HOAT_DONG,
  732.                        NGAYNHAPKHO,
  733.                        SONHAPKHOCHITIET,
  734.                        NGAYBIENDONG,
  735.                        SL_NHAP,
  736.                        SL_CHUYENDEN,
  737.                        SL_CHUYENDI,
  738.                        SL_HUY,
  739.                        SL_XUAT_KO_NV3,
  740.                        SL_XUAT_NV3_NGOAI,
  741.                        SL_XUAT_NV3_NOI,
  742.                        SL_HOANTRA_DI,
  743.                        SL_HOANTRA_DEN,
  744.                        SL_HOANTRA_NCC,
  745.                        SL_HOANTRA_NV3_NGOAI,
  746.                        SL_HOANTRA_NV3_NOI,
  747.                        SL_TON,
  748.                        TT_BIENDONG,
  749.                        TT_MOINHAT,
  750.                        THANGBIENDONG_SAUSO,
  751.                        NAMBIENDONG,
  752.                        DV_INT)
  753.                         SELECT KEY_QL,
  754.                           DVTT,
  755.                           MAKHOVATTU,
  756.                           MAVATTU,
  757.                           TENVATTU,
  758.                           DONGIA,
  759.                           NGAY,
  760.                           SOLOSANXUAT,
  761.                           NGAYSANXUAT,
  762.                           NGAYHETHAN,
  763.                           HOATCHAT,
  764.                           HAMLUONG,
  765.                           DVT,
  766.                           CACHSUDUNG,
  767.                           NGOAIDANHMUCBHYT,
  768.                           HOAT_DONG,
  769.                           NGAYNHAPKHO,
  770.                           SONHAPKHOCHITIET,
  771.                           TRUNC(v_ngaychuyen),
  772.                           0, --SL_NHAP,
  773.                           0, --SL_CHUYENDEN,
  774.                           0, --SL_CHUYENDI,
  775.                           0, --SL_HUY,
  776.                           0, --SL_XUAT_KO_NV3,
  777.                           0, -- SL_XUAT_NV3_NGOAI
  778.                           V_SOLUONGCANTRU, --SL_XUAT_NV3_NOI,
  779.                           0, --SL_HOANTRA_DI,
  780.                           0, --SL_HOANTRA_DEN,
  781.                           0, --SL_HOANTRA_NCC,
  782.                           0, --SL_HOANTRA_NV3_NGOAI,
  783.                           0, --SL_HOANTRA_NV3_NOI,
  784.                           SL_TON - V_SOLUONGCANTRU,
  785.                           0, --TT_BIENDONG,
  786.                           1,
  787.                           --EXTRACT(MONTH FROM v_ngaychuyen) || EXTRACT(YEAR FROM P_NGAYCHUYEN)
  788.                           TO_NUMBER(TO_CHAR(v_ngaychuyen, 'MMYYYY')),
  789.                           EXTRACT(YEAR FROM v_ngaychuyen),
  790.                           P_DVTT
  791.                         FROM his_manager.DC_TB_XNT_BIENDONG
  792.                         WHERE DVTT = P_DVTT
  793.                               AND MAKHOVATTU = v_makhovattu
  794.                               AND MAVATTU = P_MAVATTU
  795.                               --AND DONGIA = V_DONGIA
  796.                               AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  797.                               AND NGAYBIENDONG = V_NGAYBIENDONG;
  798.                       IF sql%rowcount = 0 THEN
  799.                         V_ROLLBACK := 1;
  800.                       END IF;
  801.                     END IF;
  802.                     his_manager.CHECK_DONGBO_XNT(P_DVTT,
  803.                                                  v_makhovattu,
  804.                                                  V_SONHAPKHOCHITIET,
  805.                                                  v_ngaychuyen,
  806.                                                  'TTNOI');
  807.  
  808.                     CAPNHAT_XNT_SONHAPKHO(p_DVTT,
  809.                                           v_makhovattu,
  810.                                           v_SONHAPKHOCHITIET);
  811.  
  812.                     SELECT MAX(NGAYBIENDONG)
  813.                     INTO V_MAX_NGAYBIENDONG
  814.                     FROM his_manager.DC_TB_XNT_BIENDONG
  815.                     WHERE DVTT = P_DVTT
  816.                           AND MAKHOVATTU = v_makhovattu
  817.                           AND MAVATTU = P_MAVATTU
  818.                           --AND DONGIA = V_DONGIA
  819.                           AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET;
  820.  
  821.                     UPDATE his_manager.DC_TB_XNT_BIENDONG
  822.                     SET TT_MOINHAT = 0
  823.                     WHERE DVTT = P_DVTT
  824.                           AND MAKHOVATTU = v_makhovattu
  825.                           AND MAVATTU = P_MAVATTU
  826.                           --AND DONGIA = V_DONGIA
  827.                           AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  828.                           --AND NGAYSANXUAT = V_NGAYSANXUAT
  829.                           AND NGAYBIENDONG < V_MAX_NGAYBIENDONG;
  830.  
  831.                     /*update NOITRU_PTT_THAMCHIEUTONGTIEN
  832.                       set tongtienthamchieu = tongtienthamchieu +
  833.                                               v_dongia * V_SOLUONGCANTRU
  834.                     where SOPHIEUTHANHTOAN = p_sophieuthanhtoan
  835.                       and DVTT = p_DVTT
  836.                       and sovaovien = p_sovaovien
  837.                       and sovaovien_dt = p_sovaovien_dt;*/
  838.                   END;
  839.                   V_FINISHED := 1;
  840.                 --END// X? L? NGHI?P V? KHO
  841.                 -- ----------------------------------K?T TH?C TH?C HI?N C?U L?NH
  842.                 ELSIF V_SOLUONG_CK < V_SOLUONGCANTRU AND V_SOLUONGCANTRU > 0 THEN
  843.                   -- S? LU?NG CK NH? HON S? LU?NG C?N TR?, QU?T CON TR?
  844.  
  845.                   --------------------// ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  846.                   SELECT NVL(MAX(CAST(NVL(his_manager.SUBSTRING_INDEX(STT_TOATHUOC,
  847.                                                                       '_',
  848.                                                                       -1),
  849.                                           0) AS NUMBER(10, 0))),
  850.                              0)
  851.                   INTO v_stt_toathuoc
  852.                   FROM his_manager.NOITRU_CT_TOA_THUOC
  853.                   WHERE DVTT = p_dvtt
  854.                         AND MA_TOA_THUOC = p_MA_TOA_THUOC
  855.                         AND stt_dieutri = p_stt_dieutri
  856.                         AND stt_benhan = p_stt_benhan
  857.                         AND stt_dotdieutri = p_stt_dotdieutri
  858.                         AND sovaovien = p_sovaovien
  859.                         AND sovaovien_dt = p_sovaovien_dt;
  860.  
  861.                   INSERT INTO his_manager.NOITRU_CT_TOA_THUOC
  862.                   (STT_TOATHUOC,
  863.                    STT_order,
  864.                    DVTT,
  865.                    MA_TOA_THUOC,
  866.                    MAKHOVATTU,
  867.                    MAVATTU,
  868.                    TEN_VAT_TU,
  869.                    HOAT_CHAT,
  870.                    DVT,
  871.                    NGHIEP_VU,
  872.                    SO_LUONG,
  873.                    SO_LUONG_THUC_LINH,
  874.                    DONGIA_BAN_BV,
  875.                    DONGIA_BAN_BH,
  876.                    THANHTIEN_THUOC,
  877.                    SO_NGAY_UONG,
  878.                    SANG_UONG,
  879.                    TRUA_UONG,
  880.                    CHIEU_UONG,
  881.                    TOI_UONG,
  882.  
  883.                    NGAY_RA_TOA,
  884.                    GHI_CHU_CT_TOA_THUOC,
  885.                    MA_BAC_SI_THEMTHUOC,
  886.  
  887.                    CACH_SU_DUNG,
  888.                    NAM,
  889.                    stt_dieutri,
  890.                    stt_benhan,
  891.                    stt_dotdieutri,
  892.                    TU_TU_THUOC,
  893.                    NGAY,
  894.                    THANG,
  895.                    mabenhnhan,
  896.                    khoalap,
  897.                    TRANG_THAI,
  898.                    KEY_QL,
  899.                    SOLOSANXUAT,
  900.                    NGAYSANXUAT,
  901.                    MaLoaiVatTu,
  902.                    KyHieuNhomBC,
  903.                    HAM_LUONG,
  904.                    DUONG_DUNG,
  905.                    SO_DANG_KY,
  906.                    sovaovien,
  907.                    sovaovien_dt,
  908.                    SONHAPKHOCHITIET,
  909.                    ID_DIEUTRI,
  910.                    BANT,
  911.                    NGOAI_DANH_MUC,
  912.                    MAGOIDICHVU,
  913.                    ID_DINHMUC,
  914.                    SOLUONG_DINHMUC,
  915.                    SO_PHIEU_XN,
  916.                    MA_XN,
  917.                    SO_PHIEU_CDHA,
  918.                    MA_CDHA,
  919.                    SO_PHIEU_DV,
  920.                    MA_DV)
  921.                   VALUES
  922.                     (p_MA_TOA_THUOC || '_' ||
  923.                      CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  924.                       v_stt_order + 1,
  925.                       p_DVTT,
  926.                       p_MA_TOA_THUOC,
  927.                       v_makhovattu,
  928.                       p_MAVATTU,
  929.                       P_TENVATTU,
  930.                       p_HOAT_CHAT,
  931.                       p_DVT,
  932.                       p_NGHIEP_VU,
  933.                       v_soluongcantru, -- p_SO_LUONG    ,
  934.                                        v_soluongcantru, -- pp_SO_LUONG_THUC_LINH   ,
  935.                                        v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV   ,
  936.                                        v_dongia, -- p_DONGIA_BAN_BH   ,
  937.                                        v_soluongcantru * v_dongiaban_taiquaythuoc, -- p_THANHTIEN_THUOC   ,
  938.                                        p_SO_NGAY_UONG,
  939.                                        p_SANG_UONG,
  940.                                        p_TRUA_UONG,
  941.                                        p_CHIEU_UONG,
  942.                                        p_TOI_UONG,
  943.                                        v_NGAY_RA_TOA,
  944.                       p_GHI_CHU_CT_TOA_THUOC,
  945.                       p_MA_BAC_SI_THEMTHUOC,
  946.                       p_CACH_SU_DUNG,
  947.                       p_namhientai,
  948.                       p_stt_dieutri,
  949.                       p_stt_benhan,
  950.                       p_stt_dotdieutri,
  951.                       p_TU_TU_THUOC,
  952.                       v_ngaychuyen,
  953.                       v_thanghientai,
  954.                       p_MABENHNHAN,
  955.                       p_maphongban,
  956.                       1,
  957.                       v_KEY_QL,
  958.                       v_SOLOSANXUAT,
  959.                       v_NGAYSANXUAT,
  960.                       v_MaLoaiVatTu,
  961.                       v_KyHieuNhomBC,
  962.                       v_HAM_LUONG,
  963.                       v_DUONG_DUNG,
  964.                       v_SO_DANG_KY,
  965.                       p_sovaovien,
  966.                       p_sovaovien_dt,
  967.                       v_SONHAPKHOCHITIET,
  968.                       v_id_dieutri,
  969.                       p_bant,
  970.                       v_ngoaidanhmuc,
  971.                       p_magoidichvu,
  972.                       P_ID_DINHMUC,
  973.                       P_SOLUONG_DINHMUC,
  974.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  975.                        p_sophieu ELSE NULL END,
  976.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  977.                        p_macls ELSE NULL END,
  978.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  979.                        p_sophieu ELSE NULL END,
  980.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  981.                        p_macls ELSE NULL END,
  982.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  983.                        p_sophieu ELSE NULL END,
  984.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  985.                        p_macls ELSE NULL END);
  986.  
  987.                   IF SQL%ROWCOUNT <= 0 THEN
  988.                     v_rollback := 1;
  989.                   END IF;
  990.                   -- them vao tru kho benh vien --------------------------------------------------------
  991.                   INSERT INTO his_public_list.ls_sudungthuoc
  992.                   (MA_BENH_NHAN,
  993.                    DVTT,
  994.                    MA_TOA_THUOC,
  995.                    STT_TOATHUOC,
  996.                    MAVATTU,
  997.                    TEN_VAT_TU,
  998.                    HOAT_CHAT,
  999.                    SO_LUONG,
  1000.                    DONGIA,
  1001.                    THANHTIEN,
  1002.                    SO_NGAY_UONG,
  1003.                    SANG_UONG,
  1004.                    TRUA_UONG,
  1005.                    CHIEU_UONG,
  1006.                    TOI_UONG,
  1007.                    NGAY_RA_TOA,
  1008.                    NGAY_HET_THUOC,
  1009.                    MA_BAC_SI_THEMTHUOC,
  1010.                    GHI_CHU_CT_TOA_THUOC,
  1011.                    NGHIEP_VU,
  1012.                    NOITRU,
  1013.                    STT_DIEUTRI,
  1014.                    STT_BENHAN,
  1015.                    STT_DOTDIEUTRI,
  1016.                    SOVAOVIEN_NOI,
  1017.                    SOVAOVIEN_DT,
  1018.                    ID_DIEUTRI)
  1019.                   VALUES
  1020.                     (p_MABENHNHAN,
  1021.                       p_DVTT,
  1022.                       p_MA_TOA_THUOC,
  1023.                       p_MA_TOA_THUOC || '_' ||
  1024.                       CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  1025.                       p_MAVATTU,
  1026.                       P_TENVATTU,
  1027.                       p_HOAT_CHAT,
  1028.                       v_SOLUONG_CK, -- p_SO_LUONG,
  1029.                       v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV,
  1030.                       v_SOLUONG_CK * v_dongiaban_taiquaythuoc, -- V_THANHTIEN_THUOC,
  1031.                       p_SO_NGAY_UONG,
  1032.                       p_SANG_UONG,
  1033.                       p_TRUA_UONG,
  1034.                       p_CHIEU_UONG,
  1035.                       p_TOI_UONG,
  1036.                       v_ngaychuyen,
  1037.                       v_ngaychuyen + p_SO_NGAY_UONG,
  1038.                       p_MA_BAC_SI_THEMTHUOC,
  1039.                       p_GHI_CHU_CT_TOA_THUOC,
  1040.                       p_NGHIEP_VU,
  1041.                       1,
  1042.                      p_stt_dieutri,
  1043.                      p_stt_benhan,
  1044.                      p_stt_dotdieutri,
  1045.                      p_sovaovien,
  1046.                      p_sovaovien_dt,
  1047.                      v_id_dieutri);
  1048.                   --------------------END // ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  1049.                   --// X? L? NGHI?P V? KHO
  1050.                   V_KT_TONTAI_TRONNGAY := 0;
  1051.                   SELECT COUNT(1)
  1052.                   INTO V_KT_TONTAI_TRONNGAY
  1053.                   FROM his_manager.DC_TB_XNT_BIENDONG
  1054.                   WHERE --KEY_QL = V_KEY_QL
  1055.                     DVTT = P_DVTT
  1056.                     AND MAKHOVATTU = v_makhovattu
  1057.                     AND MAVATTU = P_MAVATTU
  1058.                     AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1059.                     AND NGAYBIENDONG = TRUNC(v_ngaychuyen); --V_NGAYBIENDONG;
  1060.  
  1061.                   IF V_KT_TONTAI_TRONNGAY > 0 THEN
  1062.                     --IF V_I = 1 THEN
  1063.                     -- NEU NGAY BIEN DONG LA NGUYEN CHUYEN THI CAP NHAT SO LUONG CHUYEN DI
  1064.                     UPDATE his_manager.DC_TB_XNT_BIENDONG
  1065.                     SET SL_TON          = 0,
  1066.                       SL_XUAT_NV3_NOI = SL_XUAT_NV3_NOI + v_SOLUONG_CK
  1067.                     WHERE --KEY_QL = V_KEY_QL
  1068.                       DVTT = P_DVTT
  1069.                       AND MAKHOVATTU = v_makhovattu
  1070.                       AND MAVATTU = P_MAVATTU
  1071.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1072.                       AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  1073.                     IF sql%rowcount = 0 THEN
  1074.                       V_ROLLBACK := 1;
  1075.                     END IF;
  1076.                   ELSE
  1077.                     INSERT INTO his_manager.DC_TB_XNT_BIENDONG
  1078.                     (KEY_QL,
  1079.                      DVTT,
  1080.                      MAKHOVATTU,
  1081.                      MAVATTU,
  1082.                      TENVATTU,
  1083.                      DONGIA,
  1084.                      NGAY,
  1085.                      SOLOSANXUAT,
  1086.                      NGAYSANXUAT,
  1087.                      NGAYHETHAN,
  1088.                      HOATCHAT,
  1089.                      HAMLUONG,
  1090.                      DVT,
  1091.                      CACHSUDUNG,
  1092.                      NGOAIDANHMUCBHYT,
  1093.                      HOAT_DONG,
  1094.                      NGAYNHAPKHO,
  1095.                      SONHAPKHOCHITIET,
  1096.                      NGAYBIENDONG,
  1097.                      SL_NHAP,
  1098.                      SL_CHUYENDEN,
  1099.                      SL_CHUYENDI,
  1100.                      SL_HUY,
  1101.                      SL_XUAT_KO_NV3,
  1102.                      SL_XUAT_NV3_NGOAI,
  1103.                      SL_XUAT_NV3_NOI,
  1104.                      SL_HOANTRA_DI,
  1105.                      SL_HOANTRA_DEN,
  1106.                      SL_HOANTRA_NCC,
  1107.                      SL_HOANTRA_NV3_NGOAI,
  1108.                      SL_HOANTRA_NV3_NOI,
  1109.                      SL_TON,
  1110.                      TT_BIENDONG,
  1111.                      TT_MOINHAT,
  1112.                      THANGBIENDONG_SAUSO,
  1113.                      NAMBIENDONG,
  1114.                      DV_INT)
  1115.                       SELECT KEY_QL,
  1116.                         DVTT,
  1117.                         MAKHOVATTU,
  1118.                         MAVATTU,
  1119.                         TENVATTU,
  1120.                         DONGIA,
  1121.                         NGAY,
  1122.                         SOLOSANXUAT,
  1123.                         NGAYSANXUAT,
  1124.                         NGAYHETHAN,
  1125.                         HOATCHAT,
  1126.                         HAMLUONG,
  1127.                         DVT,
  1128.                         CACHSUDUNG,
  1129.                         NGOAIDANHMUCBHYT,
  1130.                         HOAT_DONG,
  1131.                         NGAYNHAPKHO,
  1132.                         SONHAPKHOCHITIET,
  1133.                         TRUNC(v_ngaychuyen),
  1134.                         0, --SL_NHAP,
  1135.                         0, --SL_CHUYENDEN,
  1136.                         0, --SL_CHUYENDI,
  1137.                         0, --SL_HUY,
  1138.                         0, --SL_XUAT_KO_NV3,
  1139.                         0, -- SL_XUAT_NV3_NGOAI
  1140.                         V_SOLUONG_CK, --SL_XUAT_NV3_NOI,
  1141.                         0, --SL_HOANTRA_DI,
  1142.                         0, --SL_HOANTRA_DEN,
  1143.                         0, --SL_HOANTRA_NCC,
  1144.                         0, --SL_HOANTRA_NV3_NGOAI,
  1145.                         0, --SL_HOANTRA_NV3_NOI,
  1146.                         SL_TON - V_SOLUONG_CK,
  1147.                         0, --TT_BIENDONG,
  1148.                         1,
  1149.                         TO_NUMBER(EXTRACT(MONTH FROM v_ngaychuyen) ||
  1150.                                   EXTRACT(YEAR FROM v_ngaychuyen)),
  1151.                         EXTRACT(YEAR FROM v_ngaychuyen),
  1152.                         TO_NUMBER(P_DVTT)
  1153.                       FROM his_manager.DC_TB_XNT_BIENDONG
  1154.                       WHERE DVTT = P_DVTT
  1155.                             AND MAKHOVATTU = v_makhovattu
  1156.                             AND MAVATTU = P_MAVATTU
  1157.                             --AND DONGIA = V_DONGIA
  1158.                             AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1159.                             --AND NGAYSANXUAT = V_NGAYSANXUAT
  1160.                             AND NGAYBIENDONG = V_NGAYBIENDONG;
  1161.                     --AND TT_MOINHAT = 1;
  1162.                     IF sql%rowcount = 0 THEN
  1163.                       V_ROLLBACK := 1;
  1164.                     END IF;
  1165.                   END IF;
  1166.  
  1167.                   his_manager.CHECK_DONGBO_XNT(P_DVTT,
  1168.                                                v_makhovattu,
  1169.                                                V_SONHAPKHOCHITIET,
  1170.                                                v_ngaychuyen,
  1171.                                                'TTNOI');
  1172.  
  1173.                   CAPNHAT_XNT_SONHAPKHO(p_DVTT,
  1174.                                         v_makhovattu,
  1175.                                         v_SONHAPKHOCHITIET);
  1176.  
  1177.                   SELECT MAX(NGAYBIENDONG)
  1178.                   INTO V_MAX_NGAYBIENDONG
  1179.                   FROM his_manager.DC_TB_XNT_BIENDONG
  1180.                   WHERE DVTT = P_DVTT
  1181.                         AND MAKHOVATTU = v_makhovattu
  1182.                         AND MAVATTU = P_MAVATTU
  1183.                         -- AND DONGIA = V_DONGIA
  1184.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET;
  1185.  
  1186.                   UPDATE his_manager.DC_TB_XNT_BIENDONG
  1187.                   SET TT_MOINHAT = 0
  1188.                   WHERE DVTT = P_DVTT
  1189.                         AND MAKHOVATTU = v_makhovattu
  1190.                         AND MAVATTU = P_MAVATTU
  1191.                         -- AND DONGIA = V_DONGIA
  1192.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1193.                         --AND NGAYSANXUAT = V_NGAYSANXUAT
  1194.                         AND NGAYBIENDONG < V_MAX_NGAYBIENDONG; -- 13/06/2015
  1195.                   V_SOLUONGCANTRU := V_SOLUONGCANTRU - V_SOLUONG_CK;
  1196.  
  1197.                 /*update NOITRU_PTT_THAMCHIEUTONGTIEN
  1198.                   set tongtienthamchieu = tongtienthamchieu +
  1199.                                           v_dongia * V_SOLUONGCANTRU
  1200.                 where SOPHIEUTHANHTOAN = p_sophieuthanhtoan
  1201.                   and DVTT = p_DVTT
  1202.                   and sovaovien = p_sovaovien
  1203.                   and sovaovien_dt = p_sovaovien_dt;*/
  1204.                 --END// X? L? NGHI?P V? KHO
  1205.  
  1206.                 ELSIF V_SOLUONGCANTRU < 0 THEN
  1207.                   V_FINISHED := 1;
  1208.                 END IF;
  1209.                 SELECT COUNT(1)
  1210.                 INTO V_CHK_SL_TON
  1211.                 FROM his_manager.DC_TB_XNT_BIENDONG
  1212.                 WHERE DVTT = P_DVTT
  1213.                       AND MAKHOVATTU = v_makhovattu
  1214.                       AND MAVATTU = P_MAVATTU
  1215.                       AND NGAYBIENDONG >= TRUNC(v_ngaychuyen)
  1216.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1217.                       -- AND NGAYSANXUAT = V_NGAYSANXUAT
  1218.                       AND SL_TON < 0;
  1219.                 SELECT COUNT(1)
  1220.                 INTO V_CHK_SL_CHUYENDI
  1221.                 FROM his_manager.DC_TB_XNT_BIENDONG
  1222.                 WHERE DVTT = P_DVTT
  1223.                       AND MAKHOVATTU = v_makhovattu
  1224.                       AND MAVATTU = P_MAVATTU
  1225.                       AND NGAYBIENDONG >= TRUNC(v_ngaychuyen)
  1226.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1227.                       -- AND NGAYSANXUAT = V_NGAYSANXUAT
  1228.                       AND SL_CHUYENDI < 0;
  1229.  
  1230.                 CASE
  1231.                   WHEN V_CHK_SL_TON > 0 THEN
  1232.                   V_ROLLBACK := 1;
  1233.                   WHEN V_CHK_SL_CHUYENDI > 0 THEN
  1234.                   V_ROLLBACK := 1;
  1235.                 ELSE
  1236.                   V_ROLLBACK := 0;
  1237.                 END CASE;
  1238.  
  1239.                 IF V_ROLLBACK = 1 THEN
  1240.                   V_FINISHED := 1;
  1241.                 END IF;
  1242.                 v_soluongcantru := v_soluong_temp - v_soluongcantru;
  1243.                 IF v_soluongcantru <= 0 THEN
  1244.                   EXIT;
  1245.                   ELSE V_FINISHED := 0;
  1246.                 END IF;
  1247.               END LOOP;
  1248.               CLOSE XUATKHO_CURSOR;
  1249.  
  1250.             END;
  1251.           END;
  1252.  
  1253.         ELSE
  1254.           --P_MAXHIENTAI < P_SOLUONG
  1255.           P_SAISOT := 6; -- S? LU?NG KH?NG D?
  1256.         END IF;
  1257.       ELSE
  1258.         P_SAISOT := 6;
  1259.       END IF; --kiem tra sl ton cho phep cap thuoc
  1260.  
  1261.       IF V_ROLLBACK = 1 THEN
  1262.         ROLLBACK;
  1263.       END IF;
  1264.       RETURN P_SAISOT;
  1265.     ELSE --tham so 91133 = 0
  1266.       --KIEM TRA TON KHO HIEN TAI
  1267.       INSERT INTO his_manager.KIEMTRA_TONKHO_CHUYEN
  1268.       (SONHAPKHOCHITIET,
  1269.        DVTT,
  1270.        MAKHOVATTU,
  1271.        SL_TON,
  1272.        NGAYBIENDONG,
  1273.        MINNGAYBIENDONG,
  1274.        MAXNGAYBIENDONG,
  1275.        ID_KIEMTRAKHO)
  1276.         SELECT SONHAPKHOCHITIET,
  1277.           a.DVTT,
  1278.           MAKHOVATTU,
  1279.           SL_TON,
  1280.           NGAYBIENDONG,
  1281.           MIN(NGAYBIENDONG) OVER(PARTITION BY SONHAPKHOCHITIET, a.DVTT, MAKHOVATTU) MINNGAYBIENDONG,
  1282.           MAX(NGAYBIENDONG) OVER(PARTITION BY SONHAPKHOCHITIET, a.DVTT, MAKHOVATTU) MAXNGAYBIENDONG,
  1283.           V_KIEMTRAKHO
  1284.         FROM his_manager.DC_TB_XNT_BIENDONG A
  1285.           JOIN HIS_MANAGER.DC_TB_VATTU B
  1286.             ON A.DVTT = B.DVTT
  1287.                AND A.MAVATTU = B.MAVATTU
  1288.         WHERE MAKHOVATTU = p_MAKHOVATTU
  1289.               AND A.DVTT = P_DVTT
  1290.               AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  1291.               AND KHOA_SONHAPKHOCHITIET = 0
  1292.               AND NGAYBIENDONG <= v_ngaychuyen
  1293.               AND HOAT_DONG = 1;
  1294.       --LAY TON KHO HIEN TAI
  1295.       SELECT SUM(SL_TON)
  1296.       INTO V_SUM
  1297.       FROM his_manager.KIEMTRA_TONKHO_CHUYEN
  1298.       WHERE NGAYBIENDONG = MAXNGAYBIENDONG
  1299.             AND DVTT = P_DVTT
  1300.             AND ID_KIEMTRAKHO = V_KIEMTRAKHO
  1301.             AND MAKHOVATTU = p_MAKHOVATTU;
  1302.  
  1303.       IF V_SUM >= P_SOLUONG THEN
  1304.  
  1305.         -----------------ID_TEMCHUYENKHO = V_XULYKHO
  1306.         INSERT INTO his_manager.TMP_CHUYENKHO
  1307.         (SONHAPKHOCHITIET,
  1308.          NGAYBIENDONG,
  1309.          DVTT,
  1310.          ID_TEMCHUYENKHO,
  1311.          MAKHOVATTU,
  1312.          MAVATTU)
  1313.           SELECT SONHAPKHOCHITIET,
  1314.             MAX(NGAYBIENDONG),
  1315.             P_DVTT,
  1316.             V_XULYKHO,
  1317.             p_MAKHOVATTU,
  1318.             a.MAVATTU
  1319.           FROM his_manager.DC_TB_XNT_BIENDONG A
  1320.             JOIN HIS_MANAGER.DC_TB_VATTU B
  1321.               ON A.DVTT = B.DVTT
  1322.                  AND A.MAVATTU = B.MAVATTU
  1323.           WHERE MAKHOVATTU = p_MAKHOVATTU
  1324.                 AND a.DVTT = P_DVTT
  1325.                 AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  1326.                 AND HOAT_DONG = 1
  1327.                 AND KHOA_SONHAPKHOCHITIET = 0
  1328.                 AND NGAYBIENDONG <= v_ngaychuyen
  1329.                 -- AND DONGIA = P_DONGIA//Khong phan biet don gia
  1330.                 AND EXISTS (SELECT NULL
  1331.                             FROM his_manager.KIEMTRA_TONKHO_CHUYEN B
  1332.                             WHERE A.SONHAPKHOCHITIET = B.SONHAPKHOCHITIET
  1333.                                   AND A.DVTT = B.DVTT
  1334.                                   AND A.NGAYBIENDONG = B.MAXNGAYBIENDONG
  1335.                                   AND B.NGAYBIENDONG = B.MAXNGAYBIENDONG
  1336.                                   AND B.SL_TON > 0
  1337.                                   AND b.dvtt = P_DVTT
  1338.                                   AND ID_KIEMTRAKHO = V_KIEMTRAKHO
  1339.                                   AND b.makhovattu = p_MAKHOVATTU)
  1340.           --AND NGAYNHAPKHO <= v_ngaychuyen
  1341.  
  1342.           GROUP BY SONHAPKHOCHITIET, a.MAVATTU
  1343.           ORDER BY SONHAPKHOCHITIET;
  1344.  
  1345.         SELECT SUM(SL_TON)
  1346.         INTO P_MAXHIENTAI
  1347.         FROM his_manager.DC_TB_XNT_BIENDONG A
  1348.           JOIN HIS_MANAGER.DC_TB_VATTU B
  1349.             ON A.DVTT = B.DVTT
  1350.                AND A.MAVATTU = B.MAVATTU
  1351.         WHERE A.MAKHOVATTU = p_MAKHOVATTU
  1352.               AND A.DVTT = P_DVTT
  1353.               AND DINHMUC_MA_NHOM_VATTU = p_MAVATTU_DINMUC
  1354.               AND TT_MOINHAT = 1
  1355.               AND HOAT_DONG = 1
  1356.               -- AND SL_TON > 0
  1357.               AND KHOA_SONHAPKHOCHITIET = 0;
  1358.         -- AND DONGIA = p_DONGIA_BAN_BH;
  1359.         /*
  1360.           INSERT INTO TMP_TEST SELECT * FROM TMP_CHUYENKHO WHERE ID_TEMCHUYENKHO = V_XULYKHO;
  1361.         COMMIT;
  1362.         */
  1363.         --GET NGAY BIEN DONG KE CAN
  1364.  
  1365.         IF P_MAXHIENTAI >= P_SOLUONG AND P_SOLUONG > 0 THEN
  1366.           SELECT NVL(MAX(STT_order), 0)
  1367.           INTO v_stt_order
  1368.           FROM his_manager.NOITRU_CT_TOA_THUOC
  1369.           WHERE DVTT = p_dvtt
  1370.                 AND MA_TOA_THUOC = p_MA_TOA_THUOC
  1371.                 AND stt_dieutri = p_stt_dieutri
  1372.                 AND stt_benhan = p_stt_benhan
  1373.                 AND stt_dotdieutri = p_stt_dotdieutri
  1374.                 AND sovaovien = p_sovaovien
  1375.                 AND sovaovien_dt = p_sovaovien_dt;
  1376.           BEGIN
  1377.             DECLARE
  1378.               CURSOR XUATKHO_CURSOR IS
  1379.                 -- KHAI BÁO CON TR? QUÉT QUA S? LU?NG T?N
  1380.  
  1381.                 SELECT KEY_QL,
  1382.                   SL_TON,
  1383.                   SOLOSANXUAT,
  1384.                   DONGIA,
  1385.                   NGAYSANXUAT,
  1386.                   SONHAPKHOCHITIET,
  1387.                   MAVATTU
  1388.                 FROM (SELECT KEY_QL,
  1389.                         MIN(a.SL_TON) AS SL_TON,
  1390.                         SOLOSANXUAT,
  1391.                         DONGIA,
  1392.                         NGAYSANXUAT,
  1393.                         A.SONHAPKHOCHITIET,
  1394.                         NGAYNHAPKHO,
  1395.                         a.MAVATTU
  1396.                       --SL_XUAT_NV3_NGOAI,
  1397.                       --A.NGAYBIENDONG
  1398.                       FROM his_manager.DC_TB_XNT_BIENDONG A
  1399.                         INNER JOIN his_manager.TMP_CHUYENKHO B
  1400.                           ON A.NGAYBIENDONG >= B.NGAYBIENDONG
  1401.                              AND A.SONHAPKHOCHITIET = B.SONHAPKHOCHITIET
  1402.                              AND a.dvtt = b.DVTT
  1403.                              AND a.makhovattu = b.makhovattu
  1404.                       WHERE A.DVTT = P_DVTT
  1405.                             AND A.MAKHOVATTU = p_MAKHOVATTU
  1406.                             AND A.MAVATTU = B.MAVATTU
  1407.  
  1408.                             --AND SONHAPKHOCHITIET IN (SELECT A.SONHAPKHOCHITIET FROM TMP_CHUYENKHO A)
  1409.                             AND ID_TEMCHUYENKHO = V_XULYKHO
  1410.                             AND a.hoat_dong = 1
  1411.                             AND KHOA_SONHAPKHOCHITIET = 0
  1412.                       GROUP BY KEY_QL,
  1413.                         NGAYNHAPKHO,
  1414.                         SOLOSANXUAT,
  1415.                         DONGIA,
  1416.                         NGAYSANXUAT,
  1417.                         A.SONHAPKHOCHITIET,
  1418.                         NGAYNHAPKHO,
  1419.                         A.MAVATTU
  1420.                   --SL_XUAT_NV3_NGOAI,
  1421.                   --A.NGAYBIENDONG
  1422.                 )
  1423.                 WHERE SL_TON > 0
  1424.                 -- FOR UPDATE OF A.SONHAPKHOCHITIET
  1425.                 ORDER BY NGAYNHAPKHO, SONHAPKHOCHITIET ASC; --,NGAYBIENDONG
  1426.  
  1427.             BEGIN
  1428.               OPEN XUATKHO_CURSOR;
  1429.               LOOP
  1430.  
  1431.                 FETCH XUATKHO_CURSOR
  1432.                 INTO V_KEY_QL,
  1433.                 V_SOLUONG_CK,
  1434.                 V_SOLOSANXUAT,
  1435.                 V_DONGIA,
  1436.                 V_NGAYSANXUAT,
  1437.                 V_SONHAPKHOCHITIET,
  1438.                 p_MAVATTU; --,
  1439.                 --E_SL_XUAT_NV3_NGOAI,
  1440.                 --V_NGAYBIENDONG;
  1441.                 EXIT WHEN XUATKHO_CURSOR%NOTFOUND;
  1442.                 IF V_FINISHED = 1 THEN
  1443.                   EXIT;
  1444.                 END IF;
  1445.                 IF V_SOLUONG_CK < v_soluongcantru THEN
  1446.                   v_soluong_temp := v_soluongcantru;
  1447.                   v_soluongcantru := V_SOLUONG_CK;
  1448.                 END IF;
  1449.                 SELECT NGAYBIENDONG
  1450.                 INTO V_NGAYBIENDONG
  1451.                 FROM his_manager.TMP_CHUYENKHO A
  1452.                 WHERE A.DVTT = P_DVTT
  1453.                       AND A.MAKHOVATTU = p_MAKHOVATTU
  1454.                       AND A.MAVATTU = P_MAVATTU
  1455.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1456.                       AND ID_TEMCHUYENKHO = V_XULYKHO;
  1457.                 --KIEM TRA NGAY CHUYEN
  1458.                 IF p_NGHIEP_VU = 'noitru_toaquaybanthuocbv' THEN
  1459.                   BEGIN
  1460.                     SELECT mota_thamso
  1461.                     INTO v_laydongia
  1462.                     FROM HIS_FW.DM_THAMSO_DONVI
  1463.                     WHERE dvtt = p_dvtt
  1464.                           AND MA_THAMSO = 210;
  1465.                     EXCEPTION
  1466.                     WHEN NO_DATA_FOUND THEN
  1467.                     v_laydongia := '0';
  1468.                   END;
  1469.                   BEGIN
  1470.                     SELECT DonGia_BV
  1471.                     INTO v_dongiaban_taiquaythuoc
  1472.                     FROM his_manager.dc_tb_vattu
  1473.                     WHERE DVTT = p_DVTT
  1474.                           AND MaVatTu = p_MAVATTU;
  1475.                     EXCEPTION
  1476.                     WHEN NO_DATA_FOUND THEN
  1477.                     v_finished := 1;
  1478.                   END;
  1479.                   IF v_laydongia = '1' THEN
  1480.                     v_dongiaban_taiquaythuoc := v_dongia;
  1481.                   END IF;
  1482.                 ELSE
  1483.                   v_dongiaban_taiquaythuoc := v_dongia;
  1484.                 END IF;
  1485.  
  1486.                 SELECT vt.malienthong_dmdc,
  1487.                   KyHieuNhomBC,
  1488.                   vt.HamLuong,
  1489.                   vt.maduongdung_dmdc,
  1490.                   vt.so_dangky_dmdc,
  1491.                   nhom.maloaivattu,
  1492.                   VT.NGOAIDANHMUCBHYT,
  1493.                   TENVATTU,
  1494.                   HOATCHAT,
  1495.                   DVT
  1496.                 INTO v_KEY_QLDM,
  1497.                   v_KyHieuNhomBC,
  1498.                   v_HAM_LUONG,
  1499.                   v_DUONG_DUNG,
  1500.                   v_SO_DANG_KY,
  1501.                   v_MaLoaiVatTu,
  1502.                   v_ngoaidanhmuc,
  1503.                   P_TENVATTU,
  1504.                   p_HOAT_CHAT,
  1505.                   p_DVT
  1506.                 FROM his_manager.dc_tb_nhomvattu nhom,
  1507.                   his_manager.dc_tb_vattu     vt
  1508.                 WHERE nhom.DVTT = p_DVTT
  1509.                       AND vt.DVTT = p_DVTT
  1510.                       AND nhom.TamNgung = 0
  1511.                       AND vt.MaVatTu = p_MAVATTU
  1512.                       AND vt.MaNhomVatTu = nhom.MaNhomVatTu
  1513.                       AND ROWNUM = 1;
  1514.  
  1515.                 IF V_SOLUONG_CK >= V_SOLUONGCANTRU AND V_SOLUONGCANTRU > 0 THEN
  1516.                   -- -------------------------------- TH?C HI?N C?U L?NH
  1517.                   --------------------// ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  1518.                   SELECT NVL(MAX(CAST(NVL(his_manager.SUBSTRING_INDEX(STT_TOATHUOC,
  1519.                                                                       '_',
  1520.                                                                       -1),
  1521.                                           0) AS NUMBER(10, 0))),
  1522.                              0)
  1523.                   INTO v_stt_toathuoc
  1524.                   FROM his_manager.NOITRU_CT_TOA_THUOC
  1525.                   WHERE DVTT = p_dvtt
  1526.                         AND MA_TOA_THUOC = p_MA_TOA_THUOC
  1527.                         AND stt_dieutri = p_stt_dieutri
  1528.                         AND stt_benhan = p_stt_benhan
  1529.                         AND stt_dotdieutri = p_stt_dotdieutri
  1530.                         AND sovaovien = p_sovaovien
  1531.                         AND sovaovien_dt = p_sovaovien_dt;
  1532.  
  1533.                   INSERT INTO his_manager.NOITRU_CT_TOA_THUOC
  1534.                   (STT_TOATHUOC,
  1535.                    STT_order,
  1536.                    DVTT,
  1537.                    MA_TOA_THUOC,
  1538.                    MAKHOVATTU,
  1539.                    MAVATTU,
  1540.                    TEN_VAT_TU,
  1541.                    HOAT_CHAT,
  1542.                    DVT,
  1543.                    NGHIEP_VU,
  1544.                    SO_LUONG,
  1545.                    SO_LUONG_THUC_LINH,
  1546.                    DONGIA_BAN_BV,
  1547.                    DONGIA_BAN_BH,
  1548.                    THANHTIEN_THUOC,
  1549.                    SO_NGAY_UONG,
  1550.                    SANG_UONG,
  1551.                    TRUA_UONG,
  1552.                    CHIEU_UONG,
  1553.                    TOI_UONG,
  1554.  
  1555.                    NGAY_RA_TOA,
  1556.                    GHI_CHU_CT_TOA_THUOC,
  1557.                    MA_BAC_SI_THEMTHUOC,
  1558.  
  1559.                    CACH_SU_DUNG,
  1560.                    NAM,
  1561.                    stt_dieutri,
  1562.                    stt_benhan,
  1563.                    stt_dotdieutri,
  1564.                    TU_TU_THUOC,
  1565.                    NGAY,
  1566.                    THANG,
  1567.                    mabenhnhan,
  1568.                    khoalap,
  1569.                    TRANG_THAI,
  1570.                    KEY_QL,
  1571.                    SOLOSANXUAT,
  1572.                    NGAYSANXUAT,
  1573.                    MaLoaiVatTu,
  1574.                    KyHieuNhomBC,
  1575.                    HAM_LUONG,
  1576.                    DUONG_DUNG,
  1577.                    SO_DANG_KY,
  1578.                    sovaovien,
  1579.                    sovaovien_dt,
  1580.                    SONHAPKHOCHITIET,
  1581.                    ID_DIEUTRI,
  1582.                    BANT,
  1583.                    NGOAI_DANH_MUC,
  1584.                    MAGOIDICHVU,
  1585.                    ID_DINHMUC,
  1586.                    SOLUONG_DINHMUC,
  1587.                    SO_PHIEU_XN,
  1588.                    MA_XN,
  1589.                    SO_PHIEU_CDHA,
  1590.                    MA_CDHA,
  1591.                    SO_PHIEU_DV,
  1592.                    MA_DV)
  1593.                   VALUES
  1594.                     (p_MA_TOA_THUOC || '_' ||
  1595.                      CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  1596.                       v_stt_order + 1,
  1597.                       p_DVTT,
  1598.                       p_MA_TOA_THUOC,
  1599.                       p_MAKHOVATTU,
  1600.                       p_MAVATTU,
  1601.                       P_TENVATTU,
  1602.                       p_HOAT_CHAT,
  1603.                       p_DVT,
  1604.                       p_NGHIEP_VU,
  1605.                       v_soluongcantru, -- p_SO_LUONG    ,
  1606.                                        v_soluongcantru, -- pp_SO_LUONG_THUC_LINH   ,
  1607.                                        v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV   ,
  1608.                                        v_dongia, -- p_DONGIA_BAN_BH   ,
  1609.                                        v_soluongcantru * v_dongiaban_taiquaythuoc, -- p_THANHTIEN_THUOC   ,
  1610.                                        p_SO_NGAY_UONG,
  1611.                                        p_SANG_UONG,
  1612.                                        p_TRUA_UONG,
  1613.                                        p_CHIEU_UONG,
  1614.                                        p_TOI_UONG,
  1615.                                        v_NGAY_RA_TOA,
  1616.                       p_GHI_CHU_CT_TOA_THUOC,
  1617.                       p_MA_BAC_SI_THEMTHUOC,
  1618.                       p_CACH_SU_DUNG,
  1619.                       p_namhientai,
  1620.                       p_stt_dieutri,
  1621.                       p_stt_benhan,
  1622.                       p_stt_dotdieutri,
  1623.                       p_TU_TU_THUOC,
  1624.                       v_ngaychuyen,
  1625.                       v_thanghientai,
  1626.                       p_MABENHNHAN,
  1627.                       p_maphongban,
  1628.                       1,
  1629.                       v_KEY_QL,
  1630.                       v_SOLOSANXUAT,
  1631.                       v_NGAYSANXUAT,
  1632.                       v_MaLoaiVatTu,
  1633.                       v_KyHieuNhomBC,
  1634.                       v_HAM_LUONG,
  1635.                       v_DUONG_DUNG,
  1636.                       v_SO_DANG_KY,
  1637.                       p_sovaovien,
  1638.                       p_sovaovien_dt,
  1639.                       v_SONHAPKHOCHITIET,
  1640.                       v_id_dieutri,
  1641.                       p_bant,
  1642.                       v_ngoaidanhmuc,
  1643.                       p_magoidichvu,
  1644.                       P_ID_DINHMUC,
  1645.                       P_SOLUONG_DINHMUC,
  1646.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  1647.                        p_sophieu ELSE NULL END,
  1648.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  1649.                        p_macls ELSE NULL END,
  1650.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  1651.                        p_sophieu ELSE NULL END,
  1652.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  1653.                        p_macls ELSE NULL END,
  1654.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  1655.                        p_sophieu ELSE NULL END,
  1656.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  1657.                        p_macls ELSE NULL END);
  1658.  
  1659.                   IF SQL%ROWCOUNT <= 0 THEN
  1660.                     v_rollback := 1;
  1661.                   END IF;
  1662.                   -- them vao tru kho benh vien --------------------------------------------------------
  1663.                   INSERT INTO his_public_list.ls_sudungthuoc
  1664.                   (MA_BENH_NHAN,
  1665.                    DVTT,
  1666.                    MA_TOA_THUOC,
  1667.                    STT_TOATHUOC,
  1668.                    MAVATTU,
  1669.                    TEN_VAT_TU,
  1670.                    HOAT_CHAT,
  1671.                    SO_LUONG,
  1672.                    DONGIA,
  1673.                    THANHTIEN,
  1674.                    SO_NGAY_UONG,
  1675.                    SANG_UONG,
  1676.                    TRUA_UONG,
  1677.                    CHIEU_UONG,
  1678.                    TOI_UONG,
  1679.                    NGAY_RA_TOA,
  1680.                    NGAY_HET_THUOC,
  1681.                    MA_BAC_SI_THEMTHUOC,
  1682.                    GHI_CHU_CT_TOA_THUOC,
  1683.                    NGHIEP_VU,
  1684.                    NOITRU,
  1685.                    STT_DIEUTRI,
  1686.                    STT_BENHAN,
  1687.                    STT_DOTDIEUTRI,
  1688.                    SOVAOVIEN_NOI,
  1689.                    SOVAOVIEN_DT,
  1690.                    ID_DIEUTRI)
  1691.                   VALUES
  1692.                     (p_MABENHNHAN,
  1693.                       p_DVTT,
  1694.                       p_MA_TOA_THUOC,
  1695.                       p_MA_TOA_THUOC || '_' ||
  1696.                       CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  1697.                       p_MAVATTU,
  1698.                       P_TENVATTU,
  1699.                       p_HOAT_CHAT,
  1700.                       V_soluongcantru, -- p_SO_LUONG,
  1701.                       v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV,
  1702.                       V_soluongcantru * v_dongiaban_taiquaythuoc, -- V_THANHTIEN_THUOC,
  1703.                       p_SO_NGAY_UONG,
  1704.                       p_SANG_UONG,
  1705.                       p_TRUA_UONG,
  1706.                       p_CHIEU_UONG,
  1707.                       p_TOI_UONG,
  1708.                       v_ngaychuyen,
  1709.                       v_ngaychuyen + p_SO_NGAY_UONG,
  1710.                       p_MA_BAC_SI_THEMTHUOC,
  1711.                       p_GHI_CHU_CT_TOA_THUOC,
  1712.                       p_NGHIEP_VU,
  1713.                       1,
  1714.                      p_stt_dieutri,
  1715.                      p_stt_benhan,
  1716.                      p_stt_dotdieutri,
  1717.                      p_sovaovien,
  1718.                      p_sovaovien_dt,
  1719.                      v_id_dieutri);
  1720.  
  1721.                   --------------------END // ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  1722.                   -- X? L? NGHI?P V? KHO
  1723.                   V_KT_TONTAI_TRONNGAY := 0;
  1724.                   SELECT COUNT(1)
  1725.                   INTO V_KT_TONTAI_TRONNGAY
  1726.                   FROM his_manager.DC_TB_XNT_BIENDONG
  1727.                   WHERE --KEY_QL = V_KEY_QL
  1728.                     DVTT = P_DVTT
  1729.                     AND MAKHOVATTU = p_MAKHOVATTU
  1730.                     AND MAVATTU = P_MAVATTU
  1731.                     AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1732.                     AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  1733.  
  1734.                   BEGIN
  1735.                     IF V_KT_TONTAI_TRONNGAY > 0 THEN
  1736.                       --IF V_I = 1 THEN
  1737.  
  1738.                       -- NEU NGAY BIEN DONG LA NGUYEN CHUYEN THI CAP NHAT SO LUONG CHUYEN DI
  1739.                       UPDATE his_manager.DC_TB_XNT_BIENDONG
  1740.                       SET SL_TON          = SL_TON - V_SOLUONGCANTRU,
  1741.                         SL_XUAT_NV3_NOI = SL_XUAT_NV3_NOI + V_SOLUONGCANTRU
  1742.                       WHERE --KEY_QL = V_KEY_QL
  1743.                         DVTT = P_DVTT
  1744.                         AND MAKHOVATTU = p_MAKHOVATTU
  1745.                         AND MAVATTU = P_MAVATTU
  1746.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1747.                         AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  1748.                       IF sql%rowcount = 0 THEN
  1749.                         V_ROLLBACK := 1;
  1750.                       END IF;
  1751.                     ELSE
  1752.                       INSERT INTO his_manager.DC_TB_XNT_BIENDONG
  1753.                       (KEY_QL,
  1754.                        DVTT,
  1755.                        MAKHOVATTU,
  1756.                        MAVATTU,
  1757.                        TENVATTU,
  1758.                        DONGIA,
  1759.                        NGAY,
  1760.                        SOLOSANXUAT,
  1761.                        NGAYSANXUAT,
  1762.                        NGAYHETHAN,
  1763.                        HOATCHAT,
  1764.                        HAMLUONG,
  1765.                        DVT,
  1766.                        CACHSUDUNG,
  1767.                        NGOAIDANHMUCBHYT,
  1768.                        HOAT_DONG,
  1769.                        NGAYNHAPKHO,
  1770.                        SONHAPKHOCHITIET,
  1771.                        NGAYBIENDONG,
  1772.                        SL_NHAP,
  1773.                        SL_CHUYENDEN,
  1774.                        SL_CHUYENDI,
  1775.                        SL_HUY,
  1776.                        SL_XUAT_KO_NV3,
  1777.                        SL_XUAT_NV3_NGOAI,
  1778.                        SL_XUAT_NV3_NOI,
  1779.                        SL_HOANTRA_DI,
  1780.                        SL_HOANTRA_DEN,
  1781.                        SL_HOANTRA_NCC,
  1782.                        SL_HOANTRA_NV3_NGOAI,
  1783.                        SL_HOANTRA_NV3_NOI,
  1784.                        SL_TON,
  1785.                        TT_BIENDONG,
  1786.                        TT_MOINHAT,
  1787.                        THANGBIENDONG_SAUSO,
  1788.                        NAMBIENDONG,
  1789.                        DV_INT)
  1790.                         SELECT KEY_QL,
  1791.                           DVTT,
  1792.                           MAKHOVATTU,
  1793.                           MAVATTU,
  1794.                           TENVATTU,
  1795.                           DONGIA,
  1796.                           NGAY,
  1797.                           SOLOSANXUAT,
  1798.                           NGAYSANXUAT,
  1799.                           NGAYHETHAN,
  1800.                           HOATCHAT,
  1801.                           HAMLUONG,
  1802.                           DVT,
  1803.                           CACHSUDUNG,
  1804.                           NGOAIDANHMUCBHYT,
  1805.                           HOAT_DONG,
  1806.                           NGAYNHAPKHO,
  1807.                           SONHAPKHOCHITIET,
  1808.                           TRUNC(v_ngaychuyen),
  1809.                           0, --SL_NHAP,
  1810.                           0, --SL_CHUYENDEN,
  1811.                           0, --SL_CHUYENDI,
  1812.                           0, --SL_HUY,
  1813.                           0, --SL_XUAT_KO_NV3,
  1814.                           0, -- SL_XUAT_NV3_NGOAI
  1815.                           V_SOLUONGCANTRU, --SL_XUAT_NV3_NOI,
  1816.                           0, --SL_HOANTRA_DI,
  1817.                           0, --SL_HOANTRA_DEN,
  1818.                           0, --SL_HOANTRA_NCC,
  1819.                           0, --SL_HOANTRA_NV3_NGOAI,
  1820.                           0, --SL_HOANTRA_NV3_NOI,
  1821.                           SL_TON - V_SOLUONGCANTRU,
  1822.                           0, --TT_BIENDONG,
  1823.                           1,
  1824.                           --EXTRACT(MONTH FROM v_ngaychuyen) || EXTRACT(YEAR FROM P_NGAYCHUYEN)
  1825.                           TO_NUMBER(TO_CHAR(v_ngaychuyen, 'MMYYYY')),
  1826.                           EXTRACT(YEAR FROM v_ngaychuyen),
  1827.                           P_DVTT
  1828.                         FROM his_manager.DC_TB_XNT_BIENDONG
  1829.                         WHERE DVTT = P_DVTT
  1830.                               AND MAKHOVATTU = p_MAKHOVATTU
  1831.                               AND MAVATTU = P_MAVATTU
  1832.                               --AND DONGIA = V_DONGIA
  1833.                               AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1834.                               AND NGAYBIENDONG = V_NGAYBIENDONG;
  1835.                       IF sql%rowcount = 0 THEN
  1836.                         V_ROLLBACK := 1;
  1837.                       END IF;
  1838.                     END IF;
  1839.                     his_manager.CHECK_DONGBO_XNT(P_DVTT,
  1840.                                                  p_MAKHOVATTU,
  1841.                                                  V_SONHAPKHOCHITIET,
  1842.                                                  v_ngaychuyen,
  1843.                                                  'TTNOI');
  1844.  
  1845.                     CAPNHAT_XNT_SONHAPKHO(p_DVTT,
  1846.                                           p_MAKHOVATTU,
  1847.                                           v_SONHAPKHOCHITIET);
  1848.  
  1849.                     SELECT MAX(NGAYBIENDONG)
  1850.                     INTO V_MAX_NGAYBIENDONG
  1851.                     FROM his_manager.DC_TB_XNT_BIENDONG
  1852.                     WHERE DVTT = P_DVTT
  1853.                           AND MAKHOVATTU = p_MAKHOVATTU
  1854.                           AND MAVATTU = P_MAVATTU
  1855.                           --AND DONGIA = V_DONGIA
  1856.                           AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET;
  1857.  
  1858.                     UPDATE his_manager.DC_TB_XNT_BIENDONG
  1859.                     SET TT_MOINHAT = 0
  1860.                     WHERE DVTT = P_DVTT
  1861.                           AND MAKHOVATTU = p_MAKHOVATTU
  1862.                           AND MAVATTU = P_MAVATTU
  1863.                           --AND DONGIA = V_DONGIA
  1864.                           AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  1865.                           --AND NGAYSANXUAT = V_NGAYSANXUAT
  1866.                           AND NGAYBIENDONG < V_MAX_NGAYBIENDONG;
  1867.  
  1868.                     /*update NOITRU_PTT_THAMCHIEUTONGTIEN
  1869.                       set tongtienthamchieu = tongtienthamchieu +
  1870.                                               v_dongia * V_SOLUONGCANTRU
  1871.                     where SOPHIEUTHANHTOAN = p_sophieuthanhtoan
  1872.                       and DVTT = p_DVTT
  1873.                       and sovaovien = p_sovaovien
  1874.                       and sovaovien_dt = p_sovaovien_dt;*/
  1875.                   END;
  1876.                   V_FINISHED := 1;
  1877.                 --END// X? L? NGHI?P V? KHO
  1878.                 -- ----------------------------------K?T TH?C TH?C HI?N C?U L?NH
  1879.                 ELSIF V_SOLUONG_CK < V_SOLUONGCANTRU AND V_SOLUONGCANTRU > 0 THEN
  1880.                   -- S? LU?NG CK NH? HON S? LU?NG C?N TR?, QU?T CON TR?
  1881.  
  1882.                   --------------------// ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  1883.                   SELECT NVL(MAX(CAST(NVL(his_manager.SUBSTRING_INDEX(STT_TOATHUOC,
  1884.                                                                       '_',
  1885.                                                                       -1),
  1886.                                           0) AS NUMBER(10, 0))),
  1887.                              0)
  1888.                   INTO v_stt_toathuoc
  1889.                   FROM his_manager.NOITRU_CT_TOA_THUOC
  1890.                   WHERE DVTT = p_dvtt
  1891.                         AND MA_TOA_THUOC = p_MA_TOA_THUOC
  1892.                         AND stt_dieutri = p_stt_dieutri
  1893.                         AND stt_benhan = p_stt_benhan
  1894.                         AND stt_dotdieutri = p_stt_dotdieutri
  1895.                         AND sovaovien = p_sovaovien
  1896.                         AND sovaovien_dt = p_sovaovien_dt;
  1897.  
  1898.                   INSERT INTO his_manager.NOITRU_CT_TOA_THUOC
  1899.                   (STT_TOATHUOC,
  1900.                    STT_order,
  1901.                    DVTT,
  1902.                    MA_TOA_THUOC,
  1903.                    MAKHOVATTU,
  1904.                    MAVATTU,
  1905.                    TEN_VAT_TU,
  1906.                    HOAT_CHAT,
  1907.                    DVT,
  1908.                    NGHIEP_VU,
  1909.                    SO_LUONG,
  1910.                    SO_LUONG_THUC_LINH,
  1911.                    DONGIA_BAN_BV,
  1912.                    DONGIA_BAN_BH,
  1913.                    THANHTIEN_THUOC,
  1914.                    SO_NGAY_UONG,
  1915.                    SANG_UONG,
  1916.                    TRUA_UONG,
  1917.                    CHIEU_UONG,
  1918.                    TOI_UONG,
  1919.  
  1920.                    NGAY_RA_TOA,
  1921.                    GHI_CHU_CT_TOA_THUOC,
  1922.                    MA_BAC_SI_THEMTHUOC,
  1923.  
  1924.                    CACH_SU_DUNG,
  1925.                    NAM,
  1926.                    stt_dieutri,
  1927.                    stt_benhan,
  1928.                    stt_dotdieutri,
  1929.                    TU_TU_THUOC,
  1930.                    NGAY,
  1931.                    THANG,
  1932.                    mabenhnhan,
  1933.                    khoalap,
  1934.                    TRANG_THAI,
  1935.                    KEY_QL,
  1936.                    SOLOSANXUAT,
  1937.                    NGAYSANXUAT,
  1938.                    MaLoaiVatTu,
  1939.                    KyHieuNhomBC,
  1940.                    HAM_LUONG,
  1941.                    DUONG_DUNG,
  1942.                    SO_DANG_KY,
  1943.                    sovaovien,
  1944.                    sovaovien_dt,
  1945.                    SONHAPKHOCHITIET,
  1946.                    ID_DIEUTRI,
  1947.                    BANT,
  1948.                    NGOAI_DANH_MUC,
  1949.                    MAGOIDICHVU,
  1950.                    ID_DINHMUC,
  1951.                    SOLUONG_DINHMUC,
  1952.                    SO_PHIEU_XN,
  1953.                    MA_XN,
  1954.                    SO_PHIEU_CDHA,
  1955.                    MA_CDHA,
  1956.                    SO_PHIEU_DV,
  1957.                    MA_DV)
  1958.                   VALUES
  1959.                     (p_MA_TOA_THUOC || '_' ||
  1960.                      CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  1961.                       v_stt_order + 1,
  1962.                       p_DVTT,
  1963.                       p_MA_TOA_THUOC,
  1964.                       p_MAKHOVATTU,
  1965.                       p_MAVATTU,
  1966.                       P_TENVATTU,
  1967.                       p_HOAT_CHAT,
  1968.                       p_DVT,
  1969.                       p_NGHIEP_VU,
  1970.                       v_soluongcantru, -- p_SO_LUONG    ,
  1971.                                        v_soluongcantru, -- pp_SO_LUONG_THUC_LINH   ,
  1972.                                        v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV   ,
  1973.                                        v_dongia, -- p_DONGIA_BAN_BH   ,
  1974.                                        v_soluongcantru * v_dongiaban_taiquaythuoc, -- p_THANHTIEN_THUOC   ,
  1975.                                        p_SO_NGAY_UONG,
  1976.                                        p_SANG_UONG,
  1977.                                        p_TRUA_UONG,
  1978.                                        p_CHIEU_UONG,
  1979.                                        p_TOI_UONG,
  1980.                                        v_NGAY_RA_TOA,
  1981.                       p_GHI_CHU_CT_TOA_THUOC,
  1982.                       p_MA_BAC_SI_THEMTHUOC,
  1983.                       p_CACH_SU_DUNG,
  1984.                       p_namhientai,
  1985.                       p_stt_dieutri,
  1986.                       p_stt_benhan,
  1987.                       p_stt_dotdieutri,
  1988.                       p_TU_TU_THUOC,
  1989.                       v_ngaychuyen,
  1990.                       v_thanghientai,
  1991.                       p_MABENHNHAN,
  1992.                       p_maphongban,
  1993.                       1,
  1994.                       v_KEY_QL,
  1995.                       v_SOLOSANXUAT,
  1996.                       v_NGAYSANXUAT,
  1997.                       v_MaLoaiVatTu,
  1998.                       v_KyHieuNhomBC,
  1999.                       v_HAM_LUONG,
  2000.                       v_DUONG_DUNG,
  2001.                       v_SO_DANG_KY,
  2002.                       p_sovaovien,
  2003.                       p_sovaovien_dt,
  2004.                       v_SONHAPKHOCHITIET,
  2005.                       v_id_dieutri,
  2006.                       p_bant,
  2007.                       v_ngoaidanhmuc,
  2008.                       p_magoidichvu,
  2009.                       P_ID_DINHMUC,
  2010.                       P_SOLUONG_DINHMUC,
  2011.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  2012.                        p_sophieu ELSE NULL END,
  2013.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'XN' THEN
  2014.                        p_macls ELSE NULL END,
  2015.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  2016.                        p_sophieu ELSE NULL END,
  2017.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'CD' THEN
  2018.                        p_macls ELSE NULL END,
  2019.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  2020.                        p_sophieu ELSE NULL END,
  2021.                      CASE WHEN UPPER(SUBSTR(p_sophieu, 1, 2)) = 'DV' THEN
  2022.                        p_macls ELSE NULL END);
  2023.  
  2024.                   IF SQL%ROWCOUNT <= 0 THEN
  2025.                     v_rollback := 1;
  2026.                   END IF;
  2027.                   -- them vao tru kho benh vien --------------------------------------------------------
  2028.                   INSERT INTO his_public_list.ls_sudungthuoc
  2029.                   (MA_BENH_NHAN,
  2030.                    DVTT,
  2031.                    MA_TOA_THUOC,
  2032.                    STT_TOATHUOC,
  2033.                    MAVATTU,
  2034.                    TEN_VAT_TU,
  2035.                    HOAT_CHAT,
  2036.                    SO_LUONG,
  2037.                    DONGIA,
  2038.                    THANHTIEN,
  2039.                    SO_NGAY_UONG,
  2040.                    SANG_UONG,
  2041.                    TRUA_UONG,
  2042.                    CHIEU_UONG,
  2043.                    TOI_UONG,
  2044.                    NGAY_RA_TOA,
  2045.                    NGAY_HET_THUOC,
  2046.                    MA_BAC_SI_THEMTHUOC,
  2047.                    GHI_CHU_CT_TOA_THUOC,
  2048.                    NGHIEP_VU,
  2049.                    NOITRU,
  2050.                    STT_DIEUTRI,
  2051.                    STT_BENHAN,
  2052.                    STT_DOTDIEUTRI,
  2053.                    SOVAOVIEN_NOI,
  2054.                    SOVAOVIEN_DT,
  2055.                    ID_DIEUTRI)
  2056.                   VALUES
  2057.                     (p_MABENHNHAN,
  2058.                       p_DVTT,
  2059.                       p_MA_TOA_THUOC,
  2060.                       p_MA_TOA_THUOC || '_' ||
  2061.                       CAST((v_stt_toathuoc + 1) AS VARCHAR2(50)),
  2062.                       p_MAVATTU,
  2063.                       P_TENVATTU,
  2064.                       p_HOAT_CHAT,
  2065.                       v_SOLUONG_CK, -- p_SO_LUONG,
  2066.                       v_dongiaban_taiquaythuoc, -- p_DONGIA_BAN_BV,
  2067.                       v_SOLUONG_CK * v_dongiaban_taiquaythuoc, -- V_THANHTIEN_THUOC,
  2068.                       p_SO_NGAY_UONG,
  2069.                       p_SANG_UONG,
  2070.                       p_TRUA_UONG,
  2071.                       p_CHIEU_UONG,
  2072.                       p_TOI_UONG,
  2073.                       v_ngaychuyen,
  2074.                       v_ngaychuyen + p_SO_NGAY_UONG,
  2075.                       p_MA_BAC_SI_THEMTHUOC,
  2076.                       p_GHI_CHU_CT_TOA_THUOC,
  2077.                       p_NGHIEP_VU,
  2078.                       1,
  2079.                      p_stt_dieutri,
  2080.                      p_stt_benhan,
  2081.                      p_stt_dotdieutri,
  2082.                      p_sovaovien,
  2083.                      p_sovaovien_dt,
  2084.                      v_id_dieutri);
  2085.                   --------------------END // ??Y V?O C?C B?NG C?N LUU TUONG ?NG V?I NGHI?P V?
  2086.                   --// X? L? NGHI?P V? KHO
  2087.                   V_KT_TONTAI_TRONNGAY := 0;
  2088.                   SELECT COUNT(1)
  2089.                   INTO V_KT_TONTAI_TRONNGAY
  2090.                   FROM his_manager.DC_TB_XNT_BIENDONG
  2091.                   WHERE --KEY_QL = V_KEY_QL
  2092.                     DVTT = P_DVTT
  2093.                     AND MAKHOVATTU = p_MAKHOVATTU
  2094.                     AND MAVATTU = P_MAVATTU
  2095.                     AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2096.                     AND NGAYBIENDONG = TRUNC(v_ngaychuyen); --V_NGAYBIENDONG;
  2097.  
  2098.                   IF V_KT_TONTAI_TRONNGAY > 0 THEN
  2099.                     --IF V_I = 1 THEN
  2100.                     -- NEU NGAY BIEN DONG LA NGUYEN CHUYEN THI CAP NHAT SO LUONG CHUYEN DI
  2101.                     UPDATE his_manager.DC_TB_XNT_BIENDONG
  2102.                     SET SL_TON          = 0,
  2103.                       SL_XUAT_NV3_NOI = SL_XUAT_NV3_NOI + v_SOLUONG_CK
  2104.                     WHERE --KEY_QL = V_KEY_QL
  2105.                       DVTT = P_DVTT
  2106.                       AND MAKHOVATTU = p_MAKHOVATTU
  2107.                       AND MAVATTU = P_MAVATTU
  2108.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2109.                       AND NGAYBIENDONG = TRUNC(v_ngaychuyen);
  2110.                     IF sql%rowcount = 0 THEN
  2111.                       V_ROLLBACK := 1;
  2112.                     END IF;
  2113.                   ELSE
  2114.                     INSERT INTO his_manager.DC_TB_XNT_BIENDONG
  2115.                     (KEY_QL,
  2116.                      DVTT,
  2117.                      MAKHOVATTU,
  2118.                      MAVATTU,
  2119.                      TENVATTU,
  2120.                      DONGIA,
  2121.                      NGAY,
  2122.                      SOLOSANXUAT,
  2123.                      NGAYSANXUAT,
  2124.                      NGAYHETHAN,
  2125.                      HOATCHAT,
  2126.                      HAMLUONG,
  2127.                      DVT,
  2128.                      CACHSUDUNG,
  2129.                      NGOAIDANHMUCBHYT,
  2130.                      HOAT_DONG,
  2131.                      NGAYNHAPKHO,
  2132.                      SONHAPKHOCHITIET,
  2133.                      NGAYBIENDONG,
  2134.                      SL_NHAP,
  2135.                      SL_CHUYENDEN,
  2136.                      SL_CHUYENDI,
  2137.                      SL_HUY,
  2138.                      SL_XUAT_KO_NV3,
  2139.                      SL_XUAT_NV3_NGOAI,
  2140.                      SL_XUAT_NV3_NOI,
  2141.                      SL_HOANTRA_DI,
  2142.                      SL_HOANTRA_DEN,
  2143.                      SL_HOANTRA_NCC,
  2144.                      SL_HOANTRA_NV3_NGOAI,
  2145.                      SL_HOANTRA_NV3_NOI,
  2146.                      SL_TON,
  2147.                      TT_BIENDONG,
  2148.                      TT_MOINHAT,
  2149.                      THANGBIENDONG_SAUSO,
  2150.                      NAMBIENDONG,
  2151.                      DV_INT)
  2152.                       SELECT KEY_QL,
  2153.                         DVTT,
  2154.                         MAKHOVATTU,
  2155.                         MAVATTU,
  2156.                         TENVATTU,
  2157.                         DONGIA,
  2158.                         NGAY,
  2159.                         SOLOSANXUAT,
  2160.                         NGAYSANXUAT,
  2161.                         NGAYHETHAN,
  2162.                         HOATCHAT,
  2163.                         HAMLUONG,
  2164.                         DVT,
  2165.                         CACHSUDUNG,
  2166.                         NGOAIDANHMUCBHYT,
  2167.                         HOAT_DONG,
  2168.                         NGAYNHAPKHO,
  2169.                         SONHAPKHOCHITIET,
  2170.                         TRUNC(v_ngaychuyen),
  2171.                         0, --SL_NHAP,
  2172.                         0, --SL_CHUYENDEN,
  2173.                         0, --SL_CHUYENDI,
  2174.                         0, --SL_HUY,
  2175.                         0, --SL_XUAT_KO_NV3,
  2176.                         0, -- SL_XUAT_NV3_NGOAI
  2177.                         V_SOLUONG_CK, --SL_XUAT_NV3_NOI,
  2178.                         0, --SL_HOANTRA_DI,
  2179.                         0, --SL_HOANTRA_DEN,
  2180.                         0, --SL_HOANTRA_NCC,
  2181.                         0, --SL_HOANTRA_NV3_NGOAI,
  2182.                         0, --SL_HOANTRA_NV3_NOI,
  2183.                         SL_TON - V_SOLUONG_CK,
  2184.                         0, --TT_BIENDONG,
  2185.                         1,
  2186.                         TO_NUMBER(EXTRACT(MONTH FROM v_ngaychuyen) ||
  2187.                                   EXTRACT(YEAR FROM v_ngaychuyen)),
  2188.                         EXTRACT(YEAR FROM v_ngaychuyen),
  2189.                         TO_NUMBER(P_DVTT)
  2190.                       FROM his_manager.DC_TB_XNT_BIENDONG
  2191.                       WHERE DVTT = P_DVTT
  2192.                             AND MAKHOVATTU = p_MAKHOVATTU
  2193.                             AND MAVATTU = P_MAVATTU
  2194.                             --AND DONGIA = V_DONGIA
  2195.                             AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2196.                             --AND NGAYSANXUAT = V_NGAYSANXUAT
  2197.                             AND NGAYBIENDONG = V_NGAYBIENDONG;
  2198.                     --AND TT_MOINHAT = 1;
  2199.                     IF sql%rowcount = 0 THEN
  2200.                       V_ROLLBACK := 1;
  2201.                     END IF;
  2202.                   END IF;
  2203.  
  2204.                   his_manager.CHECK_DONGBO_XNT(P_DVTT,
  2205.                                                p_MAKHOVATTU,
  2206.                                                V_SONHAPKHOCHITIET,
  2207.                                                v_ngaychuyen,
  2208.                                                'TTNOI');
  2209.  
  2210.                   CAPNHAT_XNT_SONHAPKHO(p_DVTT,
  2211.                                         p_MAKHOVATTU,
  2212.                                         v_SONHAPKHOCHITIET);
  2213.  
  2214.                   SELECT MAX(NGAYBIENDONG)
  2215.                   INTO V_MAX_NGAYBIENDONG
  2216.                   FROM his_manager.DC_TB_XNT_BIENDONG
  2217.                   WHERE DVTT = P_DVTT
  2218.                         AND MAKHOVATTU = p_MAKHOVATTU
  2219.                         AND MAVATTU = P_MAVATTU
  2220.                         -- AND DONGIA = V_DONGIA
  2221.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET;
  2222.  
  2223.                   UPDATE his_manager.DC_TB_XNT_BIENDONG
  2224.                   SET TT_MOINHAT = 0
  2225.                   WHERE DVTT = P_DVTT
  2226.                         AND MAKHOVATTU = P_MAKHOVATTU
  2227.                         AND MAVATTU = P_MAVATTU
  2228.                         -- AND DONGIA = V_DONGIA
  2229.                         AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2230.                         --AND NGAYSANXUAT = V_NGAYSANXUAT
  2231.                         AND NGAYBIENDONG < V_MAX_NGAYBIENDONG; -- 13/06/2015
  2232.                   V_SOLUONGCANTRU := V_SOLUONGCANTRU - V_SOLUONG_CK;
  2233.  
  2234.                 /*update NOITRU_PTT_THAMCHIEUTONGTIEN
  2235.                   set tongtienthamchieu = tongtienthamchieu +
  2236.                                           v_dongia * V_SOLUONGCANTRU
  2237.                 where SOPHIEUTHANHTOAN = p_sophieuthanhtoan
  2238.                   and DVTT = p_DVTT
  2239.                   and sovaovien = p_sovaovien
  2240.                   and sovaovien_dt = p_sovaovien_dt;*/
  2241.                 --END// X? L? NGHI?P V? KHO
  2242.  
  2243.                 ELSIF V_SOLUONGCANTRU < 0 THEN
  2244.                   V_FINISHED := 1;
  2245.                 END IF;
  2246.                 SELECT COUNT(1)
  2247.                 INTO V_CHK_SL_TON
  2248.                 FROM his_manager.DC_TB_XNT_BIENDONG
  2249.                 WHERE DVTT = P_DVTT
  2250.                       AND MAKHOVATTU = p_MAKHOVATTU
  2251.                       AND MAVATTU = P_MAVATTU
  2252.                       AND NGAYBIENDONG >= TRUNC(v_ngaychuyen)
  2253.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2254.                       -- AND NGAYSANXUAT = V_NGAYSANXUAT
  2255.                       AND SL_TON < 0;
  2256.                 SELECT COUNT(1)
  2257.                 INTO V_CHK_SL_CHUYENDI
  2258.                 FROM his_manager.DC_TB_XNT_BIENDONG
  2259.                 WHERE DVTT = P_DVTT
  2260.                       AND MAKHOVATTU = p_MAKHOVATTU
  2261.                       AND MAVATTU = P_MAVATTU
  2262.                       AND NGAYBIENDONG >= TRUNC(v_ngaychuyen)
  2263.                       AND SONHAPKHOCHITIET = V_SONHAPKHOCHITIET
  2264.                       -- AND NGAYSANXUAT = V_NGAYSANXUAT
  2265.                       AND SL_CHUYENDI < 0;
  2266.  
  2267.                 CASE
  2268.                   WHEN V_CHK_SL_TON > 0 THEN
  2269.                   V_ROLLBACK := 1;
  2270.                   WHEN V_CHK_SL_CHUYENDI > 0 THEN
  2271.                   V_ROLLBACK := 1;
  2272.                 ELSE
  2273.                   V_ROLLBACK := 0;
  2274.                 END CASE;
  2275.  
  2276.                 IF V_ROLLBACK = 1 THEN
  2277.                   V_FINISHED := 1;
  2278.                 END IF;
  2279.                 v_soluongcantru := v_soluong_temp - v_soluongcantru;
  2280.                 IF v_soluongcantru <= 0 THEN
  2281.                   EXIT;
  2282.                 ELSE V_FINISHED := 0;
  2283.                 END IF;
  2284.               END LOOP;
  2285.               CLOSE XUATKHO_CURSOR;
  2286.  
  2287.             END;
  2288.           END;
  2289.  
  2290.         ELSE
  2291.           --P_MAXHIENTAI < P_SOLUONG
  2292.           P_SAISOT := 6; -- S? LU?NG KH?NG D?
  2293.         END IF;
  2294.       ELSE
  2295.         P_SAISOT := 6;
  2296.       END IF; --kiem tra sl ton cho phep cap thuoc
  2297.  
  2298.       IF V_ROLLBACK = 1 THEN
  2299.         ROLLBACK;
  2300.       END IF;
  2301.       RETURN P_SAISOT;
  2302.     END IF;
  2303.   END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement