odoo-addon-report-partner-address 16.0.1.0.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,110 @@
1
+ .. image:: https://odoo-community.org/readme-banner-image
2
+ :target: https://odoo-community.org/get-involved?utm_source=readme
3
+ :alt: Odoo Community Association
4
+
5
+ ======================
6
+ Report Partner Address
7
+ ======================
8
+
9
+ ..
10
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11
+ !! This file is generated by oca-gen-addon-readme !!
12
+ !! changes will be overwritten. !!
13
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
+ !! source digest: sha256:7c019dbfd9524b0b0daaaafa5fbbc77df627c40d3bb1e1b6bf9bea2f5a224972
15
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
+
17
+ .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
18
+ :target: https://odoo-community.org/page/development-status
19
+ :alt: Beta
20
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
21
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
22
+ :alt: License: AGPL-3
23
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
24
+ :target: https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address
25
+ :alt: OCA/reporting-engine
26
+ .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
27
+ :target: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_partner_address
28
+ :alt: Translate me on Weblate
29
+ .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
30
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=16.0
31
+ :alt: Try me on Runboat
32
+
33
+ |badge1| |badge2| |badge3| |badge4| |badge5|
34
+
35
+ Adds a translatable Address Details field on partners for use in reports
36
+ and portal.
37
+
38
+ Odoo prints documents in the partner's language but lacks a standard way
39
+ to display addresses in multiple languages. This module fills that gap.
40
+
41
+ **Table of contents**
42
+
43
+ .. contents::
44
+ :local:
45
+
46
+ Usage
47
+ =====
48
+
49
+ - Go to the partner record.
50
+ - Fill in Address Details, including translations for the active
51
+ languages.
52
+
53
+ The address in reports and portal pages will use the value from Address
54
+ Details.
55
+
56
+ If Address Details is left blank, the standard address format is used.
57
+
58
+ Bug Tracker
59
+ ===========
60
+
61
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
62
+ In case of trouble, please check there if your issue has already been reported.
63
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
64
+ `feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_partner_address%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
65
+
66
+ Do not contact contributors directly about support or help with technical issues.
67
+
68
+ Credits
69
+ =======
70
+
71
+ Authors
72
+ -------
73
+
74
+ * Quartile
75
+
76
+ Contributors
77
+ ------------
78
+
79
+ - Quartile <https://www.quartile.co>
80
+
81
+ - Yoshi Tashiro
82
+ - Aung Ko Ko Lin
83
+
84
+ Maintainers
85
+ -----------
86
+
87
+ This module is maintained by the OCA.
88
+
89
+ .. image:: https://odoo-community.org/logo.png
90
+ :alt: Odoo Community Association
91
+ :target: https://odoo-community.org
92
+
93
+ OCA, or the Odoo Community Association, is a nonprofit organization whose
94
+ mission is to support the collaborative development of Odoo features and
95
+ promote its widespread use.
96
+
97
+ .. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px
98
+ :target: https://github.com/yostashiro
99
+ :alt: yostashiro
100
+ .. |maintainer-aungkokolin1997| image:: https://github.com/aungkokolin1997.png?size=40px
101
+ :target: https://github.com/aungkokolin1997
102
+ :alt: aungkokolin1997
103
+
104
+ Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
105
+
106
+ |maintainer-yostashiro| |maintainer-aungkokolin1997|
107
+
108
+ This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address>`_ project on GitHub.
109
+
110
+ You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -0,0 +1 @@
1
+ from . import models
@@ -0,0 +1,18 @@
1
+ # Copyright 2025 Quartile (https://www.quartile.co)
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+ {
4
+ "name": "Report Partner Address",
5
+ "summary": "Translatable partner address details for reports and portal",
6
+ "version": "16.0.1.0.0",
7
+ "author": "Quartile, Odoo Community Association (OCA)",
8
+ "category": "Reporting",
9
+ "website": "https://github.com/OCA/reporting-engine",
10
+ "license": "AGPL-3",
11
+ "depends": ["web"],
12
+ "data": [
13
+ "views/ir_qweb_widget_templates.xml",
14
+ "views/res_partner_views.xml",
15
+ ],
16
+ "maintainers": ["yostashiro", "aungkokolin1997"],
17
+ "installable": True,
18
+ }
@@ -0,0 +1,39 @@
1
+ # Translation of Odoo Server.
2
+ # This file contains the translation of the following modules:
3
+ # * report_partner_address
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: Odoo Server 16.0\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "PO-Revision-Date: 2026-01-13 17:44+0000\n"
10
+ "Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
11
+ "Language-Team: none\n"
12
+ "Language: it\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: \n"
16
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
+ "X-Generator: Weblate 5.10.4\n"
18
+
19
+ #. module: report_partner_address
20
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_partner__address_details
21
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_users__address_details
22
+ msgid "Address Details"
23
+ msgstr "Dettagli indirizzo"
24
+
25
+ #. module: report_partner_address
26
+ #: model:ir.model,name:report_partner_address.model_res_partner
27
+ msgid "Contact"
28
+ msgstr "Contatto"
29
+
30
+ #. module: report_partner_address
31
+ #: model:ir.model.fields,help:report_partner_address.field_res_partner__address_details
32
+ #: model:ir.model.fields,help:report_partner_address.field_res_users__address_details
33
+ msgid ""
34
+ "Custom address format used in reports and portal pages. When set, this "
35
+ "replaces the standard address format for external display."
36
+ msgstr ""
37
+ "Formato indirizzo cliente utilizzato nei resoconti e nella pagine portale. "
38
+ "Quando impostato, sostituisce il formato standard indirizzo per "
39
+ "visualizzazione esterna."
@@ -0,0 +1,38 @@
1
+ # Translation of Odoo Server.
2
+ # This file contains the translation of the following modules:
3
+ # * report_partner_address
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: Odoo Server 16.0+e\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "POT-Creation-Date: 2025-12-21 08:50+0000\n"
10
+ "PO-Revision-Date: 2025-12-21 08:50+0000\n"
11
+ "Last-Translator: \n"
12
+ "Language-Team: \n"
13
+ "Language: \n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: \n"
17
+ "Plural-Forms: \n"
18
+
19
+ #. module: report_partner_address
20
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_partner__address_details
21
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_users__address_details
22
+ msgid "Address Details"
23
+ msgstr "アドレス詳細"
24
+
25
+ #. module: report_partner_address
26
+ #: model:ir.model,name:report_partner_address.model_res_partner
27
+ msgid "Contact"
28
+ msgstr "連絡先"
29
+
30
+ #. module: report_partner_address
31
+ #: model:ir.model.fields,help:report_partner_address.field_res_partner__address_details
32
+ #: model:ir.model.fields,help:report_partner_address.field_res_users__address_details
33
+ msgid ""
34
+ "Custom address format used in reports and portal pages. When set, this "
35
+ "replaces the standard address format for external display."
36
+ msgstr ""
37
+ "レポートやポータルページに適用されるアドレスフォーマット。設定されている場"
38
+ "合、対外表示用に標準のアドレスフォーマットがその内容で置き換えられます。"
@@ -0,0 +1,33 @@
1
+ # Translation of Odoo Server.
2
+ # This file contains the translation of the following modules:
3
+ # * report_partner_address
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: Odoo Server 16.0\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "Last-Translator: \n"
10
+ "Language-Team: \n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: \n"
14
+ "Plural-Forms: \n"
15
+
16
+ #. module: report_partner_address
17
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_partner__address_details
18
+ #: model:ir.model.fields,field_description:report_partner_address.field_res_users__address_details
19
+ msgid "Address Details"
20
+ msgstr ""
21
+
22
+ #. module: report_partner_address
23
+ #: model:ir.model,name:report_partner_address.model_res_partner
24
+ msgid "Contact"
25
+ msgstr ""
26
+
27
+ #. module: report_partner_address
28
+ #: model:ir.model.fields,help:report_partner_address.field_res_partner__address_details
29
+ #: model:ir.model.fields,help:report_partner_address.field_res_users__address_details
30
+ msgid ""
31
+ "Custom address format used in reports and portal pages. When set, this "
32
+ "replaces the standard address format for external display."
33
+ msgstr ""
@@ -0,0 +1 @@
1
+ from . import res_partner
@@ -0,0 +1,56 @@
1
+ # Copyright 2025 Quartile (https://www.quartile.co)
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+
4
+ from odoo import api, fields, models
5
+
6
+
7
+ class ResPartner(models.Model):
8
+ _inherit = "res.partner"
9
+
10
+ address_details = fields.Text(
11
+ compute="_compute_address_details",
12
+ store=True,
13
+ readonly=False,
14
+ translate=True,
15
+ help="Custom address format used in reports and portal pages. "
16
+ "When set, this replaces the standard address format for external display.",
17
+ )
18
+
19
+ @api.depends("parent_id.address_details", "type")
20
+ def _compute_address_details(self):
21
+ for partner in self:
22
+ if partner.parent_id and partner.type == "contact":
23
+ partner.address_details = partner.parent_id.address_details
24
+ # No translation sync here to avoid unnecessary DB operations
25
+
26
+ @api.model
27
+ def _address_fields(self):
28
+ """For address_details to be synced from parent."""
29
+ return super()._address_fields() + ["address_details"]
30
+
31
+ def _fields_sync(self, values):
32
+ """Copy address_details translations from parent for contacts."""
33
+ result = super()._fields_sync(values)
34
+ parent = self.parent_id
35
+ if parent and self.type == "contact" and parent.address_details:
36
+ # Copy JSONB translations directly to avoid recursion
37
+ self.env.cr.execute(
38
+ """
39
+ UPDATE res_partner
40
+ SET address_details = p.address_details
41
+ FROM res_partner p
42
+ WHERE res_partner.id = %(partner_id)s
43
+ AND p.id = %(parent_id)s
44
+ """,
45
+ {"partner_id": self.id, "parent_id": parent.id},
46
+ )
47
+ return result
48
+
49
+ def _prepare_display_address(self, without_company=False):
50
+ self.ensure_one()
51
+ address_format, args = super()._prepare_display_address(
52
+ without_company=without_company
53
+ )
54
+ if self.address_details:
55
+ address_format = self.address_details
56
+ return address_format, args
@@ -0,0 +1,3 @@
1
+ - Quartile \<<https://www.quartile.co>\>
2
+ - Yoshi Tashiro
3
+ - Aung Ko Ko Lin
@@ -0,0 +1,4 @@
1
+ Adds a translatable Address Details field on partners for use in reports and portal.
2
+
3
+ Odoo prints documents in the partner's language but lacks a standard way to display
4
+ addresses in multiple languages. This module fills that gap.
@@ -0,0 +1,6 @@
1
+ - Go to the partner record.
2
+ - Fill in Address Details, including translations for the active languages.
3
+
4
+ The address in reports and portal pages will use the value from Address Details.
5
+
6
+ If Address Details is left blank, the standard address format is used.
@@ -0,0 +1,450 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
+ <meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
6
+ <title>README.rst</title>
7
+ <style type="text/css">
8
+
9
+ /*
10
+ :Author: David Goodger (goodger@python.org)
11
+ :Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
12
+ :Copyright: This stylesheet has been placed in the public domain.
13
+
14
+ Default cascading style sheet for the HTML output of Docutils.
15
+ Despite the name, some widely supported CSS2 features are used.
16
+
17
+ See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
18
+ customize this style sheet.
19
+ */
20
+
21
+ /* used to remove borders from tables and images */
22
+ .borderless, table.borderless td, table.borderless th {
23
+ border: 0 }
24
+
25
+ table.borderless td, table.borderless th {
26
+ /* Override padding for "table.docutils td" with "! important".
27
+ The right padding separates the table cells. */
28
+ padding: 0 0.5em 0 0 ! important }
29
+
30
+ .first {
31
+ /* Override more specific margin styles with "! important". */
32
+ margin-top: 0 ! important }
33
+
34
+ .last, .with-subtitle {
35
+ margin-bottom: 0 ! important }
36
+
37
+ .hidden {
38
+ display: none }
39
+
40
+ .subscript {
41
+ vertical-align: sub;
42
+ font-size: smaller }
43
+
44
+ .superscript {
45
+ vertical-align: super;
46
+ font-size: smaller }
47
+
48
+ a.toc-backref {
49
+ text-decoration: none ;
50
+ color: black }
51
+
52
+ blockquote.epigraph {
53
+ margin: 2em 5em ; }
54
+
55
+ dl.docutils dd {
56
+ margin-bottom: 0.5em }
57
+
58
+ object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
59
+ overflow: hidden;
60
+ }
61
+
62
+ /* Uncomment (and remove this text!) to get bold-faced definition list terms
63
+ dl.docutils dt {
64
+ font-weight: bold }
65
+ */
66
+
67
+ div.abstract {
68
+ margin: 2em 5em }
69
+
70
+ div.abstract p.topic-title {
71
+ font-weight: bold ;
72
+ text-align: center }
73
+
74
+ div.admonition, div.attention, div.caution, div.danger, div.error,
75
+ div.hint, div.important, div.note, div.tip, div.warning {
76
+ margin: 2em ;
77
+ border: medium outset ;
78
+ padding: 1em }
79
+
80
+ div.admonition p.admonition-title, div.hint p.admonition-title,
81
+ div.important p.admonition-title, div.note p.admonition-title,
82
+ div.tip p.admonition-title {
83
+ font-weight: bold ;
84
+ font-family: sans-serif }
85
+
86
+ div.attention p.admonition-title, div.caution p.admonition-title,
87
+ div.danger p.admonition-title, div.error p.admonition-title,
88
+ div.warning p.admonition-title, .code .error {
89
+ color: red ;
90
+ font-weight: bold ;
91
+ font-family: sans-serif }
92
+
93
+ /* Uncomment (and remove this text!) to get reduced vertical space in
94
+ compound paragraphs.
95
+ div.compound .compound-first, div.compound .compound-middle {
96
+ margin-bottom: 0.5em }
97
+
98
+ div.compound .compound-last, div.compound .compound-middle {
99
+ margin-top: 0.5em }
100
+ */
101
+
102
+ div.dedication {
103
+ margin: 2em 5em ;
104
+ text-align: center ;
105
+ font-style: italic }
106
+
107
+ div.dedication p.topic-title {
108
+ font-weight: bold ;
109
+ font-style: normal }
110
+
111
+ div.figure {
112
+ margin-left: 2em ;
113
+ margin-right: 2em }
114
+
115
+ div.footer, div.header {
116
+ clear: both;
117
+ font-size: smaller }
118
+
119
+ div.line-block {
120
+ display: block ;
121
+ margin-top: 1em ;
122
+ margin-bottom: 1em }
123
+
124
+ div.line-block div.line-block {
125
+ margin-top: 0 ;
126
+ margin-bottom: 0 ;
127
+ margin-left: 1.5em }
128
+
129
+ div.sidebar {
130
+ margin: 0 0 0.5em 1em ;
131
+ border: medium outset ;
132
+ padding: 1em ;
133
+ background-color: #ffffee ;
134
+ width: 40% ;
135
+ float: right ;
136
+ clear: right }
137
+
138
+ div.sidebar p.rubric {
139
+ font-family: sans-serif ;
140
+ font-size: medium }
141
+
142
+ div.system-messages {
143
+ margin: 5em }
144
+
145
+ div.system-messages h1 {
146
+ color: red }
147
+
148
+ div.system-message {
149
+ border: medium outset ;
150
+ padding: 1em }
151
+
152
+ div.system-message p.system-message-title {
153
+ color: red ;
154
+ font-weight: bold }
155
+
156
+ div.topic {
157
+ margin: 2em }
158
+
159
+ h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
160
+ h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
161
+ margin-top: 0.4em }
162
+
163
+ h1.title {
164
+ text-align: center }
165
+
166
+ h2.subtitle {
167
+ text-align: center }
168
+
169
+ hr.docutils {
170
+ width: 75% }
171
+
172
+ img.align-left, .figure.align-left, object.align-left, table.align-left {
173
+ clear: left ;
174
+ float: left ;
175
+ margin-right: 1em }
176
+
177
+ img.align-right, .figure.align-right, object.align-right, table.align-right {
178
+ clear: right ;
179
+ float: right ;
180
+ margin-left: 1em }
181
+
182
+ img.align-center, .figure.align-center, object.align-center {
183
+ display: block;
184
+ margin-left: auto;
185
+ margin-right: auto;
186
+ }
187
+
188
+ table.align-center {
189
+ margin-left: auto;
190
+ margin-right: auto;
191
+ }
192
+
193
+ .align-left {
194
+ text-align: left }
195
+
196
+ .align-center {
197
+ clear: both ;
198
+ text-align: center }
199
+
200
+ .align-right {
201
+ text-align: right }
202
+
203
+ /* reset inner alignment in figures */
204
+ div.align-right {
205
+ text-align: inherit }
206
+
207
+ /* div.align-center * { */
208
+ /* text-align: left } */
209
+
210
+ .align-top {
211
+ vertical-align: top }
212
+
213
+ .align-middle {
214
+ vertical-align: middle }
215
+
216
+ .align-bottom {
217
+ vertical-align: bottom }
218
+
219
+ ol.simple, ul.simple {
220
+ margin-bottom: 1em }
221
+
222
+ ol.arabic {
223
+ list-style: decimal }
224
+
225
+ ol.loweralpha {
226
+ list-style: lower-alpha }
227
+
228
+ ol.upperalpha {
229
+ list-style: upper-alpha }
230
+
231
+ ol.lowerroman {
232
+ list-style: lower-roman }
233
+
234
+ ol.upperroman {
235
+ list-style: upper-roman }
236
+
237
+ p.attribution {
238
+ text-align: right ;
239
+ margin-left: 50% }
240
+
241
+ p.caption {
242
+ font-style: italic }
243
+
244
+ p.credits {
245
+ font-style: italic ;
246
+ font-size: smaller }
247
+
248
+ p.label {
249
+ white-space: nowrap }
250
+
251
+ p.rubric {
252
+ font-weight: bold ;
253
+ font-size: larger ;
254
+ color: maroon ;
255
+ text-align: center }
256
+
257
+ p.sidebar-title {
258
+ font-family: sans-serif ;
259
+ font-weight: bold ;
260
+ font-size: larger }
261
+
262
+ p.sidebar-subtitle {
263
+ font-family: sans-serif ;
264
+ font-weight: bold }
265
+
266
+ p.topic-title {
267
+ font-weight: bold }
268
+
269
+ pre.address {
270
+ margin-bottom: 0 ;
271
+ margin-top: 0 ;
272
+ font: inherit }
273
+
274
+ pre.literal-block, pre.doctest-block, pre.math, pre.code {
275
+ margin-left: 2em ;
276
+ margin-right: 2em }
277
+
278
+ pre.code .ln { color: gray; } /* line numbers */
279
+ pre.code, code { background-color: #eeeeee }
280
+ pre.code .comment, code .comment { color: #5C6576 }
281
+ pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
282
+ pre.code .literal.string, code .literal.string { color: #0C5404 }
283
+ pre.code .name.builtin, code .name.builtin { color: #352B84 }
284
+ pre.code .deleted, code .deleted { background-color: #DEB0A1}
285
+ pre.code .inserted, code .inserted { background-color: #A3D289}
286
+
287
+ span.classifier {
288
+ font-family: sans-serif ;
289
+ font-style: oblique }
290
+
291
+ span.classifier-delimiter {
292
+ font-family: sans-serif ;
293
+ font-weight: bold }
294
+
295
+ span.interpreted {
296
+ font-family: sans-serif }
297
+
298
+ span.option {
299
+ white-space: nowrap }
300
+
301
+ span.pre {
302
+ white-space: pre }
303
+
304
+ span.problematic, pre.problematic {
305
+ color: red }
306
+
307
+ span.section-subtitle {
308
+ /* font-size relative to parent (h1..h6 element) */
309
+ font-size: 80% }
310
+
311
+ table.citation {
312
+ border-left: solid 1px gray;
313
+ margin-left: 1px }
314
+
315
+ table.docinfo {
316
+ margin: 2em 4em }
317
+
318
+ table.docutils {
319
+ margin-top: 0.5em ;
320
+ margin-bottom: 0.5em }
321
+
322
+ table.footnote {
323
+ border-left: solid 1px black;
324
+ margin-left: 1px }
325
+
326
+ table.docutils td, table.docutils th,
327
+ table.docinfo td, table.docinfo th {
328
+ padding-left: 0.5em ;
329
+ padding-right: 0.5em ;
330
+ vertical-align: top }
331
+
332
+ table.docutils th.field-name, table.docinfo th.docinfo-name {
333
+ font-weight: bold ;
334
+ text-align: left ;
335
+ white-space: nowrap ;
336
+ padding-left: 0 }
337
+
338
+ /* "booktabs" style (no vertical lines) */
339
+ table.docutils.booktabs {
340
+ border: 0px;
341
+ border-top: 2px solid;
342
+ border-bottom: 2px solid;
343
+ border-collapse: collapse;
344
+ }
345
+ table.docutils.booktabs * {
346
+ border: 0px;
347
+ }
348
+ table.docutils.booktabs th {
349
+ border-bottom: thin solid;
350
+ text-align: left;
351
+ }
352
+
353
+ h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
354
+ h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
355
+ font-size: 100% }
356
+
357
+ ul.auto-toc {
358
+ list-style-type: none }
359
+
360
+ </style>
361
+ </head>
362
+ <body>
363
+ <div class="document">
364
+
365
+
366
+ <a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
367
+ <img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
368
+ </a>
369
+ <div class="section" id="report-partner-address">
370
+ <h1>Report Partner Address</h1>
371
+ <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
372
+ !! This file is generated by oca-gen-addon-readme !!
373
+ !! changes will be overwritten. !!
374
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
+ !! source digest: sha256:7c019dbfd9524b0b0daaaafa5fbbc77df627c40d3bb1e1b6bf9bea2f5a224972
376
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
+ <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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address"><img alt="OCA/reporting-engine" src="https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_partner_address"><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/reporting-engine&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
+ <p>Adds a translatable Address Details field on partners for use in reports
379
+ and portal.</p>
380
+ <p>Odoo prints documents in the partner’s language but lacks a standard way
381
+ to display addresses in multiple languages. This module fills that gap.</p>
382
+ <p><strong>Table of contents</strong></p>
383
+ <div class="contents local topic" id="contents">
384
+ <ul class="simple">
385
+ <li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
386
+ <li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
387
+ <li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
388
+ <li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
389
+ <li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
390
+ <li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
391
+ </ul>
392
+ </li>
393
+ </ul>
394
+ </div>
395
+ <div class="section" id="usage">
396
+ <h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
397
+ <ul class="simple">
398
+ <li>Go to the partner record.</li>
399
+ <li>Fill in Address Details, including translations for the active
400
+ languages.</li>
401
+ </ul>
402
+ <p>The address in reports and portal pages will use the value from Address
403
+ Details.</p>
404
+ <p>If Address Details is left blank, the standard address format is used.</p>
405
+ </div>
406
+ <div class="section" id="bug-tracker">
407
+ <h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
408
+ <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/reporting-engine/issues">GitHub Issues</a>.
409
+ In case of trouble, please check there if your issue has already been reported.
410
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
411
+ <a class="reference external" href="https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_partner_address%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
412
+ <p>Do not contact contributors directly about support or help with technical issues.</p>
413
+ </div>
414
+ <div class="section" id="credits">
415
+ <h2><a class="toc-backref" href="#toc-entry-3">Credits</a></h2>
416
+ <div class="section" id="authors">
417
+ <h3><a class="toc-backref" href="#toc-entry-4">Authors</a></h3>
418
+ <ul class="simple">
419
+ <li>Quartile</li>
420
+ </ul>
421
+ </div>
422
+ <div class="section" id="contributors">
423
+ <h3><a class="toc-backref" href="#toc-entry-5">Contributors</a></h3>
424
+ <ul class="simple">
425
+ <li>Quartile &lt;<a class="reference external" href="https://www.quartile.co">https://www.quartile.co</a>&gt;<ul>
426
+ <li>Yoshi Tashiro</li>
427
+ <li>Aung Ko Ko Lin</li>
428
+ </ul>
429
+ </li>
430
+ </ul>
431
+ </div>
432
+ <div class="section" id="maintainers">
433
+ <h3><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h3>
434
+ <p>This module is maintained by the OCA.</p>
435
+ <a class="reference external image-reference" href="https://odoo-community.org">
436
+ <img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
437
+ </a>
438
+ <p>OCA, or the Odoo Community Association, is a nonprofit organization whose
439
+ mission is to support the collaborative development of Odoo features and
440
+ promote its widespread use.</p>
441
+ <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
442
+ <p><a class="reference external image-reference" href="https://github.com/yostashiro"><img alt="yostashiro" src="https://github.com/yostashiro.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/aungkokolin1997"><img alt="aungkokolin1997" src="https://github.com/aungkokolin1997.png?size=40px" /></a></p>
443
+ <p>This module is part of the <a class="reference external" href="https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address">OCA/reporting-engine</a> project on GitHub.</p>
444
+ <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>
445
+ </div>
446
+ </div>
447
+ </div>
448
+ </div>
449
+ </body>
450
+ </html>
@@ -0,0 +1 @@
1
+ from . import test_report_partner_address
@@ -0,0 +1,81 @@
1
+ # Copyright 2025 Quartile (https://www.quartile.co)
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+
4
+ from odoo.tests.common import TransactionCase, tagged
5
+
6
+
7
+ @tagged("post_install", "-at_install")
8
+ class TestReportPartnerAddress(TransactionCase):
9
+ @classmethod
10
+ def setUpClass(cls):
11
+ super().setUpClass()
12
+ ja = (
13
+ cls.env["res.lang"]
14
+ .with_context(active_test=False)
15
+ .search([("code", "=", "ja_JP")])
16
+ )
17
+ cls.env["base.language.install"].create({"lang_ids": [ja.id]}).lang_install()
18
+ cls.partner = cls.env["res.partner"].create(
19
+ {
20
+ "name": "Test Company",
21
+ "street": "1-2-3 Jingumae",
22
+ "city": "Shibuya-ku, Tokyo",
23
+ "zip": "150-0001",
24
+ "country_id": cls.env.ref("base.jp").id,
25
+ }
26
+ )
27
+ # Japanese address format (native)
28
+ cls.partner.with_context(lang="ja_JP").write(
29
+ {"address_details": "〒150-0001\n東京都渋谷区神宮前1-2-3\nテスト株式会社"}
30
+ )
31
+ # English transliteration for international use
32
+ cls.partner.address_details = (
33
+ "Test Company\n1-2-3 Jingumae, Shibuya-ku\nTokyo 150-0001\nJapan"
34
+ )
35
+
36
+ def test_address_details_always_used(self):
37
+ res = self.partner.with_context(lang="en_US")._display_address()
38
+ self.assertEqual(
39
+ res, "Test Company\n1-2-3 Jingumae, Shibuya-ku\nTokyo 150-0001\nJapan"
40
+ )
41
+ res = self.partner.with_context(lang="ja_JP")._display_address()
42
+ self.assertEqual(res, "〒150-0001\n東京都渋谷区神宮前1-2-3\nテスト株式会社")
43
+
44
+ def test_address_details_empty_uses_standard_format(self):
45
+ partner = self.env["res.partner"].create(
46
+ {
47
+ "name": "No Details Partner",
48
+ "street": "123 Main St",
49
+ "city": "Springfield",
50
+ "zip": "12345",
51
+ "country_id": self.env.ref("base.us").id,
52
+ }
53
+ )
54
+ res = partner._display_address()
55
+ self.assertIn("123 Main St", res)
56
+ self.assertIn("Springfield", res)
57
+
58
+ def test_contact_inherits_address_details_from_parent(self):
59
+ contact = self.env["res.partner"].create(
60
+ {"name": "Contact Person", "type": "contact", "parent_id": self.partner.id}
61
+ )
62
+ self.assertEqual(
63
+ contact.address_details,
64
+ "Test Company\n1-2-3 Jingumae, Shibuya-ku\nTokyo 150-0001\nJapan",
65
+ )
66
+ self.assertEqual(
67
+ contact.with_context(lang="ja_JP").address_details,
68
+ "〒150-0001\n東京都渋谷区神宮前1-2-3\nテスト株式会社",
69
+ )
70
+
71
+ def test_non_contact_does_not_inherit_address_details(self):
72
+ delivery_address = self.env["res.partner"].create(
73
+ {
74
+ "name": "Delivery Address",
75
+ "type": "delivery",
76
+ "parent_id": self.partner.id,
77
+ "street": "456 Delivery St",
78
+ }
79
+ )
80
+ # Non-contact address should NOT inherit parent's address_details
81
+ self.assertFalse(delivery_address.address_details)
@@ -0,0 +1,9 @@
1
+ <odoo>
2
+ <template id="contact_name_hide" inherit_id="base.contact_name">
3
+ <xpath expr="//div[1]" position="attributes">
4
+ <attribute
5
+ name="t-if"
6
+ >'name' in fields and not object.address_details</attribute>
7
+ </xpath>
8
+ </template>
9
+ </odoo>
@@ -0,0 +1,15 @@
1
+ <odoo>
2
+ <record id="view_partner_form" model="ir.ui.view">
3
+ <field name="name">res.partner.form</field>
4
+ <field name="model">res.partner</field>
5
+ <field name="inherit_id" ref="base.view_partner_form" />
6
+ <field name="arch" type="xml">
7
+ <xpath expr="//div[@class='o_address_format']" position="after">
8
+ <field
9
+ name="address_details"
10
+ attrs="{'readonly':[('type','=','contact'),('parent_id','!=',False)]}"
11
+ />
12
+ </xpath>
13
+ </field>
14
+ </record>
15
+ </odoo>
@@ -0,0 +1,125 @@
1
+ Metadata-Version: 2.1
2
+ Name: odoo-addon-report_partner_address
3
+ Version: 16.0.1.0.0.4
4
+ Summary: Translatable partner address details for reports and portal
5
+ Home-page: https://github.com/OCA/reporting-engine
6
+ Author: Quartile, Odoo Community Association (OCA)
7
+ Author-email: support@odoo-community.org
8
+ License: AGPL-3
9
+ Classifier: Programming Language :: Python
10
+ Classifier: Framework :: Odoo
11
+ Classifier: Framework :: Odoo :: 16.0
12
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
13
+ Requires-Python: >=3.10
14
+ Requires-Dist: odoo<16.1dev,>=16.0a
15
+
16
+ .. image:: https://odoo-community.org/readme-banner-image
17
+ :target: https://odoo-community.org/get-involved?utm_source=readme
18
+ :alt: Odoo Community Association
19
+
20
+ ======================
21
+ Report Partner Address
22
+ ======================
23
+
24
+ ..
25
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
+ !! This file is generated by oca-gen-addon-readme !!
27
+ !! changes will be overwritten. !!
28
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29
+ !! source digest: sha256:7c019dbfd9524b0b0daaaafa5fbbc77df627c40d3bb1e1b6bf9bea2f5a224972
30
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31
+
32
+ .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
33
+ :target: https://odoo-community.org/page/development-status
34
+ :alt: Beta
35
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
36
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
37
+ :alt: License: AGPL-3
38
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
39
+ :target: https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address
40
+ :alt: OCA/reporting-engine
41
+ .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
42
+ :target: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_partner_address
43
+ :alt: Translate me on Weblate
44
+ .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
45
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=16.0
46
+ :alt: Try me on Runboat
47
+
48
+ |badge1| |badge2| |badge3| |badge4| |badge5|
49
+
50
+ Adds a translatable Address Details field on partners for use in reports
51
+ and portal.
52
+
53
+ Odoo prints documents in the partner's language but lacks a standard way
54
+ to display addresses in multiple languages. This module fills that gap.
55
+
56
+ **Table of contents**
57
+
58
+ .. contents::
59
+ :local:
60
+
61
+ Usage
62
+ =====
63
+
64
+ - Go to the partner record.
65
+ - Fill in Address Details, including translations for the active
66
+ languages.
67
+
68
+ The address in reports and portal pages will use the value from Address
69
+ Details.
70
+
71
+ If Address Details is left blank, the standard address format is used.
72
+
73
+ Bug Tracker
74
+ ===========
75
+
76
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
77
+ In case of trouble, please check there if your issue has already been reported.
78
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
79
+ `feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_partner_address%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
80
+
81
+ Do not contact contributors directly about support or help with technical issues.
82
+
83
+ Credits
84
+ =======
85
+
86
+ Authors
87
+ -------
88
+
89
+ * Quartile
90
+
91
+ Contributors
92
+ ------------
93
+
94
+ - Quartile <https://www.quartile.co>
95
+
96
+ - Yoshi Tashiro
97
+ - Aung Ko Ko Lin
98
+
99
+ Maintainers
100
+ -----------
101
+
102
+ This module is maintained by the OCA.
103
+
104
+ .. image:: https://odoo-community.org/logo.png
105
+ :alt: Odoo Community Association
106
+ :target: https://odoo-community.org
107
+
108
+ OCA, or the Odoo Community Association, is a nonprofit organization whose
109
+ mission is to support the collaborative development of Odoo features and
110
+ promote its widespread use.
111
+
112
+ .. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px
113
+ :target: https://github.com/yostashiro
114
+ :alt: yostashiro
115
+ .. |maintainer-aungkokolin1997| image:: https://github.com/aungkokolin1997.png?size=40px
116
+ :target: https://github.com/aungkokolin1997
117
+ :alt: aungkokolin1997
118
+
119
+ Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
120
+
121
+ |maintainer-yostashiro| |maintainer-aungkokolin1997|
122
+
123
+ This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/16.0/report_partner_address>`_ project on GitHub.
124
+
125
+ You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -0,0 +1,21 @@
1
+ odoo/addons/report_partner_address/README.rst,sha256=hizDmAu2ZmKX0xguQ_lhWTh6-HtRHuc1CSOtzDk8JZU,3983
2
+ odoo/addons/report_partner_address/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
+ odoo/addons/report_partner_address/__manifest__.py,sha256=ITQZkfd2_n0t3svaAMsyfQuTFaXirs1I6UFKkhzCOPo,647
4
+ odoo/addons/report_partner_address/i18n/it.po,sha256=sDtusmgiqy8ecsL4PmUryei3T_GYWrp3VzI9Rp_tmVU,1483
5
+ odoo/addons/report_partner_address/i18n/ja.po,sha256=4EQmqcu2fej7tw7o9G3f5AbZ_0xTxoL_q79Gfy3FdHI,1484
6
+ odoo/addons/report_partner_address/i18n/report_partner_address.pot,sha256=91bxamTT91ShCsgSes6LOysHNqWqVF9-VOJHdi4RWk4,1126
7
+ odoo/addons/report_partner_address/models/__init__.py,sha256=g-Dp2ZwN6oB4CqdQfgRInNSzdMWAVQg1vjWL7S-ZODM,26
8
+ odoo/addons/report_partner_address/models/res_partner.py,sha256=gisMHSwrFyAsGicMcDkY4gVOi0lPa0PiX7Olqvs_A5I,2093
9
+ odoo/addons/report_partner_address/readme/CONTRIBUTORS.md,sha256=OCPzWhcirjy1rEuQQxmNlh2GYu0uWl7W0m6nDALM48c,78
10
+ odoo/addons/report_partner_address/readme/DESCRIPTION.md,sha256=5-hFLBzBK9K-W7gCwTQfn9EcnGtP_uKAcYkIu9CA4h4,231
11
+ odoo/addons/report_partner_address/readme/USAGE.md,sha256=ONVE4ZRz0UmJG6LHeOUhe5PUc5_Jfr7IBSGCI_H90sU,258
12
+ odoo/addons/report_partner_address/static/description/icon.png,sha256=CgnOEZCwoe6f1vlLwkqFVfc2q_uwBMU0UnXN8j6X5ag,10254
13
+ odoo/addons/report_partner_address/static/description/index.html,sha256=KuLnBquQDD_30nLypoks6_8GuUWMlVpJIRGrTnmtmk4,13602
14
+ odoo/addons/report_partner_address/tests/__init__.py,sha256=2UpQ5Am7Y3VcRqUK5U-BPPR4QxWw06HoH5DKAvQcsFc,42
15
+ odoo/addons/report_partner_address/tests/test_report_partner_address.py,sha256=AaDGbseFlkZ8V1eCgDUuHrJ19_uqwVJMuKM46g7Ji1M,3200
16
+ odoo/addons/report_partner_address/views/ir_qweb_widget_templates.xml,sha256=VbLfPeZKcfhJQUYBNAzOn-6JDNF3bdb23ykughpxjMg,295
17
+ odoo/addons/report_partner_address/views/res_partner_views.xml,sha256=7B4X9V5keJVQQVVfKI4tNRyHtRwuQEEVm5mfRaB-vec,579
18
+ odoo_addon_report_partner_address-16.0.1.0.0.4.dist-info/METADATA,sha256=Zf2V9nppkCpjalhFkEUSMfZxZTtvIrsuYU9njNSF3us,4543
19
+ odoo_addon_report_partner_address-16.0.1.0.0.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
20
+ odoo_addon_report_partner_address-16.0.1.0.0.4.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
21
+ odoo_addon_report_partner_address-16.0.1.0.0.4.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.45.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+