// скрипт для импорта прайс-листа. используется процедурой Loader.LoadFromFileWithScript
// на вход подается открытый Dataset, который нужно заполнить в соответствии с полями:


// если вернуть закрытый датасет, то операция не будет продолжена, и предполагается, что скрипт самостоятельно разобрался с прайсом.
// для самостоятельности скрипту передается ID - идентификатор прайса, который сейчас заливается.
// но в целом задача скрипта - транспортировать данные из файла Filename в Dataset


var // предопределенные скриптом переменные
    Filename :string; // Файл импорта
    SelfLoader :TPriceLoader; // вызывающий объект
    
    
function MycorrectDecimalString(Value :string) :string;
var i :integer;
begin
  result := Value;
  for i := length( result) downto 1 do 
  begin
    if not (IsAlphaDigit(result[i]) or (result[i]=',') or (result[i]='.'))    
    then result := copy(result,1,i-1)+copy(result,i+1,length(result)); // delete(result,i,1);
  end;
end;

    // собственные объекты
var tmpDir :string;
    tmpfile :string;
    Mappings :string;
begin
  try
    tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now));
    forcedirectories(tmpdir);

    tmpfile := tmpdir + extractfilename(FileName);

    copyfile(filename,tmpfile);
    try

      readxls(selfloader.importcds, tmpfile,false,true,0);
      
      selfloader.Field_CODE_Goods := 'Код';
      selfloader.Field_Name_Goods := 'Товар';
      SelfLoader.Field_Name_Producer := 'Производитель';

      SelfLoader.Field_Barcode := 'ШтрихКод';
      if selfloader.importcds.findfield(selfloader.Field_Barcode)=nil
      then SelfLoader.Field_Barcode := 'Штрих-код';
      if selfloader.importcds.findfield(selfloader.Field_Barcode)=nil
      then SelfLoader.Field_Barcode := '';

      SelfLoader.Field_IsLiveneed := 'ЖВЛС';
      if selfloader.importcds.findfield(selfloader.Field_IsLiveneed)=nil
      then SelfLoader.Field_IsLiveneed := 'ЖНВЛС';

      SelfLoader.Field_shelf_life := 'Срок годности';
      if selfloader.importcds.findfield(selfloader.Field_shelf_life)=nil
      then SelfLoader.Field_shelf_life := 'Срок_годн_';

      SelfLoader.Field_Price_Registry := 'Цена реестра руб_';

      SElfLoader.Field_place_cap := 'Заводская упаковка';
      if selfloader.importcds.findfield(selfloader.field_place_cap)=nil
      then selfloader.field_place_cap := 'Уп_';
      
      selfloader.field_price := 'Цена с НДС руб_';
      if selfloader.importcds.findfield(selfloader.field_price)=nil
      then selfloader.field_price := 'Цена с НДС руб';
      if selfloader.importcds.findfield(selfloader.field_price)=nil
      then selfloader.field_price := 'Цена руб_';
      
      SElfLoader.Field_quantity := 'Остаток';
      
      if selfloader.ImportCDS.findfield(selfloader.Field_Quantity)<>nil
      then begin
        selfloader.importcds.first;
        while not selfloader.importcds.eof do 
        begin
          selfloader.importcds.edit;
          selfloader.importcds.fieldbyname(selfloader.field_quantity).asstring := MycorrectDecimalString(selfloader.importcds.fieldbyname(selfloader.field_quantity).asstring);
          selfloader.importcds.post;
          selfloader.importcds.next;
        end;
      end;

      if selfloader.ImportCDS.findfield(selfloader.Field_IsLiveneed)<>nil
      then begin
        selfloader.importcds.first;
        while not selfloader.importcds.eof do 
        begin
          selfloader.importcds.edit;
          if selfloader.importcds.fieldbyname(selfloader.Field_IsLiveneed).asstring>''
          then selfloader.importcds.fieldbyname(selfloader.Field_IsLiveneed).asstring := '1';
          selfloader.importcds.post;
          selfloader.importcds.next;
        end;
      end;
      
      selfloader.importcds.savetofile('c:\temp\1.cds');
      //SElfLoader.Field_min_amount := 'Необходимое кол_во для заказа';
      

    finally
      cleardir(tmpdir);
      deletedir(tmpdir);
    end;

  finally
  end;


end.
