// скрипт для импорта прайс-листа Ориола. используется процедурой 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;
begin

      tmpdir := '';

      if uppercase(extractfileext(filename))='.ZIP'
      then begin
         tmpdir := includetrailingpathdelimiter(createuniquedir);
         filename := tmpdir+zipextractall(filename,tmpdir);

      end;


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

        Mappings := 'kod=CODE_GOODS;'+
                    'naim=NAME_GOODS;'+
                    'reestr=price_registry;'+
                    'kolvo=AMOUNT;'+
                    'godnost=SHELF_LIFE;'+
                    'izgot=NAME_PRODUCER;'+
                    'strana=NAME_COUNTRY;'+
                    'GNVLS=IsLiveneed;'+
                    'kratnost=PLACE_CAP;'+
                    'min part=MIN_AMOUNT;'+
                    'shtrihkod=BARCODE;'+
                    'cenands=PRICE;';


        SElfLoader.InitFieldsToDefault;
        SelfLoader.InitImportCDS;

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

        tadbf.close;
      end
      else begin

        CDS := tclientdataset.create(selfscript);

        if not ReadTXT(cds,filename,';')
        then RaiseException('Не могу прочесть файл: '+tmpfile);


        Mappings := 'Код=CODE_GOODS;'+
                    'Название=NAME_GOODS;'+
                    'Завод=NAME_PRODUCER;'+
                    'Страна=NAME_COUNTRY;'+

                    'Кратность=PLACE_CAP;'+
                    'Количество=AMOUNT;'+
                    'Процент НДС=NDS;'+
                    'Срок годности=SHELF_LIFE;'+
                    'Признак ЖНВЛС=IsLiveneed;'+
                    //'Кратность=MIN_AMOUNT;'+

                    'Цена=PRICE';


        SElfLoader.InitFieldsToDefault;
        SelfLoader.InitImportCDS;

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

      if tmpdir<>''
      then deletedir(tmpdir);

end.
