Cảnh báo trước khi thuốc hết hạn dùng - Xin hỏi các bậc tiền bối !

Liên hệ QC

thanhtung_ex

Thành viên mới
Tham gia
23/12/07
Bài viết
4
Được thích
0
Tôi có một bảng nhập liệu kho thuốc với các dữ liệu: Mã thuốc, Tên thuốc, Đơn vị tính, Số lượng, Đơn giá, Tổng tiền, Ngày nhập, Hạn dùng (theo nhãn ghi trên vỏ). Vậy làm thế nào để Excel tự bật cờ cảnh báo trước khi thuốc hết hạn dùng 10 ngày, 15 ngày, 20 ngày, 30 ngày ....? Còn nữa: Không cho phép xuất kho đối với những loại thuốc chỉ còn 5 ngày nữa sẽ hết hạn dùng?
Là tên ngốc mới biết dùng Excel (ko biết tí gì về VBA) nên em còn lúng túng quá. Xin các tiền bối chỉ giáo cụ thể. Xin trân trọng mọi sự giúp đỡ!
 
Bạn xài thử đoạn mã này & cho cảm tưởng!

Tôi có một bảng nhập liệu kho thuốc với các dữ liệu: Mã thuốc, Tên thuốc, Đơn vị tính, Số lượng, Đơn giá, Tổng tiền, Ngày nhập, Hạn dùng
Tương ứng:
Mã:
 [Ma], [TenThuoc], [DVT], [SoLg], [DGia], [TTien], [NgNhap], [HanSD]
  A;        B ;      C;     D;      E;      F;         G;         H


PHP:
Option Explicit
Sub auto_Open()
 'By Sa_DQ - GiaiPhapExcel.Com'
 Dim dRng As Range
 Dim lRow As Long, lJ As Long:              Dim Dat As Date
 
 Sheet2.Select:              Application.ScreenUpdating = False
 lRow = Range("H65432").End(xlUp).Row
 Range("H2:H" & lRow).Interior.ColorIndex = xlNone

 For lJ = 2 To lRow
    With Range("H" & lJ)
        Dat = .Value
        If Dat < 5 + Date Then
            If dRng Is Nothing Then
                Set dRng = Range("A" & lJ & ":H" & lJ)
            Else
                Set dRng = Union(dRng, Range("A" & lJ & ":H" & lJ))
            End If
        ElseIf Dat < 10 + Date Then
            .Interior.ColorIndex = 3
        ElseIf Dat < 15 + Date Then
            .Interior.ColorIndex = 13
        ElseIf Dat < 20 + Date Then
            .Interior.ColorIndex = 7
        ElseIf Dat < 30 + Date Then
            .Interior.ColorIndex = 4
        End If
    End With
 Next lJ
 If Not dRng Is Nothing Then
    dRng.Copy Destination:=Sheet3.Range("A" & Sheet3.Range("A65432").End(xlUp).Row + 1)
    dRng.Delete
 End If
End Sub
Chú ý: Những mã quá hạn sẽ được chuyển sang Sheet3, có thể coi là tồn kho quá hạn!
Đoạn mã làm việc trên Sheet2, đó là Sheet chứa CSDL của bạn; (& nó là tên cúng cơm do excel gán)
Cách dùng:
Bạn chép đoạn mã này & dán vô CS VBE (Để hiện CS VBE: bằng tổ hợp phím {ALT}+{F11})
 
Lần chỉnh sửa cuối:
Upvote 0
Không hiểu em có làm sai ko? vì em làm theo HD của anh nhưng ko đc, mong anh chỉ bảo thêm để em học hỏi
tks.
 

File đính kèm

Upvote 0
Một mặt hàng (thuốc) khi nhập vào kho thì theo nhiều lô hàng. Ở mỗi lô đó mới xác định ngày sản xuất, hạn dùng.

Giả sử "Thuốc B1" được nhập trong danh mục hàng hóa. Ta không nên chỉ ra trên danh mục hàng đó là hạn dùng luôn vì khi bán hết, hoặc khi hết hạn dùng ta lại bỏ hết số thuốc đã hết hạn đó ra khỏi kho và nhập lô thuốc khác về với hạn sử dụng mới cho đúng danh mục hàng hóa là "thuốc B1" đó (chả nhẽ lại nhập lại mã hàng, tên hàng, nhóm hàng, v.v...). Như vậy, danh mục hàng hóa phải tách ra hẳn với thông tin về lô nhập về.

Như vậy, cách thiết kế đúng chính quy là ko để thông tin "hạn sử dụng" trên danh mục hàng hóa. Khi nhập mua hàng hóa, nếu hàng hóa có dạng kiểm soát theo lô thì ta nhập số lô, ngày sản xuất, hạn dùng của từng hàng hóa trên lô hàng. Từ đó khi xuất hàng (Theo phương pháp xuất kho FEFO - First Expired First Out mà Nguyễn Thu Hương đã từng đề cập trên diễn đàn) ta sẽ xuất những mặt hàng có exp. date gần nhất ra trước (từ đó suy ra số lô của hàng xuất). Như vậy, ta có thể kiểm soát được số hàng tồn của từng lô hàng trong từng kho hàng được.

Còn chức năng cảnh báo thì chỉ cần dựa trên số lượng tồn, hạn sử dụng của hàng hóa trong lô hàng và ngày hiện thời (hoặc ngày báo cáo) là ra thôi chứ ko có gì đặc biệt.
 
Lần chỉnh sửa cuối:
Upvote 0
Đề nghị MOD xóa bài này sau 24h, Xin cảm ơn!

Không hiểu em có làm sai ko? vì em làm theo HD của anh nhưng ko đc, mong anh chỉ bảo thêm để em học hỏi
tks.

Bạn Cut toàn bộ dữ liệu Sheet1 sang Sheet2 & Copy tiêu đề từ Sheet2 mới được dán qua Sheet3 là OK ngay í mà! Nếu có gì hãy thảo luận tiếp đồng hương nha!
 
Lần chỉnh sửa cuối:
Upvote 0
Nguyễn Hương Thơm đã viết:
Không hiểu em có làm sai ko? vì em làm theo HD của anh nhưng ko đc, mong anh chỉ bảo thêm để em học hỏi
tks.
Theo mình nghĩ thì hạn sử dụng là hạn ghi trên nhãn thuốc nó phụ thuộc vào ngày sản xuất hoặc ngày hiện tại chứ không liên quan gì đến ngày nhập. VD: Thuốc 1 sản xuất ngày 20-12-2007 hạn sử dụng 20-12-2008 => 1 năm, có khi lại ghi 20 kể từ ngày sản xuất => 20 ngày v.v... (nhập có thể là ngày 31/12/2007) vì vậy ta không thể căn cứ vào ngày nhập mà tính hạn sử dụng mà căn cứ vào ngày hiện tại.
Thân chào!
 
Upvote 0
salam đã viết:
Theo mình nghĩ thì hạn sử dụng là hạn ghi trên nhãn thuốc nó phụ thuộc vào ngày sản xuất hoặc ngày hiện tại chứ không liên quan gì đến ngày nhập. VD: Thuốc 1 sản xuất ngày 20-12-2007 hạn sử dụng 20-12-2008 => 1 năm, có khi lại ghi 20 kể từ ngày sản xuất => 20 ngày v.v... (nhập có thể là ngày 31/12/2007) vì vậy ta không thể căn cứ vào ngày nhập mà tính hạn sử dụng mà căn cứ vào ngày hiện tại.
Thân chào!

Cảm ơn bác!
Bác nói trúng ý em quá, vấn đề tưởng như đơn giản nhưng chỉ đơn giản với các cao thủ VBA thôi, em muốn học hỏi các bác về thuật toán để giải quyết vấn đề này. Một lần nữa xin cảm ơn đại gia đình nhà WebExcell!
 
Upvote 0
Cho mình hỏi qua với các bạn quản lý hàng hóa có vòng đời sử dụng ngắn nhé:

Nếu không sử dụng phương pháp nhập, xuất theo lô hàng, không tính lượng tồn kho theo lô thì giả sử hàng đó bán hết từ lâu rồi các bạn có còn cảnh báo nữa không?

Trường hợp 1: Sau khi hàng trong kho đã bán hết (tức là các ngày HSD của lần nhập thứ 1, hay 2, hay 3 (mỗi lần nhập hàng đều có HSD khác nhau) đã hết) và bạn nhập hàng mới về với hạn sử dụng mới thì khi xuất hàng bạn cảnh báo thế nào? làm sao biết được HSD mới hay HSD cũ để mà so sánh? (Có bao giờ cùng 1 lúc trong kho có 2 hoặc 3 mức HSD cho cùng 1 mặt hàng?)

Trường hợp 2: Giả sử nhập hàng đợt 1 về với hạn sử dụng là NSD1, khi hàng chưa bán hết (nhưng hạn sử dụng vẫn chưa expired) thì ta tiếp tục nhập hàng với HSD mới là HSD2 chẳng hạn. Vậy việc cảnh báo sẽ thế nào? Bao nhiêu mặt hàng sẽ cảnh báo theo HSD1, bao nhiêu mặt hàng sẽ cảnh báo theo HSD2? Hay là chỉ cảnh báo ... chung chung thôi? (Có khách hàng bảo tôi là nhiều khi hết hàng rồi mà vẫn cứ đưa ra cảnh báo :) ). Vấn đề này ko giải quyết được thì mọi thứ chỉ là nửa vời mà thôi.

Việc quản lý expired date thì cũng ko khó lắm, cả thế giới người ta đều có khái niệm về việc quản lý theo lô rồi. Ở danh mục hàng hóa, bạn chỉ ra mặt hàng nào là quản lý theo Serial (Serial), mặt hàng nào quản lý theo Lô (Lot), mặt hàng nào quản lý Không theo Serial và Lô (tức là bình thường). Khi nhập hàng, trên phiếu nhập hàng có thể tồn tại 3 loại mặt hàng đó chứ ko chỉ có duy nhất 1 loại.

Để việc quản lý theo expired date thì bao giờ cũng phải tính nhập xuất tồn theo lô hàng nhập (tức là khi bán cũng phải xác định lô hàng hoặc bán theo phương pháp FEFO - First Expired First Out).

Còn chuyện kỹ thuật để so sánh cái ngày Expired date với ngày hiện tại thì chả có gì đâu, mỗi cái hàm DateDiff hoặc ngay cả cái hàm D2-D1 cũng làm được mà, cái đó ko khó gì cả. Vấn đề ở đây là so sánh cái Expired Date nào trong vô vàn cái Expired date (qua bao nhiêu lần nhập hàng) của một mặt hàng.

LotControl.jpg

Hình: Quản lý hàng hóa theo lô
 
Lần chỉnh sửa cuối:
Upvote 0
theo mình nghỉ tai sao ban khong dùng hàm now()
ví dụ cộtA là stt, cộtB là tên hàng, cộtC là số lượng, cộtD là ngày hết hạn
tại cột F2 bạn nhập công thức :=if(and(isblank(A2),isblank(B2),isblank(C2),isblank(D2)),"",if(C2=0,"Het hang","Con "&D2-now()&"ngay"))
Khi sử dụng hàm này ban phải chú ý cài đặt ngày cho máy chính xác
Bạn có thể thay thế hàm now() bằng hàm day() hoặc date()
sau dó bạn chỉ càn chú ý vào cột f là dựoc
Chúc bạn thành công
 
Upvote 0
Các bạn có thể xem qua màn hình về quản lý hàng hóa theo lô sau khi đã nhập các chứng từ nhập mua, xuất bán, chứng từ bán lẻ siêu thị (tự động chọn Lô theo phương pháp FEFO), xuất trả lại nhà cung cấp, nhập khách hàng trả lại, điều chuyển kho.

LotControl.jpg

Hình: Quản lý hàng hóa theo lô

Tính năng nổi bật ở phần quản lý theo lô hàng:
===========================================================
- Cảnh báo ngày quá hạn trong quá trình nhập chứng từ.
- Cảnh báo xuất với số lượng quá số lượng tồn theo lô (có hiện số tồn hiện thời của hàng hóa trong Lô hàng)
- Cho phép nhập cùng 1 mặt hàng với nhiều hơn 2 lô trên cùng 1 chứng từ.
- Cho phép theo dõi số ngày còn hạn, số lượng tồn trên từng lô trên màn hình quản trị (xem màn hình kèm theo)
- Cho phép truy ngược tới từng từ nhập gốc của Lô hàng
- Và đặc biệt (cái này hơi kỹ thuật 1 chút) là phần quản lý theo lô được thiết kế rất chuyên nghiệp (hơn hẳn các phần mềm trên thế giới mà VNUNI đã từng tham khảo).

VNUNI sẽ thông báo chi tiết hơn về tính năng quản lý hàng hóa theo lô sau khi chính thức đưa ra sản phẩm phiên bản mới VNUNi® SIC v2.0.1
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom