Entry Supplier

Tampilan Entry Supplier

Dan Ini coding miniguinya

#include “minigui.ch”
#include “inkey.ch”
#include “miniprint.ch”
#define BOX 2

*** Desain & Program By : Supriadi
*** Dated : Januari, 2009

#define program “Entry Data Supplier ”

procedure wpasok()

local hurufwpasok := { 255,255,255 }
local warnawpasok := {187,119,255} &Local bColor := { || iif( recno()/2 == int( recno()/2 ) , { 255,255,255 } , { 192,192,192 } ) }
Local cimage := { || iif( recno()/2 == int( recno()/2 ) , ’01.bmp’,’02.bmp’ ) }
Local inputcolor := { 192,197,255 }

if !iswindowactive (wpasok)
set delete on
set browsesync on
set century on
set navigation extended
set date italia

Define window pasok ;
at 30,40 ;
Width 960 ;
Height 550 ;
title ‘Entry Data Supplier’;
on init (bukawpasok()) ; &&,pasok2());
child ;
nomaximize;
NOMINIMIZE;
backcolor warnawpasok

DRAW GRADIENT IN WINDOW pasok AT 55,0 TO 60,1030;
VERTICAL BORDER BOX ;
BEGINCOLOR {255,255,0} ;
ENDCOLOR {255,128,64}

DEFINE TOOLBAR TOOLBAR_1 BUTTONSIZE 85,40 FLAT BORDER

BUTTON NEW;
picture ‘c:\soalgui\bmp\append.bmp’;
CAPTION ‘&Tambah’;
tooltip ‘Penambahan Data baru ‘;
ACTION pasokADD()

BUTTON SIMPAN ;
picture ‘c:\soalgui\bmp\save.bmp’;
CAPTION ‘Sim&pan ‘;
tooltip ‘Tombol ini berfungsi untuk menyimpan database anda ‘;
action { simpanpasok () }

BUTTON CANCEL ;
picture ‘c:\soalgui\bmp\baru.bmp’;
CAPTION ‘&Cancel ‘;
tooltip ‘Tombol ini berfungsi untuk menyimpan database anda ‘;
action cancelpasok()

BUTTON SEARCH ;
picture ‘c:\soalgui\bmp\cari.bmp’;
CAPTION ‘&search’;
tooltip ‘Tombol ini berfungsi untuk cari database ‘;
// action { playbeep(),golekpo(),nongolpch(),nongolpch2() }

BUTTON HAPUS ;
picture ‘c:\soalgui\bmp\HAPUS.bmp’;
CAPTION ‘&Delete’;
tooltip ‘Tombol ini berfungsi untuk menghapus database ‘;
action hapuspasok()

BUTTON EDIT ;
picture ‘c:\soalgui\bmp\EDIT.bmp’;
CAPTION ‘E D I &I T’;
tooltip ‘Tombol ini berfungsi untuk modifikasi/edit database ‘;
ACTION { AKTIF (),pasok.new.enabled := .F. }
//ACTION if(kuncipasok(),aktif(),pasok.new.enabled :=.F.,nil)

BUTTON printer;
picture ‘c:\soalgui\bmp\printer.bmp’;
TOOLTIP ‘Pilihan anda untuk cetak data’ ;
CAPTION ‘&CetakData’;
// ACTION POPRN2()

BUTTON Keluar;
picture ‘c:\soalgui\bmp\cancel.bmp’;
TOOLTIP ‘Pilihan anda untuk cetak data’ ;
CAPTION ‘&Keluar’ ;
ACTION keluarpasok()

END TOOLBAR

@ 68,15 frame pasok_frm;
caption “Entry Faktur pasok “;
BACKCOLOR WARNAwpasok ;
FONTCOLOR {0,128,128};
width 980 ;
height 205

@ 275,15 frame pasok2_frm;
caption “Data Transaksi”;
BACKCOLOR WARNAwpasok ;
FONTCOLOR {0,128,128};
width 980 ;
height 420

DRAW GRADIENT IN WINDOW pasok AT 687,0 TO 695,1030;
VERTICAL BORDER BOX ;
BEGINCOLOR {255,255,0} ;
ENDCOLOR {255,128,64}

@ 90,20 LABEL sKDPT_lbl VALUE ‘Kode Suplier ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 120,20 LABEL sAttn_lbl VALUE ‘Contact Person ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 90,440 LABEL sNmpt_lbl VALUE ‘Nama Suplier ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 120,440 LABEL sAlamat_lbl VALUE ‘Alamat Suplier ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 180,20 LABEL sPhone_lbl VALUE ‘Nomer Telephone’;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 180,440 LABEL sFax_lbl VALUE ‘Nomer Faxsmili ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 210,20 LABEL sNpwpl_lbl VALUE ‘Nomer NPWP ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 210,440 LABEL sEmail_lbl VALUE ‘Alamat Email ‘;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 240,20 LABEL sAccount_lbl VALUE ‘Nomer Account IDR’;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 240,440 LABEL sAccount2_lbl VALUE ‘Nomer Account USD’;
font “arial narrow” size 12 ;
backcolor warnawpasok

@ 90,180 textbox sKDPT_txt font “Time new roman” size 12 ;
WIDTH 80 ;
inputmask ‘999999’;
on enter (panjang())

@ 90,560 textbox sNmpt_txt font “Time new roman” size 12 ;
WIDTH 380 ;
uppercase

@ 120,560 textbox sAlamat1_txt font “Time new roman” size 12 ;
WIDTH 380

@ 150,560 textbox sAlamat2_txt font “Time new roman” size 12 ;
WIDTH 380

@ 120,180 textbox sAttn_txt font “Time new roman” size 12 ;
WIDTH 230

@ 180,180 textbox sPhone_txt ;
font “arial” size 12 ;
width 230

@ 180,560 textbox sFax_txt ;
font “Time new roman ” size 11 ;
FONTCOLOR {255,0,0};
BOLD ;
width 200

@ 210,180 textbox sNpwp_txt ;
font “Time new roman ” size 12 ;
FONTCOLOR {255,0,0};
BOLD ;
width 230;
inputmask ‘99.999.999.9-999.999′ ;
on enter (dataconfirm(“B”))

@ 210,560 textbox sEmail_txt ;
font “Time new roman ” size 12 ;
FONTCOLOR {255,0,0};
BOLD ;
width 380

@ 240,180 btntextbox norek1_txt ;
font “arial” size 12 ;
width 180 ;
action (playbeep(),pasokaccount())

@ 240,560 btntextbox norek2_txt ;
font “arial” size 12 ;
width 150 ;
action (playbeep(),pasokaccount2())

Define browse wpasok_browse
row 300
col 30
width 950
height 385
headers {”,’Kode Customer’,’Nama Pelanggan ‘,’Alamat Pelanggan’,’Contact Person’,’Telephone’,’No. Faxsimili’,’Nomer NPWP’,’Email ‘,’Nomer Perkiraan Rp’,’Nomer Perkiraan USD’}
widths {40,100,210,200,150,150,150,150,200,200,200}
workarea suplier
fields{”,’suplier->kd_pt’,’suplier->nm_wil’,’suplier->alamat1′,’suplier->alamat3′,’suplier->alamat4′,’suplier->fax’,’suplier->npwp’,’suplier->email’,’suplier->norek’,’suplier->norek2′ }
image { ’03.bmp’,’02.bmp’ }
on change actualpasok()
DYNAMICBACKCOLOR { bcolor,bColor, bcolor, bColor, bColor, bColor, bColor,bcolor,bcolor,bcolor,bcolor }
JUSTIFY { BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT}
lock .T.
allowdelete .t.

END BROWSE

end window
pasok.wpasok_browse.setfocus
maximize window pasok
activate window pasok

Endif

return nil

Static Procedure oraaktif

pasok.sKDPT_txt.enabled := .F.
pasok.sNMPT_txt.enabled := .F.
pasok.sAttn_txt.enabled := .F.
pasok.sAlamat1_txt.enabled := .F.
pasok.sAlamat2_txt.enabled := .F.
pasok.sPhone_txt.enabled := .F.
pasok.sFax_txt.enabled := .F.
pasok.sEmail_txt.enabled := .F.
pasok.sNpwp_txt.enabled := .F.
pasok.norek1_txt.enabled := .F.
pasok.norek2_txt.enabled := .F.

Return

Static Procedure aktif

IF pasok.edit.enabled == .T.
pasok.sKDPT_txt.enabled := .F.
pasok.sAttn_txt.enabled := .T.
pasok.sNMPT_txt.enabled := .T.
pasok.sAlamat1_txt.enabled := .T.
pasok.sAlamat2_txt.enabled := .T.
pasok.sPhone_txt.enabled := .T.
pasok.sFax_txt.enabled := .T.
pasok.sEmail_txt.enabled := .T.
pasok.sNpwp_txt.enabled := .T.
pasok.norek1_txt.enabled := .T.
pasok.norek2_txt.enabled := .T.

ELSE
pasok.sKDPT_txt.enabled := .T.
pasok.sAttn_txt.enabled := .T.
pasok.sNMPT_txt.enabled := .T.
pasok.sAlamat1_txt.enabled := .T.
pasok.sAlamat2_txt.enabled := .T.
pasok.sPhone_txt.enabled := .T.
pasok.sFax_txt.enabled := .T.
pasok.sEmail_txt.enabled := .T.
pasok.sNpwp_txt.enabled := .T.
pasok.norek1_txt.enabled := .T.
pasok.norek2_txt.enabled := .T.
ENDIF

Return

PROCEDURE CANCELpasok

pasok.edit.enabled := .T.
pasok.edit.visible := .T.
pasok.new.enabled := .T.
pasok.new.visible := .T.
pasok.wpasok_browse.enabled := .T.
pasok.wpasok_browse.value := recno()
pasok.wpasok_browse.refresh
pasok.wpasok_browse.setfocus

RETURN

PROCEDURE BUKAwpasok

LOCAL SFLAG := “S”

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

IF .NOT. OPENTABLES(cDRV+”DTBLWMAS”,.F.)
RETURN
ENDIF

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

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

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

SELECT SUPLIER
DbSeek(SFLAG)
dbgotop()

pasok.wpasok_Browse.Value := suplier->(recno())
pasok.wpasok_browse.setfocus

RETURN

Static Procedure pasokADD

IF SUBSTR(COTORITAS,1,1)==”A”

pasok.edit.enabled := .F.
aktif()
pasok.sKDPT_txt.value := ”
pasok.sAttn_txt.value := ”
pasok.sNMPT_txt.value := ”
pasok.sAlamat1_txt.value := ”
pasok.sAlamat2_txt.value := ”
pasok.sPhone_txt.value := ”
pasok.sFax_txt.value := ”
pasok.sEmail_txt.value := ”
pasok.sNpwp_txt.value := ”
pasok.norek1_txt.value := ”
pasok.norek2_txt.value := ”

pasok.sKDPT_txt.setfocus

else
msginfo(“Maaf wewenang anda hanya membaca…Terima Kasiiih !!!”,”Anda Tidak Punya Otorisasi”)
Return
Endif

return

Static procedure hapuspasok
IF SUBSTR(COTORITAS,24,1)==”Z”

If MsgYesNo ( ‘Yakin dihapus ‘,’Konfirmasi Jawaban’)

If kuncipasok()
suplier->(dbdelete())
pasok.wpasok_browse.refresh
EndIf
EndIf

ELSE
msginfo(“Maaf Anda tidak berhak untuk menghapus”,”Konfirmasi Tidak punya otorisasi”)
Return

ENDIF

return

Static Function kuncipasok()

Local RetVal

If suplier->(RLock())
RetVal := .t.
Else
MsgExclamation (‘Data Tidak dapat dihapus’,’Konfirmasi Data Dikunci’)
RetVal := .f.
EndIf

Return RetVal

Static procedure simpanpasok

Local sdata := “A”
Local sFlag := “S”
Local snorek1 := alltrim(pasok.norek1_txt.value)
Local snorek2 := alltrim(pasok.norek2_txt.value)
Local xKDPT := pasok.sKDPT_txt.value

IF(LEN(ALLTRIM(pasok.skdpt_txt.value))) < 6
msginfo("Maaf Panjang Kode Pelanggan harus 6 Digit","Konfirmasi Data Kurang 6 Digit")
pasok.sKDPT_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.snpwp_txt.value))) < 20
msginfo("Maaf Panjang Nomer NPWP harus 20 Digit","Konfirmasi Data NPWP Kurang 20 Digit")
pasok.snpwp_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.norek1_txt.value))) < 14
msginfo("Maaf Panjang Nomer Rekening harus 14 Digit","Konfirmasi Data Account Kurang 14 Digit")
pasok.norek1_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.snpwp_txt.value))) < 20
msginfo("Maaf Panjang Nomer NPWP harus 20 Digit","Konfirmasi Data NPWP Kurang 20 Digit")
pasok.snpwp_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.norek1_txt.value))) (DbAppend())
ENDIF
RRLOCK()
REPLACE FLAG WITH sFlag ,;
KD_WIL WITH PASOK.SKDPT_TXT.VALUE ,;
KD_PT WITH PASOK.SKDPT_TXT.VALUE ,;
NM_WIL WITH PASOK.SNMPT_TXT.VALUE ,;
ALAMAT1 WITH PASOK.SALAMAT1_TXT.VALUE ,;
ALAMAT2 WITH PASOK.SALAMAT2_TXT.VALUE ,;
ALAMAT3 WITH PASOK.SATTN_TXT.VALUE ,;
ALAMAT4 WITH PASOK.SPHONE_TXT.VALUE ,;
FAX WITH PASOK.SFAX_TXT.VALUE ,;
NPWP WITH PASOK.SNPWP_TXT.VALUE ,;
EMAIL WITH PASOK.SEMAIL_TXT.VALUE ,;
NOREK WITH PASOK.NOREK1_TXT.VALUE ,;
NOREK2 WITH PASOK.NOREK2_TXT.VALUE

DbCommit()
DbUnlock()
oraaktif()
pasok.edit.enabled := .T.
pasok.new.enabled := .T.
pasok.wpasok_browse.refresh
pasok.wpasok_browse.setfocus

else

xKDPT1 := xKDPT

SELECT SUPLIER
dbseek(sflag+xKDPT1)

UPDATED()
RRLOCK()
//REPLACE FLAG WITH sFlag ,;
REPLACE KD_WIL WITH PASOK.SKDPT_TXT.VALUE ,;
KD_PT WITH PASOK.SKDPT_TXT.VALUE ,;
NM_WIL WITH PASOK.SNMPT_TXT.VALUE ,;
ALAMAT1 WITH PASOK.SALAMAT1_TXT.VALUE ,;
ALAMAT2 WITH PASOK.SALAMAT2_TXT.VALUE ,;
ALAMAT3 WITH PASOK.SATTN_TXT.VALUE ,;
ALAMAT4 WITH PASOK.SPHONE_TXT.VALUE ,;
FAX WITH PASOK.SFAX_TXT.VALUE ,;
NOREK WITH sNorek1 ,;
NOREK2 WITH sNorek2 ,;
NPWP WITH PASOK.SNPWP_TXT.VALUE ,;
EMAIL WITH PASOK.SEMAIL_TXT.VALUE

DbCommit()
DbUnlock()
oraaktif()
pasok.edit.enabled := .T.
pasok.new.enabled := .T.
pasok.wpasok_browse.refresh
pasok.wpasok_browse.setfocus

ENDIF

else
pasok.skdpt_txt.setfocus
pasok.wpasok_browse.refresh

EndIf

Return

procedure pasokaccount
do while .t.
FindCodegl(“pasok”,”norek1_txt”)
dataconfirm(“C”)
exit
enddo
return

procedure pasokaccount2
do while .t.
FindCodegl(“pasok”,”norek2_txt”)
dataconfirm(“C”)
exit
enddo
return

static Function FindCodegl(cForm, cTextBtn)
Local cReg := “”

cReg := GetCodegl(Getproperty(cForm,cTextBtn,”Value”))
If !empty(cReg)
Setproperty(cForm,cTextBtn,”Value”,cReg)
EndIf

Return

static Function GetCodegl(nValue)
Local cReg:= “”, nReg := 1
private cvarnonota := “norek”
glmas->(dbsetorder(1))

if !empty(nValue)
nValue := recno()
Seek Alltrim(str(nValue))
if !eof()
nReg := Recno()
endif
endif

DEFINE WINDOW Form_11;
AT 0,0 ;
WIDTH 500 HEIGHT 480 ;
MODAL NOSIZE

@300,5 frame pilih_pasok ;
width 450 ;
height 100

@ 320,10 label cnonota_lbl value ‘ Masukan Nomer Chart Of Account yg dicari’;
font “arial” size 16 ;
width 500;
transparent blink;
fontcolor{0,255,0}

@ 350,10 textbox cnonota_txt;
width 350 ;
on change {search_pasok() };
on enter {search_pasok() }

@ 5,5 BROWSE Browse_pasok ;
WIDTH 480 ;
HEIGHT 290 ;
HEADERS { ‘Nomer Rekening’ , ‘Nama Perkiraan’,’Tanggal’ } ;
WIDTHS { 170 ,350,100 } ;
WORKAREA glmas ;
FIELDS { ‘glmas->norek’,’glmas->nmrek’} ;
VALUE nReg ;
READONLY {.t.,.t.,.t.} ;
Justify {BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT} ;
ON DBLCLICK ( cReg:=glmas->norek,ThisWindow.release) ;
TOOLTIP “Pilihlah Chart Of Account yang anda inginkan ”

ON KEY ESCAPE ACTION ThisWindow.Release
END WINDOW

CENTER WINDOW Form_11

ACTIVATE WINDOW Form_11

Return cReg

static function search_pasok

local cCari:= (form_11.cnonota_txt.value)
local nPanjang := len(ccari)

select glmas
set order to 1
dbselectarea(“glmas”)
dbseek(cCari)

If found()

If glmas->(DbSeek(cCari))
form_11.browse_pasok.value := glmas->(recno())
Else
MsgExclamation(‘Nomer Rekening Perkiraan tidak ada’)
EndIf
else
msginfo(“nomer yg anda cari bukan Rekening Perkiraan”,”Konfirmasi bukan nomer Rekening”)

EndIf
Return

*——————————————————————————*
PROCEDURE Actualpasok()
*——————————————————————————*

oraaktif()
pasok.new.enabled := .T.
pasok.edit.enabled := .T.
select suplier
set order to 1
DBSEEK(“S”+KD_PT)
if found()

PASOK.SKDPT_TXT.VALUE := suplier-> kd_pt
PASOK.SNMPT_TXT.VALUE := suplier-> nm_wil
PASOK.SALAMAT1_TXT.VALUE := suplier-> alamat1
PASOK.SALAMAT2_TXT.VALUE := suplier-> alamat2
PASOK.SATTN_TXT.VALUE := suplier-> alamat3
PASOK.SPHONE_TXT.VALUE := suplier-> alamat4
PASOK.SFAX_TXT.VALUE := suplier-> fax
PASOK.SNPWP_TXT.VALUE := suplier-> npwp
PASOK.SEMAIL_TXT.VALUE := suplier-> email
PASOK.NOREK1_TXT.VALUE := suplier-> norek
PASOK.NOREK2_TXT.VALUE := suplier-> norek2

endif

RETURN

Static procedure keluarpasok

dtblwmas->(dbclosearea())
glmas->(dbclosearea())
intran1->(dbclosearea())
suplier->(dbclosearea())
release window pasok

return

static function panjang

IF(LEN(ALLTRIM(pasok.skdpt_txt.value))) < 6
msginfo("Maaf Panjang Kode Pelanggan harus 6 Digit","Konfirmasi Data Kurang 6 Digit")
pasok.sKDPT_txt.setfocus
RETURN
Endif

Return

Static Function dataconfirm(xData)

Do Case

Case xData == "A"

IF(LEN(ALLTRIM(pasok.skdpt_txt.value))) < 6
msginfo("Maaf Panjang Kode Pelanggan harus 6 Digit","Konfirmasi Data Kurang 6 Digit")
pasok.sKDPT_txt.setfocus
RETURN
Endif

Case xData == "B"

IF(LEN(ALLTRIM(pasok.snpwp_txt.value))) < 20
msginfo("Maaf Panjang Nomer NPWP harus 20 Digit","Konfirmasi Data NPWP Kurang 20 Digit")
pasok.snpwp_txt.setfocus
RETURN
Endif

Case xData == "C"

IF(LEN(ALLTRIM(pasok.norek1_txt.value))) < 14
msginfo("Maaf Panjang Nomer Rekening harus 14 Digit","Konfirmasi Data Account Kurang 14 Digit")
pasok.norek1_txt.setfocus
RETURN
Endif

Case xData == "I"

IF(LEN(ALLTRIM(pasok.skdpt_txt.value))) < 6
msginfo("Maaf Panjang Kode Pelanggan harus 6 Digit","Konfirmasi Data Kurang 6 Digit")
pasok.sKDPT_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.snpwp_txt.value))) < 20
msginfo("Maaf Panjang Nomer NPWP harus 20 Digit","Konfirmasi Data NPWP Kurang 20 Digit")
pasok.snpwp_txt.setfocus
RETURN
Endif

IF(LEN(ALLTRIM(pasok.norek1_txt.value))) < 14
msginfo("Maaf Panjang Nomer Rekening harus 14 Digit","Konfirmasi Data Account Kurang 14 Digit")
pasok.norek1_txt.setfocus
RETURN
Endif

IF(empty(pasok.sKDPT_txt.value) .or. empty(pasok.snmpt_txt.value) .or. ;
empty(pasok.salamat1_txt.value) .or. ;
empty(pasok.sphone_txt.value) .or. empty(pasok.sfax_txt.value) .or. ;
empty(pasok.semail_txt.value) .or. empty(pasok.snpwp_txt.value) .or. ;
empty(pasok.norek1_txt.value))
msginfo("Masih Ada Data yang kosong","Konfirmasi Data kosong")
pasok.sKDPT_txt.setfocus
RETURN
ENDIF

End Case

Return

Satu Tanggapan

  1. Perkenalkan saya progremmer Clipper5, sudah banyak program yang dibuat. Terakhir saya ingin membuat tampilan grafik berupa BAR, PIE atau Line. Cuma software grafik saya hilang, saya minta tolong solusinya atau kirim saya contoh fungsi2nya dan file2 pendukungnya seperti ????????.Lib dan ????????.CH
    Thank’s

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: