I. CÀI ĐẶT
Để có thể cài đặt và sử dụng được chương trình thì yêu cầu tối thiểu đối với chương trình như sau:
Phần cứng: Ram từ 64MB trở lên, sử dụng Petium 2 trở lên
Phần mềm: Sử dụng trong nhiều hệ điều hành khác nhau, không cần cài Visual FoxPro vì trong chương trình đã sẵn, sử dụng phông chữ ABC hay Vietkey
II.CÁC KẾT QỦA ĐẠT ĐƯỢC
1. Hệ thống
Chương trình cho phép phân quyền với người sử dụng, bao gồm các chức năng sau:
- Thoát
- Đăng nhập: Cho phép bạn đăng nhập vào chương trình với tài khoản và mật khẩu
- Quản lý người dùng: Cho phép admin có thể thêm người sử dụng, Xóa người sử dụng, đổi mật khẩu.
- Tham số hệ thống: Nguyên giá và thời gian sử dụng tài sản
2. Cập nhật dữ liệu
Cho phép cập nhật những danh mục sau:
- Danh mục nhóm tài sản
- Danh mục hợp đồng
- Danh mục nhà cung cấp
- Danh mục mục đích sử dụng
- Danh mục nguồn vốn
- Danh mục phòng ban
- Cập nhật tài sản
144 trang |
Chia sẻ: aloso | Lượt xem: 1643 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng hệ thống thông tin quản lí tài sản cố định trong ngân hàng nông nghiệp và phát triển nông thôn Nam Hà Nội, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
d_sd
C
5
Mã mục đích sử dụng (khóa chính)
2
Ten_md_sd
C
10
Tên mục đích sử dụng
3
Dac_diem
M
4
Đặc điểm của mục đích sử dụng
Bảng danh mục tình trạng
STT
Name
Type
Width
Decimal
Description
1
Ma_tinh_trang
C
5
Mã tình trạng ( khóa chính)
2
Tinh_trang
C
30
Tình trạng tài sản
Bảng danh mục theo dõi khấu hao
STT
Name
Type
Width
Decimal
Description
1
Ma_ts
C
5
Mã tài sản ( khóa ngoại)
2
STT
C
5
Số thứ tự khi thay đổi (khóa ngoại)
3
Ngay_bd
D
8
Ngày bắt đầu
4
Ngay_kt
D
8
Ngày kết thúc
5
Nguyen_gia
N
15
2
Nguyên giá
6
Thoi_gian_sd
N
10
0
Thời gian sử dụng
Quan hệ giữa các bảng được thiết lập
5. Thiết kế giải thuật
Giải thuật đăng nhập
Không
Có
Bắt đầu
Kết thúc
Nhập tên
và Mật khẩu
Hiện MH giao diện chính
Tên và MK hợp lệ?
Thông báo
sai tên hoặc
mật khẩu
Tiếp tuc?
Có
Không
Giải thuật nhật TS
Bắt đầu
Nhập mã TS
Nhập các thông tin khác về TS
Nhập tên TS
Tên trống?
Mã trùng hay trống?
Lưu TS vào CSDL
Kết thúc
Có lưu không?
Có
Không
Có
Có
Không
Không
Tiếp tục?
Không
Có
Giải thuật sửa đổi thông tin TS
Không
Lưu vào CSDL
Sửa đổi thông tin
Sửa đúng?
Kết thúc
Tiếp tục?
Có
Có
Không
Có
Không
Bắt đầu
Nhập mã TS cần sửa
Tìm kiếmthấy?
Thuật toán tìm kiếm
Không
Có
Có
Không
Bắt đầu
Kết thúc
Nhập tên TS
Tìm kiếm
thấy?
Hiện thông tin TS
Tiếp tục?
Thông báo không tìm thấy
Thuật toán báo cáo
Có
Không
Có
Không
Kết thúc
Chọn mẫu báo cáo
Mở Form báo cáo
Nhập điều kiện
Hiện báo cáo
In báo cáo
Điều kiện thỏa mãn?
In báo cáo?
Không
Tiếp tục ?
Có
Bắt đầu
Thông báo điều kiện không thảo mãn
6. Triển khai hệ thống
Một số giao diện chính của chương trình:
1. Form đăng nhập
Quản lý người sử dụng
Menu chương trình
Danh mục từ điểm
Cập nhật TS
Thay đổi nguyên giá, thời gian sử dụng
Đình chỉ sử dụng tài sản
Thanh lý Tài sản
Điều kiện tìm kiếm
Điều kiện tìm kiếm để xuất ra Sổ theo dõi tài sản
Điều kiện tìm kiếm để xuẩt ra Báo cáo tình trạng tài sản
Điều kiện lọc theo các tiêu đề, xuất ra các báo cáo tổng hợp về TSCĐ
Bảng điều kiện để xuất ra các báo cáo về khấu hao
Bảng điều kiện chọn xuất ra các danh mục từ điển
Một số mẫu báo cáo
Danh mục phòng ban
Thẻ tài sản
Báo cáo hiện trạng
Sổ theo dõi TSCĐ
Báo cáo trích khấu hao
CHƯƠNG IV. CÀI ĐẶT VÀ ĐÁNH GIÁ CHƯƠNG TRÌNH
I. CÀI ĐẶT
Để có thể cài đặt và sử dụng được chương trình thì yêu cầu tối thiểu đối với chương trình như sau:
Phần cứng: Ram từ 64MB trở lên, sử dụng Petium 2 trở lên
Phần mềm: Sử dụng trong nhiều hệ điều hành khác nhau, không cần cài Visual FoxPro vì trong chương trình đã sẵn, sử dụng phông chữ ABC hay Vietkey
II.CÁC KẾT QỦA ĐẠT ĐƯỢC
1. Hệ thống
Chương trình cho phép phân quyền với người sử dụng, bao gồm các chức năng sau:
Thoát
Đăng nhập: Cho phép bạn đăng nhập vào chương trình với tài khoản và mật khẩu
Quản lý người dùng: Cho phép admin có thể thêm người sử dụng, Xóa người sử dụng, đổi mật khẩu.
Tham số hệ thống: Nguyên giá và thời gian sử dụng tài sản
2. Cập nhật dữ liệu
Cho phép cập nhật những danh mục sau:
Danh mục nhóm tài sản
Danh mục hợp đồng
Danh mục nhà cung cấp
Danh mục mục đích sử dụng
Danh mục nguồn vốn
Danh mục phòng ban
Cập nhật tài sản
3. Theo dõi thay đổi
Chương trình cho phép theo dõi thay đổi của tất cả các danh mục đã cập
nhật. Quan trọng hơn là theo dõi được những thay đổi sau:
Thay đổi nguyên giá, thời gian sử dụng
Đình chỉ sử dụng
Tiếp tục sử dụng lại
Thanh lý tài sản
4. Tìm kiến
Chương trình tìm kiếm các tài sản theo các tiêu chí sau:
Mã tài sản
Tên tài sản
Mã nhóm tài sản
Mã nguồn vốn
Nguyên giá
Thời gian sử dụng
Ngày đưa vào sử dụng
Mã mục đích sử dụng
Mã phòng ban
Mã nhà cung cấp
Sô hợp đồng
Năm sản xuất
Trong năm hoặc từ khi bắt đầu hình thành chi nhánh
5. Lập và In các báo cáo
Đưa ra các điều kiện lọc nhất định để chọn báo cáo như sau:
. In các danh mục từ điển
In các danh mục từ điển theo thời gian Tức là ngày bất kỳ chọn xuất ra báo cáo
Danh mục phòng ban
Danh mục nhà cung cấp
Danh mục nguồn vốn
Danh mục hợp đồng
Danh mục nhóm tài sản
5.2. In các thẻ tài sản
Bất cứ một tài sản nào cũng xuất ra được một thẻ tài sản, được lọc các điều kiện như trong mục tìm kiếm
5.3. In các báo cáo về hiện trạng tài sản cố định
Bạn có thể chọn in báo cáo hiện trạng TSCĐ theo tiêu chí như:
Theo nhóm tài sản
Theo tất cả các tài sản hiện có
Tại một thời điểm cụ thể
Trong một khoảng thời gian nhất định
5.4. In các báo cáo theo dõi các biến động của TSCĐ trong kỳ
Xuất các báo cáo theo các tiêu chí sau:
Theo nhóm tài sản
Theo tất cả các tài sản hiện có
Theo quí
Theo tháng
Theo năm
Từ ngày đến ngày
Tại một thời điểm nhất định
In các báo cáo trích khấu hao
Xuất các báo cáo theo các tiêu chí sau:
Theo nhóm tài sản
Theo tất cả các tài sản hiện có
Theo quí
Theo tháng
Theo năm
Từ ngày đến ngày
Tại một thời điểm nhất định
III. ĐÁNH GIÁ CHƯƠNG TRÌNH
1. Ưu điểm
Chương trình đã đạt được những kết quả như trên. Có thể nói đã đáp ứng được những chức năng cơ bản đối quá trình quản lý đối với TSCĐ.
Có sự phân quyền đối với người sử dụng
Tính toán trong chương trình đều tự động, kế toán viên chỉ cần lọc điều kiện hiển thị liên quan đến TS
Các báo cáo được lập vào năm tài chính hay kỳ kế toán nhưng cũng rất linh động, có thể xuất ra các báo cáo tại bất kỳ thời điểm nào mà kế toán viên nhập vào và còn kèm theo các điều kiện lọc khác, kết quả của những báo cáo thực sự có ích cho quá trình quản lý TS, trích khấu hao tính vào chi phí kinh doanh trong kỳ…
Chương trình có giao diện đơn giản, dễ sử dụng, thân thiện với người sử dụng, các tính toán chính xác và đúng qui định do Bộ tài chính ban hành và qui định riêng của ngân hàng.
Dữ liệu lưu trữ an toàn thông qua một logfile.
2. Nhược điểm
Chương trình cũng có những hạn chế do người dùng lần đầu tiên làm một đề tài thực tế lớn, kiến thức và thời gian có hạn.
Chương trình không có sự kết nối với các cơ sở dữ liệu khác gây nên sự kém linh hoạt trong sử dụng
Chương trình mới dừng lại ứng dụng riêng cho NHNo&PTNT Nam Hà nội, chưa trở thành một chương trình có tính ứng dụng rộng rãi
Phân quyền chưa chi tiết với người sử dụng
Chưa có hỗ trợ cho người dùng.
3. Hướng phát triển đề tài
Trong ngành NH luôn đi đầu trong ứng dụng công nghệ thông tin, quản lý TSCĐ là một trong những chương trình có tính thực tế cao và hiện nay NH đang có kế hoạch sử dụng phần mềm tin học ứng dụng trong quản lý TSCĐ.
Chương trình có hệ thống báo cáo chuẩn, chính xác rất hiệu qủa trong việc quản lý TSCĐ. Trong tương lai em sẽ khắc phục những nhược điểm, thêm những chức năng ưu việt và chỉnh sửa cho chương trình trở nên chuyên nghiệp hơn. Hoàn thiện chương trình để chương trình có tính khả thi cao, có khả năng áp dụng rộng rãi không chỉ trong ngành ngân hàng.
KẾT LUẬN
Với những kiến thức đã học trong suốt bốn năm qua, đặc biệt là những kiến thức thực tế đã tích lũy được trong thời gian thực tập cùng với sự hướng dẫn tận tình của thầy P.GS-TS Hàn Viết Thuận và cán bộ hướng dẫn Nguyễn Danh Vận em đã chọn đề tài “ Xây dựng hệ thống thông tin Quản lí tài sản cố định trong NHNo&PTNT Nam Hà Nội” và đã hoàn thành luận văn tốt nghiệp của mình.
Ngân hàng là một ngành có tính chất đặc thù riêng, công nghệ thông tin đã được áp dụng từ rất sớm và khá hoàn chỉnh và đồng bộ song việc quản lý TSCĐ vẫn còn áp dụng một cách thủ công do vậy chương trình này được áp dụng để quản lý TSCĐ đặc thù trong NHNo&PTNT Nam Hà Nội, nhằm giúp cho quá trình quản lý được hoàn thiện hơn, đem lại hiệu quả kinh doanh cao hơn
Khi thực hiện luận văn em đã cố gắng để hoàn thành những mục tiêu đề ra ban đầu, song do khả năng còn hạn chế và thời gian có hạn nên em không tránh khỏi những thiếu xót. Vì vậy em rất mong được sự chỉ bảo của các thầy, các cô để luận văn được hoàn thiện và củng cố kiến thức của em trong tương lai.
Sau này khi có điều kiện em sẽ phát triển chương trình thành một phần mềm có khả năng áp dụng cho các chi nhánh ngân hàng khác hoặc các doanh nghiệp khác không phải ngành ngân hàng.
Một lần nữa em xin cảm ơn thầy PGS.TS Hàn Viết Thuận, các anh chị phòng Kế toán và Ngân quỹ trong NHNo&PTNT Nam Hà Nội, gia đình, bạn bè đã giúp em hoàn thành đề tài này.
Sinh viên
Đào Thị Lan Hương
TÀI LIỆU THAM KHẢO
Giáo trình cấu trúc dữ liệu và giải thuật
Tác giả: PGS.TS. Hàn Viết Thuận
NXB : Thống kê
Hà nội : 2005
Giáo trình Hệ thống thông tin quản lý
Tác giả: TS Trương Văn Tú – TS Trần Thị Song Minh
NXV : Thống kê
Hà nội : 2000
Những bài thực hành Visual FoxPro
Biên tập và biên soạn:VN- GUIDE và kĩ sư tin học Đinh Lâm Xuân
NXV : Thống kê
Phân tích thiết kế hệ thống thông tin quản lý
Tác giả: ThS Đinh Thế Hiển
NXV : Thống kê
Cơ sở dữ liệu
Tác giả: Trần Công Uẩn
NXB : Thống kê
Hà nội : 2000
Kế toán tài chính trong các doanh nghiệp
Tác giả: TS Đặng Thị Loan
NXB : Giáo dục
Hà nội : 2001
Tài liệu tập huấn tài sản cố định
Ngân hàng nông nghiệp và phát triển nông thôn Nam Hà nội
Hà nội : Tháng 4 năm 2004
Một số sách giáo trình và sách tham khảo khác
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Hà Nội, ngày …..tháng…..năm 2006
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Hà Nội, ngày …..tháng…..năm 2006
MỘT SỐ ĐOẠN CODE NGUỒN TIÊU BIỂU
Phần code gọi chương trình main
*** Main chuong trinh, dung de goi cac chuong trinh thuc thi khac
* Khoi tao moi truong
DO setenvi
* Khoi tao duong dan cho chuong trinh
PUBLIC M_root
CLEAR
_Prog = SYS(16)
_Vt = AT("\", _Prog,OCCURS("\", _Prog))
M_Root = SUBSTR(_Prog, 1, _Vt)
* Loai bo "Prog"
SET DEFA TO (M_Root)
* Khoi tao duong dan
DO Prog\p_setpath.prg
* Khoi tao cac bien he thong
DO (D_Prog + [p_setsysvar.prg])
DO khoitao IN (D_PROG+[p_setthongso])
* Khoi tao man hinh hien thi
WITH _Screen
.CLOSABLE=.F.
.ICON=(D_IMG+[program2.ico])
.ControlBox=.T.
.MaxButton=.F.
.MinButton=.T.
.Height=600
.Width=800
.Caption='Quan ly tai san co dinh'
.WindowState=2
.Picture=(D_IMG+[WINdowsXP.jpg])
ENDWITH
CLEA
* Vao chuong trinh chinh
ON KEY LABEL ALT+Q DO End
s_user=""
DO (D_PROG+[p_setmenu])
DO (D_PROG+[p_settoolbar])
DO FORM (D_FORM+[f_login])
* Ket thuc chuong trinh
READ EVENTS
ON KEY LABEL ALT+Q
RETURN
*------------------------------------
PROCEDURE ReleT
SET SYSMENU TO
IF WEXIST([Report controls])
HIDE WIND [Report controls]
ENDIF
IF WEXIST([Form Controls])
HIDE WIND [Form Controls]
ENDIF
IF WEXIST([Database Designer])
HIDE WIND [Database Designer]
ENDIF
IF WEXIST([Form Designer])
HIDE WIND [Form Designer]
ENDIF
IF WEXIST([Color Palette])
HIDE WIND [Color Palette]
ENDIF
IF WEXIST([Layout])
HIDE WIND [Layout]
ENDIF
IF WEXIST([Report Designer])
HIDE WIND [Report Designer]
ENDIF
IF WEXIST([Query Designer])
HIDE WIND [Query Designer]
ENDIF
IF WEXIST([View Designer])
HIDE WIND [View Designer]
ENDIF
IF WEXIST([Standard])
HIDE WIND [Standard]
ENDIF
RETURN
******************************
PROCEDURE setenvi
* Khoi tao gia tri moi truong
SET SAFETY OFF
SET TALK OFF
SET DATE DMY
SET DELETED ON
SET ESCAPE ON
SET EXAC ON
SET STATUS OFF
SET CENTURY ON
SET COLO TO B+/BG
SET STATUS BAR ON
DEFINE WINDOW WinBrw FROM 1, 0 TO FLOOR(SROWS()) - 1, FLOOR(SCOLS()) COLOR SCHEME 10;
CLOSE FLOAT GROW MINIMIZE ZOOM SYSTEM FONT [Vk sans serif],8
RETURN
***********************************
PROCEDURE End
SET Sysmenu TO DEFAULT
CLEAR ALL
CLEAR EVENTS
CLEAR
_vfp.StatusBar=""
_screen.Caption="Microsoft Visual Foxpro"
_screen.Picture=""
_screen.Icon=""
RETURN
Phần code để tạo menu tự động:
* Mo bang tb_menu
IF !USED('tb_menu')
USE (D_sys + [tb_menu]) ALIAS tb_menu IN 0
ELSE
SELECT tb_menu
ENDIF
SELECT tb_menu
* Sap xep theo khoa chi so thu 3
INDEX on tb_menu.menu_id+tb_menu.menu_id0 TAG menuindex
SET ORDER TO menuindex
* Tao menu tu bang tb_menu, thuat toan su dung cmenu_id, neu cmenu_id khong co gia tri thi no la Pad
CLEAR
SET SYSMENU TO && Lam mat het cac muc trong menu hien thoi
GO TOP
i=1
SCAN
IF EMPTY(tb_menu.menu_id0) THEN
************** Xac dinh tieu de menu *************
pa_menu="p_"+ ALLTRIM(tb_menu.menu_id)
DEFINE PAD &pa_menu OF _mSYSmenu PROMPT ALLTRIM(tb_menu.bar) SKIP FOR s_user=""
ON PAD &pa_menu OF _mSysmenu ACTIVATE POPUP &pa_menu
DEFINE POPUP &pa_menu MARGIN RELATIVE
ELSE
**************Xac dinh menu chi tiet***************
i=i+1
DEFINE BAR i OF &pa_menu PROMPT ALLTRIM(tb_menu.bar)
_Pro=ALLTRIM(tb_menu.procedure)
ON SELECTION BAR i OF &pa_menu &_PRo
ENDIF
ENDSCAN
Phần code để đăng nhập vào chương trình
* Doan chuong trinh phuc vu dang nhap, quan ly nguoi su dung
PROCEDURE tb_user_open
IF !USED('tb_user')
SELECT 0
USE (D_SYS+[tb_user]) ALIAS tb_user
ELSE
SELECT tb_user
ENDIF
ENDPROC
********************************************************
* Kiem tra trong danh muc co ton tai ten dang nhap khong
FUNCTION tb_user_login
* 1 ten nguoi dung khong ton tai, 2 Sai mat khau
*3 Dang nhap thanh cong
PARAMETERS _user,_passw
DO tb_user_open
GO top
LOCATE FOR UPPER(ALLTRIM(cuser))==UPPER(ALLTRIM(_user))
IF FOUND() then
_right=cright
GO top
LOCATE FOR ALLTRIM(cpassw)==ALLTRIM(_passw)
IF FOUND()
WAIT ' Ban da dang nhap thanh cong' WINDOW NOWAIT
*!* MESSAGEBOX(" Ban da dang nhap thanh cong",0,"Xin chao")
* Dua vao cac bien he thong
s_user=ALLTRIM(_user)
S_right=ALLTRIM(_right)
s_passw=ALLTRIM(_passw)
RETURN 3
ELSE
MESSAGEBOX("Ban da nhap sai mat khau")
RETURN 2
ENDIF
ELSE
MESSAGEBOX("Khong co tai khoan nguoi dung nay, ban hay nhap lai")
RETURN 1
ENDIF
RETURN
*************************************************************
* THem nguoi dung moi vao trong danh sach
Function tb_user_Them
PARAMETERS _user,_passw1,_passw2
* kiem tra xem nguoi dung nhap vao co trong danh sach khong
* 1, ten nguoi dung da bi trung, 2 mat khau khong khop nhau
* 3 Them thanh cong
DO tb_user_open
GO TOP
SET ORDER TO 1
IF !SEEK(ALLTRIM(_user))
* Kiem tra ma co trung khong
IF ALLTRIM(_passw1)==ALLTRIM(_passw2)
MESSAGEBOX("Da them nguoi dung vao he thong",0,"Thong bao")
RETURN 3
ELSE
MESSAGEBOX("Hai mat khau khong khop nhau",0,"Thong bao")
RETURN 2
ENDIF
ELSE
MESSAGEBOX("Da co nguoi dung nay trong danh sach")
RETURN 1
ENDIF
ENDFUNC
*****************Doi mat khau***********************************
FUNCTION tb_user_SuaPass
PARAMETERS _passcu,_passw1,_passw2
* SO sanh voi S_Passw xem trung khong
* 1 khong trung, 2 2 pass word khong khop
* 3 Doi pass thanh cong
IF ALLTRIM(_passcu)==ALLTRIM(S_passw) then
IF ALLTRIM(_passw1)==ALLTRIM(_passw2)
MESSAGEBOX("Mat khau da duoc doi",0,"Thong bao")
s_passw=ALLTRIM(_passw1)
RETURN 3
ELSE
MESSAGEBOX("Hai mat khau khong khop nhau",0,"Thong bao")
RETURN 2
ENDIF
ELSE
MESSAGEBOX("Khong khop so voi mat khau cu")
RETURN 1
ENDIF
RETURN
******************Xoa nguoi dung*****************************
* Chi co nguoi co tai khoan loai Admin moi dc xoa nguoi su dung
* S_right='Admin'
FUNCTION tb_user_xoa
* Khong dc xoa tai khoan co user la Admin, khong dc xoa tai khoan la chinh minh
* Combo box hien thi se luoc bo 2 nguoi nay
ENDFUNC
Phần code gọi danh mục và cập nhật, sửa xóa cho các danh mục
Danh mục hợp đồng
* Program nhap 0them xoa sua cho danh muc khach hang
* tham so neu la nhap moi
PROCEDURE tb_dmhd_Open
IF !USED("tb_dmhd")
use (D_DATA+[tb_dmhd]) ALIAS tb_dmhd IN 0
ELSE
SELECT tb_dmhd
ENDIF
ENDPROC
**********************************************
PROCEDURE tb_dmhd_init
* Khai bao bien
PUBLIC m.so_hd,m.loai_hd, _Moi_sua,_prompt,_recno,_macu
&&_MOI_SUA de luu trang thai X- xem, S-sua,M-them moi
STORE "" to m.so_hd,m.loai_hd,_prompt
ENDPROC
PROCEDURE tb_dmhd_F4
SELECT tb_dmhd
SCATTER memvar MEMO BLANK
_Moi_sua=[M]
_Prompt="Them mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1hd])
POP key
ENDPROC
**************************************************
PROCEDURE tb_dmhd_F3
SELECT tb_dmhd
SCATTER memvar Memo
_recno=RECNO()
_macu=m.so_hd
_Moi_Sua=[S]
_prompt="Sua mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1hd])
POP key
ENDPROC
************************************************
PROCEDURE tb_dmhd_F8
SELECT tb_dmhd
IF MESSAGEBOX("Co chac muon xoa?",4,"Chu y")=6 then
DELETE
USE IN cur_dmhd
Pack
IF !EOF()
SKIP
ENDIF
IF EOF() and !BOF()
SKIP -1
ENDIF
ENDIF
ENDPROC
***************************************************
PROCEDURE tb_dmhd_ESC
CLOSE ALL
* Dong bang bang nut
ENDPROC
***************************************************
FUNCTION tb_dmhd_nhan
SELECT tb_dmhd
SET ORDER TO 1
tm=.F.
* Kiem tra ma trong
IF EMPTY(m.so_hd) OR Empty(m.loai_hd) then
MESSAGEBOX("Ban da de trong truong ma hoac truong ten hoac truong ma nhom khach hang",0,"Chu y")
ELSE
* them cac kiem tra khac neu can
* kiem tra ma trung
IF _Moi_sua=[M] then
IF SEEK(ALLTRIM(m.so_hd))
MESSAGEBOX("Ma da co trong danh muc")
ELSE
* Cap nhat vao bang
APPEND blank
GATHER memvar memo
tm=.T.
ENDIF
ELSE
IF SEEK(ALLTRIM(m.so_hd)) and (_recno#RECNO())
MESSAGEBOX("Ma da co trong danh muc")
ELSE
GO _recno
GATHER memvar Memo
tm=.T.
ENDIF
ENDIF
ENDIF
return tm
****************************************************
PROCEDURE tb_dmhd_huy
ENDPROC
*****************************************************
PROCEDURE tb_dmhd_Xem
SELECT tb_dmhd
_moi_sua=[X]
_recno=RECNO()
_prompt="Thong tin chi tiet mot ban ghi"
PUSH KEY CLEAR
DO FORM (D_FORM+[f_dm1hd])
POP KEY
ENDPROC
*****************************************************
PROCEDURE tb_dmhd_chitiet
SELECT tb_dmhd
ENDPROC
Danh muc phong ban
* Program nhap 0them xoa sua cho danh muc khach hang
* tham so neu la nhap moi
PROCEDURE tb_dmpb_Open
IF !USED("tb_dmpb")
use (D_DATA+[tb_dmpb]) ALIAS tb_dmpb IN 0
ELSE
SELECT tb_dmpb
ENDIF
ENDPROC
**********************************************
PROCEDURE tb_dmpb_init
* Khai bao bien
PUBLIC m.ma_pb,m.ten_pb, _Moi_sua,_prompt,_recno,_macu
&&_MOI_SUA de luu trang thai X- xem, S-sua,M-them moi
STORE "" to m.ma_pb,m.ten_pb,_prompt
ENDPROC
PROCEDURE tb_dmpb_F4
SELECT tb_dmpb
SCATTER memvar MEMO BLANK
_Moi_sua=[M]
_Prompt="Them mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1pb])
POP key
ENDPROC
**************************************************
PROCEDURE tb_dmpb_F3
SELECT tb_dmpb
SCATTER memvar Memo
_recno=RECNO()
_macu=m.ma_pb
_Moi_Sua=[S]
_prompt="Sua mot ban ghi"
PUSH KEY Clear
do form (D_FORM+[f_dm1pb])
POP key
ENDPROC
************************************************
PROCEDURE tb_dmpb_F8
SELECT tb_dmpb
IF MESSAGEBOX("Co chac muon xoa?",4,"Chu y")=6 then
DELETE
USE IN cur_dmpb
Pack
IF !EOF()
SKIP
ENDIF
IF EOF() and !BOF()
SKIP -1
ENDIF
ENDIF
ENDPROC
***************************************************
PROCEDURE tb_dmpb_ESC
CLOSE ALL
* Dong bang bang nut
ENDPROC
***************************************************
FUNCTION tb_dmpb_nhan
SELECT tb_dmpb
SET ORDER TO 1
tm=.F.
* Kiem tra ma trong
IF EMPTY(m.ma_pb) OR Empty(m.ten_pb) then
MESSAGEBOX("Ban da de trong truong ma hoac truong ten hoac truong ma nhom khach hang",0,"Chu y")
ELSE
* them cac kiem tra khac neu can
* kiem tra ma trung
IF _Moi_sua=[M] then
IF SEEK(ALLTRIM(m.ma_pb))
MESSAGEBOX("Ma da co trong danh muc")
ELSE
* Cap nhat vao bang
APPEND blank
GATHER memvar memo
tm=.T.
ENDIF
ELSE
IF SEEK(ALLTRIM(m.ma_pb)) and (_recno#RECNO())
MESSAGEBOX("Ma da co trong danh muc")
ELSE
GO _recno
GATHER memvar Memo
tm=.T.
ENDIF
ENDIF
ENDIF
return tm
****************************************************
PROCEDURE tb_dmpb_huy
ENDPROC
*****************************************************
PROCEDURE tb_dmpb_Xem
SELECT tb_dmpb
_moi_sua=[X]
_recno=RECNO()
_prompt="Thong tin chi tiet mot ban ghi"
PUSH KEY CLEAR
DO FORM (D_FORM+[f_dm1pb])
POP KEY
ENDPROC
*****************************************************
PROCEDURE tb_dmpb_chitiet
SELECT tb_dmpb
ENDPROC
Phần code hiện danh mục người sử dụng
******************************************************************************************
* tb_dmts_F3 Sua or them moi tai san
* tb_dmts_Nhan Luu nhan vien
* tb_dmts_F10 Sap xep danh muc tai san
SET SAFETY OFF
SET DATE TO dmy
CLOSE TABLES all
DO open_table WITH 'tb_dmnts','ma_nts'
DO open_table WITH 'tb_dmhd','so_hd'
DO open_table WITH 'tb_dmpb','ma_pb'
DO open_table WITH 'tb_dmnvon','ma_nvon'
DO open_table WITH 'tb_dmncc','ma_ncc'
DO open_table WITH 'tb_md_sd','ma_md_sd'
DO open_table WITH 'tb_dmts','ma_ts'
DO open_table WITH 'tb_tinh_trang','ma_tinh_tr'
PUBLIC m.ma_ts,m.ten_ts,m.ma_nts,m.so_hd,m.ma_ncc,m.Ma_pb,m.ma_md_sd,m.ma_tinh_tr,;
m.Ngay_sd,m.Nguyen_gia,m.thoi_gian_sd,m.Nam_sx,m.nuoc_sx
STORE "" TO m.ma_ts,m.ten_ts,m.ma_nts,m.so_hd,m.ma_ncc,m.Ma_pb,m.ma_md_sd,m.ma_tinh_tr,;
m.Ngay_sd,m.Nguyen_gia,m.thoi_gian_sd,m.Nam_sx,m.nuoc_sx
ON KEY LABEL F3 DO tb_dmts_F3 with [S]
ON KEY LABEL F4 DO tb_dmts_F3 with [M]
ON KEY LABEL F8 DO tb_dmts_F8
ON KEY LABEL F9 DO tb_dmts_F9
ON KEY LABEL F10 do tb_dmts_F10
SELECT tb_dmts
BROWSE FIELDS
ma_ts :H = [M· tµi s¶n] :10,;
ten_ts :H = [Tªn tµi s¶n] :30,;
ngay_sd :H = [Ngµy sö dông] :10,;
nguyen_gia :H = [Nguyªn gi¸] :15,;
thoi_gian_sd :H = [Thêi gian sö dông]:10,;
nam_sx :H = [N¨m s¶n xuÊt] :7,;
nuoc_sx :H = [Níc s¶n xuÊt] :15,;
ma_nts :H = [M· nhãm TS] :9,;
ma_nvon :H = [M· nguån vèn] :9,;
so_hd :H = [Sè hîp ®ång] :9,;
ma_ncc :H = [M· nhµ cc] :9,;
Ma_pb :H = [M· phßng ban] :9,;
ma_md_sd :H = [M· md sd] :9,;
ma_tinh_tr: H = [M· t×nh tr¹ng]:9;
FONT [VK sans serif],9;
FOR ALLTRIM(Ma_tinh_tr)='DSD' ;
TITLE "F3-Sua, F4-Them moi,F8-Thay doi tinh trang, F9-Loc,F10-Sap xep ESC-Thoat" NOAPPEND NOMODIFY NODELETE WINDOW WinBrw
ON KEY LABEL F3
ON KEY LABEL F4
ON KEY LABEL F8
ON KEY LABEL F9
ON KEY LABEL F10
USE IN tb_dmnts
USE in tb_dmhd
USE in tb_dmpb
USE IN tb_dmnvon
USE IN tb_dmncc
USE IN tb_md_sd
USE IN tb_dmts
USE IN tb_tinh_trang
IF USED([Temp7])
USE IN Temp7
ENDIF
************************************ PROCEDURE tb_dmts_F3 **************************************
PROCEDURE tb_dmts_F3
LPARAMETERS _M_S
_InSELECT = SELECT()
_Recno = RECNO()
STORE _M_S TO _Moi_Sua
PUSH KEY CLEAR
IF _Moi_Sua = [S] AND RECNO() > RECCOUNT([tb_dmts])
POP KEY
SELECT (_InSELECT)
RETURN
ENDIF
SELECT tb_dmts
IF _Moi_Sua = [M]
SCATTER MEMVAR MEMO BLANK
ELSE
GO _Recno
SCATTER MEMVAR MEMO
ENDIF
M.ma_ts_old = M.ma_ts
M.Ngay_td = DATE()
M.User_Id = ALLTRIM(S_user)
_Caption = IIF(_Moi_Sua = [M],"Them moi mot TSCD","Sua chua thong tin tscd")
* Tim kiem ten tron danh muc
=SEEK(M.ma_ncc,[tb_dmncc])
M.Ten_ncc=IIF(FOUND([tb_dmncc]),tb_dmncc.ten_ncc,[])
=SEEK(M.ma_nts,[tb_dmnts])
M.Ten_nts=IIF(FOUND([tb_dmnts]),tb_dmnts.ten_nts,[])
=SEEK(M.ma_md_sd,[tb_md_sd])
M.Ten_md_sd=IIF(FOUND([tb_md_sd]),tb_md_sd.ten_md_sd,[])
=SEEK(M.ma_nvon,[tb_dmnvon])
M.Ten_nvon=IIF(FOUND([tb_dmnvon]),tb_dmnvon.ten_nvon,[])
=SEEK(M.ma_pb,[tb_dmpb])
M.Ten_pb=IIF(FOUND([tb_dmpb]),tb_dmpb.ten_pb,[])
=SEEK(M.ma_tinh_tr,[tb_tinh_trang])
M.tinh_trang=IIF(FOUND([tb_tinh_trang]),tb_tinh_trang.tinh_trang,[])
ON KEY LABEL F9 KEYBOARD CHR(23)
DO FORM (D_FORM + [f_dmts_F3]) NAME _SCX LINKED
ON KEY LABEL F9
POP KEY
SELECT (_InSelect)
RETURN
************************************ PROCEDURE _Nhan
FUNCTION tb_dmts_F3_Nhan
PARAMETERS M_Nhan
SELECT tb_dmts
IF LASTKEY()= 27 OR M_Nhan 1
IF _Recno<=RECCOUNT([tb_dmts])
GO _Recno
_SCX = ""
ENDIF
_SCX = ""
RETURN .T.
ELSE
IF M_Nhan = 1
* Luu gia tri vao cac bang
* Truong hop them moi, cac cong viec gom luu vao bang dmtscd, logfile va bang theo doi
If _Moi_Sua = [M]
*Chuan bi cac gia tri ve thoi gian, nguoi su dung trong bang log file
M.Ngay_td = m.Ngay_sd
M.User_Id = alltrim(s_user)
m.ma_tdoi='TMTS'
m.stt="01"
m.ngay_bd=m.ngay_sd
m.Ma_tinh_tr='DSD'
* Ghi vao cac bang
SELECT tB_dmts
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN tb_dmts
DO open_table WITH 'logfile','ma_ts'
SELECT logfile
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN logfile
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN theo_doi
ELSE
*Truong hop sua chua thong tin trong bang danh muc tscd, phai ghi vao bang logfile
* va danh muc tscd
M.Ngay_td = DATE()
M.User_Id = alltrim(s_user)
m.ma_tdoi='TDTT'
m.stt=stt_min('logfile',m.ma_ts)
m.ngay_bd=m.ngay_sd
m.Ma_tinh_tr='DSD'
* Ghi thong tin vao bang dmts
SELECT tb_dmts
GO _Recno
GATHER MEMVAR memo
FLUSH
UNLOCK IN tb_dmts
* Ghi thong tin vao bang logile
DO open_table WITH 'logfile','ma_ts'
SELECT logfile
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN logfile
ENDIF
_SCX = ""
ENDIF
ENDIF
SELECT tb_dmts
RETURN .T.
****************************************Function dua ra dc stt nho nhat theo ma_ts********
FUNCTION stt_min
PARAMETERS tablename,_ma_ts
DO open_table WITH tablename,'ma_ts'
_max=0
SCAN FOR ma_ts=ALLTRIM(_ma_ts)
_max=IIF(_max<VAL(stt),VAL(stt),_max)
ENDSCAN
_max=_max+1
IF _MAX<10 then
RETURN ("0"+ALLTRIM(STR(_max)))
ELSE
RETURN ALLTRIM(STR(_max))
ENDIF
RETURN .T.
*!* *************************** PROCEDURE tb_dmts_F8 **************************************
PROCEDURE tb_dmts_F8
CLEAR
_recno=RECNO()
IF RECNO() > RECCOUNT([tb_dmts])
RETURN .T.
ENDIF
IF (MESSAGEBOX('Se dinh chi TSCD nay. Ban chac chan chu?',4+32+256,'Chu y') 6)
GO _Recno
RETURN
ENDIF
_date=INPUTBOX(" Hay nhap ngay dinh chi su dung "," Nhap gia tri",DTOC(DATE()),15000,DTOC(DATE()),'0')
_date=CTOD(_date)
SELECT tb_dmts
GO _recno
SCATTER MEMVAR memo
m.ma_tinh_tr="KSD"
* Phai chuan bi tham so ngay thang va nguoi su dung them vao de ghi vao logfile
M.ngay_td = _date
M.User_Id = ALLTRIM(s_user)
M.ma_tinh_tr="KSD"
M.stt=stt_min('logfile',m.ma_ts)
m.ma_tdoi="DCTS"
* Thuc hien ghi vao logfile
DO open_table WITH 'logfile','ma_ts'
APPEND BLANK
GATHER MEMVAR memo
* Thuc hien ghi vao bang theo doi
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
SCAN FOR ma_ts=ALLTRIM(m.ma_ts)
_rn=RECNO()
ENDSCAN
GO _rn
SCATTER MEMVAR memo
m.ngay_kt=_date
GATHER MEMVAR memo
* Cap nhat lai tinh trang vao bang dmts
SELECT tb_dmts
GATHER MEMVAR
RETURN .T.
*!* ************************************ PROCEDURE tb_dmts_F9 **************************************
PROCEDURE tb_dmts_F9
PRIVATE _Form
PUSH KEY
DO FORM (D_Form + [f_dmts_F9]) NAME _Form LINKED
POP KEY
ENDPROC
*************** ************Nhan cua F9******************************
PROCEDURE tb_dmts_F9_Nhan
PARAMETERS _NhanHuy
PRIVATE _key
_key=".T."
IF _NhanHuy 1
_Form = ""
RETURN
ENDIF
_Form = ""
SELECT tb_dmts
* Phan ten va ma, co chon lua nam trong hay bat dau
IF !EMPTY(ALLTRIM(M.ma_ts))
_key = "ma_ts = ALLTRIM(M.ma_ts)"
ENDIF
IF !EMPTY(ALLTRIM(M.ten_ts))
IF _c=1
_key = _key + ' AND ALLTRIM(M.ten_ts) $ ALLTRIM(ten_ts)'
ELSE
_key = _key + ' AND ten_ts =ALLTRIM(M.ten_ts)'
ENDIF
ENDIF
* Phan ma cac bang ngoai lai
IF !EMPTY(ALLTRIM(M.Ma_nts))
_key = _key + ' AND Ma_nts=ALLTRIM(M.Ma_nts)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_nvon))
_key = _key + ' AND Ma_nvon=ALLTRIM(M.Ma_nvon)'
ENDIF
IF !EMPTY(ALLTRIM(M.so_hd))
_key = _key + ' AND So_hd=ALLTRIM(M.So_hd)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_ncc))
_key = _key + ' AND Ma_ncc=ALLTRIM(M.Ma_ncc)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_pb))
_key = _key + ' AND Ma_pb=ALLTRIM(M.Ma_pb)'
ENDIF
IF !EMPTY(ALLTRIM(M.Ma_md_sd))
_key = _key + ' AND Ma_md_sd=ALLTRIM(M.Ma_md_sd)'
ENDIF
* Phan so sanh cac dieu kien
IF !EMPTY(ALLTRIM(M.thoi_gian_sd))
_key = _key + ' AND thoi_gian_sd' + ptThoi_Gian_sd+'val(ALLTRIM(m.thoi_gian_sd))'
ENDIF
IF !EMPTY(ALLTRIM(M.Ngay_sd))
_key = _key + ' AND Ngay_sd' + ptNgay_sd+'ctoD(ALLTRIM(m.Ngay_sd))'
ENDIF
IF !EMPTY(ALLTRIM(M.Nguyen_gia))
_key = _key + ' AND Nguyen_gia' + ptNguyen_Gia+'val(ALLTRIM(m.Nguyen_gia))'
ENDIF
IF !EMPTY(ALLTRIM(M.Nam_sx))
_key = _key + ' AND Nam_sx' + ptNam_sx+'val(ALLTRIM(m.Nam_sx))'
ENDIF
SET FILTER TO &_key
GO TOP
RETURN
ENDPROC
*!* ************************************ PROCEDURE tb_dmts_F10 **************************************
PROCEDURE tb_dmts_F10
PRIVATE _Form
PUSH KEY
DO FORM (D_FORM + [f_dmts_F10.scx]) NAME _form linked
POP KEY
RETURN
*****************************Nhan F10**************************
PROCEDURE tb_dmts_F10_nhan
PARAMETERS _N_H,_sx,_c
IF _N_H=0 THEN
_form=""
RETURN
ENDIF
_Form=""
***** _sx Nguon cua Combobox, _c Nguon cua option button
SELECT tb_dmts
DO CASE
* Theo ma ts
CASE _sx = [1] AND _c=1
SET ORDER TO ma_ts ASCENDING
CASE _sx = [1] AND _c=2
SET ORDER TO ma_ts DESCENDING
* Theo ten ts
CASE _sx = [2] AND _c=1
SET ORDER TO ten_ts ASCENDING
CASE _sx = [2] AND _c=2
SET ORDER TO ten_ts DESCENDING
* Theo Ma_nts
CASE _sx = [3] AND _c=1
SET ORDER TO ma_nts ASCENDING
CASE _sx = [3] AND _c=2
SET ORDER TO ma_nts DESCENDING
* Theo ngay dua vao su dung
CASE _sx = [4] AND _c=1
SET ORDER TO Ngay_sd ASCENDING
CASE _sx = [4] AND _c=2
SET ORDER TO Ngay_sd DESCENDING
* Theo nguyen gia
CASE _sx = [5] AND _c=1
SET ORDER TO Nguyen_gia ASCENDING
CASE _sx = [5] AND _c=2
SET ORDER TO Nguyen_gia DESCENDING
* Theo thoi gian su dung
CASE _sx = [6] AND _c=1
SET ORDER TO thoi_gian_sd ASCENDING
CASE _sx = [6] AND _c=2
SET ORDER TO thoi_gian_sd DESCENDING
ENDCASE
RETURN
************************Prcocedure mo mot bang*************************
PROCEDURE open_table
PARAMETERS tbName, ma_dt
IF !USED(tbname)
SELECT 0
USE (D_DATA+tbName) order &ma_dt ALIAS &tbName SHARED
ELSE
SELECT &tbName
SET ORDER TO &ma_dt
ENDIF
RETURN
Phần code quản lý thanh lý tài sản
*******************************Tiep tuc su dung mot tscd***************
PROCEDURE tl_tscd_F3
PUSH KEY
_recno=RECNO()
* Khoi phuc lai nhung tscd da dinh chi su dung
IF (MESSAGEBOX('Tiep tuc su dung TSCD nay, co chac chan khong?',4+32+256,'Chu y') 6)
GO _Recno
RETURN
ENDIF
_date=INPUTBOX(" Hay nhap ngay tiÕp tôc sö dông su dung "," Nhap gia tri",DTOC(DATE()),15000,DTOC(DATE()),'0')
*!* IF _date='0' THEN
*!* GO _recno
*!* RETURN
*!* ENDIF
_date=CTOD(_date)
SELECT tb_dmts
SCATTER MEMVAR memo
m.ma_tinh_tr="DSD"
* Phai chuan bi tham so ngay thang va nguoi su dung them vao de ghi vao logfile
M.ngay_td = _date
M.User_Id = ALLTRIM(s_user)
M.ma_tinh_tr="DSD"
M.stt=stt_min('logfile',m.ma_ts)
m.ma_tdoi="TTSD"
* Thuc hien ghi vao logfile
DO open_table WITH 'logfile','ma_ts'
APPEND BLANK
GATHER MEMVAR memo
* Thuc hien ghi vao bang theo doi
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
SCAN FOR ma_ts=ALLTRIM(m.ma_ts)
_rn=RECNO()
ENDSCAN
GO _rn
SCATTER MEMVAR memo
m.ngay_kt=""
GATHER MEMVAR memo
* Cap nhat lai tinh trang vao bang dmts
SELECT tb_dmts
GATHER MEMVAR
POP KEY
RETURN
******************************Thanh ly mot scd*************************
PROCEDURE tl_tscd_F4
PUSH KEY
* Goi form de theo doi so tien thanh ly tscd
SELECT tb_dmts
_recno=RECNO()
SCATTER MEMVAR memo
DO FORM (D_FORM+[f_thanhly]) NAME _scx LINKED
POP KEY
RETURN
************************************ PROCEDURE _Nhan **************************************
PROCEDURE tl_tscd_F4_nhan
PARAMETERS M_nhan
SELECT tb_dmts
IF LASTKEY()=27 OR M_nhan1
IF _Recno<=RECCOUNT([tb_dmts])
GO _Recno
_SCX = ""
ENDIF
_SCX = ""
RETURN .T.
ELSE
* Phai them vao bang logfile cac gia tri,
* dong thoi xoa han trong bang danh muc tscd
* cac thong tin ve tscd
* Chuan bi cac gia tri vao bang logfile
DO open_table WITH 'logfile','ma_ts'
DO open_table WITH 'theo_doi','ma_ts'
m.user_id=ALLTRIM(s_user)
m.stt=stt_min('logfile',m.ma_ts)
m.ma_tdoi='TLTS'
m.ma_tinh_tr='DTL'
SELECT logfile
APPEND BLANK
GATHER MEMVAR MEMO
* Xoa bo cac ban ghi trong bang theo_doi khau hao
SELECT theo_doi
SCAN FOR ALLTRIM(ma_ts)=ALLTRIM(m.ma_ts)
DELETE
ENDSCAN
* Xoa bo cac ban ghi trong bang logfile
* Xoa bo ban ghi ve tscd
SELECT tb_dmts
GO _recno
GATHER MEMVAR MEMO
SET EXCLUSIVE ON
DELETE
_scx=""
ENDIF
RETURN
****************************************Function dua ra dc stt nho nhat theo ma_ts********
FUNCTION stt_min
PARAMETERS tablename,_ma_ts
DO open_table WITH tablename,'ma_ts'
_max=0
SCAN FOR ma_ts=ALLTRIM(_ma_ts)
_max=IIF(_max<VAL(stt),VAL(stt),_max)
ENDSCAN
_max=_max+1
IF _MAX<10 then
RETURN ("0"+ALLTRIM(STR(_max)))
ELSE
RETURN ALLTRIM(STR(_max))
ENDIF
RETURN .T.
Phần code thay đổi nguyên giá tscđ
************************************ PROCEDURE tb_dmts_F3 **************************************
PROCEDURE nguyen_gia_F3
SELECT tb_dmts
_InSELECT = SELECT()
_Recno = RECNO()
SCATTER MEMVAR memo
PUSH KEY CLEAR
ON KEY LABEL F9 KEYBOARD CHR(23)
DO FORM (D_FORM + [f_nguyen_gia]) NAME _SCX LINKED
ON KEY LABEL F9
POP KEY
SELECT (_InSelect)
RETURN
************************************ PROCEDURE _Nhan **************************************
********************************************************************************************
FUNCTION Nguyen_gia_F3_Nhan
PARAMETERS M_Nhan
SELECT tb_dmts
IF LASTKEY()= 27 OR M_Nhan 1
IF _Recno<=RECCOUNT([tb_dmts])
GO _Recno
_SCX = ""
ENDIF
_SCX = ""
RETURN .T.
ELSE
IF M_Nhan = 1
nguyen_gia_moi=m.nguyen_gia
_ngaytd=m.ngay_td
tg_sd_moi=m.thoi_gian_sd
* Luu gia tri vao cac bang
*Chuan bi cac gia tri ve thoi gian, nguoi su dung trong bang log file
M.User_Id = alltrim(s_user)
m.ma_tdoi=IIF(_c=1,'NCTS','DGTS' )
m.stt=stt_min('logfile',m.ma_ts)
* Ghi vao danh muc tscd
SELECT tB_dmts
GATHER MEMVAR memo
FLUSH
UNLOCK IN tb_dmts
* Ghi vao logfile
DO open_table WITH 'logfile','ma_ts'
SELECT logfile
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN logfile
* Trong bang theo doi can phai tinh dc gtcl, thoi gian sd con lai
DO open_table WITH 'theo_doi','ma_ts'
SELECT theo_doi
* Den ban ghi cuoi cung
SCAN FOR ALLTRIM(ma_ts)=ALLTRIM(m.ma_ts)
_rn=RECNO()
ENDSCAN
GO _rn
SCATTER MEMVAR memo
m.ngay_kt=m.ngay_td
GATHER MEMVAR memo
* Tinh gia tri cl, tg_sd_cl
SET PROCEDURE TO (D_PROG+[tinh_kh.prg])
_tg=(nguyen_gia_moi-KH_1td(m.ma_ts,m.ngay_td))
m.nguyen_gia=IIF(_tg>0,_tg,0)
m.thoi_gian_sd=tg_sd_moi-(YEAR(_ngaytd)-YEAR(m.ngay_sd))*12+(MONTH(_ngaytd)-MONTH(m.ngay_sd))
RELEASE PROCEDURE (D_PROG+[tinh_kh.prg])
m.ngay_bd=m.ngay_td
m.ngay_kt=""
m.stt=stt_min('theo_doi',m.ma_ts)
SELECT theo_doi
APPEND BLANK
GATHER MEMVAR memo
FLUSH
UNLOCK IN theo_doi
_SCX = ""
ENDIF
endif
RETURN
Phần code tạo ra các báo cáo
Lập báo cáo thẻ tscđ
PROCEDURE in_the_F3
SET PROCEDURE TO (D_PROG+[tinh_kh])
ngay_lap=INPUTBOX(" Ngay lap bao cao "," Nhap gia tri",DTOC(DATE()),15000,DTOC(DATE()),'0')
ngay_lap=CTOD(ngay_lap)
SELECT tb_dmts
SCATTER MEMVAR memo
SELECT dmts.*,theo_doi.*,dmts.nguyen_gia as NG_ht,theo_doi.nguyen_gia as NG_td, ;
dmts.thoi_gian_sd as TG_ht,theo_doi.thoi_gian_sd as TG_td ;
FROM (D_Data+[tb_dmts]) as dmts INNER JOIN (D_Data+[theo_doi]) as theo_doi ON dmts.ma_ts=theo_doi.ma_ts ;
where ALLTRIM(dmts.ma_ts)=m.ma_ts;
INTO TABLE (D_TEMP+[bc_1ts_tg])
* thay doi gia tri trong bang
GO BOTTOM
IF bc_1ts_tg.ngay_kt={ / / }
IF ngay_lap>ng_het_kh(bc_1ts_tg.ngay_bd,bc_1ts_tg.thoi_gian_)
replace bc_1ts_tg.ngay_kt WITH ng_het_kh(bc_1ts_tg.ngay_bd,bc_1ts_tg.thoi_gian_)
ELSE
replace bc_1ts_tg.ngay_kt WITH ngay_lap
ENDIF
ENDIF
* tinh khau hao
SELECT tg.*, kh_2td(tg.ma_ts_a,tg.ngay_sd,tg.ngay_kt) as khlk,;
(tg.NG_td/tg.TG_td) as Mkh, (tg.NG_ht- kh_2td(tg.ma_ts_a,tg.ngay_sd,tg.ngay_kt)) as gtcl ;
FROM (D_TEMP+[bc_1ts_tg]) as tg ;
INTO TABLE (D_TEMP+[bc_1ts])
* Goi bao cao
REPORT FORM (D_REPO+[r_thets.frx]) preview
Báo cáo hiện trạng tscđ
SET PROCEDURE TO (D_PROG+[tinh_kh])
ngay_lap=thisform.txtNgay_lap.Value
ngay_th=CTOD(ALLTRIM(thisform.txtNgay_th.Value))
m.ma_nts=thisform.cboMa_nts.Value
IF (ngay_lap={ / / } or ngay_th={ / / }) then
MESSAGEBOX("Ngay thang nhap khong dung hay nhap lai",0,"Chu y")
thisform.txtNgay_lap.SetFocus
ELSE
* cap nhat query, goi bao cao
IF empty(thisform.cboMa_nts.Value) then
SELECT dmts.*,dmnts.*,ti_tr.*,kh_1td(dmts.ma_ts,ngay_th) as khlk,(dmts.nguyen_gia-kh_1td(dmts.ma_ts,ngay_th)) as gtcl;
FROM (D_DATA+[tb_dmts]) as dmts INNer JOIN (D_DATA+[tb_dmnts]) as dmnts ON dmts.ma_nts=dmnts.ma_nts ;
INNER JOIN (D_DATA+[tb_tinh_trang])as ti_tr ON ti_tr.ma_tinh_tr=dmts.ma_tinh_tr ;
WHERE (dmts.ngay_sd<=ngay_th) ;
ORDER BY dmnts.ma_nts;
INTO TABLE (D_TEMP+[bc_thts])
ELSE
SELECT dmts.*,dmnts.*,ti_tr.*,kh_1td(dmts.ma_ts,ngay_th) as khlk,(dmts.nguyen_gia-kh_1td(dmts.ma_ts,ngay_th)) as gtcl;
FROM (D_DATA+[tb_dmts]) as dmts INNer JOIN (D_DATA+[tb_dmnts]) as dmnts ON dmts.ma_nts=dmnts.ma_nts ;
INNER JOIN (D_DATA+[tb_tinh_trang])as ti_tr ON ti_tr.ma_tinh_tr=dmts.ma_tinh_tr ;
WHERE ALLTRIM(dmts.ma_nts)=ALLTRIM(thisform.cboMa_nts.Value) ;
AND (dmts.ngay_sd<=ngay_th);
ORDER BY dmnts.ma_nts;
INTO TABLE (D_TEMP+[bc_thts])
ENDIF
REPORT FORM (D_REPO+[r_htts.frx]) Preview
ENDIF
Báo cáo khấu hao tscđ
SET PROCEDURE TO (D_PROG+[tinh_kh])
*Kiem tra cac dieu kien -> date1 va date 2
x=thisform.optiongroup1.Value
ngay_lap=thisform.txtNgay_lap.Value
_kt=.T.
_promt=""
DO CASE
CASE x=1
IF EMPTY(thisform.op1Nam.Value) OR EMPTY(thisform.op1Quy.Value)
MESSAGEBOX("Khong duoc de trong Nam va Quy, xin ban nhap gia tri",0,"Chu y")
_KT=.F.
ELSE
_quy=ALLTRIM(thisform.op1Quy.Value)
DO CASE
CASE _quy="I"
_thang1=1
_thang2=4
CASE _quy="II"
_thang1=4
_thang2=7
CASE _quy="III"
_thang1=7
_thang2=9
CASE _quy="IV"
_thang1=9
_thang2=1
ENDCASE
_nam=ALLTRIM(thisform.op1Nam.Value)
IF _quy="IV"
_nam1=VAL(_nam)
_nam2=VAL(_nam)+1
ELSE
_nam1=VAL(_nam)
_nam2=VAL(_nam)
ENDIF
_date1=DATE(_nam1,_thang1,1)
_date2=DATE(_nam2,_thang2,1)
_prompt="Quý "+_quy+"/"+_nam
ENDIF
CASE x=2
IF EMPTY(thisform.op2Nam.Value) OR EMPTY(thisform.op2Thang.Value)
MESSAGEBOX("Khong duoc de trong Nam va Thang, xin ban nhap gia tri",0,"Chu y")
_KT=.F.
ELSE
_nam=VAL(ALLTRIM(thisform.op2Nam.Value))
_thang=VAL(ALLTRIM(thisform.op2thang.value))
IF _thang=12
_date1=DATE(_nam,_thang,1)
_date2=DATE(_nam+1,_thang,1)
ELSE
_date1=DATE(_nam,_thang,1)
_date2=DATE(_nam,_thang+1,1)
ENDIF
_prompt="Th¸ng "+ALLTRIM(STR(_thang))+"/"++ALLTRIM(STR(_nam))
ENDIF
CASE x=3
_date1=thisform.op3Ngay1.Value
_date2=thisform.op3Ngay2.Value
IF _date1>_date2 THEN
MESSAGEBOX("Ngay sau phai lon hon ngay truoc",0,"chu y")
_KT=.F.
ELSE
_prompt="Tõ "+ALLTRIM(DTOC(_date1))+" ®Õn"+ALLTRIM(DTOC(_date1))
ENDIF
** Dang lam do dang
ENDCASE
IF _kt=.F.then
thisform.txtNgay_lap.SetFocus
ELSE
* cap nhat query
IF !EMPTY(thisform.cboMa_nts.Value)
SELECT tb_dmnts.*,tb_dmts.*,kh_2td(tb_dmts.ma_ts,_date1,_date2) as KH_trich,kh_1td(tb_dmts.ma_ts,_date2) as khlk ;
FROM (D_DATA+[tb_dmts]) INNER JOIN (D_DATA+[tb_dmnts]) ON tb_dmnts.ma_nts=tb_dmts.ma_nts ;
WHERE (tb_dmts.ngay_sd<=_date2);
AND (ALLTRIM(tb_dmts.ma_nts)=ALLTRIM(thisform.cboMa_nts.Value));
order by tb_dmnts.ma_nts ;
into table (d_temp+[bc_trichKH])
ELSE
SELECT tb_dmnts.*,tb_dmts.*,kh_2td(tb_dmts.ma_ts,_date1,_date2) as KH_trich,kh_1td(tb_dmts.ma_ts,_date2) as khlk ;
FROM (D_DATA+[tb_dmts]) INNER JOIN (D_DATA+[tb_dmnts]) ON tb_dmnts.ma_nts=tb_dmts.ma_nts;
WHERE (tb_dmts.ngay_sd<=_date2);
order by tb_dmnts.ma_nts;
into table (d_temp+[bc_trichKH])
ENDIF
REPORT FORM (D_REPO+[r_trichKH]) PREVIEW
ENDIF
Báo cáo tình hình hoạt động của tscđ
SET PROCEDURE TO (D_PROG+[tinh_kh])
*Kiem tra cac dieu kien -> date1 va date 2
x=thisform.optiongroup1.Value
_kt=.T.
DO CASE
CASE x=1
IF EMPTY(thisform.op1Nam.Value) OR EMPTY(thisform.op1Quy.Value)
MESSAGEBOX("Khong duoc de trong Nam va Quy, xin ban nhap gia tri",0,"Chu y")
_KT=.F.
ELSE
_quy=ALLTRIM(thisform.op1Quy.Value)
DO CASE
CASE _quy="I"
_thang1=1
_thang2=4
CASE _quy="II"
_thang1=4
_thang2=7
CASE _quy="III"
_thang1=7
_thang2=9
CASE _quy="IV"
_thang1=9
_thang2=1
ENDCASE
_nam=ALLTRIM(thisform.op1Nam.Value)
IF _quy="IV"
_nam1=VAL(_nam)
_nam2=VAL(_nam)+1
ELSE
_nam1=VAL(_nam)
_nam2=VAL(_nam)
ENDIF
_date1=DATE(_nam1,_thang1,1)
_date2=DATE(_nam2,_thang2,1)
ENDIF
CASE x=2
IF EMPTY(thisform.op2Nam.Value) OR EMPTY(thisform.op2Thang.Value)
MESSAGEBOX("Khong duoc de trong Nam va Thang, xin ban nhap gia tri",0,"Chu y")
_KT=.F.
ELSE
_nam=VAL(ALLTRIM(thisform.op2Nam.Value))
_thang=VAL(ALLTRIM(thisform.op2thang.value))
IF _thang=12
_date1=DATE(_nam,_thang,1)
_date2=DATE(_nam+1,_thang,1)
ELSE
_date1=DATE(_nam,_thang,1)
_date2=DATE(_nam,_thang+1,1)
ENDIF
ENDIF
CASE x=3
_date1=thisform.op3Ngay1.Value
_date2=thisform.op3Ngay2.Value
IF _date1>_date2 THEN
MESSAGEBOX("Ngay sau phai lon hon ngay truoc",0,"chu y")
_KT=.F.
ENDIF
** Dang lam do dang
ENDCASE
IF _kt=.F.then
thisform.txtNgay_lap.SetFocus
ELSE
* cap nhat query
IF !EMPTY(thisform.cboMa_nts.Value)
SELECT tb_dmnts.*,logfile.*,tb_hoat_dong.*,;
(logfile.nguyen_gia-kh_1td(logfile.ma_ts,logfile.ngay_td)) as gtcl;
FROM (D_DATA+[logfile]) INNER JOIN (D_DATA+[tb_dmnts]) ON tb_dmnts.ma_nts=logfile.ma_nts ;
INNER JOIN (D_DATA+[tb_hoat_dong]) ON logfile.ma_tdoi=tb_hoat_dong.ma_tdoi;
where (logfile.ngay_td>=_date1) AND (logfile.ngay_td<=_date2) AND (logfile.ngay_sd<=_date2) ;
AND (ALLTRIM(logfile.ma_nts)=ALLTRIM(thisform.cboMa_nts.Value)) ;
ORDER BY logfile.ma_nts,logfile.ngay_td ;
INTO TABLE (D_TEMP+[bc_sotheodoi])
ELSE
SELECT tb_dmnts.*,logfile.*,tb_hoat_dong.*,;
(logfile.nguyen_gia-kh_1td(logfile.ma_ts,logfile.ngay_td)) as gtcl;
FROM (D_DATA+[logfile]) INNER JOIN (D_DATA+[tb_dmnts]) ON tb_dmnts.ma_nts=logfile.ma_nts ;
INNER JOIN (D_DATA+[tb_hoat_dong]) ON logfile.ma_tdoi=tb_hoat_dong.ma_tdoi;
where (logfile.ngay_td>=_date1) AND (logfile.ngay_td<=_date2) AND (logfile.ngay_sd<=_date2) ;
ORDER BY logfile.ma_nts,logfile.ngay_td ;
INTO TABLE (D_TEMP+[bc_sotheodoi])
ENDIF
REPORT FORM (D_REPO+[r_sotheodoi]) PREVIEW
ENDIF
Đoạn code chương trình dùng để tính khấu hao
* Doan chuong trinh de tinh khau hao TSCD
* Dau vao: nguyen gia, thoi gian su dung, thoi diem dua vao su dung
* ky tinh khau hao, khau hao luy ke trong ky, gia tri con lai cu ( truoc khi tinh khau hao)
* Dau ra:
*thangnam1, thangnam2
* Tinh khau hao luy ke den thoi diem thangnam
* so thang giua ngaybd va ngaykt dc tinh bang
***********************Function Tinh khau hao luy ke giua 2 date ************
FUNCTION KH_2date
PARAMETERS date1,date2,_NG,_TG
*So thang giua 2 date
nmonth=(YEAR(date2)-YEAR(date1))*12+(MONTH(date2)-MONTH(date1))
* Muc khau hao trong khoang thoi gian giua 2 date
_MKH=_NG/(_TG)
RETurN _MKH*nmonth
***********************Function tinh muc_kh den 1 thoi diem *******
FUNCTION KH_1td
PARAMETERS _ma_ts,_date
IF !USED('theo_doi')
USE (D_DATA+[theo_doi]) order khoachinh ALIAS theo_doi IN 0
ELSE
SELECT theo_doi
ENDIF
SELECT theo_doi
tong_kh=0
d=_date
SCAN FOR ALLTRIM(ma_ts)=ALLTRIM(_ma_ts)
bd=ngay_bd
IF ngay_kt={} then
kt=ng_het_kh(bd,thoi_gian_sd)
ELSE
kt=ngay_kt
ENDIF
IF BETWEEN(d,bd,kt)
tong_kh=tong_kh+kh_2date(bd,d,nguyen_gia,thoi_gian_sd)
ELSE
IF d>kt
tong_kh=tong_kh+kh_2date(bd,kt,nguyen_gia,thoi_gian_sd)
ENDIF
ENDIF
ENDSCAN
RETURN tong_kh
************************TInh khau hao luy ke trong 2 thoi diem*********************************************
FUNCTION KH_2td
PARAMETERS _ma_ts,d1,d2
_KH1=KH_1td(_ma_ts,d1)
_KH2=Kh_1td(_ma_ts,d2)
RETURN (_KH2-_KH1)
***************************FUNCTION tinh khau hao luy ke trong 2 thoi diem PB 2***************
FUNCTION KH_2td_2
PARAMETERS _ma_ts,_date1,_date2
IF !USED('theo_doi')
USE (D_DATA+[theo_doi]) order khoachinh ALIAS theo_doi IN 0
ELSE
SELECT theo_doi
ENDIF
SELECT theo_doi
tong_kh=0
d1=_date1
d2=_date2
SCAN FOR ALLTRIM(ma_ts)=ALLTRIM(_ma_ts)
_kh=0
bd=ngay_bd
IF ngay_kt={} then
kt=ng_het_kh(bd,thoi_gian_sd)
ELSE
kt=ngay_kt
ENDIF
DO CASE
CASE (bd>d1) AND BETWEEN(d2,bd,kt)
_kh=kh_2date(bd,d2,nguyen_gia,thoi_gian_sd)
CASE BETWEEN(d1,bd,kt) AND BETWEEN(d2,bd,kt)
_kh=kh_2date(d1,d2,nguyen_gia,thoi_gian_sd)
CASE BETWEEN(d1,bd,kt) AND (d2>kt)
_kh=kh_2date(d1,kt,nguyen_gia,thoi_gian_sd)
ENDCASE
tong_kh=tong_kh+_kh
ENDSCAN
RETURN tong_kh
************ Ngay theo so thang su dung tu
FUNCTION Ng_het_kh
PARAMETERS ng_bd_sd,nmonth
ng_kh= DATE(YEAR(ng_bd_sd)+INT((nmonth)/12),MONTH(ng_bd_sd)+(nmonth)%12,DAY(ng_bd_sd))
i=1
DO WHILE (ng_kh={ / / })
ng_kh=DATE(YEAR(ng_bd_sd)+INT((nmonth)/12),MONTH(ng_bd_sd)+(nmonth)%12,DAY(ng_bd_sd)-1)
ENDDO
RETURN ng_kh
Các file đính kèm theo tài liệu này:
- 29489.doc