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

📄 base2infofixadd.pas

📁 中小企业管理系统------ ERP系统原代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -