Membuat Struk Penjualan dengan Delphi

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;
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
        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 ...

0 Response to "Membuat Struk Penjualan dengan Delphi"

Post a Comment