Skip to content

Commit 81fd87c

Browse files
authored
19.0 mig deltatech website vat validation (#2395)
* Adaugă modulul `deltatech_invoice_picking_automatically` Modulul permite generarea automată a facturilor din transferuri interne după validarea acestora. Configurarea este posibilă la nivel de tip de picking, adăugând un câmp nou pentru a activa această funcționalitate. Au fost incluse și fișiere pentru vizualizări, documentație și metadata necesare. * Actualizează documentația și resursele modulelor Au fost actualizate link-urile către branch-ul `18.0` în fișierele README și descrierea modulelor. Mai mult, s-au adăugat informații detaliate pentru funcționalitățile modulelor `deltatech_queue_job`, `deltatech_website_vat_validation` și `deltatech_delivery_status`, inclusiv noile caracteristici și beneficii. * Adaugă modulul `deltatech_account_edit_currency_rate` Modulul permite editarea cursului valutar în facturi, incluzând câmpul `currency_rate_custom` și funcționalități personalizate pentru calcularea valorilor. Au fost adăugate modele, vizualizări, traduceri și documentație asociată, iar manifestul modulului include toate detaliile relevante pentru versiunea 18.0.1.0.8. * [IMP] Adaugă metadate pentru proiecte și elimină dependințe Introduce informații de metadate `project` în fișierele `pyproject.toml` pentru fiecare modul din folderul `deltatech`. Șterge fișierul `requirements.txt`, consolidând gestionarea dependințelor în cadrul fiecărui modul. Aceste schimbări standardizează structura proiectului și îmbunătățesc gestionarea dependințelor. * [IMP] Refactorizarea validării adreselor și adăugarea de teste (#2394) * [IMP] Refactorizarea validării adreselor și adăugarea de teste Modifică semnătura metodei `_validate_address_values` pentru a înlocui `checkout_form_validate` și adaugă suport pentru validarea extensivă a câmpurilor, precum `phone`, `vat` și `email`. Introduce și teste unitare pentru a verifica formatul și corectitudinea numerelor de telefon, asigurând conformitatea și robustezza implementării. * [FIX] Corectează testele pentru validitatea TVA în România Înlocuiește valoarea TVA utilizată în teste cu un exemplu valid conform formatului specific din România. Asigură că testele acoperă corect scenariile de validare și elimină eventuale erori cauzate de un format incorect al TVA. * [ADD] Introduce hook de pre-commit pentru verificarea super() Adaugă un script Python pentru a verifica metodele apelate prin super() în clasele Odoo. Scriptul funcționează ca un hook de pre-commit și asigură că metodele există în ierarhia de clase părinte. Adaugă configurația corespunzătoare în `.pre-commit-config.yaml` pentru integrare. * [IMP] Suport pentru multiple căi în argumentul addons-path Permite procesarea mai multor căi în argumentul addons-path, separându-le prin virgulă. Adaugă verificări suplimentare pentru existența fiecărei căi și loghează un mesaj de debug în cazul unei căi invalide. Actualizează configurația `.pre-commit-config.yaml` pentru a reflecta noul format al argumentului. * [ADD] Integrare ANAF pentru validarea TVA-ului Adaugă suport pentru integrarea ANAF în procesul de validare a TVA-ului în România. Completează automat câmpurile de adresă folosind datele returnate de ANAF, dacă TVA-ul este valid. Include un nou test unitar pentru a verifica funcționalitatea. * [IMP] Adaugă validări de telefon și traduceri pentru mesaje de eroare Include suport pentru traduceri în limba română pentru validarea numerelor de telefon. Mesajele de eroare au fost actualizate pentru a fi mai clare și disponibile în multiple limbi. * Actualizează versiunea modulului la 19.0.0.0.0 Modificarea versiunii în fișierul `__manifest__.py` reflectă trecerea la seria Odoo 19.0. Acest pas este necesar pentru alinierea modulului `deltatech_website_vat_validation` la ultima versiune. * [REM] Elimină validarea TVA din modulul `deltatech_website_vat_validation` A fost eliminată clasa `CustomerPortalVATValidation` din controller-ul `portal.py`, împreună cu logica aferentă validării câmpurilor precum `vat`. Această modificare reduce complexitatea modulului și elimină o dependență inutilă din manifest. * [IMP] Înlocuiește importul `MockRequest` cu versiune actualizată A fost actualizat importul `MockRequest` pentru a folosi pachetul `http_routing.tests.common` în loc de `website.tools`. Această modificare aliniază testele la structura actuală a codului și elimină o dependență depășită. * [FIX] Elimină parametrul `is_main_address` din testele de validare A fost eliminat parametrul `is_main_address` din apelurile metodei `_validate_address_values` în testele unitară. Această modificare aliniază testele la noul format al metodei și elimină un parametru redundant neutilizat. * [FIX] Adaugă parametrul `is_main_address` în testele de validare A fost adăugat parametrul `is_main_address` în apelurile metodei `_validate_address_values` în testele unitară. Această modificare asigură conformitatea cu structura actualizată a metodei și corectează testele pentru a reflecta noua logică. * [FIX] Înlocuiește referința `request.env["res.users"]` cu `request.env.user` Corectează metoda de obținere a partenerului curent în funcție de utilizatorul conectat. Această modificare simplifică codul, eliminând o referință indirectă și utilizând standardul curent al platformei Odoo.
1 parent 3c5a15f commit 81fd87c

14 files changed

Lines changed: 829 additions & 0 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
======================
2+
Website VAT Validation
3+
======================
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:c6c48270cc97386acbc6dbf20c550a6bafe568f720fe4f96cf45d2f3e7ff2cee
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12+
13+
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
14+
:target: https://odoo-community.org/page/development-status
15+
:alt: Mature
16+
.. |badge2| image:: https://img.shields.io/badge/github-dhongu%2Fdeltatech-lightgray.png?logo=github
17+
:target: https://github.com/dhongu/deltatech/tree/18.0/deltatech_website_vat_validation
18+
:alt: dhongu/deltatech
19+
20+
|badge1| |badge2|
21+
22+
Deltatech Website VAT Validation
23+
================================
24+
25+
This module enhances the VAT (Value Added Tax) validation functionality
26+
on Odoo website checkout and customer portal, ensuring VAT numbers are
27+
properly validated.
28+
29+
Features
30+
--------
31+
32+
- Automatic VAT number validation during website checkout
33+
- VAT number validation in customer portal when updating details
34+
- Prevention of duplicate VAT numbers across different customers
35+
- Automatic trimming of whitespace from VAT entries
36+
- Integration with both website sale checkout process and customer
37+
portal
38+
- Clear error messages when a VAT number is already in use
39+
40+
Benefits
41+
--------
42+
43+
- Improved data quality by preventing duplicate VAT registrations
44+
- Enhanced compliance with tax regulations
45+
- Better customer experience with immediate feedback on VAT number
46+
validity
47+
- Reduced manual verification by administrators
48+
- Streamlined checkout process with proper validation
49+
- Prevention of potential billing and accounting issues related to
50+
incorrect VAT information
51+
52+
**Table of contents**
53+
54+
.. contents::
55+
:local:
56+
57+
Bug Tracker
58+
===========
59+
60+
Bugs are tracked on `Terrabit Issues <https://www.terrabit.ro/helpdesk>`_.
61+
In case of trouble, please check there if your issue has already been reported.
62+
63+
Do not contact contributors directly about support or help with technical issues.
64+
65+
Credits
66+
=======
67+
68+
Authors
69+
-------
70+
71+
* Terrabit
72+
* Dorin Hongu
73+
74+
Maintainers
75+
-----------
76+
77+
.. |maintainer-dhongu| image:: https://github.com/dhongu.png?size=40px
78+
:target: https://github.com/dhongu
79+
:alt: dhongu
80+
81+
Current maintainer:
82+
83+
|maintainer-dhongu|
84+
85+
This module is part of the `dhongu/deltatech <https://github.com/dhongu/deltatech/tree/18.0/deltatech_website_vat_validation>`_ project on GitHub.
86+
87+
You are welcome to contribute.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# © 2008-2021 Deltatech
2+
# Dorin Hongu <dhongu(@)gmail(.)com
3+
# See README.rst file on addons root folder for license details
4+
5+
from . import controllers
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# © 2008-2021 Deltatech
2+
# Dorin Hongu <dhongu(@)gmail(.)com
3+
# See README.rst file on addons root folder for license details
4+
5+
{
6+
"name": "Website VAT Validation",
7+
"summary": "VAT Validation",
8+
"version": "19.0.0.0.0",
9+
"author": "Terrabit, Dorin Hongu",
10+
"website": "https://www.terrabit.ro",
11+
"license": "OPL-1",
12+
"category": "Generic Modules",
13+
"depends": ["website_sale"],
14+
"images": ["static/description/main_screenshot.png"],
15+
"development_status": "Mature",
16+
"maintainers": ["dhongu"],
17+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# © 2008-2021 Deltatech
2+
# Dorin Hongu <dhongu(@)gmail(.)com
3+
# See README.rst file on addons root folder for license details
4+
5+
6+
from . import website_sale
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# © 2008-2021 Deltatech
2+
# Dorin Hongu <dhongu(@)gmail(.)com
3+
# See README.rst file on addons root folder for license details
4+
5+
from odoo import _
6+
from odoo.http import request
7+
8+
from odoo.addons.website_sale.controllers.main import WebsiteSale
9+
10+
11+
class WebsiteSaleVATValidation(WebsiteSale):
12+
def _validate_address_values(
13+
self,
14+
address_values,
15+
partner_sudo,
16+
address_type,
17+
use_delivery_as_billing,
18+
required_fields,
19+
is_main_address,
20+
**_kwargs,
21+
):
22+
for field in ["vat", "email", "phone"]:
23+
if address_values.get(field):
24+
address_values[field] = address_values.get(field).strip()
25+
26+
invalid_fields, missing_fields, error_messages = super()._validate_address_values(
27+
address_values=address_values,
28+
partner_sudo=partner_sudo,
29+
address_type=address_type,
30+
use_delivery_as_billing=use_delivery_as_billing,
31+
required_fields=required_fields,
32+
is_main_address=is_main_address,
33+
**_kwargs,
34+
)
35+
partner = partner_sudo or request.env.user.partner_id
36+
37+
# Integrare ANAF
38+
if address_values.get("vat") and "vat" not in invalid_fields:
39+
if address_type == "billing" or use_delivery_as_billing:
40+
country = request.env["res.country"].sudo().browse(address_values.get("country_id"))
41+
if country and country.code == "RO":
42+
vat = address_values["vat"].strip().upper()
43+
if vat.startswith("RO"):
44+
vat = vat[2:]
45+
if vat.isdigit():
46+
res_partner_sudo = request.env["res.partner"].sudo()
47+
if hasattr(res_partner_sudo, "_get_Anaf") and hasattr(res_partner_sudo, "_Anaf_to_Odoo"):
48+
anaf_error, result = res_partner_sudo._get_Anaf(vat)
49+
if not anaf_error and result:
50+
anaf_data = res_partner_sudo._Anaf_to_Odoo(result)
51+
# Actualizăm valorile adresei cu datele de la ANAF
52+
for field in ["name", "street", "city", "zip"]:
53+
if anaf_data.get(field):
54+
address_values[field] = anaf_data[field]
55+
if anaf_data.get("state_id") and not address_values.get("state_id"):
56+
address_values["state_id"] = anaf_data["state_id"].id
57+
58+
if anaf_data.get("company_type") == "company":
59+
address_values["is_company"] = True
60+
else:
61+
invalid_fields.add("vat")
62+
error_messages.append(_("The VAT number is not valid according to ANAF"))
63+
else:
64+
invalid_fields.add("vat")
65+
error_messages.append(_("The VAT number must contain only digits (after the country code)"))
66+
67+
for field in ["vat", "email", "phone"]:
68+
value = address_values.get(field, False)
69+
if value and field not in invalid_fields:
70+
domain = [(field, "=", value), ("id", "!=", partner.id), ("parent_id", "=", False)]
71+
partner_exists = request.env["res.partner"].sudo().search(domain, limit=1)
72+
if partner_exists:
73+
invalid_fields.add(field)
74+
error_messages.append(_("An other partner already exists with the same %s", value))
75+
76+
return invalid_fields, missing_fields, error_messages
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following module:
3+
# * deltatech_website_vat_validation
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 18.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2024-03-14 07:30+0000\n"
10+
"PO-Revision-Date: 2024-03-14 07:30+0000\n"
11+
"Last-Translator: \n"
12+
"Language-Team: \n"
13+
"Language: ro\n"
14+
"MIME-Version: 1.0\n"
15+
"Content-Type: text/plain; charset=UTF-8\n"
16+
"Content-Transfer-Encoding: \n"
17+
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||(n%100==0)&&(n!=0))?2:1));\n"
18+
19+
#. module: deltatech_website_vat_validation
20+
#. python-format
21+
#: code:addons/deltatech_website_vat_validation/controllers/website_sale.py:0
22+
msgid "An other partner already exists with the same %s"
23+
msgstr "Un alt partener există deja cu același %s"
24+
25+
#. module: deltatech_website_vat_validation
26+
#. python-format
27+
#: code:addons/deltatech_website_vat_validation/controllers/website_sale.py:0
28+
msgid "The VAT number is not valid according to ANAF"
29+
msgstr "Codul TVA nu este valid conform ANAF"
30+
31+
#. module: deltatech_website_vat_validation
32+
#. python-format
33+
#: code:addons/deltatech_website_vat_validation/controllers/website_sale.py:0
34+
msgid "The VAT number must contain only digits (after the country code)"
35+
msgstr "Codul TVA trebuie să conțină doar cifre (după codul țării)"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[build-system]
2+
requires = [
3+
"whool",
4+
]
5+
build-backend = "whool.buildapi"
6+
7+
[project]
8+
name = "odoo-addon-deltatech-website-vat-validation"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
3+
# Deltatech Website VAT Validation
4+
5+
This module enhances the VAT (Value Added Tax) validation functionality on Odoo website checkout and customer portal, ensuring VAT numbers are properly validated.
6+
7+
## Features
8+
9+
- Automatic VAT number validation during website checkout
10+
- VAT number validation in customer portal when updating details
11+
- Prevention of duplicate VAT numbers across different customers
12+
- Automatic trimming of whitespace from VAT entries
13+
- Integration with both website sale checkout process and customer portal
14+
- Clear error messages when a VAT number is already in use
15+
16+
## Benefits
17+
18+
- Improved data quality by preventing duplicate VAT registrations
19+
- Enhanced compliance with tax regulations
20+
- Better customer experience with immediate feedback on VAT number validity
21+
- Reduced manual verification by administrators
22+
- Streamlined checkout process with proper validation
23+
- Prevention of potential billing and accounting issues related to incorrect VAT information
9.34 KB
Loading

0 commit comments

Comments
 (0)