// скрипт для импорта прайс-листа ФК Триумф. используется процедурой 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;
    i :integer;
    MissSTrings :integer;
begin
  table := tclientdataset.create(selfscript);
  //mappings := tstringlist.create;
  try

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

      missstrings := 0;
      table.first;
      while not table.eof
           and (table.fields[2].asstring<>'Наименование')
      do begin
        inc(MissStrings);
        table.next;
      end;

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

      //table.savetofile('c:\temp\1.cds');

      {
      Mappings := 'Код=CODE_GOODS;'+
                  'Наименование=NAME_GOODS;'+
                  'Производитель=NAME_PRODUCER;'+
                  'Страна=NAME_COUNTRY;'+
                  'В коробке=PLACE_CAP;'+
                  'Остаток свободный=AMOUNT;'+
                  'Срок годности=SHELF_LIFE;'+
                  //'Мин. партия тов.=MIN_AMOUNT;'+
                  'Реестровая цена=PRICE_REGISTRY;'+
                  'ЖВ=ISLIVENEED;'+
                  'Ставка НДС=NDS;'+
                  //'Штрих_код=BARCODE;'+
                  //'Ед_изм_=UNITS;'+
                  'Цена с НДС _Предоплата_=PRICE';
      }

      SElfLoader.InitFieldsToDefault;
      SelfLoader.InitImportCDS;

      //TableAppend(SelfLoader.ImportCDS,table,false,Mappings);

      table.first;
      while not table.eof do begin
        selfloader.importcds.append;
        selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('Код товара').asstring;
        selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.fieldbyname('Наименование').asstring;
        selfloader.importcds.fieldbyname('name_producer').asstring := table.fieldbyname('Производитель').asstring;
        selfloader.importcds.fieldbyname('name_country').asstring := table.fieldbyname('Страна').asstring;
        selfloader.importcds.fieldbyname('seria').asstring := table.fieldbyname('Серия').asstring;
        selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена с НДС оптовая').asstring;

        strval := table.fieldbyname('НДС').asstring;
        i := pos('%',strval);
        if i>0 then StrvAl := copy(strval,1,i-1);
        selfloader.importcds.fieldbyname('NDS').asstring := strval;

        selfloader.importcds.fieldbyname('place_cap').asstring := table.fieldbyname('ФАсовка').asstring;

        selfloader.importcds.fieldbyname('amount').asstring := table.fieldbyname('Свободно').asstring;
        selfloader.importcds.fieldbyname('shelf_life').asstring := table.fieldbyname('Срок годности').asstring;
        selfloader.importcds.fieldbyname('price_registry').asstring := table.fieldbyname('Цена гос _реестра б_ндс').asstring;
        selfloader.importcds.fieldbyname('price_first').asstring := table.fieldbyname('Цена произв__ без НДС').asstring;
        if table.fieldbyname('ЖНВЛС').asstring = '+'
        then selfloader.importcds.fieldbyname('IsLiveneed').asstring := '1';


        selfloader.importcds.post;
        table.next;
      end;

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


end.
