[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.
This commit is contained in:
parent
f6dceb2ef6
commit
69cd13a084
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue