⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arreportsform.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    panelReports.visible := false;
    btnBack.enabled := true;
    panelOptions.visible := true;
    if (lboReports.ItemIndex = 0) or (lboReports.ItemIndex = 2) then begin
      editAsOfDate.enabled := true; editAsOfDate.visible := true; lblAsOfDate.visible := true; btnAsOfDate.visible := true; btnAsOfDate.enabled := true; editAsOfDate.setfocus;
      editGLPeriod.enabled := false; editGLYear.enabled := false; editGLPeriod.visible := false; editGLYear.visible := false; lblPeriod.visible := false;
      editMinOwing.enabled := true; editMinOwing.visible := true; lblMinOwing.visible := true;
      editMinDays.enabled := true; editMinDays.visible := true; lblMinDays.visible := true;
      lblCurrency.top := Trunc(76*FontFactor); cboCurrency.top := Trunc(72*FontFactor);
      lblCustomer.top := Trunc(100*FontFactor); cboCustomer.top := Trunc(96*FontFactor);
    end else begin
      editGLPeriod.enabled := true; editGLYear.enabled := true; editGLPeriod.visible := true; editGLYear.visible := true; lblPeriod.visible := true; editGLPeriod.setfocus;
      editAsOfDate.enabled := false; editAsOfDate.visible := false; lblAsOfDate.visible := false; btnAsOfDate.visible := false; btnAsOfDate.enabled := false;
      editMinOwing.enabled := false; editMinOwing.visible := false; lblMinOwing.visible := false;
      editMinDays.enabled := false; editMinDays.visible := false; lblMinDays.visible := false;
      lblCurrency.top := Trunc(88*FontFactor); cboCurrency.top := Trunc(84*FontFactor);
      lblCustomer.top := Trunc(116*FontFactor); cboCustomer.top := Trunc(112*FontFactor);
    end;
    btnNext.caption := '&Preview';
    lblReportTitle.caption := lboReports.Items[lboReports.ItemIndex];
  end else if panelOptions.visible = true then begin
    if screen.ActiveControl.name = 'editAsOfDate' then SetAsOfDate(AsOfDate, editAsOfDate);   //If Enter was pressed, this hasn't been done yet.
    if screen.ActiveControl.name = 'editGLPeriod' then SetintGLPeriod(intGLPeriod, editGLPeriod);   //If Enter was pressed, this hasn't been done yet.
    if screen.ActiveControl.name = 'editGLYear' then SetintGLYear(intGLYear, editGLYear);   //If Enter was pressed, this hasn't been done yet.
    if screen.ActiveControl.name = 'editMinOwing' then SetcurMinOwing(curMinOwing, editMinOwing);   //If Enter was pressed, this hasn't been done yet.
    if screen.ActiveControl.name = 'editMinDays' then SetintMinDays(intMinDays, editMinDays);   //If Enter was pressed, this hasn't been done yet.
    if cboCustomer.Items.IndexOf(cboCustomer.Text) < 0 then begin  //If Enter was pressed, this edit hasn't been done yet.
      cboCustomer.setfocus;
      raise(Exception.Create('Choose an item from the list'));
    end;
    if cboCurrency.Items.IndexOf(cboCurrency.Text) < 0 then begin  //If Enter was pressed, this edit hasn't been done yet.
      cboCurrency.setfocus;
      raise(Exception.Create('Choose an item from the list'));
    end;
    modalResult := mrOK;
    //if license = '' then begin frmBS1.FreewareMessage; exit; end;
    if lboReports.ItemIndex = 0 then begin
      screen.cursor := crHourglass;
      application.createform (TrptAgedTrialBalance,rptAgedTrialBalance);
      rptAgedTrialBalance.lblAsOf.caption := 'Aged as of: ' + FormatDateTime('dd mmm yy', AsOfDate);
      rptAgedTrialBalance.lblSelection.caption := '';
      rptAgedTrialBalance.lblSelection2.caption := '';
      if (frmARReports.CurrencyID > 0) or (frmARReports.CustomerID > 0) then begin
        //strWHERE := ' WHERE (1 = 1)';
        strWHERE := '';   //SQL already has a WHERE clause.
        if (frmARReports.CurrencyID > 0) then begin
          strWHERE := strWHERE + ' AND (CurrencyID = ' + IntToStr(frmARReports.CurrencyID) + ')';
          rptAgedTrialBalance.lblSelection.caption := rptAgedTrialBalance.lblSelection.caption + '     Currency: ' + cboCurrency.Text;
        end;
        if (frmARReports.CustomerID > 0) then begin
          strWHERE := strWHERE + ' AND (CustomerID = ' + IntToStr(frmARReports.CustomerID) + ')';
          rptAgedTrialBalance.lblSelection.caption := rptAgedTrialBalance.lblSelection.caption + '     Customer: ' + cboCustomer.Text;
        end;
        rptAgedTrialBalance.qryARInv.SQL[0] := rptAgedTrialBalance.qryARInv.SQL[0] + strWHERE;
      end;
      if MinOwing > 0 then rptAgedTrialBalance.lblSelection2.caption := rptAgedTrialBalance.lblSelection2.caption + '     Min Owing: ' + FloatToStrF(MinOwing,ffCurrency,18,2);
      if MinDays >0 then rptAgedTrialBalance.lblSelection2.caption := rptAgedTrialBalance.lblSelection2.caption + '     Min Days Old: ' + IntToStr(MinDays);
      if rptAgedTrialBalance.lblSelection2.caption = '' then begin
        rptAgedTrialBalance.lblSelection.top := 19;
        rptAgedTrialBalance.lblSelection2.top := 0;
      end else begin
        rptAgedTrialBalance.lblSelection.top := 5;
        rptAgedTrialBalance.lblSelection2.top := 19;
      end;
      rptAgedTrialBalance.qryARInv.Active := true;
      self.hide;
      screen.cursor := crDefault;
      rptAgedTrialBalance.QuickReport.Preview;
    {end else if lboReports.ItemIndex = 1 then begin
      Showmessage('AR Statements... ' + 'This program has not been written yet.' + #13 +
              'Please check our website www.dbsonline.com for a more recent version.' + #13 + #13 +
              'Meanwhile you can access this data via MS Access, MS Excel, Paradox, etc.' + #13 +
              'To avoid upsetting data, close BS/1, then copy all files from folder "data" and' + #13 +
              'only open the copies.  Tables are in Paradox format.' + #13 + #13 +
              'arinv.db, arpmt.db, and customer.db contain invoices, payments, and customer names, etc.');}
    end else if lboReports.ItemIndex = 1 then begin
      screen.cursor := crHourglass;
      application.createform (TrptARHistory,rptARHistory);
      rptARHistory.lblSelection.caption := '';
      if (frmARReports.CurrencyID > 0) then rptARHistory.lblSelection.caption := rptARHistory.lblSelection.caption + '     Currency: ' + cboCurrency.Text;
      if (frmARReports.CustomerID > 0) then rptARHistory.lblSelection.caption := rptARHistory.lblSelection.caption + '     Bill-to: ' + cboCustomer.Text;
      self.hide;
      screen.cursor := crDefault;
      rptARHistory.QuickReport.Preview;
    end else if lboReports.ItemIndex = 2 then begin
      screen.cursor := crHourglass;
      application.createform (TrptARStatements,rptARStatements);
      rptARStatements.lblAsOf.caption := FormatDateTime('dd mmmm yyyy', AsOfDate);
      rptARStatements.lblHAsOf.caption := rptARStatements.lblAsOf.caption;
      if (frmARReports.CustomerID = 0) then rptARStatements.qryARInv.SQL[0] := rptARStatements.qryARInv.SQL[0] + ' AND (PrintStatement = True)';   //If all customers selected: only select those with "PrintStatement" checked.
      if (frmARReports.CurrencyID > 0) or (frmARReports.CustomerID > 0) then begin
        //strWHERE := ' WHERE (1 = 1)';
        strWHERE := '';   //SQL already has a WHERE clause.
        if (frmARReports.CurrencyID > 0) then begin
          strWHERE := strWHERE + ' AND (CurrencyID = ' + IntToStr(frmARReports.CurrencyID) + ')';
        end;
        if (frmARReports.CustomerID > 0) then begin
          strWHERE := strWHERE + ' AND (CustomerID = ' + IntToStr(frmARReports.CustomerID) + ')';
        end;
        rptARStatements.qryARInv.SQL[0] := rptARStatements.qryARInv.SQL[0] + strWHERE;
      end;
      rptARStatements.qryARInv.Active := true;
      self.hide;
      screen.cursor := crDefault;
      rptARStatements.QuickReport.Preview;
    end;
  end;
end;

procedure TfrmARReports.FormShow(Sender: TObject);
var
  Year, Month, Day: word;
begin
  panelReports.visible := true;
  panelOptions.visible := false;
  btnBack.enabled := false;
  btnNext.caption := '&Next >';
  lboReports.setfocus;
  lboReports.ItemIndex := 0;

  cboCurrency_Load(dmLookUps.tblCurrency, cboCurrency);   //Populate "currency" combobox.
  cboCustomer_Load(dmLookUps.tblCustomer, cboCustomer);   //Populate "customer" combobox.

  AsOfDate := Date;
  editAsOfDate.text := FormatDateTime('dd mmm yy', AsOfDate);
  DecodeDate(Date, Year, Month, Day);
  if frmBS1.tblCompanyDefaultPeriodPP.value > 0 then GLPeriod := frmBS1.tblCompanyDefaultPeriodPP.value
  else GLPeriod := Month;
  if frmBS1.tblCompanyDefaultPeriodYYYY.value > 0 then GLYear := frmBS1.tblCompanyDefaultPeriodYYYY.value
  //else if frmBS1.tblCompanyFiscalYear.value > 0 then GLYear := frmBS1.tblCompanyFiscalYear.value
  else GLYear := Year;
  editGLPeriod.text := IntToStr(GLPeriod);
  editGLYear.text := IntToStr(GLYear);
  MinOwing := 0;
  editMinOwing.text := FloatToStrF(MinOwing,ffCurrency,18,2);
  MinDays := 0;
  editMinDays.text := IntToStr(MinDays);
end;

procedure TfrmARReports.btnBackClick(Sender: TObject);
begin
  if panelOptions.visible = true then begin
    panelOptions.visible := false;
    panelReports.visible := true;
    btnNext.caption := '&Next >';
    lboReports.setfocus;
    btnBack.enabled := false;
  end;
end;

procedure TfrmARReports.lboReportsDblClick(Sender: TObject);
begin
  btnNextClick(sender);
end;

procedure TfrmARReports.FormCreate(Sender: TObject);
begin
  cboCurrencyIDs := TStringList.create;   //Create a TStringList to store CurrencyIDs for the combobox.
  cboCustomerIDs := TStringList.create;   //Create a TStringList to store CustomerIDs for the combobox.
end;

procedure TfrmARReports.cboCurrencyExit(Sender: TObject);
begin
  if cboCurrency.Items.IndexOf(cboCurrency.Text) < 0 then begin
    cboCurrency.setfocus;
    raise(Exception.Create('Choose an item from the list'));
  end;
end;

procedure TfrmARReports.cboCustomerExit(Sender: TObject);
begin
  if cboCustomer.Items.IndexOf(cboCustomer.Text) < 0 then begin
    cboCustomer.setfocus;
    raise(Exception.Create('Choose an item from the list'));
  end;
end;

procedure TfrmARReports.btnAsOfDateClick(Sender: TObject);
begin
  if screen.ActiveControl.name = 'editAsOfDate' then SetAsOfDate(AsOfDate, editAsOfDate);   //If on date and it was changed, this hasn't been done yet.
  frmCalendar.caption := 'Report As Of Date';
  if AsOfDate > StrToDate('01' + DateSeparator + '01' + DateSeparator + '1900') then frmCalendar.date := AsOfDate
  else frmCalendar.date := Date;
  if frmCalendar.ShowModal = mrOk then AsOfDate := frmCalendar.Date;
  editAsOfDateEnter(Sender);
  editAsOfDate.setfocus;
  //editAsOfDate.SelectAll;
end;

procedure TfrmARReports.editAsOfDateEnter(Sender: TObject);
begin
  editAsOfDate.EditMask := '!99/99/00;1;_';
  editAsOfDate.text := DateToStr(AsOfDate);
  editAsOfDate.SelectAll;
end;

procedure TfrmARReports.editAsOfDateExit(Sender: TObject);
begin
  SetAsOfDate(AsOfDate, editAsOfDate);
  editAsOfDate.EditMask := '';
  editAsOfDate.text := FormatDateTime('dd mmm yy', AsOfDate);
end;

procedure TfrmARReports.editAsOfDateKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key = ^J then begin   //Ctrl+Enter show calendar.
    btnAsOfDateClick(sender);
    Key := #0;
  end else if Key = '+' then begin   //Increase/decrease date via +/- keys.
    SetAsOfDate(AsOfDate, editAsOfDate);   //Update date for any changes keyed.
    if AsOfDate < StrToDate('01' + DateSeparator + '01' + DateSeparator + '1900') then AsOfDate := Date;
    AsOfDate := AsOfDate + 1;
    editAsOfDate.text := DateToStr(AsOfDate);
    key := #0;
  end else if Key = '-' then begin
    SetAsOfDate(AsOfDate, editAsOfDate);   //Update date for any changes keyed.
    if AsOfDate < StrToDate('01' + DateSeparator + '01' + DateSeparator + '1900') then AsOfDate := Date;
    AsOfDate := AsOfDate - 1;
    editAsOfDate.text := DateToStr(AsOfDate);
    key := #0;
  end;
end;

procedure TfrmARReports.editGLPeriodEnter(Sender: TObject);
begin
  editGLPeriod.text := IntToStr(GLPeriod);
  editGLPeriod.SelectAll;
end;

procedure TfrmARReports.editGLPeriodExit(Sender: TObject);
begin
  SetintGLPeriod(intGLPeriod, editGLPeriod);
end;

procedure TfrmARReports.editGLYearEnter(Sender: TObject);
begin
  editGLYear.text := Copy(IntToStr(GLYear),3,2);   //If editing, show last 2 digits of year.
  editGLYear.SelectAll;
end;

procedure TfrmARReports.editGLYearExit(Sender: TObject);
begin
  SetintGLYear(intGLYear, editGLYear);
  editGLYear.text := IntToStr(GLYear);
end;

procedure TfrmARReports.editMinDaysEnter(Sender: TObject);
begin
  editMinDays.text := IntToStr(MinDays);
  editMinDays.SelectAll;
end;

procedure TfrmARReports.editMinDaysExit(Sender: TObject);
begin
  SetintMinDays(intMinDays, editMinDays);
end;

procedure TfrmARReports.editMinOwingEnter(Sender: TObject);
begin
  editMinOwing.text := FloatToStr(MinOwing);
  editMinOwing.SelectAll;
end;

procedure TfrmARReports.editMinOwingExit(Sender: TObject);
begin
  SetcurMinOwing(curMinOwing, editMinOwing);
  editMinOwing.text := FloatToStrF(MinOwing,ffCurrency,18,2);
end;

procedure TfrmARReports.btnCancelClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -