Xây dựng các các màn hình giao diện cho chương trình

Một phần của tài liệu Phân tích khả năng ứng dụng tin học trong công tác kế toán và xây dựng phần mềm kế toán cho cục địa chất và khoáng sản Việt Nam (Trang 77 - 112)

Chương III. Xây dựng phần mềm kế toán cho Cục Địa chất và khoáng sản Việt Nam

3.3. Néi dung phÇn mÒm

3.3.6. Xây dựng lớp các thanh công cụ và màn hình giao diện

3.3.6.2. Xây dựng các các màn hình giao diện cho chương trình

Trong trong bất kể chương trình kế toán nào, xây dựng chương trình đổi số tiền ra chữ mang tính bắt buộc. Chương trình đổi số ra chữ có thể thực hiện cho tất cả các màn hình nhập liệu, phiếu thu, phiếu chi, phiếu nhập - xuất bảng báo biểu ... cần hiển thị số tiền bằng chữ. Chương trình đổi số tiền ra chữ

được viết như sau : FUNCTION dois

PARAMETER M.nnum

PRIVATE M.str, M.tmp, M.strtmp, M.nexact

m.nexact = SET('EXACT') SET EXACT ON

m.tmp = INT(M.nnum/1000000000) m.strtmp = ALLTRIM(xuly3(M.tmp)) m.str = '('

IF M.strtmp<>' '

m.str = M.str+M.strtmp+' tû ' ENDIF

m.nnum = M.nnum-M.tmp*1000000000 m.tmp = INT(M.nnum/1000000)

m.strtmp = ALLTRIM(xuly3(M.tmp)) IF M.strtmp<>' '

m.str = M.str+M.strtmp+' triệu ' ENDIF

m.nnum = M.nnum-M.tmp*1000000 m.tmp = INT(M.nnum/1000)

m.strtmp = ALLTRIM(xuly3(M.tmp)) IF M.strtmp<>' '

m.str = M.str+M.strtmp+' ngh×n ' ENDIF

m.nnum = M.nnum-M.tmp*1000

m.strtmp = ALLTRIM(xuly3(M.nnum)) m.str = M.str+M.strtmp

IF M.str<>'('

m.str = M.str+' đồng)' ENDIF

SET EXACT &nexact RETURN M.str

FUNCTION xuly3 PARAMETER M.nnum PRIVATE M.str, M.tmp

m.tmp = INT(M.nnum/100) m.str = ' '

IF M.tmp>0

m.str = dv2chu(M.tmp)+' tr¨m' ENDIF

m.nnum = M.nnum-M.tmp*100 m.tmp = INT(M.nnum/10) IF M.tmp>0

IF M.tmp=1

m.str = M.str+' mười' ELSE

m.str = M.str+dv2chu(M.tmp)+' mươi' ENDIF

ELSE

IF (M.str<>' ') .AND. (M.nnum-M.tmp*10)>0 m.str = M.str+dv2chu(M.tmp)

ENDIF ENDIF

m.tmp = M.nnum-M.tmp*10 IF (M.tmp>0)

m.str = M.str+dv2chu(M.tmp) ENDIF

RETURN M.str FUNCTION dv2chu PARAMETER M.dv PRIVATE M.str DO CASE

CASE M.dv=1 m.str = ' mét' CASE M.dv=2

m.str = ' hai'

CASE M.dv=3 ...

CASE M.dv=8 m.str = ' tám' CASE M.dv=9

m.str = ' chÝn' CASE M.dv=0

m.str = ' linh' ENDCASE

RETURN M.str

- Xây dựng màn hình nhập chứng từ kế toán

H×nh 3.12

Viết lệnh cho nút điều khiển “thêm“ của phần 1 SELECT ct1

SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO X SET DELETED ON

CALCULATE MAX(ct1_id) ALL TO Y lcoldtalk = SET("TALK")

SET TALK OFF

lcolddeleted = SET("DELETED") SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO lmaxid IF val(x)-val(y)=0

IF val(x)=0

lmaxid="100000"

ENDIF ENDIF

lmaxid =ALLTRIM(STR(VAL(lmaxid) + 1)) APPEND BLANK

REPLACE ct1_id WITH lmaxid REPLAC ct1.thang WITH m.thang

** Restore talk setting SET TALK &lcoldtalk

SET DELETED &lcolddeleted THISFORM.Text1.SetFocus Thisform.REFRESH

Viết lệnh cho nút điều khiển “Xoá“ của phần 1 lcsoctid = ct1.ct1_id

cMessageTitle = 'Thong bao'

c_delete1_loc1="Ban that su muon xoa chung tu "+alltrim(lcsoctid )+" ?"

nDialogType = 4 +32+256

cAnswer=MESSAGEBOX(c_delete1_loc1,nDialogType, MessageTitle)

IF cAnswer = 6

BEGIN TRANSACTION SELECT ct1

Delete IF !EOF()

Skip 1 ENDIF

IF EOF() AND !BOF() Skip -1

ENDIF SELECT ct2

Delete FOR ct1_id = lcsoctid END TRANSACTION

SELECT ct1

thisform.REFRESH ENDIF

Viết lệnh cho nút điều khiển “Thêm“ của phần 2 SELECT ct2

lcOldTalk = SET("TALK") SET TALK OFF

lcOldDeleted = SET("DELETED") SET DELETED OFF

APPEND BLANK

REPLACE ct1_id with ct1.ct1_id in ct2

* Restore talk setting SET TALK &lcOldTalk

SET DELETED &lcOldDeleted thisform.Refresh

Viết lệnh cho nút điều khiển “Xoá“ của phần 2 lcOrderID = ct2.ct1_ID

cMessageTitle = 'Thong bao'

c_delete1_loc1="Ban that su muon xoa chung tu"+alltrim(lcOrderID )+" ?"

nDialogType = 4 +32+256

cAnswer=MESSAGEBOX(c_delete1_loc1,nDialogType, MessageTitle) IF cAnswer=6

SELECT ct2 Delete

IF !EOF() Skip 1 ENDIF

IF EOF() AND !BOF() Skip -1

ENDIF

thisform.Refresh ENDIF

Viết chương trình sử dụng phím “Ctrl+Insert” để chạy thư điển mã chi phí LPARAMETERS nKeyCode, nShiftAltCtrl

IF lastkey()=7

DO Form("Tudien_mcp") ENDIF

IF lastkey()=146 && Ban phim : Ctrl+Insert thisform.cmdNewCt2.click()

ENDIF

*

Viết chương trình kiểm tra định khoản sai

Trong khi nhập liệu, người sử dụng hay nhầm lẫn trong định khoản phiếu Thu ghi Có, phiếu Chi ghi Nợ. Để khắc phục ta viết chương trình thông báo lỗi như sau :

IF(alltrim(ct2.tK_no)=alltrim(ct2.tK_co)and

left(alltrim(ct2.tK_co),2)="11") or (left(alltrim(ct2.tK_no),2)="11" and

!left(alltrim(ct2.tK_co),2)="11" and ct1.thuchi=.F.) or

(left(alltrim(ct2.tK_co),2)="11" and !left(alltrim(ct2.tK_no),2)="11"

and ct1.thuchi=.T.)

cmessagetext = 'Ban nhap Thu - Chi sai roi hay kiem tra lai ! ' DO thongbao.prg

ENDIF

*

Viết chương trình tính tổng tiền trên bảng nhập IF ct2.ngoai_te>0 AND ct2.ty_gia>0

REPLAC ct2.tien WITH ct2.ngoai_te*ct2.ty_gia ENDIF

dktien=alltrim(ct2.ct1_ID) m.tientong=0

SUM(ct2.tien) FOR dktien=alltrim(ct2.ct1_ID) TO m.tientong thisform.TextTongTien.Value = m.tientong

thisform.TextTienChu.Value = DoiS(m.tientong) THISFORM.REFRESH

*

Viết chương trình “Xem“, “ In“ phiếu thu - chi PUBLIC cFamvi

cFamvi=Ct1.ct1_id DO inthuchi.prg IF Ttien>0

SET SEPARATOR TO '.'

IF cThuchi=.T. && In phieu thu REPORT FORM phieuthu.frx PREVIEW WINDOW cWINDOWREPORT

ELSE

IF cThuchi=.F. && In phieu chi REPORT FORM phieuchi.frx

PREVIEW WINDOW cWINDOWREPORT

ENDIF ENDIF

SET SEPARATOR TO ENDIF

SELECT Ct1

Release Ttien, cThuchi, Tien1, Tien2, Tien3, Tien4, Tien5, Tien6 Release cTk1, cTk2, cTk3, cTk4, cTk5, cTk6, N, cNo, cCo, cFamvi thisform.REFRESH

- Chương trình chuyển số dư của năm trước sang năm thực hiện Bước sang năm tài chính mới bất cứ người làm công tác kế toán nào cũng phải chuyển số dư của các tài khoản, sổ, thẻ chi tiết tài khoản từ cuối năm trước sang đầu năm thực hiện. Công việc này làm mất nhiều thời gian và dẽ sẩy ra nhầm lẫn. Với một chương trình ngắn gọn sẽ giúp người kế toán thực hiện toàn bộ công việc vất vả đó một cách nhanh chóng vối độ chính sác tuyệt

đối. Chương trình được thực hiện như sau :

**** Chuyendu.prg CLOSE DATABASE gctable = GETFILE('dbc') n1=len(alltrim(gctable ))-10

cmdpath2=left(alltrim(gctable ),n1) IF LEN(ALLTRIM(cmdpath1))=3 .OR.

UPPER(cmdpath1)==UPPER(SYS(5)+'\Ac2005\') .OR.

UPPER(cmdpath1)==UPPER(SYS(5)+'\Ac2005\help\').OR.

UPPER(cmdpath1)==UPPER(SYS(5)+'\Ac2005\data\data\')

cmessagetext = 'Day la du lieu goc, Ban khong co quyen truy nhap ! ' DO thongbao.prg

ELSE

SET path to &cmdpath2

SET DEFAULT TO &pathwork Chapnhan=0

IF file("ketoan.dbc")=.T.

Chapnhan=1

OPEN database ketoan.dbc SHARED

***--- Lay so du cuoi ky nam truoc chuyen sang nam nay

SELECT Candoick.tk, Candoick.dkno, Candoick.dkco, Candoick.duno,Candoick.duco FROM ketoan!Candoick

ORDER BY Candoick.tk into table aCandoi USE aCandoi Exclusive

REPLAC all dkno with duno, dkco with duco REPLAC all duno with 0, duco with 0

Delet for (dkno+dkco)=0 PACK

SELECT Congnock.tk,Congnock.ma_khac, Congnock.ma_khach, Congnock.ho_ten, Congnock.don_vi,Congnock.dkno,

Congnock.dkco, Congnock.duno, Congnock.duco;

FROM ketoan!Congnock ORDER BY Congnock.tk INTO TABLE aCongno && Cong no dau ky

USE aCongno Exclusive

REPLAC all dkno with duno, dkco with duco REPLAC all duno with 0, duco with 0

Delet for (dkno+dkco)=0 PACK

SELECT Cpsxck.paht, Cpsxck.ma_cp, Cpsxck.dn_vl, Cpsxck.dn_nc, Cpsxck.dn_kh, Cpsxck.dn_ql, Cpsxck.dn_kc, Cpsxck.ck_vl, Cpsxck.ck_nc, Cpsxck.ck_kh, Cpsxck.ck_ql, Cpsxck.ck_kc, Cpsxck.ttoan_dk, Cpsxck.ttoan_ck FROM

ketoan!Cpsxck ORDER BY Cpsxck.ma_cp INTO TABLE aCpsx USE aCpsx Exclusive

REPLAC all dn_vl with ck_vl, dn_nc with ck_nc, dn_kh with ck_kh, dn_ql with ck_ql, dn_kc with ck_kc

REPLAC ttoan_ck with 0 for left(alltrim(ma_cp),2)=="02"

or left(alltrim(ma_cp),2)=="03"

REPLAC all ttoan_dk with ttoan_ck

REPLAC all ck_vl with 0, ck_nc with 0, ck_kh with 0, ck_ql with 0, ck_kc with 0

Delet for (dn_vl+dn_nc+dn_kh+dn_ql+dn_kc+ttoan_dk)=0 PACK

SELECT *;

FROM ketoan!listcno;

GROUP BY listcno.tk;

ORDER BY listcno.tk INTO TABLE aListcno

&& Danh sach cong no SELECT Macp.ma_cp, Macp.noidung;

FROM ketoan!Macp;

GROUP BY Macp.ma_cp;

ORDER BY Macp.ma_cp INTO TABLE aMacp

&& Ma chi phi (macp) SELECT *;

FROM ketoan!madv;

GROUP BY madv.ma_dv;

ORDER BY madv.ma_dv, madv.don_vi

INTO TABLE aMadv && Ma don vi (Madv) SELECT *;

FROM ketoan!makg;

GROUP BY makg.ma_khach;

ORDER BY makg.ma_khach INTO TABLE aMakg SELECT *;

FROM ketoan!makhac GROUP BY makhac.ma_khac;

ORDER BY makhac.ma_khac, makhac.noidung INTO TABLE aMakhac && Ma khac SELECT *;

FROM ketoan!makho GROUP BY makho.ma_kho;

ORDER BY makho.ma_kho INTO TABLE aMakho SELECT *;

FROM ketoan!mats;

GROUP BY mats.ma_ts;

ORDER BY mats.ma_ts, mats.tents INTO TABLE aMats

SELECT *;

FROM ketoan!taikhoan;

GROUP BY taikhoan.tk;

ORDER BY taikhoan.tk INTO TABLE aTaikhoan SELECT *;

FROM ketoan!tdv INTO TABLE aTdv SELECT *;

FROM ketoan!tscd;

ORDER BY tscd.ma_ts, tscd.tents INTO TABLE Tmptscd USE Tmptscd Exclusive

Delete FOR ALLTRIM(ta_gm)='Giảm' PACK

REPLAC all ta_gm WITH '' GOTO TOP

SCAN FOR .NOT. EOF()

REPLAC khns_dk WITH khns_dk+kh_ns REPLAC khbs_dk WITH khbs_dk+kh_bs REPLAC khk_dk WITH khk_dk+kh_k

REPLAC kh_dk WITH khns_dk+khbs_dk+khk_dk REPLAC kh_ns WITH 0

REPLAC kh_bs WITH 0 REPLAC kh_k WITH 0 REPLAC kh_thang WITH 12 ENDSCAN

TOTAL ON ma_ts TO aTscd SELECT *;

FROM ketoan!vtck;

ORDER BY vtck.ma_vt, vtck.tenvt, vtck.tk, vtck.ten_kho;

INTO TABLE aVtdk && Vat tu SELECT *;

FROM ketoan!qhns;

INTO TABLE aSxkdt USE aSxkdt Exclusive REPLAC all ntcs with scpn

REPLAC all spntn with 0, sdn with 0, scpn with 0 ENDIF

ENDIF

**--- Hoan thanh chuyen ve thu muc dang lam viec CLOSE DATABASE

SET path to &cmdpath1

OPEN database ketoan.dbc SHARED SET DEFAULT TO &pathwork IF Chapnhan=1

USE ketoan!candoidk SHARED && Chuyen so du dau ky can doi Delet all

APPEN from aCandoi USE in candoidk

USE ketoan!congnodk SHARED && Chuyen so du dau ky cong no Delet all

APPEN from aCongno USE in congnodk

USE ketoan!Cpsxdk SHARED && Chi phi san xuat Delet all

APPEN from aCpsx

USE in Cpsxdk ...

USE ketoan!Tdv SHARED && Vat tu Delet all

APPEN from aTdv USE in Tdv ENDIF

**---KÕt thóc

- Viết chương trình kế nối dữ liệu của các đơn vị nội bộ gửi đến Các đơn vị địa chất ở xa trung tâm Liên đoàn không thê tổ chức dùng chung dữ liệu qua mạng Internet vì chi phí quá cao. Giải pháp kết nối dữ liệu

để tổng hợp báo cáo toàn Liên đoàn khi các đơn vị gửi báo về người sử dụng chỉ cần nhắp chuột chọn dữ liệu của đơn vị cần kết nối, như vậy đã hoàn thành báo cáo tổng hợp toàn Liên đoàn. Chương trình được thực hiện như sau :

**-- ketnoi.prg

CLOSE DATABASE

SET PATH TO &cmdpath2 SET DEFAULT TO &pathwork chapnhan=0

IF FILE("ketoan.dbc")=.T.

chapnhan=1

OPEN DATABASE ketoan.DBC SHARED

***--- Lay so lieu cua Don vi cap duoi SELECT *;

FROM ketoan!ct1;

WHERE ct1.thang >= dauqui;

AND ct1.thang <= cuoiqui INTO TABLE kct1 SELECT ct2.*;

FROM ketoan!ct1 inner JOIN ketoan!ct2 ; ON ct1.ct1_id = ct2.ct1_id;

WHERE ct1.thang >= dauqui;

AND ct1.thang <= cuoiqui INTO TABLE kct2 SELECT *;

FROM ketoan!vtfs1;

WHERE vtfs1.thang >= dauqui;

AND vtfs1.thang <= cuoiqui INTO TABLE kvt1 SELECT vtfs2.*;

FROM ketoan!vtfs1 inner JOIN ketoan!vtfs2 ; ON vtfs1.ct1_id = vtfs2.ct1_id;

WHERE vtfs1.thang >= dauqui;

AND vtfs1.thang <= cuoiqui INTO TABLE kvt2 ENDIF

**--- Hoan thanh chuyen ve thu muc dang lam viec CLOSE DATABASE

SET PATH TO &cmdpath1

OPEN DATABASE ketoan.DBC SHARED SET DEFAULT TO &pathwork

IF chapnhan=1

USE ketoan!ct1 SHARED && Chung tu SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO x SET DELETED ON

CALCULATE MAX(ct1_id) ALL TO Y lcoldtalk = SET("TALK")

SET TALK OFF

lcolddeleted = SET("DELETED") SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO lmaxid IF VAL(x)-VAL(Y)=0

IF VAL(x)=0

lmaxid="100000"

ENDIF

ENDIF

lmaxid =ALLTRIM(STR(VAL(lmaxid) + 1)) nlmaxid=VAL(lmaxid )

SET TALK &lcoldtalk

SET DELETED &lcolddeleted USE

SELECT 22

USE kct2 ALIAS kct2 EXCLUSIVE Delet FOR tien=0

PACK

REPLAC all kct2.ct1_id with alltrim(str(val(kct2.ct1_id)-100000)) SELECT 21

USE kct1 ALIAS kct1 EXCLUSIVE GOTO TOP

SCAN FOR NOT EOF() nlmaxid=nlmaxid+1

chiso12=ALLTRIM(kct1.ct1_id)

REPLAC kct1.ct1_id WITH ALLTRIM(STR(nlmaxid)) SELECT 22

REPLAC kct2.ct1_id WITH ALLTRIM(STR(nlmaxid)) FOR alltrim(str(val(kct2.ct1_id)+100000))= =chiso12 SELECT 21

ENDSCAN USE IN kct1 USE IN kct2

**--- Vat tu

USE ketoan!vtfs1 SHARED && Vat tu SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO x SET DELETED ON

CALCULATE MAX(ct1_id) ALL TO Y lcoldtalk = SET("TALK")

SET TALK OFF

lcolddeleted = SET("DELETED") SET DELETED OFF

CALCULATE MAX(ct1_id) ALL TO lmaxid IF VAL(x)-VAL(Y)=0

IF VAL(x)=0

lmaxid="100000"

ENDIF ENDIF

lmaxid =ALLTRIM(STR(VAL(lmaxid) + 1)) nlmaxid=VAL(lmaxid )

SET TALK &lcoldtalk

SET DELETED &lcolddeleted USE

SELECT 22

USE kvt2 ALIAS kvt2 EXCLUSIVE Delet FOR tien=0

PACK

REPLAC all kvt2.ct1_id with alltrim(str(val(kvt2.ct1_id)-100000)) SELECT 21

USE kvt1 ALIAS kvt1 EXCLUSIVE GOTO TOP

SCAN FOR NOT EOF() nlmaxid=nlmaxid+1

chiso12=ALLTRIM(kvt1.ct1_id)

REPLAC kvt1.ct1_id WITH ALLTRIM(STR(nlmaxid)) SELECT 22

REPLAC kvt2.ct1_id WITH ALLTRIM(STR(nlmaxid)) FOR alltrim(str(val(kvt2.ct1_id)+100000))==chiso12

SELECT 21 ENDSCAN

USE IN kvt1 USE IN kvt2

***--- ket noi

USE ketoan!ct1 SHARED && Chung tu APPEN FROM kct1

USE ketoan!ct2 SHARED APPEN FROM kct2

USE ketoan!vtfs1 SHARED && Vat tu APPEN FROM kvt1

USE ketoan!vtfs2 SHARED && Vat tu APPEN FROM kvt2

USE ENDIF

- Giải pháp lập trình định khoản các bút toán trung gian

Các khoản chi phí tiền lương, chi phí vật liệu, chi phí BH, chi phí khấu hao TSCĐ phát sinh trong kỳ đựơc tập trung cho các đối tượng sản xuất. Để giảm bớt các công việc cho người kế toán trong việc định khoản các bút toán trung gian. Chương trình được xây dựng như sau :

H×nh 3.13

Lập trình cho nút điều khiển “Thực hiện“

lcoldtalk = SET("TALK") SET TALK OFF

lcolddeleted = SET("DELETED") SET DELETED OFF

*!* ================================

*!*

*!* Ket chuyen Tien luong Ghi co TK 3341, 3348

*!* Phan bo 1

*!*=================================

IF ccheck1=1 IF qui=="I"

ctapctl="PB11"

ELSE

IF qui=="II"

ctapctl= "PB12"

ELSE

IF qui=="III"

ctapctl= "PB13"

ELSE

IF qui=="IV"

ctapctl= "PB14"

ENDIF ENDIF

ENDIF ENDIF

SELECT ct2.ct1_id, Ct1.so_ct, Ct1.Tap_ct, ct2.ma_cp, ct2.ma_khac, ct2.tk_no, ct2.tk_co, ct2.dien_giai, ct2.tien, SUM(ct2.tien), Ct1.thang FROM ketoan!Ct1 INNER JOIN ketoan!ct2 ON Ct1.ct1_id = ct2.ct1_id WHERE Ct1.thang >=dauqui AND Ct1.thang <=cuoiqui AND LEFT(ALLTRIM(ct2.tk_no),3) = "334"AND NOT EMPTY(ct2.ma_cp) = .T. GROUP BY ct2.tk_no, ct2.ma_cp,

ct2.ma_khac ORDER BY ct2.tk_no, ct2.ma_cp, ct2.ma_khac INTO TABLE pbcptl1

REPLAC all tk_co with tk_no USE in pbcptl1

SELECT 20

USE pbcptl1 alias pbcptl1

REPLAC all tap_ct with ctapctl, tien with sum_tien,dien_giai with ("Phân bổ tiền lương qúi "+qui), so_ct with '', thang with cuoiqui

GOTO top

SCAN for not eof()

IF left(alltrim(ma_cp),2)=="01"

REPLAC tk_no with "6351"

ELSE

IF left(alltrim(ma_cp),2)=="02" or

left(alltrim(ma_cp),2)=="03"

REPLAC tk_no with "631"

ELSE

IF left(alltrim(ma_cp),2)=="04"

REPLAC tk_no with "66121"

ELSE

IF left(alltrim(ma_cp),2)=="05"

REPLAC tk_no with "66122"

ELSE

REPLAC tk_no with "6622"

ENDIF ENDIF

ENDIF ENDIF

ENDSCAN

**-- Ghi Phan bo luong vao tep Ct1, ct2

SELECT ct2

Delet for upper(alltrim(tap_ct))==upper(alltrim(ctapctl))or val(ct1_id)=0 SELECT Ct1

Delet for upper(alltrim(tap_ct))==upper(alltrim(ctapctl)) or val(ct1_id)=0 SELECT Ct1

IF !EOF() Skip 1 ENDIF

IF EOF() AND !BOF() Skip -1

ENDIF

CALCULATE MAX(ct1_id) ALL TO lmaxid IF val(lmaxid)=0

lmaxid="100000"

ENDIF

lmaxid =ALLTRIM(STR(VAL(lmaxid) + 1)) APPEND BLANK

REPLAC ct1_id with lmaxid, tap_ct with ctapctl, thang with cuoiqui, ho_ten with ("Phân bổ chi phí tiền lương")

SELECT 20

REPLAC all ct1_id with lmaxid SELECT ct2

APPEN from pbcptl1 USE in pbcptl1

ENDIF

*!* ===========================

*!* Ket chuyen vat lieu Ghi co TK 15

*!* Phan bo 2

*!*===========================

IF ccheck2=1 IF qui=="I"

ctapctvl="PB21"

ELSE

IF qui=="II"

ctapctvl= "PB22"

ELSE

IF qui=="III"

ctapctvl= "PB23"

ELSE

IF qui=="IV"

ctapctvl= "PB24"

ENDIF ENDIF

ENDIF ENDIF

SELECT vtfs1.ct1_id, vtfs1.so_ct, vtfs1.ngay_ct, vtfs1.ma_khach,

vtfs2.ma_khac, vtfs2.ma_cp, vtfs1.ho_ten, vtfs1.don_vi, vtfs1.dien_giai, vtfs2.tk_no, vtfs2.tk_co, vtfs2.tien, vtfs1.thang FROM ketoan!vtfs1 INNER JOIN ketoan!vtfs2 ON vtfs1.ct1_id = vtfs2.ct1_id WHERE vtfs1.thang >= dauqui AND vtfs1.thang <= cuoiqui AND LEFT(ALLTRIM(vtfs2.tk_co),2) == "15" ORDER BY vtfs1.ct1_id, vtfs1.so_ct INTO TABLE pbcpvl2

REPLAC dien_giai with "Phân bổ vật liệu" for left(alltrim(tk_no),1)="6"

USE in pbcpvl2 SELECT 21

USE pbcpvl2 alias pbcpvl2 EXCLUSIVE

ALTER TABLE pbcpvl2 ADD COLUMN tap_ct c(10) REPLAC all tap_ct with ctapctvl

SELECT pbcpvl2.ct1_id, pbcpvl2.so_ct, pbcpvl2.tap_ct,

pbcpvl2.ngay_ct, pbcpvl2.ma_khach, pbcpvl2.ho_ten, pbcpvl2.don_vi, pbcpvl2.thang FROM pbcpvl2 GROUP BY pbcpvl2.ct1_id ORDER BY pbcpvl2.ct1_id INTO TABLE pbcpvl1

USE in pbcpvl1 SELECT 20

USE pbcpvl1 alias pbcpvl1 N=Reccount()

IF n=0

APPEN blank N=Reccount() ENDIF

DIMENSION amang1(N,8) COPY TO Array amang1 USE in pbcpvl1

**---Ghi vao tep Ct1, ct2 SELECT ct2

Delet for upper(alltrim(tap_ct))=upper(alltrim(ctapctvl)) or val(ct1_id)=0 SELECT Ct1

Delet for upper(alltrim(tap_ct))=upper(alltrim(ctapctvl)) or val(ct1_id)=0 FOR i=1 to n

SELECT Ct1

CALCULATE MAX(ct1_id) ALL TO lmaxid IF val(lmaxid)=0

lmaxid="100000"

ENDIF

lmaxid =ALLTRIM(STR(VAL(lmaxid) + 1)) APPEND BLANK

REPLAC ct1_id with alltrim(lmaxid), so_ct with alltrim(amang1(i,2)), tap_ct with alltrim(amang1 (i,3)), ngay_ct with amang1 (i,4), ma_khach with alltrim(amang1 (i,5)), ho_ten with alltrim(amang1 (i,6)),don_vi with alltrim(amang1 (i,7)), thang with amang1 (i,8)

SELECT pbcpvl2

REPLAC pbcpvl2.ct1_id with alltrim(lmaxid) for alltrim(pbcpvl2.ct1_id)==alltrim(amang1 (i,1)) ENDFOR

USE in pbcpvl2 SELECT ct2

APPEN from pbcpvl2 ENDIF

*** --- Ket thuc Phan bo Vat lieu

*!* =========================

*!*

*!* Phan bo chi phi theo tieu thuc

*!*

*!*=========================

IF !empty(ThisForm.text1.value) IF cTien>0

SELECT macp.ma_cp, macp.kehoach, macp.luong, macp.khac, macp.tien FROM ketoan!macp WHERE macp.kehoach > 0 or macp.luong > 0 or macp.khac > 0 ORDER BY macp.ma_cp Into table pbocp1

USE in pbocp1 SELECT 20

USE pbocp1 alias pbocp1 EXCLUSIVE

ALTER TABLE pbocp1 ADD COLUMN ct1_id c(6) ALTER TABLE pbocp1 ADD COLUMN ma_khac c(10) ALTER TABLE pbocp1 ADD COLUMN tap_ct c(10) ALTER TABLE pbocp1 ADD COLUMN tk_no c(10) ALTER TABLE pbocp1 ADD COLUMN tk_co c(10) ALTER TABLE pbocp1 ADD COLUMN dien_giai c(50) ALTER TABLE pbocp1 ADD COLUMN thang n(2)

REPLAC all tap_ct with cTapct, thang with cuoiqui, tk_co with cTkco

Một phần của tài liệu Phân tích khả năng ứng dụng tin học trong công tác kế toán và xây dựng phần mềm kế toán cho cục địa chất và khoáng sản Việt Nam (Trang 77 - 112)

Tải bản đầy đủ (PDF)

(123 trang)