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

📄 finance.~cpp

📁 一个不错的销售系统
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
//      Name:           Finance.cpp
//      Author:         Jrays
//      Date:           1999.8.7
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Finance.h"
#include "About.h"
#include "Data.h"
#include "QrMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmFinance *frmFinance;
//---------------------------------------------------------------------------
__fastcall TfrmFinance::TfrmFinance(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::FormCreate(TObject *Sender)
{
        Caption = Application->Title + "  财务分析模块";
        edtLoanLoan->Text = "";
        edtLoanRepay->Text = "";
        edtRestoreProduct->Text = "";
        edtRestoreMaterial->Text = "";
        bbnFinanceFirst->Enabled = false;
        bbnFinancePrior->Enabled = false;
        try
        {
                FillFinanceStreamTable();
                FillFinanceTable();
                tblFinance->Active = true;
                tblFinanceStream->Active = true;
        }
        catch( EDatabaseError &err )
        {
                ShowMessageDlg( "产生数据库错误:" + err.Message
                                + "\n\n没有操作被完成" );
                tblFinance->Active = true;
                tblFinanceStream->Active = false;
                bbnFinanceFirst->Enabled = false;
                bbnFinancePrior->Enabled = false;
                bbnFinanceNext->Enabled = false;
                bbnFinanceLast->Enabled = false;
//                bbnFirst->Enabled = false;
//                bbnPrior->Enabled = false;
//                bbnNext->Enabled = false;
//                bbnLast->Enabled = false;
        }
        catch( char *s )
        {
                ShowMessageDlg( AnsiString( "产生错误:") + s );
                tblFinance->Active = true;
                tblFinanceStream->Active = false;
                bbnFinanceFirst->Enabled = false;
                bbnFinancePrior->Enabled = false;
                bbnFinanceNext->Enabled = false;
                bbnFinanceLast->Enabled = false;
//                bbnFirst->Enabled = false;
//                bbnPrior->Enabled = false;
//                bbnNext->Enabled = false;
//                bbnLast->Enabled = false;
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::FillFinanceStreamTable()
{
        int MinQuarter = GetMinQuarter( "原料订购表" );
        int curQuarter = GetMinQuarter( "产品生产销售表" );
        if( MinQuarter != curQuarter )
                throw "数据库的数据一致性遭受破坏,"
        "系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
        "系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
        curQuarter = GetMinQuarter( "原料和产品库存费用表" );
        if( MinQuarter != curQuarter )
                throw "数据库的数据一致性遭受破坏,"
        "系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
        curQuarter = GetMinQuarter( "贷款利息表" );
        if( MinQuarter != curQuarter )
                throw "数据库的数据一致性遭受破坏,"
        "系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
        curQuarter = GetMinQuarter( "贷款借还表" );
        if( MinQuarter != curQuarter )
                throw "数据库的数据一致性遭受破坏,"
        "系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";

        curQuarter = MinQuarter;
        float ProductPayment;
        float LoanLoan;
        float LoanRepay;
        float LoanInterest;
        float ProductRestore;
        float MaterialRestore;
        float MaterialBuy;
        float OtherCost;

        tblFinanceStream->Active = false;
        tblFinanceStream->EmptyTable();
        tblFinanceStream->Active = true;

        while( true )
        {
                query->Active = false;
                query->SQL->Clear();
                query->SQL->Add( "SELECT " );
                query->SQL->Add( "Material.Quarter, Material.Quantity, Material.Price, " );
                query->SQL->Add( "Product.Output, Product.OtherCost, Product.Sold, Product.Price, " );
                query->SQL->Add( "Restore.MaterialCost, Restore.ProductCost, " );
                query->SQL->Add( "LoanInterest.Interest, " );
                query->SQL->Add( "Loan.Loan, Loan.Repay " );
                query->SQL->Add( " From " );
                query->SQL->Add( "原料订购表 Material, " );
                query->SQL->Add( "产品生产销售表 Product, " );
                query->SQL->Add( "原料和产品库存费用表 Restore, " );
                query->SQL->Add( "贷款利息表 LoanInterest, " );
                query->SQL->Add( "贷款借还表 Loan");
                query->SQL->Add( "WHERE " );
                query->SQL->Add( "Material.Quarter = :quarter " );
                query->SQL->Add( "AND Product.Quarter = Material.Quarter " );
                query->SQL->Add( "AND Restore.Quarter = Material.Quarter " );
                query->SQL->Add( "AND LoanInterest.Quarter = Material.Quarter ");
                query->SQL->Add( "AND Loan.Quarter = Material.Quarter " );
//              query->SQL->Add( "ORDER BY Material.Quarter" );
                query->Prepare();
                query->ParamByName( "quarter" )->AsInteger = curQuarter;
                query->Open();

                if( query->RecordCount == 0 )
                {
                        if( tblFinanceStream->State == dsEdit )
                                tblFinanceStream->Post();
                        break;
                }
                ProductPayment = query->FieldByName( "Sold" )->AsInteger *
                                 query->Fields->FieldByNumber(7)->AsFloat;
                LoanLoan = query->FieldByName( "Loan" )->AsFloat;
                LoanRepay = query->FieldByName( "Repay" )->AsFloat;
                LoanInterest = LoanLoan*query->FieldByName( "Interest" )->AsFloat;

                tmpQuery->Active = false;
                tmpQuery->SQL->Clear();
                tmpQuery->SQL->Add( "SELECT Material.Quarter, Material.Available, Product.Available " );
                tmpQuery->SQL->Add( "FROM " );
                tmpQuery->SQL->Add( "可用原料数量表 Material,  可用产品数量表 Product " );
                tmpQuery->SQL->Add( "WHERE " );
                tmpQuery->SQL->Add( "Material.Quarter = :quarter " );
                tmpQuery->SQL->Add( "AND Product.Quarter = Material.Quarter " );
                tmpQuery->ParamByName( "quarter" )->AsInteger = curQuarter-1;
                tmpQuery->Open();

                ProductRestore = query->FieldByName( "ProductCost" )->AsFloat*
                                 tmpQuery->Fields->FieldByNumber(3)->AsInteger;
                MaterialRestore = query->FieldByName( "MaterialCost" )->AsFloat*
                                 tmpQuery->Fields->FieldByNumber(2)->AsInteger;
                MaterialBuy = query->FieldByName( "Quantity" )->AsInteger *
                              query->Fields->FieldByNumber(3)/*Material.Price*/->AsFloat;
                OtherCost = query->FieldByName( "Output" )->AsInteger *
                            query->FieldByName( "OtherCost" )->AsFloat;
                if( ProductPayment<0 || LoanLoan<0 || LoanRepay<0
                        || LoanInterest<0 || ProductRestore<0
                        || MaterialRestore<0 || MaterialBuy<0 || OtherCost<0 )
                {
                        query->Active = false;
                        tmpQuery->Active = false;
                        throw   "数据集中数据初始化失败,因为数据库中出现了不合法的数据(负数)。\n"
                                "建议:立即退出系统。请系统维护员维护数据库";
                }
                tblFinanceStream->Append();
                tblFinanceStream->FieldByName( "Quarter" )->AsInteger = curQuarter;
                tblFinanceStream->FieldByName( "ProductPayment" )->AsFloat = ProductPayment;
                tblFinanceStream->FieldByName( "LoanLoan" )->AsFloat = LoanLoan;
                tblFinanceStream->FieldByName( "LoanRepay" )->AsFloat = LoanRepay;
                tblFinanceStream->FieldByName( "LoanInterest" )->AsFloat = LoanInterest;
                tblFinanceStream->FieldByName( "ProductRestore" )->AsFloat = ProductRestore;
                tblFinanceStream->FieldByName( "MaterialRestore" )->AsFloat = MaterialRestore;
                tblFinanceStream->FieldByName( "MaterialBuy" )->AsFloat = MaterialBuy;
                tblFinanceStream->FieldByName( "OtherCost" )->AsFloat = OtherCost;
                tblFinanceStream->Post();
                curQuarter++;
        }
        tblFinanceStream->First();
        query->Active = false;
        tmpQuery->Active = false;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::FillFinanceTable()
{
        int MinQuarter = GetMinQuarter( "季度现金流分析表" );
        tblFinance->Active = true;
        while( !tblFinance->Eof )
        {
                if( tblFinance->FieldByName( "Quarter" )->AsInteger >= MinQuarter )
                        tblFinance->Delete();
//                        tblFinance->Post();
                else
                        tblFinance->Next();
        }
        if( tblFinance->FieldByName( "Quarter" )->AsInteger >= MinQuarter )
                tblFinance->Delete();
//                tblFinance->Post();
        //  清除原有的无效数据
        tblFinanceStream->First();
        tblFinanceStream->Active = true;
        int curQuarter = MinQuarter;
        float Cash;
        while( true )
        {
                tblFinance->Last();
                Cash = tblFinance->FieldByName( "Cash" )->AsFloat;
                Cash += tblFinanceStream->FieldByName( "ProductPayment" )->AsFloat;
                Cash += tblFinanceStream->FieldByName( "LoanLoan" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "LoanRepay" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "LoanInterest" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "ProductRestore" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "MaterialRestore" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "MaterialBuy" )->AsFloat;
                Cash -= tblFinanceStream->FieldByName( "OtherCost" )->AsFloat;
                tblFinance->Append();
                tblFinance->FieldByName( "Quarter" )->AsInteger = curQuarter;
                tblFinance->FieldByName( "Cash" )->AsFloat = Cash;
                tblFinance->Post();
                tblFinanceStream->Next();                
                if( tblFinanceStream->Eof )
                        break;
                curQuarter++;
        }
        tblFinanceStream->First();
}
//---------------------------------------------------------------------------

int  __fastcall TfrmFinance::GetMinQuarter( AnsiString tablename )
{
        TTable *table = new TTable(this);
        table->DatabaseName = Database;
        table->TableName = tablename;
        table->Active = true;
        int minQuarter = 100;
        table->First();
        while( !table->Eof )
        {
                int curQuarter = table->FieldByName( "Quarter" )->AsInteger;
                minQuarter = minQuarter<curQuarter ? minQuarter : curQuarter ;
                table->Next();
        }
        int curQuarter = table->FieldByName( "Quarter" )->AsInteger;
        minQuarter = minQuarter<curQuarter ? minQuarter : curQuarter ;
        table->Active = false;
        delete table;
        return minQuarter;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::bbnGoClick(TObject *Sender)
{
        Release();        
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::bbnFinanceFirstClick(TObject *Sender)
{
        tblFinanceStream->First();
        bbnFinanceFirst->Enabled = false;
        bbnFinancePrior->Enabled = false;
        bbnFinanceNext->Enabled = true;
        bbnFinanceLast->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::bbnFinancePriorClick(TObject *Sender)
{
        tblFinanceStream->Prior();
        if( tblFinanceStream->Bof )
        {
                bbnFinanceFirst->Enabled = false;
                bbnFinancePrior->Enabled = false;
        }
        bbnFinanceNext->Enabled = true;
        bbnFinanceLast->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::bbnFinanceNextClick(TObject *Sender)
{
        tblFinanceStream->Next();
        if( tblFinanceStream->Eof )
        {
                bbnFinanceLast->Enabled = false;
                bbnFinanceNext->Enabled = false;
        }
        bbnFinanceFirst->Enabled = true;
        bbnFinancePrior->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFinance::bbnFinanceLastClick(TObject *Sender)
{
        tblFinanceStream->Last();
        bbnFinanceLast->Enabled = false;
        bbnFinanceNext->Enabled = false;
        bbnFinanceFirst->Enabled = true;
        bbnFinancePrior->Enabled = true;

⌨️ 快捷键说明

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