📄 uinvinitial.pas
字号:
unit uinvinitial;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, upub3, dxExEdtr, ImgList, ActnList, Menus, DB, ComCtrls,
ToolWin, dxCntner, dxTL, dxDBCtrl, dxDBGrid, ExtCtrls, dxEditor, dxEdLib,
StdCtrls, wwdbdatetimepicker, dxDBTLCl, dxGrClms;
type
TfmInvInitial = class(Tfmpub3)
DBGrid1StockName: TdxDBGridLookupColumn;
DBGrid1CategoryName: TdxDBGridMaskColumn;
DBGrid1PartNameE: TdxDBGridMaskColumn;
DBGrid1Model: TdxDBGridMaskColumn;
DBGrid1Color: TdxDBGridMaskColumn;
DBGrid1UnitID: TdxDBGridMaskColumn;
DBGrid1UnitName: TdxDBGridMaskColumn;
DBGrid1Qty: TdxDBGridMaskColumn;
DBGrid1Price: TdxDBGridMaskColumn;
StaticText1: TStaticText;
DataSource2: TDataSource;
DBGrid1PartNameC: TdxDBGridMaskColumn;
DBGrid1PartNo: TdxDBGridButtonColumn;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure AConfirmExecute(Sender: TObject);
procedure AApproveExecute(Sender: TObject);
procedure DBGrid1PartNoButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure DBGrid1CustomDrawCell(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
var ADone: Boolean);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmInvInitial: TfmInvInitial;
implementation
uses SherryLib, udata, udminv, udmsys, udmbase;
{$R *.dfm}
procedure TfmInvInitial.FormCreate(Sender: TObject);
begin
inherited;
OpenData(DataSource1);
OpenData(DataSource2);
DBGrid1.Filter.Active:=True;
if exists('select 1 from Sysconfig where ID=1 and StartDate is null') then DateFrm.Clear;
if Exists('select 1 from sysobjects where xtype=''TR'' and name=''TrInvInitial''') then
begin
AApprove.Enabled := False;
AConfirm.Enabled := False;
TBTemp.Enabled:=False;
DBGrid1.OptionsDB := DBGrid1.OptionsDB - [edgoCanDelete, edgoCanAppend];
DBGrid1.ColumnByFieldName('Qty').DisableEditor := True;
DBGrid1.ColumnByFieldName('Qty').ReadOnly := True;
DBGrid1.ColumnByFieldName('Price').DisableEditor := True;
DBGrid1.ColumnByFieldName('Price').ReadOnly := True;
DateFrm.Enabled := False;
StaticText1.Caption := '已封帐';
dbgrid1.OptionsBehavior:=dbgrid1.OptionsBehavior+[edgoautosort,edgoautosearch,edgomultisort];
end
else
begin
AApprove.Enabled := True;
AConfirm.Enabled := False;
TBTemp.Enabled:=True;
DBGrid1.OptionsDB := DBGrid1.OptionsDB + [edgoCanDelete, edgoCanAppend];
DBGrid1.ColumnByFieldName('Qty').DisableEditor := False;
DBGrid1.ColumnByFieldName('Qty').ReadOnly := False;
DBGrid1.ColumnByFieldName('Price').DisableEditor := False;
DBGrid1.ColumnByFieldName('Price').ReadOnly := False;
DBGrid1.ColumnByFieldName('StockName').DisableEditor := False;
DBGrid1.ColumnByFieldName('StockName').ReadOnly := False;
DBGrid1.ColumnByFieldName('PartNo').DisableEditor := False;
DBGrid1.ColumnByFieldName('PartNo').ReadOnly := False;
StaticText1.Caption := '未封帐';
dbgrid1.OptionsBehavior:=dbgrid1.OptionsBehavior-[edgoautosort,edgoautosearch,edgomultisort];
end;
DBGrid1.ApplyBestFit(nil);
end;
procedure TfmInvInitial.AConfirmExecute(Sender: TObject);
begin
try
ShowWait;
exec_Sql('if exists(select 1 from sysobjects where xtype=''TR'' and name=''TrInvInitial'') drop trigger TrInvInitial');
AApprove.Enabled := True;
AConfirm.Enabled := False;
InFo('解帐成功,请记得及时再次封帐!');
finally
HideWait;
end;
end;
procedure TfmInvInitial.AApproveExecute(Sender: TObject);
begin
if DMINV.CInvInitial.ChangeCount>0 then Warn('请先保存数据!');
if not Ask('封帐後将不能再调整期初库存,是否继续?') then abort;
try
ShowWait;
exec_Sql('InvInitialLock');
Log(Self.Caption,'期初库存封帐'+FormatDateTime('yyyyMM',DTPMonth.DateTime));
AApprove.Enabled := False;
AConfirm.Enabled := True;
InFo('期初库存封帐完毕!');
finally
HideWait;
end;
end;
procedure TfmInvInitial.DBGrid1PartNoButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
DMBase.CVMateriel.Open;
DMBase.CVMateriel.Locate('PartNo', DMINV.CInvInitial['PartNo'], [loCaseInsensitive, loPartialKey]);
if not LookUp(DMBase.CVMateriel) then exit;
DMINV.CInvInitial.Edit;
DMINV.CInvInitial['PartNo'] := DMBase.CVMateriel['PartNo'];
end;
procedure TfmInvInitial.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
CloseData(DataSource1);
CloseData(DataSource2);
end;
procedure TfmInvInitial.N3Click(Sender: TObject);
begin
Try
showWait;
Exec_SQL('Insert into InvInitial(StockID, PartNo, UnitID,Qty, Price) '+#13+
'select DefaultStock, M.PartNo, M.UnitID, 0, 0 '+#13+
'from MaterielInfo M '+#13+
'where not exists(select 1 from InvInitial I where I.StockID=M.DefaultStock and I.PartNo=M.PartNo)');
DMINV.CInvInitial.CancelUpdates;
DMINV.CInvInitial.Refresh;
Finally
HideWait;
End;
end;
procedure TfmInvInitial.N4Click(Sender: TObject);
begin
DMINV.CInvInitial.First;
while not DMINV.CInvInitial.Eof do
begin
if DMINV.CInvInitial['Qty']=0 then
DMINV.CInvInitial.Delete;
DMINV.CInvInitial.Next;
end;
Info('本地删除,同时还需要保存!');
end;
procedure TfmInvInitial.N5Click(Sender: TObject);
begin
Try
showWait;
DMINV.CInvInitial.ApplyUpdates(0);
Finally
HideWait;
End;
end;
procedure TfmInvInitial.DBGrid1CustomDrawCell(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
var AText: String; var AColor: TColor; AFont: TFont;
var AAlignment: TAlignment; var ADone: Boolean);
begin
if (not ANode.HasChildren) then
if ANode.Index mod 2 <> 0 then AColor := clMoneyGreen;
end;
procedure TfmInvInitial.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
dxDbgridKeyDown(key,DBGrid1, Shift);
end;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -