ALTER PROCEDURE [dbo].[sp_remGrabaHaberCuotasMasivo]
(
	@XML AS VARCHAR(MAX),
	@TIPOCONCEPTO CHAR(1),
	@PERIODO INT,
	@MES     INT,
	@LOGING AS VARCHAR(15),
	@tieneNumDoc AS INT
)

AS
IF @tieneNumDoc=0 -->SIGNIFICA QUE NO TIENE CUOTAS     <----------------------------------------------------------OJO
BEGIN
--TABLA TEMPORAL #1 PARA LOS DATOS RELEVANTES RECIBIDOS DESDE LA APLICACION--
            DECLARE  @DATOS0   TABLE
            (
            FICHA INT,
            IDCONCEPTO INT,
            VALOR DECIMAL(18,4),
            TIPOCONCEPTO_REG VARCHAR(10) NULL,
            CANTCUOTAS  INT,
            CUOTAACTUAL INT
            )

--PASA LOS DATOS DEL XML A LA TABLA #DATOS0--
IF @XML <> ''
BEGIN
DECLARE @IDOC INT;
EXEC sp_xml_preparedocument @IDOC OUTPUT, @XML;

INSERT INTO @DATOS0
SELECT
        FICHA,
        IDCONCEPTO,
        CASE VALOR
        WHEN 0 THEN Null
        ELSE VALOR
        END AS VALOR,
        TIPOCONCEPTO,
        CANTCUOTAS,
        CUOTAACTUAL
FROM       OPENXML (@IDOC, '/DATASET/Table1',3)
            WITH (FICHA       INT,
                IDCONCEPTO  INT,
                VALOR       DECIMAL(18,4),
                TIPOCONCEPTO VARCHAR(10),
                CANTCUOTAS  INT,
                CUOTAACTUAL INT);
END


------------------------------->TEST ----> SELECT * FROM @DATOS0

--PUNTERO 1

DECLARE @FICHA INT, @IDCONCEPTO INT,@VALOR DECIMAL(18,4), @CANTCUOTAS INT, @CUOTAACTUAL INT, @TIPO CHAR(1)

DECLARE PUNTERO1 CURSOR FOR SELECT FICHA, IDCONCEPTO, VALOR, CANTCUOTAS, CUOTAACTUAL,
    CASE WHEN TIPOCONCEPTO_REG IS NOT NULL AND TIPOCONCEPTO_REG <> ''
        THEN LEFT(TIPOCONCEPTO_REG, 1)
        ELSE @TIPOCONCEPTO
    END
FROM @DATOS0
OPEN PUNTERO1
FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR, @CANTCUOTAS, @CUOTAACTUAL, @TIPO
WHILE (@@FETCH_STATUS=0)
    BEGIN
        IF NOT EXISTS (SELECT periodo FROM remMovimientosHD  WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA AND tipoConcepto=@TIPO AND idConcepto=@IDCONCEPTO)
            BEGIN
                IF @VALOR > 0
                    BEGIN
                        INSERT INTO remMovimientosHD (periodo, mes,ficha,tipoConcepto,idConcepto,valor,importador,loging,logmod,fecing,fecmod,cantcuotas, cuotaactual)
                        VALUES (@PERIODO, @MES, @FICHA,@TIPO,@IDCONCEPTO, @VALOR,1, @LOGING, @LOGING, GETDATE(), GETDATE(),@CANTCUOTAS,@CUOTAACTUAL)
                END
            END
        ELSE
            BEGIN
                UPDATE dbo.remMovimientosHD
                SET [periodo] =@periodo
                    ,[mes] = @MES
                    ,[ficha] = @FICHA
                    ,[tipoConcepto] = @TIPO
                    ,[idConcepto] = @IDCONCEPTO
                    ,[valor] = @VALOR
                    ,[importador] =1
                    ,[fecmod] =GETDATE()
                    ,[logmod] = @LOGING
                    ,[cantcuotas]  = @CANTCUOTAS
                    ,[cuotaactual] = @CUOTAACTUAL
                WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA AND tipoConcepto=@TIPO AND  idConcepto=@IDCONCEPTO
        END
FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR, @CANTCUOTAS, @CUOTAACTUAL, @TIPO
END
CLOSE PUNTERO1
DEALLOCATE PUNTERO1
END


IF @tieneNumDoc=1 -->SIGNIFICA QUE TIENE UNA COLUMNA CON NUMERO DE DOCUMENTOS  <----------------------------------------------------------OJO

BEGIN
    --TABLA TEMPORAL #1 PARA LOS DATOS RELEVANTES RECIBIDOS DESDE LA APLICACION--
            DECLARE  @DATOS1  TABLE
            (
            FICHA INT,
            IDCONCEPTO INT,
            VALOR DECIMAL(18,4),
            TIPOCONCEPTO_REG VARCHAR(10) NULL,
            CANTCUOTAS  INT,
            CUOTAACTUAL INT,
            NUMDOC BIGINT
            )

--PASA LOS DATOS DEL XML A LA TABLA #DATOS0--
IF @XML <> ''
BEGIN
DECLARE @ID INT;
EXEC sp_xml_preparedocument @ID OUTPUT, @XML;

INSERT INTO @DATOS1
SELECT
        FICHA,
        IDCONCEPTO,
        CASE VALOR
        WHEN 0 THEN Null
        ELSE VALOR
        END AS VALOR,
        TIPOCONCEPTO,
        CANTCUOTAS,
        CUOTAACTUAL,
        NUMDOC
FROM       OPENXML (@ID, '/DATASET/Table1',3)
            WITH (FICHA       INT,
                IDCONCEPTO  INT,
                VALOR       DECIMAL(18,4),
                TIPOCONCEPTO VARCHAR(10),
                CANTCUOTAS  INT,
                CUOTAACTUAL INT,
                NUMDOC      BIGINT);
END

------------------------------->TEST ----> SELECT * FROM @DATOS1

--PUNTERO 2

DECLARE @FICHA1 INT, @IDCONCEPTO1 INT,@VALOR1 DECIMAL(18,4), @CANTCUOTAS1 INT, @CUOTAACTUAL1 INT, @NUMDOC1 BIGINT, @TIPO1 CHAR(1)

DECLARE PUNTERO2 CURSOR FOR SELECT FICHA, IDCONCEPTO, VALOR, CANTCUOTAS, CUOTAACTUAL, NUMDOC,
    CASE WHEN TIPOCONCEPTO_REG IS NOT NULL AND TIPOCONCEPTO_REG <> ''
        THEN LEFT(TIPOCONCEPTO_REG, 1)
        ELSE @TIPOCONCEPTO
    END
FROM @DATOS1
OPEN PUNTERO2
FETCH PUNTERO2 INTO @FICHA1, @IDCONCEPTO1, @VALOR1, @CANTCUOTAS1, @CUOTAACTUAL1, @NUMDOC1, @TIPO1
WHILE (@@FETCH_STATUS=0)
    BEGIN
        IF NOT EXISTS (SELECT periodo FROM remMovimientosHD  WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA1 AND tipoConcepto=@TIPO1 AND idConcepto=@IDCONCEPTO1)
            BEGIN
                IF @VALOR1 > 0
                    BEGIN
                        INSERT INTO remMovimientosHD (periodo, mes,ficha,tipoConcepto,idConcepto,valor,importador,loging,logmod,fecing,fecmod,cantcuotas, cuotaactual,numerodocumento)
                        VALUES (@PERIODO, @MES, @FICHA1,@TIPO1,@IDCONCEPTO1, @VALOR1,1, @LOGING, @LOGING, GETDATE(), GETDATE(),@CANTCUOTAS1,@CUOTAACTUAL1,@NUMDOC1)
                END
            END
        ELSE
            BEGIN
                UPDATE dbo.remMovimientosHD
                SET [periodo] =@periodo
                    ,[mes] = @MES
                    ,[ficha] = @FICHA1
                    ,[tipoConcepto] = @TIPO1
                    ,[idConcepto] = @IDCONCEPTO1
                    ,[valor] = @VALOR1
                    ,[importador] =1
                    ,[fecmod] =GETDATE()
                    ,[logmod] = @LOGING
                    ,[cantcuotas]  = @CANTCUOTAS1
                    ,[cuotaactual] = @CUOTAACTUAL1
                    ,[numerodocumento]=@NUMDOC1
                WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA1 AND tipoConcepto=@TIPO1 AND  idConcepto=@IDCONCEPTO1
        END
FETCH PUNTERO2 INTO @FICHA1, @IDCONCEPTO1, @VALOR1, @CANTCUOTAS1, @CUOTAACTUAL1, @NUMDOC1, @TIPO1
END
CLOSE PUNTERO2
DEALLOCATE PUNTERO2
END