if exists(select 1 from sysobjects where name='pr_get_sheet_no')
  drop proc pr_get_sheet_no
go

Create procedure pr_get_sheet_no
(	
    @trans_no varchar(2),	
    @branch_no varchar(6),
    @sheet_no	varchar(18) output
)
as
begin
	declare  @temp_sheet_no 	varchar(18),
					 @date 						varchar(6),
					 @sheet_no_index 	int,
					 @indexchar 			varchar(4),
					 @ls_branch				varchar(6)
	
	set @sheet_no = ''
	select @date= right(convert(varchar(10), getdate(), 112), 6)
	   
	
	--必须考虑单号是由总部产生还是分店产生(总部单号从单据系统表取号，而分店则是顺序流水号)
	if exists(select 1 from t_bd_branch_info where branch_no = @branch_no and trade_type in('0','5'))
	begin
		set @ls_branch = '000'
		select @sheet_no_index = sheet_value + 1 from t_sys_sheet_no where sheet_id = @trans_no
		if @sheet_no_index >= 10000 or @sheet_no_index <= 0
			set @sheet_no_index = 1
		update t_sys_sheet_no set sheet_value = @sheet_no_index where sheet_id = @trans_no	
		if @@error <> 0 goto err
	end
	else
	begin
		set @ls_branch = @branch_no
		set @temp_sheet_no = @trans_no + @branch_no + @date
		select  @sheet_no = max(sheet_no) from t_im_sheet_master where sheet_no like @temp_sheet_no + '%'
		if @sheet_no is null or @sheet_no = ''
			set @sheet_no_index = 1
		else
		begin
			set @sheet_no_index = convert(int, right(@sheet_no,4)) + 1
			if @sheet_no_index >= 10000 or @sheet_no_index = 0
				set @sheet_no_index = 1 
		end
	end
	
	--单号：2业务类型 + 机构/分店 + 日期(YYMMDD) + 4位流水号
	set @indexchar = right('0000' + convert(varchar(4), @sheet_no_index), 4)
	set @sheet_no = @trans_no + @ls_branch + @date + @indexchar	
	return

err:
	set @sheet_no = ''
end
go