aprsh.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 400 行
CPP
400 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Aprsh.h"
#include "Aprsd.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "BillBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "GenBaseForm"
#pragma resource "*.dfm"
TfrmAprsh *frmAprsh;
//---------------------------------------------------------------------------
__fastcall TfrmAprsh::TfrmAprsh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seAprshCode,"Acm-57");
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (!BringToNext)
{
seAprshCode->Text =""; //应付红冲单号
deAprshDate->Text =g_sdCurDate; //日期
scAprshDocType->ItemIndex=0; //单据类型
seAprshDocCode->Text =""; //单据号
lbAprshUser->Caption =g_sdUserCode; //操作员
chkAprshCheck->Checked =false; //审核标志
lbAprshChecker->Caption =""; //审核人
lbAprshCheckDate->Caption=""; //审核日期
memAprshDesc->Text =""; //备注
lbAprshSysDate->Caption =""; //系统日期
}
sgAprsh->RowCount=1;
}
else if (Section==2)
{
if (!BringToNext)
{
seAprsdLine->Text =AnsiString(comServer->ItemCount+1); //行号
seAprsdCavCode->Text=""; //核销单号
seAprsdCavLine->Text=""; //核销行号
seAprsdConv->Text =""; //换算系数
seAprsdRAmt->Text =""; //红冲金额
seAprsdCAmt->Text =""; //核销金额
memAprsdDesc->Text =""; //备注
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::InitEditControl()
{
ClientGroup->AddComponent(1,false,false,true,fpAprshHead,fpAprshHead->Name);
ClientGroup->AddComponent(2,true,true,true,fpAprshDetail,fpAprshDetail->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
ClientGroup->AddComponent(1,false,true,false,seAprshCode,seAprshCode->Name);
ClientGroup->AddComponent(1,false,true,true,scAprshDocType,scAprshDocType->Name);
ClientGroup->AddComponent(1,false,true,true,seAprshDocCode,seAprshDocCode->Name);
scAprshDocType->AddItems("退款单","1");
scAprshDocType->AddItems("红字应付单","2");
scAprshDocType->AddItems("票据退回","3");
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmAprsh::GetDataToGrid()
{
AnsiString s;
s = "\t" + GetDetailValue("AprsdLine") +
"\t" + GetDetailValue("AprsdCavCode") +
"\t" + GetDetailValue("AprsdCavLine") +
"\t" + GetDetailValue("AprsdRAmt") +
"\t" + GetDetailValue("AprsdCAmt") +
"\t" + GetDetailValue("AprsdConv") ;
return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::RefreshGridData(int mAction)
{
int i;
AnsiString ItemStr;
switch(mAction)
{
case 0: // Append
ItemStr=GetDataToGrid();
sgAprsh->AddItem(ItemStr);
break;
case 1: // Modify
sgAprsh->ChangeItem(ItemStr,sgAprsh->Row);
break;
case 2: // Delete
sgAprsh->RemoveItem(sgAprsh->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GetDataFromComObject(int Section)
{
if (Section==1)
{
seAprshCode->Text = GetHeadValue("AprshCode");
deAprshDate->Text = GetHeadValue("AprshDate");
scAprshDocType->LocateKey(GetHeadValue("AprshDocType"));
scAprshDocType->Text = scAprshDocType->ItemData[0];
seAprshDocCode->Text = GetHeadValue("AprshDocCode");
lbAprshUser->Caption = GetHeadValue("AprshUser");
chkAprshCheck->Checked = (GetHeadValue("AprshCheck")=="1"?true:false);
if(chkAprshCheck->Checked)
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
lbAprshChecker->Caption = GetHeadValue("AprshChecker");
lbAprshCheckDate->Caption= GetHeadValue("AprshCheckDate");
memAprshDesc->Text = GetHeadValue("AprshDesc");
lbAprshSysDate->Caption = GetHeadValue("AprshSysDate");
}
else
{
seAprsdLine->Text = GetDetailValue("AprsdLine");
seAprsdCavCode->Text = GetDetailValue("AprsdCavCode");
seAprsdCavLine->Text = GetDetailValue("AprsdCavLine");
seAprsdConv->Text = GetDetailValue("AprsdConv");
seAprsdRAmt->Text = GetDetailValue("AprsdRAmt");
seAprsdCAmt->Text = GetDetailValue("AprsdCAmt");
memAprsdDesc->Text = GetDetailValue("AprsdDesc");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::SendDataToComObject(int Section)
{
if (Section==1) // Head
{
SetHeadValue("AprshCode",seAprshCode->Text);
SetHeadValue("AprshDate",deAprshDate->Text);
SetHeadValue("AprshDocType",scAprshDocType->ItemData[1]);
SetHeadValue("AprshDocCode",seAprshDocCode->Text);
SetHeadValue("AprshUser",lbAprshUser->Caption);
SetHeadValue("AprshDesc",memAprshDesc->Text);
}
else
{
SetDetailValue("AprsdCode",seAprshCode->Text);
SetDetailValue("AprsdLine",seAprsdLine->Text);
SetDetailValue("AprsdCavCode",seAprsdCavCode->Text);
SetDetailValue("AprsdCavLine",seAprsdCavLine->Text);
SetDetailValue("AprsdConv",seAprsdConv->Text);
SetDetailValue("AprsdRAmt",seAprsdRAmt->Text);
SetDetailValue("AprsdCAmt",seAprsdCAmt->Text);
SetDetailValue("AprsdDesc",memAprsdDesc->Text);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::WaitUserInput(int Section)
{
if (Section ==1)
{
if(CurrentState==caAddHead)
seAprshCode->SetFocus();
}
else
{
sgAprsh->Visible=false;
fpAprshDetail->Visible=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::DisplayBill()
{
if(comServer->RecordCount==0)
return;
GetDataFromComObject(1); // Head
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GetBill(AnsiString BillID)
{
int iRow;
comServer->Find("AprshCode='"+BillID+"'");
if (iRow>0) //FIND THIS BILL
{
DisplayBill();
}
else if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::FillGridWithData()
{
sgAprsh->RowCount=1;
if(comServer->RecordCount > 0)
for (int i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);
RefreshGridData(0); // Append
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::ChangeToBrowseState(bool Browse)
{
sgAprsh->Visible=true;
fpAprshDetail->Visible=false;
if(Browse==false)
sgAprsh->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::sgAprshDblClick(TObject *Sender)
{
int iRow;
iRow=sgAprsh->Row;
if (iRow == 0)
{
return;
}
comServer->LocateItemByKey(seAprshCode->Text+"\t"+sgAprsh->TextMatrix[iRow][1]+"\t");
if (comServer->ItemCount>0)
{
GetDataFromComObject(2); // Detail
sgAprsh->Visible=false;
fpAprshDetail->Visible=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::sgAprshSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if (ARow > 0)
comServer->LocateItemByKey(seAprshCode->Text+"\t"+sgAprsh->TextMatrix[ARow][1]+"\t");
if (!comServer->Eof)
GetDataFromComObject(2); // Detail
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::btnOKClick(TObject *Sender)
{
try
{
if (CurrentState==caAddDetail||CurrentState==caAddBill)
{
if(DetailState==caAddDetail)
comServer->AddItem();
SendDataToComObject(2);
comServer->AddToObject();
ClearControl(2,false);
seAprsdLine->SetFocus();
}
else
ChangeToBrowseState();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::btnCancelClick(TObject *Sender)
{
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::FormShow(TObject *Sender)
{
ClearControl(1,false); // Head
ClearControl(2,false); // Detail
MoveToFirst();
ChangeToBrowseState();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprshDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
if(scAprshDocType->ItemData[1]=="1")
{
SqlStr="005[退款单号][供应商][币种][金额][付款单号]";
SqlStr+=" select BkpbCode,bkpbSupply,BkpbCurrency,BkpbAmt,BkpbAppb from sdBkpb ";
SqlStr+=" where Bkpbcheck=1 order by BkpbCode";
p=new TfrmWnQuery(this,"退款单查询",SqlStr);
}
if(scAprshDocType->ItemData[1]=="2")
{
SqlStr="005[红字应付单号][供应商][币种][金额][原单号]";
SqlStr+=" select ApobCode,ApobSupply,ApobCurrency,ApobAmt,ApobOCode from sdApob ";
SqlStr+=" where Apobcheck=1 and APobRed=-1 order by ApobCode";
p=new TfrmWnQuery(this,"红字应付单查询",SqlStr);
}
if(scAprshDocType->ItemData[1]=="3")
{
SqlStr="004[退回票据号][日期][供应商][金额]";
SqlStr+=" select NpinCode,NpinDate,NpinSupply,NpinAmt from sdNpin";
SqlStr+=" order by npinCode";
p=new TfrmWnQuery(this,"退回票据查询",SqlStr);
}
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seAprshDocCode->Text=p->ColData[1];
m_Amt=p->ColData[4];
m_OldCode=p->ColData[5];
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GenrateBill()
{
int TempCount;
TempCount = comServer->ItemCount;
StartWaitForm("正在启动生成界面");
TfrmAprsd *p=new TfrmAprsd(this);
p->GetComObject(comServer);
EndWaitForm();
p->ShowModal();
if (TempCount < comServer->ItemCount)
TGenBaseForm::SaveRecord();
else
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprsdRAmtKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13 )
{
AnsiString Temp1,Temp2;
Temp1=seAprsdRAmt->Text;
if(Temp1.IsEmpty())
return;
Temp2=seAprsdCAmt->Text;
if(Temp2.IsEmpty())
return;
seAprsdConv->Text=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprsdCAmtKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13 )
{
AnsiString Temp1,Temp2;
Temp1=seAprsdRAmt->Text;
if(Temp1.IsEmpty())
return;
Temp2=seAprsdCAmt->Text;
if(Temp2.IsEmpty())
return;
seAprsdConv->Text=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprshCodeExit(TObject *Sender)
{
if(CurrentState==caNormal&&seAprshCode->Text!=GetHeadValue("AprshCode"))
{
comServer->LocateByKey(seAprshCode->Text);
DisplayBill();
}
}
//---------------------------------------------------------------------------
bool __fastcall TfrmAprsh::BeforeCheck()
{
SetHeadValue("AprshCheck",1);
SetHeadValue("AprshChecker",g_sdUserCode);
SetHeadValue("AprshCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmAprsh::BeforeUnCheck()
{
SetHeadValue("AprshCheck",0);
SetHeadValue("AprshChecker","");
SetHeadValue("AprshCheckDate",NULL);
return true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?