[IMP] point_of_sale: extract creation of order in separate method
To allow overwrite in submodules and more readable code.
This commit is contained in:
parent
aef2150179
commit
edf3beee67
|
@ -574,6 +574,33 @@ class pos_order(osv.osv):
|
||||||
'journal': ui_paymentline['journal_id'],
|
'journal': ui_paymentline['journal_id'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _process_order(self, cr, uid, order, context=None):
|
||||||
|
order_id = self.create(cr, uid, self._order_fields(cr, uid, order, context=context),context)
|
||||||
|
|
||||||
|
for payments in order['statement_ids']:
|
||||||
|
self.add_payment(cr, uid, order_id, self._payment_fields(cr, uid, payments[2], context=context), context=context)
|
||||||
|
|
||||||
|
session = self.pool.get('pos.session').browse(cr, uid, order['pos_session_id'], context=context)
|
||||||
|
if session.sequence_number <= order['sequence_number']:
|
||||||
|
session.write({'sequence_number': order['sequence_number'] + 1})
|
||||||
|
session.refresh()
|
||||||
|
|
||||||
|
if order['amount_return']:
|
||||||
|
cash_journal = session.cash_journal_id
|
||||||
|
if not cash_journal:
|
||||||
|
cash_journal_ids = filter(lambda st: st.journal_id.type=='cash', session.statement_ids)
|
||||||
|
if not len(cash_journal_ids):
|
||||||
|
raise osv.except_osv( _('error!'),
|
||||||
|
_("No cash statement found for this session. Unable to record returned cash."))
|
||||||
|
cash_journal = cash_journal_ids[0].journal_id
|
||||||
|
self.add_payment(cr, uid, order_id, {
|
||||||
|
'amount': -order['amount_return'],
|
||||||
|
'payment_date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||||
|
'payment_name': _('return'),
|
||||||
|
'journal': cash_journal.id,
|
||||||
|
}, context=context)
|
||||||
|
return order_id
|
||||||
|
|
||||||
def create_from_ui(self, cr, uid, orders, context=None):
|
def create_from_ui(self, cr, uid, orders, context=None):
|
||||||
# Keep only new orders
|
# Keep only new orders
|
||||||
submitted_references = [o['data']['name'] for o in orders]
|
submitted_references = [o['data']['name'] for o in orders]
|
||||||
|
@ -587,30 +614,7 @@ class pos_order(osv.osv):
|
||||||
for tmp_order in orders_to_save:
|
for tmp_order in orders_to_save:
|
||||||
to_invoice = tmp_order['to_invoice']
|
to_invoice = tmp_order['to_invoice']
|
||||||
order = tmp_order['data']
|
order = tmp_order['data']
|
||||||
order_id = self.create(cr, uid, self._order_fields(cr, uid, order, context=context),context)
|
order_id = self._process_order(cr, uid, order, context=context)
|
||||||
|
|
||||||
for payments in order['statement_ids']:
|
|
||||||
self.add_payment(cr, uid, order_id, self._payment_fields(cr, uid, payments[2], context=context), context=context)
|
|
||||||
|
|
||||||
session = self.pool.get('pos.session').browse(cr, uid, order['pos_session_id'], context=context)
|
|
||||||
if session.sequence_number <= order['sequence_number']:
|
|
||||||
session.write({'sequence_number': order['sequence_number'] + 1})
|
|
||||||
session.refresh()
|
|
||||||
|
|
||||||
if order['amount_return']:
|
|
||||||
cash_journal = session.cash_journal_id
|
|
||||||
if not cash_journal:
|
|
||||||
cash_journal_ids = filter(lambda st: st.journal_id.type=='cash', session.statement_ids)
|
|
||||||
if not len(cash_journal_ids):
|
|
||||||
raise osv.except_osv( _('error!'),
|
|
||||||
_("No cash statement found for this session. Unable to record returned cash."))
|
|
||||||
cash_journal = cash_journal_ids[0].journal_id
|
|
||||||
self.add_payment(cr, uid, order_id, {
|
|
||||||
'amount': -order['amount_return'],
|
|
||||||
'payment_date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
||||||
'payment_name': _('return'),
|
|
||||||
'journal': cash_journal.id,
|
|
||||||
}, context=context)
|
|
||||||
order_ids.append(order_id)
|
order_ids.append(order_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue