1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
const
escNewLine = AnsiChar(10); // New line (LF line feed)
escUnerlineOn = AnsiChar(27) + AnsiChar(45) + AnsiChar(1); // Unerline On
escUnerlineOnx2 = AnsiChar(27) + AnsiChar(45) + AnsiChar(2); // Unerline On x 2
escUnerlineOff = AnsiChar(27) + AnsiChar(45) + AnsiChar(0); // Unerline Off
escBoldOn = AnsiChar(27) + AnsiChar(69) + AnsiChar(1); // Bold On
escBoldOff = AnsiChar(27) + AnsiChar(69) + AnsiChar(0); // Bold Off
escNegativeOn = AnsiChar(29) + AnsiChar(66) + AnsiChar(1); // White On Black On'
escNegativeOff = AnsiChar(29) + AnsiChar(66) + AnsiChar(0); // White On Black Off
esc8CpiOn = AnsiChar(29) + AnsiChar(33) + AnsiChar(16); // Font Size x2 On
esc8CpiOff = AnsiChar(29) + AnsiChar(33) + AnsiChar(0); // Font Size x2 Off
esc16Cpi = AnsiChar(27) + AnsiChar(77) + AnsiChar(48); // Font A - Normal Font
esc20Cpi = AnsiChar(27) + AnsiChar(77) + AnsiChar(49); // Font B - Small Font
escReset = AnsiChar(27) + AnsiChar(64); //AnsiChar(27) + AnsiChar(77) + AnsiChar(48); // Reset Printer
escFeedAndCut = AnsiChar(29) + AnsiChar(86) + AnsiChar(65)+ AnsiChar(20); // Partial Cut and feed
escFormFeed = AnsiChar(12);
escAlignLeft = AnsiChar(27) + AnsiChar(97) + AnsiChar(48); // Align Text to the Left
escAlignCenter = AnsiChar(27) + AnsiChar(97) + AnsiChar(49); // Align Text to the Center
escAlignRight = AnsiChar(27) + AnsiChar(97) + AnsiChar(50); // Align Text to the Right
gsFeedandCut = AnsiChar(29) + AnsiChar(86) + AnsiChar(48) ;
...
procedure TDatas.imprimerticket(const numero : integer=0);
var i : integer;
hPrinter: THandle;
DocInfo: TDocInfo1;
dwBytesWritten: DWord;
DocumentDataAnsi,s: AnsiString;
d : tdateTime;
total,tva : currency;
begin
OpenPrinter(PChar(parametres.Imprimante), hPrinter, nil);
DocInfo.pOutputFile:= nil;
DocInfo.pDatatype:= 'RAW';
DocInfo.pDocName:= PChar('Ticket '+Numero.ToString);
StartDocPrinter(hPrinter, 1, @DocInfo);
StartPagePrinter(hPrinter);
fdlignesTicket.Open('',[numero]);
if fdLignesTicketDATE_VENTE.IsNull
then d:=now
else d:=fdLignesTicket.FieldByName('DATE_VENTE').AsDateTime;
EnteteTicket(hprinter,d,numero.ToString);
{ imprimer lignes}
total:=0;
tva:=0;
while not fdLignesTicket.eof do
begin
if FDLignesTicketSOLDE.AsString='N' then s:=' ' else s:=AnsiChar(169);
s:=s+fdLignesTicketMODELE.asString+'-'+fdLignesTicketASSORTIMENT.AsString+' '+fdLignesTicketPOINTURE.AsString;
s:=s+esc20Cpi+escAlignRight+format('%3.2f',[fdlignesTicketPRIX_TTC.asCurrency])+escAlignLeft;
DocumentDataAnsi := esc20Cpi+s+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
DocumentDataAnsi := esc20Cpi+fdlignesTicketDESCRIPTION.asString+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
if FDLignesTicketREMISE.AsCurrency>0 then
begin
DocumentDataAnsi := esc20Cpi+escAlignRight+Format('Remise -%3.2f',[FDLignesTicketREMISE.ascurrency])+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
end;
DocumentDataAnsi :=escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
total:=total+fdlignesTicketPRIX_TTC.asCurrency-fdlignesTicketRemise.asCurrency;
tva:=tva+((fdlignesTicketPRIX_TTC.asCurrency-fdlignesTicketRemise.asCurrency)*FDLignesTicketTAUX_TVA.AsCurrency/100);
fdlignesTicket.Next;
end;
DocumentDataAnsi := esc20Cpi+escAlignRight+StringofChar('-',20)+escNewLine+escAlignLeft;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
documentDataAnsi := esc16Cpi+escBoldOn+escAlignCenter+'TOTAL'+escAlignRight+format('%3.2f',[total])+escboldoff+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
documentDataAnsi := esc16Cpi+escAlignCenter+'Dont T.V.A.'+escAlignRight+format('%3.2f',[tva])+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
documentDataAnsi := escNewLine+escNewLine;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
DocumentDataAnsi := escFeedAndCut;
WritePrinter(hPrinter,@DocumentDataAnsi[1],length(DocumentDataAnsi),dwBytesWritten);
DocumentDataAnsi :=chr(13);
WritePrinter(hPrinter,@DocumentDataAnsi[1],1,dwBytesWritten);
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
end; |
Partager