diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py index eb97152280b..651945752a7 100644 --- a/addons/sale/__openerp__.py +++ b/addons/sale/__openerp__.py @@ -47,6 +47,7 @@ 'update_xml': [ 'wizard/sale_make_invoice_advance.xml', 'wizard/sale_line_invoice.xml', + 'wizard/sale_make_invoice.xml', 'security/sale_security.xml', 'security/ir.model.access.csv', 'company_view.xml', diff --git a/addons/sale/wizard/__init__.py b/addons/sale/wizard/__init__.py index 07c5ceea83d..ba6fd677a3c 100644 --- a/addons/sale/wizard/__init__.py +++ b/addons/sale/wizard/__init__.py @@ -19,8 +19,9 @@ # ############################################################################## -#remaining make_invoice +import sale_make_invoice import sale_line_invoice import sale_make_invoice_advance + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/wizard/make_invoice.py b/addons/sale/wizard/make_invoice.py deleted file mode 100644 index 7b190c3b2d6..00000000000 --- a/addons/sale/wizard/make_invoice.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (). -# -# 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 . -# -############################################################################## - -import wizard -import netsvc -import pooler - -invoice_form = """ -
- - - - -""" - -invoice_fields = { - 'grouped' : {'string':'Group the invoices', 'type':'boolean', 'default': lambda x,y,z: False}, - 'invoice_date': {'string': 'Invoiced date', 'type':'date' } -} - -ack_form = """ -
- -""" - -ack_fields = {} - -def _makeInvoices(self, cr, uid, data, context): - pool_obj = pooler.get_pool(cr.dbname) - mod_obj = pool_obj.get('ir.model.data') - order_obj = pool_obj.get('sale.order') - newinv = [] - - order_obj.action_invoice_create(cr, uid, data['ids'], data['form']['grouped'], date_inv = data['form']['invoice_date']) - for id in data['ids']: - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr) - - for o in order_obj.browse(cr, uid, data['ids'], context): - for i in o.invoice_ids: - newinv.append(i.id) - act_obj = pool_obj.get('ir.actions.act_window') - xml_id='action_invoice_tree5' - result = mod_obj._get_id(cr, uid, 'account', xml_id) - id = mod_obj.read(cr, uid, result, ['res_id'])['res_id'] - result = act_obj.read(cr, uid, id) - result['domain'] ="[('id','in', ["+','.join(map(str,newinv))+"])]" - return result - #return { - # 'domain': "[('id','in', ["+','.join(map(str,newinv))+"])]", - # 'name': 'Invoices', - # 'view_type': 'form', - # 'view_mode': 'tree,form', - # 'res_model': 'account.invoice', - # 'view_id': False, - # 'context': "{'type':'out_refund'}", - # 'type': 'ir.actions.act_window' - #} - #return {} - -class make_invoice(wizard.interface): - states = { - 'init' : { - 'actions' : [], - 'result' : {'type' : 'form', - 'arch' : invoice_form, - 'fields' : invoice_fields, - 'state' : [('end', 'Cancel'),('invoice', 'Create invoices') ]} - }, - 'invoice' : { - 'actions' : [_makeInvoices], - 'result' : {'type': 'state', 'state': 'end'} - }, - } -make_invoice("sale.order.make_invoice") - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/sale/wizard/sale_make_invoice.py b/addons/sale/wizard/sale_make_invoice.py new file mode 100644 index 00000000000..5ea01b1db6c --- /dev/null +++ b/addons/sale/wizard/sale_make_invoice.py @@ -0,0 +1,74 @@ +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +from osv import fields, osv +from service import web_services +from tools.translate import _ +import ir +import netsvc + +class sale_make_invoice(osv.osv_memory): + _name = "sale.make.invoice" + _description = "Sale Make Invoice" + _columns = { + 'grouped': fields.boolean('Group the invoices'), + 'invoice_date':fields.date('Invoice Date'), + } + _default = { + 'grouped' : lambda *a: False + } + def view_init(self, cr, uid, fields_list, context=None): + record_id = context and context.get('active_id', False) + order = self.pool.get('sale.order').browse(cr, uid, record_id) + if order.state=='draft': + raise osv.except_osv(_('Warning !'),'You can not create invoice when sale order is not confirmed.') + return False + def make_invoices(self, cr, uid, ids, context={}): + order_obj = self.pool.get('sale.order') + newinv = [] + data=self.read(cr,uid,ids)[0] + order_obj.action_invoice_create(cr, uid, context.get(('active_ids'),[]), data['grouped'],date_inv = data['invoice_date']) + wf_service = netsvc.LocalService("workflow") + for id in context.get(('active_ids'),[]): + wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr) + + for o in order_obj.browse(cr, uid, context.get(('active_ids'),[]), context): + for i in o.invoice_ids: + newinv.append(i.id) + + mod_obj =self.pool.get('ir.model.data') + result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter') + + id = mod_obj.read(cr, uid, result, ['res_id']) + return { + 'domain': "[('id','in', ["+','.join(map(str,newinv))+"])]", + 'name': 'Invoices', + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'account.invoice', + 'view_id': False, + 'context': "{'type':'out_refund'}", + 'type': 'ir.actions.act_window', + 'search_view_id': id['id'] + } + +sale_make_invoice() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/sale/wizard/sale_make_invoice.xml b/addons/sale/wizard/sale_make_invoice.xml new file mode 100644 index 00000000000..ade720be1f4 --- /dev/null +++ b/addons/sale/wizard/sale_make_invoice.xml @@ -0,0 +1,29 @@ + + + + + Create invoices + sale.make.invoice + form + +
+ + + + +