Coder Social home page Coder Social logo

brand's People

Contributors

ammarofficewalaserpentcs avatar badbole avatar chienandalu avatar cubells avatar dreispt avatar eduardgm avatar francesco-ooops avatar freni-osi avatar ibuioli avatar ivantodorovich avatar ivorra78 avatar jacekmichalski avatar marielejeune avatar marylla avatar mourad-ehm avatar mymage avatar oca-git-bot avatar oca-transbot avatar oca-travis avatar omerkulak avatar opencode avatar osi-scampbell avatar pedrobaeza avatar pedrocasi avatar qgroulard avatar sbejaoui avatar simahawk avatar weblate avatar willmakenoise avatar zeroheure avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brand's Issues

[TBD] Missing feature for brand management [13.0]

If a customer want to buy a product from mybrandwebsite.com then all communications should be done from that domain: emails, payment link, payment mean etc.

  • Add brand to CRM cf. PR #62

  • Mail server per brand. cf. PR #64
    Let chatter send messages with the correct domain (email [email protected] / [email protected])

  • Add brand to website.
    Currently, all website in same company use that company's information.

  • Different payment providers per brand (paypal for brand 1 / paypal for brand 2)

[15.0] [16.0] "web.report_assets_common" defined for non-existing file in brand_external_report_layout

Module

brand_external_report_layout

Describe the bug

in manifest.py of brand_external_report_layout assets is defnied

"assets": { "web.report_assets_common": [ "/brand_external_report_layout/" "static/src/legacy/scss/asset_styles_brand_report.scss" ] },
but this file doesn't exist. While previewing report error about missing file is shown

To Reproduce

15.0, 16.0

Steps to reproduce the behavior:

  1. Install module
  2. Open settings -> User & Companies -> Brands
  3. Create new brand
  4. Click Change Document Template

image

Brand for e-commerce website

Hello,
This development is really useful, I am grateful.
If I create a sales invoice and select brand, the invoice is generated with the new brand information, and this is great.

But I do not know how to make the sales invoices of the website (e-commerce) have the template of the brand.
If I try to edit the website sales orders, brand is not an editable field, as it is in the billing module.
Thanks
Captura de pantalla de 2021-01-06 01-49-26

Resume: OCA/brand Manage brands for product and companies

Hi

This is a resume

Read: OCA/partner-contact#765

I'm new in this repository but not in working with brands. I create this issue as introduction of what's is done around brands:

Related to Partners

Scenario 1: My company or companies (res.company) sell diferent company's brands (my brands). Example: Danone, Dadone's companies have brands like Danone, Danette, Actimel, Danonino, Activia, Oikos, ....

  • Partner Brand: relate / add brand to res.partners (module partner_brand) 12
  • Sale Brand: This module allows you to send branded quotations and sales orders to your
    customers (module sale_brand) 12
  • Account Brand: This module allows you to send branded invoices to your customers. It adds a brand field on the invoice and the brand information to the PDF
    report (module account_brand) 12

Note: In Spanish Localization we are using Brand (commercial Brand) since OpenERP 5: https://github.com/OCA/l10n-spain/blame/12.0/l10n_es_partner/README.rst#L30 :

  • Add the field * Commercial name * to the companies and search for it.
  • Allows you to define a pattern of the name to display from the name and the
    business name of the company.

Related to Products

Scenario 2: My company or companies product of different brands. Example: Lidl. Lidl sale product of diferent brands: Nestle, Cocacola, Danone, Heinz, ....

[16.0] brand_external_report_layout : can't be used in multi-company context and conflicts with other modules

Module

brand_external_report_layout

Describe the bug

  • the model brand.document.layout is defining company_details (and should define is_company_details_empty also, as declared in #167 ) so it's not possible to use the same brand for different companies
  • the company Qweb variable is replaced by a res.brand object in reports, so every module inheriting company to add information in reports is conflicting (for example, l10n_ca from Odoo with account_fiscal_country_id and l10n_ca_pst fields)

To Reproduce

16.0:

Steps to reproduce the behavior:

  1. Create a new database with brand_external_report_layout installed and demo data
  2. Go to settings and set a specific document layout for first company (this should set the company details by default)
  3. Set the company with Brand use level = optional
  4. Switch company and do the same for the second company, with another layout
  5. Create a brand and set its document layout (for the moment, #167 is preventing to go further...)
  6. From now on, every sale, invoice, etc. that will use this brand will have the same address (company/brand details) for both companies

Expected behavior
I think only "style" fields should be overridden by brands.

Additional context
I'll propose a PR that keeps the original company object and temporarily modify it with data from brand then go back to original after the report is generated.

[17.0] brand: field brand_use_level does not exist in the model "res.config.settings"

Module

Brand addon

Describe the bug

I am trying to import the addon using the Odoo Apps import module UI.

 while parsing /tmp/tmp3rsh2yse/brand/views/res_config_settings.xml:5
Erreur lors de la validation de la vue :

                    <field name="is_root_company" invisible="1"/>
                    <app data-string="General Settings" string="General Settings" name="general_settings" logo="/base/static/description/settings.png">

                        <div id="invite_users">
                            <block title="Users" name="users_setting_container">

Le champ "brand_use_level" n'existe pas dans le modèle "res.config.settings"

View error context:
{'file': '/tmp/tmp3rsh2yse/brand/views/res_config_settings.xml',
 'line': 4,
 'name': 'res.config.settings form',
 'view': ir.ui.view(2114,),
 'view.model': 'res.config.settings',
 'view.parent': ir.ui.view(223,),
 'xmlid': 'res_config_settings_view_form'}

To Reproduce

Affected versions: 17.0

Steps to reproduce the behavior:

  1. Go to import module UI of Odoo Apps module
  2. Import Brand addon
  3. Get the error

Expected behavior

  1. Go to import module UI of Odoo Apps module
  2. Import Brand addon
  3. The brand addon is installed

Additional context
OS: Arch Linux
Package: odoo-17
Python: 3.11.9

Migration to version 15.0

Todo

https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-15.0

Modules to migrate

  • account_brand
  • analytic_brand
  • analytic_brand - By @sbejaoui - #101
  • brand
  • brand - By @sbejaoui - #100
  • brand_external_report_layout
  • brand_external_report_layout - By @sbejaoui - #109
  • contract_brand - By @sbejaoui - #112
  • product_brand
  • product_brand - By @alan196 - #90
  • product_brand_multicompany
  • product_brand_social_responsibility
  • product_brand_tag
  • product_brand_tag_secondary
  • sale_brand
  • sale_brand - By @sbejaoui - #110

Missing module? Check https://github.com/OCA/maintainer-tools/wiki/%5BFAQ%5D-Missing-modules-in-migration-issue-list

SyntaxError: each UNION query must have the same number of columns, when POS_sale module is active

Module

product_brand

Describe the bug

When the pos_sale module is installed, an error is thrown when opening a product form view.
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/api.py", line 983, in get
cache_value = field_cache[record._ids[0]]
KeyError: 8

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/fields.py", line 1136, in get
value = env.cache.get(record, self)
File "/home/odoo/src/odoo/odoo/api.py", line 990, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'product.template(8,).sales_count'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/api.py", line 983, in get
cache_value = field_cache[record._ids[0]]
KeyError: 8

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/fields.py", line 1136, in get
value = env.cache.get(record, self)
File "/home/odoo/src/odoo/odoo/api.py", line 990, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'product.product(8,).sales_count'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 1549, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/home/odoo/src/odoo/odoo/service/model.py", line 134, in retrying
result = func()
File "/home/odoo/src/odoo/odoo/http.py", line 1578, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/src/odoo/odoo/http.py", line 1775, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 140, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/src/odoo/odoo/http.py", line 673, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 42, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/models.py", line 2991, in read
return self._read_format(fnames=fields, load=load)
File "/home/odoo/src/odoo/odoo/models.py", line 3130, in _read_format
vals[name] = convert(record[name], record, use_name_get)
File "/home/odoo/src/odoo/odoo/models.py", line 5840, in getitem
return self._fields[key].get(self, type(self))
File "/home/odoo/src/odoo/odoo/fields.py", line 1185, in get
self.compute_value(recs)
File "/home/odoo/src/odoo/odoo/fields.py", line 1344, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/odoo/models.py", line 4185, in _compute_field_value
getattr(self, field.compute)()
File "/home/odoo/src/odoo/addons/sale/models/product_template.py", line 61, in _compute_sales_count
product.sales_count = float_round(sum([p.sales_count for p in product.with_context(active_test=False).product_variant_ids]), precision_rounding=product.uom_id.rounding)
File "/home/odoo/src/odoo/addons/sale/models/product_template.py", line 61, in
product.sales_count = float_round(sum([p.sales_count for p in product.with_context(active_test=False).product_variant_ids]), precision_rounding=product.uom_id.rounding)
File "/home/odoo/src/odoo/odoo/fields.py", line 1185, in get
self.compute_value(recs)
File "/home/odoo/src/odoo/odoo/fields.py", line 1344, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/odoo/models.py", line 4185, in _compute_field_value
getattr(self, field.compute)()
File "/home/odoo/src/odoo/addons/sale/models/product_product.py", line 28, in _compute_sales_count
for group in self.env['sale.report']._read_group(domain, ['product_id', 'product_uom_qty'], ['product_id']):
File "/home/odoo/src/odoo/odoo/models.py", line 2176, in _read_group
return self.read_group(domain, fields, groupby, offset, limit, orderby, lazy)
File "/home/odoo/src/enterprise/sale_enterprise/report/sale_report.py", line 53, in read_group
res = super(SaleReport, self).read_group(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
File "/home/odoo/src/odoo/odoo/models.py", line 2216, in read_group
result = self._read_group_raw(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
File "/home/odoo/src/odoo/odoo/models.py", line 2347, in _read_group_raw
self._cr.execute(query, where_clause_params)
File "/home/odoo/src/odoo/odoo/sql_db.py", line 315, in execute
res = self._obj.execute(query, params)
psycopg2.errors.SyntaxError: each UNION query must have the same number of columns
LINE 108: -MIN(l.id) AS id,
^

In the server log:
2022-11-17 14:11:13,631 4 ERROR alpiek-oisterwijk-pauw-16-16-0-test-6392796 odoo.sql_db: bad query:
SELECT min("sale_report".id) AS id, count("sale_report".id) AS "product_id_count" , sum("sale_report"."product_uom_qty") AS "product_uom_qty","sale_report"."product_id" as "product_id"
FROM (

        SELECT 
        
        MIN(l.id) AS id,
        l.product_id AS product_id,
        t.uom_id AS product_uom,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.product_uom_qty / u.factor * u2.factor) ELSE 0 END AS product_uom_qty,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.qty_delivered / u.factor * u2.factor) ELSE 0 END AS qty_delivered,
        CASE WHEN l.product_id IS NOT NULL THEN SUM((l.product_uom_qty - l.qty_delivered) / u.factor * u2.factor) ELSE 0 END AS qty_to_deliver,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.qty_invoiced / u.factor * u2.factor) ELSE 0 END AS qty_invoiced,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.qty_to_invoice / u.factor * u2.factor) ELSE 0 END AS qty_to_invoice,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.price_total
            * CASE COALESCE(s.currency_rate, 0) WHEN 0 THEN 1.0 ELSE s.currency_rate END
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
            ) ELSE 0
        END AS price_total,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.price_subtotal
            * CASE COALESCE(s.currency_rate, 0) WHEN 0 THEN 1.0 ELSE s.currency_rate END
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
            ) ELSE 0
        END AS price_subtotal,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.untaxed_amount_to_invoice
            * CASE COALESCE(s.currency_rate, 0) WHEN 0 THEN 1.0 ELSE s.currency_rate END
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
            ) ELSE 0
        END AS untaxed_amount_to_invoice,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.untaxed_amount_invoiced
            * CASE COALESCE(s.currency_rate, 0) WHEN 0 THEN 1.0 ELSE s.currency_rate END
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
            ) ELSE 0
        END AS untaxed_amount_invoiced,
        COUNT(*) AS nbr,
        s.name AS name,
        s.date_order AS date,
        s.state AS state,
        s.partner_id AS partner_id,
        s.user_id AS user_id,
        s.company_id AS company_id,
        s.campaign_id AS campaign_id,
        s.medium_id AS medium_id,
        s.source_id AS source_id,
        t.categ_id AS categ_id,
        s.pricelist_id AS pricelist_id,
        s.analytic_account_id AS analytic_account_id,
        s.team_id AS team_id,
        p.product_tmpl_id,
        partner.country_id AS country_id,
        partner.industry_id AS industry_id,
        partner.commercial_partner_id AS commercial_partner_id,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(p.weight * l.product_uom_qty / u.factor * u2.factor) ELSE 0 END AS weight,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(p.volume * l.product_uom_qty / u.factor * u2.factor) ELSE 0 END AS volume,
        l.discount AS discount,
        CASE WHEN l.product_id IS NOT NULL THEN SUM(l.price_unit * l.product_uom_qty * l.discount / 100.0
            * CASE COALESCE(s.currency_rate, 0) WHEN 0 THEN 1.0 ELSE s.currency_rate END
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
            ) ELSE 0
        END AS discount_amount,
        s.id AS order_id,
        s.invoice_status AS invoice_status,
        s.warehouse_id AS warehouse_id,
        t.product_brand_id as product_brand_id
        FROM 
        sale_order_line l
        LEFT JOIN sale_order s ON s.id=l.order_id
        JOIN res_partner partner ON s.partner_id = partner.id
        LEFT JOIN product_product p ON l.product_id=p.id
        LEFT JOIN product_template t ON p.product_tmpl_id=t.id
        LEFT JOIN uom_uom u ON u.id=l.product_uom
        LEFT JOIN uom_uom u2 ON u2.id=t.uom_id
        JOIN (VALUES (1, 1.0, 2)) AS currency_table(company_id, rate, precision) ON currency_table.company_id = s.company_id
        
        WHERE 
        l.display_type IS NULL
        GROUP BY 
        
        l.product_id,
        l.order_id,
        t.uom_id,
        t.categ_id,
        s.name,
        s.date_order,
        s.partner_id,
        s.user_id,
        s.state,
        s.company_id,
        s.campaign_id,
        s.medium_id,
        s.source_id,
        s.pricelist_id,
        s.analytic_account_id,
        s.team_id,
        p.product_tmpl_id,
        partner.country_id,
        partner.industry_id,
        partner.commercial_partner_id,
        l.discount,
        s.id,
        currency_table.rate,
        t.product_brand_id,
        s.invoice_status,
        s.warehouse_id
        
    UNION ALL (
        SELECT 
        -MIN(l.id) AS id,
        l.product_id AS product_id,
        t.uom_id AS product_uom,
        SUM(l.qty) AS product_uom_qty,
        SUM(l.qty) AS qty_delivered,
        0 AS qty_to_deliver,
        CASE WHEN pos.state = 'invoiced' THEN SUM(l.qty) ELSE 0 END AS qty_invoiced,
        CASE WHEN pos.state != 'invoiced' THEN SUM(l.qty) ELSE 0 END AS qty_to_invoice,
        SUM(l.price_subtotal_incl)
            * MIN(CASE COALESCE(pos.currency_rate, 0) WHEN 0 THEN 1.0 ELSE pos.currency_rate END)
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
        AS price_total,
        SUM(l.price_subtotal)
            * MIN(CASE COALESCE(pos.currency_rate, 0) WHEN 0 THEN 1.0 ELSE pos.currency_rate END)
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
        AS price_subtotal,
        (CASE WHEN pos.state != 'invoiced' THEN SUM(l.price_subtotal) ELSE 0 END)
            * MIN(CASE COALESCE(pos.currency_rate, 0) WHEN 0 THEN 1.0 ELSE pos.currency_rate END)
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
        AS amount_to_invoice,
        (CASE WHEN pos.state = 'invoiced' THEN SUM(l.price_subtotal) ELSE 0 END)
            * MIN(CASE COALESCE(pos.currency_rate, 0) WHEN 0 THEN 1.0 ELSE pos.currency_rate END)
            * CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END
        AS amount_invoiced,
        count(*) AS nbr,
        pos.name AS name,
        pos.date_order AS date,
        CASE WHEN pos.state = 'draft' THEN 'pos_draft' WHEN pos.state = 'done' THEN 'pos_done' else pos.state END AS state,
        pos.partner_id AS partner_id,
        pos.user_id AS user_id,
        pos.company_id AS company_id,
        NULL AS campaign_id,
        NULL AS medium_id,
        NULL AS source_id,
        t.categ_id AS categ_id,
        pos.pricelist_id AS pricelist_id,
        NULL AS analytic_account_id,
        pos.crm_team_id AS team_id,
        p.product_tmpl_id,
        partner.country_id AS country_id,

partner.industry_id AS industry_id,
partner.commercial_partner_id AS commercial_partner_id,
(SUM(p.weight) * l.qty / u.factor) AS weight,
(SUM(p.volume) * l.qty / u.factor) AS volume,
l.discount AS discount,
SUM((l.price_unit * l.discount * l.qty / 100.0
* CASE COALESCE(pos.currency_rate, 0) WHEN 0 THEN 1.0 ELSE pos.currency_rate END
* CASE COALESCE(currency_table.rate, 0) WHEN 0 THEN 1.0 ELSE currency_table.rate END))
AS discount_amount,
NULL AS order_id,
NULL AS invoice_status,
NULL AS warehouse_id
FROM
pos_order_line l
JOIN pos_order pos ON l.order_id = pos.id
LEFT JOIN res_partner partner ON (pos.partner_id=partner.id OR pos.partner_id = NULL)
LEFT JOIN product_product p ON l.product_id=p.id
LEFT JOIN product_template t ON p.product_tmpl_id=t.id
LEFT JOIN uom_uom u ON u.id=t.uom_id
LEFT JOIN pos_session session ON session.id = pos.session_id
LEFT JOIN pos_config config ON config.id = session.config_id
JOIN (VALUES (1, 1.0, 2)) AS currency_table(company_id, rate, precision) ON currency_table.company_id = pos.company_id

        WHERE 
        l.sale_order_line_id IS NULL
        GROUP BY 
        l.order_id,
        l.product_id,
        l.price_unit,
        l.discount,
        l.qty,
        t.uom_id,
        t.categ_id,
        pos.name,
        pos.date_order,
        pos.partner_id,
        pos.user_id,
        pos.state,
        pos.company_id,
        pos.pricelist_id,
        p.product_tmpl_id,
        partner.country_id,
        partner.industry_id,
        partner.commercial_partner_id,
        u.factor,
        pos.crm_team_id,
        currency_table.rate
        )
    ) AS "sale_report"
        WHERE ((("sale_report"."state" in ('sale', 'done', 'paid', 'pos_done', 'invoiced')) AND ("sale_report"."product_id" in (8))) AND ("sale_report"."date" >= '2021-11-17 00:00:00')) AND ("sale_report"."company_id" IS NULL  OR ("sale_report"."company_id" in (1)))
        GROUP BY "sale_report"."product_id"
        ORDER BY "product_id"

ERROR: each UNION query must have the same number of columns
LINE 108: -MIN(l.id) AS id,

To Reproduce

Affected versions:
Odoo 16
Steps to reproduce the behavior:

  1. install sale module
  2. install pos module
  3. install product_brand module
  4. go to product catalog
  5. open a product

Expected behavior
A clear and concise description of what you expected to happen.

Additional context
Add any other context about the problem here. (e.g. OS, Python version, ...)
t.product_brand_id as product_brand_id has been added to the sale.report from the sale module, but not from the pos module.

not found parent view ?

Hello,
Does not work in Odoo 13, clean installation with OCA website and ecommerce modules.

If I select "brand_external_layout" on "Settings>Documents" the server return 500 after payment on website store.
In the backend when I generating the sales order, it don't generate the pdf:

Odoo Server Error

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/usuario/odoo/odoo/tools/func.py", line 69, in wrapper
return func(self, *args, **kwargs)
File "/home/usuario/odoo/odoo/tools/lru.py", line 44, in getitem
a = self.d[obj].me
KeyError: ('ir.qweb', <function IrQWeb.compile at 0x7fa435ddd160>, 'web.external_layout_standard', ('en_US', False, None, None, None, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/usuario/odoo/odoo/tools/func.py", line 69, in wrapper
return func(self, *args, **kwargs)
File "/home/usuario/odoo/odoo/tools/lru.py", line 44, in getitem
a = self.d[obj].me
KeyError: ('ir.ui.view', <function View._read_template at 0x7fa436393280>, frozenset({1, 2, 3, 4, 6, 7, 10, 14, 17, 18, 19, 21, 23, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 41, 44, 47, 50, 51, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81}), 213, ('en_US', False, None, None, None, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 669, in apply_inheritance_specs
source = apply_inheritance_specs(source, specs_tree,
File "/home/usuario/odoo/odoo/tools/template_inheritance.py", line 229, in apply_inheritance_specs
raise ValueError(
ValueError: El elemento '' no puede ser localizado en la vista padre

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 359, in get_template
document = options.get('load', self.load)(template, options)
File "/home/usuario/odoo/odoo/addons/base/models/ir_qweb.py", line 121, in load
template = env['ir.ui.view'].read_template(name)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1071, in read_template
return self._read_template(self.get_view_id(xml_id))
File "", line 2, in _read_template
File "/home/usuario/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1063, in _read_template
arch = self.browse(view_id).read_combined(['arch'])['arch']
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 745, in read_combined
arch = self.apply_view_inheritance(arch_tree, root.id, self.model)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 694, in apply_view_inheritance
source = self.apply_inheritance_specs(source, specs_tree, view_id)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 673, in apply_inheritance_specs
self.raise_view_error(str(e), inherit_id)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 614, in raise_view_error
raise ValueError(message)
ValueError: El elemento '' no puede ser localizado en la vista padre

Error context:
View brand_external_layout
[view_id: 2340, xml_id: brand_external_report_layout.brand_external_layout, model: n/a, parent_id: 213]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/usuario/odoo/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/usuario/odoo/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/home/usuario/odoo/odoo/http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "/home/usuario/odoo/odoo/http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/usuario/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/usuario/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/home/usuario/odoo/odoo/http.py", line 915, in call
return self.method(*args, **kw)
File "/home/usuario/odoo/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/home/usuario/odoo/addons/web/controllers/main.py", line 1327, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/usuario/odoo/addons/web/controllers/main.py", line 1319, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/usuario/odoo/odoo/api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/usuario/odoo/odoo/api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/usuario/odoo/odoo/models.py", line 6202, in onchange
record._onchange_eval(name, field_onchange[name], result)
File "/home/usuario/odoo/odoo/models.py", line 5981, in _onchange_eval
method_res = method(self)
File "/home/usuario/odoo/addons/mail/wizard/mail_compose_message.py", line 384, in onchange_template_id_wrapper
values = self.onchange_template_id(self.template_id.id, self.composition_mode, self.model, self.res_id)['value']
File "/home/usuario/odoo/addons/mail/wizard/mail_compose_message.py", line 405, in onchange_template_id
values = self.generate_email_for_composer(template_id, [res_id])[res_id]
File "/home/usuario/odoo/addons/mail/wizard/mail_compose_message.py", line 538, in generate_email_for_composer
template_values = self.env['mail.template'].with_context(tpl_partners_only=True).browse(template_id).generate_email(res_ids, fields=fields)
File "/home/usuario/odoo/addons/mail/models/mail_template.py", line 437, in generate_email
result, format = report.render_qweb_pdf([res_id])
File "/home/usuario/odoo/odoo/addons/base/models/ir_actions_report.py", line 734, in render_qweb_pdf
html = self.with_context(context).render_qweb_html(res_ids, data=data)[0]
File "/home/usuario/odoo/odoo/addons/base/models/ir_actions_report.py", line 774, in render_qweb_html
return self.render_template(self.report_name, data), 'html'
File "/home/usuario/odoo/odoo/addons/base/models/ir_actions_report.py", line 548, in render_template
return view_obj.render_template(template, values)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1191, in render_template
return self.browse(self.get_view_id(template)).render(values, engine)
File "/home/usuario/odoo/addons/website/models/ir_ui_view.py", line 336, in render
return super(View, self).render(values, engine=engine, minimal_qcontext=minimal_qcontext)
File "/home/usuario/odoo/addons/web_editor/models/ir_ui_view.py", line 27, in render
return super(IrUiView, self).render(values=values, engine=engine, minimal_qcontext=minimal_qcontext)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1199, in render
return self.env[engine].render(self.id, qcontext)
File "/home/usuario/odoo/odoo/addons/base/models/ir_qweb.py", line 58, in render
result = super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 260, in render
self.compile(template, options)(self, body.append, values or {})
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 335, in _compiled_fn
raise e
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 333, in _compiled_fn
return compiled(self, append, new, options, log)
File "", line 1, in template_sale_report_saleorder_15121
File "", line 2, in body_call_content_15119
File "", line 3, in foreach_15118
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 335, in _compiled_fn
raise e
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 333, in _compiled_fn
return compiled(self, append, new, options, log)
File "", line 1, in template_sale_report_saleorder_document_15172
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 335, in _compiled_fn
raise e
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 333, in _compiled_fn
return compiled(self, append, new, options, log)
File "", line 1, in template_web_external_layout_15214
File "", line 2, in compile
File "/home/usuario/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/home/usuario/odoo/odoo/addons/base/models/ir_qweb.py", line 113, in compile
return super(IrQWeb, self).compile(id_or_xml_id, options=options)
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 277, in compile
element, document = self.get_template(template, options)
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 365, in get_template
raise QWebException("load could not load template", e, path, name=template)
odoo.addons.base.models.qweb.QWebException: El elemento '' no puede ser localizado en la vista padre

Error context:
View brand_external_layout
[view_id: 2340, xml_id: brand_external_report_layout.brand_external_layout, model: n/a, parent_id: 213]
Traceback (most recent call last):
File "/home/usuario/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/usuario/odoo/odoo/tools/func.py", line 69, in wrapper
return func(self, *args, **kwargs)
File "/home/usuario/odoo/odoo/tools/lru.py", line 44, in getitem
a = self.d[obj].me
KeyError: ('ir.qweb', <function IrQWeb.compile at 0x7fa435ddd160>, 'web.external_layout_standard', ('en_US', False, None, None, None, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/usuario/odoo/odoo/tools/func.py", line 69, in wrapper
return func(self, *args, **kwargs)
File "/home/usuario/odoo/odoo/tools/lru.py", line 44, in getitem
a = self.d[obj].me
KeyError: ('ir.ui.view', <function View._read_template at 0x7fa436393280>, frozenset({1, 2, 3, 4, 6, 7, 10, 14, 17, 18, 19, 21, 23, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 41, 44, 47, 50, 51, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81}), 213, ('en_US', False, None, None, None, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 669, in apply_inheritance_specs
source = apply_inheritance_specs(source, specs_tree,
File "/home/usuario/odoo/odoo/tools/template_inheritance.py", line 229, in apply_inheritance_specs
raise ValueError(
ValueError: El elemento '' no puede ser localizado en la vista padre

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/usuario/odoo/odoo/addons/base/models/qweb.py", line 359, in get_template
document = options.get('load', self.load)(template, options)
File "/home/usuario/odoo/odoo/addons/base/models/ir_qweb.py", line 121, in load
template = env['ir.ui.view'].read_template(name)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1071, in read_template
return self._read_template(self.get_view_id(xml_id))
File "", line 2, in _read_template
File "/home/usuario/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 1063, in _read_template
arch = self.browse(view_id).read_combined(['arch'])['arch']
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 745, in read_combined
arch = self.apply_view_inheritance(arch_tree, root.id, self.model)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 694, in apply_view_inheritance
source = self.apply_inheritance_specs(source, specs_tree, view_id)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 673, in apply_inheritance_specs
self.raise_view_error(str(e), inherit_id)
File "/home/usuario/odoo/odoo/addons/base/models/ir_ui_view.py", line 614, in raise_view_error
raise ValueError(message)
ValueError: El elemento '' no puede ser localizado en la vista padre

Error context:
View brand_external_layout
[view_id: 2340, xml_id: brand_external_report_layout.brand_external_layout, model: n/a, parent_id: 213]

load could not load template
ValueError: El elemento '' no puede ser localizado en la vista padre

Error context:
View brand_external_layout
[view_id: 2340, xml_id: brand_external_report_layout.brand_external_layout, model: n/a, parent_id: 213]
Template: web.external_layout
Path: /t/t[3]

No branding on sales documents

Odoo 13.0-20210518 (Community Edition)
Brand modules are installed from git on the 13.0 release.
Running Odoo in Docker.

I configured 2 brands. I can select a brand on the Quotation, ... however when I print I see no branded info. Just the general company information that's configured. Same for when I go to preview I see the normal company info and not the branded info.

Nothing else is really configured. This was a fresh install. Can someone confirm this (doesn't) work (anymore)?

Thanks!

e-commerce error: Brand is required

Hi,
If I go to Settings > General Settings and select the brand use level "Required" I can't buy in my e-shop.
When we add a product to the cart this show:

Error: Brand is required

Thanks

[16] sale_brand not working

This are the instructions of module sale_brand

1 Go to Sales > Quotations
2 Select or create a quotation
3 Enter the information and the brand
4 Print the PDF report. It includes the information of the brand.
5 Confirm the quotation and generate an invoice
6 Print the PDF report. It includes the information of the brand.

Point 3 enter the information of the brand. There is no field to enter brand information. Impossible to use

Missing dependency in sale_brand?

Odoo 15.0 completely updated.

Due to this line:

https://github.com/OCA/brand/blob/15.0/sale_brand/models/res_brand.py#L34

An error is raised on create a brand because module website is not installled.

This is the log:

Traceback (most recent call last):
File "/opt/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/opt/odoo/src/odoo/odoo/http.py", line 687, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/src/odoo/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/src/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/src/odoo/odoo/http.py", line 348, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/src/odoo/odoo/http.py", line 916, in call
return self.method(*args, **kw)
File "/opt/odoo/src/odoo/odoo/http.py", line 535, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/src/odoo/addons/web/controllers/main.py", line 1342, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/src/odoo/addons/web/controllers/main.py", line 1334, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo/src/odoo/odoo/api.py", line 464, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/opt/odoo/src/odoo/odoo/api.py", line 451, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/opt/odoo/src/odoo/odoo/models.py", line 6480, in onchange
record._onchange_eval(name, field_onchange[name], result)
File "/opt/odoo/src/odoo/odoo/models.py", line 6213, in _onchange_eval
method_res = method(self)
File "/opt/odoo/src/other-addons/sale_brand/models/res_brand.py", line 34, in _compute_terms_url
text = brand.website + brand.terms_page
Exception

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

Traceback (most recent call last):
File "/opt/odoo/src/odoo/odoo/http.py", line 643, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/src/odoo/odoo/http.py", line 301, in _handle_exception
raise exception.with_traceback(None) from new_cause
TypeError: unsupported operand type(s) for +: 'bool' and 'str'

Brand missing on create account.move

Module

account_brand

Describe the bug

During the creation of an invoice brand_id is not visible in the form view.

To Reproduce

Affected versions: 15.0
Steps to reproduce the behavior:

  1. Create new invoice
  2. Brand is missing in the form view during the create process

Expected behavior
Once a manual invoice is created brand_id should be visible in the form view

Additional context
Add any other context about the problem here. (e.g. OS, Python version, ...)

Brand "Create new" missing

Hi, tested this module, seems all is OK, except a fact that if I go here : "Go to Sales > Configuration > Products > Product Brands.
I dont have any Button to click on to "create new Brand....

Steps to reproduce the behavior:
1.Go to Sales App/Configuration/Products/Product brand
2. see the empty list, do not have button to create new brand

ODOO V16, EE, on premise, hosted on Ubuntu, almost empty with no user data.
brand

[13.0] product_brand poor performance when having many (250k) products

Not sure it can be improved in some way or it's a problem of our instance but: we have more than 250k products in database (many different machines and their spare parts) with one particular brand. When I try to open view listing the brands it takes ages to load. The same looooong waiting happens if I try to click on brand name in Product kanban view. Is the _compute_products_count to blame? Any help would be appreciated.

product_brand miss a related suppliers field

With B2B marketplaces emerging (ankorstore.com, faire.com, orderchamp.com, etc.) there is often more than one supplier for products and brands — sometimes, the brand itself can be one of them. Looking for brand suppliers from brand form is useful for retailers.

There is no need to record suppliers in brand, but recording brands in suppliers forms.

[RFC] - brand modules name and model name

Hi,

As a first step when we moved the brand modules to this new repository, I proposed #5 to have a separate model for brands and not use the res.partner.

As this refactoring is about to join the 12.0 and some questions are still outstanding and it's time to make a decision on these aspects before moving forward.

The main topics, I remember, we raised were:

  • modules name:
    • why not have base_brand instead of partner_brand? by @levkar link
    • What about sale_company_branding or sale_company_brand? by @pedrobaeza link
  • model name for brand

1- What do you think about this proposals?
2- Do you approve this changes?
3- Should we made this changes ASAP or we can keep them in the roadmap?

Kind regards.

cc/ @max3903 , @rafaelbn , @gva-acsone

[16.0][BUG][brand_external_report_layout] is_company_details_empty missing

Module

brand_external_layout

Describe the bug

Error when printing a PDF report with external layout (e.g. invoice pdf). Odoo added a field to res.company which is used in the external report XML, but the field doesn't exist yet on res.brand.
odoo/odoo@5db133d

To Reproduce

16.0
possible other versions if this field is backported

Steps to reproduce the behavior:

  1. Print any external report

Error log
RPC_ERROR

Odoo Server Error

Traceback (most recent call last):

  File "<199>", line 302, in template_199

  File "<199>", line 75, in template_199_content

AttributeError: 'res.brand' object has no attribute 'is_company_details_empty'

 

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

 

Traceback (most recent call last):

  File "/home/odoo/src/odoo/addons/web/controllers/report.py", line 113, in report_download

    response = self.report_routes(reportname, docids=docids, converter=converter, context=context)

  File "/home/odoo/src/odoo/odoo/http.py", line 697, in route_wrapper

    result = endpoint(self, *args, **params_ok)

  File "/home/odoo/src/odoo/addons/web/controllers/report.py", line 42, in report_routes

    pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0]

  File "/home/odoo/src/odoo/addons/account/models/ir_actions_report.py", line 61, in _render_qweb_pdf

    return super()._render_qweb_pdf(report_ref, res_ids=res_ids, data=data)

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_actions_report.py", line 807, in _render_qweb_pdf

    collected_streams = self._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)

  File "/home/odoo/src/odoo/addons/account_edi_ubl_cii/models/ir_actions_report.py", line 58, in _render_qweb_pdf_prepare_streams

    collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)

  File "/home/odoo/src/odoo/addons/account_edi/models/ir_actions_report.py", line 14, in _render_qweb_pdf_prepare_streams

    collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)

  File "/home/odoo/src/odoo/addons/account/models/ir_actions_report.py", line 20, in _render_qweb_pdf_prepare_streams

    return super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_actions_report.py", line 708, in _render_qweb_pdf_prepare_streams

    html = self.with_context(**additional_context)._render_qweb_html(report_ref, res_ids_wo_stream, data=data)[0]

  File "/home/odoo/src/enterprise/web_studio/models/ir_actions_report.py", line 19, in _render_qweb_html

    return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_actions_report.py", line 884, in _render_qweb_html

    return self._render_template(report.report_name, data), 'html'

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_actions_report.py", line 623, in _render_template

    return view_obj._render_template(template, values).encode()

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 2128, in _render_template

    return self.env['ir.qweb']._render(template, values)

  File "/home/odoo/src/odoo/odoo/tools/profiler.py", line 292, in _tracked_method_render

    return method_render(self, template, values, **options)

  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_qweb.py", line 580, in _render

    result = ''.join(rendering)

  File "<694>", line 90, in template_694

  File "<694>", line 72, in template_694_content

  File "<694>", line 60, in template_694_t_call_0

  File "<690>", line 2108, in template_690

  File "<690>", line 2097, in template_690_content

  File "<202>", line 150, in template_202

  File "<202>", line 106, in template_202_content

  File "<199>", line 308, in template_199

odoo.addons.base.models.ir_qweb.QWebException: Error while render the template

AttributeError: 'res.brand' object has no attribute 'is_company_details_empty'

Template: web.external_layout_boxed

Path: /t/div[1]/div/div/div[2]/div[2]/ul/li[1]

Node:

  • [17.0] brand/product_brand: Just installing the following DeprecationWarning: warning appears.

    Install 17.0

    Module

    Just install the module and read the log.

    Describe the bug

    the following warning appears.

    2024-04-01 22:51:33,665 1313001 WARNING databasename170 py.warnings: /home/nhomar/Documents/databasename17/odoo17/odoo/addons/base/models/ir_module.py:178: DeprecationWarning: XML declarations in HTML module descriptions are deprecated since Odoo 17, product_brand can just have a UTF8 description with not need for a declaration.
      File "/home/nhomar/Documents/databasename17/odoo17/./odoo-bin", line 8, in <module>
        odoo.cli.main()
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/cli/command.py", line 66, in main
        o.run(args)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/cli/server.py", line 179, in run
        main(args)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/cli/server.py", line 172, in main
        rc = odoo.service.server.start(preload=preload, stop=stop)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/service/server.py", line 1402, in start
        rc = server.run(preload, stop)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/service/server.py", line 579, in run
        rc = preload_registries(preload)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/service/server.py", line 1302, in preload_registries
        registry = Registry.new(dbname, update_module=update_module)
      File "<decorator-gen-16>", line 2, in new
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/tools/func.py", line 87, in locked
        return func(inst, *args, **kwargs)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/modules/registry.py", line 113, in new
        odoo.modules.load_modules(registry, force_demo, status, update_module)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/modules/loading.py", line 480, in load_modules
        processed_modules += load_marked_modules(env, graph,
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/modules/loading.py", line 364, in load_marked_modules
        loaded, processed = load_module_graph(
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/modules/loading.py", line 222, in load_module_graph
        module._check()
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/addons/base/models/ir_module.py", line 842, in _check
        if not module.description_html:
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/fields.py", line 1207, in __get__
        self.compute_value(recs)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/fields.py", line 1389, in compute_value
        records._compute_field_value(self)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/models.py", line 4869, in _compute_field_value
        fields.determine(field.compute, self)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/fields.py", line 102, in determine
        return needle(*args)
      File "/home/nhomar/Documents/databasename17/odoo17/odoo/addons/base/models/ir_module.py", line 178, in _get_desc
        warnings.warn(
     
    2024-04-01 22:51:33,673 1313001 INFO databasename170 odoo.modules.loading: loading product_brand/security/ir.model.access.csv 
    2024-04-01 22:51:33,678 1313001 WARNING databasename170 odoo.addons.base.models.ir_model: Rule product.brand.public has no group, this is a deprecated feature. Every access-granting rule should specify a group.
    

    To Reproduce

    Affected versions:

    Steps to reproduce the behavior:

    1. Install
    2. Read the log
    3. Warnings appear.

    Expected behavior
    Just fix the error

    Error in previsualizing layout and printing invoices

    When cofiguring the document layout, when you configure the Cahange Document Template to brand_external_layout, if you save it you have set the new layout, but when you go to change Document Template and Download PDF preview it shoyws you the standard layout and when you go back to configuration, you have the entry vaule for layout external_layout_standard.

    If you set the brand_external_layout on your brand setup, if you go to Customers - Inovices and you try to create an invoice, if you print the invoice you get the following error:

    RPC_ERROR
    Arbitrary Uncaught Python Exception
    500
    Internal Server Error
    The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
    The above server error caused the following client error:
    RPC_ERROR: Arbitrary Uncaught Python Exception
    RPCError@https://test.elogia-16.rapsodoo.com/web/assets/52050-c1ca215/web.assets_backend.min.js:989:274
    makeErrorFromResponse@https://test.elogia-16.rapsodoo.com/web/assets/52050-c1ca215/web.assets_backend.min.js:993:163
    download._download/</xhr.onload/decoder.onload@https://test.elogia-16.rapsodoo.com/web/assets/52050-c1ca215/web.assets_backend.min.js:981:7

    16.0

    The name of the module that has a bug.

    Can't see

    A clear and concise description of what the bug is.

    To Reproduce

    Affected versions:

    Steps to reproduce the behavior:

    1. Install apps: "Account Brand" / "Brand" / Brand External Report Layout
    2. Setup a Brand: Settings - Users & Companies - Brands
    3. Create a Brand, set the entrance for Change Documente Tempalte to brand_external_layout
    4. Change the Document Template with the required logo and Save
    5. Clicj to Download PDF Preview and the pdf generated doe not take the new layout it downloads standard
    6. Create a new invoice
    7. Print to preview the invoice layout
    8. you get the error shown earlier

    Expected behavior
    Get the new layout configured with the new logo and don't get an error message

    Additional context
    Add any other context about the problem here. (e.g. OS, Python version, ...)

    [RFC] - partner_brand usage

    I proposed this PR #16 that simplify the customization of the external layout.

    With this module, all custom layouts will display brand information out of the box.

    This module make the customization in external_layout_standard useless.
    Like this is the only feature that in partner_brand module I propose to remove it (or find a new ideas for its usage) if the #16 is accepted.

    cc: @sbidoul , @max3903 , @osi-scampbell

    [16.0] Update to `transfer_field_to_modifiers` in Odoo Core

    Odoo changed the method signature for transfer_field_to_modifiers on the model ir.ui.view in this commit: odoo/odoo@5a68d25

    Module

    brand

    Describe the bug

    A traceback appears we try to open the tree or form view of a model that's mixed in with res.brand.mixin.

    To Reproduce

    Affected versions: 16.0

    Steps to reproduce the behavior:

    1. open the tree or form view of a model that's mixed in with res.brand.mixin.

    [17.0] brand/product_brand: Error while importing module 'product_brand'.

    Module

    product_brand

    Describe the bug

    Error while importing module 'product_brand'.
     Impossible de charger le module product_brand échec : fichier /tmp/tmp2dgvn5q8/product_brand/security/ir.model.access.csv :
    Aucun enregistrement trouvé pour id externe 'model_product_brand' dans le champ 'Model'
    Aucun enregistrement trouvé pour id externe 'model_product_brand' dans le champ 'Model'
    Valeur requise manquante pour le champ 'Model' (model_id)
    Valeur requise manquante pour le champ 'Model' (model_id) 
    

    To Reproduce

    Affected versions: 17.0

    Steps to reproduce the behavior:

    1. Install product_brand
    2. Cannot install
    3. Get the above error

    Expected behavior

    1. Install product_brand
    2. The app is installed

    Additional context
    OS: Arch Linux
    Python: 3.10

    Clicking any brand link on the product_template kanban view results in error

    Module

    product_brand

    Describe the bug

    Clicking any brand link on the product_template kanban view results in the error bellow:

    EvalError: Can not evaluate python expression: ([('product_ids', 'in', id)])
    Error: Name 'id' is not defined
        at evaluateExpr (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:3029:54)
        at _preprocessAction (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:10127:150)
        at doAction (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:10209:170)
        at async Object.doActionButton (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:10217:196)
        at async execute (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:9843:293)
        at async executeButtonCallback (http://45.33.98.35/web/assets/0ddd052/web.assets_web.min.js:9836:34)
    

    To Reproduce

    Affected versions:
    Odoo 17

    Steps to reproduce the behavior:

    1. Navigate to Products - Products section
    2. Make sure you are on the Kanban view
    3. Click on any product brand link

    Expected behavior
    Action should open a Product Brand page with the filter applied to the selected brand, without throwing an error. Bug seems to have been introduced in this line

    [12.0] Error on timesheet report

    Hello,

    I have the error bellow when printing the timesheet qweb report.
    Other reports work fine.
    Maybe it's related with the account.analytic.line model ?

    I have this error on a clean database with only hr_timesheet and following brand modules installed :
    brand, brand_external_report_layout, account_brand and sale_brand.

    Edit : narrowed it down to brand_external_report_layout

    Thanks for your help

    AttributeError: 'NoneType' object has no attribute 'fields_get'
    
    Error to render compiling AST
    AttributeError: 'NoneType' object has no attribute 'fields_get'
    Template: web.external_layout
    Path: /templates/t/t[3]
    Node: <t t-if="'brand_id' in o.fields_get() and o.brand_id and o.brand_id.external_report_layout_id" t-call="{{o.brand_id.external_report_layout_id.key}}">
                    <t t-set="company" t-value="o.brand_id.sudo()"/>
                    <t t-raw="0"/>
                </t>
    

    "Post Journal Entries" in Expenses module returns missing brand if expense is Paid By "Company"

    Module

    Expenses module

    Describe the bug

    When Brand module is installed, with Brand Use Level set to "Required", it is not possible to post an expense report if the expense report is set to "Paid By" "Company".

    To Reproduce

    Affected versions:
    Odoo 16 and the following modules
    {
    "name": "Brand",
    "version": "16.0.1.0.2",
    }
    {
    'name': 'Sales Expense',
    'version': '1.0',
    }
    {
    'name': 'Expenses',
    'version': '2.0',
    }
    {
    'name' : 'Invoicing',
    'version' : '1.2',
    }

    Steps to reproduce the behavior:

    1. Enable brand.
    2. Create a brand layout for it (probably not required).
    3. Set Brand Use Level to "Required" in General Settings.
    4. Create an expense in the expense module. Set the expense as paid by the company.
    5. Add the expense to a report, ensure it is set as Paid By "Company" (you can't mix paid by company and paid by paid by "Employee" anyway).
    6. Approve the report.
    7. With the expense report in status "Approved" press "Post Journal Entries".
    8. You get an error that "Brand is required" and you cannot post the entry.

    Expected behavior
    There should either be a select to pick the brand in the report view OR the brand should be considered not needed as probably it has no corresponding functionality in the accounting module (apart if one has brand accounting in use).

    Additional context
    GNU/Linux, Devuan, Python 3.11.2

    Workaround
    Set "Brand Use Level" to "Optional", post entries, set back "Brand Use Level" to "Required".

    Backtrace

    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 1584, in _serve_db
        return service_model.retrying(self._serve_ir_http, self.env)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 133, in retrying
        result = func()
                 ^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 1611, in _serve_ir_http
        response = self.dispatcher.dispatch(rule.endpoint, args)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 1815, in dispatch
        result = self.request.registry['ir.http']._dispatch(endpoint)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
        result = endpoint(**request.params)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 697, in route_wrapper
        result = endpoint(self, *args, **params_ok)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 46, in call_button
        action = self._call_kw(model, method, args, kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
        return call_kw(request.env[model], method, args, kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 461, in call_kw
        result = _call_kw_multi(method, model, args, kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 448, in _call_kw_multi
        result = method(recs, *args, **kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/hr_expense/models/hr_expense.py", line 1100, in action_sheet_move_create
        res = expense_line_ids.with_context(clean_context(self.env.context)).action_move_create()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/sale_expense/models/hr_expense.py", line 58, in action_move_create
        return super(Expense, self).action_move_create()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/hr_expense/models/hr_expense.py", line 640, in action_move_create
        return self.sheet_id._do_create_moves() # backport
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/hr_expense/models/hr_expense.py", line 1123, in _do_create_moves
        payments = self.env['account.payment'].with_context(**skip_context).create([sheet._prepare_payment_vals() for sheet in company_account_sheets])
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/account/models/account_payment.py", line 695, in create
        .create([{'name': '/', **vals} for vals in vals_list])\
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 258, in create
        threads = super(MailThread, self).create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_fields.py", line 669, in create
        recs = super().create(vals_list)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/models.py", line 3943, in create
        parents = self.env[model_name].create([
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/account/models/account_move.py", line 2260, in create
        moves = super().create([self._sanitize_vals(vals) for vals in vals_list])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 258, in create
        threads = super(MailThread, self).create(vals_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_fields.py", line 669, in create
        recs = super().create(vals_list)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/decorator.py", line 232, in fun
        return caller(func, *(extras + args), **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 410, in _model_create_multi
        return create(self, arg)
               ^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/models.py", line 3951, in create
        records = self._create(data_list)
                  ^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/odoo/models.py", line 4203, in _create
        records._validate_fields(name for data in data_list for name in data['stored'])
      File "/usr/lib/python3/dist-packages/odoo/models.py", line 1348, in _validate_fields
        check(self)
      File "/usr/lib/python3/dist-packages/odoo/addons/brand/models/res_brand_mixin.py", line 38, in _check_brand_requirement
        raise ValidationError(_("Brand is required"))
    odoo.exceptions.ValidationError: Brand is required

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.