CREATE FUNCTION [dbo].[GeneraPositionID]
(
	@TipoProdotto VARCHAR(5)='',
	@CodInterno VARCHAR(13)='', 
	@CodMAF VARCHAR(13)='', 
	@CodISIN VARCHAR(16)='', 
	@CodSottoprodotto VARCHAR(13)='',
	@CodiceContratto VARCHAR(11)='',
	@NumeroPolizza  VARCHAR(11)= '', 
	@Conto  VARCHAR(12)= '',
	@Rubricato  VARCHAR(4)='',
	@CustodiaGaranzia  VARCHAR(1)='',
	@Termid VARCHAR(8)='', 
	@Anno DECIMAL(3)=0, 
	@Prog DECIMAL(9)=0
)
RETURNS VARCHAR(123)
AS
BEGIN
	-- Questa funzione concatena i dati formando una stringa unica
	DECLARE  @ResultVar VARCHAR(123)
	DECLARE  @t1 VARCHAR(63)
	DECLARE  @tp VARCHAR(5)
	DECLARE  @t2 VARCHAR(60)
	DECLARE  @AnnoS VARCHAR(3)
	DECLARE  @ProgS VARCHAR(9)
	SET @AnnoS = cast(@Anno AS VARCHAR(3))
	SET @ProgS = cast(@Prog AS VARCHAR(9))
	IF LEN(RTRIM(ISNULL(@Conto, ''))) <12 
		SET @Conto= REPLICATE ( '0' ,12 - LEN(RTRIM(ISNULL(@Conto, ''))) ) +RTRIM(ISNULL(@Conto, ''))
	IF LEN(RTRIM(ISNULL(@Rubricato, ''))) <3 
		SET @Rubricato= REPLICATE ( '0' ,3 - LEN(RTRIM(ISNULL(@Rubricato, ''))) ) +RTRIM(ISNULL(@Rubricato, ''))
	IF LEN(RTRIM(ISNULL(@CustodiaGaranzia, ''))) <1 
		SET @CustodiaGaranzia= '0' 
	IF LEN(RTRIM(ISNULL(@NumeroPolizza, ''))) <11 
		SET @NumeroPolizza= REPLICATE ( '0' ,11 - LEN(RTRIM(ISNULL(@NumeroPolizza, ''))) ) +RTRIM(ISNULL(@NumeroPolizza, ''))
	IF LEN(RTRIM(ISNULL(@Termid, ''))) <8 
		SET @Termid= REPLICATE ( '0' ,8 - LEN(RTRIM(ISNULL(@Termid, ''))) ) +RTRIM(ISNULL(@Termid, ''))
	IF LEN(RTRIM(ISNULL(@AnnoS, 0))) <3 
		SET @AnnoS= REPLICATE ( '0' ,3 - LEN(RTRIM(ISNULL(@AnnoS, 0))) ) +RTRIM(ISNULL(@AnnoS, 0))
	IF LEN(RTRIM(ISNULL(@ProgS, 0))) <9 
		SET @ProgS= REPLICATE ( '0' ,9 - LEN(RTRIM(ISNULL(@ProgS, 0))) ) +RTRIM(ISNULL(@ProgS, 0))
	SET @t1= 
		RTRIM(ISNULL(@CodiceContratto,'e'))+
		RTRIM(ISNULL(@Conto,'e'))+ 
		RTRIM(ISNULL(@Rubricato,'e'))+ 
		RTRIM(ISNULL(@CustodiaGaranzia, 'e'))+ 
		RTRIM(ISNULL(@NumeroPolizza,'e'))+
		RTRIM(ISNULL(@Termid, 'e'))+
		RTRIM(ISNULL(@AnnoS, 'e'))+
		RTRIM(ISNULL(@ProgS, 'e'))
	SET @ResultVar =  ISNULL(@t1,'1') 
	-- Return the result of the function
	RETURN @ResultVar
END