📄 mpzh.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "mPzh.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
TKSPzh *sdPzh;
//---------------------------------------------------------------------------
__fastcall TKSPzh::TKSPzh()
:TKSMidBase()
{
}
//---------------------------------------------------------------------------
void __fastcall TKSPzh::ValidHeadValues()
{
AnsiString m_PzhCode;
AnsiString b_PzhCode;
m_PzhCode=GetMasterValue("PzhCode");
b_PzhCode=GetMasterOldValue("PzhCode");
if(m_PzhCode!=b_PzhCode)
{
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("select * from sdPZH where PzhCode='"+m_PzhCode+"'");
Query->Open();
if(Query->RecordCount>0)
{
Query->Close();
throw Exception("凭证的编号:'"+m_PzhCode+"'已经存在");
}
else
Query->Close();
}
int m_PzhFj;
m_PzhFj=GetMasterValue("PzhFj");
if(m_PzhFj<0)
throw Exception("附件原始单据的数目不能小于零");
int m_PzhFrom;
m_PzhFrom=GetMasterValue("PzhFrom");
if(m_PzhFrom!=0 && m_PzhFrom!=1)
throw Exception("凭证的来源取值只能为(1-手工录入,2-系统生成,3-转帐)");
int m_PzhCheck;
m_PzhCheck=GetMasterValue("PzhCheck");
if(m_PzhCheck!=0 && m_PzhCheck!=1)
throw Exception("凭证的审核标志只能为(0-未审核,1-已审核)");
int m_PzhPost;
m_PzhPost=GetMasterValue("PzhPost");
if(m_PzhPost!=0 && m_PzhPost!=1)
throw Exception("凭证的记帐标志只能为(0-未记帐,1-已记账)");
}
//---------------------------------------------------------------------------
void __fastcall TKSPzh::ValidItemValues()
{
int m_PzdLine;
m_PzdLine=GetDetailValue("PzdLine");
if(m_PzdLine<=0)
throw Exception("凭证的行号不能小于和等于零");
double m_PzdDir;
m_PzdDir=GetDetailValue("PzdDir");
if(m_PzdDir!=-1 && m_PzdDir!=1)
throw Exception("科目的方向只能取值(1-借方,-1-贷方)");
AnsiString m_PzdCurrency;
m_PzdCurrency=GetDetailValue("PzdCurrency");
if(vGlkmWb==1 && m_PzdCurrency.IsEmpty())
throw Exception("当凭证的科目需要外币核算时,外币的币种不能为空");
double m_PzdRate;
m_PzdRate=GetDetailValue("PzdRate");
if(m_PzdRate<=0)
throw Exception("币种的汇率不能小于和等于零");
AnsiString m_PzdUnit;
AnsiString b_PzdUnit;
if(vGlkmSl==1)
{
m_PzdUnit=GetDetailValue("PzdUnit");
if(m_PzdUnit.IsEmpty())
throw Exception("当凭证科目有数量核算属性时,计量单位不能为空");
}
double m_PzdQty;
if(vGlkmSl==1)
{
m_PzdQty=GetDetailValue("PzdQty");
if(m_PzdQty<=0)
throw Exception("当凭证科目有数量核算属性时,数量的大小不能小于等于零");
}
double m_PzdPrice;
if(vGlkmSl==1)
{
m_PzdPrice=GetDetailValue("PzdPrice");
if(m_PzdPrice<0)
throw Exception("当凭证科目有数量核算属性时,单价的大小不能小于零");
}
AnsiString m_PzdSupply;
AnsiString b_PzdSupply;
if(vGlkmSupply==1)
{
m_PzdSupply=GetDetailValue("PzdSupply");
b_PzdSupply=GetDetailOldValue("PzdSupply");
if(m_PzdSupply.IsEmpty())
throw Exception("当凭证科目有供应商往来属性时,供应商不能为空");
}
AnsiString m_PzdClient;
AnsiString b_PzdClient;
if(vGlkmClient==1)
{
m_PzdClient=GetDetailValue("PzdClient");
b_PzdClient=GetDetailOldValue("PzdClient");
if(m_PzdClient.IsEmpty())
throw Exception("当凭证科目有客户往来属性时,客户不能为空");
}
AnsiString m_PzdEmployee;
AnsiString b_PzdEmployee;
if(vGlkmHuman==1)
{
m_PzdEmployee=GetDetailValue("PzdEmployee");
b_PzdEmployee=GetDetailOldValue("PzdEmployee");
if(m_PzdEmployee.IsEmpty())
throw Exception("当凭证科目有个人往来属性时,个人资料不能为空");
}
AnsiString m_PzdProject;
AnsiString b_PzdProject;
if(vGlkmProject==1)
{
m_PzdProject=GetDetailValue("PzdProject");
b_PzdProject=GetDetailOldValue("PzdProject");
if(m_PzdProject.IsEmpty())
throw Exception("当凭证科目有项目核算属性时,项目资料不能为空");
}
AnsiString m_PzdCc;
AnsiString b_PzdCc;
if(vGlkmCc==1)
{
m_PzdCc=GetDetailValue("PzdCc");
b_PzdCc=GetDetailOldValue("PzdCc");
if(m_PzdCc.IsEmpty())
throw Exception("当凭证科目有成本中心核算属性时,成本中心不能为空");
}
AnsiString m_PzdSettleMode;
AnsiString b_PzdSettleMode;
if(vGlkmBank==1)
{
m_PzdSettleMode=GetDetailValue("PzdSettleMode");
b_PzdSettleMode=GetDetailOldValue("PzdSettleMode");
if(m_PzdSettleMode.IsEmpty())
throw Exception("当科目有银行帐属性时,结算方式不能为空");
}
AnsiString m_PzdSettleNo;
AnsiString b_PzdSettleNo;
if(vGlkmBank==1)
{
m_PzdSettleNo=GetDetailValue("PzdSettleNo");
b_PzdSettleNo=GetDetailOldValue("PzdSettleNo");
if(m_PzdSettleNo.IsEmpty())
throw Exception("当科目有银行帐/客户往来/供应商往来的属性时,结算单据号不能为空");
}
AnsiString m_PzdDept;
AnsiString b_PzdDept;
if(vGlkmHuman==1 || vGlkmDept==1)
{
m_PzdDept=GetDetailValue("PzdDept");
b_PzdDept=GetDetailOldValue("PzdDept");
if(m_PzdDept.IsEmpty())
throw Exception("当凭证有部门核算/个人核算的属性时,部门编码不能为空");
}
AnsiString m_PzdGlkm;
AnsiString b_PzdGlkm;
m_PzdGlkm=GetDetailValue("PzdGlkm");
if(m_PzdGlkm.IsEmpty())
throw Exception("凭证的科目不能为空");
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("select * from sdGlKm where GlKmCode='"+m_PzdGlkm+"' and GlkmNoUse=0 and GlkmMx=1");
Query->Open();
if(Query->RecordCount==0)
{
Query->Close();
throw Exception("科目:'"+m_PzdGlkm+"'对应的资料不存在,或不可用,或非明细科目");
}
else
{
vGlkmWb=Query->FieldValues["GlkmWb"];
vGlkmSl=Query->FieldValues["GlkmSl"];
vGlkmBank=Query->FieldValues["GlkmBank"];
vGlkmDept=Query->FieldValues["GlkmDept"];
vGlkmHuman=Query->FieldValues["GlkmHuman"];
vGlkmClient=Query->FieldValues["GlkmClient"];
vGlkmSupply=Query->FieldValues["GlkmSupply"];
vGlkmProject=Query->FieldValues["GlkmProject"];
Query->Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TKSPzh::CmdExec(AnsiString Param)
{
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -