Skip to content

Commit

Permalink
[10.0][ADD] add module shopinvader_delivery_note
Browse files Browse the repository at this point in the history
  • Loading branch information
acsonefho committed May 10, 2019
1 parent 7418903 commit 68ab9d6
Show file tree
Hide file tree
Showing 12 changed files with 134 additions and 0 deletions.
6 changes: 6 additions & 0 deletions oca_dependencies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ ak-odoo-incubator https://github.com/akretion/ak-odoo-incubator 10.0
search-engine
product-attribute
product-variant
stock-logistics-workflow
sale-workflow
storage https://github.com/akretion/storage 10.0
payment-gateway https://github.com/akretion/payment-gateway 10.0
base_rest https://github.com/oca/rest-framework 10.0

# TODO remove me when the PR is merged https://github.com/OCA/sale-workflow/pull/755
sale-workflow https://github.com/acsone/sale-workflow 10.0-sale_promotion_rule_discount_amount-lmi
# TODO remove me when the PR is merged https://github.com/OCA/sale-workflow/pull/843
sale-workflow https://github.com/acsone/sale-workflow 10.0-sale_delivery_note
# TODO remove me when the PR is merged https://github.com/OCA/stock-logistics-workflow/pull/524
stock-logistics-workflow https://github.com/acsone/stock-logistics-workflow 10.0-sale_stock_delivery_note
1 change: 1 addition & 0 deletions setup/shopinvader_delivery_note/odoo/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)
1 change: 1 addition & 0 deletions setup/shopinvader_delivery_note/odoo/addons/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)
6 changes: 6 additions & 0 deletions setup/shopinvader_delivery_note/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
3 changes: 3 additions & 0 deletions shopinvader_delivery_note/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import services
17 changes: 17 additions & 0 deletions shopinvader_delivery_note/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Shopinvader delivery note",
"description": """Shopinvader addons to let user define a delivery note""",
"author": "ACSONE SA/NV",
"website": "http://shopinvader.com/",
"category": "e-commerce",
"version": "10.0.1.0.0",
"license": "AGPL-3",
"depends": [
"shopinvader",
# OCA/stock-logistics-workflow
"sale_stock_delivery_note",
],
}
5 changes: 5 additions & 0 deletions shopinvader_delivery_note/services/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import abstract_sale
from . import cart
13 changes: 13 additions & 0 deletions shopinvader_delivery_note/services/abstract_sale.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.addons.component.core import AbstractComponent


class AbstractSaleService(AbstractComponent):
_inherit = "shopinvader.abstract.sale.service"

def _convert_one_sale(self, sale):
values = super(AbstractSaleService, self)._convert_one_sale(sale)
values.update({"delivery_note": sale.delivery_note})
return values
31 changes: 31 additions & 0 deletions shopinvader_delivery_note/services/cart.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.addons.component.core import Component


class CartService(Component):
_inherit = "shopinvader.cart.service"

def _validator_update(self):
validator = super(CartService, self)._validator_update()
validator.update({"delivery_note": {"type": "string"}})
return validator

def _prepare_delivery_note(self, delivery_note, params):
"""
Put the given delivery note into params dict (used to create the
sale.order).
:param delivery_note: str or bool
:param params: dict
:return: bool
"""
# If the user try to remove the value, we'll have an empty string
if delivery_note or isinstance(delivery_note, (str, unicode)):
params.update({"delivery_note": delivery_note})
return True

def _prepare_update(self, cart, params):
params = super(CartService, self)._prepare_update(cart, params)
self._prepare_delivery_note(params.pop("delivery_note", False), params)
return params
4 changes: 4 additions & 0 deletions shopinvader_delivery_note/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_sale_order_delivery_note
46 changes: 46 additions & 0 deletions shopinvader_delivery_note/tests/test_sale_order_delivery_note.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from uuid import uuid4

from odoo.addons.shopinvader.tests.test_cart import CommonConnectedCartCase


class TestSaleOrderDeliveryNote(CommonConnectedCartCase):
"""
Tests about the delivery note provided by the customer.
This field should by passed into the related picking.
"""

def setUp(self):
super(TestSaleOrderDeliveryNote, self).setUp()

def test_update_delivery_note1(self):
"""
Execute some update on existing cart (update many times the
delivery_note) then confirm it to check if the delivery_note is
passed to related pickings.
:return:
"""
delivery_notes = [
str(uuid4()),
str(uuid4()),
"",
"",
str(uuid4()),
str(uuid4()),
]
for delivery_note in delivery_notes:
params = {"delivery_note": delivery_note}
self.service.dispatch("update", params=params)
self.assertEquals(self.cart.delivery_note, delivery_note)
result = self.service.dispatch("update", _id=self.cart.id)
data = result.get("data", {})
self.assertEquals(data.get("delivery_note"), delivery_note)
self.cart.action_confirm()
pickings = self.cart.picking_ids
self.assertTrue(pickings)
for picking in pickings:
# Should be equals to the last delivery_note set on the cart
self.assertEquals(picking.delivery_note, delivery_note)
return

0 comments on commit 68ab9d6

Please sign in to comment.