18.3. Membuat Perintah Posting

Perintah Posting yang dimaksud di sini adalah Posting untuk APP_TYPE. Seperti pada bab sebelumnya, program Posting hanya terdiri dari master dan detail. Data master berfungsi untuk memilih no. faktur yang akan diposting, sehingga tidak memerlukan file, tetapi hanya memerlukan variable. Karena proses posting ini mempengaruhi file barang, maka anda akan memakai file ppd yang mengandung informasi barang. Untuk itu marilah kita segera membuat program Posting dengan mengetikkan perintah sebagai berikut.

Sebelum kita masuk ke layar 572, pada layar 571 pada bagian atas tuliskanlah perintah sebagai berikut.


SCREEN 571 QUERY_TYPE Penjualan
SCR_FILE ppm
SCR_NXT_POSTING 572
SCR_NXT_MAP mnext

MAP(mnext)
ppmnofak        r_string12      REPLACE
ppmscr          r_string11      REPLACE

Setelah itu barulah kita masuk ke layar 572 dan mengetikkan perintah seperti berikut.


SCREEN 572 APP_TYPE Posting Jual

LOCAL
PGM_FIELDS
lfakawl         STRING          15
lPJ             STRING          3
lganti          STRING          3

IMAGE(master) {BASE_ROW=2} {FRSFLD_BACKUP} {LSTFLD_ADVANCE}
SCT572                                                             @DATE
               Posting Penjualan
	       No Faktur      : ______________ __

+1                                                                             +1 {TOP}
  No Faktur     Kode Plg  Tgl Fak  Tgl DO  Status Total Faktur    Total HPP
+2                                                                             +2 {TOP}


FIELD(master)
lfakawl        ALLCAPS             NONE         5
lPJ            PROTECT             NONE         6

DEFAULTS(master)
lPJ             INIT            PJ
lganti          INIT            0

IMAGE(trans) {NO_CLS} {LSTFLD_ADVANCE} {FRSFLD_BACKUP} {BASE_ROW=9}
_________ __________ _________________ ________ _____________.__ ____ ____ ___ __________

FIELD(trans)
ppdnofak          NOCHANGE SCROLL    NONE          1
ppdplg            PROTECT SCROLL     NONE          2
ppdbrg            PROTECT SCROLL     NONE          6
ppdtglfak         PROTECT {DD-MM-YY} NONE          3
ppdtotfak         PROTECT            NONE          5
ppmdvs            PROTECT            NONE          7
ppmcab            PROTECT            NONE          7
brgsup            PROTECT            NONE          7
ppmkota           PROTECT            NONE          7

CALCS()
cgantinomor             lganti == "0"

SUBFILE(trans)
SFL_LINES(6)
SFL_COND cgantinomor

SFL_TARGET
ppdfakbbmidx   lfakawl


IMAGE(trans2) {NO_CLS} {LSTFLD_ADVANCE} {FRSFLD_BACKUP} {BASE_ROW=17}
 _  ______________  __________  __________  ____________.__  ____  ________ ____

 FIELD(trans2)
 pcmtype           NOCHANGE           NONE          1
 pcmnocek          NOCHANGE           NONE          1
 pcmplg            NOCHANGE           NONE          2
 pcmnobbm          PROTECT            NONE          3
 pcmtotal          PROTECT            NONE          4
 pcmsts            PROTECT            NONE          5
 pcmtgljtp         PROTECT {DD-MM-YY} ZERO          6
 pcmdvs            PROTECT            NONE          5

 SUBFILE(trans2)
 SFL_LINES(6)

 SFL_TARGET
 pcmty3prcidx   ppdtype2 ppdnofak

/*------------------- dupdppm --------------------*/
CALCS()
ctype4P         ppmtype4 == "P"
ctype4T         ppmtype4 == "T"
cINPG           "INPG"
cCLSD           "CLSD"

MAP(mupdbkk)
cCLSD          ppmsts       DO_CALC
cINPG          ppmsts       DO_CALC_IF ctype4P

DBCALCS(dupdbkk)
DBC_COMMAND     UPDATE
DBC_TARGET      ppmnofakidx              ppdnofak
DBC_MAP         mupdppm


/*--------------------dupdppd--------------------*/
MAP(mupdppd)
cCLSD           ppdsts          DO_CALC

DBCALCS(dupdppd)
DBC_COMMAND     UPDATE
DBC_TARGET      ppdprmidx       ppdprm
DBC_MAP         mupdbkd

/* ------------------ dupdpcm -------------------*/
CALCS()
cTM            pcmtype =="T"
cSK            pcmtype == "C"
c1              1

MAP(mupdpcm)
cCLSD                pcmsts     DO_CALC_IF cTM
cINPG                pcmsts     DO_CALC_IF cSK

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(spdetail1)
dupdppm
dupdppd

SPCALCS(spdetail2)
dupdpcm
dmappcm

POSTING(trans)
PST_COMMAND     spdetail

POSTING(trans2)
PST_COMMAND     spdetail2

END_SCREEN

Seperti yang sudah diterangkan di bab sebelumnya, fungsi dari posting adalah mengubah ppmsts, ppdsts, dan pcmsts darij OPEN menjadi CLSD apabila pembayarannya tunai. Dan berubah menjadi INPG apabila pembayarannya secara kredit. Karena pada layar 571 terdapat perintah RESTRICT maka setelah diposting, kita tidak bisa mengubah data lagi. Oleh karena itu telitilah terlebih dahulu sebelum memposting suatu transaksi. Sebenarnya banyak fungsi dari POSTING, tidak hanya mengubah status transaksi tetapi kita hanya akan mempelajari fungsi ini terlebih dahulu