diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index f7d64f43405..7732d8d8cb0 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -1227,6 +1227,7 @@ account.move.line + @@ -1717,8 +1718,8 @@ + action="action_model_form" name="Models" id="menu_action_model_form" sequence="5" + parent="account.menu_finance_recurrent_entries"/> - - Invoice Tasks Work - account.analytic.line - form - tree,form - [] - {'search_default_to_invoice': 1} - - -

- Click to add some tasks work to be invoiced. -

- This list shows every task you can invoice to the customer. - Select the lines and invoice from the 'more...' contextual - menu to generate invoices automatically. -

-
-
- - hr_timesheet_invoice.factor.search hr_timesheet_invoice.factor diff --git a/addons/l10n_ch/invoice.py b/addons/l10n_ch/invoice.py index 9e8d3f0d57b..3a65e9a0d2b 100644 --- a/addons/l10n_ch/invoice.py +++ b/addons/l10n_ch/invoice.py @@ -67,7 +67,7 @@ class account_invoice(osv.osv): _columns = { ### BVR reference type BVR or FREE 'reference_type': fields.selection(_get_reference_type, - 'Reference Type', required=True), + 'Payment Reference', required=True), ### Partner bank link between bank and partner id 'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account', help='The partner bank account to pay\nKeep empty to use the default' diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index ad7563140b2..97ef98bb8cd 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -175,8 +175,8 @@ class purchase_order(osv.osv): help="Put an address if you want to deliver directly from the supplier to the customer. " \ "Otherwise, keep empty to deliver to your own company." ), - 'warehouse_id': fields.many2one('stock.warehouse', 'Destination Warehouse', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}), - 'location_id': fields.many2one('stock.location', 'Destination', required=True, domain=[('usage','<>','view')]), + 'warehouse_id': fields.many2one('stock.warehouse', 'Destination Warehouse'), + 'location_id': fields.many2one('stock.location', 'Destination', required=True, domain=[('usage','<>','view')], states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]} ), 'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, help="The pricelist sets the currency used for this purchase order. It also computes the supplier price for the selected products/quantities."), 'currency_id': fields.related('pricelist_id', 'currency_id', type="many2one", relation="res.currency", readonly=True, required=True), 'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, help="The status of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' status. Then the order has to be confirmed by the user, the status switch to 'Confirmed'. Then the supplier must confirm the order to change the status to 'Approved'. When the purchase order is paid and received, the status becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the status becomes in exception.", select=True), @@ -189,7 +189,7 @@ class purchase_order(osv.osv): 'shipped_rate': fields.function(_shipped_rate, string='Received', type='float'), 'invoiced': fields.function(_invoiced, string='Invoice Received', type='boolean', help="It indicates that an invoice has been paid"), 'invoiced_rate': fields.function(_invoiced_rate, string='Invoiced', type='float'), - 'invoice_method': fields.selection([('manual','Based on Purchase Order lines'),('order','Based on generated draft invoice'),('picking','Based on incoming shipments')], 'Invoicing Control', required=True, + 'invoice_method': fields.selection([('manual','Based on Purchase Order lines'),('order','Based on generated draft invoice'),('picking','Based on incoming shipments')], 'Invoicing Control', required=True,states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, help="Based on Purchase Order lines: place individual lines in 'Invoice Control > Based on P.O. lines' from where you can selectively create an invoice.\n" \ "Based on generated invoice: create a draft invoice you can validate later.\n" \ "Bases on incoming shipments: let you create an invoice when receptions are validated." @@ -214,13 +214,13 @@ class purchase_order(osv.osv): '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'), - 'company_id': fields.many2one('res.company','Company',required=True,select=1), + 'company_id': fields.many2one('res.company','Company',required=True,select=1, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}), 'journal_id': fields.many2one('account.journal', 'Journal'), } _defaults = { 'date_order': fields.date.context_today, 'state': 'draft', - 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'purchase.order'), + 'name': lambda obj, cr, uid, context: '/', 'shipped': 0, 'invoice_method': 'order', 'invoiced': 0, @@ -237,6 +237,8 @@ class purchase_order(osv.osv): _order = "name desc" def create(self, cr, uid, vals, context=None): + if vals.get('name','/')=='/': + vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'purchase.order') or '/' order = super(purchase_order, self).create(cr, uid, vals, context=context) if order: self.create_send_note(cr, uid, [order], context=context) diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 4c7aea1caac..4f8fc34b038 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -262,8 +262,7 @@
-