ALTER   Procedure OP_CerrarParteDiarioProc  
(@SITEID       UD_IDSITE = '76  ',  
 @MONEDABASE   UD_CURYID = 'PEN',  
 @MONEDAEXTR   UD_CURYID = 'USD',  
 @USERID       UD_USERID = 'SYSADMIN',  
 @CURYTYPEID   UD_CURYTYPEID = 'TCONV' --,
--@FECHAPROCESO UD_FECHA 
)  
as      
BEGIN      
--SELECT * FROM OP_SUMMARYDAY  SET @FECHAPROCESO ='01/06/2008'  
--SELECT * FROM OP_SUMMARYSALESDET  
--SELECT * FROM OP_SUMMARYSALES  
--NO ENTIENDO XQ @@ROWCOUNT = 0 -.- PUEDE Q NO EXISTAN REGISTROS  
    DECLARE @FECHAPROCESO  UD_FECHA       
    Select @FECHAPROCESO=DATEPROCE from setup   
--set @FECHAPROCESO = '05/01/2009'
  
    if EXISTS(select BATNBRDIARYSUMMARY from OP_SUMMARYDAY where SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO)    
       BEGIN       
          RAISERROR 20000 'Parte Diario ya Fue cerrado'                                            
          RETURN(1)                    
       END  
  
    BEGIN TRAN  
          
        UPDATE SETUP SET GENRESUPART=0   
    
   IF (@@ERROR!=0) --or @@rowcount=0)   
           BEGIN    
            ROLLBACK TRAN  
            RAISERROR  20000 'No se pudo Iniciar el proceso grabación '              
            RETURN(1)      
        END     
                   
        UPDATE OP_CTRLFUEL SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en Control de Combustibles [OP_CTRLFUEL]'                                            
             RETURN(1)  
           END  
                   
        UPDATE OP_CTRLFUELPRICE SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0) --OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en Control de Combustibles [OP_CTRLFUELPRICE]'                                            
             RETURN(1)              
           END  
  
--de aki para atras kien habra cambiado.. ni idea  
--Carlitos ^^ 14/11/2008  
--me limitare a comentar los @@ROWCOUNT=0)  
        UPDATE OP_CTRLFUELPRICESALES SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
--         *****************************************************************************************************************************************************************************************************************777  
        IF (@@ERROR!=0) --OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en Control de Combustibles [OP_CTRLFUELPRICESALES]'                                            
             RETURN(1)  
           END  
  
  
        UPDATE OP_CARD_MONT SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0) --OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en el Resumen de Tarjetas [OP_CARD_MONT] '                                            
             RETURN(1)  
           END  
        UPDATE OP_CARD_MONTSALES SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en el Resumen de Tarjetas [OP_CARD_MONTSALES] '                                            
             RETURN(1)  
           END  
--SELECT * FROM OP_SUMMARYSALES WHERE SITEID='76  ' AND DATEPROCE='20080301'  Pablo N.  
        UPDATE OP_SUMMARYSALES SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en el Resumen de Ventas [OP_SUMMARYSALES]'                                            
             RETURN(1)  
           END  
  
        UPDATE OP_DEPOSITSITE SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
     BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en el Control de depósitos [OP_DEPOSITSITE]'                                            
             RETURN(1)  
           END  
  
        UPDATE OP_DEPOSITSITEDET SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Estado en el Control de depósitos [OP_DEPOSITSITEDET]'                                            
             RETURN(1)  
           END  
  
        UPDATE OP_CCSALESPERSON SET STATUS=1 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
  IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)       
---********************************************************************************************************************************************************************************************************************************7777  
  
           BEGIN  
             ROLLBACK  
             RAISERROR 20000 'No se pudo Actualizar el Estado en Faltantes/Sobrantes [OP_CCSALESPERSON]'                                              
             RETURN(1)   
           END         
  
--SELECT @SITEID,@FECHAPROCESO Pablo N.  
        UPDATE OP_DOCSUMMARY SET STKPROCE=1 WHERE SITEID=@SITEID AND DOCDATE=@FECHAPROCESO     
        IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN  
             ROLLBACK  
             RAISERROR 20000 'No se pudo Actualizar el Estado en Faltantes/Sobrantes [OP_CCSALESPERSON]'  
             RETURN(1)   
           END  
  
         /****************************************************************************************/  
         -- Hay que llenar las Tablas de Resumen de Inventarios  
  
-----INICIO------Pablo Neyra.------BLOQUEO PROCESO ORIGINAL--*********************************************************************************************  
--/*  
           
         DECLARE @VALORRETORNO INT  
         SET EXEC @VALORRETORNO=GENERA_RESUMENES_MOVIMIENTOS_PROC @FECHAPROCESO,@FECHAPROCESO  
           
         IF @VALORRETORNO!=0  
            BEGIN   
              ROLLBACK TRAN  
              RAISERROR 20000 'No se pudo Generar Resumen de Movimientos de Inventarios'      
              RETURN(1)  
            END  
        
         -- Hay que Obtener el Correlativo para grabar en OP_SUMMARYDAY  
  
         DECLARE @TSTAMP         TIMESTAMP  
         DECLARE @NBRCORELATIVE  UD_CORRELATIVOS   
  
         SELECT @NBRCORELATIVE=NBRCORELATIVE,@TSTAMP=TSTAMP   
                FROM OP_CORELATIVE WHERE TYPECORELATIVE='BATNBRDIARYSUMMARY'   
  
         UPDATE OP_CORELATIVE SET NBRCORELATIVE=@NBRCORELATIVE+1   
                              WHERE TYPECORELATIVE='BATNBRDIARYSUMMARY' AND TSTAMP=@TSTAMP   
                                                
         IF (@@ERROR!=0)-- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se pudo Actualizar el Correlativo para el Resumen de Parte Diario'                                            
             RETURN(1)  
           END  
  
         -- Hay que Obtener el Monto del Tipo de Cambio            
           
         DECLARE @MONTOCAMBIO       UD_CURYRATE                                                          
  
         SELECT @MONTOCAMBIO=RATE FROM CURYRATE WHERE CURYTYPEID=@CURYTYPEID AND  
                FROMCURYID=@MONEDABASE AND TOCURYID=@MONEDAEXTR AND  
                CURYDATE=(SELECT MAX(CURYDATE)FROM CURYRATE WHERE CURYDATE<=@FECHAPROCESO AND CURYTYPEID=@CURYTYPEID)           
           
      
         -- Hay que Obtener los Datos del Parte Diario   
           
         DECLARE @COMMENT   varchar(40)  
         DECLARE @TOTALPEN  UD_MONTO  
          
         SELECT @COMMENT=COMMENT,@TOTALPEN=TOTALPEN FROM OP_SUMMARYSALES  
                                 WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
  
         -- Pasos para Obtener el Campo Round  
         DECLARE @CUSTIDSETUP              UD_CODCLIENT  
         DECLARE @CCLASSIDANTICIPATE       UD_CUSTCLASSID            
         DECLARE @TOTALPENDEPOSITO         UD_MONTO     
         DECLARE @TOTALPENSUMMARY          UD_MONTO  
         DECLARE @TOTALDIFERENCIA          UD_MONTO  
  
         DECLARE @MAXDIFDIARY              UD_MONTO  
           
         SELECT @MAXDIFDIARY=maxdifdiary,@CUSTIDSETUP=CUSTID FROM SETUP      
         SELECT @CCLASSIDANTICIPATE=CCLASSIDANTICIPATE FROM OP_SETUP   
            
  set @CUSTIDSETUP='SS00000' + rtrim(ltrim(@SITEID)) + '1'  
  
--       SELECT @TOTALPENDEPOSITO=TOTALPEN FROM OP_DEPOSITSITE WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO            
  
         SELECT @TOTALPENDEPOSITO=SUM(TOTALPEN) FROM OP_DEPOSITSITEDET INNER JOIN CUSTOMER ON   
                                  OP_DEPOSITSITEDET.CUSTIDSS=CUSTOMER.CUSTIDSS                             
                                  WHERE (CUSTOMER.CUSTIDSS=@CUSTIDSETUP OR CUSTOMER.CUSTCLASSID=@CCLASSIDANTICIPATE)  
              AND SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  
            IF @TOTALPENDEPOSITO IS NULL    
               BEGIN  
                 ROLLBACK    
                 RAISERROR 20000 'No existe Déposito para esta Fecha de Proceso '  
                 RETURN(1)           
               END   
     
         SELECT @TOTALPENSUMMARY=ISNULL(TOTALPEN,0) FROM OP_SUMMARYSALES WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO  

--NO SE ESTA GENERANDO & LLENADO TABLAS NECESARIOS PARA EL PARTE DIARIO ES POR ELLO QUE OBIO ESTOS ERRORES
--	IF @TOTALPENSUMMARY IS NULL   
--	BEGIN  
--		ROLLBACK    
--		RAISERROR 20000 'No existe Resumen de Ventas para esta Fecha de Proceso '  
--		RETURN(1)           
--	END  
  
         DECLARE @TOTALPENTARJETAS  UD_MONTO  
         DECLARE @TOTALPENSOBRANTE  UD_MONTO  
         DECLARE @TOTALPENFALTANTE  UD_MONTO  
         DECLARE @ERROR             INT           
         -- Hay que Verificar las Tarjetas  
  
         SET EXEC @ERROR=OP_GRABAR_ADJUST_CARDPROC @SITEID,@FECHAPROCESO,@USERID   
              
         IF @ERROR!=0   
           BEGIN                         
             ROLLBACK    
             RAISERROR 20000 'No se pudo Generar Ajustes '  
             RETURN(1)  
           END           
  
         SELECT @TOTALPENTARJETAS =SUM(TOTALPENSALES) FROM Op_Card_montsales   
                                   WHERE Op_Card_montsales.SITEID=@SITEID AND   
                                         Op_Card_montsales.DATEPROCE=@FECHAPROCESO              
     
         -- Hay que Obtener el Faltante   
    SELECT @TOTALPENFALTANTE=SUM(CASE DEBEHABER WHEN 0 THEN TOTALPEN ELSE 0 END),  
           @TOTALPENSOBRANTE=SUM(CASE DEBEHABER WHEN 1 THEN TOTALPEN ELSE 0 END)  
           from op_ccsalespersondet D inner join OP_CCSALESPERSONTYPE T on D.CCSALESPERSONTYPEID = T.CCSALESPERSONTYPEID  
           WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO        
--Antes: Pablo N.  
--         SELECT @TOTALPENFALTANTE=SUM(CASE CCSALESPERSONTYPEID WHEN 1 THEN TOTALPEN ELSE 0 END),  
--                @TOTALPENSOBRANTE=SUM(CASE CCSALESPERSONTYPEID WHEN 2 THEN TOTALPEN ELSE 0 END)  
--                from op_ccsalespersondet   
--                WHERE SITEID=@SITEID AND DATEPROCE=@FECHAPROCESO        
  
         -- Capturar la Diferencia  
          
         SET @TOTALDIFERENCIA=ISNULL(@TOTALPENDEPOSITO,0) + ISNULL(@TOTALPENTARJETAS,0) - ISNULL(@TOTALPENSOBRANTE,0) + ISNULL(@TOTALPENFALTANTE,0) - ISNUlL(@TOTALPENSUMMARY,0)  
    
         IF @TOTALDIFERENCIA < 0 --Es Negativo    
           BEGIN       
             SET @TOTALDIFERENCIA=@TOTALDIFERENCIA *-1                    
           END  
       
         IF @TOTALDIFERENCIA > @MAXDIFDIARY  
           BEGIN                            
             ROLLBACK TRAN  
             RAISERROR 20000 'Existe una Diferencia que excede la permitida'                                                         
             RETURN(1)  
           END   
                                                                         
         -- Grabar en la Tabla op_summaryday  
                
         INSERT INTO OP_SUMMARYDAY (BATNBRDIARYSUMMARY,SITEID,DATEPROCE,CURYRATE,ROUND,TOTALDIFERENCE,  
                                    OBSERVATION1,TOTALPEN,USERID)  
                 VALUES (@NBRCORELATIVE,@SITEID,@FECHAPROCESO,@MONTOCAMBIO,@TOTALDIFERENCIA,0,@COMMENT,  
                         ISNULL(@TOTALPEN,0),@USERID)  
  
         IF (@@ERROR!=0) -- OR @@ROWCOUNT=0)   
           BEGIN    
             ROLLBACK    
             RAISERROR 20000 'No se puede Insertar en OP_SUMMARYDAY'                                            
             RETURN(1)  
           END  
           
         --*** Hay que Grabar la Cabecera del Pago (AR_CCDOC_PAYMENT)***--      
                                
         DECLARE @BATNBRAR_CCDOCDET    UD_CORRELATIVOS  
         DECLARE @SITEIDPAG                UD_IDSITE    
         DECLARE @BATNBRDEPOSITSITE        UD_CORRELATIVOS   
         DECLARE @DATEPROCE                UD_FECHA   
         DECLARE @CUSTIDSS                 UD_CODCLIENT   
         DECLARE @DEPOSITPASSWORD          char(20)  
         DECLARE @DATEDEPOSIT              smalldatetime  
         DECLARE @CURYID                   char(3)  
         DECLARE @CURYRATE                 UD_CURYRATE   
         DECLARE @TOTALPENPAG              NUMERIC(11,4)  
         DECLARE @TOTALUSDPAG              NUMERIC(11,4)  
         DECLARE @DEBEHABER                UD_DEBEHABER   
         DECLARE @STATUS                   BIT  
         DECLARE @USERIDPAG                UD_USERID   
  
         DECLARE CUR_PAGOS CURSOR    
              FOR SELECT SITEID,BATNBRDEPOSITSITE,DATEPROCE,CUSTIDSS,DEPOSITPASSWORD,  
                         DATEDEPOSIT,CURYID,CURYRATE,TOTALPEN,TOTALUSD,DEBEHABER,STATUS,USERID   
                  FROM OP_DEPOSITSITEDET WHERE DATEPROCE=@FECHAPROCESO AND SITEID=@SITEID   
  
         OPEN CUR_PAGOS  
              FETCH NEXT FROM CUR_PAGOS  
     INTO @SITEIDPAG,@BATNBRDEPOSITSITE,@DATEPROCE,@CUSTIDSS,@DEPOSITPASSWORD,  
                              @DATEDEPOSIT,@CURYID,@CURYRATE,@TOTALPENPAG,@TOTALUSDPAG,  
                              @DEBEHABER,@STATUS,@USERIDPAG                                   
             
              WHILE @@FETCH_STATUS=0  
                    BEGIN           
                       
                         -- Hay que Actualizar el Correlativo   
                               
                             UPDATE OP_CORELATIVE  
                               SET  NBRCORELATIVE=(SELECT MAX (BATNBRAR_CCDOCDET)+1 FROM  AR_CCDOC_PAYMENT)  
                                    WHERE TYPECORELATIVE='BATNBRAR_CCDOCDET'   
                                                             
                                    
                             SELECT @BATNBRAR_CCDOCDET=NBRCORELATIVE,@TSTAMP=TSTAMP FROM OP_CORELATIVE  
               WHERE TYPECORELATIVE='BATNBRAR_CCDOCDET'  
                          
                             UPDATE OP_CORELATIVE  
                               SET  NBRCORELATIVE=NBRCORELATIVE+1     
                                    WHERE TYPECORELATIVE='BATNBRAR_CCDOCDET' AND NBRCORELATIVE=@BATNBRAR_CCDOCDET AND  
                                          TSTAMP= @TSTAMP                      
                                                            
                             IF (@@error!=0)-- OR @@ROWCOUNT=0 )  
                              BEGIN  
                                   CLOSE CUR_PAGOS   
                                   DEALLOCATE CUR_PAGOS  
                       RAISERROR  20000 'Error Actualizando OP_CORELATIVE'  
                                   ROLLBACK TRAN  
                             RETURN(1)  
                              END  
        
                         -- Fin de Actualizar el Correlativo  
                         -- Hay que insertar en AR_CCDOC_PAYMENT  
  
                            INSERT INTO AR_CCDOC_PAYMENT (BATNBRAR_CCDOCDET,SITEID,CUSTIDSS,DEPOSITPASSWORD,DATEDPROCE,  
                                                          DATEDEPOSIT,CURYID,TOTALPEN,TOTALUSD,DOCBALPEN,DOCBALUSD,USERID)   
                                   VALUES (@BATNBRAR_CCDOCDET,@SITEIDPAG,@CUSTIDSS,@DEPOSITPASSWORD,@FECHAPROCESO,@DATEDEPOSIT,  
                                           @CURYID,@TOTALPENPAG,@TOTALUSDPAG,@TOTALPENPAG,@TOTALUSDPAG,@USERIDPAG)  
  
                             IF (@@error!=0)-- OR @@ROWCOUNT=0 )  
                              BEGIN  
                                   CLOSE CUR_PAGOS   
                                   DEALLOCATE CUR_PAGOS  
                       RAISERROR  20000 'Error Grabando Pago en AR_CCDOC_PAYMENT'  
                                   ROLLBACK TRAN  
                             RETURN(1)  
                              END  
  
  
                         -- Fin de insertar en AR_CCDOC_PAYMENT                           
                           
                         FETCH NEXT FROM CUR_PAGOS  
                   INTO @SITEIDPAG,@BATNBRDEPOSITSITE,@DATEPROCE,@CUSTIDSS,@DEPOSITPASSWORD,  
                                         @DATEDEPOSIT,@CURYID,@CURYRATE,@TOTALPENPAG,@TOTALUSDPAG,  
                                         @DEBEHABER,@STATUS,@USERIDPAG   
                    END   
            CLOSE CUR_PAGOS   
            DEALLOCATE CUR_PAGOS  
               
--*/----FIN-------PABLO NEYRA.---BLOQUEO DEL PROCESO NORIGINALL--*********************************************************************************************  
  
            /*** Fin de Grabar en AR_CCDOC_PAYMENT */   
            /**  Hay que Incrementar la Fecha de Proceso en un Día */  
                                   
                UPDATE SETUP SET DATEPROCE=DATEADD(day,1,DATEPROCE)   
  
                IF (@@error!=0)-- OR @@ROWCOUNT=0 )  
                    BEGIN  
                  RAISERROR  20000 'Error Grabando Actualizando la Fecha de Proceso'  
                  ROLLBACK TRAN  
                 RETURN(1)  
                END  
           
           /*  Fin de Incremenetar de Fecha de Proceso*/         
                                             
    COMMIT TRAN  
--	print 'CERRO PARTE DIARIO Y ACTUALIZO FECHA'
	
    RETURN(0)  

END  
  
  
  
