📄 commondata.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#define _YW_SDERP_DLL
#include "CommonData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
/////////////////////////////////////////////////////////////////////
/////////财务月份维护 Fc implement
/////////////////////////////////////////////////////////////////////
void __fastcall TsdFc:: SetFcYear(AnsiString value)
{
if (value.IsEmpty())
throw Exception("财务年度不能为空!");
m_FcYear=value;
}
void __fastcall TsdFc:: SetFcMonth(AnsiString value)
{
if (value.IsEmpty())
throw Exception("财务月份不能为空!");
if(value.Length()!=6)
throw Exception("财务月份长度只能等于6");
//如果小于当前财务月份则不允许删改
//当前月份来自全局变量
if(value!=m_FcMonth)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("SELECT FCMONTH FROM SDFC WHERE FCMONTH='" +value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Query->Close();
throw Exception("本财务月份已存在");
}
m_Query->Close();
}
m_FcMonth = value;
}
void __fastcall TsdFc:: SetFcPeriod(int value)
{
m_FcPeriod=value;
}
void __fastcall TsdFc:: SetFcBegDate(AnsiString value)
{
if (value.IsEmpty())
throw Exception("财务月份开始日期不能为空!");
m_FcBegDate=Validate(value);
}
void __fastcall TsdFc:: SetFcEndDate(AnsiString value)
{
if(value.IsEmpty())
throw Exception("结束日期不能为空!");
m_FcEndDate=Validate(value);
}
void __fastcall TsdFc:: SetFcEndOfYear(int value)
{
if (value!=0 && value!=1)
throw Exception("年份结束标志必须是0 非年结束月,1,年结束月");
m_FcEndOfYear=value;
}
void __fastcall TsdFc:: SetFcCurrent(int value)
{
m_FcCurrent=value;
}
void __fastcall TsdFc:: SetFcCurPeriod(int value)
{
m_FcCurPeriod=value;
}
void __fastcall TsdFc:: SetFcPPost(int value)
{
m_FcPPost=value;
}
void __fastcall TsdFc:: SetFcSPost(int value)
{
m_FcSPost=value;
}
void __fastcall TsdFc:: SetFcMPost(int value)
{
m_FcMPost=value;
}
void __fastcall TsdFc:: SetFcIPost(int value)
{
m_FcIPost=value;
}
//---------------------------------------------------------------------------
AnsiString TsdFc::GetFieldValue(euFc sdFieldName)
{
switch(sdFieldName)
{
case fiFcYear:
return FcYear;
case fiFcMonth:
return FcMonth;
case fiFcPeriod:
return FcPeriod;
case fiFcBegDate:
return FcBegDate;
case fiFcEndDate:
return FcEndDate;
case fiFcEndOfYear:
return FcEndOfYear;
case fiFcCurrent:
return FcCurrent;
case fiFcCurPeriod:
return FcCurPeriod;
case fiFcPPost:
return FcPPost;
case fiFcSPost:
return FcSPost;
case fiFcMPost:
return FcMPost;
case fiFcIPost:
return FcIPost;
default:
throw Exception("当前未定义可取值");
}
}
//---------------------------------------------------------------------------
void TsdFc::SetFieldValue(euFc sdFieldName, AnsiString value)
{
switch(sdFieldName)
{
case fiFcYear:
FcYear=value;
break;
case fiFcMonth:
FcMonth=value;
break;
case fiFcPeriod:
FcPeriod=value.ToInt();
break;
case fiFcBegDate:
FcBegDate=value;
break;
case fiFcEndDate:
FcEndDate=value;
break;
case fiFcEndOfYear:
FcEndOfYear=value.ToInt();
break;
case fiFcCurrent:
FcCurrent=value.ToInt();
break;
case fiFcCurPeriod:
FcCurPeriod=value.ToInt();
break;
case fiFcPPost:
FcPPost=value.ToInt();
break;
case fiFcSPost:
FcSPost=value.ToInt();
break;
case fiFcMPost:
FcMPost=value.ToInt();
break;
case fiFcIPost:
FcIPost=value.ToInt();
break;
default:
throw Exception("当前字段未定义可赋值");
}
}
//---------------------------------------------------------------------------
TsdFc::TsdFc(TDataComm *DC)
:TsdStandard(DC)
{
try
{
EmptyValue(0);
EmptyValue(1);
QueryString="SELECT * FROM sdFc";
FilterString="";
OrderString="FcMonth";
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
}
//---------------------------------------------------------------------------
TsdFc::TsdFc()
:TsdStandard()
{
try
{
EmptyValue(0);
EmptyValue(1);
QueryString="SELECT * FROM sdFc";
FilterString="";
OrderString="FcMonth";
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
}
//---------------------------------------------------------------------------
TsdFc::~TsdFc()
{
try{
}
catch(...)
{
throw Exception("析构函数出错");
}
}
//---------------------------------------------------------------------------
void TsdFc::BackupValue()
{
b_FcYear=m_FcYear;
b_FcMonth=m_FcMonth;
b_FcPeriod=m_FcPeriod;
b_FcBegDate=m_FcBegDate;
b_FcEndDate=m_FcEndDate;
b_FcEndOfYear=m_FcEndOfYear;
b_FcCurrent=m_FcCurrent;
b_FcCurPeriod=m_FcCurPeriod;
b_FcPPost=m_FcPPost;
b_FcSPost=m_FcSPost;
b_FcMPost=m_FcMPost;
b_FcIPost=m_FcIPost;
}
//---------------------------------------------------------------------------
void TsdFc::RestoreValue()
{
m_FcYear=b_FcYear;
m_FcMonth=b_FcMonth;
m_FcPeriod=b_FcPeriod;
m_FcBegDate=b_FcBegDate;
m_FcEndDate=b_FcEndDate;
m_FcEndOfYear=b_FcEndOfYear;
m_FcCurrent=b_FcCurrent;
m_FcCurPeriod=b_FcCurPeriod;
m_FcPPost=b_FcPPost;
m_FcSPost=b_FcSPost;
m_FcMPost=b_FcMPost;
m_FcIPost=b_FcIPost;
}
//---------------------------------------------------------------------------
void TsdFc::EmptyValue(int Index)
{
switch(Index)
{
case 0:
m_FcYear="";
m_FcMonth="";
m_FcPeriod=0;
m_FcBegDate="";
m_FcEndDate="";
m_FcEndOfYear=0;
m_FcCurrent=0;
m_FcCurPeriod=0;
m_FcPPost=0;
m_FcSPost=0;
m_FcMPost=0;
m_FcIPost=0;
break;
case 1:
b_FcYear="";
b_FcMonth="";
b_FcPeriod=0;
b_FcBegDate="";
b_FcEndDate="";
b_FcEndOfYear=0;
b_FcCurrent=0;
b_FcCurPeriod=0;
b_FcPPost=0;
b_FcSPost=0;
b_FcMPost=0;
b_FcIPost=0;
break;
}
}
//---------------------------------------------------------------------------
void TsdFc::BatchLetValue()
{
m_FcYear=m_Query->FieldValues["FcYear"];
m_FcMonth=m_Query->FieldValues["FcMonth"];
m_FcPeriod=m_Query->FieldValues["FcPeriod"];
m_FcBegDate=m_Query->FieldValues["FcBegDate"];
m_FcEndDate=m_Query->FieldValues["FcEndDate"];
m_FcEndOfYear=m_Query->FieldValues["FcEndOfYear"];
m_FcCurrent=m_Query->FieldValues["FcCurrent"];
m_FcCurPeriod=m_Query->FieldValues["FcCurPeriod"];
m_FcPPost=m_Query->FieldValues["FcPPost"];
m_FcSPost=m_Query->FieldValues["FcSPost"];
m_FcMPost=m_Query->FieldValues["FcMPost"];
m_FcIPost=m_Query->FieldValues["FcIPost"];
BackupValue();
}
//---------------------------------------------------------------------------
void TsdFc::Update()
{
if(CurStatus==0||CurStatus==1)
throw Exception("当前不是编辑状态,不能进行存盘操作!");
if(m_FcMonth.IsEmpty()==true)
throw Exception("财务月份不能为空!");
m_StoredProc->Close();
if(CurStatus==2||CurStatus==4)
{
m_StoredProc->ProcedureName="sdFc_Insert";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@FcYear",ftString,pdInput,4,m_FcYear);
m_StoredProc->Parameters->CreateParameter("@FcMonth",ftString,pdInput,6,m_FcMonth);
m_StoredProc->Parameters->CreateParameter("@FcPeriod",ftInteger,pdInput,1,m_FcPeriod);
m_StoredProc->Parameters->CreateParameter("@FcBegDate",ftString,pdInput,10,m_FcBegDate);
m_StoredProc->Parameters->CreateParameter("@FcEndDate",ftString,pdInput,10,m_FcEndDate);
m_StoredProc->Parameters->CreateParameter("@FcEndOfYear",ftInteger,pdInput,1,m_FcEndOfYear);
m_StoredProc->Parameters->CreateParameter("@FcCurrent",ftInteger,pdInput,1,m_FcCurrent);
m_StoredProc->Parameters->CreateParameter("@FcCurPeriod",ftInteger,pdInput,1,m_FcCurPeriod);
m_StoredProc->Parameters->CreateParameter("@FcPPost",ftInteger,pdInput,1,m_FcPPost);
m_StoredProc->Parameters->CreateParameter("@FcSPost",ftInteger,pdInput,1,m_FcSPost);
m_StoredProc->Parameters->CreateParameter("@FcMPost",ftInteger,pdInput,1,m_FcMPost);
m_StoredProc->Parameters->CreateParameter("@FcIPost",ftInteger,pdInput,1,m_FcIPost);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
else
{
m_StoredProc->ProcedureName="sdFc_Update";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_FcMonth",ftString,pdInput,6,b_FcMonth);
m_StoredProc->Parameters->CreateParameter("@FcYear",ftString,pdInput,4,m_FcYear);
m_StoredProc->Parameters->CreateParameter("@FcMonth",ftString,pdInput,6,m_FcMonth);
m_StoredProc->Parameters->CreateParameter("@FcPeriod",ftInteger,pdInput,1,m_FcPeriod);
m_StoredProc->Parameters->CreateParameter("@FcBegDate",ftString,pdInput,10,m_FcBegDate);
m_StoredProc->Parameters->CreateParameter("@FcEndDate",ftString,pdInput,10,m_FcEndDate);
m_StoredProc->Parameters->CreateParameter("@FcEndOfYear",ftInteger,pdInput,1,m_FcEndOfYear);
m_StoredProc->Parameters->CreateParameter("@FcCurrent",ftInteger,pdInput,1,m_FcCurrent);
m_StoredProc->Parameters->CreateParameter("@FcCurPeriod",ftInteger,pdInput,1,m_FcCurPeriod);
m_StoredProc->Parameters->CreateParameter("@FcPPost",ftInteger,pdInput,1,m_FcPPost);
m_StoredProc->Parameters->CreateParameter("@FcSPost",ftInteger,pdInput,1,m_FcSPost);
m_StoredProc->Parameters->CreateParameter("@FcMPost",ftInteger,pdInput,1,m_FcMPost);
m_StoredProc->Parameters->CreateParameter("@FcIPost",ftInteger,pdInput,1,m_FcIPost);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
TsdFc *p=new TsdFc();
if(CurStatus==2)
{
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->FcMonth);
}
else
{
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->FcMonth,this->b_FcMonth);
}
}
//---------------------------------------------------------------------------
void TsdFc::BuildFc(AnsiString ParamFy) //生成财务月份
{
AnsiString m_Year[5],m_Fc[12],m_BDay,m_EDay;
TDateTime tempDate,temDateCont;
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("SELECT * FROM SDFy WHERE FYYEAR='" +ParamFy+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Year[0]=m_Query->FieldValues["FYYEAR"]; //年度
m_Year[1]=m_Query->FieldValues["FYPERIODS"];//期间
m_Year[2]=m_Query->FieldValues["FYBEGDATE"];//开始
m_Year[3]=m_Query->FieldValues["FYENDDATE"];//结束
m_Year[4]=m_Query->FieldValues["FYCURRENT"];//当前
}
else
throw Exception("财务年度 '"+ParamFy+"' 不存在!");
// start
m_Fc[0]= m_Year[0]; //年度
for(int i=1;i<=StrToInt(m_Year[1]);i++)
{
m_Fc[1]= i; //财务期间
if(i>9)
m_Fc[2]=m_Fc[0]+AnsiString(i); //财务月份10-12
else
m_Fc[2]=m_Fc[0]+"0"+AnsiString(i); //财务月份1-9
if(i==1)
m_Fc[3]=m_Year[2]; //开始日期1月
else
m_Fc[3]=temDateCont; //开始日期2-12月
tempDate=StrToDateTime(m_Fc[3]);
m_BDay=m_Fc[3].SubString(6,2);
for(int j=1;j<33;j++)
{
tempDate++;
m_EDay=FormatDateTime("yyyy-mm-dd",tempDate);
m_EDay=m_EDay.SubString(6,2);
if(m_EDay!=m_BDay)
break;
}
temDateCont=tempDate=FormatDateTime("yyyy-mm-dd",tempDate);
tempDate--;
m_Fc[4]=FormatDateTime("yyyy-mm-dd",tempDate); //结束日期
AddNew(); //增加
SetFieldValue(fiFcYear, m_Fc[0]);
SetFieldValue(fiFcPeriod,m_Fc[1]);
SetFieldValue(fiFcMonth,m_Fc[2]);
if(i<12)
{
SetFieldValue(fiFcBegDate, m_Fc[3]);
SetFieldValue(fiFcEndDate, m_Fc[4]);
SetFieldValue(fiFcEndOfYear, "0");
}
if(i==12)
{
SetFieldValue(fiFcBegDate, m_Fc[3]);
SetFieldValue(fiFcEndDate,m_Year[3]);
if(m_Fc[1]=="12")
SetFieldValue(fiFcEndOfYear,"1");
else
SetFieldValue(fiFcEndOfYear,"0");
}
if(i==13)
{
SetFieldValue(fiFcBegDate,m_Year[3]);
SetFieldValue(fiFcEndDate,m_Year[3]);
SetFieldValue(fiFcEndOfYear,"1");
}
Update();
}
//end
}
//---------------------------------------------------------------------------
void TsdFc::Delete()
{
if(CurStatus!=1)
throw Exception("当前状态不能进行删除操作!");
if(m_FcMonth.IsEmpty()==true)
throw Exception("当前没有记录可以删除!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdFc_Delete";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_FcMonth",ftString,pdInput,6,b_FcMonth);
m_StoredProc->ExecProc();
m_StoredProc->Close();
DeleteRecord(this->b_FcMonth);
}
//---------------------------------------------------------------------------
void TsdFc::Assign(TsdFc *p)
{
this->SetActionID(p->CurStatus);
this->m_FcYear=p->m_FcYear;
this->m_FcMonth=p->m_FcMonth;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -