// скрипт выгрузки прайс-листа для СоюзФарма. вариант - автоматический, без предварительной формы "прайс-лист".

// Пока только производится генерация файла в каталог DirName, который нужно определить согласно собственным требованиям

const DirName = 'c:\SojuzPharma\';
      FileName = 'spravka.sst';


const hourofexport = 10; // время, во сколько данный экспорт должен произойти
      UseFromMenu = true;
      DiscountPercent = -10;
      Storage = 0; // склад

var
 Dataset :TQuery;

var

  List :TStringList;


  WF :TMyWait;
begin
  if not (useFromMenu or (hourof(now())=hourofexport))
  then exit;

  wf := TmyWait.create('Идет экспорт прайс-листа');
  try
    Dataset := TQuery.create(selfscript);

    Dataset.sql.text := 'select a.nn,b.name,c.name as name_producer,d.name as name_country, '+
      Roundsqlto(' a.rs_cena * (1 + '+inttostr(discountPercent)+' / 100) ',-2)+' as price, '+
      ' a.rs_cena as price_base, ' +
      ' a.ostat, ' +
      ' a.srok ' +
      ' from pr_tovar a join tovar b on a.nn = b.nn'+
      ' left join producer c on a.producer = c.id'+
      ' left join country d on c.country = d.id'+
      ' where ostat >0 ';

    if Storage <> 0 then dataset.sql.add(' and a.sklad = '+inttostr(Storage));

    Dataset.sql.add(' order by b.name');
    dataset.databasename := 'dbkassa';
    dataset.open;


    List := tstringlist.create;
    try

      List.add('[Header]');
      List.add(formatdatetime('dd.mm.yyy hh:nn:ss', now())+Stringofchar(';',4));
      List.add('[Body]');

      dataset.disablecontrols;
      try

        wf.progressbarmax := dataset.recordcount;
        dataset.first;
        while not dataset.eof do
        begin
          wf.incprogress;

          List.add(Stringofchar(';',11)+ansiuppercase(dataset.fieldbyname('name').asstring) +';' +
             ansiuppercase(dataset.fieldbyname('name_producer').asstring)+';'+
             ansiuppercase(dataset.fieldbyname('name_country').asstring)+';'+
             bvCurrToStrF(dataset.fieldbyname('price').ascurrency,'.','','',2)+';'+
             ';'+ // в инструкции зарезервировано (может цена производителя? тогда это
                 //     bvCurrToStrF(dataset.fieldbyname('firstcena').ascurrency,'.','','',2)+';'+
             dataset.fieldbyname('ostat').asstring+';'+
             ';'+ // количество дней. судя по примеру, можно опустить
             ';'+ // дата выпуска. судя по примеру, можно опустить
             dataset.fieldbyname('srok').asstring+';' // дата выпуска. судя по примеру, можно опустить
          );

          dataset.next;
        end;
     finally
       dataset.enablecontrols;
     end;

     forcedirectories(DirName);
     List.savetofile(includetrailingpathdelimiter(DirName)+FileName);

    finally
      List.free;
    end;
  finally
    wf.free
  end;

  CreateHintI('Операция завершена, файл находится в каталоге '+DirName);


end.
