})
return clone_list
+ def invoice_action_done(self, cr, uid, ids, context = None):
+ "create invoice for a paid order"
+ for order in self.browse(cr, uid, ids, context):
+ if order.state == 'paid':
+ assert (not order.invoice_id), "Order already has an invoice"
+ inv_ids = self.action_invoice(cr, uid, ids, context)
+ amount = 0.0
+ assert order.payments, "Paid order with no payment"
+ for pay in order.payments:
+ amount += pay.amount
+ inv_obj = self.pool.get('account.invoice')
+ inv = inv_obj.browse(cr, uid, inv_ids, context)[0]
+ inv_obj.pay_and_reconcile(cr, uid, inv_ids, amount,
+ pay.journal_id.default_credit_account_id.id, inv.period_id.id,
+ pay.journal_id.id, pay.journal_id.default_debit_account_id.id,
+ inv.period_id.id, pay.journal_id.id, context, pay.name)
+ return True
+
def action_invoice(self, cr, uid, ids, context={}):
inv_ref = self.pool.get('account.invoice')
inv_line_ref = self.pool.get('account.invoice.line')
<field name="wkf_id" ref="wkf_pos"/>
<field name="name">invoiced</field>
<field name="flow_stop">True</field>
- <field name="action">action_invoice()</field>
+ <field name="action">invoice_action_done()</field>
<field name="kind">function</field>
</record>
order_obj = pool.get('pos.order')
order = order_obj.browse(cr, uid, data['id'], context)
if not order.invoice_id:
- inv_id = order_obj.action_invoice(cr, uid, [data['id']])
- #raise wizard.except_wizard(_('Error !'), _('Please create an invoice for this sale.'))
-# wf_service = netsvc.LocalService("workflow")
-# for i in data['ids']:
-# wf_service.trg_validate(uid, 'pos.order', i, 'invoice', cr)
+ order_obj.invoice_action_done(cr, uid, [data['id']])
return {}