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ớ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ữngmụ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 KT-NQ trong NHNo&PTNT Nam Hà Nội, gia đình, bạn bè đã giúp em hoàn thành đề tài này.

doc143 trang | Chia sẻ: oanh_nt | Lượt xem: 1253 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tài sản Tên nhóm tài sản THEO DÕI KHẤU HAO Mã tài sản STT Ngày bắt đầu Ngày kết thúc Hợp đồng Số hợp đồng Loại hợp đồng Nhà cung cấp Địa chỉ nhà cung cấp Điện thoại nhà cung cấp Giá trị Tổng số tài sản Tên tài sản Ngày hợp đồng NHNo&PTNT Nam Hà nội Địa chỉ ngân hàng Điện thoại ngân hàng Fax ngân hàng Hợp đồng Thuộc tính Chưa chuẩn hóa Chuẩn hóa dạng 1 1NF Chuẩn hóa dạng 2 2NF Chuẩn hóa dạng 3 3NF Số hợp đồng Loại hợp đồng Ngày hợp đồng Giá trị Tổng số tài sản Tên tài sản (R) Nhà cung cấp Địa chỉ NCC Điện thoại NCC NHNo&PTNT NHN Địa chỉ NH Điện thoại NH Fax NH Số hợp đồng Loại hợp đồng Ngày hợp đồng Giá trị Tổng số tài sản Nhà cung cấp Địa chỉ NCC Điện thoại NCC Số hợp đồng Mã tài sản Tên tài sản Số hợp đồng Loại hợp đồng Ngày hợp đồng Giá trị Tổng số tài sản Mã nhà cung cấp Nhà cung cấp Địa chỉ NCC Điện thoại NCC Số hợp đồng Mã tài sản Tên tài sản Số hợp đồng Loại hợp đồng Ngày hợp đồng Giá trị Tổng số tài sản Mã nhà cung cấp Nhà cung cấp Địa chỉ NCC Điện thoại NCC Số hợp đồng Mã tài sản Tên tài sản Từ danh sách “Hợp đồng” ta có các tệp TÀI SẢN Mã tài sản Tên tài sản Số hợp đồng NHÀ CUNG CẤP Mã nhà cung cấp Tên nhà cung cấp Địa chỉ NCC Điện thoại NCC HỢP ĐỒNG Mã hợp đồng Loại hợp đồng Giá trị Ngày hợp đồng Tổng số tài sản Tập hợp các bảng trên ta có các bảng thực thể hoàn chỉnh, từ đó có được sơ đồ cấu trúc dữ liệu dưới đây SƠ ĐỒ CẤU TRÚC DỮ LIỆU NHÓM TÀI SẢN Mã nhón tài sản Tên nhóm tài sản Đặc điểm NHÀ CUNG CẤP Mã NCC Tên NCC Địa chỉ Điện thoại PHÒNG BAN Mã phòng ban Tên phòng ban Điện thoại Ghi chú HỢP ĐỒNG Số hợp đồng Loại HĐ Ngày HĐ Tổng số TS Giá trị Ghi chú TÀI SẢN Mã tài sản Tên tài sản Mã nhóm tài sản Mã NCC Nước sản xuất Mã phòng ban Số hợp đồng Mã nguồn vốn Nguyên giá Mã mục đích sử dụng Năm sản xuất Mã tình trạng Thời gian sử dụng Số lượng THEO DÕI KHẤU HAO Mã tài sản STT Ngày bắt đầu Ngày kết thúc Nguyên giá Thời gian sử dụng TÌNH TRẠNG Mã tình trạng Tình trạng MỤC ĐÍCH SỬ DỤNG Mã mục đích sử dụng Tên mục đích sử dụng Đặc điểm NGUỒN VỐN Mã nguồn vốn Tên nguồn vốn Đặc điểm Các bảng cụ thể như sau: Bảng danh mục nhóm tài sản STT Name Type Width Decimal Description 1 Ma_nts C 5 Mã nhóm tài sản ( khóa chính) 2 Ten_nts C 30 Tên nhóm tài sản 3 Dac_diem M 4 Đặc điểm của nhóm tài sản Bảng danh mục tài sản STT Name Type Width Decimal Description 1 Ma_ts C 5 Mã tài sản (khóa chính) 2 Ten_ts C 30 Tên tài sản 3 Ma_pb C 5 Mã phòng ban (khóa ngoại) 4 Nam_sx N 4 0 Năm sản xuất tài sản 5 Nuoc_sx C 10 Nước sản xuất tài sản 6 Ma_nts C 5 Mã nhóm tài sản (khóa ngoại) 7 Ma_tinh_trang C 5 Mã tình trạng (khóa ngoại) 8 Ma_nvon C 5 Mã nguồn vốn (khóa ngoại) 9 Nguyên giá N 15 2 Nguyên giá tài sản 10 Thoi_gian_sd N 10 0 Thời gian sử dụng tài sản 11 So_luong N 10 0 Số lượng 12 So_hd C 5 Số hợp đồng (khóa ngoại) 13 Ma_md_sd C 5 Mã mục đích sử dụng (khóa ngoại) 14 Ma_ncc C 5 Mã nhà cung cấp (khóa ngoại) Bảng danh mục nhà cung cấp STT Name Type Width Decimal Description 1 Ma_ncc C 5 Mã nhà cung cấp (khóa chính) 2 Ten_ncc C 30 Tên nhà cung cấp 3 Dia_chi C 50 Địa chỉ nhà cung cấp 4 Dien_thoai C 15 Điện thoại Bảng danh mục hợp đồng STT Name Type Width Decimal Description 1 So_hd C 10 Số hợp đồng (khóa chính) 2 Loai_hd C 30 Loại hợp đồng 3 Ngay_hd D 8 Ngày hợp đồng 4 Ts_tai_san N 10 0 Số lượng TS trong hợp đồng 5 Gia_tri N 15 2 Tổng giá trị TS trong hợp đồng 6 Ghi_chu M 4 Ghi chú Bảng danh mục nguồn vốn STT Name Type Width Decimal Description 1 Ma_nvon C 5 Mã nguồn vốn ( khóa chính) 2 Ten_nvon C 30 Tên nguồn vốn 3 Dac_diem M 4 Đặc điểm của nguồn vốn Bảng danh mục phòng ban STT Name Type Width Decimal Description 1 Ma_pb C 5 Mã phòng ban ( khóa chính) 2 Ten_pb C 30 Tên phòng ban 3 Ghi_chu C 30 Ghi chú 4 Dien_thoai C 15 Điện thoại phòng ban Bảng mục đích sử dụng STT Name Type Width Decimal Description 1 Ma_md_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 6. 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 7. 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: 5.1. 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ữngmụ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 KT-NQ 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 Một số sách giáo trình và sách tham khảo khác 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 NHỮNG TỪ VIẾT TẮT TRONG LUẬN VĂN TSCĐ : Tài sản cố định TSCĐVH : Tài sản cố định vô hình TSCĐ HH : Tài sản cố định hữu hình KHTSCĐ : Khấu hao tài sản cố định HTTT : Hệ thống thông tin CNTT : Công nghệ thông tin NHNo&PTNTNam Hà Nội : Ngân hàng Nông nghiệp và Phát triển nông thôn chi nhánh Nam Hà Nội NHNo&PTNT Hà Nội : Ngân hàng Nông nghiệp và Phát triển nông thôn Hà Nội NHNo&PTNT Hà Nội : Ngân hàng Nông nghiệp và Phát triển nông thôn Việt Nam MỤC LỤC Trang

Các file đính kèm theo tài liệu này:

  • doc36445.doc
Tài liệu liên quan