PANTHEON™ Help

 Toc
 PANTHEON Ajutor - Bun venit
[Collapse]PANTHEON
 [Collapse]Ghiduri pentru PANTHEON
  [Expand]Ghid pentru PANTHEON
  [Expand]Ghid pentru PANTHEON Retail
  [Expand]Ghid pentru PANTHEON Vet
  [Expand]Ghid pentru PANTHEON Fermă
 [Collapse]Manuale de utilizare pentru PANTHEON
  [Collapse]Manual de utilizare pentru PANTHEON
   [Collapse]Începerea
     Dicționar de termeni
     Primii pași cu PANTHEON
    [Expand]Folosind PANTHEON la Tecta, o companie fictivă
    [Expand]Instrucțiuni pentru asigurarea conformității PANTHEON cu SAS
    [Expand]Instalare PANTHEON
    [Collapse]SISTEMUL PANTHEON
     [Expand]Datele sistemului PANTHEON
     [Collapse]MS SQL Server
       Descărcați și instalați MS SQL Server
       Actualizarea MS SQL Server la 2019 sau 2022
       MS Management Studio - Descarcă și instalează
       Restaurarea bazei de date pe serverul SQL
       Adăugarea utilizatorilor la nivel de server (AddUser_PAX)
       Instalarea SQL pentru acces extern
       Instalarea clienților PANTHEON
       Configurarea serverului MS SQL pentru mai multe Pantheon™ ochi
       Schimbarea ordinii de sortare SQL
      [Expand]MS SQL Server Securitate
      [Expand]Interogări SQL utile
       SQLExecute
      [Collapse]Locuri de muncă SQL Server
       [Expand]Reîmprospătează Stocul
        Rappels par E-Mail pentru Creanțe Întârziate
        Plan de întreținere DB
     [Expand]Utilitare Microsoft Windows
     [Expand]Politica de Securitate
     [Expand]Administrarea bazei de date
    [Expand]Bazele PANTHEON
    [Expand]PANTHEON Ajutor
    [Expand]Materiale și Mișcări de Bunuri
    [Expand]Atribuirea Identificatorilor
    [Expand]Întrebări frecvente despre Pantheon (F.A.Q.)
    [Expand]Arhivă
   [Expand]Manual de utilizare pentru eBusiness
   [Expand]Setări
   [Expand]Comenzi
   [Expand]Produse
   [Expand]Fabricare
   [Expand]Serviciu
   [Expand]Ajutor
   [Expand]Personal
   [Expand]Financiare
   [Expand]Analitică
  [Expand]Manual de utilizare pentru PANTHEON Retail
  [Expand]Manual de utilizare pentru PANTHEON Vet
  [Expand]Manual de utilizare pentru PANTHEON Farming
[Collapse]PANTHEON Web
 [Collapse]Ghiduri pentru PANTHEON Web
  [Expand]Ghid pentru PANTHEON Web Light
  [Expand]Ghid pentru Terminalul Web PANTHEON
  [Expand]Ghid pentru PANTHEON Web Legal
  [Expand]Arhivă produse vechi
 [Collapse]Manuale de utilizare pentru PANTHEON Web
  [Expand]Începerea PANTHEON Web
  [Expand]Manual de utilizare pentru PANTHEON Web Light
  [Expand]Manual de utilizare pentru terminalul web PANTHEON
  [Expand]Manual de utilizare pentru PANTHEON Web Legal
  [Expand]Arhivă produse vechi
[Collapse]PANTHEON Granule
 [Collapse]Ghiduri pentru granule PANTHEON
  [Expand]Granul Personal
  [Expand]Comenzi de Călătorie Granule
  [Expand]Documente și Sarcini Granul
  [Expand]Tabloul de bord Granule
  [Expand]Comenzi B2B Granule
  [Expand]Granul de Serviciu pe Teren
  [Expand]Granul Inventar Active Fixe
  [Expand]Inventar de Magazin Granule
 [Collapse]Manuale de utilizare pentru granulele PANTHEON
  [Expand]Începerea
  [Expand]Granul Personal
  [Expand]Comenzi de Călătorie Granule
  [Expand]Documente și Sarcini Granul
  [Expand]Comenzi B2B Granule
  [Expand]Tabloul de bord Granule
  [Expand]Serviciul de teren Granule
  [Expand]Granul Inventar Active Fixe
  [Expand]Inventar de Magazin Granule
  [Expand]Arhivă
[Expand]Site utilizator

Load Time: 593,7679 ms
"
  2657 | 3054 | 475614 | AI translated
Label

Rapoarte prin E-Mail pentru Creanțe Restante

Rapoarte prin E-Mail pentru Creanțe Restante

Rapoarte prin E-Mail pentru Creanțe Restante

Această temă conține instrucțiuni pentru un job care găsește creanțe restante și trimite e-mailuri managerilor financiari ai debitorilor.

În primul rând, variabilele globale sunt declarate:

declare
  @cSubjekt char(40),         -- ID subiect
  @cImePriimek varchar(255),  -- numele complet al managerului financiar
  @cEmail varchar(255),       -- adresă de e-mail
  @cVezniDok varchar(20),     -- document legat (numărul facturii)
  @dDatumVal datetime,        -- data limită
  @dDatumDok datetime,        -- data documentului
  @mDebet money,              -- suma debit
  @mKredit money,             -- suma credit
  @mSaldo money,              -- sold
  @mGrandTotal money,         -- sold total al subiectului
  @cNaslovEmaila varchar(255), -- subiectul e-mailului
  @cSeznam varchar(8000)       -- lista facturilor restante

Următoarea bucată de cod deschide setul de înregistrări cu nume, ID-uri de subiect și adrese de e-mail. Deoarece e-mailurile sunt trimise doar celor care au o adresă de e-mail, un join este suficient, în loc de un right/left join:

-- pregătește setul de înregistrări cu toți managerii financiari
declare crDolzniki cursor local fast_forward for
  select RTrim(C.IME)+' '+RTrim(C.PRIIMEK) as IMEPRIIMEK,C.SUBJEKT, A.TEL
    from CONTACTS C
    join CONTADDRESS A on C.SUBJEKT = A.SUBJEKT and C.POZ = A.POZ and TIP = 'E'
    where C.VLOGA like 'Manager financiar'

open crDolzniki
fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
while @@fetch_status = 0
  begin  -- buclă prin toți managerii financiari
    -- !!! INSERARE CEVA UTIL AICI !!! --
    fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
  end  

close crDolzniki
deallocate crDolzniki

 

Următoarea bucată găsește toate facturile restante ale unui subiect dat și le pune într-un set de înregistrări.

    -- pentru fiecare creează un set de înregistrări cu articole restante
    declare crOdprte cursor local fast_forward for
      select 
          P.VEZNIDOK,
          (select top 1 X.DATUMVAL    
             from TEMEPOZ X 
             where X.SUBJEKT = P.SUBJEKT
               and X.KONTO = P.KONTO 
               and X.VEZNIDOK = P.VEZNIDOK 
               and X.DEBET <> 0  
             order by X.DATUMVAL) as DATUMVAL,
          (select top 1 X.DATUMDOK    
             from TEMEPOZ X 
             where X.SUBJEKT = P.SUBJEKT
               and X.KONTO = P.KONTO 
               and X.VEZNIDOK = P.VEZNIDOK 
               and X.DEBET <> 0  
             order by X.DATUMVAL) as DATUMDOK,
          Sum(P.DEBET) as DEBET, 
          Sum(P.KREDIT) as KREDIT, 
          Sum(P.DEBET -P.KREDIT) as Saldo
        from TEME G
          join TEMEPOZ P on P.KLJUC = G.KLJUC 
            and P.KONTO = '1200' 
            and (P.DATUMVAL <= GetDate())
        where P.SUBJEKT = @cSubjekt
        group by P.VEZNIDOK, P.SUBJEKT, P.KONTO
        having (Sum(P.DEBET - P.KREDIT) <> 0)
        order by P.VEZNIDOK    

Acum trebuie să pui datele din acel set de înregistrări în corpul mesajului de e-mail (variabila @cSeznam).

    set @cSeznam = ''
    set @mGrandTotal = 0
    open crOdprte
    fetch next from crOdprte into @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
    while @@fetch_status = 0 
      begin 
        set @cSeznam = @cSeznam + @cVezniDok + Convert(char(12),@dDatumVal,104) + Convert(char(12),@dDatumDok,104) 
                       + Convert(char(17),@mDebet,1) + Convert(char(17),@mKredit,1) + Convert(char(17),@mSaldo,1) + Char(13) + Char(10)
        set @mGrandTotal = @mGrandTotal + @mSaldo
        fetch next from crOdprte into @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
      end 
    close crOdprte
    deallocate crOdprte

Verifică dacă lista nu este goală și trimite mesajul.

    if @cSeznam <> ''
      begin
        set @cNaslovEmaila = 'Lista articolelor restante pentru ' + @cSubjekt + ' la data: ' + Convert(varchar(12),GetDate(),104)
        set @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = 'Document legat      Data limită  Data doc.              Debit           Credit            Sold' + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = @cSeznam + Char(13) + Char(10) + 'Total:.....................................................................' + Convert(char(19),@mGrandTotal,1)
        -- trimite e-mail
        exec master.dbo.xp_sendmail
          @recipients = @cEmail, 
          @message = @cSeznam,
          @subject = @cNaslovEmaila
      end    

Adaugă întreaga interogare la joburile SQL Server, define un program și este gata de utilizare.

 

054318.gif Un pas al unui job SQL Server poate avea cel mult 7800 caractere.
Interogarea de mai jos este fără comentarii și spații inutile pentru a respecta această limitare.
declare
  @cSubjekt char(40),
  @cImePriimek varchar(255),
  @cEmail varchar(255),
  @cVezniDok varchar(20),
  @dDatumVal datetime,
  @dDatumDok datetime,
  @mDebet money,
  @mKredit money,
  @mSaldo money,
  @mGrandTotal money,
  @cNaslovEmaila varchar(255),
  @cSeznam varchar(8000)
declare crDolzniki cursor local fast_forward for
  select RTrim(C.IME)+' '+RTrim(C.PRIIMEK) as IMEPRIIMEK,C.SUBJEKT, A.TEL
  from CONTACTS C
  join CONTADDRESS A on C.SUBJEKT = A.SUBJEKT and C.POZ = A.POZ and TIP = 'E'
  where C.VLOGA like 'Manager financiar'

open crDolzniki
fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
while @@fetch_status = 0
  begin 
  declare crOdprte cursor local fast_forward for
  select 
  P.VEZNIDOK,
  (select top 1 X.DATUMVAL  
 from TEMEPOZ X 
 where X.SUBJEKT = P.SUBJEKT
 and X.KONTO = P.KONTO 
 and X.VEZNIDOK = P.VEZNIDOK 
 and X.DEBET <> 0  
 order by X.DATUMVAL) as DATUMVAL,
  (select top 1 X.DATUMDOK  
 from TEMEPOZ X 
 where X.SUBJEKT = P.SUBJEKT
 and X.KONTO = P.KONTO 
 and X.VEZNIDOK = P.VEZNIDOK 
 and X.DEBET <> 0  
 order by X.DATUMVAL) as DATUMDOK,
  Sum(P.DEBET) as DEBET, 
  Sum(P.KREDIT) as KREDIT, 
  Sum(P.DEBET -P.KREDIT) as Saldo
  from TEME G
  join TEMEPOZ P on P.KLJUC = G.KLJUC 
  and P.KONTO = '1200' 
  and (P.DATUMVAL <= GetDate())
  where P.SUBJEKT = @cSubjekt
  group by P.VEZNIDOK, P.SUBJEKT, P.KONTO
  having (Sum(P.DEBET - P.KREDIT) <> 0)
  order by P.VEZNIDOK  
  set @cSeznam = ''
  set @mGrandTotal = 0
  open crOdprte
  fetch next from crOdprte into @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
  while @@fetch_status = 0 
  begin
  set @cSeznam = @cSeznam + @cVezniDok + Convert(char(12),@dDatumVal,104) + Convert(char(12),@dDatumDok,104) 
 + Convert(char(17),@mDebet,1) + Convert(char(17),@mKredit,1) + Convert(char(17),@mSaldo,1) + Char(13) + Char(10)
  set @mGrandTotal = @mGrandTotal + @mSaldo
  fetch next from crOdprte into @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
  end
  close crOdprte
  deallocate crOdprte
  if @cSeznam <> ''
  begin
  set @cNaslovEmaila = 'Lista articolelor restante pentru ' + @cSubjekt + ' la data: ' + Convert(varchar(12),GetDate(),104)
  set @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = 'Document legat      Data limită  Data doc.              Debit           Credit            Sold' + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = @cSeznam + Char(13) + Char(10) + 'Total:.....................................................................' + Convert(char(19),@mGrandTotal,1)
  exec master.dbo.xp_sendmail
  @recipients = @cEmail, 
  @message = @cSeznam,
  @subject = @cNaslovEmaila
  end  
  fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
  end 
close crDolzniki
deallocate crDolzniki


 

Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!