Tính giá vốn từng lần xuất theo Fifo!

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Đúng ra bài này đưa vào phần kế tóan, tính gia xuất theo fifo từng lần xuất, nhưng mà thấy công thức có vẻ hơi khó nên đưa qua đây nhờ các bạn cách xử lý, công thức, VBA, hay là cái gì cũng OK. Mục đích là tính ra giá vốn hàng xuất theo từng mã hàng (ngày, hóa đơn...).
Yêu cầu đã nêu trên sheet nhapxuat.
Nhờ các bạn viết hộ cho 1 code. Trong file tôi có 2 sheet Ban và NhapXuat có yêu cầu như nhau, chỉ làm 1 sheet.
Xin cám ơn rất nhiều. Và có hậu tạ.
 

File đính kèm

  • NhapXuat-FIFO.rar
    20.8 KB · Đọc: 516
Hic, sao không có đáp án vậy????
 
To bác ThuNghi:
Theo em để tính được giá Fifo chính xác thì cần chỉnh sửa lại cơ sở dữ liệu một chút. Mạn phép bác em đã gộp 2 sheet 'ban' và 'Nhapxuat' vào làm 1 sheet. Trong sheet 'Nhapxuat', em đã bỏ phần nhập. Em tính giá Fifo bằng VBA theo các bước sau:
B1: Cập nhật đơn giá và số lượng vào sheet 'DMHH' theo từng đợt nhập hàng.
B2: Cập nhật giá vốn theo phương pháp Fifo vào sheet 'Nhapxuat'.
Kết quả đã cập nhật được giá đúng theo phương pháp Fifo.
Tuy nhiên cách làm của em còn bị hạn chế là không tạo được số lượng tồn và dư đầu cũng như tồn và dư cuối cho tất cả các mặt hàng. Do vậy việc cập nhật dữ liệu phải liên tục trên 1 file (nếu tách ra theo năm hoặc tháng thì sẽ cho kết quả không chính xác). Em vẫn chưa tìm ra được giải pháp khắc phục nên để tới tận hôm nay mới post bài lên.
Nhờ bác ThuNghi cùng các bác trên diễn đàn xem file gửi kèm, cho ý kiến và giải pháp khắc phục.
 

File đính kèm

  • NhapXuat-FIFO_minhlev.rar
    28.6 KB · Đọc: 283
Lần chỉnh sửa cuối:
Mình dựa vào code của Minhlev và chỉnh sửa một chút để có thể chạy giá Fifo mà không cần thay đổi cơ sở dữ liệu của Thunghi.
 

File đính kèm

  • NhapXuat-FIFO.rar
    33.1 KB · Đọc: 275
Mình chưa xem kỹ code, nhưng thử với số lượng xuất khác nhau thì cả 2 code của MinhLev và langduca đều sai ở những chỗ phải tách 1 lần xuất ra 2 giá. minhlev sai ở lần tách giá thứ 2, langduca sai ngay lần đầu tiên.
Các bạn xem điều chỉnh lại.
 

File đính kèm

  • FIFOSai.zip
    82.6 KB · Đọc: 222
Cảm ơn bác ptm0412. Em đã khắc phục lỗi mà bác đã chỉ ra. Em cũng đã chỉnh luôn code của langduca (bài của langduca là tính gộp giá cho cả sheet 'Ban' và sheet 'Nhapxuat'). Nhờ bác ptm0412 và các bác trên diễn đàn xem lại xem còn lỗi gì không???
 

File đính kèm

  • NhapXuat-FIFO_minhlev.rar
    64.2 KB · Đọc: 509
File của MinhLeV gần hòan thiện rồi, mấy hôm nay hơi bận, mình sẽ xem lại và trả lời ngay. Rất cám ơn Minh, nhưng ở Hà Nội làm sao mà vào SG nhậu nhỉ. Thuật tóan rất hay, cái mình cần là thuật tóan. Trong bài này chưa xét đến việc xuất > nhập theo ngày. Và thường ng ta làm Fifo thì làm theo từng tháng chớ 1 năm thì chạy điên luôn đó.
 
Mình chưa hiểu thuật toán của Minhlev lắm. Mình nghĩ nên sử dụng biện pháp như thế này:
- Tạo thêm 1 bảng XNT VT thứ hai (tạm gọi bảng NXT2), mỗi mặt hàng sẽ có nhiều dòng, mỗi dòng là 1 lần nhập, có ngày tháng, số lượng thành tiền nhập.
- Mỗi lần xuất nó sẽ trừ dần vào mặt hàng đó theo thứ tự ngày tháng bên cột xuất, và tính ra cột tồn cuối của bảng NXT2

Mình nghĩ rằng nên áp dụng thuật toán sau:
1- Mỗi lần nhâp: chèn thêm 1 dòng dữ liệu: mã, tồn đầu:0, nhập: sl & đơn giá nhập & thành tiền, tính tồn cuối = nhập - xuất (0) = nhập


2- mỗi lần xuất: dùng 1 biến X lưu số lượng cần xuất, khai báo biến Y = 0
a- Lọc bảng NXT2 lấy tất cả mã cùng với mã xuất.​
b- Dò từ ngày nhỏ nhất xuống,​
  • nếu tồn cuối = 0 --> xuất = 0
  • nếu tồn cuối >0, xuất = min (slx , tồn cuối dòng đó),
  • chèn 1 dòng xuất số lượng này vào dữ liệu NX với đơn giá của dòng này, tính số tồn cuối lại cho bảng NXT2
  • Gán Y = Y + sl vừa mới lấy
  • so sánh Y và X, nếu bằng thì thoát. Nếu Y ít hơn, quay lại bước 2-b.
Như vậy, nếu X lớn hơn sl tồn của dòng đầu tiên (khác không), sẽ có ít nhất 2 dòng xuất 1 mặt hàng với 2 đơn giá.

Đó là cách mình gõ tay và tính để kiểm tra code trong bài trên của mình.

Định kỳ (theo ThuNghi là cuối tháng), delete tất cả các dòng trong bảng NXT2 có sl tồn cuôi bằng zero. --> Bảng NXT2 sẽ chỉ còn mặt hàng còn tồn cuối --> Danh sách ngắn lại --> giải quyết được vấn đề của Thu Nghi.

Ngoài ra kiểm tra được mặt hàng có sl hết mà thành tiền còn vài đồng do sai số làm tròn.
Các bạn thử nghiên cứu hướng này xem có tốt hơn không.
 
Thưa bác ptm0412 thực ra cái em làm không thể gọi là thuật toán mà chỉ là cách giải quyết bài thôi. Cách giải này nằm ở chính trong Sub Gianhap() của em. Cái sub này giải quyết vấn đề là tìm ra số lượng và đơn giá của một mặt hàng theo từng lần nhập khác nhau theo thứ tự tăng dần của thời gian nhập (chỉ quan tâm tới nhập trước hay nhập sau mà thôi mà không quan tâm tới việc nhập vào chính xác ngày nào). Bác có thể kiểm tra bằng cách cho chạy riêng sub này và xem trong sheet 'DMHH' sẽ thấy ngay.
Bước tiếp theo là việc cập nhật giá theo phương pháp fifo nằm trong Sub FiFo(). Đối với từng mặt hàng, sub này số lượng của từng lần nhập từ lần nhập đầu tiên. Nếu số lượng lần nhập được kiểm tra lớn hơn số lượng đã xuất thì giá vốn = giá vốn tạm tính + số lượng xuất x đơn giá của lần kiểm tra --> thoát khỏi quá trình tìm kiếm giá. Nếu số lượng lần nhập được kiểm tra nhỏ hơn số lượng đã xuất thì giá vốn tạm tính = giá vốn tạm tính + số lượng lần kiểm tra x đơn giá lần kiểm tra đó --> tiếp tục kiểm tra các lần nhập sau.
To bác ThuNghi: Nếu bác tách từng tháng ra thành từng file thì em đã có hướng để giải quyết. Còn vẫn để chung trong 1 file thì em vẫn chưa tìm ra cách giải. Còn chuyện nhậu thì chắc phải hẹn bác vào một ngày đẹp trời nào đó mà em có thể vào SG. Lúc đó chắc chắn sẽ liên lạc với bác để cùng được giao lưu với các thành viên GPE trong đó.
 
Ý mình là:
1. Code của Minhlev chạy đúng rồi (đã kiển=m tra lại)
2. Mình đọc code không hiểu lắm, nếu được thì nhờ Minh giải thích
3. Mình đề xuất 1 hướng khác để giải quyết việc dữ liệu cả năm để chung.
4. nếu đề xuất dở thì thôi.
Thân.
 
To bác ThuNghi: Em đã sửa lại file tính Nhập-Xuất FIFO theo từng tháng. Giải pháp của em là:
- Dùng form để xác định tháng cần tính giá.
- Thêm vào file 13 sheet từ 'T0' đến 'T12'. Trong đó:
+ Sheet 'T0' chứa dữ liệu tồn đầu kỳ (số lượng & đơn giá) theo từng mặt hàng theo từng lần nhập.
+ Các sheet 'T1' --> 'T12' chứa dữ liệu tồn cuối kỳ (số lượng & đơn giá) theo từng mặt hàng theo từng lần nhập tương ứng với các tháng từ 1 --> 12.
- Trong Form, chọn giá tại CombBox --> nhấn nút Nhận --> file sẽ lần lượt đưa số lượng và đơn giá của từng mặt hàng theo từng lần nhập vào sheet 'DMHH' theo thứ tự sau:
+ B1: Copy số từ sheet tồn đầu của tháng cần tính toán vào sheet 'DMHH' trước (Sub Giadau).
+ B2: Nhặt số lượng nhập và đơn giá nhập trong tháng cần tính toán tại sheet 'Mua' và đưa vào sheet 'DMHH' (Sub Gianhap).
- Tiếp theo Sub FiFo sẽ thực hiện tính giá vốn theo phương pháp FIFO.
- Cuối cùng là copy toàn bộ sheet 'DMHH' vào sheet chứa dữ liệu tồn cuối kỳ của tháng cần tính giá.
Lưu ý: Nếu có sự điều chỉnh và tính toán lại giá của tháng nào thì cũng phải chạy lại giá của tất cả các tháng sau nó (nếu đã có phát sinh).
Nhờ bác ThuNghi và các bác trong diễn đàn xem giúp còn phải điều chỉnh gì nữa không??
 

File đính kèm

  • NhapXuat-FIFO_minhlev.rar
    25.4 KB · Đọc: 144
Không biết bác ThuNghi có áp dụng được gì từ file gửi lên hôm 14-04-08 hay không??? Tuy nhiên em phát hiện ra là code của file đó vẫn chưa chính xác. Em gửi lại file đã sửa. File này vẫn dựa trên nguyên tắc như file tại bài số #11. Bác ThuNghi và các bác trong diễn đàn kiểm tra lại hộ xem còn sai sót gì nữa không. Xin cảm ơn.
 

File đính kèm

  • NhapXuat-FIFO_minhlev.rar
    28.2 KB · Đọc: 270
Anh "minhlev" cái file của anh có vấn đề, anh còn giải quyết vấn đề này nữa ko?
 
Chào các anh chị,
Em đang gặp khó khăn v/v tính giá vốn theo từng lần xuất bán hàng. Em đã đọc và tìm kiếm trên GPE và các trang web khác (em không lười đâu ạ, chỉ có...dốt thôi!! hic hic ) nhưng do yêu cầu của bên em hơi khác nên em không áp dụng được.
Em tải file của em lên, rất mong các anh chị giúp đỡ ạ. (Viết code hay dùng công thức mảng gì cũng được ạ).

File của em có 4 sheet:
1. Nhập hàng
2. Danh mục hàng và tồn kho
3. Khách hàng A
4. Khách hàng B

Trong file của em có hơn 60 khách hàng, mỗi khách hàng là 1 sheet để dễ quản lí. Mỗi khi bán cho ai thì em nhập vào sheet tương ứng, và em biết luôn được lãi bao nhiêu sau khi nhập. Vấn đề ở chỗ này đấy ạ: do tách ra nhiều sheet nên không biết bán cho ai trước, bán cho ai sau vì 1 ngày em bán cho nhiều người mà! Do đó tính giá vốn theo FIFO là cả một vấn đề với 1 đứa dốt như em!!! Thêm nữa là em cũng không biết gái trị hàng tồn của mình theo FIFO là bao nhiêu?!!

Các bác cao thủ giúp em - tính lãi bán cho từng khách hàng (thể hiện ở từng sheet của mỗi khách hàng-hightlight màu cam)
- tính giá trị hàng tồn kho còn lại ngay tại thời điểm bán hàng (thể hiện ở sheet 2-hightlight màu cam)

Các bác có cần thêm thông tin già khác thì ới lên nhé! Em cảm ơn nhiều lắm ạ!!!
 

File đính kèm

  • FIFO-Helenagon.xlsx
    26.4 KB · Đọc: 70
To bác ThuNghi: Em đã sửa lại file tính Nhập-Xuất FIFO theo từng tháng. Giải pháp của em là:
- Dùng form để xác định tháng cần tính giá.
- Thêm vào file 13 sheet từ 'T0' đến 'T12'. Trong đó:
+ Sheet 'T0' chứa dữ liệu tồn đầu kỳ (số lượng & đơn giá) theo từng mặt hàng theo từng lần nhập.
+ Các sheet 'T1' --> 'T12' chứa dữ liệu tồn cuối kỳ (số lượng & đơn giá) theo từng mặt hàng theo từng lần nhập tương ứng với các tháng từ 1 --> 12.
- Trong Form, chọn giá tại CombBox --> nhấn nút Nhận --> file sẽ lần lượt đưa số lượng và đơn giá của từng mặt hàng theo từng lần nhập vào sheet 'DMHH' theo thứ tự sau:
+ B1: Copy số từ sheet tồn đầu của tháng cần tính toán vào sheet 'DMHH' trước (Sub Giadau).
+ B2: Nhặt số lượng nhập và đơn giá nhập trong tháng cần tính toán tại sheet 'Mua' và đưa vào sheet 'DMHH' (Sub Gianhap).
- Tiếp theo Sub FiFo sẽ thực hiện tính giá vốn theo phương pháp FIFO.
- Cuối cùng là copy toàn bộ sheet 'DMHH' vào sheet chứa dữ liệu tồn cuối kỳ của tháng cần tính giá.
Lưu ý: Nếu có sự điều chỉnh và tính toán lại giá của tháng nào thì cũng phải chạy lại giá của tất cả các tháng sau nó (nếu đã có phát sinh).
Nhờ bác ThuNghi và các bác trong diễn đàn xem giúp còn phải điều chỉnh gì nữa không??
Mấy bác hoàn thiện nốt đi
 
Web KT
Back
Top Bottom