Chào các bác,
Trên form danh sách lệnh sản xuất, mình muốn đếm số lượng sản phẩm đã hoàn thành cho lệnh đó thì phải làm thế nào nhỉ? Mình đã tìm thử trong các field của Lệnh sản xuất không thấy có trường nào đếm cái đấy cả.
Có lẽ phải làm một cái count từ các line với kiểu là produced product. Nhưng mình xem trong model mrp.production.product.line thì cũng ko có trường nào để mình biết đó là produced product.
Các chuyên gia cho mình ý kiến về điều này nhé.
Xin cảm ơn.
Chúc các bác những ngày 30.4 chiến đấu :)
6 Trả lời
Thomas wrote:Nếu vậy thì bạn thay hàm len bằng hàm sum
Theo mình hiểu count số lượng mảng khác với sum (quantity) của stockmove. Ví dụ có 2 dòng produced product, mỗi dòng nhập 30 sp. Mình muốn hàm trả về 60 chứ ko phải 2.
self.produced_product_count = sum(x.product_uom_qty for x in self.move_created_ids2)
Thân ái!
Dear Thomas,
Thomas wrote:Để count trường move_created_ids2 bạn cần phải thêm một trường vào model mrp.production, ví dụ:
À mình đã tìm thấy trường chứa danh sách các Produced Product: move_created_ids2
Nhưng vẫn chưa biết count các sản phẩm này như nào?
produced_product_count = fields.Integer(string="Produced Products", compute=_count_produced_product, readonly=True)
Sau đó, định nghĩa hàm _count_produced_product như sau:
def _count_produced_product(self): self.produced_product_count = len(self.move_created_ids2)
Tuy nhiện, bạn cần lưu ý: một Lệnh sản xuất có thể có nhiều Produced Products (bao gồm Thành phẩm A và Sản phẩm phụ A'). Lúc này, con số trên danh sách Lệnh sản xuất sẽ là con số tổng của cả A + A'.
Còn về nhu cầu hiển thị thanh progress trên listview MO thì mình không tiện post lên đây vì nó tương đối lằng nhằng.
P/S: mỗi một Consumed Product, Finished Product chính là một Stock Move bạn nhé.
Thân ái!
Cảm ơn bác Leo đã trả lời,
Các dòng code trên là sửa file python hay là cấu hình ở trong setting bác nhỉ?
self.produced_product_count = len(self.move_created_ids2)
Hàm len là hàm nó nó tự sum cột quantity của cái stockmove phải không bác?
Mình chưa chọc vào code lần nào nên nếu hỏi ngu thì xin bác chỉ giáo nhá :).
Cảm ơn bác.
Bạn nên viết ra 1 module riêng và các dòng code này sẽ được viết vào file python của module của bạn.
Hàm len ở đây trả về số lượng phần tử của mảng. Như vậy move_created_ids2 có bao nhiêu phần tử (bản ghi) nó sẽ trả về bấy nhiêu, đồng nghĩa với việc bạn count ra số Produced Products ( số lượng bản ghi của move_created_ids2).
Dear Thomas,
Trên giao diện của một Lệnh sản xuất, bạn kích sang tab Finished Product sẽ nhìn thấy 2 list, một cái là Products to Produce (sản phầm còn lại cần sản xuất) và một cái là Produced Products (sản phẩm đã sản xuất xong). Cả 2 danh sách này đều có trường số lượng. Như vậy bạn hoàn toàn có thể biết được số lượng sản phẩm đã hoàn thành cũng như số lượng còn lại.
Thân ái!