40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import fields, models
|
||
|
|
||
|
|
||
|
class ResCountry(models.Model):
|
||
|
_inherit = 'res.country'
|
||
|
|
||
|
def get_website_sale_countries(self, mode='billing'):
|
||
|
res = super(ResCountry, self).get_website_sale_countries(mode=mode)
|
||
|
if mode == 'shipping':
|
||
|
countries = self.env['res.country']
|
||
|
|
||
|
delivery_carriers = self.env['delivery.carrier'].sudo().search([('website_published', '=', True)])
|
||
|
for carrier in delivery_carriers:
|
||
|
if not carrier.country_ids and not carrier.state_ids:
|
||
|
countries = res
|
||
|
break
|
||
|
countries |= carrier.country_ids
|
||
|
|
||
|
res = res & countries
|
||
|
return res
|
||
|
|
||
|
def get_website_sale_states(self, mode='billing'):
|
||
|
res = super(ResCountry, self).get_website_sale_states(mode=mode)
|
||
|
|
||
|
states = self.env['res.country.state']
|
||
|
if mode == 'shipping':
|
||
|
dom = ['|', ('country_ids', 'in', self.id), ('country_ids', '=', False), ('website_published', '=', True)]
|
||
|
delivery_carriers = self.env['delivery.carrier'].sudo().search(dom)
|
||
|
|
||
|
for carrier in delivery_carriers:
|
||
|
if not carrier.country_ids and not carrier.state_ids:
|
||
|
states = res
|
||
|
break
|
||
|
states |= carrier.state_ids
|
||
|
res = res & states
|
||
|
return res
|