Выгрузка старого Автозаказа в Общий заказ — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Новая страница: «==Выгрузка== Для работы дожно быть заполнено значение пути до папки Общего заказа * Измени…»)
 
(нет различий)

Текущая версия на 10:31, 15 сентября 2016

Выгрузка

Для работы дожно быть заполнено значение пути до папки Общего заказа

  • Изменить вьюху VW_ZAKAZ добавить
SORIG_NAME как
(select list(distinct coalesce(v.svalue,w.mgn_name,''),';')
        from wares w
        inner join wares w2 on (w2.name_id = z.NAME_ID or w2.orig_name_id =  z.name_id--dd.NAME_ID
        ) and (w2.name_id = w.name_id or w2.orig_name_id = w.name_id)
        left join vals v on w.orig_name_id = v.id
        where w2.name_id is not null ) 

-полный текс

CREATE OR ALTER VIEW VW_ZAKAZ(
    ID,
    SNAME,
    SIZG,
    SCOUNTRY,
    AGENT_TOVAR,
    QUANT,
    PRICE,
    SUMMA,
    PRICE_O,
    SUMMA_O,
    QUANTOST,
    AVG_QUANT,
    NAME_ID,
    PART_ID,
    INSERTDT,
    MIN_QUANT,
    KRITK,
    OPTIM_QUANT,
    MMBSH,
    LAST_DATE,
    LAST_QUANT,
    SORIG_NAME)
AS
SELECT
    z.id,
    sname,
    sizg,
    scountry,
    (select a.caption from pr_getmotherpart(part_id) pr left join agents a on pr.agent_id=a.id),
    z.quant,
    z.price,
    summa,
    z.price_o,
    summa_o,
    quantost,
    avg_quant,
    name_id,
    part_id,
    z.insertdt,
    min_quant,
    kritk,
    optim_quant,
    (select membership from PR_MEMBERSHIPS('PARTS=' || part_id || ';PARTS.NAME_ID=' || name_id ||';',ascii_char(13)||ascii_char(10),1)),
    last_date,
    LAST_QUANT,
    (select list(distinct coalesce(v.svalue,w.mgn_name,''),';')
        from wares w
        inner join wares w2 on (w2.name_id = z.NAME_ID or w2.orig_name_id =  z.name_id--dd.NAME_ID
        ) and (w2.name_id = w.name_id or w2.orig_name_id = w.name_id)
        left join vals v on w.orig_name_id = v.id
        where w2.name_id is not null )
FROM ZAKAZ_TMS z
left join parts p on p.id = z.part_id
;
  • Добавить новую ТМС или изменить старый вариант на тот что ниже
uses         
  Classes, Graphics, Controls, Forms, Dialogs, ComCtrls,
  ToolWin, ImgList, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  DB, IBQuery, IBDatabase, unDM, DBTables, cfdxUtils, Menus,
  Buttons, ExtCtrls, StdCtrls, cfSelectEdit,DateUtils,
  gb_table, Mask,  unFrameCustomDict, unMain,SysUtils, cfUtils;

var   t,profile,param_oz ,str_post,IMPORT_ID,sql: string;
   imp_count: Integer;

procedure miLoadToOZ;
var str: string;
    doc_type,i: integer;
    F : TextFile;
    FileName : String;
    qP: TIBQuery;
    PATH_ZAKAZ: String;
begin

 try
  qP:=TIBQuery.Create(nil);
  qP.Database:=dm.FindComponent('db');
  qP.Transaction:=TIBTransaction.Create(qP);
  qP.Transaction.DefaultDatabase:=qP.Database;

  //Путь выгрузки Автозаказа
  qP.sql.text:='select * from PARAMS where param_id = ''OZ_PATH''';
  qP.Active:=true;

  qP.first;
  if (not qP.eof) then
  begin
   PATH_ZAKAZ:= qP.FieldByName('PARAM_VALUE').AsString;
  end;                              
                     
  FileName:= PATH_ZAKAZ+'_import\'+DateToStr(Now)+'.ZAO';

  //frmmanagerxp2.LogIt(FileName);
  AssignFile(F, FileName);
  Rewrite(F);

  qP.sql.text:=sql;

  qP.Active:=true;

  while not qP.eof do
  begin
   WriteLn(F, qP.FieldByName('SNAME').AsString+#9+#9+#9+qP.FieldByName('QUANT').AsString+#9+#9+qP.FieldByName('QUANT').AsString+#9+qP.FieldByName('PRICE_O').AsString+#9+qP.FieldByName('SNAME').AsString+';'+qP.FieldByName('SORIG_NAME').AsString+';');
   qP.Next;
  end;

  finally
   qP.Free;
   CloseFile(F);

   Showmessage('Данные выгружены в Общий заказ');
  end;

end;

begin
sql:=gsender.GetCurSqlText;
miLoadToOZ;

end;