PANTHEON™ Help

 Категории
 PANTHEON Help - Welcome
[Collapse]PANTHEON
 [Collapse]PANTHEON упатства
  [Expand]Guide for PANTHEON
  [Expand]Ръководство за PANTHEON Търговия
  [Expand]Ръководство за PANTHEON Vet
  [Expand]Ръководство за PANTHEON Фермерство
 [Collapse]PANTHEON потребителски ръководства
  [Collapse]Ръководство за потребителя за PANTHEON
   [Collapse]Започване
     Речник на термините
     Първи стъпки с PANTHEON
    [Expand]Използване на PANTHEON в Tecta, фикционална компания
    [Expand]Инструкции за осигуряване на съответствието на PANTHEON с SAS
    [Expand]Инсталация на ПАНТЕОН
    [Collapse]ПАНТЕОН Система
     [Expand]Данни на системата PANTHEON
     [Collapse]MS SQL Server
       Изтеглете и инсталирайте MS SQL Server
       Актуализиране на MS SQL Server до 2019 или 2022
       MS Management Studio - Изтеглете и инсталирайте
       Възстановяване на база данни на SQL сървър
       Добавяне на потребители на ниво сървър (AddUser_PAX)
       Инсталиране на SQL за външен достъп
       Инсталиране на PANTHEON клиенти
       Настройки на MS SQL сървър за по-голямо Pantheon™ око
       Смяна на реда на сортиране в SQL
      [Expand]MS SQL Server Сигурност
      [Expand]Полезни SQL заявки
       SQLExecute
      [Collapse]Работи в SQL Server
       [Expand]Обнови наличността
        Напомняния по имейл за просрочени вземания
        План за поддръжка на бази данни
     [Expand]Утилити на Microsoft Windows
     [Expand]Политика за сигурност
     [Expand]Администриране на бази данни
    [Expand]Основи на ПАНТЕОН
    [Expand]ПАНТЕОН Помощ
    [Expand]Материали и движение на стоки
    [Expand]Присвояване на идентификатори
    [Expand]Често задавани въпроси за Пантеон (Ч.З.В.)
    [Expand]Архив
   [Expand]Ръководство за потребителя за електронен бизнес
   [Expand]Настройки
   [Expand]Поръчки
   [Expand]Стоки
   [Expand]Производство
   [Expand]Услуга
   [Expand]Помощ
   [Expand]Персонал
   [Expand]Финансови
   [Expand]Анализи
  [Expand]Ръководство за потребителя за PANTHEON Retail
  [Expand]Ръководство за потребителя за PANTHEON Vet
  [Expand]Ръководство за потребителя за PANTHEON Farming
[Collapse]PANTHEON Web
 [Collapse]PANTHEON Web Guides
  [Expand]Ръководство за PANTHEON Web Light
  [Expand]Ръководство за PANTHEON Уеб Терминал
  [Expand]Ръководство за PANTHEON Web Legal
  [Expand]Архив на стари продукти
 [Collapse]PANTHEON Web User Manuals
  [Expand]Започване на PANTHEON Web
  [Expand]User Manual for PANTHEON Web Light
   Ръководство за потребителя за PANTHEON Web Terminal
  [Expand]Ръководство за потребителя за PANTHEON Web Legal
  [Expand]Архив на стари продукти
[Collapse]PANTHEON Гранула
 [Collapse]Ръководство за PANTHEON Гранули
  [Expand]Гранула за служители
  [Expand]Пътни заповеди Гранула
  [Expand]Гранула за документи и задачи
  [Expand]Гранула Табло
  [Expand]Гранула за B2B поръчки
  [Expand]Гранула за обслужване на клиенти
  [Expand]Инвентаризация на дълготрайни активи
  [Expand]Гранула за складови наличности
 [Collapse]PANTHEON Granules
   Започване
   Using PANTHEON Granules at Tecta, a fictional company
  [Expand]PANTHEON Granules and activation
  [Expand]PANTHEON Granule Work records
  [Expand]PANTHEON Granule Travel orders
  [Expand]PANTHEON Granule Documents and Tasks
  [Expand]PANTHEON Granule B2B orders
  [Expand]PANTHEON Granule Dashboard
  [Expand]Полеви сервизен гранул
   PANTHEON Granules - FAQ
  [Expand]Инвентаризация на дълготрайни активи
  [Expand]Инвентаризация на склада Гранула
   Архив
[Expand]Потребителски сайт

Load Time: 750,0076 ms
"
  2657 | 3054 | 444850 | AI translated
Label

Напомняния по имейл за просрочени вземания

Напомняния по имейл за просрочени вземания

Напомняния по имейл за просрочени вземания

Тази тема съдържа инструкции за работа, която намира просрочени вземания и изпраща имейли до финансовите мениджъри на длъжниците.

Първо, глобалните променливи се декларират:

declare
  @cSubjekt char(40),         -- ID на темата
  @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)       -- списък на просрочените фактури

Следният фрагмент код отваря набор от записи с имена, ID на темата и имейл адреси. Понеже имейлите се изпращат само на тези, които имат имейл адрес, нормален join е достатъчен, вместо right/left join:

-- подготвя набор от записи с всички финансови мениджъри
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 'Финансов мениджър'

open crDolzniki
fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
while @@fetch_status = 0
  begin  -- цикъл през всички финансови мениджъри
    -- !!! ВМЕСТИ НЯКОЕ ПОЛЕЗНО ТУК !!! --
    fetch next from crDolzniki into @cImePriimek, @cSubjekt, @cEmail
  end  

close crDolzniki
deallocate crDolzniki

 

Следният фрагмент намира всички просрочени фактури на дадена тема и ги поставя в набор от записи.

    -- за всеки създава набор от записи с просрочени елементи
    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    

Сега трябва да поставите данните от този набор от записи в тялото на имейл съобщението (променлива @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

Проверете дали списъкът не е празен и изпратете съобщението.

    if @cSeznam <> ''
      begin
        set @cNaslovEmaila = 'Списък на просрочените елементи за ' + @cSubjekt + ' към: ' + Convert(varchar(12),GetDate(),104)
        set @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = 'Свързан документ      Дата на падежа  Дата на документа              Дебит           Кредит            Баланс' + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam 
        set @cSeznam = @cSeznam + Char(13) + Char(10) + 'Общо:.....................................................................' + Convert(char(19),@mGrandTotal,1)
        -- изпрати имейл
        exec master.dbo.xp_sendmail
          @recipients = @cEmail, 
          @message = @cSeznam,
          @subject = @cNaslovEmaila
      end    

Добавете пълната заявка към SQL Server задачи, определете график и е готова за работа.

 

054318.gif Една стъпка от задача на SQL Server може да има максимум 7800 символа.
Заявката по-долу е без коментари и ненужни интервали, за да спази това ограничение.
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 'Финансов директор'

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 = 'Списък на просрочените елементи за ' + @cSubjekt + ' към: ' + Convert(varchar(12),GetDate(),104)
  set @cSeznam = '-----------------------------------------------------------------------------------------------' + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = 'Свързан документ      Дата на падежа  Дата на документа              Дебит           Кредит            Баланс' + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = @cNaslovEmaila + Char(13) + Char(10) + @cSeznam 
  set @cSeznam = @cSeznam + Char(13) + Char(10) + 'Общо:.....................................................................' + 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

 

Оценете темата
Темата беше ли ви полезна?
Коментар
Вашият коментар ще бъде видим и във форума!