Mình dự định hỗ trợ bạn. Nhưng khi mở database xem phần table và relationships thì ngộp quá. Mình xin lỗi bạn trước. Nhưng phần phân tích của bạn quá phức tạp nên khó lòng nghiên cứu cách hỗ trợ cho bạn được.
Một vài đề xuất để bạn phân tích lại cho ứng dụng gọn nhẹ hơn (mình không dám phân tích vì sợ thiếu).
1/ Gom các Table Nhacungcap, KhoaPhongNhan, KhoaPhongXuat thanh 1 table DonviNhapXuat.
2/Tạo một table PhatSinh có các field Ngày Nhập Xuất, Đơn Vị Nhập Xuất (liên kết với field đơn vị nhập xuất của table DonviNhapXuat), Mã nhập xuất, Số chứng từ nhập xuất, Nghiệp vụ ….
3/ Tạo 1 table nghiệp vụ có nội dung Nhập, xuất, trả có thể thêm hủy (dùng để xử lý các loại hàng hóa công cụ bị hư hỏng).
4/Bỏ các table nhaphang, chitietnhap, xuathang, chi tietxuat, luanchuyen, khoaphongnhap….. thay thế bằng table chitietnhapxuat có Mã nhập xuất liên kết với Mã nhập xuất của table PhatSinh (table chitietnhapxuat la subtable của table PhatSinh). Table này sẽ có Mã nhập xuất, tên hàng, đơn vị tính số lượng, đơn giá, thành tiền, Ghi chú (dành cho luân chuyển kho)
Từ các table này ta có thể xử lý như sau:
Khi nhập hàng: Record của table PhatSinh thể hiện Ngày Nhập Xuất, Đơn Vị Nhập Xuất và nghiệp vụ nhập. Đơn vị hoặc kho nào nhập sẽ cộng hàng.
Khi trả hàng hoặc xuất hàng: Record của table PhatSinh thể hiện Ngày Nhập Xuất, Đơn Vị Nhập Xuất và nghiệp vụ xuất. Đơn vị hoặc kho nào nhập sẽ trừ hàng.
Từ các table trên đủ để tạo các query xử lý tồn kho
Cùng có thể dùng phương pháp xử dụng 2 đơn vị ở table PhatSinh (1 nhập, 1 xuất) lúc này không cần tạo table nghiệp vụ. Sau đó tạo một query union để tổng hợp 2 phần nhập xuất của table chitietnhapxuat. Từ đó tạo query tính tồn kho.
Vấn đề này cũng đã được thảo luận bạn có thể tham khảo thêm
Ở đây.