20.3. Membuat Program Posting

Karena program posting untuk APP_TYPE tidak bisa digabungkan dengan layar QUERY_TYPE maka layar posting ini akan kita masukkan ke layar 672. Sebelum masuk ke layar 672, ketikkan terlebih dahulu perintah berikut di layar 671 di bwh perintah SCR_FILE pjc.


SCR_NXT_POSTING 672
SCR_NXT_MAP mnext

MAP(mnext)
pjcnoprc	r_string1	REPLACE
pjctgl		r_date1		REPLACE

Setelah mengetikkan perintah di atas marilah kita segera masuk ke layar 672 untuk membuat program postingnya. Buka editor vi dan ketikkan perintah vi prt9000/sct672. Setelah kita masuk ke layar 672 ketikkan perintah berikut untuk membuat program POSTING.


SCREEN 672 APP_TYPE Posting Bayar Piutang Pelanggan

LOCAL
PGM_FIELDS
lopen		STRING		5
lmutawl		STRING		15
ltipe		STRING		2

IMAGE(master) {BASE_ROW=1} {FRSFLD_BACKUP} {LSTFLD_ADVANCE}
SCT672                                                             @DATE
               Posting Pembayaran Piutang Pelanggan
===============================================================================
               Status        : ____    Type : _
               Nomor. Bukti  : ______________   Dir: _______
===============================================================================


FIELD(master)
   lopen     NOCHANGE            NONE     1 /* Status OPEN,CLSD */
   ltipe     PROTECT             NONE     1
   lmutawl   ALLCAPS             INPUTRI  2
   g_dir     PROTECT             NONE     1

DEFAULTS(master)
lopen		INIT		OPEN
lmutawl		INIT		{r_string1}
ltipe		INIT		S

/*** SUBFILE INFORMATION (trans) ***/
IMAGE(transt) {NO_CLS} {LSTFLD_ADVANCE} {FRSFLD_BACKUP} {BASE_ROW=8}
=============================================================================
 Nomor Fak       Tgl jt    No.Rek      Sisa Hutang    Jumlah Bayar  Dvisi
=============================================================================

IMAGE(trans) {NO_CLS} {LSTFLD_ADVANCE} {FRSFLD_BACKUP} {BASE_ROW=11}
 ______________ _______________ ________ ____________ _________ _______ ________ __

FIELD(trans)
/* Symbol Name   Input Attribute  Output Attribute  Input Order  I/O Special */
   pjdnofak      NOCHANGE            INPUTRI          1 /* Nomor Faktur */
   pjdnobuk      NOCHANGE SCROLL     INPUTRI          1 /* Nomor Faktur */
   pjdnobbm      PROTECT SCROLL      NONE             3 /* Sisa Hutang */
   pjdjml        NOCHANGE            NONE             4 /* Jumlah dibayar */
   pjddvs        NOCHANGE SCROLL     NONE             4 /* Jumlah dibayar */
   pjccab        NOCHANGE SCROLL     NONE             4 /* Jumlah dibayar */
   pjckodcab     NOCHANGE SCROLL     NONE             4 /* Jumlah dibayar */
   pjdtype       NOCHANGE SCROLL     NONE             4 /* Jumlah dibayar */

SUBFILE(trans)
SFL_LINES(4)
SFL_TITLE(transt)

SFL_TARGET
pjdbukurtidx   lmutawl

/*** SUBFILE INFORMATION ***/
IMAGE(trans2) {NO_CLS} {LSTFLD_ADVANCE} {FRSFLD_BACKUP} {BASE_ROW=16}
 ______________  ______________ ____ ____________ ________ ___________ _ ____

FIELD(trans2)
   pcmnoprc      NOCHANGE            NONE             1
   pcmnocek      PROTECT             INPUTRI          2 /* nomor cek */
   pcmsts        PROTECT             NONE             3 /* Status */
   pcmbank       PROTECT             INPUTRI          4 /* Kode Rekening */
   pcmtgljtp     PROTECT {DD-MM-YY}  INPUTRI          5 /* Tanggal jt */
   pcmtotal      PROTECT             INPUTRI          6 /* Nilai Cek */
   pcmtype       PROTECT             INPUTRI          6 /* Nilai Cek */
   pcmdvs        PROTECT             NONE             9

CALCS()
cganti0		lganti == 0

SUBFILE(trans2)
SFL_LINES(4)
SFL_COND cganti0

SFL_TARGET
    pcmnoprcidx    pjdnobuk

/*--------------- dupdppm ---------------*/
CALCS()
cTsisa1         ppmsisa != 0
cCLSD		"CLSD"
cINPG		"INPG"
cppmbyr         ppmbyr + pjdjml
cppmsisa        ppmsisa - pjdjml
cLUNAS          ppmsisa == 0

MAP(mupdppm)
   g_tgltrn       ppmtglbyr      REPLACE
   cppmbyr        ppmbyr         DO_CALC
   cppmsisa       ppmsisa        DO_CALC
   cCLSD          ppmsts         DO_CALC_IF cLUNAS
   cINPG          ppmsts         DO_CALC_IF cTsisa1

DBCALCS(dupdppm)
	DBC_COMMAND	UPDATE
	DBC_TARGET	ppmnofakidx	pjdnofak
	DBC_MAP		mupdppm

/*--------------- dupdpjd ---------------*/
MAP(mupdpjd)
   cCLSD	pjdsts		DO_CALC

DBCALCS(dupdpjd)
	DBC_COMMAND	UPDATE
	DBC_TARGET	pjdprmidx	pjdprm
	DBC_MAP		mupdpjd

/*--------------- dupdpjc ---------------*/
MAP(mupdpjc)
   cCLSD	pjcsts		DO_CALC

DBCALCS(dupdpjc)
	DBC_COMMAND	UPDATE
	DBC_TARGET	pjcnoprcidx	pjdnobuk
	DBC_MAP		mupdpjc

/* -------------------- dupdpcm -------------------- */
CALCS()
cTUNAI		pcmtype == "T" || pcmtype == "M"
ctypeCK		pcmtype == "C" || pcmtype == "K"
c1		1

MAP(mupdpcm)
   cINPG                pcmsts          DO_CALC_IF ctypeCK
   cCLSD                pcmsts          DO_CALC_IF cTUNAI

DBCALCS(dupdpcm)
        DBC_COMMAND     UPDATE
        DBC_TARGET      pcmprmidx              pcmprm
        DBC_MAP         mupdpcm

/*--------------- dmappcm ---------------*/
MAP(mmappcm)
c1		lganti		DO_CALC

DBCALCS(dmappcm)
	DBC_COMMAND	MAPMAP
	DBC_MAP		mmappcm

SPCALCS(spcal1)
	dupdppm berfungsi untuk mengupdate file ppm yang menyimpan informasi piutang pelanggan
	dupdpjd berfungsi untuk mengubah pjdsts dari OPEN menjadi CLSD
	dupdpjc berfungsi untuk mengubah pjcsts dari OPEN menjadi CLSD

SPCALCS(spcal2)
	dupdpcm berfungsi mengubah pcmsts dari OPEN menjadi CLSD bila pembayaran tunai/mutasi dan menjadi INPG bila pembayaran melalui cek
	dmappcm

POSTING(trans)
	spcal1

POSTING(trans2)
	spcal2

END_SCREEN

Tulisan yang berwarna merah di atas hanyalah keterangan saja jadi anda tidak perlu menuliskannya. Selanjutnya kita akan mencoba membuat laporan untuk layar penerimaan piutang ini