📄 pmhdl.cpp
字号:
m_PohCheck=b_PohCheck;
m_PohChecker=b_PohChecker;
m_PohCheckDate=b_PohCheckDate;
throw Exception(e.Message);
}
}
else
throw Exception("没有单据可以审核");
}
void TsdPoh::Close(int IsClose)
{
AnsiString temp="";
if(this->Count>0)
{
try
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select BuyerCode from sdBuyer where BuyerClose=1 and BuyerCode='"+g_sdUserCode+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("当前用户非采购员或无结清/反结清权限");
}
if(IsClose==0)
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Close";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,0);
m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,0);
m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,temp);
m_StoredProc->ExecProc();
m_PohClose=0;
for(int i=0;i<ItemCount;i++)
{
this->LocateItemByIndex(i);
this->SetItemValue(fiPodClose,"0");
this->SetItemValue(fiPodCloseDate,"");
AddToObject();
}
}
else if(IsClose==1)
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Close";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,0);
m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,1);
m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,g_sdCurDate);
m_StoredProc->ExecProc();
m_PohClose=1;
for(int i=0;i<ItemCount;i++)
{
this->LocateItemByIndex(i);
this->SetItemValue(fiPodClose,"1");
this->SetItemValue(fiPodCloseDate,g_sdCurDate);
AddToObject();
}
}
else if(IsClose==2)
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Close";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,StrToInt(this->GetItemValue(fiPodLine)));
m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,2);
m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,temp);
m_StoredProc->ExecProc();
this->SetItemValue(fiPodClose,"0");
this->SetItemValue(fiPodCloseDate,"");
AddToObject();
}
else if(IsClose==3)
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Close";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@W_PodLine",ftInteger,pdInput,10,StrToInt(this->GetItemValue(fiPodLine)));
m_StoredProc->Parameters->CreateParameter("@PohClose",ftInteger,pdInput,4,3);
m_StoredProc->Parameters->CreateParameter("@PohCloseDate",ftString,pdInput,10,g_sdCurDate);
m_StoredProc->ExecProc();
this->SetItemValue(fiPodClose,"1");
this->SetItemValue(fiPodCloseDate,g_sdCurDate);
AddToObject();
}
TsdPoh *p=(TsdPoh*)Records(CurRecNo);
p->Assign(this);
BackupValue();
}
catch(Exception &e)
{
m_PohClose=b_PohClose;
throw Exception(e.Message);
}
}
}
void TsdPoh::Revoke(int IsRevoke)
{
if(this->Count>0)
{
try
{
m_StoredProc->ProcedureName="sdPoh_Revoke";
m_StoredProc->Parameters->Clear();
if(IsRevoke==1)
{
PohCancel=1;
PohCanceler=g_sdUserCode;
PohCancelDate=g_sdCurDate;
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,20,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@PohCancel",ftSmallint,pdInput,2,1);
m_StoredProc->Parameters->CreateParameter("@PohCanceler",ftString,pdInput,20,g_sdUserCode);
m_StoredProc->Parameters->CreateParameter("@PohCancelDate",ftString,pdInput,10,g_sdCurDate);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
else
{
PohCancel=0;
PohCanceler="";
PohCancelDate="";
AnsiString temp="";
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,20,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@PohCancel",ftSmallint,pdInput,2,0);
m_StoredProc->Parameters->CreateParameter("@PohCanceler",ftString,pdInput,20,temp);
m_StoredProc->Parameters->CreateParameter("@PohCancelDate",ftString,pdInput,10,temp);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
TsdPoh *p=(TsdPoh*)Records(CurRecNo);
p->Assign(this);
BackupValue();
}
catch(Exception &e)
{
m_PohCancel=b_PohCancel;
m_PohCanceler=b_PohCanceler;
m_PohCancelDate=b_PohCancelDate;
throw Exception(e.Message);
}
}
}
void TsdPoh::Stop(int IsStop)
{
if(this->Count>0)
{
if(IsStop==1)
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Stop";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@PohStop",ftInteger,pdInput,4,1);
m_StoredProc->ExecProc();
m_PohStop=1;
}
else
{
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdPoh_Stop";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_PohCode",ftString,pdInput,18,b_PohCode);
m_StoredProc->Parameters->CreateParameter("@PohStop",ftInteger,pdInput,4,0);
m_StoredProc->ExecProc();
m_PohStop=0;
}
}
}
AnsiString TsdPoh::GetItemValue(euPod FieldName)
{
return m_sdPod->GetFieldValue(FieldName);
}
//---------------------------------------------------------------------------
void TsdPoh::SetItemValue(euPod FieldName, AnsiString Value)
{
m_sdPod->SetFieldValue(FieldName,Value);
}
//---------------------------------------------------------------------------
int __fastcall TsdPoh::GetItemCount()
{
if(m_sdPod)
return m_sdPod->Count;
else
return 0;
}
//---------------------------------------------------------------------------
int __fastcall TsdPoh::GetCurItemNo()
{
return m_sdPod->CurRecNo;
}
char __fastcall TsdPoh::GetCurItemStatus()
{
return m_sdPod->CurStatus;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TsdPoh::GetItemBookMark()
{
return m_sdPod->BookMark;
}
//---------------------------------------------------------------------------
TsdPoh::~TsdPoh()
{
try{
for(int i=0;i<this->Count;i++)
{
this->LocateByIndex(i);
this->AssignValue();
delete m_sdPod;
}
}
catch(...)
{
throw Exception("析构函数出错");
}
}
//---------------------------------------------------------------------------
//**************************************
// (TsdPod)采购单单行维护
//**************************************
void __fastcall TsdPod::SetPodLine(int value)
{
if(value<=0)
throw Exception("行号必须大于零");
if(value!=m_PodLine)
if(FindKey(AnsiString(value)))
throw Exception("行号已存在");
m_PodLine = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodCode(AnsiString value)
{
m_PodCode = value;
//m_PodCode=sdParent->GetFieldValue(fiPohCode);
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodGoods(AnsiString value)
{
if(value.IsEmpty()== true)
throw Exception("采购单行的货物编码不能为空!");
if(value.Length()>18)
throw Exception("物料编码长度不能大于18");
if(value != m_PodGoods)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add(" select pgdgoodscode from sdpgd ");
m_Query->SQL->Add(" where pgdgoodscode='"+value+"'");
m_Query->SQL->Add(" and pgdsupplycode='"+sdParent->GetFieldValue(fiPohSupply)+"'");
m_Query->Open();
if(m_Query->RecordCount<1)
{
m_Query->Close();
throw Exception("物料:'"+value+"'不存在或未在供应商物品资料中定义");
}
m_Query->Close();
}
m_PodGoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodUnit(AnsiString value)
{
AnsiString FUnit;
int FMUnit;
if(m_PodGoods.IsEmpty())
throw Exception("采购物料不能为空");
if(value.IsEmpty())
throw Exception("采购单位不能为空");
if(value.Length()>18)
throw Exception("采购单位长度不能大于18");
if(value!=m_PodUnit)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("Select unitcode from sdunit where unitcode='"+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 goodsmunit,Goodsunitcode from sdgoods where goodscode='"+m_PodGoods+"'");
m_Query->Open();
if(m_Query->RecordCount<1)
{
m_Query->Close();
throw Exception("当前物料:"+m_PodGoods+"在物料主文件中没找到");
}
FMUnit=m_Query->FieldValues["GoodsMunit"];
if(FMUnit!=1)
{
FUnit=m_Query->FieldValues["GoodsUnitCode"];
if(FUnit.UpperCase()!=value.UpperCase())
{
m_Query->Close();
m_PodUnit=FUnit;
m_PodConvRate=1;
throw Exception("当前物料不是多计量单位");
}
}
m_Query->Close();
}
m_PodUnit = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodConvRate(double value)
{
AnsiString FUnit;
int FMUnit;
if(m_PodGoods.IsEmpty())
throw Exception("采购物料不能为空");
if(m_PodUnit.IsEmpty())
throw Exception("物料计量单位不能为空");
if(value<=0)
throw Exception("换算系数不能小于等于零");
if(m_PodConvRate!=value)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select goodsmunit,Goodsunitcode from sdgoods where goodscode='"+m_PodGoods+"'");
m_Query->Open();
if(m_Query->RecordCount<1)
{
m_Query->Close();
throw Exception("当前物料:"+m_PodGoods+"在物料主文件中没找到");
}
FMUnit=m_Query->FieldValues["GoodsMunit"];
if(FMUnit!=1)
{
FUnit=m_Query->FieldValues["GoodsUnitCode"];
if(FUnit.UpperCase()!=m_PodUnit.UpperCase())
{
if(value!=1)
{
m_Query->Close();
m_PodUnit=FUnit;
m_PodConvRate=1;
throw Exception("当前物料不是多计量单位,不能设置换算系数");
}
}
}
m_Query->Close();
}
m_PodConvRate = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodQty(double value)
{
if(m_PodGoods.IsEmpty())
throw Exception("采购物料不能为空");
if(value<=0)
throw Exception("采购数量不能小于等于零");
m_PodQty = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodPrice(double value)
{
if(m_PodGoods.IsEmpty())
throw Exception("采购物料不能为空");
if(m_PodQty<=0)
throw Exception("采购单行的数量不能小于或等于零.");
if(value<0)
throw Exception("采购单行的单价不能小于零.");
m_PodPrice = value;
m_PodAmt=DataCarry(m_PodQty*m_PodPrice,2,0);
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodType(int value)
{
if(value!=1 && value!=2)
throw Exception("采购单行类型只能取值1-手工录入2-系统生成");
m_PodType = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodFrom(int value)
{
if(value!=1 && value!=2 && value!=3)
throw Exception("需求来源只能取值1-常规需求 2-MRP需求 3-库存需求");
m_PodFrom = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPod::SetPodFromCode(AnsiString value)
{
if(m_PodType==2)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -