?? cmhdl.cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstoFp
#define _YW_SDERP_DLL
#include "Cmhdl.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//====================================================
// (TsdCd) 成本初始化
//====================================================
TsdCd::TsdCd(TDataComm *DC)
:TsdStandard(DC)
{
try
{
EmptyValue(0);
EmptyValue(1);
QueryString="SELECT cdfmonth,cdgoods,cdgoodsname=goodsname,CdpmpcCode=goodspmpcCode,cdBopprice,cdBopqty=stockbopqty,cdbopamt,CdInitFlg FROM Sdcd,sdgoods,sdstock";
FilterString="";
OrderString=" cdfmonth,cdgoods";
}
catch(...)
{
throw Exception("構造函數出錯!");
};
}
//------------------------------------------------------------------------------
TsdCd::TsdCd()
:TsdStandard()
{
try
{
EmptyValue(0);
EmptyValue(1);
QueryString="SELECT cdfmonth,cdgoods,cdgoodsname=goodsname,CdpmpcCode=goodspmpcCode,cdBopprice,cdBopqty=stockbopqty,cdbopamt,CdInitFlg FROM Sdcd,sdgoods,sdstock";
FilterString="";
OrderString=" cdfmonth,cdgoods";
}
catch(...)
{
throw Exception("構造函數出錯!");
};
}
//------------------------------------------------------------------------------
void __fastcall TsdCd::SetCdFmonth(AnsiString value)
{
AnsiString s;
if(value.IsEmpty())
throw Exception("財務月份不能為空");
if(value!=m_CdFmonth)
{
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("財務月份:"+value+"未定義");
}
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select fcmonth from sdfc where fccurrent=1");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("未定義當前財務月份");
}
s=m_Query->FieldValues["FcMonth"];
if(value<s)
{
m_Query->Close();
throw Exception("財務月份不能小于當前月份");
}
m_Query->Close();
}
m_CdFmonth = value;
}
void __fastcall TsdCd::SetCdGoods(AnsiString value)
{
if(value.IsEmpty())
throw Exception("物料編碼不能為空");
if(value.Length()>18)
throw Exception("物料編碼長度不能大于18");
if(value!=m_CdGoods)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select goodsName from sdgoods where goodsCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("物料編碼 "+value+"未定義");
}
m_Query->Close();
}
m_CdGoods=value;
}
void __fastcall TsdCd::SetCdBopPrice(double value)
{
if(value<0)
throw Exception("期初單價不能小于零");
m_CdBopPrice=value;
}
void __fastcall TsdCd::SetCdBopAmt(double value)
{
if(value<0)
throw Exception("期初金額不能小于零");
m_CdBopAmt=value;
}
void __fastcall TsdCd::SetCdInitFlg(int value)
{
if(value!=0 && value!=1)
throw Exception("初始化標志只能取值0-未初始化1-已初始化");
m_CdInitFlg=value;
}
void TsdCd::SetFieldValue(euCd sdFieldName, AnsiString value)
{
switch(sdFieldName)
{
case fiCdFmonth:
CdFmonth=value;
break;
case fiCdGoods:
CdGoods=value;
break;
case fiCdBopPrice:
CdBopPrice=value.ToDouble();
break;
case fiCdBopAmt:
CdBopAmt=value.ToDouble();
break;
case fiCdInitFlg:
CdInitFlg=value.ToInt();
break;
default:
throw Exception("當前字段未定義可賦值");
}
}
//------------------------------------------------------------------------------
AnsiString TsdCd::GetFieldValue(euCd sdFieldName)
{
switch(sdFieldName)
{
case fiCdFmonth:
return CdFmonth;
case fiCdGoods:
return CdGoods;
case fiCdGoodsName:
return CdGoodsName;
case fiCdPmpcCode:
return CdPmpcCode;
case fiCdBopPrice:
return CdBopPrice;
case fiCdBopQty:
return CdBopQty;
case fiCdBopAmt:
return CdBopAmt;
case fiCdInitFlg:
return CdInitFlg;
default:
throw Exception("當前未定義可取值");
}
}
//------------------------------------------------------------------------------
void TsdCd::BackupValue()
{
b_CdFmonth=m_CdFmonth;
b_CdGoods=m_CdGoods;
b_CdGoodsName=m_CdGoodsName;
b_CdPmpcCode=m_CdPmpcCode;
b_CdBopPrice=m_CdBopPrice;
b_CdBopQty=m_CdBopQty;
b_CdBopAmt=m_CdBopAmt;
b_CdInitFlg=m_CdInitFlg;
}
//------------------------------------------------------------------------------
void TsdCd::RestoreValue()
{
m_CdFmonth=b_CdFmonth;
m_CdGoods=b_CdGoods;
m_CdGoodsName=b_CdGoodsName;
m_CdPmpcCode=b_CdPmpcCode;
m_CdBopPrice=b_CdBopPrice;
m_CdBopQty=b_CdBopQty;
m_CdBopAmt=b_CdBopAmt;
m_CdInitFlg=b_CdInitFlg;
}
//------------------------------------------------------------------------------
void TsdCd::EmptyValue(int Index)
{
switch (Index)
{
case 0:
m_CdFmonth="";
m_CdGoods="";
m_CdGoodsName="";
m_CdPmpcCode="";
m_CdBopPrice=0;
m_CdBopQty=0;
m_CdBopAmt=0;
m_CdInitFlg=0;
break;
case 1:
b_CdFmonth="";
b_CdGoods="";
b_CdGoodsName="";
b_CdPmpcCode="";
b_CdBopPrice=0;
b_CdBopQty=0;
b_CdBopAmt=0;
b_CdInitFlg=0;
}
}
//------------------------------------------------------------------------------
void TsdCd::BatchLetValue()
{
m_CdFmonth=m_Query->FieldValues["Cdfmonth"];
m_CdGoods=m_Query->FieldValues["CdGoods"];
m_CdGoodsName=m_Query->FieldValues["CdGoodsName"];
m_CdPmpcCode=m_Query->FieldValues["cdpmpcCode"];
m_CdBopPrice=m_Query->FieldValues["CdBopPrice"];
m_CdBopQty=m_Query->FieldValues["CdBopQty"];
m_CdBopAmt=m_Query->FieldValues["CdBopAmt"];
m_CdInitFlg=m_Query->FieldValues["cdInitFlg"];
BackupValue();
}
//------------------------------------------------------------------------------
void TsdCd::Assign(TsdCd *p)
{
this->SetActionID(p->CurStatus);
this->m_CdFmonth=p->m_CdFmonth;
this->m_CdGoods=p->m_CdGoods;
this->m_CdGoodsName=p->m_CdGoodsName;
this->m_CdPmpcCode=p->m_CdPmpcCode;
this->m_CdBopPrice=p->m_CdBopPrice;
this->m_CdBopQty=p->CdBopQty;
this->m_CdBopAmt=p->m_CdBopAmt;
this->m_CdInitFlg=p->m_CdInitFlg;
this->BackupValue();
}
//------------------------------------------------------------------------------
void TsdCd:: AssignValue()
{
TsdCd *p=(TsdCd *)Records(CurRecNo);
Assign(p);
}
//------------------------------------------------------------------------------
int TsdCd::Query()
{
AnsiString m_SqlStr;
m_SqlStr=QueryString;
if(FilterString.IsEmpty()==false)
m_SqlStr=m_SqlStr+" where goodscode=Stockgoodscode and goodscode=cdgoods and "+FilterString;
else
m_SqlStr=m_SqlStr+" where goodscode=stockgoodscode and cdgoods=goodscode ";
if(OrderString.IsEmpty()==false)
m_SqlStr=m_SqlStr+" Order by "+OrderString;
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add(m_SqlStr);
m_Query->Open();
ClearRecord();
if(m_Query->RecordCount>0)
{
m_Query->First();
while(!m_Query->Eof)
{
BatchLetValue();
TsdCd *p=new TsdCd();
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->CdGoods);
m_Query->Next();
}
MoveFirst();
}
m_Query->Close();
return Count;
}
//------------------------------------------------------------------------------
bool TsdCd::Find(AnsiString WhereStr)
{
AnsiString m_SqlStr;
if(WhereStr.IsEmpty()==true)
throw Exception("查找表達式不能為空");
m_SqlStr="SELECT * FROM sdCd WHERE "+WhereStr;
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add(m_SqlStr);
m_Query->Open();
if(m_Query->RecordCount!=1)
{
m_Query->Close();
return false;
}
else
{
BatchLetValue();
m_Query->Close();
return true;
}
}
//------------------------------------------------------------------------------
void TsdCd::Update()
{
if(CurStatus==0||CurStatus==1)
throw Exception("當前不是編輯狀態,不能進行存盤操作!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdCd_InitInv";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@CdFmonth",ftString,pdInput,6,m_CdFmonth);
m_StoredProc->Parameters->CreateParameter("@CdGoods",ftString,pdInput,18,m_CdGoods);
m_StoredProc->Parameters->CreateParameter("@CdBopPrice",ftFloat,pdInput,12,m_CdBopPrice);
m_StoredProc->Parameters->CreateParameter("@CdBopAmt",ftFloat,pdInput,12,m_CdBopAmt);
m_StoredProc->ExecProc();
m_StoredProc->Close();
TsdCd *p=new TsdCd();
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->CdGoods,this->b_CdGoods);
}
//------------------------------------------------------------------------------
void TsdCd::Delete()
{
//沒有刪除功能
}
TsdCd::~TsdCd()
{
try
{
}
catch(...)
{
throw Exception("析構函數出錯!");
}
}
//=============================================
// (TsdAdjCoh)入庫調整單
//=============================================
void __fastcall TsdAdjCoh:: SetAdjCohCode(AnsiString value)
{
if(value.IsEmpty())
throw Exception("調整單號不能為空");
if(value.Length()>18)
throw Exception("調整單號長度不能超過18");
if(value!=m_AdjCohCode)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("SELECT AdjcohCODE FROM SDadjcoh WHERE AdjcohCODE='" +value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Query->Close();
throw Exception("調整單號'"+value+"'未定義");
}
m_Query->Close();
}
m_AdjCohCode=value;
}
void __fastcall TsdAdjCoh:: SetAdjCohDate(AnsiString value)
{
if (value.IsEmpty())
throw Exception("調整日期不能為空");
if(value.Length()>10)
throw Exception("調整日期長度不能超過10");
m_AdjCohDate=Validate(value);
}
void __fastcall TsdAdjCoh:: SetAdjCohFmonth(AnsiString value)
{
if(value.IsEmpty()==true)
throw Exception("財務月份不能為空");
if(value.Length()>8)
throw Exception("財務月份長度不能超過8");
if (value!=m_AdjCohFmonth)
{
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("財務月份 "+value+" 未定義");
}
m_Query->Close();
}
m_AdjCohFmonth=value;
}
void __fastcall TsdAdjCoh:: SetAdjCohPosType(AnsiString value)
{
if (value.IsEmpty())
throw Exception("收發類型編碼不能為空");
if(value.Length()>18)
throw Exception("收發類型編碼長度不能超過18");
if (value!=m_AdjCohPosType)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select postypecode from sdpostype where postypecode='"+value+"'");
m_Query->Open();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -