📄 pretd.cpp
字号:
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Pretd.h"
#include "Preth.h"
#include "wnquery.h"
#include "func.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)
: 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(frmPreth->GetDetailValue(fiPretdLine));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgPretd->RowCount;i++)
{
if(sgPretd->Cells[1][i]=="√")
{
comServer->AddItem();
SetDetailValue(fiPretdCode,frmPreth->sePrethCode->Text);
SetDetailValue(fiPretdLine,AnsiString(j));
SetDetailValue(fiPretdPrecCode,sePretdPrecCode->Text);
SetDetailValue(fiPretdPrecdLine, sgPretd->Cells[2][i]);
SetDetailValue(fiPretdGoods, sgPretd->Cells[3][i]);
SetDetailValue(fiPretdUnit, sgPretd->Cells[4][i]);
SetDetailValue(fiPretdConv, sgPretd->Cells[5][i]);
if(sgPretd->Cells[7][i] == "")
throw Exception("请输入退货数量");
SetDetailValue(fiPretdQty, sgPretd->Cells[7][i]);
if(sgPretd->Cells[8][i] == "")
throw Exception("请输入退货单价");
SetDetailValue(fiPretdPrice, sgPretd->Cells[8][i]);
FQty=sgPretd->Cells[7][i].ToDouble();
FPrice=sgPretd->Cells[8][i].ToDouble();
FVal=(FQty*FPrice)/(1+FPrethTaxRate);
FAmt=DataCarry(FVal,2,0);
FTax=DataCarry(FVal*FPrethTaxRate,2,0);
SetDetailValue(fiPretdAmt,AnsiString(FAmt));
SetDetailValue(fiPretdTaxAmt,AnsiString(FTax));
SetDetailValue(fiPretdLoc, sgPretd->Cells[9][i]);
SetDetailValue(fiPretdBatch, sgPretd->Cells[10][i]);
SetDetailValue(fiPretdSo, sgPretd->Cells[11][i]);
SetDetailValue(fiPretdSodLine, sgPretd->Cells[12][i]);
SetDetailValue(fiPretdState, "1");
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->Cancel();
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;
s_SQL=AnsiString(" Select PrecdLine,PrecdGoods,PrecdUnit,PrecdConv,precdQty=PrecdQty-PrecdBQty,")
+AnsiString(" PrecdLoc,PrecdBatch,PrecdSo,PrecdSodLine,PrecdPrice from sdPrecd where PrecdCode='"+sePretdPrecCode->Text+"'")
+AnsiString(" and PrecdClose = 0 and PrecdQty-PrecdBQty>0 order by precdline");
sgPretd->RowCount=1;
TComResultSet *RsPretd;
try
{
StartWaitForm("正在查询数据,请稍候......");
RsPretd=NewResultSet();
RsPretd->Open(WideString(s_SQL),WideString(""));
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("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(int Index,AnsiString Value)
{
WriteItemValue(comServer,Index,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==9 && 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[9][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;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -