Membuat Struk Penjualan dengan Delphi.Pasti semua tau struk penjualan
kan, yang sering ke minimarket pasti dong. Nah bagaimana kita bikin
struk sepeti itu dengan delphi ? bagi yang sudah tau pasti dah jago" y
ilmunya. :D Bedanya apa sih dengan Faktur penjualan ? tanya saja sama
mbah gogle, ane juga gx paham. Tapi yang pasti ane punya coding untuk
membuat Struk seperti yang ada di minimarket itu, jadi pas pengePrint an
itu sesuai banyaknya data yang akan diprint.
Kalau pake quick report (misal) jika kita Print maka
si kertas itu akan tetap menggulung aampe akhir kertas tapi ini tidak
dan si printer akan berhenti sesuai nyaknya data atau item. Akh panjang
lebar pasti sudah tau kan maksudnya.....
Ane nyoba pake Print LX-300, karena gx ada lagi yang lain..wkwkk....
Pertama Tambahkan di USES Winspool dan Printers ;
Buat Prosedure dan function,seperti dibawah ini..
Procedure cetak(Const line: String);
Function FormatString(Const VField, VItem : string; Const VLength : Integer; Const VSpace: Char): string;
Function FormatString(Const VField, VItem : string; Const VLength : Integer; Const VSpace: Char): string;
Lalu coding selanjutnya >>
function TFPenjualan.FormatString(Const VField, VItem : string ; Const VLength : Integer; Const VSpace: Char): string;
var
_SStart : String;
_SStop : String;
_Length : LongInt;
Begin
_SStart := VField;
_SStop := VItem;
_Length := Length(_SStart)+Length(_SStop);
Result := '';
While _Length + Length(Result) < VLength Do
Result := Result + VSpace;
Result := _SStart + Result + _SStop;
End;
Procedure TFPenjualan.cetak(Const line: string);
Var
BytesWritten : DWORD;
hPrinter, DevMod : THandle;
DocInfo : TDocInfo1;
Device, Drv, Port : Array[0..255] of char;
begin
Printer.PrinterIndex := -1;
Printer.GetPrinter(Device, Drv, Port, DevMod);
If Not WinSpool.OpenPrinter(@Device, hPrinter, nil) Then
Raise Exception.Create('Printer tidak ada ...');
Try
DocInfo.pDocName := 'Struk Penjualan';
DocInfo.pOutputFile := Nil;
DocInfo.pDatatype := 'RAW';
If StartDocPrinter(hPrinter,1,@DocInfo) = 0 Then
Abort;
Try
Printer.Canvas.Font.Size:=6;
If Not WritePrinter(hPrinter, @line[1], Length(line),BytesWritten) Then
Abort;
Finally
EndPagePrinter(hPrinter);
End;
Finally
Winspool.ClosePrinter(hPrinter);
End;
end;
Contoh Penggunaanya :
Procedure TFPenjualan.BitCetakClick(Sender: TObject);
Const Enter = #13+#10;
begin
if EdFaktur.Text='' then
else
Begin
ADOCetak1.Close;
ADOCetak1.SQL.Clear;
ADOCetak1.SQL.Add('Select*from tblpenjualan where nofaktur="'+EdFaktur.Text+'"');
ADOCetak1.Open;
ADOCetak2.Close;
ADOCetak2.SQL.Clear;
ADOCetak2.SQL.Add('Select*from tbldetailpenjualan where nofaktur="'+EdFaktur.Text+'" order by namabarang');
ADOCetak2.Open;
adocetak2.First;
mySQLTable1.Open;
cetak(''+ENTER);
cetak(mySQLTable1Nama_Perusahaan.Value+ENTER+ENTER);
Cetak('No Faktur : '+ADOCetak1NoFaktur.Value+Enter);
Cetak('No Pelanggan : '+ADOCetak1NoPelanggan.Value+Enter);
Cetak('Kasir : '+ADOCetak1namauser.Value+Enter);
Cetak('Tanggal : '+FormatDateTime('dd/MM/yyyy HH:MM:ss',now)+Enter);
Cetak('----------------------------------'+Enter);
Cetak('Barang QTY Harga Diskon Total'+Enter);
Cetak('----------------------------------'+Enter);
while Not adocetak2.Eof do
begin
cetak(ADOCetak2NamaBarang.Value+ENTER);
cetak(' '+inttostr(ADOCetak2Unit.Value)+' x '+FormatString('',FormatCurr('###,###,##0',ADOCetak2Harga.Value),5,' ')+
' '+FormatString(FloatToStr(ADOCetak2Diskon.Value),FormatCurr('###,###,##0',ADOCetak2SubTotal.Value),12,' ')+Enter);
adocetak2.next
end;
Cetak('---------------------------------'+Enter);
Cetak('Total'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Total.Value),9,' ')+Enter);
Cetak('Bayar'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Bayar.Value),9,' ')+Enter);
Cetak('Kembali'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Kembali.Value),9,' ')+Enter+Enter);
Cetak('Harga sudah termasuk PPN'+Enter);
Cetak('---------------------------------'+Enter);
Cetak('Terima Kasih atas kunjungan Anda'+Enter+Enter+Enter);
Cetak(Enter+Enter+Enter)
End;
end;
NB : ADOCetak1 > Menyeleksi Tabel Penjualan dengan nofaktur yang akan dicetak
ADOCetak2 > Menampilkan detail penjual sesuai nofaktur yang dicari AdoCetak1
Const Enter = #13+#10;
begin
if EdFaktur.Text='' then
else
Begin
ADOCetak1.Close;
ADOCetak1.SQL.Clear;
ADOCetak1.SQL.Add('Select*from tblpenjualan where nofaktur="'+EdFaktur.Text+'"');
ADOCetak1.Open;
ADOCetak2.Close;
ADOCetak2.SQL.Clear;
ADOCetak2.SQL.Add('Select*from tbldetailpenjualan where nofaktur="'+EdFaktur.Text+'" order by namabarang');
ADOCetak2.Open;
adocetak2.First;
mySQLTable1.Open;
cetak(''+ENTER);
cetak(mySQLTable1Nama_Perusahaan.Value+ENTER+ENTER);
Cetak('No Faktur : '+ADOCetak1NoFaktur.Value+Enter);
Cetak('No Pelanggan : '+ADOCetak1NoPelanggan.Value+Enter);
Cetak('Kasir : '+ADOCetak1namauser.Value+Enter);
Cetak('Tanggal : '+FormatDateTime('dd/MM/yyyy HH:MM:ss',now)+Enter);
Cetak('----------------------------------'+Enter);
Cetak('Barang QTY Harga Diskon Total'+Enter);
Cetak('----------------------------------'+Enter);
while Not adocetak2.Eof do
begin
cetak(ADOCetak2NamaBarang.Value+ENTER);
cetak(' '+inttostr(ADOCetak2Unit.Value)+' x '+FormatString('',FormatCurr('###,###,##0',ADOCetak2Harga.Value),5,' ')+
' '+FormatString(FloatToStr(ADOCetak2Diskon.Value),FormatCurr('###,###,##0',ADOCetak2SubTotal.Value),12,' ')+Enter);
adocetak2.next
end;
Cetak('---------------------------------'+Enter);
Cetak('Total'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Total.Value),9,' ')+Enter);
Cetak('Bayar'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Bayar.Value),9,' ')+Enter);
Cetak('Kembali'+' :'+FormatString('',FormatCurr('###,###,##0',ADOCetak1Kembali.Value),9,' ')+Enter+Enter);
Cetak('Harga sudah termasuk PPN'+Enter);
Cetak('---------------------------------'+Enter);
Cetak('Terima Kasih atas kunjungan Anda'+Enter+Enter+Enter);
Cetak(Enter+Enter+Enter)
End;
end;
NB : ADOCetak1 > Menyeleksi Tabel Penjualan dengan nofaktur yang akan dicetak
ADOCetak2 > Menampilkan detail penjual sesuai nofaktur yang dicari AdoCetak1
mySQLTable1 > Untuk Menampilkan data perusahaan/Toko
Yakin agan" pasti bisa mengutak-atiknya,sore" dah lelah nih gax bisa banyak bicara.
Title : Membuat Struk Penjualan dengan Delphi
Description : Membuat Struk Penjualan dengan Delphi.Pasti semua tau struk penjualan kan, yang sering ke minimarket pasti dong. Nah bagaimana kita bikin ...
Description : Membuat Struk Penjualan dengan Delphi.Pasti semua tau struk penjualan kan, yang sering ke minimarket pasti dong. Nah bagaimana kita bikin ...
0 Response to "Membuat Struk Penjualan dengan Delphi"
Post a Comment