home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk15 / mastapp.pak / CUSTORD.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  4.9 KB  |  180 lines

  1. unit Custord;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, DBTables, DB, DBCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
  8.  
  9. type
  10.   TBrCustOrdForm = class(TForm)
  11.     CtrlsPanel: TPanel;
  12.     Navigator: TDBNavigator;
  13.     Cust: TTable;
  14.     CustSource: TDataSource;
  15.     Orders: TTable;
  16.     OrdersSource: TDataSource;
  17.     CustQuery: TQuery;
  18.     CustQueryCustNo: TFloatField;
  19.     CustQueryCompany: TStringField;
  20.     BtnPanel: TPanel;
  21.     EditBtn: TButton;
  22.     CloseBtn: TButton;
  23.     OrdersOrderNo: TFloatField;
  24.     OrdersCustNo: TFloatField;
  25.     OrdersItemsTotal: TCurrencyField;
  26.     OrdersTaxRate: TFloatField;
  27.     OrdersFreight: TCurrencyField;
  28.     OrdersAmountPaid: TCurrencyField;
  29.     OrdersAmountDue: TCurrencyField;
  30.     CustQueryPhone: TStringField;
  31.     ActivateBtn: TSpeedButton;
  32.     CustCustNo: TFloatField;
  33.     CustCompany: TStringField;
  34.     CustPhone: TStringField;
  35.     DefineBtn: TSpeedButton;
  36.     CustLastInvoiceDate: TDateTimeField;
  37.     CustQueryLastInvoiceDate: TDateTimeField;
  38.     OrdersSaleDate: TDateTimeField;
  39.     OrdersShipDate: TDateTimeField;
  40.     CustPanel: TPanel;
  41.     CustGrid: TDBGrid;
  42.     OrdersPanel: TPanel;
  43.     OrdersGrid: TDBGrid;
  44.     procedure OrdersCalcFields(DataSet: TDataSet);
  45.     procedure CustGridEnter(Sender: TObject);
  46.     procedure SetQuery(Sender: TObject);
  47.     procedure FormCreate(Sender: TObject);
  48.     procedure ActivateQuery(Sender: TObject);
  49.     procedure EditBtnClick(Sender: TObject);
  50.     procedure CloseBtnClick(Sender: TObject);
  51.     procedure OrdersGridEnter(Sender: TObject);
  52.     procedure CustBeforeOpen(DataSet: TDataset);
  53.   private
  54.     FActiveSource: TDataSource;
  55.     FCustNo: Double;
  56.     FOrderNo: Double;
  57.     function GetCustNo: Double;
  58.     function GetOrderNo: Double;
  59.     procedure SetActiveSource(DataSource: TDataSource);
  60.     procedure SetCustNo(NewCustNo: Double);
  61.     procedure SetOrderNo(NewOrderNo: Double);
  62.     property ActiveSource: TDataSource read FActiveSource write SetActiveSource;
  63.   public
  64.     property CustNo: Double read GetCustNo write SetCustNo;
  65.     property OrderNo: Double read GetOrderNo write SetOrderNo;
  66.   end;
  67.  
  68. var
  69.   BrCustOrdForm: TBrCustOrdForm;
  70.  
  71. implementation
  72.  
  73. uses CustQry, EdCust, EdOrders, Main;
  74.  
  75. {$R *.DFM}
  76.  
  77. procedure TBrCustOrdForm.FormCreate(Sender: TObject);
  78. begin
  79.   CustQuery.Prepare;
  80.   Cust.Open;
  81. end;
  82.  
  83. { retrieve from active customer table or query--whichever is active }
  84. function TBrCustOrdForm.GetCustNo: Double;
  85. begin
  86.   Result := CustSource.Dataset.Fields[0].AsFloat;
  87. end;
  88.  
  89. procedure TBrCustOrdForm.SetCustNo(NewCustNo: Double);
  90. begin
  91.   CustSource.Dataset := Cust;
  92.   Cust.FindKey([NewCustNo]);
  93. end;
  94.  
  95. function TBrCustOrdForm.GetOrderNo: Double;
  96. begin
  97.   Result := OrdersOrderNo.Value;
  98. end;
  99.  
  100. procedure TBrCustOrdForm.SetOrderNo(NewOrderNo: Double);
  101. begin
  102.   Orders.FindKey([NewOrderNo]);
  103. end;
  104.  
  105. procedure TBrCustOrdForm.SetActiveSource(DataSource: TDataSource);
  106. begin
  107.   FActiveSource := DataSource;
  108.   Navigator.DataSource := FActiveSource;
  109. end;
  110.  
  111. procedure TBrCustOrdForm.OrdersCalcFields(DataSet: TDataSet);
  112. begin
  113.   OrdersAmountDue.Value := OrdersItemsTotal.Value +
  114.     OrdersItemsTotal.Value * OrdersTaxRate.Value / 100 +
  115.     OrdersFreight.Value + - OrdersAmountPaid.Value;
  116. end;
  117.  
  118. procedure TBrCustOrdForm.CustGridEnter(Sender: TObject);
  119. begin
  120.   ActiveSource := CustSource;
  121.   CustGrid.Options := CustGrid.Options + [dgAlwaysShowSelection];
  122.   OrdersGrid.Options := OrdersGrid.Options - [dgAlwaysShowSelection];
  123. end;
  124.  
  125. procedure TBrCustOrdForm.OrdersGridEnter(Sender: TObject);
  126. begin
  127.   ActiveSource := OrdersSource;
  128.   OrdersGrid.Options := OrdersGrid.Options + [dgAlwaysShowSelection];
  129.   CustGrid.Options := CustGrid.Options - [dgAlwaysShowSelection];
  130. end;
  131.  
  132. procedure TBrCustOrdForm.SetQuery(Sender: TObject);
  133. begin
  134.   with CustQueryDlg do
  135.   begin
  136.     MsgLab.Caption := 'Customers with LastInvoiceDate ranging:';
  137.     if FromDate = 0 then FromDate := Now;
  138.     if ToDate = 0 then ToDate := Now;
  139.     ShowModal;
  140.   end;
  141. end;
  142.  
  143. procedure TBrCustOrdForm.ActivateQuery(Sender: TObject);
  144. begin
  145.   if not ActivateBtn.Down then
  146.     CustSource.Dataset := Cust
  147.   else
  148.     try
  149.       CustQuery.Close;
  150.       CustQuery.Params[0].AsDatetime := CustQueryDlg.FromDate;
  151.       CustQuery.Params[1].AsDatetime := CustQueryDlg.ToDate;
  152.       CustQuery.Open;
  153.       CustSource.Dataset := CustQuery;
  154.     except
  155.       CustSource.Dataset := Cust;
  156.       ActivateBtn.Down := false;
  157.       ShowMessage('Invalid date range specified');
  158.     end;
  159. end;
  160.  
  161. procedure TBrCustOrdForm.EditBtnClick(Sender: TObject);
  162. begin
  163.   if ActiveSource = CustSource then
  164.     EdCustForm.Edit(ActiveSource.Dataset.Fields[0].AsFloat)
  165.   else
  166.     OrderForm.Edit(OrderNo);
  167. end;
  168.  
  169. procedure TBrCustOrdForm.CloseBtnClick(Sender: TObject);
  170. begin
  171.   Close;
  172. end;
  173.  
  174. procedure TBrCustOrdForm.CustBeforeOpen(DataSet: TDataset);
  175. begin
  176.   Orders.Open;
  177. end;
  178.  
  179. end.
  180.