Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[11.0][NEW] partner_delivery_zone: New module to group partners, orders and pickings by delivery zones #167

Merged
merged 1 commit into from
Oct 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions partner_delivery_zone/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models
26 changes: 26 additions & 0 deletions partner_delivery_zone/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
'name': 'Partner Delivery Zone',
'summary': 'Set on partners a zone for delivery goods',
'version': '11.0.1.0.0',
'development_status': 'Beta',
'category': 'Delivery',
'website': 'https://github.com/OCA/delivery-carrier',
'author': 'Tecnativa, Odoo Community Association (OCA)',
'license': 'AGPL-3',
'application': False,
'installable': True,
'depends': [
'sale_stock',
],
'data': [
'security/ir.model.access.csv',
'views/partner_delivery_zone_view.xml',
'views/res_partner_view.xml',
'views/sale_order_view.xml',
'views/stock_picking_view.xml',
'views/report_deliveryslip.xml',
'views/report_shipping.xml',
],
}
124 changes: 124 additions & 0 deletions partner_delivery_zone/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_delivery_zone
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-18 07:44+0000\n"
"PO-Revision-Date: 2018-10-18 09:45+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.6\n"

#. module: partner_delivery_zone
#: model:ir.ui.view,arch_db:partner_delivery_zone.report_delivery_document
#: model:ir.ui.view,arch_db:partner_delivery_zone.report_picking
msgid "<strong>Zone</strong>"
msgstr "<strong>Zona</strong>"

#. module: partner_delivery_zone
#: model:ir.actions.act_window,help:partner_delivery_zone.partner_delivery_zone_action
msgid "Click to set a new delivery zone for partners."
msgstr "Pincha aquí para crear nuevas zonas de entrega"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_code
msgid "Code"
msgstr "Código"

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_res_partner
msgid "Contact"
msgstr "Contacto"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_create_uid
msgid "Created by"
msgstr "Creado por"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_create_date
msgid "Created on"
msgstr "Creado el"

#. module: partner_delivery_zone
#: model:ir.actions.act_window,name:partner_delivery_zone.partner_delivery_zone_action
#: model:ir.model.fields,field_description:partner_delivery_zone.field_res_partner_delivery_zone_id
#: model:ir.model.fields,field_description:partner_delivery_zone.field_res_users_delivery_zone_id
#: model:ir.model.fields,field_description:partner_delivery_zone.field_sale_order_delivery_zone_id
#: model:ir.model.fields,field_description:partner_delivery_zone.field_stock_picking_delivery_zone_id
#: model:ir.ui.menu,name:partner_delivery_zone.partner_delivery_zone_menu
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_partner_delivery_zone_form
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_partner_delivery_zone_search
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_partner_delivery_zone_tree
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_picking_internal_search
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_res_partner_filter
#: model:ir.ui.view,arch_db:partner_delivery_zone.view_sales_order_filter
msgid "Delivery Zone"
msgstr "Zona de entrega"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_display_name
msgid "Display Name"
msgstr "Nombre a mostrar"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_id
msgid "ID"
msgstr "ID (identificación)"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone___last_update
msgid "Last Modified on"
msgstr "Última modificación el"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_write_uid
msgid "Last Updated by"
msgstr "Última modificación por"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_write_date
msgid "Last Updated on"
msgstr "Última actualización el"

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_sale_order
msgid "Quotation"
msgstr "Presupuesto"

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_stock_move
msgid "Stock Move"
msgstr "Movimiento de existencias"

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_stock_picking
msgid "Transfer"
msgstr "Transferir"

#. module: partner_delivery_zone
#: model:ir.model.fields,field_description:partner_delivery_zone.field_partner_delivery_zone_name
msgid "Zone"
msgstr "Zona"

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_delivery_zone
msgid "delivery.zone"
msgstr ""

#. module: partner_delivery_zone
#: model:ir.model,name:partner_delivery_zone.model_partner_delivery_zone
msgid "partner.delivery.zone"
msgstr ""

#, fuzzy
#~ msgid "Delivery Schedule"
#~ msgstr "Horario"
6 changes: 6 additions & 0 deletions partner_delivery_zone/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import partner_delivery_zone
from . import res_partner
from . import sale_order
from . import stock_move
from . import stock_picking
13 changes: 13 additions & 0 deletions partner_delivery_zone/models/partner_delivery_zone.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models


class PartnerDeliveryZone(models.Model):
_name = 'partner.delivery.zone'

code = fields.Char()
name = fields.Char(
string='Zone',
required=True,
)
40 changes: 40 additions & 0 deletions partner_delivery_zone/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from lxml import etree


class ResPartner(models.Model):
_inherit = 'res.partner'

delivery_zone_id = fields.Many2one(
comodel_name='partner.delivery.zone',
string='Delivery Zone',
ondelete='restrict',
index=True,
)

@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
submenu=False):
"""The purpose of this is to write a context on "child_ids" field
respecting other contexts on this field.
There is a PR (https://github.com/odoo/odoo/pull/26607) to odoo for
avoiding this. If merged, remove this method and add the attribute
in the field.
"""
res = super().fields_view_get(
view_id=view_id, view_type=view_type, toolbar=toolbar,
submenu=submenu,
)
if view_type == 'form':
partner_xml = etree.XML(res['arch'])
partner_fields = partner_xml.xpath("//field[@name='child_ids']")
if partner_fields:
partner_field = partner_fields[0]
context = partner_field.attrib.get("context", "{}").replace(
"{", "{'default_delivery_zone_id': delivery_zone_id, ", 1,
)
partner_field.attrib['context'] = context
res['arch'] = etree.tostring(partner_xml)
return res
19 changes: 19 additions & 0 deletions partner_delivery_zone/models/sale_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models


class SaleOrder(models.Model):
_inherit = 'sale.order'

delivery_zone_id = fields.Many2one(
comodel_name='partner.delivery.zone',
string="Delivery Zone",
ondelete='restrict',
index=True,
)

@api.onchange('partner_shipping_id')
def onchange_partner_shipping_id_delivery_zone(self):
if self.partner_shipping_id.delivery_zone_id:
self.delivery_zone_id = self.partner_shipping_id.delivery_zone_id
13 changes: 13 additions & 0 deletions partner_delivery_zone/models/stock_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models


class StockMove(models.Model):
_inherit = 'stock.move'

def _get_new_picking_values(self):
vals = super()._get_new_picking_values()
vals['delivery_zone_id'] =\
self.sale_line_id.order_id.delivery_zone_id.id
return vals
18 changes: 18 additions & 0 deletions partner_delivery_zone/models/stock_picking.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2018 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models


class StockPicking(models.Model):
_inherit = 'stock.picking'

delivery_zone_id = fields.Many2one(
comodel_name="partner.delivery.zone",
string="Delivery Zone",
index=True,
)

@api.onchange('partner_id')
def onchange_partner_id_zone(self):
if self.partner_id.delivery_zone_id:
self.delivery_zone_id = self.partner_id.delivery_zone_id
3 changes: 3 additions & 0 deletions partner_delivery_zone/readme/CONFIGURATION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
To configure this module you need to:

#. Go to *Sales > Configuration> Delivery Zones* and create any zones
1 change: 1 addition & 0 deletions partner_delivery_zone/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Sergio Teruel <sergio.teruel@tecnativa.com>
4 changes: 4 additions & 0 deletions partner_delivery_zone/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This module allows to set delivery zones on partner. This information is
written in sale orders and stock pickings.
It also adds searches and groups in partners, sales orders and stock pickings
views.
1 change: 1 addition & 0 deletions partner_delivery_zone/readme/ROADMAP.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* For the future, system can set delivery zones based on partner zip.
12 changes: 12 additions & 0 deletions partner_delivery_zone/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
To use this module you need to:

#. Got to *Sales > Settings > Delivery Zones*
#. Create some delivery zones.
#. Go to *Sales > Customers*.
#. Go to *Sales and Purchases* tab.
#. Set a delivery zone for this partner in *Delivery Zone* field.
#. Got to *Sales > Quotations*
#. Create a quotation, automatically delivery zone field is filled. Confirm
it.
#. Open the picking and you can see the delivery zone in
'Aditional Information' tab.
4 changes: 4 additions & 0 deletions partner_delivery_zone/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_partner_delivery_zone_user,access_partner_delivery_zone_user,model_partner_delivery_zone,base.group_user,1,0,0,0
access_partner_delivery_zone_manager,access_partner_delivery_zone_manager,model_partner_delivery_zone,sales_team.group_sale_manager,1,1,1,1
access_partner_delivery_zone_portal,partner.delivery.zone.portal,model_partner_delivery_zone,base.group_portal,1,0,0,0
Binary file added partner_delivery_zone/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions partner_delivery_zone/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import test_partner_delivery_zone
Loading