diff --git a/addons/account/report/invoice.rml b/addons/account/report/invoice.rml index 6f1cac05102..b14f3d2ed68 100644 --- a/addons/account/report/invoice.rml +++ b/addons/account/report/invoice.rml @@ -127,10 +127,10 @@ - + - + - + - + - - - - - - - - - - - - - - + - + + + + + - - - - - - - + + + + + + + - - - + + @@ -227,25 +213,32 @@ - + + + - [[ repeatIn(objects,'o') ]] - [[ setLang(o.partner_id.lang) ]] + [[ setLang(o.partner_id.lang) ]] - - [[ o.partner_id.name ]] [[ o.partner_id.title or '' ]] + + + + + + [[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] [[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] [[ o.address_invoice_id.street ]] [[ o.address_invoice_id.street2 or '' ]] [[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] [[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] [[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] - + + + Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] VAT : [[ o.partner_id.vat or removeParentNode('para') ]] @@ -255,168 +248,278 @@ Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]] PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]] Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]] - Canceled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] + Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]] Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]] - + + + - Document - Invoice Date - Partner Ref. + + Document + + + Invoice Date + + + Partner Ref. + - [[ o.name ]] - [[ formatLang(o.date_invoice,date=True) ]] - [[ o.address_invoice_id.partner_id.ref or '' ]] + + [[ o.name ]] + + + [[ formatLang(o.date_invoice,date=True) ]] + + + [[ o.address_invoice_id.partner_id.ref or '' ]] + - - - + + + + - Description - Taxes - Quantity - Unit Price - Disc.(%) - Price + + Description + + + Taxes + + + Quantity + + + Unit Price + + + Disc.(%) + + + Price +
[[ repeatIn(o.invoice_line,'l') ]] - + - [[ l.name ]] - [[ ', '.join([ lt.description or '' for lt in l.invoice_line_tax_id ]) ]] - [[ formatLang(l.quantity)]] - [[ (l.uos_id and l.uos_id.name) or '' ]] - [[ formatLang(l.price_unit) ]] - [[ formatLang(l.discount) ]] - [[ formatLang(l.price_subtotal) ]] - [[ o.currency_id.code ]] + + [[ l.name ]] + + + [[ ', '.join([ lt.name or '' for lt in l.invoice_line_tax_id ]) ]] + + + [[ formatLang(l.quantity)]] + + + [[ (l.uos_id and l.uos_id.name) or '' ]] + + + [[ formatLang(l.price_unit) ]] + + + [[ formatLang(l.discount) ]] + + + [[ formatLang(l.price_subtotal) ]] + + + [[ o.currency_id.code ]] + - [[ format(l.note) or removeParentNode('tr') ]] - - - - - - - + + [[ format(l.note or '') or removeParentNode('tr') ]] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + - - + + + + + + + + + + - + - Net Total: - [[ formatLang(o.amount_untaxed) ]] - [[ o.currency_id.code ]] + + Net Total: + + + [[ formatLang(o.amount_untaxed) ]] + + + [[ o.currency_id.code ]] + - + + + + - Taxes: - [[ formatLang(o.amount_tax) ]] - [[ o.currency_id.code ]] + + Taxes: + + + [[ formatLang(o.amount_tax) ]] + + + [[ o.currency_id.code ]] + - + + + + - Total: - [[ formatLang(o.amount_total) ]] - [[ o.currency_id.code ]] + + Total: + + + [[ formatLang(o.amount_total) ]] + + + [[ o.currency_id.code ]] + - + - + - Tax - Base - Amount + + Tax + + + Base + + + Amount + + + + + + + + + + + [[ repeatIn(o.tax_line,'t') ]] + + + + [[ t.name ]] + + + [[ formatLang(t.base) ]] + + + [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]] + - [[ repeatIn(o.tax_line,'t') ]] - - - [[ t.name ]] - [[ formatLang(t.base) ]] - [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]][[ formatLang(t.amount) ]] - - + + + + + - - - - - - - + [[ format(o.comment or '') or removeParentNode('blockTable') ]] - + - - + + [[ format((o.payment_term and o.payment_term.note) or '') or removeParentNode('blockTable') ]] + - - - [[ format(o.comment or removeParentNode('blockTable')) ]] - - - - - - - - [[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]] - - - - - - + Fiscal Position Remark : - [[ format(o.fiscal_position and o.fiscal_position.note or removeParentNode('blockTable')) ]] + [[ format((o.fiscal_position and o.fiscal_position.note) or '') or removeParentNode('blockTable') ]] - - - - - - + + + + +
diff --git a/addons/base_contact/test/base_contact00.yml b/addons/base_contact/test/base_contact00.yml index 335f525f92f..c6a4ed9e057 100644 --- a/addons/base_contact/test/base_contact00.yml +++ b/addons/base_contact/test/base_contact00.yml @@ -55,7 +55,7 @@ Now I will check that the new job is assigned properly to contact or not - !assert {model: res.partner.contact, id: res_partner_contact_williams0}: - - len(job_ids) > 2 + - len(job_ids) >= 2 - | In order to check contacts working at several addresses for different partners I will create contact with 2 different addresses diff --git a/addons/board/board_view.xml b/addons/board/board_view.xml index c7e1a37b8fa..f34c0ce5917 100644 --- a/addons/board/board_view.xml +++ b/addons/board/board_view.xml @@ -4,9 +4,28 @@ - - + name="Dashboard" sequence="30" /> + + + board.note.search + board.note + search + + + + + + + + + + + + + + + + board.note.tree @@ -15,10 +34,11 @@ + - + @@ -31,7 +51,8 @@ - + + @@ -43,6 +64,7 @@ board.note form form,tree + @@ -72,7 +94,7 @@ name="%(action_board_menu_create)d" string="Create Menu" type="action" icon="gtk-justify-fill" /> - + diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index ada4f7d29fe..7a614a16211 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -309,7 +309,7 @@ context="{'invisible_section': False}"> diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py index e13a428138a..db5aa168bbb 100644 --- a/addons/crm/crm_opportunity.py +++ b/addons/crm/crm_opportunity.py @@ -70,6 +70,20 @@ class crm_opportunity(osv.osv): self.log(cr, uid, id, message) return res + def case_mark_lost(self, cr, uid, ids, *args): + """Mark the case as lost: state = done and probability = 0% + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of case Ids + @param *args: Tuple Value for additional Params + """ + res = self.write(cr, uid, ids, {'probability' : 0.0, 'state': 'done'}) + for (id, name) in self.name_get(cr, uid, ids): + message = _('Opportunity ') + " '" + name + "' "+ _("is Lost.") + self.log(cr, uid, id, message) + return res + def case_cancel(self, cr, uid, ids, *args): """Overrides cancel for crm_case for setting probability @param self: The object pointer @@ -80,9 +94,6 @@ class crm_opportunity(osv.osv): """ res = super(crm_opportunity, self).case_cancel(cr, uid, ids, args) self.write(cr, uid, ids, {'probability' : 0.0}) - for (id, name) in self.name_get(cr, uid, ids): - message = _('Opportunity ') + " '" + name + "' "+ _("is Lost.") - self.log(cr, uid, id, message) return res def case_open(self, cr, uid, ids, *args): diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml index b08ceaf898e..5c3f3ffa8e1 100644 --- a/addons/crm/crm_opportunity_view.xml +++ b/addons/crm/crm_opportunity_view.xml @@ -65,8 +65,11 @@ - + +