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),
            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,
        CANTCUOTAS,
        CUOTAACTUAL
FROM       OPENXML (@IDOC, '/DATASET/Table1',3)  
           WITH (FICHA       INT,  
                 IDCONCEPTO  INT,
                 VALOR       DECIMAL(18,4),
                 CANTCUOTAS  INT,
                 CUOTAACTUAL INT); 
END


------------------------------->TEST ----> SELECT * FROM @DATOS0
      
--PUNTERO 1

DECLARE @FICHA INT, @IDCONCEPTO INT,@VALOR DECIMAL(18,4), @CANTCUOTAS INT, @CUOTAACTUAL INT

DECLARE PUNTERO1 CURSOR FOR SELECT FICHA, IDCONCEPTO, VALOR, CANTCUOTAS, CUOTAACTUAL  FROM @DATOS0
OPEN PUNTERO1
FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR, @CANTCUOTAS, @CUOTAACTUAL
WHILE (@@FETCH_STATUS=0)
	BEGIN
		IF NOT EXISTS (SELECT periodo FROM remMovimientosHD  WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA AND tipoConcepto=@TIPOCONCEPTO 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,@TIPOCONCEPTO,@IDCONCEPTO, @VALOR,1, @LOGING, @LOGING, GETDATE(), GETDATE(),@CANTCUOTAS,@CUOTAACTUAL)
				END
			END
		ELSE
			BEGIN
				UPDATE dbo.remMovimientosHD 
				SET [periodo] =@periodo
					,[mes] = @MES
					,[ficha] = @FICHA
					,[tipoConcepto] = @TIPOCONCEPTO
					,[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=@TIPOCONCEPTO AND  idConcepto=@IDCONCEPTO
		END
FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR, @CANTCUOTAS, @CUOTAACTUAL
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),
            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,
        CANTCUOTAS,
        CUOTAACTUAL,
        NUMDOC
FROM       OPENXML (@ID, '/DATASET/Table1',3)  
           WITH (FICHA       INT,  
                 IDCONCEPTO  INT,
                 VALOR       DECIMAL(18,4),
                 CANTCUOTAS  INT,
                 CUOTAACTUAL INT,
                 NUMDOC      BIGINT); 
END
  
------------------------------->TEST ----> SELECT * FROM @DATOS0
      
--PUNTERO 2

DECLARE @FICHA1 INT, @IDCONCEPTO1 INT,@VALOR1 DECIMAL(18,4), @CANTCUOTAS1 INT, @CUOTAACTUAL1 INT, @NUMDOC1 BIGINT

DECLARE PUNTERO2 CURSOR FOR SELECT FICHA, IDCONCEPTO, VALOR, CANTCUOTAS, CUOTAACTUAL, NUMDOC  FROM @DATOS1
OPEN PUNTERO2
FETCH PUNTERO2 INTO @FICHA1, @IDCONCEPTO1, @VALOR1, @CANTCUOTAS1, @CUOTAACTUAL1, @NUMDOC1
WHILE (@@FETCH_STATUS=0)
	BEGIN
		IF NOT EXISTS (SELECT periodo FROM remMovimientosHD  WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA1 AND tipoConcepto=@TIPOCONCEPTO AND idConcepto=@IDCONCEPTO1)
			BEGIN
				IF @VALOR > 0
					BEGIN
						INSERT INTO remMovimientosHD (periodo, mes,ficha,tipoConcepto,idConcepto,valor,importador,loging,logmod,fecing,fecmod,cantcuotas, cuotaactual,numerodocumento) 
						VALUES (@PERIODO, @MES, @FICHA1,@TIPOCONCEPTO,@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] = @TIPOCONCEPTO
					,[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=@TIPOCONCEPTO AND  idConcepto=@IDCONCEPTO1
		END
FETCH PUNTERO2 INTO @FICHA1, @IDCONCEPTO1, @VALOR1, @CANTCUOTAS1, @CUOTAACTUAL1, @NUMDOC1
END
CLOSE PUNTERO2
DEALLOCATE PUNTERO2
END