Thứ Tư, 12 tháng 10, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 9 - Thêm thành phần điều khiển giới hạn hàng tồn kho đã nhận theo hàng đã đặt trên form nhập biên bản nhận hàng

James Perry, Richard Newmark


Chương 9
Qui trình mua hàng - chi tiền


Thêm thành phần điều khiển giới hạn hàng tồn kho đã nhận theo hàng đã đặt trên form nhập biên bản nhận hàng


Việc đảm bảo thông tin nhà cung ứng đúng xuất hiện trên form nhập biên bản nhận hàng cho phép Pipefitters Supply Company tự tin rằng họ sẽ trả đúng nhà cung ứng cho hàng đã nhận. Cũng quan trọng không kém là Pipefitters chỉ trả cho nhà cung ứng với đúng hàng đã đặt. Kế toán viên trong hầu hết các doanh nghiệp sẽ chịu trách nhiệm kiểm chứng hàng đã nhận cũng là hàng đã đặt. Họ so sánh hàng và giá trên đơn mua hàng, hóa đơn nhà cung ứng, và biên bản nhận hàng. Nếu ba tài liệu này không khớp, kế toán viên sẽ ghi nhận sự khác biệt. Chẳng hạn, nếu Pipefitters nhận một mặt hàng không được đặt mua, kế toán viên phải liên hệ nhà cung ứng và quyết định phải làm gì với hàng không được đặt đó. Qui trình này mất thời gian, mà thời gian là tiền bạc.

Nhằm giảm thời gian đối chiếu tài liệu cho kế toán viên, bạn sẽ thêm một thành phần điều khiển vào form nhập biên bản nhận hàng ở các bài tập kế. Thành phần điều khiển này sẽ chuyển các mặt hàng từ đơn mua hàng tương ứng vào form nhập biên bản nhận hàng. Nếu Pipefitters chỉ thị cho nhân viên kho hàng (và thông báo đến nhà cung ứng) nhập thông tin vào form nhập biên bản nhận hàng, họ chỉ việc từ chối nhận bất kỳ hàng nào không xuất hiện trên form. Nếu việc ghi nhận thông tin nhận hàng là không khả thi vào thời điểm hàng cập bến, nhân viên kho hàng chỉ cần để hàng không được đặt sang một bên rồi nhập vào form hàng không được đặt. Cả hai thủ tục trên đều tiết kiệm thời gian quí giá của kế toán viên.

BÀI TẬP 9.38: TẠO TRUY VẤN NỐI ĐUÔI QRYADDORDEREDITEMSTOPURCHINV

1. Kích Create tab rồi kích Query Design. Thêm các bảng sau từ hộp thoại Show Table bằng cách kích kép chúng: tblPurchase, tblPurchaseOrder, và tblReservation-PurchaseOrderInventory. Kích nút Close. Di dời và định cỡ lại các danh sách trường để có thể thấy tất cả các tên trường.

2. Kích Append trong nhóm Query Type, chọn tblInflow-PurchaseInventory từ combo box trong hộp thoại Append, rồi kích OK.

3. Kích kép InventoryReceiptID từ khung trường tblPurchase để thêm nó vào Criteria Pane. Gõ [TempVars]![TempInventoryReceiptID] vào ô Criteria để dùng biến tạm được tạo bởi mcrUpdateVendorIDAndInvItems.

4. Thêm InventoryID từ tblReservation-PurchaseOrderInventory vào Criteria Pane. Để ý rằng Access tự động điền vào các trường với tên tương ứng từ tblInflow-PurchaseInventory trong các ô Append To (xem Hình 9.40). Bạn phải tự chọn các trường Append To nếu tên không đúng. Để minh họa, hãy kích kép POPrice trong danh sách trường tblReservation-PurchaseOrderInventory. Để ý rằng ô Append To của POPrice là trống. Hãy xóa POPrice khỏi Criteria Pane vì bạn không cần nó trong truy vấn này.

Hình 9.40 qryAddOrderedItemsToPurchInv ở góc nhìn Design.

5. Lưu truy vấn là qryAddOrderedItemsToPurchInv. Đóng truy vấn.

6. Mở tblInflow-PurchaseInventory ở góc nhìn Design, đặt giá trị mặc định cho QuantityReceived và InventoryReceiptPrice về 0. Khi truy vấn nối đuôi thêm các dòng trên đơn mua hàng vào bảng này, QuantityReceived và InventoryReceiptPrice được tự động gán là 0. Giá trị 0 phục vụ hai mục đích. Thứ nhất, nó được gán vào các trường bắt buộc nếu truy vấn nối đuôi không gán vào – mọi trường bắt buộc đều phải có giá trị trước khi Access có thể lưu bản ghi. Thứ hai, 0 cho biết nhân viên kho hàng chưa thực sự đếm hàng tồn kho hay chưa nhập giá từ hóa đơn của nhà cung ứng.

7. Để kiểm thử truy vấn, bạn phải xóa hành động RemoveTempVar khỏi mcrUpdateVendorIDAndInvItems để giữ giá trị TempInventoryReceiptID trong bộ nhớ để nó có thể được dùng trong qryAddOrderedItemsToPurchInv. Kích kép frmPurchase để mở nó ở góc nhìn Form. Đến New Record. Nhập thông tin ở Hình 9.41. Tab sang nút lệnh Update Vendor # and Inv. Items rồi kích nó để thi hành mcrUpdateVendorIDAndInvItems, mà sẽ cập nhật VendorID thành 1009 (và đặt TempInventoryReceiptID là 999999). Kích kép qryAddOrderedItemsToPurchInv để thêm các mục trên dòng tồn kho; kích Yes trong các hộp thoại khuyến cáo. Để xem các thay đổi, hãy đến bản ghi trước rồi trở về bản ghi vừa tạo. Bạn cần thấy hai hàng tồn kho, 1032 và 1045, được thêm vào subform. Dùng các nút chọn bản ghi trên subform và form để xóa dữ liệu kiểm thử. Đóng form. Mở mcrUpdateVendorIDAndInvItems ở góc nhìn Design rồi thêm hành động RemoveTempVar (xem Bài tập 9.36, Bước 7 và Hình 9.38).

Hình 9.41 Form nhập biên bản nhận hàng với bản ghi kiểm thử.

BÀI TẬP 9.39: THÊM CÁC HÀNH ĐỘNG VÀO MCRUPDATEVENDORIDANDINVITEMS ĐỂ THÊM HÀNG ĐÃ ĐẶT VÀO BẢN GHI HIỆN THỜI CỦA FORM NHẬP BIÊN BẢN NHẬN HÀNG

Hãy dùng Hình 9.42 làm hướng dẫn cho bài tập này. Chỉ có các hành động macro mới, mới được hiển thị đầy đủ.

Hình 9.42 mcrUpdateVendorIDAndInvItems sau khi thêm các hành động để thêm hàng tồn kho vào bản ghi hiện thời.

1. Mở mcrUpdateVendorIDAndInvItems ở góc nhìn Design. Thêm hành động OpenForm vào ô Add New Action (cần để cho phép fsubPurchase tái hiển thị sau khi qryAddOrderedItemsToPurchInv thêm các bản ghi vào tblInflow-PurchaseInventory). Chọn các giá trị tham biến sau:

  • Form Name – fsubPurchase
  • View – Form (giá trị mặc định)
  • Data Mode – Edit
  • Window Mode – Hidden (subform không mở ở một tab mới)


2. Thêm một hành động OpenQuery; đặt Query Name là qryAddOrderedItemsToPurchInv. Để nguyên giá trị mặc định cho các tham biến.

3.  Tái hiển thị subform. Thêm một hành động RepaintObject; đặt Object Type là Form và Object Name là fsubPurchase.

4. Dời hành động RemoveTempVar về cuối macro. Kích RemoveTempVar rồi kích liên tục mũi tên xuống màu xanh lá cây cho đến khi RemoveTempVar là hành động cuối cùng trong macro. Lưu rồi đóng macro.

5. Kiểm thử macro bằng cách mở frmPurchase, nhập bản ghi kiểm thử ở Hình 9.41, rồi kích nút Update Vendor # and Inv. Items. VendorID cần sửa thành 1009 và hai hàng tồn kho, 1032 và 1045, cần được thêm vào form. Dùng các nút chọn bản ghi trên subform và form để xóa dữ liệu kiểm thử. Đóng form.

6. Nhớ rằng nếu bạn thi hành macro trên một bản ghi mà trước đây đã thêm hàng tồn kho, danh sách hàng tồn kho sẽ không được cập nhật cho đến khi bạn rời khỏi bản ghi hiện thời. Việc loại bỏ nhu cầu rời khỏi bản ghi hiện thời để cập nhật danh sách tồn kho sẽ cần việc lập trình vượt quá phạm vi của tài liệu này.

BÀI TẬP 9.40: THÊM CÁC THÀNH PHẦN ĐIỀU KHIỂN VÀO FSUBPURCHASE ĐỂ NGĂN NGƯỜI DÙNG THÊM CÁC MẶT HÀNG KHÔNG ĐƯỢC ĐẶT VÀO FORM NHẬP BIÊN BẢN NHẬN HÀNG

Giờ đây bạn đã có một macro chuyển các mặt hàng đã đặt vào form nhập biên bản nhận hàng, bạn cần ngăn người dùng sửa các InventoryItemIDs và thêm hàng tồn kho khác vào form.

1. Mở subPurchase ở góc nhìn Design; mở Property Sheet.

2. Thay InventoryID combo box bằng ô văn bản. Xóa InventoryID combo box. Kích Text Box trong nhóm Controls rồi kích kép vào phần Detail bên dưới dấu # của đầu đề Our Item #.

3. Đặt các thuộc tính sau cho ô văn bản:

4. Trên Format tab, sửa Back Style và Border Style thành Transparent.

5. Trên Data tab, đặt Control Source là InventoryID; sửa Enabled thành No và Locked thành Yes.

6. Sửa Name trên Other tab thành InventoryID. Sửa Tab Stop thành No.

7. Xóa nhãn. Dùng các công cụ Size/Space và Align trong nhóm Sizing & Ordering trên dải lệnh Arrange để giúp bạn sắp thành phần điều khiển mới cho ngay. Lưu các thay đổi.

8. Chọn Form từ combo box trên Property Sheet. Kích Data tab. Sửa thuộc tính Allow Additions thành No. Lưu các thay đổi rồi chuyển về góc nhìn Form. Để ý rằng nút chọn bản ghi mới đã được loai khỏi phần Detail của subform (xem Hình 9.43). Hơn nữa, nút đến bản ghi mới trên thanh di chuyển đã bị vô hiệu hóa. Đóng subform.

Hình 9.43 Form nhập biên bản nhận hàng sau khi hoàn tất Bài tập 9.40.

9. Mở frmPurchase ở góc nhìn Form. Đến bản ghi thứ ba, Inventory Receipt # 100003. Để ý rằng nút chọn bản ghi mới không xuất hiện và nút đến bản ghi mới đã bị vô hiệu hóa. Đóng form.

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

Đăng nhận xét