From e3661172efed1ebe0bd2526deb6340d530827bec Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 2 Jun 2009 11:34:57 +0200 Subject: [PATCH] * syntax change: if 'line' is a browse_record: don't use: line.unlink(cr, uid, [line.id], context) use: line.unlink(context=context) * pep8 bzr revid: olt@tinyerp.com-20090602093457-6yi7ucfo6kbhc5y9 --- addons/point_of_sale/pos.py | 56 +++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py index cc948c0cb18..fc3fb850e3f 100644 --- a/addons/point_of_sale/pos.py +++ b/addons/point_of_sale/pos.py @@ -26,6 +26,21 @@ from osv import fields, osv from mx import DateTime from tools.translate import _ import tools +from wizard import except_wizard + + +# XXX +""" +File "/home/oli/work/projects/libeurop/server/bin/addons/point_of_sale/pos.py", line 510, in action_invoice +[2009-05-26 13:33:55,780] ERROR:web-services:[30]: inv_id = inv_ref.create(cr, uid, inv, context) +[2009-05-26 13:33:55,780] ERROR:web-services:[31]: File "/home/oli/work/projects/libeurop/server/bin/osv/orm.py", line 2451, in create +[2009-05-26 13:33:55,780] ERROR:web-services:[32]: cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2)) +[2009-05-26 13:33:55,780] ERROR:web-services:[33]: File "/home/oli/work/projects/libeurop/server/bin/sql_db.py", line 76, in wrapper +[2009-05-26 13:33:55,780] ERROR:web-services:[34]: return f(self, *args, **kwargs) +[2009-05-26 13:33:55,780] ERROR:web-services:[35]: File "/home/oli/work/projects/libeurop/server/bin/sql_db.py", line 118, in execute +[2009-05-26 13:33:55,780] ERROR:web-services:[36]: res = self._obj.execute(query, params) +[2009-05-26 13:33:55,800] ERROR:web-services:[37]: IntegrityError: null value in column "address_invoice_id" violates not-null constraint +""" class pos_config_journal(osv.osv): @@ -44,11 +59,11 @@ class pos_order(osv.osv): _name = "pos.order" _description = "Point of Sale" _order = "date_order, create_date desc" - _order = "date_order desc" + _order = "date_order desc, name desc" def unlink(self, cr, uid, ids, context={}): for rec in self.browse(cr, uid, ids, context=context): - if rec.state<>'draft': + if rec.state != 'draft': raise osv.except_osv(_('Invalid action !'), _('Cannot delete a point of sale which is already confirmed !')) return super(pos_order, self).unlink(cr, uid, ids, context=context) @@ -56,7 +71,7 @@ class pos_order(osv.osv): if not part: return {} pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id - return {'value':{'pricelist_id': pricelist}} + return {'value': {'pricelist_id': pricelist}} def _amount_total(self, cr, uid, ids, field_name, arg, context): id_set = ",".join(map(str, ids)) @@ -68,7 +83,7 @@ class pos_order(osv.osv): ) AS amount FROM pos_order p LEFT OUTER JOIN pos_order_line l ON (p.id=l.order_id) - WHERE p.id IN (""" + id_set +""") GROUP BY p.id """) + WHERE p.id IN (""" + id_set +""") GROUP BY p.id """) res = dict(cr.fetchall()) for rec in self.browse(cr, uid, ids, context): @@ -281,21 +296,21 @@ class pos_order(osv.osv): # delete this product from old picking: for old_line in old_picking.move_lines: if old_line.product_id.id == p_id: - old_line.write(cr, uid, [old_line.id], {'state': 'draft'}) # cannot delete if not draft - old_line.unlink(cr, uid, [old_line.id], context) + old_line.write({'state': 'draft'}, context=context) # cannot delete if not draft + old_line.unlink(context=context) elif qty_to_del > 0: # product qty has been modified (customer took less than the ordered quantity): # subtract qty from old picking: for old_line in old_picking.move_lines: if old_line.product_id.id == p_id: - old_line.write(cr, uid, [old_line.id], {'product_qty': old_line.product_qty - qty_to_del}) + old_line.write({'product_qty': old_line.product_qty - qty_to_del}, context=context) # add qty to new picking: - line.write(cr, uid, [line.id], {'product_qty': qty_to_del}) + line.write({'product_qty': qty_to_del}, context=context) else: # product hasn't changed (customer took it without any change): # delete this product from new picking: - line.unlink(cr, uid, [line.id], context) + line.unlink(context=context) else: # delete it in the new picking: - line.unlink(cr, uid, [line.id], context) + line.unlink(context=context) def create_picking(self, cr, uid, ids, context={}): """Create a picking for each order and validate it.""" @@ -476,7 +491,6 @@ class pos_order(osv.osv): }) clone_list.append(clone_id) - for clone in self.browse(cr, uid, clone_list): for order_line in clone.lines: line_obj.write(cr, uid, [order_line.id], { @@ -690,12 +704,18 @@ class pos_order(osv.osv): for payment in order.payments: + if not payment.journal_id.default_debit_account_id: + raise osv.except_osv(_('No Default Debit Account !'), + _('You have to define a Default Debit Account for your Financial Journals!\n')) + + if not payment.journal_id.default_credit_account_id: + raise osv.except_osv(_('No Default Credit Account !'), + _('You have to define a Default Credit Account for your Financial Journals!\n')) + if payment.amount > 0: - payment_account = \ - payment.journal_id.default_debit_account_id.id + payment_account = payment.journal_id.default_debit_account_id.id else: - payment_account = \ - payment.journal_id.default_credit_account_id.id + payment_account = payment.journal_id.default_credit_account_id.id if payment.amount > 0: order_account = \ @@ -823,7 +843,7 @@ class pos_order_line(osv.osv): product_id = self.pool.get('product.product').search(cr, uid, [('ean13','=', ean)]) if not product_id: - return False + return False # search price product product = self.pool.get('product.product').read(cr, uid, product_id) @@ -845,7 +865,7 @@ class pos_order_line(osv.osv): } line_id = self.create(cr, uid, vals) if not line_id: - raise wizard.except_wizard(_('Error'), _('Create line failed !')) + raise except_wizard(_('Error'), _('Create line failed !')) else: vals = { 'qty': qty, @@ -853,7 +873,7 @@ class pos_order_line(osv.osv): } line_id = self.write(cr, uid, order_line_id, vals) if not line_id: - raise wizard.except_wizard(_('Error'), _('Modify line failed !')) + raise except_wizard(_('Error'), _('Modify line failed !')) line_id = order_line_id price_line = float(qty)*float(price)