Em chào các anh!!!
Hiện tại em đang tụ tìm hiểu về report trong OpenrERP và có nhiều điều chưa hiểu rõ như cách hoạt động của nó, tạo đối tượng cho nó…nên em rất mong nhận được sự hướng dẫn của các anh. Em có làm một cái report nhỏ nhưng có vẻ như em đang hiểu sai vấn đề nên nó không hoạt động theo ý muốn, vì thể em rất mong được các anh chia sẻ đôi chút về vấn đề này. Em cảm ơn các anh.:)
14 Trả lời
Em chào các anh!!!
Hiện tại em đang tụ tìm hiểu về report trong OpenrERP và có nhiều điều chưa hiểu rõ như cách hoạt động của nó, tạo đối tượng cho nó…nên em rất mong nhận được sự hướng dẫn của các anh. Em có làm một cái report nhỏ nhưng có vẻ như em đang hiểu sai vấn đề nên nó không hoạt động theo ý muốn, vì thể em rất mong được các anh chia sẻ đôi chút về vấn đề này. Em cảm ơn các anh.:)
Theo mình, nếu bạn thực sự chưa hiểu rõ cách hoạt động của OpenERP thì bạn nên tìm hiểu cách tổ chức và viết một module trước, rồi hãy bắt tay vào thiết kế report.
Thân ái!
Chào mọi người, mình là một người mới tìm hiểu về Report cho OpenERP bản 7, mong mọi người có thể giúp đỡ mình vấn đề này:
Mình đã làm theo hướng dẫn như trên, cụ thể như sau
1. Vào OpenOffice tạo một report là Account List để liệt kê danh sách các Tài khoản
2. Convert report đó ra file .rml
3. tạo folder exam và các file như ở trên với cấu trúc file như trên.
4. Vào admin, vào Setting –> Update Modules List –> Ấn Update
5. Vào Setting –> Installed Modules và search từ exam để show ra module đó, và click install, nhưng nó báo lỗi : Error occurred while validating the field(s) arch: Invalid XML for View Architecture!
5. Restart lại service OpenERP và vào admin –> Accounting –> Configuration –> Account, chọn 1 hàng và ấn nút print thì kết quả vẫn là report cũ không thay đổi theo nội dung file .rml
Vấn đề của mình là làm sao để report sau khi tạo ra có thể thay đổi theo file .rml đã convert được dù đó là report tạo ra từ module hay tạo ra từ OpenOffice.
Rất mong nhận được sự giúp đỡ của mọi người.
Dưới đây là file đính kèm module exam của mình và hình chụp của report tạo ra từ OpenOffice trong admin của OpenERP.
@Dũng,
Em nên biết report là một phần của module, do đó trước tiên em cần biết cấu trúc của một module. Cái này nếu em chưa biết, em có thể tạo một topic khác, bọn anh sẽ trao đổi cụ thể với em về cấu trúc và cách viết một module trong OpenERP. Trong trường hợp này, anh giả thiết là em đã biết cấu trúc của một module và module đó có tên là exam.
Có 2 cách để viết custom report trong OpenERP: RML report và webkit report. Anh sẽ hướng dẫn em sử dụng RML cho dễ.
Để tạo ra file RML trước tiên em phải cài open-office. Sau khi đã cài xong open-office em thực hiện theo các bước sau:
Bước 1: Cài plugin openerp_report_designer.zip bằng cách vào chính trong hệ thống OpenERP của em, search module base report designer, kích vào install, nó sẽ hiện ra một form, trên form đó có hướng dẫn chi tiết các cài plugin này vào open-office
Bước 2: Mở open-office, tạo mới report, add một cái loop (chọn database), add một loop vào một cái repeat, sau đó thêm trướng cần hiển thị trong báo cáo. Tùy chỉnh nó như chỉnh file word thông thường. Sau đó lưu lại dưới dạng file .sxw hoặc send to the server.
Bước 3: Convert .sxw thành rml bằng cách vào run gõ cmd, cd tới base-report-designer/openerp_sxw2rml. Sau đó chạy đoạn code sau
python openerp_sxw2rml.py ../../exam/report/.sxw > ../../exam/report/.rml
Bước 4: Trong thư mực report của module exam thêm 2 file examp.py và __init__.py, chèn đoạn code sau vào file examp.py:
import time from report import report_sxw class exam(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(exam, self).__init__(cr, uid, name, context) self.localcontext.update({ 'time': time, }) report_sxw.report_sxw('report.exam.student', 'exam.student', 'addons/exam/report/exam.rml', parser=exam, header=True)
Chèn đoạn code sau vào file __init__.py:
import exam
Bước 5: Trong thư mục exam, thêm file exam_report.xml với nội dung như sau:
xem đính kèm
Sau đó vào file __openerp__.py, trong đoạn code update xml thêm đoạn code sau:
'exam_report.xml'
File __init__.py (nằm trong thư mục exam, khác với file __init__.py trong thư mục report) thêm đoạn code sau
import report
@ngotuyetmai: bạn đang gặp 2 vấn đề như sau:
1. Invalid XML for View Architecture!: lỗi này là do file exam_report.xml của bạn sai định dạng, cụ thể là thẻ record của bạn không có thẻ đóng.
2. Về vấn đề report: Bạn nên xem tìm hiểu kỹ cách tạo report trong openerp. Ở đây bạn phải hiểu, để sửa một report đã có sẵn, cách làm dễ dàng nhất là dùng OpenOffice mở file report đó ra và edit, sau đó send to server. Trong trường bạn "chọn 1 hàng và ấn nút print" thì đương nhiên nó vẫn gọi đến report cũ. Bạn mới chỉ định nghĩa một report mới, chứ chưa chi ra cho OpenERP biết là kích vào nút nào (menu, wizard nào) để gọi đến report mới đó.
Hy vọng giúp được bạn!
Vâng, mình cảm ơn bạn. Thế nếu mình muốn sửa về style cho report, ví dụ như cho gạch dưới tên trường, hoặc cho chữ bôi đậm thì mình có thể làm như thế nào trên OpenOffice ạ.
Mình đã làm report trên Office và thấy chỉ có thuộc tính font chữ. bảng, border của table ( chỉ có 1 border bao lấy bảng ) là được giữ lại trên file PDF
Còn các thuộc tính khác của chữ, bảng đều không nhận được.
Một lần nữa cảm ơn bạn :)
Thanks bạn nhiều, nhưng mình tạo những soạn thảo thông thường đó trên OpenOffice 4 cũng như vậy và save vào, nhưng khi in ra báo cáo trong OpenERP thì nó toàn bị mất hết các thuộc tính đó.
Mình cũng có xem các báo cáo có sẵn, họ có style layout riêng cho chúng trong file .rml và trên file edit OpenOffice nó chỉ là các section bao quanh và các thuộc tính trên, mình không biết có lỗi ở bước nào không, mong bạn chỉ giúp mình :)
Em chào mọi người. Ý em hình như khác với các anh thì phải, em chưa viết phần print ra report mà em đang viết chức năng report thôi ạ, như trong phần purchase đó, nó tạo bảng rồi select rồi group để có thể thể hiện lên trên form, rồi thể hiện dạng biểu đồ thôi chứ em chưa xuất ra file đâu ạ. Phần đấy em chưa làm được đâu :)