Дата закрытия смены — различия между версиями
Материал из wiki.standart-n.ru
Agk (обсуждение | вклад) (→Добавление нового триггера во всех точках (кроме сервера)) |
Agk (обсуждение | вклад) |
||
| Строка 52: | Строка 52: | ||
ON DOCS (DATEZ); | 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;