From 6530d1d4652c40ada7c44f7ff19d6f4f5ad36e3b Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Tue, 29 Oct 2019 12:18:57 +0100 Subject: [PATCH 01/18] [11.0][ADD] sale_margin_sync: Recompute sale margin when related stock move cost price is changed --- sale_margin_sync/README.rst | 76 ++++ sale_margin_sync/__init__.py | 3 + sale_margin_sync/__manifest__.py | 16 + sale_margin_sync/i18n/sale_margin_sync.pot | 20 + sale_margin_sync/models/__init__.py | 3 + sale_margin_sync/models/stock_move.py | 22 + sale_margin_sync/readme/CONTRIBUTORS.rst | 4 + sale_margin_sync/readme/DESCRIPTION.rst | 1 + sale_margin_sync/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 426 ++++++++++++++++++ sale_margin_sync/tests/__init__.py | 3 + .../tests/test_sale_margin_sync.py | 41 ++ 12 files changed, 615 insertions(+) create mode 100644 sale_margin_sync/README.rst create mode 100644 sale_margin_sync/__init__.py create mode 100644 sale_margin_sync/__manifest__.py create mode 100644 sale_margin_sync/i18n/sale_margin_sync.pot create mode 100644 sale_margin_sync/models/__init__.py create mode 100644 sale_margin_sync/models/stock_move.py create mode 100644 sale_margin_sync/readme/CONTRIBUTORS.rst create mode 100644 sale_margin_sync/readme/DESCRIPTION.rst create mode 100644 sale_margin_sync/static/description/icon.png create mode 100644 sale_margin_sync/static/description/index.html create mode 100644 sale_margin_sync/tests/__init__.py create mode 100644 sale_margin_sync/tests/test_sale_margin_sync.py diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst new file mode 100644 index 00000000..cf711d15 --- /dev/null +++ b/sale_margin_sync/README.rst @@ -0,0 +1,76 @@ +================ +Sale margin sync +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |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/11.0/sale_margin_sync + :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-11-0/margin-analysis-11-0-sale_margin_sync + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/132/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Recompute sale margin when related stock move cost price is changed. + +**Table of contents** + +.. contents:: + :local: + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Carlos Dauden + * Sergio Teruel + +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. + +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_sync/__init__.py b/sale_margin_sync/__init__.py new file mode 100644 index 00000000..31660d6a --- /dev/null +++ b/sale_margin_sync/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py new file mode 100644 index 00000000..09fd2641 --- /dev/null +++ b/sale_margin_sync/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + 'name': 'Sale margin sync', + 'summary': 'Recompute sale margin when stock move cost price is changed', + 'version': '11.0.1.0.0', + 'category': 'Sales', + 'website': 'https://github.com/OCA/margin-analysis', + 'author': 'Tecnativa, Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ + 'sale_margin', + 'sale_stock', + ], +} diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot new file mode 100644 index 00000000..6ba81dc3 --- /dev/null +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_sync +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_sync +#: model:ir.model,name:sale_margin_sync.model_stock_move +msgid "Stock Move" +msgstr "" + diff --git a/sale_margin_sync/models/__init__.py b/sale_margin_sync/models/__init__.py new file mode 100644 index 00000000..1fec1656 --- /dev/null +++ b/sale_margin_sync/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import stock_move diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py new file mode 100644 index 00000000..f1da4d2a --- /dev/null +++ b/sale_margin_sync/models/stock_move.py @@ -0,0 +1,22 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockMove(models.Model): + _inherit = 'stock.move' + + def write(self, vals): + res = super(StockMove, self).write(vals) + if 'price_unit' in vals and not self.env.context.get( + 'skip_sale_margin_sync', False): + self.sale_margin_sync() + return res + + def sale_margin_sync(self): + for move in self: + if (move.state != 'done' or not move.sale_line_id or + not move._is_out()): + continue + move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/readme/CONTRIBUTORS.rst b/sale_margin_sync/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..66d11c82 --- /dev/null +++ b/sale_margin_sync/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Carlos Dauden + * Sergio Teruel diff --git a/sale_margin_sync/readme/DESCRIPTION.rst b/sale_margin_sync/readme/DESCRIPTION.rst new file mode 100644 index 00000000..03ba88c6 --- /dev/null +++ b/sale_margin_sync/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Recompute sale margin when related stock move cost price is changed. diff --git a/sale_margin_sync/static/description/icon.png b/sale_margin_sync/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html new file mode 100644 index 00000000..346557d6 --- /dev/null +++ b/sale_margin_sync/static/description/index.html @@ -0,0 +1,426 @@ + + + + + + +Sale margin sync + + + +
+

Sale margin sync

+ + +

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Recompute sale margin when related stock move cost price is changed.

+

Table of contents

+ +
+

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 smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:

    +
    +
      +
    • Carlos Dauden
    • +
    • Sergio Teruel
    • +
    +
    +
  • +
+
+
+

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.

+

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_sync/tests/__init__.py b/sale_margin_sync/tests/__init__.py new file mode 100644 index 00000000..8df8dcdc --- /dev/null +++ b/sale_margin_sync/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_sale_margin_sync diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py new file mode 100644 index 00000000..935045fd --- /dev/null +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -0,0 +1,41 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests.common import SavepointCase + + +class TestSaleMarginSync(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner = cls.env['res.partner'].create({ + 'name': 'Test', + }) + cls.product = cls.env['product.product'].create({ + 'name': 'test_product', + 'type': 'product', + }) + cls.env['stock.quant'].create({ + 'product_id': cls.product.id, + 'location_id': cls.env.ref('stock.stock_location_stock').id, + 'quantity': 30.0}) + cls.order = cls.env['sale.order'].create({ + 'partner_id': cls.partner.id, + 'order_line': [(0, 0, { + 'name': cls.product.name, + 'product_id': cls.product.id, + 'product_uom_qty': 10, + 'product_uom': cls.product.uom_id.id, + 'price_unit': 100.00, + })], + 'pricelist_id': cls.env.ref('product.list0').id, + }) + + def test_sale_margin_sync(self): + self.order.action_confirm() + so_line = self.order.order_line[:1] + move = so_line.move_ids[:1] + move.quantity_done = 10 + move.picking_id.action_done() + move.price_unit = -80.0 + self.assertEqual(so_line.purchase_price, 80.0) + self.assertEqual(so_line.margin, 200.0) From 9ecfec9612cdd8157c1943f89ee61a694aa7d6c9 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Thu, 31 Oct 2019 00:20:17 +0100 Subject: [PATCH 02/18] [MIG] sale_margin_sync: Migration to 12.0 --- sale_margin_sync/README.rst | 10 +++++----- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 2 +- sale_margin_sync/models/stock_move.py | 6 ++---- sale_margin_sync/static/description/index.html | 6 +++--- sale_margin_sync/tests/test_sale_margin_sync.py | 10 ++++++++++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index cf711d15..56fb4168 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/11.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/12.0/sale_margin_sync :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-11-0/margin-analysis-11-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/11.0 + :target: https://runbot.odoo-community.org/runbot/132/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 09fd2641..3d544797 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Sale margin sync', 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Sales', 'website': 'https://github.com/OCA/margin-analysis', 'author': 'Tecnativa, Odoo Community Association (OCA)', diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 6ba81dc3..aa948ace 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py index f1da4d2a..d76205c5 100644 --- a/sale_margin_sync/models/stock_move.py +++ b/sale_margin_sync/models/stock_move.py @@ -15,8 +15,6 @@ def write(self, vals): return res def sale_margin_sync(self): - for move in self: - if (move.state != 'done' or not move.sale_line_id or - not move._is_out()): - continue + for move in self.filtered(lambda m: ( + m.state == 'done' and m.sale_line_id and m._is_out())): move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 346557d6..93578de7 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 935045fd..db5c6128 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -13,6 +13,7 @@ def setUpClass(cls): cls.product = cls.env['product.product'].create({ 'name': 'test_product', 'type': 'product', + 'standard_price': 70, }) cls.env['stock.quant'].create({ 'product_id': cls.product.id, @@ -39,3 +40,12 @@ def test_sale_margin_sync(self): move.price_unit = -80.0 self.assertEqual(so_line.purchase_price, 80.0) self.assertEqual(so_line.margin, 200.0) + + def test_sale_margin_sync_unvalidated_move(self): + self.order.action_confirm() + so_line = self.order.order_line[:1] + move = so_line.move_ids[:1] + move.quantity_done = 10 + move.price_unit = -80.0 + self.assertEqual(so_line.purchase_price, 70.0) + self.assertEqual(so_line.margin, 300.0) From 2fbcf1783ec72786e86fdb448c6b97b41e9b6339 Mon Sep 17 00:00:00 2001 From: Sergio Teruel Date: Thu, 21 Nov 2019 21:31:45 +0100 Subject: [PATCH 03/18] [IMP] sale_margin_sync: Create a pricelist for testing to avoid crash test with other modules --- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/tests/test_sale_margin_sync.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 3d544797..e7400dc6 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Sale margin sync', 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '12.0.1.0.0', + 'version': '12.0.1.0.1', 'category': 'Sales', 'website': 'https://github.com/OCA/margin-analysis', 'author': 'Tecnativa, Odoo Community Association (OCA)', diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index db5c6128..1cbe3e72 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -7,6 +7,9 @@ class TestSaleMarginSync(SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.pricelist = cls.env['product.pricelist'].create({ + 'name': 'Pricelist for testing sale_margin_sync', + }) cls.partner = cls.env['res.partner'].create({ 'name': 'Test', }) @@ -28,7 +31,7 @@ def setUpClass(cls): 'product_uom': cls.product.uom_id.id, 'price_unit': 100.00, })], - 'pricelist_id': cls.env.ref('product.list0').id, + 'pricelist_id': cls.pricelist.id, }) def test_sale_margin_sync(self): From 596d17cbac819f271e5d364e1553287102a245ea Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Thu, 17 Sep 2020 16:38:33 +0200 Subject: [PATCH 04/18] [IMP] sale_margin_sync: black, isort --- sale_margin_sync/__manifest__.py | 21 +++---- sale_margin_sync/models/stock_move.py | 12 ++-- .../tests/test_sale_margin_sync.py | 59 +++++++++++-------- 3 files changed, 49 insertions(+), 43 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index e7400dc6..ff527527 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -1,16 +1,13 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': 'Sale margin sync', - 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '12.0.1.0.1', - 'category': 'Sales', - 'website': 'https://github.com/OCA/margin-analysis', - 'author': 'Tecnativa, Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'installable': True, - 'depends': [ - 'sale_margin', - 'sale_stock', - ], + "name": "Sale margin sync", + "summary": "Recompute sale margin when stock move cost price is changed", + "version": "12.0.1.0.1", + "category": "Sales", + "website": "https://github.com/OCA/margin-analysis", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["sale_margin", "sale_stock",], } diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py index d76205c5..74ea11ec 100644 --- a/sale_margin_sync/models/stock_move.py +++ b/sale_margin_sync/models/stock_move.py @@ -5,16 +5,18 @@ class StockMove(models.Model): - _inherit = 'stock.move' + _inherit = "stock.move" def write(self, vals): res = super(StockMove, self).write(vals) - if 'price_unit' in vals and not self.env.context.get( - 'skip_sale_margin_sync', False): + if "price_unit" in vals and not self.env.context.get( + "skip_sale_margin_sync", False + ): self.sale_margin_sync() return res def sale_margin_sync(self): - for move in self.filtered(lambda m: ( - m.state == 'done' and m.sale_line_id and m._is_out())): + for move in self.filtered( + lambda m: (m.state == "done" and m.sale_line_id and m._is_out()) + ): move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 1cbe3e72..6ece0f60 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -7,32 +7,39 @@ class TestSaleMarginSync(SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.pricelist = cls.env['product.pricelist'].create({ - 'name': 'Pricelist for testing sale_margin_sync', - }) - cls.partner = cls.env['res.partner'].create({ - 'name': 'Test', - }) - cls.product = cls.env['product.product'].create({ - 'name': 'test_product', - 'type': 'product', - 'standard_price': 70, - }) - cls.env['stock.quant'].create({ - 'product_id': cls.product.id, - 'location_id': cls.env.ref('stock.stock_location_stock').id, - 'quantity': 30.0}) - cls.order = cls.env['sale.order'].create({ - 'partner_id': cls.partner.id, - 'order_line': [(0, 0, { - 'name': cls.product.name, - 'product_id': cls.product.id, - 'product_uom_qty': 10, - 'product_uom': cls.product.uom_id.id, - 'price_unit': 100.00, - })], - 'pricelist_id': cls.pricelist.id, - }) + cls.pricelist = cls.env["product.pricelist"].create( + {"name": "Pricelist for testing sale_margin_sync",} + ) + cls.partner = cls.env["res.partner"].create({"name": "Test",}) + cls.product = cls.env["product.product"].create( + {"name": "test_product", "type": "product", "standard_price": 70,} + ) + cls.env["stock.quant"].create( + { + "product_id": cls.product.id, + "location_id": cls.env.ref("stock.stock_location_stock").id, + "quantity": 30.0, + } + ) + cls.order = cls.env["sale.order"].create( + { + "partner_id": cls.partner.id, + "order_line": [ + ( + 0, + 0, + { + "name": cls.product.name, + "product_id": cls.product.id, + "product_uom_qty": 10, + "product_uom": cls.product.uom_id.id, + "price_unit": 100.00, + }, + ) + ], + "pricelist_id": cls.pricelist.id, + } + ) def test_sale_margin_sync(self): self.order.action_confirm() From 03215808484e2d50b5200486e9776355ead2b989 Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Thu, 17 Sep 2020 16:38:33 +0200 Subject: [PATCH 05/18] [MIG] sale_margin_sync: Migration to v13.0 --- sale_margin_sync/README.rst | 10 ++++----- sale_margin_sync/__manifest__.py | 4 ++-- sale_margin_sync/i18n/sale_margin_sync.pot | 11 +++++----- sale_margin_sync/models/__init__.py | 2 +- sale_margin_sync/models/stock_move.py | 22 ------------------- .../models/stock_valuation_layer.py | 20 +++++++++++++++++ .../static/description/index.html | 6 ++--- .../tests/test_sale_margin_sync.py | 10 ++++----- 8 files changed, 41 insertions(+), 44 deletions(-) delete mode 100644 sale_margin_sync/models/stock_move.py create mode 100644 sale_margin_sync/models/stock_valuation_layer.py diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 56fb4168..5c83bba5 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/12.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/13.0/sale_margin_sync :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-12-0/margin-analysis-12-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-13-0/margin-analysis-13-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/12.0 + :target: https://runbot.odoo-community.org/runbot/132/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index ff527527..9ef6f6c4 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,11 +3,11 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "12.0.1.0.1", + "version": "13.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, - "depends": ["sale_margin", "sale_stock",], + "depends": ["sale_margin", "sale_stock"], } diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index aa948ace..28dd313a 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_margin_sync +# * sale_margin_sync # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,6 @@ msgstr "" "Plural-Forms: \n" #. module: sale_margin_sync -#: model:ir.model,name:sale_margin_sync.model_stock_move -msgid "Stock Move" +#: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer +msgid "Stock Valuation Layer" msgstr "" - diff --git a/sale_margin_sync/models/__init__.py b/sale_margin_sync/models/__init__.py index 1fec1656..276dabe9 100644 --- a/sale_margin_sync/models/__init__.py +++ b/sale_margin_sync/models/__init__.py @@ -1,3 +1,3 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from . import stock_move +from . import stock_valuation_layer diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py deleted file mode 100644 index 74ea11ec..00000000 --- a/sale_margin_sync/models/stock_move.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2019 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import models - - -class StockMove(models.Model): - _inherit = "stock.move" - - def write(self, vals): - res = super(StockMove, self).write(vals) - if "price_unit" in vals and not self.env.context.get( - "skip_sale_margin_sync", False - ): - self.sale_margin_sync() - return res - - def sale_margin_sync(self): - for move in self.filtered( - lambda m: (m.state == "done" and m.sale_line_id and m._is_out()) - ): - move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py new file mode 100644 index 00000000..7214b3cd --- /dev/null +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -0,0 +1,20 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockValuationLayer(models.Model): + _inherit = "stock.valuation.layer" + + def write(self, vals): + res = super().write(vals) + if "unit_cost" in vals and not self.env.context.get( + "skip_sale_margin_sync", False + ): + self.sale_margin_sync() + return res + + def sale_margin_sync(self): + for svl in self.filtered(lambda l: (l.quantity < 0.0)): + svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 93578de7..fde491d5 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 6ece0f60..82f2530f 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -8,11 +8,11 @@ class TestSaleMarginSync(SavepointCase): def setUpClass(cls): super().setUpClass() cls.pricelist = cls.env["product.pricelist"].create( - {"name": "Pricelist for testing sale_margin_sync",} + {"name": "Pricelist for testing sale_margin_sync"} ) - cls.partner = cls.env["res.partner"].create({"name": "Test",}) + cls.partner = cls.env["res.partner"].create({"name": "Test"}) cls.product = cls.env["product.product"].create( - {"name": "test_product", "type": "product", "standard_price": 70,} + {"name": "test_product", "type": "product", "standard_price": 70} ) cls.env["stock.quant"].create( { @@ -47,7 +47,7 @@ def test_sale_margin_sync(self): move = so_line.move_ids[:1] move.quantity_done = 10 move.picking_id.action_done() - move.price_unit = -80.0 + move.stock_valuation_layer_ids[:1].unit_cost = 80.0 self.assertEqual(so_line.purchase_price, 80.0) self.assertEqual(so_line.margin, 200.0) @@ -56,6 +56,6 @@ def test_sale_margin_sync_unvalidated_move(self): so_line = self.order.order_line[:1] move = so_line.move_ids[:1] move.quantity_done = 10 - move.price_unit = -80.0 + move.stock_valuation_layer_ids[:1].unit_cost = 80.0 self.assertEqual(so_line.purchase_price, 70.0) self.assertEqual(so_line.margin, 300.0) From dae102540226fde7a82f1d110ee46e3264f6e9cb Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Mon, 30 Aug 2021 17:52:47 +0200 Subject: [PATCH 06/18] [IMP] sale_margin_sync: Sync sale line purchase price from stock valuation layer unit cost TT31421 --- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/models/stock_valuation_layer.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 9ef6f6c4..8ade68ed 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "13.0.1.0.0", + "version": "13.0.1.0.1", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index 7214b3cd..e7b88f33 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -1,12 +1,21 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models +from odoo import api, models class StockValuationLayer(models.Model): _inherit = "stock.valuation.layer" + @api.model_create_multi + def create(self, vals_list): + """Update purchase price from sale line linked to svl record + """ + svls = super().create(vals_list) + if not self.env.context.get("skip_sale_margin_sync", False): + svls.filtered("stock_move_id.sale_line_id").sale_margin_sync() + return svls + def write(self, vals): res = super().write(vals) if "unit_cost" in vals and not self.env.context.get( @@ -16,5 +25,7 @@ def write(self, vals): return res def sale_margin_sync(self): + """Only synchronize outgoing moves + """ for svl in self.filtered(lambda l: (l.quantity < 0.0)): svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost From 11fdfd0932b444b59c5941e817cefac55d0782d6 Mon Sep 17 00:00:00 2001 From: rafamar Date: Sat, 15 Oct 2022 23:00:51 +0200 Subject: [PATCH 07/18] [IMP] sale_margin_sync: black, isort, prettier --- sale_margin_sync/models/stock_valuation_layer.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index e7b88f33..51b75108 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -9,8 +9,7 @@ class StockValuationLayer(models.Model): @api.model_create_multi def create(self, vals_list): - """Update purchase price from sale line linked to svl record - """ + """Update purchase price from sale line linked to svl record""" svls = super().create(vals_list) if not self.env.context.get("skip_sale_margin_sync", False): svls.filtered("stock_move_id.sale_line_id").sale_margin_sync() @@ -25,7 +24,6 @@ def write(self, vals): return res def sale_margin_sync(self): - """Only synchronize outgoing moves - """ + """Only synchronize outgoing moves""" for svl in self.filtered(lambda l: (l.quantity < 0.0)): svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost From 7be6e8dd716390c3bf4d54ef99ebda1fffcaddcd Mon Sep 17 00:00:00 2001 From: rafamar Date: Sat, 15 Oct 2022 23:48:12 +0200 Subject: [PATCH 08/18] [MIG] sale_margin_sync: Migration to 14.0 --- sale_margin_sync/README.rst | 10 ++-- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 17 ++++++- .../models/stock_valuation_layer.py | 9 +++- .../static/description/index.html | 6 +-- .../tests/test_sale_margin_sync.py | 51 ++++++++++++++----- 6 files changed, 70 insertions(+), 25 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 5c83bba5..ffb3f7a4 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/13.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/14.0/sale_margin_sync :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-13-0/margin-analysis-13-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-14-0/margin-analysis-14-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/13.0 + :target: https://runbot.odoo-community.org/runbot/132/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 8ade68ed..8ef95ccd 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "13.0.1.0.1", + "version": "14.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 28dd313a..32810ace 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,6 +13,21 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__id +msgid "ID" +msgstr "" + +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer____last_update +msgid "Last Modified on" +msgstr "" + #. module: sale_margin_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index 51b75108..1d504d51 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -26,4 +26,11 @@ def write(self, vals): def sale_margin_sync(self): """Only synchronize outgoing moves""" for svl in self.filtered(lambda l: (l.quantity < 0.0)): - svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost + sale_line_id = svl.stock_move_id.sale_line_id + product_cost = svl.unit_cost + if sale_line_id.product_uom and sale_line_id.product_uom != svl.uom_id: + product_cost = svl.uom_id._compute_price( + product_cost, + sale_line_id.product_uom, + ) + sale_line_id.purchase_price = product_cost diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index fde491d5..f9a9c9bf 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 82f2530f..14ca5827 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -35,7 +35,18 @@ def setUpClass(cls): "product_uom": cls.product.uom_id.id, "price_unit": 100.00, }, - ) + ), + ( + 0, + 0, + { + "name": cls.product.name, + "product_id": cls.product.id, + "product_uom_qty": 2, + "product_uom": cls.env.ref("uom.product_uom_dozen").id, + "price_unit": 1200.00, + }, + ), ], "pricelist_id": cls.pricelist.id, } @@ -43,19 +54,31 @@ def setUpClass(cls): def test_sale_margin_sync(self): self.order.action_confirm() - so_line = self.order.order_line[:1] - move = so_line.move_ids[:1] - move.quantity_done = 10 - move.picking_id.action_done() - move.stock_valuation_layer_ids[:1].unit_cost = 80.0 - self.assertEqual(so_line.purchase_price, 80.0) - self.assertEqual(so_line.margin, 200.0) + so_line1 = self.order.order_line[:1] + move1 = so_line1.move_ids[:1] + move1.quantity_done = 10 + so_line2 = self.order.order_line[1:2] + move2 = so_line2.move_ids[:1] + move2.quantity_done = 2 + self.order.picking_ids[:1]._action_done() + move1.stock_valuation_layer_ids[:1].unit_cost = 80.0 + move2.stock_valuation_layer_ids[:1].unit_cost = 80.0 + self.assertEqual(so_line1.purchase_price, 80.0) + self.assertEqual(so_line1.margin, 200.0) + self.assertEqual(so_line2.purchase_price, 960.0) + self.assertEqual(so_line2.margin, 480) def test_sale_margin_sync_unvalidated_move(self): self.order.action_confirm() - so_line = self.order.order_line[:1] - move = so_line.move_ids[:1] - move.quantity_done = 10 - move.stock_valuation_layer_ids[:1].unit_cost = 80.0 - self.assertEqual(so_line.purchase_price, 70.0) - self.assertEqual(so_line.margin, 300.0) + so_line1 = self.order.order_line[:1] + move1 = so_line1.move_ids[:1] + move1.quantity_done = 10 + move1.stock_valuation_layer_ids[:1].unit_cost = 80.0 + so_line2 = self.order.order_line[1:2] + move2 = so_line2.move_ids[:1] + move2.quantity_done = 2 + move2.stock_valuation_layer_ids[:1].unit_cost = 80.0 + self.assertEqual(so_line1.purchase_price, 70.0) + self.assertEqual(so_line1.margin, 300.0) + self.assertEqual(so_line2.purchase_price, 840.0) + self.assertEqual(so_line2.margin, 720) From 14f6274a1b788411251e218e5fed0cd645484ff6 Mon Sep 17 00:00:00 2001 From: CarlosRoca13 Date: Wed, 23 Nov 2022 11:37:20 +0100 Subject: [PATCH 09/18] [MIG] sale_margin_sync: Migration to 15.0 --- sale_margin_sync/README.rst | 11 ++++++----- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 17 +---------------- sale_margin_sync/readme/CONTRIBUTORS.rst | 1 + sale_margin_sync/static/description/index.html | 7 ++++--- sale_margin_sync/tests/test_sale_margin_sync.py | 4 ++-- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index ffb3f7a4..eee1b90f 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/14.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/15.0/sale_margin_sync :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-14-0/margin-analysis-14-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-15-0/margin-analysis-15-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/14.0 + :target: https://runbot.odoo-community.org/runbot/132/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -57,6 +57,7 @@ Contributors * Carlos Dauden * Sergio Teruel + * Carlos Roca Maintainers ~~~~~~~~~~~ @@ -71,6 +72,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 8ef95ccd..694075c0 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "14.0.1.0.0", + "version": "15.0.1.0.1", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 32810ace..a815f629 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,21 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__display_name -msgid "Display Name" -msgstr "" - -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__id -msgid "ID" -msgstr "" - -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer____last_update -msgid "Last Modified on" -msgstr "" - #. module: sale_margin_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" diff --git a/sale_margin_sync/readme/CONTRIBUTORS.rst b/sale_margin_sync/readme/CONTRIBUTORS.rst index 66d11c82..51818bd0 100644 --- a/sale_margin_sync/readme/CONTRIBUTORS.rst +++ b/sale_margin_sync/readme/CONTRIBUTORS.rst @@ -2,3 +2,4 @@ * Carlos Dauden * Sergio Teruel + * Carlos Roca diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index f9a9c9bf..f0197a2d 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -405,6 +405,7 @@

Contributors

  • Carlos Dauden
  • Sergio Teruel
  • +
  • Carlos Roca
@@ -417,7 +418,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 14ca5827..a29da65c 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -1,9 +1,9 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestSaleMarginSync(SavepointCase): +class TestSaleMarginSync(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From c001e2bec618ff891cc89ccd367de85a44045e3f Mon Sep 17 00:00:00 2001 From: "Yadier A. De Quesada" Date: Mon, 17 Apr 2023 15:48:46 -0400 Subject: [PATCH 10/18] [MIG] sale_margin_sync: Migration to 16.0 [MIG] sale_margin_sync: Migration to 16.0 --- sale_margin_sync/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 694075c0..ceffcb43 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "15.0.1.0.1", + "version": "16.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", From 350403d14fa75a997043da4fd394b2940107bd7f Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 20 Apr 2023 08:22:42 +0000 Subject: [PATCH 11/18] [UPD] Update sale_margin_sync.pot --- sale_margin_sync/README.rst | 10 +++++----- sale_margin_sync/i18n/sale_margin_sync.pot | 2 +- sale_margin_sync/static/description/index.html | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index eee1b90f..1489d0ca 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/15.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_sync :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-15-0/margin-analysis-15-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/15.0 + :target: https://runbot.odoo-community.org/runbot/132/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -72,6 +72,6 @@ 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. -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_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index a815f629..6990ede2 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index f0197a2d..7be2faf0 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -418,7 +418,7 @@

Maintainers

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.

-

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 30ad822e02d4489186218c283d7a90e90b7404a7 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Mon, 21 Aug 2023 15:22:23 +0000 Subject: [PATCH 12/18] Added translation using Weblate (Spanish) --- sale_margin_sync/i18n/es.po | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sale_margin_sync/i18n/es.po diff --git a/sale_margin_sync/i18n/es.po b/sale_margin_sync/i18n/es.po new file mode 100644 index 00000000..0e61c971 --- /dev/null +++ b/sale_margin_sync/i18n/es.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_sync +# +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: es\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_sync +#: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer +msgid "Stock Valuation Layer" +msgstr "" From 6a4398e7ae9487e8039a03cf5b2a7997c828d326 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Mon, 21 Aug 2023 15:24:49 +0000 Subject: [PATCH 13/18] Translated using Weblate (Spanish) Currently translated at 100.0% (1 of 1 strings) Translation: margin-analysis-16.0/margin-analysis-16.0-sale_margin_sync Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_sync/es/ --- sale_margin_sync/README.rst | 15 ++++---- sale_margin_sync/i18n/es.po | 6 ++-- .../static/description/index.html | 34 ++++++++++--------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 1489d0ca..75736c84 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -2,10 +2,13 @@ Sale margin sync ================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:79af34278f79f246a4c9bd3e053cdcc916a70cd75850df7c5da19b9103ec1bd9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Sale margin sync .. |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_sync :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/16.0 - :alt: Try me on Runbot +.. |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| +|badge1| |badge2| |badge3| |badge4| |badge5| Recompute sale margin when related stock move cost price is changed. @@ -37,7 +40,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 smashing it by providing a detailed and welcomed +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. diff --git a/sale_margin_sync/i18n/es.po b/sale_margin_sync/i18n/es.po index 0e61c971..237a1cfd 100644 --- a/sale_margin_sync/i18n/es.po +++ b/sale_margin_sync/i18n/es.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: 2023-09-02 18:17+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\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_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" -msgstr "" +msgstr "Nivel de valoración de existencias" diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 7be2faf0..879ca335 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -1,20 +1,20 @@ - + - + Sale margin sync