ALTER PROCEDURE [dbo].[sp_remGrabaHaberDescuentosMasivo]

(
 @XML AS VARCHAR(MAX),
 @TIPOCONCEPTO CHAR(1),
 @PERIODO INT,
 @MES     INT,
 @LOGING AS VARCHAR(15)
 )

AS
 
--TABLA TEMPORAL #1 PARA LOS DATOS RELEVANTES RECIBIDOS DESDE LA APLICACION--
            DECLARE  @DATOS0   TABLE
            (
            FICHA INT,
            IDCONCEPTO INT,
            VALOR DECIMAL(18,4)
             )
             
--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
FROM       OPENXML (@IDOC, '/DATASET/Table1',3)  
           WITH (FICHA INT,  
                 IDCONCEPTO INT,
                 VALOR DECIMAL(18,4)); 
END


------------------------------->TEST ----> SELECT * FROM @DATOS0
      
--PUNTERO 1

DECLARE @FICHA INT, @IDCONCEPTO INT,@VALOR DECIMAL(18,4) 

DECLARE PUNTERO1 CURSOR FOR SELECT FICHA, IDCONCEPTO, VALOR  FROM @DATOS0
OPEN PUNTERO1
FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR
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 
              INSERT INTO remMovimientosHD (periodo, mes,ficha,tipoConcepto,idConcepto,valor,importador,loging,logmod,fecing,fecmod) 
             VALUES (@PERIODO, @MES, @FICHA,@TIPOCONCEPTO,@IDCONCEPTO, @VALOR,1, @LOGING, @LOGING, GETDATE(), GETDATE())
             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
       WHERE periodo=@PERIODO AND mes=@MES AND ficha=@FICHA AND tipoConcepto=@TIPOCONCEPTO AND  idConcepto=@IDCONCEPTO
            END
 FETCH PUNTERO1 INTO @FICHA, @IDCONCEPTO, @VALOR
END
CLOSE PUNTERO1
DEALLOCATE PUNTERO1