Установка товаров сопровождения (допродаж)

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск

Скрипт

/******************************************************************************/
/***               Generated by IBExpert 07.04.2016 17:27:11                ***/
/******************************************************************************/

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



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/


CREATE GENERATOR GEN_ACCOMPANY_ID;

CREATE TABLE ACCOMPANY (
    ID          DM_ID NOT NULL /* DM_ID = BIGINT */,
    UUID        DM_UUID /* DM_UUID = CHAR(36) NOT NULL */,
    NAME_ID     DM_UUID_NULL /* DM_UUID_NULL = CHAR(36) */,
    GROUP_ID    DM_ID_NULL /* DM_ID_NULL = BIGINT */,
    SNAME       DM_TEXT1024 /* DM_TEXT1024 = VARCHAR(1024) */,
    NAME_ID_A   DM_UUID_NULL /* DM_UUID_NULL = CHAR(36) */,
    GROUP_ID_A  DM_ID_NULL /* DM_ID_NULL = BIGINT */,
    SNAME_A     DM_TEXT1024 /* DM_TEXT1024 = VARCHAR(1024) */,
    INSERTDT    DM_DATETIME /* DM_DATETIME = TIMESTAMP */,
    COMMENTS    DM_BLOBTEXT /* DM_BLOBTEXT = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */
);




/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE ACCOMPANY ADD CONSTRAINT PK_ACCOMPANY PRIMARY KEY (ID);


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX ACCOMPANY_IDX1 ON ACCOMPANY (NAME_ID);
CREATE INDEX ACCOMPANY_IDX2 ON ACCOMPANY (GROUP_ID);
CREATE INDEX ACCOMPANY_IDX3 ON ACCOMPANY (NAME_ID_A);
CREATE INDEX ACCOMPANY_IDX4 ON ACCOMPANY (GROUP_ID_A);


/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/



/* Trigger: ACCOMPANY_BI */
CREATE OR ALTER TRIGGER ACCOMPANY_BI FOR ACCOMPANY
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_accompany_id,1);
  if (new.uuid is null) then
    new.uuid=UUID_TO_CHAR(GEN_UUID());

  new.insertdt='now';
end
^


SET TERM ; ^



/******************************************************************************/
/***                               Privileges                               ***/
/******************************************************************************/





/******************************************************************************/

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



/******************************************************************************/
/***                                 Views                                  ***/
/******************************************************************************/


/* View: VW_ACCOMPANY */
CREATE OR ALTER VIEW VW_ACCOMPANY(
    ID,
    UUID,
    NAME_ID,
    SNAME_ID,
    GROUP_ID,
    SGROUP_ID,
    SNAME,
    OVERALL_TYPE_A,
    OVERALL_ID_A,
    SOVERALL_ID_A,
    NAME_ID_A,
    SNAME_ID_A,
    GROUP_ID_A,
    SGROUP_ID_A,
    SNAME_A,
    INSERTDT,
    COMMENTS)
AS
select
ID,
UUID,
NAME_ID,
(select svalue from vals where id = a.name_id),
GROUP_ID,
(select caption from groups where id = a.group_id),
SNAME,
iif((a.name_id_a is not null),1,2),
iif((a.name_id_a is not null), a.name_id_a, a.group_id_a),
iif((a.name_id_a is not null), (select svalue from vals where id = a.name_id_a), (select caption from groups where id = a.group_id_a)),
NAME_ID_A,
(select svalue from vals where id = a.name_id_a),
GROUP_ID_A,
(select caption from groups where id = a.group_id_a),
SNAME_A,
INSERTDT,
COMMENTS
from accompany a
;




/******************************************************************************/
/***                               Privileges                               ***/
/******************************************************************************/






/******************************************************************************/

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



/******************************************************************************/
/***                                 Views                                  ***/
/******************************************************************************/


/* View: VW_ACCOMPANY1 */
CREATE OR ALTER VIEW VW_ACCOMPANY1(
    ACCOMP_TYPE,
    ACCOMP_ID,
    SACCOMP_ID)
AS
select
1,
name_id,
(select svalue from vals where id = a.name_id)
from accompany a where (cast(name_id as dm_uuid_null) <> '') and (cast(name_id as dm_uuid_null) <> '0')  group by name_id
union all
select
2,
group_id,
(select caption from groups where id = a2.group_id)
from accompany a2 where group_id <> 0 group by group_id
;




/******************************************************************************/
/***                               Privileges                               ***/
/******************************************************************************/




SET TERM ^ ;

create or alter procedure PR_ACCOMPANY (
    PART_ID_IN DM_ID)
returns (
    PART_ID DM_ID,
    ACCOMP_ID DM_ID)
as
declare variable G_TABLE DM_TEXT;
declare variable G_ID DM_ID;
begin
  /* достаем связки name_id - name_id_a, group_id - name_id_a */
  for select p.id, b.id as accomp_id
  from parts p
  join wares w on p.ware_id = w.id
  join (
    select a.id, a.name_id_a
    from parts p
    join wares w on p.ware_id = w.id
    join accompany a on a.name_id = w.name_id 
    where p.id = :part_id_in
    union
    select a.id, a.name_id_a
    from pr_partmmbshs(:part_id_in) pr
    join accompany a on a.group_id = pr.group_id
  ) b on w.name_id = b.name_id_a
  into :part_id, :accomp_id do suspend;

  /* достаем связки name_id - group_id_a, group_id - group_id_a */
  for select a.group_id_a, a.id as accomp_id
  from parts p
  join wares w on p.ware_id = w.id
  join accompany a on w.name_id = a.name_id
  where p.id = :part_id_in
  union
  select a.group_id_a, a.id as accomp_id
  from pr_partmmbshs(:part_id_in) pr
  join accompany a on pr.group_id = a.group_id
  into :g_id, :accomp_id do
    begin
      select upper(grouptable) from groups where id = :g_id into :g_table;
      if (g_table = 'PARTS.NAME_ID') then
        for select p.id from parts p join wares w on p.ware_id = w.id join group_detail gd on gd.group_id = :g_id and gd.grouptable_id = w.name_id
          into :part_id do suspend;
    end
end^

SET TERM ; ^

/* Following GRANT statetements are generated automatically */

GRANT SELECT ON PARTS TO PROCEDURE PR_ACCOMPANY;
GRANT SELECT ON WARES TO PROCEDURE PR_ACCOMPANY;
GRANT SELECT ON ACCOMPANY TO PROCEDURE PR_ACCOMPANY;
GRANT EXECUTE ON PROCEDURE PR_PARTMMBSHS TO PROCEDURE PR_ACCOMPANY;
GRANT SELECT ON GROUPS TO PROCEDURE PR_ACCOMPANY;
GRANT SELECT ON GROUP_DETAIL TO PROCEDURE PR_ACCOMPANY;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE PR_ACCOMPANY TO PROCEDURE PR_DOC_ACCOMPANY;
GRANT EXECUTE ON PROCEDURE PR_ACCOMPANY TO SYSDBA;



Сетки

Медиа:Accompany_grids.zip