⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uinvinitial.pas

📁 成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 2005 主要技术:Midas、COM+ 所用第三方控件: FastReport V2.47 D7 Inforp
💻 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 + -