Skip to content
Snippets Groups Projects
Commit 69cd13a0 authored by Martin Trigaux's avatar Martin Trigaux
Browse files

[FIX] point_of_sale: incorrect sequences for orders

A new ir.sequence is generated at pos.config creation for the orders. However it was not used as the type was not set. The fallback was done on the general sequence.
In addition to the sequences being shared, it was not possible to create a pos.order in multicompany (no sequence found for user company, name was null).
Same issue for the pos.order.line.
This patch generates correctly pos.order and pos.order.line sequences at pos.config creation.

Instead of using the pos.config sequence to generate session number (not what this field was intended to), use the existing sequence for pos.session.
Remove company_id value on default pos.session sequence to make sure it's shared between companies and correctly set the prefix.
parent f6dceb2e
No related branches found
No related tags found
No related merge requests found
......@@ -63,9 +63,9 @@ Main Features
'views/templates.xml',
'point_of_sale_report.xml',
'point_of_sale_view.xml',
'point_of_sale_sequence.xml',
'point_of_sale_data.xml',
'report/pos_order_report_view.xml',
'point_of_sale_sequence.xml',
'point_of_sale_workflow.xml',
'account_statement_view.xml',
'account_statement_report.xml',
......
......@@ -186,14 +186,26 @@ class pos_config(osv.osv):
return self.write(cr, uid, ids, {'state' : 'deprecated'}, context=context)
def create(self, cr, uid, values, context=None):
proxy = self.pool.get('ir.sequence')
sequence_values = dict(
name='PoS %s' % values['name'],
padding=5,
prefix="%s/" % values['name'],
)
sequence_id = proxy.create(cr, uid, sequence_values, context=context)
values['sequence_id'] = sequence_id
ir_sequence = self.pool.get('ir.sequence')
# force sequence_id field to new pos.order sequence
values['sequence_id'] = ir_sequence.create(cr, uid, {
'name': 'POS Order %s' % values['name'],
'padding': 4,
'prefix': "%s/" % values['name'],
'code': "pos.order",
'company_id': values.get('company_id', False),
}, context=context)
# TODO master: add field sequence_line_id on model
# this make sure we always have one available per company
ir_sequence.create(cr, uid, {
'name': 'POS order line %s' % values['name'],
'padding': 4,
'prefix': "%s/" % values['name'],
'code': "pos.order.line",
'company_id': values.get('company_id', False),
}, context=context)
return super(pos_config, self).create(cr, uid, values, context=context)
def unlink(self, cr, uid, ids, context=None):
......@@ -399,7 +411,7 @@ class pos_session(osv.osv):
bank_statement_ids.append(statement_id)
values.update({
'name' : pos_config.sequence_id._next(),
'name': self.pool['ir.sequence'].get(cr, uid, 'pos.session'),
'statement_ids' : [(6, 0, bank_statement_ids)],
'config_id': config_id
})
......@@ -464,7 +476,6 @@ class pos_session(osv.osv):
def wkf_action_close(self, cr, uid, ids, context=None):
# Close CashBox
bsl = self.pool.get('account.bank.statement.line')
for record in self.browse(cr, uid, ids, context=context):
for st in record.statement_ids:
if abs(st.difference) > st.journal_id.amount_authorized_diff:
......@@ -722,7 +733,13 @@ class pos_order(osv.osv):
}
def create(self, cr, uid, values, context=None):
values['name'] = self.pool.get('ir.sequence').get(cr, uid, 'pos.order')
if values.get('session_id'):
# set name based on the sequence specified on the config
session = self.pool['pos.session'].browse(cr, uid, values['session_id'], context=context)
values['name'] = session.config_id.sequence_id._next()
else:
# fallback on any pos.order sequence
values['name'] = self.pool.get('ir.sequence').get_id(cr, uid, 'pos.order', 'code', context=context)
return super(pos_order, self).create(cr, uid, values, context=context)
def test_paid(self, cr, uid, ids, context=None):
......
......@@ -10,23 +10,11 @@
<field name="name">POS Order</field>
<field name="code">pos.order</field>
</record>
<record model="ir.sequence" id="seq_pos_order">
<field name="name">POS Order</field>
<field name="code">pos.order</field>
<field name="prefix">POS</field>
<field name="padding">4</field>
</record>
<record model="ir.sequence.type" id="seq_type_pos_order_line">
<field name="name">POS order line</field>
<field name="code">pos.order.line</field>
</record>
<record model="ir.sequence" id="seq_pos_order_line">
<field name="name">POS order line</field>
<field name="code">pos.order.line</field>
<field name="prefix">POSL</field>
<field name="padding">4</field>
</record>
<record model="ir.sequence.type" id="seq_type_pos_session">
<field name="name">POS Session</field>
......@@ -36,8 +24,9 @@
<record model="ir.sequence" id="seq_pos_session">
<field name="name">POS Session</field>
<field name="code">pos.session</field>
<field name="prefix">POS/%(day)s/(month)s/%(year)s/</field>
<field name="padding">4</field>
<field name="prefix">POS/%(year)s/%(month)s/%(day)s/</field>
<field name="padding">2</field>
<field name="company_id" eval="False" />
</record>
</data>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment