diff --git a/addons/point_of_sale/report/pos_receipt.rml b/addons/point_of_sale/report/pos_receipt.rml index 02b8a5b1a1a..8234952cf85 100644 --- a/addons/point_of_sale/report/pos_receipt.rml +++ b/addons/point_of_sale/report/pos_receipt.rml @@ -75,7 +75,7 @@ [[ address and display_address(address)]] Tel : [[ address and address.phone ]] User : [[ o.user_id.name ]] - Warehouse : [[ o.warehouse_id.name ]] + Date : [[ o.date_order ]] diff --git a/addons/point_of_sale/security/point_of_sale_security.xml b/addons/point_of_sale/security/point_of_sale_security.xml index 5e98bcba49e..58096a0b21d 100644 --- a/addons/point_of_sale/security/point_of_sale_security.xml +++ b/addons/point_of_sale/security/point_of_sale_security.xml @@ -23,7 +23,7 @@ Point Of Sale Config - [('warehouse_id.company_id','child_of',[user.company_id.id])] + [('company_id','child_of',[user.company_id.id])] diff --git a/addons/point_of_sale/wizard/pos_return.py b/addons/point_of_sale/wizard/pos_return.py deleted file mode 100644 index cede85d1d38..00000000000 --- a/addons/point_of_sale/wizard/pos_return.py +++ /dev/null @@ -1,244 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp.osv import osv,fields -from openerp.tools.translate import _ -import time - -class pos_return(osv.osv_memory): - _name = 'pos.return' - _description = 'Point of sale return' - _columns = { - 'pos_moves_ids' : fields.one2many('pos.return.memory', 'pos_moves_id', 'Moves'), - } - - def default_get(self, cr, uid, fields, context=None): - """ - To get default values for the object. - - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param fields: List of fields for which we want default values - @param context: A standard dictionary - - @return: A dictionary which of fields with values. - - """ - res = super(pos_return, self).default_get(cr, uid, fields, context=context) - order_obj = self.pool.get('pos.order') - if context is None: - context={} - active_ids = context.get('active_ids') - result=[] - for order in order_obj.browse(cr, uid, active_ids, context=context): - for line in order.lines: - result.append({ - 'product_id' : line.product_id.id, - 'quantity' : line.qty, - 'line_id':line.id - }) - res.update({'pos_moves_ids': result}) - return res - - def create_returns(self, cr, uid, data, context=None): - """ - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param context: A standard dictionary - - @return: Return the add product form again for adding more product - - """ - if context is None: - context = {} - current_rec = self.browse(cr, uid, data, context=context)[0] - order_obj =self.pool.get('pos.order') - line_obj = self.pool.get('pos.order.line') - pos_current = order_obj.browse(cr, uid, context.get('active_id'), context=context) - for pos_line in pos_current.lines: - for record in current_rec.pos_moves_ids: - if pos_line.id == record.line_id: - less_qty = record.quantity - line_obj.write(cr, uid, pos_line.id, {'qty':pos_line.qty - less_qty}, context=context) - return { - 'name': _('Add Product'), - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'pos.add.product', - 'view_id': False, - 'target':'new', - 'views': False, - 'context': context, - 'type': 'ir.actions.act_window', - } - - -class add_product(osv.osv_memory): - _inherit = 'pos.add.product' - def select_product(self, cr, uid, ids, context=None): - """ - To get the product and quantity and add in order . - @param self: The object pointer. - @param cr: A database cursor - @param uid: ID of the user currently logged in - @param context: A standard dictionary - @return : Retrun the add product form again for adding more product - """ - if context is None: - context = {} - - active_id=context.get('active_id', False) - data = self.read(cr, uid, ids) - data = data and data[0] or False - if active_id: - order_obj = self.pool.get('pos.order') - picking_obj = self.pool.get('stock.picking') - stock_move_obj = self.pool.get('stock.move') - property_obj= self.pool.get("ir.property") - date_cur=time.strftime('%Y-%m-%d') - uom_obj = self.pool.get('product.uom') - prod_obj=self.pool.get('product.product') - order_obj.add_product(cr, uid, active_id, data['product_id'], data['quantity'], context=context) - - for order_id in order_obj.browse(cr, uid, [active_id], context=context): - prod=data['product_id'] - qty=data['quantity'] - stock_dest_id = property_obj.get(cr, uid, 'property_stock_customer', 'res.partner', context=context).id - cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w " - "WHERE w.lot_stock_id=s.id AND w.id=%s ", - (order_id.warehouse_id.id,)) - res=cr.fetchone() - location_id=res and res[0] or None - prod_id=prod_obj.browse(cr, uid, prod, context=context) - new_picking=picking_obj.create(cr, uid, { - 'name':'%s (Added)' %order_id.name, - 'move_lines':[], - 'state':'draft', - 'picking_type_id': self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'picking_type_out', context=context).id, - 'date':date_cur - }) - stock_move_obj.create(cr, uid, { - 'product_uom_qty': qty, - 'product_uos_qty': uom_obj._compute_qty(cr, uid, prod_id.uom_id.id, qty, prod_id.uom_id.id), - 'picking_id':new_picking, - 'product_uom':prod_id.uom_id.id, - 'location_id':location_id, - 'product_id':prod_id.id, - 'location_dest_id':stock_dest_id, - 'name':'%s (return)' %order_id.name, - 'date':date_cur - }) - - picking_obj.signal_button_confirm(cr, uid, [new_picking]) - picking_obj.force_assign(cr, uid, [new_picking], context) - order_obj.write(cr,uid,active_id,{'picking_id':new_picking}) - - return { - 'name': _('Add Product'), - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'pos.add.product', - 'view_id': False, - 'target':'new', - 'context':context, - 'views': False, - 'type': 'ir.actions.act_window', - } - - def close_action(self, cr, uid, ids, context=None): - if context is None: context = {} - active_ids=context.get('active_ids', False) - order_obj = self.pool.get('pos.order') - lines_obj = self.pool.get('pos.order.line') - picking_obj = self.pool.get('stock.picking') - stock_move_obj = self.pool.get('stock.move') - property_obj= self.pool.get("ir.property") - invoice_obj=self.pool.get('account.invoice') - date_cur=time.strftime('%Y-%m-%d %H:%M:%S') - uom_obj = self.pool.get('product.uom') - return_boj=self.pool.get('pos.return') - return_id = return_boj.search(cr,uid,[]) - data = {} - if return_id: - data = return_boj.read(cr,uid,return_id,[])[0] - - self_data = self.browse(cr, uid, ids, context=context)[0] - order_obj.add_product(cr, uid, active_ids[0], self_data.product_id.id, self_data.quantity, context=context) - - for order_id in order_obj.browse(cr, uid, active_ids, context=context): - stock_dest_id = property_obj.get(cr, uid, 'property_stock_customer', 'res.partner', context=context).id - cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w " - " WHERE w.lot_stock_id=s.id AND w.id=%s ", - (order_id.warehouse_id.id,)) - res=cr.fetchone() - location_id=res and res[0] or None - - if order_id.invoice_id: - invoice_obj.refund(cr, uid, [order_id.invoice_id.id], time.strftime('%Y-%m-%d'), False, order_id.name, context=context) - new_picking=picking_obj.create(cr, uid, { - 'name':'%s (return)' %order_id.name, - 'move_lines':[], 'state':'draft', - 'type':'in', - 'date':date_cur - }) - for line in order_id.lines: - key= 'return%s' % line.id - if line.id: - if data.has_key(key): - qty = data[key] - lines_obj.write(cr,uid,[line.id], { - 'qty':line.qty-(data[key] or 0.0) - }) - else: - qty = line.qty - stock_move_obj.create(cr, uid, { - 'product_uom_qty': qty, - 'product_uos_qty': uom_obj._compute_qty(cr, uid, qty, line.product_id.uom_id.id), - 'picking_id':new_picking, - 'product_uom':line.product_id.uom_id.id, - 'location_id':location_id, - 'product_id':line.product_id.id, - 'location_dest_id':stock_dest_id, - 'name':'%s (return)' % order_id.name, - 'date':date_cur, - }) - picking_obj.signal_button_confirm(cr, uid, [new_picking]) - picking_obj.force_assign(cr, uid, [new_picking], context) - obj=order_obj.browse(cr,uid, active_ids[0]) - context.update({'return':'return'}) - - if obj.amount_total != obj.amount_paid: - return { - 'name': _('Make Payment'), - 'context ':context, - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'pos.make.payment', - 'view_id': False, - 'target': 'new', - 'views': False, - 'type': 'ir.actions.act_window', - } - return True - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/wizard/pos_return_view.xml b/addons/point_of_sale/wizard/pos_return_view.xml deleted file mode 100644 index 62e2f3012d9..00000000000 --- a/addons/point_of_sale/wizard/pos_return_view.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - pos.return - pos.return - -
-
-
-
-
-
- - - Return lines - pos.return - form - form - new - - - - pos.return.memory - pos.return.memory - - - - - - - - - - - pos.return.memory - pos.return.memory - -
- - - - - -
-
-
- -
-