alter Procedure Ar_GrabarResumenenTmp_Ar_Resumen  
(@CORRNBR   int,  
 @FORMATO   int, --1 es Detallado osea son todos los seleccionados , 0 es Resumido   
 @CURYID    UD_CURYID,  
 @USERID    UD_USERID)   
as  
Begin  
  
  DECLARE @SITEID           UD_IDSITE  
  DECLARE @INVTIDSKU        UD_IDCORPORATIVO   
  DECLARE @QTY              UD_STOCK  
  DECLARE @SLSPRICESALEORI  UD_PRECIO  
  DECLARE @SLSPRICESALE     UD_PRECIO  
  DECLARE @TOTALPEN         UD_MONTO   
  DECLARE @TOTALPENORI      UD_MONTO  
  DECLARE @TOTALUSD         UD_MONTO  
  DECLARE @TOTALUSDORI      UD_MONTO  
  DECLARE @TAXPEN           UD_MONTO  
  DECLARE @TAXPENORI        UD_MONTO  
  DECLARE @TAXUSD           UD_MONTO  
  DECLARE @TAXUSDORI        UD_MONTO    
  DECLARE @SUBTOTALPEN      UD_MONTO  
  DECLARE @SUBTOTALUSD      UD_MONTO  
  DECLARE @NOAFECTOPEN      UD_MONTO  
  DECLARE @NOAFECTOUSD      UD_MONTO  
  DECLARE @DESCR            UD_DESCR_INVENT  
  DECLARE @STKITEM          BIT  
  DECLARE @STDCOSTPEN       UD_COSTO  
  DECLARE @STDCOSTUSD       UD_COSTO  
  DECLARE @stkunitid        UD_IDCORPORATIVO  
  DECLARE @ERROR            INT   
  DECLARE @SUBTOTALPENORI   UD_MONTO  
  DECLARE @SUBTOTALUSDORI   UD_MONTO    
      
    -- Previamente si es por selección (Detallado) se tiene quen Correr el Store que   
    -- carga tmp_ar_salesdet   
      
    -- Cuando es un Solo Almacen entonces si se puede caturar el ultimo precio  
    -- Cuando son Varios el precio promedio que se igual as precio del articulo PARA OP_SALESDET   
    -- en op_salesdet se graban dos precios el de in_inventorydat y el de venta   
  
    BEGIN TRAN             
      
    DECLARE @VALUE         NUMERIC(5,2)  
    DECLARE @FLOATOUTPUT   UD_CANTDECIMAL   
      
    SELECT @FLOATOUTPUT=FLOATOUTPUT FROM SETUP  
    SELECT @VALUE=VALUE FROM TAXS WHERE TAXID=(select TAXID from setup)      
          
   
    if @FORMATO=1   
       Begin   
           DECLARE CURRESUMENSEL CURSOR FOR              
           SELECT TMP_AR_SALESDET.INVTIDSKU,SUM(TMP_AR_SALESDET.QTY),TMP_AR_SALESDET.SLSPRICESALE,   
                  TMP_AR_SALESDET.SLSPRICESALE,SUM(TMP_AR_SALESDET.TOTALPEN),SUM(TOTALPENORI),  
                  SUM(TMP_AR_SALESDET.TOTALUSD),SUM(TOTALUSDORI),SUM(TMP_AR_SALESDET.TAXPEN),  
                  SUM(TAXPENORI),SUM(TMP_AR_SALESDET.TAXUSD),SUM(TAXUSORI),  
                  SUM(SUBTOTALPEN),SUM(SUBTOTALUSD),SUM(NOAFECTOPEN),SUM(NOAFECTOUSD),  
                  IN_INVENTORY.DESCR,IN_INVENTORYDAT.STDCOSTPEN,   
                  IN_INVENTORYDAT.STDCOSTUSD,IN_INVENTORY.stkunitid  
           FROM   (TMP_AR_SALESDET INNER JOIN IN_INVENTORY   
                   ON TMP_AR_SALESDET.INVTIDSKU = IN_INVENTORY.INVTIDSKU)  
                   LEFT JOIN IN_INVENTORYDAT  
                   ON TMP_AR_SALESDET.INVTIDSKU = IN_INVENTORYDAT.INVTIDSKU AND  
                      TMP_AR_SALESDET.SITEID = IN_INVENTORYDAT.SITEID  
           WHERE CORRNBR =@CORRNBR         
           GROUP BY TMP_AR_SALESDET.INVTIDSKU,TMP_AR_SALESDET.SLSPRICESALE,IN_INVENTORY.DESCR,  
                    IN_INVENTORYDAT.STDCOSTPEN,IN_INVENTORYDAT.STDCOSTUSD,      
                    IN_INVENTORY.stkunitid  
             
           OPEN CURRESUMENSEL                              
            FETCH NEXT FROM CURRESUMENSEL INTO @INVTIDSKU,@QTY,@SLSPRICESALEORI,@SLSPRICESALE,  
                                               @TOTALPEN,@TOTALPENORI,@TOTALUSD,@TOTALUSDORI,@TAXPEN,@TAXPENORI,  
                                               @TAXUSD,@TAXUSDORI,@SUBTOTALPEN,@SUBTOTALUSD,@NOAFECTOPEN,  
                                               @NOAFECTOUSD,@DESCR,@STDCOSTPEN,@STDCOSTUSD,  
                                               @stkunitid  
                            
            WHILE @@FETCH_STATUS = 0  
              BEGIN                                                                                    
                 -- Si no hay ningún No Afecto se Procede a realizar el Cálculo    
                 -- Se asume que deben tener el Mismo Impuesto                  
                   
                 IF @NOAFECTOPEN=0    
                    BEGIN                
                      SET @TOTALPEN = @TOTALPEN                                                                                                                                        
                      SET @TOTALUSD=  @TOTALUSD  
                      -- Las Columnas de SubTotales se Utilizan en Caso se registre algun descuento   
                          
                      SET @SUBTOTALPEN=ROUND(@TOTALPEN / (1 + (@VALUE/100)),@FLOATOUTPUT)     
                      SET @SUBTOTALUSD=ROUND(@TOTALUSD / (1 + (@VALUE/100)),@FLOATOUTPUT)  
    
                      SET @TOTALPENORI = @TOTALPENORI  
                      SET @TOTALUSDORI= @TOTALUSDORI  
  
                      SET @SUBTOTALPENORI = ROUND(@TOTALPENORI / (1 + (@VALUE/100)),@FLOATOUTPUT)  
                      SET @SUBTOTALUSDORI = ROUND(@TOTALUSDORI / (1 + (@VALUE/100)),@FLOATOUTPUT)  
                         
                      SET @TAXPEN= ROUND(@TOTALPEN - @SUBTOTALPEN,@FLOATOUTPUT)  
                      SET @TAXUSD= ROUND(@TOTALUSD - @SUBTOTALUSD,@FLOATOUTPUT)  
  
                      SET @TAXPENORI= ROUND(@TOTALPENORI - @SUBTOTALPENORI,@FLOATOUTPUT)  
                      SET @TAXUSDORI= ROUND(@TOTALUSDORI - @SUBTOTALUSDORI,@FLOATOUTPUT)  
  
                    END  
                   
		--Recalcular las cantidades
		--CARLOS
		SET @QTY = round(@SUBTOTALPEN/ROUND(@SLSPRICESALE/(1 + (@VALUE/100)),4),3)

                 set exec @ERROR=AR_GrabarRegistroenDetalleTempProc NULL,@CORRNBR,'',0,@INVTIDSKU,@CURYID,0,0,0,  
                                                                    NULL,0,0,0,0,0,0,@TOTALPEN,@TOTALUSD,@TOTALPENORI,  
                                                                    @TOTALUSDORI,  
                                                                    @TAXPEN,@TAXUSD,@TAXPENORI,@TAXUSDORI,  
                                                                    @SUBTOTALPEN,@SUBTOTALUSD,@NOAFECTOPEN,@NOAFECTOUSD,  
                                                                    1,0,@SLSPRICESALEORI,@SLSPRICESALE,@STDCOSTPEN,  
                                                                    @STDCOSTUSD,'',@DESCR,@QTY,  
                                                                    @USERID,0,0,'',@stkunitid  
    
                  if (@ERROR!=0)      
                    BEGIN  
                        CLOSE CURRESUMENSEL  
                        DEALLOCATE CURRESUMENSEL  
                        ROLLBACK TRAN                      
                        RETURN(1)                 
                     END   
                                                                                                                                                                                                                         
              FETCH NEXT FROM CURRESUMENSEL INTO @INVTIDSKU,@QTY,@SLSPRICESALEORI,@SLSPRICESALE,  
                                                 @TOTALPEN,@TOTALPENORI,@TOTALUSD,@TOTALUSDORI,@TAXPEN,@TAXPENORI,  
                                                 @TAXUSD,@TAXUSDORI,@SUBTOTALPEN,@SUBTOTALUSD,@NOAFECTOPEN,  
                                                 @NOAFECTOUSD,@DESCR,@STDCOSTPEN,@STDCOSTUSD,  
                                                 @stkunitid  
              END  
           CLOSE CURRESUMENSEL  
           DEALLOCATE CURRESUMENSEL  
       End      
   COMMIT TRAN  
End  
  
--************************************************************************  
