diff --git a/delivery_partner_ups/README.rst b/delivery_partner_ups/README.rst new file mode 100644 index 00000000..5896d237 --- /dev/null +++ b/delivery_partner_ups/README.rst @@ -0,0 +1,29 @@ +*************************************** +Hibou - UPS Partner Shipping Accounts +*************************************** + +Adds UPS shipping accounts. + +For more information and add-ons, visit `Hibou.io `_. + + +============= +Main Features +============= + +* Adds UPS to the delivery type selection field. +* Adds new required field of UPS Account ZIP. +* Validates entered UPS account numbers are the correct length. + +.. image:: https://user-images.githubusercontent.com/15882954/41176879-e7dc5a66-6b16-11e8-82a2-9b6cd0c909fd.png + :alt: 'Register Payment Detail' + :width: 988 + :align: left + +======= +License +======= + +Please see `LICENSE `_. + +Copyright Hibou Corp. 2018 diff --git a/delivery_partner_ups/__init__.py b/delivery_partner_ups/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/delivery_partner_ups/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/delivery_partner_ups/__manifest__.py b/delivery_partner_ups/__manifest__.py new file mode 100755 index 00000000..ee2f7945 --- /dev/null +++ b/delivery_partner_ups/__manifest__.py @@ -0,0 +1,25 @@ +{ + 'name': 'UPS Partner Shipping Accounts', + 'author': 'Hibou Corp.', + 'version': '17.0.1.0.0', + 'license': 'LGPL-3', + 'category': 'Stock', + 'sequence': 95, + 'summary': 'UPS Partner Shipping Accounts', + 'description': """ +UPS Partner Shipping Accounts +============================= +This module adds UPS to the delivery type selection dropdown on the Partner Shipping Account model. +Additionally, it adds a new required field UPS Account ZIP, as well as validation of entered UPS account number. + + """, + 'website': 'https://hibou.io/', + 'depends': [ + 'delivery_partner', + ], + 'data': [ + 'views/delivery_views.xml', + ], + 'installable': True, + 'application': False, +} diff --git a/delivery_partner_ups/i18n/es.po b/delivery_partner_ups/i18n/es.po new file mode 100644 index 00000000..1dbe5f59 --- /dev/null +++ b/delivery_partner_ups/i18n/es.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * delivery_partner_ups +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-12 01:10+0000\n" +"PO-Revision-Date: 2021-10-12 01:10+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: delivery_partner_ups +#: model:ir.model.fields,field_description:delivery_partner_ups.field_partner_shipping_account__delivery_type +msgid "Carrier" +msgstr "Transportista" + +#. module: delivery_partner_ups +#: model:ir.model,name:delivery_partner_ups.model_partner_shipping_account +msgid "Partner Shipping Account" +msgstr "Cuenta de Envío del Socio" + +#. module: delivery_partner_ups +#: model:ir.model.fields.selection,name:delivery_partner_ups.selection__partner_shipping_account__delivery_type__ups +msgid "UPS" +msgstr "UPS" + +#. module: delivery_partner_ups +#: model:ir.model.fields,field_description:delivery_partner_ups.field_partner_shipping_account__ups_zip +msgid "UPS Account ZIP" +msgstr "Código postal de la cuenta UPS" +#. module: delivery_partner_ups +#: code:addons/delivery_partner_ups/models/delivery.py:0 +#, python-format +msgid "UPS Account numbers must be 6 Alpha-numeric characters." +msgstr "Los números de cuenta de UPS deben tener 6 caracteres alfanuméricos." + +#. module: delivery_partner_ups +#: code:addons/delivery_partner_ups/models/delivery.py:0 +#, python-format +msgid "UPS requires the 5 digit account ZIP." +msgstr "UPS requiere el código postal de 5 dígitos de la cuenta." diff --git a/delivery_partner_ups/models/__init__.py b/delivery_partner_ups/models/__init__.py new file mode 100644 index 00000000..be8cabd6 --- /dev/null +++ b/delivery_partner_ups/models/__init__.py @@ -0,0 +1 @@ +from . import delivery diff --git a/delivery_partner_ups/models/delivery.py b/delivery_partner_ups/models/delivery.py new file mode 100644 index 00000000..93d5ce56 --- /dev/null +++ b/delivery_partner_ups/models/delivery.py @@ -0,0 +1,19 @@ +import re + +from odoo import fields, models, _ +from odoo.exceptions import ValidationError + + +class PartnerShippingAccount(models.Model): + _inherit = 'partner.shipping.account' + + delivery_type = fields.Selection(selection_add=[('ups', 'UPS')], ondelete={'ups': 'set default'}) + ups_zip = fields.Char(string='UPS Account ZIP') + + def ups_check_validity(self): + m = re.search(r'^[\dA-Z]{6}$', self.name or '') + if not m: + raise ValidationError(_('UPS Account numbers must be 6 Alpha-numeric characters.')) + m = re.search(r'^\d{5}$', self.ups_zip or '') + if not m: + raise ValidationError(_('UPS requires the 5 digit account ZIP.')) diff --git a/delivery_partner_ups/tests/__init__.py b/delivery_partner_ups/tests/__init__.py new file mode 100644 index 00000000..9df4d58c --- /dev/null +++ b/delivery_partner_ups/tests/__init__.py @@ -0,0 +1 @@ +from . import test_ups_account diff --git a/delivery_partner_ups/tests/test_ups_account.py b/delivery_partner_ups/tests/test_ups_account.py new file mode 100644 index 00000000..f4391039 --- /dev/null +++ b/delivery_partner_ups/tests/test_ups_account.py @@ -0,0 +1,61 @@ +from odoo.tests.common import TransactionCase +from odoo.exceptions import ValidationError + + +class TestAccount(TransactionCase): + + def setUp(self): + super(TestAccount, self).setUp() + self.PartnerShippingAccount = self.env['partner.shipping.account'] + self.partner = self.env.ref('base.res_partner_12') + + def test_ups_account_information(self): + # Create object and confirm that validation error raises if ups account number is blank or not 8 digits + with self.assertRaises(ValidationError): + wrong_account_number = self.PartnerShippingAccount.create({ + 'name': '1234567', + 'description': 'Error Account', + 'partner_id': self.partner.id, + 'delivery_type': 'ups', + 'note': 'This is a note', + 'ups_zip': '12345' + }) + + with self.assertRaises(ValidationError): + no_account_number = self.PartnerShippingAccount.create({ + 'name': '', + 'description': 'Error Account', + 'partner_id': self.partner.id, + 'delivery_type': 'ups', + 'note': 'This is a note', + 'ups_zip': '12345' + }) + # Create object and confirm that validation error raises if zipcode is blank or not 5 digits + with self.assertRaises(ValidationError): + wrong_zip_code = self.PartnerShippingAccount.create({ + 'name': '123456', + 'description': 'Error Account', + 'partner_id': self.partner.id, + 'delivery_type': 'ups', + 'note': 'This is a note', + 'ups_zip': '1234' + }) + + with self.assertRaises(ValidationError): + no_zip_code = self.PartnerShippingAccount.create({ + 'name': '123456', + 'description': 'Error Account', + 'partner_id': self.partner.id, + 'delivery_type': 'ups', + 'note': 'This is a note', + 'ups_zip': '' + }) + + _ = self.PartnerShippingAccount.create({ + 'name': '123456', + 'description': 'Error Account', + 'partner_id': self.partner.id, + 'delivery_type': 'ups', + 'note': 'This is a note', + 'ups_zip': '12345' + }) diff --git a/delivery_partner_ups/views/delivery_views.xml b/delivery_partner_ups/views/delivery_views.xml new file mode 100644 index 00000000..1845c5ad --- /dev/null +++ b/delivery_partner_ups/views/delivery_views.xml @@ -0,0 +1,15 @@ + + + + partner.shipping.account.form.inherit + partner.shipping.account + + + + + + + +