Chương trình Quản lý hợp đồng được xây dựng trên mô hình 3 tầng của Microsoft về phát triển phần mềm ứng dụng.
+ Tầng ứng dụng: Window User Interface (WinUI) Tầng giao diện tương tác với người sử dụng.
+ Tầng truy cập cơ sở dữ liệu: Data Access Layer (DAL) - Đây là tầng sẽ can thiệp vào hệ quản trị cơ sở dữ liệu để lấy dữ liệu hoặc nhận dữ liệu từ tầng kinh doanh cơ sở dữ liệu để lưu vào cơ sở dữ liệu.
+ Tầng kinh doanh dữ liệu: Bussiness Rule – Đây là tầng trung gian giữa tầng ứng dụng và tầng truy cập cơ sở dữ liệu. Tầng này có nhiệm vụ nhận dữ liệu từ tầng ứng dụng, kiểm tra tính phù hợp của dữ liệu và truyền vào tầng truy cập dữ liệu nhằm lưu dữ liệu, ngoài ra nó còn nhận dữ liệu truyền lại từ tầng DAL và chuyển ra cho tầng ứng dụng nhằm hiển thị cho người sử dụng.
154 trang |
Chia sẻ: aloso | Lượt xem: 1595 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Phát triển phần mềm quản lý hợp đồng tại công ty cổ phần phần mềm kế toán BRAVO, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng phòng ban cụ thể.
+ Khi chạy chương trình thì người sử dụng phải đăng nhập vào hệ thống để có thể chạy được các chức năng trong quyền hạn mà mình được cấp.
Ngoài ra chương trình còn có một số chức năng tiện ích khác.
3.3 Thiết kế chương trình
Sau khi tiếp nhận yêu cầu của bài toán chúng ta sẽ tiến hành thiết kế chương trình theo các quy trình phát triển một phần mềm chuyên nghiệp mà đã trình bày ở chương 2.
3.3.1 Xây dựng sơ đồ luồng thông tin của chương trình quản lý hợp đồng
Quá trình khách hàng đưa ra yêu cầu, Công ty tiếp nhận yêu cầu của quy trình thực hiện một hợp đồng được thể hiện qua các sơ đồ luồng thông tin sau:
Sơ đồ luông thông tin ký kết, lập và thực hiện hợp đồng
Hình 3.1 Sơ đồ luồng thông tin lập hợp đồng
Sơ đồ luồng thông tin theo dõi việc bảo hành phần mềm
Hình 3.2 Sơ đồ luồng thông tin theo dõi việc bảo hành phần mềm
Sơ đồ luồng thông tin của quá trình thanh toán
Hình 3.3 Sơ đồ luồng thông tin của quá trình thanh toán
Từ các dòng thông tin trên mà chúng ta sẽ xây dựng được chương trình quản lý hợp đồng có các chức năng xử lý sau: (Sơ đồ luồng dữ liệu)
3.3.2 Sơ đồ luồng dữ liệu DFD
Sơ đồ luồng dữ liệu mức ngữ cảnh
Hình 3.4 Sơ đồ luồng dữ liệu mức ngữ cảnh
Phân rã luồng dữ liệu
Hình 3.5 Sơ đồ luồng dữ liệu phân rã mức 0
Sơ đồ phân rã mức 1: Lập hợp đồng
Hình 3.6 Sơ đồ luồng dữ liệu lập hợp đồng
Sơ đồ phân rã mức 1: Triển khai hợp đồng
Hình 3.7 Sơ đồ luồng dữ liệu triển khai hợp đồng
Sơ đồ phân rã mức 1: Thanh toán hợp đồng
Hình 3.8 Sơ đồ luồng dữ liệu thanh toán hợp đồng
Sơ đồ phân rã mức 2: Kiểm thử chương trình
Hình 3.9 Sơ đồ luồng dữ kiểm thử chương trình
Sơ đồ phân rã mức 3: Cài đặt chương trình
Hình 3.10 Sơ đồ luồng dữ liệu cài đặt chương trình
3.3.3 Thiết kế các thực thể
Sau khi phân tích ở trên chúng ta có thể đưa ra các thực thể tham gia vào chương trình mà chúng ta cần quản lý:
Thực thể nhân viên
Thực thể khách hàng
Thực thể phòng ban
Thực thể chức vụ
Thực thể hợp đồng
Thực thể điều khoản thanh toán
Thực thể danh mục công việc
Thực thể triển khai hợp đồng
Thực thể phiếu bảo hành
Thực thể nhân viên-triển khai
Thực thể nhân viên-Bảo hành
Sơ đồ quan hệ thực thể (Cơ sở dữ liệu logic)
Hình 3.11 Mối quan hệ giữa các thực thể
Từ sơ đồ quan hệ giữa các thực thể chúng ta sẽ thiết kế cơ sở dũ liệu logic như sau:
Id
TenPhienBan
MoTa
tblNhân Viên
tblChucVu
tblNhanVien_BaoHanh
tblDieuKhoanTT
tblPhongBan
tblPhieuBan
tblTinhTrangHD
tblDanhMucCV
tblQuyen
tblPhieuBH
MaPhieu
MaNV
MaKH
DaiDienKH
…
tblHopDong
MaDieuKhoan
SoHieuHD
NoiDung
NgayThucHien
SoTien
…
MaNV
DaiDienKH
tblPermission
tblNhanVien_TrienKhai
tblPhòng Ban
SoHieuHD
TenHD
PhienBan
NgayKy
GiaTri
MaNV
MaKH
NgayHTDK
…
STT
MaPhieu
MaNV
CongViec
NgayBD
NgayKTDK
…
MaNV
TenNV
NamSinh
NoiSinh
ChoOHienTai
MaCV
MaPB
…
MaPB
TenPB
ChucNang
STT
MaTinhTrang
MaNV
NoiDung
…
MaTinhTrang
SoHieuHD
MaCV
…
MaCV
TenCV
ChucNang
YeuCau
MaCV
TenCV
MoTa
STT
MaCV
MaQuyen
MaQuyen
TenQuyen
tblKhachHang
MaKH
TenKH
DiaChi
…
Hình 3.12 Sơ đồ quan hệ thực thể ERD
Sau khi thiết kế cơ sở dữ liệu logic, chúng ta tiến hành cài đặt cơ sở dữ liệu vật lý trên hệ quản trị cơ sở dữ liệu SQL-SERVER 2005. Các thực thể được mô tả như sau
tblNhanVien
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaNV
Nchar
10
Không
Lưu trữ mã của nhân viên.
HoTen
Nvarchar
30
Không
Họ tên nhân viên
NamSinh
SmallDateTime
Không
Năm sinh
NoiSinh
Nvarchar
150
Không
Nơi sinh
ChoOHT
Nvarchar
150
Không
Chỗ ở hiện tại
SoDienThoai
Nchar
12
Không
Số điện thoại
DiDong
Nchar
10
Có
Số di động
NgayVL
SmallDatatime
Không
Ngày vào làm
NgayNghi
SmallDatetime
Có
Ngày nghỉ
GioiTinh
Bit
1
Không
Giới tình
MaPB
Nchar
10
Không
Mã phòng ban
MaCV
Nchar
10
Không
Mã chức vụ
Anh
Image
Có
Ảnh nhân viên
tblChucVu
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaCV
Nchar
10
Không
Mã chức vụ
TenCV
Nvarchar
100
Không
Tên chức vụ
Chucnang
Nvarchar
150
Không
Chức năng
YeuCau
Nvarchat
100
Không
Yêu cầu năng lực
tblPhongBan
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaPB
Nchar
10
Không
Mã phòng ban
TenPB
Nvarchar
50
Không
Tên phòng ban
ChucNang
Nvarchar
150
Không
Chức năng của phòng ban
tblDanhMucCongViec
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaCV
Nchar
10
Không
Mã công việc
TenCV
Nvarchar
100
Không
Tên công việc
MoTa
Nvarchar
100
Có
Mô tả công việc
tblHopDong
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
SoHieuHD
Nchar
10
Không
Số hiệu hợp đồng
TenHD
Nvarchar
50
Không
Tên hợp đồng
NgayKy
SmallDatetime
Không
Ngày ký
GiaTri
Int
Không
Giá trị hợp đồng
MaNV
Nchar
10
Không
Nhân viên ký
MaKH
Nchar
10
Không
Mã khách hàng
TNKH
Nvarchar
150
Không
Trách nhiệm của khách hàng
TNBravo
Nvarchar
150
Không
Trách nhiệm của Bravo
MaNVTD
Nchar
10
Không
Nhân viên theo dõi
DaiDienKH
Nvarchar
30
Không
Đại diện khách hàng
ThanhLy
Bit
1
Có
Đã thanh lý chưa
HuyHD
Bit
1
Có
Đã hủy hợp đồng
LyDo
Nvarchar
150
Có
Lý do hủy, thanh lý hợp đồng
tblDieuKhoanThanToan
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaDK
Int
Không
Mã điều khoản
SoHieHD
Nchar
10
Không
Số hiệu hợp đồng
NoiDung
Nvarchar
150
Không
Nội dung điều khoản
NgayTH
SmallDatetime
Không
Ngày thực hiện
SoTien
Int
Không
Số tiền phải thanh toán
MaNV
Nchar
10
Có
Nhân viên thu tiền
DaiDienKH
Nvarchar
30
Có
Đại diện khách hàng
SoTienTT
Int
Có
Số tiền đã thanh toán
NgayTT
SmallDatetime
Có
Ngày thanh toán
GhiChu
Nvarchar
100
Có
Ghi chú
tblKhachHang
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaKH
Nchar
10
Không
Mã khách hàng
TenKH
Nvarchar
100
Không
Tên khách hàng
DiaChi
Nvarchar
150
Không
Địa chỉ khách hàng
DienThoai
Nchar
12
Không
Điện thoại
NgayGD
SmallDatetime
Không
Ngày giao dịch
NgayKT
SmallDatetime
Có
Ngày hủy giao dịch
Email
Nvarchar
50
Có
Email
Website
Nvarchar
50
Có
Website khách hàng
Fax
Nchar
12
Có
Số Fax của khách hàng
tblTinhTrangHD
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaTT
Int
Không
Mã tình trạng
SoHieuHD
Nchar
10
Không
Số hiệu hợp đồng
MaCV
Nchar
10
Không
Mã công việc
NgayBD
SmallDatetime
Không
Ngày bắt đầu
NgayKT
SmallDatetime
Không
Ngày kết thúc
tblNhanVien_TrienKhai
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
STT
Int
Không
Khóa chính
MaTT
Int
Không
Mã tình trạng
MaNV
Nchar
10
Không
Mã nhân viên thực hiẹn
NoiDung
Nvarchar
50
Không
Công việc cần thực hiện
NgayTH
SmallDatetime
Không
Ngày thực hiện
NgayHT
SmallDatetime
Không
Ngày hoàn thành
ChiPhi
Int
Không
Chi phí thực hiện
tblPhieuBaoHanh
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaPhieu
Nchar
10
Không
Mã phiếu
MaNV
Nchar
10
Không
Nhân viên nhận bảo hành
DaiDienKH
Nvarchar
30
Không
Đại diện khách hàng
SoHieuHD
Nchar
10
Không
Số hiệu hợp đồng cần bảo hành
NoiDung
Nvarchar
150
Không
Nội dung bảo hành
NgayNhan
SmallDatetime
Không
Ngày nhận bảo hành
NgayTra
SmallDatetime
Không
Ngày trả bảo hành
tblNhanVien_BaoHanh
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
STT
Int
Không
Khóa chính
MaPhieu
Nchar
10
Không
Mã phiếu bảo hành
MaNV
Nchar
10
Không
Nhân viên thực hiện
CongViec
Nvarchar
100
Không
Công việc cần thực hiện
NgayBD
SmallDatetime
Không
Ngày bắt đầu
NgayKT
SmallDatetime
Không
Ngày kết thúc
ChiPhi
Int
Không
Chi phí thực hiện
tblPhienBan
Tên trường
Kiểu dữ liệu
Độ rộng
Cho phép trống
Diễn giải
MaPB
Nchar
10
Không
Mã phiên bản
TenPB
Nvarchar
50
Không
Tên phiên bản
MoTa
Nvarchar
150
Không
Mô tả về phiên bản phần mềm.
Sau khi cải đặt cơ sở dữ liệu vật lý chúng ta có sơ đồ quan hệ các thực thể như sau:
Hình 3.13 Sơ đồ quan hệ thực thể (Các bảng vật lý)
Kiến trúc phần mềm: Chương trình quản lý hợp đồng được thiết kế theo kiến trúc như sau:
Hình 3.14 Kiến trúc chương trình quản lý hợp đồng
3.3.4 Thiết kế giao diện
Theo yêu cầu của công ty, chương trình quản lý hợp đồng sẽ được thiết kế sử dụng giao diện đồ họa, tương tác trực quan với người sử dụng thông qua các nút chức năng và các tổ hợp phím tắt.
Giao diện của chương trình sẽ được cài đặt theo mô hình MDI – Multiple Documents Interface.
Khi chạy chương trình đầu tiên chương trình yêu cầu đăng nhập, sau khi đăng nhập thành công thì chương trình hiện ra Form chính với các chức năng tương ứng với quyền hạn của người đăng nhập.
Các Form con của chương trình sẽ là các danh sách của danh mục tương ứng, các Form này cho phép thêm, sửa, xóa các danh mục bằng cách nhấn các nút chức năng tương ứng hoặc nhấn các phím nóng F3, F4, F8…
Các Form cập nhật sẽ có giao diện tương ứng với các thông tin liên quan tới danh mục.
MainForm
Chương trình quản lý hợp đồng
--
X
Hệ thống menu chức năng
Hệ thống toolbar chức năng
Các form danh mục
Tên form –F3-Thêm F4-Sửa F8-Xóa
X
Tên trường 1
Tên trường 2
…….
Các Form cập nhật số liệu
Tên form
X
Các control nhập dữ liệu
Thoát
Lưu
3.3.5 Thiết kế chương trình
Chương trình Quản lý hợp đồng được xây dựng trên mô hình 3 tầng của Microsoft về phát triển phần mềm ứng dụng.
+ Tầng ứng dụng: Window User Interface (WinUI) Tầng giao diện tương tác với người sử dụng.
+ Tầng truy cập cơ sở dữ liệu: Data Access Layer (DAL) - Đây là tầng sẽ can thiệp vào hệ quản trị cơ sở dữ liệu để lấy dữ liệu hoặc nhận dữ liệu từ tầng kinh doanh cơ sở dữ liệu để lưu vào cơ sở dữ liệu.
+ Tầng kinh doanh dữ liệu: Bussiness Rule – Đây là tầng trung gian giữa tầng ứng dụng và tầng truy cập cơ sở dữ liệu. Tầng này có nhiệm vụ nhận dữ liệu từ tầng ứng dụng, kiểm tra tính phù hợp của dữ liệu và truyền vào tầng truy cập dữ liệu nhằm lưu dữ liệu, ngoài ra nó còn nhận dữ liệu truyền lại từ tầng DAL và chuyển ra cho tầng ứng dụng nhằm hiển thị cho người sử dụng.
Theo mô hình này thì từ tầng WinUI sẽ không thể trực tiếp can thiệp vào cơ sở dữ liệu được mà phải thông qua tầng BussinessRules, Tầng BussinessRules sẽ thông qua tầng DAL để truy vấn vào cơ sở dữ liệu.
Trong tầng DAL sẽ định nghĩa các lớp tương ứng với các bảng trong cơ sở dữ liệu. các lớp này sẽ định nghĩa các phương thức insert, update, delete, select…. Các phương thức này sẽ tham chiếu tới các thủ tục lưu trữ (Store procedure) của cơ sở dữ liệu nhận kết quả từ các thủ tục lưu trữ. Các phương thức này sẽ trả về một tập dữ liệu tương ứng.
Trong tầng BussinessRule cũng xây dựng các lớp tương ứng với các lớp trong tầng DAL, mỗi lớp tương ứng cũng sẽ định nghĩa các phương thức tương ứng với nó, ngoài ra các lớp trong tầng BussinessRule còn định nghĩa các phương thức nhằm kiểm tra sự hợp lệ của yêu cầu được truyền từ tâng ứng dụng.
Khi thực hiện chương trình thì các yêu cầu của người sử dụng sẽ thông qua tầng ứng dụng và sẽ khởi tạo các dối tượng của tầng BussinessRule, các yêu cầu này sẽ thông qua các phương thức của các đối tượng này để tương tác với các tầng dưới nhằm truy vấn dữ liệu.
Trong ngành công nghiệp phần mềm thì đây là một mô hình quan trọng, nó cho phép chia các công đoạn của quy trình lập trình thành các quy trình nhỏ độc lập với nhau, rất thích hợp với các phần mềm lớn, nhiều chức năng, nhiều lập trình viên tham gia. Chương trình sẽ dễ dàng bảo trì và phát triển.
Mô hình hoạt động: Mô hình này được biểu diễn trong chương trình quản lý hợp đồng như sau:
Hình 3.15 Mô hình lập trình 3 tầng trong chương trình
Một số giao diện chính của chương trình
Form Main
Form đăng nhập hệ thống
Form Đổi mật khẩu
Form cập nhật phiếu bảo hành
Form cập nhật danh mục
Khách hàng
Nhân viên
Phòng ban
Form lập hợp đồng
Form cập nhật điều khoản thanh toán
Form cập nhật triển khai hợp đồng
Form cập nhật thanh toán
Form tìm kiếm hợp đồng
Các form danh sách có dạng (Danh sách hợp đồng)
Form tìm kiếm nhanh: Tìm kiếm thông tin trực tiếp trên lưới grid
Một số báo cáo đâu ra của chương trình
Danh sách hợp đồng
Danh sách hợp đồng theo nhân viên theo dõi
Thống kê hợp đồng sắm đến hạn thanh toán, số ngày do người sử dụng tự nhập
Báo cáo kết quả kinh doanh trong một năm chia theo từng quý
Báo cáo tổng hợp kinh doanh sau một số năm liên tiếp hoạt động
Một số thuật toán sử dụng trong chương trình
Hình 3.16 Thuật toán đăng nhập
Hình 3.17 Thuật toán tìm kiếm
Hình 3.18 Thuật toán cập nhật
Hình 3.19 Thuật toán sửa đổi dữ liệu
Hình 3.20 Xóa danh mục
Mục lục
Trang
Danh mục hình vẽ
Hình 1.1 Sơ đồ cơ cấu bộ máy quản lý
Hình 1.2 Sơ đồ tổ chức của công ty
Hình 1.3 Quy trình sản xuất sản phẩm
Hình 1.4 Quy trình thiết kế sản phẩm
Hình 2.1 Tháp quản lý
Hình 2.2 Mô hình hệ thống thông tin
Hình 2.3 các công cụ thiết kế mô hình hóa luồng thông tin
Hình 2.4 Các công cụ mô hình hóa luồng dữ liệu
Hình 2.5 Công cụ mô hình hóa cơ sở dữ liệu logic
Hình 2.6 Mối liên kết 1@1
Hình 2.6 Mối liên kết 1@N
Hình 2.7 Mối liên kết N@N
Hình 2.8 Cấu trúc công nghệ phần mềm
Hình 2.9 Các giai đoạn của quy trình phát triển phần mềm
Hình 2.10.a Mô hình thác nước
Hình 2.10.b Mô hình thác nước
Hình 2.11 Mô hình lặp và tăng dần
Hình 2.12 Mô hình chuyển đổi từ vấn đề thành các giải pháp
Hình 3.1 Sơ đồ luồng thông tin lập hợp đồng
Hình 3.2 Sơ đồ luồng thông tin theo dõi việc bảo hành phần mềm
Hình 3.3 Sơ đồ luồng thông tin của quá trình thanh toán
Hình 3.4 Sơ đồ luồng dữ liệu mức ngữ cảnh
Hình 3.5 Sơ đồ luồng dữ liệu phân rã mức 0
Hình 3.6 Sơ đồ luồng dữ liệu lập hợp đồng
Hình 3.7 Sơ đồ luồng dữ liệu triển khai hợp đồng
Hình 3.8 Sơ đồ luồng dữ liệu thanh toán hợp đồng
Hình 3.9 Sơ đồ luồng dữ kiểm thử chương trình
Hình 3.10 Sơ đồ luồng dữ liệu cài đặt chương trình
Hình 3.11 Mối quan hệ giữa các thực thể
Hình 3.12 Sơ đồ quan hệ thực thể ERD
Hình 3.13 Sơ đồ quan hệ thực thể (Các bảng vật lý)
Hình 3.14 Kiến trúc chương trình quản lý hợp đồng
Hình 3.15 Mô hình lập trình 3 tầng trong chương trình
Hình 3.16 Thuật toán đăng nhập
Hình 3.17 Thuật toán tìm kiếm
Hình 3.18 Thuật toán cập nhật
Hình 3.19 Thuật toán sửa đổi dữ liệu
Hình 3.20 Xóa danh mục
Danh mục tài liệu tham khảo
1.Trương Văn Tú, Trần Thị Song Minh (2000), “Giáo trình hệ thống thông tin quản lý”,Nhà xuất bản Thống kê.
2 Nguyễn Văn Vỵ (2002), “ Phân tích thiết kế các hệ thống thông tin hiện đại”, Nhà xuất bản thống kê.
3.Trần Công Uẩn (2005), “Giáo trình cơ sở dữ liệu 1,2”, Nhà xuất bản thống kê.
4. Fergal Grimes, “Microsof.Net for programers”, Ebooks.
5. Shahab Hatami, “Basics of Crystal Report for .NET Programmers”, Ebooks.
Một số mã nguồn chương trình (Mã nguồn lập hợp đồng)
Stored Procedures
CREATE proc [dbo].[Sp_HopDong]
@Param nvarchar(15)=null,
@SoHieuHD nchar(10)=null,
@TenHD nvarchar(50)=null,
@NgayKy smalldatetime=null,
@MaNV nchar(10)=null,
@MaKH nchar(10) =null,
@NgayHTDK smalldatetime=null,
@NgayHT smalldatetime =null,
@TNKH nvarchar(50) =null,
@TNBravo nvarchar(50) =null,
@SoLuong integer =0 output,
@SLDieuKhoanTT integer=0,
@SLTinhTrangHD integer=0,
@SLPhieuBH integer=0,
@SLLanTT integer=0,
@GiaTri integer =null,
@MaNVTheoDoi nchar(10)=null,
@DaiDienKH nvarchar(30)=null,
@SoDuCongNo int =null,
@key nvarchar(20) =null,
@GhiChu nvarchar(150)=null,
@NgayTL smalldatetime =null,
@PhienBan int =null,
@QLTienMat bit =null,
@MuaHangCNPT bit=null,
@BanHangCNPT bit =null,
@QLHangTonKho bit =null,
@QLTSCD bit=null,
@TinhGia bit=null,
@KTTongHop bit=null,
@HeThong bit=null,
@SoNgay int =0
AS
if(@param='selectALl')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan --and ThanhLy='false' and HuyHD='false'
RETURN
end
if(@param='selectbyid')
begin
select * from tblHopDong where SoHieuHD=@SoHieuHD
return
end
if(@param='selectByNV')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy='False' and HuyHD='false' and A.MaNV=@MaNV
return
end
if(@param='selectByKH')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy='False' and HuyHD='false' and A.MaKH=@MaKH
return
end
if @param='HDGanTT'
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy=0 and HuyHD=0 and SoHieuHD in(select distinct SoHieuHD
FROM tblDieuKhoanTT where datediff(day,ngaythuchien,getdate())<=@SoNgay and (soTienTT=0 or sotientt=null))
return
end
if(@param='TinhTrang')
begin
select MaTinhTrang,TenCV
from tblDanhMucCV A, tblTinhTrangHD B
where A.MaCV=B.MaCV and SoHieuHD=@SoHieuHD
return
end
if(@param='insert')
begin
insert into tblHopDong(SoHieuHD,TenHD,NgayKy,GiaTri,MaNV,MaKH,NgayHTDK,TNKH,TNBravo,ThanhLy,MaNVTheoDoi,DaiDienKH,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,PhienBan)
values(@SoHieuHD,@TenHD,@NgayKy,@GiaTri,@MaNV,@MaKH,@NgayHTDK,@TNKH,@TNBravo,0,@MaNVTheoDoi,@DaiDienKH,@SoDuCongNo,@QLTienMat,@MuaHangCNPT,@BanHangCNPT,@QLHangTonKho,@QLTSCD,@TinhGia,@KTTongHop,@HeThong,@PhienBan)
return
end
if(@param='update')
begin
update tblHopDong set TenHD=@TenHD,NgayKy=@NgayKy,GiaTri=@GiaTri,MaNV=@MaNV,MaKH=@MaKH,NgayHTDK=@NgayHTDK,TNKH=@TNKH,TNBravo=@TNBravo,
MaNVTheoDoi=@MaNVTheoDoi,SoDuCongNo=@SoDuCongNo,QLTienMat=@QLTienMat,MuaHangCNPT=@MuaHangCNPT,BanHangCNPT=@BanHangCNPT,QLHangTonKho=@QLHangTonKho,QLTSCD=@QLTSCD,TinhGia=@TinhGia,KTTongHop=@KTTongHop,HeThong=@HeThong,PhienBan=@PhienBan
where SoHieuHD=@SoHieuHD
return
end
if(@param='delete')
begin
delete from tblHopDong where SoHieuHD=@SoHieuHD
return
end
if(@param='count')
begin
set @SLDieuKhoanTT=(SELECT Count(*) FROM tblDieuKhoanTT where SoHieuHD=@SoHieuHD)
set @SLTinhTrangHD=(SELECT Count(*) FROM tblTinhTrangHD where SoHieuHD=@SoHieuHD)
set @SLPhieuBH=(SELECT Count(*) FROM tblPhieuBH where SoHieuHD=@SoHieuHD)
set @SLLanTT=(SELECT Count(*) FROM tblLanThanHToan where SoHieuHD=@SoHieuHD)
set @SoLuong=@SLDieuKhoanTT+@SLTinhTrangHD+@SLPhieuBH+@SLLanTT
return
end
if(@param='ThanhLy')
begin
update tblHopDong set ThanhLy=1,LyDo=@GhiChu,NgayHT=@NgayTL where SoHieuHD=@SoHieuHD
return
end
if(@param='HuyThanhLy')
begin
update tblHopDong set ThanhLy=0,LyDo=null,NgayHT=null where SoHieuHD=@SoHieuHD
return
end
if(@param='huyHD')
begin
update tblHopDong set HuyHD=1,LyDo=@GhiChu where SoHieuHD=@SoHieuHD
return
end
if(@param='find')
begin
select SoHieuHD,TenHD,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and ThanhLy=0 and (SoHieuHD like @key or TenHD like @key or GiaTri like @key or TenKH like @key or TenNV like @key or TNKH like @key or TNBravo like @key or DaiDienKH like @key or tenPhienBan like @key)
RETURN
end
if(@param='selectbyNVTD')
begin
SELECT NhanVienTheoDoi, TenNV, SoHieuHD, TenHD, NgayKy, GiaTri, DaiDienKH, TenKH, SoDuCongNo, ThanhLy
FROM V_NhanVien_HopDong where MaNVTheoDoi=@MaNVTheoDoi
return
end
if(@param='selectbyNVKy')
begin
SELECT NhanVienTheoDoi, TenNV, SoHieuHD, TenHD, NgayKy, GiaTri, DaiDienKH, TenKH, SoDuCongNo, ThanhLy
FROM V_NhanVien_HopDong where MaNV=@MaNV
return
end
if(@param='DaThanhLy')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy=1
return
end
if(@param='ChuaThanhLy')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy=1 and HuyHD=1
return
end
if(@param='DaHuy')
begin
select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID
from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D
where A.MaNV=B.MaNV and A.MaKH=C.MaKH and D.ID=A.PhienBan and ThanhLy=0 and HuyHD=1
return
end
Tầng DAL –Data Access Layer
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
public class HopDong
{
private const string PARAM = "@Param";
private const string SO_HIEU_HD = "@SoHieuHD";
private const string TEN_HD = "@TenHD";
private const string NGAY_KY = "@NgayKy";
private const string MA_NV = "@MaNV";
private const string MA_KH = "@MaKH";
private const string NGAY_HTDK = "@NgayHTDK";
private const string NGAY_HT = "@NgayHT";
private const string TN_KH = "@TNKH";
private const string TN_BRAVO = "@TNBravo";
private const string SO_LUONG = "@SoLuong";
private const string GIA_TRI = "@GiaTri";
private const string MANV_THEO_DOI = "@MaNVTheoDoi";
private const string DAI_DIEN_KH = "@DaiDienKH";
private const string SO_DU_CONG_NO = "@SoDuCongNo";
private const string KEY = "@Key";
private const string GHI_CHU = "@GhiChu";
private const string QLTIEN_MAT = "@QLTienMat";
private const string MUA_HANG_CNPT = "@MuaHangCNPT";
private const string BAN_HANG_CNPT = "@BanHangCNPT";
private const string QLHANG_TON_KHO = "@QLHangTonKho";
private const string QLTSCD = "@QLTSCD";
private const string TINH_GIA = "@TinhGia";
private const string KT_TONG_HOP = "@KTTongHop";
private const string HE_THONG = "@HeThong";
private const string PHIEN_BAN = "@PhienBan";
SqlConnection conn = null;
public HopDong()
{
conn = new SqlConnection(new Connection().getConnectionString());
}
public DataSet selectALl(ref string error)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "selectall";
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public SqlDataReader selectByID(ref string error, string SoHieuHD)
{
SqlDataReader _rd = null;
SqlCommand _cmd = new SqlCommand("SP_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "selectByID";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
try
{
conn.Open();
_rd = _cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _rd;
}
public DataSet selectByNhanVien(ref string error, string MaNhanVien)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "selectByNV";
_para = _adt.SelectCommand.Parameters.Add(MA_NV, SqlDbType.NChar);
_para.Value = MaNhanVien;
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public DataSet selectByKhachHang(ref string error, string MaKhachHang)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "selectByKH";
_para = _adt.SelectCommand.Parameters.Add(MA_KH, SqlDbType.NChar);
_para.Value = MaKhachHang;
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public DataSet daThanhLy(ref string error)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "DaThanhLy";
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public DataSet dsTinhTrang(ref string error, string soHieuHD)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "TinhTrang";
_para = _adt.SelectCommand.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = soHieuHD;
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public void insert(ref string error, string SoHieuHD, string TenHD,int GiaTri, DateTime NgayKy, string MaNV,string MaKH,DateTime NgayHTDK,DateTime NgayHT,string TNKH,string TNBravo,string MaNVTheoDoi,string DaiDienKH,int SoDuCongNo,bool QLTienMat,bool MuaHang,bool BanHang,bool HangTonKho,bool TSCD,bool TinhGia,bool KTTongHop,bool HeThong,int phienban)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "insert";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
_para = _cmd.Parameters.Add(TEN_HD, SqlDbType.NVarChar);
_para.Value = TenHD;
_para = _cmd.Parameters.Add(NGAY_KY, SqlDbType.SmallDateTime);
_para.Value = NgayKy;
_para = _cmd.Parameters.Add(MA_NV, SqlDbType.NChar);
_para.Value = MaNV;
_para = _cmd.Parameters.Add(MA_KH, SqlDbType.NChar);
_para.Value = MaKH;
_para = _cmd.Parameters.Add(NGAY_HTDK, SqlDbType.SmallDateTime);
_para.Value = NgayHTDK;
_para = _cmd.Parameters.Add(NGAY_HT, SqlDbType.SmallDateTime);
_para.Value = NgayHT;
_para = _cmd.Parameters.Add(TN_KH, SqlDbType.NVarChar);
_para.Value = TNKH;
_para = _cmd.Parameters.Add(TN_BRAVO, SqlDbType.NVarChar);
_para.Value = TNBravo;
_para = _cmd.Parameters.Add(GIA_TRI, SqlDbType.Int);
_para.Value = GiaTri;
_para = _cmd.Parameters.Add(MANV_THEO_DOI, SqlDbType.NChar);
_para.Value = MaNVTheoDoi;
_para = _cmd.Parameters.Add(DAI_DIEN_KH, SqlDbType.NVarChar);
_para.Value = DaiDienKH;
_para = _cmd.Parameters.Add(SO_DU_CONG_NO, SqlDbType.Int);
_para.Value = SoDuCongNo;
_para = _cmd.Parameters.Add(QLTIEN_MAT, SqlDbType.Bit);
_para.Value = QLTienMat;
_para = _cmd.Parameters.Add(MUA_HANG_CNPT, SqlDbType.Bit);
_para.Value = MuaHang;
_para = _cmd.Parameters.Add(BAN_HANG_CNPT, SqlDbType.Bit);
_para.Value = BanHang;
_para = _cmd.Parameters.Add(QLHANG_TON_KHO, SqlDbType.Bit);
_para.Value = HangTonKho;
_para = _cmd.Parameters.Add(QLTSCD, SqlDbType.Bit);
_para.Value = TSCD;
_para = _cmd.Parameters.Add(TINH_GIA, SqlDbType.Bit);
_para.Value = TinhGia;
_para = _cmd.Parameters.Add(KT_TONG_HOP, SqlDbType.Bit);
_para.Value = KTTongHop;
_para = _cmd.Parameters.Add(HE_THONG, SqlDbType.Bit);
_para.Value = HeThong;
_para = _cmd.Parameters.Add(PHIEN_BAN, SqlDbType.Int);
_para.Value = phienban;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public void update(ref string error, string SoHieuHD, string TenHD, int GiaTri, DateTime NgayKy, string MaNV, string MaKH, DateTime NgayHTDK, DateTime NgayHT, string TNKH, string TNBravo, string MaNVTheoDoi, string DaiDienKH, int SoDuCongNo, bool QLTienMat, bool MuaHang, bool BanHang, bool HangTonKho, bool TSCD, bool TinhGia, bool KTTongHop, bool HeThong,int phienban)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "update";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
_para = _cmd.Parameters.Add(TEN_HD, SqlDbType.NVarChar);
_para.Value = TenHD;
_para = _cmd.Parameters.Add(NGAY_KY, SqlDbType.SmallDateTime);
_para.Value = NgayKy;
_para = _cmd.Parameters.Add(MA_NV, SqlDbType.NChar);
_para.Value = MaNV;
_para = _cmd.Parameters.Add(MA_KH, SqlDbType.NChar);
_para.Value = MaKH;
_para = _cmd.Parameters.Add(NGAY_HTDK, SqlDbType.SmallDateTime);
_para.Value = NgayHTDK;
_para = _cmd.Parameters.Add(NGAY_HT, SqlDbType.SmallDateTime);
_para.Value = NgayHT;
_para = _cmd.Parameters.Add(TN_KH, SqlDbType.NVarChar);
_para.Value = TNKH;
_para = _cmd.Parameters.Add(TN_BRAVO, SqlDbType.NVarChar);
_para.Value = TNBravo;
_para = _cmd.Parameters.Add(GIA_TRI, SqlDbType.Int);
_para.Value = GiaTri;
_para = _cmd.Parameters.Add(MANV_THEO_DOI, SqlDbType.NChar);
_para.Value = MaNVTheoDoi;
_para = _cmd.Parameters.Add(DAI_DIEN_KH, SqlDbType.NVarChar);
_para.Value = DaiDienKH;
_para = _cmd.Parameters.Add(SO_DU_CONG_NO, SqlDbType.Int);
_para.Value = SoDuCongNo;
_para = _cmd.Parameters.Add(QLTIEN_MAT, SqlDbType.Bit);
_para.Value = QLTienMat;
_para = _cmd.Parameters.Add(MUA_HANG_CNPT, SqlDbType.Bit);
_para.Value = MuaHang;
_para = _cmd.Parameters.Add(BAN_HANG_CNPT, SqlDbType.Bit);
_para.Value = BanHang;
_para = _cmd.Parameters.Add(QLHANG_TON_KHO, SqlDbType.Bit);
_para.Value = HangTonKho;
_para = _cmd.Parameters.Add(QLTSCD, SqlDbType.Bit);
_para.Value = TSCD;
_para = _cmd.Parameters.Add(TINH_GIA, SqlDbType.Bit);
_para.Value = TinhGia;
_para = _cmd.Parameters.Add(KT_TONG_HOP, SqlDbType.Bit);
_para.Value = KTTongHop;
_para = _cmd.Parameters.Add(HE_THONG, SqlDbType.Bit);
_para.Value = HeThong;
_para = _cmd.Parameters.Add(PHIEN_BAN, SqlDbType.Int);
_para.Value = phienban;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public void delete(ref string error, string SoHieuHD)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "delete";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public void thanhLy(ref string error, string SoHieuHD,DateTime NgayTL,string GhiChu)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "ThanhLy";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
_para = _cmd.Parameters.Add(NGAY_HT, SqlDbType.SmallDateTime);
_para.Value = NgayTL;
_para = _cmd.Parameters.Add(GHI_CHU, SqlDbType.NVarChar);
_para.Value = GhiChu;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public void huyThanhLy(ref string error, string SoHieuHD)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "huyThanhLy";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public void huyHopDong(ref string error, string SoHieuHD, string GhiChu)
{
SqlCommand _cmd = new SqlCommand("Sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "huyHD";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
_para = _cmd.Parameters.Add(GHI_CHU, SqlDbType.NVarChar);
_para.Value = GhiChu;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
public int count(ref string error, string SoHieuHD)
{
int _SoLuong = 0;
SqlCommand _cmd = new SqlCommand("sp_HopDong", conn);
_cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _cmd.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "count";
_para = _cmd.Parameters.Add(SO_HIEU_HD, SqlDbType.NChar);
_para.Value = SoHieuHD;
_para = _cmd.Parameters.Add(SO_LUONG, SqlDbType.Int);
_cmd.Parameters[SO_LUONG].Direction = ParameterDirection.Output;
try
{
conn.Open();
_cmd.ExecuteNonQuery();
_SoLuong = Convert.ToInt32(_cmd.Parameters[SO_LUONG].Value.ToString());
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
return _SoLuong;
}
public DataSet find(ref string error,string key)
{
DataSet _ds = new DataSet();
SqlDataAdapter _adt = new SqlDataAdapter("sp_HopDong", conn);
_adt.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter _para = null;
_para = _adt.SelectCommand.Parameters.Add(PARAM, SqlDbType.NVarChar);
_para.Value = "find";
_para = _adt.SelectCommand.Parameters.Add(KEY, SqlDbType.NChar);
_para.Value = key;
try
{
_adt.Fill(_ds);
}
catch (SqlException _ex)
{
error = _ex.StackTrace + _ex.Message;
}
return _ds;
}
public DataSet timKiem(ref string error, string tuyChon, string tuKhoa, string giaTri, string kieuSoSanh, DateTime ngayKy, string thang, string nam, int quy, DateTime tuNgay, DateTime denNgay,bool TheoTuKhoa,bool TheoGiaTri,string phamViTK,ref string queryString)
{
string Sql;
Sql = "select SoHieuHD,TenHD,TenPhienBan,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo,QLTienMat,MuaHangCNPT,BanHangCNPT,QLHangTonKho,QLTSCD,TinhGia,KTTongHop,HeThong,D.ID from tblHopDong A,tblNhanVien B,tblKhachHang C,tblPhienBan D where (A.MaNV=B.MaNV and A.MaKH=C.MaKH and A.PhienBan=D.ID) ";
if (phamViTK.Equals("Chưa thanh lý"))
{
Sql = Sql + " and ( ThanhLy=0) and (HuyHD=0)";
}
else if(phamViTK.Equals("Đã thanh lý"))
{
Sql = Sql + " and (ThanhLy=1) and (HuyHD=0)";
}
else if(phamViTK.Equals("Bị hủy bỏ"))
{
Sql = Sql + " and (HuyHD=1) ";
}
if (tuyChon.Equals("Theo ngày"))
{
Sql = Sql + " and (NgayKy='"+ngayKy.ToShortDateString()+"') " ;
}
else if (tuyChon.Equals("Theo tháng"))
{
Sql = Sql + " and ( MONTH(NgayKy)="+thang+" and YEAR(NgayKy)="+nam+" )";
}
else if (tuyChon.Equals("Theo quý"))
{
if (quy ==1)
{
Sql = Sql + " and (MONTH(NgayKy)<=3 and YEAR(NgayKy)="+nam+" ) ";
}
else if (quy == 2)
{
Sql = Sql + " and (MONTH(NgayKy) >3 and MONTH(NgayKy)<=6 and YEAR(NgayKy)=" + nam + " ) ";
}
else if(quy==3)
{
Sql = Sql + " and (MONTH(NgayKy) >6 and MONTH(NgayKy)<=9 and YEAR(NgayKy)=" + nam + " ) ";
}
else
{
Sql = Sql + " and ((MONTH(NgayKy) >9 and MONTH(NgayKy)<=12) and YEAR(NgayKy)=" + nam + " ) ";
}
}
else if (tuyChon.Equals("Theo năm"))
{
Sql = Sql + " and ( YEAR(NgayKy)="+nam+" )";
}
else if (tuyChon.Equals("Từ ngày"))
{
Sql = Sql + " and (NgayKy BETWEEN '"+tuNgay.ToString()+"' and '"+denNgay.ToString()+"' )";
}
if (TheoTuKhoa == true)
{
Sql = Sql + " and (SoHieuHD like " + tuKhoa + " or TenHD like " + tuKhoa + " or TenKH like " + tuKhoa + " or TenNV like " + tuKhoa + " or TNKH like " + tuKhoa + " or TNBravo like " + tuKhoa + " or DaiDienKH like " + tuKhoa + " or tenPhienBan like " + tuKhoa + ")";
}
if (TheoGiaTri == true)
{
Sql = Sql + " and GiaTri " + kieuSoSanh + " " + giaTri;
}
DataSet ds = new DataSet();
queryString = Sql;
SqlDataAdapter adt = new SqlDataAdapter(Sql, conn);
adt.SelectCommand.CommandType = CommandType.Text;
try
{
adt.Fill(ds);
}
catch(SqlException ex)
{
error = Sql + "; " + ex.StackTrace + " ; " + ex.Message;
}
return ds;
}
}
}
Tầng Bussiness Rules
using System;
using System.Collections.Generic;
using System.Text;
using DAL;
using System.Data;
using System.Data.SqlClient;
namespace BussinessRules
{
public class HopDongRules
{
private HopDong hd = null;
public HopDongRules()
{
hd = new HopDong();
}
#region public method
public DataSet selectAll(ref string error)
{
return hd.selectALl(ref error);
}
public DataSet find(ref string error, string key)
{
return hd.find(ref error, key);
}
public SqlDataReader selectByID(ref string error, string SoHieuHD)
{
return hd.selectByID(ref error, SoHieuHD);
}
public DataSet selectByNhanVien(ref string error, string MaNhanVien)
{
return hd.selectByNhanVien(ref error, MaNhanVien);
}
public DataSet selectByKhachHang(ref string error, string MaKhachHang)
{
return hd.selectByKhachHang(ref error, MaKhachHang);
}
public DataSet daThanhLy(ref string error)
{
return hd.daThanhLy(ref error);
}
public DataSet dsTinhTrang(ref string error, string sohieuHopDong)
{
return hd.dsTinhTrang(ref error, sohieuHopDong);
}
public void huyThanhLy(ref string error, string SoHieuHD)
{
hd.huyThanhLy(ref error, SoHieuHD);
}
public void insert(ref string error, string SoHieuHD, string TenHD, DateTime NgayKy, int GiaTri, string MaNV, string MaKH, DateTime NgayHTDuKien, DateTime NgayHT, string TrachNhiemKH, string TNBravo, string MaNhanVienTheoDoi, string DaiDienKhachHang, int SoDuCongNo, bool QLTienMat, bool MuaHang, bool BanHang, bool HangTonKho, bool TSCD, bool TinhGia, bool KTTongHop, bool HeThong,int phienban)
{
if(!CheckIDExist(ref error,SoHieuHD))
hd.insert(ref error, SoHieuHD, TenHD, GiaTri, NgayKy, MaNV, MaKH, NgayHTDuKien, NgayHT, TrachNhiemKH, TNBravo,MaNhanVienTheoDoi,DaiDienKhachHang,SoDuCongNo,QLTienMat,MuaHang,BanHang,HangTonKho,TSCD,TinhGia,KTTongHop,HeThong,phienban);
}
public void update(ref string error, string SoHieuHD, string TenHD, DateTime NgayKy, int GiaTri, string MaNV, string MaKH, DateTime NgayHTDuKien, DateTime NgayHT, string TrachNhiemKH, string TNBravo, string MaNhanVienTheoDoi, string DaiDienKhachHang, int SoDuCongNo, bool QLTienMat, bool MuaHang, bool BanHang, bool HangTonKho, bool TSCD, bool TinhGia, bool KTTongHop, bool HeThong,int phienban)
{
hd.update(ref error, SoHieuHD, TenHD, GiaTri, NgayKy, MaNV, MaKH, NgayHTDuKien, NgayHT, TrachNhiemKH, TNBravo, MaNhanVienTheoDoi, DaiDienKhachHang, SoDuCongNo, QLTienMat, MuaHang, BanHang, HangTonKho, TSCD, TinhGia, KTTongHop, HeThong,phienban);
}
public void delete(ref string error, string SoHieuHD)
{
if (!CheckDelete(ref error, SoHieuHD))
hd.delete(ref error, SoHieuHD);
}
public void thanhLy(ref string error, string SoHieuHD,DateTime NgayTL,string GhiChu)
{
hd.thanhLy(ref error, SoHieuHD,NgayTL,GhiChu);
}
public DataSet timKiem(ref string error, string tuyChon, string tuKhoa, string giaTri, string kieuSoSanh, DateTime ngayKy, string thang, string nam, int quy, DateTime tuNgay, DateTime denNgay, bool TheoTuKhoa, bool TheoGiaTri,string phamViTK,ref string queryString)
{
return hd.timKiem(ref error, tuyChon, tuKhoa, giaTri, kieuSoSanh, ngayKy, thang, nam, quy, tuNgay, denNgay, TheoTuKhoa, TheoGiaTri, phamViTK,ref queryString);
}
#endregion
#region private method
private bool CheckIDExist(ref string error, string SoHieuHD)
{
SqlDataReader _rd = hd.selectByID(ref error, SoHieuHD);
bool _flag = false;
if (_rd.Read())
{
_flag = true;
error = "Thưa ngài số hiệu hợp đồng\""+SoHieuHD+"\" đã tồn tại";
}
_rd.Close();
return _flag;
}
private bool CheckDelete(ref string error, string SoHieuHD)
{
int _SoLuong = 0;
bool _flag = false;
_SoLuong = hd.count(ref error, SoHieuHD);
if (_SoLuong > 0)
{
error = "Thưa ngài đã có phát sinh tới hợp đồng này, Ngài không được phép xóa";
_flag = true;
}
return _flag;
}
#endregion
}
}
Tầng giao diện người sử dụng WinUI –Window User Interface
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BussinessRules;
using WinUI.library;
namespace WinUI.form
{
public partial class frmdsHopDong : WinUI.form.root
{
public event CloseForm FormClose;
string SoHieuHD;
HopDongRules hd;
frmdsDieuKhoanTT dk;
frmdsTinhTrang tt;
frmdsNhanVien_TrienKhai nvtk;
frmdsLanThanhToan ltt;
public frmdsHopDong()
{
InitializeComponent();
hd = new HopDongRules();
}
public frmdsHopDong(frmdsTinhTrang _dk)
{
InitializeComponent();
hd = new HopDongRules();
tt = _dk;
}
public frmdsHopDong(frmdsDieuKhoanTT _dk)
{
InitializeComponent();
hd = new HopDongRules();
dk = _dk;
}
public frmdsHopDong(frmdsNhanVien_TrienKhai _nvtk)
{
InitializeComponent();
hd = new HopDongRules();
nvtk = _nvtk;
}
public frmdsHopDong(frmdsLanThanhToan _ltt)
{
InitializeComponent();
hd = new HopDongRules();
ltt = _ltt;
}
private void frmdsHopDong_Load(object sender, EventArgs e)
{
//string SoHieuHD,TenHD,GiaTri,NgayKy,TenKH,TenNV,NgayHTDK,NgayHT,TNKH,TNBravo,DaiDienKH,A.MaKH,A.MaNV,A.MaNVTheoDoi,SoDuCongNo;
try
{
dataGridView1.Columns[0].HeaderText = "Số HHD";
dataGridView1.Columns["TenHD"].HeaderText = "Tên HĐ";
dataGridView1.Columns["GiaTri"].HeaderText = "Giá trị";
dataGridView1.Columns["NgayKy"].HeaderText = "Ngày ký";
dataGridView1.Columns["TenKh"].HeaderText = "Khách hàng";
dataGridView1.Columns["TenNV"].HeaderText = "Người ký";
dataGridView1.Columns["NgayHTDK"].HeaderText = "Ngày HT";
dataGridView1.Columns["NgayHT"].Visible = false;
dataGridView1.Columns["TNKH"].Visible = false;
dataGridView1.Columns["TNBRAVO"].Visible = false;
dataGridView1.Columns["DaiDienKH"].HeaderText = "Đại diện KH";
dataGridView1.Columns["MaKH"].Visible = false;
dataGridView1.Columns["MaNV"].Visible = false;
dataGridView1.Columns["MaNVTHeoDoi"].Visible = false;
dataGridView1.Columns["SoDuCongNo"].HeaderText = "Còn nợ";
dataGridView1.Columns["QLTienMat"].HeaderText = "Tiền mặt";
dataGridView1.Columns["MuaHangCNPT"].HeaderText = "Mua hàng";
dataGridView1.Columns["BanHangCNPT"].HeaderText = "Bán hàng";
dataGridView1.Columns["QLHangTonKho"].HeaderText = "Tồn kho";
dataGridView1.Columns["QLTSCD"].HeaderText = "TSCĐ";
dataGridView1.Columns["TinhGia"].HeaderText = "Tính giá";
dataGridView1.Columns["KTTOngHop"].HeaderText = "KT Tổng hợp";
dataGridView1.Columns["HeThong"].HeaderText = "Hệ thống";
dataGridView1.Columns["TenPhienBan"].HeaderText = "Phiên bản";
dataGridView1.Columns["id"].Visible = false;
}
catch
{ }
}
public override void loadDatagrid()
{
base.loadDatagrid();
string _error = "";
DataSet _ds;
_ds = hd.selectAll(ref _error);
//if (LoaiForm.ToLower().Equals("dshopdong"))
//{
//}
//else if (LoaiForm.ToLower().Equals(""))
//{
//}
//else if (LoaiForm.ToLower().Equals(""))
//{
//}
//else if (LoaiForm.ToLower().Equals(""))
//{
//}
//else if (LoaiForm.ToLower().Equals(""))
//{
//}
//else
//{
// _ds = hd.selectAll(ref _error);
//}
if (_error == "")
{
TableSourceGrid = _ds.Tables[0];
dataGridView1.DataSource = TableSourceGrid;
}
}
public override void loadDatagrid(string maNguonGrid)
{
base.loadDatagrid(maNguonGrid);
}
public override void insert()
{
base.insert();
frmHopDong _hd = new frmHopDong(TITLE, null);
_hd.setCaption = "CẬP NHẬT HỢP ĐỒNG";
if (_hd.ShowDialog() == DialogResult.OK)
{
loadDatagrid();
SoHieuHD = _hd.txtSoHieuHD.Text;
if (dk != null)
{
dk.loadDatagrid(SoHieuHD);
dk.soHieuHopDong = SoHieuHD;
dk.insert();
}
}
}
public override void update(DataRow row)
{
base.update(row);
frmHopDong _hd = new frmHopDong(TITLE, row);
_hd.setCaption = "SỬA ĐỔI HỢP ĐỒNG";
if (_hd.ShowDialog() == DialogResult.OK)
{
loadDatagrid();
if (dk != null)
{
dk.Activate();
}
}
}
public override void delete()
{
base.delete();
DataRow _row = new WinUI.library.utility().getDataRow(dataGridView1);
string _error = "";
DialogResult _re = MessageBox.Show("Thưa ngài có thực sự muốn xóa hợp đồng này không?", TITLE, MessageBoxButtons.YesNo);
if (_re == DialogResult.Yes)
{
hd.delete(ref _error, _row[0].ToString());
if (_error != "")
MessageBox.Show(_error, TITLE);
else
loadDatagrid();
}
}
public override void delete(string maDoiTuong)
{
base.delete(maDoiTuong);
}
public override void print()
{
base.print();
//DataRow row = new WinUI.library.utility().getDataRow(dataGridView1);
//if (row != null)
//{
WinUI.report.frmShowReport _re = new WinUI.report.frmShowReport("danhsachhopdong");
//_re.QueryString = row["SoHieuHD"].ToString();
_re.ShowDialog();
//}
}
public override void loadDatagridInOrtherForm()
{
base.loadDatagridInOrtherForm();
DataRow row = new utility().getDataRow(dataGridView1);
if (row != null)
{
if (dk != null)
{
dk.loadDatagrid(row[0].ToString());
dk.soHieuHopDong = row[0].ToString();
}
if (tt != null)
{
tt.loadDatagrid(row[0].ToString());
}
if (nvtk != null)
{
nvtk.loadDatagrid(row[0].ToString());
}
if (ltt != null)
{
ltt.loadDatagrid(row[0].ToString());
}
}
}
public override void showOrtherForm()
{
base.showOrtherForm();
loadDatagridInOrtherForm();
int _temp = 0;
frmdsNhanVien_TrienKhai tk;
frmdsTinhTrang tt;
foreach (Form f in ((frmMain)this.MdiParent).MdiChildren)
{
if (f.GetType() == typeof(frmdsTinhTrang))
{
tt = (frmdsTinhTrang)f;
tt.Show();
_temp = 1;
}
if (f.GetType() == typeof(frmdsNhanVien_TrienKhai))
{
tk = (frmdsNhanVien_TrienKhai)f;
tk.Show();
_temp++;
}
}
}
private void frmdsHopDong_FormClosing(object sender, FormClosingEventArgs e)
{
FormClose();
}
public override void thanhLyHD()
{
base.thanhLyHD();
DataRow _row = new WinUI.library.utility().getDataRow(dataGridView1);
if (_row != null)
{
frmThanhLyHopDong _tl = new frmThanhLyHopDong(TITLE);
_tl.SoHieuHopDong = _row["SoHieuHD"].ToString().Trim();
if (_tl.ShowDialog() == DialogResult.OK)
loadDatagrid();
}
}
public override void huyHopDong()
{
base.huyHopDong();
}
public void GanThanhToan(int SoNgay)
{
DataTable _reTable = TableSourceGrid;
DataTable table = _reTable.Clone(); ;
int _numRow = _reTable.Rows.Count;
DataRow _row;
int _NumCol = _reTable.Columns.Count;
string _soHieuHD = "";
bool flag = false;
for(int i=0;i<_numRow;i++)
{
_row = _reTable.Rows[i];
_soHieuHD = _row["SoHieuHD"].ToString();
if (checkDate(_soHieuHD, SoNgay) == true)
{
object[] _obj = new object[_NumCol];
for (int j = 0; j < _NumCol; j++)
{
_obj[j] = _row[j].ToString();
}
table.Rows.Add(_obj);
}
}
table.AcceptChanges();
dataGridView1.DataSource = table;
}
private bool checkDate(string SoHieuHD,int SoNgay)
{
bool _re = false;
DataSet _ds;
DataTable _table;
DataRow _row;
DateTime _NgayTT, _Now;
_Now = DateTime.Now;
DieuKhoanTTRules _dk = new DieuKhoanTTRules();
string _error = "";
double _dnow, _dtt;
int _NumDay;
int _numRow;
_dnow = _Now.ToOADate();
_ds = _dk.selectALl(ref _error);
_table = _ds.Tables[0];
_numRow = _table.Rows.Count;
for(int i = 0;i <_numRow;i++)
{
_row = _table.Rows[i];
_NgayTT = Convert.ToDateTime(_row["NgayThucHien"].ToString());
_dtt = _NgayTT.ToOADate();
_dnow = _dnow - _dtt;
_NumDay = Convert.ToInt32(_dnow);
MessageBox.Show(_NumDay.ToString());
if (_NumDay <= SoNgay)
_re = true;
break;
}
return _re;
}
}
}
Các file đính kèm theo tài liệu này:
- 32152.doc