Merge lp:~openerp-dev/openobject-addons/trunk-staging-mat into lp:openobject-addons
- trunk-staging-mat
- Merge into trunk
Proposed by
Martin Trigaux (OpenERP)
Status: | Merged |
---|---|
Merged at revision: | 8753 |
Proposed branch: | lp:~openerp-dev/openobject-addons/trunk-staging-mat |
Merge into: | lp:openobject-addons |
Diff against target: |
3318 lines (+879/-723) 69 files modified
account/account.py (+21/-11) account/account_invoice.py (+33/-3) account/account_invoice_view.xml (+3/-3) account/account_view.xml (+1/-3) account/partner_view.xml (+1/-1) account/product_view.xml (+2/-2) account/project/project_view.xml (+1/-0) account/report/account_print_invoice.rml (+82/-85) account/wizard/pos_box.py (+1/-1) account_followup/account_followup_customers.xml (+3/-2) account_followup/report/account_followup_report.xml (+1/-1) account_payment/wizard/account_payment_order.py (+2/-1) auth_signup/res_users.py (+6/-3) auth_signup/static/src/js/auth_signup.js (+1/-1) base_action_rule/base_action_rule.py (+1/-0) base_vat/base_vat.py (+2/-0) crm/crm_lead.py (+8/-5) crm_partner_assign/wizard/crm_forward_to_partner.py (+1/-0) document_page/document_page_view.xml (+1/-0) fetchmail/security/ir.model.access.csv (+0/-1) hr_expense/hr_expense.py (+38/-9) hr_expense/hr_expense_view.xml (+1/-1) hr_holidays/hr_holidays_view.xml (+2/-2) hr_timesheet_sheet/static/src/js/timesheet.js (+35/-9) im/im.py (+1/-73) im/security/ir.model.access.csv (+1/-1) im/static/src/js/im.js (+7/-0) im/watcher.py (+84/-0) im_livechat/security/ir.model.access.csv (+2/-0) im_livechat/static/ext/static/js/livesupport.js (+7/-0) l10n_ca/__openerp__.py (+2/-2) l10n_ca/account_tax_en.xml (+2/-8) l10n_ca/account_tax_fr.xml (+2/-8) l10n_ca/fiscal_templates_en.xml (+6/-6) l10n_ca/fiscal_templates_fr.xml (+3/-3) l10n_it/__openerp__.py (+1/-1) l10n_it/data/account.tax.code.template.csv (+23/-8) l10n_it/data/account.tax.template.csv (+65/-70) l10n_lu/account_financial_report.xml (+15/-15) mail/mail_mail.py (+0/-3) mail/mail_message.py (+6/-7) mail/mail_thread.py (+31/-6) mail/static/src/js/mail.js (+7/-4) mail/static/src/xml/mail.xml (+1/-1) mail/tests/test_mail_gateway.py (+10/-2) mail/wizard/mail_compose_message.py (+1/-0) mrp/procurement.py (+5/-0) mrp/report/order.rml (+67/-86) portal/security/portal_security.xml (+1/-1) portal/wizard/portal_wizard.py (+63/-23) portal_hr_employees/hr_employee_view.xml (+2/-1) procurement/procurement_view.xml (+1/-0) project/project.py (+19/-6) project/report/project_cumulative.xml (+1/-1) project_issue/project_issue.py (+28/-14) project_issue/project_issue_view.xml (+14/-13) project_issue_sheet/project_issue_sheet_view.xml (+2/-1) project_long_term/project_long_term_view.xml (+3/-2) purchase/report/order.rml (+57/-79) purchase/report/request_quotation.rml (+20/-43) report_webkit/webkit_report.py (+1/-1) sale/report/sale_order.rml (+62/-83) sale/res_partner.py (+1/-1) sale/sale.py (+1/-1) sale_margin/sale_margin_view.xml (+1/-1) sale_stock/test/cancel_order_sale_stock.yml (+2/-2) share/wizard/share_wizard.py (+2/-1) stock/stock.py (+1/-0) stock/wizard/stock_partial_picking.py (+1/-1) |
To merge this branch: | bzr merge lp:~openerp-dev/openobject-addons/trunk-staging-mat |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Martin Trigaux (OpenERP) | Pending | ||
Review via email:
|
Commit message
Description of the change
various changes
To post a comment you must log in.
- 8751. By Olivier Dony (Odoo)
-
[FIX] base_partner_merge: properly ignore computed fields when merging 2 partners
- 8752. By Launchpad Translations on behalf of openerp
-
Launchpad automatic translations update.
- 8753. By Martin Trigaux (OpenERP)
-
[MERGE] Forward porting of saas-1 up to revision 8739
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'account/account.py' |
2 | --- account/account.py 2013-04-29 15:14:10 +0000 |
3 | +++ account/account.py 2013-06-06 12:58:46 +0000 |
4 | @@ -1034,9 +1034,15 @@ |
5 | context = {} |
6 | ids = [] |
7 | if name: |
8 | - ids = self.search(cr, user, [('code','ilike',name)]+ args, limit=limit) |
9 | + ids = self.search(cr, user, |
10 | + [('code', 'ilike', name)] + args, |
11 | + limit=limit, |
12 | + context=context) |
13 | if not ids: |
14 | - ids = self.search(cr, user, [('name',operator,name)]+ args, limit=limit) |
15 | + ids = self.search(cr, user, |
16 | + [('name', operator, name)] + args, |
17 | + limit=limit, |
18 | + context=context) |
19 | return self.name_get(cr, user, ids, context=context) |
20 | |
21 | def write(self, cr, uid, ids, vals, context=None): |
22 | @@ -1059,10 +1065,14 @@ |
23 | raise osv.except_osv(_('Error!'), _('You should choose the periods that belong to the same company.')) |
24 | if period_date_start > period_date_stop: |
25 | raise osv.except_osv(_('Error!'), _('Start period should precede then end period.')) |
26 | + |
27 | + # /!\ We do not include a criterion on the company_id field below, to allow producing consolidated reports |
28 | + # on multiple companies. It will only work when start/end periods are selected and no fiscal year is chosen. |
29 | + |
30 | #for period from = january, we want to exclude the opening period (but it has same date_from, so we have to check if period_from is special or not to include that clause or not in the search). |
31 | if period_from.special: |
32 | - return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('company_id', '=', company1_id)]) |
33 | - return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('company_id', '=', company1_id), ('special', '=', False)]) |
34 | + return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop)]) |
35 | + return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('special', '=', False)]) |
36 | |
37 | |
38 | class account_journal_period(osv.osv): |
39 | @@ -1854,6 +1864,12 @@ |
40 | _order = 'code' |
41 | |
42 | |
43 | +def get_precision_tax(): |
44 | + def change_digit_tax(cr): |
45 | + res = openerp.registry(cr.dbname)['decimal.precision'].precision_get(cr, SUPERUSER_ID, 'Account') |
46 | + return (16, res+3) |
47 | + return change_digit_tax |
48 | + |
49 | class account_tax(osv.osv): |
50 | """ |
51 | A tax object. |
52 | @@ -1874,12 +1890,6 @@ |
53 | default.update({'name': name + _(' (Copy)')}) |
54 | return super(account_tax, self).copy_data(cr, uid, id, default=default, context=context) |
55 | |
56 | - def get_precision_tax(): |
57 | - def change_digit_tax(cr): |
58 | - res = openerp.registry(cr.dbname)['decimal.precision'].precision_get(cr, SUPERUSER_ID, 'Account') |
59 | - return (16, res+2) |
60 | - return change_digit_tax |
61 | - |
62 | _name = 'account.tax' |
63 | _description = 'Tax' |
64 | _columns = { |
65 | @@ -2795,7 +2805,7 @@ |
66 | 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), |
67 | 'name': fields.char('Tax Name', size=64, required=True), |
68 | 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from lower sequences to higher ones. The order is important if you have a tax that has several tax children. In this case, the evaluation order is important."), |
69 | - 'amount': fields.float('Amount', required=True, digits=(14,4), help="For Tax Type percent enter % ratio between 0-1."), |
70 | + 'amount': fields.float('Amount', required=True, digits_compute=get_precision_tax(), help="For Tax Type percent enter % ratio between 0-1."), |
71 | 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True), |
72 | 'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True, help="If not applicable (computed through a Python code), the tax won't appear on the invoice."), |
73 | 'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."), |
74 | |
75 | === modified file 'account/account_invoice.py' |
76 | --- account/account_invoice.py 2013-06-03 10:26:27 +0000 |
77 | +++ account/account_invoice.py 2013-06-06 12:58:46 +0000 |
78 | @@ -89,13 +89,43 @@ |
79 | return [('none', _('Free Reference'))] |
80 | |
81 | def _amount_residual(self, cr, uid, ids, name, args, context=None): |
82 | + """Function of the field residua. It computes the residual amount (balance) for each invoice""" |
83 | + if context is None: |
84 | + context = {} |
85 | + ctx = context.copy() |
86 | result = {} |
87 | + currency_obj = self.pool.get('res.currency') |
88 | for invoice in self.browse(cr, uid, ids, context=context): |
89 | + nb_inv_in_partial_rec = max_invoice_id = 0 |
90 | result[invoice.id] = 0.0 |
91 | if invoice.move_id: |
92 | - for m in invoice.move_id.line_id: |
93 | - if m.account_id.type in ('receivable','payable'): |
94 | - result[invoice.id] += m.amount_residual_currency |
95 | + for aml in invoice.move_id.line_id: |
96 | + if aml.account_id.type in ('receivable','payable'): |
97 | + if aml.currency_id and aml.currency_id.id == invoice.currency_id.id: |
98 | + result[invoice.id] += aml.amount_residual_currency |
99 | + else: |
100 | + ctx['date'] = aml.date |
101 | + result[invoice.id] += currency_obj.compute(cr, uid, aml.company_id.currency_id.id, invoice.currency_id.id, aml.amount_residual, context=ctx) |
102 | + |
103 | + if aml.reconcile_partial_id.line_partial_ids: |
104 | + #we check if the invoice is partially reconciled and if there are other invoices |
105 | + #involved in this partial reconciliation (and we sum these invoices) |
106 | + for line in aml.reconcile_partial_id.line_partial_ids: |
107 | + if line.invoice: |
108 | + nb_inv_in_partial_rec += 1 |
109 | + #store the max invoice id as for this invoice we will make a balance instead of a simple division |
110 | + max_invoice_id = max(max_invoice_id, line.invoice.id) |
111 | + if nb_inv_in_partial_rec: |
112 | + #if there are several invoices in a partial reconciliation, we split the residual by the number |
113 | + #of invoice to have a sum of residual amounts that matches the partner balance |
114 | + new_value = currency_obj.round(cr, uid, invoice.currency_id, result[invoice.id] / nb_inv_in_partial_rec) |
115 | + if invoice.id == max_invoice_id: |
116 | + #if it's the last the invoice of the bunch of invoices partially reconciled together, we make a |
117 | + #balance to avoid rounding errors |
118 | + result[invoice.id] = result[invoice.id] - ((nb_inv_in_partial_rec - 1) * new_value) |
119 | + else: |
120 | + result[invoice.id] = new_value |
121 | + |
122 | #prevent the residual amount on the invoice to be less than 0 |
123 | result[invoice.id] = max(result[invoice.id], 0.0) |
124 | return result |
125 | |
126 | === modified file 'account/account_invoice_view.xml' |
127 | --- account/account_invoice_view.xml 2013-04-22 15:34:49 +0000 |
128 | +++ account/account_invoice_view.xml 2013-06-06 12:58:46 +0000 |
129 | @@ -197,7 +197,7 @@ |
130 | <field name="name"/> |
131 | <field name="company_id" invisible="1"/> |
132 | <field name="account_id" groups="account.group_account_user" |
133 | - domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" |
134 | + domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '=', 'other')]" |
135 | on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> |
136 | <field name="account_analytic_id" groups="analytic.group_analytic_accounting" |
137 | domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/> |
138 | @@ -320,7 +320,7 @@ |
139 | <group> |
140 | <field string="Customer" name="partner_id" |
141 | on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" |
142 | - groups="base.group_user" context="{'search_default_customer':1, 'show_address': 1}" |
143 | + context="{'search_default_customer':1, 'show_address': 1}" |
144 | options='{"always_reload": True}' |
145 | domain="[('customer', '=', True)]"/> |
146 | <field name="fiscal_position" widget="selection" /> |
147 | @@ -353,7 +353,7 @@ |
148 | <field name="name"/> |
149 | <field name="company_id" invisible="1"/> |
150 | <field name="account_id" groups="account.group_account_user" |
151 | - domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" |
152 | + domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '=', 'other')]" |
153 | on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> |
154 | <field name="account_analytic_id" groups="analytic.group_analytic_accounting" |
155 | domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/> |
156 | |
157 | === modified file 'account/account_view.xml' |
158 | --- account/account_view.xml 2013-05-14 12:03:41 +0000 |
159 | +++ account/account_view.xml 2013-06-06 12:58:46 +0000 |
160 | @@ -907,9 +907,7 @@ |
161 | <label for="type"/> |
162 | <div> |
163 | <field name="type"/> |
164 | - <field name="amount" class="oe_inline" |
165 | - attrs="{'invisible':[('type','in',('none', 'code', 'balance'))]}"/> |
166 | - <label string="%%" attrs="{'invisible':[('type','<>','percent')]}"/> |
167 | + <field name="amount" attrs="{'invisible':[('type','in',('none', 'code', 'balance'))]}"/> |
168 | </div> |
169 | <field name="python_compute" attrs="{'invisible':[('type','!=','code')],'required':[('type','=','code')]}"/> |
170 | <field name="python_compute_inv" attrs="{'invisible':[('type','!=','code')],'required':[('type','=','code')]}"/> |
171 | |
172 | === modified file 'account/partner_view.xml' |
173 | --- account/partner_view.xml 2013-05-07 16:51:13 +0000 |
174 | +++ account/partner_view.xml 2013-06-06 12:58:46 +0000 |
175 | @@ -68,7 +68,7 @@ |
176 | name="%(account.action_invoice_tree)d" |
177 | context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/> |
178 | <button type="action" string="Journal Items" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/> |
179 | - <button type="action" string="Contracts/Analytic Accounts" name="%(account.action_open_partner_analytic_accounts)d" |
180 | + <button type="action" string="Contracts" name="%(account.action_open_partner_analytic_accounts)d" |
181 | groups="analytic.group_analytic_accounting"/> |
182 | </xpath> |
183 | </field> |
184 | |
185 | === modified file 'account/product_view.xml' |
186 | --- account/product_view.xml 2012-12-08 10:33:38 +0000 |
187 | +++ account/product_view.xml 2013-06-06 12:58:46 +0000 |
188 | @@ -11,11 +11,11 @@ |
189 | <page string="Accounting" groups="account.group_account_invoice"> |
190 | <group name="properties"> |
191 | <group> |
192 | - <field name="property_account_income" domain="[('type','<>','view'),('type','<>','consolidation')]" groups="account.group_account_user"/> |
193 | + <field name="property_account_income" domain="[('type','=','other')]" groups="account.group_account_user"/> |
194 | <field name="taxes_id" colspan="2" attrs="{'readonly':[('sale_ok','=',0)]}" widget="many2many_tags"/> |
195 | </group> |
196 | <group> |
197 | - <field name="property_account_expense" domain="[('type','<>','view'),('type','<>','consolidation')]" groups="account.group_account_user"/> |
198 | + <field name="property_account_expense" domain="[('type','=','other')]" groups="account.group_account_user"/> |
199 | <field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/> |
200 | </group> |
201 | </group> |
202 | |
203 | === modified file 'account/project/project_view.xml' |
204 | --- account/project/project_view.xml 2013-05-07 16:51:13 +0000 |
205 | +++ account/project/project_view.xml 2013-06-06 12:58:46 +0000 |
206 | @@ -68,6 +68,7 @@ |
207 | <field name="parent_id" invisible="1"/> |
208 | <field name="type"/> |
209 | <field name="company_id" groups="base.group_multi_company"/> |
210 | + <field name="template_id" invisible="1"/> |
211 | </tree> |
212 | </field> |
213 | </record> |
214 | |
215 | === modified file 'account/report/account_print_invoice.rml' |
216 | --- account/report/account_print_invoice.rml 2013-03-26 17:02:58 +0000 |
217 | +++ account/report/account_print_invoice.rml 2013-06-06 12:58:46 +0000 |
218 | @@ -99,42 +99,39 @@ |
219 | <initialize> |
220 | <paraStyle name="all" alignment="justify"/> |
221 | </initialize> |
222 | - <paraStyle name="Standard" fontName="Helvetica"/> |
223 | - <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
224 | - <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
225 | - <paraStyle name="Table Contents" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
226 | - <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/> |
227 | - <paraStyle name="Caption" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> |
228 | - <paraStyle name="Index" fontName="Helvetica"/> |
229 | - <paraStyle name="Heading" fontName="Helvetica" fontSize="15.0" leading="19" spaceBefore="12.0" spaceAfter="6.0"/> |
230 | - <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
231 | - <paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
232 | - <paraStyle name="Footer" fontName="Helvetica"/> |
233 | - <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
234 | - <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
235 | - <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
236 | - <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
237 | - <paraStyle name="terp_default_Bold_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
238 | - <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
239 | - <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
240 | - <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
241 | - <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
242 | - <paraStyle name="terp_default_Right_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
243 | - <paraStyle name="terp_default_Centre_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
244 | - <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
245 | - <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/> |
246 | - <paraStyle name="terp_default_address" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
247 | - <paraStyle name="terp_default_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
248 | - <paraStyle name="terp_default_Bold_9" rightIndent="0.0" leftIndent="-3.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
249 | - <paraStyle name="terp_default_Centre_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
250 | - <paraStyle name="terp_default_Right_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
251 | - <paraStyle name="terp_default_Bold_Right_9" rightIndent="0.0" leftIndent="-3.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
252 | - <paraStyle name="terp_default_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
253 | - <paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0" textColor="#ffffff"/> |
254 | - <paraStyle name="terp_default_Note" rightIndent="0.0" leftIndent="9.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
255 | - <paraStyle name="Table" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> |
256 | - <paraStyle name="User Index 10" rightIndent="0.0" leftIndent="127.0" fontName="Helvetica"/> |
257 | - <paraStyle name="Preformatted Text" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/> |
258 | + <paraStyle name="Standard"/> |
259 | + <paraStyle name="Text body" spaceBefore="0.0" spaceAfter="6.0"/> |
260 | + <paraStyle name="List" spaceBefore="0.0" spaceAfter="6.0"/> |
261 | + <paraStyle name="Table Contents" spaceBefore="0.0" spaceAfter="6.0"/> |
262 | + <paraStyle name="Caption" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> |
263 | + <paraStyle name="Index"/> |
264 | + |
265 | + <paraStyle name="terp_header" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
266 | + <paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
267 | + <paraStyle name="Footer"/> |
268 | + <paraStyle name="Horizontal Line" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
269 | + |
270 | + <paraStyle name="terp_tblheader_General" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
271 | + <paraStyle name="terp_tblheader_Details" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
272 | + <paraStyle name="terp_tblheader_General_Centre" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
273 | + <paraStyle name="terp_tblheader_General_Right" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
274 | + <paraStyle name="terp_tblheader_Details_Centre" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
275 | + <paraStyle name="terp_tblheader_Details_Right" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
276 | + |
277 | + <paraStyle name="terp_default_Right_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
278 | + <paraStyle name="terp_default_Centre_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
279 | + <paraStyle name="terp_default_address" rightIndent="0.0" leftIndent="0.0" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
280 | + <paraStyle name="terp_default_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
281 | + <paraStyle name="terp_default_Bold_9" rightIndent="0.0" leftIndent="-3.0" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
282 | + <paraStyle name="terp_default_Centre_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
283 | + <paraStyle name="terp_default_Right_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
284 | + <paraStyle name="terp_default_Bold_Right_9" rightIndent="0.0" leftIndent="-3.0" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
285 | + <paraStyle name="terp_default_2" rightIndent="0.0" leftIndent="0.0" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
286 | + <paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0" textColor="#ffffff"/> |
287 | + |
288 | + <paraStyle name="Table" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> |
289 | + <paraStyle name="User Index 10" rightIndent="0.0" leftIndent="127.0"/> |
290 | + <paraStyle name="Preformatted Text" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/> |
291 | <images/> |
292 | </stylesheet> |
293 | <story> |
294 | @@ -144,12 +141,12 @@ |
295 | <pto_header><!-- Must be after setLang() --> |
296 | <blockTable colWidths="202.0,87.0,71.0,57.0,42.0,71.0" style="Table7"> |
297 | <tr> |
298 | - <td> <para style="terp_tblheader_Details">Description</para> </td> |
299 | - <td> <para style="terp_tblheader_Details_Centre">Taxes</para> </td> |
300 | - <td> <para style="terp_tblheader_Details_Centre">Quantity</para> </td> |
301 | - <td> <para style="terp_tblheader_Details_Right">Unit Price </para> </td> |
302 | - <td> <para style="terp_tblheader_Details_Right">Disc.(%)</para> </td> |
303 | - <td> <para style="terp_tblheader_Details_Right">Price</para> </td> |
304 | + <td><para style="terp_tblheader_Details"><b>Description</b></para></td> |
305 | + <td><para style="terp_tblheader_Details_Centre"><b>Taxes</b></para></td> |
306 | + <td><para style="terp_tblheader_Details_Centre"><b>Quantity</b></para></td> |
307 | + <td><para style="terp_tblheader_Details_Right"><b>Unit Price</b></para></td> |
308 | + <td><para style="terp_tblheader_Details_Right"><b>Disc.(%)</b></para></td> |
309 | + <td><para style="terp_tblheader_Details_Right"><b>Price</b></para></td> |
310 | </tr> |
311 | </blockTable> |
312 | </pto_header> |
313 | @@ -172,29 +169,29 @@ |
314 | </td> |
315 | </tr> |
316 | </blockTable> |
317 | - <para style="terp_header">Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]]</para> |
318 | - <para style="terp_header">PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]]</para> |
319 | - <para style="terp_header">Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]]</para> |
320 | - <para style="terp_header">Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]]</para> |
321 | - <para style="terp_header">Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para> |
322 | - <para style="terp_header">Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para> |
323 | - <para style="terp_header">Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]]</para> |
324 | + <para style="terp_header"><b>Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> |
325 | + <para style="terp_header"><b>PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]]</b></para> |
326 | + <para style="terp_header"><b>Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]]</b></para> |
327 | + <para style="terp_header"><b>Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> |
328 | + <para style="terp_header"><b>Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> |
329 | + <para style="terp_header"><b>Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> |
330 | + <para style="terp_header"><b>Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> |
331 | <para style="terp_default_8"> |
332 | <font color="white"> </font> |
333 | </para> |
334 | <blockTable colWidths="132.50,132.50,132.50,132.50" style="Table_Invoice_General_Header"> |
335 | <tr> |
336 | <td> |
337 | - <para style="terp_tblheader_General_Centre">Description</para> |
338 | - </td> |
339 | - <td> |
340 | - <para style="terp_tblheader_General_Centre">Invoice Date</para> |
341 | - </td> |
342 | - <td> |
343 | - <para style="terp_tblheader_General_Centre">Source</para> |
344 | - </td> |
345 | - <td> |
346 | - <para style="terp_tblheader_General_Centre">Customer Code</para> |
347 | + <para style="terp_tblheader_General_Centre"><b>Description</b></para> |
348 | + </td> |
349 | + <td> |
350 | + <para style="terp_tblheader_General_Centre"><b>Invoice Date</b></para> |
351 | + </td> |
352 | + <td> |
353 | + <para style="terp_tblheader_General_Centre"><b>Source</b></para> |
354 | + </td> |
355 | + <td> |
356 | + <para style="terp_tblheader_General_Centre"><b>Customer Code</b></para> |
357 | </td> |
358 | </tr> |
359 | </blockTable> |
360 | @@ -220,22 +217,22 @@ |
361 | <blockTable colWidths="185.0,70.0,80.0,60.0,50.0,85.0" style="Table7"> |
362 | <tr> |
363 | <td> |
364 | - <para style="terp_tblheader_General">Description</para> |
365 | - </td> |
366 | - <td> |
367 | - <para style="terp_tblheader_General_Centre">Taxes</para> |
368 | - </td> |
369 | - <td> |
370 | - <para style="terp_tblheader_General_Right">Quantity</para> |
371 | - </td> |
372 | - <td> |
373 | - <para style="terp_tblheader_General_Right">Unit Price</para> |
374 | - </td> |
375 | - <td> |
376 | - <para style="terp_tblheader_General_Right">Disc.(%)</para> |
377 | - </td> |
378 | - <td> |
379 | - <para style="terp_tblheader_General_Right">Price</para> |
380 | + <para style="terp_tblheader_General"><b>Description</b></para> |
381 | + </td> |
382 | + <td> |
383 | + <para style="terp_tblheader_General_Centre"><b>Taxes</b></para> |
384 | + </td> |
385 | + <td> |
386 | + <para style="terp_tblheader_General_Right"><b>Quantity</b></para> |
387 | + </td> |
388 | + <td> |
389 | + <para style="terp_tblheader_General_Right"><b>Unit Price</b></para> |
390 | + </td> |
391 | + <td> |
392 | + <para style="terp_tblheader_General_Right"><b>Disc.(%)</b></para> |
393 | + </td> |
394 | + <td> |
395 | + <para style="terp_tblheader_General_Right"><b>Price</b></para> |
396 | </td> |
397 | </tr> |
398 | </blockTable> |
399 | @@ -298,10 +295,10 @@ |
400 | </para> |
401 | </td> |
402 | <td> |
403 | - <para style="terp_tblheader_Details">Total:</para> |
404 | + <para style="terp_tblheader_Details"><b>Total:</b></para> |
405 | </td> |
406 | <td> |
407 | - <para style="terp_default_Bold_Right_9">[[ formatLang(o.amount_total, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</para> |
408 | + <para style="terp_default_Bold_Right_9"><b>[[ formatLang(o.amount_total, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</b></para> |
409 | </td> |
410 | </tr> |
411 | </blockTable> |
412 | @@ -311,13 +308,13 @@ |
413 | <blockTable colWidths="205.0,71.0,71.0,183.0" style="Table9"> |
414 | <tr> |
415 | <td> |
416 | - <para style="terp_tblheader_Details">Tax [[ o.tax_line==[] and removeParentNode('blockTable') ]]</para> |
417 | - </td> |
418 | - <td> |
419 | - <para style="terp_tblheader_Details_Right">Base </para> |
420 | - </td> |
421 | - <td> |
422 | - <para style="terp_tblheader_Details_Right">Amount </para> |
423 | + <para style="terp_tblheader_Details"><b>Tax [[ o.tax_line==[] and removeParentNode('blockTable') ]]</b></para> |
424 | + </td> |
425 | + <td> |
426 | + <para style="terp_tblheader_Details_Right"><b>Base </b></para> |
427 | + </td> |
428 | + <td> |
429 | + <para style="terp_tblheader_Details_Right"><b>Amount </b></para> |
430 | </td> |
431 | <td> |
432 | <para style="terp_default_8"> |
433 | @@ -361,7 +358,7 @@ |
434 | <blockTable colWidths="120.0,410.0" style="Table1"> |
435 | <tr> |
436 | <td> |
437 | - <para style="terp_default_Bold_9">Fiscal Position Remark : </para> |
438 | + <para style="terp_default_Bold_9"><b>Fiscal Position Remark : </b></para> |
439 | </td> |
440 | <td> |
441 | <para style="terp_default_9">[[ (o.fiscal_position and o.fiscal_position.note and format(o.fiscal_position.note)) or removeParentNode('blockTable') ]]</para> |
442 | |
443 | === modified file 'account/wizard/pos_box.py' |
444 | --- account/wizard/pos_box.py 2013-05-21 12:23:59 +0000 |
445 | +++ account/wizard/pos_box.py 2013-06-06 12:58:46 +0000 |
446 | @@ -22,7 +22,7 @@ |
447 | |
448 | records = self.pool[active_model].browse(cr, uid, active_ids, context=context) |
449 | |
450 | - return self._run(cr, uid, ids, records, context=None) |
451 | + return self._run(cr, uid, ids, records, context=context) |
452 | |
453 | def _run(self, cr, uid, ids, records, context=None): |
454 | for box in self.browse(cr, uid, ids, context=context): |
455 | |
456 | === modified file 'account_followup/account_followup_customers.xml' |
457 | --- account_followup/account_followup_customers.xml 2013-04-22 15:34:49 +0000 |
458 | +++ account_followup/account_followup_customers.xml 2013-06-06 12:58:46 +0000 |
459 | @@ -9,11 +9,12 @@ |
460 | <field name="model">res.partner</field> |
461 | <field name="priority" eval="20"/> |
462 | <field name="arch" type="xml"> |
463 | - <tree string="Customer Followup"> |
464 | + <tree string="Customer Followup" create="false" delete="false"> |
465 | <field name="display_name"/> |
466 | <field name="payment_next_action_date"/> |
467 | <field name="payment_next_action"/> |
468 | <field name="user_id" invisible="1"/> |
469 | + <field name="country_id" invisible="1"/> |
470 | <field name="parent_id" invisible="1"/> |
471 | <field name="payment_responsible_id"/> |
472 | <field name="payment_earliest_due_date"/> |
473 | @@ -97,7 +98,7 @@ |
474 | <button name="action_done" type="object" string="⇾ Mark as Done" |
475 | help="Click to mark the action as done." class="oe_link" |
476 | attrs="{'invisible':[('payment_next_action_date','=', False)]}" |
477 | - groups="base.group_partner_manager"/> |
478 | + groups="account.group_account_user"/> |
479 | <field name="payment_next_action" placeholder="Action to be taken e.g. Give a phonecall, Check if it's paid, ..."/> |
480 | </div> |
481 | </group> |
482 | |
483 | === modified file 'account_followup/report/account_followup_report.xml' |
484 | --- account_followup/report/account_followup_report.xml 2012-12-04 10:31:46 +0000 |
485 | +++ account_followup/report/account_followup_report.xml 2013-06-06 12:58:46 +0000 |
486 | @@ -6,7 +6,7 @@ |
487 | <field name="name">account_followup.stat.tree</field> |
488 | <field name="model">account_followup.stat</field> |
489 | <field name="arch" type="xml"> |
490 | - <tree string="Follow-up lines"> |
491 | + <tree string="Follow-up lines" create="false"> |
492 | <field name="partner_id"/> |
493 | <field name="date_move"/> |
494 | <field name="date_move_last"/> |
495 | |
496 | === modified file 'account_payment/wizard/account_payment_order.py' |
497 | --- account_payment/wizard/account_payment_order.py 2013-04-15 10:23:49 +0000 |
498 | +++ account_payment/wizard/account_payment_order.py 2013-06-06 12:58:46 +0000 |
499 | @@ -23,6 +23,7 @@ |
500 | from lxml import etree |
501 | |
502 | from openerp.osv import fields, osv |
503 | +from openerp.tools.translate import _ |
504 | |
505 | class payment_order_create(osv.osv_memory): |
506 | """ |
507 | @@ -108,7 +109,7 @@ |
508 | context.update({'line_ids': line_ids}) |
509 | model_data_ids = mod_obj.search(cr, uid,[('model', '=', 'ir.ui.view'), ('name', '=', 'view_create_payment_order_lines')], context=context) |
510 | resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] |
511 | - return {'name': ('Entrie Lines'), |
512 | + return {'name': _('Entry Lines'), |
513 | 'context': context, |
514 | 'view_type': 'form', |
515 | 'view_mode': 'form', |
516 | |
517 | === modified file 'auth_signup/res_users.py' |
518 | --- auth_signup/res_users.py 2013-06-04 15:15:08 +0000 |
519 | +++ auth_signup/res_users.py 2013-06-06 12:58:46 +0000 |
520 | @@ -56,19 +56,22 @@ |
521 | def _get_signup_url_for_action(self, cr, uid, ids, action='login', view_type=None, menu_id=None, res_id=None, model=None, context=None): |
522 | """ generate a signup url for the given partner ids and action, possibly overriding |
523 | the url state components (menu_id, id, view_type) """ |
524 | + if context is None: |
525 | + context= {} |
526 | res = dict.fromkeys(ids, False) |
527 | base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') |
528 | for partner in self.browse(cr, uid, ids, context): |
529 | # when required, make sure the partner has a valid signup token |
530 | - if context and context.get('signup_valid') and not partner.user_ids: |
531 | + if context.get('signup_valid') and not partner.user_ids: |
532 | self.signup_prepare(cr, uid, [partner.id], context=context) |
533 | partner.refresh() |
534 | |
535 | # the parameters to encode for the query and fragment part of url |
536 | query = {'db': cr.dbname} |
537 | - fragment = {'action': action, 'type': partner.signup_type} |
538 | + signup_type = context.get('signup_force_type_in_url', partner.signup_type or '') |
539 | + fragment = {'action': action, 'type': signup_type} |
540 | |
541 | - if partner.signup_token: |
542 | + if partner.signup_token and signup_type: |
543 | fragment['token'] = partner.signup_token |
544 | elif partner.user_ids: |
545 | fragment['db'] = cr.dbname |
546 | |
547 | === modified file 'auth_signup/static/src/js/auth_signup.js' |
548 | --- auth_signup/static/src/js/auth_signup.js 2013-05-21 14:57:23 +0000 |
549 | +++ auth_signup/static/src/js/auth_signup.js 2013-06-06 12:58:46 +0000 |
550 | @@ -7,7 +7,7 @@ |
551 | var self = this; |
552 | this.signup_enabled = false; |
553 | this.reset_password_enabled = false; |
554 | - return this._super().then(function() { |
555 | + return this._super().always(function() { |
556 | |
557 | // Switches the login box to the select mode whith mode == [default|signup|reset] |
558 | self.on('change:login_mode', self, function() { |
559 | |
560 | === modified file 'base_action_rule/base_action_rule.py' |
561 | --- base_action_rule/base_action_rule.py 2013-06-04 13:14:28 +0000 |
562 | +++ base_action_rule/base_action_rule.py 2013-06-06 12:58:46 +0000 |
563 | @@ -66,6 +66,7 @@ |
564 | [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_time', 'Based on Timed Condition')], |
565 | string='When to Run'), |
566 | 'trg_date_id': fields.many2one('ir.model.fields', string='Trigger Date', |
567 | + help="When should the condition be triggered. If present, will be checked by the scheduler. If empty, will be checked at creation and update.", |
568 | domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]"), |
569 | 'trg_date_range': fields.integer('Delay after trigger date', |
570 | help="Delay after the trigger date." \ |
571 | |
572 | === modified file 'base_vat/base_vat.py' |
573 | --- base_vat/base_vat.py 2013-04-22 15:34:49 +0000 |
574 | +++ base_vat/base_vat.py 2013-06-06 12:58:46 +0000 |
575 | @@ -83,6 +83,8 @@ |
576 | Check the VAT number depending of the country. |
577 | http://sima-pc.com/nif.php |
578 | ''' |
579 | + if not ustr(country_code).encode('utf-8').isalpha(): |
580 | + return False |
581 | check_func_name = 'check_vat_' + country_code |
582 | check_func = getattr(self, check_func_name, None) or \ |
583 | getattr(vatnumber, check_func_name, None) |
584 | |
585 | === modified file 'crm/crm_lead.py' |
586 | --- crm/crm_lead.py 2013-05-22 14:50:42 +0000 |
587 | +++ crm/crm_lead.py 2013-06-06 12:58:46 +0000 |
588 | @@ -77,12 +77,12 @@ |
589 | |
590 | _track = { |
591 | 'state': { |
592 | - 'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'new', |
593 | + 'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['new', 'draft'], |
594 | 'crm.mt_lead_won': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'done', |
595 | 'crm.mt_lead_lost': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'cancel', |
596 | }, |
597 | 'stage_id': { |
598 | - 'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'cancel', 'done'], |
599 | + 'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'draft', 'cancel', 'done'], |
600 | }, |
601 | } |
602 | |
603 | @@ -103,7 +103,9 @@ |
604 | if vals.get('type'): |
605 | ctx['default_type'] = vals['type'] |
606 | vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx) |
607 | - return super(crm_lead, self).create(cr, uid, vals, context=context) |
608 | + # context: no_log, because subtype already handle this |
609 | + create_context = dict(context, mail_create_nolog=True) |
610 | + return super(crm_lead, self).create(cr, uid, vals, context=create_context) |
611 | |
612 | def _get_default_section_id(self, cr, uid, context=None): |
613 | """ Gives default section by checking if present in the context """ |
614 | @@ -678,8 +680,9 @@ |
615 | merged_data['stage_id'] = section_stage_ids and section_stage_ids[0] or False |
616 | # Write merged data into first opportunity |
617 | self.write(cr, uid, [highest.id], merged_data, context=context) |
618 | - # Delete tail opportunities |
619 | - self.unlink(cr, uid, [x.id for x in tail_opportunities], context=context) |
620 | + # Delete tail opportunities |
621 | + # We use the SUPERUSER to avoid access rights issues because as the user had the rights to see the records it should be safe to do so |
622 | + self.unlink(cr, SUPERUSER_ID, [x.id for x in tail_opportunities], context=context) |
623 | |
624 | return highest.id |
625 | |
626 | |
627 | === modified file 'crm_partner_assign/wizard/crm_forward_to_partner.py' |
628 | --- crm_partner_assign/wizard/crm_forward_to_partner.py 2013-05-10 14:14:59 +0000 |
629 | +++ crm_partner_assign/wizard/crm_forward_to_partner.py 2013-06-06 12:58:46 +0000 |
630 | @@ -124,6 +124,7 @@ |
631 | lead_ids = context and context.get('active_ids', []) or [] |
632 | value = self.default_get(cr, uid, ['body', 'email_to', 'email_cc', 'subject', 'history_mode'], context=context) |
633 | value.pop('composition_mode') |
634 | + self.pool.get('crm.lead').message_subscribe(cr, uid, lead_ids, [partner.id for partner in wizard.partner_ids], context=context) |
635 | self.write(cr, uid, ids, value, context=context) |
636 | |
637 | return self.send_mail(cr, uid, ids, context=context) |
638 | |
639 | === modified file 'document_page/document_page_view.xml' |
640 | --- document_page/document_page_view.xml 2013-01-08 10:54:10 +0000 |
641 | +++ document_page/document_page_view.xml 2013-06-06 12:58:46 +0000 |
642 | @@ -26,6 +26,7 @@ |
643 | <tree string="Document Page"> |
644 | <field name="name"/> |
645 | <field name="parent_id"/> |
646 | + <field name="create_uid" invisible="1"/> |
647 | <field name="write_uid"/> |
648 | <field name="write_date"/> |
649 | </tree> |
650 | |
651 | === modified file 'fetchmail/security/ir.model.access.csv' |
652 | --- fetchmail/security/ir.model.access.csv 2011-12-19 16:54:40 +0000 |
653 | +++ fetchmail/security/ir.model.access.csv 2013-06-06 12:58:46 +0000 |
654 | @@ -1,3 +1,2 @@ |
655 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink |
656 | -access_fetchmail_server,fetchmail.server,model_fetchmail_server,,1,0,0,0 |
657 | access_fetchmail_server,fetchmail.server,model_fetchmail_server,base.group_system,1,1,1,1 |
658 | |
659 | === modified file 'hr_expense/hr_expense.py' |
660 | --- hr_expense/hr_expense.py 2013-04-18 12:31:45 +0000 |
661 | +++ hr_expense/hr_expense.py 2013-06-06 12:58:46 +0000 |
662 | @@ -57,10 +57,7 @@ |
663 | |
664 | def _get_currency(self, cr, uid, context=None): |
665 | user = self.pool.get('res.users').browse(cr, uid, [uid], context=context)[0] |
666 | - if user.company_id: |
667 | - return user.company_id.currency_id.id |
668 | - else: |
669 | - return self.pool.get('res.currency').search(cr, uid, [('rate','=',1.0)], context=context)[0] |
670 | + return user.company_id.currency_id.id |
671 | |
672 | _name = "hr.expense.expense" |
673 | _inherit = ['mail.thread'] |
674 | @@ -99,11 +96,13 @@ |
675 | ('cancelled', 'Refused'), |
676 | ('confirm', 'Waiting Approval'), |
677 | ('accepted', 'Approved'), |
678 | - ('done', 'Done'), |
679 | + ('done', 'Waiting Payment'), |
680 | + ('paid', 'Paid'), |
681 | ], |
682 | 'Status', readonly=True, track_visibility='onchange', |
683 | help='When the expense request is created the status is \'Draft\'.\n It is confirmed by the user and request is sent to admin, the status is \'Waiting Confirmation\'.\ |
684 | - \nIf the admin accepts it, the status is \'Accepted\'.\n If a receipt is made for the expense request, the status is \'Done\'.'), |
685 | + \nIf the admin accepts it, the status is \'Accepted\'.\n If the accounting entries are made for the expense request, the status is \'Waiting Payment\'.'), |
686 | + |
687 | } |
688 | _defaults = { |
689 | 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.employee', context=c), |
690 | @@ -114,6 +113,12 @@ |
691 | 'currency_id': _get_currency, |
692 | } |
693 | |
694 | + def copy(self, cr, uid, id, default=None, context=None): |
695 | + if default is None: |
696 | + default = {} |
697 | + default.update(account_move_id=False) |
698 | + return super(hr_expense_expense, self).copy(cr, uid, id, default=default, context=context) |
699 | + |
700 | def unlink(self, cr, uid, ids, context=None): |
701 | for rec in self.browse(cr, uid, ids, context=context): |
702 | if rec.state != 'draft': |
703 | @@ -282,7 +287,6 @@ |
704 | tax_code_found= False |
705 | |
706 | #Calculate tax according to default tax on product |
707 | - |
708 | taxes = [] |
709 | #Taken from product_id_onchange in account.invoice |
710 | if line.product_id: |
711 | @@ -319,8 +323,11 @@ |
712 | tax_code_found = True |
713 | res[-1]['tax_code_id'] = tax_code_id |
714 | res[-1]['tax_amount'] = cur_obj.compute(cr, uid, exp.currency_id.id, company_currency, tax_amount, context={'date': exp.date_confirm}) |
715 | - |
716 | - #Will create the tax here as we don't have the access |
717 | + ## |
718 | + is_price_include = tax_obj.read(cr,uid,tax['id'],['price_include'],context)['price_include'] |
719 | + if is_price_include: |
720 | + ## We need to deduce the price for the tax |
721 | + res[-1]['price'] = res[-1]['price'] - (tax['amount'] * tax['base_sign'] or 0.0) |
722 | assoc_tax = { |
723 | 'type':'tax', |
724 | 'name':tax['name'], |
725 | @@ -449,4 +456,26 @@ |
726 | return res |
727 | |
728 | |
729 | +class account_move_line(osv.osv): |
730 | + _inherit = "account.move.line" |
731 | + |
732 | + def reconcile(self, cr, uid, ids, type='auto', writeoff_acc_id=False, writeoff_period_id=False, writeoff_journal_id=False, context=None): |
733 | + res = super(account_move_line, self).reconcile(cr, uid, ids, type=type, writeoff_acc_id=writeoff_acc_id, writeoff_period_id=writeoff_period_id, writeoff_journal_id=writeoff_journal_id, context=context) |
734 | + #when making a full reconciliation of account move lines 'ids', we may need to recompute the state of some hr.expense |
735 | + account_move_ids = [aml.move_id.id for aml in self.browse(cr, uid, ids, context=context)] |
736 | + expense_obj = self.pool.get('hr.expense.expense') |
737 | + currency_obj = self.pool.get('res.currency') |
738 | + if account_move_ids: |
739 | + expense_ids = expense_obj.search(cr, uid, [('account_move_id', 'in', account_move_ids)], context=context) |
740 | + for expense in expense_obj.browse(cr, uid, expense_ids, context=context): |
741 | + if expense.state == 'done': |
742 | + #making the postulate it has to be set paid, then trying to invalidate it |
743 | + new_status_is_paid = True |
744 | + for aml in expense.account_move_id.line_id: |
745 | + if aml.account_id.type == 'payable' and not currency_obj.is_zero(cr, uid, expense.company_id.currency_id, aml.amount_residual): |
746 | + new_status_is_paid = False |
747 | + if new_status_is_paid: |
748 | + expense_obj.write(cr, uid, [expense.id], {'state': 'paid'}, context=context) |
749 | + return res |
750 | + |
751 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
752 | |
753 | === modified file 'hr_expense/hr_expense_view.xml' |
754 | --- hr_expense/hr_expense_view.xml 2013-04-22 15:34:49 +0000 |
755 | +++ hr_expense/hr_expense_view.xml 2013-06-06 12:58:46 +0000 |
756 | @@ -68,7 +68,7 @@ |
757 | <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" groups="base.group_hr_user" /> |
758 | <button name="done" states="accepted" string="Generate Accounting Entries" type="workflow" groups="account.group_account_invoice" class="oe_highlight"/> |
759 | <button name="action_view_move" states="done" string="Open Accounting Entries" type="object" groups="account.group_account_invoice"/> |
760 | - <field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted,done" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/> |
761 | + <field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted,done,paid" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/> |
762 | </header> |
763 | <sheet> |
764 | <group> |
765 | |
766 | === modified file 'hr_holidays/hr_holidays_view.xml' |
767 | --- hr_holidays/hr_holidays_view.xml 2013-02-26 10:55:28 +0000 |
768 | +++ hr_holidays/hr_holidays_view.xml 2013-06-06 12:58:46 +0000 |
769 | @@ -40,8 +40,8 @@ |
770 | <field name="name">Leave Request</field> |
771 | <field name="model">hr.holidays</field> |
772 | <field name="arch" type="xml"> |
773 | - <calendar string="Leave Request" color="user_id" date_start="date_from" date_stop="date_to"> |
774 | - <field name="user_id"/> |
775 | + <calendar string="Leave Request" color="employee_id" date_start="date_from" date_stop="date_to"> |
776 | + <field name="employee_id"/> |
777 | <field name="holiday_status_id"/> |
778 | </calendar> |
779 | </field> |
780 | |
781 | === modified file 'hr_timesheet_sheet/static/src/js/timesheet.js' |
782 | --- hr_timesheet_sheet/static/src/js/timesheet.js 2012-12-17 11:13:37 +0000 |
783 | +++ hr_timesheet_sheet/static/src/js/timesheet.js 2013-06-06 12:58:46 +0000 |
784 | @@ -163,24 +163,42 @@ |
785 | this.dfm = undefined; |
786 | } |
787 | }, |
788 | + is_valid_value:function(value){ |
789 | + var split_value = value.split(":"); |
790 | + var valid_value = true; |
791 | + if (split_value.length > 2) |
792 | + return false; |
793 | + _.detect(split_value,function(num){ |
794 | + if(isNaN(num)){ |
795 | + valid_value = false; |
796 | + } |
797 | + }); |
798 | + return valid_value; |
799 | + }, |
800 | display_data: function() { |
801 | var self = this; |
802 | self.$el.html(QWeb.render("hr_timesheet_sheet.WeeklyTimesheet", {widget: self})); |
803 | _.each(self.accounts, function(account) { |
804 | _.each(_.range(account.days.length), function(day_count) { |
805 | if (!self.get('effective_readonly')) { |
806 | - self.get_box(account, day_count).val(self.sum_box(account, day_count)).change(function() { |
807 | - var num = Number($(this).val()); |
808 | + self.get_box(account, day_count).val(self.sum_box(account, day_count, true)).change(function() { |
809 | + var num = $(this).val(); |
810 | + if (self.is_valid_value(num)){ |
811 | + num = (num == 0)?0:Number(self.parse_client(num)); |
812 | + } |
813 | if (isNaN(num)) { |
814 | - $(this).val(self.sum_box(account, day_count)); |
815 | + $(this).val(self.sum_box(account, day_count, true)); |
816 | } else { |
817 | account.days[day_count].lines[0].unit_amount += num - self.sum_box(account, day_count); |
818 | self.display_totals(); |
819 | self.sync(); |
820 | + if(!isNaN($(this).val())){ |
821 | + $(this).val(self.sum_box(account, day_count, true)); |
822 | + } |
823 | } |
824 | }); |
825 | } else { |
826 | - self.get_box(account, day_count).html(self.sum_box(account, day_count)); |
827 | + self.get_box(account, day_count).html(self.sum_box(account, day_count, true)); |
828 | } |
829 | }); |
830 | }); |
831 | @@ -247,12 +265,12 @@ |
832 | get_super_total: function() { |
833 | return this.$('.oe_timesheet_weekly_supertotal'); |
834 | }, |
835 | - sum_box: function(account, day_count) { |
836 | + sum_box: function(account, day_count, show_value_in_hour) { |
837 | var line_total = 0; |
838 | _.each(account.days[day_count].lines, function(line) { |
839 | line_total += line.unit_amount; |
840 | }); |
841 | - return line_total; |
842 | + return (show_value_in_hour && line_total != 0)?this.format_client(line_total):line_total; |
843 | }, |
844 | display_totals: function() { |
845 | var self = this; |
846 | @@ -266,12 +284,12 @@ |
847 | day_tots[day_count] += sum; |
848 | super_tot += sum; |
849 | }); |
850 | - self.get_total(account).html(acc_tot); |
851 | + self.get_total(account).html(self.format_client(acc_tot)); |
852 | }); |
853 | _.each(_.range(self.dates.length), function(day_count) { |
854 | - self.get_day_total(day_count).html(day_tots[day_count]); |
855 | + self.get_day_total(day_count).html(self.format_client(day_tots[day_count])); |
856 | }); |
857 | - self.get_super_total().html(super_tot); |
858 | + self.get_super_total().html(self.format_client(super_tot)); |
859 | }, |
860 | sync: function() { |
861 | var self = this; |
862 | @@ -279,6 +297,14 @@ |
863 | self.set({sheets: this.generate_o2m_value()}); |
864 | self.setting = false; |
865 | }, |
866 | + //converts hour value to float |
867 | + parse_client: function(value) { |
868 | + return instance.web.parse_value(value, { type:"float_time" }); |
869 | + }, |
870 | + //converts float value to hour |
871 | + format_client:function(value){ |
872 | + return instance.web.format_value(value, { type:"float_time" }); |
873 | + }, |
874 | generate_o2m_value: function() { |
875 | var self = this; |
876 | var ops = []; |
877 | |
878 | === modified file 'im/im.py' |
879 | --- im/im.py 2013-04-04 08:34:27 +0000 |
880 | +++ im/im.py 2013-06-06 12:58:46 +0000 |
881 | @@ -90,79 +90,6 @@ |
882 | DISCONNECTION_TIMER = POLL_TIMER + 5 |
883 | WATCHER_ERROR_DELAY = 10 |
884 | |
885 | -if openerp.evented: |
886 | - import gevent |
887 | - import gevent.event |
888 | - |
889 | - class ImWatcher(object): |
890 | - watchers = {} |
891 | - |
892 | - @staticmethod |
893 | - def get_watcher(db_name): |
894 | - if not ImWatcher.watchers.get(db_name): |
895 | - ImWatcher(db_name) |
896 | - return ImWatcher.watchers[db_name] |
897 | - |
898 | - def __init__(self, db_name): |
899 | - self.db_name = db_name |
900 | - ImWatcher.watchers[db_name] = self |
901 | - self.waiting = 0 |
902 | - self.wait_id = 0 |
903 | - self.users = {} |
904 | - self.users_watch = {} |
905 | - gevent.spawn(self.loop) |
906 | - |
907 | - def loop(self): |
908 | - _logger.info("Begin watching on channel im_channel for database " + self.db_name) |
909 | - stop = False |
910 | - while not stop: |
911 | - try: |
912 | - registry = openerp.modules.registry.RegistryManager.get(self.db_name) |
913 | - with registry.cursor() as cr: |
914 | - listen_channel(cr, "im_channel", self.handle_message, self.check_stop) |
915 | - stop = True |
916 | - except: |
917 | - # if something crash, we wait some time then try again |
918 | - _logger.exception("Exception during watcher activity") |
919 | - time.sleep(WATCHER_ERROR_DELAY) |
920 | - _logger.info("End watching on channel im_channel for database " + self.db_name) |
921 | - del ImWatcher.watchers[self.db_name] |
922 | - |
923 | - def handle_message(self, message): |
924 | - if message["type"] == "message": |
925 | - for waiter in self.users.get(message["receiver"], {}).values(): |
926 | - waiter.set() |
927 | - else: #type status |
928 | - for waiter in self.users_watch.get(message["user"], {}).values(): |
929 | - waiter.set() |
930 | - |
931 | - def check_stop(self): |
932 | - return self.waiting == 0 |
933 | - |
934 | - def _get_wait_id(self): |
935 | - self.wait_id += 1 |
936 | - return self.wait_id |
937 | - |
938 | - def stop(self, user_id, watch_users, timeout=None): |
939 | - wait_id = self._get_wait_id() |
940 | - event = gevent.event.Event() |
941 | - self.waiting += 1 |
942 | - self.users.setdefault(user_id, {})[wait_id] = event |
943 | - for watch in watch_users: |
944 | - self.users_watch.setdefault(watch, {})[wait_id] = event |
945 | - try: |
946 | - event.wait(timeout) |
947 | - finally: |
948 | - for watch in watch_users: |
949 | - del self.users_watch[watch][wait_id] |
950 | - if len(self.users_watch[watch]) == 0: |
951 | - del self.users_watch[watch] |
952 | - del self.users[user_id][wait_id] |
953 | - if len(self.users[user_id]) == 0: |
954 | - del self.users[user_id] |
955 | - self.waiting -= 1 |
956 | - |
957 | - |
958 | class LongPollingController(openerp.addons.web.http.Controller): |
959 | _cp_path = '/longpolling/im' |
960 | |
961 | @@ -171,6 +98,7 @@ |
962 | assert_uuid(uuid) |
963 | if not openerp.evented: |
964 | raise Exception("Not usable in a server not running gevent") |
965 | + from openerp.addons.im.watcher import ImWatcher |
966 | if db is not None: |
967 | req.session._db = db |
968 | req.session._uid = uid |
969 | |
970 | === modified file 'im/security/ir.model.access.csv' |
971 | --- im/security/ir.model.access.csv 2013-02-04 15:36:12 +0000 |
972 | +++ im/security/ir.model.access.csv 2013-06-06 12:58:46 +0000 |
973 | @@ -1,3 +1,3 @@ |
974 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink |
975 | access_im_message,im.message,model_im_message,base.group_user,1,0,1,0 |
976 | -access_im_user,im.user,model_im_user,base.group_user,1,1,1,0 |
977 | \ No newline at end of file |
978 | +access_im_user,im.user,model_im_user,,1,1,1,0 |
979 | \ No newline at end of file |
980 | |
981 | === modified file 'im/static/src/audio/Ting.mp3' |
982 | Binary files im/static/src/audio/Ting.mp3 2013-01-11 10:34:59 +0000 and im/static/src/audio/Ting.mp3 2013-06-06 12:58:46 +0000 differ |
983 | === modified file 'im/static/src/audio/Ting.ogg' |
984 | Binary files im/static/src/audio/Ting.ogg 2013-01-11 10:34:59 +0000 and im/static/src/audio/Ting.ogg 2013-06-06 12:58:46 +0000 differ |
985 | === modified file 'im/static/src/js/im.js' |
986 | --- im/static/src/js/im.js 2013-04-23 09:25:20 +0000 |
987 | +++ im/static/src/js/im.js 2013-06-06 12:58:46 +0000 |
988 | @@ -284,6 +284,10 @@ |
989 | return this.activated; |
990 | }, |
991 | create_ting: function() { |
992 | + if (typeof(Audio) === "undefined") { |
993 | + this.ting = {play: function() {}}; |
994 | + return; |
995 | + } |
996 | var kitten = jQuery.param !== undefined && jQuery.deparam(jQuery.param.querystring()).kitten !== undefined; |
997 | this.ting = new Audio(instance.webclient.session.origin + "/im/static/src/audio/" + (kitten ? "purr" : "Ting") + |
998 | (new Audio().canPlayType("audio/ogg; codecs=vorbis") ? ".ogg" : ".mp3")); |
999 | @@ -408,6 +412,9 @@ |
1000 | return; |
1001 | } |
1002 | var mes = this.$("input").val(); |
1003 | + if (! mes.trim()) { |
1004 | + return; |
1005 | + } |
1006 | this.$("input").val(""); |
1007 | var send_it = _.bind(function() { |
1008 | var model = new instance.web.Model("im.message"); |
1009 | |
1010 | === added file 'im/watcher.py' |
1011 | --- im/watcher.py 1970-01-01 00:00:00 +0000 |
1012 | +++ im/watcher.py 2013-06-06 12:58:46 +0000 |
1013 | @@ -0,0 +1,84 @@ |
1014 | + |
1015 | +import openerp |
1016 | +import openerp.tools.config |
1017 | +import openerp.modules.registry |
1018 | +from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT |
1019 | +import datetime |
1020 | +from openerp.osv import osv, fields |
1021 | +import time |
1022 | +import logging |
1023 | +import json |
1024 | +import select |
1025 | +import gevent |
1026 | +import gevent.event |
1027 | +from openerp.addons.im.im import * |
1028 | + |
1029 | +_logger = logging.getLogger(__name__) |
1030 | + |
1031 | +class ImWatcher(object): |
1032 | + watchers = {} |
1033 | + |
1034 | + @staticmethod |
1035 | + def get_watcher(db_name): |
1036 | + if not ImWatcher.watchers.get(db_name): |
1037 | + ImWatcher(db_name) |
1038 | + return ImWatcher.watchers[db_name] |
1039 | + |
1040 | + def __init__(self, db_name): |
1041 | + self.db_name = db_name |
1042 | + ImWatcher.watchers[db_name] = self |
1043 | + self.waiting = 0 |
1044 | + self.wait_id = 0 |
1045 | + self.users = {} |
1046 | + self.users_watch = {} |
1047 | + gevent.spawn(self.loop) |
1048 | + |
1049 | + def loop(self): |
1050 | + _logger.info("Begin watching on channel im_channel for database " + self.db_name) |
1051 | + stop = False |
1052 | + while not stop: |
1053 | + try: |
1054 | + registry = openerp.modules.registry.RegistryManager.get(self.db_name) |
1055 | + with registry.cursor() as cr: |
1056 | + listen_channel(cr, "im_channel", self.handle_message, self.check_stop) |
1057 | + stop = True |
1058 | + except: |
1059 | + # if something crash, we wait some time then try again |
1060 | + _logger.exception("Exception during watcher activity") |
1061 | + time.sleep(WATCHER_ERROR_DELAY) |
1062 | + _logger.info("End watching on channel im_channel for database " + self.db_name) |
1063 | + del ImWatcher.watchers[self.db_name] |
1064 | + |
1065 | + def handle_message(self, message): |
1066 | + if message["type"] == "message": |
1067 | + for waiter in self.users.get(message["receiver"], {}).values(): |
1068 | + waiter.set() |
1069 | + else: #type status |
1070 | + for waiter in self.users_watch.get(message["user"], {}).values(): |
1071 | + waiter.set() |
1072 | + |
1073 | + def check_stop(self): |
1074 | + return self.waiting == 0 |
1075 | + |
1076 | + def _get_wait_id(self): |
1077 | + self.wait_id += 1 |
1078 | + return self.wait_id |
1079 | + |
1080 | + def stop(self, user_id, watch_users, timeout=None): |
1081 | + wait_id = self._get_wait_id() |
1082 | + event = gevent.event.Event() |
1083 | + self.waiting += 1 |
1084 | + self.users.setdefault(user_id, {})[wait_id] = event |
1085 | + for watch in watch_users: |
1086 | + self.users_watch.setdefault(watch, {})[wait_id] = event |
1087 | + try: |
1088 | + event.wait(timeout) |
1089 | + finally: |
1090 | + for watch in watch_users: |
1091 | + del self.users_watch[watch][wait_id] |
1092 | + if len(self.users_watch[watch]) == 0: |
1093 | + del self.users_watch[watch] |
1094 | + del self.users[user_id][wait_id] |
1095 | + if len(self.users[user_id]) == 0: |
1096 | + del self.users[user_id] |
1097 | + self.waiting -= 1 |
1098 | |
1099 | === modified file 'im_livechat/security/ir.model.access.csv' |
1100 | --- im_livechat/security/ir.model.access.csv 2013-03-15 11:21:53 +0000 |
1101 | +++ im_livechat/security/ir.model.access.csv 2013-06-06 12:58:46 +0000 |
1102 | @@ -2,5 +2,7 @@ |
1103 | access_ls_chann1,im_livechat.channel,model_im_livechat_channel,,1,0,0,0 |
1104 | access_ls_chann2,im_livechat.channel,model_im_livechat_channel,group_im_livechat,1,1,1,0 |
1105 | access_ls_chann3,im_livechat.channel,model_im_livechat_channel,group_im_livechat_manager,1,1,1,1 |
1106 | +access_ls_message_portal,im_livechat.im.message.portal,im.model_im_message,portal.group_portal,0,0,0,0 |
1107 | +access_im_user_portal,im_livechat.im.user.portal,im.model_im_user,portal.group_portal,1,0,0,0 |
1108 | access_ls_message,im_livechat.im.message,im.model_im_message,portal.group_anonymous,0,0,0,0 |
1109 | access_im_user,im_livechat.im.user,im.model_im_user,portal.group_anonymous,1,0,0,0 |
1110 | \ No newline at end of file |
1111 | |
1112 | === modified file 'im_livechat/static/ext/static/audio/Ting.mp3' |
1113 | Binary files im_livechat/static/ext/static/audio/Ting.mp3 2013-01-16 16:16:24 +0000 and im_livechat/static/ext/static/audio/Ting.mp3 2013-06-06 12:58:46 +0000 differ |
1114 | === modified file 'im_livechat/static/ext/static/audio/Ting.ogg' |
1115 | Binary files im_livechat/static/ext/static/audio/Ting.ogg 2013-01-16 16:16:24 +0000 and im_livechat/static/ext/static/audio/Ting.ogg 2013-06-06 12:58:46 +0000 differ |
1116 | === modified file 'im_livechat/static/ext/static/js/livesupport.js' |
1117 | --- im_livechat/static/ext/static/js/livesupport.js 2013-03-15 11:21:53 +0000 |
1118 | +++ im_livechat/static/ext/static/js/livesupport.js 2013-06-06 12:58:46 +0000 |
1119 | @@ -268,6 +268,10 @@ |
1120 | return this.activated; |
1121 | }, |
1122 | create_ting: function() { |
1123 | + if (typeof(Audio) === "undefined") { |
1124 | + this.ting = {play: function() {}}; |
1125 | + return; |
1126 | + } |
1127 | this.ting = new Audio(new Audio().canPlayType("audio/ogg; codecs=vorbis") ? |
1128 | require.toUrl("../audio/Ting.ogg") : |
1129 | require.toUrl("../audio/Ting.mp3") |
1130 | @@ -395,6 +399,9 @@ |
1131 | return; |
1132 | } |
1133 | var mes = this.$("input").val(); |
1134 | + if (! mes.trim()) { |
1135 | + return; |
1136 | + } |
1137 | this.$("input").val(""); |
1138 | var send_it = _.bind(function() { |
1139 | var model = connection.getModel("im.message"); |
1140 | |
1141 | === modified file 'l10n_ca/__openerp__.py' |
1142 | --- l10n_ca/__openerp__.py 2012-12-06 21:54:24 +0000 |
1143 | +++ l10n_ca/__openerp__.py 2013-06-06 12:58:46 +0000 |
1144 | @@ -20,7 +20,7 @@ |
1145 | ############################################################################## |
1146 | { |
1147 | 'name': 'Canada - Accounting', |
1148 | - 'version': '1.0', |
1149 | + 'version': '1.1', |
1150 | 'author': 'Savoir-faire Linux', |
1151 | 'website': 'http://www.savoirfairelinux.com', |
1152 | 'category': 'Localization/Account Charts', |
1153 | @@ -49,7 +49,7 @@ |
1154 | 'account_chart_template_fr.xml', |
1155 | 'account_tax_fr.xml', |
1156 | 'fiscal_templates_fr.xml', |
1157 | - 'l10n_ca_wizard.xml', |
1158 | + 'l10n_ca_wizard.xml' |
1159 | ], |
1160 | 'demo': [], |
1161 | 'installable': True, |
1162 | |
1163 | === modified file 'l10n_ca/account_tax_en.xml' |
1164 | --- l10n_ca/account_tax_en.xml 2012-12-06 21:54:24 +0000 |
1165 | +++ l10n_ca/account_tax_en.xml 2013-06-06 12:58:46 +0000 |
1166 | @@ -12,7 +12,6 @@ |
1167 | <field name="description">GSTPST_MB_SALE</field> |
1168 | <field name="type_tax_use">sale</field> |
1169 | <field name="amount">1</field> |
1170 | - <field name="child_depend">1</field> |
1171 | <field name="type">percent</field> |
1172 | </record> |
1173 | |
1174 | @@ -39,7 +38,7 @@ |
1175 | <field name="name">PST for sales - 7%</field> |
1176 | <field name="description">PST</field> |
1177 | <field name="type_tax_use">sale</field> |
1178 | - <field name="amount">0.700000</field> |
1179 | + <field name="amount">0.070000</field> |
1180 | <field name="type">percent</field> |
1181 | <field name="sequence">2</field> |
1182 | <field name="account_collected_id" ref="chart2132_en"/> |
1183 | @@ -106,7 +105,6 @@ |
1184 | <field name="description">GSTTVQ_SALE</field> |
1185 | <field name="type_tax_use">sale</field> |
1186 | <field name="amount">1</field> |
1187 | - <field name="child_depend">1</field> |
1188 | <field name="type">percent</field> |
1189 | </record> |
1190 | |
1191 | @@ -152,7 +150,6 @@ |
1192 | <field name="description">GSTPST_SK_SALE</field> |
1193 | <field name="type_tax_use">sale</field> |
1194 | <field name="amount">1</field> |
1195 | - <field name="child_depend">1</field> |
1196 | <field name="type">percent</field> |
1197 | </record> |
1198 | |
1199 | @@ -281,7 +278,6 @@ |
1200 | <field name="description">GSTPST_MB_PURC</field> |
1201 | <field name="type_tax_use">purchase</field> |
1202 | <field name="amount">1</field> |
1203 | - <field name="child_depend">1</field> |
1204 | <field name="type">percent</field> |
1205 | </record> |
1206 | |
1207 | @@ -308,7 +304,7 @@ |
1208 | <field name="name">PST for purchases - 7%</field> |
1209 | <field name="description">PST</field> |
1210 | <field name="type_tax_use">purchase</field> |
1211 | - <field name="amount">0.700000</field> |
1212 | + <field name="amount">0.070000</field> |
1213 | <field name="type">percent</field> |
1214 | <field name="sequence">2</field> |
1215 | <field name="account_collected_id" ref="chart1182_en"/> |
1216 | @@ -375,7 +371,6 @@ |
1217 | <field name="description">GSTTVQ_PURC</field> |
1218 | <field name="type_tax_use">purchase</field> |
1219 | <field name="amount">1</field> |
1220 | - <field name="child_depend">1</field> |
1221 | <field name="type">percent</field> |
1222 | </record> |
1223 | |
1224 | @@ -421,7 +416,6 @@ |
1225 | <field name="description">GSTPST_SK_PURC</field> |
1226 | <field name="type_tax_use">purchase</field> |
1227 | <field name="amount">1</field> |
1228 | - <field name="child_depend">1</field> |
1229 | <field name="type">percent</field> |
1230 | </record> |
1231 | |
1232 | |
1233 | === modified file 'l10n_ca/account_tax_fr.xml' |
1234 | --- l10n_ca/account_tax_fr.xml 2012-12-06 21:54:24 +0000 |
1235 | +++ l10n_ca/account_tax_fr.xml 2013-06-06 12:58:46 +0000 |
1236 | @@ -12,7 +12,6 @@ |
1237 | <field name="description">TPSTVP_MB_SALE</field> |
1238 | <field name="type_tax_use">sale</field> |
1239 | <field name="amount">1</field> |
1240 | - <field name="child_depend">1</field> |
1241 | <field name="type">percent</field> |
1242 | </record> |
1243 | |
1244 | @@ -39,7 +38,7 @@ |
1245 | <field name="name">TVP sur les ventes - 7%</field> |
1246 | <field name="description">TVP</field> |
1247 | <field name="type_tax_use">sale</field> |
1248 | - <field name="amount">0.700000</field> |
1249 | + <field name="amount">0.070000</field> |
1250 | <field name="type">percent</field> |
1251 | <field name="sequence">2</field> |
1252 | <field name="account_collected_id" ref="chart2132_fr"/> |
1253 | @@ -106,7 +105,6 @@ |
1254 | <field name="description">TPSTVQ_SALE</field> |
1255 | <field name="type_tax_use">sale</field> |
1256 | <field name="amount">1</field> |
1257 | - <field name="child_depend">1</field> |
1258 | <field name="type">percent</field> |
1259 | </record> |
1260 | |
1261 | @@ -152,7 +150,6 @@ |
1262 | <field name="description">TPSTVP_SK_SALE</field> |
1263 | <field name="type_tax_use">sale</field> |
1264 | <field name="amount">1</field> |
1265 | - <field name="child_depend">1</field> |
1266 | <field name="type">percent</field> |
1267 | </record> |
1268 | |
1269 | @@ -281,7 +278,6 @@ |
1270 | <field name="description">TPSTVP_MB_PURC</field> |
1271 | <field name="type_tax_use">purchase</field> |
1272 | <field name="amount">1</field> |
1273 | - <field name="child_depend">1</field> |
1274 | <field name="type">percent</field> |
1275 | </record> |
1276 | |
1277 | @@ -308,7 +304,7 @@ |
1278 | <field name="name">TVP sur les achats - 7%</field> |
1279 | <field name="description">TVP</field> |
1280 | <field name="type_tax_use">purchase</field> |
1281 | - <field name="amount">0.700000</field> |
1282 | + <field name="amount">0.070000</field> |
1283 | <field name="type">percent</field> |
1284 | <field name="sequence">2</field> |
1285 | <field name="account_collected_id" ref="chart1182_fr"/> |
1286 | @@ -375,7 +371,6 @@ |
1287 | <field name="description">TPSTVQ_PURC</field> |
1288 | <field name="type_tax_use">purchase</field> |
1289 | <field name="amount">1</field> |
1290 | - <field name="child_depend">1</field> |
1291 | <field name="type">percent</field> |
1292 | </record> |
1293 | |
1294 | @@ -421,7 +416,6 @@ |
1295 | <field name="description">TPSTVP_SK_PURC</field> |
1296 | <field name="type_tax_use">purchase</field> |
1297 | <field name="amount">1</field> |
1298 | - <field name="child_depend">1</field> |
1299 | <field name="type">percent</field> |
1300 | </record> |
1301 | |
1302 | |
1303 | === modified file 'l10n_ca/fiscal_templates_en.xml' |
1304 | --- l10n_ca/fiscal_templates_en.xml 2012-08-02 13:40:12 +0000 |
1305 | +++ l10n_ca/fiscal_templates_en.xml 2013-06-06 12:58:46 +0000 |
1306 | @@ -5,17 +5,17 @@ |
1307 | <!-- Fiscal Position Templates --> |
1308 | |
1309 | <record id="fiscal_position_template_1_en" model="account.fiscal.position.template"> |
1310 | - <field name="name">Provincial Regime</field> |
1311 | + <field name="name">Provincial Regime (PROV)</field> |
1312 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1313 | </record> |
1314 | |
1315 | <record id="fiscal_position_template_21_en" model="account.fiscal.position.template"> |
1316 | - <field name="name">Harmonized Provinces Regime (12%)</field> |
1317 | + <field name="name">Harmonized Provinces Regime (12%) (BC)</field> |
1318 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1319 | </record> |
1320 | |
1321 | <record id="fiscal_position_template_22_en" model="account.fiscal.position.template"> |
1322 | - <field name="name">Harmonized Provinces Regime (13%)</field> |
1323 | + <field name="name">Harmonized Provinces Regime (13%) (ON, NB, NL)</field> |
1324 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1325 | </record> |
1326 | |
1327 | @@ -25,17 +25,17 @@ |
1328 | </record> |
1329 | |
1330 | <record id="fiscal_position_template_24_en" model="account.fiscal.position.template"> |
1331 | - <field name="name">Harmonized Provinces Regime (15%)</field> |
1332 | + <field name="name">Harmonized Provinces Regime (15%) (NS)</field> |
1333 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1334 | </record> |
1335 | |
1336 | <record id="fiscal_position_template_3_en" model="account.fiscal.position.template"> |
1337 | - <field name="name">Non-Harmonized Provinces Regime</field> |
1338 | + <field name="name">Non-Harmonized Provinces Regime (AB, MB, SK, PE, NT, NU, YT)</field> |
1339 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1340 | </record> |
1341 | |
1342 | <record id="fiscal_position_template_4_en" model="account.fiscal.position.template"> |
1343 | - <field name="name">International Regime</field> |
1344 | + <field name="name">International Regime (INTL)</field> |
1345 | <field name="chart_template_id" ref="ca_en_chart_template_en"/> |
1346 | </record> |
1347 | |
1348 | |
1349 | === modified file 'l10n_ca/fiscal_templates_fr.xml' |
1350 | --- l10n_ca/fiscal_templates_fr.xml 2012-12-06 21:54:24 +0000 |
1351 | +++ l10n_ca/fiscal_templates_fr.xml 2013-06-06 12:58:46 +0000 |
1352 | @@ -5,7 +5,7 @@ |
1353 | <!-- Fiscal Position Templates --> |
1354 | |
1355 | <record id="fiscal_position_template_1_fr" model="account.fiscal.position.template"> |
1356 | - <field name="name">Régime Provincial</field> |
1357 | + <field name="name">Régime Provincial (PROV)</field> |
1358 | <field name="chart_template_id" ref="ca_fr_chart_template_fr"/> |
1359 | </record> |
1360 | |
1361 | @@ -30,12 +30,12 @@ |
1362 | </record> |
1363 | |
1364 | <record id="fiscal_position_template_3_fr" model="account.fiscal.position.template"> |
1365 | - <field name="name">Régime Provinces Non-Harmonisées</field> |
1366 | + <field name="name">Régime Provinces Non-Harmonisées (AB, MB, SK, PE, NT, NU, YT)</field> |
1367 | <field name="chart_template_id" ref="ca_fr_chart_template_fr"/> |
1368 | </record> |
1369 | |
1370 | <record id="fiscal_position_template_4_fr" model="account.fiscal.position.template"> |
1371 | - <field name="name">Régime International</field> |
1372 | + <field name="name">Régime International (INTL)</field> |
1373 | <field name="chart_template_id" ref="ca_fr_chart_template_fr"/> |
1374 | </record> |
1375 | |
1376 | |
1377 | === modified file 'l10n_it/__openerp__.py' |
1378 | --- l10n_it/__openerp__.py 2012-11-29 22:26:45 +0000 |
1379 | +++ l10n_it/__openerp__.py 2013-06-06 12:58:46 +0000 |
1380 | @@ -29,7 +29,7 @@ |
1381 | |
1382 | { |
1383 | 'name': 'Italy - Accounting', |
1384 | - 'version': '0.1', |
1385 | + 'version': '0.2', |
1386 | 'depends': ['base_vat','account_chart','base_iban'], |
1387 | 'author': 'OpenERP Italian Community', |
1388 | 'description': """ |
1389 | |
1390 | === modified file 'l10n_it/data/account.tax.code.template.csv' |
1391 | --- l10n_it/data/account.tax.code.template.csv 2012-12-20 10:21:30 +0000 |
1392 | +++ l10n_it/data/account.tax.code.template.csv 2013-06-06 12:58:46 +0000 |
1393 | @@ -1,28 +1,37 @@ |
1394 | code,id,name,parent_id:id |
1395 | ,vat_code_chart_root,Tassazione, |
1396 | IVC,template_ivacode_pagata,IVA a credito,vat_code_chart_root |
1397 | -IVC0,template_ivacode_pagata_0,Esente IVA (credito),template_ivacode_pagata |
1398 | +IVCN,template_ivacode_pagata_ind,IVA a credito indetraibile,vat_code_chart_root |
1399 | +IVC0,template_ivacode_pagata_0,Fuori Campo IVA (credito),template_ivacode_pagata |
1400 | IVCI,template_impcode_pagata,IVA a credito (imponibile),vat_code_chart_root |
1401 | -IVC0I,template_impcode_pagata_0,Esente IVA a credito (imponibile),template_impcode_pagata |
1402 | +IVC0I,template_impcode_pagata_0,Fuori Campo IVA (credito) (imponibile),template_impcode_pagata |
1403 | +IVCart15,template_ivacode_pagata_art15,Escluso Art.15 (credito),template_ivacode_pagata |
1404 | +IVCart15I,template_impcode_pagata_art15,Escluso Art.15. (credito) (imponibile),template_impcode_pagata |
1405 | IVC10,template_ivacode_pagata_10,IVA a credito 10%,template_ivacode_pagata |
1406 | IVC10I,template_impcode_pagata_10,IVA a credito 10% (imponibile),template_impcode_pagata |
1407 | -IVC10ind,template_ivacode_pagata_10ind,IVA a credito 10% indetraibile,template_ivacode_pagata |
1408 | +IVC10ind,template_ivacode_pagata_10ind,IVA a credito 10% indetraibile,template_ivacode_pagata_ind |
1409 | IVC10Iind,template_impcode_pagata_10ind,IVA a credito 10% indetraibile (imponibile),template_impcode_pagata |
1410 | -IVC20ind,template_ivacode_pagata_20ind,IVA a credito 20% indetraibile,template_ivacode_pagata |
1411 | +IVC20ind,template_ivacode_pagata_20ind,IVA a credito 20% indetraibile,template_ivacode_pagata_ind |
1412 | IVC20Iind,template_impcode_pagata_20ind,IVA a credito 20% indetraibile (imponibile),template_impcode_pagata |
1413 | -IVC4ind,template_ivacode_pagata_4ind,IVA a credito 4% indetraibile,template_ivacode_pagata |
1414 | +IVC4ind,template_ivacode_pagata_4ind,IVA a credito 4% indetraibile,template_ivacode_pagata_ind |
1415 | IVC4Iind,template_impcode_pagata_4ind,IVA a credito 4% indetraibile (imponibile),template_impcode_pagata |
1416 | IVC20det10,template_ivacode_pagata_20det10,IVA a credito 20% detraibile 10%,template_ivacode_pagata |
1417 | +IVC20Ndet10,template_ivacode_pagata_20det10ind,IVA a credito 20% detraibile 10% (indetraibile),template_ivacode_pagata_ind |
1418 | IVC20Idet10,template_impcode_pagata_20det10,IVA a credito 20% detraibile 10% (imponibile),template_impcode_pagata |
1419 | IVC20det15,template_ivacode_pagata_20det15,IVA a credito 20% detraibile 15%,template_ivacode_pagata |
1420 | +IVC20Ndet15,template_ivacode_pagata_20det15ind,IVA a credito 20% detraibile 15% (indetraibile),template_ivacode_pagata_ind |
1421 | IVC20Idet15,template_impcode_pagata_20det15,IVA a credito 20% detraibile 15% (imponibile),template_impcode_pagata |
1422 | IVC20det40,template_ivacode_pagata_20det40,IVA a credito 20% detraibile 40%,template_ivacode_pagata |
1423 | +IVC20Ndet40,template_ivacode_pagata_20det40ind,IVA a credito 20% detraibile 40% (indetraibile),template_ivacode_pagata_ind |
1424 | IVC20Idet40,template_impcode_pagata_20det40,IVA a credito 20% detraibile 40% (imponibile),template_impcode_pagata |
1425 | IVC20det50,template_ivacode_pagata_20det50,IVA a credito 20% detraibile 50%,template_ivacode_pagata |
1426 | +IVC20Ndet50,template_ivacode_pagata_20det50ind,IVA a credito 20% detraibile 50% (indetraibile),template_ivacode_pagata_ind |
1427 | IVC20Idet50,template_impcode_pagata_20det50,IVA a credito 20% detraibile 50% (imponibile),template_impcode_pagata |
1428 | IVC10det50,template_ivacode_pagata_10det50,IVA a credito 10% detraibile 50%,template_ivacode_pagata |
1429 | +IVC10Ndet50,template_ivacode_pagata_10det50ind,IVA a credito 10% detraibile 50% (indetraibile),template_ivacode_pagata_ind |
1430 | IVC10Idet50,template_impcode_pagata_10det50,IVA a credito 10% detraibile 50% (imponibile),template_impcode_pagata |
1431 | IVC4det50,template_ivacode_pagata_4det50,IVA a credito 4% detraibile 50%,template_ivacode_pagata |
1432 | +IVC4Ndet50,template_ivacode_pagata_4det50ind,IVA a credito 4% detraibile 50% (indetraibile),template_ivacode_pagata_ind |
1433 | IVC4Idet50,template_impcode_pagata_4det50,IVA a credito 4% detraibile 50% (imponibile),template_impcode_pagata |
1434 | IVC20,template_ivacode_pagata_20,IVA a credito 20%,template_ivacode_pagata |
1435 | IVC20I,template_impcode_pagata_20,IVA a credito 20% (imponibile),template_impcode_pagata |
1436 | @@ -35,9 +44,11 @@ |
1437 | IVC2,template_ivacode_pagata_2,IVA a credito 2%,template_ivacode_pagata |
1438 | IVC2I,template_impcode_pagata_2,IVA a credito 2% (imponibile),template_impcode_pagata |
1439 | IVD,template_ivacode_riscossa,IVA a debito,vat_code_chart_root |
1440 | -IVD0,template_ivacode_riscossa_0,Esente IVA (debito),template_ivacode_riscossa |
1441 | +IVD0,template_ivacode_riscossa_0,Fuori Campo IVA (debito),template_ivacode_riscossa |
1442 | IVDI,template_impcode_riscossa,IVA a debito (imponibile),vat_code_chart_root |
1443 | -IVD0I,template_impcode_riscossa_0,Esente IVA a debito (imponibile),template_impcode_riscossa |
1444 | +IVD0I,template_impcode_riscossa_0,Fuori Campo IVA (debito) (imponibile),template_impcode_riscossa |
1445 | +IVDart15,template_ivacode_riscossa_art15,Escluso Art.15 (debito),template_ivacode_riscossa |
1446 | +IVDart15I,template_impcode_riscossa_art15,Escluso Art.15 (debito) (imponibile),template_impcode_riscossa |
1447 | IVD10,template_ivacode_riscossa_10,IVA a debito 10%,template_ivacode_riscossa |
1448 | IVD10I,template_impcode_riscossa_10,IVA a debito 10% (imponibile),template_impcode_riscossa |
1449 | IVD20,template_ivacode_riscossa_20,IVA a debito 20%,template_ivacode_riscossa |
1450 | @@ -50,13 +61,17 @@ |
1451 | IVD12I,template_impcode_riscossa_12,IVA a debito 12% (imponibile),template_impcode_riscossa |
1452 | IVD2,template_ivacode_riscossa_2,IVA a debito 2%,template_ivacode_riscossa |
1453 | IVD2I,template_impcode_riscossa_2,IVA a debito 2% (imponibile),template_impcode_riscossa |
1454 | -IVC21ind,template_ivacode_pagata_21ind,IVA a credito 21% indetraibile,template_ivacode_pagata |
1455 | +IVC21ind,template_ivacode_pagata_21ind,IVA a credito 21% indetraibile,template_ivacode_pagata_ind |
1456 | IVC21Iind,template_impcode_pagata_21ind,IVA a credito 21% indetraibile (imponibile),template_impcode_pagata |
1457 | IVC21det10,template_ivacode_pagata_21det10,IVA a credito 21% detraibile 10%,template_ivacode_pagata |
1458 | +IVC21Ndet10,template_ivacode_pagata_21det10ind,IVA a credito 21% detraibile 10% (indetraibile),template_ivacode_pagata_ind |
1459 | IVC21Idet10,template_impcode_pagata_21det10,IVA a credito 21% detraibile 10% (imponibile),template_impcode_pagata |
1460 | IVC21det15,template_ivacode_pagata_21det15,IVA a credito 21% detraibile 15%,template_ivacode_pagata |
1461 | +IVC21Ndet15,template_ivacode_pagata_21det15ind,IVA a credito 21% detraibile 15% (indetraibile),template_ivacode_pagata_ind |
1462 | IVC21Idet15,template_impcode_pagata_21det15,IVA a credito 21% detraibile 15% (imponibile),template_impcode_pagata |
1463 | IVC21det40,template_ivacode_pagata_21det40,IVA a credito 21% detraibile 40%,template_ivacode_pagata |
1464 | +IVC21Ndet40,template_ivacode_pagata_21det40ind,IVA a credito 21% detraibile 40% (indetraibile),template_ivacode_pagata_ind |
1465 | IVC21Idet40,template_impcode_pagata_21det40,IVA a credito 21% detraibile 40% (imponibile),template_impcode_pagata |
1466 | IVC21det50,template_ivacode_pagata_21det50,IVA a credito 21% detraibile 50%,template_ivacode_pagata |
1467 | +IVC21Ndet50,template_ivacode_pagata_21det50ind,IVA a credito 21% detraibile 50% (indetraibile),template_ivacode_pagata_ind |
1468 | IVC21Idet50,template_impcode_pagata_21det50,IVA a credito 21% detraibile 50% (imponibile),template_impcode_pagata |
1469 | |
1470 | === modified file 'l10n_it/data/account.tax.template.csv' |
1471 | --- l10n_it/data/account.tax.template.csv 2012-12-20 10:21:30 +0000 |
1472 | +++ l10n_it/data/account.tax.template.csv 2013-06-06 12:58:46 +0000 |
1473 | @@ -1,71 +1,66 @@ |
1474 | id,description,chart_template_id:id,name,sequence,amount,parent_id:id,child_depend,type,account_collected_id:id,account_paid_id:id,type_tax_use,base_code_id:id,tax_code_id:id,ref_base_code_id:id,ref_tax_code_id:id,ref_base_sign,ref_tax_sign,price_include,base_sign,tax_sign |
1475 | -21a,21a,l10n_it_chart_template_generic,Iva al 21% (debito),,0.21,,False,percent,2601,2601,sale,template_impcode_riscossa_21,template_ivacode_riscossa_21,template_impcode_riscossa_21,template_ivacode_riscossa_21,-1,-1,False,, |
1476 | -21b,21b,l10n_it_chart_template_generic,Iva al 21% (credito),,0.21,,False,percent,1601,1601,purchase,template_impcode_pagata_21,template_ivacode_pagata_21,template_impcode_pagata_21,template_ivacode_pagata_21,,,False,-1,-1 |
1477 | -20a,20a,l10n_it_chart_template_generic,Iva al 20% (debito),,0.2,,False,percent,2601,2601,sale,template_impcode_riscossa_20,template_ivacode_riscossa_20,template_impcode_riscossa_20,template_ivacode_riscossa_20,-1,-1,False,, |
1478 | -20b,20b,l10n_it_chart_template_generic,Iva al 20% (credito),,0.2,,False,percent,1601,1601,purchase,template_impcode_pagata_20,template_ivacode_pagata_20,template_impcode_pagata_20,template_ivacode_pagata_20,,,False,-1,-1 |
1479 | -10a,10a,l10n_it_chart_template_generic,Iva al 10% (debito),,0.1,,False,percent,2601,2601,sale,template_impcode_riscossa_10,template_ivacode_riscossa_10,template_impcode_riscossa_10,template_ivacode_riscossa_10,-1,-1,False,, |
1480 | -10b,10b,l10n_it_chart_template_generic,Iva al 10% (credito),,0.1,,False,percent,1601,1601,purchase,template_impcode_pagata_10,template_ivacode_pagata_10,template_impcode_pagata_10,template_ivacode_pagata_10,,,False,-1,-1 |
1481 | -10AO,10AO,l10n_it_chart_template_generic,Iva al 10% indetraibile,,0.1,,True,percent,,,purchase,template_impcode_pagata_10ind,,template_impcode_pagata_10ind,,,,False,-1,-1 |
1482 | -10AOa,10AOa,l10n_it_chart_template_generic,Iva al 10% indetraibile (D),2,0,10AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_10ind,,template_ivacode_pagata_10ind,,,False,, |
1483 | -10AOb,10AOb,l10n_it_chart_template_generic,Iva al 10% indetraibile (I),1,1,10AO,False,percent,,,purchase,,,,,,,False,, |
1484 | -12a,12a,l10n_it_chart_template_generic,Iva 12% (debito),,0.12,,False,percent,2601,2601,sale,template_impcode_riscossa_12,template_ivacode_riscossa_12,template_impcode_riscossa_12,template_ivacode_riscossa_12,-1,-1,False,, |
1485 | -12b,12b,l10n_it_chart_template_generic,Iva 12% (credito),,0.12,,False,percent,1601,1601,purchase,template_impcode_pagata_12,template_ivacode_pagata_12,template_impcode_pagata_12,template_ivacode_pagata_12,,,False,-1,-1 |
1486 | -2010,2010,l10n_it_chart_template_generic,Iva al 20% detraibile 10%,,0.2,,True,percent,,,purchase,template_impcode_pagata_20det10,,template_impcode_pagata_20det10,,,,False,-1,-1 |
1487 | -2010a,2010a,l10n_it_chart_template_generic,Iva al 20% detraibile 10% (D),2,0,2010,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det10,,template_ivacode_pagata_20det10,,,False,, |
1488 | -2010b,2010b,l10n_it_chart_template_generic,Iva al 20% detraibile 10% (I),1,0.9,2010,False,percent,,,purchase,,,,,,,False,, |
1489 | -2015,2015,l10n_it_chart_template_generic,Iva al 20% detraibile 15%,,0.2,,True,percent,,,purchase,template_impcode_pagata_20det15,,template_impcode_pagata_20det15,,,,False,-1,-1 |
1490 | -2015a,2015a,l10n_it_chart_template_generic,Iva al 20% detraibile 15% (D),2,0,2015,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det15,,template_ivacode_pagata_20det15,,,False,, |
1491 | -2015b,2015b,l10n_it_chart_template_generic,Iva al 20% detraibile 15% (I),1,0.85,2015,False,percent,,,purchase,,,,,,,False,, |
1492 | -2040,2040,l10n_it_chart_template_generic,Iva al 20% detraibile 40%,,0.2,,True,percent,,,purchase,template_impcode_pagata_20det40,,template_impcode_pagata_20det40,,,,False,-1,-1 |
1493 | -2040a,2040a,l10n_it_chart_template_generic,Iva al 20% detraibile 40% (D),2,0,2040,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det40,,template_ivacode_pagata_20det40,,,False,, |
1494 | -2040b,2040b,l10n_it_chart_template_generic,Iva al 20% detraibile 40% (I),1,0.6,2040,False,percent,,,purchase,,,,,,,False,, |
1495 | -20AO,20AO,l10n_it_chart_template_generic,Iva al 20% indetraibile,,0.2,,True,percent,,,purchase,template_impcode_pagata_20ind,,template_impcode_pagata_20ind,,,,False,-1,-1 |
1496 | -20AOa,20AOa,l10n_it_chart_template_generic,Iva al 20% indetraibile (D),2,0,20AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_20ind,,template_ivacode_pagata_20ind,,,False,, |
1497 | -20AOb,20AOb,l10n_it_chart_template_generic,Iva al 20% indetraibile (I),1,1,20AO,False,percent,,,purchase,,,,,,,False,, |
1498 | -20I5,20I5,l10n_it_chart_template_generic,IVA al 20% detraibile al 50%,,0.2,,True,percent,,,purchase,template_impcode_pagata_20det50,,template_impcode_pagata_20det50,,,,False,-1,-1 |
1499 | -20I5b,20I5b,l10n_it_chart_template_generic,IVA al 20% detraibile al 50% (I),1,0.5,20I5,False,percent,,,purchase,,,,,,,False,, |
1500 | -20I5a,20I5a,l10n_it_chart_template_generic,IVA al 20% detraibile al 50% (D),2,0,20I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det50,,template_ivacode_pagata_20det50,,,False,, |
1501 | -22a,22a,l10n_it_chart_template_generic,Iva 2% (debito),,0.02,,False,percent,2601,2601,sale,template_impcode_riscossa_2,template_ivacode_riscossa_2,template_impcode_riscossa_2,template_ivacode_riscossa_2,-1,-1,False,, |
1502 | -22b,22b,l10n_it_chart_template_generic,Iva 2% (credito),,0.02,,False,percent,1601,1601,purchase,template_impcode_pagata_2,template_ivacode_pagata_2,template_impcode_pagata_2,template_ivacode_pagata_2,,,False,-1,-1 |
1503 | -4a,4a,l10n_it_chart_template_generic,Iva 4% (debito),,0.04,,False,percent,2601,2601,sale,template_impcode_riscossa_4,template_ivacode_riscossa_4,template_impcode_riscossa_4,template_ivacode_riscossa_4,-1,-1,False,, |
1504 | -4b,4b,l10n_it_chart_template_generic,Iva 4% (credito),,0.04,,False,percent,1601,1601,purchase,template_impcode_pagata_4,template_ivacode_pagata_4,template_impcode_pagata_4,template_ivacode_pagata_4,,,False,-1,-1 |
1505 | -4AO,4AO,l10n_it_chart_template_generic,Iva al 4% indetraibile,,0.04,,True,percent,,,purchase,template_impcode_pagata_4ind,,template_impcode_pagata_4ind,,,,False,-1,-1 |
1506 | -4AOa,4AOa,l10n_it_chart_template_generic,Iva al 4% indetraibile (D),2,0,4AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_4ind,,template_ivacode_pagata_4ind,,,False,, |
1507 | -4AOb,4AOb,l10n_it_chart_template_generic,Iva al 4% indetraibile (I),1,1,4AO,False,percent,,,purchase,,,,,,,False,, |
1508 | -10I5,10I5,l10n_it_chart_template_generic,IVA al 10% detraibile al 50%,,0.1,,True,percent,,,purchase,template_impcode_pagata_10det50,,template_impcode_pagata_10det50,,,,False,-1,-1 |
1509 | -10I5a,10I5a,l10n_it_chart_template_generic,IVA al 10% detraibile al 50% (D),2,0,10I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_10det50,,template_ivacode_pagata_10det50,,,False,, |
1510 | -10I5b,10I5b,l10n_it_chart_template_generic,IVA al 10% detraibile al 50% (I),1,0.5,10I5,False,percent,,,purchase,,,,,,,False,, |
1511 | -4I5,4I5,l10n_it_chart_template_generic,IVA al 4% detraibile al 50%,,0.04,,True,percent,,,purchase,template_impcode_pagata_4det50,,template_impcode_pagata_4det50,,,,False,-1,-1 |
1512 | -4I5a,4I5a,l10n_it_chart_template_generic,IVA al 4% detraibile al 50% (D),2,0,4I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_4det50,,template_ivacode_pagata_4det50,,,False,, |
1513 | -4I5b,4I5b,l10n_it_chart_template_generic,IVA al 4% detraibile al 50% (I),1,0.5,4I5,False,percent,,,purchase,,,,,,,False,, |
1514 | -00a,00a,l10n_it_chart_template_generic,Esente IVA (debito),,0,,False,percent,2601,2601,sale,template_impcode_riscossa_0,template_ivacode_riscossa_0,template_impcode_riscossa_0,template_ivacode_riscossa_0,-1,-1,False,, |
1515 | -00b,00b,l10n_it_chart_template_generic,Esente IVA (credito),,0,,False,percent,1601,1601,purchase,template_impcode_pagata_0,template_ivacode_pagata_0,template_impcode_pagata_0,template_ivacode_pagata_0,,,False,-1,-1 |
1516 | -21a INC,21a INC,l10n_it_chart_template_generic,Iva al 21% (debito) INC,,0.21,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_21,l10n_it.template_ivacode_riscossa_21,l10n_it.template_impcode_riscossa_21,l10n_it.template_ivacode_riscossa_21,-1,-1,True,, |
1517 | -21b INC,21b INC,l10n_it_chart_template_generic,Iva al 21% (credito) INC,,0.21,,False,percent,1601,1601,purchase,template_impcode_pagata_21,template_ivacode_pagata_21,template_impcode_pagata_21,template_ivacode_pagata_21,,,True,-1,-1 |
1518 | -20a INC,20a INC,l10n_it_chart_template_generic,Iva al 20% (debito) INC,,0.2,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_20,l10n_it.template_ivacode_riscossa_20,l10n_it.template_impcode_riscossa_20,l10n_it.template_ivacode_riscossa_20,-1,-1,True,, |
1519 | -20b INC,20b INC,l10n_it_chart_template_generic,Iva al 20% (credito) INC,,0.2,,False,percent,1601,1601,purchase,template_impcode_pagata_20,template_ivacode_pagata_20,template_impcode_pagata_20,template_ivacode_pagata_20,,,True,-1,-1 |
1520 | -10a INC,10a INC,l10n_it_chart_template_generic,Iva al 10% (debito) INC,,0.1,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_10,l10n_it.template_ivacode_riscossa_10,l10n_it.template_impcode_riscossa_10,l10n_it.template_ivacode_riscossa_10,-1,-1,True,, |
1521 | -10b INC,10b INC,l10n_it_chart_template_generic,Iva al 10% (credito) INC,,0.1,,False,percent,1601,1601,purchase,template_impcode_pagata_10,template_ivacode_pagata_10,template_impcode_pagata_10,template_ivacode_pagata_10,,,True,-1,-1 |
1522 | -12a INC,12a INC,l10n_it_chart_template_generic,Iva 12% (debito) INC,,0.12,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_12,l10n_it.template_ivacode_riscossa_12,l10n_it.template_impcode_riscossa_12,l10n_it.template_ivacode_riscossa_12,-1,-1,True,, |
1523 | -12b INC,12b INC,l10n_it_chart_template_generic,Iva 12% (credito) INC,,0.12,,False,percent,1601,1601,purchase,template_impcode_pagata_12,template_ivacode_pagata_12,template_impcode_pagata_12,template_ivacode_pagata_12,,,True,-1,-1 |
1524 | -22a INC,22a INC,l10n_it_chart_template_generic,Iva 2% (debito) INC,,0.02,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_2,l10n_it.template_ivacode_riscossa_2,l10n_it.template_impcode_riscossa_2,l10n_it.template_ivacode_riscossa_2,-1,-1,True,, |
1525 | -22b INC,22b INC,l10n_it_chart_template_generic,Iva 2% (credito) INC,,0.02,,False,percent,1601,1601,purchase,template_impcode_pagata_2,template_ivacode_pagata_2,template_impcode_pagata_2,template_ivacode_pagata_2,,,True,-1,-1 |
1526 | -4a INC,4a INC,l10n_it_chart_template_generic,Iva 4% (debito) INC,,0.04,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_4,l10n_it.template_ivacode_riscossa_4,l10n_it.template_impcode_riscossa_4,l10n_it.template_ivacode_riscossa_4,-1,-1,True,, |
1527 | -4b INC,4b INC,l10n_it_chart_template_generic,Iva 4% (credito) INC,,0.04,,False,percent,1601,1601,purchase,template_impcode_pagata_4,template_ivacode_pagata_4,template_impcode_pagata_4,template_ivacode_pagata_4,,,True,-1,-1 |
1528 | -00a INC,00a INC,l10n_it_chart_template_generic,Esente IVA (debito) INC,,0,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_0,l10n_it.template_ivacode_riscossa_0,l10n_it.template_impcode_riscossa_0,l10n_it.template_ivacode_riscossa_0,-1,-1,True,, |
1529 | -2110,2110,l10n_it_chart_template_generic,Iva al 21% detraibile 10%,,0.21,,True,percent,,,purchase,template_impcode_pagata_21det10,,template_impcode_pagata_21det10,,,,False,-1,-1 |
1530 | -2110a,2110a,l10n_it_chart_template_generic,Iva al 21% detraibile 10% (D),2,0,2110,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det10,,template_ivacode_pagata_21det10,,,False,, |
1531 | -2110b,2110b,l10n_it_chart_template_generic,Iva al 21% detraibile 10% (I),1,0.9,2110,False,percent,,,purchase,,,,,,,False,, |
1532 | -2115,2115,l10n_it_chart_template_generic,Iva al 21% detraibile 15%,,0.21,,True,percent,,,purchase,template_impcode_pagata_21det15,,template_impcode_pagata_21det15,,,,False,-1,-1 |
1533 | -2115a,2115a,l10n_it_chart_template_generic,Iva al 21% detraibile 15% (D),2,0,2115,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det15,,template_ivacode_pagata_21det15,,,False,, |
1534 | -2115b,2115b,l10n_it_chart_template_generic,Iva al 21% detraibile 15% (I),1,0.85,2115,False,percent,,,purchase,,,,,,,False,, |
1535 | -2140,2140,l10n_it_chart_template_generic,Iva al 21% detraibile 40%,,0.21,,True,percent,,,purchase,template_impcode_pagata_21det40,,template_impcode_pagata_21det40,,,,False,-1,-1 |
1536 | -2140a,2140a,l10n_it_chart_template_generic,Iva al 21% detraibile 40% (D),2,0,2140,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det40,,template_ivacode_pagata_21det40,,,False,, |
1537 | -2140b,2140b,l10n_it_chart_template_generic,Iva al 21% detraibile 40% (I),1,0.6,2140,False,percent,,,purchase,,,,,,,False,, |
1538 | -21AO,21AO,l10n_it_chart_template_generic,Iva al 21% indetraibile,,0.21,,True,percent,,,purchase,template_impcode_pagata_21ind,,template_impcode_pagata_21ind,,,,False,-1,-1 |
1539 | -21AOa,21AOa,l10n_it_chart_template_generic,Iva al 21% indetraibile (D),2,0,21AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_21ind,,template_ivacode_pagata_21ind,,,False,, |
1540 | -21AOb,21AOb,l10n_it_chart_template_generic,Iva al 21% indetraibile (I),1,1,21AO,False,percent,,,purchase,,,,,,,False,, |
1541 | -21I5,21I5,l10n_it_chart_template_generic,IVA al 21% detraibile al 50%,,0.21,,True,percent,,,purchase,template_impcode_pagata_21det50,,template_impcode_pagata_21det50,,,,False,-1,-1 |
1542 | -21I5b,21I5b,l10n_it_chart_template_generic,IVA al 21% detraibile al 50% (I),1,0.5,21I5,False,percent,,,purchase,,,,,,,False,, |
1543 | -21I5a,21I5a,l10n_it_chart_template_generic,IVA al 21% detraibile al 50% (D),2,0,21I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det50,,template_ivacode_pagata_21det50,,,False,, |
1544 | - |
1545 | +21v,21v,l10n_it_chart_template_generic,Iva al 21% (debito),1,0.21,,False,percent,2601,2601,sale,template_impcode_riscossa_21,template_ivacode_riscossa_21,template_impcode_riscossa_21,template_ivacode_riscossa_21,-1,-1,False,1,1 |
1546 | +21a,21a,l10n_it_chart_template_generic,Iva al 21% (credito),2,0.21,,False,percent,1601,1601,purchase,template_impcode_pagata_21,template_ivacode_pagata_21,template_impcode_pagata_21,template_ivacode_pagata_21,1,1,False,-1,-1 |
1547 | +20v,20v,l10n_it_chart_template_generic,Iva al 20% (debito),3,0.2,,False,percent,2601,2601,sale,template_impcode_riscossa_20,template_ivacode_riscossa_20,template_impcode_riscossa_20,template_ivacode_riscossa_20,-1,-1,False,1,1 |
1548 | +20a,20a,l10n_it_chart_template_generic,Iva al 20% (credito),4,0.2,,False,percent,1601,1601,purchase,template_impcode_pagata_20,template_ivacode_pagata_20,template_impcode_pagata_20,template_ivacode_pagata_20,1,1,False,-1,-1 |
1549 | +10v,10v,l10n_it_chart_template_generic,Iva al 10% (debito),5,0.1,,False,percent,2601,2601,sale,template_impcode_riscossa_10,template_ivacode_riscossa_10,template_impcode_riscossa_10,template_ivacode_riscossa_10,-1,-1,False,1,1 |
1550 | +10a,10a,l10n_it_chart_template_generic,Iva al 10% (credito),6,0.1,,False,percent,1601,1601,purchase,template_impcode_pagata_10,template_ivacode_pagata_10,template_impcode_pagata_10,template_ivacode_pagata_10,1,1,False,-1,-1 |
1551 | +10AO,10AO,l10n_it_chart_template_generic,Iva al 10% indetraibile,7,0.1,,True,percent,,,purchase,template_impcode_pagata_10ind,,template_impcode_pagata_10ind,,1,1,False,-1,-1 |
1552 | +10AOb,10AOb,l10n_it_chart_template_generic,Iva al 10% indetraibile (D),200,0,10AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_10,,template_ivacode_pagata_10,1,1,False,-1,-1 |
1553 | +10AOa,10AOa,l10n_it_chart_template_generic,Iva al 10% indetraibile (I),100,1,10AO,False,percent,,,purchase,,template_ivacode_pagata_10ind,,template_ivacode_pagata_10ind,1,1,False,-1,-1 |
1554 | +12v,12v,l10n_it_chart_template_generic,Iva 12% (debito),8,0.12,,False,percent,2601,2601,sale,template_impcode_riscossa_12,template_ivacode_riscossa_12,template_impcode_riscossa_12,template_ivacode_riscossa_12,-1,-1,False,1,1 |
1555 | +12a,12a,l10n_it_chart_template_generic,Iva 12% (credito),9,0.12,,False,percent,1601,1601,purchase,template_impcode_pagata_12,template_ivacode_pagata_12,template_impcode_pagata_12,template_ivacode_pagata_12,1,1,False,-1,-1 |
1556 | +2010,2010,l10n_it_chart_template_generic,Iva al 20% detraibile 10%,10,0.2,,True,percent,,,purchase,template_impcode_pagata_20det10,,template_impcode_pagata_20det10,,1,1,False,-1,-1 |
1557 | +2010b,2010b,l10n_it_chart_template_generic,Iva al 20% detraibile 10% (D),200,0,2010,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det10,,template_ivacode_pagata_20det10,1,1,False,-1,-1 |
1558 | +2010a,2010a,l10n_it_chart_template_generic,Iva al 20% detraibile 10% (I),100,0.9,2010,False,percent,,,purchase,,template_ivacode_pagata_20det10ind,,template_ivacode_pagata_20det10ind,1,1,False,-1,-1 |
1559 | +2015,2015,l10n_it_chart_template_generic,Iva al 20% detraibile 15%,11,0.2,,True,percent,,,purchase,template_impcode_pagata_20det15,,template_impcode_pagata_20det15,,1,1,False,-1,-1 |
1560 | +2015b,2015b,l10n_it_chart_template_generic,Iva al 20% detraibile 15% (D),200,0,2015,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det15,,template_ivacode_pagata_20det15,1,1,False,-1,-1 |
1561 | +2015a,2015a,l10n_it_chart_template_generic,Iva al 20% detraibile 15% (I),100,0.85,2015,False,percent,,,purchase,,template_ivacode_pagata_20det15ind,,template_ivacode_pagata_20det15ind,1,1,False,-1,-1 |
1562 | +2040,2040,l10n_it_chart_template_generic,Iva al 20% detraibile 40%,12,0.2,,True,percent,,,purchase,template_impcode_pagata_20det40,,template_impcode_pagata_20det40,,1,1,False,-1,-1 |
1563 | +2040b,2040b,l10n_it_chart_template_generic,Iva al 20% detraibile 40% (D),200,0,2040,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det40,,template_ivacode_pagata_20det40,1,1,False,-1,-1 |
1564 | +2040a,2040a,l10n_it_chart_template_generic,Iva al 20% detraibile 40% (I),100,0.6,2040,False,percent,,,purchase,,template_ivacode_pagata_20det40ind,,template_ivacode_pagata_20det40ind,1,1,False,-1,-1 |
1565 | +20AO,20AO,l10n_it_chart_template_generic,Iva al 20% indetraibile,13,0.2,,True,percent,,,purchase,template_impcode_pagata_20ind,,template_impcode_pagata_20ind,,1,1,False,-1,-1 |
1566 | +20AOb,20AOb,l10n_it_chart_template_generic,Iva al 20% indetraibile (D),200,0,20AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_20ind,,template_ivacode_pagata_20ind,1,1,False,-1,-1 |
1567 | +20AOa,20AOa,l10n_it_chart_template_generic,Iva al 20% indetraibile (I),100,1,20AO,False,percent,,,purchase,,template_ivacode_pagata_20ind,,template_ivacode_pagata_20ind,1,1,False,-1,-1 |
1568 | +20I5,20I5,l10n_it_chart_template_generic,IVA al 20% detraibile al 50%,14,0.2,,True,percent,,,purchase,template_impcode_pagata_20det50,,template_impcode_pagata_20det50,,1,1,False,-1,-1 |
1569 | +20I5b,20I5b,l10n_it_chart_template_generic,IVA al 20% detraibile al 50% (D),200,0,20I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_20det50,,template_ivacode_pagata_20det50,1,1,False,-1,-1 |
1570 | +20I5a,20I5a,l10n_it_chart_template_generic,IVA al 20% detraibile al 50% (I),100,0.5,20I5,False,percent,,,purchase,,template_ivacode_pagata_20det50ind,,template_ivacode_pagata_20det50ind,1,1,False,-1,-1 |
1571 | +22v,22v,l10n_it_chart_template_generic,Iva 2% (debito),15,0.02,,False,percent,2601,2601,sale,template_impcode_riscossa_2,template_ivacode_riscossa_2,template_impcode_riscossa_2,template_ivacode_riscossa_2,-1,-1,False,1,1 |
1572 | +22a,22a,l10n_it_chart_template_generic,Iva 2% (credito),16,0.02,,False,percent,1601,1601,purchase,template_impcode_pagata_2,template_ivacode_pagata_2,template_impcode_pagata_2,template_ivacode_pagata_2,1,1,False,-1,-1 |
1573 | +4v,4v,l10n_it_chart_template_generic,Iva 4% (debito),17,0.04,,False,percent,2601,2601,sale,template_impcode_riscossa_4,template_ivacode_riscossa_4,template_impcode_riscossa_4,template_ivacode_riscossa_4,-1,-1,False,1,1 |
1574 | +4a,4a,l10n_it_chart_template_generic,Iva 4% (credito),18,0.04,,False,percent,1601,1601,purchase,template_impcode_pagata_4,template_ivacode_pagata_4,template_impcode_pagata_4,template_ivacode_pagata_4,1,1,False,-1,-1 |
1575 | +4AO,4AO,l10n_it_chart_template_generic,Iva al 4% indetraibile,19,0.04,,True,percent,,,purchase,template_impcode_pagata_4ind,,template_impcode_pagata_4ind,,1,1,False,-1,-1 |
1576 | +4AOb,4AOb,l10n_it_chart_template_generic,Iva al 4% indetraibile (D),200,0,4AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_4ind,,template_ivacode_pagata_4ind,1,1,False,-1,-1 |
1577 | +4AOa,4AOa,l10n_it_chart_template_generic,Iva al 4% indetraibile (I),100,1,4AO,False,percent,,,purchase,,template_ivacode_pagata_4ind,,template_ivacode_pagata_4ind,1,1,False,-1,-1 |
1578 | +10I5,10I5,l10n_it_chart_template_generic,IVA al 10% detraibile al 50%,20,0.1,,True,percent,,,purchase,template_impcode_pagata_10det50,,template_impcode_pagata_10det50,,1,1,False,-1,-1 |
1579 | +10I5b,10I5b,l10n_it_chart_template_generic,IVA al 10% detraibile al 50% (D),200,0,10I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_10det50,,template_ivacode_pagata_10det50,1,1,False,-1,-1 |
1580 | +10I5a,10I5a,l10n_it_chart_template_generic,IVA al 10% detraibile al 50% (I),100,0.5,10I5,False,percent,,,purchase,,template_ivacode_pagata_10det50ind,,template_ivacode_pagata_10det50ind,1,1,False,-1,-1 |
1581 | +4I5,4I5,l10n_it_chart_template_generic,IVA al 4% detraibile al 50%,21,0.04,,True,percent,,,purchase,template_impcode_pagata_4det50,,template_impcode_pagata_4det50,,1,1,False,-1,-1 |
1582 | +4I5b,4I5b,l10n_it_chart_template_generic,IVA al 4% detraibile al 50% (D),200,0,4I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_4det50,,template_ivacode_pagata_4det50,1,1,False,-1,-1 |
1583 | +4I5a,4I5a,l10n_it_chart_template_generic,IVA al 4% detraibile al 50% (I),100,0.5,4I5,False,percent,,,purchase,,template_ivacode_pagata_4det50ind,,template_ivacode_pagata_4det50ind,1,1,False,-1,-1 |
1584 | +00v,00v,l10n_it_chart_template_generic,Fuori Campo IVA (debito),22,0,,False,percent,2601,2601,sale,template_impcode_riscossa_0,template_ivacode_riscossa_0,template_impcode_riscossa_0,template_ivacode_riscossa_0,-1,-1,False,1,1 |
1585 | +00a,00a,l10n_it_chart_template_generic,Fuori Campo IVA (credito),23,0,,False,percent,1601,1601,purchase,template_impcode_pagata_0,template_ivacode_pagata_0,template_impcode_pagata_0,template_ivacode_pagata_0,1,1,False,-1,-1 |
1586 | +00art15v,00art15v,l10n_it_chart_template_generic,Imponibile Escluso Art.15 (debito),22,0,,False,percent,2601,2601,sale,template_impcode_riscossa_art15,template_ivacode_riscossa_art15,template_impcode_riscossa_art15,template_ivacode_riscossa_art15,-1,-1,False,1,1 |
1587 | +00art15a,00art15a,l10n_it_chart_template_generic,Imponibile Escluso Art.15 (credito),23,0,,False,percent,1601,1601,purchase,template_impcode_pagata_art15,template_ivacode_pagata_art15,template_impcode_pagata_art15,template_ivacode_pagata_art15,1,1,False,-1,-1 |
1588 | +21v INC,21v INC,l10n_it_chart_template_generic,Iva al 21% (debito) INC,24,0.21,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_21,l10n_it.template_ivacode_riscossa_21,l10n_it.template_impcode_riscossa_21,l10n_it.template_ivacode_riscossa_21,-1,-1,True,1,1 |
1589 | +20v INC,20v INC,l10n_it_chart_template_generic,Iva al 20% (debito) INC,25,0.2,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_20,l10n_it.template_ivacode_riscossa_20,l10n_it.template_impcode_riscossa_20,l10n_it.template_ivacode_riscossa_20,-1,-1,True,1,1 |
1590 | +10v INC,10v INC,l10n_it_chart_template_generic,Iva al 10% (debito) INC,26,0.1,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_10,l10n_it.template_ivacode_riscossa_10,l10n_it.template_impcode_riscossa_10,l10n_it.template_ivacode_riscossa_10,-1,-1,True,1,1 |
1591 | +12v INC,12v INC,l10n_it_chart_template_generic,Iva 12% (debito) INC,27,0.12,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_12,l10n_it.template_ivacode_riscossa_12,l10n_it.template_impcode_riscossa_12,l10n_it.template_ivacode_riscossa_12,-1,-1,True,1,1 |
1592 | +22v INC,22v INC,l10n_it_chart_template_generic,Iva 2% (debito) INC,28,0.02,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_2,l10n_it.template_ivacode_riscossa_2,l10n_it.template_impcode_riscossa_2,l10n_it.template_ivacode_riscossa_2,-1,-1,True,1,1 |
1593 | +4v INC,4v INC,l10n_it_chart_template_generic,Iva 4% (debito) INC,29,0.04,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_4,l10n_it.template_ivacode_riscossa_4,l10n_it.template_impcode_riscossa_4,l10n_it.template_ivacode_riscossa_4,-1,-1,True,1,1 |
1594 | +00v INC,00v INC,l10n_it_chart_template_generic,Fuori Campo IVA (debito) INC,30,0,,False,percent,l10n_it.2601,l10n_it.2601,sale,l10n_it.template_impcode_riscossa_0,l10n_it.template_ivacode_riscossa_0,l10n_it.template_impcode_riscossa_0,l10n_it.template_ivacode_riscossa_0,-1,-1,True,1,1 |
1595 | +2110,2110,l10n_it_chart_template_generic,Iva al 21% detraibile 10%,31,0.21,,True,percent,,,purchase,template_impcode_pagata_21det10,,template_impcode_pagata_21det10,,1,1,False,-1,-1 |
1596 | +2110b,2110b,l10n_it_chart_template_generic,Iva al 21% detraibile 10% (D),200,0,2110,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det10,,template_ivacode_pagata_21det10,1,1,False,-1,-1 |
1597 | +2110a,2110a,l10n_it_chart_template_generic,Iva al 21% detraibile 10% (I),100,0.9,2110,False,percent,,,purchase,,template_ivacode_pagata_21det10ind,,template_ivacode_pagata_21det10ind,1,1,False,-1,-1 |
1598 | +2115,2115,l10n_it_chart_template_generic,Iva al 21% detraibile 15%,32,0.21,,True,percent,,,purchase,template_impcode_pagata_21det15,,template_impcode_pagata_21det15,,1,1,False,-1,-1 |
1599 | +2115b,2115b,l10n_it_chart_template_generic,Iva al 21% detraibile 15% (D),200,0,2115,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det15,,template_ivacode_pagata_21det15,1,1,False,-1,-1 |
1600 | +2115a,2115a,l10n_it_chart_template_generic,Iva al 21% detraibile 15% (I),100,0.85,2115,False,percent,,,purchase,,template_ivacode_pagata_21det15ind,,template_ivacode_pagata_21det15ind,1,1,False,-1,-1 |
1601 | +2140,2140,l10n_it_chart_template_generic,Iva al 21% detraibile 40%,33,0.21,,True,percent,,,purchase,template_impcode_pagata_21det40,,template_impcode_pagata_21det40,,1,1,False,-1,-1 |
1602 | +2140b,2140b,l10n_it_chart_template_generic,Iva al 21% detraibile 40% (D),200,0,2140,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det40,,template_ivacode_pagata_21det40,1,1,False,-1,-1 |
1603 | +2140a,2140a,l10n_it_chart_template_generic,Iva al 21% detraibile 40% (I),100,0.6,2140,False,percent,,,purchase,,template_ivacode_pagata_21det40ind,,template_ivacode_pagata_21det40ind,1,1,False,-1,-1 |
1604 | +21AO,21AO,l10n_it_chart_template_generic,Iva al 21% indetraibile,34,0.21,,True,percent,,,purchase,template_impcode_pagata_21ind,,template_impcode_pagata_21ind,,1,1,False,-1,-1 |
1605 | +21AOb,21AOb,l10n_it_chart_template_generic,Iva al 21% indetraibile (D),200,0,21AO,False,balance,1601,1601,purchase,,template_ivacode_pagata_21ind,,template_ivacode_pagata_21ind,1,1,False,-1,-1 |
1606 | +21AOa,21AOa,l10n_it_chart_template_generic,Iva al 21% indetraibile (I),100,1,21AO,False,percent,,,purchase,,template_ivacode_pagata_21ind,,template_ivacode_pagata_21ind,1,1,False,-1,-1 |
1607 | +21I5,21I5,l10n_it_chart_template_generic,IVA al 21% detraibile al 50%,35,0.21,,True,percent,,,purchase,template_impcode_pagata_21det50,,template_impcode_pagata_21det50,,1,1,False,-1,-1 |
1608 | +21I5b,21I5b,l10n_it_chart_template_generic,IVA al 21% detraibile al 50% (D),200,0,21I5,False,balance,1601,1601,purchase,,template_ivacode_pagata_21det50,,template_ivacode_pagata_21det50,1,1,False,-1,-1 |
1609 | +21I5a,21I5a,l10n_it_chart_template_generic,IVA al 21% detraibile al 50% (I),100,0.5,21I5,False,percent,,,purchase,,template_ivacode_pagata_21det50ind,,template_ivacode_pagata_21det50ind,1,1,False,-1,-1 |
1610 | |
1611 | === modified file 'l10n_lu/account_financial_report.xml' |
1612 | --- l10n_lu/account_financial_report.xml 2012-12-03 15:19:34 +0000 |
1613 | +++ l10n_lu/account_financial_report.xml 2013-06-06 12:58:46 +0000 |
1614 | @@ -84,7 +84,7 @@ |
1615 | </record> |
1616 | |
1617 | <record model="account.financial.report" id="account_financial_report_23"> |
1618 | - <field name="name">2. Concessions, brevets, licences, marques, ainsi que droits et valeurs similaires s’ils ont été</field> |
1619 | + <field name="name">2. Concessions, brevets, licences, marques, ainsi que droits et valeurs similaires s’ils ont été</field> |
1620 | <field name="sequence">115</field> |
1621 | <field name="sign" eval="1"/> |
1622 | <field name="display_detail">detail_flat</field> |
1623 | @@ -256,7 +256,7 @@ |
1624 | </record> |
1625 | |
1626 | <record model="account.financial.report" id="account_financial_report_42"> |
1627 | - <field name="name">I. Stocks </field> |
1628 | + <field name="name">I. Stocks</field> |
1629 | <field name="sequence">153</field> |
1630 | <field name="sign" eval="1"/> |
1631 | <field name="display_detail">detail_flat</field> |
1632 | @@ -292,7 +292,7 @@ |
1633 | </record> |
1634 | |
1635 | <record model="account.financial.report" id="account_financial_report_46"> |
1636 | - <field name="name">4. Acomptes versés </field> |
1637 | + <field name="name">4. Acomptes versés</field> |
1638 | <field name="sequence">161</field> |
1639 | <field name="sign" eval="1"/> |
1640 | <field name="display_detail">no_detail</field> |
1641 | @@ -301,7 +301,7 @@ |
1642 | </record> |
1643 | |
1644 | <record model="account.financial.report" id="account_financial_report_47"> |
1645 | - <field name="name">II. Créances </field> |
1646 | + <field name="name">II. Créances</field> |
1647 | <field name="sequence">163</field> |
1648 | <field name="sign" eval="1"/> |
1649 | <field name="display_detail">detail_flat</field> |
1650 | @@ -364,7 +364,7 @@ |
1651 | </record> |
1652 | |
1653 | <record model="account.financial.report" id="account_financial_report_54"> |
1654 | - <field name="name">3. Créances sur des entreprises avec lesquelles la société a un</field> |
1655 | + <field name="name">3. Créances sur des entreprises avec lesquelles la société a un lien de participation</field> |
1656 | <field name="sequence">177</field> |
1657 | <field name="sign" eval="1"/> |
1658 | <field name="display_detail">detail_flat</field> |
1659 | @@ -436,7 +436,7 @@ |
1660 | </record> |
1661 | |
1662 | <record model="account.financial.report" id="account_financial_report_62"> |
1663 | - <field name="name">2. Actions propres ou parts propres </field> |
1664 | + <field name="name">2. Actions propres ou parts propres</field> |
1665 | <field name="sequence">193</field> |
1666 | <field name="sign" eval="1"/> |
1667 | <field name="display_detail">no_detail</field> |
1668 | @@ -445,7 +445,7 @@ |
1669 | </record> |
1670 | |
1671 | <record model="account.financial.report" id="account_financial_report_63"> |
1672 | - <field name="name">3. Autres valeurs mobilières </field> |
1673 | + <field name="name">3. Autres valeurs mobilières</field> |
1674 | <field name="sequence">195</field> |
1675 | <field name="sign" eval="1"/> |
1676 | <field name="display_detail">no_detail</field> |
1677 | @@ -963,7 +963,7 @@ |
1678 | </record> |
1679 | |
1680 | <record model="account.financial.report" id="account_financial_report_119"> |
1681 | - <field name="name">CHARGES</field> |
1682 | + <field name="name">A. CHARGES</field> |
1683 | <field name="sequence">641</field> |
1684 | <field name="sign" eval="1"/> |
1685 | <field name="display_detail">detail_flat</field> |
1686 | @@ -972,7 +972,7 @@ |
1687 | </record> |
1688 | |
1689 | <record model="account.financial.report" id="account_financial_report_120"> |
1690 | - <field name="name">1. Consommation de marchandises et de matières premières et consommables</field> |
1691 | + <field name="name">1. Consommation de marchandises et de matières premières et consommables</field> |
1692 | <field name="sequence">601</field> |
1693 | <field name="sign" eval="1"/> |
1694 | <field name="display_detail">no_detail</field> |
1695 | @@ -1044,7 +1044,7 @@ |
1696 | </record> |
1697 | |
1698 | <record model="account.financial.report" id="account_financial_report_128"> |
1699 | - <field name="name">a) sur frais d'établissement et sur immobilisations corporelles</field> |
1700 | + <field name="name">a) sur frais d'établissement et sur immobilisations corporelles et incorporelles</field> |
1701 | <field name="sequence">617</field> |
1702 | <field name="sign" eval="1"/> |
1703 | <field name="display_detail">no_detail</field> |
1704 | @@ -1071,7 +1071,7 @@ |
1705 | </record> |
1706 | |
1707 | <record model="account.financial.report" id="account_financial_report_131"> |
1708 | - <field name="name">6. Corrections de valeur sur immobilisations financières et aj</field> |
1709 | + <field name="name">6. Corrections de valeur sur immobilisations financières et ajustement de juste valeur sur immobilisations financières</field> |
1710 | <field name="sequence">623</field> |
1711 | <field name="sign" eval="1"/> |
1712 | <field name="display_detail">no_detail</field> |
1713 | @@ -1080,7 +1080,7 @@ |
1714 | </record> |
1715 | |
1716 | <record model="account.financial.report" id="account_financial_report_132"> |
1717 | - <field name="name">7. Corrections de valeur et ajustement de juste valeur sur élém</field> |
1718 | + <field name="name">7. Corrections de valeur et ajustement de juste valeur sur éléments financiers de l'actif circulant. Moins-values de cessions des valeurs mobilières</field> |
1719 | <field name="sequence">625</field> |
1720 | <field name="sign" eval="1"/> |
1721 | <field name="display_detail">no_detail</field> |
1722 | @@ -1143,7 +1143,7 @@ |
1723 | </record> |
1724 | |
1725 | <record model="account.financial.report" id="account_financial_report_140"> |
1726 | - <field name="name">PRODUITS</field> |
1727 | + <field name="name">B. PRODUITS</field> |
1728 | <field name="sequence">737</field> |
1729 | <field name="sign" eval="-1"/> |
1730 | <field name="display_detail">detail_flat</field> |
1731 | @@ -1161,7 +1161,7 @@ |
1732 | </record> |
1733 | |
1734 | <record model="account.financial.report" id="account_financial_report_142"> |
1735 | - <field name="name">2. Variation des stocks de produits finis, et de produits et de commandes en cours</field> |
1736 | + <field name="name">2. Variation des stocks de produits finis, et de produits et de commandes en cours</field> |
1737 | <field name="sequence">703</field> |
1738 | <field name="sign" eval="-1"/> |
1739 | <field name="display_detail">no_detail</field> |
1740 | @@ -1188,7 +1188,7 @@ |
1741 | </record> |
1742 | |
1743 | <record model="account.financial.report" id="account_financial_report_145"> |
1744 | - <field name="name">a) sur frais d'établissement et sur immobilisations corporelles</field> |
1745 | + <field name="name">a) sur frais d'établissement et sur immobilisations corporelles et incorporelles</field> |
1746 | <field name="sequence">709</field> |
1747 | <field name="sign" eval="-1"/> |
1748 | <field name="display_detail">no_detail</field> |
1749 | |
1750 | === modified file 'mail/mail_mail.py' |
1751 | --- mail/mail_mail.py 2013-06-04 15:15:08 +0000 |
1752 | +++ mail/mail_mail.py 2013-06-06 12:58:46 +0000 |
1753 | @@ -60,9 +60,6 @@ |
1754 | 'recipient_ids': fields.many2many('res.partner', string='To (Partners)'), |
1755 | 'email_cc': fields.char('Cc', help='Carbon copy message recipients'), |
1756 | 'body_html': fields.text('Rich-text Contents', help="Rich-text/HTML message"), |
1757 | - # If not set in create values, auto-detected based on create values (res_id, model, email_from) |
1758 | - 'reply_to': fields.char('Reply-To', |
1759 | - help='Preferred response address for the message'), |
1760 | # Auto-detected based on create() - if 'mail_message_id' was passed then this mail is a notification |
1761 | # and during unlink() we will not cascade delete the parent and its attachments |
1762 | 'notification': fields.boolean('Is Notification', |
1763 | |
1764 | === modified file 'mail/mail_message.py' |
1765 | --- mail/mail_message.py 2013-05-23 06:02:23 +0000 |
1766 | +++ mail/mail_message.py 2013-06-06 12:58:46 +0000 |
1767 | @@ -158,6 +158,7 @@ |
1768 | 'author_id': fields.many2one('res.partner', 'Author', select=1, |
1769 | ondelete='set null', |
1770 | help="Author of the message. If not set, email_from may hold an email address that did not match any partner."), |
1771 | + 'author_avatar': fields.related('author_id', 'image_small', type="binary", string="Author's Avatar"), |
1772 | 'partner_ids': fields.many2many('res.partner', string='Recipients'), |
1773 | 'notified_partner_ids': fields.many2many('res.partner', 'mail_notification', |
1774 | 'message_id', 'partner_id', 'Notified partners', |
1775 | @@ -291,7 +292,7 @@ |
1776 | } |
1777 | if starred: |
1778 | values['read'] = False |
1779 | - |
1780 | + |
1781 | notif_ids = notification_obj.search(cr, uid, domain, context=context) |
1782 | |
1783 | # all message have notifications: already set them as (un)starred |
1784 | @@ -398,6 +399,7 @@ |
1785 | 'parent_id': parent_id, |
1786 | 'is_private': is_private, |
1787 | 'author_id': False, |
1788 | + 'author_avatar': message.author_avatar, |
1789 | 'is_author': False, |
1790 | 'partner_ids': [], |
1791 | 'vote_nb': vote_nb, |
1792 | @@ -528,7 +530,6 @@ |
1793 | message_unload_ids = message_unload_ids if message_unload_ids is not None else [] |
1794 | if message_unload_ids: |
1795 | domain += [('id', 'not in', message_unload_ids)] |
1796 | - notification_obj = self.pool.get('mail.notification') |
1797 | limit = limit or self._message_read_limit |
1798 | message_tree = {} |
1799 | message_list = [] |
1800 | @@ -738,12 +739,10 @@ |
1801 | for model, doc_dict in model_record_ids.items(): |
1802 | model_obj = self.pool[model] |
1803 | mids = model_obj.exists(cr, uid, doc_dict.keys()) |
1804 | - if operation in ['create', 'write', 'unlink']: |
1805 | - model_obj.check_access_rights(cr, uid, 'write') |
1806 | - model_obj.check_access_rule(cr, uid, mids, 'write', context=context) |
1807 | + if hasattr(model_obj, 'check_mail_message_access'): |
1808 | + model_obj.check_mail_message_access(cr, uid, mids, operation, context=context) |
1809 | else: |
1810 | - model_obj.check_access_rights(cr, uid, operation) |
1811 | - model_obj.check_access_rule(cr, uid, mids, operation, context=context) |
1812 | + self.pool['mail.thread'].check_mail_message_access(cr, uid, mids, operation, model_obj=model_obj, context=context) |
1813 | document_related_ids += [mid for mid, message in message_values.iteritems() |
1814 | if message.get('model') == model and message.get('res_id') in mids] |
1815 | |
1816 | |
1817 | === modified file 'mail/mail_thread.py' |
1818 | --- mail/mail_thread.py 2013-05-23 06:02:23 +0000 |
1819 | +++ mail/mail_thread.py 2013-06-06 12:58:46 +0000 |
1820 | @@ -101,12 +101,16 @@ |
1821 | |
1822 | if catchall_domain and model and res_id: # specific res_id -> find its alias (i.e. section_id specified) |
1823 | object_id = self.pool.get(model).browse(cr, uid, res_id, context=context) |
1824 | - alias = object_id.alias_id |
1825 | + # check that the alias effectively creates new records |
1826 | + if object_id.alias_id and object_id.alias_id.alias_model_id and \ |
1827 | + object_id.alias_id.alias_model_id.model == self._name and \ |
1828 | + object_id.alias_id.alias_force_thread_id == 0: |
1829 | + alias = object_id.alias_id |
1830 | elif catchall_domain and model: # no specific res_id given -> generic help message, take an example alias (i.e. alias of some section_id) |
1831 | model_id = self.pool.get('ir.model').search(cr, uid, [("model", "=", self._name)], context=context)[0] |
1832 | alias_obj = self.pool.get('mail.alias') |
1833 | - alias_ids = alias_obj.search(cr, uid, [("alias_model_id", "=", model_id)], context=context, limit=1, order='id ASC') |
1834 | - if alias_ids: |
1835 | + alias_ids = alias_obj.search(cr, uid, [("alias_model_id", "=", model_id), ('alias_force_thread_id', '=', 0)], context=context, order='id ASC') |
1836 | + if alias_ids and len(alias_ids) == 1: # if several aliases -> incoherent to propose one guessed from nowhere, therefore avoid if several aliases |
1837 | alias = alias_obj.browse(cr, uid, alias_ids[0], context=context) |
1838 | |
1839 | if alias: |
1840 | @@ -281,14 +285,21 @@ |
1841 | context = {} |
1842 | thread_id = super(mail_thread, self).create(cr, uid, values, context=context) |
1843 | |
1844 | + # automatic logging unless asked not to (mainly for various testing purpose) |
1845 | + if not context.get('mail_create_nolog'): |
1846 | + self.message_post(cr, uid, thread_id, body=_('%s created') % (self._description), context=context) |
1847 | + |
1848 | # subscribe uid unless asked not to |
1849 | if not context.get('mail_create_nosubscribe'): |
1850 | self.message_subscribe_users(cr, uid, [thread_id], [uid], context=context) |
1851 | self.message_auto_subscribe(cr, uid, [thread_id], values.keys(), context=context) |
1852 | |
1853 | - # automatic logging unless asked not to (mainly for various testing purpose) |
1854 | - if not context.get('mail_create_nolog'): |
1855 | - self.message_post(cr, uid, thread_id, body=_('%s created') % (self._description), context=context) |
1856 | + # track values |
1857 | + tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context) |
1858 | + if tracked_fields: |
1859 | + initial_values = {thread_id: dict((item, False) for item in tracked_fields)} |
1860 | + self.message_track(cr, uid, [thread_id], tracked_fields, initial_values, context=context) |
1861 | + |
1862 | return thread_id |
1863 | |
1864 | def write(self, cr, uid, ids, values, context=None): |
1865 | @@ -449,6 +460,20 @@ |
1866 | ir_attachment_obj.unlink(cr, uid, attach_ids, context=context) |
1867 | return True |
1868 | |
1869 | + def check_mail_message_access(self, cr, uid, mids, operation, model_obj=None, context=None): |
1870 | + """ mail.message check permission rules for related document. This method is |
1871 | + meant to be inherited in order to implement addons-specific behavior. |
1872 | + A common behavior would be to allow creating messages when having read |
1873 | + access rule on the document, for portal document such as issues. """ |
1874 | + if not model_obj: |
1875 | + model_obj = self |
1876 | + if operation in ['create', 'write', 'unlink']: |
1877 | + model_obj.check_access_rights(cr, uid, 'write') |
1878 | + model_obj.check_access_rule(cr, uid, mids, 'write', context=context) |
1879 | + else: |
1880 | + model_obj.check_access_rights(cr, uid, operation) |
1881 | + model_obj.check_access_rule(cr, uid, mids, operation, context=context) |
1882 | + |
1883 | def _get_formview_action(self, cr, uid, id, model=None, context=None): |
1884 | """ Return an action to open the document. This method is meant to be |
1885 | overridden in addons that want to give specific view ids for example. |
1886 | |
1887 | === modified file 'mail/static/src/js/mail.js' |
1888 | --- mail/static/src/js/mail.js 2013-05-22 10:33:05 +0000 |
1889 | +++ mail/static/src/js/mail.js 2013-06-06 12:58:46 +0000 |
1890 | @@ -219,6 +219,7 @@ |
1891 | this.type = datasets.type || false, |
1892 | this.subtype = datasets.subtype || false, |
1893 | this.is_author = datasets.is_author || false, |
1894 | + this.author_avatar = datasets.author_avatar || false, |
1895 | this.is_private = datasets.is_private || false, |
1896 | this.subject = datasets.subject || false, |
1897 | this.name = datasets.name || false, |
1898 | @@ -260,8 +261,10 @@ |
1899 | this.date = this.date ? session.web.str_to_datetime(this.date) : false; |
1900 | if (this.date && new Date().getTime()-this.date.getTime() < 7*24*60*60*1000) { |
1901 | this.timerelative = $.timeago(this.date); |
1902 | - } |
1903 | - if (this.type == 'email' && (!this.author_id || !this.author_id[0])) { |
1904 | + } |
1905 | + if (this.author_avatar) { |
1906 | + this.avatar = "data:image/png;base64," + this.author_avatar; |
1907 | + } else if (this.type == 'email' && (!this.author_id || !this.author_id[0])) { |
1908 | this.avatar = ('/mail/static/src/img/email_icon.png'); |
1909 | } else if (this.author_id && this.template != 'mail.compose_message') { |
1910 | this.avatar = mail.ChatterUtils.get_image(this.session, 'res.partner', 'image_small', this.author_id[0]); |
1911 | @@ -850,9 +853,9 @@ |
1912 | |
1913 | on_checked_recipient: function (event) { |
1914 | var $input = $(event.target); |
1915 | - var email = $input.attr("data"); |
1916 | + var full_name = $input.attr("data"); |
1917 | _.each(this.recipients, function (recipient) { |
1918 | - if (recipient.email_address == email) { |
1919 | + if (recipient.full_name == full_name) { |
1920 | recipient.checked = $input.is(":checked"); |
1921 | } |
1922 | }); |
1923 | |
1924 | === modified file 'mail/static/src/xml/mail.xml' |
1925 | --- mail/static/src/xml/mail.xml 2013-04-24 13:12:41 +0000 |
1926 | +++ mail/static/src/xml/mail.xml 2013-06-06 12:58:46 +0000 |
1927 | @@ -143,7 +143,7 @@ |
1928 | <div class="oe_recipients" t-if="!widget.is_log"> |
1929 | <t t-foreach='widget.recipients' t-as='recipient'> |
1930 | <label t-attf-title="Add as recipient and follower (reason: #{recipient.reason})"> |
1931 | - <input type="checkbox" t-att-checked="recipient.checked ? 'checked' : undefined" t-att-data="recipient.email_address"/> |
1932 | + <input type="checkbox" t-att-checked="recipient.checked ? 'checked' : undefined" t-att-data="recipient.full_name"/> |
1933 | <t t-raw="recipient.name"/> |
1934 | <t t-if="recipient.email_address">(<t t-raw="recipient.email_address"/>)</t> |
1935 | <t t-if="!recipient.email_address">(no email address)</t> |
1936 | |
1937 | === modified file 'mail/tests/test_mail_gateway.py' |
1938 | --- mail/tests/test_mail_gateway.py 2013-05-22 11:42:36 +0000 |
1939 | +++ mail/tests/test_mail_gateway.py 2013-06-06 12:58:46 +0000 |
1940 | @@ -147,6 +147,8 @@ |
1941 | self.assertEqual(mail.reply_to, 'other@example.com', |
1942 | 'mail_mail: reply_to should be equal to the one coming from creation values') |
1943 | # Do: create a mail_mail with the previous mail_message |
1944 | + self.mail_message.write(cr, uid, [msg_id], {'reply_to': 'custom@example.com'}) |
1945 | + msg.refresh() |
1946 | mail_id = self.mail_mail.create(cr, uid, {'mail_message_id': msg_id, 'state': 'cancel'}) |
1947 | mail = self.mail_mail.browse(cr, uid, mail_id) |
1948 | # Test: mail_mail content |
1949 | @@ -177,12 +179,15 @@ |
1950 | mail = self.mail_mail.browse(cr, uid, mail_id) |
1951 | # Test: mail_mail content |
1952 | self.assertEqual(mail.reply_to, msg.email_from, |
1953 | - 'mail_mail: reply_to should equal to mail_message.email_from when having no document or default alias') |
1954 | + 'mail_mail: reply_to should be equal to mail_message.email_from when having no document or default alias') |
1955 | |
1956 | # Data: set catchall domain |
1957 | self.registry('ir.config_parameter').set_param(cr, uid, 'mail.catchall.domain', 'schlouby.fr') |
1958 | self.registry('ir.config_parameter').unlink(cr, uid, self.registry('ir.config_parameter').search(cr, uid, [('key', '=', 'mail.catchall.alias')])) |
1959 | |
1960 | + # Update message |
1961 | + self.mail_message.write(cr, uid, [msg_id], {'email_from': False, 'reply_to': False}) |
1962 | + msg.refresh() |
1963 | # Do: create a mail_mail based on the previous mail_message |
1964 | mail_id = self.mail_mail.create(cr, uid, {'mail_message_id': msg_id, 'state': 'cancel'}) |
1965 | mail = self.mail_mail.browse(cr, uid, mail_id) |
1966 | @@ -191,7 +196,7 @@ |
1967 | 'mail_mail: reply_to should equal the mail.group alias') |
1968 | |
1969 | # Update message |
1970 | - self.mail_message.write(cr, uid, [msg_id], {'res_id': False, 'email_from': 'someone@schlouby.fr'}) |
1971 | + self.mail_message.write(cr, uid, [msg_id], {'res_id': False, 'email_from': 'someone@schlouby.fr', 'reply_to': False}) |
1972 | msg.refresh() |
1973 | # Do: create a mail_mail based on the previous mail_message |
1974 | mail_id = self.mail_mail.create(cr, uid, {'mail_message_id': msg_id, 'state': 'cancel'}) |
1975 | @@ -203,6 +208,9 @@ |
1976 | # Data: set catchall alias |
1977 | self.registry('ir.config_parameter').set_param(self.cr, self.uid, 'mail.catchall.alias', 'gateway') |
1978 | |
1979 | + # Update message |
1980 | + self.mail_message.write(cr, uid, [msg_id], {'email_from': False, 'reply_to': False}) |
1981 | + msg.refresh() |
1982 | # Do: create a mail_mail based on the previous mail_message |
1983 | mail_id = self.mail_mail.create(cr, uid, {'mail_message_id': msg_id, 'state': 'cancel'}) |
1984 | mail = self.mail_mail.browse(cr, uid, mail_id) |
1985 | |
1986 | === modified file 'mail/wizard/mail_compose_message.py' |
1987 | --- mail/wizard/mail_compose_message.py 2013-04-18 09:41:47 +0000 |
1988 | +++ mail/wizard/mail_compose_message.py 2013-06-06 12:58:46 +0000 |
1989 | @@ -270,6 +270,7 @@ |
1990 | context.pop('default_partner_ids', None) |
1991 | # post the message |
1992 | if mass_mail_mode and not wizard.post: |
1993 | + post_values['body_html'] = post_values.get('body', '') |
1994 | post_values['recipient_ids'] = [(4, id) for id in post_values.pop('partner_ids', [])] |
1995 | self.pool.get('mail.mail').create(cr, uid, post_values, context=context) |
1996 | else: |
1997 | |
1998 | === modified file 'mrp/procurement.py' |
1999 | --- mrp/procurement.py 2013-04-15 10:23:49 +0000 |
2000 | +++ mrp/procurement.py 2013-06-06 12:58:46 +0000 |
2001 | @@ -33,6 +33,11 @@ |
2002 | 'production_id': fields.many2one('mrp.production', 'Manufacturing Order'), |
2003 | } |
2004 | |
2005 | + def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, context=None): |
2006 | + result = super(procurement_order, self)._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, context) |
2007 | + result['property_ids'] = [(6, 0, [x.id for x in line.property_ids])] |
2008 | + return result |
2009 | + |
2010 | def check_produce_product(self, cr, uid, procurement, context=None): |
2011 | ''' Depict the capacity of the procurement workflow to produce products (not services)''' |
2012 | return True |
2013 | |
2014 | === modified file 'mrp/report/order.rml' |
2015 | --- mrp/report/order.rml 2011-12-21 09:08:11 +0000 |
2016 | +++ mrp/report/order.rml 2013-06-06 12:58:46 +0000 |
2017 | @@ -139,37 +139,18 @@ |
2018 | <initialize> |
2019 | <paraStyle name="all" alignment="justify"/> |
2020 | </initialize> |
2021 | - <paraStyle name="Standard" fontName="Helvetica"/> |
2022 | - <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2023 | - <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/> |
2024 | - <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2025 | - <paraStyle name="Table Contents" fontName="Helvetica"/> |
2026 | - <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/> |
2027 | - <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/> |
2028 | - <paraStyle name="Index" fontName="Helvetica"/> |
2029 | - <paraStyle name="Footer" fontName="Helvetica"/> |
2030 | - <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
2031 | - <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2032 | - <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
2033 | - <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2034 | - <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2035 | - <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2036 | - <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2037 | - <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2038 | - <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2039 | - <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2040 | - <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2041 | - <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2042 | - <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2043 | - <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2044 | - <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/> |
2045 | - <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2046 | - <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2047 | - <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2048 | - <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2049 | - <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2050 | - <paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2051 | - <paraStyle name="terp_default_space" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="0.0"/> |
2052 | + <paraStyle name="terp_header" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2053 | + <paraStyle name="terp_tblheader_Details" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2054 | + <paraStyle name="terp_default_8" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2055 | + <paraStyle name="terp_default_Bold_8" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2056 | + <paraStyle name="terp_tblheader_General_Centre" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2057 | + <paraStyle name="terp_tblheader_Details_Centre" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2058 | + <paraStyle name="terp_default_Centre_8" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2059 | + <paraStyle name="terp_default_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2060 | + <paraStyle name="terp_default_Bold_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2061 | + <paraStyle name="terp_default_Centre_9" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2062 | + <paraStyle name="terp_default_Right_9" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2063 | + <paraStyle name="terp_default_2" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2064 | <images/> |
2065 | </stylesheet> |
2066 | <story> |
2067 | @@ -178,16 +159,16 @@ |
2068 | <blockTable colWidths="256.0,61.0,107.0,104.0" style="Table8"> |
2069 | <tr> |
2070 | <td> |
2071 | - <para style="terp_tblheader_Details">Product </para> |
2072 | - </td> |
2073 | - <td> |
2074 | - <para style="terp_tblheader_Details_Centre">Quantity</para> |
2075 | - </td> |
2076 | - <td> |
2077 | - <para style="terp_tblheader_Details_Centre">Source Location</para> |
2078 | - </td> |
2079 | - <td> |
2080 | - <para style="terp_tblheader_Details_Centre">Destination Location</para> |
2081 | + <para style="terp_tblheader_Details"><b>Product </b></para> |
2082 | + </td> |
2083 | + <td> |
2084 | + <para style="terp_tblheader_Details_Centre"><b>Quantity</b></para> |
2085 | + </td> |
2086 | + <td> |
2087 | + <para style="terp_tblheader_Details_Centre"><b>Source Location</b></para> |
2088 | + </td> |
2089 | + <td> |
2090 | + <para style="terp_tblheader_Details_Centre"><b>Destination Location</b></para> |
2091 | </td> |
2092 | </tr> |
2093 | </blockTable> |
2094 | @@ -196,20 +177,20 @@ |
2095 | <para style="terp_default_8"> |
2096 | <font color="white"> </font> |
2097 | </para> |
2098 | - <para style="terp_header">Production Order N° : [[ o.name ]]</para> |
2099 | + <para style="terp_header"><b>Production Order N° : [[ o.name ]]</b></para> |
2100 | <para style="terp_default_8"> |
2101 | <font color="white"> </font> |
2102 | </para> |
2103 | <blockTable colWidths="193.0,206.0,129.0" style="Table3"> |
2104 | <tr> |
2105 | <td> |
2106 | - <para style="terp_tblheader_General_Centre">Source Document</para> |
2107 | - </td> |
2108 | - <td> |
2109 | - <para style="terp_tblheader_General_Centre">Product </para> |
2110 | - </td> |
2111 | - <td> |
2112 | - <para style="terp_tblheader_General_Centre">Quantity</para> |
2113 | + <para style="terp_tblheader_General_Centre"><b>Source Document</b></para> |
2114 | + </td> |
2115 | + <td> |
2116 | + <para style="terp_tblheader_General_Centre"><b>Product </b></para> |
2117 | + </td> |
2118 | + <td> |
2119 | + <para style="terp_tblheader_General_Centre"><b>Quantity</b></para> |
2120 | </td> |
2121 | </tr> |
2122 | </blockTable> |
2123 | @@ -232,16 +213,16 @@ |
2124 | <blockTable colWidths="193.0,92.0,114.0,129.0" repeatRows="1" style="Table1"> |
2125 | <tr> |
2126 | <td> |
2127 | - <para style="terp_tblheader_General_Centre">Scheduled Date</para> |
2128 | - </td> |
2129 | - <td> |
2130 | - <para style="terp_tblheader_General_Centre">Printing date</para> |
2131 | - </td> |
2132 | - <td> |
2133 | - <para style="terp_tblheader_General_Centre">Partner Ref</para> |
2134 | - </td> |
2135 | - <td> |
2136 | - <para style="terp_tblheader_General_Centre">SO Number</para> |
2137 | + <para style="terp_tblheader_General_Centre"><b>Scheduled Date</b></para> |
2138 | + </td> |
2139 | + <td> |
2140 | + <para style="terp_tblheader_General_Centre"><b>Printing date</b></para> |
2141 | + </td> |
2142 | + <td> |
2143 | + <para style="terp_tblheader_General_Centre"><b>Partner Ref</b></para> |
2144 | + </td> |
2145 | + <td> |
2146 | + <para style="terp_tblheader_General_Centre"><b>SO Number</b></para> |
2147 | </td> |
2148 | </tr> |
2149 | </blockTable> |
2150 | @@ -266,26 +247,26 @@ |
2151 | <para style="terp_default_8"> |
2152 | <font color="white"> </font> |
2153 | </para> |
2154 | - <para style="terp_default_Bold_8">Work Orders [[ o.workcenter_lines ==[] and removeParentNode('para')]]</para> |
2155 | + <para style="terp_default_Bold_8"><b>Work Orders [[ o.workcenter_lines ==[] and removeParentNode('para')]]</b></para> |
2156 | <para style="terp_default_8"> |
2157 | <font color="white"> </font> |
2158 | </para> |
2159 | <blockTable colWidths="74.0,212.0,112.0,66.0,64.0" style="Table6"> |
2160 | <tr> |
2161 | <td> |
2162 | - <para style="terp_tblheader_General_Centre">Sequence</para> |
2163 | - </td> |
2164 | - <td> |
2165 | - <para style="terp_tblheader_Details_Centre">Name [[ o.workcenter_lines ==[] and removeParentNode('blockTable')]]</para> |
2166 | - </td> |
2167 | - <td> |
2168 | - <para style="terp_tblheader_General_Centre">WorkCenter</para> |
2169 | - </td> |
2170 | - <td> |
2171 | - <para style="terp_tblheader_General_Centre">No. Of Cycles</para> |
2172 | - </td> |
2173 | - <td> |
2174 | - <para style="terp_tblheader_General_Centre">No. Of Hours</para> |
2175 | + <para style="terp_tblheader_General_Centre"><b>Sequence</b></para> |
2176 | + </td> |
2177 | + <td> |
2178 | + <para style="terp_tblheader_Details_Centre"><b>Name [[ o.workcenter_lines ==[] and removeParentNode('blockTable')]]</b></para> |
2179 | + </td> |
2180 | + <td> |
2181 | + <para style="terp_tblheader_General_Centre"><b>WorkCenter</b></para> |
2182 | + </td> |
2183 | + <td> |
2184 | + <para style="terp_tblheader_General_Centre"><b>No. Of Cycles</b></para> |
2185 | + </td> |
2186 | + <td> |
2187 | + <para style="terp_tblheader_General_Centre"><b>No. Of Hours</b></para> |
2188 | </td> |
2189 | </tr> |
2190 | </blockTable> |
2191 | @@ -317,28 +298,28 @@ |
2192 | <para style="terp_default_8"> |
2193 | <font color="white"> </font> |
2194 | </para> |
2195 | - <para style="terp_default_Bold_9">Bill Of Material </para> |
2196 | + <para style="terp_default_Bold_9"><b>Bill Of Material </b></para> |
2197 | <para style="terp_default_8"> |
2198 | <font color="white"> </font> |
2199 | </para> |
2200 | <blockTable colWidths="256.0,61.0,107.0,104.0" style="Table8"> |
2201 | <tr> |
2202 | <td> |
2203 | - <para style="terp_tblheader_Details">Product </para> |
2204 | - </td> |
2205 | - <td> |
2206 | - <para style="terp_tblheader_Details_Centre">Quantity</para> |
2207 | - </td> |
2208 | - <td> |
2209 | - <para style="terp_tblheader_Details_Centre">Source Location</para> |
2210 | - </td> |
2211 | - <td> |
2212 | - <para style="terp_tblheader_Details_Centre">Destination Location</para> |
2213 | + <para style="terp_tblheader_Details"><b>Product </b></para> |
2214 | + </td> |
2215 | + <td> |
2216 | + <para style="terp_tblheader_Details_Centre"><b>Quantity</b></para> |
2217 | + </td> |
2218 | + <td> |
2219 | + <para style="terp_tblheader_Details_Centre"><b>Source Location</b></para> |
2220 | + </td> |
2221 | + <td> |
2222 | + <para style="terp_tblheader_Details_Centre"><b>Destination Location</b></para> |
2223 | </td> |
2224 | </tr> |
2225 | </blockTable> |
2226 | <section> |
2227 | - <para style="terp_default_Bold_9">Products to Consume [[ o.move_lines ==[] and removeParentNode('section')]]</para> |
2228 | + <para style="terp_default_Bold_9"><b>Products to Consume [[ o.move_lines ==[] and removeParentNode('section')]]</b></para> |
2229 | <section> |
2230 | <para style="terp_default_2">[[ repeatIn(o.move_lines,'line') ]]</para> |
2231 | <blockTable colWidths="250.0,65.0,108.0,104.0" style="Table9"> |
2232 | @@ -363,7 +344,7 @@ |
2233 | <para style="terp_default_Bold_9"> |
2234 | <font color="white"> </font> |
2235 | </para> |
2236 | - <para style="terp_default_Bold_9">Consumed Products [[ o.move_lines2 ==[] and removeParentNode('section')]]</para> |
2237 | + <para style="terp_default_Bold_9"><b>Consumed Products [[ o.move_lines2 ==[] and removeParentNode('section')]]</b></para> |
2238 | <section> |
2239 | <para style="terp_default_2">[[ repeatIn(o.move_lines2,'line2') ]]</para> |
2240 | <blockTable colWidths="251.0,66.0,106.0,104.0" style="Table10"> |
2241 | |
2242 | === modified file 'portal/security/portal_security.xml' |
2243 | --- portal/security/portal_security.xml 2012-12-17 15:04:58 +0000 |
2244 | +++ portal/security/portal_security.xml 2013-06-06 12:58:46 +0000 |
2245 | @@ -5,7 +5,7 @@ |
2246 | <record id="portal_read_own_res_partner" model="ir.rule"> |
2247 | <field name="name">res_partner: read access on my partner</field> |
2248 | <field name="model_id" ref="base.model_res_partner"/> |
2249 | - <field name="domain_force">[('user_ids', 'in', user.id)]</field> |
2250 | + <field name="domain_force">[('id', 'child_of', user.commercial_partner_id.id)]</field> |
2251 | <field name="groups" eval="[(4, ref('group_portal')), (4, ref('group_anonymous'))]"/> |
2252 | <field name="perm_create" eval="False"/> |
2253 | <field name="perm_unlink" eval="False"/> |
2254 | |
2255 | === modified file 'portal/wizard/portal_wizard.py' |
2256 | --- portal/wizard/portal_wizard.py 2013-04-10 13:02:44 +0000 |
2257 | +++ portal/wizard/portal_wizard.py 2013-06-06 12:58:46 +0000 |
2258 | @@ -20,7 +20,6 @@ |
2259 | ############################################################################## |
2260 | |
2261 | import logging |
2262 | -import random |
2263 | |
2264 | from openerp.osv import fields, osv |
2265 | from openerp.tools.translate import _ |
2266 | @@ -34,14 +33,15 @@ |
2267 | WELCOME_EMAIL_SUBJECT = _("Your OpenERP account at %(company)s") |
2268 | WELCOME_EMAIL_BODY = _("""Dear %(name)s, |
2269 | |
2270 | -You have been given access to %(portal)s. |
2271 | +You have been given access to %(company)s's %(portal)s. |
2272 | |
2273 | Your login account data is: |
2274 | -Database: %(db)s |
2275 | -Username: %(login)s |
2276 | + Username: %(login)s |
2277 | + Portal: %(portal_url)s |
2278 | + Database: %(db)s |
2279 | |
2280 | -In order to complete the signin process, click on the following url: |
2281 | -%(url)s |
2282 | +You can set or change your password via the following url: |
2283 | + %(signup_url)s |
2284 | |
2285 | %(welcome_message)s |
2286 | |
2287 | @@ -116,24 +116,57 @@ |
2288 | _description = 'Portal User Config' |
2289 | |
2290 | _columns = { |
2291 | - 'wizard_id': fields.many2one('portal.wizard', string='Wizard', required=True), |
2292 | + 'wizard_id': fields.many2one('portal.wizard', string='Wizard', required=True, ondelete='cascade'), |
2293 | 'partner_id': fields.many2one('res.partner', string='Contact', required=True, readonly=True), |
2294 | 'email': fields.char(size=240, string='Email'), |
2295 | 'in_portal': fields.boolean('In Portal'), |
2296 | } |
2297 | |
2298 | - def create(self, cr, uid, values, context=None): |
2299 | - """ overridden to update the partner's email (if necessary) """ |
2300 | - id = super(wizard_user, self).create(cr, uid, values, context) |
2301 | - wuser = self.browse(cr, uid, id, context) |
2302 | - if wuser.partner_id.email != wuser.email: |
2303 | - wuser.partner_id.write({'email': wuser.email}) |
2304 | - return id |
2305 | + def get_error_messages(self, cr, uid, ids, context=None): |
2306 | + res_users = self.pool.get('res.users') |
2307 | + emails = [] |
2308 | + error_empty = [] |
2309 | + error_emails = [] |
2310 | + error_user = [] |
2311 | + ctx = dict(context or {}, active_test=False) |
2312 | + for wizard_user in self.browse(cr, SUPERUSER_ID, ids, context): |
2313 | + if wizard_user.in_portal and not self._retrieve_user(cr, SUPERUSER_ID, wizard_user, context): |
2314 | + email = extract_email(wizard_user.email) |
2315 | + if not email: |
2316 | + error_empty.append(wizard_user.partner_id) |
2317 | + elif email in emails and email not in error_emails: |
2318 | + error_emails.append(wizard_user.partner_id) |
2319 | + user = res_users.search(cr, SUPERUSER_ID, [('login', '=', email)], context=ctx) |
2320 | + if user: |
2321 | + error_user.append(wizard_user.partner_id) |
2322 | + emails.append(email) |
2323 | + |
2324 | + error_msg = [] |
2325 | + if error_empty: |
2326 | + error_msg.append("%s\n- %s" % (_("Some contacts don't have a valid email: "), |
2327 | + '\n- '.join(['%s' % (p.display_name,) for p in error_empty]))) |
2328 | + if error_emails: |
2329 | + error_msg.append("%s\n- %s" % (_("Several contacts have the same email: "), |
2330 | + '\n- '.join([p.email for p in error_emails]))) |
2331 | + if error_user: |
2332 | + error_msg.append("%s\n- %s" % (_("Some contacts have the same email as an existing portal user:"), |
2333 | + '\n- '.join(['%s <%s>' % (p.display_name, p.email) for p in error_user]))) |
2334 | + if error_msg: |
2335 | + error_msg.append(_("To resolve this error, you can: \n" |
2336 | + "- Correct the emails of the relevant contacts\n" |
2337 | + "- Grant access only to contacts with unique emails")) |
2338 | + return error_msg |
2339 | |
2340 | def action_apply(self, cr, uid, ids, context=None): |
2341 | + error_msg = self.get_error_messages(cr, uid, ids, context=context) |
2342 | + if error_msg: |
2343 | + raise osv.except_osv(_('Contacts Error'), "\n\n".join(error_msg)) |
2344 | + |
2345 | for wizard_user in self.browse(cr, SUPERUSER_ID, ids, context): |
2346 | portal = wizard_user.wizard_id.portal_id |
2347 | user = self._retrieve_user(cr, SUPERUSER_ID, wizard_user, context) |
2348 | + if wizard_user.partner_id.email != wizard_user.email: |
2349 | + wizard_user.partner_id.write({'email': wizard_user.email}) |
2350 | if wizard_user.in_portal: |
2351 | # create a user if necessary, and make sure it is in the portal group |
2352 | if not user: |
2353 | @@ -142,8 +175,8 @@ |
2354 | user.write({'active': True, 'groups_id': [(4, portal.id)]}) |
2355 | # prepare for the signup process |
2356 | user.partner_id.signup_prepare() |
2357 | - wizard_user = self.browse(cr, SUPERUSER_ID, wizard_user.id, context) |
2358 | - self._send_email(cr, uid, wizard_user, context) |
2359 | + wizard_user.refresh() |
2360 | + self._send_email(cr, uid, wizard_user, context) |
2361 | else: |
2362 | # remove the user (if it exists) from the portal group |
2363 | if user and (portal in user.groups_id): |
2364 | @@ -158,13 +191,11 @@ |
2365 | @param wizard_user: browse record of model portal.wizard.user |
2366 | @return: browse record of model res.users |
2367 | """ |
2368 | - if wizard_user.partner_id.user_ids: |
2369 | - return wizard_user.partner_id.user_ids[0] |
2370 | - # the user may be inactive, search for it |
2371 | + context = dict(context or {}, active_test=False) |
2372 | res_users = self.pool.get('res.users') |
2373 | - domain = [('partner_id', '=', wizard_user.partner_id.id), ('active', '=', False)] |
2374 | - user_ids = res_users.search(cr, uid, domain) |
2375 | - return user_ids and res_users.browse(cr, uid, user_ids[0], context) or False |
2376 | + domain = [('partner_id', '=', wizard_user.partner_id.id)] |
2377 | + user_ids = res_users.search(cr, uid, domain, context=context) |
2378 | + return user_ids and res_users.browse(cr, uid, user_ids[0], context=context) or False |
2379 | |
2380 | def _create_user(self, cr, uid, wizard_user, context=None): |
2381 | """ create a new user for wizard_user.partner_id |
2382 | @@ -174,6 +205,7 @@ |
2383 | res_users = self.pool.get('res.users') |
2384 | create_context = dict(context or {}, noshortcut=True, no_reset_password=True) # to prevent shortcut creation |
2385 | values = { |
2386 | + 'email': extract_email(wizard_user.email), |
2387 | 'login': extract_email(wizard_user.email), |
2388 | 'partner_id': wizard_user.partner_id.id, |
2389 | 'groups_id': [(6, 0, [])], |
2390 | @@ -187,6 +219,7 @@ |
2391 | @param wizard_user: browse record of model portal.wizard.user |
2392 | @return: the id of the created mail.mail record |
2393 | """ |
2394 | + res_partner = self.pool['res.partner'] |
2395 | this_context = context |
2396 | this_user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context) |
2397 | if not this_user.email: |
2398 | @@ -196,6 +229,12 @@ |
2399 | # determine subject and body in the portal user's language |
2400 | user = self._retrieve_user(cr, SUPERUSER_ID, wizard_user, context) |
2401 | context = dict(this_context or {}, lang=user.lang) |
2402 | + ctx_portal_url = dict(context, signup_force_type_in_url='') |
2403 | + portal_url = res_partner._get_signup_url_for_action(cr, uid, |
2404 | + [user.partner_id.id], |
2405 | + context=ctx_portal_url)[user.partner_id.id] |
2406 | + res_partner.signup_prepare(cr, uid, [user.partner_id.id], context=context) |
2407 | + |
2408 | data = { |
2409 | 'company': this_user.company_id.name, |
2410 | 'portal': wizard_user.wizard_id.portal_id.name, |
2411 | @@ -203,7 +242,8 @@ |
2412 | 'db': cr.dbname, |
2413 | 'name': user.name, |
2414 | 'login': user.login, |
2415 | - 'url': user.signup_url, |
2416 | + 'signup_url': user.signup_url, |
2417 | + 'portal_url': portal_url, |
2418 | } |
2419 | mail_mail = self.pool.get('mail.mail') |
2420 | mail_values = { |
2421 | |
2422 | === modified file 'portal_hr_employees/hr_employee_view.xml' |
2423 | --- portal_hr_employees/hr_employee_view.xml 2013-05-16 16:19:49 +0000 |
2424 | +++ portal_hr_employees/hr_employee_view.xml 2013-06-06 12:58:46 +0000 |
2425 | @@ -33,8 +33,9 @@ |
2426 | </record> |
2427 | |
2428 | <record model="ir.ui.view" id="portal_hr_kanban_view_employees"> |
2429 | - <field name="name">HR - Employess Kanban</field> |
2430 | + <field name="name">HR - Employees Kanban</field> |
2431 | <field name="model">hr.employee</field> |
2432 | + <field name="inherit_id" eval="False"/> |
2433 | <field name="arch" type="xml"> |
2434 | <kanban> |
2435 | <field name="last_login"/> |
2436 | |
2437 | === modified file 'procurement/procurement_view.xml' |
2438 | --- procurement/procurement_view.xml 2013-03-14 11:27:40 +0000 |
2439 | +++ procurement/procurement_view.xml 2013-06-06 12:58:46 +0000 |
2440 | @@ -18,6 +18,7 @@ |
2441 | <field name="product_uom" string="Unit of Measure"/> |
2442 | <field name="procure_method"/> |
2443 | <field name="state"/> |
2444 | + <field name="name" invisible="1"/> |
2445 | <field name="message"/> |
2446 | </tree> |
2447 | </field> |
2448 | |
2449 | === modified file 'project/project.py' |
2450 | --- project/project.py 2013-05-21 13:38:07 +0000 |
2451 | +++ project/project.py 2013-06-06 12:58:46 +0000 |
2452 | @@ -85,7 +85,7 @@ |
2453 | if context and context.get('user_preference'): |
2454 | cr.execute("""SELECT project.id FROM project_project project |
2455 | LEFT JOIN account_analytic_account account ON account.id = project.analytic_account_id |
2456 | - LEFT JOIN project_user_rel rel ON rel.project_id = project.analytic_account_id |
2457 | + LEFT JOIN project_user_rel rel ON rel.project_id = project.id |
2458 | WHERE (account.user_id = %s or rel.uid = %s)"""%(user, user)) |
2459 | return [(r[0]) for r in cr.fetchall()] |
2460 | return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, |
2461 | @@ -581,12 +581,12 @@ |
2462 | |
2463 | _track = { |
2464 | 'state': { |
2465 | - 'project.mt_task_new': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'new', |
2466 | + 'project.mt_task_new': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['new', 'draft'], |
2467 | 'project.mt_task_started': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'open', |
2468 | 'project.mt_task_closed': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'done', |
2469 | }, |
2470 | 'stage_id': { |
2471 | - 'project.mt_task_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'done', 'open'], |
2472 | + 'project.mt_task_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'draft', 'done', 'open'], |
2473 | }, |
2474 | 'kanban_state': { # kanban state: tracked, but only block subtype |
2475 | 'project.mt_task_blocked': lambda self, cr, uid, obj, ctx=None: obj['kanban_state'] == 'blocked', |
2476 | @@ -1120,10 +1120,12 @@ |
2477 | context = {} |
2478 | if not vals.get('stage_id'): |
2479 | ctx = context.copy() |
2480 | - if vals.get('project_id'): |
2481 | + if vals.get('project_id'): |
2482 | ctx['default_project_id'] = vals['project_id'] |
2483 | vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx) |
2484 | - task_id = super(task, self).create(cr, uid, vals, context=context) |
2485 | + # context: no_log, because subtype already handle this |
2486 | + create_context = dict(context, mail_create_nolog=True) |
2487 | + task_id = super(task, self).create(cr, uid, vals, context=create_context) |
2488 | self._store_history(cr, uid, [task_id], context=context) |
2489 | return task_id |
2490 | |
2491 | @@ -1197,6 +1199,17 @@ |
2492 | return [task.project_id.message_get_reply_to()[0] if task.project_id else False |
2493 | for task in self.browse(cr, uid, ids, context=context)] |
2494 | |
2495 | + def check_mail_message_access(self, cr, uid, mids, operation, model_obj=None, context=None): |
2496 | + """ mail.message document permission rule: can post a new message if can read |
2497 | + because of portal document. """ |
2498 | + if not model_obj: |
2499 | + model_obj = self |
2500 | + if operation == 'create': |
2501 | + model_obj.check_access_rights(cr, uid, 'read') |
2502 | + model_obj.check_access_rule(cr, uid, mids, 'read', context=context) |
2503 | + else: |
2504 | + return super(task, self).check_mail_message_access(cr, uid, mids, operation, model_obj=model_obj, context=context) |
2505 | + |
2506 | def message_new(self, cr, uid, msg, custom_values=None, context=None): |
2507 | """ Override to updates the document according to the email. """ |
2508 | if custom_values is None: custom_values = {} |
2509 | @@ -1205,7 +1218,7 @@ |
2510 | 'planned_hours': 0.0, |
2511 | } |
2512 | defaults.update(custom_values) |
2513 | - return super(task,self).message_new(cr, uid, msg, custom_values=defaults, context=context) |
2514 | + return super(task, self).message_new(cr, uid, msg, custom_values=defaults, context=context) |
2515 | |
2516 | def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): |
2517 | """ Override to update the task according to the email. """ |
2518 | |
2519 | === modified file 'project/report/project_cumulative.xml' |
2520 | --- project/report/project_cumulative.xml 2012-11-29 22:26:45 +0000 |
2521 | +++ project/report/project_cumulative.xml 2013-06-06 12:58:46 +0000 |
2522 | @@ -6,7 +6,7 @@ |
2523 | <field name="name">project.task.history.cumulative.tree</field> |
2524 | <field name="model">project.task.history.cumulative</field> |
2525 | <field name="arch" type="xml"> |
2526 | - <tree string="Tasks's Cumulative Flow"> |
2527 | + <tree string="Tasks's Cumulative Flow" create="false"> |
2528 | <field name="date"/> |
2529 | <field name="project_id"/> |
2530 | <field name="task_id"/> |
2531 | |
2532 | === modified file 'project_issue/project_issue.py' |
2533 | --- project_issue/project_issue.py 2013-05-21 13:38:07 +0000 |
2534 | +++ project_issue/project_issue.py 2013-06-06 12:58:46 +0000 |
2535 | @@ -19,11 +19,12 @@ |
2536 | # |
2537 | ############################################################################## |
2538 | |
2539 | +from openerp import SUPERUSER_ID |
2540 | from openerp.addons.base_status.base_stage import base_stage |
2541 | from openerp.addons.project.project import _TASK_STATE |
2542 | from openerp.addons.crm import crm |
2543 | from datetime import datetime |
2544 | -from openerp.osv import fields,osv |
2545 | +from openerp.osv import fields, osv, orm |
2546 | from openerp.tools.translate import _ |
2547 | import binascii |
2548 | import time |
2549 | @@ -49,12 +50,12 @@ |
2550 | |
2551 | _track = { |
2552 | 'state': { |
2553 | - 'project_issue.mt_issue_new': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'new', |
2554 | + 'project_issue.mt_issue_new': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['new', 'draft'], |
2555 | 'project_issue.mt_issue_closed': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'done', |
2556 | 'project_issue.mt_issue_started': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'open', |
2557 | }, |
2558 | 'stage_id': { |
2559 | - 'project_issue.mt_issue_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'done', 'open'], |
2560 | + 'project_issue.mt_issue_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'draft', 'done', 'open'], |
2561 | }, |
2562 | 'kanban_state': { |
2563 | 'project_issue.mt_issue_blocked': lambda self, cr, uid, obj, ctx=None: obj['kanban_state'] == 'blocked', |
2564 | @@ -69,7 +70,9 @@ |
2565 | if vals.get('project_id'): |
2566 | ctx['default_project_id'] = vals['project_id'] |
2567 | vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx) |
2568 | - return super(project_issue, self).create(cr, uid, vals, context=context) |
2569 | + # context: no_log, because subtype already handle this |
2570 | + create_context = dict(context, mail_create_nolog=True) |
2571 | + return super(project_issue, self).create(cr, uid, vals, context=create_context) |
2572 | |
2573 | def _get_default_project_id(self, cr, uid, context=None): |
2574 | """ Gives default project by checking if present in the context """ |
2575 | @@ -492,13 +495,27 @@ |
2576 | return [issue.project_id.message_get_reply_to()[0] if issue.project_id else False |
2577 | for issue in self.browse(cr, uid, ids, context=context)] |
2578 | |
2579 | + def check_mail_message_access(self, cr, uid, mids, operation, model_obj=None, context=None): |
2580 | + """ mail.message document permission rule: can post a new message if can read |
2581 | + because of portal document. """ |
2582 | + if not model_obj: |
2583 | + model_obj = self |
2584 | + if operation == 'create': |
2585 | + model_obj.check_access_rights(cr, uid, 'read') |
2586 | + model_obj.check_access_rule(cr, uid, mids, 'read', context=context) |
2587 | + else: |
2588 | + return super(project_issue, self).check_mail_message_access(cr, uid, mids, operation, model_obj=model_obj, context=context) |
2589 | + |
2590 | def message_get_suggested_recipients(self, cr, uid, ids, context=None): |
2591 | recipients = super(project_issue, self).message_get_suggested_recipients(cr, uid, ids, context=context) |
2592 | - for issue in self.browse(cr, uid, ids, context=context): |
2593 | - if issue.email_from: |
2594 | - self._message_add_suggested_recipient(cr, uid, recipients, issue, email=issue.email_from, reason=_('Customer Email')) |
2595 | - elif issue.partner_id: |
2596 | - self._message_add_suggested_recipient(cr, uid, recipients, issue, partner=issue.partner_id, reason=_('Customer')) |
2597 | + try: |
2598 | + for issue in self.browse(cr, uid, ids, context=context): |
2599 | + if issue.partner_id: |
2600 | + self._message_add_suggested_recipient(cr, uid, recipients, issue, partner=issue.partner_id, reason=_('Customer')) |
2601 | + elif issue.email_from: |
2602 | + self._message_add_suggested_recipient(cr, uid, recipients, issue, email=issue.email_from, reason=_('Customer Email')) |
2603 | + except (osv.except_osv, orm.except_orm): # no read access rights -> just ignore suggested recipients because this imply modifying followers |
2604 | + pass |
2605 | return recipients |
2606 | |
2607 | def message_new(self, cr, uid, msg, custom_values=None, context=None): |
2608 | @@ -560,13 +577,10 @@ |
2609 | """ |
2610 | if context is None: |
2611 | context = {} |
2612 | - |
2613 | res = super(project_issue, self).message_post(cr, uid, thread_id, body=body, subject=subject, type=type, subtype=subtype, parent_id=parent_id, attachments=attachments, context=context, content_subtype=content_subtype, **kwargs) |
2614 | - |
2615 | if thread_id: |
2616 | - self.write(cr, uid, thread_id, {'date_action_last': time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)}, context=context) |
2617 | - |
2618 | - return res |
2619 | + self.write(cr, SUPERUSER_ID, thread_id, {'date_action_last': time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)}, context=context) |
2620 | + return res |
2621 | |
2622 | |
2623 | class project(osv.Model): |
2624 | |
2625 | === modified file 'project_issue/project_issue_view.xml' |
2626 | --- project_issue/project_issue_view.xml 2013-04-22 15:34:49 +0000 |
2627 | +++ project_issue/project_issue_view.xml 2013-06-06 12:58:46 +0000 |
2628 | @@ -68,15 +68,16 @@ |
2629 | <label for="categ_ids" class="oe_edit_only"/> |
2630 | <field name="categ_ids" widget="many2many_tags"/> |
2631 | <group> |
2632 | - <group groups="base.group_user"> |
2633 | + <group> |
2634 | <field name="user_id" |
2635 | context="{'default_groups_ref': ['base.group_user', 'project.group_project_user']}"/> |
2636 | <field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)"/> |
2637 | <field name="email_from"/> |
2638 | - <label for="project_id" groups="base.group_user"/> |
2639 | - <div groups="base.group_user"> |
2640 | + <label for="project_id"/> |
2641 | + <div> |
2642 | <field name="project_id" on_change="on_change_project(project_id)" class="oe_inline" context="{'default_use_issues':1}"/> |
2643 | - <button name="case_escalate" string="⇒ Escalate" type="object" states="draft,open,pending" class="oe_link"/> |
2644 | + <button name="case_escalate" string="⇒ Escalate" type="object" states="draft,open,pending" class="oe_link" |
2645 | + groups="base.group_user"/> |
2646 | </div> |
2647 | </group> |
2648 | <group> |
2649 | @@ -150,8 +151,8 @@ |
2650 | <field name="id"/> |
2651 | <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/> |
2652 | <separator/> |
2653 | - <filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/> |
2654 | - <filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/> |
2655 | + <filter name="filter_new" string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/> |
2656 | + <filter name="filter_open" string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/> |
2657 | <separator/> |
2658 | <filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-"/> |
2659 | <separator/> |
2660 | @@ -160,13 +161,13 @@ |
2661 | <field name="categ_ids"/> |
2662 | <field name="partner_id" filter_domain="[('partner_id', 'child_of', self)]"/> |
2663 | <group expand="0" string="Group By..." > |
2664 | - <filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/> |
2665 | - <filter string="Contact" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/> |
2666 | - <filter string="Project" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/> |
2667 | - <filter string="Version" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'version_id'}"/> |
2668 | - <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/> |
2669 | - <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/> |
2670 | - <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" help="Creation Month"/> |
2671 | + <filter string="Responsible" name="group_user_id" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/> |
2672 | + <filter string="Contact" name="group_partner_id" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/> |
2673 | + <filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/> |
2674 | + <filter string="Version" name="group_version" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'version_id'}"/> |
2675 | + <filter string="Priority" name="group_priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/> |
2676 | + <filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/> |
2677 | + <filter string="Month" name="group_create_date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" help="Creation Month"/> |
2678 | </group> |
2679 | </search> |
2680 | </field> |
2681 | |
2682 | === modified file 'project_issue_sheet/project_issue_sheet_view.xml' |
2683 | --- project_issue_sheet/project_issue_sheet_view.xml 2012-12-05 05:37:32 +0000 |
2684 | +++ project_issue_sheet/project_issue_sheet_view.xml 2013-06-06 12:58:46 +0000 |
2685 | @@ -19,7 +19,8 @@ |
2686 | </field> |
2687 | <xpath expr="//notebook/page[@string='Extra Info']" position="before"> |
2688 | <page string="Worklogs"> |
2689 | - <field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : user_id, 'default_account_id' : analytic_account_id}"> |
2690 | + <field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : user_id, 'default_account_id' : analytic_account_id}" |
2691 | + groups="base.group_user"> |
2692 | <tree editable="top" string="Timesheets"> |
2693 | <field name="name"/> |
2694 | <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/> |
2695 | |
2696 | === modified file 'project_long_term/project_long_term_view.xml' |
2697 | --- project_long_term/project_long_term_view.xml 2013-02-25 13:38:04 +0000 |
2698 | +++ project_long_term/project_long_term_view.xml 2013-06-06 12:58:46 +0000 |
2699 | @@ -120,7 +120,8 @@ |
2700 | </field> |
2701 | <xpath expr="//div[contains(@class, 'oe_kanban_project_list')]" position="inside"> |
2702 | <a t-if="record.use_phases.raw_value" |
2703 | - name="%(act_project_phases)d" type="action"> |
2704 | + name="%(act_project_phases)d" type="action" |
2705 | + groups="base.group_user"> |
2706 | <span t-if="record.phase_count.raw_value gt 1"><field name="phase_count"/> Phases</span> |
2707 | <span t-if="record.phase_count.raw_value lt 2"><field name="phase_count"/> Phase</span> |
2708 | </a> |
2709 | @@ -322,7 +323,7 @@ |
2710 | <field name="inherit_id" ref="project.view_task_search_form"/> |
2711 | <field name="arch" type="xml"> |
2712 | <field name="user_id" position="before"> |
2713 | - <field name="phase_id"/> |
2714 | + <field name="phase_id" domain="[]"/> |
2715 | </field> |
2716 | </field> |
2717 | </record> |
2718 | |
2719 | === modified file 'purchase/report/order.rml' |
2720 | --- purchase/report/order.rml 2012-12-18 02:11:23 +0000 |
2721 | +++ purchase/report/order.rml 2013-06-06 12:58:46 +0000 |
2722 | @@ -94,38 +94,16 @@ |
2723 | <initialize> |
2724 | <paraStyle name="all" alignment="justify"/> |
2725 | </initialize> |
2726 | - <paraStyle name="Standard" fontName="Helvetica"/> |
2727 | - <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2728 | - <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/> |
2729 | - <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2730 | - <paraStyle name="Table Contents" fontName="Helvetica"/> |
2731 | - <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/> |
2732 | - <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/> |
2733 | - <paraStyle name="Index" fontName="Helvetica"/> |
2734 | - <paraStyle name="Footer" fontName="Helvetica"/> |
2735 | - <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
2736 | - <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2737 | - <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
2738 | - <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2739 | - <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2740 | - <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2741 | - <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2742 | - <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2743 | - <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2744 | - <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2745 | - <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2746 | - <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2747 | - <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2748 | - <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2749 | - <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/> |
2750 | - <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2751 | - <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2752 | - <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2753 | - <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2754 | - <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2755 | - <paraStyle name="terp_default_Bold_9_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2756 | - <paraStyle name="terp_default_8_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2757 | - <paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2758 | + <paraStyle name="terp_header" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2759 | + <paraStyle name="terp_tblheader_General" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2760 | + <paraStyle name="terp_default_8" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2761 | + <paraStyle name="terp_tblheader_General_Centre" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2762 | + <paraStyle name="terp_tblheader_General_Right" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2763 | + <paraStyle name="terp_default_Centre_8" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2764 | + <paraStyle name="terp_default_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2765 | + <paraStyle name="terp_default_Bold_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2766 | + <paraStyle name="terp_default_Right_9" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2767 | + <paraStyle name="terp_default_Bold_9_Right" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2768 | <images/> |
2769 | </stylesheet> |
2770 | <story> |
2771 | @@ -136,22 +114,22 @@ |
2772 | <blockTable colWidths="180.0,70.0,60.0,80.0,60.0,85.0" repeatRows="1" style="Table_Header_Pur_ord_Line"> |
2773 | <tr> |
2774 | <td> |
2775 | - <para style="terp_tblheader_General">Description</para> |
2776 | - </td> |
2777 | - <td> |
2778 | - <para style="terp_tblheader_General">Taxes</para> |
2779 | - </td> |
2780 | - <td> |
2781 | - <para style="terp_tblheader_General">Date Req.</para> |
2782 | - </td> |
2783 | - <td> |
2784 | - <para style="terp_tblheader_General_Right">Qty</para> |
2785 | - </td> |
2786 | - <td> |
2787 | - <para style="terp_tblheader_General_Right">Unit Price</para> |
2788 | - </td> |
2789 | - <td> |
2790 | - <para style="terp_tblheader_General_Right">Net Price</para> |
2791 | + <para style="terp_tblheader_General"><b>Description</b></para> |
2792 | + </td> |
2793 | + <td> |
2794 | + <para style="terp_tblheader_General"><b>Taxes</b></para> |
2795 | + </td> |
2796 | + <td> |
2797 | + <para style="terp_tblheader_General"><b>Date Req.</b></para> |
2798 | + </td> |
2799 | + <td> |
2800 | + <para style="terp_tblheader_General_Right"><b>Qty</b></para> |
2801 | + </td> |
2802 | + <td> |
2803 | + <para style="terp_tblheader_General_Right"><b>Unit Price</b></para> |
2804 | + </td> |
2805 | + <td> |
2806 | + <para style="terp_tblheader_General_Right"><b>Net Price</b></para> |
2807 | </td> |
2808 | </tr> |
2809 | </blockTable> |
2810 | @@ -165,7 +143,7 @@ |
2811 | <blockTable colWidths="253.0" style="Tableau2"> |
2812 | <tr> |
2813 | <td> |
2814 | - <para style="terp_default_Bold_9">Shipping address :</para> |
2815 | + <para style="terp_default_Bold_9"><b>Shipping address :</b></para> |
2816 | <para style="terp_default_9">[[ (o.dest_address_id and o.dest_address_id.name) or (o.warehouse_id and o.warehouse_id.name) or '']]</para> |
2817 | <para style="terp_default_9">[[ (o.dest_address_id and display_address(o.dest_address_id)) or (o.warehouse_id and display_address(o.warehouse_id.partner_id)) or '']]</para> |
2818 | </td> |
2819 | @@ -195,24 +173,24 @@ |
2820 | <para style="terp_default_9"> |
2821 | <font color="white"> </font> |
2822 | </para> |
2823 | - <para style="terp_header">[[ o.state=='draft' and removeParentNode('para') ]] Purchase Order Confirmation N° [[ o.name ]]</para> |
2824 | - <para style="terp_header">[[ o.state<>'draft' and removeParentNode('para') ]] Request for Quotation N° [[ o.name ]]</para> |
2825 | + <para style="terp_header"><b>[[ o.state=='draft' and removeParentNode('para') ]] Purchase Order Confirmation N° [[ o.name ]]</b></para> |
2826 | + <para style="terp_header"><b>[[ o.state<>'draft' and removeParentNode('para') ]] Request for Quotation N° [[ o.name ]]</b></para> |
2827 | <para style="terp_default_8"> |
2828 | <font color="white"> </font> |
2829 | </para> |
2830 | <blockTable colWidths="136.0,132.0,133.0,133.0" style="Header_Order_Reference_Tbl"> |
2831 | <tr> |
2832 | <td> |
2833 | - <para style="terp_tblheader_General_Centre">Our Order Reference</para> |
2834 | - </td> |
2835 | - <td> |
2836 | - <para style="terp_tblheader_General_Centre">Your Order Reference</para> |
2837 | - </td> |
2838 | - <td> |
2839 | - <para style="terp_tblheader_General_Centre">Order Date</para> |
2840 | - </td> |
2841 | - <td> |
2842 | - <para style="terp_tblheader_General_Centre">Validated By</para> |
2843 | + <para style="terp_tblheader_General_Centre"><b>Our Order Reference</b></para> |
2844 | + </td> |
2845 | + <td> |
2846 | + <para style="terp_tblheader_General_Centre"><b>Your Order Reference</b></para> |
2847 | + </td> |
2848 | + <td> |
2849 | + <para style="terp_tblheader_General_Centre"><b>Order Date</b></para> |
2850 | + </td> |
2851 | + <td> |
2852 | + <para style="terp_tblheader_General_Centre"><b>Validated By</b></para> |
2853 | </td> |
2854 | </tr> |
2855 | </blockTable> |
2856 | @@ -238,22 +216,22 @@ |
2857 | <blockTable colWidths="180.0,70.0,60.0,80.0,60.0,85.0" repeatRows="1" style="Table_Header_Pur_ord_Line"> |
2858 | <tr> |
2859 | <td> |
2860 | - <para style="terp_tblheader_General">Description</para> |
2861 | - </td> |
2862 | - <td> |
2863 | - <para style="terp_tblheader_General">Taxes</para> |
2864 | - </td> |
2865 | - <td> |
2866 | - <para style="terp_tblheader_General">Date Req.</para> |
2867 | - </td> |
2868 | - <td> |
2869 | - <para style="terp_tblheader_General_Right">Qty</para> |
2870 | - </td> |
2871 | - <td> |
2872 | - <para style="terp_tblheader_General_Right">Unit Price</para> |
2873 | - </td> |
2874 | - <td> |
2875 | - <para style="terp_tblheader_General_Right">Net Price</para> |
2876 | + <para style="terp_tblheader_General"><b>Description</b></para> |
2877 | + </td> |
2878 | + <td> |
2879 | + <para style="terp_tblheader_General"><b>Taxes</b></para> |
2880 | + </td> |
2881 | + <td> |
2882 | + <para style="terp_tblheader_General"><b>Date Req.</b></para> |
2883 | + </td> |
2884 | + <td> |
2885 | + <para style="terp_tblheader_General_Right"><b>Qty</b></para> |
2886 | + </td> |
2887 | + <td> |
2888 | + <para style="terp_tblheader_General_Right"><b>Unit Price</b></para> |
2889 | + </td> |
2890 | + <td> |
2891 | + <para style="terp_tblheader_General_Right"><b>Net Price</b></para> |
2892 | </td> |
2893 | </tr> |
2894 | </blockTable> |
2895 | @@ -316,10 +294,10 @@ |
2896 | </para> |
2897 | </td> |
2898 | <td> |
2899 | - <para style="terp_default_Bold_9">Total :</para> |
2900 | + <para style="terp_default_Bold_9"><b>Total :</b></para> |
2901 | </td> |
2902 | <td> |
2903 | - <para style="terp_default_Bold_9_Right">[[ formatLang(o.amount_total, digits=get_digits(dp='Account') , currency_obj=o.pricelist_id.currency_id) ]]</para> |
2904 | + <para style="terp_default_Bold_9_Right"><b>[[ formatLang(o.amount_total, digits=get_digits(dp='Account') , currency_obj=o.pricelist_id.currency_id) ]]</b></para> |
2905 | </td> |
2906 | </tr> |
2907 | </blockTable> |
2908 | |
2909 | === modified file 'purchase/report/request_quotation.rml' |
2910 | --- purchase/report/request_quotation.rml 2012-12-15 16:23:09 +0000 |
2911 | +++ purchase/report/request_quotation.rml 2013-06-06 12:58:46 +0000 |
2912 | @@ -36,40 +36,17 @@ |
2913 | <initialize> |
2914 | <paraStyle name="all" alignment="justify"/> |
2915 | </initialize> |
2916 | - <paraStyle name="P1" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2917 | - <paraStyle name="Standard" fontName="Helvetica"/> |
2918 | - <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2919 | - <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/> |
2920 | - <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
2921 | - <paraStyle name="Table Contents" fontName="Helvetica"/> |
2922 | - <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/> |
2923 | - <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/> |
2924 | - <paraStyle name="Index" fontName="Helvetica"/> |
2925 | - <paraStyle name="Footer" fontName="Helvetica"/> |
2926 | - <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
2927 | - <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2928 | - <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
2929 | - <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2930 | - <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2931 | - <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2932 | - <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2933 | - <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2934 | - <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2935 | - <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2936 | - <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
2937 | - <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2938 | - <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2939 | - <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2940 | - <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/> |
2941 | - <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2942 | - <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2943 | - <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2944 | - <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2945 | - <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2946 | - <paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2947 | - <paraStyle name="terp_default_8_italic" rightIndent="0.0" leftIndent="20.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2948 | - <paraStyle name="terp_default_Note" rightIndent="0.0" leftIndent="9.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2949 | - <paraStyle name="Space bet user and signature" fontName="Helvetica" fontSize="4.0" leading="5" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2950 | + <paraStyle name="P1" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2951 | + <paraStyle name="Standard"/> |
2952 | + <paraStyle name="terp_header" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
2953 | + <paraStyle name="terp_tblheader_Details" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
2954 | + <paraStyle name="terp_default_8" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2955 | + <paraStyle name="terp_tblheader_Details_Centre" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
2956 | + <paraStyle name="terp_default_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2957 | + <paraStyle name="terp_default_Bold_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2958 | + <paraStyle name="terp_default_Centre_9" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
2959 | + <paraStyle name="terp_default_Right_9" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
2960 | + <paraStyle name="Space bet user and signature" fontSize="4.0" leading="5" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
2961 | <images/> |
2962 | </stylesheet> |
2963 | <story> |
2964 | @@ -84,7 +61,7 @@ |
2965 | <blockTable colWidths="250.0" style="Tableau2"> |
2966 | <tr> |
2967 | <td> |
2968 | - <para style="terp_default_Bold_9">Expected Delivery address:</para> |
2969 | + <para style="terp_default_Bold_9"><b>Expected Delivery address:</b></para> |
2970 | <para style="terp_default_9">[[ (order.dest_address_id and order.dest_address_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']]</para> |
2971 | <para style="P1">[[ order.dest_address_id and display_address(order.dest_address_id) ]]</para> |
2972 | </td> |
2973 | @@ -114,20 +91,20 @@ |
2974 | <para style="Standard"> |
2975 | <font color="white"> </font> |
2976 | </para> |
2977 | - <para style="terp_header">Request for Quotation : [[order.name]]</para> |
2978 | + <para style="terp_header"><b>Request for Quotation : [[order.name]]</b></para> |
2979 | <para style="terp_default_8"> |
2980 | <font color="white"> </font> |
2981 | </para> |
2982 | <blockTable colWidths="371.0,98.0,61.0" repeatRows="1" style="Table_Product_Header_Title"> |
2983 | <tr> |
2984 | <td> |
2985 | - <para style="terp_tblheader_Details">Description</para> |
2986 | - </td> |
2987 | - <td> |
2988 | - <para style="terp_tblheader_Details_Centre">Expected Date</para> |
2989 | - </td> |
2990 | - <td> |
2991 | - <para style="terp_tblheader_Details_Centre">Qty</para> |
2992 | + <para style="terp_tblheader_Details"><b>Description</b></para> |
2993 | + </td> |
2994 | + <td> |
2995 | + <para style="terp_tblheader_Details_Centre"><b>Expected Date</b></para> |
2996 | + </td> |
2997 | + <td> |
2998 | + <para style="terp_tblheader_Details_Centre"><b>Qty</b></para> |
2999 | </td> |
3000 | </tr> |
3001 | </blockTable> |
3002 | |
3003 | === modified file 'report_webkit/webkit_report.py' |
3004 | --- report_webkit/webkit_report.py 2013-05-21 12:23:59 +0000 |
3005 | +++ report_webkit/webkit_report.py 2013-06-06 12:58:46 +0000 |
3006 | @@ -280,7 +280,7 @@ |
3007 | template = False |
3008 | |
3009 | if report_xml.report_file : |
3010 | - path = get_module_resource(*report_xml.report_file.split(os.path.sep)) |
3011 | + path = get_module_resource(*report_xml.report_file.split('/')) |
3012 | if path and os.path.exists(path) : |
3013 | template = file(path).read() |
3014 | if not template and report_xml.report_webkit_data : |
3015 | |
3016 | === modified file 'sale/report/sale_order.rml' |
3017 | --- sale/report/sale_order.rml 2013-03-18 13:56:54 +0000 |
3018 | +++ sale/report/sale_order.rml 2013-06-06 12:58:46 +0000 |
3019 | @@ -89,40 +89,19 @@ |
3020 | <initialize> |
3021 | <paraStyle name="all" alignment="justify"/> |
3022 | </initialize> |
3023 | - <paraStyle name="Standard" fontName="Helvetica"/> |
3024 | - <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
3025 | - <paraStyle name="Heading" fontName="Helvetica" fontSize="8.0" leading="10" spaceBefore="12.0" spaceAfter="6.0"/> |
3026 | - <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/> |
3027 | - <paraStyle name="Table Contents" fontName="Helvetica"/> |
3028 | - <paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/> |
3029 | - <paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/> |
3030 | - <paraStyle name="Index" fontName="Helvetica"/> |
3031 | - <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
3032 | - <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3033 | - <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3034 | - <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3035 | - <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3036 | - <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
3037 | - <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
3038 | - <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
3039 | - <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
3040 | - <paraStyle name="Footer" fontName="Helvetica"/> |
3041 | - <paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> |
3042 | - <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/> |
3043 | - <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
3044 | - <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
3045 | - <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
3046 | - <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
3047 | - <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
3048 | - <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/> |
3049 | - <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3050 | - <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
3051 | - <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
3052 | - <paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3053 | - <paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
3054 | - <paraStyle name="terp_default_Italic" rightIndent="0.0" leftIndent="20.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3055 | - <paraStyle name="Preformatted Text" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/> |
3056 | - <paraStyle name="terp_default_Centre_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
3057 | + <paraStyle name="terp_header" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> |
3058 | + <paraStyle name="terp_default_8" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3059 | + <paraStyle name="terp_default_Bold_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3060 | + <paraStyle name="terp_default_9" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3061 | + <paraStyle name="terp_tblheader_General_Centre" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
3062 | + <paraStyle name="terp_default_Centre_8" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
3063 | + <paraStyle name="terp_tblheader_Details" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> |
3064 | + <paraStyle name="terp_tblheader_Details_Centre" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> |
3065 | + <paraStyle name="terp_tblheader_Details_Right" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> |
3066 | + <paraStyle name="terp_default_Centre_9" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> |
3067 | + <paraStyle name="terp_default_Right_9" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
3068 | + <paraStyle name="terp_default_1" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> |
3069 | + <paraStyle name="terp_default_Right_9_Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> |
3070 | <images/> |
3071 | </stylesheet> |
3072 | <story> |
3073 | @@ -133,22 +112,22 @@ |
3074 | <blockTable colWidths="181.0,70.0,80.0,70.0,50.0,85.0" repeatRows="1" style="Table4"> |
3075 | <tr> |
3076 | <td> |
3077 | - <para style="terp_tblheader_Details">Description</para> |
3078 | - </td> |
3079 | - <td> |
3080 | - <para style="terp_tblheader_Details_Centre">Tax</para> |
3081 | - </td> |
3082 | - <td> |
3083 | - <para style="terp_tblheader_Details_Right">Quantity</para> |
3084 | - </td> |
3085 | - <td> |
3086 | - <para style="terp_tblheader_Details_Right">Unit Price</para> |
3087 | - </td> |
3088 | - <td> |
3089 | - <para style="terp_tblheader_Details_Centre">Disc.(%)</para> |
3090 | - </td> |
3091 | - <td> |
3092 | - <para style="terp_tblheader_Details_Right">Price</para> |
3093 | + <para style="terp_tblheader_Details"><b>Description</b></para> |
3094 | + </td> |
3095 | + <td> |
3096 | + <para style="terp_tblheader_Details_Centre"><b>Tax</b></para> |
3097 | + </td> |
3098 | + <td> |
3099 | + <para style="terp_tblheader_Details_Right"><b>Quantity</b></para> |
3100 | + </td> |
3101 | + <td> |
3102 | + <para style="terp_tblheader_Details_Right"><b>Unit Price</b></para> |
3103 | + </td> |
3104 | + <td> |
3105 | + <para style="terp_tblheader_Details_Centre"><b>Disc.(%)</b></para> |
3106 | + </td> |
3107 | + <td> |
3108 | + <para style="terp_tblheader_Details_Right"><b>Price</b></para> |
3109 | </td> |
3110 | </tr> |
3111 | </blockTable> |
3112 | @@ -162,13 +141,13 @@ |
3113 | <blockTable colWidths="265.0,51.0,225.0" style="Table1"> |
3114 | <tr> |
3115 | <td> |
3116 | - <para style="terp_default_Bold_9">Shipping address :</para> |
3117 | + <para style="terp_default_Bold_9"><b>Shipping address :</b></para> |
3118 | <para style="terp_default_9">[[ (o.partner_shipping_id and o.partner_id.title and o.partner_shipping_id.title.name) or '' ]] [[ (o.partner_shipping_id and o.partner_shipping_id.name) or '' ]]</para> |
3119 | <para style="terp_default_9">[[ o.partner_shipping_id and display_address(o.partner_shipping_id) ]]</para> |
3120 | <para style="terp_default_9"> |
3121 | <font color="white"> </font> |
3122 | </para> |
3123 | - <para style="terp_default_Bold_9">Invoice address :</para> |
3124 | + <para style="terp_default_Bold_9"><b>Invoice address :</b></para> |
3125 | <para style="terp_default_9">[[ (o.partner_invoice_id and o.partner_invoice_id.title and o.partner_invoice_id.title.name) or '' ]] [[ (o.partner_invoice_id and o.partner_invoice_id.name) or '' ]]</para> |
3126 | <para style="terp_default_9">[[ o.partner_invoice_id and display_address(o.partner_invoice_id) ]] </para> |
3127 | </td> |
3128 | @@ -195,25 +174,25 @@ |
3129 | <para style="terp_default_8"> |
3130 | <font color="white"> </font> |
3131 | </para> |
3132 | - <para style="terp_header">[[ o.state not in ['draft','sent'] and removeParentNode('para') ]] Quotation N° [[ o.name ]]</para> |
3133 | - <para style="terp_header">[[ o.state in ['draft','sent'] and removeParentNode('para') ]] Order N° [[ o.name ]]</para> |
3134 | + <para style="terp_header"><b>[[ o.state not in ['draft','sent'] and removeParentNode('para') ]] Quotation N° [[ o.name ]]</b></para> |
3135 | + <para style="terp_header"><b>[[ o.state in ['draft','sent'] and removeParentNode('para') ]] Order N° [[ o.name ]]</b></para> |
3136 | <para style="terp_default_8"> |
3137 | <font color="white"> </font> |
3138 | </para> |
3139 | <blockTable colWidths="132.0,134.0,135.0,135.0" style="Table2"> |
3140 | <tr> |
3141 | <td> |
3142 | - <para style="terp_tblheader_General_Centre">Your Reference </para> |
3143 | - </td> |
3144 | - <td> |
3145 | - <para style="terp_tblheader_General_Centre">[[ o.state in ['draft','sent'] and removeParentNode('para') ]] Date Ordered</para> |
3146 | - <para style="terp_tblheader_General_Centre">[[ o.state not in ['draft','sent'] and removeParentNode('para') ]] Quotation Date</para> |
3147 | - </td> |
3148 | - <td> |
3149 | - <para style="terp_tblheader_General_Centre">Salesperson</para> |
3150 | - </td> |
3151 | - <td> |
3152 | - <para style="terp_tblheader_General_Centre">Payment Term</para> |
3153 | + <para style="terp_tblheader_General_Centre"><b>Your Reference </b></para> |
3154 | + </td> |
3155 | + <td> |
3156 | + <para style="terp_tblheader_General_Centre"><b>[[ o.state in ['draft','sent'] and removeParentNode('para') ]] Date Ordered</b></para> |
3157 | + <para style="terp_tblheader_General_Centre"><b>[[ o.state not in ['draft','sent'] and removeParentNode('para') ]] Quotation Date</b></para> |
3158 | + </td> |
3159 | + <td> |
3160 | + <para style="terp_tblheader_General_Centre"><b>Salesperson</b></para> |
3161 | + </td> |
3162 | + <td> |
3163 | + <para style="terp_tblheader_General_Centre"><b>Payment Term</b></para> |
3164 | </td> |
3165 | </tr> |
3166 | </blockTable> |
3167 | @@ -239,22 +218,22 @@ |
3168 | <blockTable colWidths="181.0,70.0,80.0,70.0,50.0,85.0" repeatRows="1" style="Table4"> |
3169 | <tr> |
3170 | <td> |
3171 | - <para style="terp_tblheader_Details">Description</para> |
3172 | - </td> |
3173 | - <td> |
3174 | - <para style="terp_tblheader_Details_Centre">Tax</para> |
3175 | - </td> |
3176 | - <td> |
3177 | - <para style="terp_tblheader_Details_Right">Quantity</para> |
3178 | - </td> |
3179 | - <td> |
3180 | - <para style="terp_tblheader_Details_Right">Unit Price</para> |
3181 | - </td> |
3182 | - <td> |
3183 | - <para style="terp_tblheader_Details_Centre">[[not show_discount(user.id) and removeParentNode('para') ]]Disc.(%)</para> |
3184 | - </td> |
3185 | - <td> |
3186 | - <para style="terp_tblheader_Details_Right">Price</para> |
3187 | + <para style="terp_tblheader_Details"><b>Description</b></para> |
3188 | + </td> |
3189 | + <td> |
3190 | + <para style="terp_tblheader_Details_Centre"><b>Tax</b></para> |
3191 | + </td> |
3192 | + <td> |
3193 | + <para style="terp_tblheader_Details_Right"><b>Quantity</b></para> |
3194 | + </td> |
3195 | + <td> |
3196 | + <para style="terp_tblheader_Details_Right"><b>Unit Price</b></para> |
3197 | + </td> |
3198 | + <td> |
3199 | + <para style="terp_tblheader_Details_Centre"><b>[[not show_discount(user.id) and removeParentNode('para') ]]Disc.(%)</b></para> |
3200 | + </td> |
3201 | + <td> |
3202 | + <para style="terp_tblheader_Details_Right"><b>Price</b></para> |
3203 | </td> |
3204 | </tr> |
3205 | </blockTable> |
3206 | @@ -317,10 +296,10 @@ |
3207 | </para> |
3208 | </td> |
3209 | <td> |
3210 | - <para style="terp_default_Bold_9">Total :</para> |
3211 | + <para style="terp_default_Bold_9"><b>Total :</b></para> |
3212 | </td> |
3213 | <td> |
3214 | - <para style="terp_default_Right_9_Bold">[[ formatLang(o.amount_total, dp='Account', currency_obj=o.pricelist_id.currency_id) ]]</para> |
3215 | + <para style="terp_default_Right_9_Bold"><b>[[ formatLang(o.amount_total, dp='Account', currency_obj=o.pricelist_id.currency_id) ]]</b></para> |
3216 | </td> |
3217 | </tr> |
3218 | </blockTable> |
3219 | |
3220 | === modified file 'sale/res_partner.py' |
3221 | --- sale/res_partner.py 2012-12-06 14:56:32 +0000 |
3222 | +++ sale/res_partner.py 2013-06-06 12:58:46 +0000 |
3223 | @@ -41,7 +41,7 @@ |
3224 | |
3225 | default.update({'sale_order_ids': []}) |
3226 | |
3227 | - super(res_partner, self).copy(cr, uid, record_id, default, context) |
3228 | + return super(res_partner, self).copy(cr, uid, record_id, default, context) |
3229 | |
3230 | _columns = { |
3231 | 'sale_order_count': fields.function(_sale_order_count, string='# of Sales Order', type='integer'), |
3232 | |
3233 | === modified file 'sale/sale.py' |
3234 | --- sale/sale.py 2013-06-04 12:30:26 +0000 |
3235 | +++ sale/sale.py 2013-06-06 12:58:46 +0000 |
3236 | @@ -695,7 +695,7 @@ |
3237 | _description = 'Sales Order Line' |
3238 | _columns = { |
3239 | 'order_id': fields.many2one('sale.order', 'Order Reference', required=True, ondelete='cascade', select=True, readonly=True, states={'draft':[('readonly',False)]}), |
3240 | - 'name': fields.text('Description', required=True, select=True, readonly=True, states={'draft': [('readonly', False)]}), |
3241 | + 'name': fields.text('Description', required=True, readonly=True, states={'draft': [('readonly', False)]}), |
3242 | 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of sales order lines."), |
3243 | 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], change_default=True), |
3244 | 'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id', 'invoice_id', 'Invoice Lines', readonly=True), |
3245 | |
3246 | === modified file 'sale_margin/sale_margin_view.xml' |
3247 | --- sale_margin/sale_margin_view.xml 2012-11-29 22:26:45 +0000 |
3248 | +++ sale_margin/sale_margin_view.xml 2013-06-06 12:58:46 +0000 |
3249 | @@ -9,7 +9,7 @@ |
3250 | <field name="arch" type="xml"> |
3251 | <xpath expr="//group[@name='sale_total']" position="after"> |
3252 | <group name="sale_margin_grp"> |
3253 | - <field name="margin" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
3254 | + <field name="margin" widget='monetary' options="{'currency_field': 'currency_id'}" groups="base.group_user"/> |
3255 | </group> |
3256 | </xpath> |
3257 | </field> |
3258 | |
3259 | === modified file 'sale_stock/test/cancel_order_sale_stock.yml' |
3260 | --- sale_stock/test/cancel_order_sale_stock.yml 2013-02-13 08:35:19 +0000 |
3261 | +++ sale_stock/test/cancel_order_sale_stock.yml 2013-06-06 12:58:46 +0000 |
3262 | @@ -8,7 +8,7 @@ |
3263 | - |
3264 | !python {model: stock.picking}: | |
3265 | delivery_orders = self.search(cr, uid, [('sale_id','=',ref("sale.sale_order_8"))]) |
3266 | - first_picking = self.browse(cr, uid, delivery_orders[0], context=context) |
3267 | + first_picking = self.browse(cr, uid, delivery_orders[-1], context=context) |
3268 | if first_picking.force_assign(cr, uid, first_picking): |
3269 | first_move = first_picking.move_lines[0] |
3270 | values = {'move%s'%(first_move.id): {'product_qty': 2, 'product_uom':ref('product.product_uom_unit')}} |
3271 | @@ -18,7 +18,7 @@ |
3272 | - |
3273 | !python {model: stock.picking}: | |
3274 | delivery_orders = self.search(cr, uid, [('sale_id','=',ref("sale.sale_order_8"))]) |
3275 | - last_delivery_order_id = delivery_orders[0] |
3276 | + last_delivery_order_id = delivery_orders[-1] |
3277 | self.pool.get('stock.picking').signal_button_cancel(cr, uid, [last_delivery_order_id]) |
3278 | - |
3279 | I run the scheduler. |
3280 | |
3281 | === modified file 'share/wizard/share_wizard.py' |
3282 | --- share/wizard/share_wizard.py 2013-05-23 13:33:31 +0000 |
3283 | +++ share/wizard/share_wizard.py 2013-06-06 12:58:46 +0000 |
3284 | @@ -414,7 +414,8 @@ |
3285 | relation_model_id = model_obj.search(cr, UID_ROOT, [('model','=',coldef._obj)])[0] |
3286 | relation_model_browse = model_obj.browse(cr, UID_ROOT, relation_model_id, context=context) |
3287 | relation_osv = self.pool[coldef._obj] |
3288 | - if coltype == 'one2many': |
3289 | + #skip virtual one2many fields (related, ...) as there is no reverse relationship |
3290 | + if coltype == 'one2many' and hasattr(coldef, '_fields_id'): |
3291 | # don't record reverse path if it's not a real m2o (that happens, but rarely) |
3292 | dest_model_ci = relation_osv._all_columns |
3293 | reverse_rel = coldef._fields_id |
3294 | |
3295 | === modified file 'stock/stock.py' |
3296 | --- stock/stock.py 2013-05-21 12:23:59 +0000 |
3297 | +++ stock/stock.py 2013-06-06 12:58:46 +0000 |
3298 | @@ -543,6 +543,7 @@ |
3299 | _name = "stock.picking" |
3300 | _inherit = ['mail.thread'] |
3301 | _description = "Picking List" |
3302 | + _order = "id desc" |
3303 | |
3304 | def _set_maximum_date(self, cr, uid, ids, name, value, arg, context=None): |
3305 | """ Calculates planned date if it is greater than 'value'. |
3306 | |
3307 | === modified file 'stock/wizard/stock_partial_picking.py' |
3308 | --- stock/wizard/stock_partial_picking.py 2012-12-17 15:23:03 +0000 |
3309 | +++ stock/wizard/stock_partial_picking.py 2013-06-06 12:58:46 +0000 |
3310 | @@ -144,7 +144,7 @@ |
3311 | def _partial_move_for(self, cr, uid, move): |
3312 | partial_move = { |
3313 | 'product_id' : move.product_id.id, |
3314 | - 'quantity' : move.product_qty if move.state in ('assigned','draft','confirmed') else 0, |
3315 | + 'quantity' : move.product_qty if move.state == 'assigned' else 0, |
3316 | 'product_uom' : move.product_uom.id, |
3317 | 'prodlot_id' : move.prodlot_id.id, |
3318 | 'move_id' : move.id, |