Merge lp:~matjaz-6/openerpsl/openerpsl_04_29 into lp:openerpsl/7.0
- openerpsl_04_29
- Merge into 7.0
Proposed by
Matjaz Kalic
Status: | Merged |
---|---|
Merged at revision: | 396 |
Proposed branch: | lp:~matjaz-6/openerpsl/openerpsl_04_29 |
Merge into: | lp:openerpsl/7.0 |
Diff against target: |
997 lines (+944/-0) 9 files modified
account_receivables_payables/__init__.py (+23/-0) account_receivables_payables/__openerp__.py (+38/-0) account_receivables_payables/report/__init__.py (+21/-0) account_receivables_payables/report/rec_pay_report.py (+38/-0) account_receivables_payables/report/rec_pay_report.rml (+274/-0) account_receivables_payables/wizard/__init__.py (+22/-0) account_receivables_payables/wizard/rec_pay_wizard (copy).py (+182/-0) account_receivables_payables/wizard/rec_pay_wizard.py (+297/-0) account_receivables_payables/wizard/rec_pay_wizard_view.xml (+49/-0) |
To merge this branch: | bzr merge lp:~matjaz-6/openerpsl/openerpsl_04_29 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mentis | Pending | ||
Review via email: mp+217590@code.launchpad.net |
Commit message
Description of the change
[ADD] new module account_
To post a comment you must log in.
- 396. By Dušan Laznik (Mentis)
-
[ADD] new module account_
receivables_ payables
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory 'account_receivables_payables' |
2 | === added file 'account_receivables_payables/__init__.py' |
3 | --- account_receivables_payables/__init__.py 1970-01-01 00:00:00 +0000 |
4 | +++ account_receivables_payables/__init__.py 2014-04-29 12:39:30 +0000 |
5 | @@ -0,0 +1,23 @@ |
6 | +# -*- coding: utf-8 -*- |
7 | +############################################################################## |
8 | +# |
9 | +# OpenERP, Open Source Management Solution |
10 | +# Copyright (C) 2014 Mentis d.o.o. |
11 | +# |
12 | +# This program is free software: you can redistribute it and/or modify |
13 | +# it under the terms of the GNU Affero General Public License as |
14 | +# published by the Free Software Foundation, either version 3 of the |
15 | +# License, or (at your option) any later version. |
16 | +# |
17 | +# This program is distributed in the hope that it will be useful, |
18 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
20 | +# GNU Affero General Public License for more details. |
21 | +# |
22 | +# You should have received a copy of the GNU Affero General Public License |
23 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
24 | +# |
25 | +############################################################################## |
26 | + |
27 | +import wizard |
28 | +import report |
29 | |
30 | === added file 'account_receivables_payables/__openerp__.py' |
31 | --- account_receivables_payables/__openerp__.py 1970-01-01 00:00:00 +0000 |
32 | +++ account_receivables_payables/__openerp__.py 2014-04-29 12:39:30 +0000 |
33 | @@ -0,0 +1,38 @@ |
34 | +# -*- coding: utf-8 -*- |
35 | +############################################################################## |
36 | +# |
37 | +# OpenERP, Open Source Management Solution |
38 | +# Copyright (C) 2014 Mentis d.o.o. (<http://www.mentis.si>) |
39 | +# |
40 | +# This program is free software: you can redistribute it and/or modify |
41 | +# it under the terms of the GNU Affero General Public License as |
42 | +# published by the Free Software Foundation, either version 3 of the |
43 | +# License, or (at your option) any later version. |
44 | +# |
45 | +# This program is distributed in the hope that it will be useful, |
46 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
47 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
48 | +# GNU Affero General Public License for more details. |
49 | +# |
50 | +# You should have received a copy of the GNU Affero General Public License |
51 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
52 | +# |
53 | +############################################################################## |
54 | + |
55 | +{ |
56 | + "name": "Receivables & Payables card of customer", |
57 | + "version": "1.0", |
58 | + "author": "Mentis d.o.o.", |
59 | + "category": "Accounting", |
60 | + "depends": ['account'], |
61 | + "description": """ Receivables & Payables card of customer |
62 | + |
63 | + """, |
64 | + "init_xml": [], |
65 | + "update_xml": [ |
66 | + 'wizard/rec_pay_wizard_view.xml', |
67 | + ], |
68 | + "demo_xml": [], |
69 | + "active": False, |
70 | + "installable": True, |
71 | +} |
72 | |
73 | === added directory 'account_receivables_payables/report' |
74 | === added file 'account_receivables_payables/report/__init__.py' |
75 | --- account_receivables_payables/report/__init__.py 1970-01-01 00:00:00 +0000 |
76 | +++ account_receivables_payables/report/__init__.py 2014-04-29 12:39:30 +0000 |
77 | @@ -0,0 +1,21 @@ |
78 | +# -*- coding: utf-8 -*- |
79 | +############################################################################## |
80 | +# |
81 | +# OpenERP, Open Source Management Solution |
82 | +# Copyright (C) 2014 Mentis d.o.o. |
83 | +# |
84 | +# This program is free software: you can redistribute it and/or modify |
85 | +# it under the terms of the GNU Affero General Public License as |
86 | +# published by the Free Software Foundation, either version 3 of the |
87 | +# License, or (at your option) any later version. |
88 | +# |
89 | +# This program is distributed in the hope that it will be useful, |
90 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
91 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
92 | +# GNU Affero General Public License for more details. |
93 | +# |
94 | +# You should have received a copy of the GNU Affero General Public License |
95 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
96 | +# |
97 | +############################################################################## |
98 | +import rec_pay_report |
99 | |
100 | === added file 'account_receivables_payables/report/rec_pay_report (another copy_single_line).sxw' |
101 | Binary files account_receivables_payables/report/rec_pay_report (another copy_single_line).sxw 1970-01-01 00:00:00 +0000 and account_receivables_payables/report/rec_pay_report (another copy_single_line).sxw 2014-04-29 12:39:30 +0000 differ |
102 | === added file 'account_receivables_payables/report/rec_pay_report (copy).sxw' |
103 | Binary files account_receivables_payables/report/rec_pay_report (copy).sxw 1970-01-01 00:00:00 +0000 and account_receivables_payables/report/rec_pay_report (copy).sxw 2014-04-29 12:39:30 +0000 differ |
104 | === added file 'account_receivables_payables/report/rec_pay_report.py' |
105 | --- account_receivables_payables/report/rec_pay_report.py 1970-01-01 00:00:00 +0000 |
106 | +++ account_receivables_payables/report/rec_pay_report.py 2014-04-29 12:39:30 +0000 |
107 | @@ -0,0 +1,38 @@ |
108 | +# -*- coding: utf-8 -*- |
109 | +############################################################################## |
110 | +# |
111 | +# OpenERP, Open Source Management Solution |
112 | +# Copyright (C) 2014 Mentis d.o.o. |
113 | +# |
114 | +# This program is free software: you can redistribute it and/or modify |
115 | +# it under the terms of the GNU Affero General Public License as |
116 | +# published by the Free Software Foundation, either version 3 of the |
117 | +# License, or (at your option) any later version. |
118 | +# |
119 | +# This program is distributed in the hope that it will be useful, |
120 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
121 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
122 | +# GNU Affero General Public License for more details. |
123 | +# |
124 | +# You should have received a copy of the GNU Affero General Public License |
125 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
126 | +# |
127 | +############################################################################## |
128 | + |
129 | +import time |
130 | +from openerp.report import report_sxw |
131 | +from openerp.osv import osv |
132 | +from openerp import pooler |
133 | + |
134 | +class rec_pay(report_sxw.rml_parse): |
135 | + _name = 'receivable.payable.report' |
136 | + def __init__(self, cr, uid, name, context): |
137 | + super(rec_pay, self).__init__(cr, uid, name, context=context) |
138 | + self.localcontext.update({ |
139 | + 'time': time, |
140 | + }) |
141 | + |
142 | + |
143 | +# |
144 | +report_sxw.report_sxw('report.receivable.payable.report','res.partner','addons/account_receivables_payables/report/rec_pay_report.rml',parser=rec_pay) |
145 | + |
146 | |
147 | === added file 'account_receivables_payables/report/rec_pay_report.rml' |
148 | --- account_receivables_payables/report/rec_pay_report.rml 1970-01-01 00:00:00 +0000 |
149 | +++ account_receivables_payables/report/rec_pay_report.rml 2014-04-29 12:39:30 +0000 |
150 | @@ -0,0 +1,274 @@ |
151 | +<?xml version="1.0"?> |
152 | +<document filename="test.pdf"> |
153 | + <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20"> |
154 | + <pageTemplate id="first"> |
155 | + <frame id="first" x1="0.0" y1="57.0" width="538" height="728"/> |
156 | + </pageTemplate> |
157 | + </template> |
158 | + <stylesheet> |
159 | + <blockTableStyle id="Standard_Outline"> |
160 | + <blockAlignment value="LEFT"/> |
161 | + <blockValign value="TOP"/> |
162 | + </blockTableStyle> |
163 | + <blockTableStyle id="Table_Address_detail"> |
164 | + <blockAlignment value="LEFT"/> |
165 | + <blockValign value="TOP"/> |
166 | + <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/> |
167 | + </blockTableStyle> |
168 | + <blockTableStyle id="Table2"> |
169 | + <blockAlignment value="LEFT"/> |
170 | + <blockValign value="TOP"/> |
171 | + </blockTableStyle> |
172 | + <blockTableStyle id="Table_picking_info"> |
173 | + <blockAlignment value="LEFT"/> |
174 | + <blockValign value="TOP"/> |
175 | + </blockTableStyle> |
176 | + <blockTableStyle id="Table1"> |
177 | + <blockAlignment value="LEFT"/> |
178 | + <blockValign value="TOP"/> |
179 | + </blockTableStyle> |
180 | + <blockTableStyle id="Move_Line_Contect_Assign_State"> |
181 | + <blockAlignment value="LEFT"/> |
182 | + <blockValign value="TOP"/> |
183 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/> |
184 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/> |
185 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/> |
186 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/> |
187 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/> |
188 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/> |
189 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/> |
190 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/> |
191 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/> |
192 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/> |
193 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/> |
194 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/> |
195 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="4,0" stop="4,-1"/> |
196 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="4,0" stop="4,0"/> |
197 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="4,-1" stop="4,-1"/> |
198 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="5,0" stop="5,-1"/> |
199 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="5,0" stop="5,0"/> |
200 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="5,-1" stop="5,-1"/> |
201 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="6,0" stop="6,-1"/> |
202 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="6,0" stop="6,0"/> |
203 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="6,-1" stop="6,-1"/> |
204 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="7,0" stop="7,-1"/> |
205 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="7,0" stop="7,0"/> |
206 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="7,-1" stop="7,-1"/> |
207 | + <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="8,0" stop="8,-1"/> |
208 | + <lineStyle kind="LINEAFTER" colorName="#cccccc" start="8,0" stop="8,-1"/> |
209 | + <lineStyle kind="LINEABOVE" colorName="#cccccc" start="8,0" stop="8,0"/> |
210 | + <lineStyle kind="LINEBELOW" colorName="#cccccc" start="8,-1" stop="8,-1"/> |
211 | + </blockTableStyle> |
212 | + <initialize> |
213 | + <paraStyle name="all" alignment="justify"/> |
214 | + </initialize> |
215 | + <paraStyle name="P1" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
216 | + <paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
217 | + <paraStyle name="P3" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
218 | + <paraStyle name="P4" fontName="Helvetica-Bold" fontSize="11.0" leading="14" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
219 | + <paraStyle name="P5" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
220 | + <paraStyle name="P6" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
221 | + <paraStyle name="P7" fontName="Helvetica-Bold" fontSize="7.0" leading="9" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
222 | + <paraStyle name="P8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
223 | + <paraStyle name="P9" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
224 | + <paraStyle name="P10" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
225 | + <paraStyle name="Standard" fontName="Helvetica"/> |
226 | + <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/> |
227 | + <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
228 | + <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
229 | + <paraStyle name="Caption" fontName="Helvetica-Oblique" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/> |
230 | + <paraStyle name="Index" fontName="Helvetica"/> |
231 | + <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
232 | + <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
233 | + <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
234 | + <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
235 | + <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
236 | + <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
237 | + <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
238 | + <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
239 | + <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
240 | + <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
241 | + <paraStyle name="Table Contents" fontName="Helvetica"/> |
242 | + <paraStyle name="Footer" fontName="Helvetica"/> |
243 | + <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/> |
244 | + <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
245 | + <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
246 | + <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
247 | + <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
248 | + <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
249 | + <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
250 | + <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
251 | + <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
252 | + <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
253 | + <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
254 | + <paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
255 | + <paraStyle name="terp_default_5cm_Above_Space" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="0.0"/> |
256 | + <paraStyle name="terp_default_1cm_above_space" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="3.0" spaceAfter="0.0"/> |
257 | + <images/> |
258 | + </stylesheet> |
259 | + <story> |
260 | + <para style="P3">[[ repeatIn(data['form'], 'o') ]]</para> |
261 | + <para style="P3">[[ setLang(o['lang']) ]]</para> |
262 | + <para style="P3"> |
263 | + <font color="white"> </font> |
264 | + </para> |
265 | + <blockTable colWidths="269.0,269.0" style="Table_Address_detail"> |
266 | + <tr> |
267 | + <td> |
268 | + <para style="P5"> |
269 | + <font color="white"> </font> |
270 | + </para> |
271 | + </td> |
272 | + <td> |
273 | + <para style="terp_header">Kartica kupca</para> |
274 | + </td> |
275 | + </tr> |
276 | + </blockTable> |
277 | + <blockTable colWidths="264.0,273.0" style="Table2"> |
278 | + <tr> |
279 | + <td> |
280 | + <para style="P4"> |
281 | + <font color="white"> </font> |
282 | + </para> |
283 | + <para style="P4">[[ o['address_name'] ]]</para> |
284 | + <para style="P4">[[ o['address_street'] ]]</para> |
285 | + <para style="P4"> |
286 | + <font color="white"> </font> |
287 | + </para> |
288 | + <para style="P4">[[ o['address_zip'] ]] [[ o['address_city'] ]]</para> |
289 | + </td> |
290 | + <td> |
291 | + <blockTable colWidths="101.0,167.0" style="Table_picking_info"> |
292 | + <tr> |
293 | + <td> |
294 | + <para style="P1">Konto:</para> |
295 | + </td> |
296 | + <td> |
297 | + <para style="P1">[[ o['account'] ]]</para> |
298 | + </td> |
299 | + </tr> |
300 | + <tr> |
301 | + <td> |
302 | + <para style="P1">Obdobje:</para> |
303 | + </td> |
304 | + <td> |
305 | + <para style="P1">[[ o['period'] ]]</para> |
306 | + </td> |
307 | + </tr> |
308 | + <tr> |
309 | + <td> |
310 | + <para style="P1"> |
311 | + <font color="white"> </font> |
312 | + </para> |
313 | + </td> |
314 | + <td> |
315 | + <para style="P1"> |
316 | + <font color="white"> </font> |
317 | + </para> |
318 | + </td> |
319 | + </tr> |
320 | + <tr> |
321 | + <td> |
322 | + <para style="P1">Skupaj debet:</para> |
323 | + </td> |
324 | + <td> |
325 | + <para style="P1">[[ o['sum_debit'] ]]</para> |
326 | + </td> |
327 | + </tr> |
328 | + <tr> |
329 | + <td> |
330 | + <para style="P1">Skupaj kredit:</para> |
331 | + </td> |
332 | + <td> |
333 | + <para style="P1">[[ o['sum_credit'] ]]</para> |
334 | + </td> |
335 | + </tr> |
336 | + </blockTable> |
337 | + <para style="P6"> |
338 | + <font color="white"> </font> |
339 | + </para> |
340 | + </td> |
341 | + </tr> |
342 | + </blockTable> |
343 | + <para style="terp_default_5cm_Above_Space"/> |
344 | + <para style="terp_default_5cm_Above_Space"> |
345 | + <font color="white"> </font> |
346 | + </para> |
347 | + <blockTable colWidths="85.0,85.0,57.0,57.0,51.0,51.0,51.0,40.0,41.0" repeatRows="1" style="Table1"> |
348 | + <tr> |
349 | + <td> |
350 | + <para style="P8">Račun</para> |
351 | + <para style="P8"> |
352 | + <font color="white"> </font> |
353 | + </para> |
354 | + </td> |
355 | + <td> |
356 | + <para style="P8">Temeljnica</para> |
357 | + </td> |
358 | + <td> |
359 | + <para style="P8">Dat. dog.</para> |
360 | + </td> |
361 | + <td> |
362 | + <para style="P9">Dat. val.</para> |
363 | + </td> |
364 | + <td> |
365 | + <para style="P9">Debet</para> |
366 | + </td> |
367 | + <td> |
368 | + <para style="P9">Kredit</para> |
369 | + </td> |
370 | + <td> |
371 | + <para style="P9">Saldo</para> |
372 | + </td> |
373 | + <td> |
374 | + <para style="P9">Rec.</para> |
375 | + </td> |
376 | + <td> |
377 | + <para style="P9">Partial_rec.</para> |
378 | + </td> |
379 | + </tr> |
380 | + </blockTable> |
381 | + <section> |
382 | + <para style="P2"> |
383 | + <font face="Helvetica" size="8.0">[[ repeatIn(o['moves'], 'line') ]]</font> |
384 | + </para> |
385 | + <blockTable colWidths="86.0,85.0,57.0,57.0,51.0,51.0,51.0,40.0,40.0" style="Move_Line_Contect_Assign_State"> |
386 | + <tr> |
387 | + <td> |
388 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['document'] ]]</para> |
389 | + </td> |
390 | + <td> |
391 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['move'] ]]</para> |
392 | + </td> |
393 | + <td> |
394 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['date'] ]]</para> |
395 | + </td> |
396 | + <td> |
397 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['date_due'] ]]</para> |
398 | + </td> |
399 | + <td> |
400 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['debit'] ]]</para> |
401 | + </td> |
402 | + <td> |
403 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['credit'] ]]</para> |
404 | + </td> |
405 | + <td> |
406 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['saldo'] ]]</para> |
407 | + </td> |
408 | + <td> |
409 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['reconcile'] ]]</para> |
410 | + </td> |
411 | + <td> |
412 | + <para style="P7">[[ (line[1]['document']=='-->' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]] [[ line[1]['reconcile_part'] ]]</para> |
413 | + </td> |
414 | + </tr> |
415 | + </blockTable> |
416 | + </section> |
417 | + <para style="terp_default_Bold_9"> |
418 | + <font color="white"> </font> |
419 | + </para> |
420 | + <para style="terp_default_9"> |
421 | + <font color="white"> </font> |
422 | + </para> |
423 | + </story> |
424 | +</document> |
425 | |
426 | === added file 'account_receivables_payables/report/rec_pay_report.sxw' |
427 | Binary files account_receivables_payables/report/rec_pay_report.sxw 1970-01-01 00:00:00 +0000 and account_receivables_payables/report/rec_pay_report.sxw 2014-04-29 12:39:30 +0000 differ |
428 | === added directory 'account_receivables_payables/wizard' |
429 | === added file 'account_receivables_payables/wizard/__init__.py' |
430 | --- account_receivables_payables/wizard/__init__.py 1970-01-01 00:00:00 +0000 |
431 | +++ account_receivables_payables/wizard/__init__.py 2014-04-29 12:39:30 +0000 |
432 | @@ -0,0 +1,22 @@ |
433 | +# -*- coding: utf-8 -*- |
434 | +############################################################################## |
435 | +# |
436 | +# OpenERP, Open Source Management Solution |
437 | +# Copyright (C) 2014 Mentis d.o.o. |
438 | +# |
439 | +# This program is free software: you can redistribute it and/or modify |
440 | +# it under the terms of the GNU Affero General Public License as |
441 | +# published by the Free Software Foundation, either version 3 of the |
442 | +# License, or (at your option) any later version. |
443 | +# |
444 | +# This program is distributed in the hope that it will be useful, |
445 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
446 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
447 | +# GNU Affero General Public License for more details. |
448 | +# |
449 | +# You should have received a copy of the GNU Affero General Public License |
450 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
451 | +# |
452 | +############################################################################## |
453 | + |
454 | +import rec_pay_wizard |
455 | |
456 | === added file 'account_receivables_payables/wizard/rec_pay_wizard (copy).py' |
457 | --- account_receivables_payables/wizard/rec_pay_wizard (copy).py 1970-01-01 00:00:00 +0000 |
458 | +++ account_receivables_payables/wizard/rec_pay_wizard (copy).py 2014-04-29 12:39:30 +0000 |
459 | @@ -0,0 +1,182 @@ |
460 | +# -*- coding: utf-8 -*- |
461 | +############################################################################## |
462 | +# |
463 | +# OpenERP, Open Source Management Solution |
464 | +# Copyright (C) 2014 Mentis d.o.o. |
465 | +# |
466 | +# This program is free software: you can redistribute it and/or modify |
467 | +# it under the terms of the GNU Affero General Public License as |
468 | +# published by the Free Software Foundation, either version 3 of the |
469 | +# License, or (at your option) any later version. |
470 | +# |
471 | +# This program is distributed in the hope that it will be useful, |
472 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
473 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
474 | +# GNU Affero General Public License for more details. |
475 | +# |
476 | +# You should have received a copy of the GNU Affero General Public License |
477 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
478 | +# |
479 | +############################################################################## |
480 | + |
481 | +##### |
482 | +# Wizard trigers a report, that shows a receivable & payable card of customer |
483 | +##### |
484 | + |
485 | + |
486 | +from osv import fields, osv |
487 | +from tools.translate import _ |
488 | +import time |
489 | + |
490 | +class receivable_payable_wizard(osv.osv_memory): |
491 | + _name = "receivable.payable.wizard" |
492 | + _description = "Receivable Payable Wizard" |
493 | + |
494 | + def _get_fiscalyear(self, cr, uid, context=None): |
495 | + """Return default Fiscalyear value""" |
496 | + return self.pool.get('account.fiscalyear').find(cr, uid, context=context) |
497 | + |
498 | + _columns = { |
499 | + 'account': fields.selection([('payable','Payable'), |
500 | + ('receivable','Receivable'), |
501 | + ('payable,receivable','Payable & Receivable'),], 'Account', required=True), |
502 | + 'fiscalyear': fields.many2one('account.fiscalyear', \ |
503 | + 'Fiscal year', \ |
504 | + help='Keep empty for all open fiscal years'), |
505 | + 'period_from': fields.many2one('account.period', 'Start period'), |
506 | + 'period_to': fields.many2one('account.period', 'End period'), |
507 | + } |
508 | + _defaults = { |
509 | + 'fiscalyear': _get_fiscalyear, |
510 | + } |
511 | + |
512 | + def onchange_fiscalyear(self, cr, uid, ids, fiscalyear_id=False, context=None): |
513 | + res = {} |
514 | + if fiscalyear_id: |
515 | + start_period = end_period = False |
516 | + cr.execute(''' |
517 | + SELECT * FROM (SELECT p.id |
518 | + FROM account_period p |
519 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
520 | + WHERE f.id = %s |
521 | + ORDER BY p.date_start ASC |
522 | + LIMIT 1) AS period_start |
523 | + UNION ALL |
524 | + SELECT * FROM (SELECT p.id |
525 | + FROM account_period p |
526 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
527 | + WHERE f.id = %s |
528 | + AND p.date_start < NOW() |
529 | + ORDER BY p.date_stop DESC |
530 | + LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id)) |
531 | + periods = [i[0] for i in cr.fetchall()] |
532 | + if periods and len(periods) > 1: |
533 | + start_period = periods[0] |
534 | + end_period = periods[1] |
535 | + res['value'] = {'period_from': start_period, 'period_to': end_period} |
536 | + else: |
537 | + res['value'] = {'period_from': False, 'period_to': False} |
538 | + return res |
539 | + |
540 | + def execute(self, cr, uid, ids, context=None): |
541 | + if context is None: |
542 | + context = {} |
543 | + |
544 | + #copy_num = self.browse(cr,uid,ids)[0].copy_num |
545 | + active_ids = context.get('active_ids',[]) |
546 | + data = self.read(cr, uid, ids, [], context=context)[0] |
547 | + account = data.get('account', False) and data['account'] or False |
548 | + period_from = data.get('period_from', False) and data['period_from'][0] or False |
549 | + period_from_desc = data.get('period_from', False) and data['period_from'][1] or False |
550 | + period_to = data.get('period_to', False) and data['period_to'][0] or False |
551 | + period_to_desc = data.get('period_to', False) and data['period_to'][1] or False |
552 | + period_ids = self.pool.get('account.period').build_ctx_periods(cr, uid, period_from, period_to) |
553 | + |
554 | + |
555 | + |
556 | + partner_obj = self.pool.get('res.partner') |
557 | + invoice_obj = self.pool.get('account.invoice') |
558 | + list_data = [] |
559 | + i = 1 |
560 | + |
561 | + for partner in partner_obj.browse(cr, uid, active_ids): |
562 | + dict_moves = {} |
563 | + |
564 | + invoice_ids = invoice_obj.search(cr, uid, [ |
565 | + ('partner_id','=',partner.id), |
566 | + ('period_id','in',period_ids), |
567 | + ('account_id.type','in',[account]), |
568 | + ], order='number desc') |
569 | + for inv_line in invoice_obj.browse(cr, uid, invoice_ids): #za vsak strankin racun preverimo placila |
570 | + |
571 | +# if inv_line.move_id.id in dict_moves: #dokument je ze zapisan/uporabljen v temeljnici |
572 | +# continue |
573 | + |
574 | + dict_temp = {} |
575 | + dict_temp['invoice'] = inv_line.number |
576 | + dict_temp['move'] = '' |
577 | + dict_temp['date'] = inv_line.date_invoice |
578 | + dict_temp['date_due'] = inv_line.date_due |
579 | + dict_temp['debit'] = inv_line.amount_total |
580 | + dict_temp['credit'] = '' |
581 | + dict_temp['saldo'] = '' |
582 | + dict_temp['sort'] = i |
583 | + #dict_moves[i] = dict_temp |
584 | + dict_moves[inv_line.move_id.id] = dict_temp |
585 | + i = i+1 |
586 | + |
587 | + temp_ids = invoice_obj._compute_lines(cr, uid, [inv_line.id], None, None) #placila za dano fakturo |
588 | + payment_ids = temp_ids.values()[0] |
589 | + |
590 | + #omejitev po periodi |
591 | + payment_ids = self.pool.get('account.move.line').search(cr, uid, [ |
592 | + ('id','in',payment_ids), |
593 | + ('period_id','in',period_ids)]) |
594 | + |
595 | + j = len(payment_ids) |
596 | + for account_line in self.pool.get('account.move.line').browse(cr, uid, payment_ids): |
597 | + dict_temp = {} |
598 | + dict_temp['invoice'] = '-->' |
599 | + dict_temp['move'] = account_line.move_id.name |
600 | + dict_temp['date'] = account_line.date |
601 | + dict_temp['date_due'] = account_line.date |
602 | + dict_temp['debit'] = '' |
603 | + |
604 | + if account_line.credit > 0: |
605 | + dict_temp['credit'] = account_line.credit |
606 | + else: |
607 | + dict_temp['credit'] = account_line.debit |
608 | + |
609 | + if j == 1: |
610 | + if account_line.amount_to_pay == 0: |
611 | + dict_temp['saldo'] = '0' |
612 | + else: |
613 | + dict_temp['saldo'] = abs(account_line.amount_to_pay) |
614 | + else: |
615 | + dict_temp['saldo'] = '' |
616 | + |
617 | + dict_temp['sort'] = i |
618 | + #dict_moves[i] = dict_temp |
619 | + dict_moves[account_line.move_id.id] = dict_temp |
620 | + i = i+1 |
621 | + j = j-1 |
622 | + |
623 | + sorted_list = sorted(dict_moves.iteritems(), key=lambda (x, y): y['sort']) |
624 | + |
625 | + dict_data = {} |
626 | + dict_data['moves'] = sorted_list |
627 | + dict_data['address_name'] = partner.name |
628 | + dict_data['address_street'] = partner.street |
629 | + dict_data['address_zip'] = partner.zip |
630 | + dict_data['address_city'] = partner.city |
631 | + dict_data['lang'] = partner.lang |
632 | + dict_data['account'] = account |
633 | + dict_data['period'] = period_from_desc + ' - ' + period_to_desc |
634 | + |
635 | + list_data.append(dict_data) |
636 | + |
637 | + data = {'form':list_data} |
638 | + return {'type': 'ir.actions.report.xml', 'report_name': 'receivable.payable.report', 'datas': data} |
639 | + |
640 | +receivable_payable_wizard() |
641 | + |
642 | |
643 | === added file 'account_receivables_payables/wizard/rec_pay_wizard.py' |
644 | --- account_receivables_payables/wizard/rec_pay_wizard.py 1970-01-01 00:00:00 +0000 |
645 | +++ account_receivables_payables/wizard/rec_pay_wizard.py 2014-04-29 12:39:30 +0000 |
646 | @@ -0,0 +1,297 @@ |
647 | +# -*- coding: utf-8 -*- |
648 | +############################################################################## |
649 | +# |
650 | +# OpenERP, Open Source Management Solution |
651 | +# Copyright (C) 2014 Mentis d.o.o. |
652 | +# |
653 | +# This program is free software: you can redistribute it and/or modify |
654 | +# it under the terms of the GNU Affero General Public License as |
655 | +# published by the Free Software Foundation, either version 3 of the |
656 | +# License, or (at your option) any later version. |
657 | +# |
658 | +# This program is distributed in the hope that it will be useful, |
659 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
660 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
661 | +# GNU Affero General Public License for more details. |
662 | +# |
663 | +# You should have received a copy of the GNU Affero General Public License |
664 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
665 | +# |
666 | +############################################################################## |
667 | + |
668 | +##### |
669 | +# Wizard trigers a report, that shows a receivable & payable card of customer |
670 | +##### |
671 | + |
672 | + |
673 | +from osv import fields, osv |
674 | +from tools.translate import _ |
675 | +import time |
676 | + |
677 | +class receivable_payable_wizard(osv.osv_memory): |
678 | + _name = "receivable.payable.wizard" |
679 | + _description = "Receivable Payable Wizard" |
680 | + |
681 | + def _get_fiscalyear(self, cr, uid, context=None): |
682 | + """Return default Fiscalyear value""" |
683 | + return self.pool.get('account.fiscalyear').find(cr, uid, context=context) |
684 | + |
685 | + _columns = { |
686 | + 'account': fields.selection([('payable','Payable'), |
687 | + ('receivable','Receivable')], 'Account', required=True), |
688 | + 'reconcile': fields.selection([('full','Reconciled'), |
689 | + ('partial','Partial')], 'Reconcile'), |
690 | + 'filter': fields.selection([('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter date by"), |
691 | + 'fiscalyear_id': fields.many2one('account.fiscalyear', \ |
692 | + 'Fiscal year', \ |
693 | + help='Keep empty for all open fiscal years'), |
694 | + 'period_from': fields.many2one('account.period', 'Start period'), |
695 | + 'period_to': fields.many2one('account.period', 'End period'), |
696 | + 'date_from': fields.date("Start Date"), |
697 | + 'date_to': fields.date("End Date"), |
698 | + 'sort': fields.selection([('name','Name'), |
699 | + ('date','Date')], 'Sort'), |
700 | + } |
701 | + _defaults = { |
702 | + 'account': 'receivable', |
703 | + 'fiscalyear_id': _get_fiscalyear, |
704 | + } |
705 | + |
706 | + def onchange_fiscalyear(self, cr, uid, ids, fiscalyear_id=False, context=None): |
707 | + res = {} |
708 | + if fiscalyear_id: |
709 | + start_period = end_period = False |
710 | + cr.execute(''' |
711 | + SELECT * FROM (SELECT p.id |
712 | + FROM account_period p |
713 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
714 | + WHERE f.id = %s |
715 | + ORDER BY p.date_start ASC |
716 | + LIMIT 1) AS period_start |
717 | + UNION ALL |
718 | + SELECT * FROM (SELECT p.id |
719 | + FROM account_period p |
720 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
721 | + WHERE f.id = %s |
722 | + AND p.date_start < NOW() |
723 | + ORDER BY p.date_stop DESC |
724 | + LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id)) |
725 | + periods = [i[0] for i in cr.fetchall()] |
726 | + if periods and len(periods) > 1: |
727 | + start_period = periods[0] |
728 | + end_period = periods[1] |
729 | + res['value'] = {'period_from': start_period, 'period_to': end_period} |
730 | + else: |
731 | + res['value'] = {'period_from': False, 'period_to': False} |
732 | + return res |
733 | + |
734 | + def onchange_filter(self, cr, uid, ids, filter='filter_no', fiscalyear_id=False, context=None): |
735 | + res = {'value': {}} |
736 | + if not filter: |
737 | + res['value'] = {'period_from': False, 'period_to': False, 'date_from': False ,'date_to': False} |
738 | + if filter == 'filter_date': |
739 | + res['value'] = {'reconcile': False, 'period_from': False, 'period_to': False, 'date_from': time.strftime('%Y-01-01'), 'date_to': time.strftime('%Y-%m-%d')} |
740 | + if filter == 'filter_period' and fiscalyear_id: |
741 | + start_period = end_period = False |
742 | + cr.execute(''' |
743 | + SELECT * FROM (SELECT p.id |
744 | + FROM account_period p |
745 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
746 | + WHERE f.id = %s |
747 | + AND p.special = false |
748 | + ORDER BY p.date_start ASC, p.special ASC |
749 | + LIMIT 1) AS period_start |
750 | + UNION ALL |
751 | + SELECT * FROM (SELECT p.id |
752 | + FROM account_period p |
753 | + LEFT JOIN account_fiscalyear f ON (p.fiscalyear_id = f.id) |
754 | + WHERE f.id = %s |
755 | + AND p.date_start < NOW() |
756 | + AND p.special = false |
757 | + ORDER BY p.date_stop DESC |
758 | + LIMIT 1) AS period_stop''', (fiscalyear_id, fiscalyear_id)) |
759 | + periods = [i[0] for i in cr.fetchall()] |
760 | + if periods and len(periods) > 1: |
761 | + start_period = periods[0] |
762 | + end_period = periods[1] |
763 | + res['value'] = {'reconcile': False, 'period_from': start_period, 'period_to': end_period, 'date_from': False, 'date_to': False} |
764 | + return res |
765 | + |
766 | + def execute(self, cr, uid, ids, context=None): |
767 | + if context is None: |
768 | + context = {} |
769 | + |
770 | + active_ids = context.get('active_ids',[]) |
771 | + data = self.read(cr, uid, ids, [], context=context)[0] |
772 | + db_account = data.get('account', False) and data['account'] or False |
773 | + if db_account == 'payable': |
774 | + db_debcred = 'credit' |
775 | + else: |
776 | + db_debcred = 'debit' |
777 | + |
778 | + reconcile = data.get('reconcile', False) and data['reconcile'] or False |
779 | + if reconcile == 'full': |
780 | + db_reconcile = 'reconcile_id' |
781 | + elif reconcile == 'partial': |
782 | + db_reconcile = 'reconcile_partial_id' |
783 | + else: |
784 | + db_reconcile = 'AML.id' |
785 | + |
786 | + period_from = data.get('period_from', False) and data['period_from'][0] or False |
787 | + period_from_desc = data.get('period_from', False) and data['period_from'][1] or False |
788 | + period_to = data.get('period_to', False) and data['period_to'][0] or False |
789 | + period_to_desc = data.get('period_to', False) and data['period_to'][1] or False |
790 | + period_ids = self.pool.get('account.period').build_ctx_periods(cr, uid, period_from, period_to) |
791 | + |
792 | + db_sort = data.get('sort', False) and data['sort'] or False |
793 | + if not db_sort: |
794 | + db_sort = 'AML.id' |
795 | + |
796 | + #Date Filter |
797 | + db_filter = data.get('filter', False) and data['filter'] or False |
798 | + if not db_filter: |
799 | + db_date_period = '' |
800 | + elif db_filter == 'filter_date': |
801 | + db_date_from = data.get('date_from', False) and data['date_from'] or False |
802 | + db_date_to = data.get('date_to', False) and data['date_to'] or False |
803 | + db_date_period = 'AND AML.date >= \'{0}\' AND AML.date <= \'{1}\''.format(db_date_from, db_date_to) |
804 | + elif db_filter == 'filter_period': |
805 | + period_str = ','.join(str(x) for x in period_ids) |
806 | + db_date_period = 'AND AML.period_id in ({0})'.format(period_str) |
807 | + |
808 | + |
809 | + partner_obj = self.pool.get('res.partner') |
810 | + acc_move_line_obj = self.pool.get('account.move.line') |
811 | + list_data = [] |
812 | + i = 1 |
813 | + |
814 | + for partner in partner_obj.browse(cr, uid, active_ids): |
815 | + dict_moves = {} |
816 | + |
817 | + query_string = """SELECT |
818 | + AML.id, |
819 | + AML.date, |
820 | + CASE |
821 | + WHEN AM.name LIKE \'OTV-%\' |
822 | + THEN AML.name |
823 | + ELSE AM.name |
824 | + end as name |
825 | + FROM account_move_line AML |
826 | + LEFT JOIN account_move AM on AML.move_id = AM.id |
827 | + LEFT JOIN account_account AA on AML.account_id = AA.id |
828 | + WHERE |
829 | + AML.partner_id = {0} |
830 | + AND AA.type in (\'{1}\') |
831 | + AND {2} > 0 |
832 | + AND {3} is not null |
833 | + {4} |
834 | + ORDER BY {5}""".format(partner.id, db_account, db_debcred, db_reconcile, db_date_period, db_sort) |
835 | + |
836 | + cr.execute(query_string) |
837 | + res_ids = [(r[0]) for r in cr.fetchall()] |
838 | + |
839 | +# acc_move_line_ids = acc_move_line_obj.search(cr, uid, [ |
840 | +# ('partner_id','=',partner.id), X |
841 | +# ('period_id','in',period_ids), |
842 | +# ('account_id.type','in',[account]), X |
843 | +# (db_debcred, '>',0), X |
844 | +# (db_reconcile, '!=', None) X |
845 | +# ], order=db_sort) X |
846 | + |
847 | + sum_debit = 0 |
848 | + sum_credit = 0 |
849 | + for move_line in acc_move_line_obj.browse(cr, uid, res_ids): #za vsak strankin racun preverimo placila |
850 | + |
851 | + dict_temp = {} |
852 | + if move_line.move_id.name[:3] == "OTV": |
853 | + dict_temp['document'] = move_line.name |
854 | + else: |
855 | + dict_temp['document'] = move_line.move_id.name |
856 | + dict_temp['move'] = '' |
857 | + dict_temp['date'] = move_line.date |
858 | + dict_temp['date_due'] = move_line.date_maturity |
859 | + dict_temp['debit'] = move_line.debit |
860 | + sum_debit = sum_debit + move_line.debit |
861 | + dict_temp['credit'] = move_line.credit |
862 | + dict_temp['saldo'] = '' |
863 | + dict_temp['reconcile'] = move_line.reconcile_id.id |
864 | + dict_temp['reconcile_part'] = move_line.reconcile_partial_id.id |
865 | + dict_temp['sort'] = i |
866 | + dict_moves[i] = dict_temp |
867 | + #dict_moves[move_line.id] = dict_temp |
868 | + i = i+1 |
869 | + |
870 | + if not move_line.reconcile_id.id and not move_line.reconcile_partial_id.id: |
871 | + continue |
872 | + |
873 | + |
874 | + #-----------------------------Poiscemo placila, ki ustrezajo izbranim dokumetom------------------- |
875 | + query_lst = [('reconcile_id','=',move_line.reconcile_id.id), |
876 | + ('reconcile_partial_id','=',move_line.reconcile_partial_id.id), |
877 | + ('id','!=',move_line.id)] |
878 | + if db_filter == 'filter_date': |
879 | + query_lst.append(('date','>',db_date_from)) |
880 | + query_lst.append(('date','<',db_date_to)) |
881 | + elif db_filter == 'filter_period': |
882 | + query_lst.append(('period_id','in',period_ids)) |
883 | + payment_ids = self.pool.get('account.move.line').search(cr, uid, query_lst) |
884 | + |
885 | + j = len(payment_ids) |
886 | + sub_sum_credit = 0 |
887 | + for account_line in self.pool.get('account.move.line').browse(cr, uid, payment_ids): |
888 | + dict_temp = {} |
889 | + dict_temp['document'] = '-->' |
890 | + dict_temp['move'] = account_line.move_id.name |
891 | + dict_temp['date'] = account_line.date |
892 | + dict_temp['date_due'] = account_line.date |
893 | + dict_temp['debit'] = '' |
894 | + |
895 | + if account_line.credit > 0: |
896 | + dict_temp['credit'] = account_line.credit |
897 | + sum_credit = sum_credit + account_line.credit |
898 | + sub_sum_credit = sub_sum_credit + account_line.credit |
899 | + else: |
900 | + dict_temp['credit'] = account_line.debit |
901 | + sum_credit = sum_credit + account_line.debit |
902 | + sub_sum_credit = sub_sum_credit + account_line.debit |
903 | + |
904 | + if j == 1: |
905 | + dict_temp['saldo'] = str(round(move_line.debit - sub_sum_credit,2)) |
906 | + else: |
907 | + dict_temp['saldo'] = '' |
908 | + |
909 | + dict_temp['reconcile'] = account_line.reconcile_id.id |
910 | + dict_temp['reconcile_part'] = account_line.reconcile_partial_id.id |
911 | + dict_temp['sort'] = i |
912 | + dict_moves[i] = dict_temp |
913 | + #dict_moves[account_line.move_id.id] = dict_temp |
914 | + i = i+1 |
915 | + j = j-1 |
916 | + |
917 | + |
918 | + sorted_list = sorted(dict_moves.iteritems(), key=lambda (x, y): y['sort']) |
919 | + |
920 | + dict_data = {} |
921 | + dict_data['moves'] = sorted_list |
922 | + dict_data['address_name'] = partner.name |
923 | + dict_data['address_street'] = partner.street |
924 | + dict_data['address_zip'] = partner.zip |
925 | + dict_data['address_city'] = partner.city |
926 | + dict_data['lang'] = partner.lang |
927 | + dict_data['account'] = db_account |
928 | + if not db_filter: |
929 | + dict_data['period'] = '' |
930 | + elif db_filter == 'filter_date': |
931 | + dict_data['period'] = db_date_from + ' - ' + db_date_to |
932 | + elif db_filter == 'filter_period': |
933 | + dict_data['period'] = period_from_desc + ' - ' + period_to_desc |
934 | + dict_data['sum_debit'] = sum_debit |
935 | + dict_data['sum_credit'] = sum_credit |
936 | + |
937 | + list_data.append(dict_data) |
938 | + |
939 | + data = {'form':list_data} |
940 | + return {'type': 'ir.actions.report.xml', 'report_name': 'receivable.payable.report', 'datas': data} |
941 | + |
942 | +receivable_payable_wizard() |
943 | + |
944 | |
945 | === added file 'account_receivables_payables/wizard/rec_pay_wizard_view.xml' |
946 | --- account_receivables_payables/wizard/rec_pay_wizard_view.xml 1970-01-01 00:00:00 +0000 |
947 | +++ account_receivables_payables/wizard/rec_pay_wizard_view.xml 2014-04-29 12:39:30 +0000 |
948 | @@ -0,0 +1,49 @@ |
949 | +<?xml version="1.0" encoding="utf-8"?> |
950 | +<openerp> |
951 | + <data> |
952 | + <record id="receivable_payable_wizard_view" model="ir.ui.view"> |
953 | + <field name="name">Receivable Payable Card</field> |
954 | + <field name="model">receivable.payable.wizard</field> |
955 | + <field name="arch" type="xml"> |
956 | + <form string="Receivable Payable Card - view" version="7.0"> |
957 | + <group colspan="4"> |
958 | + <group> |
959 | + <field name="account"/> |
960 | + <field name="reconcile" attrs="{'invisible':['|',('filter','=','filter_date'),('filter','=','filter_period')]}"/> |
961 | + </group> |
962 | + <group> |
963 | + <field name="filter" on_change="onchange_filter(filter, fiscalyear_id)"/> |
964 | + <field name="sort"/> |
965 | + </group> |
966 | + </group> |
967 | + <group string="Dates" attrs="{'invisible':[('filter','!=','filter_date')], 'required':[('filter', '=', 'filter_date')]}"> |
968 | + <field name="date_from"/> |
969 | + <field name="date_to"/> |
970 | + </group> |
971 | + <group string="Periods" attrs="{'invisible':[('filter','!=','filter_period')], 'required':[('filter', '=', 'filter_period')]}"> |
972 | + <field name="fiscalyear_id" on_change="onchange_fiscalyear(fiscalyear_id)" /> |
973 | + <field name="period_from"/> |
974 | + <field name="period_to"/> |
975 | + </group> |
976 | + |
977 | + <footer> |
978 | + <button name="execute" string="Natisni" type="object" class="oe_highlight"/> |
979 | + or |
980 | + <button special="cancel" string="Prekliči" class="oe_link"/> |
981 | + </footer> |
982 | + </form> |
983 | + </field> |
984 | + </record> |
985 | + |
986 | + <act_window name="Pay Rec" |
987 | + res_model="receivable.payable.wizard" |
988 | + src_model="res.partner" |
989 | + view_mode="form" |
990 | + target="new" |
991 | + key2="client_action_multi" |
992 | + id="action_receivable_payable"/> |
993 | + <!-- |
994 | + <menuitem action="action_sale_orders_journal" id="menu_sale_orders_journal" parent="base.menu_sales" sequence="10"/> |
995 | + --> |
996 | + </data> |
997 | +</openerp> |