stockmoveqry.pas

来自「医药连锁经营管理系统源码」· PAS 代码 · 共 361 行

PAS
361
字号
unit StockMoveQry;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzPanel, TFlatSpeedButtonUnit, ExtCtrls, RzStatus, StrUtils,
  TFlatPanelUnit, Menus, ImgList, ActnList, ModuleAction, RzButton,
  StdCtrls, RzCmboBx, RzRadChk, RzBtnEdt, Mask, RzEdit, ComCtrls, RzDTP,
  RzLabel, RzSplit, Grids, DBGridEh, xEhLibCtl, DB, DBClient, MConnect,
  xBaseFrm, IMainFrm, uDataTypes, ckDBClient, DBFuncs, ceGlobal, RepSelectFrm;

type
  TFmStockMoveQuery = class(TxBaseForm)
    ptBkPanel: TFlatPanel;
    FlatPanel2: TPanel;
    BtnWhatIs: TFlatSpeedButton;
    BtnHelp: TFlatSpeedButton;
    FlatPanel3: TPanel;
    BtnPopMenu: TFlatSpeedButton;
    RzSizePanel1: TRzSizePanel;
    RzGroupBox2: TRzGroupBox;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    RzLabel1: TRzLabel;
    dtpBegin: TRzDateTimePicker;
    dtpEnd: TRzDateTimePicker;
    edtBillNoBegin: TRzEdit;
    edtBillNoEnd: TRzEdit;
    edtDepotID: TRzButtonEdit;
    edtToDepotID: TRzButtonEdit;
    edtShipper: TRzButtonEdit;
    edtEmpNo: TRzButtonEdit;
    edtAudit: TRzButtonEdit;
    edtCreater: TRzButtonEdit;
    edtCrup: TRzButtonEdit;
    chkMultiSelect: TRzCheckBox;
    cmbAudit: TRzComboBox;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn3: TRzBitBtn;
    ActionList1: TActionList;
    ActQuery: TModlAction;
    ActReport: TModlAction;
    ActFieldsLayout: TModlAction;
    ActDataExport: TModlAction;
    ActDesignReport: TModlAction;
    ActViewBill: TModlAction;
    ImageList1: TImageList;
    TopPopMenu: TPopupMenu;
    SetFields1: TMenuItem;
    refresh1: TMenuItem;
    grdStockMove: TxDBGridEh;
    DataSource: TDataSource;
    DCOM: TDCOMConnection;
    edtGoodsID: TRzButtonEdit;
    cdsStockMove: TckClientDataSet;
    procedure BtnPopMenuClick(Sender: TObject);
    procedure edtDepotIDButtonClick(Sender: TObject);
    procedure edtCreaterButtonClick(Sender: TObject);
    procedure edtShipperButtonClick(Sender: TObject);
    procedure edtToDepotIDButtonClick(Sender: TObject);
    procedure edtCrupButtonClick(Sender: TObject);
    procedure edtEmpNoButtonClick(Sender: TObject);
    procedure edtAuditButtonClick(Sender: TObject);
    procedure edtGoodsIDButtonClick(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ActReportExecute(Sender: TObject);
    procedure ActViewBillExecute(Sender: TObject);
    procedure dtpBeginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ActFieldsLayoutExecute(Sender: TObject);
    procedure ActDataExportExecute(Sender: TObject);
  private
    { Private declarations }
    IFmMain: IMainForm;
    LocSetting: PLocSetting;
    iClientID: Integer;
    SvrCommon: TDispatchConnection;
    CdsFieldProperty :TckClientDataSet;
  public
    { Public declarations }
  end;

var
  FmStockMoveQuery: TFmStockMoveQuery;

implementation

uses ShowProgress, SelectGoodsFrm, SelectEmpFrm, SelectDepotFrm, FieldsLayoutFrm, DataExportFrm;

{$R *.dfm}

Const
  sFieldProPerty='Select * From SysFieldProperty Where TableName=''StockMove''';


procedure TFmStockMoveQuery.FormCreate(Sender: TObject);
var SystemTime: TSystemTime;
begin
  CdsFieldProperty := TckClientDataSet.Create(Self);
  GetLocalTime(SystemTime);
  with SystemTime do
    dtpBegin.Date := EncodeDate(wYear, wMonth, 1);
  dtpEnd.Date := Date;

  IFmMain := Application.MainForm as IMainForm;
  LocSetting := IFmMain.IFmMainEx.GetLocSetting;
  iClientID := IFmMain.IFmMainEx.ClientID;
  SetGressHint('正在连接到公用信息服务器...');
  SvrCommon := IFmMain.GetConnection(Handle, '', 'CommonSvr.CommonRDM');
  cdsStockMove.RemoteServer := SvrCommon;

  CdsFieldProPerty.ProviderName:='DspTemp';
  CdsFieldProPerty.RemoteServer:=SvrCommon;
end;

procedure TFmStockMoveQuery.FormShow(Sender: TObject);
var sTableNames: string;
begin
  SetGressHint('初始化本地环境...');
  IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFrmStockMoveQuery.Xml');
  sTableNames:='StockMove';
  SetFieldProperty(CdsFieldProPerty,cdsStockMove,sTableNames);
  SetGridEhColor([grdStockMove]);
  ptBkPanel.Color := TitlePanelColor;
  FreeGressForm;
end;

procedure TFmStockMoveQuery.BtnPopMenuClick(Sender: TObject);
var tp:TPoint;
begin
  tp.X:=BtnPopMenu.Left;
  tp.Y:=BtnPopMenu.Top+BtnPopMenu.Height+1;
  tp:=ClientToScreen(tp);
	TopPopmenu.Popup(tp.x,tp.Y);
end;

procedure TFmStockMoveQuery.edtDepotIDButtonClick(Sender: TObject);
var
  iDepotID: integer;
  sDepotNo, sDepotName: string;
begin
  iDepotID := 0;
  sDepotNo := '';
  sDepotName := '';
  if SelectDepot(iDepotID, sDepotNo, sDepotName) then
  begin
    edtDepotID.Tag := iDepotID;
    edtDepotID.Text := sDepotNo + '(' + sdepotName + ')';
  end;
end;

procedure TFmStockMoveQuery.edtCreaterButtonClick(Sender: TObject);
var
  sEmpNo, sEmpName: string;
begin
  sEmpNo := '';
  sEmpName := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtCreater.Text := sEmpNo;
end;

procedure TFmStockMoveQuery.edtShipperButtonClick(Sender: TObject);
var
  sEmpNo, sEmpName: string;
begin
  sEmpNo := '';
  sEmpName := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtShipper.Text := sEmpNo;
end;

procedure TFmStockMoveQuery.edtToDepotIDButtonClick(Sender: TObject);
var
  iDepotID: integer;
  sDepotNo, sDepotName: string;
begin
  iDepotID := 0;
  sDepotNo := '';
  sDepotName := '';
  if SelectDepot(iDepotID, sDepotNo, sDepotName) then
  begin
    edtToDepotID.Tag := iDepotID;
    edtToDepotID.Text := sDepotNo + '(' + sDepotName + ')';
  end;
end;

procedure TFmStockMoveQuery.edtCrupButtonClick(Sender: TObject);
var
  sEmpNo, sEmpName: string;
begin
  sEmpNo := '';
  sEmpName := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtCrup.Text := sEmpNo;
end;

procedure TFmStockMoveQuery.edtEmpNoButtonClick(Sender: TObject);
var
  sEmpNO, sEmpName: string;
begin
  sEmpNO := '';
  sEmpname := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtEmpNo.Text := sEmpNo;
end;

procedure TFmStockMoveQuery.edtAuditButtonClick(Sender: TObject);
var
  sEmpNo, sEmpName: string;
begin
  sEmpNo := '';
  sEmpName := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtAudit.Text := sEmpNo;
end;

procedure TFmStockMoveQuery.edtGoodsIDButtonClick(Sender: TObject);
var
  s, sGoodsID: string;
begin
  s := edtGoodsID.Text;
  if SelectGoodsID(sGoodsID, true) then
  begin
    if chkMultiSelect.Checked then
    begin
      if s <> '' then
        s := s + ',' + sGoodsID
      else
        s := sGoodsID;
    end
    else
      s := sGoodsID;
  end;
  edtGoodsID.Text := s;
end;

procedure TFmStockMoveQuery.ActQueryExecute(Sender: TObject);
var
  sTableNames, s, sm, sd: string;
begin
  sm := ' and M.FDate >= ''' + FormatDateTime('yyyy-mm-dd', dtpBegin.Date) + '''';
  sm := sm + ' and M.FDate <=''' + FormatDateTime('yyyy-mm-dd', dtpEnd.Date) + '''';
  s := edtDepotID.Text;
  if s <> '' then
    sm := sm + ' and M.DepotID = ' + IntToStr(edtDepotID.Tag);
  s := edtToDepotID.Text;
  if s <> '' then
    sm := sm + ' and M.ToDepotID = ' + IntToStr(edtToDepotID.Tag);
  s := edtCreater.Text;
  if s <> '' then
    sm := sm + ' and M.Creater = ''' + s + '''';
  s := edtCrup.Text;
  if s <> '' then
    sm := sm + ' and M.Grup = ''' + s + '''';
  s := edtShipper.Text;
  if s <> '' then
    sm := sm + ' and M.Shipper = ''' + s + '''';
  s := edtEmpNo.Text;
  if s <> '' then
    sm := sm + ' and M.EmpNo = ''' + s + '''';
  s := edtAudit.Text;
  if s <> '' then
    sm := sm + ' and M.Audit = ''' + s + '''';
  if cmbAudit.ItemIndex > 0 then
    sm := sm + ' and M.Transfer =' + IntToStr(cmbAudit.ItemIndex-1);
  s := edtBillNoBegin.Text;
  if s <> '' then
    if edtBillNoEnd.Text <> '' then
      sm := sm + ' and BillNo >= ''' + s + ''' and BillNo <= ''' + edtBillNoEnd.Text + ''''
    else
      sm := sm + ' and BillNo like ''' + s + '''';

  s := edtGoodsID.Text;
  if s <> '' then
    if AnsiPos(',', s) > 0 then
      sd := ' and GoodsID in(''' + AnsiReplaceText(s, ',', ''',''') + ''')'
    else
      sd := sd + ' and GoodsID = ''' + s + '''';

  cdsStockMove.Close;
  cdsStockMove.Data := SvrCommon.AppServer.QueryBill(iClientID, 'StockMove', sm, sd);
  sTableNames := 'StockMove';
  SetFieldProperty(CdsFieldProPerty,cdsStockMove,sTableNames);
end;

procedure TFmStockMoveQuery.ActReportExecute(Sender: TObject);
begin
  SelRepPrint(self.Name, [cdsStockMove], '移库单查询', ActDesignReport.Enabled);
end;

procedure TFmStockMoveQuery.ActViewBillExecute(Sender: TObject);
var Values: Variant;
    sBillNo, sBills: String;
    mark: TBookmark;
begin
  if cdsStockMove.IsEmpty then Exit;
  with cdsStockMove do begin
    sBillNo := FieldByName('BillNo').AsString; //取得单号
    mark := GetBookmark;
    DisableControls;
    try
      First;
      while not Eof do begin //单号有可能是多个,
        sBills := sBills+FieldByName('BillNo').AsString+#13; //取出所有单号
        Next;
      end;
    finally
      GotoBookmark(mark);
      FreeBookmark(mark);
      EnableControls;
    end;
  end;
  Values := VarArrayCreate([0,1], varOleStr); //
  Values[0] := sBillNo; //查询后的第一张单据
  Values[1] := sBills; //查询后的所有单据
  //'StockMain.bpl;TFmStockIn','ViewBill', values
  IFmMain.DoSome(ActViewBill.ModuleFile, 'ViewBill', Values); //DoSome(类名,类型, 值)
  Values := NULL;
end;

procedure TFmStockMoveQuery.dtpBeginKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key = 13 then
    ActQuery.Execute;
end;

procedure TFmStockMoveQuery.ActFieldsLayoutExecute(Sender: TObject);
begin
  SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockMove], '移库单查询');
end;

procedure TFmStockMoveQuery.ActDataExportExecute(Sender: TObject);
begin
  inherited;
  ExportData([cdsStockMove], '移库单查询', '');
end;

initialization
  RegisterClass(TFmStockMoveQuery);

finalization
  UnRegisterClass(TFmStockMoveQuery);

end.

⌨️ 快捷键说明

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