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

📄 ucostinitial.pas

📁 成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 2005 主要技术:Midas、COM+ 所用第三方控件: FastReport V2.47 D7 Inforp
💻 PAS
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -