📄 pish.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Pish.h"
#include "Pisd.h"
#include "func.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "GenBaseForm"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmPish *frmPish;
//---------------------------------------------------------------------------
__fastcall TfrmPish::TfrmPish(TComponent* Owner)
: TGenBaseForm(Owner,euSdPish,"")
{
AutoCtl=sePishCode;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::InitEditControl()
{
ClientGroup->AddComponent(1,false,false,true,FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(1,false,true,false,sePishCode,sePishCode->Name);
ClientGroup->AddComponent(1,false,true,true,chkPishRed,chkPishRed->Name);
ClientGroup->AddComponent(1,false,true,true,scPishType,scPishType->Name);
ClientGroup->AddComponent(1,true,true,true,scPishState,scPishState->Name);
ClientGroup->AddComponent(1,true,true,true,scPishFmonth,scPishFmonth->Name);
ClientGroup->AddComponent(1,false,true,true,scPishDept,scPishDept->Name);
ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,false,true,true,sePisdLine,sePisdLine->Name);
ClientGroup->AddComponent(2,false,true,true,sePisdLoc,sePisdLoc->Name);
ClientGroup->AddComponent(2,false,true,true,sePisdGoods,sePisdGoods->Name);
ClientGroup->AddComponent(2,true,true,true,scPisdUnit,scPisdUnit->Name);
ClientGroup->AddComponent(2,true,true,true,scPisdState,scPisdState->Name);
ClientGroup->AddComponent(2,true,true,true,scPisdFrom,scPisdFrom->Name);
ClientGroup->AddComponent(2,true,true,true,sePisdFromCode,sePisdFromCode->Name);
ClientGroup->AddComponent(2,true,true,true,sePisdFromLine,sePisdFromLine->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
//Pish
FillComboBox(scPishFmonth,"SELECT Fcmonth FROM sdFc order by fcmonth","Fcmonth");
FillComboBox(scPishDept,"SELECT DeptName,DeptCode FROM sdDept where DeptEnd=1 order by DeptName","DeptName","DeptCode");
FillComboBox(scPishPosType,"select postypename memo,postypecode from sdPosType where PosTypeFlg=6 order by PosTypeCode","memo","PosTypeCode");
FillComboBox(scPishKeeper,"select UserCode,UserName from sdKeeper,sduser where UserCode=KeeperCode order by UserCode","UserName","UserCode");
scPishType->ClearAll();
scPishType->AddItems("1-采购收货","1");
scPishType->AddItems("2-生产入库","2");
scPishType->AddItems("3-销售退货","3");
scPishType->AddItems("4-退料","4");
scPishType->AddItems("5-其它入库","5");
scPishState->ClearAll();
scPishState->AddItems("1-待审核","1");
scPishState->AddItems("2-已生效","2");
scPishState->AddItems("3-已结清","3");
//Pisd
FillComboBox(scPisdUnit,"select unitname memo,unitcode from sdunit order by unitcode","memo","UnitCode");
FillEdit(sePisdLoc,"select locname memo,loccode from sdloc where LocType=1 order by loccode","memo","LocCode");
FillComboBox(scPisdBatch,"SELECT BatchCode FROM sdBatch order by batchcode","BatchCode");
scPisdState->ClearAll();
scPisdState->AddItems("0-正常");
scPisdFrom->ClearAll();
scPisdFrom->AddItems("0-手工录入","0");
scPisdFrom->AddItems("1-系统生成","1");
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (! BringToNext)
{
sePishCode->Text ="";
scPishType->ItemIndex =0;
dePishDate->Text =g_sdCurDate;
scPishFmonth->Text =g_sdIMonth;
scPishPosType->ItemIndex =-1;
scPishPosType->Text="";
scPishDept->ItemIndex=-1;
scPishState->ItemIndex=0;
labPishUser->Caption = g_sdUserCode;
scPishKeeper->LocateKey(g_sdUserCode);
chkPishRed->Checked =false;
chkPishCheck->Checked =false;
labPishChecker->Caption ="";
chkPishPost->Checked =false;
labPishPoster->Caption ="";
chkPishCancel->Checked =false;
labPishSysDate->Caption="";
memPishDesc->Text="";
//新增单据,工具栏使能
SetCheckToolbarStatus(false);
}
sgPish->RowCount=1;
}
else if (Section==2)
{
if (!BringToNext)
{
sePisdLine->Text =AnsiString(comServer->ItemCount+1);
sePisdGoods->Text="";
pv_GoodsCode="";
labPisdGoodsName->Caption ="";
scPisdUnit->ItemIndex =-1;
scPisdUnit->Text="";
sePisdPrice->Text="0.0";
sePisdQty->Text="0";
sePisdAmt->Text="0";
sePisdSod->Text="";
sePisdSodLine->Text="";
sePisdLoc->ItemIndex =-1;
sePisdLoc->Text="";
scPisdBatch->ItemIndex=-1;
scPisdState->ItemIndex=0;
memPisdDesc->Text="";
scPisdFrom->ItemIndex=0;
sePisdFromCode->Text="";
sePisdFromLine->Text="0";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::GetDataFromComObject(int Section)
{
if (Section==1)
{
sePishCode->Text=GetHeadValue(fiPishCode);
scPishType->LocateKey(GetHeadValue(fiPishType));
scPishType->Text=scPishType->ItemData[0];
dePishDate->Text=GetHeadValue(fiPishDate);
scPishFmonth->Text=GetHeadValue(fiPishFmonth);
scPishPosType->LocateKey(GetHeadValue(fiPishPosType));
scPishPosType->Text=scPishPosType->ItemData[0];
scPishDept->LocateKey(GetHeadValue(fiPishDept));
scPishState->LocateKey(GetHeadValue(fiPishState));
scPishState->Text=scPishState->ItemData[0];
chkPishRed->Checked=GetHeadValue(fiPishRed)=="-1";//-1红字,1蓝字
labPishUser->Caption=GetHeadValue(fiPishUser);
scPishKeeper->LocateKey(GetHeadValue(fiPishKeeper));
chkPishCheck->Checked=GetHeadValue(fiPishCheck)=="1";
labPishChecker->Caption=GetHeadValue(fiPishChecker);
chkPishPost->Checked=GetHeadValue(fiPishPost)=="1";
labPishPoster->Caption=GetHeadValue(fiPishPoster);
chkPishCancel->Checked=GetHeadValue(fiPishCancel)=="1";
labPishSysDate->Caption=GetHeadValue(fiPishSysDate);
memPishDesc->Text=GetHeadValue(fiPishDesc);
//根据审核、取消状态,设置工具栏
if((GetHeadValue(fiPishCheck)=="1")||(GetHeadValue(fiPishCancel)=="1"))
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
else
{
sePisdLine->Text=GetDetailValue(fiPisdLine);
sePisdLoc->LocateKey(GetDetailValue(fiPisdLoc));
sePisdLoc->Text=sePisdLoc->ItemData[0];
g_sdRsGoods->LocateByKey(WideString(GetDetailValue(fiPisdGoods)));
sePisdGoods->Text = GetGoodsValue("GoodsCode");
labPisdGoodsName->Caption=GetGoodsValue("GoodsName");
scPisdUnit->LocateKey(GetDetailValue(fiPisdUnit));
scPisdUnit->Text=scPisdUnit->ItemData[0];
sePisdPrice->Text=GetDetailValue(fiPisdPrice);
sePisdQty->Text=GetDetailValue(fiPisdQty);
sePisdAmt->Text=GetDetailValue(fiPisdAmt);
scPisdFrom->LocateKey(GetDetailValue(fiPisdFrom));
sePisdFromCode->Text=GetDetailValue(fiPisdFromCode);
sePisdFromLine->Text=GetDetailValue(fiPisdFromLine);
scPisdBatch->LocateKey(GetDetailValue(fiPisdBatch));
scPisdState->LocateKey(GetDetailValue(fiPisdState));
scPisdState->Text=scPisdState->ItemData[0];
sePisdSod->Text=GetDetailValue(fiPisdSod);
sePisdSodLine->Text=GetDetailValue(fiPisdSodLine);
memPisdDesc->Text=GetDetailValue(fiPisdDesc);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::SendDataToComObject(int Section)
{
if (Section==1)
{
SetHeadValue(fiPishCode,sePishCode->Text);
if(scPishType->ItemData[1] == "")
throw Exception("请选择入库类型");
SetHeadValue(fiPishType,scPishType->ItemData[1]);
SetHeadValue(fiPishDate,dePishDate->Text);
SetHeadValue(fiPishFmonth,scPishFmonth->Text);
SetHeadValue(fiPishPosType,scPishPosType->ItemData[1]);
SetHeadValue(fiPishDept,scPishDept->ItemData[1]);
SetHeadValue(fiPishUser,labPishUser->Caption);
SetHeadValue(fiPishKeeper,scPishKeeper->ItemData[1]);
SetHeadValue(fiPishRed,chkPishRed->Checked ? "-1":"1");
SetHeadValue(fiPishDesc,memPishDesc->Text);
}
else
{
SetDetailValue(fiPisdCode,sePishCode->Text);
if(sePisdLine->Text == "")
throw Exception("请输入入库单行号");
SetDetailValue(fiPisdLine,sePisdLine->Text);
SetDetailValue(fiPisdGoods,sePisdGoods->Text);
// SetDetailValue(fiPisdUnit,scPisdUnit->ItemData[1]);
SetDetailValue(fiPisdLoc,sePisdLoc->ItemData[1]);
if(sePisdQty->Text == "")
throw Exception("请输入入库数量");
SetDetailValue(fiPisdQty,sePisdQty->Text);
if(sePisdPrice->Text == "")
throw Exception("请输入入库单价");
SetDetailValue(fiPisdPrice,sePisdPrice->Text);
if(sePisdAmt->Text == "")
throw Exception("请输入入库金额");
SetDetailValue(fiPisdAmt,sePisdAmt->Text);
SetDetailValue(fiPisdFrom,scPisdFrom->ItemIndex);
SetDetailValue(fiPisdFromCode,sePisdFromCode->Text);
if(sePisdFromLine->Text.IsEmpty())
sePisdFromLine->Text="0";
SetDetailValue(fiPisdFromLine,sePisdFromLine->Text);
SetDetailValue(fiPisdBatch,scPisdBatch->Text);
SetDetailValue(fiPisdSod,sePisdSod->Text);
if(sePisdSodLine->Text=="")
SetDetailValue(fiPisdSodLine,"0");
else
SetDetailValue(fiPisdSodLine,sePisdSodLine->Text);
SetDetailValue(fiPisdDesc,memPisdDesc->Text);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::WaitUserInput(int Section)
{
if (Section ==1)
{
if(sePishCode->Enabled)
sePishCode->SetFocus();
}
else
{
sgPish->Visible=false;
FloatPanel2->Visible=true;
pv_GoodsCode=Trim(sePisdGoods->Text);
if(sePisdGoods->Enabled==true)
{
sePisdGoods->SetFocus();
sePisdGoodsExit(NULL);
if(scPisdFrom->ItemData[1]=="1") //生成行只允许修改备注
{
sePisdLine->Enabled=false;
sePisdGoods->Enabled=false;
sePisdSod->Enabled=false;
sePisdSodLine->Enabled=false;
scPisdBatch->Enabled=false;
}
}
else
{
sePisdQty->SetFocus();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::RefreshGridData(int mAction)
{
int i;
AnsiString ItemStr=GetItemStringToGrid();
switch(mAction)
{
case 0:
sgPish->AddItem(ItemStr);
break;
case 1:
i=sgPish->Row;
sgPish->ChangeItem(ItemStr,i);
break;
case 2:
sgPish->RemoveItem(sgPish->Row);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPish::GetItemStringToGrid()
{
AnsiString s_ItemStr;
s_ItemStr="\t"+GetDetailValue(fiPisdLine)+
"\t"+GetDetailValue(fiPisdGoods)+
"\t"+GetDetailValue(fiPisdUnit)+
"\t"+GetDetailValue(fiPisdQty)+
"\t"+GetDetailValue(fiPisdPrice)+
"\t"+GetDetailValue(fiPisdAmt)+
"\t"+GetDetailValue(fiPisdLoc);
return(s_ItemStr);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::DisplayBill()
{
if(comServer->RecordCount == 0)
return ;
GetDataFromComObject(1);
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::GetBill(AnsiString BillID)
{
int iRow;
iRow=comServer->Find("PishCode='"+BillID+"'");
if (iRow>0) //FIND THIS BILL
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPish::FillGridWithData()
{
int i;
AnsiString ItemStr;
sgPish->RowCount=1;
for (i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);
RefreshGridData(0);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPish::GetHeadValue(int Index)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -