stockbillcheckfrm.~pas

来自「群星医药系统源码」· ~PAS 代码 · 共 577 行 · 第 1/2 页

~PAS
577
字号
unit StockBillCheckFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xBaseFrm, RzDBEdit, StdCtrls, Mask, RzEdit, RzDBBnEd, RzCmboBx,
  Grids, DBGridEh, xEhLibCtl, ExtCtrls, RzPanel, RzButton, DBCtrls, RzDBNav,
  ImgList, ActnList, ModuleAction, DB, DBClient, ckDBClient, MConnect,
  uDataTypes, IMainFrm, Buttons, RzLabel, RzDBLbl, TFlatSpeedButtonUnit,
  RzStatus, TFlatPanelUnit, Menus;

type
  TFmStockBillCheck = class(TxBaseForm)
    RzPanel1: TRzPanel;
    RzPanel2: TRzPanel;
    RzPanel3: TRzPanel;
    dbgCheckBillDtl: TxDBGridEh;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    edDepotID: TRzDBEdit;
    edRemark: TRzDBEdit;
    dtCheckDate: TRzDBDateTimeEdit;
    dtUpdateDate: TRzDBDateTimeEdit;
    dtCreateDate: TRzDBDateTimeEdit;
    edEmpNo: TRzDBEdit;
    btnPrior: TRzBitBtn;
    btnNext: TRzBitBtn;
    btnAbortCheckBill: TRzBitBtn;
    btnNewCheckBill: TRzBitBtn;
    btnFinishCheckBill: TRzBitBtn;
    ActionList1: TActionList;
    ActInsert: TModlAction;
    ActUpdate: TModlAction;
    ActDelete: TModlAction;
    ActAudit: TModlAction;
    ActRevert: TModlAction;
    ActPrint: TModlAction;
    ActDesignReport: TModlAction;
    ActViewMoney: TModlAction;
    ActBillDetail: TModlAction;
    ActFieldLayout: TModlAction;
    ActDataExport: TModlAction;
    ImageList1: TImageList;
    cdsStockBillCheck: TckClientDataSet;
    dsStockBillCheck: TDataSource;
    cdsStockBillCheckDtl: TckClientDataSet;
    dsStockBillCheckDtl: TDataSource;
    cdsStockBillCheckBillNo: TStringField;
    cdsStockBillCheckFDate: TDateTimeField;
    cdsStockBillCheckDepotID: TIntegerField;
    cdsStockBillCheckEmpNo: TStringField;
    cdsStockBillCheckFinish: TBooleanField;
    cdsStockBillCheckRemark: TStringField;
    cdsStockBillCheckCreater: TStringField;
    cdsStockBillCheckCreatTime: TDateTimeField;
    cdsStockBillCheckMender: TStringField;
    cdsStockBillCheckUpdateTime: TDateTimeField;
    cdsStockBillCheckGrup: TIntegerField;
    cdsStockBillCheckadsStockBillCheckDtl: TDataSetField;
    cdsStockBillCheckDtlBillNo: TStringField;
    cdsStockBillCheckDtlItemNo: TIntegerField;
    cdsStockBillCheckDtlBerthNo: TStringField;
    cdsStockBillCheckDtlGoodsID: TStringField;
    cdsStockBillCheckDtlName: TStringField;
    cdsStockBillCheckDtlSpecs: TStringField;
    cdsStockBillCheckDtlPDCAddr: TStringField;
    cdsStockBillCheckDtlMaker: TStringField;
    cdsStockBillCheckDtlUnit: TStringField;
    cdsStockBillCheckDtlGroupNo: TIntegerField;
    cdsStockBillCheckDtlBatchNo: TStringField;
    cdsStockBillCheckDtlValidDate: TDateTimeField;
    cdsStockBillCheckDtlOughtQty: TBCDField;
    cdsStockBillCheckDtlStockQty: TBCDField;
    cdsStockBillCheckDtlOverQty: TBCDField;
    cdsStockBillCheckDtlPrice: TFloatField;
    cdsStockBillCheckDtlAmount: TBCDField;
    cdsStockBillCheckDtlRemark: TStringField;
    cbBillNo: TRzComboBox;
    btnAddNewItem: TSpeedButton;
    lbBillState: TRzDBLabel;
    cdsStockBillCheckStateText: TStringField;
    ptBkPanel: TFlatPanel;
    FlatPanel2: TPanel;
    BtnWhatIs: TFlatSpeedButton;
    BtnHelp: TFlatSpeedButton;
    FlatPanel3: TPanel;
    BtnPopMenu: TFlatSpeedButton;
    TopPopMenu: TPopupMenu;
    SetFields1: TMenuItem;
    refresh1: TMenuItem;
    btnDeleteItem: TSpeedButton;
    btnItemsFirst: TSpeedButton;
    btnItemsPrior: TSpeedButton;
    btnItemsNext: TSpeedButton;
    btnItemsLast: TSpeedButton;
    btnSave: TRzBitBtn;
    btnCancel: TRzBitBtn;
    btnRefresh: TRzBitBtn;
    actQuery: TModlAction;
    RzDBEdit1: TRzDBEdit;
    cdsStockBillCheckDepotNo: TStringField;
    cdsStockBillCheckDepotName: TStringField;
    ActViewBill: TModlAction;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnPriorClick(Sender: TObject);
    procedure btnNextClick(Sender: TObject);
    procedure btnAddNewItemClick(Sender: TObject);
    procedure BtnPopMenuClick(Sender: TObject);
    procedure cdsStockBillCheckDtlStockQtyChange(Sender: TField);
    procedure cdsStockBillCheckBeforeClose(DataSet: TDataSet);
    procedure BtnSaveClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnCancelClick(Sender: TObject);
    procedure btnRefreshClick(Sender: TObject);
    procedure btnDeleteItemClick(Sender: TObject);
    procedure btnItemsFirstClick(Sender: TObject);
    procedure btnItemsPriorClick(Sender: TObject);
    procedure btnItemsNextClick(Sender: TObject);
    procedure btnItemsLastClick(Sender: TObject);
    procedure cdsStockBillCheckDtlBeforeInsert(DataSet: TDataSet);
    procedure cdsStockBillCheckDtlBeforeDelete(DataSet: TDataSet);
    procedure cbBillNoClick(Sender: TObject);
    procedure ActAuditExecute(Sender: TObject);
    procedure ActInsertExecute(Sender: TObject);
    procedure ActDeleteExecute(Sender: TObject);
    procedure ActFieldLayoutExecute(Sender: TObject);
    procedure ActDataExportExecute(Sender: TObject);
    procedure cdsStockBillCheckDtlBeforeEdit(DataSet: TDataSet);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    FCanInsert: boolean;
    FHasUnAuditBills: boolean;
    FCurBillNoID: Integer;
    cdsFieldProPerty: TckClientDataSet;
    LocSetting: PLocSetting;
    iClientID: Integer;
    SvrStockBillCheck,SvrCommon:TDispatchConnection;
    IFmMain: IMainForm;
    procedure LoadBillNoList;
    procedure GetBillData(BillNo: string);
    procedure ShowCurrentBill;
  public
    { Public declarations }
  end;

Const
  sFieldProPerty='Select * From SysFieldProPerty '+
      ' Where TableName in(''StockBillCheck'', ''StockBillCheckDtl'', ''Goodses'')';

var
  FmStockBillCheck: TFmStockBillCheck;

implementation
uses  ceGlobal, ShowProgress, DbFuncs, AddStockBillCheckItemFrm,
      FieldsLayoutFrm, DataExportFrm, GetDepotAndBerthFrm;
{$R *.dfm}

procedure TFmStockBillCheck.FormCreate(Sender: TObject);
begin
  inherited;
  IFmMain := Application.MainForm as IMainForm;
  IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
  cdsFieldProPerty:=TckClientDataSet.Create(Self);
  LocSetting := IFmMain.IFmMainEx.GetLocSetting;
  SetGressHint('正在连接按库整批盘点服务器...');
  iClientID:=IFmMain.IFmMainEx.ClientID;
  SvrStockBillCheck:=IFmMain.GetConnection(Handle,'','CkStockSvr.Stock');
  cdsStockBillCheck.RemoteServer:=SvrStockBillCheck;
  SetGressHint('正在连接到公用信息服务器...');
  SvrCommon:=IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
  cdsFieldProPerty.ProviderName:='DspTemp';
  cdsFieldProPerty.RemoteServer:=SvrCommon;
  SetGressHint('正在读取用户操作权限...');
end;

procedure TFmStockBillCheck.FormShow(Sender: TObject);
Var sTableNames:String;
begin
  SetGressHint('初始化本地环境...');
  SetGridEhColor(dbgCheckBillDtl);
  ptBkPanel.Color := TitlePanelColor;
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmStockBillCheck.Xml');
  SetFieldProperty(CdsFieldProPerty,cdsStockBillCheck, 'StockBillCheck');
  SetFieldProperty(CdsFieldProPerty,cdsStockBillCheckDtl, 'StockBillCheckDtl,Goodses');
  inherited;
  FreeGressForm;
  LoadBillNoList;
end;

procedure TFmStockBillCheck.FormActivate(Sender: TObject);
const
  bExecuted: boolean=false;
begin
if not (CanFocus and Visible and Assigned(SvrStockBillCheck) and SvrStockBillCheck.Connected) then exit;
  with TckClientDataSet.Create(self) do
  try
    RemoteServer := SvrStockBillCheck;
    ProviderName := 'DspPublic';
    CommandText := 'exec proc_AllStockCheckSurplusBillIsAudited';
    open;
    if IsEmpty then exit;
    FHasUnAuditBills := Fields[0].AsInteger > 0;
    Close;
  finally
    Free;
  end;
  if bExecuted then exit;
  if FHasUnAuditBills then
  begin
    if MessageBox(Handle,'系统检查到还有未审核的盘点盈亏单。'#13'强烈建议你先审核所有盘点盈亏单再继续盘点!否则,系统将无法保证数据有效性。'#13'真的要继续进行不安全的盘点吗?','警告',MB_ICONEXCLAMATION or MB_YESNO or MB_DEFBUTTON2)=IDNO then
      Self.Close;
     bExecuted := true;
  end;
end;

procedure TFmStockBillCheck.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  cdsStockBillCheck.Close;
  Action := caFree;
end;

procedure TFmStockBillCheck.FormDestroy(Sender: TObject);
begin
  cdsFieldProPerty.Free;
  inherited;
end;

//装载盘点单号列表
procedure TFmStockBillCheck.LoadBillNoList;
var
  iOldID: integer;
begin
  iOldID := cbBillNo.ItemIndex;
  cbBillNo.Clear;
  with TckClientDataSet.Create(Self) do
  try
    RemoteServer := SvrStockBillCheck;
    ProviderName := 'DspPublic';
    CommandText := 'SELECT BillNo FROM StockBillCheck';
    Open;
    while not Eof do
    begin
      cbBillNo.Add(Fields[0].AsString);
      Next;
    end;
    if (cbBillNo.Count >0)and(iOldID=-1) then
      cbBillNo.ItemIndex := 0
    else if cbBillNo.Count >= iOldID then
      cbBillNo.ItemIndex := iOldID;
    Close;
    cbBillNoClick(nil);
  finally
    Free;
  end;
end;

//获取指定的盘点单
procedure TFmStockBillCheck.GetBillData(BillNo: string);
begin
  if not actQuery.Enabled then exit; 
  with cdsStockBillCheck do
  begin
    Close;
    Params[0].Value := BillNo;
    Open;
    if IsEmpty then exit;
  end;
  if cdsStockBillCheckFinish.Value then
    lbBillState.Font.Color := clBlue
  else
    lbBillState.Font.Color := clRed;
end;

//获取当前盘点单
procedure TFmStockBillCheck.ShowCurrentBill;
begin
  if FCurBillNoID < 0 then exit;
  GetBillData(cbBillNo.Items[FCurBillNoID]);
end;

⌨️ 快捷键说明

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