Kujtimet me Email për Pranuesit e Mbetur

Kjo temë përmban udhëzime për krijimin e një pune që identifikon pranuesit e mbetur dhe dërgon kujtime me email menaxherëve financiarë të borxhlinjve.
Deklarimi i Variablave Globale
Së pari, deklaroni variablat globale:
deklaro
@cSubjekt char(40), -- ID e subjektit
@cImePriimek varchar(255), -- emri i plotë i menaxherit financiar
@cEmail varchar(255), -- adresa e emailit
@cVezniDok varchar(20), -- dokument i lidhur (numri i faturës)
@dDatumVal datetime, -- data e skadencës
@dDatumDok datetime, -- data e dokumentit
@mDebet money, -- shuma debit
@mKredit money, -- shuma kredit
@mSaldo money, -- bilanci
@mGrandTotal money, -- bilanci total i subjektit
@cNaslovEmaila varchar(255), -- subjekti i emailit
@cSeznam varchar(8000) -- lista e faturave të mbetura
Marrja e Menaxherëve Financiarë
Kodi i mëposhtëm hap një rekordset që përmban emrat, ID-të e subjektit dhe adresat e emailit të menaxherëve financiarë.
Për shkak se emailet dërgohen vetëm tek kontaktet me adresë valide emaili, një JOIN standard është i mjaftueshëm dhe nuk ka nevojë të përdoret një LEFT JOIN ose RIGHT JOIN.
-- Përgatit rekordset me të gjithë menaxherët financiarë
deklaro crDolzniki cursor lokal fast_forward për
zgjidh RTrim(C.IME)+' '+RTrim(C.PRIIMEK) si IMEPRIIMEK,C.SUBJEKT, A.TEL
nga CONTACTS C
bashkangjit CONTADDRESS A në C.SUBJEKT = A.SUBJEKT dhe C.POZ = A.POZ dhe TIP = 'E'
ku C.VLOGA si 'Menaxher financiar'
hap crDolzniki
merr të ardhmen nga crDolzniki në @cImePriimek, @cSubjekt, @cEmail
ndërsa @@fetch_status = 0
fillo -- kaloni nëpër të gjithë menaxherët financiarë
-- !!! FUT DIÇKA PËRDORE KËTU !!! --
merr të ardhmen nga crDolzniki në @cImePriimek, @cSubjekt, @cEmail
mbaro
mbyll crDolzniki
çlironi crDolzniki
Marrja e Faturave të Mbetura
Kërkimi i mëposhtëm merr të gjitha faturat e mbetura për një subjekt specifik dhe i ruan në një rekordset.
-- Krijo rekordset me artikujt e mbetur për çdo subjekt
deklaro crOdprte cursor lokal fast_forward për
zgjidh
P.VEZNIDOK,
(zgjidh top 1 X.DATUMVAL
nga TEMEPOZ X
ku X.SUBJEKT = P.SUBJEKT
dhe X.KONTO = P.KONTO
dhe X.VEZNIDOK = P.VEZNIDOK
dhe X.DEBET <> 0
rendit sipas X.DATUMVAL) si DATUMVAL,
(zgjidh top 1 X.DATUMDOK
nga TEMEPOZ X
ku X.SUBJEKT = P.SUBJEKT
dhe X.KONTO = P.KONTO
dhe X.VEZNIDOK = P.VEZNIDOK
dhe X.DEBET <> 0
rendit sipas X.DATUMVAL) si DATUMDOK,
Sum(P.DEBET) si DEBET,
Sum(P.KREDIT) si KREDIT,
Sum(P.DEBET - P.KREDIT) si Saldo
nga TEME G
bashkangjit TEMEPOZ P në P.KLJUC = G.KLJUC
dhe P.KONTO = '1200'
dhe (P.DATUMVAL <= GetDate())
ku P.SUBJEKT = @cSubjekt
grupuar sipas P.VEZNIDOK, P.SUBJEKT, P.KONTO
duke pasur (Sum(P.DEBET - P.KREDIT) <> 0)
renditur sipas P.VEZNIDOK
Ndërtimi i Mesazhit të Emailit
Përdorni kodin e mëposhtëm për të transferuar të dhënat nga rekordseti në trupin e mesazhit të emailit (@cSeznam).
vendos @cSeznam = ''
vendos @mGrandTotal = 0
hap crOdprte
merr të ardhmen nga crOdprte në @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
ndërsa @@fetch_status = 0
fillo
vendos @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)
vendos @mGrandTotal = @mGrandTotal + @mSaldo
merr të ardhmen nga crOdprte në @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
mbaro
mbyll crOdprte
çlironi crOdprte
Dërgimi i Emailit
Kontrolloni nëse lista përmban ndonjë artikull të mbetur dhe dërgoni mesazhin e emailit.
nëse @cSeznam <> ''
fillo
vendos @cNaslovEmaila = 'Lista e artikujve të mbetur për ' + @cSubjekt + ' deri më: ' + Convert(varchar(12),GetDate(),104)
vendos @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = 'Dokumenti i lidhur Data e skadencës Data e dokumentit Debit Kredit Bilanci' + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = @cSeznam + Char(13) + Char(10) + 'Totali:.....................................................................' + Convert(char(19),@mGrandTotal,1)
-- Dërgo email
ekzekuto master.dbo.xp_sendmail
@recipients = @cEmail,
@message = @cSeznam,
@subject = @cNaslovEmaila
mbaro
Planifikimi i Punës
Shtoni pyetjen e plotë në një Punë të SQL Server, përcaktoni një orar ekzekutimi, dhe procesi është gati për të funksionuar automatikisht.
Shënim: Një hap i Punës së SQL Server mund të përmbajë maksimumi 7,800 karaktere.
Pyetja më poshtë jepet pa komente dhe hapësira të panevojshme për të përmbushur këtë kufizim.
deklaro
@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)
deklaro crDolzniki cursor lokal fast_forward për
zgjidh RTrim(C.IME)+' '+RTrim(C.PRIIMEK) si IMEPRIIMEK,C.SUBJEKT, A.TEL
nga CONTACTS C
bashkangjit CONTADDRESS A në C.SUBJEKT = A.SUBJEKT dhe C.POZ = A.POZ dhe TIP = 'E'
ku C.VLOGA si 'Drejtor Financiar'
hap crDolzniki
merr të ardhmen nga crDolzniki në @cImePriimek, @cSubjekt, @cEmail
ndërsa @@fetch_status = 0
fillo
deklaro crOdprte cursor lokal fast_forward për
zgjidh
P.VEZNIDOK,
(zgjidh top 1 X.DATUMVAL
nga TEMEPOZ X
ku X.SUBJEKT = P.SUBJEKT
dhe X.KONTO = P.KONTO
dhe X.VEZNIDOK = P.VEZNIDOK
dhe X.DEBET <> 0
rendit sipas X.DATUMVAL) si DATUMVAL,
(zgjidh top 1 X.DATUMDOK
nga TEMEPOZ X
ku X.SUBJEKT = P.SUBJEKT
dhe X.KONTO = P.KONTO
dhe X.VEZNIDOK = P.VEZNIDOK
dhe X.DEBET <> 0
rendit sipas X.DATUMVAL) si DATUMDOK,
Sum(P.DEBET) si DEBET,
Sum(P.KREDIT) si KREDIT,
Sum(P.DEBET - P.KREDIT) si Saldo
nga TEME G
bashkangjit TEMEPOZ P në P.KLJUC = G.KLJUC
dhe P.KONTO = '1200'
dhe (P.DATUMVAL <= GetDate())
ku P.SUBJEKT = @cSubjekt
grupuar sipas P.VEZNIDOK, P.SUBJEKT, P.KONTO
duke pasur (Sum(P.DEBET - P.KREDIT) <> 0)
renditur sipas P.VEZNIDOK
vendos @cSeznam = ''
vendos @mGrandTotal = 0
hap crOdprte
merr të ardhmen nga crOdprte në @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
ndërsa @@fetch_status = 0
fillo
vendos @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)
vendos @mGrandTotal = @mGrandTotal + @mSaldo
merr të ardhmen nga crOdprte në @cVezniDok,@dDatumVal,@dDatumDok,@mDebet,@mKredit,@mSaldo
mbaro
mbyll crOdprte
çlironi crOdprte
nëse @cSeznam <> ''
fillo
vendos @cNaslovEmaila = 'Lista e artikujve të mbetur për ' + @cSubjekt + ' deri më: ' + Convert(varchar(12),GetDate(),104)
vendos @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = 'Dokumenti i lidhur Data e skadencës Data e dokumentit Debit Kredit Bilanci' + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam
vendos @cSeznam = @cSeznam + Char(13) + Char(10) + 'Totali:.....................................................................' + Convert(char(19),@mGrandTotal,1)
ekzekuto master.dbo.xp_sendmail
@recipients = @cEmail,
@message = @cSeznam,
@subject = @cNaslovEmaila
mbaro
merr të ardhmen nga crDolzniki në @cImePriimek, @cSubjekt, @cEmail
mbaro
mbyll crDolzniki
çlironi crDolzniki