You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.3 KiB
127 lines
4.3 KiB
if exists(select * from sysobjects where name='p_rz_prepare_cla' and xtype='p')
|
|
drop procedure p_rz_prepare_cla
|
|
go
|
|
|
|
create procedure p_rz_prepare_cla
|
|
(
|
|
@psorgcode varchar(10),
|
|
@psbillno varchar(20),
|
|
@psparams varchar(200),
|
|
@psmsg varchar(2000) out
|
|
)
|
|
as
|
|
begin
|
|
declare @contrno varchar(40)
|
|
declare @contrstatus varchar(1)
|
|
|
|
select @contrno=contrno from t_adjclause_head where billno=@psbillno
|
|
|
|
if not exists(select contrstatus from t_contract where contrno=@contrno)
|
|
begin
|
|
set @psmsg='扣款变更单对应的合同不存在,不能记账'
|
|
return(-1)
|
|
end
|
|
|
|
select @contrstatus=contrstatus from t_contract where contrno=@contrno;
|
|
if @contrstatus='9'
|
|
begin
|
|
set @psmsg='扣款变更单对应的合同尚未执行,不必通过合同扣款变更单进行扣款变更'
|
|
return(-1)
|
|
end
|
|
|
|
if not exists(select billno from t_adjclause_body where billno=@psbillno and optype <> '3')
|
|
begin
|
|
set @psmsg='扣款变更单中没有需要变更的扣项,不能记账'
|
|
return(-1)
|
|
end
|
|
|
|
set @psmsg=''
|
|
return(1)
|
|
end
|
|
go
|
|
|
|
if exists(select * from sysobjects where name='p_rz_cla' and xtype='p')
|
|
drop procedure p_rz_cla
|
|
go
|
|
|
|
create procedure p_rz_cla
|
|
(
|
|
@psorgcode varchar(10),
|
|
@psbillno varchar(20),
|
|
@psparams varchar(200),
|
|
@psmsg varchar(2000) out
|
|
)
|
|
as
|
|
begin
|
|
declare @contrno varchar(40)
|
|
declare @supcode varchar(15)
|
|
declare @lrdate varchar(10)
|
|
declare @usercode varchar(6)
|
|
declare @username varchar(10)
|
|
declare @orgcode varchar(10)
|
|
declare @itemcode varchar(4)
|
|
declare @itemno varchar(10)
|
|
declare @endjsdate varchar(10)
|
|
declare @optype varchar(1)
|
|
declare @calmode varchar(1)
|
|
declare @enddate varchar(10)
|
|
declare @calenddate varchar(10)
|
|
declare @sup_payable numeric(19,4)
|
|
declare @ssql varchar(2000)
|
|
|
|
select @contrno=contrno,@supcode=supcode,@lrdate=lrdate,@usercode=usercode,@username=username from t_adjclause_head where billno=@psbillno
|
|
|
|
--取出当前合同供应商的最后一次结算日期(未记账的对账单也算在其中),目前只支持经销对账
|
|
select @endjsdate=isnull(enddate,'') from t_paysoa_head where contrno=@contrno
|
|
|
|
declare cur cursor local for select orgcode,itemcode,itemno,optype,calmode,enddate,calenddate from t_adjclause_body where billno=@psbillno and optype<>'3'
|
|
open cur
|
|
fetch next from cur into @orgcode,@itemcode,@itemno,@optype,@calmode,@enddate,@calenddate
|
|
while @@fetch_status=0
|
|
begin
|
|
--如果是增加或修改合同扣项,则如果合同的最后一次结算日期不为空,则新扣项的结束日期必须大于等于最后一次结算日期的第二天
|
|
if (@optype in ('0','1') and @endjsdate is not null)
|
|
begin
|
|
if (@calmode='0' and @enddate<=@endjsdate)
|
|
begin
|
|
set @psmsg='合同的最后一次对账日期为:'+@endjsdate+',要求扣项的结束日期必须大于这个日期,否则下次对账计算不出来'
|
|
return(-1)
|
|
end
|
|
if (@calmode = '1' and @calenddate<=@endjsdate)
|
|
begin
|
|
set @psmsg='合同的最后一次对账日期为:'+@endjsdate+',要求扣项的计算区间结束日期必须大于这个日期,否则下次对账计算不出来'
|
|
return(-1)
|
|
end
|
|
end
|
|
|
|
if exists(select contrno from t_contr_clause where contrno=@contrno and supcode=@supcode and orgcode=@orgcode and itemcode=@itemcode and itemno=@itemno)
|
|
begin
|
|
if (@optype='0')
|
|
begin
|
|
set @psmsg='合同中已经存在扣项(条款项目:'+@itemcode+',组织'+@orgcode+',条款号:'+@itemno+'),不能再增加本扣项'
|
|
return(-1)
|
|
end
|
|
end
|
|
|
|
fetch next from cur into @orgcode,@itemcode,@itemno,@optype,@calmode,@enddate,@calenddate
|
|
end
|
|
close cur
|
|
deallocate cur
|
|
|
|
delete a from t_contr_clause a, t_adjclause_body b
|
|
where a.contrno=b.contrno and a.supcode=b.supcode and a.orgcode=b.orgcode and a.itemcode=b.itemcode and a.itemno=b.itemno
|
|
and b.billno=@psbillno and b.optype<> '3'
|
|
|
|
insert into t_contr_clause(contrno,supcode,orgcode,itemcode,itemno,bgndate,enddate,basetype,feetotal,feerate,
|
|
cltype,zftype,iscalprofit,calmode,calbgndate,calenddate,isinvoice,midclscode,clausetype,tendcode,plucode,cldate,
|
|
clscode,brandcode,isladderrate,laddercaltype,lrdate,usercode,username,ext1,ext2,ext3,ext4,ext5,remark)
|
|
select contrno,supcode,orgcode,itemcode,itemno,bgndate,enddate,basetype,feetotal,feerate,
|
|
cltype,zftype,iscalprofit,calmode,calbgndate,calenddate,isinvoice,midclscode,clausetype,tendcode,plucode,cldate,
|
|
clscode,brandcode,isladderrate,laddercaltype,@lrdate as lrdate,@usercode as usercode,@username as username,ext1,ext2,ext3,ext4,ext5,remark
|
|
from t_adjclause_body
|
|
where billno=@psbillno and optype not in ('2','3')
|
|
|
|
set @psmsg=''
|
|
return(1)
|
|
end
|
|
go |