Skip to content

Commit 886b7be

Browse files
committed
[IMP] l10n_tr_nilvera_edispatch: Add option to import E-Receipt
This commit adds an option to import e-Receipt XML file that is exported from Nilvera Portal. It adds an "Upload e-Receipt (XML)" button in the list view of stock picking when the list view is for Receipts. It allows multiple file upload, once upload is complete, it opens the created Receipts list/form view accordingly. TaskID:4452521 closes odoo#232848 X-original-commit: 001abdc Signed-off-by: Wala Gauthier (gawa) <gawa@odoo.com> Signed-off-by: Manav Shah (sham) <sham@odoo.com>
1 parent ecfef75 commit 886b7be

File tree

12 files changed

+1020
-161
lines changed

12 files changed

+1020
-161
lines changed

addons/account/models/uom_uom.py

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,35 @@
33

44
from odoo import fields, models, api
55

6+
UOM_TO_UNECE_CODE = {
7+
'uom.product_uom_unit': 'C62',
8+
'uom.product_uom_dozen': 'DZN',
9+
'uom.product_uom_kgm': 'KGM',
10+
'uom.product_uom_gram': 'GRM',
11+
'uom.product_uom_day': 'DAY',
12+
'uom.product_uom_hour': 'HUR',
13+
'uom.product_uom_ton': 'TNE',
14+
'uom.product_uom_meter': 'MTR',
15+
'uom.product_uom_km': 'KMT',
16+
'uom.product_uom_cm': 'CMT',
17+
'uom.product_uom_litre': 'LTR',
18+
'uom.product_uom_lb': 'LBR',
19+
'uom.product_uom_oz': 'ONZ',
20+
'uom.product_uom_inch': 'INH',
21+
'uom.product_uom_foot': 'FOT',
22+
'uom.product_uom_mile': 'SMI',
23+
'uom.product_uom_floz': 'OZA',
24+
'uom.product_uom_qt': 'QT',
25+
'uom.product_uom_gal': 'GLL',
26+
'uom.product_uom_cubic_meter': 'MTQ',
27+
'uom.product_uom_cubic_inch': 'INQ',
28+
'uom.product_uom_cubic_foot': 'FTQ',
29+
'uom.uom_square_meter': 'MTK',
30+
'uom.uom_square_foot': 'FTK',
31+
'uom.product_uom_yard': 'YRD',
32+
'uom.product_uom_millimeter': 'MMT',
33+
}
34+
635

736
class UomUom(models.Model):
837
_inherit = "uom.uom"
@@ -17,35 +46,12 @@ def _compute_fiscal_country_codes(self):
1746
def _get_unece_code(self):
1847
""" Returns the UNECE code used for international trading for corresponding to the UoM as per
1948
https://unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex2e.pdf"""
20-
mapping = {
21-
'uom.product_uom_unit': 'C62',
22-
'uom.product_uom_dozen': 'DZN',
23-
'uom.product_uom_pack_6': 'HD',
24-
'uom.product_uom_kgm': 'KGM',
25-
'uom.product_uom_gram': 'GRM',
26-
'uom.product_uom_day': 'DAY',
27-
'uom.product_uom_hour': 'HUR',
28-
'uom.product_uom_ton': 'TNE',
29-
'uom.product_uom_meter': 'MTR',
30-
'uom.product_uom_km': 'KMT',
31-
'uom.product_uom_cm': 'CMT',
32-
'uom.product_uom_litre': 'LTR',
33-
'uom.product_uom_lb': 'LBR',
34-
'uom.product_uom_oz': 'ONZ',
35-
'uom.product_uom_inch': 'INH',
36-
'uom.product_uom_foot': 'FOT',
37-
'uom.product_uom_mile': 'SMI',
38-
'uom.product_uom_floz': 'OZA',
39-
'uom.product_uom_qt': 'QT',
40-
'uom.product_uom_gal': 'GLL',
41-
'uom.product_uom_cubic_meter': 'MTQ',
42-
'uom.product_uom_cubic_inch': 'INQ',
43-
'uom.product_uom_cubic_foot': 'FTQ',
44-
'uom.product_uom_square_meter': 'MTK',
45-
'uom.product_uom_square_foot': 'FTK',
46-
'uom.product_uom_yard': 'YRD',
47-
'uom.product_uom_millimeter': 'MMT',
48-
}
4949
xml_ids = self._get_external_ids().get(self.id, [])
50-
matches = list(set(xml_ids) & set(mapping.keys()))
51-
return matches and mapping[matches[0]] or 'C62'
50+
matches = list(set(xml_ids) & set(UOM_TO_UNECE_CODE.keys()))
51+
return matches and UOM_TO_UNECE_CODE[matches[0]] or 'C62'
52+
53+
@api.model
54+
def _get_uom_from_unece_code(self, unece_code):
55+
unece_code_to_uom = {v: k for k, v in UOM_TO_UNECE_CODE.items()}
56+
uom_xmlid = unece_code_to_uom.get(unece_code, 'uom.product_uom_unit')
57+
return self.env.ref(uom_xmlid, raise_if_not_found=False)

addons/l10n_tr_nilvera_edispatch/__manifest__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,9 @@
1515
'templates/l10n_tr_nilvera_edispatch.xml',
1616
],
1717
'author': 'Odoo S.A.',
18+
'assets': {
19+
'web.assets_backend': [
20+
'l10n_tr_nilvera_edispatch/static/src/views/**/*',
21+
],
22+
},
1823
}

addons/l10n_tr_nilvera_edispatch/i18n/l10n_tr_nilvera_edispatch.pot

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
#
55
msgid ""
66
msgstr ""
7-
"Project-Id-Version: Odoo Server 17.0+e\n"
7+
"Project-Id-Version: Odoo Server 18.0+e\n"
88
"Report-Msgid-Bugs-To: \n"
9-
"POT-Creation-Date: 2025-08-17 14:00+0000\n"
10-
"PO-Revision-Date: 2025-08-17 14:00+0000\n"
9+
"POT-Creation-Date: 2025-10-09 11:01+0000\n"
10+
"PO-Revision-Date: 2025-10-09 11:01+0000\n"
1111
"Last-Translator: \n"
1212
"Language-Team: \n"
1313
"MIME-Version: 1.0\n"
@@ -18,28 +18,24 @@ msgstr ""
1818
#. module: l10n_tr_nilvera_edispatch
1919
#. odoo-python
2020
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
21-
#, python-format
2221
msgid "%(name)s's %(errors)s."
2322
msgstr ""
2423

2524
#. module: l10n_tr_nilvera_edispatch
2625
#. odoo-python
2726
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
28-
#, python-format
2927
msgid "%s TCKN is required."
3028
msgstr ""
3129

3230
#. module: l10n_tr_nilvera_edispatch
3331
#. odoo-python
3432
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
35-
#, python-format
3633
msgid "%s is required"
3734
msgstr ""
3835

3936
#. module: l10n_tr_nilvera_edispatch
4037
#. odoo-python
4138
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
42-
#, python-format
4339
msgid "%s's"
4440
msgstr ""
4541

@@ -56,7 +52,6 @@ msgstr ""
5652
#. module: l10n_tr_nilvera_edispatch
5753
#. odoo-python
5854
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
59-
#, python-format
6055
msgid "At least one Driver is required."
6156
msgstr ""
6257

@@ -83,7 +78,6 @@ msgstr ""
8378
#. module: l10n_tr_nilvera_edispatch
8479
#. odoo-python
8580
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
86-
#, python-format
8781
msgid ""
8882
"Carrier is required (optional when both the Driver and Vehicle Plate are "
8983
"filled)."
@@ -92,7 +86,6 @@ msgstr ""
9286
#. module: l10n_tr_nilvera_edispatch
9387
#. odoo-python
9488
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
95-
#, python-format
9689
msgid "City"
9790
msgstr ""
9891

@@ -104,7 +97,6 @@ msgstr ""
10497
#. module: l10n_tr_nilvera_edispatch
10598
#. odoo-python
10699
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
107-
#, python-format
108100
msgid "Country"
109101
msgstr ""
110102

@@ -128,7 +120,6 @@ msgstr ""
128120
#. module: l10n_tr_nilvera_edispatch
129121
#. odoo-python
130122
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
131-
#, python-format
132123
msgid "Customs ZIP of 5 characters must be present"
133124
msgstr ""
134125

@@ -155,19 +146,19 @@ msgstr ""
155146
#. module: l10n_tr_nilvera_edispatch
156147
#. odoo-python
157148
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
158-
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
159-
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
160-
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
161-
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
162149
#: model:ir.model.fields,field_description:l10n_tr_nilvera_edispatch.field_stock_picking__l10n_tr_nilvera_driver_ids
163-
#, python-format
164150
msgid "Drivers"
165151
msgstr ""
166152

153+
#. module: l10n_tr_nilvera_edispatch
154+
#. odoo-javascript
155+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.js:0
156+
msgid "Error occured in reading following XML file(s): %s"
157+
msgstr ""
158+
167159
#. module: l10n_tr_nilvera_edispatch
168160
#. odoo-python
169161
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
170-
#, python-format
171162
msgid ""
172163
"Error occurred in generating XML for following records:\n"
173164
"- %s"
@@ -217,6 +208,12 @@ msgstr ""
217208
msgid "ID"
218209
msgstr ""
219210

211+
#. module: l10n_tr_nilvera_edispatch
212+
#. odoo-python
213+
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
214+
msgid "Imported E-Receipts"
215+
msgstr ""
216+
220217
#. module: l10n_tr_nilvera_edispatch
221218
#: model:ir.model.fields,field_description:l10n_tr_nilvera_edispatch.field_stock_picking__l10n_tr_nilvera_edispatch_warnings
222219
msgid "L10N Tr Nilvera Edispatch Warnings"
@@ -250,19 +247,23 @@ msgstr ""
250247
#. module: l10n_tr_nilvera_edispatch
251248
#. odoo-python
252249
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking_type.py:0
253-
#, python-format
254250
msgid "Only 3 characters are allowed in the Sequence Prefix by GİB"
255251
msgstr ""
256252

257253
#. module: l10n_tr_nilvera_edispatch
258254
#. odoo-python
259255
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
260-
#, python-format
261256
msgid ""
262257
"Only Drivers from Türkiye are valid. Please update the Country and enter a "
263258
"valid TCKN in the Tax ID."
264259
msgstr ""
265260

261+
#. module: l10n_tr_nilvera_edispatch
262+
#. odoo-javascript
263+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.js:0
264+
msgid "Only XML files can be uploaded"
265+
msgstr ""
266+
266267
#. module: l10n_tr_nilvera_edispatch
267268
#: model:ir.model,name:l10n_tr_nilvera_edispatch.model_stock_picking_type
268269
msgid "Picking Type"
@@ -282,7 +283,6 @@ msgstr ""
282283
#. module: l10n_tr_nilvera_edispatch
283284
#. odoo-python
284285
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
285-
#, python-format
286286
msgid "Please validate the transfer first to generate the XML"
287287
msgstr ""
288288

@@ -299,7 +299,6 @@ msgstr ""
299299
#. module: l10n_tr_nilvera_edispatch
300300
#. odoo-python
301301
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
302-
#, python-format
303302
msgid "Printed Delivery Note Date is required."
304303
msgstr ""
305304

@@ -311,7 +310,6 @@ msgstr ""
311310
#. module: l10n_tr_nilvera_edispatch
312311
#. odoo-python
313312
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
314-
#, python-format
315313
msgid "Printed Delivery Note Number of 16 characters is required."
316314
msgstr ""
317315

@@ -325,27 +323,36 @@ msgstr ""
325323
msgid "Sent"
326324
msgstr ""
327325

326+
#. module: l10n_tr_nilvera_edispatch
327+
#. odoo-javascript
328+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.js:0
329+
msgid "Something went wrong. Please try again."
330+
msgstr ""
331+
328332
#. module: l10n_tr_nilvera_edispatch
329333
#. odoo-python
330334
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
331-
#, python-format
332335
msgid "State"
333336
msgstr ""
334337

335338
#. module: l10n_tr_nilvera_edispatch
336339
#. odoo-python
337340
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
338-
#, python-format
339341
msgid "Street"
340342
msgstr ""
341343

342344
#. module: l10n_tr_nilvera_edispatch
343345
#. odoo-python
344346
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
345-
#, python-format
346347
msgid "TCKN/VKN"
347348
msgstr ""
348349

350+
#. module: l10n_tr_nilvera_edispatch
351+
#. odoo-javascript
352+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.js:0
353+
msgid "The file(s): %s must be of type XML."
354+
msgstr ""
355+
349356
#. module: l10n_tr_nilvera_edispatch
350357
#: model:ir.model.fields,help:l10n_tr_nilvera_edispatch.field_res_partner__l10n_tr_nilvera_edispatch_customs_zip
351358
#: model:ir.model.fields,help:l10n_tr_nilvera_edispatch.field_res_users__l10n_tr_nilvera_edispatch_customs_zip
@@ -369,6 +376,12 @@ msgstr ""
369376
msgid "Transfer"
370377
msgstr ""
371378

379+
#. module: l10n_tr_nilvera_edispatch
380+
#. odoo-javascript
381+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.xml:0
382+
msgid "Upload e-Receipt (XML)"
383+
msgstr ""
384+
372385
#. module: l10n_tr_nilvera_edispatch
373386
#: model:ir.model.fields,help:l10n_tr_nilvera_edispatch.field_stock_picking__l10n_tr_nilvera_driver_ids
374387
msgid "Used for the individuals driving the truck."
@@ -434,30 +447,25 @@ msgstr ""
434447
#. module: l10n_tr_nilvera_edispatch
435448
#. odoo-python
436449
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
437-
#, python-format
438450
msgid "Vehicle Plate is required."
439451
msgstr ""
440452

441453
#. module: l10n_tr_nilvera_edispatch
442454
#. odoo-python
443455
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
444456
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
445-
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
446-
#, python-format
447457
msgid "View %s"
448458
msgstr ""
449459

450460
#. module: l10n_tr_nilvera_edispatch
451461
#. odoo-python
452462
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
453-
#, python-format
454463
msgid "View Partner"
455464
msgstr ""
456465

457466
#. module: l10n_tr_nilvera_edispatch
458467
#. odoo-python
459468
#: code:addons/l10n_tr_nilvera_edispatch/models/res_partner.py:0
460-
#, python-format
461469
msgid "ZIP"
462470
msgstr ""
463471

@@ -474,7 +482,6 @@ msgstr ""
474482
#. module: l10n_tr_nilvera_edispatch
475483
#. odoo-python
476484
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
477-
#, python-format
478485
msgid "e-Dispatch XML file generated successfully."
479486
msgstr ""
480487

@@ -487,8 +494,15 @@ msgid "e-Dispatch will not be generated as the Delivery Address is not set."
487494
msgstr ""
488495

489496
#. module: l10n_tr_nilvera_edispatch
490-
#: model_terms:ir.ui.view,arch_db:l10n_tr_nilvera_edispatch.l10n_tr_edispatch_format
491-
msgid "false"
497+
#. odoo-python
498+
#: code:addons/l10n_tr_nilvera_edispatch/models/stock_picking.py:0
499+
msgid "e-Receipt uploaded successfully."
500+
msgstr ""
501+
502+
#. module: l10n_tr_nilvera_edispatch
503+
#. odoo-javascript
504+
#: code:addons/l10n_tr_nilvera_edispatch/static/src/views/list_view/ereceipt_upload.js:0
505+
msgid "e-Receipt(s) Imported Successfully"
492506
msgstr ""
493507

494508
#. module: l10n_tr_nilvera_edispatch

0 commit comments

Comments
 (0)