Hỏi Đáp

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

Relationship giữa Employee và User/Partner

Ảnh đại diện
Phạm Quang Lân

Chào các bạn,
Mình muốn hỏi về quan hệ table (hoặc model) giữa Employee và User hoặc Partner, nhìn trên table thì không thấy mối liên kết. Bạn nào biết thì chỉ mình với! Xin cảm ơn!

Ảnh đại diện
Huỷ bỏ
3 Trả lời
0
Ảnh đại diện
Trần Ngọc Tuấn
Best Answer

OK. Vậy thì đúng là bạn chưa cần quan tâm đến quan hệ giữa các bảng mà chỉ cần quan tâm đến quan hệ giữa các model sau:

  1. hr.employee: có trường user_id để gắn employee với một user, và có trường address_home_id gắn với một partner
  2. res.users: có trường partner_id để gắn user với một partner.
  3. res.partner: công nợ trong Odoo được tính toán cho partner nên chỗ này rất quan trọng
  4. hr.payslip: phiếu lương có trường employee_id để thể hiện đây là phiếu lương của nhân viên nào
  5. sale.order: có trường user_id để thể hiện đơn hàng này do ai phụ trách.
Đầu tiên, bạn phải tạo employee có trường address_home_id trùng với partner_id của res.user <== cực kỳ quan trọng, nếu lệch thì sau này công nợ với nhân viên sẽ loạn hết lên.

Cách tính lương theo doanh số thì cơ bản phải như sau:
  1. Lấy ra được doanh số của nhân viên trong khoảng thời gian của phiếu lương (giữa 2 giá trị date_from và date_to của phiếu lương) và load thành một dòng ở chỗ Dữ liệu nhập ngoài khác.
  2. Hoặc có thể làm hẳn một table mới để load nó vào. Vì có thể bạn sẽ cần nhiều dòng để phục vụ cho salary rules: doanh thu đã xác nhận; doanh thu đã hoàn thành; doanh thu bị huỷ; v.v.
  3. Làm một salary rule để tự động tính số tiền để thanh toán cho người lao động dựa trên cái doanh số đã có trên phiếu lương.
Hoạt động: khi chọn/đổi nhân viên thì phải load lại cái doanh số kia; khi thay đổi date_from và date_to trên phiếu lương cũng phải tính lại và load lại.

P/s: Bạn không cần phải viết một câu SQL nào cho nghiệp vụ trên. Hãy dùng các phương thức search, read, browse của self.env['ten_model'], code sẽ ngắn hơn và không sợ lỗi logic hay sót như khi viết SQL
Ảnh đại diện
Huỷ bỏ
0
Ảnh đại diện
Phạm Quang Lân
Best Answer

Dĩ nhiên là có nhưng mình chưa nhìn ra thôi. :)
Hiện mình đang làm phần tính commission cho salesman dựa trên doanh số tháng. Mình cần phải lấy doanh số của user đẩy vào payslip của Employee tương ứng nên cần quan hệ này để lần ra Employee.

Ảnh đại diện
Huỷ bỏ
0
Ảnh đại diện
Trần Ngọc Tuấn
Best Answer

Bạn nhìn kỹ lại đi, có đấy. Nhưng bạn chưa vội quan tâm quan hệ các table nếu bạn không định làm các báo cáo tổng hợp và lấy dữ liệu trực tiếp từ SQL. Hãy quan tâm quan hệ theo hướng model thì dễ hơn.

Ảnh đại diện
Huỷ bỏ

Trả lời của Bạn

Vui lòng đảm bảo câu trả lời của bạn có liên quan và giải đáp đúng nội dung câu hỏi. Nếu muốn bình luận về câu hỏi hoặc câu trả lời, hãy sử dụng công cụ Bình luận. Lưu ý, bạn có thể thay đổi nội dung trả lời thay vì trả lời lại 02 lần cho cùng một câu hỏi. Đồng thời bạn có thể nhấn nút để bầu chọn câu hỏi / câu trả lời tốt nhất.