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

    MissStrings :integer;

    thf :Tfield;
begin
  table := tclientdataset.create(selfscript);
  //mappings := tstringlist.create;
  try

      missstrings := 0;

      readxls(table, filename,false,false,0);

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

      table.first;
      while not table.eof
           and (table.fields[0].asstring<>'Наименование')
           and (table.fields[1].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;'+
                  'Форма выпуска=FORM;'+
                  'Производитель=NAME_PRODUCER;'+
                  //'Страна=NAME_COUNTRY;'+

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

                  'Цена=PRICE';
      }


      SElfLoader.InitFieldsToDefault;
      SelfLoader.InitImportCDS;


      table.first;
      while not table.eof do
      begin
        //if table.fieldbyname('Цена').asstring>''
        //then
        begin
          selfloader.importcds.append;
          if table.findfield('Код товара')<>nil
          then
            selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('Код товара').asstring
          else
            selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('COD').asstring;

          //if pos(table.Fieldbyname('Наименование').asstring,table.Fieldbyname('Форма').asstring)=1
          //then

           if  table.findfield('Товар')<>nil
           then
            selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.Fieldbyname('Товар').asstring
           else
            selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.Fieldbyname('NAME').asstring;


          if table.findfield('Производитель')<>nil
          then
            selfloader.importcds.fieldbyname('NAME_PRODUCER').asstring := table.fieldbyname('Производитель').asstring
          else
            selfloader.importcds.fieldbyname('NAME_PRODUCER').asstring := table.fieldbyname('PRODUCER').asstring;


          if table.findfield('Цена')<>nil
          then
            selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена').asstring
          else
          if table.findfield('Цена0')<>nil
          then
            selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена0').asstring;



          thf := table.findfield('Срок годности');
          if thf=nil then thf := table.findfield('Срок  годности');

          if thf<>nil
          then
            selfloader.importcds.fieldbyname('shelf_life').asstring := thf.asstring;
        end;
        table.next
      end;

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

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


end.
