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

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

const  MY_CODE = '36'; // наш код в аптеке 36,6
       RECIPIENTS = 'odyssey_ec@volga366.ru';

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

 exportNakladID :integer;    // Код накладной

 exportAgent :integer;    // контрагент в накладной
 exportAgentName :string; // наименование контрагента
 exportAgentCODE :string; // альтернативный код

 exportAgent2 :integer;    // грузополучатель
 exportAgent2Name :string; // наименование грузополучателя
 exportAgent2CODE :string; // код грузополучателя


 ExportNakladSrok :tdatetime;
 exportNakladNom :integer;    // номер накладной
 ExportNakladID_DOC :string;  // код документа
 ExportNakladDATA :tdatetime; // дата документа
 ExportNakladOsnov :string;   // основание в накладной
 ExportNakladFACTURA :integer;// фактура в накладной
 ExportNakladSklad :integer;  // склад в накладной

 ExportSklad :integer;    //  склад в накладной
 ExportSkladName :string; // наименование склада в накладной
 ExportSkladCODE :string; // код склада в накладной


var
  MailMessage :Variant;
  TaGoods :TTAble;

  strValue :string;
  FullSTrValue :string;

  subcode :string;

  tablename :string;

  thSumma :currency;

  List :TStringList;


function GetFileName: string;
var StrVal :string;
begin
  StrVal := my_code;
  strval := stringofchar('0',10-Length(StrVAl))+ StrVal;


  Result := StrVAl+'0000000102';
  StrvAl := IntToStr(ExportNakladID);
  StrVAl := stringofchar('0',10-Length(StrVAl))+ StrVal;;

  Result := Result + strval+'.data';
end;

begin



  if exportnakladnom = 0
  then begin
    Exportnakladnom := asinteger(BDEQueryValue('select nomer from rs_nakl where id =:ID', [exportNakladID],'dbkassa'));
    ExportAgent := asinteger(BDEQueryValue('select agent from rs_nakl where id =:ID', [exportNakladID],'dbkassa'));
    Exportnakladid_doc := asstring(BDEQueryValue('select a."value" from rs_dop a where a.id_nakl =:ID and a.name = :nm', [exportNakladID,'Код документа'],'dbkassa'));
    Exportnakladdata := asdatetime(BDEQueryValue('select data from rs_nakl where id =:ID', [exportNakladID],'dbkassa'));
    Exportnakladsrok := asdatetime(BDEQueryValue('select srok from rs_nakl where id =:ID', [exportNakladID],'dbkassa'));
    ExportAgent2Code := asinteger(BDEQueryValue('select b.code from rs_nakl a join agents b on a.id_agent2=b.id where a.id =:ID', [exportNakladID],'dbkassa'));
  end;


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

    MailMessage := CreateOleObject('mailprocessor.mpmailmessage');
    if not MailMessage.srv.connected
    then begin
      mailMessage.srv.connectwp('autouser','1');
    end;

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

    MailMessage.id := 0; // инициализируем
    MailMessage.recipients := RECIPIENTS;
    MailMessage.subject := 'LEMM DATA EXCHANGE MESSAGE';

      TAbleName := gettempdir + getfilename;

      thSumma := 0;
      Dataset.DisableControls;
      try
        dataset.First;
        while not dataset.eof do
        begin
          thsumma := thSumma + dataset.FieldByName('summa').asfloat;
          dataset.Next;
        end;



        List := TStringList.Create;
        try
          list.Text := 'rzdlitel=;';

          list.Add( IntToStr(asinteger(ExportNakladNom))+';'+FormatDateTime('yyyymmdd',asdatetime(ExportNakladData))+';'
                        +bvCurrToStrF(thSumma,'.','','')+';'+FormatDateTime('yyyymmdd',asdatetime(ExportNakladSrok))+';'+asstring(ExportAgent2Code)+';'+';');


          dataset.First;
          while not dataset.eof do
          begin
            if dataset.FieldByName('producer').AsInteger>0
            then StrValue := '_'+Dataset.FieldByName('producer').asstring
            else STrValue := '';

            FullStrValue := dataset.FieldByName('nn').AsString+ StrValue
                +';'+dataset.FieldByName('kol').AsString;

            FullStrValue := FullSTrVAlue + ';'+
                bvcurrtostrF(bvRoundTo(
                   dataset.FieldByName('cena').asfloat * (1-dataset.FieldByName('nds').AsInteger/100)
                   ,-4),'.','','');


            FullStrValue := FullStrValue +
              ';'+dataset.FieldByName('nds').AsString;

            If dataset.FieldByName('seria').AsString=''
            then STrValue := '-'
            else STrvAlue := dataset.FieldByName('seria').AsString;

            FullStrValue := FullSTrValue +
               ';'+StrValue;

            if dataset.fieldbyname('srok').asdatetime=0
            then STrValue := ''
            else STrValue := FormatDateTime('yyyymmdd',dataset.FieldByName('srok').Asdatetime);

            FullStrValue := FullStrValue +
              ';'+StrValue+
              ';'+
                  bvcurrtostrF(bvRoundTo(
                     dataset.fieldbyname('firstcena').asfloat
                     ,-4),'.','','')+
              ';'+Dataset.FieldByName('tamog').AsString+
              ';'+
              ';'+
              ';'+

              ';'+Dataset.FieldByName('barcode').AsString+
              ';'+Dataset.FieldByName('sertif').AsString;


            if Dataset.fieldbyname('sroksertif').asdatetime = 0
            then STrValue := ''
            else StrValue := formatdatetime('yyyymmdd', Dataset.FieldByName('sroksertif').asdatetime);

            FullStrVAlue := FullStrValue +

              ';'+StrValue+
              ';'+Dataset.FieldByName('sertifname').AsString+
              ';'+Dataset.FieldByName('regn').AsString+
              ';'+
              ';';

            List.add(FullStrValue);

            Dataset.Next;
          end;


          List.savetofile(tablename);

          MailMessage.addAttachment(TableName);
          MailMessage.save;

        finally
          List.Free;
        end;
      finally
        Dataset.EnableControls;
      end;
  finally
    free
  end;

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


end.
