Pembelian report

Pembelian  Barang merupakan salah satu proses bagi pemenuhan kebutuhan barang yang harus tetap terkontrol datanya , karena itu dibutuhkan laporan pembelian .

Terlampir saya informasikan Coding untuk proses laporan pembelian

#include “minigui.ch”
#include “inkey.ch”
#include “miniprint.ch”

procedure POLAP()

if !iswindowactive (POLAP)

SET DATE ITALIA
set browsesync on
set century on
set navigation extended

Define window POLAP ;
at 30,30 ;
Width 650 ;
Height 460 ;
on init bukaPOLAP();
ON RELEASE dbcloseall();
child  ;
nomaximize;
NOMINIMIZE

@ 20,30 frame rptgl1;
caption “laporan transaksi pembelian “;
width 570         ;
height 370 ;
transparent

DEFINE IMAGE jos
ROW 60
COL 15
WIDTH 200
HEIGHT 480
PICTURE ‘D:\ani-free.gif’
END IMAGE

@ 100,50 label stgl1_lbl Value ‘Tanggal ‘;
font “arial” size 12 ;
width 250  ;
height 30 ;
transparent

@ 140,50 label stgl2_lbl Value ‘Tanggal ‘;
font “arial” size 12 ;
width 250  ;
height 30 ;
transparent

define datepicker stanggal1
row 100
col 200

end datepicker

define datepicker stanggal2
row 140
col 200

end datepicker

@ 220,400 frame POLAP;
caption “pilihan proses cetak”;
width 160         ;
height 150 ;
transparent

DEFINE IMAGE POLAP1
ROW 250
COL 420
WIDTH 20
HEIGHT 30
PICTURE ‘D:\YOKATA\ICO\PRINT.ICO’
WHITEBACKGROUND .F.
ON CLICK { POLAPcetak() }
END IMAGE

DEFINE IMAGE POLAP2
ROW 300
COL 420
WIDTH 20
HEIGHT 30
PICTURE ‘D:\YOKATA\ICO\EXCEL16.BMP’
WHITEBACKGROUND .t.

END IMAGE

@ 250,460 buttonex  KUNCI;
caption ‘Ceta&k Data ‘;
height 30   ;
width  80 ;
BACKCOLOR {128,255,0};
on click { POLAPcetak() }

@ 300,460 buttonex CETAK;
caption ‘Exsport &XLS ‘;
height 30   ;
BACKCOLOR {128,128,0};
width  80

end window

center window POLAP
activate window POLAP

Endif
return nil

PROCEDURE bukaPOLAP

RddSetDefault(“DBFNTX”)   //standar clipper-harbour
request dbfntx

IF opentables(cDRV+”GLTBL”,.F.)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”TBLWMAS”,.F.)
SET INDEX TO (cDRV+”TBLWMAS”)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”SUPLIER”,.F.)
SET INDEX TO (cDRV+”SUPLIER”)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”KURS”,.F.)
SET INDEX TO (cDRV+”KURS”)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”INTRAN3″,.F.)
SET INDEX TO (cDRV+”INTRAN31″)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”INVTBL”,.F.)
SET INDEX TO (cDRV+”INVTBL”)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”INTRAN2″,.F.)
SET INDEX TO (cDRV+”INTRAN2″)
ELSE
RETURN
ENDIF

IF OPENTABLES(cDRV+”INTRAN1″,.F.)
SET INDEX TO (cDRV+”INTRAN11″)
ELSE
RETURN
ENDIF

RETURN

function POLAPcetak()

Local nday    := Day(POLAP.stanggal1.value)
Local nmonth  := Month(POLAP.stanggal1.value)
Local nyear   := Year(POLAP.stanggal1.value)
Local SKODE   := “PO”
Local SKD_WIL := SPACE(2)

Local i, nCOPIES, lijn, periode
Local cPrinter, bladnum

Local cNamapt  := gltbl->Namapt
Local cAlamat1 := gltbl->Alamat1
Local cAlamat2 := gltbl->Alamat2
Local cHeader  := “LAPORAN PURCHASE ORDER BARANG ”

sbln        := strzero(nmonth,2)
xtanggal1   := POLAP.stanggal1.value
xtanggal2   := POLAP.stanggal2.value

nCOPIES := 1
baris   := 55
shal    := 0
mkolom  := 54

cPrinter := GetPrinter()
If Empty (cPrinter)
Return
EndIf

SELECT PRINTER cPrinter ;
ORIENTATION PRINTER_ORIENT_LANDSCAPE ;
PAPERSIZE   PRINTER_PAPER_LEGAL ;
COPIES      nCOPIES ;
QUALITY     PRINTER_RES_HIGH;
PREVIEW

START PRINTDOC NAME “POLAP”
START PRINTPAGE

SW:=TJUMLAH:=XJUMLAH:=SSAT1:=SSAT2:=SSAT3:=SSAT4:=I:=0

SELECT INTRAN1
SET ORDER TO 1
DBSEEK(SKODE+SKD_WIL+DTOS(XTANGGAL1))

mPageNo := 0
kpageno := 0

DO WHILE .NOT. EOF() .AND. SKODE+SKD_WIL == KODE+KD_WIL .AND. TANGGAL >= XTANGGAL1 .AND. TANGGAL <= XTANGGAL2

IF baris>=190 .OR. mPageNo=0
mPageNo++
kpageno = kpageno + mpageno
IF mPageNo>1
&& cetak garis vertical halaman

@ baris,03 PRINT LINE TO mkolom,03 PENWIDTH 0.1
@ baris,13 PRINT LINE TO mkolom,13 PENWIDTH 0.1
@ baris,39 PRINT LINE TO mkolom,39 PENWIDTH 0.1   &&noorder
@ baris,58 PRINT LINE TO mkolom,58  PENWIDTH 0.1 &&nonota
@ baris,88  PRINT LINE TO mkolom,88  PENWIDTH 0.1 &&term
@ baris,138 PRINT LINE TO mkolom,138 PENWIDTH 0.1     &&tanggal
@ baris,190 PRINT LINE TO mkolom,190 PENWIDTH 0.1    &&AWAL ENDING
@ baris,215 PRINT LINE TO mkolom,215 PENWIDTH 0.1   && n<30 AWAL
@ baris,245 PRINT LINE TO mkolom,245 PENWIDTH 0.1   && n<30 AWAL
@ baris,273 PRINT LINE TO mkolom,273 PENWIDTH 0.1   && n<30 AWAL
@ baris,308 PRINT LINE TO mkolom,308 PENWIDTH 0.1   && n<30 AWAL
@ baris,348 PRINT LINE TO mkolom,348 PENWIDTH 0.1   && n<30 AWAL

//Baris +=5
@ baris,03 print line to baris,348 penwidth 0.1
baris += 5
@ baris,55 PRINT “Lanjut ke Halaman: “+LTRIM(STR(mPageNo))
baris  := 55
mkolom := 54

END PRINTPAGE
START PRINTPAGE

ENDIF
kpageno := (kpageno/mpageno)

@ 10,270 PRINT “Tanggal Cetak : “+dtoc(DATE())
@ 15,270 PRINT “Page: “+LTRIM(STR(mPageNo))    //+” of “+ltrim(str(kpageno))     //RIGHT
@ 10,15 PRINT cNamapt size 8 Bold
@ 15,15 PRINT cAlamat1 size 6
@ 18,15 PRINT cAlamat2 size 6
@ 25,170 print cHeader FONT “COURIER NEW” SIZE 18 BOLD CENTER
@ 35,132 print “For Periode : “+dtoc(xtanggal1)+” S/D “+ DTOC(XTANGGAL2)

&& Header Judul

@ 42,04  print line to 42,348 penwidth 0.2

@ 45,05  print ” NO.”
@ 45,15  print ” Nomer PO   ”
@ 45,40  print ” Tanggal ”
@ 50,40  print ”  P O    ”
@ 45,60  print ” No.Purchase ”
@ 50,60  print ”    Order      ”
@ 45,90  print ” Nama Supplier ”
@ 45,140 print ” Nama Barang  ”
@ 45,190 print ” Jumlah Barang ”
@ 45,220 print ” Harga Barang ”
@ 45,250 PRINT ” Kurs Uang ”
@ 50,250 PRINT ”  ( Rp.)   ”
@ 45,280 Print ” PPN(Vat In) Rp.”
@ 45,320 print ” Jumlah (Rp.) ”

@ 54,04  print line to 54,348 penwidth 0.2

&& cetak garis vertical u/ HEADER

@ 42,03 PRINT LINE TO 54,03 PENWIDTH 0.1          && 1    && awal
@ 42,13 PRINT LINE TO 54,13 PENWIDTH 0.1          && 2    && akhir nomer
@ 42,39 PRINT LINE TO 54,39 PENWIDTH 0.1          && 3    && akhir lpb
@ 42,58  PRINT LINE TO 54,58   PENWIDTH 0.1      && 4     && akhir tgl
@ 42,88  PRINT LINE TO 54,88   PENWIDTH 0.1      && 5     && ending PO
@ 42,138 PRINT LINE TO 54,138  PENWIDTH 0.1      && 6     && ending nama suplier
@ 42,190 PRINT LINE TO 54,190 PENWIDTH 0.1       && 7      &&ending nama barang
@ 42,215 PRINT LINE TO 54,215 PENWIDTH 0.1       && 8      && jumlah barng
@ 42,245 PRINT LINE TO 54,245 PENWIDTH 0.1       && 9      && harga barang
@ 42,273 PRINT LINE TO 54,273 PENWIDTH 0.1       && 10   && kurs uang
@ 42,308 PRINT LINE TO 54,308 PENWIDTH 0.1       && 11  total
@ 42,348 PRINT LINE TO 54,348 PENWIDTH 0.1       && 11  total
&& 8 ENDING

ENDIF

FL1   := 0
//  BARIS := 55

DO WHILE !EOF() .AND. SKODE+SKD_WIL == KODE+KD_WIL .AND.  BARIS <= 189 .AND. ;
TANGGAL >= XTANGGAL1 .AND. TANGGAL <= XTANGGAL2

STANGGAL := TANGGAL
SNONOTA  := NONOTA
SORDER   := ORDER
SKD_PT   := KD_PT
SSALES   := SALES
SJTEMPO  := JTEMPO
SPPN     := PPN
SDISC    := DISC

SNMPT    := SUBSTR((SUPLIER->(DBSEEK(“S”+SKD_PT)),SUPLIER->NM_WIL),1,25)
SNMSALES := SUBSTR((TBLWMAS->(DBSEEK(“M”+SSALES)),TBLWMAS->NM_WIL),1,10)

FL :=0

SELECT INTRAN2
IF SW == 0
SEEK SKODE+SNONOTA
ENDIF

DO WHILE .NOT. EOF() .AND. SKODE+SNONOTA == KODE+NONOTA    .AND. BARIS <= 189

SELECT INTRAN2
SKDBRG   := KDBRG
SNMBRG   := INVTBL->(DBSEEK(SKDBRG),INVTBL->NMBRG)
SKEMASAN := INVTBL->(DBSEEK(SKDBRG),INVTBL->KEMASAN)
SSATUAN  := INVTBL->(DBSEEK(SKDBRG),INVTBL->SATUAN)
SPACK2   := INVTBL->(DBSEEK(SKDBRG),INVTBL->PACK2)
SQUANTK  := QUANTK
SQUANTP  := QUANTP
SHARGA   := HARGA
SMATA    := MATA
SJENIS   := JENIS
NHARGA   := INTRAN2->HARGA

IF SMATA <> “I”

STGLKU   := TANGGAL
SBUL     := SUBSTR(DTOS(STGLKU),5,2)
STAH     := SUBSTR(DTOS(STGLKU),1,4)
sHR      := VAL(substr(dtos(STGLKU),7,2))
SELECT KURS
DBSEEK(SBUL+STAH)
IF !FOUND()
IF ALERT(“KURS TIDAK ADA DI TABEL ?”, {“Yes”,”No”},”w+/b”) == 2
LOOP
ENDIF
ENDIF
NKURSX  := 0

DO CASE
CASE STGLKU>=KURS->TGL1A .AND. STGLKU<=KURS->TGL1B
NKURSX := KURS->mINGGU1
CASE STGLKU>=KURS->TGL2A .AND. STGLKU<=KURS->TGL2B
NKURSX := KURS->mINGGU2
CASE STGLKU>=KURS->TGL2A .AND. STGLKU<=KURS->TGL3B
NKURSX := KURS->mINGGU3
CASE STGLKU>=KURS->TGL4A .AND. STGLKU<=KURS->TGL4B
NKURSX := KURS->mINGGU4
CASE STGLKU>=KURS->TGL5A .AND. STGLKU<=KURS->TGL5B
NKURSX := KURS->mINGGU5
ENDCASE

XHARGA   := IIF(SMATA==”U”,NHARGA*NKURSX,NHARGA)

IF SJENIS = 1
SJUMLAH  := (SQUANTK*XHARGA)+(SQUANTP *(XHARGA/SPACK2))
ELSE
SJUMLAH  := (SQUANTK*SPACK2*XHARGA)+(SQUANTP *XHARGA)
ENDIF

DDISC    := IIF((SDISC)<100,((SDISC)*SJUMLAH/100),(SDISC))
DPPN     := (SJUMLAH-DDISC)*((SPPN/100))
SJUMLAH  := SJUMLAH-DDISC+DPPN

XJUMLAH   := XJUMLAH + SJUMLAH
TJUMLAH   := TJUMLAH + SJUMLAH

ELSE

XHARGA   := NHARGA
IF JENIS == 1
SJUMLAH  := (SQUANTK*XHARGA)+(SQUANTP *(XHARGA/SPACK2))
ELSE
SJUMLAH  := (SQUANTK*SPACK2*XHARGA)+(SQUANTP *XHARGA)
ENDIF

DDISC    := IIF((SDISC)<100,((SDISC)*SJUMLAH/100),(SDISC))
DPPN     := (SJUMLAH-DDISC)*((SPPN/100))
SJUMLAH  := SJUMLAH-DDISC+DPPN

XJUMLAH   := XJUMLAH + SJUMLAH
TJUMLAH   := TJUMLAH + SJUMLAH

ENDIF

I++

FF := { || “| “+TRANSFORM(NO,”999.”)+”  “+SNONOTA+”  “+DTOC(STANGGAL)+”  “+SORDER+”  “+SKD_PT+” “+SNMPT+”  “+DTOC(SJTEMPO)+”  ” }
GG := { || SNMBRG+”  “}
HH := { || TRANS((SQUANTK*SPACK2)+SQUANTP,”9,999,999.99″)+”  “+;
IIF(SHARGA==0,SPACE(9)+”-“,TRANSFORM(SHARGA,”999,999.99″))+”  “+;
IIF(SMATA==”I”,SPACE(9)+”-“,TRANSFORM(NKURSX,”999,999.99″))+”  “+;
IIF(DPPN==0,SPACE(12)+”-“,TRANSFORM(DPPN,”99,999,999.99″))+”  “}
II := { || IIF(SJUMLAH==0,SPACE(13)+”-“,TRANSFORM(SJUMLAH,”99,999,999,999.99″))+”     | “}

BARIS := BARIS + 5

IF FL==0
SHAL := SHAL + 1

@ BARIS, 05 PRINT transform(shal,”9999″) SIZE 7
@ BARIS, 15 PRINT substr(SNONOTA,1,15) SIZE 7
@ BARIS, 40 PRINT    DTOC(STANGGAL) SIZE 7
@ BARIS, 65 PRINT substr(SORDER,1,15) SIZE 7
@ BARIS, 90  PRINT SNMPT  SIZE 7
@ BARIS, 140 PRINT SNMBRG SIZE 7
@ BARIS, 210 PRINT TRANS((SQUANTK*SPACK2)+SQUANTP,”9,999,999.99″) SIZE 7 RIGHT
@ BARIS, 240 PRINT IF(SHARGA==0,SPACE(13)+”-“,TRANSFORM(SHARGA,”999,999,999.99″)) SIZE 7 RIGHT
@ BARIS, 270 PRINT IF(SMATA==”I”,SPACE(9)+”-“,TRANSFORM(NKURSX,”999,999.99″)) size 7 right
@ BARIS, 300 PRINT IF(DPPN==0,SPACE(12)+”-“,TRANSFORM(DPPN,”99,999,999.99″)) SIZE 7 RIGHT
@ BARIS, 340 PRINT IF(SJUMLAH==0,SPACE(13)+”-“,TRANSFORM(SJUMLAH,”99,999,999,999.99″)) SIZE 7 RIGHT

ELSE

@ BARIS, 140 PRINT SNMBRG SIZE 7
@ BARIS, 210 PRINT TRANS((SQUANTK*SPACK2)+SQUANTP,”9,999,999.99″) SIZE 7 RIGHT
@ BARIS, 240 PRINT IF(SHARGA==0,SPACE(13)+”-“,TRANSFORM(SHARGA,”999,999,999.99″)) SIZE 7 RIGHT
@ BARIS, 270 PRINT IF(SMATA==”I”,SPACE(9)+”-“,TRANSFORM(NKURSX,”999,999.99″)) size 7 right
@ BARIS, 300 PRINT IF(DPPN==0,SPACE(12)+”-“,TRANSFORM(DPPN,”99,999,999.99″)) SIZE 7 RIGHT
@ BARIS, 340 PRINT IF(SJUMLAH==0,SPACE(13)+”-“,TRANSFORM(SJUMLAH,”99,999,999,999.99”)) SIZE 7 RIGHT

ENDIF

//  BARIS := BARIS + 5
FL:=1
SELECT INTRAN2
DbSkip()
ENDDO

SELECT INTRAN2

IF SKODE+SNONOTA == KODE+NONOTA
SW := 1
ELSE
IF I > 1
SJUMLAH := TJUMLAH
BARIS := BARIS + 5
@ baris,308 print line to baris,348 penwidth 0.1
@ BARIS, 285 PRINT “SUBTOTAL ”
@ baris, 340 print IF(SJUMLAH==0,SPACE(13)+”-“,TRANSFORM(SJUMLAH,”99,999,999,999.99”)) SIZE 7 RIGHT
BARIS := BARIS + 5
@ baris,308 print line to baris,348 penwidth 0.1
ENDIF
SW :=I:=TJUMLAH:= 0
SELECT INTRAN1
DbSkip()
ENDIF
SELECT INTRAN1
ENDDO
SELECT INTRAN1
IF EOF() .OR. .NOT. (SKODE+SKD_WIL== KODE+KD_WIL .AND. TANGGAL>= xTANGGAL1 .AND. TANGGAL<= xTANGGAL2)

@ baris,03 PRINT LINE TO mkolom,03 PENWIDTH 0.1
@ baris,13 PRINT LINE TO mkolom,13 PENWIDTH 0.1
@ baris,39 PRINT LINE TO mkolom,39 PENWIDTH 0.1   &&noorder
@ baris,58 PRINT LINE TO mkolom,58  PENWIDTH 0.1 &&nonota
@ baris,88  PRINT LINE TO mkolom,88  PENWIDTH 0.1 &&term
@ baris,138 PRINT LINE TO mkolom,138 PENWIDTH 0.1     &&tanggal
@ baris,190 PRINT LINE TO mkolom,190 PENWIDTH 0.1    &&AWAL ENDING
@ baris,215 PRINT LINE TO mkolom,215 PENWIDTH 0.1   && n<30 AWAL
@ baris,245 PRINT LINE TO mkolom,245 PENWIDTH 0.1   && n<30 AWAL
@ baris,273 PRINT LINE TO mkolom,273 PENWIDTH 0.1   && n<30 AWAL
@ baris,308 PRINT LINE TO mkolom,308 PENWIDTH 0.1   && n<30 AWAL
@ baris,348 PRINT LINE TO mkolom,348 PENWIDTH 0.1   && n<30 AWAL

@ Baris,04  print line to baris,348 penwidth 0.2

IF .NOT. XJUMLAH == 0
SJUMLAH := XJUMLAH
@ baris,308 print line to baris,348 penwidth 0.1
@ baris,308 PRINT LINE TO mkolom,308 PENWIDTH 0.1   && n<30 AWAL
@ baris,348 PRINT LINE TO mkolom,348 PENWIDTH 0.1   && n<30 AWAL
BARIS := baris + 5
@ BARIS, 285 PRINT “T O T A L ”
@ baris, 340 print IF(SJUMLAH==0,SPACE(13)+”-“,TRANSFORM(SJUMLAH,”99,999,999,999.99”)) SIZE 7 RIGHT
BARIS := baris + 5
@ baris,308 print line to baris,348 penwidth 0.1
ENDIF
ENDIF
ENDDO

END PRINTPAGE
END PRINTDOC

return

 

4 Tanggapan

  1. Kang Mas Priadi yang guannteenggg……,

    kalau bisa, statement2 untuk membuka file di sederhanakan menggunakan array atau fungsi khusus aja. soalnya kalau ada file yg gagal dibuka dan langsung RETURN, file yg telah sukses dibuka sebelumnya masih terbuka.

    misalnya opentables GLTBL dan TBLWMAS sukses, tetapi gagal pada saat opentables SUPLIER, jangan langsung RETURN tetapi closetables GLTBL dan TBLWMAS dulu.

    contoh:
    aFile:={“GLTBL”,”TBLWMAS”,”SUPPLIER”,dst…}
    FOR i:=1 TO LEN(aFile)
    IF opentables(cDrv+aFile[i],.F.)
    SET INDEX TO (afile[i])
    ELSE
    FOR a:=1 TO i-1
    SELECT(aFile[i])
    dbclosearea()
    NEXT
    ENDIF
    NEXT

    • Iya ko Liang , makasih banyak atas masukannya dan ini sangat berguna bagi saya ke depannya nanti dalam membuat coding , saya slalu menunggu masukan dari ko JD liang dan rekan2 lainnya ,

      sekali lagi makasih banyak dah mau berbagi dengan saya 😀

  2. untuk RDD, saya sarankan pakai DBFCDX saja, lebih gampang memanage INDEXnya. coba google kelebihan DBFNTX vs DBFCDX

    • Ko JD Liang , Boleh minta referensi link yg bagus di baca dan kalau boleh sedikit sample program buat saya he..he…..he.. ( Biar cepeeeet ngertiiii ko )

      Thank a lot off … Koooo

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: