Merge lp:~vauxoo/openerp-vauxoo-gbw/gbw_payment_customer_report_dev_jorge2 into lp:openerp-vauxoo-gbw/6.0

Status: Needs review
Proposed branch: lp:~vauxoo/openerp-vauxoo-gbw/gbw_payment_customer_report_dev_jorge2
Merge into: lp:openerp-vauxoo-gbw/6.0
Diff against target: 503 lines (+429/-3)
9 files modified
gbwinvoice_report_webkit/__openerp__.py (+2/-1)
gbwinvoice_report_webkit/data.xml (+172/-0)
gbwinvoice_report_webkit/gbwinvoice_report_webkit_view.xml (+17/-1)
gbwinvoice_report_webkit/report/__init__.py (+1/-1)
gbwinvoice_report_webkit/report/parser.py (+93/-0)
gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako (+60/-0)
gbwinvoice_report_webkit/wizard/__init__.py (+1/-0)
gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard.py (+43/-0)
gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard_view.xml (+40/-0)
To merge this branch: bzr merge lp:~vauxoo/openerp-vauxoo-gbw/gbw_payment_customer_report_dev_jorge2
Reviewer Review Type Date Requested Status
Jorge Angel Naranjo Rogel - http://www.vauxoo.com Pending
Review via email: mp+258295@code.launchpad.net
To post a comment you must log in.
7. By Jorge Angel Naranjo Rogel - http://www.vauxoo.com

[IMP][gbwinvoice_report_webkit] Fixed __openerp__.py

Unmerged revisions

7. By Jorge Angel Naranjo Rogel - http://www.vauxoo.com

[IMP][gbwinvoice_report_webkit] Fixed __openerp__.py

6. By Jorge Angel Naranjo Rogel - http://www.vauxoo.com

[IMP][gbwinvoice_report_webkit] Added new report for payments history of customers

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'gbwinvoice_report_webkit/__openerp__.py'
2--- gbwinvoice_report_webkit/__openerp__.py 2013-06-14 03:05:12 +0000
3+++ gbwinvoice_report_webkit/__openerp__.py 2015-05-05 18:36:53 +0000
4@@ -68,7 +68,8 @@
5 ],
6 "init_xml" : ['wizard/gbwinvoice_report_webkit_wizard_view.xml',
7 'wizard/gbwcategory_report_webkit_wizard_view.xml',
8- 'wizard/gbwcategoryaportacion_report_webkit_wizard_view.xml'],
9+ 'wizard/gbwcategoryaportacion_report_webkit_wizard_view.xml',
10+ "wizard/paymentpartner_report_webkit_wizard_view.xml"],
11 "installable" : True,
12 "active" : False,
13 "certificate" : "",
14
15=== modified file 'gbwinvoice_report_webkit/data.xml'
16--- gbwinvoice_report_webkit/data.xml 2013-06-04 18:45:14 +0000
17+++ gbwinvoice_report_webkit/data.xml 2015-05-05 18:36:53 +0000
18@@ -313,6 +313,178 @@
19 <field eval="&quot;&quot;&quot;GBW Invoice NO Header&quot;&quot;&quot;" name="name"/>
20 </record>
21
22+<!-- Normal GBW Header Only Logo !-->
23+
24+ <record id="ir_header_only_logo_gbw" model="ir.header_webkit">
25+ <field name="footer_html"><![CDATA[<html>
26+ <head>
27+ <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
28+ <script>
29+ function subst() {
30+ var vars={};
31+ var x=document.location.search.substring(1).split('&');
32+ for(var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
33+ var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
34+ for(var i in x) {
35+ var y = document.getElementsByClassName(x[i]);
36+ for(var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
37+ }
38+ }
39+ </script>
40+ </head>
41+ <body style="border:0; margin: 0;" onload="subst()">
42+ <table style="border-top: 1px solid black; width: 100%">
43+ <tr >
44+ <td style="text-align:right;font-size:12;" width="95%">Page <span class="page"/></td><td style="text-align:left;font-size:12;"> of <span class="topage"/></td>
45+ </tr>
46+ </table>
47+ </body>
48+</html>]]></field>
49+ <field eval="&quot;&quot;&quot;Portrait&quot;&quot;&quot;" name="orientation"/>
50+ <field eval="&quot;&quot;&quot;A4&quot;&quot;&quot;" name="format"/>
51+ <field name="html"><![CDATA[<html>
52+ <head>
53+ <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
54+ <script>
55+ function subst() {
56+ var vars={};
57+ var x=document.location.search.substring(1).split('&');
58+ for(var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
59+ var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
60+ for(var i in x) {
61+ var y = document.getElementsByClassName(x[i]);
62+ for(var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
63+ }
64+ }
65+ </script>
66+ <style type="text/css">
67+ ${css}
68+ </style>
69+ </head>
70+ <body style="border:0; margin: 0;" onload="subst()">
71+ <table class="header" style="border-bottom: 0px solid black; width: 100%">
72+ <% setLang(user.context_lang) %>
73+ <tr>
74+ <td>${helper.embed_logo_by_name('gbw_logo')|n}</td>
75+ <td style="text-align:right"> </td>
76+ </tr>
77+ </table> ${_debug or ''|n} </body>
78+</html>]]>
79+</field>
80+ <field eval="30.0" name="margin_top"/>
81+ <field name="css" ><![CDATA[
82+body {
83+font-family:helvetica;
84+font-size:12;
85+}
86+
87+
88+.dest_address {
89+margin-left:60%;
90+font-size:12;
91+}
92+.header {
93+margin-left:0;
94+text-align:left;
95+width:300px;
96+font-size:12;
97+}
98+
99+.title {
100+font-size:16;
101+font-weight: bold;
102+
103+}
104+
105+
106+.basic_table{
107+text-align:center;
108+border:1px solid lightGrey;
109+border-collapse: collapse;
110+}
111+.basic_table td {
112+border:1px solid lightGrey;
113+font-size:12;
114+
115+
116+}
117+
118+.list_table {
119+border-color:black;
120+text-align:center;
121+border-collapse: collapse;
122+
123+}
124+.list_table td {
125+border-color:gray;
126+border-top:1px solid gray;
127+text-align:left;
128+font-size:12;
129+padding-right:3px
130+padding-left:3px
131+padding-top:3px
132+padding-bottom:3px
133+}
134+
135+.list_table th {
136+border-bottom:2px solid black;
137+text-align:left;
138+font-size:12;
139+font-weight:bold;
140+padding-right:3px
141+padding-left:3px
142+}
143+
144+.list_tabe thead {
145+ display:table-header-group;
146+}
147+
148+
149+.table_title{
150+ width: 20%;
151+ background-color: #a41d35;
152+ color: white;
153+}
154+
155+.table_data{
156+ border-bottom: 1px solid lightGrey;
157+ font-size: 10px;
158+ width: 100%;
159+ text-align:center;
160+
161+}
162+
163+.table_data_customer{
164+ border-bottom: 0px solid black;
165+ font-weight: bold;
166+ font-family: Times New Roman, Times, serif;
167+ width: 100%
168+}
169+
170+.align_text_td_right{
171+ text-align:right;
172+}
173+
174+
175+.total {
176+width:100%;
177+}
178+.lib {
179+width:10.3%;
180+}
181+.tot {
182+text-align:right;
183+width:15%;
184+}
185+.lefttot {
186+width:74%;
187+}
188+.tax {
189+width:50%;
190+}]]> </field>
191+ <field eval="&quot;&quot;&quot;GBW Normal Header (only logo)&quot;&quot;&quot;" name="name"/>
192+ </record>
193+
194 <record id="ir_header_img_gbw" model="ir.header_img">
195 <field eval="&quot;&quot;&quot;png&quot;&quot;&quot;" name="type"/>
196 <field eval="&quot;&quot;&quot;iVBORw0KGgoAAAANSUhEUgAAAH4AAABaCAYAAAB+HuKoAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
197
198=== modified file 'gbwinvoice_report_webkit/gbwinvoice_report_webkit_view.xml'
199--- gbwinvoice_report_webkit/gbwinvoice_report_webkit_view.xml 2013-06-14 03:05:12 +0000
200+++ gbwinvoice_report_webkit/gbwinvoice_report_webkit_view.xml 2015-05-05 18:36:53 +0000
201@@ -45,6 +45,22 @@
202 string="GBW Category Invoice with Aportacion Report"
203 report_type="webkit"
204 />
205-
206+
207+ <report auto="False"
208+ id="gbwinvoice_payment_partner_webkit"
209+ model="account.invoice"
210+ name="gbwinvoice_payment_partner.webkit"
211+ file="gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako"
212+ string="GBW Payment By Partner Report"
213+ report_type="webkit"
214+ />
215+
216+ <record id="property_gbwinvoice_payment_partner_webkit" model="ir.property">
217+ <field name="name">webkit_header</field>
218+ <field name="fields_id" ref="report_webkit.field_ir_act_report_xml_webkit_header"/>
219+ <field eval="'ir.header_webkit,'+str(ref('gbwinvoice_report_webkit.ir_header_only_logo_gbw'))" model="ir.header_webkit" name="value"/>
220+ <field eval="'ir.actions.report.xml,'+str(ref('gbwinvoice_report_webkit.gbwinvoice_payment_partner_webkit'))" model="ir.actions.report.xml" name="res_id"/>
221+ </record>
222+
223 </data>
224 </openerp>
225
226=== modified file 'gbwinvoice_report_webkit/report/__init__.py'
227--- gbwinvoice_report_webkit/report/__init__.py 2013-06-04 18:45:14 +0000
228+++ gbwinvoice_report_webkit/report/__init__.py 2015-05-05 18:36:53 +0000
229@@ -29,4 +29,4 @@
230 #
231 ##############################################################################
232
233-
234+import parser
235
236=== added file 'gbwinvoice_report_webkit/report/parser.py'
237--- gbwinvoice_report_webkit/report/parser.py 1970-01-01 00:00:00 +0000
238+++ gbwinvoice_report_webkit/report/parser.py 2015-05-05 18:36:53 +0000
239@@ -0,0 +1,93 @@
240+#!/usr/bin/python
241+# -*- encoding: utf-8 -*-
242+###########################################################################
243+# Module Writen to OpenERP, Open Source Management Solution
244+# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
245+# All Rights Reserved
246+# ##############Credits######################################################
247+# Coded by: Humberto Arocha <hbto@vauxoo.com>
248+# Planified by: Rafael Silva <rsilvam@vauxoo.com>
249+# Audited by: Nhomar Hernandez <nhomar@vauxoo.com>
250+#############################################################################
251+# This program is free software: you can redistribute it and/or modify
252+# it under the terms of the GNU Affero General Public License as published
253+# by the Free Software Foundation, either version 3 of the License, or
254+# (at your option) any later version.
255+#
256+# This program is distributed in the hope that it will be useful,
257+# but WITHOUT ANY WARRANTY; without even the implied warranty of
258+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
259+# GNU Affero General Public License for more details.
260+#
261+# You should have received a copy of the GNU Affero General Public License
262+# along with this program. If not, see <http://www.gnu.org/licenses/>.
263+###############################################################################
264+
265+
266+import time
267+from report import report_sxw
268+from report_webkit import webkit_report
269+import mx.DateTime
270+from datetime import datetime
271+
272+class aging_parser(report_sxw.rml_parse):
273+ def __init__(self, cr, uid, name, context):
274+ super(aging_parser, self).__init__(cr, uid, name, context=context)
275+ self.localcontext.update({
276+ 'time': time,
277+ 'int': int,
278+ 'get_invoice_and_payments_by_partner':
279+ self._get_invoice_and_payments_by_partner,
280+ })
281+
282+ def _get_invoice_and_payments_by_partner(self, rp_brws):
283+
284+ res = {}
285+ rp_obj = self.pool.get('res.partner')
286+ inv_obj = self.pool.get('account.invoice')
287+ aml_obj = self.pool.get('account.move.line')
288+ average_days = 0
289+ if rp_brws:
290+ rp_id = rp_brws[0].partner_id
291+ res[rp_brws[0].partner_id.id] = {
292+ 'rp_brw': rp_id,
293+ 'inv_ids': [],
294+ }
295+
296+ for inv_brw in inv_obj.browse(self.cr, self.uid, rp_brws.id):
297+
298+ pay_ids = [aml.id for aml in inv_brw.payment_ids]
299+ date_due = datetime.strptime(
300+ inv_brw.date_invoice, '%Y-%m-%d %H:%M:%S').date()
301+
302+ if pay_ids:
303+ pay_ids.sort()
304+ date_payment = aml_obj.browse(
305+ self.cr, self.uid, pay_ids[-1])
306+ date_payment_p = mx.DateTime.strptime(
307+ date_payment.date, '%Y-%m-%d')
308+ due_days = (date_payment_p - date_due).day
309+ average_days += due_days
310+ res[rp_brws[0].partner_id.id]['inv_ids'].append({
311+ 'inv_brw': inv_brw,
312+ 'due_days': due_days,
313+ 'date_payment': date_payment.date,
314+ })
315+ res[rp_brws[0].partner_id.id].update({
316+ 'average_days': average_days/len(rp_brws.id),
317+ })
318+ res2 = []
319+ if res.keys():
320+ rp_ids = rp_obj.search(
321+ self.cr, self.uid,
322+ [('id', 'in', res.keys())], order='name asc')
323+ for rp_id in rp_ids:
324+ res2.append(res[rp_id])
325+ return res2
326+
327+webkit_report.WebKitParser('report.gbwinvoice_payment_partner.webkit',
328+ 'account.invoice',
329+ 'addons/gbwinvoice_report/gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako',
330+ parser=aging_parser)
331+
332+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
333\ No newline at end of file
334
335=== added file 'gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako'
336--- gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako 1970-01-01 00:00:00 +0000
337+++ gbwinvoice_report_webkit/report/templates/gbwinvoice_payment_partner.mako 2015-05-05 18:36:53 +0000
338@@ -0,0 +1,60 @@
339+<html>
340+<head>
341+ <style type="text/css">
342+ ${css}
343+ </style>
344+</head>
345+ <body>
346+ <% setLang(user.context_lang) %>
347+
348+ %for o in get_invoice_and_payments_by_partner(objects):
349+
350+ <table class="header" class="table_data_customer" style="font-weight: bold; width:100%;">
351+ <tr>
352+ <td class="align_text_td_right">${o.get('rp_brw').name}</td>
353+ </tr>
354+ <tr>
355+ <td class="align_text_td_right">${'%s-%s-%s'%(o.get('rp_brw').vat[2],o.get('rp_brw').vat[3:-1],o.get('rp_brw').vat[-1])}</td>
356+ </tr>
357+ <tr>
358+ <td><b>DOCUMENTO:</b> Historial de pagos de Cliente</td>
359+ </tr>
360+ <tr>
361+ <td>${ formatLang(time.strftime('%Y-%m-%d'),date=True)}</td>
362+ </tr>
363+ </table>
364+
365+ <table class="header table_data" cellspacing="0" cellpadding="0">
366+ <tr>
367+ <th class="table_title">DOCUMENTO</th>
368+ <th class="table_title">F/EMISION</th>
369+ <th class="table_title">F/VENC.</th>
370+ <th class="table_title">F/PAGO</th>
371+ <th class="table_title">DIAS/VENC.</th>
372+ </tr>
373+ %for inv in o['inv_ids']:
374+ <tr style="font-weight: bold;">
375+ <td>
376+ F: ${ inv['inv_brw'].number or 0}
377+ </td>
378+ <td class="align_text_td_right">${formatLang(inv['inv_brw'].date_invoice,date_time=True)[:10]}</td>
379+ <td class="align_text_td_right">${formatLang(inv['inv_brw'].date_due,date=True)}</td>
380+ <td class="align_text_td_right">${formatLang(inv.get('date_payment'),date=True)}</td>
381+ <td class="align_text_td_right">${inv.get('due_days') and '%s DIAS'%inv.get('due_days') or '0 DIAS'}</td>
382+ </tr>
383+
384+ %endfor
385+
386+ </table>
387+ <table class="header table_data" cellspacing="0" cellpadding="0">
388+ <tr>
389+ <td class="table_title"></td>
390+ <td class="table_title"></td>
391+ <td class="table_title"></td>
392+ <td class="table_title align_text_td_right" style="font-weight: bold;">Promedio</td>
393+ <td class="table_title align_text_td_right" style="font-weight: bold;">${o.get('average_days') and '%s DIAS'%o.get('average_days') or '0 DIAS'}</td>
394+ </tr>
395+ </table>
396+ %endfor
397+ </body>
398+</html>
399\ No newline at end of file
400
401=== modified file 'gbwinvoice_report_webkit/wizard/__init__.py'
402--- gbwinvoice_report_webkit/wizard/__init__.py 2013-06-14 03:05:12 +0000
403+++ gbwinvoice_report_webkit/wizard/__init__.py 2015-05-05 18:36:53 +0000
404@@ -1,3 +1,4 @@
405 import gbwinvoice_report_webkit_wizard
406 import gbwcategory_report_webkit_wizard
407 import gbwcategoryaportacion_report_webkit_wizard
408+import paymentpartner_report_webkit_wizard
409
410=== added file 'gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard.py'
411--- gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard.py 1970-01-01 00:00:00 +0000
412+++ gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard.py 2015-05-05 18:36:53 +0000
413@@ -0,0 +1,43 @@
414+# -*- coding: utf-8 -*-
415+from osv import osv,fields
416+from tools.translate import _
417+import time
418+from datetime import datetime
419+
420+class paymentpartner_report_webkit_wizard(osv.osv_memory):
421+ _name = "paymentpartner.webkitwizard"
422+ _description = "GBW Payment By Partner Report"
423+
424+ _columns = {
425+ 'partner_id': fields.many2one('res.partner',
426+ 'Customer', required=True),
427+ 'from_date': fields.date('From'),
428+ 'to_date': fields.date('To'),
429+ }
430+
431+ def create_report(self, cr, uid, ids, context={}):
432+ res = {}
433+ invoice_obj = self.pool.get('account.invoice')
434+ data = self.read(cr, uid, ids,)[-1]
435+
436+ invoice_ids = invoice_obj.search(
437+ cr, uid, [('partner_id', '=', data['partner_id']),
438+ ('date_invoice', '>', data['from_date']),
439+ ('date_invoice', '<', data['to_date']),
440+ ('state', 'in', ('paid',))], context=context)
441+ if invoice_ids:
442+ res = {
443+ 'type': 'ir.actions.report.xml',
444+ 'report_name': 'gbwinvoice_payment_partner.webkit',
445+ 'datas': {
446+ 'model': 'account.invoice',
447+ 'id': context.get('active_ids') and
448+ context.get('active_ids')[0] or False,
449+ 'ids': invoice_ids and invoice_ids or [],
450+ 'report_type': 'webkit',
451+ 'form': data
452+ },
453+ 'nodestroy': False
454+ }
455+ return res
456+paymentpartner_report_webkit_wizard()
457\ No newline at end of file
458
459=== added file 'gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard_view.xml'
460--- gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard_view.xml 1970-01-01 00:00:00 +0000
461+++ gbwinvoice_report_webkit/wizard/paymentpartner_report_webkit_wizard_view.xml 2015-05-05 18:36:53 +0000
462@@ -0,0 +1,40 @@
463+<?xml version="1.0"?>
464+<openerp>
465+ <data >
466+<!--====================Defining the wizard View==================-->
467+
468+ <record id='gbwpaymentpartner_report_webkit_wizardform' model="ir.ui.view">
469+ <field name="name">GBW Payment By Partner Report</field>
470+ <field name="model">paymentpartner.webkitwizard</field>
471+ <field name="type">form</field>
472+ <field name="arch" type="xml">
473+ <form string="Invoices" >
474+ <separator string="Filter" colspan="4"/>
475+ <field name="from_date" required='1' colspan="4"/>
476+ <field name="to_date" required='1' colspan="4"/>
477+ <field name="partner_id" required='1' colspan="4"/>
478+ <group colspan="2">
479+ <button special="cancel" icon="gtk-cancel" string="Cancel"/>
480+ <button type="object" name="create_report" icon="gtk-go-forward" string="Create"/>
481+ </group>
482+ </form>
483+ </field>
484+ </record>
485+
486+ <record model="ir.actions.act_window" id="action_paymentpartner_report_webkit">
487+ <field name="name">GBW Payment By Partner Report</field>
488+ <field name="res_model">paymentpartner.webkitwizard</field>
489+ <field name="view_type">form</field>
490+ <field name="view_mode">form</field>
491+ <field name="target">new</field>
492+ </record>
493+<!--====================Specifying the report menu ========================-->
494+
495+ <menuitem id="gbwinvoice_report_webkit" name="GBW Payment By Partner Report"
496+ action="action_paymentpartner_report_webkit"
497+ parent="menu_gbw_report"
498+ sequence="10"
499+ />
500+
501+ </data>
502+</openerp>
503\ No newline at end of file

Subscribers

People subscribed via source and target branches