diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index 27aca6fb9fa..cd19c730a3f 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -23,7 +23,6 @@
"version" : "1.1",
"author" : "OpenERP SA",
"category": 'Accounting & Finance',
- 'complexity': "easy",
"description": """
Accounting and Financial Management.
====================================
diff --git a/addons/account/account.py b/addons/account/account.py
index 26af7a5f9bd..d501f35cbc7 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -893,7 +893,7 @@ class account_fiscalyear(osv.osv):
'date_start': fields.date('Start Date', required=True),
'date_stop': fields.date('End Date', required=True),
'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),
- 'state': fields.selection([('draft','Open'), ('done','Closed')], 'State', readonly=True),
+ 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', readonly=True),
}
_defaults = {
'state': 'draft',
@@ -990,7 +990,7 @@ class account_period(osv.osv):
'date_start': fields.date('Start of Period', required=True, states={'done':[('readonly',True)]}),
'date_stop': fields.date('End of Period', required=True, states={'done':[('readonly',True)]}),
'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, states={'done':[('readonly',True)]}, select=True),
- 'state': fields.selection([('draft','Open'), ('done','Closed')], 'State', readonly=True,
+ 'state': fields.selection([('draft','Open'), ('done','Closed')], 'Status', readonly=True,
help='When monthly periods are created. The state is \'Draft\'. At the end of monthly period it is in \'Done\' state.'),
'company_id': fields.related('fiscalyear_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
}
@@ -1117,7 +1117,7 @@ class account_journal_period(osv.osv):
'period_id': fields.many2one('account.period', 'Period', required=True, ondelete="cascade"),
'icon': fields.function(_icon_get, string='Icon', type='char', size=32),
'active': fields.boolean('Active', required=True, help="If the active field is set to False, it will allow you to hide the journal period without removing it."),
- 'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'State', required=True, readonly=True,
+ 'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'Status', required=True, readonly=True,
help='When journal period is created. The state is \'Draft\'. If a report is printed it comes to \'Printed\' state. When all transactions are done, it comes in \'Done\' state.'),
'fiscalyear_id': fields.related('period_id', 'fiscalyear_id', string='Fiscal Year', type='many2one', relation='account.fiscalyear'),
'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
@@ -1264,7 +1264,7 @@ class account_move(osv.osv):
'ref': fields.char('Reference', size=64),
'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}),
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}),
- 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'State', required=True, readonly=True,
+ 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', required=True, readonly=True,
help='All manually created new journal entries are usually in the state \'Unposted\', but you can set the option to skip that state on the related journal. In that case, they will be behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' state.'),
'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),
'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'),
@@ -2350,7 +2350,7 @@ class account_subscription(osv.osv):
'period_total': fields.integer('Number of Periods', required=True),
'period_nbr': fields.integer('Period', required=True),
'period_type': fields.selection([('day','days'),('month','month'),('year','year')], 'Period Type', required=True),
- 'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'State', required=True, readonly=True),
+ 'state': fields.selection([('draft','Draft'),('running','Running'),('done','Done')], 'Status', required=True, readonly=True),
'lines_id': fields.one2many('account.subscription.line', 'subscription_id', 'Subscription Lines')
}
_defaults = {
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index 5601179e0fc..51e3d2dbe85 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -153,7 +153,7 @@ class account_bank_statement(osv.osv):
'state': fields.selection([('draft', 'New'),
('open','Open'), # used by cash statements
('confirm', 'Closed')],
- 'State', required=True, readonly="1",
+ 'Status', required=True, readonly="1",
help='When new statement is created the state will be \'Draft\'.\n'
'And after getting confirmation from the bank it will be in \'Confirmed\' state.'),
'currency': fields.function(_currency, string='Currency',
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index d0f7579a86e..9426d713188 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -201,12 +201,12 @@ class account_invoice(osv.osv):
'state': fields.selection([
('draft','Draft'),
+ ('cancel','Cancelled'),
('proforma','Pro-forma'),
('proforma2','Pro-forma'),
('open','Open'),
- ('paid','Paid'),
- ('cancel','Cancelled')
- ],'State', select=True, readonly=True,
+ ('paid','Paid')
+ ],'Status', select=True, readonly=True,
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Invoice. \
\n* The \'Pro-forma\' when invoice is in Pro-forma state,invoice does not have an invoice number. \
\n* The \'Open\' state is used when user create invoice,a invoice number is generated.Its in open state till user does not pay invoice. \
@@ -273,7 +273,7 @@ class account_invoice(osv.osv):
help="Remaining amount due."),
'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
'move_name': fields.char('Journal Entry', size=64, readonly=True, states={'draft':[('readonly',False)]}),
- 'user_id': fields.many2one('res.users', 'Salesman', readonly=True, states={'draft':[('readonly',False)]}),
+ 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True, states={'draft':[('readonly',False)]}),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]})
}
_defaults = {
@@ -1307,7 +1307,7 @@ class account_invoice_line(osv.osv):
_description = "Invoice Line"
_columns = {
'name': fields.char('Description', size=256, required=True),
- 'origin': fields.char('Origin', size=256, help="Reference of the document that produced this invoice."),
+ 'origin': fields.char('Source', size=256, help="Reference of the document that produced this invoice."),
'invoice_id': fields.many2one('account.invoice', 'Invoice Reference', ondelete='cascade', select=True),
'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null'),
'product_id': fields.many2one('product.product', 'Product', ondelete='set null'),
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 211e1cf80a2..f9a88417009 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -142,8 +142,20 @@
form2
-
+
+
@@ -358,7 +372,7 @@
string="Reference"
filter_domain="['|', ('number','ilike',self),('origin','ilike',self)]"/>
-
+
@@ -373,7 +387,7 @@
-
+
diff --git a/addons/account/account_menuitem.xml b/addons/account/account_menuitem.xml
index 3713606c490..58830a19693 100644
--- a/addons/account/account_menuitem.xml
+++ b/addons/account/account_menuitem.xml
@@ -2,7 +2,7 @@
-
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index 573b8f17524..892747c849f 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -508,7 +508,7 @@ class account_move_line(osv.osv):
'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),
'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation'),('currency','Currency Adjustment')], 'Centralisation', size=8),
'balance': fields.function(_balance, fnct_search=_balance_search, string='Balance'),
- 'state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'State', readonly=True,
+ 'state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'Status', readonly=True,
help='When new move line is created the state will be \'Draft\'.\n* When all the payments are done it will be in \'Valid\' state.'),
'tax_code_id': fields.many2one('account.tax.code', 'Tax Account', help="The Account can either be a base tax code or a tax code account."),
'tax_amount': fields.float('Tax/Base Amount', digits_compute=dp.get_precision('Account'), select=True, help="If the Tax account is a tax code account, this field will contain the taxed amount.If the tax account is base tax code, "\
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index d64be6f71e9..4532c8127de 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -11,8 +11,17 @@
account.fiscalyearform
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/account_cancel/__openerp__.py b/addons/account_cancel/__openerp__.py
index a17958151b3..6749cef0c8e 100644
--- a/addons/account_cancel/__openerp__.py
+++ b/addons/account_cancel/__openerp__.py
@@ -24,7 +24,6 @@
"version" : "1.1",
"author" : "OpenERP SA",
"category": 'Accounting & Finance',
- 'complexity': "normal",
"description": """
Allows cancelling accounting entries.
=====================================
diff --git a/addons/account_cancel/account_cancel_view.xml b/addons/account_cancel/account_cancel_view.xml
index 72517c9d090..6a214fa56dd 100644
--- a/addons/account_cancel/account_cancel_view.xml
+++ b/addons/account_cancel/account_cancel_view.xml
@@ -19,7 +19,7 @@
form
-
+
@@ -31,7 +31,7 @@
form
-
+
diff --git a/addons/account_coda/__openerp__.py b/addons/account_coda/__openerp__.py
index 126027a41a7..06a0a59d2c6 100644
--- a/addons/account_coda/__openerp__.py
+++ b/addons/account_coda/__openerp__.py
@@ -24,7 +24,6 @@
"version": '2.1',
"author": 'Noviat',
"category": 'Accounting & Finance',
- "complexity": "normal",
"description": '''
Module to import CODA bank statements.
======================================
diff --git a/addons/account_followup/__openerp__.py b/addons/account_followup/__openerp__.py
index 425754d1c09..ed397668148 100644
--- a/addons/account_followup/__openerp__.py
+++ b/addons/account_followup/__openerp__.py
@@ -23,7 +23,6 @@
'name': 'Followup Management',
'version': '1.0',
'category': 'Accounting & Finance',
- 'complexity': "normal",
'description': """
Module to automate letters for unpaid invoices, with multi-level recalls.
==========================================================================
diff --git a/addons/account_invoice_layout/__openerp__.py b/addons/account_invoice_layout/__openerp__.py
index 83fe193fac4..dfc2f7a8db4 100644
--- a/addons/account_invoice_layout/__openerp__.py
+++ b/addons/account_invoice_layout/__openerp__.py
@@ -24,7 +24,6 @@
'name': 'Invoice Layouts',
'version': '1.0',
"category": 'Accounting & Finance',
- 'complexity': "easy",
'description': """
This module provides some features to improve the layout of the invoices.
=========================================================================
diff --git a/addons/account_invoice_layout/account_invoice_layout_view.xml b/addons/account_invoice_layout/account_invoice_layout_view.xml
index f51120aa9da..5073568d674 100644
--- a/addons/account_invoice_layout/account_invoice_layout_view.xml
+++ b/addons/account_invoice_layout/account_invoice_layout_view.xml
@@ -47,7 +47,7 @@
form
-
+
diff --git a/addons/account_invoice_layout/report/report_account_invoice_layout.rml b/addons/account_invoice_layout/report/report_account_invoice_layout.rml
index eec4b974e2b..79bce6248d3 100644
--- a/addons/account_invoice_layout/report/report_account_invoice_layout.rml
+++ b/addons/account_invoice_layout/report/report_account_invoice_layout.rml
@@ -228,7 +228,7 @@
Invoice Date
- Origin
+ Source
Customer Code
diff --git a/addons/account_invoice_layout/report/special_message_invoice.rml b/addons/account_invoice_layout/report/special_message_invoice.rml
index 97a7f131df6..84049b18f0a 100644
--- a/addons/account_invoice_layout/report/special_message_invoice.rml
+++ b/addons/account_invoice_layout/report/special_message_invoice.rml
@@ -232,7 +232,7 @@
Invoice Date
- Origin
+ Source
Your Reference
diff --git a/addons/account_payment/__openerp__.py b/addons/account_payment/__openerp__.py
index 83c179801ab..1959d71da74 100644
--- a/addons/account_payment/__openerp__.py
+++ b/addons/account_payment/__openerp__.py
@@ -24,7 +24,6 @@
"version": "1.1",
"author": "OpenERP SA",
"category": "Accounting & Finance",
- 'complexity': "easy",
"description": """
Module to manage the payment of your supplier invoices.
=======================================================
diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py
index 70d3fbe54cc..80d7a5419e7 100644
--- a/addons/account_payment/account_payment.py
+++ b/addons/account_payment/account_payment.py
@@ -92,9 +92,9 @@ class payment_order(osv.osv):
'mode': fields.many2one('payment.mode', 'Payment mode', select=True, required=1, states={'done': [('readonly', True)]}, help='Select the Payment Mode to be applied.'),
'state': fields.selection([
('draft', 'Draft'),
- ('open', 'Confirmed'),
('cancel', 'Cancelled'),
- ('done', 'Done')], 'State', select=True,
+ ('open', 'Confirmed'),
+ ('done', 'Done')], 'Status', select=True,
help='When an order is placed the state is \'Draft\'.\n Once the bank is confirmed the state is set to \'Confirmed\'.\n Then the order is paid the state is \'Done\'.'),
'line_ids': fields.one2many('payment.line', 'order_id', 'Payment lines', states={'done': [('readonly', True)]}),
'total': fields.function(_total, string="Total", type='float'),
diff --git a/addons/account_payment/account_payment_view.xml b/addons/account_payment/account_payment_view.xml
index bc7755609e7..a85d4156cc4 100644
--- a/addons/account_payment/account_payment_view.xml
+++ b/addons/account_payment/account_payment_view.xml
@@ -100,8 +100,19 @@
payment.orderform
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -162,13 +173,7 @@
-
-
-
-
-
-
-
+
@@ -211,7 +216,7 @@
-
+
diff --git a/addons/account_sequence/__openerp__.py b/addons/account_sequence/__openerp__.py
index 301afa3be4d..0f860d400e9 100644
--- a/addons/account_sequence/__openerp__.py
+++ b/addons/account_sequence/__openerp__.py
@@ -23,7 +23,6 @@
'name': 'Entries Sequence Numbering',
'version': '1.1',
"category": 'Accounting & Finance',
- 'complexity': "easy",
'description': """
This module maintains internal sequence number for accounting entries.
======================================================================
diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py
index 1c4005b7be0..a7899338b8e 100644
--- a/addons/account_voucher/__openerp__.py
+++ b/addons/account_voucher/__openerp__.py
@@ -23,7 +23,6 @@
"name" : "eInvoicing & Payments",
"version" : "1.0",
"author" : 'OpenERP SA',
- 'complexity': "normal",
"description": """
Account Voucher module includes all the basic requirements of Voucher Entries for Bank, Cash, Sales, Purchase, Expanse, Contra, etc.
====================================================================================================================================
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 0191f5866ba..f2cffdf27cd 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -275,10 +275,10 @@ class account_voucher(osv.osv):
'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'state':fields.selection(
[('draft','Draft'),
+ ('cancel','Cancelled'),
('proforma','Pro-forma'),
- ('posted','Posted'),
- ('cancel','Cancelled')
- ], 'State', readonly=True, size=32,
+ ('posted','Posted')
+ ], 'Status', readonly=True, size=32,
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Voucher. \
\n* The \'Pro-forma\' when voucher is in Pro-forma state,voucher does not have an voucher number. \
\n* The \'Posted\' state is used when user create voucher,a voucher number is generated and voucher entries are created in account \
diff --git a/addons/account_voucher/account_voucher_view.xml b/addons/account_voucher/account_voucher_view.xml
index fe46f74def0..1b50676773f 100644
--- a/addons/account_voucher/account_voucher_view.xml
+++ b/addons/account_voucher/account_voucher_view.xml
@@ -39,8 +39,19 @@
account.voucherform
-
Payment Term
diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py
index d347da84adc..6beac7cfd38 100644
--- a/addons/sale/report/sale_report.py
+++ b/addons/sale/report/sale_report.py
@@ -44,7 +44,7 @@ class sale_report(osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
'shop_id': fields.many2one('sale.shop', 'Shop', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
- 'user_id': fields.many2one('res.users', 'Salesman', readonly=True),
+ 'user_id': fields.many2one('res.users', 'Salesperson', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
'delay': fields.float('Commitment Delay', digits=(16,2), readonly=True),
'categ_id': fields.many2one('product.category','Category of Product', readonly=True),
diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml
index a751d92c62a..4b3647a5ac2 100644
--- a/addons/sale/report/sale_report_view.xml
+++ b/addons/sale/report/sale_report_view.xml
@@ -95,7 +95,7 @@
-
+
@@ -104,7 +104,7 @@
-
+
diff --git a/addons/sale/res_partner.py b/addons/sale/res_partner.py
new file mode 100644
index 00000000000..84c1a9c96ad
--- /dev/null
+++ b/addons/sale/res_partner.py
@@ -0,0 +1,38 @@
+# -*- 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 osv import fields,osv
+from tools.translate import _
+
+class res_partner(osv.osv):
+ _inherit = 'res.partner'
+
+ def _sale_order_count(self, cr, uid, ids, field_name, arg, context=None):
+ res = {}
+ for partner in self.browse(cr, uid, ids, context):
+ res[partner.id] = len(partner.sale_order_ids)
+ return res
+
+ _columns = {
+ 'sale_order_count': fields.function(_sale_order_count, string='# of Sales Order', type='integer'),
+ 'sale_order_ids': fields.one2many('sale.order','partner_id','Sales Order')
+ }
+
diff --git a/addons/sale/res_partner_view.xml b/addons/sale/res_partner_view.xml
new file mode 100644
index 00000000000..6a011749282
--- /dev/null
+++ b/addons/sale/res_partner_view.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ res.partner.kanban.saleorder.inherit
+ res.partner
+ kanban
+
+
+
+
+
+
+
+ Sales()
+
+
+
+
+
+
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 5144cb91402..a93e67585d6 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -204,18 +204,18 @@ class sale_order(osv.osv):
'client_order_ref': fields.char('Customer Reference', size=64),
'state': fields.selection([
('draft', 'Quotation'),
+ ('cancel', 'Cancelled'),
('waiting_date', 'Waiting Schedule'),
('manual', 'To Invoice'),
('progress', 'In Progress'),
('shipping_except', 'Shipping Exception'),
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
- ('cancel', 'Cancelled')
], 'Order State', readonly=True, help="Gives the state of the quotation or sales order. \nThe exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). \nThe 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the order date.", select=True),
'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)]}),
'create_date': fields.datetime('Creation Date', readonly=True, select=True, help="Date on which sales order is created."),
'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
- 'user_id': fields.many2one('res.users', 'Salesman', states={'draft': [('readonly', False)]}, select=True),
+ 'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)]}, select=True),
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sales order."),
'partner_shipping_id': fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sales order."),
@@ -1025,14 +1025,14 @@ class sale_order_line(osv.osv):
'number_packages': fields.function(_number_packages, type='integer', string='Number Packages'),
'notes': fields.text('Notes'),
'th_weight': fields.float('Weight', readonly=True, states={'draft': [('readonly', False)]}),
- 'state': fields.selection([('cancel', 'Cancelled'),('draft', 'Draft'),('confirmed', 'Confirmed'),('exception', 'Exception'),('done', 'Done')], 'State', required=True, readonly=True,
+ 'state': fields.selection([('cancel', 'Cancelled'),('draft', 'Draft'),('confirmed', 'Confirmed'),('exception', 'Exception'),('done', 'Done')], 'Status', required=True, readonly=True,
help='* The \'Draft\' state is set when the related sales order in draft state. \
\n* The \'Confirmed\' state is set when the related sales order is confirmed. \
\n* The \'Exception\' state is set when the related sales order is set as exception. \
\n* The \'Done\' state is set when the sales order line has been picked. \
\n* The \'Cancelled\' state is set when a user cancel the sales order related.'),
'order_partner_id': fields.related('order_id', 'partner_id', type='many2one', relation='res.partner', store=True, string='Customer'),
- 'salesman_id':fields.related('order_id', 'user_id', type='many2one', relation='res.users', store=True, string='Salesman'),
+ 'salesman_id':fields.related('order_id', 'user_id', type='many2one', relation='res.users', store=True, string='Salesperson'),
'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
}
_order = 'sequence, id'
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index eef3713fcb4..7a573993c45 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -1,6 +1,8 @@
-
+
+
+
sale.shop
@@ -96,23 +98,24 @@
@@ -292,9 +295,9 @@
-
+
-
+
@@ -447,8 +450,8 @@
-
-
+
+
@@ -477,7 +480,7 @@
-
+
diff --git a/addons/sale/stock_view.xml b/addons/sale/stock_view.xml
index 578a6fb5802..242d2c4cef6 100644
--- a/addons/sale/stock_view.xml
+++ b/addons/sale/stock_view.xml
@@ -19,7 +19,7 @@
form
-
+
diff --git a/addons/sale_crm/__openerp__.py b/addons/sale_crm/__openerp__.py
index 8da96384d0a..92b4491d449 100644
--- a/addons/sale_crm/__openerp__.py
+++ b/addons/sale_crm/__openerp__.py
@@ -23,7 +23,6 @@
'name': 'Opportunity to Quotation',
'version': '1.0',
'category': 'Hidden',
- 'complexity': "easy",
'description': """
This module adds a shortcut on one or several opportunity cases in the CRM.
===========================================================================
diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml
index 61ced66c4cb..3151c910e2f 100644
--- a/addons/sale_crm/sale_crm_view.xml
+++ b/addons/sale_crm/sale_crm_view.xml
@@ -10,7 +10,7 @@
-
+
diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py
index 1abd71b4139..c104ae19d97 100644
--- a/addons/sale_journal/__openerp__.py
+++ b/addons/sale_journal/__openerp__.py
@@ -23,7 +23,6 @@
'name': 'Invoicing Journals',
'version': '1.0',
'category': 'Sales Management',
- 'complexity': "normal",
'description': """
The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals.
========================================================================================================================
diff --git a/addons/sale_layout/__openerp__.py b/addons/sale_layout/__openerp__.py
index 0eb44e574fb..d2006ed1d9e 100644
--- a/addons/sale_layout/__openerp__.py
+++ b/addons/sale_layout/__openerp__.py
@@ -24,7 +24,6 @@
"images" : ["images/sale_layout.jpeg"],
"depends" : ["sale", "account_invoice_layout"],
"author" : "OpenERP SA",
- 'complexity': "easy",
"description": """
This module provides features to improve the layout of the Sales Order.
=======================================================================
diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py
index 59c6f14d546..2d7ed96cca4 100644
--- a/addons/sale_mrp/__openerp__.py
+++ b/addons/sale_mrp/__openerp__.py
@@ -24,7 +24,6 @@
'name': 'Sales and MRP Management',
'version': '1.0',
'category': 'Hidden',
- 'complexity': "easy",
'description': """
This module provides facility to the user to install mrp and sales modulesat a time.
====================================================================================
diff --git a/addons/sale_mrp/sale_mrp_view.xml b/addons/sale_mrp/sale_mrp_view.xml
index d4d2c153d76..fbf2e7a9327 100644
--- a/addons/sale_mrp/sale_mrp_view.xml
+++ b/addons/sale_mrp/sale_mrp_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/sale_order_dates/__openerp__.py b/addons/sale_order_dates/__openerp__.py
index bd3f0baf1ed..f5ccef7ffe5 100644
--- a/addons/sale_order_dates/__openerp__.py
+++ b/addons/sale_order_dates/__openerp__.py
@@ -24,7 +24,6 @@
'name': 'Dates on Sales Order',
'version': '1.0',
'category': 'Sales Management',
- 'complexity': "easy",
'description': """
Add additional date information to the sales order.
===================================================
diff --git a/addons/share/__openerp__.py b/addons/share/__openerp__.py
index 7a78783348c..608c41a4909 100644
--- a/addons/share/__openerp__.py
+++ b/addons/share/__openerp__.py
@@ -27,7 +27,6 @@
"depends" : ["base", "mail"],
"author" : "OpenERP SA",
"category": 'Tools',
- 'complexity': "easy",
"description": """
This module adds generic sharing tools to your current OpenERP database.
========================================================================
diff --git a/addons/stock/__openerp__.py b/addons/stock/__openerp__.py
index 102d54ae9ed..50bcb23df7b 100644
--- a/addons/stock/__openerp__.py
+++ b/addons/stock/__openerp__.py
@@ -23,7 +23,6 @@
"name" : "Warehouse Management",
"version" : "1.1",
"author" : "OpenERP SA",
- 'complexity': "easy",
"description" : """
OpenERP Inventory Management module can manage multi-warehouses, multi and structured stock locations.
======================================================================================================
diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml
index 9f15eba5389..38412228723 100644
--- a/addons/stock/board_warehouse_view.xml
+++ b/addons/stock/board_warehouse_view.xml
@@ -71,5 +71,6 @@
+
diff --git a/addons/stock/product.py b/addons/stock/product.py
index e7838bb490a..62fdbb24ca2 100644
--- a/addons/stock/product.py
+++ b/addons/stock/product.py
@@ -26,6 +26,27 @@ import decimal_precision as dp
class product_product(osv.osv):
_inherit = "product.product"
+ def _stock_move_count(self, cr, uid, ids, field_name, arg, context=None):
+ res = dict([(id, {'reception_count': 0, 'delivery_count': 0}) for id in ids])
+ move_pool=self.pool.get('stock.move')
+ moves = move_pool.read_group(cr, uid, [
+ ('product_id', 'in', ids),
+ ('picking_id.type', '=', 'in'),
+ ('state','in',('draft','confirmed','assigned','pending'))
+ ], ['product_id'], ['product_id'])
+ for move in moves:
+ product_id = move['product_id'][0]
+ res[product_id]['reception_count'] = move['product_id_count']
+ moves = move_pool.read_group(cr, uid, [
+ ('product_id', 'in', ids),
+ ('picking_id.type', '=', 'out'),
+ ('state','in',('draft','confirmed','assigned','pending'))
+ ], ['product_id'], ['product_id'])
+ for move in moves:
+ product_id = move['product_id'][0]
+ res[product_id]['reception_count'] = move['product_id_count']
+ return res
+
def get_product_accounts(self, cr, uid, product_id, context=None):
""" To get the stock input account, stock output account and stock journal related to product.
@param product_id: product id
@@ -331,6 +352,8 @@ class product_product(osv.osv):
return res
_columns = {
+ 'reception_count': fields.function(_stock_move_count, string="Reception", type='integer', multi='pickings'),
+ 'delivery_count': fields.function(_stock_move_count, string="Delivery", type='integer', multi='pickings'),
'qty_available': fields.function(_product_available, multi='qty_available',
type='float', digits_compute=dp.get_precision('Product Unit of Measure'),
string='Quantity On Hand',
diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml
index 65a1a8c2ef3..aca84d33473 100644
--- a/addons/stock/product_view.xml
+++ b/addons/stock/product_view.xml
@@ -125,6 +125,32 @@
+
+
+ Receive Products
+ stock.move
+ ir.actions.act_window
+ form
+ tree,form
+ [('product_id','=',active_id),('picking_id.type','=','in')]
+
+
+
+ Here you can receive individual products, no matter what purchase order or picking order they come from. You will find the list of all products you are waiting for. Once you receive an order, you can filter based on the name of the supplier or the purchase order reference. Then you can confirm all products received using the buttons on the right of each line.
+
+
+
+ Receive Products
+ stock.move
+ ir.actions.act_window
+ form
+ tree,form
+ [('product_id','=',active_id),('picking_id.type','=','out')]
+
+
+
+ You will find in this list all products you have to deliver to your customers. You can process the deliveries directly from this list using the buttons on the right of each line. You can filter the products to deliver by customer, products or sale order (using the Origin field).
+ Product Kanban
@@ -136,6 +162,8 @@
+
+