Дата закрытия смены — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Новая страница: «==Что это?== Дата закрытия смены это дата(день), в который по смене был снят Z-отчет. Обновле…»)
 
(Добавление нового триггера во всех точках (кроме сервера))
Строка 31: Строка 31:
 
   if (new.doc_type =13 and new.status = 1) Then
 
   if (new.doc_type =13 and new.status = 1) Then
 
   update docs set datez = cast(new.commitdate as dm_date)
 
   update docs set datez = cast(new.commitdate as dm_date)
     where doc_type in (3,9) and status=1 and vshift=new.vshift and device_num=new.device_num;
+
     where doc_type in (3,9) and status=1 and vshift=new.vshift and device_num=new.device_num and
 +
          commitdate between (new.commitdate-10) and (new.commitdate+10);  
  
 
   --При обновлении чека с пустым datez
 
   --При обновлении чека с пустым datez
Строка 41: Строка 42:
 
     Else
 
     Else
 
       select first 1 cast(commitdate as dm_date) from docs
 
       select first 1 cast(commitdate as dm_date) from docs
         where doc_type =13 and status = 1 and vshift=new.vshift and device_num=new.device_num
+
         where doc_type =13 and status = 1 and vshift=new.vshift and device_num=new.device_num and
 +
              commitdate between (new.commitdate-10) and (new.commitdate+10)
 
       into new.datez;
 
       into new.datez;
 
   End
 
   End
Строка 50: Строка 52:
  
 
SET TERM ; ^
 
SET TERM ; ^
 +
 
  </nowiki>
 
  </nowiki>

Версия 16:48, 5 декабря 2015

Что это?

Дата закрытия смены это дата(день), в который по смене был снят Z-отчет. Обновление структуры необходимо для ускорения построения отчетов

Отключение старого механизма на сервере синхронизации (при наличии)

1)при наличии в планировщике задания по обновлению DATEZ в DOCS, необходимо отключить его;
2)убрать поле DATEZ из исключений (declare.php), если оно там есть;

Добавление нового поля(при его отсутствии)

необходимо добавить во всех точках и на сервере поле DATEZ в таблицу DOCS

	ALTER TABLE DOCS ADD DATEZ DM_DATE;
 

Добавление нового триггера во всех точках (кроме сервера)

/******************************************************************************/
/***      Following SET SQL DIALECT is just for the Database Comparer       ***/
/******************************************************************************/
SET SQL DIALECT 3;


SET TERM ^ ;



CREATE OR ALTER TRIGGER DOCS_BU0_DATEZ FOR DOCS
ACTIVE BEFORE INSERT OR UPDATE POSITION 9999
AS
begin
  --При закрытии смены
  if (new.doc_type =13 and new.status = 1) Then
   update docs set datez = cast(new.commitdate as dm_date)
    where doc_type in (3,9) and status=1 and vshift=new.vshift and device_num=new.device_num and
          commitdate between (new.commitdate-10) and (new.commitdate+10); 

  --При обновлении чека с пустым datez
  if (new.doc_type in (3,9) and new.status = 1 and new.datez is null) Then
  Begin
   --При отбитии чека с нулевой суммой (без ККМ), дату закрытия смены ставим сразу
    if  (abs(new.summa) < 0.0001) Then
        new.datez = cast(new.commitdate as dm_date);
    Else
       select first 1 cast(commitdate as dm_date) from docs
        where doc_type =13 and status = 1 and vshift=new.vshift and device_num=new.device_num and
              commitdate between (new.commitdate-10) and (new.commitdate+10)
       into new.datez;
  End

end
^


SET TERM ; ^