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

📄 fixdepdlg.pas

📁 中小企业管理系统------ ERP系统原代码
💻 PAS
字号:
unit FixDepDlg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, EditForm, KsSkinForms, KsSkinProgress, KsSkinButtons,
  KsSkinListBoxs, Base2InfoFixAdd, SysPublic, DB, ADODB, se_controls,
  KsSkinSpeedButtons;

type
  TfrmFixDepDlg = class(TfrmEditForm)
    ListBoxDep: TSeSkinListBox;
    bbOk: TSeSkinButton;
    bbNo: TSeSkinButton;
    ProgressBar: TSeSkinProgressBar;
    ListBoxUDep: TSeSkinListBox;
    procedure bbNoClick(Sender: TObject);
    procedure bbOkClick(Sender: TObject);
  private
    { Private declarations }
    bReturn: Boolean;
    cPubMode: Char;
    procedure MainShow;
    function DBCalcDepreciation: Integer;
    function DBCalcUnDepreciation: Integer;
    procedure LoadData;
  public
    { Public declarations }
  end;

function FixDepDlgShow(cMode: Char): Boolean; //'D'计提折旧 'U'反计提折旧

implementation
{$R *.dfm}

function FixDepDlgShow(cMode: Char): Boolean;
var
  frmFixDepDlg: TfrmFixDepDlg;
begin
  frmFixDepDlg := TfrmFixDepDlg.Create(Application);
  with frmFixDepDlg do
  begin
    cPubMode := cMode;
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

procedure TfrmFixDepDlg.MainShow;
begin
  bReturn := False;
  LoadData;
  ShowModal;
end;

procedure TfrmFixDepDlg.LoadData;
begin
  if cPubMode = 'D' then
  begin
    ListBoxDep.Visible := True;
    caption := '固定资产计提折旧';
  end
  else
    if cPubMode = 'U' then
    begin
      ListBoxUDep.Visible := True;
      caption := '固定资产反计提折旧';
    end;
end;

function TfrmFixDepDlg.DBCalcDepreciation: Integer; //循环数据库进行折旧
var
  ADOSetTmp: TADODataSet;
  sSql, sUpSql, sAbateMode: string;
  lFixID: Integer;
  dBorn, dAllA, dNetV, dFutuP, dFutuV, dUserM, dCountM, dMAMod, dMAVal: Double;
  dSumDep: Double;
begin
  Result := 0;
  sSql := ' SELECT F.ID, F.AbateMode, F.BornValue, F.AllAbate, F.NetValue, F.BornValue,' +
    ' F.FutuPvalue, F.FutuValue, F.UseMonth, F.CountMonth, iif(isnull(Sum(D.MAbateValue)),0,Sum(D.MAbateValue)) AS SumDep ' +
    ' FROM FixedAssets AS F LEFT JOIN (SELECT * FROM FixedDepreciate WHERE Period<' + IntToStr(GetPeriod) + ')' +
    ' AS D ON F.ID = D.FixID ' +
    ' WHERE (F.Delete=False) ' +
    ' GROUP BY F.ID, F.AbateMode, F.BornValue, F.AllAbate, F.NetValue, F.BornValue,' +
    ' F.FutuPvalue, F.FutuValue, F.UseMonth, F.CountMonth';

  ADOSetTmp := TADODataSet.Create(nil);
  ADOSetTmp.LockType := ltReadOnly;
  if not OpenDataSet(ADOSetTmp, sSql) then
  begin ADOSetTmp.Free;
    Exit;
  end;
  if ADOSetTmp.IsEmpty then
  begin Result := -1;
    Exit;
  end; //没有记录时退出
  ProgressBar.Max := ADOSetTmp.RecordCount * 2; //进度条最大值
  while not ADOSetTmp.Eof do
  begin
    lFixID := ADOSetTmp.FieldByName('ID').AsInteger;
    sAbateMode := ADOSetTmp.FieldByName('AbateMode').AsString;
    dBorn := ADOSetTmp.FieldByName('BornValue').AsFloat; //原值
    dAllA := ADOSetTmp.FieldByName('AllAbate').AsFloat;
    dNetV := ADOSetTmp.FieldByName('NetValue').AsFloat;
    dFutuP := ADOSetTmp.FieldByName('FutuPvalue').AsFloat;
    dFutuV := ADOSetTmp.FieldByName('FutuValue').AsFloat;
    dUserM := ADOSetTmp.FieldByName('UseMonth').AsFloat;
    dCountM := ADOSetTmp.FieldByName('CountMonth').AsFloat;
    dSumDep := ADOSetTmp.FieldByName('AllAbate').AsFloat + ADOSetTmp.FieldByName('SumDep').AsFloat;

    {1} ProgressBar.Position := ProgressBar.Position + 1; //进度条增量
    CalcDepreciation(Trim(sAbateMode), dBorn - dSumDep, dAllA, dNetV, dFutuP, dFutuV, dUserM, dCountM, 0, dMAMod, dMAVal);
    sUpSql := 'INSERT INTO FixedDepreciate ([FixID],[Period],[MAbateMod],[MAbateValue])' +
      ' VALUES(' + IntToStr(lFixID) + ',' + IntToStr(GetPeriod) + ',' + FloatToStr2(dMAMod) +
      ',' + FloatToStr2(dMAVal) + ')';
    ExecSql(sUpSql);
    {2} ProgressBar.Position := ProgressBar.Position + 1; //进度条增量
    ADOSetTmp.Next;
  end;
  ADOSetTmp.Free;
  Result := 1;
end;

function TfrmFixDepDlg.DBCalcUnDepreciation: Integer; //循环数据库进行反折旧
var
  ADOSetTmp: TADODataSet;
  sSql, sUpSql: string;
  lFixID: Integer;
begin
  Result := 0;
  sSql := 'SELECT * FROM FixedAssets WHERE [Delete]=FALSE AND [Period]<' + IntToStr(GetPeriod);
  ADOSetTmp := TADODataSet.Create(nil);
  ADOSetTmp.LockType := ltReadOnly;
  if not OpenDataSet(ADOSetTmp, sSql) then
  begin ADOSetTmp.Free;
    Exit;
  end;
  if ADOSetTmp.IsEmpty then
  begin Result := -1;
    Exit;
  end; //没有记录时退出
  ProgressBar.Max := ADOSetTmp.RecordCount * 1; //进度条最大值
  while not ADOSetTmp.Eof do
  begin
    lFixID := ADOSetTmp.FieldByName('ID').AsInteger;
    sUpSql := 'DELETE FROM FixedDepreciate WHERE FixID=' + IntToStr(lFixID) + ' AND [Period]<' + IntToStr(GetPeriod);
    ExecSql(sUpSql);
    {1} ProgressBar.Position := ProgressBar.Position + 1; //进度条增量
    ADOSetTmp.Next;
  end;
  ADOSetTmp.Free;
  Result := 1;
end;

procedure TfrmFixDepDlg.bbNoClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmFixDepDlg.bbOkClick(Sender: TObject);
begin
  inherited;
  if cPubMode = 'D' then
  begin
    case DBCalcDepreciation of
      0: ShowMsg('计提折旧出错,请检查固定资产明细后重试!');
      1: ShowMsg('本期固定资产计提折旧成功!');
      -1: ShowMsg('本期没有要计提折旧的固定资产!');
    end;
  end
  else
    if cPubMode = 'U' then
    begin
      case DBCalcUnDepreciation of
        0: ShowMsg('反计提折旧出错,请检查后重再试!');
        1: ShowMsg('本期固定资产反计提折旧成功!');
        -1: ShowMsg('本期没有固定资产计提折旧数据!');
      end;
    end;
end;

end.



//此源码由程序太平洋收集整理发布,任何人都可自由转载,但需保留本站信息
//╭⌒╮┅~ ¤ 欢迎光临程序太平洋╭⌒╮
//╭⌒╭⌒╮╭⌒╮~╭⌒╮  ︶  ,︶︶
//,︶︶︶︶,''︶~~ ,''~︶︶  ,''
//╔ ╱◥███◣═╬╬╬╬╬╬╬╬╬╗
//╬ ︱田︱田 田 ︱          ╬
//╬       http://www.5ivb.net ╬
//╬  ╭○╮●                     ╬
//╬  /■\/■\                    ╬
//╬   <| ||    有希望,就有成功! ╬
//╬                 ╬
//╚╬╬╬╬╬╬╬╬╬╬╗  ╔╬╬╬╬╝
//
//说明:
//专业提供VB、.NET、Delphi、ASP、PB源码下载
//包括:程序源码,控件,商业源码,系统方案,开发工具,书籍教程,技术文档

⌨️ 快捷键说明

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