📄 smhdl.cpp
字号:
this->m_SohSaler =p->m_SohSaler;
this->m_SohContract =p->m_SohContract;
this->m_SohCurrency =p->m_SohCurrency;
this->m_SohEnrate =p->m_SohEnrate;
this->m_SohTaxCode =p->m_SohTaxCode;
this->m_SohSettleMode =p->m_SohSettleMode;
this->m_SohDeliver =p->m_SohDeliver;
this->m_SohSsite =p->m_SohSsite;
this->m_SohTransMode =p->m_SohTransMode;
this->m_SohPayTrans =p->m_SohPayTrans;
this->m_SohDj =p->m_SohDj;
this->m_SohCancel =p->m_SohCancel;
this->m_SohCrCode =p->m_SohCrCode;
this->m_SohCancelDate =p->m_SohCancelDate;
this->m_SohCheck =p->m_SohCheck;
this->m_SohChecker =p->m_SohChecker;
this->m_SohCheckDate =p->m_SohCheckDate;
this->m_SohClose =p->m_SohClose;
this->m_SohUser =p->m_SohUser;
this->m_SohDesc =p->m_SohDesc;
this->m_SohSysDate =p->m_SohSysDate;
if(this->CurStatus==3)
{
this->b_sdSod =p->b_sdSod;
this->b_SohCode =p->b_SohCode;
this->b_SohType =p->b_SohType;
this->b_SohDate =p->b_SohDate;
this->b_SohClient =p->b_SohClient;
this->b_SohSaler =p->b_SohSaler;
this->b_SohContract =p->b_SohContract;
this->b_SohCurrency =p->b_SohCurrency;
this->b_SohEnrate =p->b_SohEnrate;
this->b_SohTaxCode =p->b_SohTaxCode;
this->b_SohSettleMode =p->b_SohSettleMode;
this->b_SohDeliver =p->b_SohDeliver;
this->b_SohSsite =p->b_SohSsite;
this->b_SohTransMode =p->b_SohTransMode;
this->b_SohPayTrans =p->b_SohPayTrans;
this->b_SohDj =p->b_SohDj;
this->b_SohCancel =p->b_SohCancel;
this->b_SohCrCode =p->b_SohCrCode;
this->b_SohCancelDate =p->b_SohCancelDate;
this->b_SohCheck =p->b_SohCheck;
this->b_SohChecker =p->b_SohChecker;
this->b_SohCheckDate =p->b_SohCheckDate;
this->b_SohClose =p->b_SohClose;
this->b_SohUser =p->b_SohUser;
this->b_SohDesc =p->b_SohDesc;
this->b_SohSysDate =p->b_SohSysDate;
}
else
this->BackupValue();
}
//---------------------------------------------------------------------------
void TsdSoh::AssignValue()
{
TsdSoh *p=(TsdSoh*)Records(CurRecNo);
Assign(p);
}
//---------------------------------------------------------------------------
AnsiString TsdSoh::GetItemValue(euSod FieldName)
{
return m_sdSod->GetFieldValue(FieldName);
}
//---------------------------------------------------------------------------
void TsdSoh::SetItemValue(euSod FieldName, AnsiString Value)
{
m_sdSod->SetFieldValue(FieldName,Value);
}
//---------------------------------------------------------------------------
int __fastcall TsdSoh::GetItemCount()
{
if(m_sdSod)
return m_sdSod->Count;
else
return 0;
}
//---------------------------------------------------------------------------
int __fastcall TsdSoh::GetCurItemNo()
{
return m_sdSod->CurRecNo;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TsdSoh::GetItemBookMark()
{
return m_sdSod->BookMark;
}
//--------------------------------------------------------------------------
void TsdSoh::AddToObject()
{
TsdSod *p=new TsdSod();
p->Assign(m_sdSod);
if(m_sdSod->FindKey(m_sdSod->GetOldFieldValue(fiSodLine)))
m_sdSod->ChangeRecord((void *)p,p->GetFieldValue(fiSodLine),m_sdSod->GetOldFieldValue(fiSodLine));
else
m_sdSod->AddRecord((void *)p,p->GetFieldValue(fiSodLine));
}
//--------------------------------------------------------------------------
bool TsdSoh::LocateItemByIndex(int Index)
{
return m_sdSod->LocateByIndex(Index);
}
//--------------------------------------------------------------------------
bool TsdSoh::LocateItemByKey(AnsiString Key)
{
return m_sdSod->LocateByKey(Key);
}
//--------------------------------------------------------------------------
void TsdSoh::NewDetail()
{
m_sdSod=new TsdSod(DataComm);
m_sdSod->sdParent=this;
}
//--------------------------------------------------------------------------
void TsdSoh::DeleteDetail()
{
delete m_sdSod;
m_sdSod=NULL;
}
//--------------------------------------------------------------------------
void TsdSoh::CancelItem()
{
m_sdSod->Cancel();
}
//--------------------------------------------------------------------------
void TsdSoh::EditItem()
{
m_sdSod->Edit();
if(CurStatus==1)
{
SetActionID(6);
}
}
//--------------------------------------------------------------------------
char __fastcall TsdSoh::GetCurItemStatus()
{
return m_sdSod->CurStatus;
}
//--------------------------------------------------------------------------
void TsdSoh::DeleteItem()
{
if(CurStatus==2||CurStatus==5)
m_sdSod->DeleteRecord(m_sdSod->Key);
else
m_sdSod->Delete();
}
//--------------------------------------------------------------------------
void TsdSoh::RemoveItem()
{
if(CurStatus==2||CurStatus==5)
m_sdSod->RemoveRecord(m_sdSod->Index);
else
m_sdSod->Delete();
}
//--------------------------------------------------------------------------
void TsdSoh::ClearItem()
{
int iCount;
if(CurStatus==2)
m_sdSod->ClearRecord();
else
{
iCount=m_sdSod->Count;
for(int i=0;i<iCount;i++)
{
m_sdSod->LocateByIndex(0);
m_sdSod->Delete();
}
}
}
//--------------------------------------------------------------------------
void TsdSoh::AddItem()
{
m_sdSod->AddNew();
if(CurStatus!=2)
SetActionID(5);
}
//--------------------------------------------------------------------------
void TsdSoh::Delete()
{
if(CurStatus!=1)
throw Exception("当前状态不能进行删除操作!");
if(m_SohCode.IsEmpty()==true)
throw Exception("当前没有记录可以删除!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdSoh_Delete";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_SohCode",ftString,pdInput,18,b_SohCode);
m_StoredProc->ExecProc();
m_StoredProc->Close();
DeleteDetail();
DeleteRecord(this->b_SohCode);
}
//--------------------------------------------------------------------------
void TsdSoh::Update()
{
if(CurStatus==0||CurStatus==1)
throw Exception("当前不是编辑状态,不能进行存盘操作!");
if(m_SohCode.IsEmpty()==true)
throw Exception("销售订单单号不能为空!");
if(ItemCount<=0)
throw Exception("销售订单没有定义明细字段");
m_StoredProc->Close();
switch(CurStatus)
{
case 2:
case 4:
m_StoredProc->ProcedureName="sdSoh_Insert";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@SohCode",ftString,pdInputOutput,18,m_SohCode);
m_StoredProc->Parameters->CreateParameter("@SohType",ftInteger,pdInput,1,m_SohType);
m_StoredProc->Parameters->CreateParameter("@SohDate",ftString,pdInput,10,m_SohDate);
m_StoredProc->Parameters->CreateParameter("@SohSaler",ftString,pdInput,18,m_SohSaler);
m_StoredProc->Parameters->CreateParameter("@SohClient",ftString,pdInput,18,m_SohClient);
m_StoredProc->Parameters->CreateParameter("@SohContract",ftString,pdInput,18,m_SohContract);
m_StoredProc->Parameters->CreateParameter("@SohCurrency",ftString,pdInput,18,m_SohCurrency);
m_StoredProc->Parameters->CreateParameter("@SohEnrate",ftFloat,pdInput,12,m_SohEnrate);
m_StoredProc->Parameters->CreateParameter("@SohTaxCode",ftString,pdInput,18,m_SohTaxCode);
m_StoredProc->Parameters->CreateParameter("@SohSettleMode",ftString,pdInput,18,m_SohSettleMode);
m_StoredProc->Parameters->CreateParameter("@SohPayTrans",ftInteger,pdInput,1,m_SohPayTrans);
m_StoredProc->Parameters->CreateParameter("@SohDj",ftFloat,pdInput,12,m_SohDj);
m_StoredProc->Parameters->CreateParameter("@SohDesc",ftString,pdInput,40,m_SohDesc);
m_StoredProc->Parameters->CreateParameter("@SohCrCode",ftString,pdInput,18,m_SohCrCode);
m_StoredProc->Parameters->CreateParameter("@SohUser",ftString,pdInput,18,m_SohUser);
m_StoredProc->Parameters->CreateParameter("@SohSysDate",ftString,pdOutput,30,m_SohSysDate);
m_StoredProc->Parameters->CreateParameter("@SohSsite",ftString,pdInput,18,m_SohSsite);
m_StoredProc->Parameters->CreateParameter("@SohDeliver",ftString,pdInput,18,m_SohDeliver);
m_StoredProc->Parameters->CreateParameter("@SohTransMode",ftString,pdInput,18,m_SohTransMode);
m_StoredProc->ExecProc();
m_SohCode=m_StoredProc->Parameters->ParamValues["@SohCode"];
m_SohSysDate=m_StoredProc->Parameters->ParamValues["@SohSysDate"];
for(int i=0;i<ItemCount;i++)
{
LocateItemByIndex(i);
m_sdSod->SetFieldValue(fiSodCode,m_SohCode);
AddToObject();
m_sdSod->Update();
}
break;
case 3:
m_StoredProc->ProcedureName="sdSoh_Update";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_SohCode",ftString,pdInput,18,b_SohCode);
m_StoredProc->Parameters->CreateParameter("@SohType",ftInteger,pdInput,1,m_SohType);
m_StoredProc->Parameters->CreateParameter("@SohDate",ftString,pdInput,10,m_SohDate);
m_StoredProc->Parameters->CreateParameter("@SohSaler",ftString,pdInput,18,m_SohSaler);
m_StoredProc->Parameters->CreateParameter("@SohClient",ftString,pdInput,18,m_SohClient);
m_StoredProc->Parameters->CreateParameter("@SohContract",ftString,pdInput,18,m_SohContract);
m_StoredProc->Parameters->CreateParameter("@SohCurrency",ftString,pdInput,18,m_SohCurrency);
m_StoredProc->Parameters->CreateParameter("@SohEnrate",ftFloat,pdInput,12,m_SohEnrate);
m_StoredProc->Parameters->CreateParameter("@SohTaxCode",ftString,pdInput,18,m_SohTaxCode);
m_StoredProc->Parameters->CreateParameter("@SohSettleMode",ftString,pdInput,18,m_SohSettleMode);
m_StoredProc->Parameters->CreateParameter("@SohPayTrans",ftInteger,pdInput,1,m_SohPayTrans);
m_StoredProc->Parameters->CreateParameter("@SohDj",ftFloat,pdInput,12,m_SohDj);
m_StoredProc->Parameters->CreateParameter("@SohDesc",ftString,pdInput,40,m_SohDesc);
m_StoredProc->Parameters->CreateParameter("@SohCrCode",ftString,pdInput,18,m_SohCrCode);
m_StoredProc->Parameters->CreateParameter("@SohUser",ftString,pdInput,18,m_SohUser);
m_StoredProc->Parameters->CreateParameter("@SohSysDate",ftString,pdOutput,30,m_SohSysDate);
m_StoredProc->Parameters->CreateParameter("@SohSsite",ftString,pdInput,18,m_SohSsite);
m_StoredProc->Parameters->CreateParameter("@SohDeliver",ftString,pdInput,18,m_SohDeliver);
m_StoredProc->Parameters->CreateParameter("@SohTransMode",ftString,pdInput,18,m_SohTransMode);
m_StoredProc->ExecProc();
m_SohSysDate=m_StoredProc->Parameters->ParamValues["@SohSysDate"];
break;
case 5:
case 6:
// case 7:
for(int i=0;i<ItemCount;i++)
{
LocateItemByIndex(i);
if(m_sdSod->CurStatus==2||m_sdSod->CurStatus==3)
m_sdSod->Update();
}
break;
}
m_StoredProc->Close();
TsdSoh *p=new TsdSoh();
if(CurStatus==2)
{
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->SohCode);
}
else
{
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->SohCode,this->b_SohCode);
}
}
//--------------------------------------------------------------------------
bool TsdSoh::Find(AnsiString WhereStr)
{
AnsiString m_SqlStr;
if(WhereStr.IsEmpty()==true)
throw Exception("查找表达式不能为空");
m_SqlStr="select * from sdSoh 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_sdSod->FilterString=" SodCode='"+m_SohCode+"'";
m_sdSod->OrderString=" SodLine ";
m_sdSod->Query();
m_Query->Close();
return true;
}
}
void TsdSoh::Check(int IsCheck)
{
if(this->Count>0)
{
try
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdSoh_Check";
m_StoredProc->Parameters->Clear();
if(IsCheck==1)
{
SohCheck=1;
m_SohCheckDate=g_sdCurDate;
m_SohChecker=g_sdUserCode;
m_StoredProc->Parameters->CreateParameter("@W_SohCode",ftString,pdInput,18,b_SohCode);
m_StoredProc->Parameters->CreateParameter("@SohCheck",ftInteger,pdInput,1,m_SohCheck);
m_StoredProc->Parameters->CreateParameter("@SohChecker",ftString,pdInput,18,m_SohChecker);
m_StoredProc->Parameters->CreateParameter("@SohCheckDate",ftString,pdInput,10,m_SohCheckDate);
m_StoredProc->ExecProc();
}
else
{
SohCheck=0;
m_SohChecker="";
m_SohCheckDate="";
m_StoredProc->Parameters->CreateParameter("@W_SohCode",ftString,pdInput,18,m_SohCode);
m_StoredProc->Parameters->CreateParameter("@SohCheck",ftInteger,pdInput,1,0);
m_StoredProc->Parameters->CreateParameter("@SohChecker",ftString,pdInput,18,AnsiString(""));
m_StoredProc->Parameters->CreateParameter("@SohCheckDate",ftString,pdInput,10,AnsiString(""));
m_StoredProc->ExecProc();
}
TsdSoh *p=(TsdSoh*)Records(CurRecNo);
p->Assign(this);
BackupValue();
}
catch(Exception &e)
{
m_SohCheck=b_SohCheck;
m_SohChecker=b_SohChecker;
m_SohCheckDate=b_SohCheckDate;
throw Exception(e.Message);
}
}
else
throw Exception("没有单据可以审核");
}
void TsdSoh::Revoke(int IsRevoke)
{
if(this->Count>0)
{
try{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdSoh_Revoke";
m_StoredProc->Parameters->Clear();
if(IsRevoke==1)
{
SohCancel=1;
m_SohCancelDate=g_sdCurDate;
m_StoredProc->Parameters->CreateParameter("@W_SohCode",ftString,pdInput,18,b_SohCode);
m_StoredProc->Parameters->CreateParameter("@SohCancel",ftInteger,pdInput,1,m_SohCancel);
m_StoredProc->Parameters->CreateParameter("@SohCancelDate",ftString,pdInput,10,m_SohCancelDate);
m_StoredProc->ExecProc();
}
else
{
SohCancel=0;
m_SohCancelDate="";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -