stockoutqryfrm.~pas

来自「群星医药系统源码」· ~PAS 代码 · 共 417 行

~PAS
417
字号
unit StockOutQryFrm;

interface

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

type
  TFmStockOutQuery = class(TxBaseForm)
    ptBkPanel: TFlatPanel;
    FlatPanel2: TPanel;
    BtnWhatIs: TFlatSpeedButton;
    BtnHelp: TFlatSpeedButton;
    FlatPanel3: TPanel;
    BtnPopMenu: TFlatSpeedButton;
    Panel1: TRzSizePanel;
    Panel2: TPanel;
    RzGroupBox1: TRzGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label5: TLabel;
    Label11: TLabel;
    RzLabel18: TRzLabel;
    Label6: TLabel;
    Label13: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label8: TLabel;
    edtBillNo1: TRzEdit;
    edtBillNo2: TRzEdit;
    edtCustNo: TRzButtonEdit;
    edtGoodsID: TRzButtonEdit;
    edtEmpNo: TRzButtonEdit;
    edtCreater: TRzButtonEdit;
    cmbAudit: TRzComboBox;
    edtAudit: TRzButtonEdit;
    dtpBegin: TRzDateTimePicker;
    dtpEnd: TRzDateTimePicker;
    chkMultiSelect: TRzCheckBox;
    edtPBillNo: TRzEdit;
    edtDepotID: TRzButtonEdit;
    edtGrup: TRzButtonEdit;
    cmbInOutKind: TRzComboBox;
    btnReport: TRzBitBtn;
    btnQuery: TRzBitBtn;
    btnAll: TRzBitBtn;
    grdStockOut: TxDBGridEh;
    TopPopMenu: TPopupMenu;
    SetFields1: TMenuItem;
    refresh1: TMenuItem;
    ActionList1: TActionList;
    ActQuery: TModlAction;
    ActReport: TModlAction;
    ActFieldsLayout: TModlAction;
    ActDataExport: TModlAction;
    ActDesignReport: TModlAction;
    ActViewBill: TModlAction;
    ImageList1: TImageList;
    DataSource: TDataSource;
    cdsStockOut: TckClientDataSet;
    Label12: TLabel;
    edtShipper: TRzButtonEdit;
    cdsInOutKind: TckClientDataSet;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure edtCustNoButtonClick(Sender: TObject);
    procedure edtDepotIDButtonClick(Sender: TObject);
    procedure edtEmpNoButtonClick(Sender: TObject);
    procedure edtAuditButtonClick(Sender: TObject);
    procedure edtShipperButtonClick(Sender: TObject);
    procedure edtCreaterButtonClick(Sender: TObject);
    procedure edtGrupButtonClick(Sender: TObject);
    procedure edtGoodsIDButtonClick(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
    procedure BtnPopMenuClick(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;
    SvrStock, SvrCommon: TDispatchConnection;
    CdsFieldProperty :TckClientDataSet;
    procedure GetInOutKind;
  public
    { Public declarations }
  end;

var
  FmStockOutQuery: TFmStockOutQuery;

implementation

uses SelectGoodsFrm, SelectEmpFrm, SelectDepotFrm, SelectCustFrm, SelectDepartFrm,
  FieldsLayoutFrm, DataExportFrm;

{$R *.dfm}

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

procedure  TFmStockOutQuery.FormCreate(Sender: TObject);
var SystemTime: TSystemTime;
begin
  inherited;
  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');
  cdsStockOut.RemoteServer := SvrCommon;
  cdsInOutKind.RemoteServer := SvrCommon;
  CdsFieldProPerty.RemoteServer:=SvrCommon;
  CdsFieldProPerty.ProviderName:='DspTemp';
end;

procedure TFmStockOutQuery.FormShow(Sender: TObject);
var sTableNames: string;
begin
  SetGressHint('初始化本地环境...');
  IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFrmStockOut.Xml');
  sTableNames:='StockOut';
  SetFieldProperty(CdsFieldProPerty,cdsStockOut,sTableNames);
  SetGridEhColor([grdStockOut]);
  ptBkPanel.Color := TitlePanelColor;
  GetInOutKind;
  FreeGressForm;
  inherited;
end;

procedure TFmStockOutQuery.edtCustNoButtonClick(Sender: TObject);
var
  sCustNo, sCustName: string;
begin
  sCustNo := '';
  sCustName := '';
  if SelectCust(sCustNo, sCustName) then
    edtCustNo.Text := sCustNo;
end;

procedure TFmStockOutQuery.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 TFmStockOutQuery.edtEmpNoButtonClick(Sender: TObject);
var
  sEmpNO, sEmpName: string;
begin
  sEmpNo := '';
  sEmpName := '';
  if SelectEmp(sEmpNo, sEmpName) then
    edtEmpNo.Text := sEmpNo;
end;

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

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

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

procedure TFmStockOutQuery.edtGrupButtonClick(Sender: TObject);
var
  iDepartID: integer;
  sDepartNo, sDepartName: string;
begin
  if SelectDepart(iDepartID, sDepartNo, sDepartName) then
  begin
    edtGrup.Tag := iDepartID;
    edtGrup.Text := sDepartNo + '(' + sDepartName + ')';
  end;
end;

procedure TFmStockOutQuery.edtGoodsIDButtonClick(Sender: TObject);
var
  sGoodsID: string;
begin
  sGoodsID := '';
  if ChkMultiSelect.Checked then
  begin
    if SelectGoodsID(sGoodsID, true) then
      If edtGoodsID.Text<>'' Then
        edtGoodsId.Text := edtGoodsId.Text+','+sGoodsId
      else
        edtGoodsId.Text := sGoodsID;
  End
  else if SelectGoodsID(sGoodsID, false) then
    edtGoodsID.text := sGoodsID;
end;

procedure TFmStockOutQuery.ActQueryExecute(Sender: TObject);
var
  MStr, DStr, s, c, fld: string;
  sTableNames: string;
  n: integer;
begin
  Mstr := ' and M.FDate >= ''' + FormatDateTime('yyyy-mm-dd', dtpBegin.Date) + '''';
  MStr := MStr + ' and M.FDate <= ''' + FormatDateTime('yyyy-mm-dd', dtpEnd.Date) + '''';
  s := edtCustNo.Text;
  if s <> '' then
    MStr := MStr + ' and M.CustNo = ''' + s + '''';
  s := edtDepotID.Text;
  if s <> '' then
    MStr := MStr + ' and M.DepotID = ' + IntToStr(edtDepotID.Tag);
  s := cmbInOutKind.Text;
  if s <> '' then
  begin
    n := AnsiPos('-', s);
    if n > 0 then
      s := copy(cmbInOutKind.Text, 1, n - 2)
    else
      s := cmbInOutKind.Text;
    try
      n := StrToInt(s);
    except
      Application.MessageBox('出库方式无效!请检验[出库方式]!','警告',MB_OK+MB_ICONINFORMATION);
      exit;
    end;
    MStr := MStr + ' and M.InOutKind = ' + s;
  end;
  s := edtEmpNo.Text;
  if s <> '' then
    MStr := MStr + ' and M.EmpNo = ''' + s + '''';
  s := edtAudit.Text;
  if s <> '' then
    MStr := MStr + ' and M.Audit = ''' + s + '''';
  s := edtPBillNo.Text;
  if s <> '' then
    MStr := MStr + ' and M.PBillNo = ''' + s + '''';
  s := edtShipper.Text;
  if s <> '' then
    MStr := MStr + ' and M.Shipper = ''' + s + '''';
  s := edtCreater.Text;
  if s <> '' then
    MStr := MStr + ' and M.Creater = ''' + s + '''';
  s := edtGrup.Text;
  if s <> '' then
    MStr := MStr + ' and M.Grup = ' + IntToStr(edtGrup.Tag);
  if cmbAudit.ItemIndex = 1 then
    MStr := MStr + ' and M.Transfer IS NULL '
  else
    MStr := MStr + ' and M.Transfer IS NOT NULL ';
  s := cmbInOutKind.Text;
  if s <> '' then
  begin
    n := AnsiPos('-', s);
    if n > 0 then
      s := copy(cmbInOutKind.Text, 1, n - 2)
    else
      s := cmbInOutKind.Text;
    MStr := MStr + ' and M.InOutKind = ' + s;
  end;
  s := edtBillNO1.Text;
  if s <> '' then
  Begin
    if edtBillNo2.Text <> '' then
      MStr := MStr + ' and M.BillNo >= ''' + s + ''' and M.BillNo <= ''' + edtBillNo2.Text + ''''
    else
      MStr := MStr + ' and M.BillNo = ''' + s + '''';
  end;
  s := edtGoodsID.Text;
  if s <> '' then
  Begin
    if AnsiPos(',', s) > 0 then
      DStr := ' and GoodsID in(''' + AnsiReplaceText(s, ',', ''',''') + ''')'
    else
      DStr := DStr + ' and D.GoodsID like ''' + s + '''';
  end;

  cdsStockOut.Close;
  cdsStockOut.Data := SvrCommon.AppServer.QueryBill(iClientID, 'StockOut', MStr, DStr);
  sTableNames := 'StockOut';
  SetFieldProperty(CdsFieldProPerty,cdsStockOut,sTableNames);
end;

procedure TFmStockOutQuery.GetInOutKind;
var
  i: integer;
begin
  cdsInOutKind.Data := SvrCommon.AppServer.GetInOutKind(iClientID, '1');
  if cdsInOutKind.IsEmpty then exit;
  cdsInOutKind.first;
  for i:=0 to cdsInOutKind.RecordCount - 1 do
  begin
    cmbInOutKind.Items.Add(cdsInOutKind.fieldbyname('KindID').AsString
      + ' - ' + cdsInOutKind.fieldbyname('KindName').AsString);
    next;
  end;
  cdsInOutKind.Close;
end;

procedure TFmStockOutQuery.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 TFmStockOutQuery.ActReportExecute(Sender: TObject);
begin
  SelRepPrint(self.Name, [cdsStockOut], '出库单查询', ActDesignReport.Enabled);
end;

procedure TFmStockOutQuery.ActViewBillExecute(Sender: TObject);
var Values: Variant;
    sBillNo, sBills: String;
    mark: TBookmark;
begin
  if cdsStockOut.IsEmpty then Exit;
  with cdsStockOut 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;
  IFmMain.DoSome(ActViewBill.ModuleFile, 'ViewBill', Values);
  Values := NULL;
end;

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

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

procedure TFmStockOutQuery.ActDataExportExecute(Sender: TObject);
begin
  ExportData([cdsStockOut], '出库单查询', '');
end;

initialization
  RegisterClass(TFmStockOutQuery);

finalization
  UnRegisterClass(TFmStockOutQuery);

end.

⌨️ 快捷键说明

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