ЕГАИС постановка на баланс — различия между версиями
Материал из wiki.standart-n.ru
BeTePoK (обсуждение | вклад) (Новая страница: «=Скрипты для постановки на баланс= ==Установить процедуру PR_ALTER_VIEW== Изменения представл…») |
Agk (обсуждение | вклад) (→Выполнить скрипт) |
||
(не показано 9 промежуточных версии 2 участников) | |||
Строка 4: | Строка 4: | ||
[[Изменения представления| '''PR_ALTER_VIEW''']] | [[Изменения представления| '''PR_ALTER_VIEW''']] | ||
− | ==Заменить версию Менеджера== | + | ==Заменить и запустить версию Менеджера== |
+ | Менеджер выполнит некоторые скрипты уже в него заложенные<br> | ||
Для скриптов ниже актуальная версия Менеджера ManagerXP2_272_78 и выше | Для скриптов ниже актуальная версия Менеджера ManagerXP2_272_78 и выше | ||
Строка 11: | Строка 12: | ||
SET TERM ^ ; | SET TERM ^ ; | ||
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('PARTS','EGAIS_REGID, EGAIS_QUANT, EGAIS_ALCCODE','PARTS_IDX_EGAIS_1','index');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('PARTS','EGAIS_REGID, EGAIS_BREGID, EGAIS_ALCCODE, EGAIS_QUANT','PARTS_IDX_EGAIS_2','index');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_DETAIL','DOC_DETAIL_ID','EGAIS_DETAIL_IDX1','index');^ |
--Зкомментированные ниже строки - наброски для гурманов для тогочтобы внести в базы ТМСки по списанию пива и созданию документа перемещения в торговый зал | --Зкомментированные ниже строки - наброски для гурманов для тогочтобы внести в базы ТМСки по списанию пива и созданию документа перемещения в торговый зал | ||
--EXECUTE BLOCK AS BEGIN | --EXECUTE BLOCK AS BEGIN | ||
− | --if ((select 1 from groups where caption = | + | --if ((select 1 from groups where caption = 'Списание пива') is null) then |
− | --execute statement | + | --execute statement 'INSERT INTO GROUPS (PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES (-220, ''Списание пива'', --''TMS'', 0, ''27-SEP-2016 16:24:48'', 0, NULL, -1, NULL, 16777215, NULL, 0, NULL);'; |
--END;^ | --END;^ | ||
--EXECUTE BLOCK AS BEGIN | --EXECUTE BLOCK AS BEGIN | ||
− | --if ((select 1 from groups where caption = | + | --if ((select 1 from groups where caption = 'Списание пива') is null) then |
− | --execute statement | + | --execute statement 'update groups gp set gp.data = |
-- (select g.tmp_blob1 from G$PROFILES g where g.id = 1) | -- (select g.tmp_blob1 from G$PROFILES g where g.id = 1) | ||
− | -- where gp.caption = | + | -- where gp.caption = ''Списание пива'' and (select g.tmp_blob1 from G$PROFILES g where g.id = 1) is not null;^'; |
--END;^ | --END;^ | ||
--EXECUTE BLOCK AS BEGIN | --EXECUTE BLOCK AS BEGIN | ||
− | --if ((select 1 from groups where caption = | + | --if ((select 1 from groups where caption = 'Переместить в торговый зал') is null) then |
− | --execute statement | + | --execute statement ' |
− | --INSERT INTO GROUPS (PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES ( -221, 'Переместить в торговый зал', | + | --INSERT INTO GROUPS (PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES ( -221, 'Переместить в торговый зал', ', 0, '8-OCT-2016 12:04:29.200', 0, NULL, -1, NULL, 16777215, NULL, 0, NULL);'; |
--END;^ | --END;^ | ||
--EXECUTE BLOCK AS BEGIN | --EXECUTE BLOCK AS BEGIN | ||
− | --if ((select 1 from groups where caption = | + | --if ((select 1 from groups where caption = 'Переместить в торговый зал') is null) then |
− | --execute statement | + | --execute statement 'update groups gp set gp.data = |
-- (select g.tmp_blob1 from G$PROFILES g where g.id = 3) | -- (select g.tmp_blob1 from G$PROFILES g where g.id = 3) | ||
− | -- where gp.caption = | + | -- where gp.caption = ''Переместить в торговый зал'' and (select g.tmp_blob1 from G$PROFILES g where g.id = 3) is not null;^'; |
--END;^ | --END;^ | ||
--поначалу не совсем понятно создавались наименования документов, тут правка на более понятные | --поначалу не совсем понятно создавались наименования документов, тут правка на более понятные | ||
− | update doc_types set caption= | + | update doc_types set caption='ЕГАИС Списание со склада' where id = 42;^ |
− | update doc_types set caption= | + | update doc_types set caption='ЕГАИС Списание из торгового зала' where id = 43;^ |
− | update doc_types set caption= | + | update doc_types set caption='ЕГАИС Перемещение со склада в торговый зал' where id = 44;^ |
− | update doc_types set caption= | + | update doc_types set caption='ЕГАИС Перемещение из торгового зала на склад' where id = 45;^ |
− | update doc_types set caption= | + | update doc_types set caption='ЕГАИС Акт постановки на баланс' where id = 46;^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_SKLAD_QUANT','(select esk.quantity from egais_sklad esk where esk.informbregid = p.egais_bregid)','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_SHOP_QUANT','(select esh.egais_quant from egais_shop esh where esh.alccode = p.egais_alccode and esh.producer_id = p.egais_producer_id)','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_REGID','p.egais_regid','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_BREGID','p.egais_bregid','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','BOTTLINGDATE','BOTTLINGDATE','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_BARCODE','EGAIS_BARCODE','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_FIXNUMBER','EGAIS_FIXNUMBER','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_FIXDATE','EGAIS_FIXDATE','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_REGID','p.egais_regid','VIEW');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_BREGID','p.egais_bregid','VIEW');^ |
--в начальных вариантах был неправилный домен для акцизы, после применения этого скрипта есть вероятность что нужно будет ждатьбэкап-ресторе, чтобы изменения применились | --в начальных вариантах был неправилный домен для акцизы, после применения этого скрипта есть вероятность что нужно будет ждатьбэкап-ресторе, чтобы изменения применились | ||
update RDB$RELATION_FIELDS set | update RDB$RELATION_FIELDS set | ||
− | RDB$FIELD_SOURCE = | + | RDB$FIELD_SOURCE = 'DM_BLOBTEXT' |
− | where (RDB$FIELD_NAME = | + | where (RDB$FIELD_NAME = 'EGAIS_BARCODE') and |
− | (RDB$RELATION_NAME = | + | (RDB$RELATION_NAME = 'PARTS');^ |
update RDB$RELATION_FIELDS set | update RDB$RELATION_FIELDS set | ||
− | RDB$FIELD_SOURCE = | + | RDB$FIELD_SOURCE = 'DM_BLOBTEXT' |
− | where (RDB$FIELD_NAME = | + | where (RDB$FIELD_NAME = 'EGAIS_BARCODE') and |
− | (RDB$RELATION_NAME = | + | (RDB$RELATION_NAME = 'DOC_DETAIL_ACTIVE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('','','GEN_EGAIS_SKLAD_ID','generator');^ |
EXECUTE BLOCK AS BEGIN | EXECUTE BLOCK AS BEGIN | ||
− | if (not exists(select 1 from rdb$relations where rdb$relation_name = | + | if (not exists(select 1 from rdb$relations where rdb$relation_name = 'EGAIS_SKLAD')) then |
− | execute statement | + | execute statement 'CREATE TABLE EGAIS_SKLAD(ID DM_ID NOT NULL);'; |
END^ | END^ | ||
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','QUANTITY','DM_DOUBLE','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMAREGID','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMBREGID','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','FULLNAME','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','ALCCODE','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','CAPACITY','DM_DOUBLE','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','ALCVOLUME','DM_DOUBLE','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCTVCODE','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_CLIENTREGID','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_INN','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_KPP','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_FULLNAME','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_SHORTNAME','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_COUNTRY','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_REGIONCODE','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_DESCRIPTION','DM_TEXT1024','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INSERTDT',' DM_DATETIME','TABLE');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMAREGID','EGAIS_SKLAD_IDX1','index');^ |
− | execute procedure PR_ALTER_VIEW( | + | execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMBREGID','EGAIS_SKLAD_IDX2','index');^ |
CREATE OR ALTER TRIGGER EGAIS_SKLAD_BI FOR EGAIS_SKLAD | CREATE OR ALTER TRIGGER EGAIS_SKLAD_BI FOR EGAIS_SKLAD | ||
Строка 107: | Строка 108: | ||
new.id = gen_id(gen_egais_sklad_id,1); | new.id = gen_id(gen_egais_sklad_id,1); | ||
if (new.insertdt is null) then | if (new.insertdt is null) then | ||
− | new.insertdt = | + | new.insertdt = 'now'; |
end | end | ||
^ | ^ | ||
--изменения типа редактирования штрихкода на тип memo, в большинстве случаев есть в настройках менеджера, иногда просто скрыто | --изменения типа редактирования штрихкода на тип memo, в большинстве случаев есть в настройках менеджера, иногда просто скрыто | ||
− | update params set param_value = | + | update params set param_value = ' 1' where PARAM_CAPTION = 'BCODE_EDITOR';^ |
Строка 126: | Строка 127: | ||
DECLARE VARIABLE UNITTYPE DM_TEXT; | DECLARE VARIABLE UNITTYPE DM_TEXT; | ||
DECLARE VARIABLE ALCVOLUME DM_TEXT; | DECLARE VARIABLE ALCVOLUME DM_TEXT; | ||
− | DECLARE VARIABLE PRODUCTVCODE | + | DECLARE VARIABLE PRODUCTVCODE DM_TEXT; |
+ | DECLARE VARIABLE DOC_TYPE DM_ID; | ||
+ | |||
begin | begin | ||
/* учёт егаис остатков в реальном времени */ | /* учёт егаис остатков в реальном времени */ | ||
+ | select doc_type from docs where id = new.doc_id into DOC_TYPE; | ||
select first 1 MMBSH,SNAME from warebase where part_id = new.part_id into :MMBSH,:SNAME; | select first 1 MMBSH,SNAME from warebase where part_id = new.part_id into :MMBSH,:SNAME; | ||
Строка 136: | Строка 140: | ||
if (((MMBSH containing '-21={') or (MMBSH containing '-20={')) and ((PRODUCER_ID is not null) and (ALCCODE is not null))) then | if (((MMBSH containing '-21={') or (MMBSH containing '-20={')) and ((PRODUCER_ID is not null) and (ALCCODE is not null))) then | ||
begin | begin | ||
+ | --работа только со складом | ||
+ | if (:DOC_TYPE in (40,41,42,46)) then | ||
+ | begin | ||
− | select EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; | + | select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; |
+ | |||
+ | if (QUANT is null) then | ||
+ | begin | ||
+ | insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) | ||
+ | values (new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); | ||
+ | end | ||
+ | else | ||
+ | update EGAIS_SKLAD es set es.QUANTITY = :QUANT+new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; | ||
+ | end | ||
+ | |||
+ | --работа только со торговым залом | ||
+ | if (:DOC_TYPE in (43,47)) then | ||
+ | begin | ||
+ | |||
+ | select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; | ||
if (QUANT is null) then | if (QUANT is null) then | ||
begin | begin | ||
− | + | insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) | |
− | + | values (new.part_id, :SNAME, new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); | |
end | end | ||
else | else | ||
update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT+new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; | update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT+new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; | ||
+ | end | ||
+ | |||
+ | --перемещение со склада в торговый зал | ||
+ | if (:DOC_TYPE in (44)) then | ||
+ | begin | ||
+ | select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; | ||
+ | |||
+ | if (QUANT is null) then | ||
+ | begin | ||
+ | insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) | ||
+ | values (-new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); | ||
+ | end | ||
+ | else | ||
+ | update EGAIS_SKLAD es set es.QUANTITY = :QUANT-new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; | ||
+ | |||
+ | select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; | ||
+ | |||
+ | if (QUANT is null) then | ||
+ | begin | ||
+ | insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) | ||
+ | values (new.part_id, :SNAME, new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); | ||
+ | end | ||
+ | else | ||
+ | update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT+new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; | ||
+ | |||
+ | end | ||
+ | |||
+ | --перемещение из торгового зала на склад | ||
+ | if (:DOC_TYPE in (45)) then | ||
+ | begin | ||
+ | |||
+ | select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; | ||
+ | |||
+ | if (QUANT is null) then | ||
+ | begin | ||
+ | insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) | ||
+ | values (new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); | ||
+ | end | ||
+ | else | ||
+ | update EGAIS_SKLAD es set es.QUANTITY = :QUANT+new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; | ||
+ | |||
+ | select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; | ||
+ | |||
+ | if (QUANT is null) then | ||
+ | begin | ||
+ | insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) | ||
+ | values (new.part_id, :SNAME, -new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); | ||
+ | end | ||
+ | else | ||
+ | update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT-new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; | ||
+ | end | ||
end | end | ||
Строка 158: | Строка 231: | ||
==изменить триггер DOC_DETAIL_ACTIVE_BI== | ==изменить триггер DOC_DETAIL_ACTIVE_BI== | ||
− | где берутся данные из таблицы parts, добавить чтобы заполнялось поле EGAIS_PRODUCER_ID | + | в той части триггера, где берутся данные из таблицы parts, добавить чтобы заполнялось поле EGAIS_PRODUCER_ID |
+ | |||
+ | ==Инструкции по пользованию== | ||
+ | [[Постановка на баланс ЕГАИС | Инструкции по пользованию]] |
Текущая версия на 18:49, 26 ноября 2018
Содержание
Скрипты для постановки на баланс
Установить процедуру PR_ALTER_VIEW
Заменить и запустить версию Менеджера
Менеджер выполнит некоторые скрипты уже в него заложенные
Для скриптов ниже актуальная версия Менеджера ManagerXP2_272_78 и выше
Выполнить скрипт
SET TERM ^ ; execute procedure PR_ALTER_VIEW('PARTS','EGAIS_REGID, EGAIS_QUANT, EGAIS_ALCCODE','PARTS_IDX_EGAIS_1','index');^ execute procedure PR_ALTER_VIEW('PARTS','EGAIS_REGID, EGAIS_BREGID, EGAIS_ALCCODE, EGAIS_QUANT','PARTS_IDX_EGAIS_2','index');^ execute procedure PR_ALTER_VIEW('EGAIS_DETAIL','DOC_DETAIL_ID','EGAIS_DETAIL_IDX1','index');^ --Зкомментированные ниже строки - наброски для гурманов для тогочтобы внести в базы ТМСки по списанию пива и созданию документа перемещения в торговый зал --EXECUTE BLOCK AS BEGIN --if ((select 1 from groups where caption = 'Списание пива') is null) then --execute statement 'INSERT INTO GROUPS (PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES (-220, ''Списание пива'', --''TMS'', 0, ''27-SEP-2016 16:24:48'', 0, NULL, -1, NULL, 16777215, NULL, 0, NULL);'; --END;^ --EXECUTE BLOCK AS BEGIN --if ((select 1 from groups where caption = 'Списание пива') is null) then --execute statement 'update groups gp set gp.data = -- (select g.tmp_blob1 from G$PROFILES g where g.id = 1) -- where gp.caption = ''Списание пива'' and (select g.tmp_blob1 from G$PROFILES g where g.id = 1) is not null;^'; --END;^ --EXECUTE BLOCK AS BEGIN --if ((select 1 from groups where caption = 'Переместить в торговый зал') is null) then --execute statement ' --INSERT INTO GROUPS (PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES ( -221, 'Переместить в торговый зал', ', 0, '8-OCT-2016 12:04:29.200', 0, NULL, -1, NULL, 16777215, NULL, 0, NULL);'; --END;^ --EXECUTE BLOCK AS BEGIN --if ((select 1 from groups where caption = 'Переместить в торговый зал') is null) then --execute statement 'update groups gp set gp.data = -- (select g.tmp_blob1 from G$PROFILES g where g.id = 3) -- where gp.caption = ''Переместить в торговый зал'' and (select g.tmp_blob1 from G$PROFILES g where g.id = 3) is not null;^'; --END;^ --поначалу не совсем понятно создавались наименования документов, тут правка на более понятные update doc_types set caption='ЕГАИС Списание со склада' where id = 42;^ update doc_types set caption='ЕГАИС Списание из торгового зала' where id = 43;^ update doc_types set caption='ЕГАИС Перемещение со склада в торговый зал' where id = 44;^ update doc_types set caption='ЕГАИС Перемещение из торгового зала на склад' where id = 45;^ update doc_types set caption='ЕГАИС Акт постановки на баланс' where id = 46;^ execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_SKLAD_QUANT','(select esk.quantity from egais_sklad esk where esk.informbregid = p.egais_bregid)','VIEW');^ execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_SHOP_QUANT','(select esh.egais_quant from egais_shop esh where esh.alccode = p.egais_alccode and esh.producer_id = p.egais_producer_id)','VIEW');^ execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_REGID','p.egais_regid','VIEW');^ execute procedure PR_ALTER_VIEW('VW_WAREBASE','EGAIS_BREGID','p.egais_bregid','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','BOTTLINGDATE','BOTTLINGDATE','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_BARCODE','EGAIS_BARCODE','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_FIXNUMBER','EGAIS_FIXNUMBER','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_FIXDATE','EGAIS_FIXDATE','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_REGID','p.egais_regid','VIEW');^ execute procedure PR_ALTER_VIEW('VW_DOC_DETAIL_ACTIVE','EGAIS_BREGID','p.egais_bregid','VIEW');^ --в начальных вариантах был неправилный домен для акцизы, после применения этого скрипта есть вероятность что нужно будет ждатьбэкап-ресторе, чтобы изменения применились update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'DM_BLOBTEXT' where (RDB$FIELD_NAME = 'EGAIS_BARCODE') and (RDB$RELATION_NAME = 'PARTS');^ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'DM_BLOBTEXT' where (RDB$FIELD_NAME = 'EGAIS_BARCODE') and (RDB$RELATION_NAME = 'DOC_DETAIL_ACTIVE');^ execute procedure PR_ALTER_VIEW('','','GEN_EGAIS_SKLAD_ID','generator');^ EXECUTE BLOCK AS BEGIN if (not exists(select 1 from rdb$relations where rdb$relation_name = 'EGAIS_SKLAD')) then execute statement 'CREATE TABLE EGAIS_SKLAD(ID DM_ID NOT NULL);'; END^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','QUANTITY','DM_DOUBLE','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMAREGID','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMBREGID','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','FULLNAME','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','ALCCODE','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','CAPACITY','DM_DOUBLE','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','ALCVOLUME','DM_DOUBLE','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCTVCODE','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_CLIENTREGID','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_INN','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_KPP','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_FULLNAME','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_SHORTNAME','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_COUNTRY','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_REGIONCODE','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','PRODUCER_DESCRIPTION','DM_TEXT1024','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INSERTDT',' DM_DATETIME','TABLE');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMAREGID','EGAIS_SKLAD_IDX1','index');^ execute procedure PR_ALTER_VIEW('EGAIS_SKLAD','INFORMBREGID','EGAIS_SKLAD_IDX2','index');^ CREATE OR ALTER TRIGGER EGAIS_SKLAD_BI FOR EGAIS_SKLAD ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_egais_sklad_id,1); if (new.insertdt is null) then new.insertdt = 'now'; end ^ --изменения типа редактирования штрихкода на тип memo, в большинстве случаев есть в настройках менеджера, иногда просто скрыто update params set param_value = ' 1' where PARAM_CAPTION = 'BCODE_EDITOR';^ --триггер слежения за актуальностью егаис остатков, в любом случае надо время от времени запрашивать их с егаиса CREATE OR ALTER TRIGGER DOC_DETAIL_AI1 FOR DOC_DETAIL ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE PRODUCER_ID DM_TEXT; DECLARE VARIABLE ALCCODE DM_TEXT1024; DECLARE VARIABLE QUANT DM_DOUBLE; DECLARE VARIABLE MMBSH DM_TEXT1024; DECLARE VARIABLE SNAME DM_TEXT; DECLARE VARIABLE UNITTYPE DM_TEXT; DECLARE VARIABLE ALCVOLUME DM_TEXT; DECLARE VARIABLE PRODUCTVCODE DM_TEXT; DECLARE VARIABLE DOC_TYPE DM_ID; begin /* учёт егаис остатков в реальном времени */ select doc_type from docs where id = new.doc_id into DOC_TYPE; select first 1 MMBSH,SNAME from warebase where part_id = new.part_id into :MMBSH,:SNAME; select EGAIS_PRODUCER_ID,EGAIS_ALCCODE,ALC_VOLUME,EGAIS_PRODUCT_VCODE from parts p where p.id = new.part_id into :PRODUCER_ID,:ALCCODE,:ALCVOLUME,:PRODUCTVCODE; if (((MMBSH containing '-21={') or (MMBSH containing '-20={')) and ((PRODUCER_ID is not null) and (ALCCODE is not null))) then begin --работа только со складом if (:DOC_TYPE in (40,41,42,46)) then begin select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) values (new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); end else update EGAIS_SKLAD es set es.QUANTITY = :QUANT+new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; end --работа только со торговым залом if (:DOC_TYPE in (43,47)) then begin select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) values (new.part_id, :SNAME, new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); end else update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT+new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; end --перемещение со склада в торговый зал if (:DOC_TYPE in (44)) then begin select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) values (-new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); end else update EGAIS_SKLAD es set es.QUANTITY = :QUANT-new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) values (new.part_id, :SNAME, new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); end else update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT+new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; end --перемещение из торгового зала на склад if (:DOC_TYPE in (45)) then begin select first 1 QUANTITY from EGAIS_SKLAD es where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SKLAD (QUANTITY,FULLNAME,ALCCODE,PRODUCER_CLIENTREGID,PRODUCTVCODE) values (new.quant,:SNAME,:ALCCODE,:PRODUCER_ID,:PRODUCTVCODE); end else update EGAIS_SKLAD es set es.QUANTITY = :QUANT+new.quant where es.PRODUCER_CLIENTREGID = :PRODUCER_ID and es.ALCCODE = :ALCCODE; select first 1 EGAIS_QUANT from EGAIS_SHOP es where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE into :QUANT; if (QUANT is null) then begin insert into EGAIS_SHOP (PART_ID,SNAME,EGAIS_QUANT,ALCCODE,UNITTYPE,ALCVOLUME,PRODUCTVCODE,PRODUCER_ID) values (new.part_id, :SNAME, -new.quant,:ALCCODE,:UNITTYPE,:ALCVOLUME,:PRODUCTVCODE,:PRODUCER_ID); end else update EGAIS_SHOP es set es.EGAIS_QUANT = :QUANT-new.quant where es.producer_id = :PRODUCER_ID and es.alccode = :ALCCODE; end end end ^ SET TERM ; ^
изменить триггер DOC_DETAIL_ACTIVE_BI
в той части триггера, где берутся данные из таблицы parts, добавить чтобы заполнялось поле EGAIS_PRODUCER_ID