- 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.searchhr_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 @@
-
-
+
diff --git a/addons/purchase/report/request_quotation.rml b/addons/purchase/report/request_quotation.rml
index 66fd58060b8..495c8790e7b 100644
--- a/addons/purchase/report/request_quotation.rml
+++ b/addons/purchase/report/request_quotation.rml
@@ -1,8 +1,8 @@
-
-
+
+
-
+
@@ -10,7 +10,11 @@
-
+
+
+
+
+
@@ -33,6 +37,7 @@
+
@@ -69,30 +74,26 @@
-
-
-
-
- Expected Delivery address:
- [[ (order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']]
- [[ order.dest_address_id and display_address(order.dest_address_id) ]]
+
+
+
+ Expected Delivery address:
+ [[ (order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']]
+ [[ order.dest_address_id and display_address(order.dest_address_id) ]]
+
+
+
+
+
+
@@ -100,18 +101,18 @@
- [[ (order.partner_id.title and order.partner_id.title.name) or '' ]] [[ order.partner_id.name ]]
- [[ display_address(order.partner_id) ]]
+ [[ (order .partner_id and order.partner_id.title and order.partner_id.title.name) or '' ]] [[ (order .partner_id and order.partner_id.name) or '' ]]
+ [[ order.partner_id and display_address(order .partner_id) ]]
- Tel.: [[ (order.partner_id.phone) or removeParentNode('para') ]]
- Fax: [[ (order.partner_id.fax) or removeParentNode('para') ]]
- TVA: [[ (order.partner_id.vat) or removeParentNode('para') ]]
+ Tel.: [[ (order.partner_id and order.partner_id.phone) or removeParentNode('para') ]]
+ Fax: [[ (order.partner_id and order.partner_id.fax) or removeParentNode('para') ]]
+ TVA: [[ (order.partner_id and order.partner_id.vat) or removeParentNode('para') ]]
@@ -148,6 +149,11 @@
[[ (order_line.product_uom and order_line.product_uom.name) or '' ]]
+
+
+ [[ format(order_line.notes or removeParentNode('tr')) ]]
+
+
@@ -165,6 +171,5 @@
[[ user.signature or '' ]]
-
-
\ No newline at end of file
+
diff --git a/addons/stock/report/picking.py b/addons/stock/report/picking.py
index 29a53fba7a2..711abbf6259 100644
--- a/addons/stock/report/picking.py
+++ b/addons/stock/report/picking.py
@@ -29,7 +29,13 @@ class picking(report_sxw.rml_parse):
super(picking, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
+ 'get_product_desc':self.get_product_desc
})
+ def get_product_desc(self,move_line):
+ desc = move_line.product_id.name
+ if move_line.product_id.default_code:
+ desc = '[' + move_line.product_id.default_code + ']' + ' ' + desc
+ return desc
report_sxw.report_sxw('report.stock.picking.list','stock.picking','addons/stock/report/picking.rml',parser=picking)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/picking.rml b/addons/stock/report/picking.rml
index 5f395c9f005..ecc682dceda 100644
--- a/addons/stock/report/picking.rml
+++ b/addons/stock/report/picking.rml
@@ -162,12 +162,14 @@
Customer Address : [[ (picking.type == 'out' or removeParentNode('para')) and '' ]]Warehouse Address : [[ (picking.type == 'internal' or removeParentNode('para')) and '' ]][[ (picking.partner_id and picking.partner_id.id and picking.partner_id.title.name) or '' ]] [[ picking.partner_id and picking.partner_id.id and picking.partner_id.name ]]
- [[ picking.partner_id and display_address(picking.partner_id,'delivery') ]]
+ [[ picking.partner_id and display_address(picking.partner_id) ]]
+ [[ picking.partner_id.phone or picking.partner_id.email or removeParentNode('para')]]
Contact Address :[[ picking.partner_id and picking.partner_id.title.name or '' ]] [[ picking.partner_id and picking.partner_id.name or '' ]]
- [[ picking.partner_id and display_address(picking.partner_id,'default') ]]
+ [[ picking.partner_id and display_address(picking.partner_id) ]]
+ [[ picking.partner_id.phone or picking.partner_id.email or removeParentNode('para')]]