Phát triển HTTT kế toán bằng MS Access - Chương 9 - Bảng đơn mua hàng Purchase Order
James Perry, Richard Newmark
Chương
9
Qui trình mua hàng - chi tiền
Bảng đơn mua hàng Purchase Order
Bảng
đơn mua hàng Purchase Order tương tự bảng đơn bán hàng Sale Order mà bạn đã tạo
ở Chương 8 vì chúng mô hình hai biến cố tương tự nhau. Như đơn bán hàng, đơn mua
hàng là biến cố cam kết đưa đến một biến cố kinh tế. Đơn bán hàng đưa đến việc
bán hàng (trao hàng tồn kho cho khách hàng là biến cố giảm lượng kinh tế) và đơn
mua hàng đưa đến việc mua hàng (nhận hàng tồn kho từ nhà cung ứng là biến cố gia
lượng kinh tế). Cả hai biến cố đặt hàng chỉ liên kết với một tác nhân ngoại và
tại Pipefitters Supply Company, chỉ liên kết với một nhân viên. Hơn nữa, cả hai
biến cố đặt hàng đều có quan hệ nhiều-nhiều với tài nguyên tồn kho
Inventory.
Một
tương tự khác giữa hai bảng là Pipefitters lưu tổng trị giá các mặt hàng đã đặt
vào cả hai bảng. Mặc dù tổng trị giá các mặt hàng đã đặt có thể tính được bằng
cách lấy tổng các đơn giá nhân số lượng của từng mặt hàng đã đặt, Pipefitters
lưu tổng trị giá để kiểm soát. Như được đề cập ở Chương 8, Pipefitters cần định
kỳ thi hành một truy vấn để so sánh tổng các dòng đặt hàng với tổng trị giá
trong bảng để phát hiện những lỗi có thể phát sinh hay những bất thường.
Hình
9.10 trình bày sáu trường cho tblPurchaseOrder. Để ý
rằng tblPurchaseOrder có trường thời điểm thứ
hai là thời điểm giao hàng dự kiến expected delivery date. Pipefitters có thể
dùng thông tin này để tạo một loạt các truy vấn nhằm xác định tồn kho dự kiến
sẵn có để giao cho khách hàng vào một thời điểm cụ thể, thay vì chỉ dựa vào tính
toán tồn kho thực sự hiện có.
Hình 9.10 Các trường
cho tblPurchaseOrder.
BÀI
TẬP 9.9: TẠO BẢNG ĐƠN MUA HÀNG
1.
Hãy tạo bảng mới. Kích Create tab, rồi
kích Table Design trong nhóm Tables.
2.
Tạo khóa chính. Gõ PurchaseOrderID vào ô Field
Name đầu tiên rồi kích Primary Key trong nhóm
Tools.
3.
Nhấn F6 để sang phần Field Properties. Nhập các
thuộc tính trường cho PurchaseOrderID liệt kê ở Hình 9.10.
4.
Nhập kiểu dữ liệu Data Types và thuộc tính trường Field Properties cho các khóa
ngoại EmployeeID và VendorID liệt
kê ở Hình 9.10.
5.
Kế đến, tạo trường thời điểm đặt mua hàng bằng cách
nhập PurchaseOrderDate vào ô Field Name. Nhập
kiểu dữ liệu và thuộc tính trường liệt kê ở Hình 9.10.
6.
Hệ thông tin kế toán của Pipefitters sẽ gửi đơn mua hàng đến nhà cung ứng ngay
khi dữ liệu được nhập vào hệ thống. Vì thế, thời điểm đặt mua hàng thường là
thời điểm hiện tại. Vì thế, bạn cần đặt giá trị mặc định cho PurchaseOrderDate
là thời điểm hiện tại bằng cách nhập Date() vào
thuộc tính Default Value. Kiểm soát này sẽ giảm thiểu lỗi nhập liệu.
7.
Lưu bảng với tên tblPurchaseOrder.
Giờ
đây bạn có bảng đơn mua hàng Purchase Order hoàn chỉnh với một số kiểm soát tổng
quát được tạo bên trong nó, đảm bảo việc nhập dữ liệu hợp lý; mã ID phải có đúng
số chữ số, tổng trị giá đơn mua hàng không được âm, và thời điểm đặt hàng mặc
định là thời điểm hiện thời. Bạn nghĩ sao về một hạn chế hợp lý đối với thời
điểm dự kiến giao hàng? Thời điểm giao hàng dự kiến sớm hơn thời điểm đặt hàng
được không? Mặc dù ta không thể viết qui tắc hợp lệ ở mức
trường (field-level) để so sánh giá trị trường này trong
một bản ghi với giá trị trường khác trong cùng bản ghi, ta có thể tạo qui tắc
hợp lệ ở mức bảng (table-level) để thực
hiện nhiệm vụ này.
BÀI
TẬP 9.10: TẠO QUI TẮC HỢP LỆ MỨC BẢNG CHO THỜI ĐIỂM GIAO HÀNG DỰ
KIẾN EXPECTEDDELIVERYDATE
1.
Mở tblPurchaseOrder ở góc nhìn Design nếu nó
chưa được mở.
2.
Nếu khung Property Sheet chưa xuất hiện thì kích Property
Sheet trong nhóm Show/Hide để mở các thuộc tính ở mức bảng (xem
Hình 9.11).
Hình 9.11 Tạo qui tắc hợp lệ mức bảng.
3.
Trên Property Sheet, kích ô điều khiển Validation
Rule để kích hoạt công cụ tạo biểu
thức Expression Builder. Kích nút đó để mở Expression
Builder (xem Hình 9.11).
4.
Tạo qui tắc hợp lệ ở Hình 9.11. Kích
kép PurchaseOrderDate trong danh sách trường ở
Expression Builder.Go <=, rồi kích
kép ExpectedDeliveryDate.
Kích OK để đóng Expression Builder.
5.
Thêm thông tin sau vào thuộc tính Validation Text, thông tin đó sẽ xuất hiện khi
người dùng nhập vào thời điểm giao hàng dự kiến sớm hơn thời điểm đặt
hàng: Expected delivery date cannot be earlier than purchase
order date (Thời điểm giao hàng dự kiến không thể sớm hơn thời
điểm đặt hàng).
6.
Lưu các thay đổi.
7.
Hãy theo Bài tập 9.5 để nhập dữ liệu
từ Ch09.xlsx vào tblPurchaseOrder.
Ở góc nhìn Datasheet, hãy kiểm chứng có 24 bản ghi được nhập vào bảng. Đóng bảng
sau khi làm xong.
Bài
tập trên đã hoàn tất thiết kế cơ bản
của tblPurchaseOrder.
THỬ
NGHIỆM
Hãy
mở tblPurchaseOrder rồi nhập một bản ghi mới.
Nhập 999999 cho PurchaseOrderID, 999 cho EmployeeID, và 9999 cho VendorID. Bạn
được phép nhập các giá trị này mặc dù chúng không tồn tại trong các bảng liên
quan vì bạn chưa liên kết tblPurchaseOrder với
các bảng liên quan và áp đặt tính toàn vẹn tham chiếu. Giữ nguyên thời điểm mặc
định trong trường PurchaseOrderDate. Trong trường ExpectedDeliveryDate, hãy nhập
thời điểm trước một tháng so với PurchaseOrderDate. Tab sang trường
PurchaseOrderAmount rồi gõ 9999. Tab sang bản ghi kế. Để ý hộp thoại với thông
tin Validation Text xuất hiện khi bạn thử chuyển sang bản ghi kế. Sau khi kích
OK, bạn có thể xóa bản ghi hiện thời bằng cách nhấn phím Esc hay nhập một thời
điểm hợp lệ cho ExpectedDeliveryDate. Hãy xóa bản ghi rồi đóng bảng.


0 nhận xét