Skip to content

Commit 5c29395

Browse files
committed
FIX refund creation
1 parent ac0b300 commit 5c29395

6 files changed

+111
-5
lines changed

l10n_ar_invoice/__openerp__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
##############################################################################
2121
{
2222
"name": "Argentina - Facturación y documentos AFIP",
23-
'version': '8.0.0.11.0',
23+
'version': '8.0.0.12.0',
2424
'category': 'Localization/Argentina',
2525
'sequence': 14,
2626
'author': 'ADHOC SA',
@@ -60,6 +60,7 @@
6060
'data/account_payment_term.xml',
6161
# 'data/decimal_precision_data.xml', probando si no es necesario
6262
'wizard/account_journal_create_wizard_view.xml',
63+
'wizard/account_invoice_refund_view.xml',
6364
'view/partner_view.xml',
6465
'view/company_view.xml',
6566
'view/country_view.xml',

l10n_ar_invoice/demo/account_demo.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</record>
3333

3434
<record id="sales_journal" model="account.journal">
35-
<field name="name">Ventas (0001 - Electronica)</field>
35+
<field name="name">Ventas (0001 - Manual)</field>
3636
<field name="code">VEN01</field>
3737
<field name="type">sale</field>
3838
<!-- <field name="sequence_id" ref="sequence_sale_journal"/> -->
@@ -45,7 +45,7 @@
4545
<field name="point_of_sale_id" ref="point_of_sale_1"/>
4646
</record>
4747
<record id="refund_sales_journal" model="account.journal">
48-
<field name="name">Reembolso Ventas (0001 - Electronica)</field>
48+
<field name="name">Reembolso Ventas (0001 - Manual)</field>
4949
<field name="code">RVE01</field>
5050
<field name="type">sale_refund</field>
5151
<!-- <field name="sequence_id" ref="sequence_refund_sales_journal"/> -->

l10n_ar_invoice/report/invoice_analysis.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,14 @@
9494

9595

9696
<record id="action_account_invoice_line_report_all" model="ir.actions.act_window">
97-
<field name="name">Invoice Analysis</field>
97+
<field name="name">Invoices Lines Analysis</field>
9898
<field name="res_model">account.invoice.line.report</field>
9999
<field name="view_type">form</field>
100100
<field name="view_mode">tree,graph</field>
101101
<field name="context">{}</field>
102102
</record>
103103

104-
<menuitem action="action_account_invoice_line_report_all" id="menu_action_account_invoice_line_report_all" parent="account.menu_finance_reporting" sequence="0"/>
104+
<menuitem action="action_account_invoice_line_report_all" id="menu_action_account_invoice_line_report_all" name="Invoices Lines Analysis" parent="account.menu_finance_reporting" sequence="0"/>
105105

106106
</data>
107107
</openerp>

l10n_ar_invoice/wizard/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
# directory
55
##############################################################################
66
from . import account_journal_create_wizard
7+
from . import account_invoice_refund
78
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# -*- coding: utf-8 -*-
2+
##############################################################################
3+
# For copyright and license notices, see __openerp__.py file in module root
4+
# directory
5+
##############################################################################
6+
from openerp import models, fields, api
7+
8+
9+
class account_invoice_refund(models.TransientModel):
10+
11+
# we inherit refund creation to choose a company journal and also try to
12+
# choose a journal of same point of sale
13+
14+
_inherit = 'account.invoice.refund'
15+
16+
@api.model
17+
def _get_invoice_id(self):
18+
return self._context.get('active_id', False)
19+
20+
# @api.one
21+
@api.multi
22+
@api.onchange('invoice_id')
23+
def _onchange_invoice(self):
24+
journal_type = False
25+
if self.invoice_id.type == 'out_refund' or 'out_invoice':
26+
journal_type = 'sale_refund'
27+
elif self.invoice_id.type == 'in_refund' or 'in_invoice':
28+
journal_type = 'purchase_refund'
29+
# return {'domain': {'journal_id': price}}
30+
journals = self.env['account.journal'].search(
31+
[('type', '=', journal_type),
32+
('company_id', '=', self.invoice_id.company_id.id)])
33+
periods = self.env['account.period'].search(
34+
[('company_id', '=', self.invoice_id.company_id.id)])
35+
# self.journal_type = journal_type
36+
37+
point_of_sale = self.invoice_id.journal_id.point_of_sale_id
38+
print 'point_of_sale', point_of_sale
39+
if point_of_sale:
40+
journal = self.env['account.journal'].search(
41+
[('type', '=', journal_type),
42+
('company_id', '=', self.invoice_id.company_id.id),
43+
('point_of_sale_id', '=', point_of_sale.id),
44+
], limit=1)
45+
print 'journal', journal
46+
if not journal and journals:
47+
journal = journals[0]
48+
if journal:
49+
self.journal_id = journal.id
50+
return {'domain': {
51+
'journal_id': [('id', 'in', journals.ids)],
52+
'period': [('id', 'in', periods.ids)]
53+
}}
54+
55+
invoice_id = fields.Many2one(
56+
'account.invoice',
57+
'Invoice',
58+
default=_get_invoice_id,
59+
store=True)
60+
61+
def compute_refund(self, cr, uid, ids, data_refund, context=None):
62+
res = super(account_invoice_refund, self).compute_refund(
63+
cr, uid, ids, data_refund, context=context)
64+
domain = res.get('domain', [])
65+
invoice_ids = context.get('active_ids', [])
66+
if not invoice_ids:
67+
return res
68+
sale_order_ids = self.pool['sale.order'].search(
69+
cr, uid, [('invoice_ids', 'in', invoice_ids)])
70+
invoice_obj = self.pool['account.invoice']
71+
refund_invoice_ids = invoice_obj.search(cr, uid, domain)
72+
origin = ', '.join([x.number for x in invoice_obj.browse(
73+
cr, uid, invoice_ids) if x.number])
74+
invoice_obj.write(cr, uid, refund_invoice_ids, {
75+
'origin': origin,
76+
})
77+
if not self.browse(cr, uid, ids, context=context)[0].period:
78+
invoice_obj.write(cr, uid, refund_invoice_ids, {
79+
'period_id': invoice_obj.browse(
80+
cr, uid, invoice_ids)[0].period_id.id
81+
})
82+
for invoice_id in refund_invoice_ids:
83+
self.pool['sale.order'].write(
84+
cr, uid, sale_order_ids, {'invoice_ids': [(4, invoice_id)]})
85+
return res
86+
87+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<openerp>
3+
<data>
4+
5+
<record id="view_account_invoice" model="ir.ui.view">
6+
<field name="name">account.invoice_refund.view</field>
7+
<field name="model">account.invoice.refund</field>
8+
<field name="inherit_id" ref="account.view_account_invoice_refund"/>
9+
<field name="arch" type="xml">
10+
<form>
11+
<field name="invoice_id" invisible="1"/>
12+
</form>
13+
</field>
14+
</record>
15+
16+
</data>
17+
</openerp>

0 commit comments

Comments
 (0)