arivh.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 807 行 · 第 1/2 页
CPP
807 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Arivh.h"
#include "Arivd_F.h" //销售发货生成
#include "Arivd_T.h" //销售退货生成
#include "Arivd_P.h" //应收发票生成
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "GenBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmArivh *frmArivh;
//---------------------------------------------------------------------------
__fastcall TfrmArivh::TfrmArivh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seArivhCode,"Acm-61");
// AutoCtl=seArivhCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::sgArivdSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if (ARow == 0)
{
return;
}
comServer->LocateItemByKey(seArivhCode->Text+"\t"+sgArivd->TextMatrix[ARow][1]);
GetDataFromComObject(2);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::sgArivdDblClick(TObject *Sender)
{
int iRow;
iRow=sgArivd->Row;
if (iRow == 0)
{
return;
}
if (comServer->ItemCount >0)
{
GetDataFromComObject(2);
sgArivd->Visible=false;
FloatPanel2->Visible=true;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::btnOKClick(TObject *Sender)
{
if ((CurrentState==caAddDetail)||(CurrentState==caAddBill))
{
try
{
if(DetailState==caAddDetail)
comServer->AddItem();
SendDataToComObject(2);
comServer->AddToObject();
ClearControl(2,false);
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
else
ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::btnCancelClick(TObject *Sender)
{
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::FormShow(TObject *Sender)
{
ClearControl(1,false);
ClearControl(2,false);
TGenBaseForm::MoveToFirst();
ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::InitEditControl()
{
ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(1,false,true,false, seArivhCode,seArivhCode->Name);
ClientGroup->AddComponent(1,true,true,true, GroupBox4,GroupBox4->Name);
ClientGroup->AddComponent(1,false,true,true, scArivhClient,scArivhClient->Name);
ClientGroup->AddComponent(1,true,true,true, scArivdDocType,scArivdDocType->Name);
ClientGroup->AddComponent(1,false,true,true, scArivhCurrency,scArivhCurrency->Name);
ClientGroup->AddComponent(1,true,true,true, seArivhFmonth,seArivhFmonth->Name);
ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
// ClientGroup->AddComponent(2,true,true,true, seArivdDocCode,seArivdDocCode->Name);
ClientGroup->AddComponent(2,true,true,true, seArivdDocLine,seArivdDocLine->Name);
ClientGroup->AddComponent(2,true,true,true, GroupBox2,GroupBox2->Name);
ClientGroup->AddComponent(2,true,true,true, GroupBox3,GroupBox3->Name);
scArivdDocType->ClearAll();
scArivdDocType->AddItems("<不生成 >","0");
scArivdDocType->AddItems("1-销售发货单","1");
scArivdDocType->AddItems("2-销售退货单","2");
// scArivdDocType->AddItems("3-应收发票","3");
AnsiString sSql;
sSql =AnsiString("select currencycode,currencyname+'-'+currencycode memo,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
sSql+=" where currencycode*=ratecurrency and ";
sSql+=" ratefmonth='"+g_sdFMonth+"'";
sSql+=" order by currencylocal desc ";
FillComboBox(Handle,scArivhCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
FillComboBox(Handle,scArivhClient,"select ClientName Memo,ClientCode from sdClient order by ClientCode" ,"Memo","ClientCode");
FillEdit(Handle,seArivdArlt,"select ArltName Memo,ArltCode,ArltFrom from sdArlt order by ArltCode" ,"Memo","ArltCode","ArltFrom");
FillComboBox(Handle,scArivdUnit,"select UnitCode+'-'+UnitName Memo,UnitCode from sdUnit order by UnitCode" ,"Memo","UnitCode");
FillComboBox(Handle,scArivdTaxCode,"select TaxName Memo,TaxCode,TaxRate from sdTax order by TaxCode" ,"Memo","TaxCode","TaxRate");
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (! BringToNext)
{
seArivhCode->Text="";
seArivhFmonth->Text=g_sdFMonth;
deArivhDate->Text=g_sdCurDate;
scArivhClient->ItemIndex=-1;
scArivdDocType->ItemIndex=1;
scArivhCurrency->ItemIndex=-1;
seArivhEnrate->Text="1";
chkArivhRed->Checked=false;
memArivhDesc->Text="";
deArivhRDate->Text="";
lblArivhUser->Caption=g_sdUserCode;
chkArivhCheck->Checked=false;
lblArivhChecker->Caption="";
// lblArivhCheckDate->Caption="";
SetCheckToolbarStatus(false);
}
sgArivd->RowCount=1;
}
else if (Section==2)
{
if (! BringToNext)
{
// if(comServer->RecordCount > 0)
seArivdLine->Text=AnsiString(comServer->ItemCount+1);
// else
// seArivdLine->Text="1";
seArivdArlt->ItemIndex=-1;
seArivdArlt->Text="";
seArivdDocCode->Text="";
seArivdDocLine->Text="0";
seArivdGoods->Text="";
scArivdUnit->ItemIndex=-1;
seArivdQty->Text="0.00";
seArivdPrice->Text="0.00";
scArivdTaxCode->ItemIndex=-1;
seArivdTRate->Text="0.00";
seArivdTAmt->Text="0.00";
seArivdNAmt->Text="0.00";
seArivdAmt->Text="0.00";
seArivdDRate->Text="0.00";
seArivdDAmt->Text="0.00";
seArivdCAmt->Text="0.00";
seArivdRAmt->Text="0.00";
seArivdPzCode->Text="";
seArivdBAmt->Text="0.00";
rbtArivdFrom_Input->Checked=true;
rbtArivdFrom_Create->Checked=false;
memArivdDesc->Text="";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GetDataFromComObject(int Section)
{
if (Section == 1)
{
seArivhCode->Text=GetHeadValue("ArivhCode");
seArivhFmonth->Text=GetHeadValue("ArivhFmonth");
deArivhDate->Text=GetHeadValue("ArivhDate");
scArivhClient->LocateKey(GetHeadValue("ArivhClient"));
scArivdDocType->LocateKey(GetDetailValue("ArivdDocType"));
scArivhCurrency->LocateKey(GetHeadValue("ArivhCurrency"));
seArivhEnrate->Text=GetHeadValue("ArivhEnrate");
chkArivhRed->Checked=(GetHeadValue("ArivhRed")=="-1"?true:false);
memArivhDesc->Text=GetHeadValue("ArivhDesc");
deArivhRDate->Text=GetHeadValue("ArivhRDate");
lblArivhUser->Caption=GetHeadValue("ArivhUser");
chkArivhCheck->Checked=(GetHeadValue("ArivhCheck")=="1");
lblArivhChecker->Caption=GetHeadValue("ArivhChecker");
// lblArivhCheckDate->Caption=GetHeadValue("ArivhCheckDate");
if((GetHeadValue("ArivhCheck")=="1"))
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
else
{
seArivdLine->Text=GetDetailValue("ArivdLine");
seArivdArlt->LocateKey(GetDetailValue("ArivdArlt"));
scArivdDocType->Text=GetDetailValue("ArivdDocType");
scArivdDocType->LocateKey(GetDetailValue("ArivdDocType"));
seArivdDocCode->Text=GetDetailValue("ArivdDocCode");
seArivdDocLine->Text=GetDetailValue("ArivdDocLine");
seArivdGoods->Text=GetDetailValue("ArivdGoods");
scArivdUnit->LocateKey(GetDetailValue("ArivdUnit"));
seArivdQty->Text=GetDetailValue("ArivdQty");
seArivdPrice->Text=GetDetailValue("ArivdPrice");
scArivdTaxCode->LocateKey(GetDetailValue("ArivdTaxCode"));
seArivdTRate->Text=GetDetailValue("ArivdTRate");
seArivdTAmt->Text=GetDetailValue("ArivdTAmt");
seArivdNAmt->Text=GetDetailValue("ArivdNAmt");
seArivdAmt->Text=GetDetailValue("ArivdAmt");
seArivdDRate->Text=GetDetailValue("ArivdDRate");
seArivdDAmt->Text=GetDetailValue("ArivdDAmt");
seArivdCAmt->Text=GetDetailValue("ArivdCAmt");
seArivdRAmt->Text=GetDetailValue("ArivdRAmt");
seArivdPzCode->Text=GetDetailValue("ArivdPzCode");
seArivdBAmt->Text=GetDetailValue("ArivdBAmt");
rbtArivdFrom_Input->Checked=(GetDetailValue("ArivdFrom")=="1");
rbtArivdFrom_Create->Checked=(GetDetailValue("ArivdFrom")=="2");
memArivdDesc->Text=GetDetailValue("ArivdDesc");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::SendDataToComObject(int Section)
{
if (Section==1)
{
SetHeadValue("ArivhCode",seArivhCode->Text);
SetHeadValue("ArivhFmonth",seArivhFmonth->Text);
SetHeadValue("ArivhDate",deArivhDate->Text);
SetHeadValue("ArivhClient",scArivhClient->ItemData[cbItem2]);
SetHeadValue("ArivhCurrency",scArivhCurrency->ItemData[cbItem2]);
SetHeadValue("ArivhEnrate",seArivhEnrate->Text);
SetHeadValue("ArivhRed",(chkArivhRed->Checked?"-1":"1"));
SetHeadValue("ArivhDesc",memArivhDesc->Text);
SetHeadValue("ArivhRDate",deArivhRDate->Text);
SetHeadValue("ArivhUser",lblArivhUser->Caption);
}
else
{
//计算发票行各金额
CalculateAmt();
SetDetailValue("ArivdCode",seArivhCode->Text);
SetDetailValue("ArivdLine",seArivdLine->Text);
SetDetailValue("ArivdArlt",seArivdArlt->ItemData[cbItem2]);
SetDetailValue("ArivdDocType",scArivdDocType->ItemData[cbItem2]);
SetDetailValue("ArivdDocCode",seArivdDocCode->Text);
SetDetailValue("ArivdDocLine",seArivdDocLine->Text);
SetDetailValue("ArivdGoods",seArivdGoods->Text);
SetDetailValue("ArivdUnit",scArivdUnit->ItemData[cbItem2]);
SetDetailValue("ArivdQty",seArivdQty->Text);
SetDetailValue("ArivdPrice",seArivdPrice->Text);
SetDetailValue("ArivdDRate",seArivdDRate->Text);
SetDetailValue("ArivdDAmt",seArivdDAmt->Text);
SetDetailValue("ArivdNAmt",seArivdNAmt->Text);
SetDetailValue("ArivdTaxCode",scArivdTaxCode->ItemData[cbItem2]);
SetDetailValue("ArivdTRate",seArivdTRate->Text);
SetDetailValue("ArivdTAmt",seArivdTAmt->Text);
SetDetailValue("ArivdAmt",seArivdAmt->Text);
SetDetailValue("ArivdCAmt",seArivdCAmt->Text);
SetDetailValue("ArivdPzCode",seArivdPzCode->Text);
SetDetailValue("ArivdBAmt",seArivdBAmt->Text);
SetDetailValue("ArivdRAmt",seArivdRAmt->Text);
SetDetailValue("ArivdState","0");
SetDetailValue("ArivdFrom",(rbtArivdFrom_Input->Checked?"1":"2"));
SetDetailValue("ArivdDesc",memArivdDesc->Text);
SetDetailValue("ArivdCAmt","0");
SetDetailValue("ArivdRAmt","0");
SetDetailValue("ArivdBAmt","0");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::WaitUserInput(int Section)
{
if (Section ==1)
{
if(seArivhCode->Enabled)
seArivhCode->SetFocus();
}
else
{
sgArivd->Visible=false;
FloatPanel2->Visible=true;
if(seArivdArlt->ItemData[2] != "1") //行类型不是"产品",直接录入费用金额
{
seArivdNAmt->ReadOnly=false;
GroupBox1->Enabled=false;
}
else
{
seArivdNAmt->ReadOnly=true;
GroupBox1->Enabled=true;
}
if(seArivdArlt->Enabled)
seArivdArlt->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetItemStringToGrid();
switch(mAction)
{
case 0:
sgArivd->AddItem(ItemStr);
break;
case 1:
sgArivd->ChangeItem(ItemStr,sgArivd->Row);
break;
case 2:
sgArivd->RemoveItem(sgArivd->Row);
break;
default:
break;
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArivh::GetItemStringToGrid()
{
seArivdArlt->LocateKey(GetDetailValue("ArivdArlt"));
AnsiString s_ItemStr;
s_ItemStr ="\t"+GetDetailValue("ArivdLine")+
"\t"+seArivdArlt->ItemData[0]+
"\t"+GetDetailValue("ArivdDocCode")+
"\t"+GetDetailValue("ArivdDocLine")+
"\t"+GetDetailValue("ArivdGoods")+
"\t"+GetDetailValue("ArivdUnit")+
"\t"+GetDetailValue("ArivdQty")+
"\t"+GetDetailValue("ArivdTAmt")+
"\t"+GetDetailValue("ArivdAmt")+
"\t"+GetDetailValue("ArivdRAmt")+
"\t"+(GetDetailValue("ArivdFrom")=="1"?"录入":"生成");
return s_ItemStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::DisplayBill()
{
if(comServer->RecordCount<1)
return;
GetDataFromComObject(1);
ChangeToBrowseState(true);
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GetBill(AnsiString BillID)
{
if(comServer->Find("ArivhCode='"+BillID+"'"))
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::FillGridWithData()
{
AnsiString ItemStr;
sgArivd->RowCount=1;
if(comServer->RecordCount<1)
return;
for (int i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);
RefreshGridData(0);
}
comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GenrateBill()
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?