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 + -
显示快捷键?