Untitled

mail@pastecode.io avatar
unknown
plain_text
5 months ago
17 kB
2
Indexable
47 rel

Can't Execute this statement:
ALTER Procedure [dbo].[sp_M_RettificheAutoPvEx]
/*
-------------
00 Procedure | sp_M_RettificheAutoPvEx
01 Analisi   | 
02 Level     | **
03 Author    | IDEA INFORMATICA - Denis Valente
04 Date      | 29 Aprile 2024
05 Version   | 1.0.0
06 Purpose   | 
07 Input     |
08 Output    | 
09 Returns   | 
10 Remarks   | 
-------------
*/
/*PINI*/
@rvtID      char(9)
/*PEND*/
/*END*/
AS
SET NOCOUNT ON
---------------------------
--M: INI Gestione DEBUGGER
---------------------------
declare @Debug            int          -- 0=Debugger NON ATTIVO, 1=Debugger ATTIVO
declare @Module           varchar(32)
declare @Function         varchar(64)
declare @Infos            varchar(2048)
set     @Module = 'sp_M_RettificheAutoPvEx'
exec    @Debug  = sp_XGetDebugParam 'ON'
---------------------------
--M: END Gestione DEBUGGER
---------------------------
----------------------------------
--M: Se richiesto, gestisce DEBUG
----------------------------------
--SET @Debug = 1
if @Debug = 1
begin
   set @Function = 'ENTER SP'
   set @Infos    = 'BEGIN Input Params: '
                 + 'rvtID    =[' + isnull(convert(varchar,@rvtID),'<NULL>')    + '],'
   exec sp_XLOG @Module,@Function,@Infos
end

declare @rvrNRiga          char(5)
declare @rvrTipoRiv        char(1)

declare @DataInizio        datetime
declare @DataFine          datetime
declare @DataCalcolo       datetime
declare @DataRicerca       datetime

declare @Articolo          char(5)
declare @CodLungo          char(14)
declare @Descrizione       varchar(50)
declare @Marchio           char(4)
declare @Sottofamiglia     char(4)
declare @Cliente           char(6)
declare @Destinatario      char(3)
declare @mmrIdVend         char(30)

declare @Articolo_bk       char(5)
declare @Cliente_bk        char(6)
declare @Destinatario_bk   char(3)

declare @IdVendita         int
declare @GiacenzaCalc      money
declare @DataVend          datetime
declare @QtaVenduta        money

declare @IdCarico          int
declare @mmrIdCar          char(14)
declare @DataCar           datetime
declare @QtaRimanente      money
declare @QtaRettifica      money

SELECT @DataInizio   = rvtDataInizioVa  -- non usato
      ,@DataFine     = rvtDataFineVa    -- non usato
      ,@DataCalcolo  = rvtDataRicalcolo
  FROM RivalutazioniTes WITH(NOLOCK)
 WHERE rvtId = @rvtID

SET @DataRicerca     = @DataInizio -- non usato
SET @Articolo_bk     = ''
SET @Cliente_bk      = ''
SET @Destinatario_bk = ''

IF (Object_ID('tempdb..#SchedaArticolo') IS NOT NULL) DROP TABLE #SchedaArticolo
CREATE TABLE #SchedaArticolo
(
    Id               int
   ,DataReg          datetime
   ,Cliente          varchar(6)
   ,Destinazione     varchar(3)
   ,RagSoc           varchar(40)
   ,artCodice        char(5)
   ,artCodLungo      varchar(14)
   ,artDescrizione   varchar(50)
   ,QtaEntrataDaPa   money
   ,QtaResaAPa       money
   ,QtaVendutaDaPv   money
   ,QtaResaAPv       money
   ,Qta              money
   ,Segno            smallint
   ,Causale          varchar(16)
   ,MovId            varchar(30)
   ,Priorita         smallint
   ,GiacenzaCalc     smallint
   ,Cx               varchar(30)
   ,Messaggio        varchar(128)
   ,QtaRettifica     money
)


IF (Object_ID('tempdb..#CarichiUsati') IS NOT NULL) DROP TABLE #CarichiUsati
CREATE TABLE #CarichiUsati
(                  
    Id               int
   ,MovId            varchar(30)
   ,QtaUsata         money
)

declare curArticoliRossi insensitive cursor for
SELECT rvrNRiga
      ,rvrTipoRiv
      ,rvrArticolo 
      ,artCodLungo
      ,artDescrizione
      ,artMarchio
      ,artSottofamiglia
      ,rvrCliente 
      ,rvrDestinatario
      ,rvrIdVend
  FROM X_RVR_RivalutazioniRighe_M10 WITH(NOLOCK)
 WHERE rvrId = @rvtID
   AND (    rvxMessageDisp like 'ER%'
         OR rvrQtaConcordataCli = 0
       )   
   AND RTrim(rvrIdVend) <> ''                     
   /* per prove */
--   AND rvrCliente = '001181'
--   AND rvrArticolo = 'Adtti'
   /*           */
 ORDER By artCodLungo ASC, rvrCliente ASC, rvrDestinatario ASC, rvrDataVend ASC, rvrIdVend ASC

open curArticoliRossi
while 1=1
begin
   fetch next from curArticoliRossi Into @rvrNRiga, @rvrTipoRiv,
                                         @Articolo, @CodLungo, @Descrizione, @Marchio, @Sottofamiglia,
                                         @Cliente, @Destinatario, @mmrIdVend
   if @@fetch_status < 0 BREAK

   if @Debug = 1
   begin
      set @Function = 'INFO'
      set @Infos    = 'Riga rossa : '
                    + 'ID vendita    =[' + isnull(convert(varchar,@mmrIdVend),'<NULL>')    + '],'
      exec sp_XLOG @Module,@Function,@Infos
   end

   IF @Articolo <> @Articolo_bk OR @Cliente <> @Cliente_bk OR @Destinatario <> @Destinatario_bk
   begin
      SET @Articolo_bk      = @Articolo
      SET @Cliente_bk      = @Cliente
      SET @Destinatario_bk = @Destinatario

      if @Debug = 1
      begin
         set @Function = 'INFO'
         set @Infos    = 'Elementi della riga rossa : '
                       + 'Cliente =[' + isnull(convert(varchar,@Cliente),'<Null>') + '],'
                       + 'Destinatario =[' + isnull(convert(varchar,@Destinatario),'<Null>') + '],'
                       + 'Articolo =[' + isnull(convert(varchar,@Articolo),'<Null>') + '],'
         exec sp_XLOG @Module,@Function,@Infos
      end

      TRUNCATE TABLE #SchedaArticolo

      INSERT INTO #SchedaArticolo
      SELECT *
        FROM dbo.fn_X_RS_VpxSchedaArticolo(-1,'1900/01/01','9999/01/01',@Cliente,@Destinatario,@Articolo,'','')

   end

   SELECT @IdVendita    = Id
         ,@GiacenzaCalc = GiacenzaCalc
         ,@DataVend     = DataReg
     FROM #SchedaArticolo
    WHERE MovId = @mmrIdVend
   
   while 1=1
   begin

      IF @GiacenzaCalc >= 0 BREAK -- BONIFICATA TOTALMENTE

      SET @mmrIdCar = NULL
      SELECT TOP 1 
             @IdCarico     = FUN.Id
            ,@mmrIdCar     = FUN.MovId
            ,@QtaRimanente = FUN.Qta - isnull(CAR.QtaUsata, 0)
            ,@DataCar      = DataReg
        FROM #SchedaArticolo     as FUN
        LEFT JOIN #CarichiUsati  as CAR ON CAR.movid = FUN.MovId
       WHERE Causale IN ('VEND (PA)', 'VEDR (PA)')
         AND FUN.Id  > @IdVendita
         AND DataReg <= @DataCalcolo
         AND FUN.Qta - isnull(CAR.QtaUsata, 0) > 0
      
      IF @mmrIdCar is NULL BREAK -- NON CI SONO PIU' CARICHI DISPONIBILI

      if @Debug = 1
      begin
         set @Function = 'INFO'
         set @Infos    = 'Trovato il carico : '
                       + 'mmrIdCar =[' + isnull(convert(varchar,@mmrIdCar),'<Null>') + '],'
         exec sp_XLOG @Module,@Function,@Infos
      end

      SET @QtaRettifica = CASE WHEN ABS(@GiacenzaCalc) <= @QtaRimanente THEN ABS(@GiacenzaCalc)
                                   WHEN ABS(@GiacenzaCalc)  > @QtaRimanente THEN @QtaRimanente
                               END
      SET @GiacenzaCalc = @GiacenzaCalc + @QtaRettifica

      IF NOT EXISTS (SELECT 1 FROM /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche (NOLOCK) 
                      WHERE azrCodLungo     = @CodLungo
                        AND azrCliente      = @Cliente
                        AND azrDestinatario = @Destinatario
                        AND azrSDate        = convert(varchar, @DataVend, 112)
                    )
      begin
         -- Inserimento rettifiche vendite
         INSERT INTO /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
                (azrArticolo      ,azrCodLungo       ,azrDescrizione     ,azrMarchio   ,azrSottofamiglia ,azrCliente ,azrDestinatario ,azrSDate                        
                ,azrDataRettifica ,azrQtaRettifica   ,azrDataInserimento ,azrOperatore ,azrHostName      ,azrNote )
         VALUES (@Articolo        ,@CodLungo         ,@Descrizione       ,@Marchio     ,@Sottofamiglia   ,@Cliente   ,@Destinatario   ,convert(varchar, @DataVend, 112)
                ,@DataVend        ,@QtaRettifica     ,GETDATE()          ,'*SYS'       ,HOST_NAME()      , '#AUT')
   
      end
      ELSE
      begin
         UPDATE /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
            SET azrQtaRettifica = azrQtaRettifica + @QtaRettifica
          WHERE azrCodLungo     = @CodLungo
            AND azrCliente      = @Cliente
            AND azrDestinatario = @Destinatario
            AND azrSDate        = convert(varchar, @DataVend, 112)

        /* Se la qta rettifica si conpensa elimino il record */
         DELETE
           FROM /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
          WHERE azrCodLungo     = @CodLungo
            AND azrCliente      = @Cliente
            AND azrDestinatario = @Destinatario
            AND azrSDate        = convert(varchar, @DataVend, 112)
            AND azrQtaRettifica = 0
      end

      /* Aggiorno la qta di giacenza nella tavola di appoggio */
      UPDATE #SchedaArticolo
         SET GiacenzaCalc = GiacenzaCalc + @QtaRettifica
       WHERE Id >= @IdVendita

      IF NOT EXISTS (SELECT 1 FROM #CarichiUsati WHERE MovId = @mmrIdCar)
      begin
         INSERT INTO #CarichiUsati 
         SELECT @IdCarico, @mmrIdCar, @QtaRettifica
      end
      else
      begin
         UPDATE #CarichiUsati
            SET QtaUsata = QtaUsata + @QtaRettifica
          WHERE MovId = @mmrIdCar
      end

      SET @QtaRettifica = @QtaRettifica * (-1)

      IF NOT EXISTS (SELECT 1 FROM /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche  (NOLOCK) 
                      WHERE azrCodLungo     = @CodLungo
                        AND azrCliente      = @Cliente
                        AND azrDestinatario = @Destinatario
                        AND azrSDate        = convert(varchar, @DataCar, 112)
                    )
      begin
         -- Inserimento rettifiche carichi
         INSERT INTO /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
                (azrArticolo      ,azrCodLungo       ,azrDescrizione     ,azrMarchio   ,azrSottofamiglia ,azrCliente ,azrDestinatario ,azrSDate                        
                ,azrDataRettifica ,azrQtaRettifica   ,azrDataInserimento ,azrOperatore ,azrHostName      ,azrNote )
         VALUES (@Articolo        ,@CodLungo         ,@Descrizione       ,@Marchio     ,@Sottofamiglia   ,@Cliente   ,@Destinatario   ,convert(varchar, @DataCar, 112)
                ,@DataCar         ,@QtaRettifica     ,GETDATE()          ,'*SYS'       ,HOST_NAME()      , '#AUT')
   
      end
      ELSE
      begin
         UPDATE /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
            SET azrQtaRettifica = azrQtaRettifica + @QtaRettifica
          WHERE azrCodLungo     = @CodLungo
            AND azrCliente      = @Cliente
            AND azrDestinatario = @Destinatario
            AND azrSDate        = convert(varchar, @DataCar, 112)
        
        /* Se la qta rettifica si conpensa elimino il record */
         DELETE
           FROM /*TestCapabilityRettifiche*/ ArticoliGiacenzePvExRettifiche
          WHERE azrCodLungo     = @CodLungo
            AND azrCliente      = @Cliente
            AND azrDestinatario = @Destinatario
            AND azrSDate        = convert(varchar, @DataCar, 112)
            AND azrQtaRettifica = 0
      end

      /* Aggiorno la qta di giacenza nella tavola di appoggio */
      UPDATE #SchedaArticolo
         SET GiacenzaCalc = GiacenzaCalc + @QtaRettifica
       WHERE Id >= @IdCarico

   end

   /* Sostituisco ER: con AU: nella riga della linguetta Esterni nell'anagrafica Rivalutazioni */
   IF @GiacenzaCalc >= 0 -- BONIFICATA DEL TUTTO
   begin
      IF NOT EXISTS (SELECT 1
                       FROM RivalutazioniRigheExt(NOLOCK)
                      WHERE rvxId      = @rvtID
                        AND rvxNRiga   = @rvrNRiga
                        AND rvxTipoRiv = @rvrTipoRiv
                )
      begin
         INSERT INTO RivalutazioniRigheExt
                    (rvxId, rvxTipoRiv, rvxNRiga, rvxDispPrv, rvxGiacPrv, rvxMessageDisp, rvxMessageGiac)
         VALUES     (@rvtID, @rvrTipoRiv, @rvrNRiga, 0, 0, 'AU:', '' )
      end
      ELSE           
      begin 
         UPDATE RivalutazioniRigheExt
            SET rvxMessageDisp = REPLACE (rvxMessageDisp , 'ER:', 'AU:')
          WHERE rvxId      = @rvtID
            AND rvxTipoRiv = @rvrTipoRiv
            AND rvxNRiga   = @rvrNRiga
      end
   end
   ELSE
   begin
      IF NOT EXISTS (SELECT 1
                   FROM RivalutazioniRigheExt(NOLOCK)
                  WHERE rvxId      = @rvtID
                    AND rvxNRiga   = @rvrNRiga
                    AND rvxTipoRiv = @rvrTipoRiv
                )
      begin 
         INSERT INTO RivalutazioniRigheExt
                    (rvxId, rvxTipoRiv, rvxNRiga, rvxDispPrv, rvxGiacPrv, rvxMessageDisp, rvxMessageGiac)
         VALUES     (@rvtID, @rvrTipoRiv, @rvrNRiga, 0, 0, 'ER:', '' )
      end
   end

   SELECT @QtaVenduta   = Qta
         ,@GiacenzaCalc = GiacenzaCalc
     FROM #SchedaArticolo
    WHERE Id = @IdVendita

   IF @GiacenzaCalc < 0
   begin
      UPDATE RivalutazioniRighe
         SET rvrQtaConcordataCli = CASE WHEN @QtaVenduta + @GiacenzaCalc <= 0 THEN 0 ELSE @QtaVenduta + @GiacenzaCalc END 
            ,rvrNote             = CASE WHEN ABS(@GiacenzaCalc) >= @QtaVenduta THEN 'NON CONCESSO' ELSE 'CONCESSO PARZIALE' END 
       WHERE rvrId      = @rvtID
         AND rvrNRiga   = @rvrNRiga
         AND rvrTipoRiv = @rvrTipoRiv
         AND (    rvrQtaConcordataCli <> CASE WHEN @QtaVenduta + @GiacenzaCalc <= 0 THEN 0 ELSE @QtaVenduta + @GiacenzaCalc END 
               OR rvrNote <> CASE WHEN ABS(@GiacenzaCalc) >= @QtaVenduta THEN 'NON CONCESSO' ELSE 'CONCESSO PARZIALE' END 
             )
   end
   ELSE /* @GiacenzaCalc >= 0 */
   begin
      UPDATE RivalutazioniRighe
         SET rvrQtaConcordataCli = @QtaVenduta
            ,rvrNote             = 'OK'
       WHERE rvrId      = @rvtID
         AND rvrNRiga   = @rvrNRiga
         AND rvrTipoRiv = @rvrTipoRiv
         AND (    rvrQtaConcordataCli <> @QtaVenduta
               OR rvrNote <> 'OK'
             )             
   end

end
close      curArticoliRossi
deallocate curArticoliRossi

UPDATE RivalutazioniTes
   SET rvtNota3 = 'BONIF. ' + rvtNota3 
 WHERE rvtId = @rvtID

-- Inserimento rettifiche carichi

/*
*******************
VECCHIO INSERIMENTO
*******************

INSERT INTO TestCapabilityRettifiche --ArticoliGiacenzePvExRettifiche
       (azrArticolo      ,azrCodLungo       ,azrDescrizione     ,azrMarchio   ,azrSottofamiglia ,azrCliente ,azrDestinatario ,azrSDate                        
       ,azrDataRettifica ,azrQtaRettifica   ,azrDataInserimento ,azrOperatore ,azrHostName      ,azrNote )
SELECT MAX(BB.Articolo)
      ,BB.CodLungo       
      ,MAX(BB.Descrizione)
      ,MAX(BB.Marchio)   
      ,MAX(BB.Sottofamiglia)
      ,BB.Cliente        
      ,BB.Destinatario   
      ,BB.SDate       
      ,MAX(BB.DataRettifica)
      ,SUM(BB.QtaUsata) * (-1)     
      ,MAX(BB.DataInserimento)
      ,MAX(BB.Operatore) 
      ,MAX(BB.Hostname)     
      ,'#AUT' + 
      (SELECT (SELECT '-' + MovID  FROM #CarichiUsati AA (NOLOCK) WHERE AA.CodLungo      = BB.CodLungo 
                                                                    AND AA.Cliente       = BB.Cliente       
                                                                    AND AA.Destinatario  = BB.Destinatario  
                                                                    AND AA.SDate         = BB.SDate 
          FOR XML PATH (''), TYPE) .value('.', 'varchar(800)'))
  FROM #CarichiUsati BB
  GROUP BY BB.CodLungo
          ,BB.Cliente        
          ,BB.Destinatario   
          ,BB.SDate       
*/

-----------------
--M: USCITA OKAY
-----------------
if @Debug = 1
begin
   set @Function = 'EXIT SP'
   set @Infos    = 'OKAY - Return(0)'
                 --+ 'RETURN        =[' + isnull(convert(varchar,@RETURN),'<NULL>')        + ']'
   exec sp_XLOG @Module,@Function,@Infos 
end
return(0)





Error Number :
	40002
Error Description :
37000: [Microsoft][ODBC SQL Server Driver][SQL Server]Could not use view or function 'X_RVR_RivalutazioniRighe_M10' because of binding errors.
RDO Errors        :
37000: [Microsoft][ODBC SQL Server Driver][SQL Server]Synonym 'VenditePdvEx' refers to an invalid object.
37000: [Microsoft][ODBC SQL Server Driver][SQL Server]Could not use view or function 'X_RVR_RivalutazioniRighe_M10' because of binding errors.
Leave a Comment