DROP PROC XXX
GO
CREATE PROC XXX
AS
BEGIN
--------------RECALCULANDO MONTOS DE CABECERA ------------------------------------------

--VARIABLES PARA LA CABECERA
DECLARE @INTRTOTPEN UD_MONTO
DECLARE @INTRTAXPEN UD_IMPUESTO
DECLARE @INTRTOTUSD UD_MONTO
DECLARE @INTRTAXUSD UD_IMPUESTO
DECLARE @INTRSUBTOTPEN UD_MONTO
DECLARE @INTRSUBTOTUSD UD_MONTO
DECLARE @ND_RESULTADOSETUP	INT

SET @INTRTOTPEN=0
SET @INTRTAXPEN=0
SET @INTRTOTUSD=0
SET @INTRTAXUSD=0
SET @INTRSUBTOTPEN=0
SET @INTRSUBTOTUSD=0
SET @ND_RESULTADOSETUP=2

--VARIABLES PARA EL DETALLE QUE SERA MANEJADO POR EL CURSOR PARA EL RECALCULO DE LOS TOTALES DE LA CABECERA
DECLARE @QTY	UD_STOCK
DECLARE @TAXIGV	UD_IMPUESTO
DECLARE @STDCOSTPEN	UD_COSTO
DECLARE @STDCOSTUSD	UD_COSTO

DECLARE @VAL_IMP UD_IMPUESTO

	DECLARE CUR_TEMPORAL CURSOR 
	FOR 	SELECT QTY,TAXIGV,STDCOSTPEN,STDCOSTUSD
        	FROM IN_INTRAITEM 
		WHERE SITEID='57' AND BATNBR='5700000001' AND INVTIDSKU IN (SELECT INVTIDSKU FROM IN_INVENTORYDES)

    	OPEN CUR_TEMPORAL
	FETCH NEXT FROM CUR_TEMPORAL INTO @QTY,@TAXIGV,@STDCOSTPEN,@STDCOSTUSD

	IF (@@FETCH_STATUS!=0)
          BEGIN       
            CLOSE CUR_TEMPORAL
            DEALLOCATE CUR_TEMPORAL
            RAISERROR 20000  'No tiene registros en Detalle'
            RETURN(1)  
          END         
     

      WHILE @@FETCH_STATUS=0
        BEGIN    
		
		SET @VAL_IMP=@TAXIGV

 		SET @INTRSUBTOTPEN=@INTRSUBTOTPEN + ROUND((@QTY*@STDCOSTPEN),@ND_RESULTADOSETUP)
		SET @INTRSUBTOTUSD=@INTRSUBTOTUSD + ROUND((@QTY*@STDCOSTUSD),@ND_RESULTADOSETUP)
		SET @INTRTAXPEN=@INTRTAXPEN + ROUND(((@TAXIGV*@QTY*@STDCOSTPEN)/100),@ND_RESULTADOSETUP)
		SET @INTRTAXUSD=@INTRTAXUSD + ROUND(((@TAXIGV*@INTRSUBTOTUSD)/100),@ND_RESULTADOSETUP)		
		


    	  FETCH NEXT FROM CUR_TEMPORAL INTO @QTY,@TAXIGV,@STDCOSTPEN,@STDCOSTUSD 
        
        END /* Termina while */


	SELECT DISTINCT TAXIGV
	FROM IN_INTRAITEM 
	WHERE SITEID='57' AND BATNBR='5700000001' AND INVTIDSKU IN (SELECT INVTIDSKU FROM IN_INVENTORYDES)

	IF(@@ROWCOUNT>=2)
		BEGIN
			SET @INTRTOTPEN=ROUND(@INTRSUBTOTPEN + @INTRTAXPEN,@ND_RESULTADOSETUP)
			SET @INTRTOTUSD=ROUND(@INTRSUBTOTUSD + @INTRTAXUSD,@ND_RESULTADOSETUP)
			SELECT 1
		END
	ELSE
 		BEGIN
			SET @INTRTAXPEN=ROUND(((@VAL_IMP*@INTRSUBTOTPEN)/100),@ND_RESULTADOSETUP)
			SET @INTRTOTPEN=@INTRSUBTOTPEN + @INTRTAXPEN
			SET @INTRTAXUSD=ROUND(((@VAL_IMP*@INTRSUBTOTUSD)/100),@ND_RESULTADOSETUP)
			SET @INTRTOTUSD=@INTRSUBTOTUSD + @INTRTAXUSD
			SELECT 2
		END
 

  CLOSE CUR_TEMPORAL
  DEALLOCATE CUR_TEMPORAL

	SELECT @INTRTOTPEN,@INTRTOTUSD,@INTRTAXPEN,@INTRTAXUSD,@VAL_IMP,@INTRSUBTOTPEN,((@VAL_IMP*@INTRSUBTOTPEN)/100)
END


