[ADD] stock_picking_operations_multilang

This commit is contained in:
Aungkokolin1997
2024-06-20 05:45:47 +00:00
parent a6254841e8
commit 0f558904b2
18 changed files with 720 additions and 0 deletions

View File

@@ -0,0 +1 @@
../../../../stock_picking_operations_multilang

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1,92 @@
==================================
Stock Picking Operations Multilang
==================================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:328267fa42d8f3c10c273b62c58d184abd557aded9436a0a43797eff64bc1658
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--reporting-lightgray.png?logo=github
:target: https://github.com/OCA/stock-logistics-reporting/tree/16.0/stock_picking_operations_multilang
:alt: OCA/stock-logistics-reporting
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/stock-logistics-reporting-16-0/stock-logistics-reporting-16-0-stock_picking_operations_multilang
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-reporting&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows printing the Picking Operations report in the partner's or warehouse's language, configurable at the warehouse level.
**Table of contents**
.. contents::
:local:
Use Cases / Context
===================
When a company operates internationally, employees from different countries may encounter language barriers.
For instance, a warehouse manager who only understands his native language might face difficulties
if the Picking Operations report is in a different language. This module addresses such scenarios
by enabling the customization of the Picking Operations report language, ensuring it matches
the language preferences of the warehouse manager or the partner.
Configuration
=============
To set up a specific language for Picking Operations:
* Go to Inventory > Configuration > Warehouses.
* Select the warehouse for which you want to set up the language for the Picking Operations report.
* Choose the Picking Operation Language option. There are two options:
* Partner: It will use the language of the partner for the picking. If there is no partner for the picking, it will use the standard behavior of Odoo.
* Warehouse: If you select this option, you must fill in the Warehouse Language field, and this will be applied to Picking Operations.
* If left blank, it will use the standard behavior of Odoo.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-reporting/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/stock-logistics-reporting/issues/new?body=module:%20stock_picking_operations_multilang%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Quartile
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/stock-logistics-reporting <https://github.com/OCA/stock-logistics-reporting/tree/16.0/stock_picking_operations_multilang>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,2 @@
from . import models
from .hooks import uninstall_hook

View File

@@ -0,0 +1,19 @@
# Copyright 2024 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Stock Picking Operations Multilang",
"version": "16.0.1.0.0",
"category": "Reporting",
"website": "https://github.com/OCA/stock-logistics-reporting",
"author": "Quartile, Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": ["stock"],
"data": [
"views/stock_warehouse_views.xml",
"reports/picking_operations_report.xml",
"reports/report_picking_with_language.xml",
],
"uninstall_hook": "uninstall_hook",
"installable": True,
}

View File

@@ -0,0 +1,8 @@
from odoo.api import SUPERUSER_ID, Environment
def uninstall_hook(cr, registry):
env = Environment(cr, SUPERUSER_ID, {})
report_action = env.ref("stock.action_report_picking", raise_if_not_found=False)
if report_action:
report_action.write({"report_name": "stock.report_picking"})

View File

@@ -0,0 +1,2 @@
from . import stock_picking
from . import stock_warehouse

View File

@@ -0,0 +1,16 @@
# Copyright 2024 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models
class StockPicking(models.Model):
_inherit = "stock.picking"
def _get_picking_operations_lang(self):
warehouse = self.picking_type_id.warehouse_id
if warehouse.picking_operation_language_option == "partner" and self.partner_id:
return self.partner_id.lang
if warehouse.picking_operation_language_option == "warehouse":
return warehouse.warehouse_language
return self.env.user.lang

View File

@@ -0,0 +1,31 @@
# Copyright 2024 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class Warehouse(models.Model):
_inherit = "stock.warehouse"
@api.model
def _lang_get(self):
return self.env["res.lang"].get_installed()
picking_operation_language_option = fields.Selection(
[("partner", "Partner"), ("warehouse", "Warehouse")],
help="Partner: Picking Operations report will use the partner's language.\n"
"Warehouse: Picking Operations report will use the language specified in "
"the Warehouse Language field.",
)
warehouse_language = fields.Selection(
_lang_get,
default=lambda self: self.env.lang,
)
active_lang_count = fields.Integer(compute="_compute_active_lang_count")
@api.depends("warehouse_language")
def _compute_active_lang_count(self):
lang_count = len(self.env["res.lang"].get_installed())
for rec in self:
rec.active_lang_count = lang_count

View File

@@ -0,0 +1,8 @@
To set up a specific language for Picking Operations:
* Go to Inventory > Configuration > Warehouses.
* Select the warehouse for which you want to set up the language for the Picking Operations report.
* Choose the Picking Operation Language option. There are two options:
* Partner: It will use the language of the partner for the picking. If there is no partner for the picking, it will use the standard behavior of Odoo.
* Warehouse: If you select this option, you must fill in the Warehouse Language field, and this will be applied to Picking Operations.
* If left blank, it will use the standard behavior of Odoo.

View File

@@ -0,0 +1,5 @@
When a company operates internationally, employees from different countries may encounter language barriers.
For instance, a warehouse manager who only understands his native language might face difficulties
if the Picking Operations report is in a different language. This module addresses such scenarios
by enabling the customization of the Picking Operations report language, ensuring it matches
the language preferences of the warehouse manager or the partner.

View File

@@ -0,0 +1 @@
This module allows printing the Picking Operations report in the partner's or warehouse's language, configurable at the warehouse level.

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="stock.action_report_picking" model="ir.actions.report">
<field
name="report_name"
>stock_picking_operations_multilang.report_picking_with_language</field>
</record>
</odoo>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template id="report_picking_with_language">
<t t-foreach="docs" t-as="o">
<t t-set="lang" t-value="o._get_picking_operations_lang()" />
<t t-call="stock.report_picking" t-lang="lang" />
</t>
</template>
</odoo>

View File

@@ -0,0 +1,441 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Stock Picking Operations Multilang</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="stock-picking-operations-multilang">
<h1 class="title">Stock Picking Operations Multilang</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:328267fa42d8f3c10c273b62c58d184abd557aded9436a0a43797eff64bc1658
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-logistics-reporting/tree/16.0/stock_picking_operations_multilang"><img alt="OCA/stock-logistics-reporting" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--reporting-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-reporting-16-0/stock-logistics-reporting-16-0-stock_picking_operations_multilang"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-reporting&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows printing the Picking Operations report in the partners or warehouses language, configurable at the warehouse level.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#use-cases-context" id="toc-entry-1">Use Cases / Context</a></li>
<li><a class="reference internal" href="#configuration" id="toc-entry-2">Configuration</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="use-cases-context">
<h1><a class="toc-backref" href="#toc-entry-1">Use Cases / Context</a></h1>
<p>When a company operates internationally, employees from different countries may encounter language barriers.
For instance, a warehouse manager who only understands his native language might face difficulties
if the Picking Operations report is in a different language. This module addresses such scenarios
by enabling the customization of the Picking Operations report language, ensuring it matches
the language preferences of the warehouse manager or the partner.</p>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-2">Configuration</a></h1>
<p>To set up a specific language for Picking Operations:</p>
<ul class="simple">
<li>Go to Inventory &gt; Configuration &gt; Warehouses.</li>
<li>Select the warehouse for which you want to set up the language for the Picking Operations report.</li>
<li><dl class="first docutils">
<dt>Choose the Picking Operation Language option. There are two options:</dt>
<dd><ul class="first last">
<li>Partner: It will use the language of the partner for the picking. If there is no partner for the picking, it will use the standard behavior of Odoo.</li>
<li>Warehouse: If you select this option, you must fill in the Warehouse Language field, and this will be applied to Picking Operations.</li>
<li>If left blank, it will use the standard behavior of Odoo.</li>
</ul>
</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/stock-logistics-reporting/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/stock-logistics-reporting/issues/new?body=module:%20stock_picking_operations_multilang%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Quartile</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/stock-logistics-reporting/tree/16.0/stock_picking_operations_multilang">OCA/stock-logistics-reporting</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
from . import test_stock_picking_operations_multilang

View File

@@ -0,0 +1,53 @@
# Copyright 2024 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase
class TestPickingOperationsLanguage(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
ja = (
cls.env["res.lang"]
.with_context(active_test=False)
.search([("code", "=", "ja_JP")])
)
cls.env["base.language.install"].create({"lang_ids": ja.ids}).lang_install()
cls.partner = cls.env["res.partner"].create(
{"name": "Test Partner", "lang": "ja_JP"}
)
cls.picking_type_in = cls.env.ref("stock.picking_type_in")
cls.picking = cls.env["stock.picking"].create(
{
"partner_id": cls.partner.id,
"picking_type_id": cls.picking_type_in.id,
}
)
cls.warehouse = cls.picking_type_in.warehouse_id
cls.report = cls.env.ref("stock.action_report_picking")
def test_stock_picking_operations_language(self):
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="en-US"', str(report_result[0]))
self.warehouse.picking_operation_language_option = "partner"
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="ja-JP"', str(report_result[0]))
self.partner.lang = "en_US"
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="en-US"', str(report_result[0]))
self.picking.partner_id = False
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="en-US"', str(report_result[0]))
self.warehouse.picking_operation_language_option = "warehouse"
self.warehouse.warehouse_language = "ja_JP"
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="ja-JP"', str(report_result[0]))
self.warehouse.warehouse_language = "en_US"
report_result = self.report._render_qweb_pdf(self.report.id, [self.picking.id])
self.assertIn('lang="en-US"', str(report_result[0]))

View File

@@ -0,0 +1,17 @@
<odoo>
<record id="view_warehouse_inherit" model="ir.ui.view">
<field name="name">stock.warehouse.inherit</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse" />
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="picking_operation_language_option" />
<field
name="warehouse_language"
attrs="{'invisible': ['|', ('active_lang_count', '&lt;=', 1), ('picking_operation_language_option', '!=', 'warehouse')], 'required': [('picking_operation_language_option', '=', 'warehouse')]}"
/>
<field name="active_lang_count" invisible="1" />
</xpath>
</field>
</record>
</odoo>