Skip to Content
Menu
This question has been flagged
2 Replies
2179 Rodiniai

hallo everyone,

I want to ask, here I made a custom module containing buttons for salary transactions, I made the module local, well after I installed it to the odoo on the server when pressing the post button there was an error like that, I don't know how to fix it because local runs smoothly but on the server on the contrary an error occurs. Please help.


Portretas
Atmesti
Best Answer

Hi,
The error may be coming from this line of code:   self.env.ref('bsd.posting.xml_id').id

Is this xml id is a valid one ? It should me in the format: module_name.record_id

See:  How To Find External ID Of Records in Odoo



Thanks

Portretas
Atmesti
Autorius

it doesn't work:
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "C:\Program Files\Odoo\server\odoo\tools\cache.py", line 85, in lookup
r = d[key]
File "<decorator-gen-8>", line 2, in __getitem__
File "C:\Program Files\Odoo\server\odoo\tools\func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "C:\Program Files\Odoo\server\odoo\tools\lru.py", line 34, in __getitem__
a = self.d[obj]
KeyError: ('ir.model.data', <function IrModelData._xmlid_lookup at 0x00000264225DDAB0>, 'bsd.posting.record_id')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Program Files\Odoo\server\odoo\http.py", line 1589, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "C:\Program Files\Odoo\server\odoo\service\model.py", line 133, in retrying
result = func()
File "C:\Program Files\Odoo\server\odoo\http.py", line 1616, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "C:\Program Files\Odoo\server\odoo\http.py", line 1820, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "C:\Program Files\Odoo\server\odoo\addons\base\models\ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "C:\Program Files\Odoo\server\odoo\http.py", line 697, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "C:\Program Files\Odoo\server\odoo\addons\web\controllers\dataset.py", line 46, in call_button
action = self._call_kw(model, method, args, kwargs)
File "C:\Program Files\Odoo\server\odoo\addons\web\controllers\dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "C:\Program Files\Odoo\server\odoo\api.py", line 466, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "C:\Program Files\Odoo\server\odoo\api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "C:\Program Files\Odoo\server\odoo\addons\bsd_payroll\models\models.py", line 57, in action_schedule_posting
'model_id': self.env.ref('bsd.posting.record_id').id,
File "C:\Program Files\Odoo\server\odoo\api.py", line 587, in ref
res_model, res_id = self['ir.model.data']._xmlid_to_res_model_res_id(
File "C:\Program Files\Odoo\server\odoo\addons\base\models\ir_model.py", line 2042, in _xmlid_to_res_model_res_id
return self._xmlid_lookup(xmlid)[1:3]
File "<decorator-gen-42>", line 2, in _xmlid_lookup
File "C:\Program Files\Odoo\server\odoo\tools\cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "C:\Program Files\Odoo\server\odoo\addons\base\models\ir_model.py", line 2035, in _xmlid_lookup
raise ValueError('External ID not found in the system: %s' % xmlid)
ValueError: External ID not found in the system: bsd.posting.record_id

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
at makeErrorFromResponse (http://localhost:8069/web/assets/793-5234a71/web.assets_backend.min.js:994:163)
at XMLHttpRequest.<anonymous> (http://localhost:8069/web/assets/793-5234a71/web.assets_backend.min.js:1002:13)

How you take this external id: bsd.posting.record_id ?

Best Answer

Hello Arif,

Please use module_name.xml_id in your code. Also, check you included your XML file in manifest.py. If you still face the issue, please share the complete error message.

Thanks.

Portretas
Atmesti
Autorius

module_name.xml_id means like this bsd_payroll.bsd_payroll.xml_id ?

Yes. module_name is the name of your module and xml_id is the view/action id. In your case, it should be bsd_payroll.bsd_payroll.

Autorius

I'm still confused, can you give a more detailed example
here is my code:
class BSDPosting(models.Model):
_name = 'bsd.posting'
_description = 'BSD Posting'

nama = fields.Char(string='Nama Transaksi', required=True)
date_from = fields.Date(string='Date From', required=True)
date_to = fields.Date(string='Date To', required=True)
posting_date = fields.Datetime(required=True, string='Waktu Mulai')

def action_schedule_posting(self):
# Menjadwalkan proses posting untuk besok menggunakan mekanisme cron Odoo
posting_date = self.posting_date
code_model = "env['bsd_payroll.bsd_payroll'].action_posting_gaji()"
self.env['ir.cron'].sudo().create({
'name': 'Posting Take Home Pay',
'model_id': self.env.ref('bsd.posting.xml_id').id,
'state': 'code',
'code': code_model,
'nextcall': posting_date,
'interval_type': 'days',
'numbercall': 1, # Hanya sekali
'active': True,
})
and here is my view:
<record id="bsd_posting_view_form" model="ir.ui.view">
<field name="name">bsd_posting.view.form</field>
<field name="model">bsd.posting</field>
<field name="arch" type="xml">
<form string="Posting Setoran">
<header>
<button string="Posting Gaji" name="action_schedule_posting" type="object" class="oe_highlight"/>
<button string="Posting Uang Makan" name="action_post_weekly" type="object" class="oe_highlight"/>
<button string="Posting Uang Transport" name="action_post_transport" type="object" class="oe_highlight"/>
<button string="Positing Insentif" name="action_post_insentif" type="object" class="oe_highlight"/>
<button string="Positing THR" name="action_post_thr" type="object" class="oe_highlight"/>
<button string="Positing Jurnal" name="action_nonkas" type="object" class="oe_highlight"/>
</header>
<sheet>
<group>
<field name="nama" placeholder="Transaksi Gaji.."/>
<label for="date_from" string="Periode"/>
<div class="col-4">
<field name="date_from"/> - <field name="date_to"/>
</div>
<field name="posting_date" class="oe_inline"/>
</group>
</sheet>
</form>
</field>
</record>

Related Posts Replies Rodiniai Veikla
0
vas. 24
1544
2
rugs. 24
2126
0
geg. 23
1723
3
spal. 24
76705
1
gruod. 23
1881