if exists(select * from sysobjects where name='p_rz_oq' and xtype='p') drop procedure p_rz_oq go create procedure p_rz_oq ( @psorgcode varchar(10), @psbillno varchar(20), @psparams varchar(200), @psmsg varchar(2000) out ) as begin declare @sorgcode varchar(10) declare @squotetype varchar(1) declare @scontrno varchar(40) declare @ssupcode varchar(15) declare @scurver varchar(1) declare @scurdate varchar(10) declare @scurtime varchar(8) declare @susercode varchar(6) declare @susername varchar(10) declare @sstationid varchar(15) declare @soptcontent varchar(100) declare @ilen int declare @iindex int declare @stmp varchar(100) select @susername=substring(@stmp,1,@iindex-1),@sstationid=substring(@stmp,@iindex+1,@ilen) select @sorgcode=orgcode,@squotetype=quotetype,@scontrno=isnull(contrno,''),@ssupcode=supcode from t_orderquote_head where billno=@psbillno select @scurdate=convert(varchar(100),getdate(),23),@scurtime=convert(varchar(100),getdate(),108) if @squotetype='0' begin update a set a.jtaxrate=src.jtaxrate, a.jprice=src.jprice, a.netjprice=src.netjprice, a.billno=src.billno, a.usercode=src.usercode, a.username=src.username, a.rzdate=src.rzdate, a.rztime=src.rztime, a.dsccode=src.dsccode, a.remark=src.remark from t_order_quote a, (select f.billno,s.orgcode,f.quotetype,f.supcode,f.supname,f.contrno,isnull(f.bgndate,'') bgndate,isnull(f.enddate,'') enddate, d.plucode,d.pluname,d.barcode,d.spec,d.cargono,d.unit,d.jtaxrate,s.jprice,s.netjprice,f.usercode,f.username,f.rzdate,f.rztime,f.dsccode,d.remark from t_orderquote_head f,t_orderquote_body d,t_orderquote_org s where f.billno=d.billno and d.plucode=s.plucode and d.billno=s.billno and f.billno=@psbillno)src where a.orgcode=src.orgcode and a.quotetype=src.quotetype and a.supcode=src.supcode and a.contrno=src.contrno and a.plucode=src.plucode if @@error <> 0 begin set @psmsg='更新价格失败' return(-1) end insert into t_order_quote(billno,orgcode,quotetype,supcode,supname,contrno,bgndate,enddate,plucode,pluname,barcode,spec,cargono,unit,jtaxrate,jprice,netjprice,usercode,username,rzdate,rztime,dsccode,remark) select f.billno,s.orgcode,f.quotetype,f.supcode,f.supname,f.contrno,isnull(f.bgndate,''),isnull(f.enddate,'') , d.plucode,d.pluname,d.barcode,d.spec,d.cargono,d.unit,d.jtaxrate,s.jprice,s.netjprice,f.usercode,f.username,f.rzdate,f.rztime,f.dsccode,d.remark from t_orderquote_head f,t_orderquote_body d,t_orderquote_org s where f.billno=d.billno and d.plucode=s.plucode and d.billno=s.billno and f.billno=@psbillno and not exists(select 1 from t_order_quote where orgcode=s.orgcode and quotetype=f.quotetype and supcode=f.supcode and contrno=f.contrno and plucode=d.plucode) if @@error <> 0 begin set @psmsg='插入价格失败' return(-1) end end else if @squotetype='1' begin update a set billno=b.billno,jprice=b.jprice,netjprice=b.netjprice,usercode=b.usercode,username=b.username,rzdate=b.rzdate,rztime=b.rztime,dsccode=b.dsccode,remark=b.remark from t_order_quote a, (select f.billno,s.orgcode,f.quotetype,f.supcode,f.supname,f.contrno,isnull(f.bgndate,'') bgndate,isnull(f.enddate,'') enddate, d.plucode,d.pluname,d.barcode,d.spec,d.cargono,d.unit,d.jtaxrate,s.jprice,s.netjprice,f.usercode,f.username,f.rzdate,f.rztime,f.dsccode,d.remark from t_orderquote_head f,t_orderquote_body d,t_orderquote_org s where f.billno=d.billno and d.plucode=s.plucode and d.billno=s.billno and f.billno=@psbillno) b where a.orgcode=b.orgcode and a.quotetype=b.quotetype and a.supcode=b.supcode and a.contrno=b.contrno and a.plucode=b.plucode and a.bgndate=b.bgndate and a.enddate=b.enddate insert into t_order_quote(billno,orgcode,quotetype,supcode,supname,contrno,bgndate,enddate,plucode,pluname,barcode,spec,cargono,unit,jtaxrate,jprice,netjprice,usercode,username,rzdate,rztime,dsccode,remark) select f.billno,s.orgcode,f.quotetype,f.supcode,f.supname,f.contrno,isnull(f.bgndate,''),isnull(f.enddate,''), d.plucode,d.pluname,d.barcode,d.spec,d.cargono,d.unit,d.jtaxrate,s.jprice,s.netjprice,f.usercode,f.username,f.rzdate,f.rztime,f.dsccode,d.remark from t_orderquote_head f,t_orderquote_body d,t_orderquote_org s where f.billno=d.billno and d.plucode=s.plucode and d.billno=s.billno and f.billno=@psbillno and not exists(select 1 from t_order_quote where orgcode=s.orgcode and quotetype=f.quotetype and supcode=f.supcode and contrno=f.contrno and plucode=d.plucode and bgndate=f.bgndate and enddate=f.enddate) if @@error<>0 begin set @psmsg='插入价格失败' return(-1) end end --若合同不为*且不为空,则更新对应合同商品中的明细 if (@scontrno <> '*') and (@scontrno <> '') begin INSERT INTO t_contr_plu(contrno,serialno,plucode,barcode,pluname,cargono,spec,unit,jtaxrate,jprice,netjprice,remark) SELECT @scontrno,row_number() over(order by a.plucode) AS serialno,a.plucode,barcode,pluname,cargono,spec,unit,jtaxrate,a.jprice,netjprice,'合同报价自动增加' AS remark FROM (SELECT oq.plucode,MIN(oq.JPrice) AS JPrice FROM t_order_quote oq WHERE oq.billno=@psbillno AND oq.contrno=@scontrno AND oq.supcode=@ssupcode GROUP BY plucode) a, t_plu b WHERE a.PluCode=b.PluCode and not exists(select 1 from t_contr_plu where contrno=@scontrno and plucode=a.plucode) end update t_orderquote_head set rzdate=@scurdate,rztime=@scurtime where billno=@psbillno set @soptcontent='合同报价:'+@psbillno+'入账' set @psmsg='' return(1) end go