Tổng hợp các phương pháp tính trị giá hàng tồn kho (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,443
Nghề nghiệp
Bác sĩ
1. Định nghĩa hang tồn kho theo chuẩn mực số 2 :

Hàng tồn kho bao gồm:
• Nguyên liệu, vật liệu, công cụ dụng cụ tồn kho, đã mua đang đi trên đường hoặc gửi đi gia công chế biến
• Hàng hoá mua để bán : Hàng hoá tồn kho, hàng mua đang đi trên đường, hàng gửi đi gia công, chế biến, hàng gửi bán
• Hàng hoá thành phẩm : Thành phẩm tồn kho, và thành phẩm gửi bán
• Sản phẩm dở dang : Sản phẩm chưa hoàn thành hoặc sản phẩm hoàn thành nhưng chưa làm thủ tục nhập kho
• Chi phí dịch vụ dở dang

Tất cả những thứ này được coi là hàng tồn kho và chiếm một phần lớn trong tỷ lệ tài sản kinh doanh của doanh nghiệp, bởi vì doanh thu từ hàng tồn kho là một trong những nguồn cơ bản tạo ra doanh thu và những khoản thu nhập thêm sau này cho doanh nghiệp. Đó là những tài sản đã sẵn sàng để đem ra bán hoặc sẽ được đem ra bán.
Nếu để tồn hàng tồn kho quá lâu thì sẽ làm ảnh hưởng không tốt tới quá trình kinh doanh, bởi vì doanh nghiệp sẽ phải tốn chi phí dự trữ, chi phí thanh lý hay cải tiến hàng bị lỗi thời, và thanh lý hàng hư hỏng. Tuy nhiên, việc không dự trữ đủ hàng tồn kho cũng là một rủi ro bởi vì doanh nghiệp có khả năng đánh mất những khoản doanh thu bán hàng tiền năng hoặc thị phần nếu sau này giá lên cao mà doanh nghiệp không còn hàng để bán..

2. Các phương pháp tính trị giá hang tồn kho :

Có nhiều phương pháp :
- Phương pháp nhập trước - xuất trước (FIFO)
- Phương pháp nhập sau - xuất trước
- Phương pháp giá hạch toán
- Phương pháp giá thực tế đích danh : Áp dụng đối với doanh nghiệp có ít mặt hàng hoặc mặt hàng ổn định và nhận diện được
- Phương pháp giá bình quân : bình quân theo giá hang tồn kho đầu kỳ, cuối kỳ hoặc trong kỳ. Cũng có khi được tính theo từng thời kỳ hoặc vào mỗi lần nhập một lô hang (bình quân gia quyền liên hoàn) phụ thuộc vào tình hình của doanh nghiệp

3. Ưu và nhược điểm của từng phương pháp :

- Phương pháp nhập trước - xuất trước (FIFO)

Phương pháp này áp dụng dựa trên giả định là hàng được mua trước hoặc sản xuất trước thì được xuất trước, và hàng còn lại cuối kỳ là hàng được mua hoặc sản xuất ở thời điểm cuối kỳ. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập kho ở thời điểm đầu kỳ hoặc gần đầu kỳ, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho ở thời điểm cuối kỳ hoặc gần cuối kỳ còn tồn kho.

Phương pháp này giúp cho chúng ta có thể tính được ngay trị giá vốn hàng xuất kho từng lần xuất hàng, do vậy đảm bảo cung cấp số liệu kịp thời cho kế toán ghi chép các khâu tiếp theo cũng như cho quản lý. Trị giá vốn của hàng tồn kho sẽ tương đối sát với giá thị trường của mặt hàng đó. Vì vậy chỉ tiêu hàng tồn kho trên báo cáo kế toán có ý nghĩa thực tế hơn.

Tuy nhiên, phương pháp này có nhược điểm là làm cho doanh thu hiện tại không phù hợp với những khoản chi phí hiện tại. Theo phương pháp này, doanh thu hiện tại được tạo ra bởi giá trị sản phẩm, vật tư, hàng hoá đã có được từ cách đó rất lâu. Đồng thời nếu số lượng chủng loại mặt hàng nhiều, phát sinh nhập xuất liên tục dẫn đến những chi phí cho việc hạch toán cũng như khối lượng công việc sẽ tăng lên rất nhiều.

- Phương pháp nhập sau - xuất trước (LIFO)

Phương pháp này giả định là hàng được mua sau hoặc sản xuất sau thì được xuất trước, và hàng tồn kho còn lại cuối kỳ là những hàng được mua hoặc sản xuất trước đó. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập sau hoặc gần sau cùng, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho đầu kỳ hoặc gần đầu kỳ.

Như vậy với phương pháp này chi phí của lần mua gần nhất sẽ tương đối sát với trị giá vốn của hàng thay thế. Việc thực hiện phương pháp này sẽ đảm bảo được yêu cầu của nguyên tắc phù hợp trong kế toán. Tuy nhiên, trị giá vốn của hàng tồn kho cuối kỳ có thể không sát với giá thị trường của hàng thay thế

- Phương pháp giá hạch toán

Đối với các doanh nghiệp có nhiều loại hàng, giá cả thường xuyên biến động, nghiệp vụ nhập xuất hàng diễn ra thường xuyên thì việc hạch toán theo giá thực tế trở nên phức tạp, tốn nhiều công sức và nhiều khi không thực hiện được. Do đó việc hạch toán hàng ngày nên sử dụng giá hạch toán.

Giá hạch toán là loại giá ổn định, doanh nghiệp có thể sử dụng trong thời gian dài để hạch toán nhập, xuất, tồn kho hàng trong khi chưa tính được giá thực tế của nó. Doanh nghiệp có thể sử dụng giá kế hoạch hoặc giá mua hàng hoá ở một thời điểm nào đó hay giá hàng bình quân tháng trước để làm giá hạch toán. Sử dụng giá hạch toán để giảm bớt khối lượng cho công tác kế toán nhập xuất hàng hàng ngày nhưng cuối tháng phải tính chuyển giá hạch toán của hàng xuất, tồn kho theo giá thực tế. Việc tính chuyển dựa trên cơ sở hệ số giữa giá thực tế và giá hạch toán.

Phương pháp hệ số giá cho phép kết hợp chặt chẽ hạch toán chi tiết và hạch toán tổng hợp về hàng trong công tác tính giá, nên công việc tính giá được tiến hành nhanh chóng do chỉ phải theo dõi biến động của hàng với cùng một mức giá và đến cuối kỳ mới điều chỉnh và không bị phụ thuộc vào số lượng danh điểm hàng , số lần nhập, xuất của mỗi loại nhiều hay ít.

Phương pháp này phù hợp với các doanh nghiệp có nhiều chủng loại hàng và đội ngũ kế toán có trình độ chuyên môn cao.

Tuy nhiên, trong điều kiện hiện nay, giá thực tế của hàng nhập kho luôn biến động phụ thuộc vào các yếu tố thị trường, các chính sách điều tiết vi mô và vĩ mô, cho nên việc sử dụng giá hạch toán cố định trong suốt kỳ kế toán là không còn phù hợp nữa.

- Phương pháp giá thực tế đích danh

Theo phương pháp này sản phẩm, vật tư, hàng hoá xuất kho thuộc lô hàng nhập nào thì lấy đơn giá nhập kho của lô hàng đó để tính. Đây là phương án tốt nhất, nó tuân thủ nguyên tắc phù hợp của kế toán; chi phí thực tế phù hợp với doanh thu thực tế. Giá trị của hàng xuất kho đem bán phù hợp với doanh thu mà nó tạo ra. Hơn nữa, giá trị hàng tồn kho được phản ánh đúng theo giá trị thực tế của nó.

Tuy nhiên, việc áp dụng phương pháp này đòi hỏi những điều kiện khắt khe, chỉ những doanh nghiệp kinh doanh có ít loại mặt hàng, hàng tồn kho có giá trị lớn, mặt hàng ổn định và loại hàng tồn kho nhận diện được thì mới có thể áp dụng được phương pháp này. Còn đối với những doanh nghiệp có nhiều loại hàng thì không thể áp dụng được phương pháp này.

- Phương pháp giá bình quân

Theo phương pháp này giá trị của từng loại hàng tồn kho được tính theo giá trị trung bình của từng loại hàng tồn kho đầu kỳ và giá trị từng loại hàng tồn kho được mua hoặc sản xuất trong kỳ. Phương pháp bình quân có thể được tính theo thời kỳ hoặc vào mỗi khi nhập một lô hàng , phụ thuộc vào tình hình của doanh nghiệp.

Tóm lại :

Các phương pháp khác nhau có ảnh hưởng khác nhau tới các chỉ tiêu trên các báo cáo tài chính.

Ở đây, chúng ta không bàn sâu về những ảnh hưởng này, mà chỉ nói về việc cách sử dụng Excel để tính trị giá hàng tồn trong các phương pháp cụ thể như sau :

1 Phương pháp giá thực tế đích danh
2. Phương pháp giá bình quân :
a. Trị giá hàng tồn được tính theo giá trị hàng tồn kho từng thời kỳ​
b.Trị giá hàng tồn được tính theo giá bình quân liên hoàn, mỗi lần nhập hàng, sẽ tính lại giá trị xuất hàng​
3. FIFO và LIFO :
a. Trị giá hàng tồn được tính theo phương pháp kê khai thường xuyên​
b. Trị giá hàng tồn được tính theo phương pháp kiểm kê định kỳ​
 
Để chuẩn bị cho loạt bài này, mời các bạn tham khảo thêm về các đề tài sau :

- Cách đặt tên cho dãy, vận dụng tên cho công thức
- Các hàm dò tìm VLOOKUP, INDEX, MATCH
- Các hàm mảng, công thức mảng, hàm SUMPRODUCT
- Các hàm tham chiếu : OFFSET
- Các hàm luận lý : IF, OR, AND...
- Các hàm bẫy lỗi : ISERROR, ISNA...
- Kiến thức VBA không dám nêu tại đây, vì phạm vi này rộng quá

Xin mời tất cả các bạn tham gia thảo luận đề tài này, chúng ta sẽ từ từ tổng hợp vấn đề này một cách có chiều sâu hơn
 
Bài này là cho các kế toán gia đây không phải nghề của mình. Tuy nhiên, xin tặng các bạn 1 zip file tôi thu thập trong net trước đây để tiện việc tham khảo & cải thiện nếu cần.

File có 1 cái template để tính theo cách FIFO có dùng các hàm offset, match v.v.

Mến
 

File đính kèm

1. Phương pháp giá thực tế đích danh

Giả sử chúng ta có bảng dữ liệu sau :

DichDanh01.jpg


Để tính giá xuất kho theo phương pháp đích danh thì chắc hẳn ai cũng biết. Tuy vậy, tôi nghĩ chúng ta cũng cần hệ thống lại đôi chút các công thức có thể áp dụng cho vấn đề này tuỳ cách bố trí CSDL của bạn

- Dùng các hàm dò tìm : VLOOKUP, INDEX, MATCH
- Dùng hàm SUMIF, hàm mảng hay hàm SUMPRODUCT (thường ít sử dụng)

Để tiện dụng, chúng ta sẽ đặt tên cho mảng $A$4:$B$20 là DMMH

DichDanh02.jpg


Mảng $A$4:$A$20 là MH

DichDanh06.jpg


Mảng $B$4:$B$20 là DG.

DichDanh07.jpg


Các bạn cũng có thể tham khảo thêm cách đặt tên cho dữ liệu động trong các tài liệu về “tên và nhãn trong công thức” vào lúc khác

Chúng ta sẽ lập công thức tính đơn giá theo phương pháp đích danh tại bảng $E$4:$H$6

a. Sử dụng hàm VLOOKUP

Tại cột F, chúng ta đặt công thức :

F4 = VLOOKUP(E4, DMMH, 2, 0)

DichDanh03.jpg


Để tránh lỗi #NA trong các công thức chứa các hàm dò tìm, người ta thường dùng kết hợp thêm các hàm ISERROR hay ISNA

F4 = IF(ISNA(VLOOKUP(E4,DMMH,2,0),0,VLOOKUP(E4,DMMH,2,0))
Hoặc :
F4 = IF(ISNA(VLOOKUP(E4,DMMH,2,0),””,VLOOKUP(E4,DMMH,2,0))

b. Sử dụng hàm INDEX kết hợp với MATCH :

Tại cột G chúng ta đặt công thức :

G4 = INDEX(DMMH,MATCH(E4,MH,0),2)

DichDanh04.jpg


Kết hợp với ISNA để tránh lỗi #NA như sau :

G4 = IF(ISNA(INDEX(DMMH,MATCH(E4,MH,0),2)),0,INDEX(DMMH,MATCH(E4,MH,0),2))

c. Sử dụng hàm SUMIF và hàm SUMPRODUCT

Tại cột H chúng ta đặt công thức ;

H4 = SUMIF(MH,E4,DG)
H5 = SUMPRODUCT((MH=E5)*DG)

DichDanh05.jpg
 
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.
 
Nguyễn Hương Thơm đã viết:
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.
Đúng rồi, phương pháp này thường áp dụng cho những sản phẩm có vòng đời ngắn, nói nôm na dễ hiểu là trên bao bì có chữ "Exp. date" như thuốc, đồ mỹ phẩm, sữa, đồ hộp, thực phẩm, v.v.... Việc quản lý hàng loại này liên quan tới lô hàng (lô sản xuất, lô nhập) và việc tính NXT cũng quản lý theo lô (hiện lô còn bao nhiêu hàng, v.v...)

Bên cạnh việc tính trị giá hàng tồn kho, người ta cũng rất hay quan tâm tới việc quản lý hàng tồn kho như thế nào cho hiệu quả. Quản lý hàng tồn kho ko chỉ đơn thuần chỉ ra trong kho còn bao nhiêu (lượng, giá trị) mà còn biết được thông tin vị trí địa lý như nó nằm ở kho nào, hàng (row) nào, kệ (bin) nào..., kích thước, thể tích ra sao thì phù hợp với vị trí nào và vận chuyển ra sao cho hiểu quả nhất, quản lý theo lô, serial ra sao? lắp ráp, tháo dỡ, bảo hành thế nào (đối với hàng theo serial), v.v... Nhưng có lẽ những vấn đề đó ko phù hợp chủ đề "các phương pháp tính trị giá hàng tồn kho" cho lắm.
 
2. Phương pháp giá bình quân​
:

a. Trị giá hàng tồn được tính theo giá trị hàng tồn kho từng thời kỳ:

- Theo trị giá tồn hàng cuối tháng trước :

Cách tính khá đơn giản, nên không nhắc lại và cũng ít DN áp dụng cách tính này

- Theo trị giá tồn hàng cuối tháng :

Để tính trị giá và số lượng nhập trong kỳ cho từng mặt hàng, ta thường dung các hàm mảng hoặc SUMIF, SUMPRODUCT, tuỳ cách bạn bố trí CSDL
Giả sử ta có bảng dữ liệu sau tại Sheet Data

BinhQuan01.jpg


Ta đặt tên cho các mảng như sau :

- $B$5:$B$20 : SoPhieu
- $C$5:$C$20 : MaMH
- $D$5:$D20 : SL
- $F$5:$F$20 : TG

Tuỳ CSDL của bạn thiết kế, ta có thể sắp xếp các cột SL nhập và số lượng xuất tại các 2 cột riêng, các cột TG nhập và TG xuất cũng riêng. Hoặc bạn có thể nhập liệu chung 1 cột, và căn cứ theo định khoản, số phiếu NK hay XK để xác định đâu là số lượng nhập, đâu là số lượng xuất. Hoặc bạn có thể quy ước nhập lieu số lượng nhập >0, và số lượng xuất <0.
Ở đây, tôi quy ước SLNhap >0, và SL Xuat <0

Công thức tính số lượng nhập trong kỳ :

Tại Sheet NXT, tôi có các công thức để tính SL Nhập trong kỳ như sau :

Hoặc :

E4 = SUMPRODUCT((MaMH=A4)*SL*(LEFT(SoPhieu,2)="PN"))

Hoặc : nếu số lượng nhập được quy ước là >0

E5 = SUMPRODUCT((MaMH=A5)*(SL>0)*SL)

Hoặc công thức mảng :

E6 = {SUM(IF(MaMH=C5,(SL>0)*SL,0))}

BinhQuan02.jpg


Công thức tính trị giá nhập trong kỳ : tương tự trên

Hoặc :

F4 = SUMPRODUCT((MaMH=A4)*TG*(LEFT(SoPhieu,2)="PN"))

Hoặc : nếu số lượng nhập được quy ước là >0

F5 = SUMPRODUCT((MaMH=A5)*(SL>0)*TG)

Hoặc công thức mảng :

F6 = {SUM(IF(MaMH=C5,(SL>0)*TG,0))}

Công thức tính số lượng xuất trong kỳ : tương tự trên

Hoặc :

G4 = -SUMPRODUCT((MaMH=A4)*SL*(LEFT(SoPhieu,2)="PX"))

Hoặc : nếu số lượng xuất được quy ước là <0

E5 = -SUMPRODUCT((MaMH=A5)*(SL<0)*SL)

Hoặc công thức mảng :

E6 = {-SUM(IF(MaMH=C5,(SL<0)*SL,0))}

Đến đây, ta đã tính được SL Nhap trong kỳ, TG Nhập trong kỳ, SL Xuất trong kỳ.

BinhQuan03.jpg


Tình đơn giá xuất kho :

Đơn giá xuất kho = ( Trị giá nhập trong kỳ + Trị giá tồn đầu kỳ) / (SL nhập + SL tồn đầu)

Trị giá xuất = ĐG Xuất * SL Xuất

SL tồn cuối kỳ = SL tồn đầu kỳ + SL Nhập – SL Xuất

TG tồn cuối kỳ = TG tồn đầu kỳ + TG Nhập – TG Xuất

BinhQuan04.jpg
 
Lần chỉnh sửa cuối:
Trị giá hàng tồn được tính theo giá bình quân liên hoàn

Với cách tính này, mỗi lần nhập hàng sẽ tính lại đơn giá cho lần xuất kế tiếp

Ta sẽ đi từ việc thiết lập các công thức tính toán từ dễ đến khó.

Giả sử ta có 2 Sheet :

Sheet DMMH có chứa mã MH và các số dư đầu kỳ. Tại Sheet này ta đặt 3 tên :
- TonMaMH cho cột chứa Mã MH,
- TonDauTG cho trị giá tồn đầu kỳ
- TonDauSL cho số lượng tồn đầu kỳ

BinhQuan06.jpg


Sheet thứ 2 là Sheet NhapXuatHH, Sheet này dùng để nhập các dữ liệu về Nhập Xuất HH phát sinh trong tháng

Tại Sheet này ta có các cột sau : Cột C là Mã MH, cột D là Số Lượng Nhap, cột E là TGNhap, cột F là SLXuat, cột G là TGXuat, cột H tính đơn giá vốn

BinhQuan05-1.jpg


Tại Cell đầu tiên tính đơn giá vốn, Cell H5, ta có công thức sau :

=IF(OR($C5="",SUMIF(TonMaMH,$C5,TonDauTG)=0),0,SUMIF(TonMaMH,$C5,TonDauTG)/SUMIF(TonMaMH,$C5,TonDauSL))

Bắt đầu Cell H6, công thức sẽ trở thành :

=IF(C6="",0,(SUMIF(TonMaMH,C6,TonDauTG)+SUMPRODUCT(($C$5:C5=C6)*($E$5:E5-$G$5:G5)))/(SUMIF(TonMaMH,C6,TonDauSL)+SUMPRODUCT(($C$5:C5=C6)*($D$5:D5-$F$5:F5))))

BinhQuan07-1.jpg


Một cách khác để rút gọn công thức là đặt tên cho từng đoạn công thức nhu sau :
Bạn đặt con trỏ ngay tại Cell H5 , rồi vào Insert / Name/ Define

Đặt tên cho các công thức sau :

SLDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauSL)

BinhQuan08.jpg


TGDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauTG)

BinhQuan09.jpg


Công thức trong Cell H5 sẽ trở thành :

=IF(OR(H5="",SLDuDau=0),0,TGDuDau/SLDuDau)

Bây giờ, ta đặt con trỏ tại Cell H6, và tiếp tục đặt tên cho công thức :

SLDuCuoi = SLDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH! $C6 )*(NhapXuatHH!$D$5:D5-NhapXuatHH!$F$5:F5))

TGDuCuoi = TGDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH!$C6)*(NhapXuatHH!$E$5:$E5-NhapXuatHH!$G$5:$G5)))

Công thức tại Cell H6 sẽ được viết thành :

=IF(OR(C6="",SLDuCuoi=0),0,TGDuCuoi/SLDuCuoi)
 
Lần chỉnh sửa cuối:
Ta cũng có thể thiết lập CSDL với các cột sau :

BinhQuan11-1.jpg


Đặt tên cho các mảng dữ liệu :

- $C$5:$C$20 = MH
- $D$5:$D$20 = SL
- $E$5:$E$20 = DGNhap
- $F$5:$F$20 = DGVon
- $G$5:$G$20 = TG

Với bảng này, cột số lượng được nhập chung cả SL Nhập và SL Xuất với quy ước SLNhap >0, và SL Xuất < 0

Cột TG cũng vậy với công thức tính là :

G5 = =IF(D5>0,D5*E5,D5*F5) (D5 là cột SL, nếu SL>0, DGNhap*SL và ngược lại)

Cột DG xuất (Cột F) sẽ có các công thức sau :

F5 = IF(OR($C5="",SUMIF(TonMaMH,$C5,TonDauSL)=0),0,SUMIF(TonMaMH,$C5,TonDauTG)/SUMIF(TonMaMH,$C5,TonDauSL))

Từ F6 trở xuống, công thức sẽ là :

F6 =IF(C6="",0,(SUMIF(TonMaMH,C6,TonDauTG)+SUMPRODUCT((C$5:$C5=C6)*($G$5:$G5)))/(SUMIF(TonMaMH,C6,TonDauSL)+SUMPRODUCT((C$5:$C5=C6)*(D$5:$D5))))

BinhQuan12.jpg


Ta cũng có thể đặt tên cho các công thức để rút gọn như đã nói ở phần trên

Dùng công thức SUMIF kết hợp với OFFSET :

- SUMPRODUCT(($C$5:$C5=C6)*($G$5:G5)) : Mảng $C$5:$C$20 được đặt tên là MH, mảng $G$5:$G$20 là TG nên công thức này tương đương với

= SUMIF(OFFSET(MH,0,0,ROW()-5,1),C6,OFFSET(TG,0,0,ROW()-5,1))

Công thức này hơi khó hiểu, nhưng hầu như được sử dụng nhiều trong những hàm tính FIFO sẽ nói ở phần sau
 
Lần chỉnh sửa cuối:
3. FIFO và LIFO :

Thiết kế File Excel để tính trị giá hàng tồn theo FIFO và LIFO tùy từng người, nhưng nhìn chung có các dạng sau :
- Tính trực tiếp trị giá tồn HH trên bảng Nhập Xuất Tồn được tổng hợp dữ liệu từ các Sheet Nhập hàng và Xuất hàng (pp kiểm kê định kỳ)
- Tính số lượng hàng tồn còn lại và trị giá theo dõi từng đợt nhập hàng (pp kiểm kê định kỳ)
- Tính trị giá vốn và trị giá hàngtồn ngay thời điểm xuất kho (pp kê khai thường xuyên)

Chúng ta thường thấy việc tính toán này sử dụng VBA để tạo hàm UDF , và hiếm thấy các File Excel sử dụng công thức thong thường. Ở đây, tôi xin giới thiệu với các bạn một số File không dung VBA, tất nhiên, có nhiều hạn chế, nhưng chúng ta vẫn có nhiều điểm để có thể tham khảo và học tập

A. Trị giá hàng tồn được tính theo phương pháp kê khai thường xuyên :

Tham khảo thêm bài của Workman : Vận dụng công thức mảng để tính FIFO

http://www.giaiphapexcel.com/forum/showthread.php?t=68&highlight=FIFO
 

File đính kèm

Lần chỉnh sửa cuối:
Giải thích thêm về cách vận dụng các công thức trong File FIFO trên

Giả sử ta có bảng dữ liệu sau :

FIFO1.jpg


Đầu tiên, ta đặt tên cho mảng $B$4:$B$30 là Q, và mảng $C$4:$C$30 là P, cách đặt tên như thế nào hoặc các bạn có thể đặt tên cho vùng dữ liệu động, chúng ta sẽ không bàn tại đây

Yêu cầu cấu trúc của File này là :

- Số lượng Nhấp và Xuất đặt cùng 1 cột và quy ước SLNhap >0, SLXuat <0
- Dữ liệu được nhập theo thứ tự ngày tháng. Hàng trên cùng bao giờ cũng là số >0, tương ứng với số lượng tồn cuối kỳ, hoặc nhập hàng vào rồi mới xuất bán

Để có thể hiểu được bài này, chúng ta cần nói về một số công thức mảng kết hợp bởi các hàm sau :

1/ Hàm ROW(Q) : sẽ trả về giá trị là một mảng gồm các số hạng là vị trí các hàng của các phần tử của mảng Q, tính từ phần tử đầu tiên. Công thức mảng ROW(Q) sẽ cho như hình dưới đây

FIFO2.jpg


2/ Hàm TRANSPOSE(ROW(Q)) : Sẽ cho ta một mảng ngang khác bằng kích thước với mảng ROW(Q) như hình vẽ sau :

FIFO3.jpg


3/ Lệnh ROW(SL)>=TRANSPOSE(ROW(SL)) sẽ xuất ra mảng gồm những phần tử trong mảng có giá trị là TRUE :

FIFO4.jpg


Ta chuyển giá trị TRUE, False sang giá trị 1, 0 bằng cách thêm vào 2 dấu - - như sau :

{=(--(ROW(SL)>=TRANSPOSE(ROW(SL))}, ta sẽ có một mảng gồm giá trị :

FIFO5.jpg


Ta gọi mảng trên đây là mảng 1

Bạn hỏi vì sao phải tạo ra mảng này ? Thực ra, phải đi từ mục đích cuối cùng ra. Mục đích chính là tìm thời điểm (dòng số mấy) của cái gọi là “First in”. Muốn làm như thế, bắt buộc phải tạo ra một mảng thể hiện tổng số hàng nhập kho, sau đó, trừ đi xuất kho, ta sẽ tìm được thằng “First in” mới.

Bạn hãy xem mảng (Q>0)*Q sẽ cho ra các phần tử nào nhé :

5
5
0
2
0
2
0
0
4
2
0
1
3
3
1
0
0
3
0
5
3
0
0
0
0
0

FIFO7a.jpg


Đây chính là mảng số lượng B4:B30 của bảng dữ liệu, chỉ có điều số lượng xuất < 0, sẽ được Convert thành số 0, chỉ còn các phần tử là số lượng nhập trong kỳ mà thôi. Ta gọi mảng này là mảng 2
 
Lần chỉnh sửa cuối:
4) Hàm MMULT : hàm này ít ai xài, nhưng nếu kết hợp với các hàm về mảng khác lại cho ra kết quả khá tốt. Đây chính là hàm ma trận, nhân các phần tử trong mảng này với các phần tử trong mảng kia. Kết hợp hàm MMULT để nhân mảng 1 và mảng 2 ta có kết quả như sau :

FIFO10.jpg


Đây chính là mảng chúng ta cần tìm. Mảng này thể hiện tổng số hàng nhập kho, ta chỉ cần tìm mảng thể hiện số xuất kho, lấy mảng này trừ đi, ta sẽ tìm được vị trí First In mới
Bạn sẽ bật cười vì để tạo mảng này, ta có thể chỉ cần hàm SUMIF(B$4:B4,”>0”) rồi kéo xuống, hơi đâu mà phài làm công thức dài loằng ngoằng khó hiểu như vậy ? Nhưng thực tế, nếu dung hàm SUMIF, bạn sẽ phải thêm các cột phụ, do đó, cách giải này vẫn là Best Solution

Bạn thử xem hình sau :

Thoạt nhìn, bạn sẽ thấy 2 công thức :
- =MMULT(--(ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)
- =SUMIF($B$4:B4,”>0”) hay
- =SUMIF(OFFSET(Q,0,0,ROW()-4,1),">0")

Là cho kết quả tương đương nhau khi bạn nhập chúng vào một cột như hình dưới. Nhưng thực tế, công thức 1 là công thức mảng, trong khi 2 công thức dưới không phải công thức mảng.

FIFO8.jpg


Kết quả trên của hàm ma trận {= MMULT(--(ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)} thực ra được diễn giải gồm mảng như sau :
5 0 0 0 0 0 0 ---> 1*5 + 0*5 + 0* 0 + 2*0 + ….= 5
5 5 0 0 0 0 0 ----> 1*5 + 1*5 + 0*0 + 2*0 + …. = 10
5 5 0 0 0 0 0 ----> 1*5 + 1*5 + 1*0 + 2*0 + ….. = 10
5 5 0 2 0 0 0 ----> 1*5 + 1*5 + 1*0 + 1*2 + 0*0 + …. = 12
………

FIFO14.jpg


Chúng ta sẽ xác định tổng số lượng xuất kho bằng công thức sau :
= SUMIF(OFFSET(Q,0,0,ROW()-4,1),”<0”) hay = SUMIF($B$4:B4,”<0”)

FIFO11.jpg
 
Lần chỉnh sửa cuối:
Tổng số của MMULT và SUMIF : = (SLNhập - SLXuất)

Kết hợp 2 hàm này :
=MMULT(--(ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)+SUMIF(OFFSET(Q,0,0,ROW()-4,1),”<0”)
Ta có mảng sau :

FIFO12.jpg


Bạn sẽ thấy mảng này thể hiện số lượng hàng tồn sau mỗi lần nhập và xuất kho.
Mảng đầy đủ sẽ là

FIFO15.jpg


Mọi việc bắt đầu đơn giản rồi. Điều kiện MMULT + SUMIF >0 sẽ cho ra một mảng sau :

FIFO13.jpg


Mảng đầy đủ phải được diễn giải như sau :

FIFO16.jpg


Trong mảng trên, TRUE sẽ đại diện cho hàng còn tồn kho, và False đại diện cho hàng đã xuất hết kho.
5/ Cuối cùng, ta dung hàm MATCH để xác định vị trí “TRUE” đầu tiên của mảng trên. Ý nghĩa của nó là dò tìm trong khối Q, đâu là dòng “FIRST In” đầu tiên. Công thức này là :
{= MATCH(TRUE,(--(ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)+SUMIF(OFFSET(Q,0,0,ROW()-4,1),”<0”)>0,0)}
Trở về bảng dữ liệu, ta sẽ dung 2 cột phụ là cột D và cột E. Cell đầu tiên của bảng bắt đầu từ hàng thứ 4, do đó, tại D4 ta nhập 1
Từ D5 đến D30, ta nhập công thức trên, ta sẽ được kết quả là :

1
1
1
1
1
2
2
2
6
6
6
9
9
9
9
9
10
13
13
14
14
14
18
18
18
18
18
18
18
18

FIFO17.jpg


Sau khi đã xác định được đâu là vị trí của dòng "First in", ta sang cột E
 
Sau khi đã xác định được đâu là vị trí của dòng “First in”, ta sang cột E

Tại E4 = B4, số lượng tồn đầu kỳ

E5 = IF(D5=D4,E4+MIN(0,B4),SUMIF(OFFSET(Q,0,0,D5,1),">0") +SUMIF(OFFSET(Q,0,0,ROW()-4,1),"<0"))

Công thức này có thể diễn giải như sau :

- Nếu số lượng hàng cũ còn đủ xài : IF(D5=D4,
thì số lượng hàng tồn kho bằng với E4 trừ đi số lượng hàng xuất ra (Lưu ý hàm MIN(0,B4) cho kết quả là số âm, chính là số lượng hàng xuất) : E4+MIN(0,B4)

- còn nếu số lượng hàng cũ không đủ xài, thì lấy hàng mới mà xuất : SUMIF(OFFSET(Q,0,0,D5,1),">0")

- số tồn kho (đợt hàng First in mới) sẽ là tổng số nhập trừ đi tổng số xuất cho đến thời điểm tính toán :

SUMIF(OFFSET(Q,0,0,D5,1),">0") +SUMIF(OFFSET(Q,0,0,ROW()-4,1),"<0")

Kéo công thức xuống các hàng bên dưới của cột E từ E5 đến E30, ta có hình sau :

FIFO18.jpg


Như vậy : Cột E chính là số hàng tồn còn lại sau mỗi nghiệp vụ nhập hàng hay xuất hàng
 
Cột F là cột tính FIFO - trị giá hàng xuất bán

- F5 =IF(B5<0,IF(E5+B5>=0,-B5*INDEX(P,D5),E5*INDEX(P,D5)+(INDEX(Q,D6)-E6)*INDEX(P,D6)+IF(D6-D5>1,SUMPRODUCT(--(OFFSET(Q,D5,0,D6-D5-1,1)>0),OFFSET(Q,D5,0,D6-D5-1,1),OFFSET(P,D5,0,D6-D5-1,1)),0)),"")

Công thức này có vẻ dài, nhưng không đến nỗi khó hiểu, chúng ta từ từ xem từng đoạn một như sau :

- Nếu B5 < 0 : số lượng hàng xuất bán (< 0), và nếu số tồn kho (E5) > = số lượng xuất bán (B5) : E5 + B5 >=0, trị giá xuất sẽ là đơn giá (mảng P), tại vị trí “First in” (D5) : INDEX(P,D5), nhân số lượng xuất (B5). Vì số lượng xuất của chúng ta quy định là < 0, nên ta phải đặt thêm dấu - để cho kết quả là số +

=IF(B5<0,IF(E5+B5>=0,-B5*INDEX(P,D5), ……

Xét tại công thức FIFO tại F6, số lượng xuất bán B6 = 3 nhỏ hơn số lượng hàng tồn E6 = 5, đợt hàng này là đợt 1(D6 = 1) có đơn giá : (INDEX(P,1) = 1) nên trị giá hàng xuất là : 3*1 = 3

FIFO19.jpg


- Ngược lại, nếu số lượng hàng tồn tại vị trí (First in) < số lượng xuất bán, thì lấy hết số lượng tồn (E5) ra để bán, trị giá xuất của số lượng tồn này là : E5*INDEX(P,D5), số lượng còn thiếu sẽ được lấy từ vị trí kế tiếp của đợt nhập hàng.

Số lượng hàng nhập của đợt hàng tiếp theo INDEX(Q,D6) – E6 (số lượng hàng tồn sau khi xuất bán nốt phần còn thiếu) = Số lượng hàng xuất bán còn thiếu. Tương tự, đơn giá đợt hàng tiếp theo là INDEX(P,E6)

E5*INDEX(P,D5)+(INDEX(Q,D6)-E6)*INDEX(P,D6)

FIFO20.jpg


Xét công thức tính FIFO tại F11, số lượng xuất bán B11 = 3, số lượng tồn cũ là E11 = 1 của đợt hàng nhập thứ 2 (D11 = 2), có đơn giá là INDEX(P,D11) = 1.1. Xuất hết số lượng E11, trị giá xuất của số hàng này là : = E11*INDEX(P,D11) = 1*1.1 = 1.1 (hàng màu xanh)

Số lượng còn phải xuất bán thêm là :

- Số lượng đợt nhập hàng kế tiếp : INDEX(Q,D12) = 4 có vị trí thứ 6 (D12=6) của mảng $B$4 :$B$30 đặt tên là Q, đơn giá của đợt hàng này là INDEX(P,D12) = 1.3
- Số lượng hàng tồn của đợt hàng này sau khi đã xuất bán nốt phần còn thiếu là : E12 = 2
- Vậy số lượng hàng xuất bán thêm trong đợt hàng sau là : (hàng màu vàng)
= INDEX(Q,D12)-E12 = 4 – 2 = 2
- Trị giá hàng xuất trong đợt hàng sau là : =(INDEX(Q,D12,2)-E12)*INDEX(P,D12) = 2*1.3 = 2.6
- Trị giá hàng xuất được tính tại :

F11 = E11*INDEX(P,D11) + (INDEX(Q,D12,2)-E12)*INDEX(P,D12) = 1*1.1 + 2*1.3 = 3.7
 
Nếu D6 – D5 > 1, và nếu số lượng hàng xuất lớn hơn số lượng hàng tồn, nghĩa là sẽ có nhiều đợt hàng tiếp theo đợt hàng “First in”, do đó :

- Xuất hết số lượng tồn của đợt First in : = E5*INDEX(P,D5)

- Xuất nốt số lượng hàng còn thiếu ở đợt hàng nhập cuối : = (INDEX(Q,D6)-E6)*INDEX(P,D6)

- Số lượng xuất tại các đợt hàng trung gian giữa 2 giá trị D5 và D6 được xác định bằng công thức :

= SUMPRODUCT(--(OFFSET(Q,D5,0,D6-D5-1,1)>0),OFFSET(Q,D5,0,D6-D5-1,1),OFFSET(P,D5,0,D6-D5-1,1))

Hàm OFFSET(Q,D5,0,D6-D5-1,1) cho ta 1 mảng con của mảng Q, bắt đầu từ vị trí đầu tiên của mảng Q, dời xuống D5 hàng, có D6-D5-1 hàng và 1 cột.

Mảng OFFSET(Q,D5,0,D6-D5-1,1)>0, sẽ cho ta giá trị Logic, do đó ta đặt 2 dấu trừ để convert giá trị True, False thành giá trị số 1, 0

Bây giờ, ta nhìn hình vẽ sau để hiểu rõ hơn về công thức trên, xét công thức FIFO tại hàng 20 và 21. D21 = 13, còn D20 = 10

FIFO21.jpg


- Mảng OFFSET(Q,D20,0,D21-D20-1,1) là mảng $B$14:$B$15 có màu xanh, chữ đỏ, bắt đầu từ hàng 14, dời xuống 10 hàng tính từ hàng thứ 4 là vị trí đầu tiên của mảng Q. Mảng này gồm 2 hàng, và có giá trị dương tại B15 là số 1

- Mảng OFFSET(P,D20,0,D21-D20-1,1) là mảng $C$14:$C$15 có màu xanh, chữ xanh, bắt đầu từ hàng 14, dời xuống 10 hàng tính từ hàng thứ 4 là vị trí đầu tiên của mảng P.

Hàm SUMPRODUCT sau sẽ trả kết quả là : 1*1.2 = 1.2

= SUMPRODUCT(--(OFFSET(Q,D20,0,D21-D20-1,1)>0),OFFSET(Q,D20,0,D21-D20-1,1),OFFSET(P,D20,0,D21-D20-1,1))

-Các hàm còn lại đã giải thích ở trên
 
B. Tính FIFO theo phương pháp kiểm kê định kỳ:

Việc tính trị giá hàng tồn theo FIFO và phương pháp kiểm kê định kỳ tương đối dễ dàng hơn phương pháp kê khai thường xuyên và thường hay được áp dụng

Chúng ta có thể tính FIFO trên bảng Nhập Xuất Tồn : thường được thiết kế bằng các Sheet Nhập, Xuất riêng, và Sheet Nhập Xuất Tồn

Các bạn tham khảo File của ThuNghi - Quanlychungkhoan-FIFO kèm theo

Các công thức không đến nỗi khó hiểu lắm, nên tôi không giải thích
 

File đính kèm

Đây cũng là File QuanlyChungKhoan + TonquyLienTuc của Son2006, các bạn có thể tham khảo thêm về các lập công thức tính FIFO
 

File đính kèm

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
 

File đính kèm

Lần chỉnh sửa cuối:
Ta cũng có thể dùng công thức đơn giản nhất là MAX và MIN để tính FIFO và LIFO như sau :

Giả sử ta có bảng dữ liệu

FIFO22.jpg


Ta sẽ dùng các hàm MAX, MIN kết hợp để tính FIFO và LIFO

- Tính FIFO :

Dùng cột D tính số lượng tồn, tại D6 ta nhập công thức :

D6 = IF(A6=””,0,MAX(MIN(B6,SUM($B$6:$B6)-$C$3),0) )

Kéo công thức xuống dưới

FIFO23.jpg


Ta có thể dùng công thức sau để tính, nếu không muốn có thêm cột TGTon

TGTon = SUMPRODUCT($C$6:$C$26,$D$6:$D$26)

TGBan = SUMPRODUCT($C$6:$C$26,$B$6:$B$26)-SUMPRODUCT($C$6:$C$26,$D$6:$D$26)

- Tính LIFO :

Để tính LIFO cho bảng dữ liệu trên, ta thay công thức tại D6 là :

D6 = =$B6-MAX(MIN($B6,$C$3-SUM($B7:B$26)),0)

FIFO24.jpg
 
Trị giá hàng tồn được tính theo giá bình quân liên hoàn

Với cách tính này, mỗi lần nhập hàng sẽ tính lại đơn giá cho lần xuất kế tiếp

Ta sẽ đi từ việc thiết lập các công thức tính toán từ dễ đến khó.

Giả sử ta có 2 Sheet :

Sheet DMMH có chứa mã MH và các số dư đầu kỳ. Tại Sheet này ta đặt 3 tên :
- TonMaMH cho cột chứa Mã MH,
- TonDauTG cho trị giá tồn đầu kỳ
- TonDauSL cho số lượng tồn đầu kỳ

BinhQuan06.jpg


Sheet thứ 2 là Sheet NhapXuatHH, Sheet này dùng để nhập các dữ liệu về Nhập Xuất HH phát sinh trong tháng

Tại Sheet này ta có các cột sau : Cột C là Mã MH, cột D là Số Lượng Nhap, cột E là TGNhap, cột F là SLXuat, cột G là TGXuat, cột H tính đơn giá vốn

BinhQuan05-1.jpg


Tại Cell đầu tiên tính đơn giá vốn, Cell H5, ta có công thức sau :

=IF(OR($C5="",SUMIF(TonMaMH,$C5,TonDauTG)=0),0,SUMIF(TonMaMH,$C5,TonDauTG)/SUMIF(TonMaMH,$C5,TonDauSL))

Bắt đầu Cell H6, công thức sẽ trở thành :

=IF(C6="",0,(SUMIF(TonMaMH,C6,TonDauTG)+SUMPRODUCT(($C$5:C5=C6)*($E$5:E5-$G$5:G5)))/(SUMIF(TonMaMH,C6,TonDauSL)+SUMPRODUCT(($C$5:C5=C6)*($D$5:D5-$F$5:F5))))

BinhQuan07-1.jpg


Một cách khác để rút gọn công thức là đặt tên cho từng đoạn công thức nhu sau :
Bạn đặt con trỏ ngay tại Cell H5 , rồi vào Insert / Name/ Define

Đặt tên cho các công thức sau :

SLDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauSL)

BinhQuan08.jpg


TGDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauTG)

BinhQuan09.jpg


Công thức trong Cell H5 sẽ trở thành :

=IF(OR(H5="",SLDuDau=0),0,TGDuDau/SLDuDau)

Bây giờ, ta đặt con trỏ tại Cell H6, và tiếp tục đặt tên cho công thức :

SLDuCuoi = SLDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH! $C6 )*(NhapXuatHH!$D$5:D5-NhapXuatHH!$F$5:F5))

TGDuCuoi = TGDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH!$C6)*(NhapXuatHH!$E$5:$E5-NhapXuatHH!$G$5:$G5)))

Công thức tại Cell H6 sẽ được viết thành :

=IF(OR(C6="",SLDuCuoi=0),0,TGDuCuoi/SLDuCuoi)

- Theo phương pháp này, giá vốn (average unit cost, UnitCost) được tính có thể là số rất lẻ và ko được làm tròn số. Thông thường phải lấy 4 chữ số hàng thập phân (ví dụ: 14.3555).

- Vì thế, Giá vốn hàng bán (Cost of Goods Sold) = SoldQty * UnitCost cũng rất lẻ.
- Khi tính tổng Nhập xuất tồn trong 1 kỳ (có thể là khoảng thời gian) thì sẽ xảy ra trường hợp:

Cuối kỳ (Lượng) = Đầu kỳ (Lượng) + PST (Lượng) - PSG (Lượng) = 0
Cuối kỳ (Giá trị) = Đầu kỳ (Giá trị) + PST (Giá trị) - PSG (Giá trị) <> 0 (Có thể là 1 con số lẻ rất nhỏ)

Ghi chú:
PST: Phát sinh tăng
PSG: Phát sinh giảm

Vậy theo mọi người, trường hợp này mọi người xử lý ra sao?

Nếu giả sử ta triệt tiêu Cuối kỳ (Giá trị) <> 0 đó đi khi Cuối kỳ (Lượng) = 0, thì khoản giá trị lệch bé xíu đó ta chuyển đi đâu? và ở kỳ tiếp theo, việc lệch về giá trị là sẽ tiếp tục xảy ra.
 
Lần chỉnh sửa cuối:
Mình đã biết vấn đề này và đã có cách giải quyết ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?p=66930#post66930
trích:
Khi có giá bq rồi thì tính thành tiền xuất phải làm tròn:
ttxuat=round(giabq*sum(slxuat),0)
thành tiền cuối kỳ thì cộng trừ, đừng nhân. Mục đích là ra kết quả nguyên.
Để tránh trường hợp:

- nhập sl 3 x gbq 3,3333 = 10
xuất trong kỳ: sl 2 x gbq 3,3333 = 6,6666
tồn cuối: sl 1 x gbq 3,3333 = 3,3333

- Tương tự mặt hàng 2: nhập sl 11 x gbq 2,4545 = 27
xuất sl 8 x gbq 2,4545 = 19,63636
tồn cuối sl 3 x gbq 2,4545 = 7,3636

Lên báo cáo thường là định dạng số nguyên: (thực tế thì không)

XNTon.jpg


Sẽ thấy ngay dòng cộng : 3 + 7 = 11, không hay tí nào

Lâu ngày chầy tháng, xảy ra tình trạng hết số lượng, còn giá trị 1đ hoặc -1 đ, kiếm hoặc điều chỉnh mệt mỏi.

Hậu quả duy nhất là giá bình quân kỳ sau không giống giá bq kỳ trước, mà dù vậy có sao đâu?
 
Mình đã biết vấn đề này và đã có cách giải quyết ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?p=66930#post66930
trích:
Khi có giá bq rồi thì tính thành tiền xuất phải làm tròn:
ttxuat=round(giabq*sum(slxuat),0)
thành tiền cuối kỳ thì cộng trừ, đừng nhân. Mục đích là ra kết quả nguyên.

Thanks ptm0412

Cách làm tròn số khi tính giá vốn hàng bán (COGS = SoldQty * Average unit cost) thì mình cũng đã nghĩ đến từ lâu rồi.

Tuy nhiên, tiền ngoại tệ ko thể làm tròn thế được. 0.01$ cũng có giá trị của nó. (Giả sử USD là based currency chứ ko phải VNĐ)

Ngoài ra, do mình nghiên cứu sách của nước ngoài thì có ghi chú thế này:

Cost of goods available for sale $280,000
Divided by units (4,000 + 6,000 + 8,000) 18,000
Average unit cost (note: do not round) $15.5555 per unit
Ending inventory (5,000 units @ $15.5555) $77,778
Cost of goods sold (13,000 units @ $15.5555) $202,222
 
Lần chỉnh sửa cuối:
Minh hoạ:

Bqgq.jpg


Qua kỳ 2 giá bq bị thay đổi, nếu còn tồn sang kỳ 3 như mặt hàng B, giá bq lại thay đổi. nhưng chả lẽ qua 3 kỳ mà không nhập thêm?
Vả lại thí dụ là 3 đồng và 2 đồng, nhưng thực sự có cái gì đơn giá dưới 1000 đồng?
Vậy thì tỷ lệ thay đổi giá 0,5 đồng /1000 đồng có là bao nhiêu?
 
hai2hai đã viết:
Tuy nhiên, tiền ngoại tệ ko thể làm tròn thế được. 0.01$ cũng có giá trị của nó. (Giả sử USD là based currency chứ ko phải VNĐ)

Theo quy luật làm phần mềm cho toàn thế giới thì không có khái niệm làm tròn tiền ngoại tệ theo cách round(amount, 0) vì 0.01$ cũng có giá trị của nó.

Giá vốn hàng bán là 1000.00$ khác hẳn với 1000.01$ bác ạ (vì ko được phép làm tròn tiền ngoại tệ 0.01$ thành 0.00$ được).

Có 1 số chuẩn trong khi sử lý số như sau:

Tiền VNĐ thì format dạng làm #,##0
Tiền ngoại tệ thì format dạng làm #,##0.00
Giá vốn thì format dạng làm #,##0.0000
Tỷ giá thì format dạng làm #,##0.0000
v.v...

Nếu Round(Amout$,0) thì bọn tây nó diệt tớ chết.

P/S: Cột "đơn giá" ở hình minh họa trên là ở thời điểm nào vậy?
 
Lần chỉnh sửa cuối:
Haì2hai post Bài nhanh quá!
Based currency là USD, thì quy ước report chắc là 2 số thập phân? Chắc nhìn báo cáo không đến nỗi 0 + 0 = 1 như VNĐ
 
Hai2hai post Bài nhanh quá!
Based currency là USD, thì quy ước report chắc là 2 số thập phân? Chắc nhìn báo cáo không đến nỗi 0 + 0 = 1 như VNĐ

Thế mà EndOfPeriod_Qty = 0, EndOfPeriod_Amt = 0.02 mới chết chứ --=0. Nếu làm tròn thì đẹp lắm (vì trước lấy VND làm BCur mà). Nhưng chẳng nhẽ đối với Based currency là USD mình cũng làm tròn Round(COGS, 0) thì ko biết có được ko. Based currency của khách hàng là đồng tiền của Séc (họ nói ko được làm tròn kiểu VN, mà cái này thì tớ lại nói với họ là ko bao giờ làm tròn tới hàng đơn vị nếu FC (foreign currency # VNĐ) được chọn là BC (Based currency). Hay là cứ ... kệ, làm tròn cho đẹp nhỉ :-=
 
Lần chỉnh sửa cuối:
Thì round(amount,2) vậy. vì:
Tiền ngoại tệ thì format dạng làm #,##0.00
Còn EndOfPeriod_Amt mình cộng trừ, đừng nhân. Phùuu. Đừng cười nhé!
Thực ra khách hàng đánh giá phần mềm chủ yếu nhìn trên report các loại (tức là kết quả), nếu kỹ hơn thì đánh giá thêm mấy cái form (giao diện), mà dù kỹ hơn nữa, mấy ai mà click chuột vào textbox coi thử có giấu số thập phân đằng sau không.
Chả lẽ khách hàng đòi coi code D:
 
Thì round(amount,2) vậy. vì:

Còn EndOfPeriod_Amt mình cộng trừ, đừng nhân. Phùuu. Đừng cười nhé!

EndOfPeriod_Amt tức là dư Cuối kỳ (Giá trị)

Cuối kỳ (Giá trị) = Đầu kỳ (Giá trị) + SUM{PST (Giá trị)} - SUM{PSG (Giá trị)}

Vì các giá trị SUM{PST (Giá trị)}, SUM{PSG (Giá trị)} nó lẻ nên Cuối kỳ (Giá trị) mới bị lẻ như vậy.

Có lẽ nên thay:

Cuối kỳ (Giá trị) = Round(Đầu kỳ (Giá trị) + SUM{PST (Giá trị)} - SUM{PSG (Giá trị)},0)

Không cho giá trị tồn kho (đầu, cuối) lẻ nhỉ. Còn kệ, cho PST, PSG nó muốn lẻ thế nào thì mặc. Nhỉ!
 
Lần chỉnh sửa cuối:
Thực ra khách hàng đánh giá phần mềm chủ yếu nhìn trên report các loại (tức là kết quả), nếu kỹ hơn thì đánh giá thêm mấy cái form (giao diện), mà dù kỹ hơn nữa, mấy ai mà click chuột vào textbox coi thử có giấu số thập phân đằng sau không.
Chả lẽ khách hàng đòi coi code D:
 
Thực ra khách hàng đánh giá phần mềm chủ yếu nhìn trên report các loại (tức là kết quả), nếu kỹ hơn thì đánh giá thêm mấy cái form (giao diện), mà dù kỹ hơn nữa, mấy ai mà click chuột vào textbox coi thử có giấu số thập phân đằng sau không.
Chả lẽ khách hàng đòi coi code D:

Họ ko cần coi code đâu, khách hàng họ có bộ dữ liệu chạy thử trên Excel của họ (vẫn để lẻ như thường). Sau đó, họ nhập y trang những dữ liệu như vậy vào PM của mình.

Rồi họ so sánh 2 kết quả. Phải ko được khác nhau kể cả 1 con số, 1 dấu phảy,... thì mới được chấp nhận (Đó là 1 trong nhiều loại test, và sử dụng phương pháp gọi là black test)

@ptm0412: Cột "đơn giá" ở hình minh họa trên là ở thời điểm nào vậy?

Ah, về việc tính giá vốn, mình tính giá vốn ngay ở chứng từ nhập hàng. lúc bán hàng (xuất hàng), mình lấy giá vốn đó ở ngay giao dịch phía trước nó.

vì thế, SUM(PST, PSG) mình lấy ngay từ các giá trị hàng nhập (receipt amount) và giá vốn hàng bán (COGS) ngay trên các giao dịch trong kỳ lựa chọn.

Dĩ nhiên, khi kinh doanh thì ko chỉ có mỗi mua (nhập mua) với bán (xuất bán), còn có trả lại hàng (mua & bán), chuyển kho (mỗi kho có thể tự nhập hàng nên khi chuyển kho cũng làm thay đổi giá vốn tại kho đó), điều chỉnh kho (tăng/giảm), phiếu lắp giáp, tháo dỡ.
 
Lần chỉnh sửa cuối:
Cột đơn giá đó là đơn giá thời điểm (at moment), vì trong bảng tính thực sự thì :
- tồn đầu (sl và tt) lấy từ kỳ trước
- cột nhập(sl và tt) tổng hợp từ chứng từ nhập. Hễ có phát sinh là nó cộng dồn vào
- cột đơn giá là = (tt DK + ttnhap) / (slDK + slnhap), hễ có phát sinh nhập là tính lại.(đủ loại nhập). Giá này ổn định để tính giá xuất cho đến lần nhập sau

Theo kiểu Việt nam thì bảng này cuối kỳ mới in nên đơn giá khi in là giá bq cả tháng, giá xuất và thành tiền xuất cũng tính 1 lần cuối tháng.
Trước đó nếu cần tính COGS thì cũng lấy nó, nhưng chỉ là tạm tính, cuối tháng mới tính lại lần cuối và in ra.
-----------
Chi phí vận chuyển, tháo lắp, ... cũng là 1 giao dịch, số lượng bằng 0, thành tiền theo chứng từ, của mặt hàng nào tính cho mặt hàng đó, (cũng có 1 dòng giao dịch với mã hàng, số lượng, ttiền như phiếu nhập kho, chỉ khác số lượng bằng không, nên thành tiền cũng cộng dồn vào cột thành tiền nhập trong bảng thí dụ ==> TĂNG GIÁ TỒN KHO)
 
Lần chỉnh sửa cuối:
Cột đơn giá đó là đơn giá thời điểm (at moment), vì trong bảng tính thực sự thì :
- tồn đầu (sl và tt) lấy từ kỳ trước
- cột nhập(sl và tt) tổng hợp từ chứng từ nhập. Hễ có phát sinh là nó cộng dồn vào
- cột đơn giá là = (tt DK + ttnhap) / (slDK + slnhap), hễ có phát sinh nhập là tính lại.(đủ loại nhập). Giá này ổn định để tính giá xuất cho đến lần nhập sau

Theo kiểu Việt nam thì bảng này cuối kỳ mới in nên đơn giá khi in là giá bq cả tháng, giá xuất và thành tiền xuất cũng tính 1 lần cuối tháng.
Trước đó nếu cần tính COGS thì cũng lấy nó, nhưng chỉ là tạm tính, cuối tháng mới tính lại lần cuối và in ra.

Bqgq.jpg


Theo như báo cáo trên thể hiện thì đó là báo cáo Nhập Xuất tồn theo từng kỳ (vì có chữ "Đầu" và "Cuối")

Một khi đã theo kỳ thì tức là ko phải theo thời điểm, nếu ko thì phải ghi rất rõ đó là Giá vốn ở cuối kỳ hay ở đầu kỳ.

Hình vẽ sau đây mới chỉ rõ về MOVING AVERAGE
http://www.turboimagehost.com/p/306420/gonzalespertualavg.v2.PNG.html
 
Lần chỉnh sửa cuối:
Tại Việt nam chỉ yêu cầu vậy. thực ra vào ngày giữa kỳ mà nhìn vào nó, hoặc in nó ra, thì nó là giá tại thời điểm đó.
 
Theo em thay vì viết code để chạy giá trung bình theo từng lần nhập, thì ta viết code để chạy giá trung bình theo ngày. Đến cuối ngày, những mặt hàng nào còn số lượng và thành tiền thì không cần để ý tới; những mặt hàng nào có số lượng = 0, thành tiền <> 0 thì tùy thuộc vào yêu cầu của ngời làm kế toán, ta viết code để phân bổ hoặc là vào giá vốn của mặt hàng xuất cuối cùng hoặc là vào chi phí ...
 
Do dùng công thức Excel nên nó cứ tự tính lại như thế, nếu dùng code tính từng lần xuất và gán giá trị vào cell, thì đúng chính xác là giá thời điểm từng lần xuất. Các phần mềm không phải Excel cũng tính như thế. Sẽ có lợi là phiếu xuất kho có giá trị (amount) ngay để in ra chính thức và hạch toán luôn.
(Trong Access mình tính bằng code trên form nhập liệu)
Lúc này trên bảng tổng hợp nhập xuất tồn (như ví dụ), cột thành tiền xuất cũng phải tính tổng từng lần xuất cho mỗi mặt hàng, không được lấy tổng số lượng nhân đơn giá nữa.
 
Theo em thay vì viết code để chạy giá trung bình theo từng lần nhập, thì ta viết code để chạy giá trung bình theo ngày. Đến cuối ngày, những mặt hàng nào còn số lượng và thành tiền thì không cần để ý tới; những mặt hàng nào có số lượng = 0, thành tiền <> 0 thì tùy thuộc vào yêu cầu của ngời làm kế toán, ta viết code để phân bổ hoặc là vào giá vốn của mặt hàng xuất cuối cùng hoặc là vào chi phí ...

Đó cũng là 1 cách hay. Tớ tính lượng và giá trị tồn theo từng thời điểm cho từng chứng từ 1 (mỗi khi save chứng từ) một cách cực nhanh (mà ko cần đợi tới cuối ngày, tính tức thời lãi gộp của hàng hóa ngay tại thời điểm bán). Có lẽ sẽ kiểm tra luôn lượng tồn = 0, giá trị tồn <> 0 ở từng thời điểm đó để "xử lý" (phân bổ vào giá vốn của mặt hàng xuất cuối cùng) nó luôn.

Dĩ nhiên khi sửa hoặc xóa chứng từ thì sẽ tự động chạy update lại từ chứng từ đó tới thời điểm hiện tại.
 
Lần chỉnh sửa cuối:
Đó cũng là 1 cách hay. Tớ tính lượng và giá trị tồn theo từng thời điểm cho từng chứng từ 1 (mỗi khi save chứng từ) một cách cực nhanh (mà ko cần đợi tới cuối ngày). Có lẽ sẽ kiểm tra luôn lượng tồn = 0, giá trị tồn <> 0 ở từng thời điểm đó để "xử lý" (phân bổ hoặc là vào giá vốn của mặt hàng xuất cuối cùng) nó luôn.

Dĩ nhiên khi sửa hoặc xóa chứng từ thì sẽ tự động chạy update lại từ chứng từ đó tới thời điểm hiện tại.
Thực hiện được việc tính giá trị tồn theo từng thời điểm thì quả là quá tuyệt. Nhưng vẫn còn một số vấn đề em thấy hơi gợn (chưa được tối ưu trong việc tính giá):
1- Liệu có đảm bảo là không sửa, xóa phiếu nhập không?
2- Nếu có thì việc giá của các phiếu xuất được trong khoảng thời gian từ lúc mở phiếu nhập được sửa tới lúc sửa xong phiếu nhập đó là như thế nào? VD: Thời điểm mở phiếu nhập số 10 (có nhập mặt hàng A) là 13h21'25"; Thời điểm mở phiếu xuất số 15 (có xuất mặt hàng A) là 13h30'18"; Thời điểm sửa phiếu nhập số 1 (sửa lại số lượng hoặc giá của mặt hàng A) là 14h22'00". Vậy giá của mặt hàng A trong phiếu xuất số 15 lấy theo thời điểm nào?
3- Người nhập số liệu nhận cùng một lúc các tập phiếu nhập và phiếu xuất thì việc lựa chọn vào phiếu nhập trước hay phiếu xuất trước cũng sẽ ảnh hưởng rất nhiều đến việc tính giá.
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.
 
Thực hiện được việc tính giá trị tồn theo từng thời điểm thì quả là quá tuyệt. Nhưng vẫn còn một số vấn đề em thấy hơi gợn (chưa được tối ưu trong việc tính giá):
1- Liệu có đảm bảo là không sửa, xóa phiếu nhập không?
2- Nếu có thì việc giá của các phiếu xuất được trong khoảng thời gian từ lúc mở phiếu nhập được sửa tới lúc sửa xong phiếu nhập đó là như thế nào? VD: Thời điểm mở phiếu nhập số 10 (có nhập mặt hàng A) là 13h21'25"; Thời điểm mở phiếu xuất số 15 (có xuất mặt hàng A) là 13h30'18"; Thời điểm sửa phiếu nhập số 1 (sửa lại số lượng hoặc giá của mặt hàng A) là 14h22'00". Vậy giá của mặt hàng A trong phiếu xuất số 15 lấy theo thời điểm nào?
3- Người nhập số liệu nhận cùng một lúc các tập phiếu nhập và phiếu xuất thì việc lựa chọn vào phiếu nhập trước hay phiếu xuất trước cũng sẽ ảnh hưởng rất nhiều đến việc tính giá.
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.

Re 1: Với phần mềm "chuyên nghiệp", việc tính lại giá vốn, rồi tính lại balance ngay từ thời điểm đó tới tận thời điểm giao dịch cuối cùng với tốc độ khá nhanh là điều không vấn đề gì vì theo phương pháp là nó chỉ làm việc tới những đối tượng bị thay đổi. chứ ko chạy lại tất cả mọi thứ.
Ví dụ: Khi thay đổi thông tin trên 1 (hoặc nhiều) dòng hàng của 1 chứng từ thì nó sẽ thay đổi kết quả dữ liệu bao gồm các vấn đề sau:
- Số lượng tồn (chỉ của những mặt hàng đã bị thay đổi mà thôi)
- Giá vốn (chỉ của những mặt hàng đã bị thay đổi mà thôi)
- Giá trị tồn (chỉ của những mặt hàng đã bị thay đổi mà thôi, chuyển kỳ ngay khi chạy tính lại giá vốn)
- Công nợ của khách hàng
- Các số dư của các đối tượng, tài khoản khác liên quan

Khi đó, ta chỉ chạy UpdateBatch tính từ thời điểm (chứng từ đó) trở về sau. Việc này sẽ hỏi ngay người dùng khi sửa chứng từ.

Việc delete chứng từ cũng làm tương tự như vậy (nhưng affect to all line items in transaction detail)

Re 2: Giả sử phiếu nhập bị sửa lại (tức là có 2 thời điểm cập nhật giá)
Giá vốn sẽ được tính dựa trên thứ tự của các giao dịch theo quy tắc sau:
- TransDate (ngày chứng từ)
- TransNo (Số chứng từ - được sắp xếp tăng dần đối với mọi loại chứng từ - có thể đổi lại thứ tự này theo đúng thứ tự của giao dịch)
- ID (thứ tự tạo chứng từ - gọi là TransID - số này có kiểu Long, là duy nhất, tự tăng lúc tạo chứng từ)

Như vậy, sẽ ko dựa trên thời gian lúc sửa chứng từ mà dựa trên quy tắc trên để tính giá vốn

Re 3: Trong trường hợp môi trường "Đa người dùng", vẫn dựa trên quy tắc thứ tự giao dịch ở trên (dĩ nhiên số chứng từ phải được quy định cái nào trước, cái nào sau theo đúng thời điểm giao dịch thực tế xảy ra). Như vậy, sẽ ko ảnh hưởng gì đến sự chính xác của giá vốn theo đúng thực tế giao dịch KT phát sinh.

Re 4: Việc cập nhật, tính toán lại mỗi khi sửa/xóa chứng từ sẽ có lựa chọn trong phần lựa chọn (options) của phần mềm. Các option đó như sau:
- Tính lại ngay mọi thứ khi save chứng từ (không hỏi han gì cả)
- Hỏi tính lại (nhắc nhở) trước khi save chứng từ nếu có thay đổi (this option is Default)
- Không tính toán gì cả (lúc nào thích tính lại thì tính)

Đấy là vấn đề chạy lại (từ thời điểm đó tới thời điểm cuối cùng) thì mới hỏi han, lựa chọn như vậy. Dĩ nhiên, như Re 1 đã nói, tốc độ là ko đáng kể (tính theo giây) đối với dữ liệu khoảng vài trăm nghìn dòng chứng từ, vài phút đối với triệu dòng hàng chứng từ. Dĩ nhiên, sẽ phải tự động chuyển sang chế độ hỏi (nhắc nhở) nếu số lượng dữ liệu là quá lớn hoặc cần thao tác nhập liệu nhanh liên tục.

Còn việc tính TỨC THỜI giá vốn, balance_qty, balance_amt (theo phương pháp lưu ngay ở mỗi thời điểm thì tính nhanh kinh khủng) vì ... có phải tính toán gì nhiều đâu. Tớ nghiên cứu cả tuần nay (đập đi đập lại cái thiết kế ít nhất 3 lần) mới ra cái cách này đấy :).

Hope that clear!

Thanks
 
Lần chỉnh sửa cuối:
Đụng đến lập trình, update balance, nhiều người dùng... mình thua, không dám bàn.
Nhưng còn chỗ này, Hai2hai xem lại:

Hai2hai đã viết:
Có lẽ nên thay:
Cuối kỳ (Giá trị) = Round(Đầu kỳ (Giá trị) + SUM{PST (Giá trị)} - SUM{PSG (Giá trị)},0)
Không cho giá trị tồn kho (đầu, cuối) lẻ nhỉ. Còn kệ, cho PST, PSG nó muốn lẻ thế nào thì mặc. Nhỉ!

Bỏ qua cột đơn giá, vì đã dùng code tính từng thời điểm rồi. Nhưng nếu làm tròn tồn cuối mà không làm tròn xuất (dù based Currency là gì: đồng thì round(amount,0) USD thì round(amount,2) cũng như round(cent,0)) :

Giatron.jpg


Ở từng dòng thì chưa thấy có vấn đề nhưng ở dòng cộng: (Khi lên báo cáo có định dạng) thì 620 - 332 = 289
Giatron2.jpg


Ngoài ra những báo cáo sẽ không khớp nhau khi kiểm tra chéo: như dùng dòng tài khoản lợi nhuận trên bảng cân đối phát sinh để kiểm tra lợi nhuận trên báo cáo Kết quả hoạt động kinh doanh có thể không khớp. Vì BCKQHĐKD dựa trên phát sinh, cộng trừ phát sinh nhiều tài khoản, mỗi TK lệch một chút nhéo.
 
Đồ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

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

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

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

Lần chỉnh sửa cuối:
Chọn tính giá như thế nào

Mình muốn chọn tính giá như thế nào, thì khai báo như thế nào, hay lại phải viết công thức Excel riêng a?
 
Ben cty minh nhập linh kiện máy tính về mình hạch toán 156, nhung khi chuyển những linh kiện và ráp thành bộ máy tính hoàn chỉnh mình chuyển đổi tk156 -> 152. Hồi nào tới gio mình làm thủ công nên hơi lâu, bạn nào có file excel có thể hướng dẫn mình làm với (hàng tồn kho theo bình quân gia quyền).
 
bạn ơi. Giúp mình với đc không? Mình muốn làm 1 file excel về XNT. Mình thử lấy VD để xem bạn có thể giúp mình đợc không nhé.
VD:- ở sheet 1 sẽ là nơi mình điền các mã và danh mục tên hàng hoá. ( cty mình nhiều mã hàng nhé )
- sheet 2 là nơi mình nhập XNT, ở đây mình chỉ cần đánh mã hàng nó sẽ hiện ra tên hàng đầy đủ ở cột tên hàng hóa ( mã hàng và tên hàng đã đc mình nhập bên sheet 1 nhé )
- sheet 3 tự nhảy XNT
Nếu biết thì chỉ giúp mình với nhé. Cám ơn bạn!
 
Sao tập tin FIFO của bạn Guest, mở file ra thì ô công thức chứa công thức FiFo báo #Name? Tks
 
Bạn có thể giúp minh cong thuc tính đơn giá xuat dung nội bộ chuyển kho.Tks nhiu..Vui long xem file dinh kem..
 

File đính kèm

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)

Kính chào anh chị em trên diễn đàn. Tôi là thành viên mới toanh của diễn đàn, tuy không phải là dân kế toán chuyên nghiệp cũng chẳng phải chuyên viết chương trình phần mềm nhưng lại rất hứng thú với 2 thứ đó và đặc biệt rất khoái ứng dụng excel vào kế toán. Sau khi xem qua cái vụ rắc rối nhập - xuất - tồn gặp lượng tồn âm, tôi xin góp chút ý kiến cá nhân hy vọng gợi lên ý tưởng cho các vị chuyên viên viết chương trình là trong kế toán khi hàng tồn kho đã hết, doanh nghiệp vẫn có thể tiếp tục bán món hàng đó bằng cách lấy nguồn ngoài thì người giữ sổ sách sẽ hạch toán trực tiếp giá xuất kho vào TK632 (giá vốn hàng bán) mà không qua TK156 (hàng hóa), đồng thời, hạch toán trị giá bán lô hàng đó vào TK511 (doanh thu) và TK131 (phải thu khách hàng) nếu chưa thu tiền hoặc TK111 (Tiền mặt) nếu đã thu tiền, đương nhiên kèm theo mấy cái TK GTGT đầu vào - đầu ra gì đó lằn nhằn đằng sau nữa tôi không rõ lắm! do đó có thể khắc phục cái vụ lượng tồn kho âm vô lý kia. Lỡ "xui me" ông chủ đòi kiểm tra chéo đột xuất mà gặp lượng hàng tồn âm xuất hiện thì có nước ... chết quéo!.

Chỉ là ý kiến cá nhân thiển cận nếu không phải mong các anh chị nhẹ nhàng chỉ giáo cho. Cảm ơn nhiều nhiều!

Ngoài ra, tôi xin mạo muội trích cái này cho anh chị em tham khảo về cách tính giá FIFO và LIFO, không biết nó có bị xem là ..."lạc hậu" không nữa:

16. Phương pháp nhập trước, xuất trước áp dụng dựa trên giả định là hàng tồn kho được mua trước hoặc sản xuất trước thì được xuất trước, và hàng tồn kho còn lại cuối kỳ là hàng tồn kho được mua hoặc sản xuất gần thời điểm cuối kỳ. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập kho ở thời điểm đầu kỳ hoặc gần đầu kỳ, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho ở thời điểm cuối kỳ hoặc gần cuối kỳ còn tồn kho.
17. Phương pháp nhập sau, xuất trước áp dụng dựa trên giả định là hàng tồn kho được mua sau hoặc sản xuất sau thì được xuất trước, và hàng tồn kho còn lại cuối kỳ là hàng tồn kho được mua hoặc sản xuất trước đó. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập sau hoặc gần sau cùng, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho đầu kỳ hoặc gần đầu kỳ còn tồn kho.

Trích : QUYẾT ĐỊNH
CỦA BỘ TRƯỞNG BỘ TÀI CHÍNH SỐ149/2001/QĐ-BTC
NGÀY 31 THÁNG 12 NĂM 2001 VỀ VIỆC BAN HÀNH VÀ CÔNG BỐ
BỐN (04) CHUẨN MỰC KẾ TOÁN VIỆT NAM (ĐỢT 1)
 
Lần chỉnh sửa cuối:
Ngoài ra, tôi xin mạo muội trích cái này cho anh chị em tham khảo về cách tính giá FIFO và LIFO, không biết nó có bị xem là ..."lạc hậu" không nữa:

16. Phương pháp nhập trước, xuất trước áp dụng dựa trên giả định là hàng tồn kho được mua trước hoặc sản xuất trước thì được xuất trước, và hàng tồn kho còn lại cuối kỳ là hàng tồn kho được mua hoặc sản xuất gần thời điểm cuối kỳ. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập kho ở thời điểm đầu kỳ hoặc gần đầu kỳ, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho ở thời điểm cuối kỳ hoặc gần cuối kỳ còn tồn kho.
17. Phương pháp nhập sau, xuất trước áp dụng dựa trên giả định là hàng tồn kho được mua sau hoặc sản xuất sau thì được xuất trước, và hàng tồn kho còn lại cuối kỳ là hàng tồn kho được mua hoặc sản xuất trước đó. Theo phương pháp này thì giá trị hàng xuất kho được tính theo giá của lô hàng nhập sau hoặc gần sau cùng, giá trị của hàng tồn kho được tính theo giá của hàng nhập kho đầu kỳ hoặc gần đầu kỳ còn tồn kho.

Trích : QUYẾT ĐỊNH
CỦA BỘ TRƯỞNG BỘ TÀI CHÍNH SỐ149/2001/QĐ-BTC
NGÀY 31 THÁNG 12 NĂM 2001 VỀ VIỆC BAN HÀNH VÀ CÔNG BỐ
BỐN (04) CHUẨN MỰC KẾ TOÁN VIỆT NAM (ĐỢT 1)

Úi trời! xin lỗi tất cả mọi người, tôi đã quên phần mở đầu Topic này đã có giới thiệu qua nội dung trên. Thành thất xin lỗi!!!
 
Kính chào anh chị em trên diễn đàn. Tôi là thành viên mới toanh của diễn đàn, tuy không phải là dân kế toán chuyên nghiệp cũng chẳng phải chuyên viết chương trình phần mềm nhưng lại rất hứng thú với 2 thứ đó và đặc biệt rất khoái ứng dụng excel vào kế toán. Sau khi xem qua cái vụ rắc rối nhập - xuất - tồn gặp lượng tồn âm, tôi xin góp chút ý kiến cá nhân hy vọng gợi lên ý tưởng cho các vị chuyên viên viết chương trình là trong kế toán khi hàng tồn kho đã hết, doanh nghiệp vẫn có thể tiếp tục bán món hàng đó bằng cách lấy nguồn ngoài thì người giữ sổ sách sẽ hạch toán trực tiếp giá xuất kho vào TK632 (giá vốn hàng bán) mà không qua TK156 (hàng hóa), đồng thời, hạch toán trị giá bán lô hàng đó vào TK511 (doanh thu) và TK131 (phải thu khách hàng) nếu chưa thu tiền hoặc TK111 (Tiền mặt) nếu đã thu tiền, đương nhiên kèm theo mấy cái TK GTGT đầu vào - đầu ra gì đó lằn nhằn đằng sau nữa tôi không rõ lắm! do đó có thể khắc phục cái vụ lượng tồn kho âm vô lý kia. Lỡ "xui me" ông chủ đòi kiểm tra chéo đột xuất mà gặp lượng hàng tồn âm xuất hiện thì có nước ... chết quéo!.

Chỉ là ý kiến cá nhân thiển cận nếu không phải mong các anh chị nhẹ nhàng chỉ giáo cho. Cảm ơn nhiều nhiều!
Ý của bạn hàng mua vào không chứng từ hóa đơn, rồi khi bán ra thì giá vốn hạch toán thẳng vào TK 632 còn doanh thu thì hạch toán vào TK 511 chứ gì?
Nếu thế thì có ngày Sếp của bạn bán cty đi để nộp thuế! Bạn cứ tưởng dễ qua mặt CQ thuế chắc!!!
Giả sử khi CQ thuế kiểm tra quyết toán, người ta fát hiện cty bạn có những hàng mua vào kg hóa đơn, như vậy người ta sẽ lọai chi fí ở TK 632, nhưng vẫn chấp nhận doanh thu bán ra & thuế GTGT đầu ra, vậy đồng nghĩa những mặt hàng đã bán ra (mà khi mua vào kg có hóa đơn) sẽ lãi 100% thì bạn bị đóng thuế bao nhiêu??? hoặc giả người ta đồng ý cho bạn đưa giá vốn rất thấp thì bạn sẽ nộp thuế bao nhiêu? chưa kể các hệ lụy khác khi làm việc này.

Vì thế, Cty bạn mua hàng kg hóa đơn thì lúc bán ra hạch tóan như thế nào là tùy bạn. Còn ông chủ đi kiểm tra thì không có gì fải sợ "chết quéo", người sợ "chết quéo" là ông chủ của bạn bởi vì khi CA kinh tế hay QLTT ập vào kho bạn kiểm tra (nhất là đối với những mặt hàng nhạy cảm) thì chết thật!
 
Ý của bạn hàng mua vào không chứng từ hóa đơn, rồi khi bán ra thì giá vốn hạch toán thẳng vào TK 632 còn doanh thu thì hạch toán vào TK 511 chứ gì?
Nếu thế thì có ngày Sếp của bạn bán cty đi để nộp thuế! Bạn cứ tưởng dễ qua mặt CQ thuế chắc!!!
Giả sử khi CQ thuế kiểm tra quyết toán, người ta fát hiện cty bạn có những hàng mua vào kg hóa đơn, như vậy người ta sẽ lọai chi fí ở TK 632, nhưng vẫn chấp nhận doanh thu bán ra & thuế GTGT đầu ra, vậy đồng nghĩa những mặt hàng đã bán ra (mà khi mua vào kg có hóa đơn) sẽ lãi 100% thì bạn bị đóng thuế bao nhiêu??? hoặc giả người ta đồng ý cho bạn đưa giá vốn rất thấp thì bạn sẽ nộp thuế bao nhiêu? chưa kể các hệ lụy khác khi làm việc này.

Vì thế, Cty bạn mua hàng kg hóa đơn thì lúc bán ra hạch tóan như thế nào là tùy bạn. Còn ông chủ đi kiểm tra thì không có gì fải sợ "chết quéo", người sợ "chết quéo" là ông chủ của bạn bởi vì khi CA kinh tế hay QLTT ập vào kho bạn kiểm tra (nhất là đối với những mặt hàng nhạy cảm) thì chết thật!

ối ối! thành thật xin lỗi bạn và mọi người! Vậy là gợi ý của tôi đã gây hiểu nhầm rồi, ý của tôi không phải vậy đâu! hàng mua vào mà không có chứng từ hóa đơn được tôi gọi là hàng ... "ngoài luồng", một khi đã là hàng "ngoài luồng" mà hạch mí lại toán thì có nước ...chết!!!**~** . Ý tôi muốn nói là thay vì lượng tồn hàng luôn luôn bằng 0 thì vẫn có lý hơn là lượng hàng tồn âm. Liệu các chuyên gia viết chương trình có thể thêm đoại mã nào đó để khi thấy lượng tồn bằng 0 mà vẫn tiếp tục xuất bán thì ..."tự động" xuất hiện trong cột nhập số lượng hàng bằng đúng với lượng hàng xuất bán đó để lượng tồn vẫn là =0. (0+5-5=0 mà!). Dù sao thì đó vẫn chỉ là giải pháp tình thế!

Trong quản lý kho còn có một thuật ngữ là "Định mức dự trữ tối thiểu hàng tồn kho", không biết các anh chị có nghỉ tới thuật ngữ này chưa?! thí dụ như "Định mức dự trữ tối thiểu hàng tồn kho" 100 đơn vị và khi lượng hàng tồn chạm xuống đến mức 100 hoặc <100 thì tự động xuất hiện cảnh báo bằng văn bản hoặc tốt hơn là âm thanh khôi hài đại khái như : "HÊ HÊ HÀNG TỒN CHẠM ĐÁY RỒI NGHEON! TIẾP TỤC "XUẤT" LÀ TÔI ..."TỰ TỬ" ĐÓ! LO MÀ NHẬP HÀNG ĐÊ" và từ đó về sau mỗi khi "đụng" tới cái mặt hàng "chạm đáy" đó là máy đều hét toáng lên câu đó đến khi nào được nhập hàng vào để lượng tồn vượt định mức dự trữ tối thiểu thì thôi không la hét nữa! còn định mức tối thiểu này là bi nhiêu thì tùy vào tình hình buôn bán và do "ông chủ" đưa ra quyết định, thông thường thì bộ phận bán hàng sẽ nắm rõ cái này nhất thí dụ như lượng hàng bán ra trung bình một ngày là bi nhiêu? rồi thời gian từ khi đặt hàng đến lúc hàng nhập về kho là mấy ngày hay mấy tuần? dựa vào 2 yếu tố cơ bản này có thể đưa ra quyết định "Định mức dự trữ tối thiểu hàng tồn kho".

Hy vọng ý kiến này có thể góp chút ít gợi ý cho các anh chị viết chương trình.

Thân ái.
 
Mấy anh chị ơi ! Cho em hỏi có cách nào mình quản lý theo FIFO cho nhiều mã hàng hok ạh? Bên em có tới gần 1000 má hàng nên làm theo từng mã thì rất mất thời gian. Em cảm ơn anh chị trước ạh
 
Tài sản cố định không có hóa đơn đầu vào

Cả nhà cho e hỏi một vấn đề sau:
DNTN A có 01 xe ô tô đăng ký xe là tên của DNTN A nhưng lại không có hóa đơn đầu vào chỉ có giấy mua bán xe.Vậy cho e hỏi là những hóa đơn chi phí dầu phát sinh của xe đó trong quá trình vận tải hàng hóa có được tính là chi phí hợp lý hợp lệ cho chiếc xe đó không.
Các bác cho ý kiến giúp e .E cảm ơn!
 
Hướng dẫn trên tài liệu và hình ảnh thì rất khó hiểu, mình đang cần tìm một khóa học về Excel nhưng không biết học ở đâu tốt nhất.
 
a CHỊ CÓ FILE MỀM K CHO E VỚI, MÀ SAO EM K ĐẶT TÊN ĐƯỢC, VUI LÒNG HƯỚNG DẪN CỤ THỂ CHO EM K Ạ? eM ĐANG RẤT CẦN Ạ
 
Giúp mình cái file này lun với ah. Làm kho bị vướng hàm if kết họp Vlookup

Giúp mình với.
Mình đang bị rối khi kết hợp hàm If và Vlookup.
Mọi người hướng dẫn giúp mình chỉnh sửa lại đoạn Hàm phần "báo cáo nhanh tồn kho"
@$@!^%@$@!^%&&&%$R
 

File đính kèm

Cho minh hỏi chút: tại sao mình làm tính số lượng và trị giá giống như bạn hướng dẫn toàn bị gặp lỗi #N/A là sao nhỉ? có cách nào giải quyết ko? Thank!
 
F4 = SUMPRODUCT((MaMH=A4)*TG*(LEFT(SoPhieu,2)="PN"))

Hoặc : nếu số lượng nhập được quy ước là >0

F5 = SUMPRODUCT((MaMH=A5)*(SL>0)*TG)

Hoặc công thức mảng :

F6 = {SUM(IF(MaMH=C5,(SL>0)*TG,0))}

Mình làm theo ntn toàn gặp lỗi #N/A. Ai giúp mình với, Thank!
 
Tính giá nhập kho theo phương pháp bình quân gia quyền!

Hic. Em mạn phép vào đây hỏi các bác. Các bác giúp em tính giá bình quân gia quyền nhập vào với ạ. Vì danh mục của em có hàng trăm mặt hàng, mà em làm thủ công thì chắc chết. Các bác giúp em sớm với ạ. Em xin cảm ơn nhiều ạ. Chi tiết em xin gửi file đính kèm ạ.







Trân trọng!
 

File đính kèm

Em chào các anh/chị,

Em gặp chút khó khăn mong anh/chị cho em lời khuyên.
Em dở excel, nên chưa nghỉ ra phải làm như thế nào.
Công ty em năm nay mở rộng quy mô mặt hàng, nhập hơn 30 mã hàng nữa để bán.
Lúc trước có 5 mặt hàng.
Số lượng mặt hàng tăng và số lượng khách hàng cũng nhiều, nên em không biết thiết kế như thê nào cho phù hợp.
 
Chào bạn!
Bạn muốn người ta giúp ntn thì bạn phải nêu rõ bài toán. Muốn như file cũ của bạn ( bạn up file lên ) hay là nhờ mọi người thiết kế mới...
 
Dạ, em không biết cách post file đính kèm, mò mẫm qua nay, em mới tìm ra, em không cần tính giá vốn ạ, chỉ cần biết số lượng nhập, ngày nhập, số lượng bán ra, giá bán và khuyến mãi bao nhiêu, bán cho những ai.

Vì vừa theo dõi và dùng làm báo cáo luôn, nên cuối tháng tổng kết để biết mỗi khách hàng mua được bao nhiêu để tính khuyến mãi cho họ.

Mong các anh/chị giúp đỡ.

Em cảm ơn!
 

File đính kèm

mỗi khi bác ptm0412 và bác hai2hai post bài nói về vấn đề nào là y như rằng em được học thêm rất nhiều điều hay. Cám ơn GPE và cám ơn 2 bác nhiều lắm.
 
Cho mình hỏi công thức tính giá bình quân:
VD sau :
View attachment hinh 2.bmp

Mình tính giá bình quân của giá cái nào có 2 đơn giá thì chia 2, còn cái nào có 3 đơn giá chia 3...
Ai biết công thức chỉ dùm minh với
 
để chuẩn bị cho loạt bài này, mời các bạn tham khảo thêm về các đề tài sau :

- cách đặt tên cho dãy, vận dụng tên cho công thức
- các hàm dò tìm vlookup, index, match
- các hàm mảng, công thức mảng, hàm sumproduct
- các hàm tham chiếu : Offset
- các hàm luận lý : If, or, and...
- các hàm bẫy lỗi : Iserror, isna...
- kiến thức vba không dám nêu tại đây, vì phạm vi này rộng quá

xin mời tất cả các bạn tham gia thảo luận đề tài này, chúng ta sẽ từ từ tổng hợp vấn đề này một cách có chiều sâu hơn
thank bác ạ, đây là nhưng công cụ cần thiết để người dùng không bỡ ngỡ khi sử dụng
 
Có bác nào rành VBA chỉ giúp mình với. Mình có file sổ kế toán tự làm như thế này nhưng hôm qua có coi trên diễn đàn thấy máy bạn sử dụng VBA rất hay và nhanh. Hiện tại file của mình toàn bộ bằng công thức mỗi lần nhập lưu rất là lâu vì phải load công thức và đếm dẫn đến rất là lâu. Có ai biết sử dụng VBA để làm cho nhanh thì giúp mình với
 
Chào anh/chị !

Em sưu tầm được 1 file tính giá hàng xuất theo PP FIFO mà e quên mất người đăng. File này tính được giá xuất kho của từng lần xuất của từng mặt hàng.
Nhưng thành tiền tồn kho cuối kỳ e ngâm cứu hoài mà ko làm được.Vì do kiến thức còn hạn chế.
Mong anh/chị xem dùm e với a
 

File đính kèm

TUYỂN GẤP TẠI TP HỒ CHÍ MINH
- Bạn nào có nhu cầu đi làm thêm, ai rãnh toàn bộ time càng tốt, lương 1,2 tr/ tuần + thưởng (trả luôn theo tuần)
Địa điểm: Tại TTTM CENTRAL PLAZA
- Công việc đơn giản:
Trả lời cmt, tin nhắn của Khách hàng, xác nhận đơn hàng và chăm sóc khách hàng online.
---Có 3 ca chính:
Ca sáng: 8h - 11h
Ca chiều: 13h - 17h
Ca tối: 18h - 21h3
Ai làm liên hệ: 0917 19 39 66 gặp chị Sunny
 
3. FIFO và LIFO :

Thiết kế File Excel để tính trị giá hàng tồn theo FIFO và LIFO tùy từng người, nhưng nhìn chung có các dạng sau :
- Tính trực tiếp trị giá tồn HH trên bảng Nhập Xuất Tồn được tổng hợp dữ liệu từ các Sheet Nhập hàng và Xuất hàng (pp kiểm kê định kỳ)
- Tính số lượng hàng tồn còn lại và trị giá theo dõi từng đợt nhập hàng (pp kiểm kê định kỳ)
- Tính trị giá vốn và trị giá hàngtồn ngay thời điểm xuất kho (pp kê khai thường xuyên)

Chúng ta thường thấy việc tính toán này sử dụng VBA để tạo hàm UDF , và hiếm thấy các File Excel sử dụng công thức thong thường. Ở đây, tôi xin giới thiệu với các bạn một số File không dung VBA, tất nhiên, có nhiều hạn chế, nhưng chúng ta vẫn có nhiều điểm để có thể tham khảo và học tập

A. Trị giá hàng tồn được tính theo phương pháp kê khai thường xuyên :

Tham khảo thêm bài của Workman : Vận dụng công thức mảng để tính FIFO

http://www.giaiphapexcel.com/forum/showthread.php?t=68&highlight=FIFO
Chào chị handung, bài viết của chị rất bổ ích
Em có bảng biểu lịch sử nhập các nguyên vật liệu (ngày tháng nhập, số lượng nhập...),tồn kho hiện tại như trên
Xuất hàng theo đúng FIFO (Nhập trước xuất truớc) rồi ạ
Bây giờ em muốn đặt công thức để có thể tìm ra lượng tồn kho hiện tại là của những ngày nào, ra được kết quả như cột G em làm thủ công
Rất mong nhận được sự giúp đỡ của chị và mọi người
Em cám ơn ạ!
 

File đính kèm

  • IMG_20221015_132738.jpg
    IMG_20221015_132738.jpg
    69 KB · Đọc: 12
  • MB51 1014.XLSX
    MB51 1014.XLSX
    91.2 KB · Đọc: 10
Chào chị handung, bài viết của chị rất bổ ích
Em có bảng biểu lịch sử nhập các nguyên vật liệu (ngày tháng nhập, số lượng nhập...),tồn kho hiện tại như trên
Xuất hàng theo đúng FIFO (Nhập trước xuất truớc) rồi ạ
Bây giờ em muốn đặt công thức để có thể tìm ra lượng tồn kho hiện tại là của những ngày nào, ra được kết quả như cột G em làm thủ công
Rất mong nhận được sự giúp đỡ của chị và mọi người
Em cám ơn ạ!
Qua bài viết trên diễn đàn em đã mày mò, đặt công thức như hình dưới
Bác nào có công thức hay hơn, chia sẻ càng tốt ạ
Em cám ơn!
 

File đính kèm

  • IMG_20221016_064314.jpg
    IMG_20221016_064314.jpg
    120.9 KB · Đọc: 14

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

Back
Top Bottom