arrid.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 332 行
CPP
332 行
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Arrid.h"
#include "Arrih.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"
TfrmArrid *frmArrid;
//--------------------------------------------------------------------------
__fastcall TfrmArrid::TfrmArrid(TComponent* Owner)
: TStdBaseForm(Owner)
{
btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
void __fastcall TfrmArrid::btnOKClick(TObject *Sender)
{
double tmp;
try
{
tmp=0;
FAmt=StrToFloat(seAmt->Text);
for(int i=1;i<sgArrid->RowCount;i++)
{
if(sgArrid->Cells[1][i]=="√")
{
if(sgArrid->Cells[12][i] == "")
throw Exception("核销金额不允许为空 ");
tmp+=StrToFloat(sgArrid->Cells[12][i]);
}
}
if(tmp-FAmt > 0)
throw Exception("核销金额总和不能大于红字发票行金额");
StartWaitForm("正在生成红字发票核销单行,请稍候......");
if(sgArrid->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(GetDetailValue("ArridLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgArrid->RowCount;i++)
{
if(sgArrid->Cells[1][i]=="√")
{
comServer->AddItem();
SetDetailValue("ArridCode",frmArrih->seArrihCode->Text);
SetDetailValue("ArridLine",AnsiString(j));
SetDetailValue("ArridAriCode",seArridAriCode->Text);
SetDetailValue("ArridAriLine",seArridAriLine->Text);
SetDetailValue("ArridCavCode",sgArrid->Cells[2][i]);
SetDetailValue("ArridCavLine",sgArrid->Cells[3][i]);
if(sgArrid->Cells[12][i] == "")
throw Exception("红冲核销金额不允许为空");
SetDetailValue("ArridAmt",sgArrid->Cells[12][i]);
SetDetailValue("ArridDesc","");
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::FormShow(TObject *Sender)
{
InitControlGroup();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::InitControlGroup()
{
sgArrid->RowCount = 1;
seArridAriCode->Text="";
seArridAriLine->Text="";
seDocType->Text="";
seDocCode1->Text="";
seDocLine1->Text="";
seDocCode2->Text="";
seDocLine2->Text="";
seClientCode->Text="";
seCurrencyCode->Text="";
seEnrate->Text="";
seAmt->Text="";
FDocType=0;
FDocCode="";
FDocLine=0;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArrid::GetSqlString()
{
AnsiString s_SQL,s_Temp;
s_SQL="";
if(FDocType == 3) //红字发票来源类型是应收发票
{
s_SQL =" select ArcavdCode,ArcavdLine,ArcavdDocCode,ArcavdDocLine,ArcavdRAmt,ArcavdCAmt,ArivhCurrency,ArivdDocType,ArivdDocCode,ArivdDocLine ";
s_SQL+=" from sdArcavh,sdArcavd,sdArivh,sdArivd ";
s_SQL+=" where ArcavhCode=ArcavdCode and ArcavhCheck=1 and ArivhCode=ArivdCode and ArcavdDocType=1 and ArcavdDocCode=ArivdCode and ArcavdDocLine=ArivdLine ";
s_SQL+=" and ArcavdDocCode='"+FDocCode+"' ";
s_SQL+=" and ArcavdDocLine='"+FDocLine+"' ";
s_SQL+=" order by ArcavdCode,ArcavdLine ";
}
if(FDocType == 2) //红字发票来源类型是退货单
{
s_SQL =" select ArcavdCode,ArcavdLine,ArcavdDocCode,ArcavdDocLine,ArcavdRAmt,ArcavdCAmt,ArivhCurrency,ArivdDocType,ArivdDocCode,ArivdDocLine ";
s_SQL+=" from sdArcavh,sdArcavd,sdArivh,sdArivd,sdSretd ";
s_SQL+=" where ArcavhCode=ArcavdCode and ArcavhCheck=1 and ArivhCode=ArivdCode and ArcavdDocType=1 and ArcavdDocCode=ArivdCode and ArcavdDocLine=ArivdLine ";
s_SQL+=" and ArivdDocType=1 and ArivdDocCode=SretdSogCode and ArivdDocLine=SretdSogdLine ";
s_SQL+=" and SretdCode='"+FDocCode+"' ";
s_SQL+=" and SretdLine='"+FDocLine+"' ";
s_SQL+=" order by ArcavdCode,ArcavdLine ";
}
return(s_SQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::FillGridWithData()
{
AnsiString ItemStr,s_SQL;
TComResultSet *RsArrid;
try
{
try
{
s_SQL =GetSqlString();
sgArrid->RowCount=1;
if(s_SQL == "")
return;
RsArrid=new TComResultSet(Handle,g_ClientHandle);
RsArrid->Open(s_SQL,"");
while( RsArrid->Eof == 0)
{
AnsiString tmp;
if(RsArrid->FieldByName("ArivdDocType") == "0")
tmp="无来源";
else if(RsArrid->FieldByName("ArivdDocType") == "1")
tmp="销售发货单";
else if(RsArrid->FieldByName("ArivdDocType") == "2")
tmp="销售退货单";
else if(RsArrid->FieldByName("ArivdDocType") == "3")
tmp="应收发票";
ItemStr = "\t"+AnsiString("") +
"\t"+RsArrid->FieldByName("ArcavdCode")+
"\t"+RsArrid->FieldByName("ArcavdLine")+
"\t"+RsArrid->FieldByName("ArcavdDocCode")+
"\t"+RsArrid->FieldByName("ArcavdDocLine")+
"\t"+tmp+
"\t"+RsArrid->FieldByName("ArivdDocCode")+
"\t"+RsArrid->FieldByName("ArivdDocLine")+
"\t"+RsArrid->FieldByName("ArivhCurrency")+
"\t"+RsArrid->FieldByName("ArcavdRAmt")+
"\t"+RsArrid->FieldByName("ArcavdCAmt")+
"\t"+RsArrid->FieldByName("ArcavdCAmt");
sgArrid->AddItem(ItemStr);
RsArrid->MoveNext();
}
RsArrid->Close();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
__finally
{
delete RsArrid;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::sgArridDblClick(TObject *Sender)
{
int ARow=sgArrid->Row;
int ACol=sgArrid->Col;
if (ARow < 1) return;
if (ACol == 1)
{
if (sgArrid->Cells[1][ARow] == "√")
{
sgArrid->Cells[1][ARow] = "";
for (int i=1;i<sgArrid->RowCount;i++)
{
if(sgArrid->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgArrid->Cells[1][ARow] = "√";
btnOK->Enabled = true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::bbQueryClick(TObject *Sender)
{
if(seClientCode->Text == "")
return;
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::bbAllClick(TObject *Sender)
{
if(sgArrid->RowCount <=1)
return;
for(int i=1;i<sgArrid->RowCount;i++)
sgArrid->Cells[1][i] = "√";
btnOK->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::bbNoneClick(TObject *Sender)
{
for(int i=1;i<sgArrid->RowCount;i++)
sgArrid->Cells[1][i] = " ";
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::sgArridSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if(sgArrid->Cells[1][ARow]=="√")
sgArrid->ReadOnly=false;
else
sgArrid->ReadOnly=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrid::seArridAriCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="010[红字发票号][发票行号][来源类型][来源单据号][单据行号][金额][登记日期][客户][币种][汇率] ";
SqlStr+=" select ArivdCode,ArivdLine,ArivdDocType,ArivdDocCode,ArivdDocLine,Amt=ArivdAmt-ArivdCAmt,ArivhDate,ArivhClient,ArivhCurrency,ArivhEnrate ";
SqlStr+=" from sdArivh,sdArivd where ArivhCode=ArivdCode and ArivhCheck=1 and ArivhRed=-1 and ArivdAmt>ArivdCAmt ";
SqlStr+=" order by ArivhDate DESC,ArivdCode,ArivdLine ";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"红字发票查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArridAriCode->Text=p->ColData[1];
seArridAriLine->Text=p->ColData[2];
if(p->ColData[3] == "2") //红字发票来源退货单
{
seDocType->Text="销售退货单";
FDocType=2;
seDocCode1->Text="";
seDocLine1->Text="";
seDocCode2->Text=p->ColData[4];
seDocLine2->Text=p->ColData[5];
FDocCode=p->ColData[4];
FDocLine=p->ColData[5];
seAmt->Text=p->ColData[6];
seClientCode->Text=p->ColData[8];
seCurrencyCode->Text=p->ColData[9];
seEnrate->Text=p->ColData[10];
}
if(p->ColData[3] == "3") //红字发票来源蓝字发票
{
seDocType->Text="应收发票";
FDocType=3;
seDocCode2->Text="";
seDocLine2->Text="";
seDocCode1->Text=p->ColData[4];
seDocLine1->Text=p->ColData[5];
FDocCode=p->ColData[4];
FDocLine=p->ColData[5];
seAmt->Text=p->ColData[6];
seClientCode->Text=p->ColData[8];
seCurrencyCode->Text=p->ColData[9];
seEnrate->Text=p->ColData[10];
}
}
delete p;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?