prompt No.018 SP_YF_MZCF00_CFZF 门诊处方作废 改自 TR_YF_MZCF00_AFUPD create or replace procedure SP_YF_MZCF00_CFZF( -- modification history -- Person Date Comments -- lintj 2012.10.16 modify: YF_MZCFMX 拆分成批次 -- lintj 2012.07.14 create -- luowf 2021.01.07 作废处方时,对于未收取的代煎费也要作废掉并增加日志 YF9-20201210-001 -- --------- ---------- ------------------------------------------- Pcflsh0 in varchar2 , --处方流水号 Pczy000 in number , --输入:操作员编码 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ) as Vmzcf00 YF_MZCF00%rowtype; V_PDYXFY XT_XTCS00.VALUE0%type; --盘点允许发药 MZPY_JZHSFZJFY XT_XTCS00.VALUE0%type;--取号机是否直接发药 Vcklsj0 YF_PCKCMX.LSDJ00%type; Vckgjj0 YF_PCKCMX.GJDJ00%type; V_DQRQ00 char(8); V_DQSJ00 char(8); Vcounter number; --记数器 Vsysdate date; Ecustom exception; --错误变量 cursor c_MZCFMX IS select YPDLBH,YPNM00,YPMC00,YPGG00,CFDW00,ZHL000,GJDJ00,CXCFID,LSDJ00,SFSLYK,YPZSL0,CFID00 from YF_MZCFMX where CFLSH0=Pcflsh0 and SFZBY0='N'; begin Pzxcgbz:=0; Vsysdate:=sysdate; Pxxxx00 :=nvl(to_char(Pcflsh0),'null')||','||nvl(to_char(Pczy000),'null')||','||nvl(to_char(Pczyks0),'null')||','||nvl(to_char(Pcommit),'null'); SP_TransLog(Vsysdate,'SP_YF_MZCF00_CFZF',Pczy000,Pczyks0,Pxxxx00); select * into Vmzcf00 from YF_MZCF00 where CFLSH0 = Pcflsh0; select nvl(max(trim(VALUE0)),'N') into V_PDYXFY from XT_XTCS00 where NAME00='V_PDYXFY'; select nvl(max(trim(VALUE0)),'N') into MZPY_JZHSFZJFY from XT_XTCS00 where NAME00='MZPY_JZHSFZJFY'; select to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss') into V_DQRQ00,V_DQSJ00 from dual; if (Vmzcf00.CFZT00='5') and (Vmzcf00.CFZJE0<0) then if V_PDYXFY='N' then select count(*) into Vcounter from BM_BMBM00 where BMBH00=Vmzcf00.YFBMBH and FYBZ00 = '3'; if Vcounter > 0 then Ptsxx00:='药房正在盘点,不能进行进出库确认'; raise Ecustom; end if; end if; for row in c_MZCFMX loop SP_YF_PCKCCK_CF(row.CFID00, Pczy000, Pczyks0, 'N', Pzxcgbz, Ptsxx00, Pxxxx00); --修改被冲处方 update YF_MZCFMX SET ZCXSL0=ZCXSL0+row.YPZSL0 where CFID00=row.CXCFID; update YF_MZCFMX SET CXBZ00='Z' where CFID00=row.CXCFID and ZCXSL0=0; end loop; SP_YF_MZCF00_MXZSC( Pcflsh0, --处方流水号 Pczy000, --输入:操作员编码 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; if (Vmzcf00.CFZT00 in ('0','a')) then for row in c_MZCFMX loop SP_YF_KCYKMX( 1, --0 预扣 1退预扣 row.cfid00, --来源单据号 '0', --门诊住院标志 '0'门诊 '1'住院 Vmzcf00.YFBMBH, --药房部门编号 row.YPNM00, --药品内码 row.YPZSL0, --出库数量 row.CFDW00, row.ZHL000, Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Vcklsj0, --出库零售价 Vckgjj0 --出库购进价 ); end loop; end if; if MZPY_JZHSFZJFY='N' then update YF_CFDL00 set ZT0000='3' where CFLSH0=Pcflsh0; end if; update YF_MZCF00 set CFZT00 = '3' where CFLSH0 = Pcflsh0 and CFZJE0>0; update YJ_YW0000 set XMZT00 = '6' where ZYHGHH=Vmzcf00.GHH000 and YZCFID = Pcflsh0 and nvl(SFDJH0,0)=0 and FJDJBZ='7' and XMZT00 in ('0','1'); insert into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID) values(SQ_XT_XTCZRZ_ID0000.nextval,'YJ_YW0000',1,0,'SP_QLZFCF->SP_YF_MZCF00_CFZF操作作废了处方:'||Pcflsh0||',若有YJ_YW0000.YZCFID='||Pcflsh0||'的未收取代煎费的数据也作废掉。',-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; / show error;