From b99dc296583b5b0ba491da68276242eb74214783 Mon Sep 17 00:00:00 2001 From: Eduardo De Miguel Date: Tue, 18 Jun 2024 14:01:19 +0200 Subject: [PATCH 1/9] [ADD] sale_margin_delivered_dropshipping: Compute delivered margins on Dropshipping --- sale_margin_delivered_dropshipping/README.rst | 124 +++++ .../__init__.py | 1 + .../__manifest__.py | 16 + .../models/__init__.py | 1 + .../models/sale_margin.py | 23 + .../readme/CONFIGURE.rst | 6 + .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 3 + .../readme/USAGE.rst | 18 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 465 ++++++++++++++++++ .../tests/__init__.py | 3 + .../test_sale_margin_delivered_dropship.py | 52 ++ 13 files changed, 714 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/README.rst create mode 100644 sale_margin_delivered_dropshipping/__init__.py create mode 100644 sale_margin_delivered_dropshipping/__manifest__.py create mode 100644 sale_margin_delivered_dropshipping/models/__init__.py create mode 100644 sale_margin_delivered_dropshipping/models/sale_margin.py create mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.rst create mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst create mode 100644 sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst create mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.rst create mode 100644 sale_margin_delivered_dropshipping/static/description/icon.png create mode 100644 sale_margin_delivered_dropshipping/static/description/index.html create mode 100644 sale_margin_delivered_dropshipping/tests/__init__.py create mode 100644 sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst new file mode 100644 index 000000000..de9182462 --- /dev/null +++ b/sale_margin_delivered_dropshipping/README.rst @@ -0,0 +1,124 @@ +================================== +Sale Margin Delivered Dropshipping +================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github + :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_delivered_dropshipping + :alt: OCA/margin-analysis +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Computes sale order lines margins for the delivered items. + +This module takes in consideration Outgoing, Returns and Dropship. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +#. To grant Sales Margin view privileges to a user, go to *Settings > Users & + Companies > Users*, select the user and set *Show Sale Margin* on. +#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +#. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and + add a Product Supplierinfo under *Purchase tab > Vendors*. + +Usage +===== + +#. Go to *Sales > Orders > Quotations*. +#. Create a new *Sales Order* and add a line with an stockable product. Set a + quantity higher than one. +#. Confirm the *Sales Order* and deliver just a partial amount of product in + the picking. +#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension + and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be: + +`margin`: 45 (3 * 15) +`margin_delivered`: 30 (2 * 15) + +Additionally, you can check the margin and the margin percent in the sales +order line. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Moduon + +Contributors +~~~~~~~~~~~~ + +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-Shide| image:: https://github.com/Shide.png?size=40px + :target: https://github.com/Shide + :alt: Shide + +Current `maintainer `__: + +|maintainer-Shide| + +This module is part of the `OCA/margin-analysis `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_margin_delivered_dropshipping/__init__.py b/sale_margin_delivered_dropshipping/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/sale_margin_delivered_dropshipping/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py new file mode 100644 index 000000000..b3ab87770 --- /dev/null +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Sale Margin Delivered Dropshipping", + "version": "16.0.1.0.0", + "author": "Moduon, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/margin-analysis", + "category": "Sales", + "license": "AGPL-3", + "depends": ["sale_margin_delivered", "stock_dropshipping"], + "data": [], + "installable": True, + "auto_install": True, + "development_status": "Alpha", + "maintainers": ["Shide"], +} diff --git a/sale_margin_delivered_dropshipping/models/__init__.py b/sale_margin_delivered_dropshipping/models/__init__.py new file mode 100644 index 000000000..7df041a90 --- /dev/null +++ b/sale_margin_delivered_dropshipping/models/__init__.py @@ -0,0 +1 @@ +from . import sale_margin diff --git a/sale_margin_delivered_dropshipping/models/sale_margin.py b/sale_margin_delivered_dropshipping/models/sale_margin.py new file mode 100644 index 000000000..160ffa4c7 --- /dev/null +++ b/sale_margin_delivered_dropshipping/models/sale_margin.py @@ -0,0 +1,23 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def _get_delivered_margin_valuation_layers(self): + """Adds Valuation Layers that involves Dropshipping and not considered + in other scenarios.""" + valuation_layers = super()._get_delivered_margin_valuation_layers() + for move in self.move_ids.filtered(lambda m: m.state == "done"): + if ( + move.location_dest_usage == "customer" + and move.location_usage == "supplier" + ): + # Dropship moves have 2 valuation layers. Use negative one + valuation_layers |= move.stock_valuation_layer_ids.filtered( + lambda vl: vl.quantity < 0 + ) + return valuation_layers diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst new file mode 100644 index 000000000..bf5214220 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +#. To grant Sales Margin view privileges to a user, go to *Settings > Users & + Companies > Users*, select the user and set *Show Sale Margin* on. +#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +#. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and + add a Product Supplierinfo under *Purchase tab > Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..249b6b1da --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) diff --git a/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst new file mode 100644 index 000000000..8748901a6 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +Computes sale order lines margins for the delivered items. + +This module takes in consideration Outgoing, Returns and Dropship. diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.rst b/sale_margin_delivered_dropshipping/readme/USAGE.rst new file mode 100644 index 000000000..1dbc74862 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/USAGE.rst @@ -0,0 +1,18 @@ +#. Go to *Sales > Orders > Quotations*. +#. Create a new *Sales Order* and add a line with an stockable product. Set a + quantity higher than one. +#. Confirm the *Sales Order* and deliver just a partial amount of product in + the picking. +#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension + and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be: + +`margin`: 45 (3 * 15) +`margin_delivered`: 30 (2 * 15) + +Additionally, you can check the margin and the margin percent in the sales +order line. diff --git a/sale_margin_delivered_dropshipping/static/description/icon.png b/sale_margin_delivered_dropshipping/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html new file mode 100644 index 000000000..d890d3805 --- /dev/null +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -0,0 +1,465 @@ + + + + + +Sale Margin Delivered Dropshipping + + + +
+

Sale Margin Delivered Dropshipping

+ + +

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

+

Computes sale order lines margins for the delivered items.

+

This module takes in consideration Outgoing, Returns and Dropship.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Configuration

+
    +
  1. To grant Sales Margin view privileges to a user, go to Settings > Users & +Companies > Users, select the user and set Show Sale Margin on.
  2. +
  3. Go to Settings > Purchase > Logistics and activate Dropshipping.
  4. +
  5. Configure Dropship Product: Create or Edit an Storable product, +activate Dropship route on Inventory Tab > Routes and +add a Product Supplierinfo under Purchase tab > Vendors.
  6. +
+
+
+

Usage

+
    +
  1. Go to Sales > Orders > Quotations.
  2. +
  3. Create a new Sales Order and add a line with an stockable product. Set a +quantity higher than one.
  4. +
  5. Confirm the Sales Order and deliver just a partial amount of product in +the picking.
  6. +
  7. Go to Sales > Reporting > Sales and unfold the Order Reference dimension +and the Margin and Margin Delivered to compare them.
  8. +
+

For example:

+

In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be:

+

margin: 45 (3 * 15) +margin_delivered: 30 (2 * 15)

+

Additionally, you can check the margin and the margin percent in the sales +order line.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Moduon
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

Shide

+

This module is part of the OCA/margin-analysis project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/sale_margin_delivered_dropshipping/tests/__init__.py b/sale_margin_delivered_dropshipping/tests/__init__.py new file mode 100644 index 000000000..1b3e385e1 --- /dev/null +++ b/sale_margin_delivered_dropshipping/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2019 Tecnativa - Sergio Teruel +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl +from . import test_sale_margin_delivered_dropship diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py new file mode 100644 index 000000000..296d1d88e --- /dev/null +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -0,0 +1,52 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl + + +from odoo.addons.sale_margin_delivered.tests.test_sale_margin_delivered import ( + TestSaleMarginDelivered, +) + + +class TestSaleMarginDeliveredDropship(TestSaleMarginDelivered): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.supplier = cls.env["res.partner"].create( + {"name": "supplier test", "property_product_pricelist": cls.pricelist.id} + ) + dropship_route = cls.env.ref("stock_dropshipping.route_drop_shipping") + cls.dropship_product = cls.env["product.product"].create( + { + "name": "Dropship Product Test", + "type": "product", + "uom_id": cls.product_uom_id.id, + "standard_price": 10.0, + "list_price": 20.00, + "tracking": "none", + "route_ids": [(6, 0, dropship_route.ids)], + } + ) + cls.dropship_product.seller_ids = [ + (0, 0, {"partner_id": cls.supplier.id, "price": 3.0}) + ] + + def test_sale_margin_delivered_dropship(self): + """Delivered quantities by Dropship""" + sale_order = self._new_sale_order(product=self.dropship_product) + sale_order.action_confirm() + purchases = sale_order._get_purchase_orders() + purchases.button_confirm() + dropship_picking = purchases.picking_ids + dropship_picking.move_line_ids.qty_done = 6.0 + dropship_picking._action_done() + # Create return for Dropship + picking_return = self._create_return( + dropship_picking, qty_refund=3.0, to_refund=True + ) + picking_return.action_assign() + picking_return.move_line_ids.qty_done = 3.0 + picking_return._action_done() + order_line = sale_order.order_line[:1] + self.assertEqual(order_line.margin_delivered, 30.0) + self.assertEqual(order_line.margin_delivered_percent, 50.0) + self.assertEqual(order_line.purchase_price_delivery, order_line.purchase_price) From f61be9a04565aff29c2041c6ec10139c9c5778b4 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 19 Jun 2024 10:19:32 +0000 Subject: [PATCH 2/9] [UPD] Update sale_margin_delivered_dropshipping.pot --- .../sale_margin_delivered_dropshipping.pot | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot diff --git a/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot b/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot new file mode 100644 index 000000000..1b6f914f3 --- /dev/null +++ b/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_delivered_dropshipping +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \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: sale_margin_delivered_dropshipping +#: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line +msgid "Sales Order Line" +msgstr "" From d829d1ca63117073aa4be4f140fdbfddbb6630a3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 19 Jun 2024 10:22:26 +0000 Subject: [PATCH 3/9] [BOT] post-merge updates --- sale_margin_delivered_dropshipping/README.rst | 2 +- sale_margin_delivered_dropshipping/__manifest__.py | 2 +- .../static/description/index.html | 13 +++++-------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index de9182462..26214d821 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -7,7 +7,7 @@ Sale Margin Delivered Dropshipping !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 + !! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py index b3ab87770..b580333dc 100644 --- a/sale_margin_delivered_dropshipping/__manifest__.py +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Sale Margin Delivered Dropshipping", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "author": "Moduon, Odoo Community Association (OCA)", "website": "https://github.com/OCA/margin-analysis", "category": "Sales", diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index d890d3805..9e3ef7c16 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -367,7 +366,7 @@

Sale Margin Delivered Dropshipping

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 +!! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

Computes sale order lines margins for the delivered items.

@@ -448,9 +447,7 @@

Contributors

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

From bbde522495f30859d005b0cedaea0a4ea5ec618e Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 19 Jun 2024 16:37:55 +0200 Subject: [PATCH 4/9] [IMP] sale_margin_delivered: Store margin delivered percent as a fration of 1 As it's done into the sale_margin addon from odoo --- .../tests/test_sale_margin_delivered_dropship.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py index 296d1d88e..b986bfab1 100644 --- a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -48,5 +48,5 @@ def test_sale_margin_delivered_dropship(self): picking_return._action_done() order_line = sale_order.order_line[:1] self.assertEqual(order_line.margin_delivered, 30.0) - self.assertEqual(order_line.margin_delivered_percent, 50.0) + self.assertEqual(order_line.margin_delivered_percent, 0.5) self.assertEqual(order_line.purchase_price_delivery, order_line.purchase_price) From e50136420c7de1bf5d42013086b4016d430cccf8 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Jun 2024 12:09:36 +0000 Subject: [PATCH 5/9] Added translation using Weblate (Italian) --- sale_margin_delivered_dropshipping/i18n/it.po | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/i18n/it.po diff --git a/sale_margin_delivered_dropshipping/i18n/it.po b/sale_margin_delivered_dropshipping/i18n/it.po new file mode 100644 index 000000000..ddbd41c26 --- /dev/null +++ b/sale_margin_delivered_dropshipping/i18n/it.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_delivered_dropshipping +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: sale_margin_delivered_dropshipping +#: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line +msgid "Sales Order Line" +msgstr "" From aa0f6ae45625394d4ee1189b27f226d7472acc8d Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Jun 2024 12:10:04 +0000 Subject: [PATCH 6/9] Translated using Weblate (Italian) Currently translated at 100.0% (1 of 1 strings) Translation: margin-analysis-16.0/margin-analysis-16.0-sale_margin_delivered_dropshipping Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping/it/ --- sale_margin_delivered_dropshipping/i18n/it.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sale_margin_delivered_dropshipping/i18n/it.po b/sale_margin_delivered_dropshipping/i18n/it.po index ddbd41c26..5dbf84e43 100644 --- a/sale_margin_delivered_dropshipping/i18n/it.po +++ b/sale_margin_delivered_dropshipping/i18n/it.po @@ -6,15 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-06-24 14:36+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" #. module: sale_margin_delivered_dropshipping #: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line msgid "Sales Order Line" -msgstr "" +msgstr "Riga ordine di vendita" From f1ffc17160a055b95c6fa770ac2fc3513f2632f6 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 13:06:20 +0530 Subject: [PATCH 7/9] [IMP] sale_margin_delivered_dropshipping: pre-commit auto fixes --- sale_margin_delivered_dropshipping/README.rst | 58 +++++++++---------- .../pyproject.toml | 3 + .../readme/CONFIGURE.md | 8 +++ .../readme/CONFIGURE.rst | 6 -- .../readme/CONTRIBUTORS.md | 2 + .../readme/CONTRIBUTORS.rst | 2 - .../{DESCRIPTION.rst => DESCRIPTION.md} | 0 .../readme/USAGE.md | 17 ++++++ .../readme/USAGE.rst | 18 ------ .../static/description/index.html | 49 ++++++++-------- 10 files changed, 85 insertions(+), 78 deletions(-) create mode 100644 sale_margin_delivered_dropshipping/pyproject.toml create mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.md delete mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.rst create mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md delete mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst rename sale_margin_delivered_dropshipping/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%) create mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.md delete mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.rst diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index 26214d821..0d71bd351 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -17,13 +17,13 @@ Sale Margin Delivered Dropshipping :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github - :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_delivered_dropshipping + :target: https://github.com/OCA/margin-analysis/tree/17.0/sale_margin_delivered_dropshipping :alt: OCA/margin-analysis .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping + :target: https://translation.odoo-community.org/projects/margin-analysis-17-0/margin-analysis-17-0-sale_margin_delivered_dropshipping :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,34 +45,34 @@ This module takes in consideration Outgoing, Returns and Dropship. Configuration ============= -#. To grant Sales Margin view privileges to a user, go to *Settings > Users & - Companies > Users*, select the user and set *Show Sale Margin* on. -#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. -#. Configure Dropship Product: Create or Edit an Storable product, - activate Dropship route on *Inventory Tab > Routes* and - add a Product Supplierinfo under *Purchase tab > Vendors*. +1. To grant Sales Margin view privileges to a user, go to *Settings > + Users & Companies > Users*, select the user and set *Show Sale + Margin* on. +2. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +3. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and add a Product + Supplierinfo under *Purchase tab > Vendors*. Usage ===== -#. Go to *Sales > Orders > Quotations*. -#. Create a new *Sales Order* and add a line with an stockable product. Set a - quantity higher than one. -#. Confirm the *Sales Order* and deliver just a partial amount of product in - the picking. -#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension - and the *Margin* and *Margin Delivered* to compare them. +1. Go to *Sales > Orders > Quotations*. +2. Create a new *Sales Order* and add a line with an stockable product. + Set a quantity higher than one. +3. Confirm the *Sales Order* and deliver just a partial amount of + product in the picking. +4. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* + dimension and the *Margin* and *Margin Delivered* to compare them. For example: -In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be: +In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be: -`margin`: 45 (3 * 15) -`margin_delivered`: 30 (2 * 15) +\`margin\`: 45 (3 \* 15) \`margin_delivered\`: 30 (2 \* 15) -Additionally, you can check the margin and the margin percent in the sales -order line. +Additionally, you can check the margin and the margin percent in the +sales order line. Bug Tracker =========== @@ -80,7 +80,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -88,18 +88,18 @@ Credits ======= Authors -~~~~~~~ +------- * Moduon Contributors -~~~~~~~~~~~~ +------------ -* Eduardo de Miguel (`Moduon `__) -* Rafael Blasco (`Moduon `__) +- Eduardo de Miguel (`Moduon `__) +- Rafael Blasco (`Moduon `__) Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -119,6 +119,6 @@ Current `maintainer `__: |maintainer-Shide| -This module is part of the `OCA/margin-analysis `_ project on GitHub. +This module is part of the `OCA/margin-analysis `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_margin_delivered_dropshipping/pyproject.toml b/sale_margin_delivered_dropshipping/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/sale_margin_delivered_dropshipping/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.md b/sale_margin_delivered_dropshipping/readme/CONFIGURE.md new file mode 100644 index 000000000..ee4c8bb35 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONFIGURE.md @@ -0,0 +1,8 @@ +1. To grant Sales Margin view privileges to a user, go to *Settings \> + Users & Companies \> Users*, select the user and set *Show Sale + Margin* on. +2. Go to *Settings \> Purchase \> Logistics* and activate + *Dropshipping*. +3. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab \> Routes* and add a + Product Supplierinfo under *Purchase tab \> Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst deleted file mode 100644 index bf5214220..000000000 --- a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst +++ /dev/null @@ -1,6 +0,0 @@ -#. To grant Sales Margin view privileges to a user, go to *Settings > Users & - Companies > Users*, select the user and set *Show Sale Margin* on. -#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. -#. Configure Dropship Product: Create or Edit an Storable product, - activate Dropship route on *Inventory Tab > Routes* and - add a Product Supplierinfo under *Purchase tab > Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..f468f56fb --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Eduardo de Miguel ([Moduon](https://www.moduon.team/)) +- Rafael Blasco ([Moduon](https://www.moduon.team/)) diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst deleted file mode 100644 index 249b6b1da..000000000 --- a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* Eduardo de Miguel (`Moduon `__) -* Rafael Blasco (`Moduon `__) diff --git a/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.md similarity index 100% rename from sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst rename to sale_margin_delivered_dropshipping/readme/DESCRIPTION.md diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.md b/sale_margin_delivered_dropshipping/readme/USAGE.md new file mode 100644 index 000000000..66db69637 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/USAGE.md @@ -0,0 +1,17 @@ +1. Go to *Sales \> Orders \> Quotations*. +2. Create a new *Sales Order* and add a line with an stockable product. + Set a quantity higher than one. +3. Confirm the *Sales Order* and deliver just a partial amount of + product in the picking. +4. Go to *Sales \> Reporting \> Sales* and unfold the *Order Reference* + dimension and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be: + +\`margin\`: 45 (3 \* 15) \`margin_delivered\`: 30 (2 \* 15) + +Additionally, you can check the margin and the margin percent in the +sales order line. diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.rst b/sale_margin_delivered_dropshipping/readme/USAGE.rst deleted file mode 100644 index 1dbc74862..000000000 --- a/sale_margin_delivered_dropshipping/readme/USAGE.rst +++ /dev/null @@ -1,18 +0,0 @@ -#. Go to *Sales > Orders > Quotations*. -#. Create a new *Sales Order* and add a line with an stockable product. Set a - quantity higher than one. -#. Confirm the *Sales Order* and deliver just a partial amount of product in - the picking. -#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension - and the *Margin* and *Margin Delivered* to compare them. - -For example: - -In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be: - -`margin`: 45 (3 * 15) -`margin_delivered`: 30 (2 * 15) - -Additionally, you can check the margin and the margin percent in the sales -order line. diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index 9e3ef7c16..d29d87abf 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,7 +369,7 @@

Sale Margin Delivered Dropshipping

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

+

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

Computes sale order lines margins for the delivered items.

This module takes in consideration Outgoing, Returns and Dropship.

@@ -394,39 +395,39 @@

Sale Margin Delivered Dropshipping

Configuration

    -
  1. To grant Sales Margin view privileges to a user, go to Settings > Users & -Companies > Users, select the user and set Show Sale Margin on.
  2. +
  3. To grant Sales Margin view privileges to a user, go to Settings > +Users & Companies > Users, select the user and set Show Sale +Margin on.
  4. Go to Settings > Purchase > Logistics and activate Dropshipping.
  5. Configure Dropship Product: Create or Edit an Storable product, -activate Dropship route on Inventory Tab > Routes and -add a Product Supplierinfo under Purchase tab > Vendors.
  6. +activate Dropship route on Inventory Tab > Routes and add a Product +Supplierinfo under Purchase tab > Vendors.

Usage

  1. Go to Sales > Orders > Quotations.
  2. -
  3. Create a new Sales Order and add a line with an stockable product. Set a -quantity higher than one.
  4. -
  5. Confirm the Sales Order and deliver just a partial amount of product in -the picking.
  6. -
  7. Go to Sales > Reporting > Sales and unfold the Order Reference dimension -and the Margin and Margin Delivered to compare them.
  8. +
  9. Create a new Sales Order and add a line with an stockable product. +Set a quantity higher than one.
  10. +
  11. Confirm the Sales Order and deliver just a partial amount of +product in the picking.
  12. +
  13. Go to Sales > Reporting > Sales and unfold the Order Reference +dimension and the Margin and Margin Delivered to compare them.

For example:

-

In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be:

-

margin: 45 (3 * 15) -margin_delivered: 30 (2 * 15)

-

Additionally, you can check the margin and the margin percent in the sales -order line.

+

In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be:

+

`margin`: 45 (3 * 15) `margin_delivered`: 30 (2 * 15)

+

Additionally, you can check the margin and the margin percent in the +sales order line.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -447,13 +448,15 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

Shide

-

This module is part of the OCA/margin-analysis project on GitHub.

+

This module is part of the OCA/margin-analysis project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From c0440f941e0dba90caf64363d1621da01d12c046 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 13:07:38 +0530 Subject: [PATCH 8/9] [MIG] sale_margin_delivered_dropshipping: Migration to 17.0 --- sale_margin_delivered_dropshipping/README.rst | 3 +++ sale_margin_delivered_dropshipping/__manifest__.py | 2 +- sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md | 2 ++ .../static/description/index.html | 4 ++++ .../tests/test_sale_margin_delivered_dropship.py | 4 ++-- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index 0d71bd351..563e4aa1d 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -97,6 +97,9 @@ Contributors - Eduardo de Miguel (`Moduon `__) - Rafael Blasco (`Moduon `__) +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py index b580333dc..d304f65d3 100644 --- a/sale_margin_delivered_dropshipping/__manifest__.py +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Sale Margin Delivered Dropshipping", - "version": "16.0.1.0.1", + "version": "17.0.1.0.0", "author": "Moduon, Odoo Community Association (OCA)", "website": "https://github.com/OCA/margin-analysis", "category": "Sales", diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md index f468f56fb..87f9e5686 100644 --- a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md @@ -1,2 +1,4 @@ - Eduardo de Miguel ([Moduon](https://www.moduon.team/)) - Rafael Blasco ([Moduon](https://www.moduon.team/)) +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index d29d87abf..9695fc421 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -443,6 +443,10 @@

Contributors

diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py index b986bfab1..29f5afcf9 100644 --- a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -37,14 +37,14 @@ def test_sale_margin_delivered_dropship(self): purchases = sale_order._get_purchase_orders() purchases.button_confirm() dropship_picking = purchases.picking_ids - dropship_picking.move_line_ids.qty_done = 6.0 + dropship_picking.move_line_ids.quantity = 6.0 dropship_picking._action_done() # Create return for Dropship picking_return = self._create_return( dropship_picking, qty_refund=3.0, to_refund=True ) picking_return.action_assign() - picking_return.move_line_ids.qty_done = 3.0 + picking_return.move_line_ids.quantity = 3.0 picking_return._action_done() order_line = sale_order.order_line[:1] self.assertEqual(order_line.margin_delivered, 30.0) From e96ce2fff6f4efb272aa9be76b9ebbc4ac8cfd10 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 15:27:01 +0530 Subject: [PATCH 9/9] [DON'T MERGE] test-requirements.txt --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 000000000..f23446af9 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-sale_margin_delivered @ git+https://github.com/OCA/margin-analysis.git@refs/pull/239/head#subdirectory=sale_margin_delivered