--
prompt ******* Карточки товаров
--
CREATE OR REPLACE function USIODLCARDS return DummyTypeHolder.TRefCursor
is
    vSQL varchar2(4000);
    vResult DummyTypeHolder.TRefCursor;
begin
    vSQL := 'select'||
      ' a.Article'||
      ',a.Name CardName'||
      ',a.ShortName'||
      ',a.AltName1'||
      ',a.AltName2'||
      ',a.CardComment'||
      ',a.MesName'||
      ',a.MesAbbrev'||
      ',a.Country'||
      ',decode(cl.Tree,''#'',cl.Tree,substr(cl.Tree, 1, instr(cl.Tree, ''.''))) OlderClassTree'||
      ',cl.Tree ClassTree'||
      ',(select p.Name from SACardClass p where p.Tree=decode(cl.Tree,''#'',cl.Tree,substr(cl.Tree, 1, instr(cl.Tree, ''.'')))) OlderClassName'||
      ',cl.Name ClassName'||
      ',(select min(u.Barcode) from SVStoreUnits u where u.Article=a.Article and bitand(u.Flags,8)!=0) Barcode'||
      ',a.Weight'||
      ',a.Width'||
      ',a.Length'||
      ',a.Height'||
      ' from SVCardName a, SACardClass cl'||
      ' where a.Accepted=1 and cl.ID=a.IDClass'||
      ' order by a.Article';
    open vResult for vSQL;
    return vResult;
end;
/
declare
 vID SAInfoObjects.ID%type := 'USIODLCARDS';
 vTitle SAInfoObjects.Title%type := 'Дикий Лось. Карточки товаров';
begin
 update SAInfoObjects set Title = vTitle where ID = vID;
 if SQL%ROWCOUNT=0 then
    insert into SAInfoObjects(ID, Title) values(vID, vTitle);
 end if;
 delete from SMInfoObjectsColumn where ObjectID = vID;
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Article'),'Артикул',1,'1','VARCHAR2',50,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('CardName'),'Наименование товара полное',0,'1','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('ShortName'),'Наименование товара краткое',0,'0','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('AltName1'),'Наименование альтернативное 1',0,'0','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('AltName2'),'Наименование альтернативное 2',0,'0','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('CardComment'),'Комментарий',0,'0','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('MesName'),'Наименование единицы измерения полное',0,'1','VARCHAR2',20,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('MesAbbrev'),'Наименование единицы измерения краткое',0,'1','VARCHAR2',6,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Country'),'Страна',0,'0','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('OlderClassTree'),'Путь старшей группы классификатора',0,'1','VARCHAR2',100,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('ClassTree'),'Путь группы классификатора',0,'1','VARCHAR2',100,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('OlderClassName'),'Наименование старшей группы классификатора',0,'1','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('ClassName'),'Наименование группы классификатора',0,'1','VARCHAR2',255,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Barcode'),'Штриховой код',0,'0','VARCHAR2',50,null);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Weight'),'Вес',0,'0','NUMBER',28,3);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Width'),'Глубина',0,'0','NUMBER',14,3);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Length'),'Ширина',0,'0','NUMBER',14,3);
 insert into SMInfoObjectsColumn(ObjectID,Column_name,Col_comment,IsPK,IsNotNull,Data_type,Data_length,Data_scale)
 values (vID,upper('Height'),'Высота',0,'0','NUMBER',14,3);
 commit;
end;
/
