All Downloads are FREE. Search and download functionalities are using the official Maven repository.

expsigladb.Package.CNRCTB107_BODY.sql Maven / Gradle / Ivy

There is a newer version: 6.6.11
Show newest version
--------------------------------------------------------
--  DDL for Package Body CNRCTB107
--------------------------------------------------------

  CREATE OR REPLACE PACKAGE BODY "CNRCTB107" is

 function getDesc(aTiDoc varchar,aCdCds varchar2,aEs number,aCdUo varchar2,aPgDoc number) return varchar2 is
  aStringa varchar2(1000);
 begin
  aStringa:='';
  aStringa:=aStringa||' Cds:'||aCdCds;
  aStringa:=aStringa||' Uo:'||aCdUo;
  aStringa:=aStringa||' Es:'||aEs;
  aStringa:=aStringa||' Tipo:'||aTiDoc;
  aStringa:=aStringa||' Pg_doc:'||aPgDoc;
  return aStringa;
 end;

 procedure job_congelaFatturaEsChiuso(job number, pg_exec number, next_date date, aTiDoc varchar2, aCdCds varchar2, aEs number, aCdUo varchar2, aPgDoc number) is
  aTSNow date;
  aUser varchar2(20);
  aNum number;
  aNumeroProcessati number;
 begin
  if CNRCTB008.ESERCIZIO_PARTENZA=aEs then
   IBMERR001.RAISE_ERR_GENERICO('Non è possibile effetuare il congelamento di fatture nell''esercizio di partenza dell''applicazione');
  end if;

  if not CNRCTB008.ISESERCIZIOAPERTO(aEs,aCdCds) then
   IBMERR001.RAISE_ERR_GENERICO('L''esercizio '||aEs||' non è aperto per il cds:'||aCdCds);
  end if;

  if not CNRCTB008.ISESERCIZIOCHIUSO(aEs-1,aCdCds)  then
   IBMERR001.RAISE_ERR_GENERICO('L''esercizio '||(aEs-1)||' non è chiuso per il cds:'||aCdCds);
  end if;

  aNumeroProcessati:=0;
  aTSNow:=sysdate;
  aUser:=IBMUTL200.getUserFromLog(pg_exec);
  -- Aggiorna le info di testata del log
  IBMUTL210.logStartExecutionUpd(pg_exec, TIPO_LOG_JOB_CONG_FAT_ES_CH, job, 'Annullamento fatture di es. chiuso cds: '||nvl(aCdCds,'*')||' UO: '||nvl(aCdUo,'*')||' PG_DOC: '||nvl(to_char(aPgDoc),'*')||' Start:'||to_char(aTSNow,'YYYY/MM/DD HH-MI-SS'));
  -- Ciclo su esercizi di provenienza dei documenti
  for aEsercizio in (select esercizio from esercizio_base where esercizio < aEs and esercizio >= CNRCTB008.ESERCIZIO_PARTENZA order by esercizio desc) loop
   -- Ciclo sui CDS validi in tali esercizi
   for aCds in (select * from v_unita_organizzativa_valida where
                       esercizio = aEsercizio.esercizio
 				  and cd_unita_organizzativa = nvl(aCdCds,cd_unita_organizzativa)
 				  and fl_cds = 'Y'
   ) loop
    if not CNRCTB008.ISESERCIZIOCHIUSO(aEsercizio.esercizio,aCdCds) then
     IBMERR001.RAISE_ERR_GENERICO('L''esercizio '||aEs||' non è chiuso per il cds:'||aCdCds);
    end if;
    -- Ciclo sui UO validi di cds validi in tali esercizi
    for aUo in (select * from v_unita_organizzativa_valida where
                       esercizio = aEsercizio.esercizio
 				  and cd_unita_padre = aCds.cd_unita_organizzativa
 				  and cd_unita_organizzativa = nvl(aCdUo,cd_unita_organizzativa)
 				  and fl_cds = 'N'
    ) loop
     for aFattura in (select distinct cd_tipo_documento_amm, ti_fattura, cd_cds, esercizio, cd_unita_organizzativa, pg_documento_amm, stato_pagamento_fondo_eco from V_DOC_AMM_OBB where
                              cd_cds=aUo.cd_unita_padre
         				  and cd_unita_organizzativa=aUo.cd_unita_organizzativa
         				  and cd_tipo_documento_amm in (CNRCTB100.TI_FATTURA_PASSIVA,CNRCTB100.TI_FATTURA_ATTIVA)
 						  and cd_tipo_documento_amm = nvl(aTiDoc,cd_tipo_documento_amm)
         				  and esercizio=aEsercizio.esercizio
						  and fl_congelata = 'N'
                          -- SOLO FATTURE PROTOCOLLATE SONO CONGELABILI
						  and protocollo_iva is not null
         				  and pg_documento_amm=nvl(aPgDoc,pg_documento_amm)
         				  and stato_cofi not in ('P','A')
         				  and
         				      (
         					      ti_fattura = CNRCTB100.TI_FATT_FATTURA
         					   or cd_tipo_documento_amm = CNRCTB100.TI_FATTURA_ATTIVA and ti_fattura = CNRCTB100.TI_FATT_NOTA_C
         					  )
         				  and esercizio_obbligazione != esercizio
         				  and esercizio_obbligazione is not null
         		  		  and esercizio_obbligazione = aEs
     ) loop
      begin
       CNRCTB100.LOCKDOCAMM(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm);
       CNRCTB100.LOCKDOCAMMRIGA(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm,null);
	   aNumeroProcessati:=aNumeroProcessati+1;

       -- Check che non ci siano mandati emessi/esitati nell'anno di congelamento sulla fattura

       for aTrash in (select 1 from mandato_riga mr where
              cd_cds_doc_amm=aFattura.cd_cds
          and cd_uo_doc_amm=aFattura.cd_unita_organizzativa
          and cd_tipo_documento_amm = aFattura.cd_tipo_documento_amm
          and esercizio_doc_amm=aFattura.esercizio
          and pg_doc_amm=aFattura.pg_documento_amm
		  -- Posso congelare solo se NON esistono mandati emessi o esitati nell'anno di congelamento
		  and esercizio = aEs
          and exists (select 1 from mandato where
		           cd_cds=mr.cd_cds
			   and esercizio=mr.esercizio
			   and pg_mandato=mr.pg_mandato
		       and stato in (CNRCTB038.STATO_AUT_EME, CNRCTB038.STATO_AUT_ESI)
		  )
	    for update nowait
	   ) loop
        IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a mandato emesso o esitato nell''anno di congelamento ('||aEs||')');
	   end loop;


       if aFattura.cd_tipo_documento_amm = CNRCTB100.TI_FATTURA_PASSIVA then

        -- Check che non ci siano fatture da transitare per fondo economale

        if aFattura.stato_pagamento_fondo_eco <> CNRCTB100.STATO_NO_PFONDOECO then
         IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' risulta associata o da associare a spesa del fondo economale');
	    end if;

	    -- Check che non ci siano lettere di pagamento con sospeso associato sulla fattura nell'anno di congelamento

        for aTrash1 in (select 1 from fattura_passiva fp where
              cd_cds=aFattura.cd_cds
          and cd_unita_organizzativa=aFattura.cd_unita_organizzativa
          and esercizio=aFattura.esercizio
          and pg_fattura_passiva=aFattura.pg_documento_amm
          and exists (select 1 from lettera_pagam_estero where
		           cd_cds=fp.cd_cds
			   and esercizio=fp.esercizio
			   and pg_lettera=fp.pg_lettera
               and esercizio=fp.esercizio_lettera
               and esercizio = aEs
			   and cd_sospeso is not null
		  )
	     for update nowait
	    ) loop
         IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a modulo 1210 associato a sospeso nell''anno di congelamento ('||aEs||')');
	    end loop;
       end if;

	   -- Start operazioni di modifica
       CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm,
        ' fl_congelata = ''Y''',
        null,
        aUser,
        aTsNow
       );

       if aFattura.cd_tipo_documento_amm = CNRCTB100.TI_FATTURA_PASSIVA then
        -- Ciclo su tutte le righe della fattura con esercizio_obbligazione = all'esercizio di congelamento
        for aRiga in (select * from fattura_passiva_riga where
               cd_cds=aFattura.cd_cds
           and cd_unita_organizzativa=aFattura.cd_unita_organizzativa
           and esercizio=aFattura.esercizio
           and esercizio_obbligazione=aEs
           and pg_fattura_passiva=aFattura.pg_documento_amm)
        loop
         for aNotaC in (select * from fattura_passiva an where
                               ti_fattura = CNRCTB100.TI_FATT_NOTA_C
                           and exists (select 1 from fattura_passiva_riga where
                                               cd_cds_obbligazione = aRiga.cd_cds_obbligazione
         								   and esercizio_obbligazione=aRiga.esercizio_obbligazione
         								   and esercizio_ori_obbligazione = aRiga.esercizio_ori_obbligazione
         								   and pg_obbligazione = aRiga.pg_obbligazione
         								   and pg_obbligazione_scadenzario = aRiga.pg_obbligazione_scadenzario
         						           and cd_cds = an.cd_cds
										   and esercizio = an.esercizio
										   and cd_unita_organizzativa = an.cd_unita_organizzativa
										   and pg_fattura_passiva = an.pg_fattura_passiva)
								for update nowait)
         loop
		   if aNotaC.esercizio = aEs then
            IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di credito generata nell''esercizio di congelamento ('||aEs||')');
		   end if;
           begin
            select distinct 1 into aNum from fattura_passiva_riga where
                    (
                         cd_cds_assncna_fin<>aFattura.cd_cds
                      or cd_uo_assncna_fin<>aFattura.cd_unita_organizzativa
                      or esercizio_assncna_fin<>aFattura.esercizio
                      or pg_fattura_assncna_fin<>aFattura.pg_documento_amm
            )
                     and cd_cds=aNotaC.cd_cds
                     and cd_unita_organizzativa=aNotaC.cd_unita_organizzativa
                     and esercizio=aNotaC.esercizio
                     and pg_fattura_passiva=aNotaC.pg_fattura_passiva;
                  IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di credito collegata anche ad altra fattura');
           exception when NO_DATA_FOUND then
           null;
           end;
           CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aNotaC.cd_cds,aNotaC.esercizio,aNotaC.cd_unita_organizzativa,aNotaC.pg_fattura_passiva,
         	  ' fl_congelata = ''Y''',
         	  null,
         	  aUser,
          		  aTsNow
              );
         end loop;
         for aNotaD in (select * from fattura_passiva an where
                               ti_fattura = CNRCTB100.TI_FATT_NOTA_D
                           and exists (select 1 from fattura_passiva_riga where
                                               cd_cds_obbligazione = aRiga.cd_cds_obbligazione
         								   and esercizio_obbligazione=aRiga.esercizio_obbligazione
         								   and esercizio_ori_obbligazione = aRiga.esercizio_ori_obbligazione
         								   and pg_obbligazione = aRiga.pg_obbligazione
         								   and pg_obbligazione_scadenzario = aRiga.pg_obbligazione_scadenzario
         						           and cd_cds = an.cd_cds
										   and esercizio = an.esercizio
										   and cd_unita_organizzativa = an.cd_unita_organizzativa
										   and pg_fattura_passiva = an.pg_fattura_passiva)
								for update nowait)
         loop
           if aNotaD.esercizio = aEs then
            IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di debito generata nell''esercizio di congelamento ('||aEs||')');
           end if;
           begin
            select distinct 1 into aNum from fattura_passiva_riga where
                     (
                         cd_cds_assncna_fin<>aFattura.cd_cds
                      or cd_uo_assncna_fin<>aFattura.cd_unita_organizzativa
                      or esercizio_assncna_fin<>aFattura.esercizio
                      or pg_fattura_assncna_fin<>aFattura.pg_documento_amm
            )
                     and cd_cds=aNotaD.cd_cds
                     and cd_unita_organizzativa=aNotaD.cd_unita_organizzativa
                     and esercizio=aNotaD.esercizio
                     and pg_fattura_passiva=aNotaD.pg_fattura_passiva;
                  IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di debito collegata anche ad altra fattura');
           exception when NO_DATA_FOUND then
           null;
           end;
           CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aNotaD.cd_cds,aNotaD.esercizio,aNotaD.cd_unita_organizzativa,aNotaD.pg_fattura_passiva,
         	  ' fl_congelata = ''Y''',
         	  null,
         	  aUser,
          		  aTsNow
              );
         end loop;
        end loop;
       end if;

       for aObbS in (select * from obbligazione_scadenzario os where
         		      exists (select 1 from V_DOC_AMM_OBB where
                                       cd_cds=aFattura.cd_cds
                                   and esercizio = aFattura.esercizio
								   and cd_tipo_documento_amm = aFattura.cd_tipo_documento_amm
                                   and cd_unita_organizzativa = aFattura.cd_unita_organizzativa
                                   and pg_documento_amm = aFattura.pg_documento_amm
								   and cd_cds_obbligazione = os.cd_cds
								   and esercizio_obbligazione = os.esercizio
         						           and esercizio_ori_obbligazione = os.esercizio_originale
								   and pg_obbligazione = os.pg_obbligazione
								   and pg_obbligazione_scadenzario  =os.pg_obbligazione_scadenzario
                                   and esercizio_obbligazione > esercizio
                                   and esercizio_obbligazione is not null
                                   and esercizio_obbligazione = aEs
                                   and stato_cofi not in ('P','A')
                      )
         		  for update nowait
       ) loop
        CNRCTB035.AGGIORNASALDODOCAMMOBB(aObbS.cd_cds, aObbS.esercizio, aObbS.esercizio_originale, aObbS.pg_obbligazione, aObbS.pg_obbligazione_scadenzario, 0-aObbS.im_scadenza, aUser);
        CNRCTB035.ANNULLASCADOBBLIGAZIONE(aObbS.cd_cds, aObbS.esercizio, aObbS.esercizio_originale, aObbS.pg_obbligazione, aObbS.pg_obbligazione_scadenzario, aUser);
       end loop;
       IBMUTL200.logInf(pg_exec, 'ANNULLOK',null,'CF-'||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm));
       commit;
 	 exception when others then
       IBMUTL200.logErr(pg_exec, DBMS_UTILITY.FORMAT_ERROR_STACK, null,'CF-'||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm));
 	  rollback;
 	 end;
     end loop;
 	for aFattura in (select distinct cd_tipo_documento_amm, ti_fattura, cd_cds, esercizio, cd_unita_organizzativa, pg_documento_amm from V_DOC_AMM_ACC where
                                  cd_cds=aCdCds
         				  and cd_tipo_documento_amm in (CNRCTB100.TI_FATTURA_PASSIVA,CNRCTB100.TI_FATTURA_ATTIVA)
 						  and cd_tipo_documento_amm = nvl(aTiDoc,cd_tipo_documento_amm)
         				  and cd_unita_organizzativa=aCdUo
         				  and esercizio=aEsercizio.esercizio
         				  and pg_documento_amm=nvl(aPgDoc,pg_documento_amm)
						  and protocollo_iva is not null
  						  and fl_congelata = 'N'
         				  and stato_cofi not in ('P','A')
         				  and
         				      (
         					      ti_fattura = CNRCTB100.TI_FATT_FATTURA
         					   or cd_tipo_documento_amm = CNRCTB100.TI_FATTURA_PASSIVA and ti_fattura = CNRCTB100.TI_FATT_NOTA_C
         					  )
         				  and esercizio_accertamento != esercizio
         				  and esercizio_accertamento is not null
         		  		  and esercizio_accertamento = aEs
     ) loop
      begin
       CNRCTB100.LOCKDOCAMM(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm);
       CNRCTB100.LOCKDOCAMMRIGA(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm,null);
  	   aNumeroProcessati:=aNumeroProcessati+1;
       CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm,
           ' fl_congelata = ''Y''',
       	  null,
       	  aUser,
       	  aTsNow
       );

	   for aTrash in (select 1 from reversale_riga mr where
              cd_cds_doc_amm=aFattura.cd_cds
          and cd_uo_doc_amm=aFattura.cd_unita_organizzativa
          and cd_tipo_documento_amm = aFattura.cd_tipo_documento_amm
          and esercizio_doc_amm=aFattura.esercizio
          and pg_doc_amm=aFattura.pg_documento_amm
		  -- Reversale esitata o riscontrata in esercizio di congelamento
		  and esercizio = aEs
          and exists (select 1 from reversale where
		           cd_cds=mr.cd_cds
			   and esercizio=mr.esercizio
			   and pg_reversale=mr.pg_reversale
		       and stato in (CNRCTB038.STATO_AUT_EME, CNRCTB038.STATO_AUT_ESI)
		  )
	    for update nowait
	   ) loop
        IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a reversale emessa o riscontrata in esercizio di congelamento ('||aEs||')');
	   end loop;

	   if aFattura.cd_tipo_documento_amm = CNRCTB100.TI_FATTURA_ATTIVA then
        for aRiga in (select * from fattura_attiva_riga where
                 cd_cds=aFattura.cd_cds
             and cd_unita_organizzativa=aFattura.cd_unita_organizzativa
             and esercizio=aFattura.esercizio
             and pg_fattura_attiva=aFattura.pg_documento_amm
             -- Ciclo solo sulle righe con accertamento in esercizio di congelamento
             and esercizio_accertamento=aEs)
        loop
         for aNotaC in (select * from fattura_attiva an where
                               ti_fattura = CNRCTB100.TI_FATT_NOTA_C
                           and exists (select 1 from fattura_attiva_riga where
                                               cd_cds_accertamento = aRiga.cd_cds_accertamento
         								   and esercizio_accertamento=aRiga.esercizio_accertamento
         								   and esercizio_ori_accertamento=aRiga.esercizio_ori_accertamento
         								   and pg_accertamento = aRiga.pg_accertamento
         								   and pg_accertamento_scadenzario = aRiga.pg_accertamento_scadenzario
         						           and cd_cds = an.cd_cds
										   and esercizio = an.esercizio
										   and cd_unita_organizzativa = an.cd_unita_organizzativa
										   and pg_fattura_attiva = an.pg_fattura_attiva)
       						for update nowait)
         loop
              if aNotaC.esercizio = aEs then
               IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di credito generata nell''esercizio di congelamento ('||aEs||')');
              end if;
		      begin
		       select distinct 1 into aNum from fattura_attiva_riga where
                  (
					   cd_cds_assncna_fin<>aFattura.cd_cds
                   or cd_uo_assncna_fin<>aFattura.cd_unita_organizzativa
                   or esercizio_assncna_fin<>aFattura.esercizio
                   or pg_fattura_assncna_fin<>aFattura.pg_documento_amm
			      )
                  and cd_cds=aNotaC.cd_cds
                  and cd_unita_organizzativa=aNotaC.cd_unita_organizzativa
                  and esercizio=aNotaC.esercizio
                  and pg_fattura_attiva=aNotaC.pg_fattura_attiva;
               IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di credito collegata anche ad altra fattura');
			  exception when NO_DATA_FOUND then
			   null;
			  end;
               CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aNotaC.cd_cds,aNotaC.esercizio,aNotaC.cd_unita_organizzativa,aNotaC.pg_fattura_attiva,
         	  ' fl_congelata = ''Y''',
         	  null,
         	  aUser,
          		  aTsNow
               );
         end loop;
         for aNotaD in (select * from fattura_attiva an where
                               ti_fattura = CNRCTB100.TI_FATT_NOTA_D
                           and exists (select 1 from fattura_attiva_riga where
                                            cd_cds_accertamento = aRiga.cd_cds_accertamento
         								   and esercizio_accertamento=aRiga.esercizio_accertamento
         								   and esercizio_ori_accertamento=aRiga.esercizio_ori_accertamento
         								   and pg_accertamento = aRiga.pg_accertamento
         								   and pg_accertamento_scadenzario = aRiga.pg_accertamento_scadenzario
         						           and cd_cds = an.cd_cds
										   and esercizio = an.esercizio
										   and cd_unita_organizzativa = an.cd_unita_organizzativa
										   and pg_fattura_attiva = an.pg_fattura_attiva)
       						for update nowait)
         loop
              if aNotaD.esercizio = aEs then
               IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di debito generata nell''esercizio di congelamento ('||aEs||')');
              end if;
		      begin
		       select distinct 1 into aNum from fattura_attiva_riga where
                  (
					   cd_cds_assncna_fin<>aFattura.cd_cds
                   or cd_uo_assncna_fin<>aFattura.cd_unita_organizzativa
                   or esercizio_assncna_fin<>aFattura.esercizio
                   or pg_fattura_assncna_fin<>aFattura.pg_documento_amm
			      )
                  and cd_cds=aNotaD.cd_cds
                  and cd_unita_organizzativa=aNotaD.cd_unita_organizzativa
                  and esercizio=aNotaD.esercizio
                  and pg_fattura_attiva=aNotaD.pg_fattura_attiva;
               IBMERR001.RAISE_ERR_GENERICO('La fattura '||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm)||' è collegata a nota di debito collegata anche ad altra fattura');
			  exception when NO_DATA_FOUND then
			   null;
			  end;
               CNRCTB100.UPDATEDOCAMM(aFattura.cd_tipo_documento_amm,aNotaD.cd_cds,aNotaD.esercizio,aNotaD.cd_unita_organizzativa,aNotaD.pg_fattura_attiva,
         	  ' fl_congelata = ''Y''',
         	  null,
         	  aUser,
          		  aTsNow
               );
         end loop;
        end loop;
       end if;

	   for aAccS in (select * from accertamento_scadenzario sa where
                               exists (select 1 from V_DOC_AMM_ACC where
                                       cd_cds=aFattura.cd_cds
                                   and esercizio = aFattura.esercizio
								   and cd_tipo_documento_amm = aFattura.cd_tipo_documento_amm
                                   and cd_unita_organizzativa = aFattura.cd_unita_organizzativa
                                   and pg_documento_amm = aFattura.pg_documento_amm
                                   and esercizio_accertamento > esercizio
								   and cd_cds_accertamento = sa.cd_cds
								   and esercizio_accertamento = sa.esercizio
      								   and esercizio_ori_accertamento=sa.esercizio_originale
								   and pg_accertamento = sa.pg_accertamento
								   and pg_accertamento_scadenzario = sa.pg_accertamento_scadenzario
                                   and esercizio_accertamento is not null
                                   and esercizio_accertamento = aEs
                                   and stato_cofi not in ('P','A')
                      )
         		  for update nowait
       ) loop
        CNRCTB035.AGGIORNASALDODOCAMMACC(aAccS.cd_cds, aAccS.esercizio, aAccS.esercizio_originale, aAccS.pg_accertamento, aAccS.pg_accertamento_scadenzario, 0-aAccS.im_scadenza, aUser);
        CNRCTB035.ANNULLASCADACCERTAMENTO(aAccS.cd_cds, aAccS.esercizio, aAccS.esercizio_originale, aAccS.pg_accertamento, aAccS.pg_accertamento_scadenzario, aUser);
       end loop;
       IBMUTL200.logInf(pg_exec, 'ANNULLOK',null,'CF-'||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm));
       commit;
      exception when others then
       IBMUTL200.logErr(pg_exec, DBMS_UTILITY.FORMAT_ERROR_STACK, null,'CF-'||getDesc(aFattura.cd_tipo_documento_amm,aFattura.cd_cds,aFattura.esercizio,aFattura.cd_unita_organizzativa,aFattura.pg_documento_amm));
       rollback;
      end;
 	end loop;
    end loop;
   end loop;
  end loop;
  if aNumeroProcessati=0 then
   IBMUTL200.logErr(pg_exec, DBMS_UTILITY.FORMAT_ERROR_STACK, 'Nessun documento è stato processato','Nessun documento è stato processato');
  end if;
 end;
end;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy