Advertisement
Guest User

Untitled

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