From b6f25bc343dba0c33adf706a3dd94fce9221be02 Mon Sep 17 00:00:00 2001 From: "sbh (Open ERP)" Date: Sat, 24 Apr 2010 10:39:53 +0530 Subject: [PATCH] Task 578: Review the code and remove the cr.execute and use orm method bzr revid: sbh@tinyerp.com-20100424050953-4mtjpjaioohl26y2 --- addons/point_of_sale/pos.py | 79 +++++++++++++---------------------- addons/point_of_sale/stock.py | 37 ++++++++++++++++ 2 files changed, 65 insertions(+), 51 deletions(-) create mode 100644 addons/point_of_sale/stock.py diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py index 58838e38743..3a6b99b0bda 100644 --- a/addons/point_of_sale/pos.py +++ b/addons/point_of_sale/pos.py @@ -123,11 +123,8 @@ class pos_order(osv.osv): tot =0.0 val=None for order in self.browse(cr, uid, ids): - cr.execute("select date_payment from pos_order where id=%d"%(order.id)) - date_p=cr.fetchone() - date_p=date_p and date_p[0] or None - if date_p: - res[order.id]=date_p + if order.date_payment: + res[order.id]=order.date_payment return res cr.execute(" SELECT max(l.date) from account_move_line l, account_move m, account_invoice i, account_move_reconcile r, pos_order o where i.move_id=m.id and l.move_id=m.id and l.reconcile_id=r.id and o.id=%d and o.invoice_id=i.id"%(order.id)) val=cr.fetchone() @@ -150,21 +147,18 @@ class pos_order(osv.osv): tot =0.0 val=None for order in self.browse(cr, uid, ids): - cr.execute("select date_validation from pos_order where id=%d"%(order.id)) - date_p=cr.fetchone() - date_p=date_p and date_p[0] or None - if date_p: - res[order.id]=date_p + if order.date_validation: + res[order.id]=order.date_validation return res discount_allowed=order.company_id.company_discount for line in order.lines: if line.discount > discount_allowed: return {order.id: None } - if order.amount_paid == order.amount_total and not date_p: + if order.amount_paid == order.amount_total and not order.date_validation: cr.execute("select max(date) from account_bank_statement_line where pos_statement_id=%d"%(order.id)) val=cr.fetchone() val=val and val[0] or None - if order.invoice_id and order.invoice_id.move_id and not date_p and not val: + if order.invoice_id and order.invoice_id.move_id and not order.date_validation and not val: for o in order.invoice_id.move_id.line_id: if o.balance==0: if val %s"%(ids[0],comp)) - res2=cr.fetchone() + for order in self.browse(cr,uid,ids): + for line in order.lines: + if line.discount <=comp: + res=line.discount + if line.discount >comp: + res2=line.discount cr.execute("select journal_id from account_bank_statement_line where pos_statement_id=%s "%(ids[0])) res3=cr.fetchall() list_jrnl=[] @@ -345,19 +333,9 @@ class pos_order(osv.osv): 'first_name': fields.char('First Name', size=64), 'state_2': fields.function(_get_v,type='selection',selection=[('to_verify', 'To Verify'), ('accepted', 'Accepted'), ('refused', 'Refused')], string='State', readonly=True, method=True, store=True), - - # 'last_name': fields.char('Last Name', size=64), - # 'street': fields.char('Street', size=64), - # 'zip2': fields.char('Zip', size=64), - # 'city': fields.char('City', size=64), - # 'mobile': fields.char('Mobile', size=64), - # 'email': fields.char('Email', size=64), 'note': fields.text('Internal Notes'), 'nb_print': fields.integer('Number of Print', readonly=True), 'sale_journal': fields.many2one('account.journal', 'Journal', required=True, states={'draft': [('readonly', False)]}, readonly=True, ), - # 'account_receivable': fields.many2one('account.account', - # 'Default Receivable', required=True, states={'draft': [('readonly', False)]}, - # readonly=True, ), 'invoice_wanted': fields.boolean('Create Invoice'), 'note_2': fields.char('Customer Note',size=64), 'type_rec': fields.char('Type of Receipt',size=64), @@ -754,9 +732,7 @@ class pos_order(osv.osv): if not order.partner_id: raise osv.except_osv(_('Error'), _('Please provide a partner for the sale.')) - cr.execute('select a.id from account_account a, res_company p where p.account_receivable=a.id and p.id=%s', (curr_c.id, )) - res=cr.fetchone() - acc=res and res[0] or None + acc= order.partner_id.property_account_receivable.id inv = { 'name': 'Invoice from POS: '+order.name, 'origin': order.name, @@ -808,15 +784,17 @@ class pos_order(osv.osv): account_move_line_obj = self.pool.get('account.move.line') account_period_obj = self.pool.get('account.period') account_tax_obj = self.pool.get('account.tax') + res_obj=self.pool.get('res.users') + property_obj=self.pool.get('ir.property') period = account_period_obj.find(cr, uid, context=context)[0] for order in self.browse(cr, uid, ids, context=context): - curr_c = self.pool.get('res.users').browse(cr, uid, uid).company_id - comp_id = self.pool.get('res.users').browse(cr, order.user_id.id, order.user_id.id).company_id + curr_c =res_obj.browse(cr, uid, uid).company_id + comp_id = res_obj.browse(cr, order.user_id.id, order.user_id.id).company_id comp_id=comp_id and comp_id.id or False to_reconcile = [] group_tax = {} - account_def = self.pool.get('ir.property').get(cr, uid, 'property_account_receivable', 'res.partner', context=context) + account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context) order_account = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def or curr_c.account_receivable.id # Create an entry for the sale @@ -1002,9 +980,8 @@ class pos_order(osv.osv): 'statement_id': False, 'account_id':order_account }) - # account_move_obj.button_validate(cr, uid, [move_id, payment_move_id], context=context) + self.write(cr,uid,order.id,{'state':'done'}) - # account_move_line_obj.reconcile(cr, uid, to_reconcile, type='manual', context=context) return True def cancel_picking(self, cr, uid, ids, context=None): @@ -1016,6 +993,7 @@ class pos_order(osv.osv): def action_payment(self, cr, uid, ids, context=None): vals = {'state': 'payment'} + sequence_obj=self.pool.get('ir.sequence') for pos in self.browse(cr, uid, ids): create_contract_nb = False for line in pos.lines: @@ -1023,7 +1001,7 @@ class pos_order(osv.osv): create_contract_nb = True break if create_contract_nb: - seq = self.pool.get('ir.sequence').get(cr, uid, 'pos.user_%s' % pos.user_saleman.login) + seq = sequence_obj.get(cr, uid, 'pos.user_%s' % pos.user_saleman.login) vals['contract_number'] ='%s-%s' % (pos.user_saleman.login, seq) self.write(cr, uid, ids, vals) @@ -1045,7 +1023,6 @@ class pos_order(osv.osv): for order in self.browse(cr, uid, ids, context=context): if not order.journal_entry: self.create_account_move(cr, uid, ids, context={}) - #self.write(cr, uid, ids, {'state': 'done'}) return True def compute_state(self, cr, uid, id): @@ -1119,7 +1096,6 @@ class pos_order_line(osv.osv): price = self.price_by_product(cr, uid, ids, line.order_id.pricelist_id.id, line.product_id.id, line.qty, line.order_id.partner_id.id) if line.discount!=0.0: res[line.id] = line.price_unit * line.qty * (1 - (line.discount or 0.0) / 100.0) -# res[line.id] = price * line.qty * (1 - (line.discount or 0.0) / 100.0) else: res[line.id]=line.price_unit*line.qty return res @@ -1155,7 +1131,7 @@ class pos_order_line(osv.osv): disc=0.0 if (disc != 0.0 or prod_id) and price_f>0: disc=100-(price/price_f*100) - return {'value':{'discount':disc, 'price_unit':price_f}}#,'notice':''}}#, 'price_subtotal':(price_f*qty*(1-disc))}} + return {'value':{'discount':disc, 'price_unit':price_f}} return {} def onchange_ded(self, cr, uid,ids, val_ded,price_u,*a): @@ -1192,9 +1168,7 @@ class pos_order_line(osv.osv): 'company_id':fields.many2one('res.company', 'Company', required=True), 'notice': fields.char('Discount Notice', size=128, required=True), 'serial_number': fields.char('Serial Number', size=128), -# 'contract_number': fields.char('Contract Number', size=512), 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], required=True, change_default=True), -# 'price_unit': fields.float('Unit Price'), 'price_unit': fields.function(_get_amount, method=True, string='Unit Price', store=True), 'price_ded': fields.float('Discount(Amount)'), 'qty': fields.float('Quantity'), @@ -1257,7 +1231,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 osv.except_osv(_('Error'), _('Create line failed !')) else: vals = { 'qty': qty, @@ -1323,6 +1297,7 @@ class pos_payment(osv.osv): pos_payment() class account_move_line(osv.osv): + _inherit = 'account.move.line' def create(self, cr, user, vals, context={}): pos_obj = self.pool.get('pos.order') @@ -1342,7 +1317,9 @@ account_move_line() class account_move(osv.osv): + _inherit = 'account.move' + def create(self, cr, user, vals, context={}): pos_obj = self.pool.get('pos.order') val_name = vals.get('name', '') diff --git a/addons/point_of_sale/stock.py b/addons/point_of_sale/stock.py new file mode 100644 index 00000000000..9d2b24d69b8 --- /dev/null +++ b/addons/point_of_sale/stock.py @@ -0,0 +1,37 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import osv, fields +import time +import netsvc + + +class stock_picking(osv.osv): + + _inherit = 'stock.picking' + _columns = { + 'pos_order': fields.many2one('pos.order', 'Pos order'), + } +stock_picking() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +