From 466f13e5a6f9fa8097994d0dfdc8c50ea324c16e Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Tue, 1 Oct 2019 15:34:02 +0200 Subject: [PATCH 1/4] [ADD] account_reconciliation_widget_partial --- .../README.rst | 85 ++++ .../__init__.py | 0 .../__manifest__.py | 21 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 2 + .../readme/USAGE.rst | 7 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ .../description/reconciliation_partial.png | Bin 0 -> 18799 bytes .../static/src/js/reconciliation_action.js | 18 + .../static/src/js/reconciliation_model.js | 117 +++++ .../static/src/js/reconciliation_renderer.js | 54 +++ .../src/less/account_reconciliation.less | 25 + .../static/src/xml/account_reconciliation.xml | 41 ++ .../views/assets.xml | 11 + 15 files changed, 813 insertions(+) create mode 100644 account_reconciliation_widget_partial/README.rst create mode 100644 account_reconciliation_widget_partial/__init__.py create mode 100644 account_reconciliation_widget_partial/__manifest__.py create mode 100644 account_reconciliation_widget_partial/readme/CONTRIBUTORS.rst create mode 100644 account_reconciliation_widget_partial/readme/DESCRIPTION.rst create mode 100644 account_reconciliation_widget_partial/readme/USAGE.rst create mode 100644 account_reconciliation_widget_partial/static/description/icon.png create mode 100644 account_reconciliation_widget_partial/static/description/index.html create mode 100644 account_reconciliation_widget_partial/static/description/reconciliation_partial.png create mode 100644 account_reconciliation_widget_partial/static/src/js/reconciliation_action.js create mode 100644 account_reconciliation_widget_partial/static/src/js/reconciliation_model.js create mode 100644 account_reconciliation_widget_partial/static/src/js/reconciliation_renderer.js create mode 100644 account_reconciliation_widget_partial/static/src/less/account_reconciliation.less create mode 100644 account_reconciliation_widget_partial/static/src/xml/account_reconciliation.xml create mode 100644 account_reconciliation_widget_partial/views/assets.xml diff --git a/account_reconciliation_widget_partial/README.rst b/account_reconciliation_widget_partial/README.rst new file mode 100644 index 00000000..fb78bde9 --- /dev/null +++ b/account_reconciliation_widget_partial/README.rst @@ -0,0 +1,85 @@ +========================= +Account Reconcile Partial +========================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Faccount--reconcile-lightgray.png?logo=github + :target: https://github.com/OCA/account-reconcile/tree/11.0/account_reconcile_partial + :alt: OCA/account-reconcile +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-reconcile-11-0/account-reconcile-11-0-account_reconcile_partial + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/98/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addons allow to change the amount of a reconciliation line in order to +partially reconcile it. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +On reconciliations, an edit button is created. +Once pressed, you can modify the amount. +By default, it will propose the difference between the original amount and the +current balance if allowed. + +.. figure:: https://raw.githubusercontent.com/account_reconcile_partial/static/description/reconciliation_partial.png + :alt: Partial reconciliation + +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 +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella + +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/account-reconcile `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_reconciliation_widget_partial/__init__.py b/account_reconciliation_widget_partial/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/account_reconciliation_widget_partial/__manifest__.py b/account_reconciliation_widget_partial/__manifest__.py new file mode 100644 index 00000000..640ba1ea --- /dev/null +++ b/account_reconciliation_widget_partial/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Account Reconciliation Widget Partial', + 'summary': """ + Allow to modifiy the reconcile amount for partial payments""", + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Creu Blanca,Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/account-reconcile', + 'depends': [ + 'account', + ], + 'data': [ + 'views/assets.xml', + ], + 'qweb': [ + 'static/src/xml/account_reconciliation.xml', + ], +} diff --git a/account_reconciliation_widget_partial/readme/CONTRIBUTORS.rst b/account_reconciliation_widget_partial/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..93ec993e --- /dev/null +++ b/account_reconciliation_widget_partial/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/account_reconciliation_widget_partial/readme/DESCRIPTION.rst b/account_reconciliation_widget_partial/readme/DESCRIPTION.rst new file mode 100644 index 00000000..1c2580d1 --- /dev/null +++ b/account_reconciliation_widget_partial/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This addons allow to change the amount of a reconciliation line in order to +partially reconcile it. diff --git a/account_reconciliation_widget_partial/readme/USAGE.rst b/account_reconciliation_widget_partial/readme/USAGE.rst new file mode 100644 index 00000000..4fcf4f70 --- /dev/null +++ b/account_reconciliation_widget_partial/readme/USAGE.rst @@ -0,0 +1,7 @@ +On reconciliations, an edit button is created. +Once pressed, you can modify the amount. +By default, it will propose the difference between the original amount and the +current balance if allowed. + +.. figure:: /account_reconcile_partial/static/description/reconciliation_partial.png + :alt: Partial reconciliation diff --git a/account_reconciliation_widget_partial/static/description/icon.png b/account_reconciliation_widget_partial/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/account_reconciliation_widget_partial/static/description/index.html b/account_reconciliation_widget_partial/static/description/index.html new file mode 100644 index 00000000..e533b4e2 --- /dev/null +++ b/account_reconciliation_widget_partial/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Account Reconcile Partial + + + +
+

Account Reconcile Partial

+ + +

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

+

This addons allow to change the amount of a reconciliation line in order to +partially reconcile it.

+

Table of contents

+ +
+

Usage

+

On reconciliations, an edit button is created. +Once pressed, you can modify the amount. +By default, it will propose the difference between the original amount and the +current balance if allowed.

+
+Partial reconciliation +
+
+
+

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

+
    +
  • Creu Blanca
  • +
+
+
+

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.

+

This module is part of the OCA/account-reconcile project on GitHub.

+

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

+
+
+
+ + diff --git a/account_reconciliation_widget_partial/static/description/reconciliation_partial.png b/account_reconciliation_widget_partial/static/description/reconciliation_partial.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cb9b2ea8f18ec3b1de5300da7f8cbffea28e3b GIT binary patch literal 18799 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 N44$rjF6*2UngH@&N#6hf literal 0 HcmV?d00001 diff --git a/account_reconciliation_widget_partial/static/src/js/reconciliation_action.js b/account_reconciliation_widget_partial/static/src/js/reconciliation_action.js new file mode 100644 index 00000000..3e80989f --- /dev/null +++ b/account_reconciliation_widget_partial/static/src/js/reconciliation_action.js @@ -0,0 +1,18 @@ +odoo.define("account_reconcile_partial.ReconciliationClientAction", function (require) { + + var action = require('account.ReconciliationClientAction'); + + action.StatementAction.include({ + custom_events: _.extend({}, action.StatementAction.prototype.custom_events, { + get_partial_amount: '_onActionPartialAmount', + partial_reconcile: '_onAction', + }), + _onActionPartialAmount: function(event) { + var self = this; + var handle = event.target.handle; + var line = this.model.getLine(handle); + var amount = this.model.getPartialReconcileAmount(handle, event.data); + self._getWidget(handle).updatePartialAmount(event.data.data, amount); + }, + }); +}); diff --git a/account_reconciliation_widget_partial/static/src/js/reconciliation_model.js b/account_reconciliation_widget_partial/static/src/js/reconciliation_model.js new file mode 100644 index 00000000..e2ff0697 --- /dev/null +++ b/account_reconciliation_widget_partial/static/src/js/reconciliation_model.js @@ -0,0 +1,117 @@ +odoo.define("account_reconcile_partial.ReconciliationModel", function (require) { + + var model = require('account.ReconciliationModel'); + var field_utils = require('web.field_utils'); + var utils = require('web.utils'); + var session = require('web.session'); + + model.StatementModel.include({ + getPartialReconcileAmount: function(handle, data) { + var line = this.getLine(handle); + var prop = _.find(line.reconciliation_proposition, {'id': data.data}); + if (prop) { + var amount = prop.partial_amount || prop.amount; + // Check if we can get a partial amount + // that would directly set balance to zero + var partial = Math.abs(line.balance.amount + amount); + if (partial <= Math.abs(prop.amount)) { + return partial; + } + return Math.abs(amount); + } + }, + partialReconcile: function(handle, data) { + var line = this.getLine(handle); + var prop = _.find( + line.reconciliation_proposition, {'id' : data.mvLineId}); + if (prop) { + var amount = data.amount; + try { + amount = field_utils.parse.float(data.amount); + } + catch (err) { + amount = NaN; + } + if ( + amount >= Math.abs(prop.amount) + || amount <= 0 || isNaN(amount) + ) { + delete prop.partial_amount_str; + delete prop.partial_amount; + if (isNaN(amount) || amount < 0) { + this.do_warn(_.str.sprintf(_t( + 'The amount %s is not a valid partial amount' + ), data.amount)); + } + return this._computeLine(line); + } + else { + var format_options = { currency_id: line.st_line.currency_id }; + prop.partial_reconcile = true; + prop.partial_amount = (prop.amount > 0 ? 1 : -1)*amount; + prop.write_off_amount = prop.partial_amount; + prop.partial_amount_str = field_utils.format.monetary( + Math.abs(prop.partial_amount), {}, format_options); + } + } + return this._computeLine(line); + }, + _computeLine: function (line) { + // Fixing the computation of the balance in order to use + // amount_reconcile if it will be partially reconciled + var self = this; + var formatOptions = { + currency_id: line.st_line.currency_id, + }; + return this._super.apply(this, arguments).then(function () { + + var amount_currency = 0; + var total = line.st_line.amount || 0; + var isOtherCurrencyId = _.uniq(_.pluck(_.reject( + line.reconciliation_proposition, 'invalid'), 'currency_id')); + isOtherCurrencyId = ( + isOtherCurrencyId.length === 1 + && !total + && isOtherCurrencyId[0] !== formatOptions.currency_id + ? isOtherCurrencyId[0] : false); + + _.each(line.reconciliation_proposition, function (prop) { + if (!prop.invalid) { + if (prop.partial_reconcile) + total -= prop.partial_amount || prop.amount; + else + total -= prop.amount; + if (isOtherCurrencyId) { + amount_currency -= ( + prop.amount < 0 ? -1 : 1 + ) * Math.abs(prop.amount_currency); + } + } + }); + var company_currency = session.get_currency( + line.st_line.currency_id); + var company_precision = ( + company_currency && company_currency.digits[1] || 2); + total = utils.round_decimals(total, company_precision) || 0; + if(isOtherCurrencyId){ + var other_currency = session.get_currency(isOtherCurrencyId); + var other_precision = other_currency && other_currency.digits[1] || 2; + amount_currency = utils.round_decimals(amount_currency, other_precision); + } + line.balance = { + amount: total, + amount_str: field_utils.format.monetary(Math.abs(total), {}, formatOptions), + currency_id: isOtherCurrencyId, + amount_currency: isOtherCurrencyId ? amount_currency : total, + amount_currency_str: isOtherCurrencyId ? field_utils.format.monetary( + Math.abs(amount_currency), {}, { + currency_id: isOtherCurrencyId + }) : false, + account_code: self.accounts[line.st_line.open_balance_account_id], + }; + line.balance.show_balance = line.balance.amount_currency != 0; + line.balance.type = line.balance.amount_currency ? (line.st_line.partner_id ? 0 : -1) : 1; + }); + }, + }); +}); diff --git a/account_reconciliation_widget_partial/static/src/js/reconciliation_renderer.js b/account_reconciliation_widget_partial/static/src/js/reconciliation_renderer.js new file mode 100644 index 00000000..ba2871bd --- /dev/null +++ b/account_reconciliation_widget_partial/static/src/js/reconciliation_renderer.js @@ -0,0 +1,54 @@ +odoo.define('account_reconcile_partial.ReconciliationRenderer', function (require) { + "use strict"; + + var renderer = require('account.ReconciliationRenderer') + + renderer.LineRenderer.include({ + events: _.extend({}, renderer.LineRenderer.prototype.events, { + 'click .accounting_view .line_info_edit.fa-pencil': '_onInfoEdit', + }), + _onInfoEdit: function(e){ + e.stopPropagation(); + var $line = $(event.target); + this.trigger_up( + 'get_partial_amount', + {'data': $line.closest('.mv_line').data('line-id')} + ); + }, + updatePartialAmount: function(line_id, amount) { + var $line = this.$('.mv_line[data-line-id='+line_id+']'); + $line.find('.line_info_edit').addClass('o_hidden'); + $line.find('.edit_amount_input').removeClass('o_hidden'); + $line.find('.edit_amount_input').focus(); + $line.find('.edit_amount_input').val(amount.toFixed(2)); + $line.find('.edit_amount_input').select(); + $line.find('.line_amount').addClass('o_hidden'); + }, + _editAmount: function (event) { + event.stopPropagation(); + var $line = $(event.target); + var moveLineId = $line.closest('.mv_line').data('line-id'); + this.trigger_up( + 'partial_reconcile', + {'data': {mvLineId: moveLineId, 'amount': $line.val()}} + ); + }, + _onInputKeyup: function (event) { + if(event.keyCode === 13) { + if ($(event.target).hasClass('edit_amount_input')) { + $(event.target).blur(); + return; + } + } + if ($(event.target).hasClass('edit_amount_input')) { + if (event.type === 'keyup') { + return; + } + else { + return this._editAmount(event); + } + } + return this._super.apply(this, arguments); + }, + }); +}); diff --git a/account_reconciliation_widget_partial/static/src/less/account_reconciliation.less b/account_reconciliation_widget_partial/static/src/less/account_reconciliation.less new file mode 100644 index 00000000..e4da458c --- /dev/null +++ b/account_reconciliation_widget_partial/static/src/less/account_reconciliation.less @@ -0,0 +1,25 @@ +.o_reconciliation { + .o_reconciliation_line{ + .line_info_edit { + text-align: right; + width: 15px; + color: #ccc; + background: #fff; + border: 0; + } + .do_partial_reconcile_true { + display: none!important; + } + .do_partial_reconcile_false { + display: none!important; + } + .strike_amount { + text-decoration: line-through; + } + } + .o_reconciliation_line .match{ + .line_info_edit { + display: none!important; + } + } +} diff --git a/account_reconciliation_widget_partial/static/src/xml/account_reconciliation.xml b/account_reconciliation_widget_partial/static/src/xml/account_reconciliation.xml new file mode 100644 index 00000000..aa956063 --- /dev/null +++ b/account_reconciliation_widget_partial/static/src/xml/account_reconciliation.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + +
+ + + state.balance.amount_currency + + + +
diff --git a/account_reconciliation_widget_partial/views/assets.xml b/account_reconciliation_widget_partial/views/assets.xml new file mode 100644 index 00000000..6ea4dda8 --- /dev/null +++ b/account_reconciliation_widget_partial/views/assets.xml @@ -0,0 +1,11 @@ + + +