diff --git a/delivery_partner/__init__.py b/delivery_partner/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/delivery_partner/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/delivery_partner/__manifest__.py b/delivery_partner/__manifest__.py new file mode 100755 index 00000000..ca0582e6 --- /dev/null +++ b/delivery_partner/__manifest__.py @@ -0,0 +1,24 @@ +{ + 'name': 'Partner Shipping Accounts', + 'author': 'Hibou Corp. ', + 'version': '11.0.1.0.0', + 'category': 'Stock', + 'sequence': 95, + 'summary': 'Record shipping account numbers on partners.', + 'description': """ +Record shipping account numbers on partners. + +* Customer Shipping Account Model + """, + 'website': 'https://hibou.io/', + 'depends': [ + 'delivery', + 'contacts', + ], + 'data': [ + 'security/ir.model.access.csv', + 'views/delivery_views.xml', + ], + 'installable': True, + 'application': False, +} diff --git a/delivery_partner/models/__init__.py b/delivery_partner/models/__init__.py new file mode 100644 index 00000000..be8cabd6 --- /dev/null +++ b/delivery_partner/models/__init__.py @@ -0,0 +1 @@ +from . import delivery diff --git a/delivery_partner/models/delivery.py b/delivery_partner/models/delivery.py new file mode 100644 index 00000000..5950e759 --- /dev/null +++ b/delivery_partner/models/delivery.py @@ -0,0 +1,44 @@ +from odoo import api, fields, models + + +class Partner(models.Model): + _inherit = 'res.partner' + + shipping_account_ids = fields.One2many('partner.shipping.account', 'partner_id', string='Shipping Accounts') + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + shipping_account_id = fields.Many2one('partner.shipping.account', string='Shipping Account') + + +class PartnerShippingAccount(models.Model): + _name = 'partner.shipping.account' + + name = fields.Char(string='Account Num.', required=True) + partner_id = fields.Many2one('res.partner', string='Partner', help='Leave blank to allow as a generic 3rd party shipper.') + delivery_type = fields.Selection([ + ('other', 'Other'), + ], string='Carrier', required=True) + note = fields.Text(string='Internal Note') + + @api.multi + def name_get(self): + delivery_types = self._fields['delivery_type']._description_selection(self.env) + + def get_name(value): + name = [n for v, n in delivery_types if v == value] + return name[0] if name else 'Undefined' + + res = [] + for acc in self: + res.append((acc.id, '%s: %s' % (get_name(acc.delivery_type), acc.name))) + return res + + @api.constrains('name', 'delivery_type') + def _check_validity(self): + for acc in self: + check = getattr(acc, acc.delivery_type + '_check_validity', None) + if check: + return check() diff --git a/delivery_partner/security/ir.model.access.csv b/delivery_partner/security/ir.model.access.csv new file mode 100644 index 00000000..3db88333 --- /dev/null +++ b/delivery_partner/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_partner_shipping_account,partner.shipping.account,model_partner_shipping_account,base.group_partner_manager,1,1,1,1 diff --git a/delivery_partner/views/delivery_views.xml b/delivery_partner/views/delivery_views.xml new file mode 100644 index 00000000..d422ebea --- /dev/null +++ b/delivery_partner/views/delivery_views.xml @@ -0,0 +1,90 @@ + + + + partner.shipping.account.tree + partner.shipping.account + + + + + + + + + + + partner.shipping.account.form + partner.shipping.account + +
+ + + + + + + + + + + +
+
+
+ + + partner.shipping.account.search + partner.shipping.account + + + + + + + + + + + Shipping Accounts + partner.shipping.account + form + tree,form + +

+ No accounts +

+
+
+ + + + + + res.partner.carrier.property.form.inherit + res.partner + + + + + + + + + + + + + + + delivery.sale.order.form.view.with_carrier.inherit + sale.order + + + + + + + +