// скрипт для импорта прайс-листа Фармкомплект. используется процедурой Loader.LoadFromFileWithScript

{
          add('code',ftstring,50);
          add('code_goods',ftstring,50);
          add('name_goods',ftstring,300);
          add('code_producer',ftstring,50);
          add('name_producer',ftstring,300);
          add('code_country',ftstring,50);
          add('name_country',ftstring,300);
          add('price',ftstring,50);
          add('price_without_nds',ftstring,50);
          add('price_first',ftstring,50);
          add('price_first_with_nds',ftstring,50);
          add('nds',ftstring,50);
          add('shelf_life',ftstring,50);
          add('ex_rate',ftstring,50);
          add('price_rtl',ftstring,50);
          add('amount',ftstring,50);
          add('id_valuta',ftstring,50);
          add('min_amount',ftstring,50);
          add('units',ftstring,50);
          add('place_cap',ftstring,50);
          add('isliveneed',ftstring,50);
          add('price_registry',ftstring,50);
          add('barcode',ftstring,50);
}

// если вернуть закрытый датасет, то операция не будет продолжена, и предполагается, что скрипт самостоятельно разобрался с прайсом.
// для самостоятельности скрипту передается ID - идентификатор прайса, который сейчас заливается.
// но в целом задача скрипта - транспортировать данные из файла Filename в Dataset


var
    Filename :string; // Файл импорта
    SelfLoader :TPriceLoader; // запускающий объект

var CDS :Tclientdataset;
    taDBF :TTable;
    tmpDir :string;
    tmpfile :string;
    Mappings :string;
    strval :string;
    FNAME :string;
    dirname :string;

begin
      dirname := includetrailingpathdelimiter(getuniquedirname);
      try
        forcedirectories(dirname);
        fname := dirname+ZipExtractAll(filename,dirname);

        if  uppercase(extractfileext(fname))='.DBF'
        then begin
          taDBF := tTable.create(selfscript);
          taDBF.TableType := ttFoxpro;
          taDBF.tablename := fname;
          taDBF.Open;

          Mappings := 'KOD=CODE_GOODS;'+
                      'NAME=NAME_GOODS;'+
                      'PRODUCER=NAME_PRODUCER;'+
                      'KRATN=PLACE_CAP;'+
                      'PRICE=PRICE;'+
                      'QUANT=AMOUNT;'+
                      'storage=SHELF_LIFE;'+
                      'REGPRICE=PRICE_REGISTRY;'+
                      'NDS=NDS;'+
                      'JV=ISLIVENEED;'+
                      'MINPACK=MIN_AMOUNT;'+
                      'EAN13=BARCODE;'
                      ;


          SElfLoader.InitFieldsToDefault;
          SelfLoader.InitImportCDS;

          TableAppend(SelfLoader.ImportCDS,taDBF,false,Mappings);
          //dataset.close; // чтобы не продолжился импорт

          tadbf.close;
        end
     finally
       //cleardir(dirname);
       deletedir(dirname);
     end;

end.
