SET NAMES WIN1251;

SET SQL DIALECT 3;

CONNECT 'barry:C:\database\IB5\MEBEL.IB' USER 'SYSDBA';

SET AUTODDL ON;


ALTER TABLE DK_BNS ADD CURRTYPID INTEGER;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Ссылка на связанную валюту для определения курса обмена на денежные бонусы (кофе-гривны)'
WHERE RDB$RELATION_NAME = 'DK_BNS' AND RDB$FIELD_NAME = 'CURRTYPID';

ALTER TABLE DK_BNS ADD "TYPE" SMALLINT DEFAULT 0 NOT NULL;

ALTER TABLE DK_BNS ADD EXTERNALID INTEGER;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Значение соответствует полю Id в таблице Bonuses процессингового центра'
WHERE RDB$RELATION_NAME = 'DK_BNS' AND RDB$FIELD_NAME = 'EXTERNALID';

ALTER TABLE DK_BNS_ORGN_LOG ADD COMMENT VARCHAR(255);

ALTER TABLE DK_DISCOUNTBONUSSETS ADD QUANTITY DOUBLE PRECISION;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Количество'
WHERE RDB$RELATION_NAME = 'DK_DISCOUNTBONUSSETS' AND RDB$FIELD_NAME = 'QUANTITY';

ALTER TABLE DK_DISCOUNTBONUSSETS ADD PARENTID INTEGER;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Идентификатор родительского набора скидок (для зависимых наборов)'
WHERE RDB$RELATION_NAME = 'DK_DISCOUNTBONUSSETS' AND RDB$FIELD_NAME = 'PARENTID';

ALTER TABLE DK_DISCOUNTBONUSSETS ADD ISMARKUP SMALLINT DEFAULT 0 NOT NULL;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Является ли наценкой:
0 - Нет
1 - Наценка'
WHERE RDB$RELATION_NAME = 'DK_DISCOUNTBONUSSETS' AND RDB$FIELD_NAME = 'ISMARKUP';

ALTER TABLE DK_DISCOUNTBONUSSETS ADD ISBONUSACCRUALALLOWED SMALLINT DEFAULT 0 NOT NULL;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Разрешено ли начисление бонусов:
0 - Нет
1 - Да'
WHERE RDB$RELATION_NAME = 'DK_DISCOUNTBONUSSETS' AND RDB$FIELD_NAME = 'ISBONUSACCRUALALLOWED';

ALTER TABLE ORGN ADD PHONENBR VARCHAR(12);

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Телефонный номер. Все 12 цифр и никаких других символов.'
WHERE RDB$RELATION_NAME = 'ORGN' AND RDB$FIELD_NAME = 'PHONENBR';

ALTER TABLE PERSONAL ADD SUPERVISOR SMALLINT;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Является ли супервайзером:
0 - Нет
1 - Да'
WHERE RDB$RELATION_NAME = 'PERSONAL' AND RDB$FIELD_NAME = 'SUPERVISOR';

ALTER TABLE PERSONAL ADD DIRECTOR SMALLINT;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Является ли директором:
0 - Нет
1 - Да'
WHERE RDB$RELATION_NAME = 'PERSONAL' AND RDB$FIELD_NAME = 'DIRECTOR';

ALTER TABLE STORGRP ADD ADDRESS VARCHAR(255);

ALTER TABLE WORKMAIN ADD RECEIPE BLOB SUB_TYPE 1 SEGMENT SIZE 4096;

ALTER TABLE WORKZAKAZ ADD STATE SMALLINT DEFAULT 0;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'0 - Open; 1 - Frozen;'
WHERE RDB$RELATION_NAME = 'WORKZAKAZ' AND RDB$FIELD_NAME = 'STATE';

/* Alter Field: DK_BNS_ORGN.CNT: (INTEGER NOT NULL -> DOUBLE PRECISION NOT NULL) */
UPDATE RDB$FIELDS SET
 RDB$FIELD_LENGTH=8, RDB$FIELD_TYPE=27
  WHERE RDB$FIELD_NAME=(SELECT RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS
  WHERE RDB$FIELD_NAME='CNT' AND RDB$RELATION_NAME='DK_BNS_ORGN');

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN VAL TYPE DOUBLE PRECISION;

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Пользователь, совершивший операцию'
WHERE RDB$RELATION_NAME = 'DK_BNS_ORGN_LOG' AND RDB$FIELD_NAME = 'USERNAME';

/* Alter Field: DK_BNS_PRICEGOODS.BNS_CNT: (INTEGER NOT NULL -> DOUBLE PRECISION NOT NULL) */
UPDATE RDB$FIELDS SET
 RDB$FIELD_LENGTH=8, RDB$FIELD_TYPE=27
  WHERE RDB$FIELD_NAME=(SELECT RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS
  WHERE RDB$FIELD_NAME='BNS_CNT' AND RDB$RELATION_NAME='DK_BNS_PRICEGOODS');

/* Alter Field: DK_BNS_PRICEGOODS.PRICEGOODS_CNT: (INTEGER NOT NULL -> DOUBLE PRECISION NOT NULL) */
UPDATE RDB$FIELDS SET
 RDB$FIELD_LENGTH=8, RDB$FIELD_TYPE=27
  WHERE RDB$FIELD_NAME=(SELECT RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS
  WHERE RDB$FIELD_NAME='PRICEGOODS_CNT' AND RDB$RELATION_NAME='DK_BNS_PRICEGOODS');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 
'Идентификатор группы складов'
WHERE RDB$RELATION_NAME = 'DK_DISCOUNTBONUSSETSTORGRP' AND RDB$FIELD_NAME = 'STOREGROUPID';

/* Create Procedure... */
SET TERM ^ ;

CREATE PROCEDURE WORKREQUESTADDKT(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STORGRP INTEGER,
WSTOR INTEGER,
GPSTOR INTEGER,
NOTINZAKAZ INTEGER = 0,
NOTINVENT INTEGER = 0)
 RETURNS(WZID INTEGER)
 AS
 BEGIN SUSPEND; END
^

SET TERM ; ^

UPDATE RDB$PROCEDURES SET RDB$DESCRIPTION = 
'Автоматическое формирование накладных на оприходование продукции по производственным заявкам и инвентарной описи  заказов'
WHERE RDB$PROCEDURE_NAME = 'WORKREQUESTADDKT';

SET TERM ^ ;

CREATE PROCEDURE WORKREQUESTADDWR(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STORGRP INTEGER,
USERNAME VARCHAR(20))
 RETURNS(SZID INTEGER)
 AS
 BEGIN SUSPEND; END
^

SET TERM ; ^

UPDATE RDB$PROCEDURES SET RDB$DESCRIPTION = 
'Автоматическое формирование заявок на производство по Дате плановой готовности и номеру техпроцесса'
WHERE RDB$PROCEDURE_NAME = 'WORKREQUESTADDWR';

SET TERM ^ ;

CREATE PROCEDURE WORKZAKAZADDWR(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STOR INTEGER,
GDSPARAMID INTEGER,
USERNAME VARCHAR(20),
FORPF INTEGER = 0)
 RETURNS(ZID INTEGER)
 AS
 BEGIN SUSPEND; END
^

SET TERM ; ^

UPDATE RDB$PROCEDURES SET RDB$DESCRIPTION = 
'Автоматическое формирование производственных заказов по дате план. готовности и № тех процесса'
WHERE RDB$PROCEDURE_NAME = 'WORKZAKAZADDWR';

SET TERM ^ ;

CREATE PROCEDURE WORKZAKAZADDWR1(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STOR INTEGER,
GDSPARAMID INTEGER,
USERNAME VARCHAR(20),
FORPF INTEGER = 0)
 RETURNS(ZID INTEGER)
 AS
 BEGIN SUSPEND; END
^

/* Create Foreign Key... */
RECONNECT;

ALTER TABLE DK_BNS ADD CONSTRAINT FK_DK_BNS_CURRTYPID FOREIGN KEY (CURRTYPID) REFERENCES CURRTYP (ID);

ALTER TABLE DK_DISCOUNTBONUSSETGOODS ADD CONSTRAINT FK_DK_DISCOUNTBONUSSET FOREIGN KEY (DISCOUNTBONUSSETID) REFERENCES DK_DISCOUNTBONUSSETS (ID) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE DK_DISCOUNTBONUSSETS ADD CONSTRAINT FK_DK_DISCOUNTBONUSSETS_PARENT FOREIGN KEY (PARENTID) REFERENCES DK_DISCOUNTBONUSSETS (ID) ON DELETE CASCADE;

/* Alter Procedure... */
/* Alter (GOODS_REPLACEANDREMOVE) */
SET TERM ^ ;

ALTER PROCEDURE GOODS_REPLACEANDREMOVE(KEEPID INTEGER,
DELID INTEGER)
 AS
declare variable KID integer;
declare variable DID integer;
declare variable DELMBPID integer;
declare variable KEEPMBPID integer;
declare variable OURORGNID integer;
declare variable MBPGDDID integer;
declare variable DELWORKMAINID integer;
declare variable KEEPWORKMAINID integer;
begin
  -- ? разные записи
  if (:KeepID=:DelID) then exit;
  -- существуют ли записи и действительно ли наименования одинаковы
  Select G1.ID, G2.ID from Goods G1, Goods G2
  where G1.ID=:KEEPID and G2.ID=:DELID
  and G1.Name=G2.Name and G1.Code = G2.Code
  into :KID, :DID;
  if (:KID is Null) then exit;
  if (:DID is Null) then exit;
  -- заменяем DELID на KEEPID
  Update AccnProv set dt2 = :KeepID where dt2 = :DelID;
  Update AccnProv set kt2 = :KeepID where kt2 = :DelID;
  Update CRDS_GddDt    Set Goods_ID = :KEEPID where Goods_ID=:DelID;
  Update CRDS_GddKt    Set Goods_ID = :KEEPID where Goods_ID=:DelID;
  Update CTLGGOODS     Set Goods_ID = :KEEPID where Goods_ID=:DelID;
  Update CtlgItem      Set Goods_ID = :KEEPID where Goods_ID=:DelID;
  Update DgvWk         Set MstGdsID  =:KEEPID where MstGdsID  =:DelID;
  Update DgvWkG        Set MstGdsID  =:KEEPID where MstGdsID  =:DelID;
  Update DkBillGds     Set GodsID =:KEEPID where GodsID =:DelID;
  Update EcrGoods      Set GodsID =:KEEPID where GodsID =:DelID;
  Update GddDt         Set GdsKey  =:KEEPID where GdsKey  =:DelID;
  Update GddKt         Set GdsKey  =:KEEPID where GdsKey  =:DelID;
  Delete from GdsParamGdsRef where GoodsID = :DelID;
  Update GdsParamGdsRef Set GoodsID =:KEEPID where GoodsID =:DelID;
  Update InvOpisData   Set GodsID  =:KEEPID where GodsID  =:DelID;
  Update MainMean      Set GodsID  =:KEEPID where GodsID  =:DelID;
  Update MainMeanSlv   Set GodsID  =:KEEPID where GodsID  =:DelID;

  -- Карточки МБП
  for select ID, OurOrgnID from MbpMean where GodsID = :DelID into :DelMbpID, :OurOrgnID do begin
    select Min(ID) from MbpMean where GodsID = :KeepID and OurOrgnID = :OurOrgnID into :KeepMbpID;
    for select D.ID from MbpGdd D, MbpDgv DD
    where D.MbpID = :DelMbpID and DD.ID = D.DgvID and DD.OurOrgnID = :OurOrgnID
    into :MbpGddID do begin
      update MbpGdd set MbpID = :KeepMbpID where ID = :MbpGddID;
    end
  end
  Delete from MbpMean where GodsID = :DelID;

  -- Изделия (производство)

  for select ID from WorkMain where GodsID = :DelID into :DelWorkMainID do begin
    KeepWorkMainID = Null;
    select ID from WorkMain where GodsID = :KeepID into :KeepWorkMainID;
    if (:KeepWorkMainID is Null) then begin
      KeepWorkMainID = Gen_ID(WorkMain_ID, 1);
      insert into WorkMain(ID, GodsID) values(:KeepWorkMainID, :KeepID);
    end
    Update WorkMain set ParentID = :KeepWorkMainID where ParentID = :DelWorkMainID;
    Update WorkLink set Owner = :KeepWorkMainID where Owner = :DelWorkMainID;
    Update WorkLink set MainDtlID = :KeepWorkMainID where MainDtlID = :DelWorkMainID;
    Update WorkPlanSlv set MainID = :KeepWorkMainID where MainID = :DelWorkMainID;
    Update WorkZMst set MID = :KeepWorkMainID where MID = :DelWorkMainID;
  end
  Delete from WorkMain where GodsID = :DelID;

  Update MDOC_Goods      Set Good_ID =:KEEPID where Good_ID =:DelID;
  Update MOG_DISCOUNT    Set Groop_ID =:KEEPID where Groop_ID =:DelID;
  Delete from PriceGoods where GdsKey =:DelID;
  Update ReservLog       Set GdsKey =:KEEPID where GdsKey =:DelID;
  Update WorkGoodsGds    Set GdsID  =:KEEPID where GdsID  =:DelID;
  Update WorkHbLn        Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkLink        Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkMain        Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkZCutting    Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkZMst        Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkZSlv        Set GodsID =:KEEPID where GodsID =:DelID;
  Update StorZDtGds      Set GodsID =:KEEPID where GodsID =:DelID;
  Update WorkRequestGds  Set GodsID =:KEEPID where GodsID =:DelID;
  Update Bdg_Goods       Set Goods_ID =:KEEPID where Goods_ID =:DelID;
  Update SC_CARDS        Set GoodsID =:KEEPID where GoodsID = :DelID;
  Update SC_CARDT        Set GdsKey =:KEEPID where GdsKey = :DelID;
  Update SC_RemZap       Set GoodsID =:KEEPID where GoodsID = :DelID;
  Update SC_RemZap1      Set GoodsID =:KEEPID where GoodsID = :DelID;
  Update StorZDtGds      Set GodsID =:KEEPID where GodsID = :DelID;
  Update MDoc_Goods      Set Good_ID =:KEEPID where Good_ID = :DelID;
  Update DK_GOODSPACK    Set GdsID =:KEEPID where GdsID = :DelID;

  Delete From Goods where ID=:DelID;

end
^

/* Restore proc. body: WORKREQUESTADDKT */
ALTER PROCEDURE WORKREQUESTADDKT(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STORGRP INTEGER,
WSTOR INTEGER,
GPSTOR INTEGER,
NOTINZAKAZ INTEGER = 0,
NOTINVENT INTEGER = 0)
 RETURNS(WZID INTEGER)
 AS
declare variable ZNBR varchar(32);
declare variable WMID integer;
declare variable MID integer;
declare variable GODSID integer;
declare variable SOURCE double precision;
declare variable QEND double precision;
declare variable QOUT double precision;
declare variable QBEG double precision;
declare variable QIEND double precision;
declare variable RQUANT double precision;
declare variable QUANT double precision;
declare variable QNT double precision;
declare variable PROCNDS double precision;
declare variable WRID integer;
declare variable PDATE timestamp;
declare variable K integer;
declare variable R integer;
declare variable KTID integer;
declare variable DTID integer;
declare variable GNAME varchar(80);
declare variable GDDKTID integer;
BEGIN
K=100;
QNT=0.0;
/*Отбираем список изделий для оприходования по заказам за период готовности */
for select g.name, q.godsid, w.id wid,
    sum(q.qend) qend,
    sum(q.qbeg) qbeg,
    sum(q.qout) qout,
    sum(q.qiend) qiend
    from ( select zg.godsid,
    cast(0.0 as double precision) qbeg,
    cast(0.0 as double precision) qend,
    cast(0.0 as double precision) qiend,
    sum(zg.source) qout
    from storzakazdt z
    join storzdtgds zg on zg.szid=z.id
    where z.readypdatetime>=:BDATE
    and z.readypdatetime<=:EDATE and z.state<3
    and z.ourorgnid=:curorgnid and z.storgrpid=:storgrp
    group by zg.godsid
union all
    select  od.godsid,
    od.cquant qbeg,
    od.rquant qend,
    cast(0.0 as double precision) qiend,
    cast(0.0 as double precision) qout
    from invopisheader o
    join invopisdata   od on o.id=od.opisid
    where o.dat_>=:BDATE and o.dat_<=:EDATE
    and o.storid in (select storid from storgrpref where grpid=:storgrp)
union all
    select  o.gid godsid,
    cast(0.0 as double precision) qbeg,
    cast(0.0 as double precision) qend,
    sum(o.qend) qiend,
    cast(0.0 as double precision) qout
    from GDDDT_MOVEGOODS_SGRP(:CURORGNID, :bdate, :edate, :storgrp) o
    group by 1
) as Q
    join goods g on q.godsid=g.id
    join workmain w on w.godsid=g.id
    group by 1,2,3
    order by 1
    into :gname, :godsid, :wmid, :qend, :qbeg, :qout, qiend
    do
      begin
      ktid = null;
      wzid = null;
      dtid = null;
      r = null;
/*Проверка есть ли инвентарь*/
      if (notinvent=0) then source=qend - qbeg + qout;
      else source=:qiend-:qout;

      /*Формируем список изделий на оприходование*/
            for select 1 regnum, wm.zid wzid, wm.id mid,  wm.wrgdsid rgid,
             rg.quant rquant, r.pdate, wz.nbr,
             sum(zg.source) quant
            from storzakazdt z
            join storzdtgds zg     on zg.szid=z.id
            left join workrequest r     on r.szid=z.id
            left join workrequestgds rg on rg.wrid=r.id and rg.godsid=zg.godsid
            left join workzmst wm  on wm.id=rg.wmid
            left join workzakaz wz on wz.id=wm.zid
            where z.readypdatetime>=:BDATE
            and z.readypdatetime<=:EDATE and z.state<3
            and z.ourorgnid=:curorgnid --19769
            and z.storgrpid=:storgrp --30
            and zg.godsid=:godsid and (wz.ztrash=0 or wz.ztrash is null)
            group by 1,2,3,4,5,6,7
            union
            select 2 regnum, wm.zid, wm.id mid, null rgid, wm.quant rquant,
            cast(:bdate as timestamp) as pdate, wz.nbr,
            cast(0.0 as double precision) quant
            from workzakaz wz
            join workzmst  wm on wm.zid=wz.id
            where wz.dat_ >= :BDATE
            and   wz.dat_ <= :EDATE
            and wm.wrgdsid is null
            and wm.godsid = :godsid
            and wz.stor = :wstor --105
            and (wz.ztrash=0 or wz.ztrash is null)
            order by 1, 4 desc
            into :r,  :wzid, :mid, :wrid, :rquant, :pdate, :znbr, :quant
                do
                  begin
                  /*Проверка наличия заказа на изделие*/
                  if (source>0.0) then begin
                    if (wzid is null) then
                        begin
                        wzid=(select first 1 wm.zid
                            from workzmst  wm
                            join workzakaz z on z.id=wm.zid
                            left join dgvkt k on k.zid=z.id
                            where wm.godsid=:godsid and z.dat_>=:bdate and
                            z.dat_<=:edate and z.stor=:wstor
                            and (z.ztrash=0 or z.ztrash is null) order by k.id desc);
                        mid=(select first 1 wm.id from workzmst  wm
                            where wm.godsid=:godsid
                            and wm.zid=:wzid
                            and wm.wrgdsid is null
                            order by 1);
                        quant=:source;
                        if (wzid is null) then
                            begin
                            znbr=extract(DAY from (:bdate));
                            znbr=znbr||'/'||lpad(K,3,'0');
                            wzid=GEN_ID(WORKZAKAZ_ID,1);
                            insert into workzakaz(id, dat_, nbr, ourorgnid, stor)
                            values(:wzid, :bdate, :znbr, :curorgnid, :wstor);
                            K=K+1;
                            MID= gen_id(WORKZMST_ID,1);
                            insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE )
                            values (:mid,:wzid, :wmid, :godsid, :wstor, :source);
                            end
                        rquant=source;
                        end
                        ktid = (select first 1 d.id
                        from dgvkt d
                        left join gddkt gk on gk.dgvkey = d.id and gk.gdskey=:godsid
                        where d.typ=4 and d.dat_=:bdate
                        and d.zid=:wzid and d.stor=:GPStor
                        order by gk.gdskey desc);
                        dtid = (select dgvkey from dgvkt where id=:ktid);
                        gddktid=(select max(id) from gddkt where dgvkey=:ktid and gdskey=:godsid);
                     /*Проверка накладной в заказе*/
                        if (ktid is null) then
                        begin
                        ktid =GEN_ID(DGVKT_ID,1);
                        procnds = (select s.ndsproc from storlist s where s.id=:gpstor);
                        insert into dgvkt(id, dat_, nbr, typ, stor, storid, zid, procnds)
                        values(:ktid, :pdate, :znbr, 4, :gpstor, :wstor, :wzid, :procnds);
                        end
                        if (dtid is null) then
                           begin
                           DTID=GEN_ID(DGVDT_ID,1);
                           procnds = (select s.ndsproc from storlist s where s.id=:wstor);
                           insert into dgvdt(id, dat_, out_date, saledate, REALDATE, nbr, typ, stor, storid, procnds,zid,dgvkey)
                           values(:dtid, :pdate, :pdate, :pdate,:pdate, :znbr, 8, :wstor, :gpstor, :procnds, :wzid, :ktid);
                           update dgvkt k set k.dgvkey = :dtid where k.id=:ktid;
                           end
                        qnt=quant;
                        if (quant=0.0) then begin
                            qnt = source;
                            quant=source;
                            end
                        if ((source-quant)<0) then qnt=source;
                        if ((source>0.0) and (qnt>0)) then begin
                        if (gddktid is not null) then update gddkt gk set gk.source=gk.source+:qnt, gk.quant=gk.quant+:qnt
                         where gk.id=:gddktid;--обновление кол-ва в накладной если она есть
                        else begin
                        if (notinzakaz=0) then begin
                        insert into gddkt(dgvkey, gdskey, zmid, source, quant, wrgdsid)
                        values(:ktid, :godsid, :mid, :qnt, :qnt,  :wrid);
                        end
                            else
                                begin
                                insert into gddkt(dgvkey, gdskey, zmid, source, quant)
                                values(:ktid, :godsid, :mid, :qnt, :qnt);
                                end
                                end
                        source=source-quant;
                        end
                        end
                        end
                        if (source>0.001) then
                        begin
                            if (wzid is null) then
                            begin
                            znbr=extract(DAY from (:bdate));
                            znbr=znbr||'/'||lpad(K,3,'0');
                            wzid=GEN_ID(WORKZAKAZ_ID,1);
                            insert into workzakaz(id, dat_, nbr, ourorgnid, stor)
                            values(:wzid, :bdate, :znbr, :curorgnid, :wstor);
                            K=K+1;
                            end
                        MID= gen_id(WORKZMST_ID,1);
                        insert into workzmst(ID, ZID, MID, GODSID, STOR, SOURCE )
                        values (:mid,:wzid, :wmid, :godsid, :wstor, :source);
                        ktid = (select max(d.id) ktid
                        from dgvkt d
                        where d.typ=4 and d.dat_=:bdate
                        and d.zid=:wzid);
                        dtid = (select dgvkey from dgvkt where id=:ktid);
                     /*Проверка накладной в заказе*/
                        if (ktid is null ) then
                        begin
                        ktid =GEN_ID(DGVKT_ID,1);
                        procnds = (select s.ndsproc from storlist s where s.id=:gpstor);
                        insert into dgvkt(id, dat_, nbr, typ, stor, storid, zid, procnds)
                        values(:ktid, :pdate, :znbr, 4, :gpstor, :wstor, :wzid, :procnds);
                        end
                        if (dtid is null) then
                           begin
                           DTID=GEN_ID(DGVDT_ID,1);
                           procnds = (select s.ndsproc from storlist s where s.id=:wstor);
                           insert into dgvdt(id, dat_, out_date, saledate, REALDATE, nbr, typ, stor, storid, procnds,zid,dgvkey)
                           values(:dtid, :pdate, :pdate, :pdate,:pdate, :znbr, 8, :wstor, :gpstor, :procnds, :wzid, :ktid);
                           update dgvkt k set k.dgvkey = :dtid where k.id=:ktid;
                           end
                        if (notinzakaz=0) then begin
                        insert into gddkt(dgvkey, gdskey, zmid, source, quant, wrgdsid)
                        values(:ktid, :godsid, :mid, :source, :source,  :wrid);
                        end
                            else
                                begin
                                insert into gddkt(dgvkey, gdskey, zmid, source, quant)
                                values(:ktid, :godsid, :mid, :source, :source);
                                end
                        source=0.0;
                        end
                suspend;
      end
END
^

/* Restore proc. body: WORKREQUESTADDWR */
ALTER PROCEDURE WORKREQUESTADDWR(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STORGRP INTEGER,
USERNAME VARCHAR(20))
 RETURNS(SZID INTEGER)
 AS
declare variable ZNBR varchar(32);
declare variable MID integer;
declare variable GODSID integer;
declare variable SOURCE double precision;
declare variable WRID integer;
declare variable PDATE timestamp;
BEGIN
/*Отбираем заказы за выбранный период плановой готовности */
for select sz.id szid, sz.readypdatetime, sz.nbr
from storzakazdt sz
join storzdtgds  zg on zg.szid=sz.id
join goods g on g.id=zg.godsid
left join GDSPARAMGDSREF GR on g.id=gr.goodsid and gr.paramid=14 /*Типы продукции(Накл. расходы)*/
where sz.readypdatetime >=:BDATE and sz.readypdatetime<=:EDATE
and sz.state <3
and sz.ourorgnid = :CURORGNID and sz.storgrpid = :storgrp
--and sz.ourorgnid =19769 and sz.storgrpid = 30
and coalesce(gr.fixval,0) not in (34,35,31,42,44,41,40,50) /*Список типов продукции не изготавливаемых под заказ*/
group by 1,2,3
into :szid, :pdate, :znbr
    do
      begin
      /*Формируем список заявок с изделиями */
            WRID= GEN_ID(WORKREQUEST_ID,1);
            insert into WORKREQUEST(id, dat_, nbr,pdate, ourorgnid, szid, username)
            values(:wrid, current_date, :znbr, :pdate, :curorgnid, :szid, :username);
                for  select wm.id wmid, g.id, sum(zg.source) source
                     from storzdtgds  zg
                     join goods g on g.id=zg.godsid
                     join workmain wm on wm.godsid=g.id
                     left join GDSPARAMGDSREF GR on g.id=gr.goodsid and gr.paramid=14 --Типы продукции(Накл. расх.)
                     where zg.szid=:szid
                     and coalesce(gr.fixval,0) not in (34,35,31,42,44,41,40,50)
                     /*Список типов продукции не изготавливаемых под заказ*/
                     group by 1,2
                     into :mid, :godsid, :source
                     do
                        begin
                        insert into WORKREQUESTGDS(WRID, GODSID, QUANT )
                        values (:wrid, :godsid, :source);
                        end
                suspend;
      end
--result='Расчет окончен';
--suspend;

END
^

/* Restore proc. body: WORKZAKAZADDWR */
ALTER PROCEDURE WORKZAKAZADDWR(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STOR INTEGER,
GDSPARAMID INTEGER,
USERNAME VARCHAR(20),
FORPF INTEGER = 0)
 RETURNS(ZID INTEGER)
 AS
declare variable TP integer;
declare variable K integer;
declare variable ZNBR varchar(10);
declare variable DNBR varchar(10);
declare variable MID integer;
declare variable GODSID integer;
declare variable WRGDSID integer;
declare variable SOURCE double precision;
declare variable LID integer;
declare variable QNT double precision;
declare variable LGKEY integer;
declare variable MSTID integer;
declare variable CDATE timestamp;
BEGIN
k=1;
/*Дата производственных заказов*/
CDATE=:edate;
dnbr=extract(DAY from (:cdate));

/*Отбираем изделия в заявках и группируем их по параметру №Тех.процесса*/
for select coalesce(p.intval,0) tp
from workrequest w
join workrequestgds wg on wg.wrid=w.id and wg.wmid is null
join goods g on g.id=wg.godsid
left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
where w.pdate >=:BDATE and w.pdate<=:EDATE
and w.ourorgnid=:curorgnid and w.username=:username --группируем по пользователю заявки
group by 1
into :tp
    do
      begin
      /*Формируем список заказов с изделиями по видам техпроцесса изделий*/
            ZID= GEN_ID(WORKZAKAZ_ID,1);
            /*Номер производственного заказа Цифра Даты + номер по порядку с лид.нулями*/
            znbr=dnbr||'/'||lpad(k,3,'0');
            insert into workzakaz(id, dat_, nbr, ourorgnid, stor,username)
            values(:zid, :cdate, :znbr, :curorgnid, :stor, :username);
            k=k+1;
            for select wm.id mid, g.id godsid, wg.id WRGDSID, wg.quant source
            from workrequest w
            join workrequestgds wg on wg.wrid=w.id and wg.wmid is null
            join workmain wm on wm.godsid=wg.godsid
            join goods g on  wg.godsid = g.id
            left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
            where w.pdate >=:BDATE and w.pdate<=:EDATE
            and w.ourorgnid=:curorgnid and coalesce(p.intval,0)=:tp
            and w.username= :username -- только заявки текущего пользователя
            into :mid, :godsid, :wrgdsid, :source
            do
                begin
                MSTID= gen_id(WORKZMST_ID,1);
                insert into workzmst(ID, ZID, MID, GODSID, WRGDSID, STOR, SOURCE )
                values (:mstid,:zid, :mid, :godsid, :wrgdsid, :stor, :source);
                end
                --Включить ПФ в заказ с основными изделиями
                if (:forpf=1) then
                    begin
                    for select w.id mid, sum(wl.quant* wm.source) source, wl.godsid
                    from workzmst wm
                    join worklink wl on wl.owner = wm.mid
                    join  workmain w on wl.godsid=w.godsid
                    join goods g on  wm.godsid = g.id
                    left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
                    where wm.zid= :zid
                    and coalesce(p.intval,0) in (1,5,6,15,32,37,25,39,41,45,46,36,42,44,18)
                    and wl.godsid not in (12851,12681,12678,13050,12581,13630,12772,12629,
                    12657, 12826,13930,12010,10925) --начинки 12095,12094,-закваски
                    group by 1,3
                    into :lid, :source, :godsid
                    do
                        begin
                        MSTID= gen_id(WORKZMST_ID,1);
                        insert into workzmst(ID, ZID, MID, GODSID,  STOR, SOURCE )
                        values (:mstid, :zid, :lid, :godsid, :stor, :source);
                        end
                  end
                suspend;
      end
--result='Расчет окончен';
--suspend;

END
^

/* Restore proc. body: WORKZAKAZADDWR1 */
ALTER PROCEDURE WORKZAKAZADDWR1(BDATE TIMESTAMP,
EDATE TIMESTAMP,
CURORGNID INTEGER,
STOR INTEGER,
GDSPARAMID INTEGER,
USERNAME VARCHAR(20),
FORPF INTEGER = 0)
 RETURNS(ZID INTEGER)
 AS
declare variable TP integer;
declare variable K integer;
declare variable ZNBR varchar(10);
declare variable DNBR varchar(10);
declare variable MID integer;
declare variable GODSID integer;
declare variable WRGDSID integer;
declare variable SOURCE double precision;
declare variable LID integer;
declare variable QNT double precision;
declare variable LGKEY integer;
declare variable MSTID integer;
declare variable CDATE timestamp;
BEGIN
k=1;
/*Дата производственных заказов*/
CDATE=:edate;
dnbr=extract(DAY from (:cdate));

/*Отбираем изделия в заявках и группируем их по параметру №Тех.процесса*/
for select coalesce(p.intval,0) tp
from workrequest w
join workrequestgds wg on wg.wrid=w.id and wg.wmid is null
join goods g on g.id=wg.godsid
left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
where w.pdate >=:BDATE and w.pdate<=:EDATE
and w.ourorgnid=:curorgnid and w.username=:UserName --отбираем только заявки текущего пользователя
group by 1
into :tp
    do
      begin
      /*Формируем список заказов с изделиями по видам техпроцесса изделий*/
            ZID= GEN_ID(WORKZAKAZ_ID,1);
            /*Номер производственного заказа Цифра Даты + номер по порядку с лид.нулями*/
            znbr=dnbr||'/'||lpad(k,3,'0');
            insert into workzakaz(id, dat_, nbr, ourorgnid, stor, username)
            values(:zid, :cdate, :znbr, :curorgnid, :stor, :username);
            k=k+1;
            for select wm.id mid, g.id godsid, null WRGDSID, sum(wg.quant) source
            from workrequest w
            join workrequestgds wg on wg.wrid=w.id and wg.wmid is null
            join workmain wm on wm.godsid=wg.godsid
            join goods g on  wg.godsid = g.id
            left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
            where w.pdate >=:BDATE and w.pdate<=:EDATE
            and w.ourorgnid=:curorgnid and coalesce(p.intval,0)=:tp
            and w.username = :username  --отбираем только заявки текущего пользователя
            group  by 1,2,3
            into :mid, :godsid, :wrgdsid, :source
            do
                begin
                MSTID= gen_id(WORKZMST_ID,1);
                insert into workzmst(ID, ZID, MID, GODSID, WRGDSID, STOR, SOURCE )
                values (:mstid,:zid, :mid, :godsid, :wrgdsid, :stor, :source);
                end
                --Включить ПФ в заказ с основными изделиями
                if (:forpf=1) then
                    begin
                    for select w.id mid, sum(wl.quant* wm.source) source, wl.godsid
                    from workzmst wm
                    join worklink wl on wl.owner = wm.mid
                    join  workmain w on wl.godsid=w.godsid
                    join goods g on  wm.godsid = g.id
                    left join gdsparamgdsref p on p.goodsid=g.id and p.paramid=:gdsparamid
                    where wm.zid= :zid
                    and coalesce(p.intval,0) in (1,5,6,15,16,18,32,37,25,39,41,45,46,36,42,44)
                    and wl.godsid not in (12851,12681,12678,13050,12581,13630,12772,12629,
                    12657, 12826,13930,12010,10925) --начинки 12095,12094,- закваски
                    group by 1,3
                    into :lid, :source, :godsid
                    do
                        begin
                        MSTID= gen_id(WORKZMST_ID,1);
                        insert into workzmst(ID, ZID, MID, GODSID,  STOR, SOURCE )
                        values (:mstid, :zid, :lid, :godsid, :stor, :source);
                        end
                  end
                suspend;
      end
--result='Расчет окончен';
--suspend;

END
^

/* Alter Procedure... */
SET TERM ; ^

ALTER TABLE DK_BNS ALTER COLUMN ID POSITION 1;

ALTER TABLE DK_BNS ALTER COLUMN NAME POSITION 2;

ALTER TABLE DK_BNS ALTER COLUMN VAL POSITION 3;

ALTER TABLE DK_BNS ALTER COLUMN CURRTYPID POSITION 4;

ALTER TABLE DK_BNS ALTER COLUMN "TYPE" POSITION 5;

ALTER TABLE DK_BNS ALTER COLUMN EXTERNALID POSITION 6;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN ID POSITION 1;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN DK_BNS_ORGN_ID POSITION 2;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN SZID POSITION 3;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN VAL POSITION 4;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN USERNAME POSITION 5;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN LASTEDIT POSITION 6;

ALTER TABLE DK_BNS_ORGN_LOG ALTER COLUMN COMMENT POSITION 7;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN ID POSITION 1;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN NAME POSITION 2;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN DAYSOFWEEK POSITION 3;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN PERIODBEGIN POSITION 4;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN PERIODEND POSITION 5;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN FROMTIME POSITION 6;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN TOTIME POSITION 7;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN GOAL POSITION 8;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN "TYPE" POSITION 9;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN VAL POSITION 10;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN STATE POSITION 11;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN USERNAME POSITION 12;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN LASTEDIT POSITION 13;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN QUANTITY POSITION 14;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN PARENTID POSITION 15;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN ISMARKUP POSITION 16;

ALTER TABLE DK_DISCOUNTBONUSSETS ALTER COLUMN ISBONUSACCRUALALLOWED POSITION 17;

ALTER TABLE ORGN ALTER COLUMN ID POSITION 1;

ALTER TABLE ORGN ALTER COLUMN GROU_ POSITION 2;

ALTER TABLE ORGN ALTER COLUMN NAME POSITION 3;

ALTER TABLE ORGN ALTER COLUMN FULLNAME POSITION 4;

ALTER TABLE ORGN ALTER COLUMN NAME_NDS POSITION 5;

ALTER TABLE ORGN ALTER COLUMN OURORGN POSITION 6;

ALTER TABLE ORGN ALTER COLUMN OWNER POSITION 7;

ALTER TABLE ORGN ALTER COLUMN ADDRESS POSITION 8;

ALTER TABLE ORGN ALTER COLUMN PHONE POSITION 9;

ALTER TABLE ORGN ALTER COLUMN BANK POSITION 10;

ALTER TABLE ORGN ALTER COLUMN MFO_CODE POSITION 11;

ALTER TABLE ORGN ALTER COLUMN ACCNCODE POSITION 12;

ALTER TABLE ORGN ALTER COLUMN OKPOCODE POSITION 13;

ALTER TABLE ORGN ALTER COLUMN STREET POSITION 14;

ALTER TABLE ORGN ALTER COLUMN PSTIDX POSITION 15;

ALTER TABLE ORGN ALTER COLUMN FAX POSITION 16;

ALTER TABLE ORGN ALTER COLUMN CALL POSITION 17;

ALTER TABLE ORGN ALTER COLUMN POST POSITION 18;

ALTER TABLE ORGN ALTER COLUMN COMMENT POSITION 19;

ALTER TABLE ORGN ALTER COLUMN BUYER POSITION 20;

ALTER TABLE ORGN ALTER COLUMN DILER POSITION 21;

ALTER TABLE ORGN ALTER COLUMN COUNTRY POSITION 22;

ALTER TABLE ORGN ALTER COLUMN REGION POSITION 23;

ALTER TABLE ORGN ALTER COLUMN CITY POSITION 24;

ALTER TABLE ORGN ALTER COLUMN MAXTIME POSITION 25;

ALTER TABLE ORGN ALTER COLUMN DGVPOSTAV POSITION 26;

ALTER TABLE ORGN ALTER COLUMN DOLG POSITION 27;

ALTER TABLE ORGN ALTER COLUMN MANAGER POSITION 28;

ALTER TABLE ORGN ALTER COLUMN CLNBR POSITION 29;

ALTER TABLE ORGN ALTER COLUMN DIRECTOR POSITION 30;

ALTER TABLE ORGN ALTER COLUMN NALNBR POSITION 31;

ALTER TABLE ORGN ALTER COLUMN REGNBR POSITION 32;

ALTER TABLE ORGN ALTER COLUMN EMAIL POSITION 33;

ALTER TABLE ORGN ALTER COLUMN WEBSITE POSITION 34;

ALTER TABLE ORGN ALTER COLUMN DGVDATE POSITION 35;

ALTER TABLE ORGN ALTER COLUMN DGVPRSN POSITION 36;

ALTER TABLE ORGN ALTER COLUMN PRICEID POSITION 37;

ALTER TABLE ORGN ALTER COLUMN ACCOUNTER POSITION 38;

ALTER TABLE ORGN ALTER COLUMN ORGNDIRID POSITION 39;

ALTER TABLE ORGN ALTER COLUMN ORGNACNID POSITION 40;

ALTER TABLE ORGN ALTER COLUMN BIRTHDAY POSITION 41;

ALTER TABLE ORGN ALTER COLUMN ADDRESSF POSITION 42;

ALTER TABLE ORGN ALTER COLUMN DESCRIPTION POSITION 43;

ALTER TABLE ORGN ALTER COLUMN PRIVATEFORM POSITION 44;

ALTER TABLE ORGN ALTER COLUMN PROFILEFORM POSITION 45;

ALTER TABLE ORGN ALTER COLUMN NALSYSTEM POSITION 46;

ALTER TABLE ORGN ALTER COLUMN NALORGNNAME POSITION 47;

ALTER TABLE ORGN ALTER COLUMN NALORGN POSITION 48;

ALTER TABLE ORGN ALTER COLUMN NALORGNID POSITION 49;

ALTER TABLE ORGN ALTER COLUMN CYCLETIME POSITION 50;

ALTER TABLE ORGN ALTER COLUMN VIP POSITION 51;

ALTER TABLE ORGN ALTER COLUMN CODE POSITION 52;

ALTER TABLE ORGN ALTER COLUMN OBJID POSITION 53;

ALTER TABLE ORGN ALTER COLUMN KREDITMAX POSITION 54;

ALTER TABLE ORGN ALTER COLUMN KREDITONE POSITION 55;

ALTER TABLE ORGN ALTER COLUMN USERNAME POSITION 56;

ALTER TABLE ORGN ALTER COLUMN LASTEDIT POSITION 57;

ALTER TABLE ORGN ALTER COLUMN SALENDS POSITION 58;

ALTER TABLE ORGN ALTER COLUMN PHONENBR POSITION 59;

ALTER TABLE ORGN ALTER COLUMN BRANCH_NO POSITION 60;

ALTER TABLE PERSONAL ALTER COLUMN ID POSITION 1;

ALTER TABLE PERSONAL ALTER COLUMN PRSNCARDID POSITION 2;

ALTER TABLE PERSONAL ALTER COLUMN OURORGNID POSITION 3;

ALTER TABLE PERSONAL ALTER COLUMN NAME POSITION 4;

ALTER TABLE PERSONAL ALTER COLUMN INP_DATE POSITION 5;

ALTER TABLE PERSONAL ALTER COLUMN OUT_DATE POSITION 6;

ALTER TABLE PERSONAL ALTER COLUMN IDX_DATE POSITION 7;

ALTER TABLE PERSONAL ALTER COLUMN WTYP POSITION 8;

ALTER TABLE PERSONAL ALTER COLUMN COMMENT POSITION 9;

ALTER TABLE PERSONAL ALTER COLUMN PODRID POSITION 10;

ALTER TABLE PERSONAL ALTER COLUMN STORID POSITION 11;

ALTER TABLE PERSONAL ALTER COLUMN DAYWTIME POSITION 12;

ALTER TABLE PERSONAL ALTER COLUMN TABNBR POSITION 13;

ALTER TABLE PERSONAL ALTER COLUMN FOTGRPID POSITION 14;

ALTER TABLE PERSONAL ALTER COLUMN POSTID POSITION 15;

ALTER TABLE PERSONAL ALTER COLUMN TABELID POSITION 16;

ALTER TABLE PERSONAL ALTER COLUMN OKLAD POSITION 17;

ALTER TABLE PERSONAL ALTER COLUMN MANAGER POSITION 18;

ALTER TABLE PERSONAL ALTER COLUMN ZTYP POSITION 19;

ALTER TABLE PERSONAL ALTER COLUMN RGTYP POSITION 20;

ALTER TABLE PERSONAL ALTER COLUMN USERID POSITION 21;

ALTER TABLE PERSONAL ALTER COLUMN POST POSITION 22;

ALTER TABLE PERSONAL ALTER COLUMN FULLNAME POSITION 23;

ALTER TABLE PERSONAL ALTER COLUMN INN POSITION 24;

ALTER TABLE PERSONAL ALTER COLUMN BIRTHDAY POSITION 25;

ALTER TABLE PERSONAL ALTER COLUMN SEND POSITION 26;

ALTER TABLE PERSONAL ALTER COLUMN COUNTRY POSITION 27;

ALTER TABLE PERSONAL ALTER COLUMN REGION POSITION 28;

ALTER TABLE PERSONAL ALTER COLUMN CITY POSITION 29;

ALTER TABLE PERSONAL ALTER COLUMN ADDRESS POSITION 30;

ALTER TABLE PERSONAL ALTER COLUMN PSTIDX POSITION 31;

ALTER TABLE PERSONAL ALTER COLUMN HOMEPHONE POSITION 32;

ALTER TABLE PERSONAL ALTER COLUMN PASSPORT POSITION 33;

ALTER TABLE PERSONAL ALTER COLUMN PASPSER POSITION 34;

ALTER TABLE PERSONAL ALTER COLUMN PASPNBR POSITION 35;

ALTER TABLE PERSONAL ALTER COLUMN PASPOUT POSITION 36;

ALTER TABLE PERSONAL ALTER COLUMN PHOTO POSITION 37;

ALTER TABLE PERSONAL ALTER COLUMN IMGPHOTOTYP POSITION 38;

ALTER TABLE PERSONAL ALTER COLUMN SUBSCRIBE POSITION 39;

ALTER TABLE PERSONAL ALTER COLUMN IMGSUBSCRIBETYP POSITION 40;

ALTER TABLE PERSONAL ALTER COLUMN NALORGNID POSITION 41;

ALTER TABLE PERSONAL ALTER COLUMN GENDER POSITION 42;

ALTER TABLE PERSONAL ALTER COLUMN CARDACCN POSITION 43;

ALTER TABLE PERSONAL ALTER COLUMN CARDACCNUSE POSITION 44;

ALTER TABLE PERSONAL ALTER COLUMN USERNAME POSITION 45;

ALTER TABLE PERSONAL ALTER COLUMN LASTEDIT POSITION 46;

ALTER TABLE PERSONAL ALTER COLUMN NRC POSITION 47;

ALTER TABLE PERSONAL ALTER COLUMN SUPERVISOR POSITION 48;

ALTER TABLE PERSONAL ALTER COLUMN DIRECTOR POSITION 49;

ALTER TABLE STORGRP ALTER COLUMN ID POSITION 1;

ALTER TABLE STORGRP ALTER COLUMN OURORGNID POSITION 2;

ALTER TABLE STORGRP ALTER COLUMN NAME POSITION 3;

ALTER TABLE STORGRP ALTER COLUMN ADDRESS POSITION 4;