diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml
index e517f289809..66725547aec 100644
--- a/addons/procurement/procurement_view.xml
+++ b/addons/procurement/procurement_view.xml
@@ -58,7 +58,7 @@
-
+
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index bdc37c1b660..36215dcdc73 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -37,9 +37,7 @@ class procurement_order(osv.osv):
context = {}
if use_new_cursor:
- print 'Cursor New', cr,
- cr = pooler.get_db(use_new_cursor).cursor()
- print cr
+ cr = pooler.get_db(use_new_cursor).cursor()
wf_service = netsvc.LocalService("workflow")
procurement_obj = self.pool.get('procurement.order')
@@ -124,7 +122,6 @@ class procurement_order(osv.osv):
})
if use_new_cursor:
cr.commit()
- print 'Cursor Close', cr
cr.close()
return {}
@@ -175,9 +172,7 @@ class procurement_order(osv.osv):
if not context:
context = {}
if use_new_cursor:
- print 'Cursor New', cr,
- cr = pooler.get_db(use_new_cursor).cursor()
- print cr
+ cr = pooler.get_db(use_new_cursor).cursor()
orderpoint_obj = self.pool.get('stock.warehouse.orderpoint')
location_obj = self.pool.get('stock.location')
procurement_obj = self.pool.get('procurement.order')
@@ -241,7 +236,6 @@ class procurement_order(osv.osv):
})
if use_new_cursor:
cr.commit()
- print 'Cursor Close', cr
cr.close()
return {}
procurement_order()
diff --git a/addons/procurement/security/ir.model.access.csv b/addons/procurement/security/ir.model.access.csv
index 6cc6cc8acb4..d86612dc33f 100644
--- a/addons/procurement/security/ir.model.access.csv
+++ b/addons/procurement/security/ir.model.access.csv
@@ -1,11 +1,12 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_mrp_property_group","mrp.property.group","model_mrp_property_group",stock.group_stock_manager,1,1,1,1
-"access_mrp_property","mrp.property","model_mrp_property",stock.group_stock_manager,1,1,1,1
+"access_mrp_property_group","mrp.property.group","model_mrp_property_group","stock.group_stock_manager",1,1,1,1
+"access_mrp_property","mrp.property","model_mrp_property","stock.group_stock_manager",1,1,1,1
"access_mrp_property_group","mrp.property.group","model_mrp_property_group",,1,0,0,0
-"access_mrp_property","mrp.property","model_mrp_property",base.group_user,1,0,0,0
-"access_procurement","procurement.order","model_procurement_order",base.group_user,1,0,0,0
-"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint",stock.group_stock_manager,1,1,1,1
-"access_procurement_compute_all","procurement.order.compute.all","model_procurement_order_compute_all",stock.group_stock_manager,1,1,1,1
-"access_procurement_orderpoint_compute","procurement.orderpoint.compute","model_procurement_orderpoint_compute",stock.group_stock_manager,1,1,1,1
-"access_mrp_make_procurement","make.procurement","model_make_procurement",stock.group_stock_manager,1,1,1,1
-"access_mrp_make_procurement","procurement.order.compute","model_procurement_order_compute",stock.group_stock_manager,1,1,1,1
+"access_mrp_property","mrp.property","model_mrp_property","base.group_user",1,0,0,0
+"access_procurement","procurement.order","model_procurement_order","base.group_user",1,0,0,0
+"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint","stock.group_stock_manager",1,1,1,1
+"access_procurement_compute_all","procurement.order.compute.all","model_procurement_order_compute_all","stock.group_stock_manager",1,1,1,1
+"access_procurement_orderpoint_compute","procurement.orderpoint.compute","model_procurement_orderpoint_compute","stock.group_stock_manager",1,1,1,1
+"access_mrp_make_procurement","make.procurement","model_make_procurement","stock.group_stock_manager",1,1,1,1
+"access_mrp_make_procurement","procurement.order.compute","model_procurement_order_compute","stock.group_stock_manager",1,1,1,1
+"access_make_procurement","make.procurement","model_make_procurement","stock.group_stock_manager",1,1,1,1
diff --git a/addons/procurement/wizard/schedulers_all.py b/addons/procurement/wizard/schedulers_all.py
index 73efc77d017..8b1be81d276 100644
--- a/addons/procurement/wizard/schedulers_all.py
+++ b/addons/procurement/wizard/schedulers_all.py
@@ -45,10 +45,8 @@ class procurement_compute_all(osv.osv_memory):
"""
proc_obj = self.pool.get('procurement.order')
for proc in self.browse(cr, uid, ids):
- print 'Cursor', cr
proc_obj.run_scheduler(cr, uid, automatic=proc.automatic, use_new_cursor=cr.dbname,\
- context=context)
- print 'Cursor', cr
+ context=context)
return {}
def procure_calculation(self, cr, uid, ids, context):
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 1b31ccc11fd..8263e648063 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -148,13 +148,13 @@ class purchase_order(osv.osv):
return res
_columns = {
- 'name': fields.char('Order Reference', size=64, required=True, select=True),
+ 'name': fields.char('Order Reference', size=64, required=True, select=True, help="unique number of the purchase order,computed automatically when the purchase order is created"),
'origin': fields.char('Source Document', size=64,
help="Reference of the document that generated this purchase order request."
),
'partner_ref': fields.char('Supplier Reference', size=64),
'date_order':fields.date('Date Ordered', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, help="Date on which this document has been created."),
- 'date_approve':fields.date('Date Approved', readonly=1),
+ 'date_approve':fields.date('Date Approved', readonly=1, help="Date on which purchase order has been approved"),
'partner_id':fields.many2one('res.partner', 'Supplier', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, change_default=True),
'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True, states={'posted':[('readonly',True)]}),
'dest_address_id':fields.many2one('res.partner.address', 'Destination Address', states={'posted':[('readonly',True)]},
@@ -168,11 +168,11 @@ class purchase_order(osv.osv):
'order_line': fields.one2many('purchase.order.line', 'order_id', 'Order Lines', states={'approved':[('readonly',True)],'done':[('readonly',True)]}),
'validator' : fields.many2one('res.users', 'Validated by', readonly=True),
'notes': fields.text('Notes'),
- 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True),
+ 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True, help="An invoice generated for a purchase order"),
'picking_ids': fields.one2many('stock.picking', 'purchase_id', 'Picking List', readonly=True, help="This is the list of picking list that have been generated for this purchase"),
- 'shipped':fields.boolean('Received', readonly=True, select=True),
+ 'shipped':fields.boolean('Received', readonly=True, select=True, help="It indicates that a picking has been done"),
'shipped_rate': fields.function(_shipped_rate, method=True, string='Received', type='float'),
- 'invoiced': fields.function(_invoiced, method=True, string='Invoiced & Paid', type='boolean'),
+ 'invoiced': fields.function(_invoiced, method=True, string='Invoiced & Paid', type='boolean', help="It indicates that an invoice has been paid"),
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
'invoice_method': fields.selection([('manual','Manual'),('order','From Order'),('picking','From Picking')], 'Invoicing Control', required=True,
help="From Order: a draft invoice will be pre-generated based on the purchase order. The accountant " \
@@ -184,15 +184,15 @@ class purchase_order(osv.osv):
'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Purchase Price'), string='Untaxed Amount',
store={
'purchase.order.line': (_get_order, None, 10),
- }, multi="sums"),
+ }, multi="sums", help="The amount without tax"),
'amount_tax': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Purchase Price'), string='Taxes',
store={
'purchase.order.line': (_get_order, None, 10),
- }, multi="sums"),
+ }, multi="sums", help="The tax amount"),
'amount_total': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Purchase Price'), string='Total',
store={
'purchase.order.line': (_get_order, None, 10),
- }, multi="sums"),
+ }, multi="sums",help="The total amount"),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position'),
'product_id': fields.related('order_line','product_id', type='many2one', relation='product.product', string='Product'),
'create_uid': fields.many2one('res.users', 'Responsible'),
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index e06c3decc0a..856bc3edcf3 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -169,7 +169,7 @@
-
+
@@ -179,7 +179,7 @@
-
+
@@ -220,7 +220,7 @@
ir.actions.act_windowpurchase.orderform
- {'search_default_draft': 1,'search_create_uid':uid}
+ {'search_default_draft': 1,'search_default_create_uid':uid}tree,form,graph,calendar
@@ -232,7 +232,7 @@
ir.actions.act_windowpurchase.ordertree,form,graph,calendar
- {'search_default_approved': 1,'search_create_uid':uid}
+ {'search_default_approved': 1,'search_default_create_uid':uid}
@@ -307,14 +307,15 @@
search
-
+
-
+
+
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index 4a85390e6a8..7ea7e4d6a56 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -35,11 +35,11 @@ class purchase_requisition(osv.osv):
'date_start': fields.datetime('Requisition Date'),
'date_end': fields.datetime('Requisition Deadline'),
'user_id': fields.many2one('res.users', 'Responsible'),
- 'exclusive': fields.selection([('exclusive','Purchase Tender (exclusive)'),('multiple','Multiple Requisitions')],'Requisition Type', help="If the requisition is exclusive, it will cancel all purchase orders when you confirm one of them", required=True),
+ 'exclusive': fields.selection([('exclusive','Purchase Tender (exclusive)'),('multiple','Multiple Requisitions')],'Requisition Type', required=True, help="Purchase Tender (exclusive):On the confirmation of a purchase order, it cancels the remaining purchase order.Multiple Requisitions:It allows to have multiple purchase orders.On confirmation of a purchase order it does not cancel the remaining orders"""),
'description': fields.text('Description'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'purchase_ids' : fields.one2many('purchase.order','requisition_id','Purchase Orders'),
- 'line_ids' : fields.one2many('purchase.requisition.line','requisition_id','Products to Purchase'),
+ 'line_ids' : fields.one2many('purchase.requisition.line','requisition_id','Products to Purchase',states={'done': [('readonly', True)]}),
'state': fields.selection([('draft','Draft'),('in_progress','In Progress'),('cancel','Cancelled'),('done','Done')], 'State', required=True)
}
_defaults = {
@@ -64,6 +64,9 @@ class purchase_requisition(osv.osv):
self.log(cr, uid, id, message)
return True
def tender_in_progress(self, cr, uid, ids, context={}):
+ for quotations in self.browse(cr, uid, ids):
+ if not quotations.purchase_ids:
+ raise osv.except_osv(_('Purchase order required'),('You should have atleast one purchase order line defined for this tender'))
self.write(cr, uid, ids, {'state':'in_progress'} ,context=context)
for (id,name) in self.name_get(cr, uid, ids):
message = _('Tender') + " '" + name + "' "+ _(" is In Progress")
@@ -109,7 +112,7 @@ class purchase_requisition_line(osv.osv):
value = {'product_uom_id': ''}
if product_id:
prod = self.pool.get('product.product').browse(cr, uid, [product_id])[0]
- value = {'product_uom_id': prod.uom_id.id}
+ value = {'product_uom_id': prod.uom_id.id,'product_qty':1.0}
return {'value': value}
_defaults = {
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 172be8c06e8..5700cc71b75 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -78,7 +78,7 @@
-
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 48b9107d7cf..9d8fc87723f 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -204,7 +204,7 @@ class sale_order(osv.osv):
return result.keys()
_columns = {
- 'name': fields.char('Order Reference', size=64, required=True, select=True),
+ 'name': fields.char('Order Reference', size=64, required=True, select=True, help="unique number of the sale order,computed automatically when the sale order is created"),
'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'origin': fields.char('Source document', size=64, help="Reference of the document that generated this sale order request."),
'client_order_ref': fields.char('Customer Reference', size=64),
@@ -220,15 +220,15 @@ class sale_order(osv.osv):
('cancel', 'Cancelled')
], 'Order State', readonly=True, help="Gives the state of the quotation or sale order. The exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). The 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the date 'Ordered Date'.", select=True),
'date_order': fields.date('Ordered Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'create_date': fields.date('Creation Date', readonly=True),
- 'date_confirm': fields.date('Confirmation Date', readonly=True),
+ 'create_date': fields.date('Creation Date', readonly=True, help="Date on which sale order is created"),
+ 'date_confirm': fields.date('Confirmation Date', readonly=True, help="Date on which sale order is confirmed"),
'user_id': fields.many2one('res.users', 'Salesman', 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.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}),
+ 'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sale order"),
'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="The name and address of the contact who requested the order or quotation."),
'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sale order"),
- 'incoterm': fields.selection(_incoterm_get, 'Incoterm', size=3),
+ 'incoterm': fields.selection(_incoterm_get, 'Incoterm', size=3, help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction"),
'picking_policy': fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery')],
'Picking Policy', required=True, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'order_policy': fields.selection([
@@ -243,16 +243,16 @@ class sale_order(osv.osv):
- The 'Invoice on Order After Delivery' choice will generate the draft invoice based on sale order after all picking lists have been finished.
- The 'Invoice from the picking' choice is used to create an invoice during the picking process."""),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current sale order"),
- 'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
+ 'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, help="The analytic account related to a sale order"),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', help="This is the list of invoices that have been generated for this sale order. The same sale order may have been invoiced in several times (by line for example)."),
'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Picking', readonly=True, help="This is the list of picking list that have been generated for this invoice"),
- 'shipped': fields.boolean('Picked', readonly=True),
+ 'shipped': fields.boolean('Picked', readonly=True, help="It indicates that a picking has been done.It will set to True if the ordered quantities are available and the picking is done.If the ordered quantities are not available it generates a Purchase/Manufacturing order.Unless its Picking and Purchase/Manufacturing order are not in the done state it wont be set to True"),
'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'),
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
'invoiced': fields.function(_invoiced, method=True, string='Paid',
- fnct_search=_invoiced_search, type='boolean'),
+ fnct_search=_invoiced_search, type='boolean', help="It indicates that an invoice has been paid"),
'note': fields.text('Notes'),
'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
@@ -260,19 +260,19 @@ class sale_order(osv.osv):
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums'),
+ multi='sums', help="The amount without tax"),
'amount_tax': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Taxes',
store = {
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums'),
+ multi='sums', help="The tax amount"),
'amount_total': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Total',
store = {
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums'),
+ multi='sums', help="The total amount"),
'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on', help="The sale order will automatically create the invoice proposition (draft invoice). Ordered and delivered quantities may not be the same. You have to choose if you invoice based on ordered or shipped quantities. If the product is a service, shipped quantities means hours spent on the associated tasks.", required=True),
'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 6eb06738c99..4ed571100f5 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -168,7 +168,7 @@
states="confirmed"
string="Make Invoice"
type="action"
- icon="gtk-print" />
+ icon="terp-document-new" />
@@ -202,7 +202,7 @@
-
+
@@ -212,7 +212,7 @@
-
+
@@ -220,7 +220,7 @@
-
+
@@ -248,7 +248,7 @@
-
+
@@ -263,9 +263,9 @@
search
-
-
-
+
+
+
@@ -399,7 +399,7 @@
name="%(action_view_sale_order_line_make_invoice)d"
string="Make Invoice"
type="action"
- icon="gtk-print" />
+ icon="terp-document-new" />
-
-
+
+
-
+
diff --git a/addons/sale_journal/security/ir.model.access.csv b/addons/sale_journal/security/ir.model.access.csv
index 0a7ed3742ab..e1f0c578a45 100644
--- a/addons/sale_journal/security/ir.model.access.csv
+++ b/addons/sale_journal/security/ir.model.access.csv
@@ -8,3 +8,7 @@
"access_sale_journal_sale_journal_stock_worker","sale_journal.sale.journal stock worker","model_sale_journal_sale_journal","stock.group_stock_user",1,0,0,0
"access_sale_journal_picking_journal_stock_worker","sale_journal.picking.journal stock worker","model_sale_journal_picking_journal","stock.group_stock_user",1,0,0,0
"access_sale_journal_invoice_type_stock_worker","sale_journal.invoice_type stock worker","model_sale_journal_invoice_type","stock.group_stock_user",1,0,0,0
+"access_sale_journal_report_user","sale_journal.sale.journal.report","model_sale_journal_report","sale.group_sale_user",1,0,0,0
+"access_sale_journal_report_manager","sale_journal.sale.journal.report","model_sale_journal_report","sale.group_sale_manager",1,1,1,1
+"access_sale_journal_picking_report_user","sale_journal.sale.journal.picking.report","model_sale_journal_picking_report","sale.group_sale_user",1,0,0,0
+"access_sale_journal_picking_report_manager","sale_journal.sale.journal.picking.report","model_sale_journal_picking_report","sale.group_sale_manager",1,1,1,1
diff --git a/addons/sale_order_dates/sale.py b/addons/sale_order_dates/sale_order_dates.py
similarity index 100%
rename from addons/sale_order_dates/sale.py
rename to addons/sale_order_dates/sale_order_dates.py
diff --git a/addons/sale_order_dates/sale_view.xml b/addons/sale_order_dates/sale_order_dates_view.xml
similarity index 100%
rename from addons/sale_order_dates/sale_view.xml
rename to addons/sale_order_dates/sale_order_dates_view.xml