Merge pull request #1268 from odoo-dev/8.0-pos-fixes-qdp
[FIX] point_of_sale: fixed errors that avoid closing a pos session + [IM...
This commit is contained in:
commit
954ab3eefb
|
@ -326,16 +326,26 @@ class account_bank_statement(osv.osv):
|
|||
or (not st.journal_id.default_debit_account_id):
|
||||
raise osv.except_osv(_('Configuration Error!'), _('Please verify that an account is defined in the journal.'))
|
||||
for line in st.move_line_ids:
|
||||
if line.state <> 'valid':
|
||||
if line.state != 'valid':
|
||||
raise osv.except_osv(_('Error!'), _('The account entries lines are not in valid state.'))
|
||||
move_ids = []
|
||||
for st_line in st.line_ids:
|
||||
if not st_line.amount:
|
||||
continue
|
||||
if not st_line.journal_entry_id.id:
|
||||
if st_line.account_id and not st_line.journal_entry_id.id:
|
||||
#make an account move as before
|
||||
vals = {
|
||||
'debit': st_line.amount < 0 and -st_line.amount or 0.0,
|
||||
'credit': st_line.amount > 0 and st_line.amount or 0.0,
|
||||
'account_id': st_line.account_id.id,
|
||||
'name': st_line.name
|
||||
}
|
||||
self.pool.get('account.bank.statement.line').process_reconciliation(cr, uid, st_line.id, [vals], context=context)
|
||||
elif not st_line.journal_entry_id.id:
|
||||
raise osv.except_osv(_('Error!'), _('All the account entries lines must be processed in order to close the statement.'))
|
||||
move_ids.append(st_line.journal_entry_id.id)
|
||||
self.pool.get('account.move').post(cr, uid, move_ids, context=context)
|
||||
if move_ids:
|
||||
self.pool.get('account.move').post(cr, uid, move_ids, context=context)
|
||||
self.message_post(cr, uid, [st.id], body=_('Statement %s confirmed, journal items were created.') % (st.name,), context=context)
|
||||
self.link_bank_to_partner(cr, uid, ids, context=context)
|
||||
return self.write(cr, uid, ids, {'state': 'confirm'}, context=context)
|
||||
|
@ -728,7 +738,9 @@ class account_bank_statement_line(osv.osv):
|
|||
move_id = am_obj.create(cr, uid, move_vals, context=context)
|
||||
|
||||
# Create the move line for the statement line
|
||||
amount = currency_obj.compute(cr, uid, st_line.statement_id.currency.id, company_currency.id, st_line.amount, context=context)
|
||||
ctx = context.copy()
|
||||
ctx['date'] = st_line.date
|
||||
amount = currency_obj.compute(cr, uid, st_line.statement_id.currency.id, company_currency.id, st_line.amount, context=ctx)
|
||||
bank_st_move_vals = bs_obj._prepare_bank_move_line(cr, uid, st_line, move_id, amount, company_currency.id, context=context)
|
||||
aml_obj.create(cr, uid, bank_st_move_vals, context=context)
|
||||
# Complete the dicts
|
||||
|
@ -810,6 +822,7 @@ class account_bank_statement_line(osv.osv):
|
|||
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'bank_account_id': fields.many2one('res.partner.bank','Bank Account'),
|
||||
'account_id': fields.many2one('account.account', 'Account', help="This technical field can be used at the statement line creation/import time in order to avoid the reconciliation process on it later on. The statement line will simply create a counterpart on this account"),
|
||||
'statement_id': fields.many2one('account.bank.statement', 'Statement', select=True, required=True, ondelete='cascade'),
|
||||
'journal_id': fields.related('statement_id', 'journal_id', type='many2one', relation='account.journal', string='Journal', store=True, readonly=True),
|
||||
'ref': fields.char('Structured Communication'),
|
||||
|
|
|
@ -139,7 +139,7 @@ openerp.account = function (instance) {
|
|||
}
|
||||
|
||||
// Retreive statement infos and reconciliation data from the model
|
||||
var lines_filter = [['journal_entry_id', '=', false]];
|
||||
var lines_filter = [['journal_entry_id', '=', false], ['account_id', '=', false]];
|
||||
var deferred_promises = [];
|
||||
|
||||
if (self.statement_id) {
|
||||
|
|
|
@ -492,6 +492,8 @@ class pos_session(osv.osv):
|
|||
pos_order_obj._create_account_move_line(cr, uid, order_ids, session, move_id, context=local_context)
|
||||
|
||||
for order in session.order_ids:
|
||||
if order.state == 'done':
|
||||
continue
|
||||
if order.state not in ('paid', 'invoiced'):
|
||||
raise osv.except_osv(
|
||||
_('Error!'),
|
||||
|
@ -811,6 +813,16 @@ class pos_order(osv.osv):
|
|||
'name': order.name + ': ' + (data.get('payment_name', '') or ''),
|
||||
'partner_id': order.partner_id and order.partner_id.id or None,
|
||||
}
|
||||
account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context)
|
||||
args['account_id'] = (order.partner_id and order.partner_id.property_account_receivable \
|
||||
and order.partner_id.property_account_receivable.id) or (account_def and account_def.id) or False
|
||||
|
||||
if not args['account_id']:
|
||||
if not args['partner_id']:
|
||||
msg = _('There is no receivable account defined to make payment.')
|
||||
else:
|
||||
msg = _('There is no receivable account defined to make payment for the partner: "%s" (id:%d).') % (order.partner_id.name, order.partner_id.id,)
|
||||
raise osv.except_osv(_('Configuration Error!'), msg)
|
||||
|
||||
context.pop('pos_session_id', False)
|
||||
|
||||
|
@ -830,10 +842,10 @@ class pos_order(osv.osv):
|
|||
raise osv.except_osv(_('Error!'), _('You have to open at least one cashbox.'))
|
||||
|
||||
args.update({
|
||||
'statement_id' : statement_id,
|
||||
'pos_statement_id' : order_id,
|
||||
'journal_id' : journal_id,
|
||||
'ref' : order.session_id.name,
|
||||
'statement_id': statement_id,
|
||||
'pos_statement_id': order_id,
|
||||
'journal_id': journal_id,
|
||||
'ref': order.session_id.name,
|
||||
})
|
||||
|
||||
statement_line_obj.create(cr, uid, args, context=context)
|
||||
|
|
Loading…
Reference in New Issue