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

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

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

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

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


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

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


var
  MailMessage :Variant;
  Table :ttable;
  TaGoods :TTAble;

  strValue :string;

  subcode :string;
begin

  if ExportAgentCode >'' then SubCode := ExportAgentCode
  else if ExportAgent2Code >''
  then SubCode := ExportAgent2Code
  else if ExportNakladID_DOC>''
  then SubCode := ExportNakladID_DOC;

  if (SubCode ='') then
  begin
    CreateHintE('Невозможно сохранить накладную, нужно вписать код подразделения в поле "альтернативный код" для данного подразделения в справочнике контрагентов');
    exit;
  end;

  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 := 'sclad@bonum.ru';
    MailMessage.subject := 'Накладная от ООО Прайд';

    TaGoods := TTAble.create(nil);
    table := ttable.create(nil);
    try
      taGoods.databasename := 'dbkassa';
      taGoods.tablename := 'tovar.db';
      tagoods.open;

      table.tablename := gettempdir +'PA'+SubCode+'_'+inttostr(ExportNakladNom)+'.dbf';

      deletefile(table.tablename);

      BDEExecSQL(
        'create table '+QuotedSTr(TAble.tablename) +
        ' ( '+
        ' N_NACL varchar(12),'+
        ' D_NAKL DATE,'+
        ' CODE VARCHAR(20),'+
        ' NAME varchar(200),'+
        ' SCANCOD varchar(13),'+
        ' FACTORY VARCHAR(200),'+
        ' COUNTRY VARCHAR(100),'+
        ' QUANTITY numeric(14,2),'+

        ' PRICE_MAKE numeric(14,2),'+
        ' PRICE_NAKE numeric(14,4),'+
        ' SUM_NAKED numeric(14,4),'+
        ' NDS_PR numeric(14,2),'+
        ' NDS_SUM numeric(14,2),'+
        ' PRICE_REES numeric(14,2),'+
        ' DATE_REES date,'+
        ' ISLIFE numeric(1),'+
        ' SERIES varchar(15),'+

        ' DATE_VALID DATe,'+
        ' GTD varchar(25),'+
        ' SERT varchar(70),'+
        ' FILIAL varchar(30),'+
        ' APTEKA varchar(30),'+
        ' PRICE numeric(14,2)'+

        ' )',[null]);

{
N_NACL
Character(12)
Номер расходной накладной
D_NACL
Date
Дата расходной накладной
CODE
Numeric(11)
Код товара
NAME
Character(80)
Название товара
SCANCOD
Character(13)
Штрихкод
FACTORY
Character(40)
Название завода-изготовителя
COUNTRY
Character(20)
Страна
QUANTITY
Numeric(14,2)
Количество
PRICE_MAKE
Numeric(14,2)
Цена производителя без НДС за единицу
PRICE_NAKE
Numeric(14,2)
Цена поставщика без НДС
SUM_NAKED
Numeric(14,2)
Сумма поставщика без НДС
NDS_PR
Numeric(14,2)
НДС поставщика (%)
NDS_SUM
Numeric(14,2)
НДС поставщика (Сумма)
PRICE_REES
Numeric(14,2)
Цена гос.Регистрации
DATE_REES
Date
Дата гос. Регистрации
ISLIFE
Numeric(1)
Признак ЖВЛС (0-нет, 1-да)
SERIES
Character(15)
Серия
DATE_VALID
Date
Срок годности
GTD
Character(25)
Номер ГТД
SERT
Character(70)
Номер сертификата
FILIAL
Character(30)
Филиал поставщика
APTEKA
Character(30)
Аптека, куда поступает товар (номер)
}
      table.open;


      dataset.disablecontrols;
      try

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

          tagoods.findkey([dataset.fieldbyname('nn').asstring]);

          table.append;

          StrValue := dataset.fieldbyname('producer').asstring;

          table.fieldbyname('n_nacl').asstring := inttostr(ExportnakladNom);
          table.fieldbyname('d_nakl').asdatetime := Exportnakladdata;



          table.fieldbyname('code').asstring := inttostr(dataset.fieldbyname('id_goods').asinteger * 1000 +dataset.fieldbyname('producer').asInteger);

          //if StrValue>''
          //then table.fieldbyname('code').asstring := table.fieldbyname('code').asstring + ':'+ StrVAlue;

          table.fieldbyname('name').asstring := dataset.fieldbyname('name').asstring;

          table.fieldbyname('SCANCOD').asstring := dataset.fieldbyname('barcode').asstring;

          table.fieldbyname('FACTORY').asstring := dataset.fieldbyname('producername').asstring;
          table.fieldbyname('COUNTRY').asstring := dataset.fieldbyname('producercountryname').asstring;

          table.fieldbyname('QUANTITY').asfloat := dataset.fieldbyname('kol').asfloat;

          table.fieldbyname('PRICE').asfloat := dataset.fieldbyname('cena').asfloat;
          table.fieldbyname('PRICE_MAKE').asfloat := dataset.fieldbyname('firstcena').asfloat;
          table.fieldbyname('PRICE_NAKE').asfloat := dataset.fieldbyname('cenanotnds').asfloat;
          table.fieldbyname('SUM_NAKED').asfloat := dataset.fieldbyname('notndssumma').asfloat;

          table.fieldbyname('nds_pr').asfloat := dataset.fieldbyname('nds').asinteger;
          table.fieldbyname('nds_sum').asfloat := dataset.fieldbyname('ndssumma').asfloat;


          table.fieldbyname('PRICE_REES').asfloat := dataset.fieldbyname('reestrcena').asfloat;

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

          table.fieldbyname('islife').asinteger := tagoods.fieldbyname('isliveneed').asinteger;

          table.fieldbyname('series').asstring := dataset.fieldbyname('seria').asstring;
          if dataset.fieldbyname('srok').asdatetime <> 0
          then
            table.fieldbyname('date_valid').asdatetime := dataset.fieldbyname('srok').asdatetime;

          table.fieldbyname('gtd').asstring := dataset.fieldbyname('tamog').asstring;
          table.fieldbyname('sert').asstring := dataset.fieldbyname('sertif').asstring;

          table.fieldbyname('apteka').asstring := subcode;


          table.post;

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

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

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


end.
