CREATE FUNCTION [dbo].[Crea_positionID_v2]
(
    @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 @AnnoS VARCHAR(3) = RIGHT('000' + CAST(@Anno AS VARCHAR(3)), 3)
    DECLARE @ProgS VARCHAR(9) = RIGHT('000000000' + CAST(@Prog AS VARCHAR(9)), 9)
    -- Usa RIGHT invece di REPLICATE per pad-left con zeri
    SET @Conto = RIGHT('000000000000' + @Conto, 12)
    SET @Rubricato = RIGHT('000' + @Rubricato, 3)
    SET @NumeroPolizza = RIGHT('00000000000' + @NumeroPolizza, 11)
    SET @Termid = RIGHT('00000000' + @Termid, 8)
    -- CustodiaGaranzia può essere assegnata direttamente
    SET @CustodiaGaranzia = ISNULL(@CustodiaGaranzia, '0')
    -- Concatenazione delle stringhe finali
    SET @ResultVar = ISNULL(@CodiceContratto, 'e') + @Conto + @Rubricato + @CustodiaGaranzia + @NumeroPolizza + @Termid + @AnnoS + @ProgS
    RETURN @ResultVar
END