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

📄 fc.cpp

📁 速达开源ERP系统
💻 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 + -