ucostinitial.pas

来自「成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 20」· PAS 代码 · 共 166 行

PAS
166
字号
unit uCostInitial;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, upub3, dxExEdtr, ImgList, ActnList, Menus, DB, ComCtrls, DateUtils,
  ToolWin, dxCntner, dxTL, dxDBCtrl, dxDBGrid, ExtCtrls, dxEditor, dxEdLib,
  StdCtrls, wwdbdatetimepicker, dxDBTLCl, dxGrClms;

type
  TfmCostInitial = class(Tfmpub3)
    DataSource2: TDataSource;
    StaticText1: TStaticText;
    N1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AApproveExecute(Sender: TObject);
    procedure AConfirmExecute(Sender: TObject);
    procedure TBTempClick(Sender: TObject);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure N3Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmCostInitial: TfmCostInitial;

implementation

uses udmcost, udmsys, SherryLib, udata;

{$R *.dfm}

procedure TfmCostInitial.FormCreate(Sender: TObject);
var i:integer;
begin
  OpenData(DataSource2);
  ShowFields(DMCost.CCostInitial);
  DMCost.CCostInitial.Params.ParamValues['@StartDate']:=DMSys.CSysConfig['StartDate'];
  DMCost.CCostInitial.Active:=True;
  ShowGrid(DbGrid1, '年度月份', 3, False, True, False, False);
  inherited;
  OpenData(DataSource1);
  if Exists('select 1 from sysobjects where xtype=''TR'' and name=''TrCostInitial''') then
  begin
    AApprove.Enabled := False;
    AConfirm.Enabled := False;
    TBTemp.Enabled:=False;
    DBGrid1.OptionsDB := DBGrid1.OptionsDB - [edgoCanDelete, edgoCanAppend];
    dbgrid1.OptionsBehavior:=dbgrid1.OptionsBehavior+[edgoautosort,edgoautosearch,edgomultisort];
    StaticText1.Caption := '已封帐';
  end
  else
  begin
    AApprove.Enabled := True;
    AConfirm.Enabled := False;
    TBTemp.Enabled:=True;
    for i:=DBGrid1.ColumnCount-1 downto 0 do
    if Pos(UpperCase('Cost'),UpperCase(DBGrid1.Columns[i].FieldName))>0 then
    DBGrid1.Columns[i].DisableEditor := False;
    DBGrid1.OptionsDB := DBGrid1.OptionsDB + [edgoCanDelete, edgoCanAppend];
    DBGrid1.OptionsBehavior := DBGrid1.OptionsBehavior- [edgoautosort,edgoautosearch,edgomultisort];
    StaticText1.Caption := '未封帐';
  end;

end;

procedure TfmCostInitial.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  CloseData(DataSource1);
  CloseData(DataSource2);
end;

procedure TfmCostInitial.AApproveExecute(Sender: TObject);
var i: Integer;
begin
  if DMCost.CCostInitial.ChangeCount>0 then Warn('请先保存数据!');
  if not Ask('封帐後将不能再调整期初成本,是否继续?') then abort;
  try
    ShowWait;
    Try
      exec_Sql('CostInitialLock');
    except
      On E: Exception do
      sherrylib.AppException(E);
    end;
    Log(Self.Caption,'期初成本封帐'+FormatDateTime('yyyyMM',DTPMonth.DateTime));
    AApprove.Enabled := False;
    AConfirm.Enabled := True;
    for i:=DBGrid1.ColumnCount-1 downto 0 do
    DBGrid1.Columns[i].DisableEditor := True;
    InFo('期初成本封帐完毕!');
  finally
    HideWait;
  end;
end;

procedure TfmCostInitial.AConfirmExecute(Sender: TObject);
var i:Integer;
begin
  try
    ShowWait;
    exec_Sql('if exists(select 1 from sysobjects where xtype=''TR'' and name=''TrCostInitial'') drop trigger TrCostInitial');
    AApprove.Enabled := True;
    AConfirm.Enabled := False;
    for i:=DBGrid1.ColumnCount-1 downto 0 do
    if Pos(UpperCase('Cost'),UpperCase(DBGrid1.Columns[i].FieldName))>0 then
    DBGrid1.Columns[i].DisableEditor := True;
    InFo('解帐成功,请记得及时再次封帐!');
  finally
    HideWait;
  end;
end;

procedure TfmCostInitial.TBTempClick(Sender: TObject);
begin
  Try
    showWait;
    DMCost.CCostInitial.ApplyUpdates(0);
  Finally
    HideWait;
  End;
end;

procedure TfmCostInitial.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  dxDbgridKeyDown(key,DBGrid1, Shift);
end;

procedure TfmCostInitial.N3Click(Sender: TObject);
begin
  if DMCost.CCostInitial.ChangeCount>0 then
  DMCost.CCostInitial.ApplyUpdates(0);
  Try
    showWait;
    Exec_SQL(Format('Insert into Costmonth(OrderNo, YearNo, MonthNo) '+#13+
             'select OrderNo, %0:d,%1:d  from OrderData OD '+#13+
             'where not exists(select 1 from CostMonth CI where CI.OrderNo=OD.OrderNo and YearNo=%0:d and MonthNo=%1:d)',
             [YearOf(DMSys.CSysConfig['StartDate']),MonthOf(DMSys.CSysConfig['StartDate'])]));
    DMCost.CCostInitial.Refresh;
  Finally
    HideWait;
  End;

end;

procedure TfmCostInitial.N5Click(Sender: TObject);
begin
  DMCost.CCostInitial.ApplyUpdates(0);
end;

end.

⌨️ 快捷键说明

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