(*
  Скрипт передачи списков клиентов накопительных дисконтов,
  а также выручек с данного склада.
  Скрипт передает всем другим складам.

  Предполагается, что все аптеки  имеют собственные системы пересчета скидок.

  Также все аптеки имеют одинаковые номера в справочниках контрагентов.
*)

const OutputDir = 'c:\mail\out\';

const DatabaseName = 'dbkassa';

const
      //Storage  = 770; // Склад, информация по которому передается.
      //SaveAsStorage  = 1; // Номер данного склада в базе, если 0, то совпадает с Storage
      PeriodDays = 7; // Период в днях, за который снимается данный отчет

      withDialog =  true; // Запрашивать ли данные у пользователя.

var Form :TForm;
    Lab :TLabel;
    EditDate :TDateTimePicker;
    Bevel,Bevel1 :Tbevel;
    Button1 :Tbutton;
    Button2 :tButton;


var
    //DirList :TStringList;
    FName :string;
    FName1 :string;
    i :integer;

    CDS1 :TClientDataset;
    Query :TQuery;
    Dir1 :string;
    Code :string;
begin
  with TMyWait.create('Идет сбор данных') do
  try

    Form := Tform.create(nil);
    try
      begin // создаем форму

        Form.Caption := 'Экспорт данных';
        Form.BorderStyle := bsDialog;
        Form.Width := 300;
        Form.Height := 200;
        Form.position := poScreenCenter;
        Form.Font.name := 'Tahoma';


        Bevel := tbevel.create(form);
        Bevel.Shape := bsTopLine;
        Bevel.Height := 4;
        Bevel.align := alTop;
        bevel.parent := Form;


        Lab := TLabel.create(form); // удалять не нужно, Form его owner, сам удалит
        Lab.caption := 'Укажите начальную дату:';
        Lab.font.size := 10;
        Lab.Top := 20;
        Lab.Left := (Form.clientWidth - Lab.Width) div 2;
        Lab.parent := Form;

        EditDate := TDateTimePicker.create(Form);
        EditDate.Top := Lab.Top +Lab.Height + 10;
        EditDate.width := 100;
        EditDate.Left := (Form.clientWidth - Editdate.width) div 2;
        Editdate.parent := Form;

        Bevel1 := TBevel.create(Form);
        Bevel1.shape := bsTopLine;
        Bevel1.Height := 4;
        Bevel1.Width := Form.clientWidth - 30;
        Bevel1.Left := (Form.ClientWidth - Bevel1.Width) div 2;
        Bevel1.Top := Editdate.Top + EditDate.Height + 20;
        Bevel1.parent := Form;

        Button1 := Tbutton.create(Form);
        Button1.Caption := 'Старт';
        Button1.Width := 70;
        Button1.ModalResult := mrOk;
        Button1.Top := Bevel1.Top + 13;
        button1.Default := true;
        Button1.Parent := Form;


        Button2 := Tbutton.create(Form);
        Button2.Caption := 'Отмена';
        Button2.Width := 70;
        Button2.ModalResult := mrCancel;
        Button2.Top := Button1.top;
        Button2.left := Form.ClientWidth - Button2.Width - 35;
        Button2.Cancel := true;
        Button2.Parent := Form;

        Button1.left := Button2.left - Button1.width - 5;


        Form.clientHeight := Button1.Top + Button1.height + 15;

      end;

      EditDate.date := date - PeriodDays;

      if not WithDialog or (Form.ShowModal = mrOk)
      then begin
        FName1 := ExportDiscountPercentsSummary(GetTEmpDir, EditDate.Date, AppIniFile.REadInteger('common','currentsklad',1) ); //, SaveAsStorage)


        //DirList := TstringLIst.create;
        Query := TQuery.create(nil);
        CDS1 := TClientDAtaset.create(nil);
        try
           //StringToList(OutputDirs,DirList,';,');

           FName := ExportDiscountPercentsORGs(GetTEmpDir, false);
           try
             //CreateHIntI(FName);

              Query.databasename := Databasename;
              Query.sql.text := 'select id,name,code from agents where issklad =1 and (code >"")';
              REadDataset(CDS1,Query);




             cds1.first;
             while not cds1.eof do
             begin

               code := cds1.fieldbyname('code').asstring;

               Dir1 := includetrailingpathdelimiter(includetrailingpathdelimiter(outputdir)+CODE);
               Forcedirectories({DirList[i])} Dir1);
               CopyFile(FName,Dir1+extractfilename(FName),false);
               CopyFile(FName1,Dir1+extractfilename(FName1),false);

               cds1.next;
             end;
           finally
             DeleteFile(FName);
           end;
        finally
          DeleteFile(FName1);
          //DirList.free;
          Query.free;
          cds1.free;
        end;
        CreateHIntI('Операция передачи списка клиентов дисконтной программы ','',30);



      end;
    finally
      Form.free;
    end;

  finally
    free
  end;
end.
