pretd.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 321 行
CPP
321 行
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Pretd.h"
#include "Preth.h"
#include "wnquery.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmPretd *frmPretd;
//--------------------------------------------------------------------------
__fastcall TfrmPretd::TfrmPretd(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
: TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
InitControlGroup();
btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
__fastcall TfrmPretd::TfrmPretd(TComponent* Owner) : TStdBaseForm(Owner)
{
InitControlGroup();
btnOK->Enabled = false;
}
//----------------------------------------------------------------------------
void __fastcall TfrmPretd::btnOKClick(TObject *Sender)
{
double FVal,FPrice,FQty,FTax,FAmt;
int ErrNum;
try
{
StartWaitForm("正在生成退货单,请稍候...");
if(sgPretd->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(GetDetailValue("PretdLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgPretd->RowCount;i++)
{
if(sgPretd->Cells[1][i]=="√")
{
comServer->AddItem();
SetDetailValue("PretdCode",frmPreth->sePrethCode->Text);
SetDetailValue("PretdLine",AnsiString(j));
SetDetailValue("PretdPrecCode",sePretdPrecCode->Text);
SetDetailValue("PretdPrecdLine", sgPretd->Cells[2][i]);
SetDetailValue("PretdGoods", sgPretd->Cells[3][i]);
SetDetailValue("Goodsname", sgPretd->Cells[4][i]);
SetDetailValue("Goodsspec", sgPretd->Cells[5][i]);
SetDetailValue("PretdUnit", sgPretd->Cells[6][i]);
SetDetailValue("PretdConv", sgPretd->Cells[7][i]);
if(sgPretd->Cells[9][i] == "")
throw Exception("请输入退货数量");
SetDetailValue("PretdQty", sgPretd->Cells[9][i]);
if(sgPretd->Cells[10][i] == "")
throw Exception("请输入退货单价");
SetDetailValue("PretdPrice", sgPretd->Cells[10][i]);
FQty=sgPretd->Cells[9][i].ToDouble();
FPrice=sgPretd->Cells[10][i].ToDouble();
FVal=(FQty*FPrice)/(1+FPrethTaxRate);
FAmt=DataCarry(FVal,2,0);
FTax=DataCarry(FVal*FPrethTaxRate,2,0);
SetDetailValue("PretdAmt",AnsiString(FAmt));
SetDetailValue("PretdTaxAmt",AnsiString(FTax));
SetDetailValue("PretdLoc", sgPretd->Cells[11][i]);
SetDetailValue("PretdBatch", sgPretd->Cells[12][i]);
SetDetailValue("PretdSo", sgPretd->Cells[13][i]);
SetDetailValue("PretdSodLine", sgPretd->Cells[14][i]);
SetDetailValue("PretdState", "1");
SetDetailValue("PretdExes", 0);
SetDetailValue("PretdDesc","");
SetDetailValue("PretdClose",0);
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::InitControlGroup()
{
sgPretd->RowCount = 1;
sePretdPrecCode->Text="";
sePrethSupply->Text=frmPreth->sePrethSupply->Text;
sePrethSupply->Enabled=false;
FPrethSupply=frmPreth->sePrethSupply->ItemData[cbItem2];
sePrethCurrency->Text=frmPreth->sePrethCurrency->Text;
sePrethCurrency->Enabled=false;
FPrethCurrency=frmPreth->sePrethCurrency->ItemData[cbItem2];
sePrethRate->Text=frmPreth->sePrethEnrate->Text;
sePrethTax->Text=frmPreth->scPrethTaxCode->Text;
sePrethTax->Enabled=false;
FPrethTax=frmPreth->scPrethTaxCode->ItemData[cbItem2];
if(frmPreth->scPrethTaxCode->ItemData[cbItem3] == "")
FPrethTaxRate=0;
else
FPrethTaxRate=frmPreth->scPrethTaxCode->ItemData[cbItem3].ToDouble();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::FillGridWithData()
{
AnsiString ItemStr,s_SQL;
double d_PrecdQty;
TComResultSet * TempRes;
TempRes=new TComResultSet(Handle, g_ClientHandle);
TempRes->Close();
TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode ='10302' and parametervalue =1","parametercode");
s_SQL=AnsiString(" Select PrecdLine,PrecdGoods,PrecdUnit,PrecdConv,precdQty=PrecdQty-PrecdBQty,goodsname=isnull((select goodsname from sdgoods where goodscode=precdgoods),''),goodsspec=isnull((select goodsspec from sdgoods where goodscode=precdgoods),'')")
+AnsiString(", PrecdLoc,PrecdBatch,PrecdSo,PrecdSodLine,PrecdPrice,goodsbuyer,goodscode from sdPrecd,sdgoods where goodscode=precdgoods and PrecdCode='"+sePretdPrecCode->Text+"'")
+AnsiString(" and PrecdClose = 0 and PrecdQty-PrecdBQty>0 ");
if(TempRes->RecordCount >0)
s_SQL+=" and goodsbuyer = '"+g_sdUserCode+"'";
sgPretd->RowCount=1;
TComResultSet *RsPretd;
try
{
StartWaitForm("正在查询数据,请稍候......");
RsPretd=new TComResultSet(Handle, g_ClientHandle);
RsPretd->Open(s_SQL,"");
sgPretd->RowCount=1;
while( RsPretd->Eof == 0)
{
d_PrecdQty=StrToFloat(RsPretd->FieldByName("PrecdQty"));
if(d_PrecdQty > 0)
{
ItemStr="\t"+AnsiString("") +
"\t"+RsPretd->FieldByName("PrecdLine")+
"\t"+RsPretd->FieldByName("PrecdGoods")+
"\t"+RsPretd->FieldByName("Goodsname")+
"\t"+RsPretd->FieldByName("Goodsspec")+
"\t"+RsPretd->FieldByName("PrecdUnit")+
"\t"+RsPretd->FieldByName("PrecdConv")+
"\t"+RsPretd->FieldByName("PrecdQty")+
"\t"+RsPretd->FieldByName("PrecdQty")+
"\t"+RsPretd->FieldByName("PrecdPrice")+
"\t"+RsPretd->FieldByName("PrecdLoc")+
"\t"+RsPretd->FieldByName("PrecdBatch")+
"\t"+RsPretd->FieldByName("PrecdSo")+
"\t"+RsPretd->FieldByName("PrecdSodLine");
sgPretd->AddItem(ItemStr);
}
RsPretd->MoveNext();
}
RsPretd->Close();
}
__finally
{
EndWaitForm();
}
delete RsPretd;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::SetDetailValue(AnsiString fieldname,AnsiString value)
{
comServer->DataSet->SetDetailValue(fieldname,value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::sgPretdDblClick(TObject *Sender)
{
AnsiString SqlStr;
int ARow=sgPretd->Row;
if (ARow >0)
{
if(sgPretd->Col==1)
{
if (sgPretd->Cells[1][ARow] == "√")
{
sgPretd->Cells[1][ARow] = "";
for (int i=1;i<sgPretd->RowCount;i++)
{
if(sgPretd->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgPretd->Cells[1][ARow] = "√";
btnOK->Enabled = true;
}
}
else if(sgPretd->Col==11 && sgPretd->Cells[1][ARow] == "√")
{
SqlStr="002[货位代码][货位名称]select loccode,locname from sdLoc,sdlg ";
SqlStr+=" where lgLoccode=loccode and lggoodscode='"+sgPretd->Cells[3][ARow]+"' order by loccode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"货位查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
sgPretd->Cells[11][ARow]=p->ColData[1];
}
delete p;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::bbSelAllClick(TObject *Sender)
{
if(sgPretd->RowCount <=1 )
return;
for(int i=1;i<sgPretd->RowCount;i++)
sgPretd->Cells[1][i] = "√";
btnOK->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::bbSelNoneClick(TObject *Sender)
{
for(int i=1;i<sgPretd->RowCount;i++)
sgPretd->Cells[1][i] = "";
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::sePretdPrecCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="005[收货单号][收货日期][币种][税码][收货员]select prechcode,prechdate,currencyname,taxname,prechUser from sdprech,sdCurrency,sdtax";
SqlStr+=" where prechcurrency=currencycode and prechtaxcode=taxcode and prechcheck=1 and prechclose=0 and prechcancel=0 ";
SqlStr+=" and prechsupply='"+FPrethSupply+"' and prechcurrency='"+FPrethCurrency+"' ";
if(cbSameTax->Checked)
SqlStr+=" and prechtaxCode='"+FPrethTax+"' order by prechcode";
else
SqlStr+=" order by prechcode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"收货单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
sePretdPrecCode->Text=p->ColData[1];
FillGridWithData();
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::sgPretdSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if(sgPretd->Cells[1][ARow]=="√")
sgPretd->ReadOnly=false;
else
sgPretd->ReadOnly=true;
}
//---------------------------------------------
AnsiString __fastcall TfrmPretd::GetDetailValue(AnsiString fieldname)
{
Variant vTmp;
vTmp=comServer->DataSet->GetItemValue(fieldname);
if(vTmp.IsNull())
return "";
else
return AnsiString(vTmp);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?