vHeJi:=FormatFloat('0.00',QryPrint1.FieldByName('yingShouJE').AsFloat);
ShareFunc.CapitalizeMoney(abs(StrToFloat(vHeJi)),false,vPrintHeJi);
IntHeJi:=IntToStr(trunc(abs(StrToFloat(vHeJi))));
for i:=0 to 3-Length(IntHeJi) do
vPrintHeJi:='零 '+vPrintHeJi;
//打印大写合计金额
if StrToFloat(vHeJi)<0 then Printer.Canvas.TextOut(VOffsetx+255,VOffsety+600,'负'+vPrintHeJi)
else Printer.Canvas.TextOut(VOffsetx+225,VOffsety+600,vPrintHeJi);
//打印核算项目
with QryPrint4 do
begin
while not Eof do
begin
vX:=FieldByName('ZuoBiaoX').AsInteger;
vY:=FieldByName('ZuoBiaoY').AsInteger;
if FieldByName('JinE').AsFloat=0 then
Printer.Canvas.TextOut(VOffsetx+vX,VOffsety+vY,'')
else
Printer.Canvas.TextOut(VOffsetx+vX,VOffsety+vY,FormatFloat('0.00',FieldByName('JinE').AsFloat));
QryPrint4.Next;
end;
end;
Printer.Canvas.font.size:=9;
//打印药品及费用明细
//Printer.Canvas.TextOut(580,170,'收费项目 数量 单价 金额 收费项目 数量 金额');
Printer.Canvas.TextOut(VOffsetx+1050,VOffsety+75,'单价');
// Printer.Canvas.TextOut(580,190,'--------------------------------------------');
Y := 110;
xh:=1;
while not QryPrint3.Eof do
begin
//打印序号
printer.canvas.textout(VOffsetx+655,VOffsety+Y,InttoStr(xh));
//打印药名
Printer.Canvas.TextOut(VOffsetx+680,VOffsety+Y,QryPrint3.FieldByName('YaoMing').AsString);
//打印规格
Printer.canvas.Textout(VOffsetx+820,VOffsety+Y,QryPrint3.FieldByName('GuiGe').AsString);
//打印单位
Printer.Canvas.TextOut(VOffsetx+870,VOffsety+Y,QryPrint3.FieldByName('danwei').AsString);
Printer.Canvas.TextOut(VOffsetx+1050,VOffsety+Y,QryPrint3.FieldByName('danjia').AsString);
//打印数量
Printer.Canvas.TextOut(VOffsetx+1100,VOffsety+Y,FormatFloat('0',QryPrint3.FieldByName('ShuLiang').AsFloat));//+Copy(QryPrint3.FieldByName('DanWei').AsString,0,2));
//Printer.Canvas.TextOut(850,Y,FormatFloat('0.00',QryPrint3.FieldByName('ShuLiang').AsFloat));
//打印单价
// Printer.Canvas.TextOut(VOffsetx+1050,VOffsety+Y,QryPrint3.FieldByName('danjia').AsString);
//打印金额
Printer.Canvas.TextOut(VOffsetx+1170,VOffsety+Y,FormatFloat('0.00',QryPrint3.FieldByName('JinE').AsFloat));
//打印比例
Printer.Canvas.TextOut(VOffsetx+1250,VOffsety+Y,FormatFloat('0.00',QryPrint3.FieldByName('ZiLiBL').AsFloat));
QryPrint3.Next ;
Y := Y + 25;
xh:= xh + 1;
end;
//取得医生编码
with SysDM.qryfree do
begin
close;
sql.clear;
sql.add(' select a.YiShengBM ');
sql.add(' from Out_Recipe a,Out_RecipeDetail b ');
sql.add(' where a.JiuZhenID=b.JiuZhenID and
a.ChuFangLH=b.ChuFangLH ');
sql.add(' and b.DanJuID=:DanJuID');
parambyname('DanJuID').asstring:=aDanJuID;
open;
vDocID:=FieldByName('YiShengBM').asstring;
Close;
Sql.Clear;
Sql.Add('SELECT XianJinZF, DangNianZF + LiNianZF AS ZhangHuZF,');
Sql.Add(' Temp11+Temp12-abs(DangNianZF + LiNianZF) AS ZhangHuYE,ZiFeiFY');
Sql.Add(' FROM Z_Out_Charge where DanJuID=:DanJuID');
parambyname('DanJuID').asstring:=aDanJuID;
open;
if IsEmpty then Raise Exception.Create('没有相关的结算信息,请通知管理员');
vGeRenZH:=FieldByName('ZhangHuZF').AsString;
vZhangHuYE:=FieldByName('ZhangHuYE').AsString;
vXiangJinZF:=FieldByName('XianJinZF').AsString;
vZiFeiFY:=FieldByName('ZiFeiFY').AsString;
end;
if SysDM.GetSysParam(pkSys_BillVersion)=1 then //浙江省
begin
VOffsetx:=SysDM.GetSysParam(pkOut_InvoiceOffset_x); //取发票水平偏移量
VOffsetY:=SysDM.GetSysParam(pkOut_InvoiceOffset_y); //取发票垂直偏移量
vHosTiTle:=SysDM.GetSysParam(pkSys_HospName); //取医院名称 vchangHua
vSignTiTle:=SysDM.GetSysParam(pkOut_InvoiceSignTiTle);//取公章标题 vchangHua
//浙江核算项目
QryPrint4.Close;
QryPrint4.ParamByName('DanJuID').AsString:=aDanJuID;
QryPrint4.Open;
//获得打印机的DeviceMode结构句柄
Printer.GetPrinter(pDevice,pDriver,pPort,hDMode);
//如果句柄为0,表示打印机没有装载
if hDMode=0 then
begin
Printer.PrinterIndex :=Printer.PrinterIndex ;
Printer.GetPrinter(pDevice,pDriver,pPort,hDMode);
end;
if hDMode<>0 then
begin
//根据TDeviceMode的句柄获得指向该结构的指针变量
PDMode:=GlobalLock(hDMode);
if PDMode<>Nil then
with PDMode^ do
begin
DMFields:=DMFields Or DM_PAPERLENGTH;
dmPaperLength:=1520;//设置打印页长 152
dmFields:=dmFields or DM_PAPERWIDTH;
dmPaperWidth:=1920;//设置打印页宽
end;
GlobalUnLock(hDMode);//解锁,释放内存
Printer.PrinterIndex :=Printer.PrinterIndex ;
end;
Printer.Canvas.font.name:='宋体';
Printer.BeginDoc;//开始打印
Printer.Canvas.font.size:=11;
DecodeDate(QryPrint1.FieldByName('DanJuRQ').AsDateTime, vYear, vMonth, vDay);
vDate:=' '+IntToStr(vYear)+' '+IntToStr(vMonth)+' '+IntToStr(vDay);
//打印病人姓名
Printer.Canvas.TextOut(VOffsetx+170,VOffsety+160,QryPrint1.FieldByName('XingMing').AsString);