CREATE OR REPLACE PROCEDURE SP_YF_BQFY00_CKQR( -- modification history -- Person Date Comments -- lintj 2013.03.19 create -- qks 2013.03.28 修改出库单的单据状态: 全部包药,走“非标准”流程;部分包药,走“标准”流程; -- yf_ypckd0.DJZT00=2(待发药),写消息通知病区,调用过程SP_YF_XTTSXX -- qks 2013.04.13 增加字段YF_YPCKD0.FYDLXH -- qks 2013.04.25 增加入参Pbcfyid -- qks 2013.05.09 增加入参Ptjr000 -- qks 2013.05.12 modify -- qks 2013.05.14 modify:CUR_CKDH00增加条件 and a.CKDH00=b.CKDH00 -- qks 2013.05.15 modify:YF_YPCKD0.DJZT00修改 -- qks 2013.06.03 modify:速度慢,修改游标CUR_CKDH00条件 -- qks 2013.07.08 modify:YF_ZYFYJL增加字段YPQLPC,允许同组分开发药(注意:静配不允许分开);游标CUR_CKDH00增加条件:and a.YPQLPC=b.YPQLPC -- qks 2013.07.13 modify:不调用SP_YF_YPCKD0_AUDIT,改用SP_YF_YZYPSQ_CKD000处理 -- xuzw 2016.02.01 增加传入参数Psfksfy YF9-20160126-001 -- qks 2017.08.04 增加入参Pfhr000:YF_YPCKD0.HDR000=Pczy000->Pfhr000; for YF9-20170801-001 -- qks 2017.08.08 YF_YPCKD0.HDR000=decode(nvl(Pfhr000,0),0,Pczy000,Pfhr000); for YF9-20170804-001 -- --------- ---------- ------------------------------------------- Pbcfyid in number , --本次发药ID Pyfbmbh in number , --药房部门编号 Pbqbmbh in number , --病区部门编号 Pczy000 in number , --操作员编码 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 , --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Pfyckbh in number default 0 , --发药窗口编号 Ptjr000 in number default 0 , --调剂人 Psfksfy in varchar2 default '0' , --是否科室统计 Pfhr000 in number default 0 --复核人 ) as Vypckpc YF_YPCKMX.YPCKPC%type; Vypqlpc YF_YZYPSQ.YPQLPC%type; Vpspc00 YF_YZYPSQ.PSPC00%type; Vk2j000 BM_YD0000.K2J000%TYPE; Vbyfl00 BM_YD0000.BYFL00%TYPE; Vzjzycf BM_YD0000.ZJZYCF%TYPE; Vfylb00 BM_YD0000.FYLB00%TYPE; VJCZSL0 YF_YZYPSQ.JCZSL0%type; Vsfbzlc YF_BYTJ00.SFBZLC%type; Vpdyxfy XT_XTCS00.VALUE0%type; --盘点允许发药 Vyzid00 YF_YZYPSQ.YZID00%type; VFYDLXH YF_YPCKD0.FYDLXH%type; VDJZT00 YF_YPCKD0.DJZT00%type; Vyzypsq YF_YZYPSQ%rowtype; Vdmbz00 varchar2(4); --毒麻标志 Vsysdate date; --日期变量 Vcounter number(14,4); --计数器变 Ecustom exception; --错误变量 VBHBY00 number(1); VBHNOBY number(1); V_countER number(10); --记数器 cursor CUR_CKDH00 is select distinct b.CKDH00 from YF_YZYPSQ a,YF_ZYFYJL b where b.ID0000=Pbcfyid and b.CZY000+0=Pczy000 and b.FYSBYY is null and FYCGBZ='1' and a.YZID00=b.YZID00 and a.YYRQ00=b.YYRQ00 and a.CKDH00=b.CKDH00 and a.YFBMBH=Pyfbmbh and decode(Psfksfy,'0',a.BQBMBH,'1',a.DQKS00,a.BQBMBH)=Pbqbmbh and a.QLZT00||'' in ('2','4') and a.YPQLPC=b.YPQLPC order by b.CKDH00; begin Pzxcgbz:=0; Vsysdate:=sysdate; Pxxxx00 :=substr(nvl(to_char(Pyfbmbh),'null')||','||nvl(to_char(Pbqbmbh),'null')||','|| nvl(to_char(Pczy000),'null')||','||nvl(to_char(Pczyks0),'null')||','||nvl(to_char(Pcommit),'null'),1,3500); SP_TransLog(Vsysdate,'SP_YF_BQFY00_CKQR',Pczy000,Pczyks0,Pxxxx00); select nvl(max(trim(VALUE0)),'N') into Vpdyxfy from XT_XTCS00 where NAME00='YF_PDQJSFYXFY'; if Vpdyxfy='N' then select count(*) into Vcounter from BM_BMBM00 where BMBH00=Pyfbmbh and FYBZ00='3'; if Vcounter > 0 then Ptsxx00:='药房正在盘点,不能进行进出库确认'; raise Ecustom; end if; end if; for rCKDH00 in CUR_CKDH00 loop -- SP_YF_YPCKD0_AUDIT(rCKDH00.CKDH00,to_char(Vsysdate,'YYYYMMDD'),to_char(Vsysdate,'HH24:MI:SS'),Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00); -- if Pzxcgbz = 0 then -- raise_application_error(-20210,'出库单确认出错'); -- end if; select DJZT00 into VDJZT00 from yf_ypckd0 where ckdh00=rCKDH00.CKDH00; if VDJZT00 = '2' then select count(1) into Vcounter from yf_yzypsq where CKDH00=rCKDH00.CKDH00 and BYTJ00='3' and rownum=1; if Vcounter>0 then Update yf_ypckd0 set DJZT00='0' where ckdh00=rCKDH00.CKDH00; end if; end if; -- select nvl(max(FYDLXH),0)+1 into VFYDLXH from YF_YPCKD0 where QRRQ00=to_char(Vsysdate,'YYYYMMDD') and YFBMBH=Pyfbmbh; Update YF_YPCKD0 set --FYDLXH=VFYDLXH, FYCKBH=decode(Pfyckbh,0,FYCKBH,Pfyckbh), TJR000=decode(nvl(Ptjr000,0),0,TJR000,Ptjr000), TJRQ00=decode(nvl(Ptjr000,0),0,TJRQ00,to_char(Vsysdate,'YYYYMMDD')), TJSJ00=decode(nvl(Ptjr000,0),0,TJSJ00,to_char(Vsysdate,'HH24:MI:SS')), DJZT00=decode(nvl(Ptjr000,0),0,DJZT00,decode(DJZT00,'0','1',DJZT00)), --HDR000=Pczy000, --HDR000=decode(nvl(Pfhr000,0),0,HDR000,Pfhr000), HDR000=decode(nvl(Pfhr000,0),0,Pczy000,Pfhr000), HDRQ00=decode(nvl(Pfhr000,0),0,HDRQ00,to_char(Vsysdate,'YYYYMMDD')), HDSJ00=decode(nvl(Pfhr000,0),0,HDSJ00,to_char(Vsysdate,'HH24:MI:SS')), QRRQ00=to_char(Vsysdate,'YYYYMMDD'), QRSJ00=to_char(Vsysdate,'HH24:MI:SS'), BZ0000=replace(BZ0000,'摆药未确认','') where CKDH00 = rCKDH00.CKDH00; --处理农本方接口 select count(*) into V_countER from XT_XTCS00 where NAME00='YF_NBFJKXGS' and VALUE0='Y'; if V_countER>0 then execute immediate 'begin SP_YF_GETNBFJKXX(''2'','''||rCKDH00.CKDH00||'''); end;'; end if; end loop; delete from YF_ZYFYJL where ID0000=Pbcfyid and CZY000+0=Pczy000 and FYSBYY is null and FYCGBZ='1'; Pzxcgbz:=1; if pcommit='Y' then commit; end if; exception when No_Data_Found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm||Ptsxx00,1,240)); when Ecustom then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); end; /