Diễn đàn Hỏi & Đáp

Hỗ trợ triển khai Odoo với ERPOnline

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://www.erponline.vn/vi/discussions/l%C3%A0m-sao-%C4%91%E1%BB%83-hi%E1%BB%87n-tr%E1%BA%A1ng-th%C3%A1i-v%E1%BA%ADn-chuy%E1%BB%83n-%E1%BB%9F-ph%E1%BA%A7n-danh-s%C3%A1ch-c%E1%BB%A7a-%C4%91%C6%A1n-h%C3%A0ng#reply-2114
Mình xem rồi có gì hỏi típ.
:D:D:D:D

Câu trả lời được chấp thuận

Thứ tư, Tháng 10 26 2016, 01:10 PM - #permalink

Ở 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ả
The reply is currently minimized Hiện
Phản hồi (4)
  • Câu trả lời được chấp thuận

    Thứ tư, Tháng 10 26 2016, 12:50 PM - #permalink

    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
    The reply is currently minimized Hiện
  • Câu trả lời được chấp thuận

    Thứ tư, Tháng 10 26 2016, 02:24 PM - #permalink

    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:(

    • Lê Ngọc Ngân
      cách đây hơn tháng
      P/s: Được rùi bác ạ. Em điền sai trường.
      Thanks.
    The reply is currently minimized Hiện
  • Câu trả lời được chấp thuận

    Thứ tư, Tháng 10 26 2016, 02:49 PM - #permalink

    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:);)

    The reply is currently minimized Hiện
  • Câu trả lời được chấp thuận

    Thứ tư, Tháng 10 26 2016, 03:13 PM - #permalink

    Để 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)
    Thích
    • Lê Ngọc Ngân
      cách đây hơn tháng
      Cảm ơn bác mất công hướng dẫn.
    The reply is currently minimized Hiện
Phản hồi

Chuyên mục

Tag Cloud

ERPOnline được xây dựng & phát triển trên nền tảng phần mềm nguồn mở Odoo (tên cũ là OpenERP) cho phép các Tổ chức, Doanh nghiệp triển khai & ứng dụng phần mềm Hoạch định Nguồn lực Doanh nghiệp (ERP) và Quản lý Quan hệ Khách hàng (CRM) trực tuyến dưới hình thức SaaS (Software as a Service - Phần mềm kiểu Dịch vụ) với chi phí mà mọi tổ chức và doanh nghiệp đều chấp nhận được.

Liên hệ

Cty TNHH Tự động hóa Hàng hải T.V.T
#40, An Lạc 2, P. Sở Dầu, Q. Hồng Bàng
Hải Phòng
P: (031) 356 9178
F: (031) 356 9179
Hotline: 012 2222 1004
Kinh doanh This email address is being protected from spambots. You need JavaScript enabled to view it.
Thanh toán This email address is being protected from spambots. You need JavaScript enabled to view it. Hỗ trợ Kỹ thuật This email address is being protected from spambots. You need JavaScript enabled to view it.
Đầu trang