📄 printticket.~pa
字号:
unit PrintTicket;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;
type
TfrmPrint = class(TForm)
cmdExit: TButton;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
txtPawnTicket: TEdit;
cmdPTicket: TButton;
cmdVTicket: TButton;
Label2: TLabel;
txtTicketCode: TEdit;
cmdPFp: TButton;
cmdVFp: TButton;
staPrintTicket: TStatusBar;
procedure cmdExitClick(Sender: TObject);
procedure cmdVTicketClick(Sender: TObject);
procedure cmdPTicketClick(Sender: TObject);
procedure cmdVFpClick(Sender: TObject);
procedure cmdPFpClick(Sender: TObject);
private
{ Private declarations }
procedure PrintTicket(TicketCode:String);
procedure PrintFP(TicketCode:String);
Function ConverBig(Money:Double):string;
public
{ Public declarations }
Function MoneyFormat(InputStr:string;BlankNum:integer):string;
end;
var
frmPrint: TfrmPrint;
FpStatus:string;
implementation
uses dmPawn, rptTicket, Msg, FpPrint;
{$R *.DFM}
Function TfrmPrint.MoneyFormat(InputStr:string;BlankNum:integer):string;
var
C:integer;
begin
Result:='';
for C:=1 to Length(InputStr) do
Result:=Result+InputStr[C]+StringOfChar(' ',BlankNum);
//Result:=format('%s',[Result]);
end;
//将数字金额转换为大写金额
Function TfrmPrint.ConverBig(Money:Double):string;
type
TUnitArray=array[0..9]of string;
TNumberArray=array[0..9]of string;
var
tempStr:string;
i:integer;
ThisMoney:Integer;
UnitArray:TUnitArray;
NumberArray:TNumberArray;
begin
for i:=0 to 9 do
begin
case i of
0:
begin
UnitArray[i]:='分';
NumberArray[i]:='零';
end;
1:
begin
UnitArray[i]:='角';
NumberArray[i]:='壹';
end;
2:
begin
UnitArray[i]:='元';
NumberArray[i]:='贰';
end;
3:
begin
UnitArray[i]:='拾';
NumberArray[i]:='叁';
end;
4:
begin
UnitArray[i]:='佰';
NumberArray[i]:='肆';
end;
5:
begin
UnitArray[i]:='仟';
NumberArray[i]:='伍';
end;
6:
begin
UnitArray[i]:='万';
NumberArray[i]:='陆';
end;
7:
begin
UnitArray[i]:='拾万';
NumberArray[i]:='柒';
end;
8:
begin
UnitArray[i]:='佰万';
NumberArray[i]:='捌';
end;
9:
begin
UnitArray[i]:='仟万';
NumberArray[i]:='玖';
end;
end; //end case
end; //end for
tempStr:='';
i:=0;
ThisMoney:=Trunc(Money*100);
while Trunc(ThisMoney/10)>0 do
begin
tempStr:=NumberArray[ThisMoney mod 10] + UnitArray[i] + tempStr;
ThisMoney:=Trunc(ThisMoney/10);
i:=i+1;
end;
tempStr:=NumberArray[ThisMoney mod 10] + UnitArray[i] + tempStr;
ConverBig:=tempStr;
end;
//打印当票
procedure TfrmPrint.PrintTicket(TicketCode:string);
var
Sql:string;
PreCode,PawnerName,Address,CerName,CerCode,Tel,Zip,LinkMan:string;
MonthRate,FeeRate,PawnMoney,FeeMoney,RealMoney:string;
CYear,CMonth,CDay:word;
CreateYear,CreateMonth,CreateDay:string;
DBeginYear,DBeginMonth,DBeginDay,DEndYear,DEndMonth,DEndDay:word;
XBeginYear,XBeginMonth,XBeginDay,XEndYear,XEndMonth,XEndDay:word;
XBYear,XBMonth,XBDay,XEYear,XEMonth,XEDay:string;
DBeginDate,DEndDate,XBeginDate,XEndDate:TDateTime;
FPawnMoney,FFeeMoney,FRealMoney:Double;
Counter,I:integer;
begin
Sql:='select h.PrePawnTicketCode,h.PawnerName,h.PawnerAddress,h.PostCode,h.CertificateName,';
Sql:=Sql+'h.CertificateCode,h.TelephoneCode,h.Linkman,h.MonthRate,';
Sql:=Sql+'h.FeeRate,h.TotalPawnMoney,h.SynthesizeFee,h.RealPayMoney,';
Sql:=Sql+'h.CreateDate,h.PawnBeginDate,h.PawnEndDate from PawnHead_Tbl as h ';
Sql:=Sql+'where h.PawnTicketCode=:PawnCode ';
with dmPawnFrm do
begin
dqHeadUn.Close;
dqHeadUn.SQL.Clear;
dqHeadUn.SQL.Add(Sql);
dqHeadUn.ParamByName('PawnCode').asstring:=TicketCode;
dqHeadUn.Open;
if dqHeadUn.IsEmpty=False then
begin
PawnerName:=dqHeadUn.FieldByName('PawnerName').Asstring;
Address:=dqHeadUn.FieldByName('PawnerAddress').Asstring;
Zip:=dqHeadUn.FieldByName('PostCode').Asstring;
CerName:=dqHeadUn.FieldByName('CertificateName').Asstring;
CerCode:=dqHeadUn.FieldByName('CertificateCode').Asstring;
Tel:=dqHeadUn.FieldByName('TelephoneCode').Asstring;
LinkMan:=dqHeadUn.FieldByName('LinkMan').Asstring;
MonthRate:=floattostr(dqHeadUn.FieldByName('MonthRate').asfloat)+'%';
//format('%3f',[dqHeadUn.FieldByName('MonthRate').asfloat])+'%';
FeeRate:=floattostr(dqHeadUn.FieldByName('FeeRate').asfloat)+'%';
//format('%3f',[dqHeadUn.FieldByName('FeeRate').asfloat])+'%';
PawnMoney:=format('%10d',[Trunc(dqHeadUn.FieldByName('TotalPawnMoney').asfloat*100)]);
FPawnMoney:=dqHeadUn.FieldByName('TotalPawnMoney').asfloat;
FeeMoney:=format('%8.2f',[dqHeadUn.FieldByName('SynthesizeFee').asfloat]);
FFeeMoney:= dqHeadUn.FieldByName('SynthesizeFee').asfloat;
RealMoney:=format('%8.2f',[dqHeadUn.FieldByName('RealPayMoney').asfloat]);
FRealMoney:=dqHeadUn.FieldByName('RealPayMoney').asfloat;
DecodeDate(dqHeadUn.FieldByName('CreateDate').Value,CYear,CMonth,CDay);
CreateYear:=inttostr(CYear);
CreateMonth:=inttostr(CMonth);
CreateDay:=inttostr(CDay);
//判断是否有原当票编号,即表示此当票有续当期限
PreCode:=dqHeadUn.FieldByName('PrePawnTicketCode').Asstring;
if PreCode<>'' then //当前的是续当
begin
//将取出的日期放入变量中
XBeginDate:=dqHeadUn.FieldByName('PawnBeginDate').Value;
XEndDate:=dqHeadUn.FieldByName('PawnEndDate').Value;
//再从历史头表中取出原当日期
Sql:='select PawnBeginDate,PawnEndDate from PHHistory_Tbl ';
Sql:=Sql+'where PawnTicketCode=:PawnCode and Status=''未赎'' ';
dqHeadUn.Close;
dqHeadUn.SQL.Clear;
dqHeadUn.SQL.Add(Sql);
dqHeadUn.ParamByName('PawnCode').asstring:=PreCode;
dqHeadUn.Open;
if dqHeadUn.IsEmpty=False then
begin
DBeginDate:=dqHeadUn.FieldByName('PawnBeginDate').Value;
DEndDate:=dqHeadUn.FieldByName('PawnEndDate').Value;
end;
end
else //当前的是典当
begin
DBeginDate:=dqHeadUn.FieldByName('PawnBeginDate').Value;
DEndDate:=dqHeadUn.FieldByName('PawnEndDate').Value;
XBeginDate:=0;
XEndDate:=0;
end;
//将典当日期或续当日期分解为年月日
DecodeDate(DBeginDate,DBeginYear,DBeginMonth,DBeginDay);
DecodeDate(DEndDate,DEndYear,DEndMonth,DEndDay);
if (XBeginDate<>0)and (XEndDate<>0) then
begin
DecodeDate(XBeginDate,XBeginYear,XBeginMonth,XBeginDay);
DecodeDate(XEndDate,XEndYear,XEndMonth,XEndDay);
XBYear:=inttostr(XBeginYear);
XBMonth:=inttostr(XBeginMonth);
XBDay:=inttostr(XBeginDay);
XEYear:=inttostr(XEndYear);
XEMonth:=inttostr(XEndMonth);
XEDay:=inttostr(XEndDay);
end
else
begin
XBMonth:=' ';
XBDay:=' ';
XEYear:=' ';
XEMonth:=' ';
XEDay:=' ';
end;
//当户及头表
tblPrintTicket.Close;
tblPrintTicket.EmptyTable;
tblPrintTicket.Open;
tblPrintTicket.Append;
tblPrintTicketPawnTicketCode.Value:=TicketCode;
tblPrintTicketPawnerName.Value:=PawnerName;
tblPrintTicketPawnerAddress.Value:=Address;
tblPrintTicketPostCode.Value:=Zip;
tblPrintTicketCertificateName.Value:=CerName;
tblPrintTicketCertificateCode.Value:=CerCode;
tblPrintTicketTelephoneCode.Value:=Tel;
tblPrintTicketLinkMan.Value:=LinkMan;
tblPrintTicketMonthRate.Value:=MonthRate;
tblPrintTicketFeeRate.Value:=FeeRate;
tblPrintTicketTotalPawnMoney.Value:=PawnMoney;
//大写数据
tblPrintTicketTotalPawnMoneyBig.Value:=ConverBig(FPawnMoney);
tblPrintTicketSynthesizeFeeBig.Value:=ConverBig(FFeeMoney);
tblPrintTicketRealPayMonthBig.Value:=ConverBig(FRealMoney);
tblPrintTicketCreateDateYear.Value:=CreateYear;
tblPrintTicketCreateDateMonth.Value:=CreateMonth;
tblPrintTicketCreateDateDay.Value:=CreateDay;
tblPrintTicketPawnBeginDateYear.Value:=inttostr(DBeginYear);
tblPrintTicketPawnBeginDateMonth.Value:=inttostr(DBeginMonth);
tblPrintTicketPawnBeginDateDay.Value:=inttostr(DBeginDay);
tblPrintTicketPawnEndDateYear.Value:=inttostr(DEndYear);
tblPrintTicketPawnEndDateMonth.Value:=inttostr(DEndMonth);
tblPrintTicketPawnEndDateDay.Value:=inttostr(DEndDay);
tblPrintTicketRePawnBeginDateYear.Value:=XBYear;
tblPrintTicketRePawnBeginDateMonth.Value:=XBMonth;
tblPrintTicketRePawnBeginDateDay.Value:=XBDay;
tblPrintTicketRePawnEndDateYear.Value:=XEYear;
tblPrintTicketRePawnEndDateMonth.Value:=XEMonth;
tblPrintTicketRePawnEndDateDay.Value:=XEDay;
tblPrintTicket.Post;
//从细表中取出此当票的当物信息
Sql:='select d.PawnName,d.PawnSpec,d.PawnNumber,d.AppriseValue,d.DiscountRate,';
Sql:=Sql+'d.PawnMoney from PawnDetail_Tbl as d where d.PawnTicketCode=:PawnCode ';
dqDetailUn.Close;
dqDetailUn.SQL.Clear;
dqDetailUn.SQL.Add(Sql);
dqDetailUn.ParamByName('PawnCode').Asstring:=TicketCode;
dqDetailUn.Open;
if dqDetailUn.IsEmpty=False then
begin
tblTicketDetail.Close;
tblTicketDetail.EmptyTable;
tblTicketDetail.Open;
dqDetailUn.First;
Counter:=0;
while not dqDetailUn.Eof do
begin
//当物
Counter:=Counter+1;
tblTicketDetail.Append;
tblTicketDetailPawnTicketCode.Value:=TicketCode;
tblTicketDetailPawnName.Value:=dqDetailUn.FieldByName('PawnName').Asstring;
tblTicketDetailPawnSpec.Value:=dqDetailUn.FieldByName('PawnSpec').Asstring;
tblTicketDetailPawnNumber.Value:=dqDetailUn.FieldByName('PawnNumber').Asstring;
tblTicketDetailMonthRate.Value:=MonthRate;
tblTicketDetailFeeRate.Value:=FeeRate;
tblTicketDetailAppriseValue.Value:=format('%8.2f',[dqDetailUn.FieldByName('AppriseValue').asfloat]);
tblTicketDetailDiscountRate.Value:=floattostr(dqDetailUn.FieldByName('DiscountRate').asfloat)+'%';
//format('%3f',[dqDetailUn.FieldByName('DiscountRate').asfloat])+'%';
tblTicketDetailPawnMoney.Value:=format('%10d',[Trunc(dqDetailUn.FieldByName('PawnMoney').asfloat*100)]);
tblTicketDetail.Post;
dqDetailUn.Next;
end;
if Counter<3 then
begin
case Counter of
1: //添加两条空记录
begin
for I:=1 to 2 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -