prompt 体检系统获取发票当前发票序号 create or replace function SF_SF_PEGETPJXH ( OperatorCode varchar2 ,--入参:操作员编码 OperatorName varchar2 ,--入参:操作员姓名 InvoiceType varchar2 --入参:发票类型 1:门诊发票 ) return varchar2 is -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2020.05.25 created by MZSF-20200525-001 LS_FHXX00 varchar2(400); LS_PJDQH0 BM_PJLYQK.PJDQH0%type; LS_PJSYR0 BM_PJLYQK.PJSYR0%type; LS_PJLXBM BM_PJLYQK.PJLXBM%type; ls_ygbh00 bm_ygbm00.ygbh00%type; begin LS_FHXX00:=''; begin LS_PJSYR0:=to_number(OperatorCode); LS_PJLXBM:=to_number(InvoiceType); exception when others then LS_PJSYR0:=0; LS_PJLXBM:=1; end; select ygbh00 into ls_ygbh00 from bm_ygbm00 where xkh000=OperatorCode and czbz00<>'2'; begin select trim(PJDQH0) into LS_PJDQH0 from BM_PJLYQK where PJLXBM =LS_PJLXBM and PJSYR0 =ls_ygbh00 and SYBZ00='Y'; exception when others then LS_PJDQH0:='0'; end; LS_FHXX00:=trim(LS_PJDQH0); return LS_FHXX00; end; show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% prompt 体检系统发票打印 SP_SF_PEPRINGT create or replace procedure SP_SF_PEPRINGT ( OperatorCode in varchar2 ,--入参:操作员编码 OperatorName in varchar2 ,--入参:操作员姓名 InvoiceType in varchar2 ,--入参:发票类型 1:门诊发票 InvoiceNo in varchar2 ,--入参:发票号 InvoiceAmount in varchar2 ,--入参:发票金额 ReturnCode out varchar2 ,--出参:返回编码 0:失败 1:成功 ReturnMsg out varchar2 --出参:返回错误信息 ) -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2020.05.25 created by MZSF-20200525-001 as LS_PJDQH0 BM_PJLYQK.PJDQH0%type; LS_PJSYR0 BM_PJLYQK.PJSYR0%type; LS_PJLXBM BM_PJLYQK.PJLXBM%type; LS_PJH000 SF_PJSYQK.PJH000%type; LS_CZY000 SF_PJSYQK.CZY000%type; LS_CZYXM0 SF_PJSYQK.CZYXM0%type; LS_XJJE00 SF_PJSYQK.XJJE00%type; LS_CZRQ00 char(8); LS_CZSJ00 char(8); ls_xkh000 bm_ygbm00.xkh000%type; begin LS_CZRQ00 := to_char(sysdate,'YYYYMMDD'); LS_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:='';--出参:返回错误信息 ls_xkh000:=OperatorCode; /* begin LS_PJSYR0:=to_number(OperatorCode); exception when others then LS_PJSYR0:=0; end;*/ begin LS_PJLXBM:=to_number(InvoiceType); exception when others then LS_PJLXBM:=1; end; begin LS_XJJE00:=to_number(InvoiceAmount); exception when others then LS_XJJE00:=0; end; begin select A.YGBH00,A.ZWXM00,xkh000 into LS_CZY000, LS_CZYXM0,ls_xkh000 from BM_YGBM00 A where A.xkh000=OperatorCode; exception when others then LS_CZY000:=0; LS_CZYXM0:=''; end; if LS_CZY000 in (0) or LS_CZY000 is null then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:='未找到有效的操作员信息!';--出参:返回错误信息 return; end if; LS_PJDQH0:=SF_SF_GETPJXH(LS_CZY000,LS_PJLXBM); if trim(LS_PJDQH0)<>trim(InvoiceNo) then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:='执行发票打印失败,HIS当前票据号不等于传入票据号,院内票据号:'||LS_PJDQH0||' 传入票据号:'||trim(InvoiceNo);--出参:返回错误信息 return; end if; if trim(InvoiceNo) is null or trim(InvoiceNo) in ('0') then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:='传入参数票据号错误:'||trim(InvoiceNo); return; end if; select SQ_SF_PJSYQK_PJH000.nextval into LS_PJH000 from dual; insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,CZY000,CZYXM0,DYRQ00,DYSJ00,SFDY00,PJZT00, XM0000,XB0000,HSCZY0,HSCZXM,HSRQ00,HSSJ00,BRID00,FPQTXX,PHLYXZ) select LS_PJH000,PLBH00,PLMC00,LS_PJDQH0,0,0,LS_CZY000,LS_CZYXM0,LS_CZRQ00,LS_CZSJ00,'N','1','体检发票打印',' ', LS_CZY000,LS_CZYXM0,LS_CZRQ00,LS_CZSJ00,0,'发票金额:'||LS_XJJE00,'N' from BM_PJLXB0 where PLBH00 = LS_PJLXBM; if SQL%NOTFOUND then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:=substrb('执行发票打印失败!,原因:'||sqlerrm,1,200); return; end if; ReturnCode:='1';--返回编码 0:失败 1:成功 exception when no_data_found then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:=substrb('执行发票打印失败!,原因:'||sqlerrm,1,200); when others then ReturnCode:='0';--返回编码 0:失败 1:成功 ReturnMsg:=substrb('执行发票打印失败!,原因:'||sqlerrm,1,200); end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%