📄 fc.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "FC.h"
#include "Cscm.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "RecBaseForm"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
#include"gvar.h"
TfrmFC *frmFC;
//---------------------------------------------------------------------------
__fastcall TfrmFC::TfrmFC(TComponent* Owner)
: TRecBaseForm(Owner,euSdFc,"")
{
}
//----------------------------------------------------------------------------
AnsiString __fastcall TfrmFC::GetFieldValue(int FieldIndex)
{
WideString S;
S = ReadFieldValue(comServer,FieldIndex);
return(S);
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::SetFieldValue(int Index,AnsiString Value)
{
WriteFieldValue(comServer,Index,Value);
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::ClearControl(bool BringToNext)
{
if(!BringToNext)
{
seFcMonth->Text =""; //财务月份
seFcPeriod->Text =""; //会计期间
seFcBegDate->Text =""; //起始日期
seFcEndDate->Text =""; //结束日期
chkFcEndOfYear->Checked=false; //年度结束月
chkFcCurrent->Checked =false; //当前月份
chkFcCurPeriod->Checked =false; //当前期间
chkFcPPost->Checked =false; //采购状态
chkFcSPost->Checked =false; //销售状态
chkFcMPost->Checked =false; //生产状态
chkFcIPost->Checked =false; //库存状态
}
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,true,FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,true,true,false, sgFc,sgFc->Name);
ClientGroup->AddComponent(2,false,false,true,seFcEndDate,seFcEndDate->Name);
ClientGroup->AddComponent(2,true,true,false, scFcYear,scFcYear->Name);
ClientGroup->AddComponent(2,false,false,false,BClassIdMonth,BClassIdMonth->Name);
FillComboBox(scFcYear,"select * from sdfy order by FYYEAR","FYYEAR","FYPERIODS","FYBEGDATE","FYENDDATE","FYCURRENT");
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::GetDataFromComObject()
{
seFcMonth->Text=GetFieldValue(fiFcMonth);
sgFc->LocateGrid(1,seFcMonth->Text);
seFcPeriod->Text=GetFieldValue(fiFcPeriod);
seFcBegDate->Text=GetFieldValue(fiFcBegDate);
seFcEndDate->Text=GetFieldValue(fiFcEndDate);
chkFcEndOfYear->Checked=GetFieldValue(fiFcEndOfYear)=="1"? true :false;
chkFcCurrent->Checked=GetFieldValue(fiFcCurrent)=="1"? true :false;
chkFcCurPeriod->Checked=GetFieldValue(fiFcCurPeriod)=="1"? true :false;
chkFcPPost->Checked=GetFieldValue(fiFcPPost)=="1"? true :false;
chkFcSPost->Checked=GetFieldValue(fiFcSPost)=="1"? true :false;
chkFcMPost->Checked=GetFieldValue(fiFcMPost)=="1"? true :false;
chkFcIPost->Checked=GetFieldValue(fiFcIPost)=="1"? true :false;
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::SendDataToComObject()
{
WriteFieldValue(comServer,fiFcYear,scFcYear->Text);
WriteFieldValue(comServer,fiFcMonth,seFcMonth->Text);
WriteFieldValue(comServer,fiFcPeriod,seFcPeriod->Text);
WriteFieldValue(comServer,fiFcBegDate,seFcBegDate->Text);
WriteFieldValue(comServer,fiFcEndDate,seFcEndDate->Text);
WriteFieldValue(comServer,fiFcEndOfYear,chkFcEndOfYear->Checked? "1":"0");
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::WaitUserInput()
{
seFcEndDate->SetFocus();
}
//----------------------------------------------------------------------------
AnsiString __fastcall TfrmFC::GetDataToGrid()
{
AnsiString s;
s = "\t" + GetFieldValue(fiFcMonth)+
"\t" + GetFieldValue(fiFcBegDate)+
"\t" + GetFieldValue(fiFcEndDate);
return(s);
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetDataToGrid();
if (mAction == 0) //Add
{
sgFc->AddItem(ItemStr);
}
else if(mAction == 1) //Chg
{
int i = sgFc->Row;
sgFc->RemoveItem(i);
sgFc->AddItem(ItemStr,i);
}
else if(mAction == 2) //Del
{
sgFc->RemoveItem(sgFc->Row);
}
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgFc->RowCount = 1;
while (comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgFc->AddItem(ItemStr);
comServer->MoveNext();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::FormShow(TObject *Sender)
{
scFcYear->Text=g_sdCurDate.SubString(1,4);
GetYearInf();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::seFcMonthKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13 && CurrentState==caNormal)
{
comServer->LocateByKey(seFcMonth->Text);
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::scFcYearClick(TObject *Sender)
{
GetYearInf();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::GetYearInf()
{
scFcYear->LocateKey(scFcYear->Text);
seFyPeriods->Text=scFcYear->ItemData[1];
seFyBegDate->Text=scFcYear->ItemData[2];
seFyEndDate->Text=scFcYear->ItemData[3];
chkFyCurrent->Checked=scFcYear->ItemData[4]=="1"? true:false;
comServer->FilterString ="FCYEAR='"+scFcYear->Text+"'";
comServer->OrderString="FCMONTH";
comServer->Query();
FillGridWithData();
comServer->MoveFirst();
GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::muSaveClick(TObject *Sender)
{
TDateTime BegTime;
AnsiString TempBegingDay,ItemStr;
BegTime=StrToDateTime(seFcEndDate->Text);
BegTime++;
TempBegingDay=FormatDateTime("yyyy-mm-dd",BegTime);
TRecBaseForm::muSaveClick(Sender);
if(chkFcEndOfYear->Checked==true &&seFyEndDate->Text!=seFcEndDate->Text)
throw Exception("财务年度结束日期不符!");
comServer->MoveNext();
if(comServer->Eof == 0)
{
comServer->Edit();
WriteFieldValue(comServer,fiFcBegDate,TempBegingDay);
try
{
comServer->Post();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
ItemStr = GetDataToGrid();
sgFc->ChangeItem(ItemStr,sgFc->Row+1);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::RefreshUpdateData(int MsgSrc,int MsgType)
{
if(MsgSrc==euSdFy)
{
if(ShowUpdateMessage(MsgSrc,MsgType))
FillComboBox(scFcYear,"select * from sdfy order by FYYEAR","FYYEAR","FYPERIODS","FYBEGDATE","FYENDDATE","FYCURRENT");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::sgFcClick(TObject *Sender)
{
if (sgFc->Row> 0)
comServer->LocateByKey(sgFc->TextMatrix[sgFc->Row][1]);
if (!comServer->Eof)
GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::BClassIdMonthClick(TObject *Sender)
{
TfrmCscm *TempCscm=new TfrmCscm(this);
TempCscm->ShowModal();
delete TempCscm;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::muDeleteDetailClick(TObject *Sender)
{
TComResultSet *TResultSet;
try
{
TResultSet=NewResultSet();
comServer->FilterString ="";
comServer->OrderString="fcyear";
comServer->Query();
comServer->MoveLast();
AnsiString m_FcYear=GetFieldValue(fiFcYear);
if(m_FcYear.ToInt()>scFcYear->Text.ToInt())
throw Exception("请先删除'"+m_FcYear+"'年度财务月份!");
if(m_FcYear.ToInt()<scFcYear->Text.ToInt())
throw Exception("'"+scFcYear->Text+"'年度财务月份不存在!");
if(Application->MessageBox("要删除该年度财务月份吗?","确认",MB_YESNO)==IDYES)
{
TResultSet->Execute("delete sdfc where fcyear='"+scFcYear->Text+"'");
sgFc->RowCount = 1;
ClearControl(false);
GetYearInf();
}
}
__finally
{
delete TResultSet;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::muAddDetailClick(TObject *Sender)
{
AnsiString m_FcYear;
if(seFyPeriods->Text.IsEmpty())
throw Exception("该财务年度不存在!");
comServer->FilterString ="";
comServer->OrderString="fcyear";
comServer->Query();
comServer->MoveFirst();
while (comServer->Eof == 0)
{
m_FcYear=GetFieldValue(fiFcYear);
if(scFcYear->Text== m_FcYear)
throw Exception("该年度财务日历已存在");
comServer->MoveNext();
}
comServer->MoveLast();
m_FcYear=GetFieldValue(fiFcYear);
if(scFcYear->Text.ToInt()> (StrToIntDef(m_FcYear,scFcYear->Text.ToInt())+1))
throw Exception("不能跨年度增加财务月份 !");
if(Application->MessageBox("要增加该年度财务月份吗?","确认",MB_YESNO)==IDYES)
{
comServer->Execute(scFcYear->Text);
GetYearInf();
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -