Untitled

mail@pastecode.io avatar
unknown
plain_text
14 days ago
19 kB
4
Indexable
Never
Can't Execute this statement:
ALTER PROCEDURE [dbo].[sp_M_TND_SyncroContrattoCFT]
/*
00 Procedure : sp_M_TND_SyncroContrattoCFT
01 Class     : 1000000000
02 Level     : **
03 Author    : IDEA INFORMATICA - Giorgio Cappi
04 Date      : Sep 22, 2020
05 Version   : 3.1.1
06 Purpose   : Aggiorna 
07 Input     : 00 ID contratto da syncronizzare
08 Output    : 
09 Returns   : 0 Tutto Okay
09           : 1 
09           : 2 
10 Remarks   :
10           : 
10             26/05/2016 - GN
10             Aggiunto parametro in input facoltativo per Tipo Contratto, utilizzato
10             per DMX e GAER nel caso di duplicazione da Contratto di Gruppo a Contratto Nuovo
10             02/01/2020 - MG
10             è stato inserito il liquidatore nella duplicazione dei premi 
*/
/*PINI*/
@DaSyncroID      char(7)
/*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_TND_SyncroContrattoCFT'
EXEC    @Debug  = sp_XGetDebugParam 'ON'
---------------------------
--M: END Gestione DEBUGGER
---------------------------
----------------------------------
--M: Se richiesto, gestisce DEBUG
----------------------------------

IF @Debug = 1
begin
   SET @Function = 'ENTER SP'
   SET @Infos    = 'BEGIN Input Params: '
                 + 'ID contratto da duplicare =[' + isnull(convert(varchar, @DaSyncroID) ,'<NULL>') + '],'
   EXEC sp_XLOG @Module, @Function, @Infos
end

declare @vbBlack       int 
declare @vbBlue        int
declare @vbRed         int
declare @vbGreen       int
declare @vbYellow      int
declare @vbCyan        int

set @vbBlack  = 0
set @vbRed    = 255
set @vbBlue   = 16711680
set @vbGreen  = 65280
set @vbYellow = 65535
set @vbCyan   = 16776960

Declare @Ret           integer

/*Campi di ContrattiForTes*/
Declare @cftID                          char(7)
Declare @cftTipoAnag                    char(1)
Declare @cftUnita                       varchar(6)
Declare @cftDestinazione                char(3)
Declare @cftDataInizio                  datetime
Declare @cftDataFine                    datetime
Declare @cftTipoContratto               char(2)
Declare @cftAreaContratto               char(2)
Declare @cftMarchio                     char(4)
Declare @cftMesiGaranzia                smallint
Declare @cftFStato                      smallint
Declare @cftDiGruppo                    smallint
Declare @cftElencoFornitori             smallint

/*Campi di PremiForTes*/
Declare @pftContrattoForTes             char(7)
Declare @pftIDPremioFor                 char(8)
Declare @pftDescrizione                 varchar(60)
Declare @pftDataInizio                  datetime
Declare @pftDataFine                    datetime
Declare @pftValoreConcordato            money
Declare @pftModoMonetizzazione          smallint
Declare @pftTipoPremio                  char(2)
Declare @pftModoLiquidazione            smallint
Declare @pftFGiustificativo             smallint
Declare @pftFStato                      smallint
Declare @pftMarchio                     char(4)
Declare @pftPeriodoLiquidazione         smallint
Declare @pftDataElaborazione            datetime
Declare @pftTotaleImponibile            money
Declare @pftTotaleQuantita              money
Declare @pftTotalePagato                money
Declare @pftTotalePremio                money
Declare @pftTargetFor                   money
Declare @pftVenditeTotali               money
Declare @pftFlagDefinitivo              smallint
Declare @pftFNettoTrasporto             smallint
Declare @pftFNettoCassa                 smallint
Declare @pftFNettoRae                   smallint
Declare @pftFNettoSiae                  smallint
Declare @pftNettoPFF                    smallint
Declare @pftNettoPremioGruppo           smallint
Declare @pftDataDecorrenza              datetime
Declare @pftPVariazione                 real
Declare @pftFStatoPremioCli             smallint
Declare @pftElencoFornitori             smallint
Declare @pftPPremioCli                  real
Declare @pftDataEsecuzione              datetime
Declare @pftTotaleInPromo               money
Declare @pftFStatoPremioFor             smallint
Declare @pftImponibileCalcolo           money
Declare @pftTotaleImponibileNetto       money
Declare @pftFTipoElaborazione           smallint
Declare @pftFNettoTrasportoCli          smallint                      
Declare @pftFNettoCassaCli              smallint                      
Declare @pftPAddTraspVir                real                          
Declare @pftPScontoCassaVir             real 
Declare @pftLiquidatore                 char(6)
Declare @pftTargetRaggiunto             money
Declare @pftTargetDefinitivo            money
Declare @pftFTargetSuperato              smallint


Declare @DaSyncroIDPremioFor            char(8)


/*Fase  1: Inserimento tavola ContrattiForTes
*/
INSERT INTO OASI003..ContrattiForTes
( cftID
 ,cftTipoAnag
 ,cftUnita
 ,cftDestinazione
 ,cftDataInizio
 ,cftDataFine
 ,cftTipoContratto
 ,cftAreaContratto
 ,cftMarchio
 ,cftMesiGaranzia
 ,cftFStato
 ,cftDiGruppo
 ,cftElencoFornitori
)
SELECT CFT001.cftID
      ,CFT001.cftTipoAnag
      ,CFT001.cftUnita
      ,CFT001.cftDestinazione
      ,CFT001.cftDataInizio
      ,CFT001.cftDataFine
      ,CFT001.cftTipoContratto
      ,CFT001.cftAreaContratto
      ,CFT001.cftMarchio
      ,CFT001.cftMesiGaranzia
      ,CFT001.cftFStato
      ,CFT001.cftDiGruppo
      ,CFT001.cftElencoFornitori
  FROM ContrattiForTes CFT001 WITH(NOLOCK) 
  LEFT OUTER JOIN OASI003..ContrattiForTes CFT003 (NOLOCK) ON  CFT003.cftID = CFT001.cftID
 WHERE CFT001.cftID = @DaSyncroID
   AND CFT003.cftID IS NULL

/*Fase  2: Inserimento tavola ContrattiForLivelli
*/
INSERT INTO OASI003..ContrattiForLivelli
( cflID
 ,cflLivelloMag
)
SELECT CFL001.cflID
      ,CFL001.cflLivelloMag
  FROM ContrattiForLivelli CFL001(NOLOCK)
  LEFT OUTER JOIN OASI003..ContrattiForLivelli CFL003 (NOLOCK) ON CFL003.cflID         = CFL001.cflID
                                                              AND CFL003.cflLivelloMag = CFL001.cflLivelloMag
 WHERE CFL001.cflID = @DaSyncroID
   AND CFL003.cflID IS NULL

/*Fase  3: Inserimento tavola ContrattiForFPag
*/
INSERT INTO OASI003..ContrattiForFPag
( cffID
 ,cffFPag
 ,cffCScontoCassa
 ,cffPScontoCassa
 ,cffFPreferenza
 ,cffMarchio
)
SELECT CFF001.cffID
      ,CFF001.cffFPag
      ,CFF001.cffCScontoCassa
      ,CFF001.cffPScontoCassa
      ,CFF001.cffFPreferenza
      ,CFF001.cffMarchio
  FROM ContrattiForFPag CFF001 (NOLOCK)
  LEFT OUTER JOIN OASI003..ContrattiForFPag CFF003 (NOLOCK) ON CFF003.cffID   = CFF001.cffID
                                                           AND CFF003.cffFPag = CFF001.cffFPag
 WHERE CFF001.cffID = @DaSyncroID
   AND CFF003.cffID IS NULL

/*Fase  4: Inserimento tavola ContrattiForScontiFissi
*/
INSERT INTO OASI003..ContrattiForScontiFissi
( cfsID
 ,cfsLivelloMag
 ,cfsSottofamiglia
 ,cfsMarchio
 ,cfsCatenaSconti
 ,cfsSconto
 ,cfsCScontiProm
 ,cfsPScontiProm
 ,cfsBonifico
 ,cfsCScontoCassa
 ,cfsPScontoCassa
 ,cfsCAddTrasp
 ,cfsPAddTrasp
 ,cfsVAddTrasp
 ,cfsCPremioFP
 ,cfsPPremioFP
 ,cfsVPremioFP
 ,cfsCScontiExtra
 ,cfsPScontiExtra
 ,cfsVScontiExtra
 ,cfsCScontiNC
 ,cfsPScontiNC
 ,cfsVScontiNC 
)
SELECT CFS001.cfsID
      ,CFS001.cfsLivelloMag
      ,CFS001.cfsSottofamiglia
      ,CFS001.cfsMarchio
      ,CFS001.cfsCatenaSconti
      ,CFS001.cfsSconto
      ,CFS001.cfsCScontiProm
      ,CFS001.cfsPScontiProm
      ,CFS001.cfsBonifico
      ,CFS001.cfsCScontoCassa
      ,CFS001.cfsPScontoCassa
      ,CFS001.cfsCAddTrasp
      ,CFS001.cfsPAddTrasp
      ,CFS001.cfsVAddTrasp
      ,CFS001.cfsCPremioFP
      ,CFS001.cfsPPremioFP
      ,CFS001.cfsVPremioFP
      ,CFS001.cfsCScontiExtra
      ,CFS001.cfsPScontiExtra
      ,CFS001.cfsVScontiExtra
      ,CFS001.cfsCScontiNC
      ,CFS001.cfsPScontiNC
      ,CFS001.cfsVScontiNC
  FROM ContrattiForScontiFissi CFS001(NOLOCK)
  LEFT OUTER JOIN OASI003..ContrattiForScontiFissi CFS003 (NOLOCK) ON CFS003.cfsID            = CFS001.cfsID
                                                                  AND CFS003.cfsLivelloMag    = CFS001.cfsLivelloMag
                                                                  AND CFS003.cfsSottofamiglia = CFS001.cfsSottofamiglia
                                                                  AND CFS003.cfsMarchio       = CFS001.cfsMarchio
 WHERE CFS001.cfsID = @DaSyncroID
   AND CFS003.cfsID IS NULL


/*DestinazioniRiferimentiOggetti NON Syncro*/
/*ContrattiForAnnotazioni  NON duplicato*/
/*ContrattiForScansioni    NON duplicato*/
/*ContrattiForTrasporti    NON Syncro*/

/*Fase  7: Inserimento tavola ContrattiForAddebiti
*/
INSERT INTO OASI003..ContrattiForAddebiti
( cfdID
 ,cfdNRiga
 ,cfdZona
 ,cfdCAddTrasp
 ,cfdPAddTrasp
 ,cfdVAddTrasp
 ,cfdNota
)
SELECT CFD001.cfdID
      ,CFD001.cfdNRiga
      ,CFD001.cfdZona
      ,CFD001.cfdCAddTrasp
      ,CFD001.cfdPAddTrasp
      ,CFD001.cfdVAddTrasp
      ,CFD001.cfdNota
  FROM ContrattiForAddebiti CFD001(NOLOCK)
  LEFT OUTER JOIN OASI003..ContrattiForAddebiti CFD003 (NOLOCK) ON CFD003.cfdID    = CFD001.cfdID
                                                               AND CFD003.cfdNRiga = CFD001.cfdNRiga
 WHERE CFD001.cfdID = @DaSyncroID
   AND CFD003.cfdID IS NULL

/*Fase  8: Inserimento tavola ContrattiForFornitori
*/
INSERT INTO OASI003..ContrattiForFornitori
( cfxID
 ,cfxFornitore
 ,cfxDestinatario
)
SELECT CFX001.cfxID
      ,CFX001.cfxFornitore
      ,CFX001.cfxDestinatario
  FROM ContrattiForFornitori CFX001 (NOLOCK)
  LEFT OUTER JOIN OASI003..ContrattiForFornitori CFX003 (NOLOCK) ON CFX003.cfxID           = CFX001.cfXID
                                                                AND CFX003.cfxFornitore    = CFX001.cfxFornitore
                                                                AND CFX003.cfxDestinatario = CFX001.cfxDestinatario
 WHERE CFX001.cfxID = @DaSyncroID
   AND CFX003.cfxID IS NULL

/*Creo un cursore su tutti premi presenti per quel contratto
  Successivamente per ogni premio presente effetto un ciclo
  per inserire il nuovo premio
*/
Declare curPremiDaDuplicare CURSOR FOR
SELECT pftIDPremioFor
  FROM PremiForTes(NOLOCK)
 WHERE pftContrattoForTes = @DaSyncroID
 ORDER BY pftContrattoForTes, pftIDPremioFor

open curPremiDaDuplicare
while 1=1
begin
   fetch next from curPremiDaDuplicare into
      @DaSyncroIDPremioFor
   if @@fetch_status <0 break /*M: Controllo EOF*/

   /*Fase  9: Inserimento tavola PremiForTes
   */
   INSERT INTO OASI003..PremiForTes
   ( pftContrattoForTes
    ,pftIDPremioFor
    ,pftDescrizione
    ,pftDataInizio
    ,pftDataFine
    ,pftValoreConcordato
    ,pftModoMonetizzazione
    ,pftTipoPremio
    ,pftModoLiquidazione
    ,pftFGiustificativo
    ,pftFStato
    ,pftMarchio
    ,pftPeriodoLiquidazione
    ,pftDataElaborazione
    ,pftTotaleImponibile
    ,pftTotaleQuantita
    ,pftTotalePagato
    ,pftTotalePremio
    ,pftTargetFor
    ,pftVenditeTotali
    ,pftFlagDefinitivo
    ,pftFNettoTrasporto
    ,pftFNettoCassa
    ,pftFNettoRae
    ,pftFNettoSiae
    ,pftNettoPFF
    ,pftNettoPremioGruppo
    ,pftDataDecorrenza
    ,pftPVariazione
    ,pftFStatoPremioCli
    ,pftElencoFornitori
    ,pftPPremioCli
    ,pftDataEsecuzione
    ,pftTotaleInPromo
    ,pftFStatoPremioFor
    ,pftImponibileCalcolo
    ,pftTotaleImponibileNetto
    ,pftFTipoElaborazione
    ,pftFNettoTrasportoCli
    ,pftFNettoCassaCli
    ,pftPAddTraspVir
    ,pftPScontoCassaVir
  --  ,pftLiquidatore
    ,pftTargetRaggiunto 
    ,pftTargetDefinitivo
    ,pftFTargetSuperato  
   )
   SELECT PFT001.pftContrattoForTes
         ,PFT001.pftIDPremioFor
         ,PFT001.pftDescrizione         
         ,PFT001.pftDataInizio          
         ,PFT001.pftDataFine            
         ,PFT001.pftValoreConcordato    
         ,PFT001.pftModoMonetizzazione  
         ,PFT001.pftTipoPremio          
         ,PFT001.pftModoLiquidazione    
         ,PFT001.pftFGiustificativo     
         ,PFT001.pftFStato              
         ,PFT001.pftMarchio             
         ,PFT001.pftPeriodoLiquidazione 
         ,PFT001.pftDataElaborazione    
         ,PFT001.pftTotaleImponibile    
         ,PFT001.pftTotaleQuantita      
         ,PFT001.pftTotalePagato        
         ,PFT001.pftTotalePremio        
         ,PFT001.pftTargetFor           
         ,PFT001.pftVenditeTotali       
         ,PFT001.pftFlagDefinitivo      
         ,PFT001.pftFNettoTrasporto     
         ,PFT001.pftFNettoCassa         
         ,PFT001.pftFNettoRae           
         ,PFT001.pftFNettoSiae          
         ,PFT001.pftNettoPFF            
         ,PFT001.pftNettoPremioGruppo   
         ,PFT001.pftDataDecorrenza      
         ,PFT001.pftPVariazione         
         ,PFT001.pftFStatoPremioCli     
         ,PFT001.pftElencoFornitori     
         ,PFT001.pftPPremioCli          
         ,PFT001.pftDataEsecuzione      
         ,PFT001.pftTotaleInPromo       
         ,PFT001.pftFStatoPremioFor     
         ,PFT001.pftImponibileCalcolo   
         ,PFT001.pftTotaleImponibileNetto 
         ,PFT001.pftFTipoElaborazione     
         ,PFT001.pftFNettoTrasportoCli    
         ,PFT001.pftFNettoCassaCli        
         ,PFT001.pftPAddTraspVir          
         ,PFT001.pftPScontoCassaVir       
  --       ,pftLiquidatore        
         ,PFT001.pftTargetRaggiunto 
         ,PFT001.pftTargetDefinitivo
         ,PFT001.pftFTargetSuperato  
     FROM PremiForTes PFT001 WITH (NOLOCK)
     LEFT OUTER JOIN OASI003..PremiForTes PFT003 (NOLOCK) ON PFT003.pftContrattoForTes = PFT001.pftContrattoForTes
                                                         AND PFT003.pftIDPremioFor     = PFT001.pftIDPremioFor
    WHERE PFT001.pftContrattoForTes = @DaSyncroID       
      AND PFT001.pftIDPremioFor     = @DaSyncroIDPremioFor
      AND PFT003.pftContrattoForTes IS NULL

   /*Fase 10: Inserimento tavola PremiForArticoli
   */
   INSERT INTO OASI003..PremiForArticoli
   ( pfaIDPremioFor
    ,pfaLivelloMag
    ,pfaSottofamiglia
    ,pfaArticolo
    ,pfaFEsclusione
    ,pfaFEscludiPremio
   )
   SELECT PFA001.pfaIDPremioFor
         ,PFA001.pfaLivelloMag
         ,PFA001.pfaSottofamiglia
         ,PFA001.pfaArticolo
         ,PFA001.pfaFEsclusione
         ,PFA001.pfaFEscludiPremio
     FROM PremiForArticoli PFA001(NOLOCK)
     LEFT OUTER JOIN OASI003..PremiForArticoli PFA003 (NOLOCK) ON PFA003.pfaIDPremioFor   = PFA001.pfaIDPremioFor
                                                              AND PFA003.pfaLivelloMag    = PFA001.pfaLivelloMag
                                                              AND PFA003.pfaSottofamiglia = PFA001.pfaSottofamiglia
                                                              AND PFA003.pfaArticolo      = PFA001.pfaArticolo
    WHERE PFA001.pfaIDPremioFor = @DaSyncroIDPremioFor
      AND PFA003.pfaIDPremioFor IS NULL
   
   /*Fase 11: Inserimento tavola PremiForRegole
   */
   INSERT INTO OASI003..PremiForRegole
   ( pfgIDPremioFor
    ,pfgNRiga
    ,pfgModoImponibile
    ,pfgValoreIniziale
    ,pfgValoreFinale
    ,pfgCPremio
    ,pfgPPremio
    ,pfgVPremio
    ,pfgModoApplP
    ,pfgFPrevisione
    ,pfgNota
    ,pfgCPremioOri
    ,pfgPPremioOri
    ,pfgVPremioOri
    ,pfgFlagForzTarget
   )
   SELECT PFG001.pfgIDPremioFor
         ,PFG001.pfgNRiga
         ,PFG001.pfgModoImponibile
         ,PFG001.pfgValoreIniziale
         ,PFG001.pfgValoreFinale
         ,PFG001.pfgCPremio
         ,PFG001.pfgPPremio
         ,PFG001.pfgVPremio
         ,PFG001.pfgModoApplP
         ,PFG001.pfgFPrevisione
         ,PFG001.pfgNota
         ,PFG001.pfgCPremioOri
         ,PFG001.pfgPPremioOri
         ,PFG001.pfgVPremioOri
         ,PFG001.pfgFlagForzTarget
     FROM PremiForRegole PFG001 (NOLOCK)
     LEFT OUTER JOIN OASI003..PremiForRegole PFG003 (NOLOCK) ON PFG003.pfgIDPremioFor = PFG001.pfgIDPremioFor
                                                            AND PFG003.pfgNRiga       = PFG001.pfgNRiga
    WHERE PFG001.pfgIDPremioFor = @DaSyncroIDPremioFor
      AND PFG003.pfgIDPremioFor IS NULL
   
   /*Fase 12: Inserimento tavola PremiForPremiCli
   */
   /*Viene eseguita direttamente dal trigger di inserimento PremioForTes
     con chiamata alla sp_M_ClientiAnagFTarget
   */
   
   /*Fase 13: Inserimento tavola PremiForFornitori
   */
   INSERT INTO OASI003..PremiForFornitori
   ( pffIDPremioFor
    ,pffFornitore
    ,pffDestinatario 
    ,pffFLiquida
   )
   SELECT PFF001.pffIDPremioFor
         ,PFF001.pffFornitore
         ,PFF001.pffDestinatario 
         ,PFF001.pffFLiquida
     FROM PremiForFornitori PFF001 (NOLOCK)
     LEFT OUTER JOIN OASI003..PremiForFornitori PFF003 (NOLOCK) ON PFF001.pffIDPremioFor  = PFF003.pffIDPremioFor
                                                               AND PFF001.pffFornitore    = PFF003.pffFornitore
                                                               AND PFF001.pffDestinatario = PFF003.pffDestinatario
    WHERE PFF001.pffIDPremioFor = @DaSyncroIDPremioFor
end
CLOSE      curPremiDaDuplicare
DEALLOCATE curPremiDaDuplicare

SELECT
    0        as CodMsg    /*significa Resultset vuoto*/
   ,'Sincronizzazione eseguita'       as TestoMsg
   ,0        as CodColore /*vbBlack*/
   ,0        as Bold
   ,0        as Underline

------------
--M: USCITA
------------
IF @Debug = 1
begin
   SET @Function = 'EXIT SP'
   SET @Infos    = 'Return(' + CONVERT(varchar, @Ret) + ') - '
   EXEC sp_XLOG @Module, @Function, @Infos
end

RETURN (0)







Error Number :
	40002
Error Description :
S0022: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'pftFTargetSuperato'.
RDO Errors        :
S0022: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'pftTargetRaggiunto'.
S0022: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'pftTargetDefinitivo'.
S0022: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'pftFTargetSuperato'.
Leave a Comment