apcavd.cpp
来自「科思ERP部分源码及控件」· C++ 代码 · 共 247 行
CPP
247 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Apcavd.h"
#include "Apcavh.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "StdBaseForm"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmApcavd *frmApcavd;
//---------------------------------------------------------------------------
__fastcall TfrmApcavd::TfrmApcavd(TComponent* Owner)
: TStdBaseForm(Owner)
{
InitControlGroup();
btnOK->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::InitControlGroup()
{
sgApcavd->RowCount = 1;
seApcavhAmt->Text=frmApcavh->m_Amt;
scApcavdDocType->AddItems("应付发票","1");
scApcavdDocType->AddItems("应付单","2");
scApcavdDocType->ItemIndex=0;
seApcavdDocCode->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::seApcavdDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TfrmWnQuery *p;
if(scApcavdDocType->ItemIndex==-1)
return;
try
{
StartWaitForm("正在查询,请稍候...");
if(scApcavdDocType->ItemData[1]=="1")
{
SqlStr="003[应付发票号][日期][币种]";
SqlStr+=" select distinct apivhCode,Apivhdate,ApivhCurrency from sdapivh,sdApivd ";
SqlStr+=" where ApivdCode=ApivhCode and Apivhcheck=1 and APIVHRED=1 and (ApivdAmt-ApivdCAmt-ApivdRAmt)>0 order by Apivhcode";
p=new TfrmWnQuery(this,"应付发票查询",SqlStr);
}
if(scApcavdDocType->ItemData[1]=="2")
{
SqlStr="003[应付单号][日期][币种]";
SqlStr+=" select apobCode,Apobdate,ApobCurrency from sdapob ";
SqlStr+=" where Apobcheck=1 and ApobRed=1 and (ApobAmt-ApobCAmt-ApobRAmt)>0 order by Apobcode";
p=new TfrmWnQuery(this,"应付单查询",SqlStr);
}
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seApcavdDocCode->Text=p->ColData[1];
FillGridWithData();
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::FillGridWithData()
{
AnsiString ItemStr,s_SQL,m_Trate;
TComResultSet *RsApcavd;
if(scApcavdDocType->ItemIndex==-1)
return;
if(scApcavdDocType->ItemData[1]=="1")
{
s_SQL="select type='1',code=apivdCODE,line=ApivdLine,TAmt=(ApivdAmt-ApivdCAmt-ApivdRAmt),CAmt=ApivdCAmt" ;
s_SQL+=" from sdApivd where apivdCODE='"+seApcavdDocCode->Text+"'";
}
else
{
s_SQL="select type='2',code=apobCODE,line='0',TAmt=(ApobAmt-ApobCAmt-ApobRAmt),CAmt=ApobCAmt" ;
s_SQL+=" from sdApob where apobCODE='"+seApcavdDocCode->Text+"'";
}
try
{
StartWaitForm("正在查询数据,请稍候......");
RsApcavd=new TComResultSet(Handle,g_ClientHandle);
RsApcavd->Open(s_SQL,"");
while( RsApcavd->Eof == 0)
{
ItemStr="\t"+AnsiString("") +
"\t"+RsApcavd->FieldByName("type")+
"\t"+RsApcavd->FieldByName("code")+
"\t"+RsApcavd->FieldByName("line")+
"\t"+RsApcavd->FieldByName("TAmt")+
"\t"+RsApcavd->FieldByName("CAmt")+
"\t"+"1" ;
sgApcavd->AddItem(ItemStr);
RsApcavd->MoveNext();
}
RsApcavd->Close();
}
__finally
{
EndWaitForm();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::sgApcavdDblClick(TObject *Sender)
{
AnsiString SqlStr;
int ARow=sgApcavd->Row;
if (ARow >0)
{
if(sgApcavd->Col==1)
{
if (sgApcavd->Cells[1][ARow] == "√")
{
sgApcavd->Cells[1][ARow] = "";
for (int i=1;i<sgApcavd->RowCount;i++)
{
if(sgApcavd->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgApcavd->Cells[1][ARow] = "√";
btnOK->Enabled=true;
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::bbSelAllClick(TObject *Sender)
{
for(int i=1;i<sgApcavd->RowCount;i++)
sgApcavd->Cells[1][i] = "√";
btnOK->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::bbSelNoneClick(TObject *Sender)
{
for(int i=1;i<sgApcavd->RowCount;i++)
sgApcavd->Cells[1][i] = "";
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::btnOKClick(TObject *Sender)
{
int ErrNum;
try
{
StartWaitForm("正在生成核销单,请稍候......");
if(sgApcavd->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(frmApcavh->GetDetailValue("ApcavdLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgApcavd->RowCount;i++)
{
if(sgApcavd->Cells[1][i]=="√")
{
comServer->AddItem();
if(sgApcavd->Cells[6][i]=="")
throw Exception("请输入换算系数!");
if(sgApcavd->Cells[7][i]=="")
throw Exception("请输入核销金额!");
SetDetailValue("ApcavdCode",frmApcavh->seApcavhCode->Text);
SetDetailValue("ApcavdLine",AnsiString(j));
SetDetailValue("ApcavdDocType",scApcavdDocType->ItemData[1]);
SetDetailValue("ApcavdDocCode",sgApcavd->Cells[3][i]);
SetDetailValue("ApcavdDocLine",sgApcavd->Cells[4][i]);
SetDetailValue("ApcavdPAmt",sgApcavd->Cells[5][i]);
SetDetailValue("ApcavdCAmt",sgApcavd->Cells[6][i]);
SetDetailValue("ApcavdConv",sgApcavd->Cells[7][i]);
SetDetailValue("ApcavdDesc",sgApcavd->Cells[8][i]);
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmApcavd::sgApcavdKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13 )
{
AnsiString Temp1,Temp2;
Temp1=sgApcavd->Cells[5][sgApcavd->Row];
if(Temp1.IsEmpty())
return;
Temp2=sgApcavd->Cells[6][sgApcavd->Row];
if(Temp2.IsEmpty())
return;
sgApcavd->Cells[7][sgApcavd->Row]=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?