Tổng hợp các phương pháp tính trị giá hàng tồn kho

Liên hệ QC
Đồng ý với ptm0412, ngay khi viết bài đó đã thấy vô lý và sửa lại code rồi :) (xem đoạn quote ở dưới). Nhưng ngại edit lại bài chưa sửa lại.

- 2 dòng màu xanh là tổng phát sinh tăng, tổng phát sinh giảm về giá trị
- 1 dòng màu đỏ là giá trị tồn cuối

Tuy nhiên, nếu viết như ở dưới thì vẫn có trường hợp sai (mặc dù hy hữu). Mọi người thử đoán xem?

strSQL = "SELECT " & lngWorkingPeriod_ID & " AS ID, " & _
"StoreID, " & _
"ProductID, " & _
lngWorkingYear & " AS WorkingYear, " & _
lngWorkingMonth & " AS WorkingMonth, " & _
"SUM(BOP_Qty) AS BOP_Qty, " & _
"SUM(BOP_Amt) AS BOP_Amt, " & _
"SUM(AIP_Qty_Inc) AS AIP_Qty_Inc, " & _
"ROUND(SUM(AIP_Amt_Inc), 0) AS AIP_Amt_Inc, " & _
"SUM(AIP_Qty_Dec) AS AIP_Qty_Dec, " & _
"ROUND(SUM(AIP_Amt_Dec), 0) AS AIP_Amt_Dec, " & _
"(SUM(ISNULL(BOP_Qty,0)) + SUM(ISNULL(AIP_Qty_Inc,0)) - SUM(ISNULL(AIP_Qty_Dec,0))) AS EOP_Qty, " & _
"ROUND(SUM(ISNULL(BOP_Amt,0)) + SUM(ISNULL(AIP_Amt_Inc,0)) - SUM(ISNULL(AIP_Amt_Dec,0)), 0) AS EOP_Amt " & vbCrLf

Nhưng mà có lẽ đấy là cách 1. Cách 2 sử lý giống như MinhLev đã nói (trước đó thì hơi lăn tăn 1 chút vì định chuyển sang kỳ sau). "Tiêu diệt" luôn BalanceAmt (nếu <> 0) ngay mỗi lần BalanceQty = 0 vào giá vốn của hàng xuất cuối cùng. Cách đó là an toàn nhất (vì dù sao cách làm tròn là khá nguy hiểm, chỉ bất đắc dĩ mới dùng thôi).
 
Lần chỉnh sửa cuối:
Tuy nhiên, nếu viết như ở dưới thì vẫn có trường hợp sai (mặc dù hy hữu). Mọi người thử đoán xem?
Giống câu đố nhỉ!


PS: Cách 2 là ngon rồi, đó là kill con khỉ trước khi nó leo lên lưng :)
 
Lần chỉnh sửa cuối:
minhlev đã viết:
4- Việc tự update giá liên tục ngay sau khi save chứng từ cũng ảnh hưởng không nhỏ tới tốc độ làm việc của máy.

Đúng như minhlev nói, chưa tính gì tới việc chạy nhanh hay chậm nhưng quả thật là việc tính lại giá vốn, giá trị hàng tồn kho, số lượng hàng tồn kho (cả 3 thứ đó liền lúc) tức thời ở thời điểm sửa/xóa chứng từ cực kỳ phức tạp (và là 1 bài toán tương đối hay):

Nhân tiện vụ này, mình đưa bài toán lên đây để mọi người cùng trao đổi.

Có 3 loại sửa/xóa chứng từ (*) sau làm thay đổi giá vốn hàng bán:

(*) Việc sửa/xóa chứng từ được áp dụng cho các loại chứng từ sau: Chứng từ dư đầu kỳ, nhập hàng, trả lại nhà cung cấp, xuất bán (có công nợ), khách hàng trả lại, chứng từ bán lẻ (ko có đối tượng công nợ), chuyển kho (kho đi, kho đến), điều chỉnh kho, phiếu lắp ráp, tháo dỡ. Việc sửa/xóa chứng từ có thể thực hiện ở kỳ đang hoạt động (opening period) hoặc thậm chí cả kỳ đã đóng (closed periods)

I. Xóa chứng từ

Tính lại giá vốn cho tất cả những mặt hàng có trên các dòng chi tiết của chứng từ kể từ chứng từ đã xóa trở về hiện tại.

II. Sửa trên phần trên của chứng từ
a. Khi thay đổi ngày chứng từ (mà ko thay đổi gì phần dòng chi tiết của chứng từ) thì giá vốn của các mặt hàng có trên các dòng chi tiết của chứng từ sẽ thay đổi, thời điểm tính sẽ liên quan tới 2 trường hợp như sau:
+ Sửa ngày từ 10/05/2008 --> 11/05/2008 (tịnh tiến ngày) thì phải tính lại giá vốn của các mặt hàng có trong những chứng từ ngay phía sau chứng từ vừa rồi và có ngày chứng từ >= '10/05/2008' trở về thời điểm hiện tại
+ Sửa ngày từ 10/05/2008 --> 09/05/2008 (sửa lùi về trước) thì phải tính lại giá vốn của các mặt hàng có trong chứng từ đang được sửa trở về thời điểm hiện tại.

b. Sửa mã kho
Sửa cái này thì bó tay rồi, vì có khi hàng ở kho đó (kho cũ) đã xuất từ đời rồi mà lại thay đổi kho thì chẳng có PM nào chạy đúng cả. Âm kho là điều rất dễ xảy ra nếu làm như vậy.

c. Sửa các thông tin khác (có hoặc ko có ảnh hưởng tới các đối tượng liên quan chứ ko ảnh hưởng tới kho)

III. Sửa trên phần dưới (dòng hàng) của chứng từ
Các trường hợp xảy ra như sau:
- Thêm mới 1 dòng hàng (thêm mặt hàng mới)
- Sửa lại dòng hàng đã có sẵn trên chứng từ (sửa về số lượng, giá nhập)
- Xóa đi một số dòng hàng

Tất cả những mặt hàng có trong dòng hàng của chứng từ nói trên (kể cả mặt hàng đã bị xóa), đều phải tính lại từ thời điểm sửa (tức là tính từ chứng từ đó) tới thời điểm hiện tại. Ngoài ra, giả sử việc sửa/xóa chứng từ được thực hiện ở kỳ đã khóa sổ (mà chương trình đang có lựa chọn cho phép sửa ở kỳ đã khóa sổ) thì vấn đề được thực hiện thế nào?

Quả thực, chỉ mới kể ra như trên đã thấy ù cả tai. Các bạn nghĩ gì về tính năng "Tính giá vốn tức thời" cho việc "sửa, xóa" chứng từ rất "vietnamese style" này? :-=

P/S: Chỉ cần có mỗi câu trong tờ quảng cáo: "Tính lãi lỗ (lãi gộp), giá trị hàng tồn kho tức thời của từng mặt hàng, từng chứng từ..." thì đã thấy bao khó khăn rồi. Thảo nào chả thấy có phần mềm nào dám quảng cáo câu đó. May mà bọn tây nó ko có chức năng sửa chứng từ sau khi posted rồi. Còn ở mình thì sửa/xóa tá lả.

Đó là chưa kể đến việc ta có thể thay đổi phương pháp tính giá vốn (FIFO, LIFO, WA, SI - Specific identification) cho từng mặt hàng (chứ ko phải tất cả các mặt hàng đều dùng 1 PP tính) ở bất cứ thời điểm nào trong quá trình sử dụng PM (mặc dù điều này thực tế ít khi xảy ra nhưng đã là phần mềm thì phải hỗ trợ tất cả những trường hợp đó, kể cả việc thay đổi giữa chừng trong quá trình áp dụng)
 
Lần chỉnh sửa cuối:
Nhưng mà có lẽ đấy là cách 1. Cách 2 sử lý giống như MinhLev đã nói (trước đó thì hơi lăn tăn 1 chút vì định chuyển sang kỳ sau). "Tiêu diệt" luôn BalanceAmt (nếu <> 0) ngay mỗi lần BalanceQty = 0 vào giá vốn của hàng xuất cuối cùng. Cách đó là an toàn nhất (vì dù sao cách làm tròn là khá nguy hiểm, chỉ bất đắc dĩ mới dùng thôi).


Đây cũng là cách em hay dùng:
Nếu tính theo thời điểm : Thì tại nghiệp vụ xuất làm cho SL = 0 thì khi đó Tổng giá trị xuất sẽ = Tổng Giá trị HH còn lại
Nếu tính theo kỳ : Thì nếu SL cuối kỳ = 0 thì Tổng giá trị xuất của nghiệp vụ cuối cùng = Tổng Giá trị HH còn lại.

Tuy nhiên, nhiều khi SL xuất cuối cùng chỉ là 1 đơn vị, và nếu chênh lệch là lớn (dẫn đến giá bình quân của nghiệp vụ đó lớn) thì nên xem lại việc phân bổ (cho 1 nghiệp vụ có số lượng xuất lớn). Vì vậy việc kiểm tra lại giá vốn của nghiệp vụ cuối rất quan trọng.

Còn theo tức thời thì có rất nhiều chuyện để nói vì việc sửa, xóa, thêm . . là thường xuyên.

Theo cách quản lý của Metro, thì trong ký sẽ lấy 1 giá chuẩn nào đó :


VD : Mặt hàng Cà rốt lấy từ nhiều nguồn khác nhau, có cả trong nước và ngoài nước. Và giá của từng nhà cung cấp cũng rất khác nhau.
Khi bán hàng thì không thể phân biệt được đâu là của nhà cung cấp A, đâu là của nhà cung cấp B, đâu là nhập khẩu, đâu là trong nước.
Vì vậy, Metro sẽ lấy 1 giá chuẩn trong vòng 1 tháng (hoặc quý), gần sát với giá trung bình nhất. Khi bán hàng thì sẽ hạch toán theo giá này.
Khi mua hàng về thì tất cả mọi hàng hóa (thuộc mã hàng này) của các nhà cung cấp sẽ được quy theo giá chuẩn này.
Phần chênh lệch thừa thiếu sẽ được đưa sang 1 mục riêng (vì sẽ có lúc >0; lúc <0), và được ghi cho từng mã hàng.
Cuối năm , họ sẽ tổng kết cái phần thừa thiếu này (của hơn 200.000 mã hàng) để đưa vào chi phí hàng tồn kho.

Vì vậy sẽ không xảy ra tình trạng SL hết mà giá trị vẫn còn.

Có rất nhiều cách quản lý hàng tồn kho cực hay của các tập đoàn Quốc tế (họ có một bộ phận quản lý kho mà người trưởng bộ phận đó có ngang hàng với CEO), như Lotte, Metro, Big C . . . .

Thân!
 
Vì phương pháp tính toán sẽ ảnh hưởng rất nhiều đến việc thiết kế co sở dữ liệu. Vì vậy nó rất quan trọng.
Và các công ty phần mềm đôi khi lại là những nhà tư vấn về nghiệp vụ!!

Thân!
 
Còn theo tức thời thì có rất nhiều chuyện để nói vì việc sửa, xóa, thêm . . là thường xuyên.

:), Đây chính là điều muốn nói, và đã nói khá nhiều ở các bài trên.

Theo cách quản lý của Metro, thì trong ký sẽ lấy 1 giá chuẩn nào đó :


VD : Mặt hàng Cà rốt lấy từ nhiều nguồn khác nhau, có cả trong nước và ngoài nước. Và giá của từng nhà cung cấp cũng rất khác nhau.
Khi bán hàng thì không thể phân biệt được đâu là của nhà cung cấp A, đâu là của nhà cung cấp B, đâu là nhập khẩu, đâu là trong nước.
Vì vậy, Metro sẽ lấy 1 giá chuẩn trong vòng 1 tháng (hoặc quý), gần sát với giá trung bình nhất. Khi bán hàng thì sẽ hạch toán theo giá này.
Khi mua hàng về thì tất cả mọi hàng hóa (thuộc mã hàng này) của các nhà cung cấp sẽ được quy theo giá chuẩn này.
Phần chênh lệch thừa thiếu sẽ được đưa sang 1 mục riêng (vì sẽ có lúc >0; lúc <0), và được ghi cho từng mã hàng.
Cuối năm , họ sẽ tổng kết cái phần thừa thiếu này (của hơn 200.000 mã hàng) để đưa vào chi phí hàng tồn kho.

Vì vậy sẽ không xảy ra tình trạng SL hết mà giá trị vẫn còn.

Sử dụng Standard Cost

Nhân tiện nói về vụ 1 mặt hàng có thể nhập từ nhiều nhà cung cấp. Nhiều KH muốn tính NXT theo từng nhà cung cấp. hai2hai đã từng giải thích đến phát chán mà nhiều KH họ ko hiểu là để tính NXT theo nhà cung cấp thì phải sử dụng xuất bán theo đích danh hoặc theo FIFO. Nếu ko thì chịu, cùng 1 mặt hàng nhưng nhập của 2 nhà cung cấp khác nhau, lúc xuất ra ko chỉ là xuất từ ông nào (hoặc chí ít là theo FIFO) thì mới biết và tính tồn cho NCC được chứ.
 
Lần chỉnh sửa cuối:
Em nghĩ đây cũng là một ý tưởng rất tốt, xưa nay chúng ta (Việt Nam) quen nghĩ rằng giá vốn thì phải đi liền với giá trị thực của một mặt hàng.

Thân!
 
:),
Nhân tiện nói về vụ 1 mặt hàng có thể nhập từ nhiều nhà cung cấp. Nhiều KH muốn tính NXT theo từng nhà cung cấp. hai2hai đã từng giải thích đến phát chán mà nhiều KH họ ko hiểu là để tính NXT theo nhà cung cấp thì phải sử dụng xuất bán theo đích danh hoặc theo FIFO. Nếu ko thì chịu, cùng 1 mặt hàng nhưng nhập của 2 nhà cung cấp khác nhau, lúc xuất ra ko chỉ là xuất từ ông nào (hoặc chí ít là theo FIFO) thì mới biết và tính tồn cho NCC được chứ.

Em thấy bác có nhiều khách hàng . . . dễ thương thật !! (Không phải chỉ vụ này)

Thôi thì . . làm dâu trăm họ mà !!!&&&%$R&&&%$R&&&%$R

Thân!
 
Em đang phải định giá hàng tồn kho để làm tài sản đảm bảo, các bác chỉ giúp em cách định giá nào là tốt nhất.
 
Bạn có thể cho tôi hỏi một chút về tính FIFO?

File FIFO và LiFO sau giới thiệu cho các bạn một cách xây dựng cách tính FIFO và LIFO khác khá hay

- Tính FIFO :

Ta xem hình vẽ sau :

FIFO25.jpg


Dùng các cột phụ D, E, F, G

- Cột D : Dùng để so sánh số lượng tồn lũy kế sau mỗi lần nhập vào, với số lượng xuất bán trong kỳ.

Công thức SUM($B$6:B6)<=$H$2 sẽ cho ra giá trị Logic, nên ta chuyển thành giá trị số bằng cách nhân với 1. Ta có thể sử dụng 2 dấu – đặt trước( = --(SUM($B$6:B6)<=$H$2) )) cũng cho kết quả tương tự

- Tổng số tại ô D14 cho ta biết có mấy đợt nhập hàng trong kỳ có số lượng hàng xuất bán hết

- Cột E : dùng để xác định lượt nhập hàng thứ mấy có số lượng xuất bán còn lại sau cùng.

Công thức cột này là : =((A6-1)=$D$14)*1

- Các công thức tương đối dễ hiểu ở các cột phụ, nên ta có thể tự suy ra
- F6 =D6*B6
- G6 =($H$2-$F$14)*E6

- Tính LIFO :

FIFO26.jpg


- Cell D14 là tổng số lượng xuất ra trong kỳ

- Cột D dùng để xác định số lượng tồn của mỗi đợt hàng sau khi xuất ra cho đủ số lương tại Cell D14, tính ngược từ đợt nhập hàng cuối cùng

- Cột E dùng để xác định xem đợt hàng nào còn hàng tồn

- Cột F dùng để xác định xem đợt hàng cuối cùng nào có số lượng xuất

- Công thức tại các cột như sau :

1. D6 =(D7-B6)
2. E6 = (D6>=0)*1
3. F6 = (A6=$E$14)*1
4. G6 = E6*B6
5. H6 = ($I$2-$G$14)*F6

Chào bạn, không biết dạo này handung107 còn trên này không **~**!
Mình là thành viên mới, tham gia diễn đàn chưa lâu. Hiện tại mình đang phải làm một file theo dõi hàng tồn kho theo kiểu FIFO, đọc đến bài này của bạn thấy hay quá.
Vậy trước hết mình cảm ơn bạn đã gửi lên 4r một bài viết rất hay và bổ ích ><></.
Tiếp sau, bạn làm ơn chỉ giúp mình trong trường hợp phải theo dõi trong một sheet nhiều mã hàng nhập xuất liên tục thì dùng phương pháp này của bạn như thế nào, bạn có thể hướng dẫn mình không? Mình đang rất cố gắng mà không tìm ra cách nào khả thi cả.
Mong bạn cố gắng bớt chút thời gian.
Thân /-*+/!
 
tính giá thành hàng tồn kho

Liên quan đến quản lý hàng hoá tồn kho, em mạo muội bổ sung thêm một chút nữa là trong quản lý tồn kho còn có thuật ngữ "FEFO" (first expire date first out) tạm dịch là "hàng có thời hạn hết trước thì xuất trước", cái này chủ yếu nó quản lý về tuổi hàng trong kho, còn về giá trị thì tính theo LIFO như Chị HD đã trình bày ở trên. Đây là thuật ngữ mà toàn bộ các hàng hoá hiện nay trong kho bãi phải quan tâm. Vì hàng hoá sản xuất sau, nhưng vòng đời sản phẩm nhanh do vậy phải rất quan tâm đến FEFO.
em xin chỉnh lại một chút là:thuật ngữ FEFO là không có trong từ điển kế toán.phương pháp nhập trước xuất trước có thuật ngữ là FIFO,mấy anh chị chú ý
 
em xin chỉnh lại một chút là:thuật ngữ FEFO là không có trong từ điển kế toán.phương pháp nhập trước xuất trước có thuật ngữ là FIFO,mấy anh chị chú ý

Vì vậy, em cần phải học thêm nhiều em ạ. Cần đọc, hiểu trước khi post nhé. FEFO (phương pháp xuất hàng theo dạng hết hạn trước thì xuất trước) là 1 dạng của FIFO, được áp dụng cho các hàng hóa có tuổi đời ngắn (expired date). Về bản chất thì FEFO cũng như FIFO mà thôi.

P/S: Đừng có tra từ điển. Học là phải học từ thực tiễn và phải hiểu bản chất của sự vật, hiện tượng.
 
Lần chỉnh sửa cuối:
Gần đây tôi thấy trên thực tế rất nhiều khách hàng xuất bán âm kho (nhập hàng sau) nên việc tính giá vốn tức thời theo phương pháp bình quân gia quyền theo mỗi lần nhập hầu hết là không tính đúng --> Giá trị tồn kho và Lãi gộp là không đúng. Mặc dù sau khi nhập có thể đẩy phiếu nhập lên trước phiếu xuất bán âm rồi tính lại giá vốn một cách tự động nhưng mà rất sợ nhiều khi cách làm tự động đó lại làm cho KH hiểu nhầm.

Trong kế toán thì có phương pháp Bình quân cả kỳ dự trữ (tính vào cuối kỳ) và phương pháp Bình quân cuối kỳ trước (tính ngay từ đầu kỳ này) khắc phục được vấn đề xuất âm kho đó. Tuy nhiên cả 2 phương pháp này đều có nhược điểm là độ chính xác không cao, đặc biệt phương pháp Bình quân cả kỳ dự trữ chỉ được thực hiện ở cuối kỳ nên trong kỳ không thể có báo cáo về NXT theo giá trị hoặc báo cáo lãi lỗ tức thời.

Ngồi suy nghĩ mấy ngày tôi đang nghĩ ra cách nào đó để áp dụng làm sao khắc phục vấn đề xuất âm kho mà vẫn có khả năng tính tức thời, đồng thời vẫn cho kết quả "chấp nhận được" về mặt giá vốn (thử sáng tạo 1 phương pháp mới, tuy ko áp dụng trong kế toán vì nó ko đúng luật kế toán nhưng có thể áp dụng vào thực tế cho những đơn vị chỉ cần tính nội bộ). Đó là cách kết hợp 1 chút giữa QBGQ mỗi lần nhập & Bình quân cả kỳ dự trữ. Nhưng có 1 vài tình huống tôi thấy ko hợp lý, nhất là trường hợp Số lượng tồn tại thời điểm giao dịch bằng 0 (Tham khảo file excel) làm cho giá vốn thời điểm đó trở nên "Bất thường" (Vì khi đó Giá trị tồn cũng phải = 0 chứ ko thể lòi ra vài đồng được)

Phương pháp này tôi đặt tên --=0 là "Bình quân theo giá thực tế tích lũy cho mỗi lần nhập". Các bạn download file đính kèm và bình luận/chia sẻ quan điểm nhé (tôi nghĩ cách này chưa hợp lý lắm nên đang nghĩ cách khác. Các bạn có thể gợi ý cho tôi được ko?)

P/S: Vì tôi ko thành thạo excel nên nhiều ô tôi phải dùng công thức hơi cứng :p. Trong file excel tạm thời tôi ko tính tới việc nhiều kho, ko dính dáng tới việc điều chuyển kho, điều chỉnh kho, v.v... và dữ liệu chỉ chạy trong 1 kỳ nào đó với dòng đầu tiên là dư đầu kỳ (nên cột ngày chứng từ ko xác định rõ)

(Xem file update cuối cùng, có số dung sai chấp nhận được, tai bài này)
 

File đính kèm

  • COGS.zip
    5.1 KB · Đọc: 467
Lần chỉnh sửa cuối:
Cách tính của Hải ra giá xuất kho, có cái gì đó không ổn. Nó sinh ra cái giá sai khi xuất kho hết nhẵn kho mà sai tỷ lệ lớn nhất là dòng 10.
Cái kết quả kiểm tra 2 con zero và 2 chữ OK từa tựa như 1 sự ngụy biện, nếu không nói là che mắt thế gian (nếu nói vậy là oan thì là tự che mắt mình). Cái thực sự còn tồn trên sổ sách là zero về số lượng và 150 về giá trị, thể hiện trên cột F của Hải hoặc cột K theo cách tính thông thường và cách trình bày thông thường (xem file).

Thực tế người ta dễ dàng nhận biết sai sót mà không bị che mắt trong 2 trường hợp:

1- Mới nhập ngày 01: Slượng 5, thành tiền 5.000, nhập thêm ngày 2: Slượng 2, thành tiền 2.200, lẽ ra tồn số lượng 7, thành tiền 7.200. Nhưng trên báo cáo tồn thì là Slượng 7, thành tiền 7.057,14:

Qty​
|
ActualCost​
|
AccumulateActualCost​
|
BalanceQty​
|
BalanceAmt​
|
5​
|
1.000​
|
5.000​
|
5​
|
5.000​
|
2​
|
1.100​
|
7.200​
|
7​
|
7.057,14285714286​
|

2. Giá bình quân tính nhẩm khoảng từ 1.100 đến 1.200, nhưng ngày 09 xuất với giá 365,15; chỉ bằng 1/3.

Cách tính giá xuất kho bình quân thời điểm và tính giá trị tồn kho thông thường trong file cũng thấy số tiền tồn 150. Nhưng may ra, nếu có tồn đầu kỳ hoặc tồn cuối kỳ, điều này dễ xảy ra hơn là hết nhẵn kho, thì nó liên hoàn từ kỳ này sang kỳ khác, hoàn toàn chấp nhận được.
Nếu không chấp nhận, thì vui lòng đừng bao giờ xuất âm kho. Hàng nhập kho chưa có hóa đơn nhưng cũng đã có chứng từ xuất kho giao hàng của bên bán, Kế toán có biện pháp nhập kho cho trường hợp này.

Về vấn đề tồn kho số lượng zero mà tiền còn 1 vài đồng hoặc 1 vài cent(s), thì có thể giải quyết theo cách tính của bảng 3:

- Thành tiền nhập kho, thì là số nguyên đồng hoặc nguyên cent (theo chứng từ)
- Giá xuất, thì lấy toàn bộ số thập phân, không làm tròn
- Thành tiền xuất, thì làm tròn đến hàng đơn vị (tiền VND) hoặc làm tròn 2 số thập phân (ngoại tệ).
- Thành tiền tồn, thì cộng trừ thành tiền, toàn là số nguyên cả (đồng hoặc cent), nên chắc chắn là về zero.

Đây là phản biện vui chứ không phải công kích, chắc Hải hiểu cho lão chết tiệt.
 

File đính kèm

  • COGSPtm.xls
    31 KB · Đọc: 265
Lần chỉnh sửa cuối:
Cách tính của Hải ra giá xuất kho, có cái gì đó không ổn. Nó sinh ra cái giá sai khi xuất kho hết nhẵn kho mà sai tỷ lệ lớn nhất là dòng 10.
Cái kết quả kiểm tra 2 con zero và 2 chữ OK từa tựa như 1 sự ngụy biện, nếu không nói là che mắt thế gian (nếu nói vậy là oan thì là tự che mắt mình). Cái thực sự còn tồn trên sổ sách là zero về số lượng và 150 về giá trị, thể hiện trên cột F của Hải hoặc cột K theo cách tính thông thường và cách trình bày thông thường (xem file).

Thực tế người ta dễ dàng nhận biết sai sót mà không bị che mắt trong 2 trường hợp:

1- Mới nhập ngày 01: Slượng 5, thành tiền 5.000, nhập thêm ngày 2: Slượng 2, thành tiền 2.200, lẽ ra tồn số lượng 7, thành tiền 7.200. Nhưng trên báo cáo tồn thì là Slượng 7, thành tiền 7.057,14:

Qty​
|
ActualCost​
|
AccumulateActualCost​
|
BalanceQty​
|
BalanceAmt​
|
5​
|
1.000​
|
5.000​
|
5​
|
5.000​
|
2​
|
1.100​
|
7.200​
|
7​
|
7.057,14285714286​
|

2. Giá bình quân tính nhẩm khoảng từ 1.100 đến 1.200, nhưng ngày 09 xuất với giá 365,15; chỉ bằng 1/3.

Cách tính giá xuất kho bình quân thời điểm và tính giá trị tồn kho thông thường trong file cũng thấy số tiền tồn 150. Nhưng may ra, nếu có tồn đầu kỳ hoặc tồn cuối kỳ, điều này dễ xảy ra hơn là hết nhẵn kho, thì nó liên hoàn từ kỳ này sang kỳ khác, hoàn toàn chấp nhận được.
Nếu không chấp nhận, thì vui lòng đừng bao giờ xuất âm kho. Hàng nhập kho chưa có hóa đơn nhưng cũng đã có chứng từ xuất kho giao hàng của bên bán, Kế toán có biện pháp nhập kho cho trường hợp này.

Về vấn đề tồn kho số lượng zero mà tiền còn 1 vài đồng hoặc 1 vài cent(s), thì có thể giải quyết theo cách tính của bảng 3:

- Thành tiền nhập kho, thì là số nguyên đồng hoặc nguyên cent (theo chứng từ)
- Giá xuất, thì lấy toàn bộ số thập phân, không làm tròn
- Thành tiền xuất, thì làm tròn đến hàng đơn vị (tiền VND) hoặc làm tròn 2 số thập phân (ngoại tệ).
- Thành tiền tồn, thì cộng trừ thành tiền, toàn là số nguyên cả (đồng hoặc cent), nên chắc chắn là về zero.

Đây là phản biện vui chứ không phải công kích, chắc Hải hiểu cho lão chết tiệt.

Anh ạ, khách hàng của em không phải là công ty, không biết 1 chữ về kế toán (toàn dân buôn bán) giải thích mãi mới biết thế nào là BQGQ theo mỗi lần nhập (và họ chứng minh 100% là không thể nhập xong mới xuất được vì hàng trăm nghìn lý do trong đó có 1 vài lý do kinh điển là:
- Nhân viên của họ cũng ko hiểu gì, có hàng trong kho là cứ bán (hàng trong kho là do chuyển từ 1 cửa hàng khác tới, từ 1 ông bạn hàng nào đó vứt hàng vào khi hàng đang thiếu mà chả có chứng từ nhập gì cả,...)
- Họ (ông chủ cửa hàng) bận tới mức ko có thời gian để nhập hàng rồi mới bán (vì 1 lúc quản lý 3 cửa hàng (chủ đứng bán như nhân viên luôn) cho dù PM có thể nhập hàng từ xa qua Internet. Vì thế cứ vác hàng lên kệ để bán đã, tối sẽ nhập hàng vào máy sau. PM Ko cho bán âm kho --> Mua phần mềm khác (PM nào trên thị trường cũng cho phép xuất bán âm kho)


Em cũng đã nhận ra là cách tính đó có vấn đề rồi. (Sai chủ yếu vẫn là do lúc bán âm kho). Chính vì thế đang nghĩ cách "vẹn cả đôi đường" (vừa hợp lý về giá vốn (1), vừa không phải tính lại vào cuối kỳ cho tất cả các giá vốn xuất bán trong kỳ là giá vốn cuối kỳ vì động tác này sẽ cực chậm nếu 1 tháng có 500,000 transactions và có trên 3000 inventory items).

Anh Mỹ ạh, dân phần mềm bọn em muốn KH làm đúng lắm. Đi đâu em cũng vác quy trình ra giảng giải trước. Nhưng anh biết ko, mỗi lần em làm thế, họ mời em về vì ko có thời gian nghe. Vì thế, em mới nói chúng em đang làm dâu trăm họ, ko, phải nói chính xác là làm dâu nghìn họ mới đúng. 10 KH may lắm mới có 1 người hiểu thế nào là giá vốn BQ theo mỗi lần nhập (họ có gật thế thôi chứ chắc gì đã biết tại sao xuất âm thì sai). Có khách hàng còn nói: Làm thế nào nhập hàng vào kho mà phần mềm ko cần nhập danh mục gì cả (nhưng vẫn tính tồn được).

Thế nên, gì thì gì, em vẫn phải tìm cách "hợp lý nhất" để vừa đáp ứng chuyện bán âm kho linh tinh, vừa tính giá vốn không quá sai. (Cái dòng giá vốn ất ơ vô lý khi tồn kho = 0 đó sẽ phải tìm hướng giải quyết khác. Em sẽ đi invent 1 phương pháp tính giá mới (hoặc cách làm mới) mà đáp ứng được cả về tốc độ (chứ ko phải tới cuối kỳ mới chạy batch tính giá vốn) và có 1 con số "hợp lý" về giá vốn.

P/S: KH của em liên tục xóa sửa chứng từ (bất cứ kỳ nào kể cả kỳ đã khóa sổ). Chỉ cần phần mềm tính đúng các trường hợp đó (E chứng minh được PM sẽ tính đúng cho tất cả các trường hợp đó bằng các công cụ drilldown từ tổng hợp --> chi tiết --> chứng từ), còn KH tự chịu trách nhiệm với hành động của họ (PM ghi lại hết các hành động sửa, xóa những gì trong PM).
 
Lần chỉnh sửa cuối:
1- Mới nhập ngày 01: Slượng 5, thành tiền 5.000, nhập thêm ngày 2: Slượng 2, thành tiền 2.200, lẽ ra tồn số lượng 7, thành tiền 7.200. Nhưng trên báo cáo tồn thì là Slượng 7, thành tiền 7.057,14:

Vì em nói là kết hợp mà, nó vẫn tính theo dạng giống BQGQ mỗi lần nhập. Khi giá nhập lần 2 thay đổi thì tức là giá vốn ở lần nhập thứ 2 đã thay đổi rồi. Khi đó giá trị tồn kho ko phải là (5 * 1000) + (2 * 1100) như cách tính BQ cả kỳ dự trữ. Tới dòng thứ 2, giá đã dùng theo kiểu BQGQ rồi.

2. Giá bình quân tính nhẩm khoảng từ 1.100 đến 1.200, nhưng ngày 09 xuất với giá 365,15; chỉ bằng 1/3.

Anh đọc đoạn này hai2hai viết nhé

Nhưng có 1 vài tình huống tôi thấy ko hợp lý, nhất là trường hợp Số lượng tồn tại thời điểm giao dịch bằng 0 (Tham khảo file excel) làm cho giá vốn thời điểm đó trở nên "Bất thường" (Vì khi đó Giá trị tồn cũng phải = 0 chứ ko thể lòi ra vài đồng được)

tôi nghĩ cách này chưa hợp lý lắm nên đang nghĩ cách khác. Các bạn có thể gợi ý cho tôi được ko?

Vậy theo anh Mỹ, lúc giá trị tồn = 0, anh sẽ để giá vốn bằng cái gì? Giá vốn chứng từ trước, giá vốn tính ở thời điểm đó chắc chắn là ko được rồi vì ko thể chia cho 0 được (đối với giao dịch nhập)? Hay giá gì? Anh có điền bất cứ giá trị gì đi chăng nữa thì BalanceAmount ở dòng đó sẽ <> 0 vì ở trên đã xuất âm kho rồi. Anh nhớ nhé, em đang giải quyết chuyện âm kho mà vẫn hợp lý cho 2 vấn đề:
- Lãi gộp (dĩ nhiên là sau khi nhập hàng sau để hết âm kho)
- Báo cáo tồn kho có độ chính xác gần đúng về mặt giá trị

Nhưng phải đáp ứng được chuyện (đây là cái mà em quan tâm nhất và là điểm tạo ra sự khác biệt với PM khác với cách tính thông thường): Không tính vào cuối kỳ 1 lần mà phải tính liên tiếp trên mỗi lần ghi lại giao dịch để hạn chế các thao tác cuối kỳ và ko bị chậm khi tính toán trên hàng trăm ngàn giao dịch với hàng triệu dòng hàng của các chứng từ cộng lại (nhất là PM mà em quảng cáo là chạy Online trên Internet với tính tức thì cao).

P/S: Em ko làm nhiều cột như Qty_In, Amount_In, QtyOut, Amount_Out anh ạ (tiết kiệm từng ly từng tý 1 vì cái bảng đó chỉ 5 tháng thôi sẽ có 800,000 dòng.

Cái vụ anh gán giá vốn bằng 0 (BalancePrice = 0) em thử rồi anh ạ, em đã thử rất nhiều trường hợp là khi SL tồn =0 sẽ gán giá vốn hoặc = 0, hoặc = Giá vốn ở dòng trên nhưng kết cục là giá trị tồn khi đó vẫn <> 0. KH ko cần biết là họ làm sai thì kết quả sai. Họ muốn họ xuất âm kho nhưng rõ ràng sau này nhập đủ thì giá trị tồn kho phải đúng. Không được kiểu SL tồn = 0, giá trị tồn = 1 tý. Họ nói thế là vô lý, thế là PM tính sai.

Thêm nữa, tại sao em lại cố tình tính Accumulate, BalanceQty, BalanceAmount? Là vì cái tốc độ đó anh ạ. Ở Excel các anh có thể dùng công thức và hàm SUM gì đó. Nhưng ở PM, em thậm chí ko dùng bất cứ SQL nào để tính SUM cho mỗi lần tính giá vốn đâu anh ạ. Mỗi lần tính giá vốn dòng hiện tại, em phải "tiện tay" tính luôn kiểu lũy kế (Dùng đệ quy khi tính lại giá vốn) để khi tính dòng tiếp theo thì lấy ngay tất cả các giá trị ở dòng ngay phía trên (Gọi là PreviousBalance). Chỉ có cách đó (và kết hợp với Indexing của SQL) thì mới tính "tức thời" với hàng trăm nghìn dòng hàng, hàng trăm ngàn giao dịch mà vẫn chạy tốt trên Internet với ADSL.
 
Lần chỉnh sửa cuối:
Hic, làm dâu! Làm dâu lão chết tiệt sướng lắm, lão toàn tự pha cà phê lấy mà uống thôi, không sai ai cả.

À còn cái vụ làm tròn quy về Long cho Balance Amount thì thế nào? Không thấy Hải nói tới?

Thôi thì cái bảng 2 và 3 ở file trên dẹp đi, Hải coi file dưới này:

- Bỏ qua cái cách tính "Tổng hợp tuyệt vời" mà Hải định bỏ đi và tìm cách khác, cứ lấy nó làm thí dụ để làm tròn, vì cùng nguyên tắc tính. Kết quả là chả có dòng nào có 1 tí ti số lẻ nào cả.
- Cứ theo bảng tính của Hải mà xét cho 2 mặt hàng trở lên:


ItemID​
|
BalanceQty​
|
BalanceAmt​
|
HH001|
9​
|
9.203​
|
HH002|
4​
|
1.453​
|
Total| |
10.655​
|

Nhìn cái dòng Total xem: 3 +3 = 5

Vì thực chất nó là:

ItemID​
|
BalanceQty​
|
BalanceAmt​
|
HH001|
9​
|
9.202,5974025974​
|
HH002|
4​
|
1.452,5974025974​
|
Total| |
10.655,1948051948​
|

Trong khi bảng của lão chết tiệt không có chuyện đó. Đẹp như tranh ấy. Không như bảng tính gốc của Hải, lem nhem lèm nhèm.
 

File đính kèm

  • COGSPtm.xls
    29.5 KB · Đọc: 289
Lần chỉnh sửa cuối:
Kết quả là chả có dòng nào có 1 tí ti số lẻ nào cả.

Nhìn cái dòng Total xem: 3 +3 = 5

À không anh ạ. Thực tình em ko để ý lắm tới vấn đề này (vì file này chỉ là ví dụ mà) nên file Excel em ko làm tròn ngay từ các con số ở trên, trong phần mềm em làm tròn theo quy tắc định dạng người dùng đối với đồng tiền cơ sở (dùng hàm format) trước rồi mới cộng trừ nhân chia chứ ko để lẻ linh tinh đâu. Vụ làm tròn theo format đó em giải quyết lâu lắm rồi nên ko đặt ra ở đây (ở đây chủ yếu là chỉ ra xem cách tính đó có hợp lý hay ko thôi, chứ ko giải quyết chuyện lẻ tẻ khác và ko dự định làm PM với excel đâu :-=). Với lại, em có biết gì về excel đâu, chỉ dùng tạm file excel làm công cụ mô phỏng và làm cùng lắm là báo giá thôi mà. Hình như anh vẫn chưa hiểu mục đích bài này của em. :)

Bỏ qua cái cách tính "Tổng hợp tuyệt vời" mà Hải định bỏ đi và tìm cách khác

--> Đó mới chính là cái mà em đang quan tâm bác ạ, đang cần ai đó chỉ ra cách làm hay hơn, đúng hơn hoặc chứng minh làm thế là ko được (vì đó chỉ là sáng tạo của dân làm PM mà). Chứ em ko quan tâm tới chuyện làm tròn (vì đó là chuyện kỹ thuật nhỏ với tụi em).

Vụ làm tròn ai chả biết khi liên quan tới phép chia hả anh.


Note: Anh viết ngược quá (hay là kế toán VN quy định thế nhỉ) chứ em quen nhìn PM nước ngoài, họ định dạng kiểu 1,000.00 nên em nhìn thế nó xuôi lắm.
 
Lần chỉnh sửa cuối:
Đã thử nghiệm sơ bộ phương pháp "Bình quân giá nhập tích lũy theo thời điểm" (Accumulated Average Cost) MỚI (mixed giữa Bình quân cả kỳ dự trữ (tính vào cuối kỳ) và Bình quân gia quyền theo mỗi lần nhập) và kết quả sơ bộ trên file excel là chấp nhận được (Xem attachment).

Tôi sẽ thông báo lại kết quả của phương pháp mới này sau khi test & so sánh độ dung sai cho các test case sau:
- Nhập đúng nghiệp vụ nhập xuất kho (không có xuất âm kho) bằng 2 phương pháp: "BQGQ theo mỗi lần nhập" (Weighted Average Cost) và phương pháp "Bình quân nhập tích lũy" mới
- Nhập đúng (xuất dương kho) bằng phương pháp mới và nhập sai nghiệp vụ (xuất âm kho) cũng bằng phương pháp mới (ie: khác về thứ tự nhập chứng từ nhưng cùng số lượng và giá trị trên các chứng từ được test).
- Nhập đúng (xuất dương kho) bằng phương pháp "BQGQ theo mỗi lần nhập" và nhập sai nghiệp vụ (xuất âm kho) cũng bằng phương pháp mới (ie: khác về thứ tự nhập chứng từ nhưng cùng số lượng và giá trị trên các chứng từ được test).

Số liệu được test sẽ ở dạng test tối thiểu & test tối đa (stress testing). Tức là có thể nhập với số lượng nhỏ hay số lượng lớn, giá trị nhỏ hay giá trị lớn để xem độ dung sai biến động thế nào.
 

File đính kèm

  • COGS_New.rar
    4.9 KB · Đọc: 205
  • COGS_New1.rar
    5 KB · Đọc: 189
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom