bởi Richard

Bạn không cần phần mềm doanh nghiệp cồng kềnh để theo dõi hàng tồn kho của mình một cách hiệu quả. Hướng dẫn này sẽ giúp bạn phát triển ứng dụng theo dõi khoảng không quảng cáo tùy chỉnh của riêng mình để bạn có thể đưa ra quyết định về khoảng không quảng cáo thông minh dựa trên dữ liệu khoảng không quảng cáo kịp thời và chính xác.
yêu cầu hệ thống
Hệ thống kiểm kê của chúng tôi yêu cầu giấy phép phpGrid và phpChart thương mại tiêu chuẩn. Nó cần một vài tính năng nâng cao từ cả hai thành phần.
- PHP 5.6+(PHP 7.x hiện rất được khuyến khích!)
- MySQL/MariaDB
- phpGrid Lite (lưới con) -or- phpGrid Enterprise (Chi tiết chính, Nhóm)
- phpChart (đối với báo cáo)
Có gì trong Hệ thống quản lý hàng tồn kho
Một hệ thống quản lý hàng tồn kho có một số thành phần quan trọng. Về cốt lõi, kiểm soát hàng tồn kho hoạt động bằng cách theo dõi hai chức năng chính của kho: nhận (đến) và vận chuyển (đi). Các hoạt động khác như di chuyển hoặc di chuyển hàng tồn kho cũng diễn ra. Nguyên vật liệu giảm đi và thành phẩm tăng lên.
- lô hàng đến
- đơn đặt hàng đi
- Hàng tồn kho
- Các nhà cung cấp
- Máy quét mã vạch (1/2019 Mới!)
Thiết kế cơ sở dữ liệu hệ thống hàng tồn kho
Thông thường, một hệ thống kiểm kê có bốn yếu tố cơ bản: sản phẩm, mua hàng, đơn đặt hàng và nhà cung cấp. Mỗi yếu tố phải được theo dõi dựa trên vị trí, SKU và số lượng của nó. Hàng tồn kho hiện tại hoặc các sản phẩm có sẵn được cập nhật bằng cách theo dõi các lô hàng đến và đơn đặt hàng đi. Cảnh báo đặt hàng có thể được đặt để kích hoạt khi mức tồn kho giảm xuống dưới mức tối thiểu được xác định tùy chỉnh.

Thiết lập cơ sở dữ liệu quản lý hàng tồn kho
Tải về InventoryManager.sql
Tập lệnh SQL từ repo GitHub của hướng dẫn này, sau đó thực thi tập lệnh bằng công cụ MySQL chẳng hạn như MySQL Workbench. Điều này sẽ tạo ra một cơ sở dữ liệu mới có tên InventoryManager
cũng như các bảng cần thiết cho hướng dẫn này.
Lưu ý bên lề về ZenBase
The Inventory Management System is also one of the many application templates readily available at ZenBase (built on the top of phpGrid) for anyone — with or without coding skills — to use and customize for their own needs.
Thiết lập phpGrid
Tiếp tục nào.
Chúng tôi sẽ sử dụng một thành phần datagrid của phpGrid để xử lý tất cả cơ sở dữ liệu nội bộ CRUD (Tạo, Xóa, Cập nhật và Xóa) hoạt động.
Đảm bảo tải xuống bản sao của phpGrid trước khi bạn tiếp tục.
Để cài đặt phpGrid, hãy làm theo các bước sau:
- Giải nén tệp tải xuống phpGrid.
- Tải lên
phpGrid
thư mục vào thư mục phpGrid. - Hoàn tất cài đặt bằng cách định cấu hình
conf.php
tập tin.
Trước khi chúng tôi bắt đầu viết mã, chúng tôi phải đưa thông tin sau vào conf.php
tệp cấu hình phpGrid.
Tạo giao diện người dùng (UI)
Hệ thống kiểm kê của chúng tôi bao gồm bốn trang:
- Hàng tồn kho hiện tại
- mua hàng đến
- Đơn đặt hàng để vận chuyển
- Báo cáo

Tệp bao gồm cho menu được lưu trữ trong một inc
thư mục có tên menu.php
. Mã cho menu rất đơn giản. Để tập trung, chúng tôi sẽ không đi sâu vào chi tiết. Hãy nhìn vào mã bên trong inc
thư mục.
Chúng tôi cũng đã thêm một mục menu có tên Reports
.

trang
Chúng tôi sẽ sử dụng cùng một mẫu trang mà chúng tôi đã sử dụng cho các hướng dẫn về CRM và Quản lý dự án.
Hàng tồn kho hiện tại

Hãy bắt đầu với trang Khoảng không quảng cáo hiện tại.
Mua hàng đến làm tăng hàng tồn kho trong khi đơn đặt hàng đi giảm nó. Từ góc độ tổng thể chi tiết, Khoảng không quảng cáo hiện tại không chỉ có một mà là hai lưới dữ liệu chi tiết — Mua hàng (mua hàng đến) và đơn đặt hàng (đơn đặt hàng đi).
Vì vậy, trang Hàng tồn kho hiện tại bao gồm một lưới chính (Hàng tồn kho hiện tại trong kho) và hai lưới chi tiết (Mua hàng đến và Đơn đặt hàng đi). Chúng ta có thể dễ dàng trình bày các mối quan hệ này bằng cách sử dụng tính năng lưới dữ liệu chính và nhiều chi tiết của phpGrid.
phpGrid Lite so với Chuyên nghiệp và Doanh nghiệp
Chi tiết chính và các tính năng Nhóm yêu cầu phiên bản phpGrid Professional hoặc Enterprise. Nếu bạn đang sử dụng phiên bản Lite miễn phí, bạn vẫn có thể sử dụng lưới con thay cho chi tiết Chính mặc dù kém nâng cao hơn. Các phiên bản Professional hoặc Enterprise rất được khuyến khích.
Nếu bạn đã đọc hướng dẫn cuối cùng Xây dựng Trình quản lý quyên góp từ đầu, bạn sẽ không gặp vấn đề gì khi làm theo mã bên dưới.
Lưu ý việc sử dụng hàm set_col_format() được sử dụng để định dạng số nguyên.
Đó là tất cả đối với lưới dữ liệu Khoảng không quảng cáo hiện tại. Đây là những gì nó trông giống như cho đến nay:

Bây giờ, hãy thực hiện một vài thay đổi để nâng cao Sản phẩm lưới dữ liệu.
Trước hết, chúng tôi sẽ thêm một số định dạng có điều kiện: bất cứ khi nào Hàng tồn khoTrên tay được đặt thành 0 hoặc giá trị âm, nó sẽ được hiển thị bằng màu nền khác. Chúng ta sẽ sử dụng hàm set_conditional_format() cho mục đích này.
Đoạn mã trên thêm một điều kiện hiển thị để bất cứ khi nào InventoryOnHand
trường có giá trị nhỏ hơn (lt
) một, màu văn bản thay đổi thành red
và màu nền thành màu xám đậm (#DCDCDC
).
Thứ hai, bất cứ khi nào InventoryOnHand
nhỏ hơn giá trị hiển thị trong MinimumRequired
, chúng tôi muốn cảnh báo người dùng bằng cách hiển thị nó bằng màu nền nổi bật, chẳng hạn như vàng. Để so sánh giá trị giữa hai trường, chúng ta phải chuyển sang Javascript vì hàm set_conditional_format() chỉ hoạt động với một trường duy nhất.
Đoạn mã dưới đây sử dụng một for
vòng lặp để lặp qua từng hàng trong Các sản phẩm lưới dữ liệu. Nó so sánh các inventoryOnHand
vớiminimumRequired
và, khi điều kiện được đáp ứng, nó sẽ sử dụngsetCell
chức năng thay đổi màu nền.
Bạn có thể tìm hiểu thêm về cách so sánh nhiều giá trị ô trên trang web hỗ trợ phpGrid.
Tiếp theo, trên cùng một trang, chúng ta cần xem các giao dịch mua đang diễn ra (Mới đến) và đơn đặt hàng đi ra (Hướng ngoaị) cho một sản phẩm cụ thể.
Lưới chi tiết mua hàng (Sắp tới)
Lưới chi tiết đơn hàng (Đi)
Cả hai lưới chi tiết đều sử dụng cùng một khóa ngoại ProductId
để liên kết với lưới dữ liệu chính (Các sản phẩm).
Cuối cùng, mã hoàn chỉnh của chúng tôi để quản lý Hàng tồn kho hiện tại trang là:
Đây là ảnh chụp nhanh của trang khoảng không quảng cáo:

mua hàng đến

Trang tiếp theo là mua hàng sắp tới trang. Nó tương tự như Lưới chi tiết mua hàng chúng tôi đã thấy khi thiết lập Hàng tồn kho hiện tại trang. Chúng tôi nhóm các giao dịch mua theo ProductId
và hiển thị tổng trongNumberReceived
. Mọi giao dịch mua đến sẽ làm tăng hàng tồn kho.
Lưu ý: Tính năng nhóm chỉ khả dụng trong phiên bản phpGrid Professional và Enterprise. Để lọc mà không có nhóm, hãy sử dụng tìm kiếm tích hợp.
Mã hoàn chỉnh:
Đây là một ảnh chụp màn hình của chúng tôi mua hàng đến trang đã bật tính năng nhóm:

Đơn đặt hàng đi

Trang tiếp theo là Đơn đặt hàng đi trang. Nó tương tự như Lưới chi tiết đơn hàng từ Hàng tồn kho hiện tại trang. Ở đây, chúng tôi sẽ giới thiệu một hàm nâng cao gọi là set_grid_method().
Tóm lược
Hướng dẫn này xây dựng một hệ thống kiểm kê đơn giản và có thể mở rộng trong chưa đến 50 dòng mã. Phong cách tiến bộ của các hướng dẫn này cũng giúp người đọc cuối cùng trở nên quen thuộc và thoải mái hơn với phpGrid bằng cách giới thiệu một số tính năng mới của phpGrid trong mỗi hướng dẫn.
Chuyện gì sắp xảy ra
Điều này đánh dấu phần cuối của mã cần thiết để tạo các lưới dữ liệu cần thiết cho hướng dẫn này. Tuy nhiên, chúng tôi vẫn chưa hoàn thành. Vẫn còn một trang nữa chúng ta cần tạo — Báo cáo. Chúng tôi sẽ đề cập đến điều đó sau khi nhảy.
Việc sử dụng hệ thống kiểm kê mà không có một số loại báo cáo là gì? Trong phần này, bạn sẽ tìm hiểu cách sử dụng phpChart — tích hợp liền mạch với phpGrid — để tạo các báo cáo hữu ích và đẹp mắt cho ứng dụng Trình quản lý khoảng không quảng cáo của bạn.
Đây là trang của chúng ta sẽ trông như thế nào khi hoàn thành:

Trước khi bắt đầu, chúng ta cần cài đặt phpChart. Bạn nên tải phiên bản đầy đủ của phpChart vì phiên bản miễn phí (phpChart Lite) chỉ hỗ trợ biểu đồ đường.
Thiết lập phpChart
Điều quan trọng là chúng tôi giữ phpGrid và phpChart trong các thư mục riêng biệt. Dưới đây là khuyến khích phân cấp thư mục.
www +-- Donation_Manager | |-- phpGrid | | +-- conf.php | |-- phpChart | | +-- conf.php | +-- ...
thiết kế báo cáo
Chúng tôi sẽ đặt một biểu đồ hình tròn bên cạnh lưới tóm tắt khoảng không quảng cáo. Lưới dữ liệu cung cấp dữ liệu chuỗi để vẽ biểu đồ hình tròn.

Tích hợp phpGrid và phpChart
Trước hết, bao gồm các cuộc gọi đến cả hai conf.php
các tệp ở đầu mã.
require_once("phpGrid/conf.php"); require_once("phpChart/conf.php");
Biểu đồ tròn
Dưới đây là mã hoàn chỉnh để tạo biểu đồ hình tròn của chúng tôi:
Hãy xem qua mã.
Dòng đầu tiên là hàm tạo. Chúng tôi vượt qua array(null)
dưới dạng dữ liệu chuỗi bởi vì ban đầu chúng tôi không muốn có bất kỳ dữ liệu nào được hiển thị trong biểu đồ hình tròn. Dữ liệu hàng tồn kho được sử dụng để vẽ biểu đồ chưa có sẵn khi nó được khởi tạo lần đầu tiên. Dữ liệu được cung cấp từ datagrid sau này trong JSON.
Chúng tôi cũng đặt cho biểu đồ của mình một tên riêng, PieChart
.
Tiếp theo, chúng tôi đặt cho nó một tiêu đề. Không có gì ưa thích ở đây.
Khi chúng tôi có tiêu đề, chúng tôi gọi chức năng mặc định của sê-ri để đặt renderer
đến PieRenderer
. Không giống như biểu đồ thanh, biểu đồ hình tròn không có trục Y.
Chúng ta cũng có thể thiết lập rendererOptions
tài sản. Chúng tôi sẽ không đi vào chi tiết từng tùy chọn ở đây, nhưng bạn có thể tìm thêm thông tin trong tài liệu trực tuyến.
Chúng tôi cũng muốn thể hiện một huyền thoại. Lệnh set_legend bên dưới hiển thị chú thích ở phía tây (được ghi chú bởiw
) hoặc bên trái của biểu đồ hình tròn.
Chúng tôi cũng sẽ xóa đường viền và nền.
Cuối cùng, chúng tôi vẽ biểu đồ của mình bằng cách đặt chiều cao và chiều rộng bằng pixel.
Tuy nhiên, nếu bạn thực thi mã ngay bây giờ, bạn sẽ không thấy biểu đồ vì dữ liệu được sử dụng để hiển thị biểu đồ chưa có sẵn.
Lưới dữ liệu tóm tắt hàng tồn kho
Ở đây, chúng tôi sẽ sử dụng lưới dữ liệu hàng tồn kho giống như chúng tôi đã làm trong Các sản phẩm trang. Chúng ta chỉ cần thêm một thứ nữa — trình xử lý sự kiện.
Trong phpGrid, chúng ta có thể thêm một trình xử lý sự kiện bằng hàm add_event(). add_event() liên kết một trình xử lý sự kiện, về cơ bản là một hàm JavaScript, với một sự kiện phpGrid cụ thể. Một danh sách các sự kiện có thể được tìm thấy ở đây.
Vì chúng ta phải đợi datagrid tải xong trước nó có thể gửi dữ liệu để vẽ biểu đồ, chúng tôi sử dụng sự kiện jqGridLoadComplete
.
phpGrid 101 — sự kiện jqGridLoadComplete
jqGridLoadComplete là sự kiện cuối cùng xảy ra sau khi toàn bộ thân lưới dữ liệu tải xong. Lưu ý rằng phần thân lưới sẽ được tải lại nếu người dùng thay đổi thứ tự sắp xếp của cột hoặc đặt bộ lọc.
Gửi dữ liệu bằng Javascript
Sau đây là trình xử lý sự kiện Javascript cho jqGridLoadComplete
.
Mã hoàn chỉnh:
Bây giờ bạn đã có nó. Bạn vừa xây dựng hệ thống quản lý khoảng không quảng cáo đầu tiên của mình từ đầu bằng cách sử dụng PHP và MySQL!
Cảm ơn bạn đã đọc! Nếu bạn thích bài đăng này, xin vui lòng cho tôi một vài cái vỗ tay để nhiều người nhìn thấy nó.
Mới lập trình? Đừng sợ!
Nếu bạn chưa quen với lập trình và chưa quen viết mã, bạn có thể muốn xem ZenBase được xây dựng trên đỉnh của phpGrid. Hệ thống quản lý hàng tồn kho chỉ là một trong nhiều mẫu ứng dụng có sẵn tại ZenBase cho bất kỳ ai — có hay không kỹ năng mã hóa — để sử dụng và tùy chỉnh theo nhu cầu của riêng họ.
Bản trình diễn trực tuyến
Tiếp theo: Thêm máy quét mã vạch
Thêm máy quét mã vạch vào hệ thống quản lý hàng tồn kho của chúng tôi

Tải xuống mã nguồn trên Github
phpcontrols/quản lý hàng tồn kho
Mã nguồn của quản lý hàng tồn kho Ứng dụng quản lý hàng tồn kho tuyệt vời bằng PHP và MySQL từ đầu đến cuốigithub.com
Vấn đề chung:
Lỗi nghiêm trọng: Lỗi chưa gặp: Không tìm thấy lớp ‘phpGrid\C_DataGrid’
Làm thế nào để khắc phục:
Nếu bạn đang sử dụng phiên bản Lite miễn phí, bạn có thể nhận xét dòng đầu tiên
// use phpGrid\C_DataGrid;
– HOẶC –
Thêm một ký hiệu không gian tên toàn cầu – dấu gạch chéo ngược đơn – TRƯỚC hàm tạo
$dg = new \C_DataGrid(“SELECT * FROM orders”, “orderNumber”, “orders”);
Bạn cũng có thể quan tâm đến những hướng dẫn đó:
Xây dựng ứng dụng quản lý dự án từ đầu
Ứng dụng quản lý dự án là gì?Xây dựng một CRM đơn giản từ đầu đến cuối
Quản lý quan hệ khách hàng (CRM) là một hệ thống quản lý các tương tác và dữ liệu của khách hàng trong toàn…Xây dựng Trình quản lý quyên góp từ đầu bằng PHP
Cảm ơn vì đã đọc. Nếu bạn thích bài viết này, vui lòng nhấn nút vỗ tay đó? để giúp người khác tìm thấy nó và ftheo dõi tôi trên Twitter.
