From 9517f21aa682c325f071aa2300d8f621bcf5e829 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 31 Jan 2016 17:32:02 +0100 Subject: [PATCH 1/9] [ADD] new module 'pos_session_summary'; --- pos_session_summary/README.rst | 58 ++++++++++++++++++ pos_session_summary/__init__.py | 2 + pos_session_summary/__openerp__.py | 37 +++++++++++ pos_session_summary/i18n/fr.po | 26 ++++++++ pos_session_summary/models/__init__.py | 2 + pos_session_summary/models/pos_session.py | 37 +++++++++++ .../static/description/icon.png | Bin 0 -> 4506 bytes .../static/description/pos_session_list.png | Bin 0 -> 19938 bytes .../views/pos_session_view.xml | 35 +++++++++++ 9 files changed, 197 insertions(+) create mode 100644 pos_session_summary/README.rst create mode 100644 pos_session_summary/__init__.py create mode 100644 pos_session_summary/__openerp__.py create mode 100644 pos_session_summary/i18n/fr.po create mode 100644 pos_session_summary/models/__init__.py create mode 100644 pos_session_summary/models/pos_session.py create mode 100644 pos_session_summary/static/description/icon.png create mode 100644 pos_session_summary/static/description/pos_session_list.png create mode 100644 pos_session_summary/views/pos_session_view.xml diff --git a/pos_session_summary/README.rst b/pos_session_summary/README.rst new file mode 100644 index 00000000..0e013988 --- /dev/null +++ b/pos_session_summary/README.rst @@ -0,0 +1,58 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +Point of Sale - Total of transactions and Orders Quantity +========================================================= + +* add a computed field 'Transactions Total' on the PoS Session model, +that is the sum of all transactions of all journals of the session; + +* add a computed field 'Orders Qty' on the PoS Session model, +that is the quantity of all orders of the session;; + +.. image:: /pos_session_total/static/description/pos_session_tree.png + +Configuration +============= + +No configuration is needed. + +Usage +===== + +For further information, please visit: + +* https://www.odoo.com/forum/help-1 + +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 +`here `_. + + +Credits +======= + +Contributors +------------ + +* Sylvain LE GAL + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/pos_session_summary/__init__.py b/pos_session_summary/__init__.py new file mode 100644 index 00000000..a0fdc10f --- /dev/null +++ b/pos_session_summary/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/pos_session_summary/__openerp__.py b/pos_session_summary/__openerp__.py new file mode 100644 index 00000000..4e5793ec --- /dev/null +++ b/pos_session_summary/__openerp__.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2016-Today La Louve () +# +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Point of Sale - Session Summary', + 'version': '9.0.1.0.0', + 'category': 'Point Of Sale', + 'summary': 'Point of Sale - Total of transactions and Orders Quantity', + 'author': 'La Louve, Odoo Community Association (OCA)', + 'website': 'http://www.lalouve.net/', + 'depends': [ + 'point_of_sale', + ], + 'data': [ + 'views/pos_session_view.xml', + ], + 'installable': True, +} diff --git a/pos_session_summary/i18n/fr.po b/pos_session_summary/i18n/fr.po new file mode 100644 index 00000000..a3e37a61 --- /dev/null +++ b/pos_session_summary/i18n/fr.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_session_summary +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-31 16:30+0000\n" +"PO-Revision-Date: 2016-01-31 16:30+0000\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: pos_session_summary +#: model:ir.model.fields,field_description:pos_session_summary.field_pos_session_order_qty +msgid "Orders Qty" +msgstr "Nb. ventes" + +#. module: pos_session_summary +#: model:ir.model.fields,field_description:pos_session_summary.field_pos_session_total_amount +msgid "Transactions Total" +msgstr "Total des transactions" diff --git a/pos_session_summary/models/__init__.py b/pos_session_summary/models/__init__.py new file mode 100644 index 00000000..ac13d7d5 --- /dev/null +++ b/pos_session_summary/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import pos_session diff --git a/pos_session_summary/models/pos_session.py b/pos_session_summary/models/pos_session.py new file mode 100644 index 00000000..d9d42030 --- /dev/null +++ b/pos_session_summary/models/pos_session.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2016-Today La Louve () +# +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# +# The licence is in the file __openerp__.py +# +############################################################################## + +from openerp import fields, models, api + + +class PosSession(models.Model): + _inherit = 'pos.session' + + @api.multi + @api.depends('statement_ids.balance_end') + def _compute_total_amount(self): + for session in self: + total_amount = 0 + for statement in session.statement_ids: + total_amount += statement.balance_end + session.total_amount = total_amount + + @api.multi + @api.depends('order_ids') + def _compute_order_qty(self): + for session in self: + session.order_qty = len(session.order_ids) + + total_amount = fields.Monetary( + compute='_compute_total_amount', string='Transactions Total') + + order_qty = fields.Integer( + compute='_compute_order_qty', string='Orders Qty') diff --git a/pos_session_summary/static/description/icon.png b/pos_session_summary/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8a63392a0cec5448d88822afc3ae6890a042fba9 GIT binary patch literal 4506 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 literal 0 HcmV?d00001 diff --git a/pos_session_summary/static/description/pos_session_list.png b/pos_session_summary/static/description/pos_session_list.png new file mode 100644 index 0000000000000000000000000000000000000000..92963b10df9ff5d23d4d70d5a4061b663e901a56 GIT binary patch literal 19938 zcmbrm1yq|)x9E)&C@t>nXZGy;_I?uaNkty}1;q;_BqVHw4>IaVNYC^TuOptL zBmPo>43H5|&)lRGG@m2H@3}=d;(tu%54vthNH_z3AIK@JIFyJ&a(7uBcMT^icTZDS zOC)PYCkIP*H*;4@OGmdaPVT3u-4aMhuaFdE-fMbgAFXWm{ zPR){E{+#~p&+zaUk%mXu?Pl*~2lBq55xw9r~qTvDQ5V?is)8d77Y!p&S|}i08P(bR~|7Y4jX~2Dw!F-zvH9g&YIL=OC?~hco!A^FZm#> z_Wv3>%68GP+tC?*EOU0ruTv%pF)!zkZ3V>V%X4|eumra<)0A9H6*K5!q{By*wtU5U!T}PI6cOR!A6RzcfB8!AmQ0zBu06Xj8vIgD zGL|BUYyP1|&dc^I9b(|cpT^!r#mr!kTue@|XXDrdiC0CoPHh>)IWns#A?NV5{uQwT z$ry2tKd6xCYRwu$Qc~4UvA=`*$eOhn0`}gIiYdyz8yKC$KHQ(#&R!mTm@+m2S2KG- z^MRV};R^|fsztV}hTr=#2Y|);AI^^l&Oq%NGc24x{zNuSYV+)5eP&yoOF^f8Xn6z1 zcf-REc4{ZnCqPWTq7q=jeod6nqHGB)A%}gaz(C8}bmVnCk=G}`UcECL8ArDMQ^M); zWt)&W+3LgUoNuhIK% zG@Z5P@Xdu6WpPBTD~2&@p%&&$Pu{YnU5d7PfB9-+-QeM73FFRT3rhts?s@o0g#u%q z!(_DSODyxwhFX=tq=>Qd)NflMawJ7IsASey9gXL2MpN>a^R%y~x1x>V00R$)XE9Gic=_@`!i z4I;$lAb*5$85H7P9kldrdOz?viNnCWb-8e06cfJx-YUJ5fTF;#mNNLTyE#d%U3}s4 zR1wmaaik-ZLOY*3fU@}K26}_*wvnnCr|}QyMm}}n>5C+|bz2QZ zl4VoMIy*eE+EB+&gi4m2^@o1^p$$Tu_KBs-vxQ!KZHsxomlLC%mN(yKOW+yTDKs z8dW_~3CJPE;P0zKQ8`tFQ~3ug;yKiGCduc~40cLa7h3Be35N;RIs-lZ#LngCsmJ@! zbyQBkA7V)-_0b{dx=2{nvyO8_Q%7JbrLo>^!?0JSd`*vc7~{>ucxkD@`X99KjX@bE z*3xzBq!tW^+W}iY--AfzfU@yeCw%rGywXbsDkTZQ(!oMCviB<1qIa^rQvaKjOYnJD%6qZg9Xw~njt2m_W-&Kekx_A1Mt*LbJOn4ZTyM;e>3N7M2R7aXg*Lh_9}$Hl|g(w zvbT_B0rzmK{4?d!{S9tqeb7>kgadtbkv!B^i1^08cfwRSCt`9VvRSeBHeq^>QX3~J z*Q5Gbj`)k}9OJq>^~!&y+^tM`p=pgxCvl?w6ykbpCrGfBckI`<{3$T4z

mj*1f4HmGqXc2rlfMDA1;;(i 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 + + + + + + pos.session + + + + + + + + + + + pos.session + + + + + + + + + + + From 4f041e035442627ab0f0556d5fd8eca23902920f Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 31 Jan 2016 17:41:48 +0100 Subject: [PATCH 2/9] [FIX] description; --- pos_session_summary/README.rst | 7 ++++--- .../static/description/pos_session_list.png | Bin 19938 -> 19094 bytes 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pos_session_summary/README.rst b/pos_session_summary/README.rst index 0e013988..0d53b301 100644 --- a/pos_session_summary/README.rst +++ b/pos_session_summary/README.rst @@ -5,12 +5,13 @@ Point of Sale - Total of transactions and Orders Quantity ========================================================= * add a computed field 'Transactions Total' on the PoS Session model, -that is the sum of all transactions of all journals of the session; + that is the sum of all transactions of all journals of the session; * add a computed field 'Orders Qty' on the PoS Session model, -that is the quantity of all orders of the session;; + that is the quantity of all orders of the session; -.. image:: /pos_session_total/static/description/pos_session_tree.png + +.. image:: /pos_session_summary/static/description/pos_session_list.png Configuration ============= diff --git a/pos_session_summary/static/description/pos_session_list.png b/pos_session_summary/static/description/pos_session_list.png index 92963b10df9ff5d23d4d70d5a4061b663e901a56..bb24f4e492186b2180304fc2a78a22010c187e88 100644 GIT binary patch literal 19094 zcmbSz1yEegwk{GRcyK2n!5xBY0>Rzg-C=Ndfj9*a|{$ zA|h$U)Wy^nIl1JxB0|a-I5-KE>eK<(y7_mq;)o1F-#xznS_k>~=EqXB4O8Y{2^`p? zEqAz@o~@;}Tx~RlFCCi0enO4Q?bYQ8I|1L{gJdQmFl-AtjfpRmpz;{@s5ePG9Wr1yknVsEClK zvmQFN!Z0xP{JjTK$K3C~{$Bs5vY#ZXKSNS_o83=&nheiy-8y_;9&v;%{yw}BrqhEb zv!8BgspF0s?{lt%w37bmVTjzR>ANNiaTQM$aKcPN{b+egN8}+|6?1)RorukML~v|4 zZ(DSMlxpp%7m9}5UGW<1;pNyzQKu4>QWGpl|Fj}ufbg3=-Pw?nNOmgKyh$w60D530apQ^2{#rss}DbPBj`rmq3~ z)`GK1gbdm=aVNZ%b^%ZPYM9*bA(;Z}w?1i_AI^3SQAJQ-5{AJEH?v3W=lnkt17Y5$#=T$<>>#XYf2A33Hio z$j16eLVKet%!aDB87Dcq!&BwB!6z~r`pg{Lk1-%>lWE&D6we&1E>H%639GEGx50yr z^z?%?1404Z9wwx7af!8V(HEiH#5T5179*=R=FT5D;wvcGTsABiUmrNlc%sR>7o2z? zdO*uKO6IJGL#n$gWiRlQ%!ruMUfq65jPygg;JC7-er8VhN0I=Kz*3ShcTsNoPny zrK-&Q9xgdGVtk&(ik;~d=#o*o$%b438 zhXGL+lFgCJ9W8}r&n>+?LUzlA0v`rDVr2p~FO=a=)|;+GPld1q*Tqb#NFS>iRaCCj zA2)4#)319386(SRZr|~*#-j-ks5u_Ht=62@|N7eDf9=(I&?y!;Vf{FB}yYiTL-*s&B=N(iL~veh#L@11-(JTb`B>%23ghm5V= z0xB$TyzbPI2~%6(0+-VAd+}DOHJy$llfQ$k`0xdg`qhXi?s<6me%R~M3EU}OD8$5~ zr0zLeKcqj{&X$%8&-ZOe2z{oC#PDil^WJ5GjJP>91bXU+?jMiV&o@Mm#_xEbkcdh- zN+SYqan-hG6u2L@DSJ**(1hUGCJdLk5N6UHa0;=I&U7V&L87?sulyfa$?>s+b z^hT%2SmjD|P9)xYF1moM;I=DEbGP#BZBEjH@-_A()K|+ z9NxZnwdCC^YcDk;-$VX)3tjobC&`pQ5| z7qHu|o7&^y01+44GNX*WNGGr_h_vH-eI-t`YNNS*fkxNH*D+@fnXsrjLV10i5@?8W zX4eTMF8!33C0!dn^G!0aCmJ@|IBxH9olGr+X{caF>eJa)yw(RW{h2Nrj0?bN6jd|1 z3|GHoN`@Ga8MV9A1B-fB#vvw#t&W&nHwS&rG&O)I8A)#^dsmIU*gGhJOkTzHXKqG_ zp&nqkfuZwR_0h|Y|1lbzh`c=a3QKxL|5$c`JGrL9IA3fD@T>ETo^6$6<8y3}8_(|O zE4UD`xBOX$G)LNSp{ld385wdrU#F`XD?0}ERd-&98Umt)D2+b2r~AtaKYrLXkCIA! ztap~&nR&PoS(Et0VrfIVS!B@6v{Z9h?vJp_1^Qmg2{{nh zujIR%S=FQoT>0?*C#%rjau~~7#GkrJRmY*^etdY00r>R1PuOnDF= z)ZL2KcR+9CMq_N_P@Pu|&J!LY)Yj|@cE5u7FfAN(Dk~J%ycWmXFUf|W;>|V!QcL-j z#RB2kH}(1>&Lok>eE%4BiNy)PZa+@BCQ7eTg~*-~YEj$j^2GtqcKZERegx(7m;t%6 zird@}u9mRwrq%%xmvW`Q6Cz)CmS@tXr=%63s^SOFBMeVrROQo4L;=E&n@uG&HRE;K zE&r&z2Qe%H>)xuUwQf!L_>(MvLKd0U%qviHw!zFw{f&9=s?VE$)M^%#hENW1e$lD%1{f6Y-+5%|XgG#0PJ9C7f)+7`+ZEWEv&AG>=1 zU!X3?y`VIuX3eyPuSG+Q5<2n^Yp428Zvzk$^mFC|CZS}V={QoB-z~hBsrPU6&~^Na zJ*w-Q@fRq$E}s|mPOk^p1VxB#mf-TbXKt{Zt9Ene?x27eH^bTcDU&t6)&v*szt*f7 z=4Ik9%24<)tO6O4#VP;5AB931>`P00h$0ir9S5wZQ2s?CKUv3ndi?3sDid5-{${PM zu4X1CAwjN>ZqF9_i(U#BPr|~ZDOp%Pbm;1>3_xI%0#bq`#e}SEb4x4kVR+X&-hbfC z_n$}-wnh+S@fXo3i(`WR1#LdjetG{FL;XF&`Sl<720$wIH(4b3%l{h@{moV!`yb%V zQVOr#jm`g!f&aU)HYR*v4%eu1IW`i73LkOm&38b1hE1*D;>pcgSlA~PmbmNdYejm4 zt>Sr0NRu1@4&QR*6I>i1{q;NH4y^GrG;B;vQcO}3>3~uDBO@bPrmULb!{gIavbt`t zjn-c@89|<`t7rT9)41Qr2-*l>haG>afKp+8K4hS(Vf^)8)%eTp?X7Z&VgWYtoqlg$ z9|TDbt5Bc6%NkQ$TF-X|7gXkro^7zm3LO#Y;& zFw(jN0h7%5C_y11Gfj4zHU2`B%9~ zIgm0_A^ip)xN%r_>1CxWOW}S5Q7y^uKM1md-BNygAz$Zu+C@?D$tGS@S3)kf9 zV8GdE!J+(HoF-9{1tVxK;XHqak({nQyjwhRrT#6|k(Tn0RCI?l(R92X9i)(st*mU8 z`ipV@N}Rh$p1L+LGuKDro2q?0j{MQhqt^m8@4v;In=wl8#~4oF2LZ?!j;r8hO!nJw zOgIElVtmK$O)M~SGkR#4VGO}ot__IIfF6GNCjad%RkDhYCW(%hmRIdjP$A~vglF3% zZ&y}Y99xMz2a)y5?KVe=tB z&A3Xr)@s$3ZKZa3;|kpDv$}j7`dsYldqpjh)&heSNSgUAtQAU0J@`9VX!7t&X!%}| zUXwkIY^VY)Efpc(9Y-MFo6(kw*kk)twB!IrDz^78O9WlwnIOhwIq*omcx8dsbh)>Y z!0EZzZ@DdP&u+3V)g`Xkwt^5WF-e*w8iSDj`0{5u|7_jyVue9?4+uP9D}OFN!x%Y0 zmWwq#_UtlCy-CZQ7L!bF9MgPYw*f`r%~Qqftft8>>1w=Bn04Udk1IQvbY!fGk4(c( zE7;|VEex)`h~j)G8cg?kxVxJJ)NMb4yHc+E7_}ZH|cM8UpHh zLsQtiU^Yq5#*!;euk>2p1y?;LIfJ3zm_2XgeTWXtTr>bS6dEQ-frIZpNYw?+kK7+Il>c(urAnei*S~!O=Bw`SHcRGpdNoq+;LSuu%aL@NZRrcf57p#%*j@E@ zO@i;J#-Y{k90eyjTl}D@MAP|6)AFQbeiVVb7b$`}un;ai4<5X(QivW8quN=Fkzep+ zD3(fsY)d5Cdc&EDt|r5n8AHV|vUZ9DCdNQgS9Y0TaFysyHkG^Qn$o=my%b;^@0`tS z73WvI>fGUt!0cve-$Zh#gMPnbVWWdzP=_>ev)_WCY|mZ{`X!Ll=^n`Kd~mUUiF?hl zyJ_2jdCS`Nb=AT>SAIvm0lH@$)cmsAf}k}K`#boi>teL^s=uJjzVroOIJA-65^N|t zAm-@2V5mLFFGq3$lW+0-%~}*X={-cHdA^T{jw>GvR{4 zWbb+;nndr2pda{EK{~@dftlFNLtkldF~ZbP8mDzt*JO9jN_(-H%|e-B#aggCyupBP zD|c(h*Easx%wxT#XqGw^Z@T~sz!Kszip#?2^C1xUlA1#1a}Xo3<;82xN>q7W!0F1} zwFS?_s57qIRyRh(?a$;2$D+WU$b{BtJUDV*5?>oC7wXl`IiAEC;ADHY5ioBCP+zL# zIpPGGy^OyTz-Ri)z3ft{bt^S6vH23p@!qZZM+>;1+X*aiJS~tv;VLb0mDPd26AC`I zU-7N74jG(a&8E22vuC}%P|Tx#dS>4uDLl0tEQ;nHvK6dk^hmCl7c^askqKMl2#(z-^1J zd+4YFa}1v0+g);TtXYQ?Mu$e-*T$DQO!wijHt$?Ut}e}7b2YyC1+%X^oZ!u3f!ipB`2fH{wPmJqJcV58@{6zzre!e@2k-hZ)LYWz~APt~=D@+IpfbD7B69lTRzv7gdE4HuvK;>q5Lf60eB zQBicYMC>p7?Q$YUg+z4h)qe;p16*YtxWhwp6Ve74S{YY+K zU{8tO9p@pDBp8O-K`%?OKqU16H&n}DNW)7YPCf9K#|?jp+GGrRs0y5r32c}x;f!49 z#Y9*1yZO641z#po2W5v9YI5amGgBRQiyv4~n%#w}W-D#9-;_w~&Ofd!Ity74i92&5 zP7^?}C$^#dnU=K7{^X6|#%BG*Jy9~Tbu-30SEuBs!z}0e96pJ@VJNOsjf&rIby}J{ zg$uzV12cbG77yDmOctoV_r+CBZRnUdwghZyCJZK$w7uu`4H~Yhg!#z-p15)-x6F*s zrS09<0iR)~!PV<*rJ>||m+~eBNj9?y!Kv1z!LDs@5N)3aC*FbhkWk?QK3|UQswqQCh<{+MB8clh^L; zi_>h2ock+j&K+tguL~NoAoZSoqt#`yM9FN~Ftc=0H%9Hr>D|Zt3VyNi&MK^?lc(nz1(qJGf3K}PQ*Q%LYoRt@t=jHGw zy0RL}u^#y~Vuwe< zB8`j*veG0Xp*%)@RIs5+jt$1h1+iqyEy^2BIpLy>aSbOCItTM|s3>HyleUqhN1JSA zEpoLxvuXMIB(^j%vDjInx3i)X7!5_k{RWETKD?W$gj0H5A5DNM-^Njn3QApVxzO~R z*4T?(HydshGIsJ})xYIRlJSlIQgP(Tz#1Luz8RWReOu6n_3G8|OsmS|x;^a2q*3d` z{+^{Lvdqq^-nwSdqEM1V^wRJp(aYtwlLdyiL}Gk|)}Mf0o#3}Q~3I~ig-1Ixkjp>PAEInz2?SaQ#R--q;|`uHsl^_D7_I5xDZPFP zH?hM$m--t1JR*CU$gFy(bphT1M{Z&dqXx1w@GgAjI)eXfchYnC(BV`Gj2SqU@J%D( zA2QG;V5f&#Cwp3!Uk|><8cK0x{!kD~W|WaAV#1D60F$`ve0O;oReN1l$wS`w+S3^4 z?^Mq_8E(Q^%$rYoqwL($pwECu>KUg=^9H`-;2#&f`<`h`{=Op`(*s2UGWVnLAURUs zB3ko1WJ+?(9$NjngSZ)$7UD6ItKDRq`J9WM)go(h^!wAh`9;8Urjp3fnGE^XhRDpu zM&}__?8=FCMptC~d-sm)?g*Da_!-tK4a%Z@CUE)9Xgg;IVOG?cqzx6j!HMAB6>1GN z;el?4rswPsi%c#%4JRW&XAxzxOzYvUSBDU)Fedb2Z6MYsJutm;dx6^M*G9G))WOhm z&`U%F^9^~OVZ|(c$s!l7u*G(4 z|B+0aL?s)3*0xVvkTbvT>#-D1zXzuLD#>_^FIbYrELCbnIyH=qKcr0$Xgiy zE{aYs+Ctu11NUWhsUH0N^$p*mEuzTb)ekrQ;-ebzaE^?j1T$w;u zzh7NqH`}w+u$}9JV0SU}HTe970FP-xtWfkpqP`Z zJE}}cGc3qVoUg`eP)TlH|7ClMT!Qg{>v>kp?qX|)>|&WM2D8Yua5$D`tlTQm3RHR5 zD>dh9_BAuPAh1Djed8gcn~(C~2O~qq4RTWT>~7gnt+MER0~y0QtC>27v-{D|xqUiI zW>eNm&PWPGW^^?74LS`_aL&+lOD?rZSWxX3hH z*0KU*GCtSLN!Cj>x%jU8(;o*I5Ytq3+r!6_rQ@$k9@2<-J3Xa?Mv-pb)IFg6WV?eJ zZV*fk*n@CY(`QqzK^OLdP7G*NX=d?!}M8Xy(s|d>c-o5 zbu@RRX`LsB;qqG4 zE!&$bQMx`|<=m{*(Pjn4sOt2^o`5Czd1Rpa3Ol8mMv`0)0~#v~9~2ZI%t3BF|K+1J zDb4BkpX30~Q+(Zfp6IizPStz}nxWAlnx5}RR8SCY2oxva0xp`1;F@{hJy2555a0w&&uH;E*D=MFOR}>AzxuKaoDtF|**K;G@7} zBmIbj&>xxuBhj!i*9A-||79tZ@I#2UYFOa#8R33kjNxggCp(!VN9 zM{r`{ckLo7fF<^L{wPpm-#7DuZ~pANajzQtR{l42xN%)IoMa+dfN4fWwWh7JM_&wy zf6|=q)M21wK`624gaqsfon|3vY3Z=&cnGyck)&p@nl$ilX7GCg)g=eV|Aa8SjF9^) z0&3O?TiXJicc0#2;F0L8{Gi6#9r?e-VN04$m(*5F{-LShrrYX~KL$Yw?cWn%Pft&W z%rO4LU(v#=L8SGQ^^+)Y8G08E?w|5aS&uMt-G(LLuXa=a|C!BjhNZBG2)fGrA2e~^ znm)swbli%Id+8uS1qE>}T=GEe<^Kv>|IY|j#e?V13=C0y2(LQ}6^NKvn9`N{CMHo; zS%Tx5je{d2r6Nc)|1>HH1I`2+M0{_@X=`g+e=@Uh7r%o=#G;MJhvf`#G=CBDhY@n+J_}Q0ZIcU}izU z)DY;;4yO<0+@TVjEPEU4a}@Mf2bxxIwK>PeV6d$qo5wx@%;1E9wh?dLXrc$%*DqL& z&hMo-h<9ej-+euMedlsG^oNS@k0J_cd2ti}-Mx(l8O?QyHtvxjcgHQ~>ykrAH8n}) ztFy)05y7K#Y4qbv;CvH^2>|DD;S=xpNTmC=jln)Rwzs~2JD@mtaVn+Jen$O?b4Q`& z0SjX-6c1<_9$JVpU&4`5utQaI79Dmz7v*L)vHET~$*p9pwQB>Lf(0ljM557}CAHU_ zFv&MQQ=6RHs0}50L*(#6XtU}%!ZrnMK3$5smE1>4Z&n1Q3D;C$A}naV-Mhr@i*{mr zc*$6?3*f&^itT3GMu6J_#uA( z{LdN*o!80YfD+!s^n6_kvk@ET=nV030tpwgm}TWL5d z3zaIH@35)ty7=G%uU|B5$aGN&Ldg9UXt{-?iLk?6Sum8d=xpeuq*IxvIa>IG21aSK50tngqn{B5M%#DJ&Nz^5)RNXxcb8MgJCOt9AcgdkV30*rV#24LcsLOyVd z&*B`Jh6ffGv8}3Jr>a>yHpF~mxFji_oA+dPGX8AM5^E0dr`{3ww$qH2 zrN@`|Mud&@f->u_rfduSG}3k6yYsXeExyFWAIA2W&WYl)ZvI$u6C*cpHdb5v!nipf ztjEC1PwIa2010#w+>wZJo{<~6O%#kbxkfR*aWFj5)!{N6at2-tvUnW(&E_49BMGlKbNFzF4VWd>J*%7W;T;q!H8mZ2oY5r(&F>`IQOyiWh#lrOJ(%Z_ycBtV zmpeDikSSX?2ZInbV;#);YG$7tY?ouUyvuTjpRJ86dBi!myDSJFg#Cw3aVH!oXDv?+ z{w(;LJhxjT9OPa%&smGT8T4qUTCCv;+G@T7KmklfSBf6y6o6O1pANFTPq~4cYtbm4;94$|=xRx=GArM83t&2Jb?p{>z_v2=9)M?4^X^r%p=gx+$PS8cZolDt zZ8?)|Qp?Jr&3;cja-tJeHFY>vKz1Z?#}Zgl2J?)-Y+z4feP+WD?c=i)H`WQaS>v{@ zE2}4)w^1#Z`f!8@bBgkX^ewUFWb)e!<26VT-TODLkEYwNeB#wKFVpvIc&DE$RnZ@v z%VgJlBknJoX1@@GXVXflyxtgjtjal@^h3mThVs~bcJ0#+U0QdN!h0@QNy>KfAdq`= z=h%>6v1>`TwE|)Y+BfZ+`kJfmH! zP=Tx*1_-yu{|DQ{=P&bKo1*~Vf;e-^stlV?br(T)d;x_DL@*VVwZ2;@NqUm(kDb?# z`aCQ}XbxC#&QG`G-7H3jD(X+O56fcJpMmjWm3iazMJ11;RiLCsXQk02TigBB^TrR7 z45SvtyIp%j)gUL;2?58DYGKO3p3U>A33KUN$_nl1U=K{j%s;sD6s7DvS*7 zH>0UzDfe8u+-My8LsT}S~cZt9tz!M@u>D`e`-`Hv+j;hMxy*0CJzWv!xe_8I6dM)p? z`de6GYJ|SCfHO2R*?|C8x-_?hs8M)P=h(^T!Al3;oh4h^ie{p>%lV9`3^fF>+oI@F zkj-8wncVat#m++pr5FJ+CjzstbQsI@oAj_1>GEl3XZ)}8wd#C`S^}AAThx9Nc%eA;`@sLd-O7FN&-a{tIs3@p9~f;y7uiyC@W z@?N!;y;Z~#?}8jFgtx}<%BPW@e*_*Xk;tDv6fBt)QoI&G@U@(O9@a}7b$KGJf+{Q~ zf`Z*MloDXj=i5(r!e+TNTkj~{eRXNRPrNi%fJca-Ji$b;t0UNe$kuY2&ZWlS|Fzo> z{w}1$t--*G{6?30r!nn*jp!uu>b+kQV%^gv4@m%P(#X1iVou@UE=Nj!ecwEqcoYpj&YZ}QKEY!*yEBt8tI zXHHDKlGdoS9))`zS9GQ~)$9J^e4~0eNZJMg<;C#?MXWNPqALU>W zBa?7uVMn7hI7kFYFF4#LUvl9dON2?le{FVK+2c|w?jIb0CHlxfc~aLtSY%aSZs?xw z(|ng~@ zx}kQbJDDKs=!B^sSX9(8O<>#r5GAM@GIzL~&?w?4CTz$V+1_k%JLI8x<>dB&<;$`T zF2D!XDLaNu1=X4Fx|dr9;$mcb8udxp!doSM8>tfcfteSw)?hz&Yn>7Bm+m z`-Z}gqiMU?LS-L0=aATMb)7BNTiDsl8!{p!-?bO-B`V+$PNuolhS4=)vCMOT)z ztZ&K6)@!smon82k%7)wZ*@C04Rb9Vbm-W`RTpW3p64w!W7=Ed}d`%INiC-lZw(OP< zan%^n(^9*-ikr_a7a8@hnr3!G>|hgJ8fsuDncUqlJMZGlKUo2NZ;I4@A#zp+mGbKgZ7DWr8_*+w1@>l=*zIk4tb zKljyE)KSZ-5(M;nX!Pk?8$J5jMS$+6RQC%fySqYE#k$)5GGkpV!@)&*=c1Qy@Eer3 zBsU3i;u6;?jOMnXB6FKw>* z@aV-Yvr(RqYUcA)ON}qi*A3J z+OX+c<2Vx)>V3w}O?k-j9by>*N)tNRXA2F5!bx^~<>`lX)>4Z53Did3g&JKq4!yIaj`6EW1L#OIcIvnxtIJ)LCnT#t5 z{*U-ml1lYulTXy|x zToR@hr`E@4t7#s4|DPnI>fXbdm2#~qbo!qTp!Q>E?rtrBIPqqkmfHY&t&~k*#Ic*kOGglMV$iW^5(Ty~V-*b~z^`wiATUSEu1 z4hR?eA`mA?kzr*%+LWzk3l<~TI_ke{u7zz*_RKxaR_EOs$yD=t{~Xtfi9IIhiS|Xq zAYl$j${f8FZh083@>v_Veu{{Ueu$`AT+6W>6|>li7tO`Bw;!^%{GeCW^#(xCsEdIk zq&=8dHAL=WZ>{!CecKTbZ|_+)GWhc6$0XIU%33nknplo}&bygk^K-OQK3Clm@eVEz z6RoLZ;^sfM=WK0vWSbZpz)cKeuQOPl#*lI+${5zLZq89m`w?=uIwI2DraA!Z*4Lh_ zT@332#kcN}J(;d7HYf0foz9VI?3ofRj{YZM`is}xk8_RwI|QTqm0d!F{V9x32~?!@ zAi~l{i>RT;2J6%toRTQzjCE(6ORgd7)|j~-(~eXJ`8a^|ZGi*CNU^Js7U*47j0w~S zpbwIKE^Z}ZIgkUes|f$O$}BN#ptKt18!Q_6a-M1Bkj|kH9%|{UF=yvU(#n3{U=_8R zbW@%x5V-UauE=$L?0I4X#1-4dbQD&n|E%EYtUtB0dT-swQP}02me!!tT=wqTPe+GP ztwz+qP(?EQA46EDMVZi&@h18#)ca z1K#T>RN_sqpx5n9 zP~EmGYMicUgvOT^@&Q(I%C5K756bP+rxw9ddj2w}W~t1N5@~KH%^ucFZ<+1EtuCJM zFLv0ce4yg>B0+`@)S$EF@gGk~^-j>_lYmp(1^ev&8ZgF&SL6E(?eR8+H1wM}-|@$5r0x!x9!0n{&DC>6>!(mMHt7LcXiVD<_YYxr3LI%$?w~(p+=8 z!Y>&nn`itWUKi9rISjduD@M6R>O8R=!)&MPe(0a5Es;3}-)^;hEw!Mjiyw@MxH@9$ zR!ZwV9O&iL>S&EOm3CI?-Wp>EsG0>NhFk!YQfp|q1)5xdA zr@#95*zm#{D@Ct5cTyicn9r6?m{oiiOdsW$&wkiD>g>E>+o4#7#hlT5#%xj)i|KE4 zW$M?)aHWzUR4IKPO3CokafdiS#(LtL_jY%-;a!*TRMEiCgEay=qSA&=2y%IKp%C1! zRf?M}lYS|G$`tVw#UgW4L zfx?`rnlC0d*tr(0c|^6`eDr07XWh+4S&Vi$J!=xj7EQj|D0~?Ea%9n5ut<@Av&BGS z*bZ1&+YB1q5$2QZ0=8e6JA<&89O#v0MoC{&-8GkdB@IvV^787ep8Ka^zam2%s0Q%4Pw5m78HT~eEyxiT^{BP#QA=Y|Csx+E<(P1+qVH|VIzM9~!&3zU4}XL7%{ z;KzjkqFR+3)P8w6@l^RbM^j>%vhhq&zI~yMtreU|e0kYBPI?;0XPKTZkpDGf`jMSB zKpBrLLwW-xzPH3q*KB3@q6BX!1)VefY0y-mAz~y$T-a3@(?HxrFxfSLeHn zeARV7Lxz;Uagdz0nrOR1GND;7jL&4w+jCh|(n*a_K8bu_L2?0sNX*wj9{{6}6^+IA*h}pAW9cu~&yVMrg=8?E z=O2N@Y>|!oXCE*N#BbGtV{s?Cq&OVbJ7^{aAc6JTm*zB#y|if?>mL$~S*m=sa-&Sk zt`uU&tzPjjcYk(W(rUl0T=xBV%yc(-;LrM3^Z`-9{C~(E_xI=Hj+PY#L-=s;g@eQR z3tL(ZOG$w|<|k6pne(xDy8mAL`+tdV{GU6V{?_MzU(ZXu%qe$5{<^;omJ&aEreOzGDBHanDgU!*1N{~5EEUfwHFzL z8itU1vyVsY;GQ%ocrK^H_F%#EGS;uxf&aFJrCj?_P-?_%n!~)R#%k8&*a>w|D$}96)qMw=&KSs)*`cgs*aXLjrQ_b^vSJ|A0i)$q8`ctBgUgK5e zOU`L0H5SF0Ud8LBoUl*zIkgQi;#9Z&di3h8z*$!m^RI;3md-hwu|*c3w1#gMK~?uj zSPZ&38i!S5S`I(cY2eH0noPRsm}W|U1r!HH-1`ipRemWeS#!jwYM%m*sD_X6Aek(O zB44C3r@Blabqh(}i|)VG24F2>DX5)~Tr2{MY9fwxbs6;XZlX4kV@;zSIlM{F*Eeg7 zUAZJQ?TgnFKUJZ8{H>Ar)*3w0WS=jX@Jo6laZc*-f& zOm0NNj~ne27XFyYp0O16;3n+@7Md=Wx$BVK-<**JScMq;+q}BS)x%wA^eKypc%mjU zQc`N^rghbl@o9P%0Dj4y0VGI z<9KwNs7UEu1ZbzSLIT(#>Yh=;i&nFI<`itcF@;0b-FI`*I6WS}yDeSy=j-XQX&ukIa;#^~LvuXx{hP0dTwA@YCIzH+% zDHeGF)#GDj1(tZ5cpqh&)g}h#aj)jX9^1K%SlQX9i60$c1YhPej)Y4wk|zI3Tpl9v zpzC6rf|+Q^{3_$U61iQkO6PgyGxqpR50k}r3cQ72XLEEy?sZ;qtEy*<)(ks0uv*R~ z+>EUQ4aH9u0M&HwR*x(qWDi@)3Dx}Oi3a6hOL*@u55|iWTicA0VNgoq8@?v}W!fT+ z>&B1Y#a6^iZE$LwcqV*>p-r)|z`#hiQ^nX6XaTUNFaZUiBZzeJN#+L#`6x+TY3;NM0td zHcOsuQ<~gMllYh0x-llf>}Dk!ClAC3gS^BW7y+Jl=x)bj*tj<6d3HBrWzwzG zXbevw1H4S}rdp|wQ6LF6w;WWh?t8uZuQ%@x4wvnJ(FqRDGMv|%Jt_3s5*Ba1@elHy zg>Ff{?ww3@n5-#H*4>73m-7<^;))&LdIc_eaMhe23}{D2?JsIb5rCChyXajDl?rsq z!$1QGVKVREo;q9IZ{8~=ZEBg#X?2KiUh;R9^U7$q5)Q4b6Y%76vfE7_bo}6+@#tb> z&?;aBtg^2N?C3d}@!~8f+pfItg1dSjF^!4Qn4r?6$@Umg^uBs@iI=v?!-<4D`uFu!(xutVAg#`|<;&G<1mK~`aY_)+h zG@jh-_{gEwk@e^1xRDx1#e6jnjqZ&{)ah=5OT|XS-qq9g&4Z`RA=b$NwnztPED4J@ zM~g_zoJccFTkg1PLiVTwJ@b{(%rz@5(rY<}&;@Dgcsj3tMK$ny&WP)J@2(d044LC~ zsF(v?Qo1MV7u_WV+SB4MkCKgiBk@1*TB6|6>A-9KABle&9EjzquiMj}FGh1}Oq`fS zr%o(l^i2#y5-*Si&QB~@^>nPMo0M$pZtE1Dld^mBzRAI(9*fF6T>@fpw@G13915Q# zqjx0m#fwmZ=;q z_nMwtDT1(9X}{WT{Z5^7X}<$$6f#cKyn6QJgLJyv1@Exp3I~^~C^|w=3Zt$}UORks zFN}4p&(l(v_%!f%v554Y)VmyBkp46DW`KvR)(0hNM(A=$VSPgI3q{BhpI44+wlj=Z zgUZ#p>9(4?9+%0RI}5VOpu4P->fUTp#_5hC5wkUdHzv~L^4i_&TAiLqHIs_s0LGQ6 z=DZaz%Ii!gc;?5M$(0HjPeZY+e$it-@tV+Y9Y3esyRrR)od!3HM;KFIFpsk>@G~X9 zQAfSjC$3vy|D1-BJD&r4mmcDF0}bHeu>wBGZlwp+=1gY1%?sWTol)OrWY&x4jtl3L6ISU>;nl@K$>~fA-lkV{nrf`01?(qh-TlBO-fet~T-#eZ^Q?{usCK58K@chj zADap3ruP%YB)5&>#5UF!g2-7%6uxR-k7Faq)1DiWP%hDvGi^HtujMe z1Q@2e9Ei+Pc)%%O*puS?hW`k4nJKtAX|9{>VEMcOu7l;klO{2X0bDJ~jq$2SB^SQ* za%Q0oos4}VXFEvej_E>MRAqLp`#kA&4GS>y9Vkv}(%^6nYMuFsIaVMgr$}l=srpQL4r74kxXr@!w7D5iNCY#5Nq^Ap)| zn%f|8FZG7fCG6gCT3?e=lj_e=Qg0v?i;W<(|5R;-U~LB4@j!@j(DYj=LAtGZ`Y91Q zg3jtL+cu$hj%wNf!+bd13^(OIXP(AQ)BJ1E0|^cvCEKa+TUOYZ8+j7ZCo?YBM~pJF z*WYsUp_i{ILnY;1V?C?>PT=44`JaM+!j5WG8xzqmh=C2>2G?H96hu9^2~bSWa5-av zg`dGAs9sdw6S1WpjFtB(8g={^M0#wzOg5?n43b#l9aS0B4pw*2g7sksV`O9(r)%qT zX;aX6N?0evC%9aj-{W5GeSN7_3#Ou3FKGrlFMZG>CaJCZR4>g$v&(xN%`YyC}){C2aoq9Owm~6^Y zoezw-$IskMN%TZvXn)?H6arrHcpFa`IS?jGlbX3!Gab=0#&ilXc)}r-PFGslsM?K- zzivG8RNCFgST*S%sZp_3_8*?-&bjB_SbX36xpozx47h^BibPX@@Rn@r0rXbky`7|) zmM^`6RJQuAkMuwi`0d=WG)y9KfjhdaanzhaBOQz7W~zCogL@i&S02d*5>>e6ofSIJ z(uZ%F+n54gMg+04l9sHG<5c42Yt(t``{wOP!K_c0$=`EWTd@n3_p%&(_UbA(V$e+m zWS8Dn+wQW9D|!8PHrEpmkPwN$HMzz2ek#}}uo7kF(o-x7SXxH$kBBUUM(n2|W#(3_ z8JzqC_hiYw}74Be6Cq31&;pwVeB@1o8rq$bT|6kDeWojT+%GRY!a@_st?O zRc}530wy~SGB%e1cV{*KD}e`o_zaF7UC;aL4UC+h#xP@*{rDTp_TzosxVHqIUXM;W zU2}?xebqDfdpkWSBI7#ZSoH(vt#K8%u>oMe#-YQ7v>j!}mibrKoJ%5gOlQooNtk1k z7&<(OPv@-SyQ@POYdb)G+(=9Yp!60QtKVhawLVOkvzY$vjObC^X&r+7L>?sy0(4+6 z%%RvAM~LP;-hk26oZy%gk~$dC1D&59NZ5BLxsr9WEH4B1eA*}6zf@jMJK4Ke^L@lP z#{VQ7y&;q?{o)DCIL|GIc92?`*7tntMA}2cwFeIdLK@{dqQTorZmE}(9d(aW+YewI z`bS!8O)NFb>4ZAx>!j%1VY2)zBy?zw4$v9=Fz5~P7*g^0(rhQ9-ql*qzW3?1tEJDX ztq=8)SMhVTaUD3(7(X?}Sx2eE;~zSMzT%bpSnhN{SpOL;Oznn0pzH*R7) z9(Jei^W|nCQJ5UpDJ;9C=KlFz9JD4d`VEeKnt@B@=jh8%GNQh#uIH8{59& z%w2`DXS09Xe<`TCoK$aYT;4c~w^wFiN_dVj6DBh_@I09}$_ndr;CvwOTI$B>!0Gg( zO`kaKAKbx-LI*hSaB|o8Si2@-)>!H;Ey~6k7EO442GJgL7%jhKRLlJ=S+beT+!CB9 zY`4#_d&LKAHw$Jg+; zE6=dt_o*aSbV53eT?WxEXD0`)+o3d2VddhD9M89* z90g?V+J`-12<_#TAMseKu04zTRYN_i67q9$D6mt1W3(zEKgSiP*3@Td_n}Qib>r+H z5(jr7|J%J>C{`%j754AUq8RX8n(`yEPjB@9+04IkY^c&ZochPREZTII^O|viwdQ!C zie^ex4ig3+R%;A~X1J&IR>f_HO5q><4Dm(t+1Gh4-Ho7bxt9NwGSD*VMJ%6u!kjq~ zM7HdJrCTg&?`n3oZsl4gEdMFnmr|}fp(H%lwH$=;*JY-B{+&3SiyFh5RPHkYb0P(5SvV`}Qmb_+Q|QJG~hhu16^w z*N>f{;L<_nrhZYGM??w>|2&!LuU%!?$FtaJ*Ar@)#LN+94DRR5?f4C?Qkd~-F3Uc8 zi!VzcI4YUcNl~2G(!4A$h2E6x{XVVdI8;$iXpuOb2^W^LJZ&d;Z4eTZ!t~U>gy43q zXr}cs-@2SPWtH~uKznF7jdL9}a9f!+7?WP3?li8=lFR$K7~GSeH`i765vq{G>F=;L z{(W9As;-=qwDZ*!vM>D|w#NU7MK85?JzT{jUmcPj!hGL{&Al=PAU1P|xoruxY^(OmmkqrE49>=&FCWX0l?zG9uHK@LCOh zmS!JX3yoKcXy=W>MY|y;RNZy>9K#W6a#04RkqN<4(G|H;W&#(M6&z|iY`Nb;}y{f=3 z*RNyPh;d$R+t^CZuHnOf_G5NxkIE;q2^Yr=c7L=6|0#1AT%St@LI@%LFNH@uIMUwE zFK&dA2vPs6nd{gcJf6{=n%3;HX|_9sHR~%jXZ7Hv5nT!9F2`5RV?$&b?~O7)vhV7t z@_+&#R(5>Ywy_0v8OsY9pR+HgJ1GzK3H&FG;_iuUobB~1rpiP|2qA~=52qAjQ}J|N#mC4>+{2qA=cGRb5|2qA>nXZGy;_I?uaNkty}1;q;_BqVHw4>IaVNYC^TuOptL zBmPo>43H5|&)lRGG@m2H@3}=d;(tu%54vthNH_z3AIK@JIFyJ&a(7uBcMT^icTZDS zOC)PYCkIP*H*;4@OGmdaPVT3u-4aMhuaFdE-fMbgAFXWm{ zPR){E{+#~p&+zaUk%mXu?Pl*~2lBq55xw9r~qTvDQ5V?is)8d77Y!p&S|}i08P(bR~|7Y4jX~2Dw!F-zvH9g&YIL=OC?~hco!A^FZm#> z_Wv3>%68GP+tC?*EOU0ruTv%pF)!zkZ3V>V%X4|eumra<)0A9H6*K5!q{By*wtU5U!T}PI6cOR!A6RzcfB8!AmQ0zBu06Xj8vIgD zGL|BUYyP1|&dc^I9b(|cpT^!r#mr!kTue@|XXDrdiC0CoPHh>)IWns#A?NV5{uQwT z$ry2tKd6xCYRwu$Qc~4UvA=`*$eOhn0`}gIiYdyz8yKC$KHQ(#&R!mTm@+m2S2KG- z^MRV};R^|fsztV}hTr=#2Y|);AI^^l&Oq%NGc24x{zNuSYV+)5eP&yoOF^f8Xn6z1 zcf-REc4{ZnCqPWTq7q=jeod6nqHGB)A%}gaz(C8}bmVnCk=G}`UcECL8ArDMQ^M); zWt)&W+3LgUoNuhIK% zG@Z5P@Xdu6WpPBTD~2&@p%&&$Pu{YnU5d7PfB9-+-QeM73FFRT3rhts?s@o0g#u%q z!(_DSODyxwhFX=tq=>Qd)NflMawJ7IsASey9gXL2MpN>a^R%y~x1x>V00R$)XE9Gic=_@`!i z4I;$lAb*5$85H7P9kldrdOz?viNnCWb-8e06cfJx-YUJ5fTF;#mNNLTyE#d%U3}s4 zR1wmaaik-ZLOY*3fU@}K26}_*wvnnCr|}QyMm}}n>5C+|bz2QZ zl4VoMIy*eE+EB+&gi4m2^@o1^p$$Tu_KBs-vxQ!KZHsxomlLC%mN(yKOW+yTDKs z8dW_~3CJPE;P0zKQ8`tFQ~3ug;yKiGCduc~40cLa7h3Be35N;RIs-lZ#LngCsmJ@! zbyQBkA7V)-_0b{dx=2{nvyO8_Q%7JbrLo>^!?0JSd`*vc7~{>ucxkD@`X99KjX@bE z*3xzBq!tW^+W}iY--AfzfU@yeCw%rGywXbsDkTZQ(!oMCviB<1qIa^rQvaKjOYnJD%6qZg9Xw~njt2m_W-&Kekx_A1Mt*LbJOn4ZTyM;e>3N7M2R7aXg*Lh_9}$Hl|g(w zvbT_B0rzmK{4?d!{S9tqeb7>kgadtbkv!B^i1^08cfwRSCt`9VvRSeBHeq^>QX3~J z*Q5Gbj`)k}9OJq>^~!&y+^tM`p=pgxCvl?w6ykbpCrGfBckI`<{3$T4z

mj*1f4HmGqXc2rlfMDA1;;(i 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 Date: Sun, 31 Jan 2016 17:44:28 +0100 Subject: [PATCH 3/9] [IMP] store computed fields; --- pos_session_summary/models/pos_session.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pos_session_summary/models/pos_session.py b/pos_session_summary/models/pos_session.py index d9d42030..5857937b 100644 --- a/pos_session_summary/models/pos_session.py +++ b/pos_session_summary/models/pos_session.py @@ -31,7 +31,9 @@ class PosSession(models.Model): session.order_qty = len(session.order_ids) total_amount = fields.Monetary( - compute='_compute_total_amount', string='Transactions Total') + compute='_compute_total_amount', string='Transactions Total', + store=True) order_qty = fields.Integer( - compute='_compute_order_qty', string='Orders Qty') + compute='_compute_order_qty', string='Orders Qty', + store=True) From 814e36a0f4f303e3008f96e8b9026f2a5ce0e2c0 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 31 Jan 2016 17:55:40 +0100 Subject: [PATCH 4/9] [REF] OCA convention; --- pos_session_summary/README.rst | 39 ++++++++++++++----- pos_session_summary/__openerp__.py | 24 ++---------- pos_session_summary/models/pos_session.py | 12 ++---- .../views/pos_session_view.xml | 6 +-- 4 files changed, 38 insertions(+), 43 deletions(-) diff --git a/pos_session_summary/README.rst b/pos_session_summary/README.rst index 0d53b301..60047da0 100644 --- a/pos_session_summary/README.rst +++ b/pos_session_summary/README.rst @@ -1,6 +1,8 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +========================================================= Point of Sale - Total of transactions and Orders Quantity ========================================================= @@ -13,6 +15,12 @@ Point of Sale - Total of transactions and Orders Quantity .. image:: /pos_session_summary/static/description/pos_session_list.png + +Installation +============ + +Normal installation. + Configuration ============= @@ -21,28 +29,39 @@ No configuration is needed. Usage ===== -For further information, please visit: +To use this module, you need to: + +* Go to ... -* https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/184/9.0 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 -`here `_. - +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 +`_. Credits ======= +Images +------ + +* Odoo Community Association: `Icon `_. + Contributors ------------ * Sylvain LE GAL - Maintainer ---------- @@ -56,4 +75,4 @@ 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. -To contribute to this module, please visit http://odoo-community.org. +To contribute to this module, please visit https://odoo-community.org. diff --git a/pos_session_summary/__openerp__.py b/pos_session_summary/__openerp__.py index 4e5793ec..27d1c295 100644 --- a/pos_session_summary/__openerp__.py +++ b/pos_session_summary/__openerp__.py @@ -1,24 +1,7 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2016-Today La Louve () -# -# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { 'name': 'Point of Sale - Session Summary', @@ -34,4 +17,5 @@ 'views/pos_session_view.xml', ], 'installable': True, + 'license': 'AGPL-3', } diff --git a/pos_session_summary/models/pos_session.py b/pos_session_summary/models/pos_session.py index 5857937b..7064612b 100644 --- a/pos_session_summary/models/pos_session.py +++ b/pos_session_summary/models/pos_session.py @@ -1,13 +1,7 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2016-Today La Louve () -# -# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) -# -# The licence is in the file __openerp__.py -# -############################################################################## +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import fields, models, api diff --git a/pos_session_summary/views/pos_session_view.xml b/pos_session_summary/views/pos_session_view.xml index 52766b9a..6a41cfe2 100644 --- a/pos_session_summary/views/pos_session_view.xml +++ b/pos_session_summary/views/pos_session_view.xml @@ -1,10 +1,8 @@ From d8cd18e7a88adba161c82b5925c000879cf7928b Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 4 Apr 2016 14:30:54 +0200 Subject: [PATCH 5/9] [ADD] fr translation; --- pos_session_summary/i18n/fr.po | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pos_session_summary/i18n/fr.po b/pos_session_summary/i18n/fr.po index a3e37a61..9cf29bc2 100644 --- a/pos_session_summary/i18n/fr.po +++ b/pos_session_summary/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-31 16:30+0000\n" -"PO-Revision-Date: 2016-01-31 16:30+0000\n" +"POT-Creation-Date: 2016-04-03 23:55+0000\n" +"PO-Revision-Date: 2016-04-03 23:55+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -24,3 +24,9 @@ msgstr "Nb. ventes" #: model:ir.model.fields,field_description:pos_session_summary.field_pos_session_total_amount msgid "Transactions Total" msgstr "Total des transactions" + +#. module: pos_session_summary +#: model:ir.model,name:pos_session_summary.model_pos_session +msgid "pos.session" +msgstr "pos.session" + From 73d950b7c14e41b19fc744672bca5d1ca0eb57a5 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 4 Apr 2016 23:10:05 +0200 Subject: [PATCH 6/9] [IMP] use mapped function thanks @pedrobaeza; [FIX] total_amount computation; (take into account balance_start); --- pos_session_summary/models/pos_session.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pos_session_summary/models/pos_session.py b/pos_session_summary/models/pos_session.py index 7064612b..53e79ea1 100644 --- a/pos_session_summary/models/pos_session.py +++ b/pos_session_summary/models/pos_session.py @@ -13,10 +13,9 @@ class PosSession(models.Model): @api.depends('statement_ids.balance_end') def _compute_total_amount(self): for session in self: - total_amount = 0 - for statement in session.statement_ids: - total_amount += statement.balance_end - session.total_amount = total_amount + session.total_amount =\ + sum(session.mapped('statement_ids.balance_end')) -\ + sum(session.mapped('statement_ids.balance_start')) @api.multi @api.depends('order_ids') From 00a10ed95af76365e84febac4d7a937c1a23e7a3 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 4 Apr 2016 23:12:02 +0200 Subject: [PATCH 7/9] [FIX] remove useless comment in readme file; --- pos_session_summary/README.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pos_session_summary/README.rst b/pos_session_summary/README.rst index 60047da0..b17fcb28 100644 --- a/pos_session_summary/README.rst +++ b/pos_session_summary/README.rst @@ -29,10 +29,6 @@ No configuration is needed. Usage ===== -To use this module, you need to: - -* Go to ... - .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot :target: https://runbot.odoo-community.org/runbot/184/9.0 From a7aeaa3a6b318d51c7a09e219fd0297c0e149fbb Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 1 May 2016 21:15:26 +0200 Subject: [PATCH 8/9] [FIX] session total is now based on the sum of all orders total, to avoid to take into account take money in / out moves; --- pos_session_summary/models/pos_session.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/pos_session_summary/models/pos_session.py b/pos_session_summary/models/pos_session.py index 53e79ea1..95cceac2 100644 --- a/pos_session_summary/models/pos_session.py +++ b/pos_session_summary/models/pos_session.py @@ -10,23 +10,17 @@ class PosSession(models.Model): _inherit = 'pos.session' @api.multi - @api.depends('statement_ids.balance_end') - def _compute_total_amount(self): - for session in self: - session.total_amount =\ - sum(session.mapped('statement_ids.balance_end')) -\ - sum(session.mapped('statement_ids.balance_start')) - - @api.multi - @api.depends('order_ids') - def _compute_order_qty(self): + @api.depends('order_ids.lines.price_subtotal_incl') + def _compute_orders(self): for session in self: session.order_qty = len(session.order_ids) + session.total_amount = sum( + session.mapped('order_ids.amount_total')) total_amount = fields.Monetary( - compute='_compute_total_amount', string='Transactions Total', + compute='_compute_orders', string='Transactions Total', multi='orders', store=True) order_qty = fields.Integer( - compute='_compute_order_qty', string='Orders Qty', + compute='_compute_orders', string='Orders Qty', multi='orders', store=True) From 71699b0ae2600646802e6724fae351ca5206fb15 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sun, 18 Sep 2016 11:54:47 +0200 Subject: [PATCH 9/9] [IMP] separate sale statement lines from cash statement lines courtesy @jweste --- pos_session_summary/i18n/fr.po | 42 +++++++++++++++++-- pos_session_summary/models/__init__.py | 1 + .../models/account_bank_statement.py | 31 ++++++++++++++ .../views/pos_session_view.xml | 4 ++ 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 pos_session_summary/models/account_bank_statement.py diff --git a/pos_session_summary/i18n/fr.po b/pos_session_summary/i18n/fr.po index 9cf29bc2..a92e9b24 100644 --- a/pos_session_summary/i18n/fr.po +++ b/pos_session_summary/i18n/fr.po @@ -1,13 +1,13 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * pos_session_summary +# * pos_session_summary # msgid "" msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-04-03 23:55+0000\n" -"PO-Revision-Date: 2016-04-03 23:55+0000\n" +"POT-Creation-Date: 2016-09-07 14:33+0000\n" +"PO-Revision-Date: 2016-09-07 14:33+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,11 +15,46 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: pos_session_summary +#: model:ir.ui.view,arch_db:pos_session_summary.report_sessionsummary_louve +msgid "Cash Moves" +msgstr "Mouvements d'argent" + +#. module: pos_session_summary +#: model:ir.ui.view,arch_db:pos_session_summary.report_sessionsummary_louve +msgid "Sale Transactions Subtotal" +msgstr "Ss-total des ventes" + +#. module: pos_session_summary +#: model:ir.model,name:pos_session_summary.model_account_bank_statement +msgid "Bank Statement" +msgstr "Relevé bancaire" + +#. module: pos_session_summary +#: model:ir.model.fields,field_description:pos_session_summary.field_account_bank_statement_total_entry_encoding_cash +msgid "Cash Moves" +msgstr "Mouvements d'argent" + #. module: pos_session_summary #: model:ir.model.fields,field_description:pos_session_summary.field_pos_session_order_qty msgid "Orders Qty" msgstr "Nb. ventes" +#. module: pos_session_summary +#: model:ir.model.fields,field_description:pos_session_summary.field_account_bank_statement_total_entry_encoding_sales +msgid "Sale Transactions Subtotal" +msgstr "Ss-total des Ventes" + +#. module: pos_session_summary +#: model:ir.model.fields,help:pos_session_summary.field_account_bank_statement_total_entry_encoding_cash +msgid "Total of cash inputs or outputs." +msgstr "Total des entrées ou sorties d'argent." + +#. module: pos_session_summary +#: model:ir.model.fields,help:pos_session_summary.field_account_bank_statement_total_entry_encoding_sales +msgid "Total of sale transaction lines." +msgstr "Total des transactions de vente." + #. module: pos_session_summary #: model:ir.model.fields,field_description:pos_session_summary.field_pos_session_total_amount msgid "Transactions Total" @@ -29,4 +64,3 @@ msgstr "Total des transactions" #: model:ir.model,name:pos_session_summary.model_pos_session msgid "pos.session" msgstr "pos.session" - diff --git a/pos_session_summary/models/__init__.py b/pos_session_summary/models/__init__.py index ac13d7d5..05a7876b 100644 --- a/pos_session_summary/models/__init__.py +++ b/pos_session_summary/models/__init__.py @@ -1,2 +1,3 @@ # -*- coding: utf-8 -*- from . import pos_session +from . import account_bank_statement diff --git a/pos_session_summary/models/account_bank_statement.py b/pos_session_summary/models/account_bank_statement.py new file mode 100644 index 00000000..221a5a20 --- /dev/null +++ b/pos_session_summary/models/account_bank_statement.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# Julien Weste (julien.weste@akretion.com.br) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import fields, models, api + + +class AccountBankStatement(models.Model): + _inherit = 'account.bank.statement' + + total_entry_encoding_sales = fields.Monetary( + 'Sale Transactions Subtotal', compute='_compute_total_entries', + store=True, multi='total_entries', + help="Total of sale transaction lines.") + total_entry_encoding_cash = fields.Monetary( + 'Cash Moves', compute='_compute_total_entries', store=True, + multi='total_entries', help="Total of cash inputs or outputs.") + + @api.multi + @api.depends( + 'line_ids', 'balance_start', 'line_ids.amount', 'balance_end_real') + def _compute_total_entries(self): + for abst in self: + abst.total_entry_encoding_sales = sum( + [line.amount for line in abst.line_ids + if line.pos_statement_id]) + abst.total_entry_encoding_cash = sum( + [line.amount for line in abst.line_ids + if not line.pos_statement_id]) diff --git a/pos_session_summary/views/pos_session_view.xml b/pos_session_summary/views/pos_session_view.xml index 6a41cfe2..3a747d21 100644 --- a/pos_session_summary/views/pos_session_view.xml +++ b/pos_session_summary/views/pos_session_view.xml @@ -26,6 +26,10 @@ + + + +