arrsd_hy.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 357 行
CPP
357 行
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Arrsd_HY.h"
#include "Arrsh_HY.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmArrsd_HY *frmArrsd_HY;
//--------------------------------------------------------------------------
__fastcall TfrmArrsd_HY::TfrmArrsd_HY(TComponent* Owner)
: TStdBaseForm(Owner)
{
btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::btnOKClick(TObject *Sender)
{
double tmp;
try
{
tmp=0;
for(int i=1;i<sgArrsd->RowCount;i++)
{
if(sgArrsd->Cells[1][i]=="√")
{
if(sgArrsd->Cells[11][i] == "")
throw Exception("核销金额不允许为空 ");
tmp+=StrToFloat(sgArrsd->Cells[11][i]);
}
}
if(tmp-FAmt > 0)
throw Exception("核销金额总和不能大于退款单据金额");
StartWaitForm("正在生成红字核销单行,请稍候......");
if(sgArrsd->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(GetDetailValue("ArrsdLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgArrsd->RowCount;i++)
{
if(sgArrsd->Cells[1][i]=="√")
{
comServer->AddItem();
SetDetailValue("ArrsdCode",frmArrsh_HY->seArrshCode->Text);
SetDetailValue("ArrsdLine",AnsiString(j));
SetDetailValue("ArrsdDocCode",sgArrsd->Cells[2][i]);
SetDetailValue("ArrsdDocLine",sgArrsd->Cells[3][i]);
if(sgArrsd->Cells[10][i] == "")
throw Exception("收款金额不允许为空");
SetDetailValue("ArrsdRAmt",sgArrsd->Cells[10][i]);
if(sgArrsd->Cells[11][i] == "")
throw Exception("核销金额不允许为空");
SetDetailValue("ArrsdCAmt",sgArrsd->Cells[11][i]);
if(sgArrsd->Cells[12][i] == "")
throw Exception("换算系数不允许为空");
SetDetailValue("ArrsdConv",sgArrsd->Cells[12][i]);
SetDetailValue("ArrsdDesc","");
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::FormShow(TObject *Sender)
{
InitControlGroup();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::InitControlGroup()
{
AnsiString sSql;
sgArrsd->RowCount = 1;
seArrshDocType->Text=frmArrsh_HY->scArrshDocType->Text;
FDocType=StrToInt(frmArrsh_HY->scArrshDocType->ItemData[1]);
seArrshDocCode->Text=frmArrsh_HY->seArrshDocCode->Text;
FDocCode=frmArrsh_HY->seArrshDocCode->Text;
seClientCode->Text="";
seCurrencyCode->Text="";
seEnrate->Text="";
seAmt->Text="";
seSKDocCode->Text="";
seArrsdDocCode->Text="";
deBeginDate->Text="";
TComResultSet *RsArrsd;
RsArrsd=new TComResultSet(Handle,g_ClientHandle);
try
{
switch(FDocType)
{
case 3: //红字应收单
sSql =" select ArobClient Client,ArobCurrency Currency,ArobDocCode SKDocCode,ArobEnrate Enrate,ArobAmt-ArobCAmt Amt ";
sSql+=" from sdArob where ArobCheck=1 and ArobRed=-1 and ArobCode='"+FDocCode+"'";
break;
default:
sSql="";
break;
}
RsArrsd->Open(sSql,"");
if(RsArrsd->RecordCount > 0)
{
FClientCode=RsArrsd->FieldByName("Client");
seClientCode->Text=RsArrsd->FieldByName("Client");
FCurrencyCode=RsArrsd->FieldByName("Currency");
seCurrencyCode->Text=RsArrsd->FieldByName("Currency");
FEnrate=StrToFloat(RsArrsd->FieldByName("Enrate"));
seEnrate->Text=RsArrsd->FieldByName("Enrate");
FAmt=StrToFloat(RsArrsd->FieldByName("Amt"));
seAmt->Text=RsArrsd->FieldByName("Amt");
FSKDocCode=RsArrsd->FieldByName("SKDocCode");
seSKDocCode->Text=RsArrsd->FieldByName("SKDocCode");
}
else
{
throw Exception("'"+FDocCode+"'是无效单据号");
}
}
__finally
{
RsArrsd->Close();
delete RsArrsd;
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArrsd_HY::GetSqlString()
{
AnsiString s_SQL,s_Temp;
s_SQL =" select ArcavhCode,DocCurrency,ArcavdLine,(case ArcavdDocType when 1 then '应收发票' else '其他应收单' end )DocType, ";
s_SQL+=" ArcavdDocCode,ArcavdDocLine,ArcavdRAmt,ArcavdCAmt,ArcavdConv ";
s_SQL+=" from sdArcavh,sdArcavd,sdVW_AR_Doc ";
s_SQL+=" where ArcavhCode=ArcavdCode and ArcavhCheck=1 ";
s_SQL+=" and ArcavdDocType=DocTypeCode and ArcavdDocCode=DocCode and ArcavdDocLine=DocLine ";
s_SQL+=" and ArcavdDocCode='"+FSKDocCode+"' ";
s_SQL+=" and ArcavdDocType=2 ";
s_Temp="";
if(seArrsdDocCode->Text != "")
s_Temp+=" and ArcavhCode ='"+seArrsdDocCode->Text+"' ";
if(deBeginDate->Text != "")
s_Temp+=" and ArcavhDate >='"+deBeginDate->Text+"' ";
s_SQL+=s_Temp;
s_SQL+=" order by ArcavhCode,ArcavdLine ";
return(s_SQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::FillGridWithData()
{
AnsiString ItemStr,s_SQL;
TComResultSet *RsArrsd;
try
{
try
{
s_SQL =GetSqlString();
sgArrsd->RowCount=1;
RsArrsd=new TComResultSet(Handle,g_ClientHandle);
RsArrsd->Open(s_SQL,"");
while( RsArrsd->Eof == 0)
{
ItemStr = "\t"+AnsiString("") +
"\t"+RsArrsd->FieldByName("ArcavhCode")+
"\t"+RsArrsd->FieldByName("ArcavdLine")+
"\t"+RsArrsd->FieldByName("DocType")+
"\t"+RsArrsd->FieldByName("ArcavdDocCode")+
"\t"+RsArrsd->FieldByName("ArcavdDocLine")+
"\t"+RsArrsd->FieldByName("DocCurrency")+
"\t"+RsArrsd->FieldByName("ArcavdRAmt")+
"\t"+RsArrsd->FieldByName("ArcavdCAmt")+
"\t"+RsArrsd->FieldByName("ArcavdRAmt")+
"\t"+RsArrsd->FieldByName("ArcavdCAmt")+
"\t"+RsArrsd->FieldByName("ArcavdConv");
sgArrsd->AddItem(ItemStr);
RsArrsd->MoveNext();
}
RsArrsd->Close();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
__finally
{
delete RsArrsd;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::sgArrsdDblClick(TObject *Sender)
{
int ARow=sgArrsd->Row;
int ACol=sgArrsd->Col;
if (ARow < 1) return;
if (ACol == 1)
{
if (sgArrsd->Cells[1][ARow] == "√")
{
sgArrsd->Cells[1][ARow] = "";
for (int i=1;i<sgArrsd->RowCount;i++)
{
if(sgArrsd->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgArrsd->Cells[1][ARow] = "√";
btnOK->Enabled = true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::bbQueryClick(TObject *Sender)
{
if(seClientCode->Text == "")
return;
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::bbAllClick(TObject *Sender)
{
if(sgArrsd->RowCount <=1)
return;
for(int i=1;i<sgArrsd->RowCount;i++)
sgArrsd->Cells[1][i] = "√";
btnOK->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::bbNoneClick(TObject *Sender)
{
for(int i=1;i<sgArrsd->RowCount;i++)
sgArrsd->Cells[1][i] = " ";
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::sgArrsdSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if(sgArrsd->Cells[1][ARow]=="√")
sgArrsd->ReadOnly=false;
else
sgArrsd->ReadOnly=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::seArrsdDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="003[单号][日期][操作员] ";
SqlStr+=" select distinct ArcavhCode,ArcavhDate,ArcavhUser ";
SqlStr+=" from sdArcavh,sdArcavd where ArcavhCode=ArcavdCode ";
SqlStr+=" and ArcavhCheck=1 and ArcavdDocType=2 ";
SqlStr+=" and ArcavdDocCode='"+FSKDocCode+"' ";
SqlStr+=" order by ArcavhDate DESC,ArcavhCode ";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"应收核销单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArrsdDocCode->Text=p->ColData[1];
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::btnRetryClick(TObject *Sender)
{
seArrsdDocCode->Text="";
deBeginDate->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsd_HY::sgArrsdSetEditText(TObject *Sender, int ACol,
int ARow, const AnsiString Value)
{
double dRAmt,dCAmt,dConv;
if(sgArrsd->Cells[1][ARow] == "√" && (ACol == 10 || ACol == 11))
{
if(sgArrsd->Cells[10][ARow] == "")
return;
else
dRAmt=StrToFloat(sgArrsd->Cells[10][ARow]);
if(sgArrsd->Cells[11][ARow] == "")
return;
else
dCAmt=StrToFloat(sgArrsd->Cells[11][ARow]);
if(dCAmt == 0 || dRAmt == 0)
sgArrsd->Cells[12][ARow]="0";
else
{
dConv=DataCarry(dCAmt/dRAmt,2,0);
sgArrsd->Cells[12][ARow]=FloatToStr(dConv);
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?