Thứ Tư, 28 tháng 9, 2016

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 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.

Không có nhận xét nào:

Đăng nhận xét