📄 base2infofixadd.pas
字号:
unit Base2InfoFixAdd;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
EditForm, StdCtrls, Buttons, ComCtrls, DBData, ExtCtrls, dxCntner, Math,
dxEditor, dxEdLib, dxDBELib, dxExEdtr, dxTL, dxDBCtrl, dxDBGrid, ImgList, Db,
ADODB, KsSkinLabels, KsSkinPanels, KsSkinButtons, KsSkinForms, KsSkinTabs,
se_controls, KsSkinSpeedButtons;
type
TfrmBase2InfoFixAdd = class(TfrmEditForm)
dsPlus: TDataSource;
ADOsetPlus: TADODataSet;
bbOk: TSeSkinButton;
bbNo: TSeSkinButton;
bbAdd: TSeSkinButton;
PageControl: TSeSkinPageControl;
TabSheet1: TSeCustomTabSheet;
TabSheet2: TSeCustomTabSheet;
Panel1: TSeSkinPanel;
Label1: TSeSkinLabel;
Label2: TSeSkinLabel;
Label3: TSeSkinLabel;
Label4: TSeSkinLabel;
Label12: TSeSkinLabel;
Label14: TSeSkinLabel;
Label15: TSeSkinLabel;
Label17: TSeSkinLabel;
Label18: TSeSkinLabel;
Label19: TSeSkinLabel;
Label20: TSeSkinLabel;
Label31: TSeSkinLabel;
Label30: TSeSkinLabel;
Label29: TSeSkinLabel;
Label21: TSeSkinLabel;
Label28: TSeSkinLabel;
Label27: TSeSkinLabel;
Label26: TSeSkinLabel;
Label24: TSeSkinLabel;
Label23: TSeSkinLabel;
Label25: TSeSkinLabel;
edtUserCode: TdxDBEdit;
edtName: TdxDBEdit;
edtClass: TdxDBButtonEdit;
dxDBEdit1: TdxDBEdit;
edtDept: TdxDBButtonEdit;
edtAddMode: TdxDBButtonEdit;
edtUse: TdxDBButtonEdit;
edtBornValue: TdxDBEdit;
edtAllAbate: TdxDBEdit;
edtNetValue: TdxDBEdit;
dxDBEdit5: TdxDBEdit;
dxDBDateEdit1: TdxDBDateEdit;
edtFutuPvalue: TdxDBEdit;
edtFutuValue: TdxDBEdit;
edtUseMonth: TdxDBEdit;
edtCountMonth: TdxDBEdit;
edtUnit: TdxDBEdit;
edtMAbateMod: TdxDBEdit;
edtMAbateValue: TdxDBEdit;
edtSubject: TdxDBButtonEdit;
edtAbateMode: TdxDBPickEdit;
Panel2: TSeSkinPanel;
gridPlus: TdxDBGrid;
lblModulus: TSeSkinLabel;
SeSkinLabel1: TSeSkinLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtClassButtonClick(Sender: TObject; AbsoluteIndex: Integer);
procedure edtDeptButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure edtAddModeButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure edtUseButtonClick(Sender: TObject; AbsoluteIndex: Integer);
procedure bbAddClick(Sender: TObject);
procedure bbOkClick(Sender: TObject);
procedure bbNoClick(Sender: TObject);
procedure edtSubjectButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure edtAbateModeChange(Sender: TObject);
procedure edtBornValueExit(Sender: TObject);
procedure edtAllAbateExit(Sender: TObject);
procedure edtNetValueExit(Sender: TObject);
procedure edtFutuPvalueExit(Sender: TObject);
procedure edtFutuValueExit(Sender: TObject);
procedure edtUseMonthExit(Sender: TObject);
procedure edtCountMonthExit(Sender: TObject);
procedure dxDBDateEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
bReturn: Boolean;
lMode: Integer;
function CheckEdit: Boolean;
procedure CanUseMonth; //年数总和法12倍检查
function BornValueChange(cType: Char): boolean; //改变原值时的运算
procedure EditCalcDepreciation; //折旧方法的运算
procedure MainShow;
procedure LoadData;
procedure LoadGrid;
procedure SaveData;
public
{ Public declarations }
end;
function CalcDepreciation(sAbaterMode {折旧方法}: string; dBorn {入账原值}, dAllA {累计折旧},
dNetV {净值}, dFutuP {净残值率}, dFutuV {预计净残值}, dUserM {预计使用月份},
dCountM {已计提月份}, dWorkdays {计提工作量}: Double; var dMAMod {月折旧率}, dMAVal {月折旧额}: Double): Boolean;
//折旧算法
function Base2InfoFixAddShow(l1Mode: Integer): Boolean;
implementation
uses SysPublic, Base2Info;
{$R *.DFM}
function Base2InfoFixAddShow(l1Mode: Integer): Boolean;
var
frmBase2InfoFixAdd: TfrmBase2InfoFixAdd;
begin
frmBase2InfoFixAdd := TfrmBase2InfoFixAdd.Create(Application);
with frmBase2InfoFixAdd do
begin
lMode := l1Mode;
MainShow;
Result := bReturn;
Free;
end;
end;
function TfrmBase2InfoFixAdd.CheckEdit: Boolean;
var
sID: string;
begin
sID := DataSet.FieldByName('ID').AsString;
Result := CheckEditEmpty(1, self, [Label2.Name, Label3.Name, Label14.Name,
Label17.Name, Label31.Name, Label26.Name, Label18.Name], [edtName.Name, edtClass.Name,
edtAddMode.Name, edtBornValue.Name, edtAbateMode.Name, edtSubject.Name, edtAllAbate.Name]);
if Result then
begin
if (Trim(edtUserCode.Text) <> '') and not
GetDataSetEmpty('Select ID From FixedAssets WHERE [Delete]=FALSE and Usercode=''' +
Trim(edtUserCode.Text) + ''' and not ID like ' + sID) then
begin
ShowMsg('相同编号的固定资产已存在,请重新输入编号!');
Result := False;
end;
end;
end;
procedure TfrmBase2InfoFixAdd.MainShow;
begin
DataSet := edtUserCode.DataSource.DataSet;
LoadGrid;
LoadData;
ShowModal;
end;
procedure TfrmBase2InfoFixAdd.LoadData;
var
sSql: string;
lID: Integer;
begin
bReturn := false;
Caption := '固定资增加';
lID := DataSet.FieldByName('ID').AsInteger;
sSql := 'select * from FixedAssetsPlus where FixedID=' + IntToStr(lID);
OpenDataSet(ADOsetPlus, sSql);
ADOsetPlus.Insert;
end;
procedure TfrmBase2InfoFixAdd.LoadGrid;
begin
StrToGridField(gridPlus,
' Name, Spec, Unit,number,Money, UseDate,Memo',
'设备名称,规格型号,计量单位, 数量, 金额,使用日期,备注',
'90,70,70,70,70,70,100');
edtAbateModeChange(nil);
end;
procedure TfrmBase2InfoFixAdd.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
if (bReturn = False) and (DataSet.State = dsInsert)
and (Trim(edtName.Text) <> '') then
begin
if MsgBox('你没有保存数据,确定要退出吗?', '提示', MB_OKCANCEL) <> IDOK then
Action := caNone;
end;
end;
procedure TfrmBase2InfoFixAdd.edtClassButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sSort1: string;
begin
inherited;
sSort1 := BaseSelect(BASE_FIXED_SORT, 1, edtClass.Text);
if sSort1 <> '' then
DataSet.FieldByName(edtClass.DataField).AsString := sSort1;
end;
procedure TfrmBase2InfoFixAdd.edtDeptButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sDept1: string;
begin
inherited;
sDept1 := BaseSelect(BASE_DEPT, 1, edtDept.Text);
if sDept1 <> '' then
DataSet.FieldByName(edtDept.DataField).AsString := sDept1;
end;
procedure TfrmBase2InfoFixAdd.edtAddModeButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sMode1: string;
begin
inherited;
sMode1 := BaseSelect(BASE_FIXED_MODE, 1, edtAddMode.Text);
if sMode1 <> '' then
DataSet.FieldByName(edtAddMode.DataField).AsString := sMode1;
end;
procedure TfrmBase2InfoFixAdd.edtUseButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sUse1: string;
begin
inherited;
sUse1 := BaseSelect(BASE_FIXED_USE, 1, edtUse.Text);
if sUse1 <> '' then
DataSet.FieldByName(edtUse.DataField).AsString := sUse1;
end;
procedure TfrmBase2InfoFixAdd.SaveData;
var
lID: Integer;
begin
DataSet.FieldByName('Period').AsInteger := GetPeriod;
SaveDataSet(TADODataSet(DataSet), false);
lID := TADODataSet(DataSet).FieldByName('ID').AsInteger;
ADOsetPlus.First;
while not ADOsetPlus.Eof do
begin
ADOsetPlus.Edit;
ADOsetPlus.FieldByName('FixedID').AsInteger := lID;
ADOsetPlus.Next;
end;
SaveDataSet(ADOsetPlus, True);
end;
procedure TfrmBase2InfoFixAdd.bbAddClick(Sender: TObject);
begin
inherited;
if CheckEdit then
begin
DataSet.Edit;
SaveData;
DataSet.Insert;
ADOsetPlus.Insert;
end;
end;
procedure TfrmBase2InfoFixAdd.bbOkClick(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -