// скрипт для импорта прайс-листа Профит-мед. используется процедурой Loader.LoadFromFileWithScript
// на вход подается открытый Dataset, который нужно заполнить в соответствии с полями:

{
          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 :TTable;
    tmpDir :string;
    tmpfile :string;
    Mappings :string;
    CDS :Tclientdataset;
begin
  table := ttable.create(selfscript);
  try
    tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now));
    forcedirectories(tmpdir);

      tmpfile := tmpdir + 'tmpprice'+uppercase(extractfileext(filename));

      copyfile(filename,tmpfile);
      try

       begin

        cds := tclientdataset.create(selfscript);

        if uppercase(extractfileext(TMPFile))='.XLS'
        then begin
          readxls(cds, tmpfile,false,true);


           Mappings :=
                      'Артикул=CODE_GOODS;'+
                      'Наименование=NAME_GOODS;'+
                      'Производитель=NAME_PRODUCER;'+
                      'Страна=NAME_COUNTRY;'+
                      'ЕИ=UNITS;'+
                      'НДС=NDS;'+
                      'Остаток=AMOUNT;'+
                      'Цена=PRICE;'+
                      'Срок годности=SHELF_LIFE;'+
                      'ШТРИХКОД=BARCODE;';
                      //'Упаковка=PLACE_CAP;'+
                      //'МОП=MIN_AMOUNT';

          SElfLoader.InitFieldsToDefault;
          SelfLoader.InitImportCDS;
          TableAppend(selfloader.importcds,cds,false,Mappings);
        end
        else begin // DBF
          table.tablename := tmpfile;
          table.open;

           Mappings :=
                      'ID=CODE_GOODS;'+
                      'NAME=NAME_GOODS;'+
                      'FIRM=NAME_PRODUCER;'+
                      'COUNTRY=NAME_COUNTRY;'+
                      'EI=UNITS;'+
                      'NDS=NDS;'+
                      'OST=AMOUNT;'+
                      'PRICE2150=PRICE;'+
                      'REGPRC=PRICE_REGISTRY;'+
                      'DATEREAL=SHELF_LIFE;'+
                      'GNVLS=ISLIVENEED;'+
                      'BARCODE=BARCODE;'+
                      'KOLPACK=PLACE_CAP;'+
                      'MNP=MIN_AMOUNT';

          SElfLoader.InitFieldsToDefault;
          SelfLoader.InitImportCDS;
          TableAppend(selfloader.importcds,table,false,Mappings);


        end;
       end;
     finally
       cleardir(tmpdir);
       deletedir(tmpdir);
     end;

  finally
    //mappings.free;
    table.free
  end;


end.
