ledangvan > 19-09-15, 04:12 PM
thucgia > 19-09-15, 04:38 PM
(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ỉ ?
SELECT hang.hang_id, hang.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 ngay, nhap_xuat.[hang_id] AS hang_id, IIf(nhap_xuat.loai="N",solg,0) AS solg_nhap, IIf(nhap_xuat.loai="N",solg*don_gia,0) AS tien_nhap, IIf(nhap_xuat.loai="X",solg,0) AS solg_xuat, IIf(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_id, hang.solg, [solg]*[don_gia]
ongke0711 > 19-09-15, 04:58 PM
thucgia > 19-09-15, 05:09 PM
(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ỉ?
thucgia > 19-09-15, 05:36 PM
(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 ... Điều kiện gì để có thể xóa được????
ongke0711 > 19-09-15, 05:51 PM
thucgia > 19-09-15, 05:56 PM
(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 ... Điều kiện gì để có thể xóa được????
thucgia > 19-09-15, 05:59 PM
(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...
tranthanhan1962 > 19-09-15, 06:56 PM
ongke0711 > 23-09-15, 12:58 PM