Merge lp:~camptocamp/contract-management/7.0-block-send-email-lep into lp:~contract-management-core-editors/contract-management/7.0
- 7.0-block-send-email-lep
- Merge into 7.0
Status: | Merged |
---|---|
Approved by: | Yannick Vaucher @ Camptocamp |
Approved revision: | 10 |
Merged at revision: | 8 |
Proposed branch: | lp:~camptocamp/contract-management/7.0-block-send-email-lep |
Merge into: | lp:~contract-management-core-editors/contract-management/7.0 |
Diff against target: |
659 lines (+571/-38) 5 files modified
analytic_hours_block/__openerp__.py (+1/-0) analytic_hours_block/hours_block.py (+41/-0) analytic_hours_block/hours_block_data.xml (+24/-0) analytic_hours_block/hours_block_view.xml (+45/-38) analytic_hours_block/i18n/analytic_hours_block.pot (+460/-0) |
To merge this branch: | bzr merge lp:~camptocamp/contract-management/7.0-block-send-email-lep |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Matthieu Dietrich @ camptocamp (community) | Approve | ||
Guewen Baconnier @ Camptocamp | Approve | ||
Pedro Manuel Baeza | Abstain | ||
Review via email: mp+200812@code.launchpad.net |
Commit message
Description of the change
- 9. By Leonardo Pistone
-
[add] analytic_
hours_block: pot file
Leonardo Pistone (lepistone) wrote : | # |
Pedro, I added the pot file.
Best
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote : | # |
l50ff it seems to me that it is dangerous to return a new action with the current context. I encountered subtle bugs because the active_ids, active_model etc are propagated to the new action when they shouldn't. I think it should just be a new dict.
Leonardo Pistone (lepistone) wrote : | # |
Thanks Guewen.
but what about lang, timezone..
Maybe I could pop out the active_* from ctx?
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote : | # |
The timezone and lang are automatically set from the user. When one click on a menu item, this is also what happens: the context is empty (or as defined in the action) and the user's configuration is set again.
Pedro Manuel Baeza (pedro.baeza) wrote : | # |
I can't review this module more than the check of the pot file for now, so I'm going to abstain to not disturb review status.
Regards.
- 10. By Leonardo Pistone
-
[imp] create a new context, as suggested by Guewen
Leonardo Pistone (lepistone) wrote : | # |
Good to know Guewen. Done.
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote : | # |
Thanks! LGTM
Matthieu Dietrich @ camptocamp (mdietrich-c2c) wrote : | # |
Hi Leonardo,
LGTM.
Matthieu Dietrich @ camptocamp (mdietrich-c2c) : | # |
Preview Diff
1 | === modified file 'analytic_hours_block/__openerp__.py' | |||
2 | --- analytic_hours_block/__openerp__.py 2012-12-17 14:42:58 +0000 | |||
3 | +++ analytic_hours_block/__openerp__.py 2014-01-31 14:46:22 +0000 | |||
4 | @@ -44,6 +44,7 @@ | |||
5 | 44 | ], | 44 | ], |
6 | 45 | "data": [ | 45 | "data": [ |
7 | 46 | "hours_block_view.xml", | 46 | "hours_block_view.xml", |
8 | 47 | "hours_block_data.xml", | ||
9 | 47 | "hours_block_menu.xml", | 48 | "hours_block_menu.xml", |
10 | 48 | "report.xml", | 49 | "report.xml", |
11 | 49 | "security/hours_block_security.xml", | 50 | "security/hours_block_security.xml", |
12 | 50 | 51 | ||
13 | === modified file 'analytic_hours_block/hours_block.py' | |||
14 | --- analytic_hours_block/hours_block.py 2012-12-18 11:05:03 +0000 | |||
15 | +++ analytic_hours_block/hours_block.py 2014-01-31 14:46:22 +0000 | |||
16 | @@ -24,6 +24,7 @@ | |||
17 | 24 | 24 | ||
18 | 25 | class AccountHoursBlock(orm.Model): | 25 | class AccountHoursBlock(orm.Model): |
19 | 26 | _name = "account.hours.block" | 26 | _name = "account.hours.block" |
20 | 27 | _inherit = ['mail.thread'] | ||
21 | 27 | 28 | ||
22 | 28 | def _get_last_action(self, cr, uid, ids, name, arg, context=None): | 29 | def _get_last_action(self, cr, uid, ids, name, arg, context=None): |
23 | 29 | """ Return the last analytic line date for an invoice""" | 30 | """ Return the last analytic line date for an invoice""" |
24 | @@ -163,6 +164,46 @@ | |||
25 | 163 | block_ids.update([inv.id for inv in invoice.account_hours_block_ids]) | 164 | block_ids.update([inv.id for inv in invoice.account_hours_block_ids]) |
26 | 164 | return list(block_ids) | 165 | return list(block_ids) |
27 | 165 | 166 | ||
28 | 167 | def action_send_block(self, cr, uid, ids, context=None): | ||
29 | 168 | """Open a form to send by email. Return an action dict.""" | ||
30 | 169 | |||
31 | 170 | assert len(ids) == 1, '''\ | ||
32 | 171 | This option should only be used for a single ID at a time.''' | ||
33 | 172 | |||
34 | 173 | ir_model_data = self.pool.get('ir.model.data') | ||
35 | 174 | |||
36 | 175 | try: | ||
37 | 176 | template_id = ir_model_data.get_object_reference( | ||
38 | 177 | cr, uid, 'analytic_hours_block', 'email_template_hours_block' | ||
39 | 178 | )[1] | ||
40 | 179 | except ValueError: | ||
41 | 180 | template_id = False | ||
42 | 181 | |||
43 | 182 | try: | ||
44 | 183 | compose_form_id = ir_model_data.get_object_reference( | ||
45 | 184 | cr, uid, 'mail', 'email_compose_message_wizard_form' | ||
46 | 185 | )[1] | ||
47 | 186 | except ValueError: | ||
48 | 187 | compose_form_id = False | ||
49 | 188 | |||
50 | 189 | ctx = { | ||
51 | 190 | 'default_model': self._name, | ||
52 | 191 | 'default_res_id': ids[0], | ||
53 | 192 | 'default_use_template': bool(template_id), | ||
54 | 193 | 'default_template_id': template_id, | ||
55 | 194 | 'default_composition_mode': 'comment', | ||
56 | 195 | } | ||
57 | 196 | return { | ||
58 | 197 | 'type': 'ir.actions.act_window', | ||
59 | 198 | 'view_type': 'form', | ||
60 | 199 | 'view_mode': 'form', | ||
61 | 200 | 'res_model': 'mail.compose.message', | ||
62 | 201 | 'views': [(compose_form_id, 'form')], | ||
63 | 202 | 'view_id': compose_form_id, | ||
64 | 203 | 'target': 'new', | ||
65 | 204 | 'context': ctx, | ||
66 | 205 | } | ||
67 | 206 | |||
68 | 166 | _recompute_triggers = { | 207 | _recompute_triggers = { |
69 | 167 | 'account.hours.block': (lambda self, cr, uid, ids, c=None: | 208 | 'account.hours.block': (lambda self, cr, uid, ids, c=None: |
70 | 168 | ids, ['invoice_id', 'type'], 10), | 209 | ids, ['invoice_id', 'type'], 10), |
71 | 169 | 210 | ||
72 | === added file 'analytic_hours_block/hours_block_data.xml' | |||
73 | --- analytic_hours_block/hours_block_data.xml 1970-01-01 00:00:00 +0000 | |||
74 | +++ analytic_hours_block/hours_block_data.xml 2014-01-31 14:46:22 +0000 | |||
75 | @@ -0,0 +1,24 @@ | |||
76 | 1 | <?xml version="1.0" ?> | ||
77 | 2 | <openerp> | ||
78 | 3 | <!-- Mail template are declared in a NOUPDATE block | ||
79 | 4 | so users can freely customize/delete them --> | ||
80 | 5 | <data noupdate="1"> | ||
81 | 6 | <record id="email_template_hours_block" model="email.template"> | ||
82 | 7 | <field name="name">Hours Block - Send by Email</field> | ||
83 | 8 | <field name="email_from">${(object.user_id.email or object.company_id.email or 'noreply@localhost')|safe}</field> | ||
84 | 9 | <field name="subject">${object.company_id.name} Hours Block (Ref ${object.number or 'n/a'})</field> | ||
85 | 10 | <field name="email_recipients">${object.partner_id.id}</field> | ||
86 | 11 | <field name="model_id" ref="analytic_hours_block.model_account_hours_block"/> | ||
87 | 12 | <field name="auto_delete" eval="True"/> | ||
88 | 13 | <field name="report_template" ref="block_hours_report"/> | ||
89 | 14 | <field name="report_name">Hours_Block_${(object.number or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}</field> | ||
90 | 15 | <field name="lang">${object.partner_id.lang}</field> | ||
91 | 16 | <field name="body_html"><![CDATA[ | ||
92 | 17 | <p>Hello ${object.partner_id.name},</p> | ||
93 | 18 | |||
94 | 19 | <p>Please find attached your Hours Block Report.</p> | ||
95 | 20 | <p>Best regards.</p> | ||
96 | 21 | ]]></field> | ||
97 | 22 | </record> | ||
98 | 23 | </data> | ||
99 | 24 | </openerp> | ||
100 | 0 | 25 | ||
101 | === modified file 'analytic_hours_block/hours_block_view.xml' | |||
102 | --- analytic_hours_block/hours_block_view.xml 2012-12-18 08:46:36 +0000 | |||
103 | +++ analytic_hours_block/hours_block_view.xml 2014-01-31 14:46:22 +0000 | |||
104 | @@ -41,44 +41,51 @@ | |||
105 | 41 | <field name="model">account.hours.block</field> | 41 | <field name="model">account.hours.block</field> |
106 | 42 | <field name="arch" type="xml"> | 42 | <field name="arch" type="xml"> |
107 | 43 | <form string="Hours Blocks" version="7.0"> | 43 | <form string="Hours Blocks" version="7.0"> |
146 | 44 | <sheet> | 44 | <header> |
147 | 45 | <h1> | 45 | <button name="action_send_block" type="object" string="Send by Email" class="oe_highlight"/> |
148 | 46 | <field name="invoice_id" placeholder="Choose an invoice..."/> | 46 | </header> |
149 | 47 | <label for="type" string="Based on:" class="oe_inline"/> | 47 | <sheet> |
150 | 48 | <field name="type" class="oe_inline"/> | 48 | <h1> |
151 | 49 | </h1> | 49 | <field name="invoice_id" placeholder="Choose an invoice..."/> |
152 | 50 | 50 | <label for="type" string="Based on:" class="oe_inline"/> | |
153 | 51 | <group> | 51 | <field name="type" class="oe_inline"/> |
154 | 52 | <field name="last_action_date" /> | 52 | </h1> |
155 | 53 | <field name="close_date" /> | 53 | |
156 | 54 | </group> | 54 | <group> |
157 | 55 | 55 | <field name="last_action_date" /> | |
158 | 56 | <group> | 56 | <field name="close_date" /> |
159 | 57 | <separator colspan="4" string="Hours Quantity / Amount"/> | 57 | </group> |
160 | 58 | <field name="amount_hours_block" string="Bought"/> | 58 | |
161 | 59 | <field name="amount_hours_block_done" string="Used"/> | 59 | <group> |
162 | 60 | <field name="amount_hours_block_delta" string="Difference"/> | 60 | <separator colspan="4" string="Hours Quantity / Amount"/> |
163 | 61 | </group> | 61 | <field name="amount_hours_block" string="Bought"/> |
164 | 62 | 62 | <field name="amount_hours_block_done" string="Used"/> | |
165 | 63 | <group> | 63 | <field name="amount_hours_block_delta" string="Difference"/> |
166 | 64 | <separator colspan="4" string="Invoice's related information"/> | 64 | </group> |
167 | 65 | <field name="date_invoice"/> | 65 | |
168 | 66 | <field name="name"/> | 66 | <group> |
169 | 67 | <field name="number"/> | 67 | <separator colspan="4" string="Invoice's related information"/> |
170 | 68 | <field name="partner_id" groups="base.group_user"/> | 68 | <field name="date_invoice"/> |
171 | 69 | <field name="user_id"/> | 69 | <field name="name"/> |
172 | 70 | <field name="company_id" groups="base.group_multi_company" widget="selection"/> | 70 | <field name="number"/> |
173 | 71 | 71 | <field name="partner_id" groups="base.group_user"/> | |
174 | 72 | <field name="journal_id" invisible="1"/> | 72 | <field name="user_id"/> |
175 | 73 | <field name="period_id" invisible="1" groups="account.group_account_user"/> | 73 | <field name="company_id" groups="base.group_multi_company" widget="selection"/> |
176 | 74 | 74 | ||
177 | 75 | <field name="currency_id"/> | 75 | <field name="journal_id" invisible="1"/> |
178 | 76 | <newline/> | 76 | <field name="period_id" invisible="1" groups="account.group_account_user"/> |
179 | 77 | <field name="residual" sum="Residual Amount"/> | 77 | |
180 | 78 | <field name="amount_total" sum="Total Amount"/> | 78 | <field name="currency_id"/> |
181 | 79 | <field name="state"/> | 79 | <newline/> |
182 | 80 | </group> | 80 | <field name="residual" sum="Residual Amount"/> |
183 | 81 | </sheet> | 81 | <field name="amount_total" sum="Total Amount"/> |
184 | 82 | <field name="state"/> | ||
185 | 83 | </group> | ||
186 | 84 | </sheet> | ||
187 | 85 | <div class="oe_chatter"> | ||
188 | 86 | <field name="message_follower_ids" widget="mail_followers"/> | ||
189 | 87 | <field name="message_ids" widget="mail_thread"/> | ||
190 | 88 | </div> | ||
191 | 82 | </form> | 89 | </form> |
192 | 83 | </field> | 90 | </field> |
193 | 84 | </record> | 91 | </record> |
194 | 85 | 92 | ||
195 | === added directory 'analytic_hours_block/i18n' | |||
196 | === added file 'analytic_hours_block/i18n/analytic_hours_block.pot' | |||
197 | --- analytic_hours_block/i18n/analytic_hours_block.pot 1970-01-01 00:00:00 +0000 | |||
198 | +++ analytic_hours_block/i18n/analytic_hours_block.pot 2014-01-31 14:46:22 +0000 | |||
199 | @@ -0,0 +1,460 @@ | |||
200 | 1 | # Translation of OpenERP Server. | ||
201 | 2 | # This file contains the translation of the following modules: | ||
202 | 3 | # * analytic_hours_block | ||
203 | 4 | # | ||
204 | 5 | msgid "" | ||
205 | 6 | msgstr "" | ||
206 | 7 | "Project-Id-Version: OpenERP Server 7.0\n" | ||
207 | 8 | "Report-Msgid-Bugs-To: \n" | ||
208 | 9 | "POT-Creation-Date: 2014-01-08 12:49+0000\n" | ||
209 | 10 | "PO-Revision-Date: 2014-01-08 12:49+0000\n" | ||
210 | 11 | "Last-Translator: <>\n" | ||
211 | 12 | "Language-Team: \n" | ||
212 | 13 | "MIME-Version: 1.0\n" | ||
213 | 14 | "Content-Type: text/plain; charset=UTF-8\n" | ||
214 | 15 | "Content-Transfer-Encoding: \n" | ||
215 | 16 | "Plural-Forms: \n" | ||
216 | 17 | |||
217 | 18 | #. module: analytic_hours_block | ||
218 | 19 | #: report:account.hours.block:0 | ||
219 | 20 | msgid "Maintenance And Support Summary" | ||
220 | 21 | msgstr "" | ||
221 | 22 | |||
222 | 23 | #. module: analytic_hours_block | ||
223 | 24 | #: report:account.hours.block:0 | ||
224 | 25 | msgid "Invoice Date:" | ||
225 | 26 | msgstr "" | ||
226 | 27 | |||
227 | 28 | #. module: analytic_hours_block | ||
228 | 29 | #: view:account.hours.block:0 | ||
229 | 30 | msgid "Group By..." | ||
230 | 31 | msgstr "" | ||
231 | 32 | |||
232 | 33 | #. module: analytic_hours_block | ||
233 | 34 | #: view:account.hours.block:0 | ||
234 | 35 | msgid "Bought" | ||
235 | 36 | msgstr "" | ||
236 | 37 | |||
237 | 38 | #. module: analytic_hours_block | ||
238 | 39 | #: field:account.hours.block,close_date:0 | ||
239 | 40 | msgid "Closed Date" | ||
240 | 41 | msgstr "" | ||
241 | 42 | |||
242 | 43 | #. module: analytic_hours_block | ||
243 | 44 | #: field:account.hours.block,message_unread:0 | ||
244 | 45 | msgid "Unread Messages" | ||
245 | 46 | msgstr "" | ||
246 | 47 | |||
247 | 48 | #. module: analytic_hours_block | ||
248 | 49 | #: field:account.hours.block,company_id:0 | ||
249 | 50 | msgid "Company" | ||
250 | 51 | msgstr "" | ||
251 | 52 | |||
252 | 53 | #. module: analytic_hours_block | ||
253 | 54 | #: field:account.hours.block,date_invoice:0 | ||
254 | 55 | msgid "Invoice Date" | ||
255 | 56 | msgstr "" | ||
256 | 57 | |||
257 | 58 | #. module: analytic_hours_block | ||
258 | 59 | #: field:account.hours.block,residual:0 | ||
259 | 60 | msgid "Residual" | ||
260 | 61 | msgstr "" | ||
261 | 62 | |||
262 | 63 | #. module: analytic_hours_block | ||
263 | 64 | #: help:account.hours.block,amount_hours_block:0 | ||
264 | 65 | msgid "Amount bought by the customer. This amount is expressed in the base Unit of Measure (factor=1.0)" | ||
265 | 66 | msgstr "" | ||
266 | 67 | |||
267 | 68 | #. module: analytic_hours_block | ||
268 | 69 | #: view:account.hours.block:0 | ||
269 | 70 | msgid "Based on:" | ||
270 | 71 | msgstr "" | ||
271 | 72 | |||
272 | 73 | #. module: analytic_hours_block | ||
273 | 74 | #: field:account.hours.block,message_ids:0 | ||
274 | 75 | msgid "Messages" | ||
275 | 76 | msgstr "" | ||
276 | 77 | |||
277 | 78 | #. module: analytic_hours_block | ||
278 | 79 | #: selection:account.hours.block,type:0 | ||
279 | 80 | msgid "Amount" | ||
280 | 81 | msgstr "" | ||
281 | 82 | |||
282 | 83 | #. module: analytic_hours_block | ||
283 | 84 | #: selection:account.hours.block,state:0 | ||
284 | 85 | msgid "Cancelled" | ||
285 | 86 | msgstr "" | ||
286 | 87 | |||
287 | 88 | #. module: analytic_hours_block | ||
288 | 89 | #: help:account.hours.block,message_unread:0 | ||
289 | 90 | msgid "If checked new messages require your attention." | ||
290 | 91 | msgstr "" | ||
291 | 92 | |||
292 | 93 | #. module: analytic_hours_block | ||
293 | 94 | #: model:email.template,body_html:analytic_hours_block.email_template_hours_block | ||
294 | 95 | msgid "\n" | ||
295 | 96 | " Here is your Hours Block Report\n" | ||
296 | 97 | " " | ||
297 | 98 | msgstr "" | ||
298 | 99 | |||
299 | 100 | #. module: analytic_hours_block | ||
300 | 101 | #: view:account.hours.block:0 | ||
301 | 102 | msgid "Hours Quantity / Amount" | ||
302 | 103 | msgstr "" | ||
303 | 104 | |||
304 | 105 | #. module: analytic_hours_block | ||
305 | 106 | #: report:account.hours.block:0 | ||
306 | 107 | msgid "Remaining hours:" | ||
307 | 108 | msgstr "" | ||
308 | 109 | |||
309 | 110 | #. module: analytic_hours_block | ||
310 | 111 | #: report:account.hours.block:0 | ||
311 | 112 | msgid "Quantity of hours bought:" | ||
312 | 113 | msgstr "" | ||
313 | 114 | |||
314 | 115 | #. module: analytic_hours_block | ||
315 | 116 | #: help:account.hours.block,message_summary:0 | ||
316 | 117 | msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views." | ||
317 | 118 | msgstr "" | ||
318 | 119 | |||
319 | 120 | #. module: analytic_hours_block | ||
320 | 121 | #: view:account.hours.block:0 | ||
321 | 122 | msgid "Quantity of hours bought" | ||
322 | 123 | msgstr "" | ||
323 | 124 | |||
324 | 125 | #. module: analytic_hours_block | ||
325 | 126 | #: view:account.hours.block:0 | ||
326 | 127 | #: field:account.hours.block,partner_id:0 | ||
327 | 128 | msgid "Partner" | ||
328 | 129 | msgstr "" | ||
329 | 130 | |||
330 | 131 | #. module: analytic_hours_block | ||
331 | 132 | #: view:account.hours.block:0 | ||
332 | 133 | msgid "Quantity of hours difference" | ||
333 | 134 | msgstr "" | ||
334 | 135 | |||
335 | 136 | #. module: analytic_hours_block | ||
336 | 137 | #: field:account.hours.block,period_id:0 | ||
337 | 138 | msgid "Period" | ||
338 | 139 | msgstr "" | ||
339 | 140 | |||
340 | 141 | #. module: analytic_hours_block | ||
341 | 142 | #: field:account.hours.block,state:0 | ||
342 | 143 | msgid "State" | ||
343 | 144 | msgstr "" | ||
344 | 145 | |||
345 | 146 | #. module: analytic_hours_block | ||
346 | 147 | #: field:account.hours.block,message_follower_ids:0 | ||
347 | 148 | msgid "Followers" | ||
348 | 149 | msgstr "" | ||
349 | 150 | |||
350 | 151 | #. module: analytic_hours_block | ||
351 | 152 | #: view:account.hours.block:0 | ||
352 | 153 | msgid "Send by Email" | ||
353 | 154 | msgstr "" | ||
354 | 155 | |||
355 | 156 | #. module: analytic_hours_block | ||
356 | 157 | #: view:account.hours.block:0 | ||
357 | 158 | msgid "All Running Hours Block" | ||
358 | 159 | msgstr "" | ||
359 | 160 | |||
360 | 161 | #. module: analytic_hours_block | ||
361 | 162 | #: field:account.hours.block,last_action_date:0 | ||
362 | 163 | msgid "Last action date" | ||
363 | 164 | msgstr "" | ||
364 | 165 | |||
365 | 166 | #. module: analytic_hours_block | ||
366 | 167 | #: selection:account.hours.block,type:0 | ||
367 | 168 | msgid "Hours" | ||
368 | 169 | msgstr "" | ||
369 | 170 | |||
370 | 171 | #. module: analytic_hours_block | ||
371 | 172 | #: report:account.hours.block:0 | ||
372 | 173 | msgid "Description:" | ||
373 | 174 | msgstr "" | ||
374 | 175 | |||
375 | 176 | #. module: analytic_hours_block | ||
376 | 177 | #: help:account.hours.block,type:0 | ||
377 | 178 | msgid "The block is based on the quantity of hours or on the amount." | ||
378 | 179 | msgstr "" | ||
379 | 180 | |||
380 | 181 | #. module: analytic_hours_block | ||
381 | 182 | #: model:email.template,report_name:analytic_hours_block.email_template_hours_block | ||
382 | 183 | msgid "Hours_Block_${(object.number or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}" | ||
383 | 184 | msgstr "" | ||
384 | 185 | |||
385 | 186 | #. module: analytic_hours_block | ||
386 | 187 | #: report:account.hours.block:0 | ||
387 | 188 | msgid "Remaining amount:" | ||
388 | 189 | msgstr "" | ||
389 | 190 | |||
390 | 191 | #. module: analytic_hours_block | ||
391 | 192 | #: model:ir.model,name:analytic_hours_block.model_account_hours_block | ||
392 | 193 | msgid "account.hours.block" | ||
393 | 194 | msgstr "" | ||
394 | 195 | |||
395 | 196 | #. module: analytic_hours_block | ||
396 | 197 | #: field:account.hours.block,amount_hours_block:0 | ||
397 | 198 | msgid "Quantity / Amount bought" | ||
398 | 199 | msgstr "" | ||
399 | 200 | |||
400 | 201 | #. module: analytic_hours_block | ||
401 | 202 | #: model:ir.actions.report.xml,name:analytic_hours_block.block_hours_report | ||
402 | 203 | msgid "Block Hours State" | ||
403 | 204 | msgstr "" | ||
404 | 205 | |||
405 | 206 | #. module: analytic_hours_block | ||
406 | 207 | #: view:account.hours.block:0 | ||
407 | 208 | msgid "Choose an invoice..." | ||
408 | 209 | msgstr "" | ||
409 | 210 | |||
410 | 211 | #. module: analytic_hours_block | ||
411 | 212 | #: selection:account.hours.block,state:0 | ||
412 | 213 | msgid "Open" | ||
413 | 214 | msgstr "" | ||
414 | 215 | |||
415 | 216 | #. module: analytic_hours_block | ||
416 | 217 | #: view:account.hours.block:0 | ||
417 | 218 | msgid "My invoices" | ||
418 | 219 | msgstr "" | ||
419 | 220 | |||
420 | 221 | #. module: analytic_hours_block | ||
421 | 222 | #: view:account.hours.block:0 | ||
422 | 223 | msgid "Draft Hours Blocks" | ||
423 | 224 | msgstr "" | ||
424 | 225 | |||
425 | 226 | #. module: analytic_hours_block | ||
426 | 227 | #: field:account.hours.block,currency_id:0 | ||
427 | 228 | msgid "Currency" | ||
428 | 229 | msgstr "" | ||
429 | 230 | |||
430 | 231 | #. module: analytic_hours_block | ||
431 | 232 | #: view:account.hours.block:0 | ||
432 | 233 | #: field:account.hours.block,user_id:0 | ||
433 | 234 | msgid "Salesman" | ||
434 | 235 | msgstr "" | ||
435 | 236 | |||
436 | 237 | #. module: analytic_hours_block | ||
437 | 238 | #: view:account.hours.block:0 | ||
438 | 239 | msgid "Quantity of hours used" | ||
439 | 240 | msgstr "" | ||
440 | 241 | |||
441 | 242 | #. module: analytic_hours_block | ||
442 | 243 | #: view:account.hours.block:0 | ||
443 | 244 | #: selection:account.hours.block,state:0 | ||
444 | 245 | msgid "Draft" | ||
445 | 246 | msgstr "" | ||
446 | 247 | |||
447 | 248 | #. module: analytic_hours_block | ||
448 | 249 | #: view:account.hours.block:0 | ||
449 | 250 | #: model:ir.actions.act_window,name:analytic_hours_block.action_all_block_hour | ||
450 | 251 | msgid "Hours Blocks" | ||
451 | 252 | msgstr "" | ||
452 | 253 | |||
453 | 254 | #. module: analytic_hours_block | ||
454 | 255 | #: field:account.hours.block,type:0 | ||
455 | 256 | msgid "Type of Block" | ||
456 | 257 | msgstr "" | ||
457 | 258 | |||
458 | 259 | #. module: analytic_hours_block | ||
459 | 260 | #: view:account.hours.block:0 | ||
460 | 261 | msgid "Used" | ||
461 | 262 | msgstr "" | ||
462 | 263 | |||
463 | 264 | #. module: analytic_hours_block | ||
464 | 265 | #: view:account.hours.block:0 | ||
465 | 266 | msgid "Total Amount" | ||
466 | 267 | msgstr "" | ||
467 | 268 | |||
468 | 269 | #. module: analytic_hours_block | ||
469 | 270 | #: selection:account.hours.block,state:0 | ||
470 | 271 | msgid "Paid" | ||
471 | 272 | msgstr "" | ||
472 | 273 | |||
473 | 274 | #. module: analytic_hours_block | ||
474 | 275 | #: report:account.hours.block:0 | ||
475 | 276 | msgid "Page" | ||
476 | 277 | msgstr "" | ||
477 | 278 | |||
478 | 279 | #. module: analytic_hours_block | ||
479 | 280 | #: field:account.hours.block,message_is_follower:0 | ||
480 | 281 | msgid "Is a Follower" | ||
481 | 282 | msgstr "" | ||
482 | 283 | |||
483 | 284 | #. module: analytic_hours_block | ||
484 | 285 | #: report:account.hours.block:0 | ||
485 | 286 | msgid "Date" | ||
486 | 287 | msgstr "" | ||
487 | 288 | |||
488 | 289 | #. module: analytic_hours_block | ||
489 | 290 | #: field:account.invoice,account_hours_block_ids:0 | ||
490 | 291 | #: model:ir.actions.act_window,name:analytic_hours_block.act_hours_block_from_invoice | ||
491 | 292 | #: model:ir.ui.menu,name:analytic_hours_block.action_all_block_hour_account | ||
492 | 293 | msgid "Hours Block" | ||
493 | 294 | msgstr "" | ||
494 | 295 | |||
495 | 296 | #. module: analytic_hours_block | ||
496 | 297 | #: help:account.hours.block,last_action_date:0 | ||
497 | 298 | msgid "Date of the last analytic line linked to the invoice related to this block hours." | ||
498 | 299 | msgstr "" | ||
499 | 300 | |||
500 | 301 | #. module: analytic_hours_block | ||
501 | 302 | #: report:account.hours.block:0 | ||
502 | 303 | msgid "Report Date:" | ||
503 | 304 | msgstr "" | ||
504 | 305 | |||
505 | 306 | #. module: analytic_hours_block | ||
506 | 307 | #: model:email.template,subject:analytic_hours_block.email_template_hours_block | ||
507 | 308 | msgid "${object.company_id.name} Hours Block (Ref ${object.number or 'n/a'})" | ||
508 | 309 | msgstr "" | ||
509 | 310 | |||
510 | 311 | #. module: analytic_hours_block | ||
511 | 312 | #: view:account.hours.block:0 | ||
512 | 313 | msgid "Invoice's related information" | ||
513 | 314 | msgstr "" | ||
514 | 315 | |||
515 | 316 | #. module: analytic_hours_block | ||
516 | 317 | #: view:account.hours.block:0 | ||
517 | 318 | msgid "Search Invoice" | ||
518 | 319 | msgstr "" | ||
519 | 320 | |||
520 | 321 | #. module: analytic_hours_block | ||
521 | 322 | #: report:account.hours.block:0 | ||
522 | 323 | msgid "Quantity" | ||
523 | 324 | msgstr "" | ||
524 | 325 | |||
525 | 326 | #. module: analytic_hours_block | ||
526 | 327 | #: help:account.hours.block,amount_hours_block_delta:0 | ||
527 | 328 | msgid "Difference between bought and used. This amount is expressed in the base Unit of Measure (factor=1.0)" | ||
528 | 329 | msgstr "" | ||
529 | 330 | |||
530 | 331 | #. module: analytic_hours_block | ||
531 | 332 | #: report:account.hours.block:0 | ||
532 | 333 | msgid "0.6cm 27.9cm 20.3cm 27.9cm" | ||
533 | 334 | msgstr "" | ||
534 | 335 | |||
535 | 336 | #. module: analytic_hours_block | ||
536 | 337 | #: view:account.hours.block:0 | ||
537 | 338 | msgid "Residual Amount" | ||
538 | 339 | msgstr "" | ||
539 | 340 | |||
540 | 341 | #. module: analytic_hours_block | ||
541 | 342 | #: view:account.hours.block:0 | ||
542 | 343 | msgid "Overdue Hours Block" | ||
543 | 344 | msgstr "" | ||
544 | 345 | |||
545 | 346 | #. module: analytic_hours_block | ||
546 | 347 | #: report:account.hours.block:0 | ||
547 | 348 | msgid "Amount used:" | ||
548 | 349 | msgstr "" | ||
549 | 350 | |||
550 | 351 | #. module: analytic_hours_block | ||
551 | 352 | #: field:account.hours.block,number:0 | ||
552 | 353 | msgid "Number" | ||
553 | 354 | msgstr "" | ||
554 | 355 | |||
555 | 356 | #. module: analytic_hours_block | ||
556 | 357 | #: view:account.hours.block:0 | ||
557 | 358 | #: field:account.hours.block,invoice_id:0 | ||
558 | 359 | #: model:ir.actions.act_window,name:analytic_hours_block.act_invoice_from_hours_block | ||
559 | 360 | #: model:ir.model,name:analytic_hours_block.model_account_invoice | ||
560 | 361 | msgid "Invoice" | ||
561 | 362 | msgstr "" | ||
562 | 363 | |||
563 | 364 | #. module: analytic_hours_block | ||
564 | 365 | #: selection:account.hours.block,state:0 | ||
565 | 366 | msgid "Pro-forma" | ||
566 | 367 | msgstr "" | ||
567 | 368 | |||
568 | 369 | #. module: analytic_hours_block | ||
569 | 370 | #: view:account.hours.block:0 | ||
570 | 371 | msgid "Responsible" | ||
571 | 372 | msgstr "" | ||
572 | 373 | |||
573 | 374 | #. module: analytic_hours_block | ||
574 | 375 | #: report:account.hours.block:0 | ||
575 | 376 | #: field:account.hours.block,name:0 | ||
576 | 377 | msgid "Description" | ||
577 | 378 | msgstr "" | ||
578 | 379 | |||
579 | 380 | #. module: analytic_hours_block | ||
580 | 381 | #: report:account.hours.block:0 | ||
581 | 382 | msgid "Amount bought:" | ||
582 | 383 | msgstr "" | ||
583 | 384 | |||
584 | 385 | #. module: analytic_hours_block | ||
585 | 386 | #: help:account.hours.block,amount_hours_block_done:0 | ||
586 | 387 | msgid "Amount done by the staff. This amount is expressed in the base Unit of Measure (factor=1.0)" | ||
587 | 388 | msgstr "" | ||
588 | 389 | |||
589 | 390 | #. module: analytic_hours_block | ||
590 | 391 | #: report:account.hours.block:0 | ||
591 | 392 | msgid "Quantity of hours used:" | ||
592 | 393 | msgstr "" | ||
593 | 394 | |||
594 | 395 | #. module: analytic_hours_block | ||
595 | 396 | #: report:account.hours.block:0 | ||
596 | 397 | msgid "Invoicing" | ||
597 | 398 | msgstr "" | ||
598 | 399 | |||
599 | 400 | #. module: analytic_hours_block | ||
600 | 401 | #: field:account.hours.block,amount_hours_block_done:0 | ||
601 | 402 | msgid "Quantity / Amount used" | ||
602 | 403 | msgstr "" | ||
603 | 404 | |||
604 | 405 | #. module: analytic_hours_block | ||
605 | 406 | #: field:account.hours.block,journal_id:0 | ||
606 | 407 | msgid "Journal" | ||
607 | 408 | msgstr "" | ||
608 | 409 | |||
609 | 410 | #. module: analytic_hours_block | ||
610 | 411 | #: view:account.hours.block:0 | ||
611 | 412 | msgid "Running" | ||
612 | 413 | msgstr "" | ||
613 | 414 | |||
614 | 415 | #. module: analytic_hours_block | ||
615 | 416 | #: view:account.hours.block:0 | ||
616 | 417 | #: field:account.hours.block,amount_hours_block_delta:0 | ||
617 | 418 | msgid "Difference" | ||
618 | 419 | msgstr "" | ||
619 | 420 | |||
620 | 421 | #. module: analytic_hours_block | ||
621 | 422 | #: model:ir.actions.act_window,name:analytic_hours_block.act_block_hour_from_partner | ||
622 | 423 | msgid "All blocks hours" | ||
623 | 424 | msgstr "" | ||
624 | 425 | |||
625 | 426 | #. module: analytic_hours_block | ||
626 | 427 | #: report:account.hours.block:0 | ||
627 | 428 | msgid "Deduced" | ||
628 | 429 | msgstr "" | ||
629 | 430 | |||
630 | 431 | #. module: analytic_hours_block | ||
631 | 432 | #: model:ir.actions.act_window,name:analytic_hours_block.act_analytic_lines_from_hours_block | ||
632 | 433 | msgid "Analytic Lines" | ||
633 | 434 | msgstr "" | ||
634 | 435 | |||
635 | 436 | #. module: analytic_hours_block | ||
636 | 437 | #: view:account.hours.block:0 | ||
637 | 438 | msgid "Invoice State" | ||
638 | 439 | msgstr "" | ||
639 | 440 | |||
640 | 441 | #. module: analytic_hours_block | ||
641 | 442 | #: field:account.hours.block,message_summary:0 | ||
642 | 443 | msgid "Summary" | ||
643 | 444 | msgstr "" | ||
644 | 445 | |||
645 | 446 | #. module: analytic_hours_block | ||
646 | 447 | #: help:account.hours.block,message_ids:0 | ||
647 | 448 | msgid "Messages and communication history" | ||
648 | 449 | msgstr "" | ||
649 | 450 | |||
650 | 451 | #. module: analytic_hours_block | ||
651 | 452 | #: view:account.hours.block:0 | ||
652 | 453 | msgid "Overdue" | ||
653 | 454 | msgstr "" | ||
654 | 455 | |||
655 | 456 | #. module: analytic_hours_block | ||
656 | 457 | #: field:account.hours.block,amount_total:0 | ||
657 | 458 | msgid "Total" | ||
658 | 459 | msgstr "" | ||
659 | 460 |
Hi, Leonardo, very appreciated the improvement!
Could you please add updated translation template to allow translation of the mail?
Regards.