stockinqryfrm.~pas

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

~PAS
418
字号
unit StockInQryFrm;

interface

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


type
  TFmStockInQry = class(TxBaseForm)
    ptBkPanel: TFlatPanel;
    FlatPanel2: TPanel;
    BtnWhatIs: TFlatSpeedButton;
    BtnHelp: TFlatSpeedButton;
    FlatPanel3: TPanel;
    BtnPopMenu: TFlatSpeedButton;
    TopPopMenu: TPopupMenu;
    SetFields1: TMenuItem;
    refresh1: TMenuItem;
    ActionList1: TActionList;
    ActQuery: TModlAction;
    ActReport: TModlAction;
    ActFieldsLayout: TModlAction;
    ActDataExport: TModlAction;
    ActDesignReport: TModlAction;
    ActViewBill: TModlAction;
    ImageList1: TImageList;
    grdStockIn: TxDBGridEh;
    DataSource: TDataSource;
    cdsStockIn: TckClientDataSet;
    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;
    edtBillNo1: TRzEdit;
    edtBillNo2: TRzEdit;
    edtProvNo: TRzButtonEdit;
    edtGoodsID: TRzButtonEdit;
    edtEmpNo: TRzButtonEdit;
    edtCreater: TRzButtonEdit;
    cmbAudit: TRzComboBox;
    edtAudit: TRzButtonEdit;
    dtpBegin: TRzDateTimePicker;
    dtpEnd: TRzDateTimePicker;
    chkMultiSelect: TRzCheckBox;
    edtPBillNo: TRzEdit;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn1: TRzBitBtn;
    btnAll: TRzBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label8: TLabel;
    edtDepotID: TRzButtonEdit;
    edtGrup: TRzButtonEdit;
    cmbInOutKind: TRzComboBox;
    cdsInOutKind: TckClientDataSet;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
    procedure edtProvNoButtonClick(Sender: TObject);
    procedure edtCreaterButtonClick(Sender: TObject);
    procedure edtEmpNoButtonClick(Sender: TObject);
    procedure edtAuditButtonClick(Sender: TObject);
    procedure edtGoodsIDButtonClick(Sender: TObject);
    procedure ActReportExecute(Sender: TObject);
    procedure BtnPopMenuClick(Sender: TObject);
    procedure cdsStockInAfterOpen(DataSet: TDataSet);
    procedure ActViewBillExecute(Sender: TObject);
    procedure edtGrupButtonClick(Sender: TObject);
    procedure edtDepotIDButtonClick(Sender: TObject);
    procedure dtpBeginKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SetFields1Click(Sender: TObject);
    procedure refresh1Click(Sender: TObject);
    procedure ActFieldsLayoutExecute(Sender: TObject);
    procedure ActDataExportExecute(Sender: TObject);
  private
   { Private declarations }
    IFmMain: IMainForm;
    LocSetting: PLocSetting;
    iClientID: Integer;
    SvrCommon: TDispatchConnection;
    CdsFieldProperty :TckClientDataSet;
    procedure GetInOutKind;
  public
    { Public declarations }
  end;

var
  FmStockInQry: TFmStockInQry;

implementation

uses SelectProvFrm, SelectBerthFrm, SelectDepartFrm, SelectGoodsFrm, SelectEmpFrm,
  FieldsLayoutFrm, SelectDepotFrm, INOutKindFm, DataExportFrm, ShowProgress, DbFuncs, RepSelectFrm;

{$R *.dfm}

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

procedure TFmStockInQry.FormCreate(Sender: TObject);
var SystemTime: TSystemTime;
    sTableNames: string;
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');
  cdsStockIn.RemoteServer := SvrCommon;
  cdsInOutKind.RemoteServer := SvrCommon;
  CdsFieldProPerty.RemoteServer:=SvrCommon;
  CdsFieldProPerty.ProviderName:='DspTemp';
end;

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

procedure TFmStockInQry.ActQueryExecute(Sender: TObject);
var
  s, MStr, DStr: string;
  sTableNames: string;
  i: Integer;
begin
  MStr := ' and M.FDate >= ''' + FormatDateTime('yyyy-mm-dd', dtpBegin.date)
      + ''' and M.FDate <= ''' + FormatDateTime('yyyy-mm-dd', dtpEnd.Date) + '''';
  s := edtProvNo.Text;
  if s <> '' then
  begin
    i := AnsiPos('(', s);
    if i>0 then
      s := Copy(s, 1, i-1);
    MStr := MStr + ' and M.ProvNo = ''' + s +'''';
  end;
  s := edtDepotID.Text;
  if  s <> '' then
    MStr := MStr + ' and M.DepotID = ' + IntToStr(edtDepotID.Tag);
  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 := edtCreater.Text;
  if s <> '' then
    MStr := MStr + ' and M.Creater = ''' + s + '''';
  if edtGrup.Text <> '' then
    MStr := MStr + ' and M.Grup = ' + IntToStr(edtGrup.Tag);

  s := cmbInOutKind.Text;
  if s <> '' then
  begin
    i := AnsiPos('-', s);
    if i > 0 then
      s := copy(cmbInOutKind.Text, 1, i - 2)
    else
      s := cmbInOutKind.Text;
    try
      i := StrToInt(s);
    except
      Application.MessageBox('入库方式无效!请检验[入库方式]!','警告',MB_OK+MB_ICONINFORMATION);
      exit;
    end;
    MStr := MStr + ' and M.InOutKind = ' + s;
  end;

  if cmbAudit.ItemIndex>0 then
    MStr := MStr + ' and M.Transfer='+IntToStr(cmbAudit.ItemIndex-1);

  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 := DStr + ' and GoodsID in(''' + AnsiReplaceText(s, ',', ''',''') + ''')'
    else
      DStr := DStr + ' and GoodsID Like ''' + s + '''';
  end;

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

procedure TFmStockInQry.edtProvNoButtonClick(Sender: TObject);
var
  sProvNo, sProvName: string;
begin
  sProvNo := '';
  sProvName := '';
  if SelectProv(sProvNo, sProvName) then
  begin
    edtProvNo.Text := sProvNo+'('+sProvName+')';
  end;
end;

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

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

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

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

procedure TFmStockInQry.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 TFmStockInQry.cdsStockInAfterOpen(DataSet: TDataSet);
begin
  LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockIn]);
end;

procedure TFmStockInQry.ActViewBillExecute(Sender: TObject);
var Values: Variant;
    sBillNo, sBills: String;
    mark: TBookmark;
begin
  if cdsStockIn.IsEmpty then Exit;
  with cdsStockIn 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 TFmStockInQry.edtGrupButtonClick(Sender: TObject);
var iID: Integer;
    sNo, sName: String;
begin
  iID := 0;
  if SelectDepart(iID, sNo, sName) then
  begin
    edtGrup.Tag := iID;
    edtGrup.Text:= sNo;
  end;
end;

procedure TFmStockInQry.edtDepotIDButtonClick(Sender: TObject);
var
  nDepotID: integer;
  sDepotNO, sDepotName: string;
begin
  nDepotID := 0;
  sDepotNO := '';
  sDepotName := '';
  if SelectDepot(nDepotID, sDepotNo, sDepotName) then
  begin
    edtDepotID.Tag := nDepotID;
    edtDepotID.Text := sDepotName;
  end;
end;

procedure TFmStockInQry.GetInOutKind;
var
  i: integer;
begin
  cdsInOutKind.Data := SvrCommon.AppServer.GetInOutKind(iClientID, '0');
  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);
    cdsInOutKind.next;
  end;
  cdsInOutKind.Close;
end;

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

procedure TFmStockInQry.SetFields1Click(Sender: TObject);
begin
  inherited;
  SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockIn], '入库单查询');
end;

procedure TFmStockInQry.refresh1Click(Sender: TObject);
begin
  inherited;
  ExportData([cdsStockIn], '入库单查询', '');
end;

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

procedure TFmStockInQry.ActDataExportExecute(Sender: TObject);
begin
  ExportData([cdsStockIn], '入库单查询', '');
end;

initialization
  RegisterClass(TFmStockInQry);

finalization
  UnRegisterClass(TFmStockInQry);

end.

⌨️ 快捷键说明

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