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

Trợ giúp về trường tính toán.

Nhờ các bác bỏ chút thời gian giúp em khai báo cho trường tính toán (computed field) ở V.10 một chút ạ:

model: product.product
field1: So_luong (kiểu dữ liệu: float)
field2: Khoi_luong_rieng ( kiểu dữ liệu: float).
>>>>> computed field: Khoi_luong = Khoi_luong_rieng x So_luong.

Cảm ơn rất nhìu!!!
Sorry, mình có xem lại topic trước thì được dẫn qua đây:

https://erponline.vn/vi/forum/hoi-dap-7/lam-sao-de-hien-trang-thai-van-chuyen-o-phan-danh-sach-cua-don-hang-2031


Mình xem rồi có gì hỏi típ.
:D :D :D :D

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

Ở chỗ Phụ thuộc, bác điền giúp em giá trị: khoi_luong_rieng,so_luong
Ở chỗ Tính toán, bác paste đoạn mã sau vào

for rec in self:
    rec['khoi_luong'] = rec.khoi_luong_rieng * rec.so_luong

Bác thử rồi cho em biết kết quả
Ảnh đại diện
Huỷ bỏ
0
Ảnh đại diện
Trần Ngọc Tuấn
Best Answer

Để tính toán Field _1 của Model_A dựa trên Field_2 của Model_B thì điều kiện cần có ít nhất như sau:

  1. Model_A phải chứa một trường quan hệ đến Model_B. Ví dụ, trong Model_A có một trường model_b_id quan hệ Many2one đến Model_B

Giả sử Field_1 của Model_A đc tính bằng 2 lần Field_2 của Model_B thì công thức tổng quát như sau

Field_1 = 2*model_b_id.Field_2



Trong trường hợp cụ thể của bác, bác cần tổ chức đúng đã. Ví dụ, không thể tính toán khối lượng của sản phẩm ở trên form sản phẩm theo kiểu lấy số lượng nhân khối lượng riêng được. Vì số lượng nó thay đổi theo ngữ cảnh (phiếu xuất nhập, đơn hàng, lệnh sản xuất, v.v.). Khối lượng được tính toán đối với sản phẩm A nó sẽ phải nằm ở ngữ cảnh cụ thể, ví dụ stock.picking, sale.order, v.v.

Hay cụ thể hơn nữa, nếu Khối lượng cần tính toán (KLTT) là một trường được tính = khối lượng riêng * số lượng thì trường KLTT phải được đặt ở ngữ cảnh khác ngữ cảnh sản phẩm còn khối lượng riêng thì đặt ở sản phẩm (trường này mặc định Odoo có rồi). Ví dụ, đặt ở sale.order.line và cho hiện thị tổng khối lượng từng dòng trên sale.order. Cụ thể trường hợp này có thể làm như sau:

Thêm trường weight vào sale.order.line. Trường này kiểu tính toán, có giá trị tính như sau

for r in self
    r['weight'] = r.product_id.weight * r.product_uom_qty # lấy khối lượng của sản phẩm thuộc dòng nhân với số lượng khai báo trên dòng


r.product_id.weight <<== đây chính là lấy giá trị ở đối tượng product.product để tính toán cho field ở đối tượng sale.order.line

Khai báo phụ thuộc thì sẽ khai báo là: product_id.weight

Dĩ nhiên đây chỉ là minh hoạ, cụ thể thực tế còn cần xem xét thêm yếu tố chuyển đổi đơn vị, ví dụ có sản phẩm thì dùng tấn, có sp khác lại dùng kg.


EDIT:

Bài tham khảo dưới đây cũng là tính toán giá trị "xuyên" từ đối tượng khác sang (trường tính toán ở sale.order nhưng trường phụ thuộc lại nằm ở sale.order.line)

https://erponline.vn/vi/forum/hoi-dap-7/lam-sao-de-hien-trang-thai-van-chuyen-o-phan-danh-sach-cua-don-hang-2031

1 Bình luận
Ảnh đại diện
Huỷ bỏ
Ảnh đại diện
ViindooBot
-

Cảm ơn bác mất công hướng dẫn.

0
Best Answer

Cho mình hỏi thêm một vấn đề liên quan nữa, mình muốn lấy trường phụ thuộc nằm trong một đối tượng khác để tham gia vào tính toán thì làm sao ạ.

Khối lượng cần tính toán thì nằm ở sản phẩm: product.template.
Khối lượng riêng khai báo theo sản phẩm: product.template
Số lượng để tham gia tính toán lại nằm ở tồn kho: stock.quant

:D :) ;)

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

Kết quả là có tính toán bác ah. Nhưng cho tính toán sai.
1. Trong các bản ghi mà các trường trên đã có dữ liệu rồi, chỉ cần thay đổi thử một trường (khoi_luong_rieng hoặc so_luong) thì kết quả tính toán sẽ đưa về khoi_luong bằng 0.
2. Trong các bản ghi chưa có dữ liệu, nhập dữ liệu đầu vào cho so_luong và khoi_luong_rieng thì khối lượng cũng vẫn như khi chưa nhập dữ liệu, nghĩa là vẫn bằng 0.
:D :o :(

1 Bình luận
Ảnh đại diện
Huỷ bỏ
Ảnh đại diện
ViindooBot
-

P/s: Được rùi bác ạ. Em điền sai trường.
Thanks.

0
Best Answer

Em làm theo các bác, tạo thế này (và biết là chắc chắn không được), các bác sửa hộ em nhé:

Phụ thuộc: so_luong, khoi_luong_rieng
Tính toán:

for record in self:
        khoi_luong = khoi_luong_rieng * so_luong
    record['khoi_luong'] = khoi_luong
Ả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.