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.

1

Lỗi khi cài đặt modul "Chấm công"

Mình gặp lỗi sau khi cài đặt modul chấm công.
Mình dùng tài khoản quản trị để cài đặt.
Nhờ các bạn giúp đỡ.
Thanks!

Odoo
Odoo Server Error
Traceback (most recent call last):
  File "/opt/openerp/80/openerp/http.py", line 524, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/openerp/80/openerp/http.py", line 545, in dispatch
    result = self._call_function(**self.params)
  File "/opt/openerp/80/openerp/http.py", line 301, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/openerp/80/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/openerp/80/openerp/http.py", line 298, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/openerp/80/openerp/http.py", line 761, in __call__
    return self.method(*args, **kw)
  File "/opt/openerp/80/openerp/http.py", line 394, in response_wrap
    response = f(*args, **kw)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/web/controllers/main.py", line 953, in call_button
    action = self._call_kw(model, method, args, {})
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/web/controllers/main.py", line 941, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/module/module.py", line 450, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/module/module.py", line 498, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/opt/openerp/80/openerp/modules/registry.py", line 346, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/openerp/80/openerp/modules/loading.py", line 363, in load_modules
    loaded_modules, update_module)
  File "/opt/openerp/80/openerp/modules/loading.py", line 263, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/openerp/80/openerp/modules/loading.py", line 182, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='data')
  File "/opt/openerp/80/openerp/modules/loading.py", line 118, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/opt/openerp/80/openerp/tools/convert.py", line 901, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/opt/openerp/80/openerp/tools/convert.py", line 987, in convert_xml_import
    obj.parse(doc.getroot(), mode=mode)
  File "/opt/openerp/80/openerp/tools/convert.py", line 853, in parse
    self._tags[rec.tag](self.cr, rec, n, mode=mode)
  File "/opt/openerp/80/openerp/tools/convert.py", line 763, in _tag_record
    id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/ir/ir_model.py", line 1067, in _update
    res_id = model_obj.create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/product/product.py", line 1134, in create
    return super(product_product, self).create(cr, uid, vals, context=ctx)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/mail/mail_thread.py", line 377, in create
    thread_id = super(mail_thread, self).create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 332, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4007, in create
    record = self.browse(self._create(old_vals))
  File "/opt/openerp/80/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 464, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4063, in _create
    record_id = self.pool[table].create(cr, user, tocreate[table], context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/product/product.py", line 710, in create
    product_template_id = super(product_template, self).create(cr, uid, vals, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/mail/mail_thread.py", line 377, in create
    thread_id = super(mail_thread, self).create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 332, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4007, in create
    record = self.browse(self._create(old_vals))
  File "/opt/openerp/80/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 464, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4145, in _create
    tuple([u[2] for u in updates if len(u) > 2])
  File "/opt/openerp/80/openerp/sql_db.py", line 158, in wrapper
    return f(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/sql_db.py", line 234, in execute
    res = self._obj.execute(query, params)
ParseError: "null value in column "name" violates not-null constraint
DETAIL:  Failing row contains (1114, null, null, 1.0, null, 0, null, 1, fixed, 1, null, 2015-01-21 04:12:28.186431, 1.0, 1, f, null, null, 1, null, 1, consu, null, null, null, 2015-01-21 04:12:28.186431, t, 1, t, null, null, null, null, null, null, f, 7, f, f, null, t, null, null, no-message, no-message).
" while parsing /home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/hr_timesheet/hr_timesheet_data.xml:15, near
<record id="product.product_product_consultant" model="product.product">
            <field name="sale_ok">True</field>
        </record>
Ảnh đại diện
Huỷ bỏ
12 Trả lời
2
Best Answer

Báo cáo tình hình nhé.
1. Thiết lập: External Identifier: product_product_consultant
Do trong hệ thống đã có cái External Identifier: product_product_consultant này rùi nên không cho tạo mới một bản ghi có cùng ID, mình chỉnh sửa bản ghi có sẵn này, với Record ID ban đầu của nó là 1, nay mình sửa thành 1118 (là ID của Service mình mới lập)
2. Tạo mới: External Identifier: product_product_consultant_product_template (ok)
3. Tiến hành cài đặt và kết quả là

Odoo
Odoo Server Error
Traceback (most recent call last):
  File "/opt/openerp/80/openerp/http.py", line 524, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/openerp/80/openerp/http.py", line 545, in dispatch
    result = self._call_function(**self.params)
  File "/opt/openerp/80/openerp/http.py", line 301, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/openerp/80/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/openerp/80/openerp/http.py", line 298, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/openerp/80/openerp/http.py", line 761, in __call__
    return self.method(*args, **kw)
  File "/opt/openerp/80/openerp/http.py", line 394, in response_wrap
    response = f(*args, **kw)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/web/controllers/main.py", line 953, in call_button
    action = self._call_kw(model, method, args, {})
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/web/controllers/main.py", line 941, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/module/module.py", line 450, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/module/module.py", line 498, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/opt/openerp/80/openerp/modules/registry.py", line 346, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/openerp/80/openerp/modules/loading.py", line 363, in load_modules
    loaded_modules, update_module)
  File "/opt/openerp/80/openerp/modules/loading.py", line 263, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/openerp/80/openerp/modules/loading.py", line 182, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='data')
  File "/opt/openerp/80/openerp/modules/loading.py", line 118, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/opt/openerp/80/openerp/tools/convert.py", line 901, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/opt/openerp/80/openerp/tools/convert.py", line 987, in convert_xml_import
    obj.parse(doc.getroot(), mode=mode)
  File "/opt/openerp/80/openerp/tools/convert.py", line 853, in parse
    self._tags[rec.tag](self.cr, rec, n, mode=mode)
  File "/opt/openerp/80/openerp/tools/convert.py", line 763, in _tag_record
    id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/addons/base/ir/ir_model.py", line 1067, in _update
    res_id = model_obj.create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/product/product.py", line 1134, in create
    return super(product_product, self).create(cr, uid, vals, context=ctx)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/mail/mail_thread.py", line 377, in create
    thread_id = super(mail_thread, self).create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 332, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4007, in create
    record = self.browse(self._create(old_vals))
  File "/opt/openerp/80/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 464, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4063, in _create
    record_id = self.pool[table].create(cr, user, tocreate[table], context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/product/product.py", line 710, in create
    product_template_id = super(product_template, self).create(cr, uid, vals, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/mail/mail_thread.py", line 377, in create
    thread_id = super(mail_thread, self).create(cr, uid, values, context=context)
  File "/opt/openerp/80/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 332, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4007, in create
    record = self.browse(self._create(old_vals))
  File "/opt/openerp/80/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/api.py", line 464, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/opt/openerp/80/openerp/models.py", line 4145, in _create
    tuple([u[2] for u in updates if len(u) > 2])
  File "/opt/openerp/80/openerp/sql_db.py", line 158, in wrapper
    return f(self, *args, **kwargs)
  File "/opt/openerp/80/openerp/sql_db.py", line 234, in execute
    res = self._obj.execute(query, params)
ParseError: "null value in column "name" violates not-null constraint
DETAIL:  Failing row contains (1121, null, null, 1.0, null, 0, null, 1, fixed, 1, null, 2015-01-22 09:56:44.389387, 1.0, 1, f, null, null, 1, null, 1, consu, null, null, null, 2015-01-22 09:56:44.389387, t, 1, t, null, null, null, null, null, null, f, 7, f, f, null, t, null, null, no-message, no-message).
" while parsing /home/nmytz6hzufgbjkekmcvk7pxt7olcifj1/addons/hr_timesheet/hr_timesheet_data.xml:15, near
            True

Screenshot

Screenshot

Screenshot

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

Báo cáo là đã cài đặt thành công. Có một số kết luận như sau:
1. Sản phẩm Service mình tạo ra, một lúc sẽ tự động thành sản phẩm Dịch vụ (tự đông dịch sao đó). Dù có sửa lại rối sau đó cũng bị tự động dịch.
2. Mình tạo mới một sản phẩm Service mới và lấy ID của sản phẩm mới này thì cài đặt được.
3. Đúng là phải lấy 2 ID, 1 của Sản phẩm và 1 của Biến thể SP.
Thanks for support.!!!

1 Bình luận
Ảnh đại diện
Huỷ bỏ
Ảnh đại diện
Trần Ngọc Tuấn
-

Em theo dõi topic này mấy hôm nay và đã đoán là bác không làm được vì việc này thực sự khó với người mới bắt đầu.
Chúc mừng bác :D

1
Ảnh đại diện
Leo Tran
Best Answer

Như vậy là anh đã xóa sản phẩm này đi rồi. Bây giờ em sẽ hướng dẫn anh cách khắc phục lỗi này theo các bước như sau:

  1. Truy cập vào menu Bán hàng > Sản phẩm > Sản phẩm và tạo một sản phẩm có tên "Dịch vụ".
  2. Ghi nhớ ID của sản phẩm bằng cách: sau khi tạo xong sản phẩm, anh nhìn lên thanh địa chỉ trình duyệt, ví dụ "http://thuongmai.demo.erponline.vn/web?#id=47&view_type=form&model=product.template&menu_id=113&action=114". Trong ví dụ này, ID của sản phẩm anh vừa tạo là 47.
  3. Truy cập vào menu Thiết lập > Kỹ thuật > Sequences & Identifiers > External Identifiers và tạo mới bản ghi với thông tin như sau:
  4. - Mô đun: product - External Identifier: product_product_consultant - Tên mô hình: product.product - Record ID: ID mà anh vừa tìm được ở bước 2.
  5. Vẫn tại menu External Identifiers, tạo tiếp một bản ghi với thông tin như sau:
  6. - Mô đun: product - External Identifier: product_product_consultant_product_template - Tên mô hình: product.template - Record ID: ID mà anh vừa tìm được ở bước 2.
Sau khi tạo xong 2 bản ghi như trên, anh có thể cài đặt phân hệ Chấm công một cách bình thường.

Chúc anh thành công!
Ảnh đại diện
Huỷ bỏ
1
Ảnh đại diện
Leo Tran
Best Answer

Hi anh Ngân,

Mặc định phần mềm có một Sản phẩm có tên là Service (Dịch vụ). Khi anh cài phân hệ Chấm công, hệ thống sẽ sử dụng sản phẩm này để liên kết đến một Nhân viên (Employee). Trong trường hợp lỗi này xảy ra, anh thử kiểm tra xem trong hệ thống của anh còn sản phẩm Service mặc định hay không? Từ đó em mới xác định được thực sự lỗi nằm ở đâu và sẽ hướng dẫn anh cách để khắc phục.

Thân ái!

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

Cảm ơn Leo Tran. Khi mình cài "Chấm công" thấy báo lỗi vậy, nhưng sau một hồi dỗi bỏ đi, vào mở lại thì báo đã cài đặt (Hic!).
Cái sản phẩm "Service" mặc dù là không có, nhưng mình cũng thử tạo một sản phẩm như vậy và làm theo hướng dẫn của Leo Tran nhưng cái External Identifier với giá trị: "product_product_consultant" đã tồn tại nên nó không cho lưu lại.(đính kèm).
Vấn đề bây giờ của mình sau khi cài đặt được chấm công rồi là không biết vào đâu để chấm công cho toàn bộ nhân viên. Không thấy cái menu hay cái form chấm công nào cả.
Không biết gì nên cứ hỏi quanh quanh, mong các bác hết sức bình tĩnh để trả lời nhé.
Thanks!

Screenshot

Screenshot

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

Hi anh Ngân,

Trường hợp này anh check giúp em các thông tin như sau:

  • Truy cập vào menu Thiết lập, tìm đến phân hệ Chấm công và xem cái nút ở bên dưới của phân hệ là nút gì? "Cài đặt", "Đã cài đặt" hay không hiển thị nút gì?
  • Nếu là "Đã cài đặt" thì anh truy cập vào form phân hệ Chấm công và kích sang tab "Tính năng được cài đặt" và kiểm tra xem Trình đơn (menu) được tạo là những trình đơn nào?. (Xem ví dụ đính kèm)

Rất có thể anh đã gặp lỗi trong quá trình cài đặt phân hệ Chấm công, nên em cần xác minh những thông tin trên.


Thân ái!

chamcong

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

Hix. Có vẻ lỗi cài đặt ạ.
Vậy giờ làm sao để cài đặt nhỉ. Giải pháp sản phẩm "Service" thì không được.

Screenshot

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

Hi anh Ngân,

Anh lưu ý, trong phần mềm Sản phẩm và Biến thể sản phẩm được quản lý tại 2 menu khác nhau, tương đương với 2 đối tượng khác nhau. Cụ thể như sau:

  • Đầu tiên khi anh tạo Sản phẩm có tên Service (ID 1118) hệ thống sẽ tạo một Biến thể sản phẩm tương ứng, tuy nhiên ID hoàn toàn độc lập với ID 1118 mà anh vừa tạo, theo kinh nghiệm của em thường ID sẽ nhỏ hơn con số 1118 này.
  • Thế nên anh cần truy cập menu Bán hàng > Sản phẩm > Biến thể sản phẩm, tìm đến sản phẩm có tên Service mà anh vừa tạo, xem ID của nó là bao nhiêu? và sửa lại Record ID của External Identifier "product_product_consultant" thành ID mà anh vừa tìm đc.
  • External Identifier "product_product_consultant_product_template" mà anh tạo mới thì OK rồi.
  • Cuối cùng anh tiến hành "Hủy bỏ cài đặt" phân hệ Chấm công và lại "Cài đặt lại".
Tóm lại ở đây anh sẽ có 2 ID, 1 cái là 1118 của "product_product_consultant_product_template" và 1 cái của "product_product_consultant". 2 ID này thường là không giống nhau.

Một lần nữa, chúc anh thành công!
Ảnh đại diện
Huỷ bỏ
0
Ảnh đại diện
Leo Tran
Best Answer

OK anh, anh thử làm vậy đi, tuy nhiên trường hợp này, khả năng lớn là anh sẽ không còn External Identifier là "product_product_consultant" trong hệ thống. Nếu anh search mà không có External Identifier ấy thì anh cứ tạo mới như em hướng dẫn ở trên là được anh à

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

Vẫn báo lỗi trên đấy.
Hay là mình vào Thiết lập > Kỹ thuật > Sequences & Identifiers > External Identifiers và tìm đến bản ghi có tạo mới bản ghi có External Identifier: product_product_consultant và chỉnh sửa lại Record ID của Sản phẩm "Service" mới lập theo hướng dẫn nhỉ.
Liệu làm vậy có ảnh hưởng gì không?
- Mô đun: product
- External Identifier: product_product_consultant
- Tên mô hình: product.product
- Record ID: ID mà anh vừa tìm được ở bước 2.

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

Anh thử kích vào nút "Hủy bỏ cài đặt" và "Cài đặt" lại xem còn lỗi không anh?

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

Mình đã kiểm tra và không có sản phẩm nào có tên Service ạ.

Ả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.