Дата закрытия смены — различия между версиями
Материал из wiki.standart-n.ru
Agk (обсуждение | вклад) (Новая страница: «==Что это?== Дата закрытия смены это дата(день), в который по смене был снят Z-отчет. Обновле…») |
Agk (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 18: | Строка 18: | ||
/******************************************************************************/ | /******************************************************************************/ | ||
SET SQL DIALECT 3; | SET SQL DIALECT 3; | ||
− | |||
SET TERM ^ ; | SET TERM ^ ; | ||
− | |||
− | |||
CREATE OR ALTER TRIGGER DOCS_BU0_DATEZ FOR DOCS | CREATE OR ALTER TRIGGER DOCS_BU0_DATEZ FOR DOCS | ||
Строка 31: | Строка 28: | ||
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: | Строка 39: | ||
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 | ||
Строка 47: | Строка 46: | ||
end | end | ||
^ | ^ | ||
− | |||
SET TERM ; ^ | SET TERM ; ^ | ||
+ | |||
+ | CREATE INDEX DOCS_IDXDATEZ | ||
+ | ON DOCS (DATEZ); | ||
+ | |||
+ | </nowiki> | ||
+ | |||
+ | |||
+ | ==На точках выполнить (осторожно, большой трафик по синхронизации!!!)== | ||
+ | <nowiki> | ||
+ | update docs set id = id where doc_type = 13; | ||
</nowiki> | </nowiki> |
Текущая версия на 13:44, 15 февраля 2019
Содержание
Что это?
Дата закрытия смены это дата(день), в который по смене был снят 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 ; ^ CREATE INDEX DOCS_IDXDATEZ ON DOCS (DATEZ);
На точках выполнить (осторожно, большой трафик по синхронизации!!!)
update docs set id = id where doc_type = 13;