['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
- Sale Shop multi-company
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
From 5af2e2ff78dab87eb2fca2b821e341e1340964ad Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Mon, 21 Jan 2013 15:41:04 +0530
Subject: [PATCH 02/72] [IMP]remove sale.shop from sale_analytic_plans
bzr revid: sgo@tinyerp.com-20130121101104-g5xzeitx6exjdrmk
---
addons/sale_analytic_plans/sale_analytic_plans.py | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/addons/sale_analytic_plans/sale_analytic_plans.py b/addons/sale_analytic_plans/sale_analytic_plans.py
index 2abbab7ab38..5ccae840a73 100644
--- a/addons/sale_analytic_plans/sale_analytic_plans.py
+++ b/addons/sale_analytic_plans/sale_analytic_plans.py
@@ -39,14 +39,4 @@ class sale_order_line(osv.osv):
sale_order_line()
-class sale_order(osv.osv):
- _inherit = "sale.order"
-
- def onchange_shop_id(self, cr, uid, ids, shop_id, context=None):
- # Remove the project_id from the result of super() call, if any, as this field is not in the view anymore
- res = super(sale_order, self).onchange_shop_id(cr, uid, ids, shop_id, context=context)
- if res.get('value',{}).get('project_id'):
- del(res['value']['project_id'])
- return res
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From 923115f895cb9f5f555ecc990e746765beb2872f Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Mon, 21 Jan 2013 15:41:27 +0530
Subject: [PATCH 03/72] [IMP]remove total sale.shop from sale_crm
bzr revid: sgo@tinyerp.com-20130121101127-4a1anxi5jkdeivtz
---
addons/sale_crm/wizard/crm_make_sale.py | 8 --------
addons/sale_crm/wizard/crm_make_sale_view.xml | 1 -
2 files changed, 9 deletions(-)
diff --git a/addons/sale_crm/wizard/crm_make_sale.py b/addons/sale_crm/wizard/crm_make_sale.py
index a052f47ca1f..7abdaa9e04d 100644
--- a/addons/sale_crm/wizard/crm_make_sale.py
+++ b/addons/sale_crm/wizard/crm_make_sale.py
@@ -93,8 +93,6 @@ class crm_make_sale(osv.osv_memory):
'origin': _('Opportunity: %s') % str(case.id),
'section_id': case.section_id and case.section_id.id or False,
'categ_ids': [(6, 0, [categ_id.id for categ_id in case.categ_ids])],
- 'shop_id': make.shop_id.id,
- 'partner_id': partner.id,
'pricelist_id': pricelist,
'partner_invoice_id': partner_addr['invoice'],
'partner_shipping_id': partner_addr['delivery'],
@@ -137,18 +135,12 @@ class crm_make_sale(osv.osv_memory):
}
return value
- def _get_shop_id(self, cr, uid, ids, context=None):
- cmpny_id = self.pool.get('res.users')._get_company(cr, uid, context=context)
- shop = self.pool.get('sale.shop').search(cr, uid, [('company_id', '=', cmpny_id)])
- return shop and shop[0] or False
_columns = {
- 'shop_id': fields.many2one('sale.shop', 'Shop', required=True),
'partner_id': fields.many2one('res.partner', 'Customer', required=True, domain=[('customer','=',True)]),
'close': fields.boolean('Mark Won', help='Check this to close the opportunity after having created the sales order.'),
}
_defaults = {
- 'shop_id': _get_shop_id,
'close': False,
'partner_id': _selectPartner,
}
diff --git a/addons/sale_crm/wizard/crm_make_sale_view.xml b/addons/sale_crm/wizard/crm_make_sale_view.xml
index 2207cf536e2..695f3e919eb 100644
--- a/addons/sale_crm/wizard/crm_make_sale_view.xml
+++ b/addons/sale_crm/wizard/crm_make_sale_view.xml
@@ -10,7 +10,6 @@
-
- Chicago Shop
-
-
-
-
-
- Birmingham shop
-
-
-
-
From 5600ce8a3416af5852be7b8e743f073c34bbc73a Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Tue, 22 Jan 2013 16:38:57 +0530
Subject: [PATCH 05/72] [IMP]remove date related sale.shop and add warehouse_id
as new field to handle location in sale order
bzr revid: sgo@tinyerp.com-20130122110857-61jsli1sywu3h5q0
---
addons/sale/sale.py | 7 +++++
addons/sale_stock/__openerp__.py | 1 -
addons/sale_stock/report/sale_report.py | 2 --
addons/sale_stock/res_config.py | 3 ---
addons/sale_stock/res_config_view.xml | 6 -----
addons/sale_stock/sale_stock.py | 23 +++++++++--------
addons/sale_stock/sale_stock_data.xml | 11 --------
addons/sale_stock/sale_stock_demo.xml | 18 ++++++++++++-
addons/sale_stock/sale_stock_view.xml | 34 +++----------------------
9 files changed, 39 insertions(+), 66 deletions(-)
delete mode 100644 addons/sale_stock/sale_stock_data.xml
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index fe7c8752078..8636e2393da 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -151,6 +151,12 @@ class sale_order(osv.osv):
for line in self.pool.get('sale.order.line').browse(cr, uid, ids, context=context):
result[line.order_id.id] = True
return result.keys()
+
+ def _get_default_company(self, cr, uid, context=None):
+ company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
+ if not company_id:
+ raise osv.except_osv(_('Error!'), _('There is no default company for the current user!'))
+ return company_id
_columns = {
'name': fields.char('Order Reference', size=64, required=True,
@@ -220,6 +226,7 @@ class sale_order(osv.osv):
_defaults = {
'date_order': fields.date.context_today,
'order_policy': 'manual',
+ 'company_id': _get_default_company,
'state': 'draft',
'user_id': lambda obj, cr, uid, context: uid,
'name': lambda obj, cr, uid, context: '/',
diff --git a/addons/sale_stock/__openerp__.py b/addons/sale_stock/__openerp__.py
index a849df295d4..fd20748aa75 100644
--- a/addons/sale_stock/__openerp__.py
+++ b/addons/sale_stock/__openerp__.py
@@ -57,7 +57,6 @@ You can choose flexible invoicing methods:
'report/sale_report_view.xml',
'process/sale_stock_process.xml',
],
- 'data': ['sale_stock_data.xml'],
'demo_xml': ['sale_stock_demo.xml'],
'test': ['test/cancel_order_sale_stock.yml',
'test/picking_order_policy.yml',
diff --git a/addons/sale_stock/report/sale_report.py b/addons/sale_stock/report/sale_report.py
index ade84b269e6..d0f8510087c 100644
--- a/addons/sale_stock/report/sale_report.py
+++ b/addons/sale_stock/report/sale_report.py
@@ -57,7 +57,6 @@ class sale_report(osv.osv):
to_char(s.date_order, 'YYYY-MM-DD') as day,
s.partner_id as partner_id,
s.user_id as user_id,
- s.shop_id as shop_id,
s.company_id as company_id,
extract(epoch from avg(date_trunc('day',s.date_confirm)-date_trunc('day',s.create_date)))/(24*60*60)::decimal(16,2) as delay,
s.state,
@@ -83,7 +82,6 @@ class sale_report(osv.osv):
s.date_confirm,
s.partner_id,
s.user_id,
- s.shop_id,
s.company_id,
s.state,
s.shipped,
diff --git a/addons/sale_stock/res_config.py b/addons/sale_stock/res_config.py
index 3a6dcb404dd..5a0d9e36cf7 100644
--- a/addons/sale_stock/res_config.py
+++ b/addons/sale_stock/res_config.py
@@ -51,9 +51,6 @@ class sale_configuration(osv.osv_memory):
'group_mrp_properties': fields.boolean('Product properties on order lines',
implied_group='sale.group_mrp_properties',
help="Allows you to tag sales order lines with properties."),
- 'group_multiple_shops': fields.boolean("Manage multiple shops",
- implied_group='stock.group_locations',
- help="This allows to configure and use multiple shops."),
'module_project_timesheet': fields.boolean("Project Timesheet"),
'module_project_mrp': fields.boolean("Project MRP"),
}
diff --git a/addons/sale_stock/res_config_view.xml b/addons/sale_stock/res_config_view.xml
index ad3b91b2a30..93bc8e5980e 100644
--- a/addons/sale_stock/res_config_view.xml
+++ b/addons/sale_stock/res_config_view.xml
@@ -59,12 +59,6 @@
-
-
-
-
-
-
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index 1b5ddefbe74..c2a52b8de7e 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -26,14 +26,6 @@ from openerp.osv import fields, osv
from openerp import netsvc
from openerp.tools.translate import _
-class sale_shop(osv.osv):
- _inherit = "sale.shop"
- _columns = {
- 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
- }
-
-sale_shop()
-
class sale_order(osv.osv):
_inherit = "sale.order"
@@ -72,6 +64,13 @@ class sale_order(osv.osv):
vals.update({'invoice_quantity': 'procurement'})
order = super(sale_order, self).create(cr, uid, vals, context=context)
return order
+
+ def _get_default_warehouse(self, cr, uid, context=None):
+ company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
+ warehouse_ids = self.pool.get('stock.warehouse').search(cr, uid, [('company_id','=',company_id)], context=context)
+ if not warehouse_ids:
+ raise osv.except_osv(_('Error!'), _('There is no default location for the current user\'s company!'))
+ return warehouse_ids[0]
# This is False
def _picked_rate(self, cr, uid, ids, name, arg, context=None):
@@ -140,11 +139,13 @@ class sale_order(osv.osv):
'picking_ids': fields.one2many('stock.picking.out', 'sale_id', 'Related Picking', readonly=True, help="This is a list of delivery orders that has been generated for this sales order."),
'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sales order has been delivered. This field is updated only after the scheduler(s) have been launched."),
'picked_rate': fields.function(_picked_rate, string='Picked', type='float'),
+ 'warehouse_id': fields.many2one('stock.warehouse', 'Location'),
'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on',
help="The sales order will automatically create the invoice proposition (draft invoice).\
You have to choose if you want your invoice based on ordered ", required=True, readonly=True, states={'draft': [('readonly', False)]}),
}
_defaults = {
+ 'warehouse_id': _get_default_warehouse,
'picking_policy': 'direct',
'order_policy': 'manual',
'invoice_quantity': 'order',
@@ -276,7 +277,7 @@ class sale_order(osv.osv):
or line.product_uom_qty,
'product_uos': (line.product_uos and line.product_uos.id)\
or line.product_uom.id,
- 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,
+ 'location_id': order.warehouse_id.lot_stock_id.id,
'procure_method': line.type,
'move_id': move_id,
'company_id': order.company_id.id,
@@ -284,8 +285,8 @@ class sale_order(osv.osv):
}
def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None):
- location_id = order.shop_id.warehouse_id.lot_stock_id.id
- output_id = order.shop_id.warehouse_id.lot_output_id.id
+ location_id = order.warehouse_id.lot_stock_id.id
+ output_id = order.warehouse_id.lot_output_id.id
return {
'name': line.name,
'picking_id': picking_id,
diff --git a/addons/sale_stock/sale_stock_data.xml b/addons/sale_stock/sale_stock_data.xml
deleted file mode 100644
index bb4944bd87e..00000000000
--- a/addons/sale_stock/sale_stock_data.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/addons/sale_stock/sale_stock_demo.xml b/addons/sale_stock/sale_stock_demo.xml
index 15b1e60b829..2e7b641659d 100644
--- a/addons/sale_stock/sale_stock_demo.xml
+++ b/addons/sale_stock/sale_stock_demo.xml
@@ -3,21 +3,37 @@
+
prepaid
-
+
+
+
+
+
+
+
+
+
+
prepaid
+
picking
+
picking
+
+
+
+
diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml
index bebb95f0088..349af88ceb1 100644
--- a/addons/sale_stock/sale_stock_view.xml
+++ b/addons/sale_stock/sale_stock_view.xml
@@ -2,31 +2,6 @@
-
- sale.shop.inherit.form
- sale.shop
-
-
-
-
-
-
-
-
-
-
- sale.shop.sale.stock
- sale.shop
-
-
-
-
-
-
-
-
-
-
sale.order.form.sale.stock
sale.order
@@ -48,17 +23,14 @@
-
-
-
-
@@ -78,7 +50,7 @@
groups="sale.group_mrp_properties"/>
-
+
From e4250d15586ed6f1cd3c68f2334a8c2d97fce52d Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Wed, 23 Jan 2013 17:03:06 +0530
Subject: [PATCH 06/72] [IMP]remove sale.shop from pos and improve code
bzr revid: sgo@tinyerp.com-20130123113306-n7enol5as84sv0g2
---
addons/point_of_sale/point_of_sale.py | 21 +++++++++----------
addons/point_of_sale/point_of_sale_view.xml | 8 +++----
.../point_of_sale/report/pos_order_report.py | 6 +++---
.../report/pos_order_report_view.xml | 2 +-
.../security/ir.model.access.csv | 2 +-
addons/point_of_sale/static/src/js/models.js | 13 +++++++-----
addons/point_of_sale/wizard/pos_return.py | 6 +++---
7 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 970eb1fbed7..4bfef6ce707 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -51,7 +51,7 @@ class pos_config(osv.osv):
'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel',
'pos_config_id', 'journal_id', 'Available Payment Methods',
domain="[('journal_user', '=', True )]",),
- 'shop_id' : fields.many2one('sale.shop', 'Shop',
+ 'warehouse_id' : fields.many2one('stock.warehouse', 'Location',
required=True),
'journal_id' : fields.many2one('account.journal', 'Sale Journal',
domain=[('type', '=', 'sale')],
@@ -112,13 +112,13 @@ class pos_config(osv.osv):
res = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale')], limit=1)
return res and res[0] or False
- def _default_shop(self, cr, uid, context=None):
- res = self.pool.get('sale.shop').search(cr, uid, [])
+ def _default_warehouse(self, cr, uid, context=None):
+ res = self.pool.get('stock.warehouse').search(cr, uid, [])
return res and res[0] or False
_defaults = {
'state' : POS_CONFIG_STATE[0][0],
- 'shop_id': _default_shop,
+ 'warehouse_id': _default_warehouse,
'journal_id': _default_sale_journal,
'group_by' : True,
}
@@ -306,7 +306,7 @@ class pos_session(osv.osv):
# the .xml files as the CoA is not yet installed.
jobj = self.pool.get('pos.config')
pos_config = jobj.browse(cr, uid, config_id, context=context)
- context.update({'company_id': pos_config.shop_id.company_id.id})
+ context.update({'company_id': pos_config.warehouse_id.company_id.id})
if not pos_config.journal_id:
jid = jobj.default_get(cr, uid, ['journal_id'], context=context)['journal_id']
if jid:
@@ -333,7 +333,7 @@ class pos_session(osv.osv):
bank_values = {
'journal_id' : journal.id,
'user_id' : uid,
- 'company_id' : pos_config.shop_id.company_id.id
+ 'company_id' : pos_config.warehouse_id.company_id.id
}
statement_id = self.pool.get('account.bank.statement').create(cr, uid, bank_values, context=context)
bank_statement_ids.append(statement_id)
@@ -575,7 +575,7 @@ class pos_order(osv.osv):
_columns = {
'name': fields.char('Order Ref', size=64, required=True, readonly=True),
'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True),
- 'shop_id': fields.related('session_id', 'config_id', 'shop_id', relation='sale.shop', type='many2one', string='Shop', store=True, readonly=True),
+ 'warehouse_id': fields.related('session_id', 'config_id', 'warehouse_id', relation='stock.warehouse', type='many2one', string='Location', store=True, readonly=True),
'date_order': fields.datetime('Order Date', readonly=True, select=True),
'user_id': fields.many2one('res.users', 'Salesman', help="Person who uses the the cash register. It can be a reliever, a student or an interim employee."),
'amount_tax': fields.function(_amount_all, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
@@ -619,8 +619,7 @@ class pos_order(osv.osv):
session_ids = self._default_session(cr, uid, context)
if session_ids:
session_record = self.pool.get('pos.session').browse(cr, uid, session_ids, context=context)
- shop = self.pool.get('sale.shop').browse(cr, uid, session_record.config_id.shop_id.id, context=context)
- return shop.pricelist_id and shop.pricelist_id.id or False
+ return session_record.user_id.partner_id.property_product_pricelist and session_record.user_id.partner_id.property_product_pricelist.id or False
return False
_defaults = {
@@ -671,8 +670,8 @@ class pos_order(osv.osv):
'auto_picking': True,
}, context=context)
self.write(cr, uid, [order.id], {'picking_id': picking_id}, context=context)
- location_id = order.shop_id.warehouse_id.lot_stock_id.id
- output_id = order.shop_id.warehouse_id.lot_output_id.id
+ location_id = order.warehouse_id.lot_stock_id.id
+ output_id = order.warehouse_id.lot_output_id.id
for line in order.lines:
if line.product_id and line.product_id.type == 'service':
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 8a53015b7d7..3cf920d8a11 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -84,7 +84,7 @@
-
+
@@ -771,7 +771,7 @@
-
+
@@ -809,7 +809,7 @@
-
+
@@ -823,7 +823,7 @@
-
+
diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py
index 62250f11e17..41bb1a4e754 100644
--- a/addons/point_of_sale/report/pos_order_report.py
+++ b/addons/point_of_sale/report/pos_order_report.py
@@ -41,7 +41,7 @@ class pos_order_report(osv.osv):
'price_total':fields.float('Total Price', readonly=True),
'total_discount':fields.float('Total Discount', readonly=True),
'average_price': fields.float('Average Price', readonly=True,group_operator="avg"),
- 'shop_id':fields.many2one('sale.shop', 'Shop', readonly=True),
+ 'warehouse_id':fields.many2one('stock.warehouse', 'Location', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
'nbr':fields.integer('# of Lines', readonly=True),
'product_qty':fields.integer('# of Qty', readonly=True),
@@ -69,7 +69,7 @@ class pos_order_report(osv.osv):
s.partner_id as partner_id,
s.state as state,
s.user_id as user_id,
- s.shop_id as shop_id,
+ s.warehouse_id as warehouse_id,
s.company_id as company_id,
s.sale_journal as journal_id,
l.product_id as product_id
@@ -80,7 +80,7 @@ class pos_order_report(osv.osv):
group by
to_char(s.date_order, 'dd-MM-YYYY'),to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'),
to_char(s.date_order, 'YYYY-MM-DD'), s.partner_id,s.state,
- s.user_id,s.shop_id,s.company_id,s.sale_journal,l.product_id,s.create_date
+ s.user_id,s.warehouse_id,s.company_id,s.sale_journal,l.product_id,s.create_date
having
sum(l.qty * u.factor) != 0)""")
diff --git a/addons/point_of_sale/report/pos_order_report_view.xml b/addons/point_of_sale/report/pos_order_report_view.xml
index 8d7bf84171a..135b6dcadaa 100644
--- a/addons/point_of_sale/report/pos_order_report_view.xml
+++ b/addons/point_of_sale/report/pos_order_report_view.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/addons/point_of_sale/security/ir.model.access.csv b/addons/point_of_sale/security/ir.model.access.csv
index 1d2c22053fb..b278c48e1f2 100644
--- a/addons/point_of_sale/security/ir.model.access.csv
+++ b/addons/point_of_sale/security/ir.model.access.csv
@@ -8,7 +8,7 @@ access_account_journal_pos_user,account.journal pos_user,account.model_account_j
access_account_move_pos_user,account.move pos_user,account.model_account_move,group_pos_user,1,1,1,0
access_account_account_pos_user,account.account pos_user,account.model_account_account,group_pos_user,1,0,0,0
access_stock_picking_pos_user,stock.picking pos_user,stock.model_stock_picking,group_pos_user,1,1,1,1
-access_sale_shop_pos_user,sale.shop pos_user,sale.model_sale_shop,group_pos_user,1,0,0,0
+access_stock_warehouse_pos_user,stock.warehouse pos_user,stock.model_stock_warehouse,group_pos_user,1,0,0,0
access_pos_order_stock_worker,pos.order stock_worker,model_pos_order,stock.group_stock_user,1,0,0,0
access_stock_move_pos_user,stock.move pos_user,stock.model_stock_move,group_pos_user,1,1,1,1
access_report_sales_by_user_pos,report.sales.by.user.pos,model_report_sales_by_user_pos,group_pos_user,1,0,0,0
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index 556ea482aad..c4e101fe43e 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -140,7 +140,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch(
'pos.config',
- ['name','journal_ids','shop_id','journal_id',
+ ['name','journal_ids','warehouse_id','journal_id',
'iface_self_checkout', 'iface_led', 'iface_cashdrawer',
'iface_payment_terminal', 'iface_electronic_scale', 'iface_barscan', 'iface_vkeyboard',
'iface_print_via_proxy','iface_cashdrawer','state','sequence_id','session_ids'],
@@ -155,7 +155,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
self.iface_self_checkout = !!pos_config.iface_self_checkout;
self.iface_cashdrawer = !!pos_config.iface_cashdrawer;
- return self.fetch('sale.shop',[],[['id','=',pos_config.shop_id[0]]]);
+ return self.fetch('stock.warehouse',[],[['id','=',pos_config.warehouse_id[0]]]);
}).then(function(shops){
self.set('shop',shops[0]);
@@ -166,13 +166,16 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch('pos.category', ['id','name','parent_id','child_id','image'])
}).then(function(categories){
self.db.add_categories(categories);
-
+ return self.fetch('res.users',['partner_id'],[['id','=',self.session.uid]])
+ }).then(function(user){
+ return self.fetch('res.partner',['property_product_pricelist'],[['id','=',user[0].partner_id[0]]])
+ }).then(function(pricelist){
return self.fetch(
'product.product',
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
- 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description'],
+ 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description','pricelist_id'],
[['sale_ok','=',true],['available_in_pos','=',true]],
- {pricelist: self.get('shop').pricelist_id[0]} // context for price
+ {pricelist: pricelist[0].property_product_pricelist[0]} // context for price
);
}).then(function(products){
self.db.add_products(products);
diff --git a/addons/point_of_sale/wizard/pos_return.py b/addons/point_of_sale/wizard/pos_return.py
index d6dfdd1e183..753d272f21c 100644
--- a/addons/point_of_sale/wizard/pos_return.py
+++ b/addons/point_of_sale/wizard/pos_return.py
@@ -114,7 +114,7 @@ class pos_return(osv.osv_memory):
source_stock_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.shop_id.warehouse_id.id,))
+ (order_id.warehouse_id.id,))
res = cr.fetchone()
location_id = res and res[0] or None
new_picking = picking_obj.copy(cr, uid, order_id.picking_id.id, {'name':'%s (return)' % order_id.name,
@@ -209,7 +209,7 @@ class add_product(osv.osv_memory):
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.shop_id.warehouse_id.id,))
+ (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)
@@ -273,7 +273,7 @@ class add_product(osv.osv_memory):
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.shop_id.warehouse_id.id,))
+ (order_id.warehouse_id.id,))
res=cr.fetchone()
location_id=res and res[0] or None
From 8e94b4c7eae8a93eda29de845ba4b3e2e43fe30c Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Wed, 23 Jan 2013 18:08:28 +0530
Subject: [PATCH 07/72] [IMP]remove sale.shop from yml and improve code
bzr revid: sgo@tinyerp.com-20130123123828-z7rikkrunp1rem55
---
addons/sale_crm/test/sale_crm.yml | 11 -----------
addons/sale_margin/test/sale_margin.yml | 1 -
addons/sale_mrp/test/sale_mrp.yml | 1 -
addons/sale_stock/test/picking_order_policy.yml | 4 ++--
4 files changed, 2 insertions(+), 15 deletions(-)
diff --git a/addons/sale_crm/test/sale_crm.yml b/addons/sale_crm/test/sale_crm.yml
index 011fb6ad5a8..21d2cc08195 100644
--- a/addons/sale_crm/test/sale_crm.yml
+++ b/addons/sale_crm/test/sale_crm.yml
@@ -1,14 +1,3 @@
--
- Make sure the main company has at least one shop.
--
- !python {model: sale.shop}: |
- company_id = self.pool.get('res.users')._get_company(cr, uid, context=context)
- shop_ids = self.search(cr, uid, [('company_id', '=', company_id)])
- if not shop_ids:
- # take a shop, and assign it to the user's company
- shop_ids = self.search(cr, uid, [])
- if shop_ids:
- self.write(cr, uid, [shop_ids[0]], {'company_id': company_id})
-
I open the wizard "Make sales".
-
diff --git a/addons/sale_margin/test/sale_margin.yml b/addons/sale_margin/test/sale_margin.yml
index 1d6b295b3a1..197f51a9681 100644
--- a/addons/sale_margin/test/sale_margin.yml
+++ b/addons/sale_margin/test/sale_margin.yml
@@ -23,7 +23,6 @@
partner_invoice_id: base.res_partner_address_7
partner_shipping_id: base.res_partner_address_7
pricelist_id: product.list0
- shop_id: sale.sale_shop_1
-
I confirm the sale order
-
diff --git a/addons/sale_mrp/test/sale_mrp.yml b/addons/sale_mrp/test/sale_mrp.yml
index 6fd64301af2..6edd404a49a 100644
--- a/addons/sale_mrp/test/sale_mrp.yml
+++ b/addons/sale_mrp/test/sale_mrp.yml
@@ -83,7 +83,6 @@
partner_shipping_id: base.res_partner_address_7
picking_policy: direct
pricelist_id: product.list0
- shop_id: sale.sale_shop_1
-
I confirm the sale order
-
diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml
index 800c131e288..d5b9ba897ae 100644
--- a/addons/sale_stock/test/picking_order_policy.yml
+++ b/addons/sale_stock/test/picking_order_policy.yml
@@ -56,8 +56,8 @@
assert picking.note == sale_order.note,"Note is not correspond with sale order."
assert picking.invoice_state == (sale_order.order_policy=='picking' and '2binvoiced') or 'none',"Invoice policy is not correspond with sale order."
assert len(picking.move_lines) == len(sale_order.order_line), "Total move of delivery order are not corresposning with total sale order lines."
- location_id = sale_order.shop_id.warehouse_id.lot_stock_id.id
- output_id = sale_order.shop_id.warehouse_id.lot_output_id.id
+ location_id = sale_order.warehouse_id.lot_stock_id.id
+ output_id = sale_order.warehouse_id.lot_output_id.id
for move in picking.move_lines:
order_line = move.sale_line_id
date_planned = datetime.strptime(sale_order.date_order, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=order_line.delay or 0.0)
From 3d5f4f5f3d7f7941f0d8778774b80d419edd25da Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Thu, 24 Jan 2013 18:06:07 +0530
Subject: [PATCH 08/72] [IMP]improve code
bzr revid: sgo@tinyerp.com-20130124123607-rb405xsiq62gwn5n
---
addons/sale_crm/wizard/crm_make_sale.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons/sale_crm/wizard/crm_make_sale.py b/addons/sale_crm/wizard/crm_make_sale.py
index 7abdaa9e04d..43a679795ae 100644
--- a/addons/sale_crm/wizard/crm_make_sale.py
+++ b/addons/sale_crm/wizard/crm_make_sale.py
@@ -93,6 +93,7 @@ class crm_make_sale(osv.osv_memory):
'origin': _('Opportunity: %s') % str(case.id),
'section_id': case.section_id and case.section_id.id or False,
'categ_ids': [(6, 0, [categ_id.id for categ_id in case.categ_ids])],
+ 'partner_id': partner.id,
'pricelist_id': pricelist,
'partner_invoice_id': partner_addr['invoice'],
'partner_shipping_id': partner_addr['delivery'],
From 3508126c15bf509fb520b2c49e424a612d5ae41d Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Fri, 25 Jan 2013 12:37:58 +0530
Subject: [PATCH 09/72] [IMP]set default pricelist as sale pricelist
bzr revid: sgo@tinyerp.com-20130125070758-cgug11ik4bxcelnf
---
addons/point_of_sale/static/src/js/models.js | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index c4e101fe43e..5f2f523d18f 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -166,16 +166,14 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch('pos.category', ['id','name','parent_id','child_id','image'])
}).then(function(categories){
self.db.add_categories(categories);
- return self.fetch('res.users',['partner_id'],[['id','=',self.session.uid]])
- }).then(function(user){
- return self.fetch('res.partner',['property_product_pricelist'],[['id','=',user[0].partner_id[0]]])
+ return new instance.web.Model("ir.model.data").call("get_object_reference", ["product", "list0"])
}).then(function(pricelist){
return self.fetch(
'product.product',
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description','pricelist_id'],
[['sale_ok','=',true],['available_in_pos','=',true]],
- {pricelist: pricelist[0].property_product_pricelist[0]} // context for price
+ {pricelist: pricelist[1]} // context for price
);
}).then(function(products){
self.db.add_products(products);
From 6be21ac5d30e29da6044a0c3f66d49562f31cbc6 Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Thu, 31 Jan 2013 11:56:13 +0530
Subject: [PATCH 10/72] [IMP]add onchange of warehouse to change company
related to warehouse and improve some code
bzr revid: sgo@tinyerp.com-20130131062613-tmlgvdrculc2udu1
---
addons/point_of_sale/point_of_sale.py | 4 ++--
addons/point_of_sale/report/pos_order_report.py | 2 +-
addons/sale_stock/sale_stock.py | 10 +++++++++-
addons/sale_stock/sale_stock_view.xml | 6 ++++++
4 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 4bfef6ce707..d95b64d5c84 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -51,7 +51,7 @@ class pos_config(osv.osv):
'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel',
'pos_config_id', 'journal_id', 'Available Payment Methods',
domain="[('journal_user', '=', True )]",),
- 'warehouse_id' : fields.many2one('stock.warehouse', 'Location',
+ 'warehouse_id' : fields.many2one('stock.warehouse', 'Warehouse',
required=True),
'journal_id' : fields.many2one('account.journal', 'Sale Journal',
domain=[('type', '=', 'sale')],
@@ -575,7 +575,7 @@ class pos_order(osv.osv):
_columns = {
'name': fields.char('Order Ref', size=64, required=True, readonly=True),
'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True),
- 'warehouse_id': fields.related('session_id', 'config_id', 'warehouse_id', relation='stock.warehouse', type='many2one', string='Location', store=True, readonly=True),
+ 'warehouse_id': fields.related('session_id', 'config_id', 'warehouse_id', relation='stock.warehouse', type='many2one', string='Warehouse', store=True, readonly=True),
'date_order': fields.datetime('Order Date', readonly=True, select=True),
'user_id': fields.many2one('res.users', 'Salesman', help="Person who uses the the cash register. It can be a reliever, a student or an interim employee."),
'amount_tax': fields.function(_amount_all, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py
index 41bb1a4e754..243107d4657 100644
--- a/addons/point_of_sale/report/pos_order_report.py
+++ b/addons/point_of_sale/report/pos_order_report.py
@@ -41,7 +41,7 @@ class pos_order_report(osv.osv):
'price_total':fields.float('Total Price', readonly=True),
'total_discount':fields.float('Total Discount', readonly=True),
'average_price': fields.float('Average Price', readonly=True,group_operator="avg"),
- 'warehouse_id':fields.many2one('stock.warehouse', 'Location', readonly=True),
+ 'warehouse_id':fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
'nbr':fields.integer('# of Lines', readonly=True),
'product_qty':fields.integer('# of Qty', readonly=True),
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index c2a52b8de7e..682c0e435df 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -139,7 +139,7 @@ class sale_order(osv.osv):
'picking_ids': fields.one2many('stock.picking.out', 'sale_id', 'Related Picking', readonly=True, help="This is a list of delivery orders that has been generated for this sales order."),
'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sales order has been delivered. This field is updated only after the scheduler(s) have been launched."),
'picked_rate': fields.function(_picked_rate, string='Picked', type='float'),
- 'warehouse_id': fields.many2one('stock.warehouse', 'Location'),
+ 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'),
'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on',
help="The sales order will automatically create the invoice proposition (draft invoice).\
You have to choose if you want your invoice based on ordered ", required=True, readonly=True, states={'draft': [('readonly', False)]}),
@@ -162,6 +162,14 @@ class sale_order(osv.osv):
raise osv.except_osv(_('Invalid Action!'), _('In order to delete a confirmed sales order, you must cancel it.\nTo do so, you must first cancel related picking for delivery orders.'))
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
+
+ def onchange_warehouse_id(self, cr, uid, ids, warehouse_id, context=None):
+ val = {}
+ if warehouse_id:
+ warehouse = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id, context=context)
+ if warehouse.company_id.id:
+ val['company_id'] = warehouse.company_id.id
+ return {'value': val}
def action_view_delivery(self, cr, uid, ids, context=None):
'''
diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml
index 349af88ceb1..4edde821729 100644
--- a/addons/sale_stock/sale_stock_view.xml
+++ b/addons/sale_stock/sale_stock_view.xml
@@ -23,6 +23,12 @@
+
+
+
+
+
+
Date: Mon, 4 Feb 2013 18:09:09 +0530
Subject: [PATCH 11/72] [IMP]move warehouse field near company
bzr revid: sgo@tinyerp.com-20130204123909-xobft27wsauqgp4u
---
addons/sale_stock/sale_stock_view.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml
index 4edde821729..38b54386827 100644
--- a/addons/sale_stock/sale_stock_view.xml
+++ b/addons/sale_stock/sale_stock_view.xml
@@ -26,7 +26,7 @@
-
+
From 9e99431d1fdb5772e5f53381d750f3c9a13b005a Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Wed, 6 Feb 2013 18:08:51 +0530
Subject: [PATCH 12/72] [IMP]add pricelist field in pos config and set default
bzr revid: sgo@tinyerp.com-20130206123851-4b3lhr5bzf7msla6
---
addons/point_of_sale/point_of_sale.py | 8 +++++++-
addons/point_of_sale/point_of_sale_view.xml | 3 ++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index d95b64d5c84..6835576d253 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -70,6 +70,7 @@ class pos_config(osv.osv):
"to customize the reference numbers of your orders."),
'session_ids': fields.one2many('pos.session', 'config_id', 'Sessions'),
'group_by' : fields.boolean('Group Journal Items', help="Check this if you want to group the Journal Items by Product while closing a Session"),
+ 'pricelist_id': fields.many2one('product.pricelist','Pricelist', required=True)
}
def _check_cash_control(self, cr, uid, ids, context=None):
@@ -115,12 +116,17 @@ class pos_config(osv.osv):
def _default_warehouse(self, cr, uid, context=None):
res = self.pool.get('stock.warehouse').search(cr, uid, [])
return res and res[0] or False
+
+ def _default_pricelist(self, cr, uid, context=None):
+ res = self.pool.get('product.pricelist').search(cr, uid, [('type', '=', 'sale')])
+ return res and res[0] or False
_defaults = {
'state' : POS_CONFIG_STATE[0][0],
'warehouse_id': _default_warehouse,
'journal_id': _default_sale_journal,
'group_by' : True,
+ 'pricelist_id': _default_pricelist
}
def set_active(self, cr, uid, ids, context=None):
@@ -619,7 +625,7 @@ class pos_order(osv.osv):
session_ids = self._default_session(cr, uid, context)
if session_ids:
session_record = self.pool.get('pos.session').browse(cr, uid, session_ids, context=context)
- return session_record.user_id.partner_id.property_product_pricelist and session_record.user_id.partner_id.property_product_pricelist.id or False
+ return session_record.config_id.pricelist_id and session_record.config_id.pricelist_id.id or False
return False
_defaults = {
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 3cf920d8a11..6a8208bac0a 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -84,7 +84,7 @@
-
+
@@ -773,6 +773,7 @@
+
From d0e2c54663f9153a4333c6b03496b9cebb6779a5 Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Wed, 6 Feb 2013 18:29:13 +0530
Subject: [PATCH 13/72] [IMP]set config pricelist on pos frontend
bzr revid: sgo@tinyerp.com-20130206125913-ibn73y41aw19gkmw
---
addons/point_of_sale/static/src/js/models.js | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index 5a4f7c8cefb..a43e5a28074 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -158,7 +158,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch(
'pos.config',
- ['name','journal_ids','warehouse_id','journal_id',
+ ['name','journal_ids','warehouse_id','journal_id','pricelist_id',
'iface_self_checkout', 'iface_led', 'iface_cashdrawer',
'iface_payment_terminal', 'iface_electronic_scale', 'iface_barscan', 'iface_vkeyboard',
'iface_print_via_proxy','iface_cashdrawer','state','sequence_id','session_ids'],
@@ -184,14 +184,13 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return self.fetch('pos.category', ['id','name','parent_id','child_id','image'])
}).then(function(categories){
self.db.add_categories(categories);
- return new instance.web.Model("ir.model.data").call("get_object_reference", ["product", "list0"])
- }).then(function(pricelist){
+
return self.fetch(
'product.product',
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
- 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description','pricelist_id'],
+ 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description'],
[['sale_ok','=',true],['available_in_pos','=',true]],
- {pricelist: pricelist[1]} // context for price
+ {pricelist: self.get('pos_config').pricelist_id[0]} // context for price
);
}).then(function(products){
self.db.add_products(products);
From bc17621cecb4a36d4d4e6c6272b2e1b57e51fa1f Mon Sep 17 00:00:00 2001
From: "sgo@tinyerp.com" <>
Date: Thu, 7 Feb 2013 12:21:26 +0530
Subject: [PATCH 14/72] [IMP]improve pos config form view and add group on
warehouse
bzr revid: sgo@tinyerp.com-20130207065126-1liwmg1u3emnra6j
---
addons/point_of_sale/point_of_sale.py | 3 ++-
addons/point_of_sale/point_of_sale_view.xml | 23 ++++++++++++++-------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index e1fe577c922..ebb87d02f26 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -114,7 +114,8 @@ class pos_config(osv.osv):
return res and res[0] or False
def _default_warehouse(self, cr, uid, context=None):
- res = self.pool.get('stock.warehouse').search(cr, uid, [])
+ user = self.pool.get('res.users').browse(cr, uid, uid, context)
+ res = self.pool.get('stock.warehouse').search(cr, uid, [('company_id','=',user.company_id.id)], context)
return res and res[0] or False
def _default_pricelist(self, cr, uid, context=None):
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 6a8208bac0a..a3628761173 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -769,13 +769,20 @@
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -810,7 +817,7 @@
-
+
@@ -824,7 +831,7 @@
-
+