// скрипт для импорта прайс-листа Империя-Фарма. используется процедурой 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 Table :Tclientdataset;
    tmpDir :string;
    tmpfile :string;
    Mappings :string;
    strval :string;
    taDBF :TTable;
begin
  table := tclientdataset.create(selfscript);
  //mappings := tstringlist.create;
  try
      if uppercase(extractfileext(filename))='.DBF'
      then begin
        taDBF := tTable.create(selfscript);
        taDBF.TableType := ttFoxpro;
        taDBF.tablename := filename;
        taDBF.Open;

        Mappings := 'FID=CODE_GOODS;'+
                    'PRNAME=NAME_GOODS;'+
                    'MANUFACTUR=NAME_PRODUCER;'+
                    'country=NAME_COUNTRY;'+
                    'GODENDO=SHELF_LIFE;'+
                    'NDS=NDS;'+
                    'MNN=MNN;'+
                    'FORM=UNITS;'+
                    'PRICE=PRICE;'+
                    'PRICER=PRICE_REGISTRY;'+
                    'rest=AMOUNT;'+
                    'min=MIN_AMOUNT;'+
                    'zvls=ISLIVENEED;'+
                    'EAN=BARCODE;'
                    ;


        SElfLoader.InitFieldsToDefault;
        SelfLoader.InitImportCDS;

        TableAppend(SelfLoader.ImportCDS,taDBF,false,Mappings);
        //dataset.close; // чтобы не продолжился импорт
      end
      else begin
        if not ReadTXT(table,filename,';')
        then RaiseException('Не могу прочесть файл: '+tmpfile);


        Mappings := 'Код товара поставщика=CODE_GOODS;'+
                    'Наименование товара=NAME_GOODS;'+
                    'Наименование производителя=NAME_PRODUCER;'+
                    'Страна Производителя=NAME_COUNTRY;'+
                    'Количество в упаковке=PLACE_CAP;'+
                    'Штрихкод=BARCODE;'+
                    'Группа НДС=NDS;'+
                    'Срок годности=SHELF_LIFE;'+
                    'Количество=AMOUNT;'+
                    'ЖНВЛС=ISLIVENEED;'+
                    'Минимальный заказ=MIN_AMOUNT;'+
                    'Цена реестра=PRICE_REGISTRY;'+
                    'Цена с ндс=PRICE';


        SElfLoader.InitFieldsToDefault;
        SelfLoader.InitImportCDS;

        TableAppend(SelfLoader.ImportCDS,table,false,Mappings);
        //dataset.close; // чтобы не продолжился импорт
      end;

  finally
    //mappings.free;
    table.free
  end;


end.
