Đánh giá chủ đề:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Giúp mình cập nhật đơn giá bình quân gia quyền
#21
Cái công thức của bạn chỉ là công thức tính giá bình quân tại thời điểm hay còn gọi cách khác là giá bình quân trước lúc xuất - Mục đích xem giá tại thời điểm đó của bạn chắc cũng chỉ để tính giá xuất ra thôi chứ nhỉ ? 016
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#22
(19-09-15, 04:12 PM)ledangvan Đã viết: Cái công thức của bạn chỉ là công thức tính giá bình quân tại thời điểm hay còn gọi cách khác là giá bình quân trước lúc xuất - Mục đích xem giá tại thời điểm đó của bạn chắc cũng chỉ để tính giá xuất ra thôi chứ nhỉ ? 016

Cuối cùng thì mình có một cái query tính bqgq theo cái ông Thiên ưng

Mã PHP:
SELECT hang.hang_idhang.solg AS tsolg_dau
[
solg]*[don_gia] AS ttien_dau
Sum(Q_nx2.solg_nhap) AS tsolg_nhap
Sum(Q_nx2.tien_nhap) AS ttien_nhap
Sum(Q_nx2.solg_xuat) AS tsolg_xuat
Sum(Q_nx2.tien_xuat) AS ttien_xuat
tsolg_dau+tsolg_nhap-tsolg_xuat AS tsolg_ton
ttien_dau+ttien_nhap-ttien_xuat AS ttien_ton
iif(tsolg_ton=0,0,ttien_ton/tsolg_ton) AS dgbq
FROM
(
SELECT nhap_xuat.[ngay] AS ngaynhap_xuat.[hang_id] AS hang_idIIf(nhap_xuat.loai="N",solg,0) AS solg_nhapIIf(nhap_xuat.loai="N",solg*don_gia,0) AS tien_nhapIIf(nhap_xuat.loai="X",solg,0) AS solg_xuatIIf(nhap_xuat.loai="X",solg*don_gia,0) AS tien_xuat
FROM nhap_xuat
) as Q_nx2 
RIGHT JOIN hang ON Q_nx2
.hang_id hang.hang_id
GROUP BY hang
.hang_idhang.solg, [solg]*[don_gia

Đối với mình thì chỉ cần 1 Qui trình đúng và sáng sủa..
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tranthanhan1962
#23
Nếu mình không sai thì cái query này thì phải chạy hết các record của table nhap_xuat từ ngày đầu đến ngày cần xuất để lấy đơn giá bình quân. Nếu số records lớn quá thì sao nhỉ?
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tranthanhan1962
#24
(19-09-15, 04:58 PM)ongke0711 Đã viết: Nếu mình không sai thì cái query này thì phải chạy hết các record của table nhap_xuat từ ngày đầu đến ngày cần xuất để lấy đơn giá bình quân. Nếu số records lớn quá thì sao nhỉ?

Đúng bạn nói đúng, nhưng mình nghĩ dữ liệu sẽ được tách ra , copy lưu thành từng quí

Giờ còn một vấn đề nữa là mình muốn xóa 1 phiếu nhập hoặc xuất????? đương nhiên các phiếu chưa duyệt và tầm ảnh hưởng của nó phải không tác động đến phiếu đã được duyệt rồi 020 ... Điều kiện gì để có thể xóa được????
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#25
(19-09-15, 05:09 PM)thucgia Đã viết:
(19-09-15, 04:58 PM)ongke0711 Đã viết: Nếu mình không sai thì cái query này thì phải chạy hết các record của table nhap_xuat từ ngày đầu đến ngày cần xuất để lấy đơn giá bình quân. Nếu số records lớn quá thì sao nhỉ?

Đúng bạn nói đúng, nhưng mình nghĩ dữ liệu sẽ được tách ra , copy lưu thành từng quí

Giờ còn một vấn đề nữa là mình muốn xóa 1 phiếu nhập hoặc xuất????? đương nhiên các phiếu chưa duyệt và tầm ảnh hưởng của nó phải không tác động đến phiếu đã được duyệt rồi 020 ... Điều kiện gì để có thể xóa được????
[Hình: thien_ung.png]
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tranthanhan1962
#26
- Theo cách làm của mình là sẽ lưu tồn kho hàng ngày vào table, khi có nghiệp vụ xuất sẽ lấy tồn đk trước ngày xuất 1 ngày để chạy query ra đgbq. Cách này query rất nhanh chỉ có cái là table Tồn kho sẽ phình ra rất lớn nếu cty có vài trăm mã hàng. Mình cũng chưa biết cách gì hay hơn. Phải nhờ các bác đã làm qua nghiệp vụ này tư vấn giải thuật giùm thôi.
- Khi xóa phiếu Nhập thì chạy lại cái hàm tồn kho để tính lại giá bq vì sẽ ảnh hưởng đến giá các phiếu xuất sau ngày của nó. Nếu vậy thì lại phát sinh giá bq trên phiếu xuất trong kỳ này chỉ là giá tạm tính, đến cuối tháng kế toán phải cập nhật lại giá bq xuất cho những phiếu này khi chốt sổ. Tới đây thì mình cũng hết biết rồi...hehe.
Theo mình, cách tính toán từ đầu tới giờ chỉ để làm được cái N-X-T với đơn giá bq đơn giản thôi, chưa tính đến các yếu tố của nghiệp vụ kế toán, chưa kể yêu cầu của sếp khi thì tính giá bq kiểu này khi thì tính giá bq kiểu khác để tối đa hóa lợi nhuận...
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#27
(19-09-15, 05:36 PM)thucgia Đã viết:
(19-09-15, 05:09 PM)thucgia Đã viết:
(19-09-15, 04:58 PM)ongke0711 Đã viết: Nếu mình không sai thì cái query này thì phải chạy hết các record của table nhap_xuat từ ngày đầu đến ngày cần xuất để lấy đơn giá bình quân. Nếu số records lớn quá thì sao nhỉ?

Đúng bạn nói đúng, nhưng mình nghĩ dữ liệu sẽ được tách ra , copy lưu thành từng quí

Giờ còn một vấn đề nữa là mình muốn xóa 1 phiếu nhập hoặc xuất????? đương nhiên các phiếu chưa duyệt và tầm ảnh hưởng của nó phải không tác động đến phiếu đã được duyệt rồi 020 ... Điều kiện gì để có thể xóa được????
[Hình: thien_ung.png]

Bạn nói có lý viết lại cái quẻy loc theo hang_id là tăng tốc độ nhiều, cám ơn
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tranthanhan1962
#28
(19-09-15, 05:51 PM)ongke0711 Đã viết: - Theo cách làm của mình là sẽ lưu tồn kho hàng ngày vào table, khi có nghiệp vụ xuất sẽ lấy tồn đk trước ngày xuất 1 ngày để chạy query ra đgbq. Cách này query rất nhanh chỉ có cái là table Tồn kho sẽ phình ra rất lớn nếu cty có vài trăm mã hàng. Mình cũng chưa biết cách gì hay hơn. Phải nhờ các bác đã làm qua nghiệp vụ này tư vấn giải thuật giùm thôi.
- Khi xóa phiếu Nhập thì chạy lại cái hàm tồn kho để tính lại giá bq vì sẽ ảnh hưởng đến giá các phiếu xuất sau ngày của nó. Nếu vậy thì lại phát sinh giá bq trên phiếu xuất trong kỳ này chỉ là giá tạm tính, đến cuối tháng kế toán phải cập nhật lại giá bq xuất cho những phiếu này khi chốt sổ. Tới đây thì mình cũng hết biết rồi...hehe.
Theo mình, cách tính toán từ đầu tới giờ chỉ để làm được cái N-X-T với đơn giá bq đơn giản thôi, chưa tính đến các yếu tố của nghiệp vụ kế toán, chưa kể yêu cầu của sếp khi thì tính giá bq kiểu này khi thì tính giá bq kiểu khác để tối đa hóa lợi nhuận...

hi tay ngang mà bạn, học thêm cái kế toán mấy ổng thì memory overflow...
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#29
Mình cũng thích thú và khâm phục khi theo dõi bạn thucgia và ongke0711 nghiên cứu về đơn giá bình quân gia quyền. Đó mới là một phong cách của một dân IT thực sự. Dù biết rằng cách của bạn thucgia không áp dụng được vào thực tế. Nhưng thông qua nó, bạn thucgia sẽ phát hiện được nhiều hơn về khả năng xử lý code của mình. Nếu số lượng record ít bạn có thể không cần viết code VBA. RunningSum trong report cũng có thể xử lý được bình quân gia quyền. Nhưng trong thực tế ngoài cách xử lý mình đã giới thiệu (cách xử lý của mình còn thiếu một phần làm tròn số và giải quyết hết giá trị tồn kho khi hết số lượng, vì code phần này của mình còn dính đến những code khác nên khi có thời gian mình cắt ra và giới thiệu cho các bạn) thì mình chưa nghĩ ra được phương pháp nào khác.
Để lên được một báo cáo bình quân gia quyền, phải xử lý nhiều thao tác, lấy các số tồn cuối hàng hóa của giai đoạn trước (Số lượng, giá trị). Đối với hàng hóa của giai đoạn trước chưa có phải đưa vào số lượng và giá trị bằng 0. Đối với hàng hóa phát sinh bằng mọi cách phải gom nhóm tối đa theo yêu cầu (báo cáo tháng, báo cáo quý, báo cáo năm, Sổ hàng hóa). Trong giai đoạn báo cáo nếu hàng hóa nào không có phát sinh phải bổ sung giá trị phát sinh bằng 0 để giữ dòng trên report. Điều quan trọng là đơn giá bình quân gia quyền tại thời điểm trùng nhau giữa các báo cáo phải giống nhau: BQGQ cuối tháng 3, 6, 9, 12 / báo cáo tháng = BQGQ cuối quý 1, 2, 3, 4 / báo cáo quý; BQGQ cuối tháng 12/ báo cáo tháng = BQGQ cuối quý 4/ báo cáo quý = BQGQ cuối năm, đồng thời trên sổ hàng hóa các thời điểm gống như các báo cáo trên cũng phải giống ĐGBQGQ.
Nếu số lượng record quá lớn, bạn phải có table đệm. Dùng phương pháp chạy từng đợt để lấy BQGQ rồi chuyển lên table chính, mới có thể xử lý được các report hoàn chỉnh cho các báo cáo. Cách của mình đưa lên hôm trước chỉ là một đoạn code VBA để nạp một giai đoạn xử lý bình quan gia quyền. Tất nhiên sau khi nạp số liệu của giai đoạn đó xong nó sẽ giữ lại số liệu cuối của từng tên hàng để làm số liệu đầu, rối xử lý tiếp (phần này thì dễ rồi).
Để minh họa thực tế mình post lên một dữ liệu một năm (chỉ cắt ra 1 năm) của một công ty phân phối hàng tiêu dùng (đây chỉ là một công ty dạng trung bình). Đó chính là lý do vì sao không thể áp dụng cách của bạn thucgia vào thực tế được.
Lúc đầu mình định chép ra excel nhưng số lượng record vượt quá 65.000 nên phải tạo một database để post lên.

Demo
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thucgia , ongke0711 , Noname
#30
Theo CSDL mẫu anh tranthanhan1962 đã up, mình làm cái hàm tồn kho (với giá bình quân mỗi lần nhập) như file đính kèm.
Demo Tính Ton Kho (giá bình quân gq)

Cách làm như sau:
- Tạo các table phụ: TonKho, TonKhoPhatSinh (để lấy giá bình quân), TonKhoTemp, ThamSo (để lưu ngày đã chạy tồn kho)
- Hàm tính tồn kho: dùng toàn bộ = Query
      + Query lấy tồn kho ĐK từ bảng TonKho với ngày = ngày cần tính -1 đưa vào bảng TonKhoTemp
      + Lấy số lượng nhập, giá nhập đưa vào bảng TonKhoTemp
      + Insert toàn bộ dữ liệu Tồn ĐK + Nhập vào table TonKhoPhatSinh để tính giá bình quân.
      + Lấy dữ liệu Xuất vào table TonKhoTemp với giá bq lấy từ table TonKhoPhatSinh.
      + Tổng hợp dữ liệu Tồn CK từ TonKhoTemp đưa vào bảng TonKho.
- Cách này phải tổng hộp tồn kho mỗi ngày.
- Mỗi khi nghiệp vụ Nhập phát sinh, khi lưu -> chạy hàm TonKho.
- Khi nghiệp vụ Xuất phát sinh: khi form Open -> chạy hàm TonKho để cập nhật lại giá bq; Khi lưu -> chạy hàm tồn kho lần nữa.
- Để thuận tiện mình làm cái form Khởi động, mỗi khi ứng dụng chạy, sẽ check ở table ThamSo xem đã cập nhật tồn kho đến ngày nào thì nó sẽ cập nhật tiếp đến hiện tại.
(Chú ý: trong demo chỉ cập nhật đến tháng 9/2013 nên nếu mở form này, nó sẽ chạy cập nhật đến hiện tại và quá nhiều tháng nên sẽ treo máy.... 007 ...cái này mình potay. Hàm chỉ chạy cập nhật 1 lúc khoảng 3 tháng thì được)

Nhược điểm: cách làm này sẽ tạo thêm table phụ rất nhiều dòng (dữ liệu 9 tháng với 75k dòng, 930 dòng mã hàng sẽ tạo ra cái table tồn kho với 98k dòng + tonkhoTemp 98k dòng).

Các bạn kiểm tra và góp ý xem có cách nào để giải quyết bài toán tồn kho và giá bqgq tốt hơn nhé. Về mặt kế toán, quản lý  nhờ các bác có kinh nghiệm kiểm tra xem nó có bị sai, không khả thi ở điểm nào không?
Cám ơn mọi người.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thucgia , Noname , tranthanhan1962


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Nhờ AE chỉ giúp phần import ODBC database với ạ Mr H 1 88 01-12-16, 05:19 PM
Bài mới nhất: maidinhdan
Big Grin Giúp đổ đầy các dòng dưới nếu cùng số hóa đơn ledangvan 3 323 26-03-16, 01:01 PM
Bài mới nhất: ongke0711
Rainbow [Hỏi] Tạo quan hệ với các bản 9xconduongtoidi 2 302 25-03-16, 10:28 AM
Bài mới nhất: 9xconduongtoidi
  Mong mọi người giúp tạo CSDL Quản lý thiết bị huymcsa 10 662 14-01-16, 04:22 PM
Bài mới nhất: ongke0711
Wink Tạo dữ liệu quản lý nhân sự theo các loại bằng cấp chứng chỉ xentran2010 18 3,387 29-08-15, 08:14 AM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ