arivh.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 807 行 · 第 1/2 页
CPP
807 行
int TempCount;
TempCount = comServer->ItemCount;
TfrmArivd_F *p;
TfrmArivd_T *p2;
TfrmArivd_P *p3;
switch(scArivdDocType->ItemIndex)
{
case 0:
return ; //来源为"不生成"时,不处理
case 1: //来源为"销售发货"
p=new TfrmArivd_F(this);
SetControlState(caAddBill);
p->GetComObject(comServer);
p->ShowModal();
break;
case 2: //来源为"销售退货"
p2=new TfrmArivd_T(this);
SetControlState(caAddBill);
p2->GetComObject(comServer);
try
{
p2->ShowModal();
}
__finally
{
delete p2;
}
break;
case 3: //来源为"应收发票"
p3=new TfrmArivd_P(this);
SetControlState(caAddBill);
p3->GetComObject(comServer);
try
{
p3->ShowModal();
}
__finally
{
delete p3;
}
break;
default:
break;
}
if (TempCount < comServer->ItemCount)
TGenBaseForm::tbSaveClick(NULL);
else
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::ChangeToBrowseState(bool Browse)
{
FloatPanel2->Visible=false;
sgArivd->Visible=true;
if(Browse == false)
sgArivd->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivdArltButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="004[类型代码][类型名称][科目][来源] ";
SqlStr+=" select ArltCode,ArltName,ArltGlkm, ";
SqlStr+=" (case ArltFrom when 1 then '产品' when 2 then '劳务' when 3 then '费用' else '其他' end) tmp ";
SqlStr+=" from sdArlt order by ArltFrom ";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"发票行类型查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArivdArlt->LocateKey(p->ColData[1]);
seArivdArltExit(NULL);
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::scArivdDocTypeClick(TObject *Sender)
{
switch(scArivdDocType->ItemIndex)
{
case 0: //手工录
{
chkArivhRed->Checked=false;
seArivdDocCode->Text="";
break;
}
case 1: //来源发货单
chkArivhRed->Checked=false;
break; //来源退货单或应收发票,为红字发票
default:
chkArivhRed->Checked=true;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::tbAddDetailClick(TObject *Sender)
{
//来源于应收发票的红字发票不允许手工增行
if(scArivdDocType->ItemIndex == 3)
{
throw Exception("来源于应收发票的红字发票不允许手工增行,请使用生成功能");
}
TGenBaseForm::tbAddDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::tbEditDetailClick(TObject *Sender)
{
if(rbtArivdFrom_Create->Checked)
{
throw Exception("生成的发票行不允许手工修改");
}
TGenBaseForm::tbEditDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivdArltExit(TObject *Sender)
{
if(seArivdArlt->ItemData[1] == GetDetailValue("ArivdArlt"))
return;
if(seArivdArlt->ItemData[2] != "1") //行类型不是"产品",直接录入费用金额
{
seArivdNAmt->ReadOnly=false;
GroupBox1->Enabled=false;
seArivdGoods->Text="";
scArivdUnit->ItemIndex=-1;
seArivdQty->Text="0.00";
seArivdPrice->Text="0.00";
seArivdTAmt->Text="0.00";
seArivdNAmt->Text="0.00";
seArivdDRate->Text="0.00";
seArivdDAmt->Text="0.00";
seArivdAmt->Text="0.00";
}
else
{
seArivdNAmt->ReadOnly=true;
GroupBox1->Enabled=true;
seArivdNAmt->Text="0.00";
seArivdAmt->Text="0.00";
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::scArivhCurrencyClick(TObject *Sender)
{
seArivhEnrate->Text=scArivhCurrency->ItemData[2];
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::tbGenDetailClick(TObject *Sender)
{
if(scArivdDocType->ItemIndex < 1)
return;
TGenBaseForm::tbGenDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivdGoodsButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="003[物料编码][物料名称][计量单位]select GoodsCode,GoodsName,GoodsUnitCode from sdgoods,sdSgd where ";
SqlStr+="SgdClientCode='"+scArivhClient->ItemData[1]+"' and SgdGoodsCode=GoodsCode order by GoodsCode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"客户物料查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArivdGoods->Text=p->ColData[1];
scArivdUnit->LocateKey(p->ColData[3]);
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::scArivdTaxCodeClick(TObject *Sender)
{
seArivdTRate->Text=scArivdTaxCode->ItemData[2];
CalculateAmt();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::CalculateAmt()
{
double dQty,dPrice,dDRate,dDAmt,dTRate,dTAmt,dNAmt,dAmt;
//数量
if(seArivdQty->Text == "")
{
seArivdQty->Text="0";
dQty=0;
}
else
{
dQty=StrToFloat(seArivdQty->Text);
if(dQty < 0)
{
seArivdQty->Text="0";
dQty=0;
}
}
//单价
if(seArivdPrice->Text == "")
{
seArivdPrice->Text="0";
dPrice=0;
}
else
{
dPrice=StrToFloat(seArivdPrice->Text);
if(dPrice < 0)
{
seArivdPrice->Text="0";
dPrice=0;
}
}
//折扣率
if(seArivdDRate->Text == "")
{
seArivdDRate->Text="0";
dDRate=0;
}
else
{
dDRate=StrToFloat(seArivdDRate->Text);
if(dDRate < 0)
{
seArivdDRate->Text="0";
dDRate=0;
}
}
//税率
if(seArivdTRate->Text == "")
{
seArivdTRate->Text="0";
dTRate=0;
}
else
{
dTRate=StrToFloat(seArivdTRate->Text);
if(dTRate < 0)
{
seArivdTRate->Text="0";
dTRate=0;
}
}
//折扣金额=数量*单价*折扣率
dDAmt=DataCarry(dQty*dPrice*dDRate,2,0);
seArivdDAmt->Text=FloatToStr(dDAmt);
if(seArivdNAmt->ReadOnly == true)
{
//净额=数量*单价-折扣金额
dNAmt=DataCarry(dQty*dPrice-dDAmt,2,0);
seArivdNAmt->Text=FloatToStr(dNAmt);
}
else
{
if(seArivdNAmt->Text == "")
{
seArivdNAmt->Text="0";
dNAmt=0;
}
else
{
dNAmt=StrToFloat(seArivdNAmt->Text);
if(dNAmt < 0)
{
seArivdNAmt->Text="0";
dNAmt=0;
}
}
}
//税额=净额*税率
dTAmt=DataCarry(dNAmt*dTRate,2,0);
seArivdTAmt->Text=FloatToStr(dTAmt);
//合计=净额+税额
dAmt=DataCarry(dNAmt+dTAmt,2,0);
seArivdAmt->Text=FloatToStr(dAmt);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivdQtyExit(TObject *Sender)
{
//计算发票行各金额
CalculateAmt();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivhCodeExit(TObject *Sender)
{
if(CurrentState==caNormal && seArivhCode->Text != GetHeadValue("ArivhCode"))
{
comServer->LocateByKey(WideString(seArivhCode->Text));
DisplayBill();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::muAddDetailClick(TObject *Sender)
{
//来源于应收发票的红字发票不允许手工增行
if(scArivdDocType->ItemIndex == 3)
{
throw Exception("来源于应收发票的红字发票不允许手工增行,请使用生成功能");
}
TGenBaseForm::muAddDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::muEditDetailClick(TObject *Sender)
{
if(rbtArivdFrom_Create->Checked)
{
throw Exception("生成的发票行不允许手工修改");
}
TGenBaseForm::muEditDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::RefreshUpdateData(int MsgSrc,int MsgType)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::scArivdTaxCodeExit(TObject *Sender)
{
seArivdTRate->Text=scArivdTaxCode->ItemData[2];
CalculateAmt();
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArivh::BeforeCheck()
{
SetHeadValue("ArivhCheck",1);
SetHeadValue("ArivhChecker",g_sdUserCode);
SetHeadValue("ArivhCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArivh::BeforeUnCheck()
{
SetHeadValue("ArivhCheck",0);
SetHeadValue("ArivhChecker","");
SetHeadValue("ArivhCheckDate",NULL);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::seArivdDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
if(scArivdDocType->ItemData[1]=="1")
{
SqlStr="002[发货单号][行号]";
SqlStr+=" select Soghcode,SogdLine";
SqlStr+=" from sdSogh,sdSogd where Soghcode=Sogdcode ";
SqlStr+=" and Soghcheck=1 and Soghclose=0 and Soghcancel=0 ";
SqlStr+=" and SoghClient='"+scArivhClient->ItemData[1]+"' and SoghCurrency='"+scArivhCurrency->ItemData[1]+"' order by Soghcode";
p=new TfrmWnQuery(this,"发货单查询",SqlStr);
}
else
{
SqlStr="002[退货单号][行号]";
SqlStr+=" select SrethCode,SretdLine from sdSreth,sdSretd ";
SqlStr+=" where SrethCode=SretdCode and Srethcheck=1 and Srethclose=0 and Srethcancel=0 ";
SqlStr+=" and SrethClient='"+scArivhClient->ItemData[1]+"' and SrethCurrency='"+scArivhCurrency->ItemData[1]+"'order by Srethcode";
p=new TfrmWnQuery(this,"退货单查询",SqlStr);
}
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArivdDocCode->Text=p->ColData[1];
seArivdDocLine->Text =p->ColData[2];
}
delete p;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?