1 # -*- encoding: utf-8 -*-
7 def _invoice_membership(self, cr, uid, data, context):
8 partner_ids = data['ids']
9 product_id = data['form']['product']
11 pool = pooler.get_pool(cr.dbname)
14 SELECT partner_id, id, type
15 FROM res_partner_address
16 WHERE partner_id IN (%s)
17 ''' % ','.join([str(id) for id in partner_ids])
19 fetchal = cr.fetchall()
21 raise wizard.except_wizard('Error !', 'No Address defined for this partner')
22 partner_address_ids = {}
23 for x in range(len(fetchal)):
28 if partner_address_ids.has_key(pid) and partner_address_ids[pid]['type'] == 'invoice':
30 partner_address_ids[pid] = {'id': id, 'type': type}
34 invoice_obj = pool.get('account.invoice')
35 partner_obj = pool.get('res.partner')
36 product_obj = pool.get('product.product')
37 invoice_line_obj = pool.get(('account.invoice.line'))
38 invoice_tax_obj = pool.get(('account.invoice.tax'))
39 product = product_obj.read(cr, uid, product_id, ['uom_id'])
41 for partner_id in partner_ids:
42 account_id = partner_obj.read(cr, uid, partner_id, ['property_account_receivable'])['property_account_receivable'][0]
43 invoice_id = invoice_obj.create(cr, uid, {
44 'partner_id' : partner_id,
45 'address_invoice_id': partner_address_ids[partner_id]['id'],
46 'account_id': account_id,
51 'invoice_id' : invoice_id,
52 'product_id' : product_id,
57 line_dict = invoice_line_obj.product_id_change(cr, uid, {}, product_id, product['uom_id'][0], quantity, '', 'out_invoice', partner_id, context=context)
59 line_value.update(line_dict['value'])
60 if line_value['invoice_line_tax_id']:
61 tax_tab = [(6, 0, line_value['invoice_line_tax_id'])]
62 line_value['invoice_line_tax_id'] = tax_tab
65 invoice_line_id = invoice_line_obj.create(cr, uid, line_value)
66 invoice_list.append(invoice_id)
67 if line_value['invoice_line_tax_id']:
68 invoice_obj.write(cr, uid, [invoice_id], {'tax_line':tax_tab})
69 tax_value = invoice_tax_obj.compute(cr, uid, invoice_id).values()[0]
70 invoice_tax_obj.create(cr, uid, tax_value)
74 ('id', 'in', invoice_list),
76 'name': 'Membership invoice',
78 'view_mode': 'tree,form',
79 'res_model': 'account.invoice',
80 'type': 'ir.actions.act_window',
85 wizard_arch= """<?xml version="1.0"?>
86 <form string="Choose invoice details">
89 domain="[('membership','=','True')]"
90 context="product='membership_product'"
96 class wizard_invoice_membership(wizard.interface):
104 'arch' : wizard_arch,
107 'string': 'Membership product',
109 'relation': 'product.product',
113 'state' : [('end', 'Cancel'),('ok', 'Confirm') ]}
118 'result' : {'type' : 'action',
119 'action': _invoice_membership,
126 wizard_invoice_membership("wizard_invoice_membership")
128 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: