Přejít na obsah
Odoo Menu
  • Přihlásit se
  • Vyzkoušejte zdarma
  • Aplikace
    Finance
    • Účetnictví
    • Fakturace
    • Výdaje
    • Spreadsheet (BI)
    • Dokumenty
    • Podpisy
    Prodej
    • CRM
    • Prodej
    • POS Obchod
    • POS Restaurace
    • Předplatné
    • Pronájem
    Webové stránky
    • Webové stránky
    • E-shop
    • Blog
    • Fórum
    • Živý chat
    • eLearning
    Dodavatelský řetězec
    • Sklad
    • Výroba
    • PLM
    • Nákup
    • Údržba
    • Kvalita
    Lidské zdroje
    • Zaměstnanci
    • Nábor
    • Volno
    • Hodnocení zaměstnanců
    • Doporučení
    • Vozový park
    Marketing
    • Marketing sociálních sítí
    • Emailový marketing
    • SMS Marketing
    • Události
    • Marketingová automatizace
    • Dotazníky
    Služby
    • Projekt
    • Časové výkazy
    • Práce v terénu
    • Helpdesk
    • Plánování
    • Schůzky
    Produktivita
    • Diskuze
    • Schvalování
    • IoT
    • VoIP
    • Znalosti
    • WhatsApp
    Aplikace třetích stran Odoo Studio Odoo cloudová platforma
  • Branže
    Maloobchod
    • Knihkupectví
    • Obchod s oblečením
    • Obchod s nábytkem
    • Potraviny
    • Obchod s hardwarem
    • Hračkářství
    Jídlo a pohostinství
    • Bar a Pub
    • Restaurace
    • Fast Food
    • Penzion
    • Distributor nápojů
    • Hotel
    Nemovitost
    • Realitní kancelář
    • Architektonická firma
    • Stavba
    • Správa nemovitostí
    • Zahradnictví
    • Asociace vlastníků nemovitosti
    Poradenství
    • Účetní firma
    • Odoo Partner
    • Marketingová agentura
    • Právník
    • Akvizice talentů
    • Audit a certifikace
    Výroba
    • Textil
    • Kov
    • Nábytek
    • Jídlo
    • Pivovar
    • Korporátní dárky
    Zdraví a fitness
    • Sportovní klub
    • Prodejna brýli
    • Fitness Centrum
    • Wellness praktikové
    • Lékárna
    • Kadeřnictví
    Transakce
    • Údržbář
    • Podpora IT & hardware
    • Systémy solární energie
    • Výrobce obuvi
    • Úklidové služby
    • Služby HVAC
    Ostatní
    • Nezisková organizace
    • Agentura pro životní prostředí
    • Pronájem billboardů
    • Fotografování
    • Leasing jízdních kol
    • Prodejce softwaru
    Procházet všechna odvětví
  • Komunita
    Edukační program
    • Tutoriály
    • Dokumentace
    • Certifikace
    • Vzdělávání
    • Blog
    • Podcast
    Podpora vzdělávání
    • Vzdělávací program
    • Scale Up! Hra na firmu
    • Navštivte Odoo
    Získat software
    • Stáhnout
    • Porovnejte edice
    • Verze
    Spolupráce
    • Github
    • Fórum
    • Události
    • Překlady
    • Stát se partnerem
    • Služby pro partnery
    • Registrujte svou účetní firmu
    Získat služby
    • Najít partnera
    • Najít účetní
    • Setkejte se s poradcem
    • Implementační služby
    • Zákaznické reference
    • Podpora
    • Upgrady
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Dohodnout demo
  • Ceník
  • Pomoc

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Účetnictví
  • Sklad
  • PoS
  • Projekty
  • MRP
All apps
You need to be registered to interact with the community.
All Posts Lidé Odznaky
Štítky (View all)
odoo accounting v14 pos v15
O tomto fóru
You need to be registered to interact with the community.
All Posts Lidé Odznaky
Štítky (View all)
odoo accounting v14 pos v15
O tomto fóru
Pomoc

account.invoice.line

Odebírat

Get notified when there's activity on this post

This question has been flagged
account.moveaccount.move.line
2 Odpovědi
7976 Zobrazení
Avatar
Mohamed AlObaid

hi i really need your help i have a module in odoo 14 that inherit account.move and account.move.line what i am trying to do is to add new field in the invoice lines i did this successfully and the subtotal is calculated base on the new fields for example : subtotal = price_unit * quantity * date_deffrence date_deffrence is the new field and it is integer feld the problem is the sub total is not changeing in my code can you pleas tell me how can i acheve this thanks

0
Avatar
Zrušit
Mohamed AlObaid
Autor

hi thanks man you code is working greatly but win i aply it i get error in the tax felds

einv_amount_tax = fields.Monetary(string="Amount tax", compute="_compute_amount_tax", help="")

@api.depends('tax_ids', 'discount', 'quantity', 'price_unit', 'einv_price_subtotal')
def _compute_amount_tax(self):
for r in self:
r.einv_amount_tax = sum(r.einv_price_subtotal * (tax.amount / 100) for tax in r.tax_ids)

this is my fields and my method
and it is give me THE SAME error

File "C:\Program Files (x86)\odoo14\server\odoo\addons\einv_sa\model\account_move.py", line 193, in _compute_subtotal
rec.einv_price_subtotal = rec.price_unit * rec.quantity * rec.date_difference
File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1028, in __get__
raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Program Files (x86)\odoo14\server\odoo\http.py", line 640, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Program Files (x86)\odoo14\server\odoo\http.py", line 316, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Compute method failed to assign account.move.line(100,).date_difference

and this error shown if i chose a tax id in the tax feld in the line

Avatar
Mohamed AlObaid
Autor Nejlepší odpověď

Hi CorTex IT Solutions Ltd 

thanks for your answer

 this code is exactly what i wrote it but unfortunately it is not working


ok my code is like this :

class AccountMoveLine(models.Model):
_name = "account.move.line"
_inherit = "account.move.line"

einv_amount_discount = fields.Monetary(string="Amount discount", compute="_compute_amount_discount", store='True',
help="")
einv_amount_tax = fields.Monetary(string="Amount tax", compute="_compute_amount_tax", store='True', help="")

# price_sup_total
einv_price_subtotal = fields.Monetary(string='sub total', compute='_compute_price_total')
# price_to_tal
einv_price_total = fields.Monetary(string='total', compute='_price_to_tal')
dayes = fields.Char(string="Days", store=True)
date_s = fields.Date(string="Start D", store='True')
date_e = fields.Date(string="End D", store='True')
date_difference = fields.Integer(string="dayes", compute="_compute_dayes", default=1)
invoice_line_ids = fields.Many2one('account.move')

@api.depends('date_s', 'date_e', 'date_difference')
def _compute_dayes(self):
for r in self:
if r.date_s and r.date_e:
date_ss = datetime.strptime(str(r.date_s), '%Y-%m-%d').date()
date_ee = datetime.strptime(str(r.date_e), '%Y-%m-%d').date()
cek_hasil = (date_ee - date_ss).days
r.date_difference = (int(cek_hasil)) # / 100000
# cek_day = r.sub('[^0-9]', '', str(cek_hasil))

@api.depends('price_unit', 'quantity', 'date_difference', 'invoice_line_ids')
def _compute_price_total(self):
for line in self:
for res in line.invoice_line_ids:
line.einv_price_subtotal = line.price_unit * res.quantity * line.date_difference

@api.depends('discount', 'quantity', 'price_unit')
def _compute_amount_discount(self):
for r in self:
r.einv_amount_discount = r.quantity * r.price_unit * (r.discount / 100)

@api.depends('tax_ids', 'discount', 'quantity', 'price_unit', 'einv_price_subtotal')
def _compute_amount_tax(self):
for r in self:
r.einv_amount_tax = sum(r.einv_price_subtotal * (tax.amount / 100) for tax in r.tax_ids)

@api.depends('einv_amount_tax', 'einv_price_subtotal', 'invoice_line_ids')
def _price_to_tal(self):
for line in self:
for res in line.invoice_line_ids:
line.einv_price_total = line.einv_price_subtotal + line.einv_amount_tax


and after that i simple have a report print the invoice 




and it is get me this error


Odoo Server Error
Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 793, in get
    return field_cache[record._ids[0]]
KeyError: 55

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 972, in __get__
    value = env.cache.get(record, self)
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 796, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move.line(55,).einv_price_subtotal'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 793, in get
    return field_cache[record._ids[0]]
KeyError: 55

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1025, in __get__
    value = env.cache.get(record, self)
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 796, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move.line(55,).einv_price_subtotal'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 331, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "", line 1, in template_einv_sa_inv_lines_222
  File "", line 62, in foreach_221
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb.py", line 380, in _get_field
    content = converter.record_to_html(record, field_name, field_options)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb_fields.py", line 484, in record_to_html
    return super(MonetaryConverter, self).record_to_html(record, field_name, options)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb_fields.py", line 128, in record_to_html
    value = record[field_name]
  File "C:\Program Files (x86)\odoo14\server\odoo\models.py", line 5675, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1028, in __get__
    raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
ValueError: Compute method failed to assign account.move.line(55,).einv_price_subtotal

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\web\controllers\main.py", line 2124, in report_download
    response = self.report_routes(reportname, docids=docids, converter=converter, context=context)
  File "C:\Program Files (x86)\odoo14\server\odoo\http.py", line 532, in response_wrap
    response = f(*args, **kw)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\web\controllers\main.py", line 2059, in report_routes
    pdf = report.with_context(context)._render_qweb_pdf(docids, data=data)[0]
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\account\models\ir_actions_report.py", line 50, in _render_qweb_pdf
    return super()._render_qweb_pdf(res_ids=res_ids, data=data)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_actions_report.py", line 805, in _render_qweb_pdf
    html = self_sudo.with_context(context)._render_qweb_html(res_ids, data=data)[0]
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_actions_report.py", line 846, in _render_qweb_html
    return self._render_template(self.report_name, data), 'html'
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_actions_report.py", line 582, in _render_template
    return view_obj._render_template(template, values)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_ui_view.py", line 1708, in _render_template
    return self.browse(self.get_view_id(template))._render(values, engine)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\website\models\ir_ui_view.py", line 420, in _render
    return super(View, self)._render(values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\web_editor\models\ir_ui_view.py", line 28, in _render
    return super(IrUiView, self)._render(values=values, engine=engine, minimal_qcontext=minimal_qcontext)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_ui_view.py", line 1716, in _render
    return self.env[engine]._render(self.id, qcontext)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb.py", line 55, in _render
    result = super(IrQWeb, self)._render(id_or_xml_id, values=values, **context)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 258, in _render
    self.compile(template, options)(self, body.append, values or {})
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 333, in _compiled_fn
    raise e
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 331, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "", line 1, in template_einv_sa_account_move_report_170
  File "", line 2, in body_call_content_168
  File "", line 3, in foreach_167
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 333, in _compiled_fn
    raise e
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 331, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "", line 1, in template_einv_sa_account_move_report_document_187
  File "", line 3, in body_call_content_185
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 338, in _compiled_fn
    raise QWebException("Error to render compiling AST", e, path, node and etree.tostring(node[0], encoding='unicode'), name)
odoo.addons.base.models.qweb.QWebException: Compute method failed to assign account.move.line(55,).einv_price_subtotal
Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 793, in get
    return field_cache[record._ids[0]]
KeyError: 55

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 972, in __get__
    value = env.cache.get(record, self)
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 796, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move.line(55,).einv_price_subtotal'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 793, in get
    return field_cache[record._ids[0]]
KeyError: 55

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1025, in __get__
    value = env.cache.get(record, self)
  File "C:\Program Files (x86)\odoo14\server\odoo\api.py", line 796, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move.line(55,).einv_price_subtotal'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\qweb.py", line 331, in _compiled_fn
    return compiled(self, append, new, options, log)
  File "", line 1, in template_einv_sa_inv_lines_222
  File "", line 62, in foreach_221
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb.py", line 380, in _get_field
    content = converter.record_to_html(record, field_name, field_options)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb_fields.py", line 484, in record_to_html
    return super(MonetaryConverter, self).record_to_html(record, field_name, options)
  File "C:\Program Files (x86)\odoo14\server\odoo\addons\base\models\ir_qweb_fields.py", line 128, in record_to_html
    value = record[field_name]
  File "C:\Program Files (x86)\odoo14\server\odoo\models.py", line 5675, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1028, in __get__
    raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
ValueError: Compute method failed to assign account.move.line(55,).einv_price_subtotal

Error to render compiling AST
ValueError: Compute method failed to assign account.move.line(55,).einv_price_subtotal
Template: einv_sa.inv_lines
Path: /t/table/tbody/tr/td[7]/span
Node: 

so any help pleas





0
Avatar
Zrušit
Waleed Mohsen (CorTex IT Solutions)

If the store equal to True then the code will run the first time when you install the module and then whenever there is a change in any of the three fields mentioned in the depends the compute method will be called.

Try to set the store=false and upgrade the module.

Waleed Mohsen (CorTex IT Solutions)

If you have a compute field in your model and you set store=True for the field, the field value will not get recomputed if proper depends is not given for the compute function.

Please post your code here

Waleed Mohsen (CorTex IT Solutions)

Replace the below line as you are set Store=True and its should be store=True. Also you are set store=True for not computed fields.

compute="_compute_amount_discount", store=True,help="")
einv_amount_tax = fields.Monetary(string="Amount tax", compute="_compute_amount_tax", store=True, help="")

dayes = fields.Char(string="Days")
date_s = fields.Date(string="Start D")
date_e = fields.Date(string="End D")

There below error is self explained:
Compute method failed to assign account.move.line(55,).einv_price_subtotal

There is no invoice_line_ids in account.move.line so your method should be

@api.depends('price_unit', 'quantity', 'date_difference',)
def _compute_price_total(self):
for line in self:
line.einv_price_subtotal = line.price_unit * line.quantity * line.date_difference

Mohamed AlObaid
Autor

Thanks man you are the best

Mohamed AlObaid
Autor

hi thanks man you code is working greatly but win i aply it i get error in the tax felds

einv_amount_tax = fields.Monetary(string="Amount tax", compute="_compute_amount_tax", help="")

@api.depends('tax_ids', 'discount', 'quantity', 'price_unit', 'einv_price_subtotal')
def _compute_amount_tax(self):
for r in self:
r.einv_amount_tax = sum(r.einv_price_subtotal * (tax.amount / 100) for tax in r.tax_ids)

this is my field and my method
and it is give me THE SAME error

File "C:\Program Files (x86)\odoo14\server\odoo\addons\einv_sa\model\account_move.py", line 193, in _compute_subtotal
rec.einv_price_subtotal = rec.price_unit * rec.quantity * rec.date_difference
File "C:\Program Files (x86)\odoo14\server\odoo\fields.py", line 1028, in __get__
raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Program Files (x86)\odoo14\server\odoo\http.py", line 640, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Program Files (x86)\odoo14\server\odoo\http.py", line 316, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Compute method failed to assign account.move.line(100,).date_difference

and this error shwon if i chose a tax id in the tax feld in the line

Waleed Mohsen (CorTex IT Solutions)

The issue is the below:
ValueError: Compute method failed to assign account.move.line(100,).date_difference

The date_difference computed method is not correct. try to use log or print the value to check if it's calculated correct value or not

Avatar
Waleed Mohsen (CorTex IT Solutions)
Nejlepší odpověď

You can define the subtotal as computed field and you can choose to store it in DB or not by adding attribute store=True.

Define subtotal field:

subtotal = fields.Float(string='SubTotal',compute='_compute_subtotal', store=True)

Then define computed method:

@api.depends('price_unit',' quantity',' date_deffrence')

def   _compute_subtotal(self)

    for line in self:

         line.subtotal = line.price_unit * line.quantity * line.date_deffrence


Note if the date_deffrence is zero the subtotal will be zero.

0
Avatar
Zrušit
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Přihlásit se
Related Posts Odpovědi Zobrazení Aktivita
[SOLVED] get data from mrp.production into account.move.line, but it won't show
account.move account.move.line mrp.production
Avatar
0
čvn 24
4246
add my custum field in account.move.line view in odoo 16 enterprise
account.move tree_view account.move.line
Avatar
Avatar
Avatar
2
lis 23
4852
account.move.line with API Vyřešeno
api account.move account.move.line
Avatar
Avatar
Avatar
Avatar
3
led 24
21734
Create "account.move" from code in odooV13.
account.move python3 account.move.line Odoo13.0
Avatar
Avatar
1
kvě 25
10690
Can anyone give me an example PHP API call to search Account.Move
account.move
Avatar
Avatar
Avatar
Avatar
Avatar
4
úno 24
6358
Komunita
  • Tutoriály
  • Dokumentace
  • Fórum
Open Source
  • Stáhnout
  • Github
  • Runbot
  • Překlady
Služby
  • Odoo.sh hostování
  • Podpora
  • Upgrade
  • Nestandardní vývoj
  • Edukační program
  • Najít účetní
  • Najít partnera
  • Stát se partnerem
O nás
  • Naše společnost
  • Podklady značky
  • Kontakujte nás
  • Práce
  • Události
  • Podcast
  • Blog
  • Zákazníci
  • Právní dokumenty • Soukromí
  • Zabezpečení
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo je balíček open-source aplikací, které pokrývají všechny potřeby vaší společnosti: CRM, e-shop, účetnictví, sklady, kasy, projektové řízení a další.

Unikátní nabídka od Odoo poskytuje velmi jednoduché uživatelské rozhraní a vše je integrované na jednom místě.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now