CREATE OR REPLACE PROCEDURE SP_YY_INSERT_SF_YYBRB0 ( PYYID00 in number, --预约编号 SQ_SF_YYBRBO_YYID00.nextval PGHHBID in number,--挂号号 SF_YSGHHB.GHHBID PYYH000 in number,--预约号 PBRID00 in number,--病人编号 BM_BRXXB0.BRID00 PBRXM00 in varchar2,--病人姓名 BM_BRXXB0.BRXM00 PBRDH00 in varchar2 ,--电话号码 BM_BRXXB0.BRDH00 PKMH000 in varchar2, --卡面号 PICKH00 in varchar2,--就诊卡号 IC_YHXX00.ICKH00 PYYLB00 in char,--预约类别编号 0电话预约 1分诊台预约 2网络预约 PYYRQ00 in char,--预约日期 PYYJSSJ in char,--结束时间 PYYZT00 in char,--预约状态 0 登记 1 确认(预挂号) 2 取消 3 就诊 PYYYGBH in number,--预约操作员编号 BM_YGBM00.YGBH00 PBZ0000 in varchar2,--备注 PCZYBM0 in NUMBER,--操作科室 PCZBZ00 in char,--操作标志 1 登记 2 变更 3 取消 4 还原取消记录 PSFZH00 in varchar2 default '', --身份证号 PCOMMIT in char default 'Y', --是否提交 'Y'提交N不提交 PYSPBID in NUMBER default 0, --医生排班ID PYYSD00 in char default '', --预约时段 PQXLX00 in char default '', --取消类型 0院内手工取消,1院内自动取消,2是院外取消 PSFZJ00 in char default 'N', --是否允许加号 PSFCZ00 in char default '0', --是否初诊 '0' 初诊 '1'复诊 PSFSH00 in char default '0', --是否术后 '0' 不是 '1'是 PSFSQZZ in char default '0', --是否社区转诊 '0'不是 '1'是 PWLYYMC in varchar2 default '', --网络预约厂家 PSFYD00 in char default '0', --是否异地 '0' 不是 '1'是 PBRLXDH in varchar2 default '', --手机号码 PBRSS00 in varchar2 default '0' --病人岁数 ) as vSFXMID BM_YYSFXM.SFXMID%type;--收费项目编号 P_ZXCGBZ number(1); --执行成功标志 1成功 0失败 P_TSXX00 varchar2(225); --执行结果提示信息,成功的情况下也可能有警告信息 P_XXXX00 varchar2(225); --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ls_WJSDJH number; --单据号 YYKF char(1);--预约是否扣费 1 扣费 0 不扣费 verrsql varchar2(225);--错误提示 Temp_yyh number;--变更时存储旧预约号 Temp_GHHBID SF_YSGHHB.GHHBID%type;--挂号号表 vYYYGXM BM_YGBM00.ZWXM00%type;--预约员工姓名 vDJH000 SF_BRFY00.DJH000%type;--单据号 SF_BRFY00.DJH000 vDJRQ00 char(8);--操作日期 vDJSJ00 char(8);--操作时间 vYYKSBH BM_BMBM00.BMBH00%type;--预约科室编号 SF_YSGHHB.GHKSBH vYYKSMC BM_BMBM00.BMMC00%type;--预约科室名称 vYYYSBH BM_YGBM00.YGBH00%type;--预约医生编号 SF_YSGHHB.GHYSBH vYYYSXM BM_YGBM00.ZWXM00%type;--预约医生姓名 vGHLB00 SF_YSGHHB.GHLBBH%type;--挂号类别 SF_YSGHHB.GHLBBH vYYBZ00 YS_HBHZXH.YYBZ00%type;--预约标志 '1'普通'2'优待 '3'预约 '4'电话 '5'分诊 '6'网络 vSFDTYY SF_YYBRB0.SFDTYY%type;--是否当天预约,'1'当天预约 E_SJCF EXCEPTION; V_COUNT0 NUMBER(5,0); V_XQ0000 NUMBER(5,0); v_YYID00 SF_YYBRB0.YYID00%type; --预约id v_SFYYDTYY CHAR(10); --是否允许当天预约 ls_bz0000 SF_YYBRB0.BZ0000%type; v_yxtqgh xt_xtcs00.value0%type; V_ynyymx sf_yspbb0.fzyymx%type; V_sdxs00 number(5); vID0000 YS_HBHZXH.ID0000%type; ls_YYSD00 SF_YYBRB0.YYSD00%type; Vmaxhzh number(10); --最大候诊序号 Vtmpstr YS_HBHZXH.HZSJ00%type; vTZBZ00 SF_YSGHHB.TZBZ00%type; vSFZJGH SF_YSGHHB.SFZJGH%type; vSFJZJH SF_YSGHHB.SFJZJH%type; vYYJSSJ SF_YYBRB0.YYJSSJ%type; vYYRQ00 SF_YYBRB0.YYRQ00%type; vGHCJ00 SF_YYBRB0.GHCJ00%type; ls_yyzt00 SF_YYBRB0.yyzt00%type; YY_SFSQYYFCJMC XT_XTCS00.VALUE0%type; -- 取某个厂家的是否扣费参数,可定义多个厂家,每个厂家之间用逗号隔开 ls_FBBH00 IC_YBBRLB.FBBH00%TYPE; --费别编号 ls_YBBRLB BM_BRXXB0.YBBRLB%TYPE; --病人类别 ls_YBZXLB IC_YBBRLB.YBZXLB%TYPE; --医保中心类别 ls_GFBL00 NUMBER(12,2); --公费报销比例 ls_JZBL00 NUMBER(12,2); --记账报销比例 ls_MXZFJE SF_FYMX00.ZFJE00%TYPE; --费用明细表的自付金额 ls_MXJZJE SF_FYMX00.JZJE00%TYPE; --费用明细表的记账金额 ls_MXGFJE SF_FYMX00.GFJE00%TYPE; --费用明细表的公费金额 ls_MXHJJE SF_FYMX00.HJJE00%TYPE; --费用明细表的合计金额 ls_yhbl00 bm_yyhsxm.yhbl00%type; ls_ZFBL00 BM_YBSFDY.ZFBL00%type; --费用自付比例 ls_YSKS00 SF_FYMX00.YSKS00%TYPE; --医生所在的科室 YY_YYSFDXTZ XT_XTCS00.VALUE0%type; ls_yyjc00 XT_YYXX00.YYJC00%TYPE; --医院简称 LS_YYNR00 YJ_DXTZ00.DXNR00%TYPE; --短信内容 ls_Pzxcgbz number(1); --执行成功标志 1成功 0失败 ls_Ptsxx00 varchar2(200); --执行结果提示信息,成功的情况下也可能有警告信息 ls_Pxxxx00 varchar2(200); --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 YS_YYDJSFBHXSFZDH XT_XTCS00.VALUE0%type; ls_QXYYSFYXQXDRSWHXW XT_XTCS00.VALUE0%type; ls_EKYSZNDLER XT_XTCS00.VALUE0%type; ls_EKNL number(5); ls_FEKNL number(5); ls_BRNL00 number(5); lsBRXM00 SF_YYBRB0.BRXM00%type; YY_YYTQTS number(5);--可提前预约的天数 ls_BRID00 SF_YYBRB0.BRID00%type; ls_YYH000 SF_YYBRB0.YYH000%type; v_Count1 number(5); LS_KSCFYYXZ_HMKS varchar2(100); LS_YYSFBXYSFZ varchar2(10);--预约是否必须身份证 -- MODIFICATION HISTORY -- Person Date Comments -- CSF 2009.09.07 create:创建过程预约业务登记 变更 取消 -- CSF 2009.10.20 记录备注,及修改ys_hbhzxh的YYBZ00值 -- CSF 2009.10.27 brid00=0允许修改病人的姓名和电话,保存后判断YYH000是否重复 -- CSF 2009.10.27 增加sfzh00的编辑保存 -- CSF 2009.10.27 传入变量sfzh00加默认值 -- CSF 2009.11.04 增加记录取消人 -- CSF 2009.11.10 修改预约记录时候,同时也修改ys_hzhzxh -- CSF 2009.11.25 判断选择的序号是否存在 -- CSF 2009.12.03 增加传入参数,是否提交 -- CSF 2010.01.04 取消时候按yyid00还原号表序号表 -- CSF 2010.01.11 还原取消的预约记录 -- CSF 2010.01.13 预约变更时候时候,可能号表也会发生变化,应该重新取 -- CSF 2010.01.28 加参数控制是否允许当天预约 -- CSF 2010.03.10 异常提示增加系统错误提示信息 -- CSF 2010.08.25 网络预约号不管是取消,还是变更,或是还原预约都不改变预约标志。 -- CSF 2010.09.28 错误信息处理 -- CSF 2010.10.11 网络预约记录在院内不取消,又被还原,还原时候应记录原有的WLYYID,否则导入的网络预约信息如果要修改该记录就改不成功。 -- qks 2010.11.03 广东省中医院PBZ0000='自助机预约登记'时, 更新医生号表记录 -- csf 2011.02.18 取消预约时候,sf_brfy00的czks00没有写入,现补写 -- qks 2011.02.19 处理广东省中医院当天预约以及非当天预约,增加入参PYSPBID,PYYSD00 -- chenyw 2011.03.11 区分分诊台收费 -- csf 2011.03.18 取消预约的退费不按参数控制,按原记录是否已经收费过,收过则同时退费 -- 用通用字典,字典名称为“按病人类别定义预约费优惠比例”来定义病人的优惠比例, -- 备注描述成FBBH00-YBZXLB-YBBRLB,DJ0000为优惠比例0-1之间 0为不优惠 1为100%优惠 -- qks 2011.04.07 处理广东省中医院已报到过,不算爽约 -- qks 2011.06.19 广东预约接口增加入参PQXLX00,修改YYSL00。 -- qks 2011.06.23 广东预约接口增加入参PSFZJ00,修改取消预约时的错误提示。 -- qks 2011.06.30 广东预约接口院外预约取消,只能取消自己公司的预约记录。 -- qks 2011.07.01 广东预约已停诊或加号的号表不允许再让预约;以及判断是否禁止预约加号。 -- qks 2011.07.05 广东预约:一天最多只允许预约2次;增加姓名跟电话号码判断失约次数;判断预约日期是否为对应号表的挂号日期;同个号表不允许重复预约;院外预约写入挂号厂家。 -- qks 2011.07.06 广东预约:目前不限制失约次数。 -- qks 2011.07.11 广东预约:一周看某个医生不能超过2次。 -- qks 2011.07.22 广东预约:限制停号也不允许预约 -- csf 2011.08.10 预约信息增加记录:是否初诊、是否术后、是否社区转诊 -- csf 2011.11.03 增加记录网络预约的厂家,只处理了txt文本导入的 -- csf 2012.01.06 健康之路预约病人不收预约费 按参数YY_SFSQYYFCJMC控制 YYGH-20120112-001 -- CSF 2012.07.13 对于YYYSBH=0的预约记录生成预约信息时候医生姓名原是“超级用户”,先改成空 MZHS-20120611-001 -- daihq 2012.08.02 预约信息增加是否异地,不显示术后 -- dsm 2013.01.29 PCZBZ00='3'时,注释update YS_HBHZXH set ....where YYID00=PYYID00,因为慢 for MZHS-20130129-001 -- csf 2013.10.12 预约费用的收取改成调用预约系统的预约费用登记的过程来处理 YYGH-20131012-001 -- csf 2014.04.14 登记成功后,发送预约短信。 YYGH-20140224-001 -- daihq 2014.06.09 预约日期和预约结算时间点小于当前日期时间的预约记录,不允许做取消预约 for YYGH-20140531-001 -- daihq 2014.06.10 增加入参PBRLXDH for YYGH-20140510-001 -- daihq 2014.07.23 增加参数控制是否回写身份证号和电话号码 for MZYS-20140716-001 -- daihq 2014.07.30 增加参数MZHS_QXYYSFYXQXDRSWHXW控制是否允许取消当日上午或下午的预约信息 for MZHS-20140729-001 -- daihq 2014.09.09 PBRID00大于0,根据参数YS_EKYSZNDLER判断病人年龄及医生排班,是否进行儿科预约限制 for MZHS-20140829-003 -- daihq 2014.09.11 增加入参PBRSS00,YS_EKYSZNDLER启用且有传入值时也判断病人年龄及医生排班,是否进行儿科预约限制 for YYGH-20140829-003 -- daihq 2014.10.13 还原预约增加写入BRLXDH和BRSS00 for YYGH-20141011-001 -- daihq 2014.11.28 预约变更时,若病人ID大于0,修改YS_HBHZXH表时病人姓名取原预约记录的病人姓名 for YYGH-20141125-001 -- dsm 2015.02.15 预约记录存在收费记录,那么只能做取消预约,然后重新预约,不允许做预约变更。for MZHS-20150210-001 -- csf 2015.05.11 写入费用表的开单科室,改成取医生的预约科室 for YYGH-20150227-001 -- dsm 2016.03.30 限制YY_YYTQTS 12320 归档 MZHS-20160321-002 -- dsm 2016.04.05 撤销时删除SF_HZBR00 for MZHS-20160217-001 -- dsm 2016.10.19 撤销时,如果是已经进入候诊的SF_YSGHHB.GHYYHS要减1 for MZHS-20161019-001 -- dsm 2016.10.29 一个时段,一个科室,一个病人只能取1个号(YY_KSCFYYXZ) for YYGH-20161025-001 -- dsm 2016.11.15 YY_KSCFYYXZ参数启用时增加LS_KSCFYYXZ_HMKS(豁免科室) for ZZJJK-20161111-001 -- dsm 2016.12.19 YY_YYSFBXYSFZ=Y时有身份证才能预约 for YYGH-20161216-001 -- dsm 2017.03.01 扩展YY_SFSQYYFCJMC参数以支持短信发送的判断YYGH-20170301-002 -- dsm 2017.09.02 有时候撤销预约的时候会报"预约限号数不能小于预约已挂号数" MZHS-20170902-001 -- --------- ---------- -------------------------------------------------- begin begin select nvl(max(trim(VALUE0)),'N') into LS_YYSFBXYSFZ from XT_XTCS00 where NAME00='YY_YYSFBXYSFZ'; exception when others then LS_YYSFBXYSFZ:='N'; end; if LS_YYSFBXYSFZ='Y' and (trim(PSFZH00)='' or nvl(trim(PSFZH00),' ')=' ') and PCZBZ00 in ('1','2') then --YYGH-20161216-001 verrsql:='身份证不能为空!'; raise no_data_found; end if; LS_YYNR00:=''; begin select to_number(trim(VALUE0)) into YY_YYTQTS from XT_XTCS00 where NAME00='YY_YYTQTS'; exception when others then YY_YYTQTS:=0; end; if YY_YYTQTS>0 and to_char(sysdate+YY_YYTQTS,'YYYYMMDD')14岁的只能在非儿科就诊 是Y 不是N,非Y非N时格式如下:18,15(前一个参数18代表儿科就诊年龄<=18,15代表非儿科就诊年龄>=15,两者中间用,隔开,具体的18和15可以自定义) 默认为N begin select nvl(max(trim(VALUE0)),'N') into ls_EKYSZNDLER from XT_XTCS00 where NAME00='YS_EKYSZNDLER'; if ls_EKYSZNDLER='Y' then ls_EKNL := 14; ls_FEKNL := 15; elsif ls_EKYSZNDLER<>'N' then ls_EKNL := substrb(ls_EKYSZNDLER,1,instrb(ls_EKYSZNDLER,',')-1); ls_FEKNL := substrb(ls_EKYSZNDLER,instrb(ls_EKYSZNDLER,',')+1,lengthb(ls_EKYSZNDLER)-instrb(ls_EKYSZNDLER,',')); else ls_EKNL := 0; ls_FEKNL := 0; end if; exception when others then ls_EKYSZNDLER:='N'; ls_EKNL := 0; ls_FEKNL := 0; end; --取参数 select upper(trim(nvl(max(VALUE0),'N'))) into v_yxtqgh from XT_XTCS00 where NAME00='YS_SFYXPTBRTQGH'; --取当前操作日期、时间 select to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS') into vDJRQ00,vDJSJ00 from dual; if (v_SFYYDTYY='N') and (PCZBZ00 in ('1','2','4') ) and (PYYRQ00=vDJRQ00 ) then --不允许操作当天的预约信息 verrsql:='预约的就诊日期不能是当天!'; raise no_data_found; end if; if ( PYYRQ00'M') or (v_yxtqgh='M' and PYYRQ00=vDJRQ00) then if (v_yxtqgh<>'M') then select count(*) into V_COUNT0 from YS_HBHZXH where GHHBID=PGHHBID and HZXH00=PYYH000; if V_COUNT0=0 then verrsql:='你所选择的医生排班表记录及序号不存在'||'select count(*) from YS_HBHZXH where GHHBID='||to_char(PGHHBID)||' and HZXH00='||to_char(PYYH000)||' '; raise no_data_found; end if; end if; --取扣费方式过程 不自动扣费 begin select trim(value0) into YYKF from XT_XTCS00 where NAME00 ='YY_YYKF'; exception when others then YYKF:='0'; end; if PBRID00=0 then --也不扣费 YYKF:='0'; end if; if instrb(YY_SFSQYYFCJMC,','||PWLYYMC||',')>0 then --指定某个网络厂家不收预约费 YYKF:='0'; end if; --取操作员姓名 select ZWXM00 into vYYYGXM from BM_YGBM00 where YGBH00=PYYYGBH; --预约标志处理 if PYYLB00='0' then vyybz00:='4';--电话 elsif PYYLB00='1' then vyybz00:='5';--分诊 else vyybz00:='6';--网络预约 end if; vSFDTYY:='0'; -- if v_yxtqgh='M' and PYYRQ00=vDJRQ00 then -- vYYBZ00:='7'; --当天预约 -- vSFDTYY:='1';--当天预约 -- if PCZBZ00='3' then --取消 -- vYYBZ00 := '1'; -- end if; -- end if; if v_yxtqgh='M' and PCZBZ00='3' then --取消 vYYBZ00 := '1'; if PYYRQ00=vDJRQ00 then --当天预约 vYYBZ00:='7'; vSFDTYY:='1'; end if; end if; --取预约的排班信息 --if (v_yxtqgh<>'M') or (v_yxtqgh='M' and vSFDTYY='1') then if PCZBZ00<>'3' then begin Select a.GHKSBH,b.BMMC00,a.GHYSBH,decode(a.GHYSBH,0,' ',c.ZWXM00),a.GHLBBH,a.TZBZ00,a.SFZJGH,a.SFJZJH,a.GHMZSJ into vYYKSBH,vYYKSMC,vYYYSBH,vYYYSXM,vGHLB00,vTZBZ00,vSFZJGH,vSFJZJH,vYYRQ00 from SF_YSGHHB a,BM_BMBM00 b,BM_YGBM00 c where a.GHHBID=PGHHBID and a.GHKSBH=b.BMBH00 and a.GHYSBH=c.YGBH00; exception when others then verrsql:='取排班信息出现错误,传入的GHHBID='||to_char(PGHHBID)||'没有取到数据!'; raise no_data_found; end; -- else -- begin -- Select a.YSKSBH,b.BMMC00,a.YSYGBH,c.ZWXM00,a.MZLBID into vYYKSBH,vYYKSMC,vYYYSBH,vYYYSXM,vGHLB00 -- from SF_YSPBB0 a,BM_BMBM00 b,BM_YGBM00 c -- where a.YSPBID=PYSPBID and a.YSKSBH=b.BMBH00 and a.YSYGBH=c.YGBH00; --PGHHBID -- exception -- when others then -- verrsql:='取排班信息出现错误,传入的YSPBID='||to_char(PYSPBID)||'没有取到数据!'; -- raise no_data_found; -- end; end if; if ((PBRID00>0) or (PBRSS00<>'0')) and (ls_EKNL<>0) then if PBRID00>0 then select BRSS00 into ls_BRNL00 from vw_ys_brxxb0 where BRID00=PBRID00; elsif PBRSS00<>'0' then begin ls_BRNL00 := to_number(PBRSS00); exception when others then ls_BRNL00 := 0; end; end if; if ls_BRNL00 <> 0 then if (instr(vYYKSMC,'儿科')>0) and (ls_BRNL00>ls_EKNL) then verrsql:='该年龄病人只能在非儿科就诊!'; raise E_SJCF; elsif (instr(vYYKSMC,'儿科')<=0) and (ls_BRNL00'0') then -- select count(1) into V_COUNT0 from sf_yybrb0 where ICKH00=PICKH00 and yyzt00 in ('0','1') and BDRQ00 IS NULL; -- if V_COUNT0>2 then -- verrsql := '您已经有3次预约未及时进行就诊,抱歉!不允许再进行预约登记!'; -- raise E_SJCF; -- end if; -- end if; --莆田附属同一个病人同一个时段(上午,下午)同一个科室只能预约1个号begin begin select count(*) into v_Count1 from XT_XTCS00 where name00='YY_KSCFYYXZ' and VALUE0='Y'; exception when others then v_Count1:=0; end; begin select trim(VALUE0) into LS_KSCFYYXZ_HMKS from XT_XTCS00 where name00='YY_KSCFYYXZ_HMKS' ; exception when others then LS_KSCFYYXZ_HMKS:=''; end; LS_KSCFYYXZ_HMKS:=','||LS_KSCFYYXZ_HMKS||','; if v_Count1>0 and instr(LS_KSCFYYXZ_HMKS,','||vYYKSBH||',')=0 then select count(*) into v_Count0 from SF_YYBRB0 where ((BRID00=PBRID00 and PBRID00>0) or (BRXM00=PBRXM00 and PBRID00=0 and nvl(brdh00,brlxdh)=nvl(pbrdh00,pbrlxdh))) --20180705增加判断电话号码 and YYRQ00=PYYRQ00 and YYKSBH=vYYKSBH and decode(sign(to_number(substr(YYJSSJ,1,2))-12),-1,'上午','下午')= decode(sign(to_number(substr(vYYJSSJ,1,2))-12),-1,'上午','下午') and YYZT00 in('0','1','3'); if v_Count0>0 then verrsql:='对不起,此科室此时段你已经预约过'||v_Count0||'了!'; raise E_SJCF; end if; end if; --同一个病人同一个时段(上午,下午)同一个科室只能预约1个号end --if v_yxtqgh='M' and vSFDTYY='1' then if v_yxtqgh='M' then if PBZ0000='院外预约' then if PYYYGBH in (61655,61346) then verrsql := '用户ID有误,不允许预约!'; raise E_SJCF; end if; vGHCJ00:=vYYYGXM; end if; --判断预约日期是否为对应号表的挂号日期 if vYYRQ00<>PYYRQ00 then verrsql := '该病人预约日期'||PYYRQ00||'跟号表的就诊日期'||vYYRQ00||'不一致,请您重新选择!'; raise E_SJCF; end if; --同个号表不允许重复预约 select count(1) into V_COUNT0 from sf_yybrb0 where GHHBID=PGHHBID and (BRXM00=PBRXM00 and ((BRDH00=trim(PBRDH00) and BRDH00 is not null) or (BRLXDH=trim(PBRLXDH) and BRLXDH is not null)) or PICKH00<>'0' and ICKH00=PICKH00) and yyzt00 in ('0','1'); if V_COUNT0>0 then verrsql := '该病人已预约'||PYYRQ00||'同个医生就诊,不允许再重复预约!'; raise E_SJCF; end if; --增加姓名跟电话号码判断失约次数 select count(1) into V_COUNT0 from sf_yybrb0 where (BRXM00=PBRXM00 and ((BRDH00=trim(PBRDH00) and BRDH00 is not null) or (BRLXDH=trim(PBRLXDH) and BRLXDH is not null)) or PICKH00<>'0' and ICKH00=PICKH00) and yyrq00=PYYRQ00 and yyzt00<>'2'; if V_COUNT0>1 then verrsql := '该病人预约日期'||PYYRQ00||'有2次预约记录,不允许再预约!'; raise E_SJCF; end if; --一周看某个医生不能超过2次 select decode(to_number(to_char(to_date(PYYRQ00,'YYYYMMDD'),'D')),1,7,to_number(to_char(to_date(PYYRQ00,'YYYYMMDD'),'D'))-1) into V_XQ0000 from dual; select count(1) into V_COUNT0 from sf_yybrb0 where (BRXM00=PBRXM00 and ((BRDH00=trim(PBRDH00) and BRDH00 is not null) or (BRLXDH=trim(PBRLXDH) and BRLXDH is not null)) or PICKH00<>'0' and ICKH00=PICKH00) and yyzt00<>'2' and yyrq00>=to_char(to_date(PYYRQ00,'YYYYMMDD')-V_XQ0000+1,'YYYYMMDD') and yyrq00<=to_char(to_date(PYYRQ00,'YYYYMMDD')+7-V_XQ0000,'YYYYMMDD') and yyysbh=vYYYSBH; if V_COUNT0>1 then verrsql := '该病人本周预约医生'||vYYYSXM||'2次,不允许再预约!'; raise E_SJCF; end if; if nvl(PYYSD00,'0')<>'0' then vYYJSSJ:= substr(PYYSD00,1,5)||':00'; end if; if vTZBZ00<>'0' then verrsql := '该医生预约日期'||PYYRQ00||'已停诊!'; raise E_SJCF; end if; if vSFZJGH='1' then verrsql := '该医生预约日期'||PYYRQ00||'全部预约完毕!'; raise E_SJCF; end if; update sf_ysghhb set YYXHS0=YYXHS0+1,YYXHMX=SF_YY_YYXHMX(YYXHMX,GHQSSJ,PYYSD00,1),YYSL00=nvl(YYSL00,0)+1 where ghhbid = PGHHBID; else update sf_ysghhb set YYSL00=nvl(YYSL00,0)+1 where ghhbid = PGHHBID; if PYYRQ00=vDJRQ00 then update sf_ysghhb set YYXHS0=YYXHS0+1 where ghhbid = PGHHBID and YYXHS0'M') or (v_yxtqgh='M' and vSFDTYY='1') then if (v_yxtqgh<>'M') then --更新医生号表侯诊序号 update YS_HBHZXH set BRID00=PBRID00,YYID00=PYYID00,BRXM00=PBRXM00,YYBZ00=vYYBZ00 where GHHBID=PGHHBID and HZXH00=PYYH000; else select nvl(min(ID0000),0) into vID0000 from YS_HBHZXH where GHHBID=PGHHBID and substrb(hzsj00,1,5)=substrb(PYYSD00,1,5) and YYBZ00='1' and YXBZ00='1' and GHH000 is NULL; if vID0000 = 0 then if PSFZJ00 = 'Y' then --允许医生在最后一个时段加号预约 if nvl(vSFJZJH,'0')='1' then verrsql := '该医生预约日期'||PYYRQ00||'('||PYYSD00||')禁止预约加号,不允许预约!'; raise E_SJCF; end if; select max(HZSJ00),max(HZDXH0),max(HZXH00) into Vtmpstr,V_COUNT0,Vmaxhzh from YS_HBHZXH where GHHBID=PGHHBID; if Vmaxhzh>0 then update sf_ysghhb set GHXHS0=GHXHS0+1 where ghhbid = PGHHBID; insert into YS_HBHZXH (ID0000,GHHBID,HZXH00,BRID00,BRXM00,YYBZ00,HZSJ00,YYRQSJ,SFZJ00,SJHZXH,HZDXH0,YYID00) Values(SQ_YS_HBHZXH_ID0000.nextVal,PGHHBID,Vmaxhzh+1,PBRID00,PBRXM00,vYYBZ00,Vtmpstr,null,'1',null,V_COUNT0,PYYID00); end if; else verrsql:='所选择的预约时段'||PYYSD00||'已全部预约完毕,请选择其它时段!'; raise E_SJCF; end if; else update YS_HBHZXH set BRID00=PBRID00,YYID00=PYYID00,BRXM00=PBRXM00,YYBZ00=vYYBZ00 where GHHBID=PGHHBID and ID0000=vID0000 and YYBZ00='1' and YXBZ00='1' and GHH000 is NULL; if sql%notfound then raise no_data_found; end if; end if; end if; if trim(YS_YYDJSFBHXSFZDH) <> 'Y' then --更新病人电话号码 update BM_BRXXB0 set BRDH00=nvl(PBRDH00,BRDH00),BRLXDH=nvl(PBRLXDH,BRLXDH) where BRID00=PBRID00; end if; --添加预约信息 有预约电话 的才能发短信,外网预约厂家不发送比如健康之路(健康之路已经有短信发送功能了) if (YY_YYSFDXTZ='Y') and (PBRXM00 is not null) and ((PBRDH00 is not null) or (PBRLXDH is not null)) and (nvl(instrb(YY_SFSQYYFCJMC,'/'||PWLYYMC||'/'),0)=0) then LS_YYNR00:=PBRXM00||','||'您好!您已预约了'||trim(ls_yyjc00)||' '||vYYKSMC||' '||vYYYSXM||'医生 '||substr(vYYRQ00,1,4)||'年'||substr(vYYRQ00,5,2)||'月'||substr(vYYRQ00,7,2)||'日'||vYYJSSJ||'就诊'|| ',队列号:'||to_char(PYYH000)||' 预约单号为:'||to_char(PYYID00)||' 请您于就诊当日提前打印好候诊单,准时候诊!'; end if; -- 变更 elsif PCZBZ00='2' then --取DJH000 Select nvl(DJH000,0) into vDJH000 from SF_YYBRB0 where YYID00=PYYID00; if vDJH000>0 then -- for MZHS-20150210-001 verrsql:='已经收取预约费用,请取消此预约,再重新预约!'; raise E_SJCF; end if; verrsql:='预约变更业务处理,修改表SF_YYBRB0数据中YYH000,产生错误,请检查!'; select YYH000,GHHBID,BRXM00,YYZT00 into Temp_yyh,Temp_GHHBID,lsBRXM00,ls_YYZT00 from SF_YYBRB0 where YYID00=PYYID00; verrsql:='预约变更业务处理,修改表SF_YYBRB0数据,产生错误,请检查!'; --修改预约挂号表数据 update SF_YYBRB0 set GHHBID=PGHHBID,YYH000=PYYH000, YYKSBH=vYYKSBH,YYKSMC=vYYKSMC,YYYSBH=vYYYSBH,YYYSXM=vYYYSXM, YYLB00=PYYLB00,YYRQ00=PYYRQ00,YYJSSJ=PYYJSSJ, GHLB00=vGHLB00,YYYGBH=PYYYGBH,YYYGXM=vYYYGXM, DJRQ00=vDJRQ00,DJSJ00=vDJSJ00,BZ0000=PBZ0000,BRDH00=PBRDH00, SFCZ00=pSFCZ00,SFSH00=pSFSH00,SFSQZZ=pSFSQZZ,SFYD00=pSFYD00, SFZH00=PSFZH00,WLYYMC=PWLYYMC,BRLXDH=PBRLXDH where YYID00=PYYID00; --电话预约允许修改姓名和电话 if PBRID00=0 then update SF_YYBRB0 set BRXM00=PBRXM00,BRSS00=PBRSS00 where YYID00=PYYID00; end if; verrsql:='预约变更业务处理,修改表YS_HBHZXH据中BRID00,产生错误,请检查!'; --if Temp_yyh<> PYYH000 then update YS_HBHZXH set BRID00=null,YYID00=null,BRXM00=null,YYBZ00=decode(YYBZ00,'6','6',vYYBZ00) where GHHBID=Temp_GHHBID and HZXH00=Temp_yyh; update YS_HBHZXH set BRID00=PBRID00,YYID00=PYYID00,BRXM00=decode(PBRID00,0,PBRXM00,lsBRXM00),YYBZ00=decode(YYBZ00,'6','6',vYYBZ00) where GHHBID=PGHHBID and HZXH00=PYYH000; --end if; if ls_YYZT00='1' then update sf_ysghhb set GHYYHS=GHYYHS-1 where ghhbid = Temp_GHHBID; update sf_ysghhb set GHYYHS=GHYYHS+1 where ghhbid = PGHHBID; end if; if PYYRQ00=vDJRQ00 then update sf_ysghhb set YYXHS0=YYXHS0-1 where ghhbid = Temp_GHHBID; update sf_ysghhb set YYXHS0=YYXHS0+1 where ghhbid = PGHHBID; end if; update sf_ysghhb set YYXHMX=SF_YY_YYXHMX(YYXHMX,GHQSSJ,PYYSD00,1),YYSL00=nvl(YYSL00,0)+1 where ghhbid = PGHHBID; if trim(yykf)='1' then --预约时扣费 --修改费用明细表 verrsql:='预约变更业务处理,修改表SF_FYMX00数据,产生错误,请检查!'; update SF_FYMX00 SET KDKS00=vYYKSBH,KDYS00=vYYYSBH,ZXKS00=vYYKSBH,ZXYS00=vYYKSBH where DJH000=vDJH000; end if; if trim(YS_YYDJSFBHXSFZDH) <> 'Y' then --更新病人电话号码 update BM_BRXXB0 set BRDH00=nvl(PBRDH00,BRDH00),BRLXDH=nvl(PBRLXDH,BRLXDH) where BRID00=PBRID00; end if; if (YY_YYSFDXTZ='Y') and (PBRXM00 is not null) and ((PBRDH00 is not null) or (PBRLXDH is not null)) and (nvl(instrb(YY_SFSQYYFCJMC,'/'||PWLYYMC||'/'),0)=0) then LS_YYNR00:=PBRXM00||','||'您好!您的预约单:'||to_char(PYYID00)||'的预约信息已变更为:'||trim(ls_yyjc00)||' '||vYYKSMC||' '||vYYYSXM||'医生 '||substr(pYYRQ00,1,4)||'年'||substr(pYYRQ00,5,2)||'月'||substr(pYYRQ00,7,2)||'日'||pYYJSSJ||'就诊'|| ',队列号:'||to_char(PYYH000)||' 请您于就诊当日提前打印好候诊单,准时候诊!'; end if; --取消 elsif PCZBZ00='3' then verrsql:='预约ID='||PYYID00||'不存在,请检查!'; --取DJH000 Select DJH000,BZ0000,SFDTYY,GHHBID,YYSD00,YYZT00,YYRQ00,YYJSSJ,YYH000,BRID00 into vDJH000,ls_bz0000,vSFDTYY,Temp_GHHBID,ls_YYSD00,ls_YYZT00,vYYRQ00,vYYJSSJ,ls_YYH000,ls_BRID00 from SF_YYBRB0 where YYID00=PYYID00 and (nvl(PQXLX00,'0')<>'2' or PQXLX00='2' and YYYGBH=PYYYGBH); --if v_yxtqgh='M' and vSFDTYY='1' then -- if v_yxtqgh='M' then -- update sf_ysghhb set YYXHS0=YYXHS0-1,YYXHMX=SF_YY_YYXHMX(YYXHMX,GHQSSJ,ls_YYSD00,-1),YYSL00=YYSL00-1 where ghhbid = Temp_GHHBID; -- end if; if ls_YYZT00 = '2' then verrsql:='所选择的预约ID='||PYYID00||'已取消,无法再取消预约!'; raise E_SJCF; elsif ls_YYZT00 = '3'then verrsql:='所选择的预约ID='||PYYID00||'已就诊,无法再取消预约!'; raise E_SJCF; end if; if vYYRQ00 < to_char(sysdate,'YYYYMMDD') then verrsql:='所选择的预约ID='||PYYID00||',预约日期为'||vYYRQ00||',已过期,无法取消预约!'; raise E_SJCF; elsif (vYYRQ00 = to_char(sysdate,'YYYYMMDD')) and (vYYJSSJ < to_char(sysdate,'HH24:MI:SS')) then if ls_QXYYSFYXQXDRSWHXW = 'Y' then if ((vYYJSSJ <= '06:00:00') and (to_char(sysdate,'HH24:MI:SS')>'06:00:00')) or ((vYYJSSJ <= '12:00:00') and (to_char(sysdate,'HH24:MI:SS')>'12:00:00')) or ((vYYJSSJ <= '18:00:00') and (to_char(sysdate,'HH24:MI:SS')>'18:00:00')) then verrsql:='所选择的预约ID='||PYYID00||',预约日期时间为'||vYYRQ00||' '||vYYJSSJ||',已过期,无法取消预约!'; raise E_SJCF; end if; else verrsql:='所选择的预约ID='||PYYID00||',预约日期时间为'||vYYRQ00||' '||vYYJSSJ||',已过期,无法取消预约!'; raise E_SJCF; end if; end if; --修改预约状态 verrsql:='预约取消业务处理,修改表SF_YYBRB0数据,产生错误,请检查!'; update SF_YYBRB0 set YYZT00='2',QXRQ00=vDJRQ00,QXSJ00=vDJSJ00,QXR000=PYYYGBH,BZ0000=PBZ0000,QXLX00=PQXLX00 where YYID00=PYYID00 and (YYZT00='1' or YYZT00='0'); if sql%notfound then verrsql:='所选择的预约ID='||PYYID00||'已取消或就诊,无法再取消预约!'; raise E_SJCF; end if; verrsql:='预约变更业务处理,修改表YS_HBHZXH据中BRID00,产生错误,请检查!'; --if (v_yxtqgh<>'M') or (v_yxtqgh='M' and vSFDTYY='1') then if (v_yxtqgh<>'M') then update YS_HBHZXH set BRID00=null,YYID00=null,BRXM00=null,YYBZ00=decode(YYBZ00,'6','6',vYYBZ00) where GHHBID=PGHHBID and HZXH00=PYYH000; if ls_YYZT00='1' then update sf_ysghhb set GHYYHS=GHYYHS-1 where ghhbid = Temp_GHHBID; end if; if PYYRQ00=vDJRQ00 then update sf_ysghhb set YYXHS0=YYXHS0-1 where ghhbid = Temp_GHHBID and YYXHS0>1 and YYXHS0>GHYYHS; --有时候修改这句会违反约束,所以加YYXHS0>GHYYHS MZHS-20170902-001 end if; -- update YS_HBHZXH set BRID00=null,YYID00=null,BRXM00=null,YYBZ00=decode(YYBZ00,'6','6',vYYBZ00) where YYID00=PYYID00; --暂时注释 因为慢 else select nvl(max(ID0000),0) into vID0000 from YS_HBHZXH where GHHBID=Temp_GHHBID and YYBZ00 in ('3','4','5','6','7') and YXBZ00='1' and GHH000 is null and substrb(ls_YYSD00,1,5)=substrb(HZSJ00,1,5); if vID0000 = 0 then verrsql:='所选择的预约ID='||PYYID00||'无法取消预约!'; raise E_SJCF; end if; update YS_HBHZXH set BRID00=null,YYID00=null,BRXM00=null,YYBZ00=vYYBZ00 where GHHBID=Temp_GHHBID and ID0000=vID0000 and YYBZ00 in ('3','4','5','6','7') and YXBZ00='1' and GHH000 is null; if sql%notfound then raise no_data_found; end if; if ls_YYZT00='1' then update sf_ysghhb set GHYYHS=GHYYHS-1 where ghhbid = Temp_GHHBID; end if; if PYYRQ00=vDJRQ00 then update sf_ysghhb set YYXHS0=YYXHS0-1 where ghhbid = Temp_GHHBID and YYXHS0>1 and YYXHS0>GHYYHS; --有时候修改这句会违反约束,所以加YYXHS0>GHYYHS end if; update sf_ysghhb set YYSL00=YYSL00-1 where ghhbid = Temp_GHHBID; end if; delete SF_HZBR00 where HZXH00=ls_YYH000 and YSPBID=Temp_GHHBID and BRID00=ls_BRID00; if vDJH000>0 then --预约时扣费 --获取单据号 select SQ_SF_BRJFB0_DJH000.nextval into ls_WJSDJH from dual; --添加费用信息明细表的冲销记录 verrsql:='预约冲销业务处理,修改表F_FYMX00数据,产生错误,请检查!'; Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00,JMJE00,JMSHR0,JMYY00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,KDBQ00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,CXBZ00,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_WJSDJH,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,-XMSL00,-HJJE00,-ZFJE00,-GFJE00,-JZJE00,-JMJE00,JMSHR0,JMYY00, vDJRQ00,vDJSJ00,vDJRQ00,vDJSJ00,KDKS00,KDYS00,KDBQ00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,'*',ZFBL00 from SF_FYMX00 where DJH000=vDJH000 and cxbz00='Z'; verrsql:='预约冲销业务处理,修改表SF_BRFY00数据,产生错误,请检查!'; Insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00,HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00, CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00,CXDJH0,CXPJR0,CXYY00) select ls_WJSDJH,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00,-HJJE00,-ZFJE00,-JZJE00,-GFJE00,0, vDJRQ00,vDJSJ00,PYYYGBH,vYYYGXM,PCZYBM0,decode(JZDH00,0,0,JZDH00),DJH000,vYYYGXM,'预约冲销' from SF_BRFY00 where DJH000=vDJH000; --以下两句的位置开始到这,Modified on 2002-12-24 --本句之前曾用EXISTS,但速度很慢,又改成用IN verrsql:='预约冲销业务处理,修改表SF_FYMX00中CXBZ00数据,产生错误,请检查!'; Update SF_FYMX00 A Set CXBZ00 = '+' where A.DJH000=vDJH000; --in (select DJH000 from SF_BRFY00 where MZH000 = 0 and CXDJH0+0 = 0 );--DJH000 = ls_OLDDJH; --已被冲销 verrsql:='预约冲销业务处理,修改表SF_BRFY00中的CXDJH0数据,产生错误,请检查!'; --2.2.1、Update 旧的费用明细信息记录,SF_BRFY00表中旧的费用记录不做修改 Update SF_BRFY00 Set CXDJH0 = ls_WJSDJH, --这样可以保证只有一条有效的记录 CXPJR0 = vYYYGXM, CXYY00 = '预约冲销' where DJH000=vDJH000 and HJJE00 > 0; -- where MZH000 = as_GHH000 and HJJE00 > 0; --DJH000 = ls_OLDDJH end if; if (YY_YYSFDXTZ='Y') and (PBRXM00 is not null) and ((PBRDH00 is not null) or (PBRLXDH is not null)) and (nvl(instrb(YY_SFSQYYFCJMC,'/'||PWLYYMC||'/'),0)=0) then LS_YYNR00:=PBRXM00||','||'您好!您的预约单:'||to_char(PYYID00)||'的预约信息已成功取消'; end if; --还原取消 elsif PCZBZ00='4' then --取预约id select SQ_SF_YYBRB0_YYID00.nextval into v_yyid00 from dual; --取YYRQ00 Select SFDTYY,YYSD00 into vSFDTYY,ls_YYSD00 from SF_YYBRB0 where YYID00=PYYID00; --if v_yxtqgh='M' and vSFDTYY='1' then if v_yxtqgh='M' then update sf_ysghhb set YYXHS0=YYXHS0+1,YYXHMX=SF_YY_YYXHMX(YYXHMX,GHQSSJ,ls_YYSD00,1),YYSL00=nvl(YYSL00,0)+1 where ghhbid = PGHHBID; end if; ----写入费用明细表 if trim(YYKF)='1' then --预约时扣费 --获取单据号 select SQ_SF_BRJFB0_DJH000.nextval into ls_WJSDJH from dual; verrsql:='还原预约登记,预约费用处理,将数据插入插入表SF_FYMX00时,产生错误,请检查!'; Insert into SF_FYMX00 (MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00, XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00,CZRQ00,CZSJ00, ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00, SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_WJSDJH,SFXMID,XMMC00,'',DW0000,ls_MXHJJE, 1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE,vDJRQ00,vDJSJ00, vDJRQ00,vDJSJ00,vYYKSBH,vYYYSBH,vYYKSBH,vYYYSBH,0, 0,LS_ZFBL00 from BM_YYSFXM where SFXMID = vSFXMID; --写入病人费用表 verrsql:='还原预约登记,费用处理,将数据插入插入表SF_BRFY00时,产生错误,请检查!'; insert into SF_BRFY00 (DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00, HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00,CZRQ00,CZSJ00, CZY000,CZYXM0,CZYKS0,JZDH00) select ls_WJSDJH,0,0,1,PBRID00,PBRXM00,LS_FBBH00, HJJE00,HJJE00,JZJE00,GFJE00,0,vDJRQ00,vDJSJ00, PYYYGBH,vYYYGXM,PCZYBM0,0 from SF_FYMX00 where DJH000=ls_WJSDJH ; end if; verrsql:='还原预约登记将数据插入插入表SF_YYBRB0时,产生错误,请检查!'; insert into SF_YYBRB0( YYID00,JZID00,GHHBID,YYH000,BRID00,BRXM00,BRDH00,KMH000, ICKH00,YYKSBH,YYKSMC,YYYSBH,YYYSXM,YYLB00,YYRQ00, YYJSSJ,YYZT00,YYYGBH,YYYGXM,DJH000,GHLB00,DJRQ00,DJSJ00,CZYBM0,BZ0000,SFZH00,WLYYID,YSPBID,YYSD00,SFDTYY,SFCZ00, SFSH00,SFSQZZ,SFYD00,WLYYMC,BRLXDH,BRSS00) select v_yyid00,0,GHHBID,YYH000,BRID00,BRXM00,BRDH00,KMH000, ICKH00,YYKSBH,YYKSMC,YYYSBH,YYYSXM,PYYLB00,YYRQ00, YYJSSJ,PYYZT00,PYYYGBH,vYYYGXM,ls_WJSDJH,GHLB00,vDJRQ00,vDJSJ00,PCZYBM0, BZ0000||' 被还原YYID'||PYYID00,SFZH00,WLYYID,YSPBID,YYSD00,SFDTYY,SFCZ00,SFSH00,SFSQZZ,SFYD00,PWLYYMC,BRLXDH,BRSS00 from SF_YYBRB0 where YYID00=PYYID00; --if (v_yxtqgh<>'M') or (v_yxtqgh='M' and PYYRQ00=vDJRQ00) then if (v_yxtqgh<>'M') then --更新医生号表侯诊序号 update YS_HBHZXH set BRID00=PBRID00,YYID00=V_YYID00,BRXM00=PBRXM00,YYBZ00=decode(YYBZ00,'6','6',vYYBZ00) where GHHBID=PGHHBID and HZXH00=PYYH000; else select nvl(min(ID0000),0) into vID0000 from YS_HBHZXH where GHHBID=PGHHBID and substrb(hzsj00,1,5)=substrb(ls_YYSD00,1,5) and YYBZ00='1' and YXBZ00='1' and GHH000 is NULL; if vID0000 = 0 then verrsql:='所选择的预约时段'||ls_YYSD00||'已全部预约完毕,无法还原取消!'; raise E_SJCF; end if; update YS_HBHZXH set BRID00=PBRID00,YYID00=PYYID00,BRXM00=PBRXM00,YYBZ00=vYYBZ00 where GHHBID=PGHHBID and ID0000=vID0000 and YYBZ00='1' and YXBZ00='1' and GHH000 is NULL; if sql%notfound then raise no_data_found; end if; end if; if trim(YS_YYDJSFBHXSFZDH) <> 'Y' then --更新病人电话号码 update BM_BRXXB0 set BRDH00=nvl(PBRDH00,BRDH00),BRLXDH=nvl(PBRLXDH,BRLXDH) where BRID00=PBRID00; end if; --将原有的记录标记为已还原 update SF_YYBRB0 set BZ0000=BZ0000||' 已还原' where YYID00=PYYID00; end if; if PCZBZ00 in ('1','2','4') then --if ((v_yxtqgh<>'M') or (v_yxtqgh='M' and PYYRQ00=vDJRQ00)) then if (v_yxtqgh<>'M') then select count(*) into V_COUNT0 from SF_YYBRB0 where YYRQ00>=vDJRQ00 and GHHBID=PGHHBID and YYH000=PYYH000 and YYZT00 not in ('2','4'); if V_COUNT0>1 then if PCZBZ00 in ('1','2') then verrsql:='所选择的预约号已被占用,请选择其它号!'; else verrsql:='该预约信息的预约号已被占用,不能还原!'; end if; raise E_SJCF; end if; -- elsif (v_yxtqgh='M' and PYYRQ00<>vDJRQ00) then -- select count(1) into V_COUNT0 from sf_yybrb0 where yyrq00=Pyyrq00 and YSPBID=PYSPBID and YYZT00<>'2' and yyjssj=PYYJSSJ and nvl(wlyyid,0)=0; --PGHHBID -- select ceil((to_date(substrb(PYYJSSJ,1,5),'hh24:mi:ss')-to_date(b.kssj00,'hh24:mi:ss'))*24)+1,a.YNYYMX -- into V_sdxs00,V_ynyymx from sf_yspbb0 a,bm_mzsjb0 b where a.yspbsj=b.MZSJ00 and a.YSPBID=PYSPBID; -- select SF_YS_HZDYYS(V_sdxs00,V_ynyymx)- V_COUNT0 into V_COUNT0 from dual; -- -- if V_COUNT0<0 then -- if PCZBZ00 in ('1','2') then -- verrsql:='所选择的预约时段已全部预约完毕,请选择其它时段!'; -- else -- verrsql:='该预约时段已全部预约完毕,不能还原!'; -- end if; -- raise E_SJCF; -- end if; end if; end if; verrsql:=''; if instrb(YY_SFSQYYFCJMC,'\'||PWLYYMC||',')>0 then --指定某个网络厂家不收预约费 update SF_YYBRB0 set DJH000=1 where YYID00=PYYID00; end if; --短信通知 if LS_YYNR00 is not null then begin SP_YY_DXTZ00(PBRID00,Pbrxm00,'预约信息','',PYYYGBH,PCZYBM0,LS_YYNR00,nvl(PBRLXDH,PBRDH00),'N',ls_Pzxcgbz,ls_Ptsxx00,ls_Pxxxx00); exception when others then verrsql:=ls_Ptsxx00; end; end if; if PCOMMIT='Y' then COMMIT; end if; exception when E_SJCF then RAISE_APPLICATION_ERROR(-20019,verrsql); rollback; when no_data_found then RAISE_APPLICATION_ERROR(-20019,verrsql||','||SqlErrm); rollback; when others then RAISE_APPLICATION_ERROR(-20019,verrsql||','||SqlErrm); rollback; end; /