bdl.cpp
来自「科思ERP部分源码及控件」· C++ 代码 · 共 279 行
CPP
279 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Bdl.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmBdl *frmBdl;
//---------------------------------------------------------------------------
__fastcall TfrmBdl::TfrmBdl(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seBdlCode,"Acm-70");
//AutoCtl=seBdlCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::ClearControl(bool BringToNext)
{
if(!BringToNext)
{
seBdlCode->Text ="";
seBdlFmonth->Text=g_sdFMonth; //月份
deBdlDate->Text =g_sdCurDate; //日期
scBdlBdr->ItemIndex =0;
scBdlDocType->ItemIndex =0;
scBdlCurrency->ItemIndex =-1; //币种
seBdlEnrate->Text ="1"; //汇率
seBdlAmt->Text ="0.00";
seBdlGAmt->Text ="0.00";
seBdlBAmt->Text ="0.00";
seBdlDocCode->Text="";
seBdlDocLine->Text="0";
memBdlDesc->Text=""; //备注
lblBdlUser->Caption=g_sdUserCode; //操作员
chkBdlCheck->Checked=false; //审核标志
lblBdlChecker->Caption =""; //审核人
lblBdlCheckDate->Caption =""; //审核日期
SetCheckToolbarStatus(false);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::InitEditControl()
{
ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,true,true,false, sgBdl,sgBdl->Name);
ClientGroup->AddComponent(2,false,false,false, seBdlCode,seBdlCode->Name);
ClientGroup->AddComponent(2,true,true,true, seBdlFmonth,seBdlFmonth->Name);
scBdlDocType->ClearAll();
scBdlDocType->AddItems("1-来自发票","1");
scBdlDocType->AddItems("2-来自应收单","2");
FillComboBox(Handle,scBdlBdr,"select ArBdrDesc Memo,ArBdrCode from sdArBdr order by ArBdrCode" ,"Memo","ArBdrCode");
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,scBdlCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::GetDataFromComObject()
{
seBdlCode->Text =GetFieldValue("BdlCode");
sgBdl->LocateGrid(1,GetFieldValue("BdlCode"));
seBdlFmonth->Text=GetFieldValue("BdlFmonth"); //月份
deBdlDate->Text =GetFieldValue("BdlDate"); //日期
scBdlBdr->LocateKey(GetFieldValue("BdlBdr"));
scBdlDocType->LocateKey(GetFieldValue("BdlDocType"));
scBdlCurrency->LocateKey(GetFieldValue("BdlCurrency")); //币种
seBdlEnrate->Text =GetFieldValue("BdlEnrate"); //汇率
seBdlAmt->Text =GetFieldValue("BdlAmt");
seBdlGAmt->Text =GetFieldValue("BdlGAmt");
seBdlBAmt->Text =GetFieldValue("BdlBAmt");
seBdlDocCode->Text =GetFieldValue("BdlDocCode");
seBdlDocLine->Text =GetFieldValue("BdlDocLine");
memBdlDesc->Text=GetFieldValue("BdlDesc"); //备注
lblBdlUser->Caption=GetFieldValue("BdlUser"); //操作员
chkBdlCheck->Checked=(GetFieldValue("BdlCheck")=="1"?true:false); //审核标志
lblBdlChecker->Caption =GetFieldValue("BdlChecker"); //审核人
lblBdlCheckDate->Caption =GetFieldValue("BdlCheckDate"); //审核日期
//根据审核状态,设置工具栏
if(GetFieldValue("BdlCheck")=="1")
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::SendDataToComObject()
{
SetFieldValue("BdlCode",seBdlCode->Text);
SetFieldValue("BdlFmonth",seBdlFmonth->Text);
SetFieldValue("BdlDate",deBdlDate->Text);
SetFieldValue("BdlBdr",scBdlBdr->ItemData[1]);
SetFieldValue("BdlDocType",scBdlDocType->ItemData[1]);
SetFieldValue("BdlCurrency",scBdlCurrency->ItemData[1]);
SetFieldValue("BdlEnrate",seBdlEnrate->Text);
SetFieldValue("BdlAmt",seBdlAmt->Text);
SetFieldValue("BdlDocCode",seBdlDocCode->Text);
SetFieldValue("BdlDocLine",seBdlDocLine->Text);
SetFieldValue("BdlBAmt",seBdlBAmt->Text);
SetFieldValue("BdlGAmt",seBdlGAmt->Text);
SetFieldValue("BdlDesc",memBdlDesc->Text);
SetFieldValue("BdlUser",lblBdlUser->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::WaitUserInput()
{
if(seBdlCode->Enabled)
seBdlCode->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmBdl::GetDataToGrid()
{
AnsiString s;
s = "\t" + GetFieldValue("BdlCode") +
"\t" + GetFieldValue("BdlDate") +
"\t" + GetFieldValue("BdlBAmt") ;
return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetDataToGrid();
if (mAction == 0) //Add
{
sgBdl->AddItem(ItemStr);
}
else if(mAction == 1) //Modify
{
int i = sgBdl->Row;
sgBdl->ChangeItem(ItemStr,i);
}
else if(mAction == 2) //Delete
{
sgBdl->RemoveItem(sgBdl->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgBdl->RowCount = 1;
while (comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgBdl->AddItem(ItemStr);
comServer->MoveNext();
}
comServer->MoveFirst();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::FormShow(TObject *Sender)
{
FillGridWithData();
comServer->MoveFirst();
GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::sgBdlClick(TObject *Sender)
{
if (sgBdl->Row > 0)
comServer->LocateByKey(WideString(sgBdl->TextMatrix[sgBdl->Row][1]));
if (comServer->RecordCount>0)
GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::seBdlCodeExit(TObject *Sender)
{
if(CurrentState==caNormal)
{
comServer->LocateByKey(WideString(seBdlCode->Text));
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::scBdlCurrencyClick(TObject *Sender)
{
seBdlEnrate->Text=scBdlCurrency->ItemData[2];
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::seBdlDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TfrmWnQuery *p;
if(scBdlDocType->ItemIndex == 0) //坏账单据来自发票
{
SqlStr="008[应收发票号][财务月份][登记日期][客户][发票行][应收金额][币种][汇率] ";
SqlStr+=" select ArivhCode,ArivhFmonth,ArivhDate,ArivhClient,ArivdLine,ArivdAmt=ArivdAmt-ArivdCAmt-ArivdRAmt-ArivdBAmt,ArivhCurrency,ArivhEnrate ";
SqlStr+=" from sdArivh,sdArivd where ArivhCode=ArivdCode and ArivhRed=1 and ArivhCheck=1 and ArivdAmt>ArivdCAmt+ArivdRAmt+ArivdBAmt ";
SqlStr+=" order by ArivhClient,ArivhDate DESC,ArivhCode,ArivdLine ";
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"应收发票查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seBdlDocCode->Text=p->ColData[1];
seBdlDocLine->Text=p->ColData[5];
seBdlAmt->Text=p->ColData[6];
scBdlCurrency->LocateKey(p->ColData[7]);
seBdlEnrate->Text=p->ColData[8];
}
delete p;
}
else //坏账单据来自应收单
{
SqlStr="007[应收单号][财务月份][登记日期][客户][应收金额][币种][汇率] ";
SqlStr+=" select ArobCode,ArobFmonth,ArobDate,ArobClient,ArobAmt=ArobAmt-ArobCAmt-ArobRAmt-ArobBAmt,ArobCurrency,ArobEnrate ";
SqlStr+=" from sdArob where ArobCheck=1 and ArobRed=1 and ArobAmt>ArobCAmt+ArobRAmt+ArobBAmt ";
SqlStr+=" order by ArobClient,ArobDate DESC,ArobCode ";
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"其他应收单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seBdlDocCode->Text=p->ColData[1];
seBdlDocLine->Text="0";
seBdlAmt->Text=p->ColData[5];
scBdlCurrency->LocateKey(p->ColData[6]);
seBdlEnrate->Text=p->ColData[7];
}
delete p;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::scBdlDocTypeChange(TObject *Sender)
{
seBdlDocCode->Text="";
seBdlDocLine->Text="0";
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::RefreshUpdateData(int MsgSrc,int MsgType)
{
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdl::BeforeCheck()
{
SetFieldValue("BdlCheck",1);
SetFieldValue("BdlChecker",g_sdUserCode);
SetFieldValue("BdlCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdl::BeforeUnCheck()
{
SetFieldValue("BdlCheck",0);
SetFieldValue("BdlChecker","");
SetFieldValue("BdlCheckDate",NULL);
return true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?