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 + -
显示快捷键?