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

📄 commondata.cpp

📁 速达开源ERP系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//---------------------------------------------------------------------------
#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 + -