fc.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 388 行
CPP
388 行
//---------------------------------------------------------------------------
#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"
TfrmFC *frmFC;
//---------------------------------------------------------------------------
__fastcall TfrmFC::TfrmFC(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
UpdateFlag=false;
}
//----------------------------------------------------------------------------
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(Handle,scFcYear,"select * from sdfy order by FYYEAR","FYYEAR","FYPERIODS","FYBEGDATE","FYENDDATE","FYCURRENT");
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::GetDataFromComObject()
{
seFcMonth->Text=GetFieldValue("FcMonth");
sgFc->LocateGrid(1,seFcMonth->Text);
seFcPeriod->Text=GetFieldValue("FcPeriod");
seFcBegDate->Text=GetFieldValue("FcBegDate");
seFcEndDate->Text=GetFieldValue("FcEndDate");
chkFcEndOfYear->Checked=GetFieldValue("FcEndOfYear")=="1"? true :false;
chkFcCurrent->Checked=GetFieldValue("FcCurrent")=="1"? true :false;
chkFcCurPeriod->Checked=GetFieldValue("FcCurPeriod")=="1"? true :false;
chkFcPPost->Checked=GetFieldValue("FcPPost")=="1"? true :false;
chkFcSPost->Checked=GetFieldValue("FcSPost")=="1"? true :false;
chkFcMPost->Checked=GetFieldValue("FcMPost")=="1"? true :false;
chkFcIPost->Checked=GetFieldValue("FcIPost")=="1"? true :false;
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::SendDataToComObject()
{
if (UpdateFlag==false)
{
SetFieldValue("FcYear",fcstruc.s_fcyear);
SetFieldValue("FcMonth",fcstruc.s_month);
SetFieldValue("FcPeriod",fcstruc.s_period);
SetFieldValue("FcBegDate",fcstruc.s_begdate);
SetFieldValue("FcEndDate",fcstruc.s_enddate);
SetFieldValue("FcCurrent",chkFcCurrent->Checked? "1":"0");
SetFieldValue("FcEndOfYear",chkFcEndOfYear->Checked? "1":"0");
SetFieldValue("FcPPost",chkFcPPost->Checked? "1":"0");
SetFieldValue("FcSPost",chkFcSPost->Checked? "1":"0");
SetFieldValue("FcMPost",chkFcMPost->Checked? "1":"0");
SetFieldValue("FcIPost",chkFcIPost->Checked? "1":"0");
SetFieldValue("FcCurPeriod",chkFcCurPeriod->Checked? "1":"0");
}
else
{
SetFieldValue("FcEndDate",seFcEndDate->Text);
}
}
//----------------------------------------------------------------------------
void __fastcall TfrmFC::WaitUserInput()
{
seFcEndDate->SetFocus();
}
//----------------------------------------------------------------------------
AnsiString __fastcall TfrmFC::GetDataToGrid()
{
AnsiString s;
AnsiString CurrentSign;
CurrentSign=GetFieldValue("FcCurrent")==0?"":"◎" ;
s=AnsiString(CurrentSign)+"\t"+GetFieldValue("FcMonth")+
"\t"+GetFieldValue("FcBegDate")+"\t"+GetFieldValue("FcEndDate");
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;
if (scFcYear->Text=="")
{
return;
}
else
{
comServer->FilterString ="FcYear='"+scFcYear->Text+"'";
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);
if (Trim(seFcEndDate->Text)<Trim(seFcBegDate->Text))
{
throw Exception("'结束日期'要>'开始日期'");
}
TRecBaseForm::muSaveClick(Sender);
if(chkFcEndOfYear->Checked && seFyEndDate->Text!=seFcEndDate->Text)
throw Exception("财务年度结束日期不符!");
comServer->MoveNext();
if(comServer->Eof == 0)
{
comServer->Edit();
SetFieldValue("FcBegDate",TempBegingDay);
try
{
comServer->Post();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
ItemStr = GetDataToGrid();
sgFc->ChangeItem(ItemStr,sgFc->Row+1);
}
UpdateFlag=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::RefreshUpdateData(int MsgSrc,int MsgType)
{
}
//---------------------------------------------------------------------------
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,NULL);
TempCscm->ShowModal();
delete TempCscm;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFC::muDeleteDetailClick(TObject *Sender)
{
if (scFcYear->Text=="")
{
throw Exception("请指定要删除的财务年份。");
}
TComResultSet *TResultSet;
try
{
TResultSet=new TComResultSet(Handle,g_ClientHandle);
comServer->FilterString ="";
comServer->OrderString="FcYear";
comServer->Query();
comServer->MoveLast();
AnsiString m_FcYear=GetFieldValue("FcYear");
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_ICONQUESTION+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)
{
UpdateFlag=false;
if (scFcYear->Text=="")
{
throw Exception("请指定要增加的财务年份。");
}
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("FcYear");
if(scFcYear->Text== m_FcYear)
throw Exception("该年度财务日历已存在");
comServer->MoveNext();
}
comServer->MoveLast();
m_FcYear=GetFieldValue("FcYear");
if(scFcYear->Text.ToInt()> (StrToIntDef(m_FcYear,scFcYear->Text.ToInt())+1))
throw Exception("不能跨年度增加财务月份 !");
if(Application->MessageBox("要增加该年度财务月份吗?","确认",MB_ICONQUESTION+MB_YESNO)==IDYES)
{
//TRecBaseForm::muAddDetailClick(Sender);
// comServer->Execute(scFcYear->Text); //要在中间业务校验
BuildFc(Sender,scFcYear->Text);
GetYearInf();
}
}
//---------------------------------------------
void __fastcall TfrmFC::BuildFc(TObject* Sender,AnsiString ParamFy) //生成财务月份
{
AnsiString m_Year[5],m_Fc[12],m_BDay,m_EDay;
TDateTime tempDate,temDateCont;
m_Year[0]=scFcYear->Text; //年度
m_Year[1]=seFyPeriods->Text;//期间
m_Year[2]=seFyBegDate->Text;//开始
m_Year[3]=seFyEndDate->Text;//结束
m_Year[4]=chkFyCurrent->Checked?"1":"0";//当前
// 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]=FormatDateTime("yyyy-mm-dd",temDateCont); //modify 2003-03-06
//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); //结束日期
//
TRecBaseForm::muAddDetailClick(Sender);
fcstruc.s_fcyear=m_Fc[0];
fcstruc.s_period=m_Fc[1];
fcstruc.s_month=m_Fc[2];
if(i<12)
{
fcstruc.s_begdate=m_Fc[3];
fcstruc.s_enddate=m_Fc[4];
fcstruc.s_endofyear="0";
}
if(i==12)
{
fcstruc.s_begdate=m_Fc[3];
fcstruc.s_enddate=m_Year[3];
if(m_Fc[1]=="12")
fcstruc.s_endofyear="1";
else
fcstruc.s_endofyear="0";
}
if(i==13)
{
fcstruc.s_begdate=m_Year[3];
fcstruc.s_enddate=m_Year[3];
fcstruc.s_endofyear="1";
}
TRecBaseForm::muSaveClick(Sender);
}
}
//-------------------------------------
void __fastcall TfrmFC::muEditDetailClick(TObject *Sender)
{
UpdateFlag=true;
if (scFcYear->Text=="")
{
throw Exception("请指定要修改的财务年份。");
}
TRecBaseForm::muEditDetailClick(Sender);
}
//--------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?