📄 tsh.cpp
字号:
void __fastcall TfrmTsh::FormCreate(TObject *Sender)
{
// FormIniFile="D:\Test.Ini";
// SetGridWidth(Name,sgTsd,FormIniFile);
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::FormClose(TObject *Sender,
TCloseAction &Action)
{
TGenBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::FormShow(TObject *Sender)
{
ClearControl(1,false);
ClearControl(2,false);
TGenBaseForm::MoveToFirst();
ChangeToBrowseState();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::sgTsdDblClick(TObject *Sender)
{
int iRow;
iRow=sgTsd->Row;
if (iRow == 0)
{
return;
}
sgTsd->Visible=false;
FloatPanel2->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::ChangeToBrowseState(bool Browse)
{
FloatPanel2->Visible=false;
sgTsd->Visible=true;
if(Browse==false)
sgTsd->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::btnOKClick(TObject *Sender)
{
try
{
if (CurrentState==caAddDetail||CurrentState==caAddBill)
{
SendDataToComObject(2);
comServer->AddToObject();
if(DetailState==caAddDetail)
comServer->AddItem();
ClearControl(2,false);
scTsdLoc->SetFocus();
}
else
ChangeToBrowseState();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::btnCancelClick(TObject *Sender)
{
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::BackDisp()
{
try
{
double dTQty,dTPrice,dTAmt,dAQty,dDQty;
dTQty=StrToFloat(seTsdTQty->Text);
dTAmt=StrToFloat(seTsdTAmt->Text);
dAQty=StrToFloat(seTsdAQty->Text);
if(dTQty < 0 || dTAmt < 0)
throw Exception("实盘数量、金额不能小于0");
if(dTQty == 0)
dTPrice=0;
else
dTPrice=DataCarry(dTAmt/dTQty,2,0);
seTsdTPrice->Text =FloatToStr(dTPrice);
if(dTQty > dAQty) //盘盈
{
chkTsdFlg1->Checked=true;
chkTsdFlg2->Checked=false;
dDQty=dTQty-dAQty;
}
else if(dTQty == dAQty) //盘平
{
chkTsdFlg1->Checked=false;
chkTsdFlg2->Checked=false;
dDQty=0;
}
else //盘亏
{
chkTsdFlg1->Checked=false;
chkTsdFlg2->Checked=true;
dDQty=dAQty-dTQty;
}
seTsdDQty->Text =FloatToStr(dDQty);
seTsdIOQty->Text ="0";
}
catch(Exception &e)
{
throw Exception("数值计算错误:"+e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::seTsdTQtyExit(TObject *Sender)
{
BackDisp();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::seTsdGoodsButtonClick(TObject *Sender)
{
AnsiString SqlStr;
double dQty,dPrice,dAmt;
if(scTsdLoc->ItemData[1] == "")
return;
SqlStr="008[物料编码][物料名称][计量单位][多计量单位][批次管理][订单管理][库存数量][单价]";
SqlStr+=" select GoodsCode,GoodsName,GoodsUnitCode,GoodsMUnit,GoodsBatch,GoodsTrackSo,MaccAoyQty,CdNopPrice ";
SqlStr+=" from sdgoods,sdLg,sdMacc,sdCd ";
SqlStr+=" where MaccLoc=LgLocCode and MaccGoods=GoodsCode and MaccInitFlg=1 and maccfmonth=cdfmonth and maccgoods=cdgoods and ";
SqlStr+=" LgGoodsCode=goodscode and lgstate=1 ";
SqlStr+=" and LgLocCode = '"+scTsdLoc->ItemData[1]+"' order by GoodsCode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"货位物料查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seTsdGoods->Text=p->ColData[1];
seTsdAQty->Text=p->ColData[7];
dQty=StrToFloat(p->ColData[7]);
seTsdAPrice->Text=p->ColData[8];
dPrice=StrToFloat(p->ColData[8]);
dAmt=DataCarry(dQty*dPrice,2,0);
seTsdAAmt->Text=FloatToStr(dAmt);
SetDetail(seTsdGoods->Text);
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::seTsdGoodsExit(TObject *Sender)
{
SetDetail(Trim(seTsdGoods->Text));
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::RefreshUpdateData(int MsgSrc,int MsgType)
{
/*
switch(MsgSrc)
{
case euSdFc:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTshFmonth,"Select FcMonth from sdFc order by fcmonth","FcMonth");
}
break;
case euSdDept:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTshDept,"select DeptName memo,DeptCode from sdDept where DeptEnd=1 order by deptcode","memo","DeptCode");
}
break;
case euSdPosType:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTshPosType,"select postypename memo,postypecode from sdPosType where PosTypeFlg=6 order by PosTypeCode","memo","PosTypeCode");
}
break;
case euSdKeeper:
if(ShowUpdateMessage(MsgSrc,MsgType))
FillComboBox(Handle,scTshKeeper,"select UserCode,UserName from sdKeeper,sduser where UserCode=KeeperCode order by UserCode","UserName","UserCode");
break;
case euSdUnit:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTsdUnit,"select unitname memo,unitcode from sdunit order by UnitCode","memo","UnitCode");
}
break;
case euSdBatch:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTsdBatch,"Select BatchCode from sdBatch order by BatchCode","BatchCode");
}
break;
case euSdLoc:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(Handle,scTsdLoc,"select locname memo,loccode from sdloc order by LocCode","memo","LocCode");
}
break;
default:
break;
}
*/
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::seTsdTAmtExit(TObject *Sender)
{
BackDisp();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::SetDetail(AnsiString gc)
{
try
{
if(!InitRsGoods(WideString(gc)))
{
seTsdGoods->Text=pv_GoodsCode;
return;
}
seTsdGoods->Text=GetGoodsValue(gtInitRs,"GoodsCode");
pv_GoodsCode=GetGoodsValue(gtInitRs,"GoodsCode");
labTsdGoodsName->Caption=GetGoodsValue(gtInitRs,"GoodsName");
labTsdGoodsSpec->Caption=GetGoodsValue(gtInitRs,"GoodsSpec");
scTsdUnit->LocateKey(GetGoodsValue(gtInitRs,"GoodsUnitCode"));
if(GetGoodsValue(gtInitRs,"GoodsTrackSo")=="0")
{//该物料不跟踪订单,则锁定销售单号和行号
seTsdSod->Enabled=false;
seTsdSodLine->Enabled=false;
seTsdSod->Text="";
seTsdSodLine->ItemIndex=-1;
}
else
{
seTsdSod->Enabled=true;
seTsdSodLine->Enabled=true;
}
if(GetGoodsValue(gtInitRs,"GoodsBatch")=="0")
{//该物料不采用批次管理,则锁定批号
scTsdBatch->Enabled=false;
scTsdBatch->ItemIndex=-1;
}
else
{
scTsdBatch->Enabled=true;
}
BackDisp();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
void __fastcall TfrmTsh::seTsdSodButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="005[订单号][订单行号][客户名称][物料编码][物料名称]select sohcode,sodline,ClientName,sodgoods,goodsname from sdsoh,sdclient,sdsod,sdgoods";
SqlStr+=" where sohcheck=1 and sohclient=clientcode and sohcode=sodcode and sodgoods=goodscode and sodgoods='"+seTsdGoods->Text+"' order by sohcode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"订单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seTsdSod->Text=p->ColData[1];
seTsdSodLine->Text=p->ColData[2];
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::scTsdLocChange(TObject *Sender)
{
seTsdGoods->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::seTshCodeExit(TObject *Sender)
{
if(CurrentState==caNormal && seTshCode->Text != GetHeadValue("TshCode"))
{
comServer->LocateByKey(WideString(seTshCode->Text));
DisplayBill();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::GenrateBill()
{
int TempCount;
TempCount = comServer->ItemCount;
StartWaitForm("正在启动生成界面");
TfrmTsd *p=new TfrmTsd(this);
try
{
p->GetComObject(comServer);
EndWaitForm();
p->ShowModal();
if (TempCount < comServer->ItemCount)
TGenBaseForm::SaveRecord();
else
CancelChange();
}
__finally
{
;//delete p;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::tbGenDetailClick(TObject *Sender)
{
AnsiString m_Sql;
TComResultSet *pRst;
if(CurrentState == caNormal)
{
try
{
m_Sql=" select parametervalue from sdparameter where parametercode='10508' ";
pRst=new TComResultSet(Handle,g_ClientHandle);
try
{
pRst->Open(m_Sql,"");
if(pRst->RecordCount<1)
{
CancelRecord();
throw Exception("系统库存状态参数被破坏");
}
pRst->MoveFirst();
m_InvState = pRst->FieldByName("parametervalue");
if(m_InvState!="2")
{
if(Application->MessageBox("系统尚未进入盘点状态,是否自动进入盘点状态?","确认盘点对话框",+MB_ICONQUESTION+MB_OKCANCEL)==IDOK)
{
m_Sql="update sdparameter set parametervalue='2' where ParameterCode='10508'";
pRst->Execute(m_Sql);
}
else
{
delete pRst;
return;
}
}
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
__finally
{
delete pRst;
}
}
TGenBaseForm::tbGenDetailClick(Sender);
}
//---------------------------------------------------------------------------
bool __fastcall TfrmTsh::BeforeCheck()
{
SetHeadValue("TshCheck","1");
SetHeadValue("TshChecker",g_sdUserCode);
SetHeadValue("TshCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmTsh::BeforeUnCheck()
{
SetHeadValue("TshCheck","0");
SetHeadValue("TshChecker","");
SetHeadValue("TshCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTsh::sgTsdClick(TObject *Sender)
{
if (sgTsd->Row == 0)
{
return;
}
comServer->LocateItemByKey(GetHeadValue("TshCode")+"\t"+sgTsd->TextMatrix[sgTsd->Row][1]+"\t");
GetDataFromComObject(2);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -