Cẩn thận không vi phạm bản quyền đấy các bác ạ!!!
Thân!
Rate types:
- Monthly average rate (AV)
- Daily spot rate (SP)
- Financial Translation-Average (TA)
- Financial Translation-Current (TR)
Ừ, nhầm (lú lẫn thật)Finished (Kiểu boolean chứ)
Check bằng tay hay bằng mã lệnh cũng cần field đó chứ nhỉ? Vì mình nghĩ đưa trạng thái vào 1 field thì xử lý tốt hơn, nhất là khi xử lý cuối kỳ. Nếu check bằng mã lệnh thì không đưa field đó lên màn hình, thế thôi.việc kiểm soát trạng thái hóa đơn ko làm kiểu đó được mà phải viết SQL để check tổng của các phần thanh toán cho hóa đơn đó so với tổng giá trị của hóa đơn.
Vấn đề về sửa chứng từ:
- Khi sửa chứng từ đã có phiếu thu (đủ hoặc chưa đủ), người sửa phải kiểm tra dấu check này.
- Nếu không kiểm tra hoặc kiểm tra sót gây lỗi True -- False thì kế tóan công nợ sẽ phát hiện ra: Tổng bảng kê hoá đơn nợ, không bằng tổng dư nợ của từng khách hàng.
- Nếu Kế toán công nợ không phát hiện, thì kế toán tổng hợp sẽ phát hiện: Tổng bảng kê hoá đơn nợ không bằng tổng sô dư tài khoản 131
- Nếu kế toán tổng hợp không phát hiện, KTT phải phát hiện. (Nếu không thì nghỉ làm việc khác cho xong)
Mình chưa rõ được ý nghĩa, các trường hợp áp dụng của các nhóm tỷ giá (Rate Type) được áp dụng như thế nào:
- Nếu KTT ko phát hiện ra thì .... phần mềm phải phát hiện ra (Nếu ko thì vứt phần mềm đi mua phần mềm khác)
Hai2hai thương KTT nhỉ! Thương không xuể đâu nhé! Chủ yếu trách nhiệm là của con người, PM do con người tạo ra và không bao giờ lường được hết mọi lỗi do người khác tạo ra. Mà bảo đảm 10 em KT thì sai ít nhất 11 kiểu. Mấy Ông/bà KTT phải bằng mọi cách, dùng mọi kinh nghiệm đã có, kết hợp đủ các loại phương pháp để phát hiện mọi sai sót dù chỉ 1 đồng, và 1 đồng sai sót nằm ở đâu. Ấy là mỗi KTT chỉ có từ 1 chục đến 2 chục nhân viên. Hải tính lường hết cho vài ngàn kiểu sai của vài ngàn người à?
Hải tính lường hết cho vài ngàn kiểu sai của vài ngàn người à?
Theo mình cứ làm tròn từ 0 đến 2 số lẻ (tuỳ theo). Sau đó thế nào chẳng có chênh lệch tỷ giá, khi xử CLTG từng tờ hoá đơn, xử luôn cái số lẻ , xong chuyện.Lúc chuyển lại lại, tự nhiên sẽ thấy con số tiền nó cứ chênh đi 1 vài đồng. Đó là vấn đề mà mọi người sẽ đau đầu khi xử lý đa nguyên tệ
Vậy có phải Hai2hai vẫn dùng 1 field PaymentStatus không? nếu phải, thì cũng là mở rộng của field Finished từ 2 trạng thái lên 4 trạng thái, đúng không?Ví dụ: sử dụng method objInvoice.PaymentStatus(). Ở đó, sẽ thực hiện việc kiểm tra tổng tiền thanh toán so với tổng giá trị hóa đơn để biết được 1 trong 4 trạng thái thanh toán của hóa đơn: Đã thanh toán, chưa thanh toán, thanh toán 1 phần, thanh toán vượt. (Không chậm hơn so với việc lấy giá trị của trường Finished kia đâu mà lại có tính tức thời, ko phải cập nhật Finished khi sửa chứng từ).
Vậy có phải Hai2hai vẫn dùng 1 field PaymentStatus không? nếu phải, thì cũng là mở rộng của field Finished từ 2 trạng thái lên 4 trạng thái, đúng không?
Nói "đúng" cái đi mà!
hai2hai đã viết:Chứng từ trả lại hàng nhiều khi (trong thực tế) nó ko giống như chứng từ nhập/xuất hàng (hoặc hóa đơn mua/bán) đâu. Vì thế ko chung nhau trên cùng 1 chứng từ (để ghi âm) được. Nhiều khi có trên chứng từ trả lại hàng bán nhưng có thêm tiền phạt nữa, v.v....
Theo mình cứ làm tròn từ 0 đến 2 số lẻ (tuỳ theo). Sau đó thế nào chẳng có chênh lệch tỷ giá, khi xử CLTG từng tờ hoá đơn, xử luôn cái số lẻ , xong chuyện.
Trên các hóa đơn vẫn nên có trường "Giá trị quy đổi" (theo đồng tiền chính), điều này đúng cho cả trường hợp có phiếu thu, chi mà thanh toán trên nhiều ngoại tệ.
Hiểu rồi, nghĩa là không phải 1 trường cố định trong table dữ liệu, mà khi cần sẽ gọi ra bằng mã lệnh. Nếu method đó có cấu trúc như kiểu select case sẽ được nhiều trạng thái (4).Trong method đó, sẽ viết dạng như sau
Lấy tổng tiền hóa đơn (InvoiceID) - Tổng tiền thanh toán cho hóa đơn(InvoiceID)
Cái này chỉ 1 câu Select là ra thôi
Mình tưởng rằng khi xuất 1 hoá đơn ngoại tệ, thì đơn gía ngoại tệ phải có trước chứ? Hình dung trình tự nhập chi tiết hoá đơn như sau: (bỏ qua phần header thuộc dữ liệu master)Đơn giá tiền Việt là 20,000VNĐ
Đơn giá $ là 20,000 * 1 /tỷ giá
(vì lúc mình chuyển qua USD mình format nó thành ###0.00 mà). Vụ này trên Excel thì nó lưu cả phần lẻ nên ko sao. Trên PM, các ô textbox thì phải cắt đi chứ
Nói về sửa dữ liệu thì là hoặc sửa đơn giá (NT), hoặc sửa số lượng, sửa tỷ giá, sửa mã tiền tệ, thì thành tiền VND (cơ sở) ban đầu sẽ phải thay đổi chứ.Đang nghĩ kế để nó giữ nguyên các con số ban đầu. (vì lúc lưu vào Database thì lưu số tiền theo tiền cơ sở chứ có lưu tiền ngoại tệ đâu). Nếu ko nghĩ được cách thì đành mặc lẻ thôi
Quay lại chuyện số lẻ:
Mình tưởng rằng khi xuất 1 hoá đơn ngoại tệ, thì đơn gía ngoại tệ phải có trước chứ? Hình dung trình tự nhập chi tiết hoá đơn như sau: (bỏ qua phần header thuộc dữ liệu master)
- mã ItemID (chọn trong 1 list)
- mã tiền tệ CurrID (chọn trong 1 list)
- tỷ giá của loại tiền tệ đó, tự lookup từ ExchangeRateHistory, sửa tay lại nếu cần.
- Gõ Số lượng
- Gõ đơn giá ngoại tệ
- Thành tiền VND (based currency) tự tính bằng đgNT * Sl * tỷ giá
Nếu hoá đơn tiền việt cũng tương tự, tỷ giá = 1 hiện ra hoặc mờ đi do disable, thành tiền cũng tính tương tự với tỷ giá = 1
Đâu có cái vụ đơn giá 20.000VND, tính ra bao nhiêu tiền ngoại tệ? Chắc đang nói đến thành tiền ngoại tệ (do không được save vào data).
- Gõ đơn giá ngoại tệ --> Thông thường ở bán lẻ, giá bán được nhà quản lý thiết lập sẵn chứ ko cho nhân viên bán hàng sửa giá. Dĩ nhiên, vẫn cho phép sửa giá bán nếu user có quyền sửa.
- Thành tiền VND (based currency) tự tính bằng đgNT * Sl * tỷ giá
Sao thế? thể hiện trên textbox bị cắt đi là do format, lưu lại thế nào là do định nghĩa thuộc tính của trường có bao nhiêu số lẻ. Như trường number trong access và FoxPro có thuộc tính Decimal Place do mình thiết lập khi create table. (Data của ngôn ngữ khác thì không biết).
Nói về sửa dữ liệu thì là hoặc sửa đơn giá (NT), hoặc sửa số lượng, sửa tỷ giá, sửa mã tiền tệ, thì thành tiền VND (cơ sở) ban đầu sẽ phải thay đổi chứ.
Chỉ còn lại vấn đề khi thanh toán bằng các ngoại tệ khác, không phải loại NT trên hoá đơn, lúc này phải chấp nhận 1 mức độ sai số khi quy đổi các ngoại tệ thanh toán thành ngoại tệ ghi hoá đơn, qua trung gian tỷ giá đối với Based Currency (VND). Xem lại bài 16, các thao tác cần xử lý.
Trong mức độ cho phép đó thì hoá đơn đổi trạng thái. Còn tổng ngoại tệ thanh toán không có giá trị (vì 1: nhiều loại tiền tệ, 2: có sai số), chỉ có tổng thành tiền cơ sở (VND) có giá trị dùng để tính CL tỷ giá, lúc này xử luôn số lẻ nếu có của số chênh lệch hoá đơn giữa tổng tiền ghi hoá đơn và tổng tiền Thanh toán (tiền cơ sở, VND). Thế là chấm dứt 1 tờ hoá đơn. Mọi sửa chữa sau đó không cho phép sửa trực tiếp mà phải thực hiện bút toán điều chỉnh. Cada_fi cũng làm thế.
Hàm format sẽ làm tròn số luôn trước khi hiện lên textbox.
...
Nói tóm lại, cứ phải làm thì mới nhận ra điều đó.
Khi một trường đóng vai trò là trường số (kiểu Double), theo em nên làm thế này:
Trường đó có 2 property (mọi người hiểu như 2 biến thành viên) là
AsNumber : lưu số lẻ theo phép tính (nguyên bản)
AsText : lưu số sau khi đã format(...) (hình thức thể hiện trên form, không dùng để tính toán)
Như vậy khi cho tham gia vào biểu thức tính toán thì dùng AsNumber để làm, có thể kết hợp hàm Round(AsNumber,nRound) .
Mình không bị điều đó, vì xài Property Textbox.format chứ không dùng hàm format, tại Access và Fox không có hoặc không học tới, --> tầm mắt chỉ tới đó (hii)