// скрипт выгрузки прайс-листа для ЗАО Бонум. Используется почта x-price

// предопределены переменные:

VAR
 VariantName :string; // имя варианта в программе
 VariantFile :string; // файл-скрипт
 Dataset :tdataset; // файл с прайс-листом

var
  MailMessage :Variant;
  Table :ttable;
  table2 :ttable;

  strValue :string;
  IntValue :integer;

begin
  with TmyWait.create('Идет экспорт прайс-листа') do
  try


    MailMessage := CreateOleObject('mailprocessor.mpmailmessage');
    if not MailMessage.srv.connected
    then mailMessage.srv.connectwp('Пользователь','1');

    if not mailMessage.srv.connected then
    begin
      createhinte('Ошибка, сервер не подключен');
      exit;
    end;

    MailMessage.id := 0; // инициализируем
    MailMessage.recipient := 'price@bonum.ru';
    MailMessage.subject := 'Прайс-лист ООО Прайд';

    table := ttable.create(nil);
    try
      table2 := ttable.create(nil);

      table.tablename := gettempdir+'pride_ha.dbf';
      table2.tablename := gettempdir+'pride_ro.dbf';

      deletefile(table.tablename);
      deletefile(table2.tablename);

      BDEExecSQL(
        'create table '+QuotedSTr(TAble.tablename) +
        ' ( '+
        ' CODE_GOODS varchar(20),'+
        ' NAME_GOODS varchar(200),'+
        ' SHELF_LIFE date,'+
        ' NAME_PRD varchar(200),'+
        ' NAME_CNT varchar(100),'+
        ' PRICE numeric(15,4),'+
        ' DIVNUM integer,'+
        ' BALANCE numeric(15,4),'+
        ' NDS integer'+

        ' )',[null]);


      BDEExecSQL(
        'create table '+QuotedSTr(TAble2.tablename) +
        ' ( '+
        ' CODE_GOODS varchar(20),'+
        ' NAME_GOODS varchar(200),'+
        ' SHELF_LIFE date,'+
        ' NAME_PRD varchar(200),'+
        ' NAME_CNT varchar(100),'+
        ' PRICE numeric(15,4),'+
        ' DIVNUM integer,'+
        ' BALANCE numeric(15,4),'+
        ' NDS integer'+

        ' )',[null]);


        // код товара у поставщика,
        // наименование товара у поставщика,
        // срок годности препарата,
        // наименование производителя,
        // страна производитель,
        // цена,
        // деление упаковки (кол-во в упаковки),
        // остаток на складе поставщика.

      table.open;
      table2.open;


      dataset.disablecontrols;
      try

        progressbarmax := dataset.recordcount;
        dataset.first;
        while not dataset.eof do
        begin
          incprogress;

          if pos('111',dataset.fieldbyname('nn').asstring) = 1 // ХАРТМАН
          then begin

            table.append;


            IntValue := dataset.fieldbyname('id_goods').asInteger * 1000;

            IntValue := IntValue + dataset.fieldbyname('producer').asInteger;

            table.fieldbyname('code_goods').asstring := inttostr(IntValue);

            table.fieldbyname('name_goods').asstring := dataset.fieldbyname('name').asstring;
            table.fieldbyname('name_prd').asstring := dataset.fieldbyname('producername').asstring;
            table.fieldbyname('name_cnt').asstring := dataset.fieldbyname('countryname').asstring;

            if dataset.fieldbyname('srokkart').asdatetime<>0
            then   table.fieldbyname('shelf_life').asdatetime := dataset.fieldbyname('srokkart').asdatetime;

            table.fieldbyname('balance').asfloat := dataset.fieldbyname('ostat').asfloat;
            table.fieldbyname('price').asfloat := dataset.fieldbyname('rs_cena').asfloat;
            table.fieldbyname('nds').asinteger := dataset.fieldbyname('nds').asinteger;

            table.post;
          end
          else
          if pos('1012',dataset.fieldbyname('nn').asstring) = 1 // РОКС
          then begin

            table2.append;


            IntValue := dataset.fieldbyname('id_goods').asInteger * 1000;

            IntValue := IntValue + dataset.fieldbyname('producer').asInteger;

            table2.fieldbyname('code_goods').asstring := inttostr(IntValue);

            table2.fieldbyname('name_goods').asstring := dataset.fieldbyname('name').asstring;
            table2.fieldbyname('name_prd').asstring := dataset.fieldbyname('producername').asstring;
            table2.fieldbyname('name_cnt').asstring := dataset.fieldbyname('countryname').asstring;

            if dataset.fieldbyname('srokkart').asdatetime<>0
            then   table2.fieldbyname('shelf_life').asdatetime := dataset.fieldbyname('srokkart').asdatetime;

            table2.fieldbyname('balance').asfloat := dataset.fieldbyname('ostat').asfloat;
            table2.fieldbyname('price').asfloat := dataset.fieldbyname('rs_cena').asfloat;
            table2.fieldbyname('nds').asinteger := dataset.fieldbyname('nds').asinteger;

            table2.post;
          end;

          dataset.next;
        end;
     finally
       dataset.enablecontrols;
     end;

     table.close;
     table2.close;
     MailMessage.addAttachment(TAble.tablename);
     MailMessage.addAttachment(TAble2.tablename);
     MailMessage.save;
    finally
      table.free;
    end;
  finally
    free
  end;

  CreateHintI('Операция завершена, не забудьте доставить почту в MailProcessor');


end.
