Generare avertizări
Funcțiile customizate de tipul "Generare avertizări" sunt de două tipuri: STANDARD și INLINE și au fost create cu scopul de a eficientiza crearea și vizualizarea la nivel global a tuturor funcțiilor din spatele avertizărilor aferente fiecărui modul, dar și pentru o tratare unitară a codurilor funcțiilor utilizate în aplicație. După crearea unei funcții customizate de acest tip se va adăuga o avertizare în modulul de interes și se va asocia funcția definită.
Pentru funcțiile INLINE se va realiza un select care să returneze structura prezentată, iar pentru funcțiile STANDARD se va realiza un INSERT INTO @ret_table, respectând aceeași structură.
Parametri funcție customizată
Parametru | Tip | Descriere |
---|---|---|
@al_tabel | VARCHAR(6) | ANLUNA, parte din cheia primară a înregistrării asociate |
@pl_tabel | SMALLINT | PCT_LCR, parte din cheia primară a înregistrării asociate |
@id_tabel | NUMERIC(18,0) | ID, parte din cheia primară a înregistrării asociate |
@deletedJSON | NVARCHAR(MAX) | Utilizat pentru avertizările declanșate la modificarea documentului și conține înregistrările modificate, așa cum erau înaintea modificării |
Structura returnată de funcția customizată
Structură | Tip | Descriere |
---|---|---|
subiect | NVARCHAR(500) | Subiectul avertizării |
text | NVARCHAR(MAX) | Textul avertizării |
al_tabel | VARCHAR(6) | ANLUNA, parte din cheia primară a înregistrării asociate (OPȚIONAL) |
pl_tabel | SMALLINT | PCT_LCR, parte din cheia primară a înregistrării asociate (OPȚIONAL) |
id_tabel | NUMERIC(18,0) | ID, parte din cheia primară a înregistrării asociate (OPȚIONAL) |
nume_tabel | VARCHAR(50) | Denumirea tabelului înregistrării asociate (OPȚIONAL) |
dest_nexmsg | VARCHAR(MAX) | Lista de utilizatori ce vor primi avertizarea prin mesageria Nexus ERP (separate prin virgulă, câmp OPȚIONAL) |
dest_mailto | VARCHAR(MAX) | Lista de adrese e-mail către care se va trimite avertizarea (separate prin virgulă, câmp OPȚIONAL) |
dest_mailcc | VARCHAR(MAX) | Lista de adrese e-mail către care se va trimite avertizarea (separate prin virgulă, câmp OPȚIONAL) |
dest_mailbcc | VARCHAR(MAX) | Lista de adrese e-mail către care se va trimite avertizarea (separate prin virgulă, câmp OPȚIONAL) |
dest_sms | VARCHAR(MAX) | Lista de numere de telefon către care se va trimite avertizarea prin SMS (separate prin virgulă, câmp OPȚIONAL) |
dest_whatsapp | VARCHAR(MAX) | Lista de numere de telefon către care se va trimite avertizarea prin WhatsApp (separate prin virgulă, câmp OPȚIONAL) |
Exemplu de funcție customizată STANDARD pentru generarea avertizărilor: Încasări cu depășire plafon, pe zi, 5000 lei per client pers. juridice și 10.000 pentru pers. fizice
Pentru funcția INLINE nu se va insera în tabela @ret_table.
DECLARE @pl_client [pl], @id_client [id], @data_doc [data_doc], @suma [suma], @cont_casa [conturi], @pers_fiz BIT
SELECT @pl_client = pl_cor, @id_client = id_cor, @data_doc = data_doc, @cont_casa = cont_5, @pers_fiz = p.persfiz
FROM cal c
INNER JOIN parteneri p ON c.pl_cor = p.pct_lcr AND c.id_cor = p.id
WHERE c.anluna = @al_tabel AND c.pct_lcr = @pl_tabel AND c.id = @id_tabel AND c.tip_cor = 'P' AND c.inc_plt = '+'
IF @data_doc IS NOT NULL
SELECT @suma = SUM(suma)
FROM cal
WHERE cont_5 = @cont_casa AND data_doc = @data_doc AND tip_cor = 'P' AND pl_cor = @pl_client AND id_cor = @id_client AND anulat = 0 AND valid=1 AND inc_plt = '+' AND LEFT(cont_cor, 3) IN ('411', '401', '542')
IF (ISNULL(@suma, 0) > IIF(@pers_fiz = 0, 5000, 10000))
INSERT INTO @ret_table ([text], al_tabel, pl_tabel, id_tabel, nume_tabel)
SELECT 'Atentie! ' + TRIM(UPPER(tip_doc)) + ': ' + TRIM(UPPER(nr_doc)) + '/'+ dbo.dtoc(data_doc) + ' are incasari care depasesc plafonul de ' + IIF(@pers_fiz = 1, '10000', '5000') + ' RON operare pe client pe zi!', anluna, pct_lcr, id, 'cal'
FROM cal_view
WHERE anluna = @al_tabel AND pct_lcr = @pl_tabel AND id = @id_tabel