Merge lp:~julie-w/unifield-server/US-2644 into lp:unifield-server
- US-2644
- Merge into trunk
Proposed by
jftempo
Status: | Merged |
---|---|
Merged at revision: | 5151 |
Proposed branch: | lp:~julie-w/unifield-server/US-2644 |
Merge into: | lp:unifield-server |
Diff against target: |
978 lines (+480/-68) 11 files modified
bin/addons/account_override/__openerp__.py (+1/-0) bin/addons/account_override/account_view.xml (+0/-10) bin/addons/account_override/period.py (+42/-0) bin/addons/account_override/wizard/__init__.py (+1/-0) bin/addons/account_override/wizard/integrity_finance_wizard.py (+121/-0) bin/addons/account_override/wizard/integrity_finance_wizard_view.xml (+63/-0) bin/addons/board/queries_finance.py (+44/-32) bin/addons/board/report/integrity.mako (+14/-6) bin/addons/board/report/integrity_finance.py (+133/-2) bin/addons/msf_profile/i18n/fr_MF.po (+60/-17) bin/service/web_services.py (+1/-1) |
To merge this branch: | bzr merge lp:~julie-w/unifield-server/US-2644 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
UniField Reviewer Team | Pending | ||
Review via email: mp+358433@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/addons/account_override/__openerp__.py' | |||
2 | --- bin/addons/account_override/__openerp__.py 2016-02-04 16:43:13 +0000 | |||
3 | +++ bin/addons/account_override/__openerp__.py 2018-11-07 14:15:37 +0000 | |||
4 | @@ -43,6 +43,7 @@ | |||
5 | 43 | 'wizard/account_chart.xml', | 43 | 'wizard/account_chart.xml', |
6 | 44 | 'wizard/import_invoice.xml', | 44 | 'wizard/import_invoice.xml', |
7 | 45 | 'wizard/split_invoice.xml', | 45 | 'wizard/split_invoice.xml', |
8 | 46 | 'wizard/integrity_finance_wizard_view.xml', | ||
9 | 46 | 'attachment_view.xml' | 47 | 'attachment_view.xml' |
10 | 47 | ], | 48 | ], |
11 | 48 | 'test': [], | 49 | 'test': [], |
12 | 49 | 50 | ||
13 | === modified file 'bin/addons/account_override/account_view.xml' | |||
14 | --- bin/addons/account_override/account_view.xml 2018-09-06 12:58:16 +0000 | |||
15 | +++ bin/addons/account_override/account_view.xml 2018-11-07 14:15:37 +0000 | |||
16 | @@ -206,15 +206,5 @@ | |||
17 | 206 | menu="False" | 206 | menu="False" |
18 | 207 | /> | 207 | /> |
19 | 208 | 208 | ||
20 | 209 | |||
21 | 210 | <menuitem | ||
22 | 211 | name="Entries Data Integrity" | ||
23 | 212 | action="board.integrity_finance" | ||
24 | 213 | id="menu_integrity_finance" | ||
25 | 214 | parent="account.menu_finance_generic_reporting" | ||
26 | 215 | sequence="100" | ||
27 | 216 | type="report.xml" | ||
28 | 217 | /> | ||
29 | 218 | |||
30 | 219 | </data> | 209 | </data> |
31 | 220 | </openerp> | 210 | </openerp> |
32 | 221 | 211 | ||
33 | === modified file 'bin/addons/account_override/period.py' | |||
34 | --- bin/addons/account_override/period.py 2017-12-01 16:19:33 +0000 | |||
35 | +++ bin/addons/account_override/period.py 2018-11-07 14:15:37 +0000 | |||
36 | @@ -22,6 +22,8 @@ | |||
37 | 22 | ############################################################################## | 22 | ############################################################################## |
38 | 23 | 23 | ||
39 | 24 | from osv import osv | 24 | from osv import osv |
40 | 25 | from tools.translate import _ | ||
41 | 26 | |||
42 | 25 | 27 | ||
43 | 26 | def get_period_from_date(self, cr, uid, date=False, context=None): | 28 | def get_period_from_date(self, cr, uid, date=False, context=None): |
44 | 27 | """ | 29 | """ |
45 | @@ -100,6 +102,42 @@ | |||
46 | 100 | period_id = period_id and get_next_period_id(self, cr, uid, period_id, context=context) | 102 | period_id = period_id and get_next_period_id(self, cr, uid, period_id, context=context) |
47 | 101 | return period_id or False | 103 | return period_id or False |
48 | 102 | 104 | ||
49 | 105 | |||
50 | 106 | def get_period_range(self, cr, uid, period_from_id, period_to_id, context=None): | ||
51 | 107 | """ | ||
52 | 108 | Returns the ids of all the periods included between 2 other periods. | ||
53 | 109 | Special periods 13 to 16 are included, period 0 is excluded. | ||
54 | 110 | """ | ||
55 | 111 | if context is None: | ||
56 | 112 | context = {} | ||
57 | 113 | field_list = ['number', 'fiscalyear_id', 'date_start'] | ||
58 | 114 | initial_period = self.browse(cr, uid, period_from_id, fields_to_fetch=field_list, context=context) | ||
59 | 115 | final_period = self.browse(cr, uid, period_to_id, fields_to_fetch=field_list, context=context) | ||
60 | 116 | initial_fy_id = initial_period.fiscalyear_id.id | ||
61 | 117 | initial_number = initial_period.number | ||
62 | 118 | final_fy_id = final_period.fiscalyear_id.id | ||
63 | 119 | final_number = final_period.number | ||
64 | 120 | same_fy = initial_fy_id == final_fy_id | ||
65 | 121 | if (final_period.date_start < initial_period.date_start) or \ | ||
66 | 122 | (same_fy and final_period.number < initial_period.number): # e.g. Period 13 2018 precedes Period 14 2018 | ||
67 | 123 | raise osv.except_osv(_('Error'), _("The End period can't precede the Start period.")) | ||
68 | 124 | if same_fy: # all the periods are within the same Fiscal Year | ||
69 | 125 | period_dom = [ | ||
70 | 126 | ('number', '!=', 0), | ||
71 | 127 | ('number', '>=', initial_number), | ||
72 | 128 | ('number', '<=', final_number), | ||
73 | 129 | ('fiscalyear_id', '=', initial_fy_id)] | ||
74 | 130 | else: | ||
75 | 131 | # ex: from Nov. 2018 to Jan. 2019 => Nov 2018 / Dec 2018 / Periods 13->16 2018 / Jan 2019 | ||
76 | 132 | period_dom = [ | ||
77 | 133 | ('number', '!=', 0), | ||
78 | 134 | '|', | ||
79 | 135 | '&', ('number', '>=', initial_number), ('fiscalyear_id', '=', initial_fy_id), | ||
80 | 136 | '&', ('number', '<=', final_number), ('fiscalyear_id', '=', final_fy_id)] | ||
81 | 137 | period_ids = self.search(cr, uid, period_dom, order='id', context=context) | ||
82 | 138 | return period_ids | ||
83 | 139 | |||
84 | 140 | |||
85 | 103 | class account_period(osv.osv): | 141 | class account_period(osv.osv): |
86 | 104 | _name = 'account.period' | 142 | _name = 'account.period' |
87 | 105 | _inherit = 'account.period' | 143 | _inherit = 'account.period' |
88 | @@ -116,5 +154,9 @@ | |||
89 | 116 | def get_next_period_id_at_index(self, cr, uid, period_id, index, context=None): | 154 | def get_next_period_id_at_index(self, cr, uid, period_id, index, context=None): |
90 | 117 | return get_next_period_id_at_index(self, cr, uid, period_id, index, context) | 155 | return get_next_period_id_at_index(self, cr, uid, period_id, index, context) |
91 | 118 | 156 | ||
92 | 157 | def get_period_range(self, cr, uid, period_from_id, period_to_id, context=None): | ||
93 | 158 | return get_period_range(self, cr, uid, period_from_id, period_to_id, context=context) | ||
94 | 159 | |||
95 | 160 | |||
96 | 119 | account_period() | 161 | account_period() |
97 | 120 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | 162 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
98 | 121 | 163 | ||
99 | === modified file 'bin/addons/account_override/wizard/__init__.py' | |||
100 | --- bin/addons/account_override/wizard/__init__.py 2017-08-02 09:28:06 +0000 | |||
101 | +++ bin/addons/account_override/wizard/__init__.py 2018-11-07 14:15:37 +0000 | |||
102 | @@ -2,3 +2,4 @@ | |||
103 | 2 | import split_invoice | 2 | import split_invoice |
104 | 3 | import import_invoice | 3 | import import_invoice |
105 | 4 | import report_paid_invoices | 4 | import report_paid_invoices |
106 | 5 | import integrity_finance_wizard | ||
107 | 5 | 6 | ||
108 | === added file 'bin/addons/account_override/wizard/integrity_finance_wizard.py' | |||
109 | --- bin/addons/account_override/wizard/integrity_finance_wizard.py 1970-01-01 00:00:00 +0000 | |||
110 | +++ bin/addons/account_override/wizard/integrity_finance_wizard.py 2018-11-07 14:15:37 +0000 | |||
111 | @@ -0,0 +1,121 @@ | |||
112 | 1 | # -*- coding: utf-8 -*- | ||
113 | 2 | ############################################################################## | ||
114 | 3 | # | ||
115 | 4 | # OpenERP, Open Source Management Solution | ||
116 | 5 | # Copyright (C) 2018 TeMPO Consulting, MSF. All Rights Reserved | ||
117 | 6 | # | ||
118 | 7 | # This program is free software: you can redistribute it and/or modify | ||
119 | 8 | # it under the terms of the GNU Affero General Public License as | ||
120 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
121 | 10 | # License, or (at your option) any later version. | ||
122 | 11 | # | ||
123 | 12 | # This program is distributed in the hope that it will be useful, | ||
124 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
125 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
126 | 15 | # GNU Affero General Public License for more details. | ||
127 | 16 | # | ||
128 | 17 | # You should have received a copy of the GNU Affero General Public License | ||
129 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
130 | 19 | # | ||
131 | 20 | ############################################################################## | ||
132 | 21 | |||
133 | 22 | from osv import fields | ||
134 | 23 | from osv import osv | ||
135 | 24 | from tools.translate import _ | ||
136 | 25 | |||
137 | 26 | from datetime import datetime | ||
138 | 27 | |||
139 | 28 | |||
140 | 29 | class integrity_finance_wizard(osv.osv_memory): | ||
141 | 30 | _name = 'integrity.finance.wizard' | ||
142 | 31 | |||
143 | 32 | _columns = { | ||
144 | 33 | 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal year'), | ||
145 | 34 | 'filter': fields.selection([ | ||
146 | 35 | ('filter_no', 'No Filters'), | ||
147 | 36 | ('filter_date_doc', 'Document Date'), | ||
148 | 37 | ('filter_date', 'Posting Date'), | ||
149 | 38 | ('filter_period', 'Period') | ||
150 | 39 | ], "Filter by", required=True), | ||
151 | 40 | 'period_from': fields.many2one('account.period', 'Start period'), | ||
152 | 41 | 'period_to': fields.many2one('account.period', 'End period'), | ||
153 | 42 | 'date_from': fields.date("Start date"), | ||
154 | 43 | 'date_to': fields.date("End date"), | ||
155 | 44 | 'instance_ids': fields.many2many('msf.instance', 'integrity_finance_wizard_instance_rel', | ||
156 | 45 | 'wizard_id', 'instance_id', | ||
157 | 46 | string='Proprietary Instances'), | ||
158 | 47 | } | ||
159 | 48 | |||
160 | 49 | _defaults = { | ||
161 | 50 | 'filter': 'filter_no', | ||
162 | 51 | } | ||
163 | 52 | |||
164 | 53 | def onchange_filter(self, cr, uid, ids, filter, context=None): | ||
165 | 54 | """ | ||
166 | 55 | Adapts the date/period filter according to the selection made in "Filter by" | ||
167 | 56 | """ | ||
168 | 57 | res = {} | ||
169 | 58 | if filter == 'filter_no': | ||
170 | 59 | res['value'] = {'period_from': False, 'period_to': False, 'date_from': False, 'date_to': False} | ||
171 | 60 | elif filter in ('filter_date', 'filter_date_doc', ): | ||
172 | 61 | res['value'] = {'period_from': False, 'period_to': False} | ||
173 | 62 | elif filter == 'filter_period': | ||
174 | 63 | res['value'] = {'date_from': False, 'date_to': False} | ||
175 | 64 | return res | ||
176 | 65 | |||
177 | 66 | def onchange_fiscalyear_id(self, cr, uid, ids, fiscalyear_id, context=None): | ||
178 | 67 | """ | ||
179 | 68 | (Only) if a FY is selected: resets the periods selected and restricts their domain to within the FY | ||
180 | 69 | """ | ||
181 | 70 | res = {} | ||
182 | 71 | if fiscalyear_id: | ||
183 | 72 | res = { | ||
184 | 73 | 'value': { | ||
185 | 74 | 'period_from': False, | ||
186 | 75 | 'period_to': False, | ||
187 | 76 | }, | ||
188 | 77 | 'domain': { | ||
189 | 78 | 'period_from': [('fiscalyear_id', '=', fiscalyear_id)], | ||
190 | 79 | 'period_to': [('fiscalyear_id', '=', fiscalyear_id)], | ||
191 | 80 | } | ||
192 | 81 | } | ||
193 | 82 | return res | ||
194 | 83 | |||
195 | 84 | def print_integrity_finance_report(self, cr, uid, ids, context=None): | ||
196 | 85 | """ | ||
197 | 86 | Prints the "Entries Data Integrity" report | ||
198 | 87 | """ | ||
199 | 88 | if context is None: | ||
200 | 89 | context = {} | ||
201 | 90 | if isinstance(ids, (int, long)): | ||
202 | 91 | ids = [ids] | ||
203 | 92 | user_obj = self.pool.get('res.users') | ||
204 | 93 | wiz = self.browse(cr, uid, ids[0], context=context) | ||
205 | 94 | data = { | ||
206 | 95 | 'form': {}, | ||
207 | 96 | 'context': context, | ||
208 | 97 | } | ||
209 | 98 | # store the selected criteria | ||
210 | 99 | data['form'].update({ | ||
211 | 100 | 'fiscalyear_id': wiz.fiscalyear_id and wiz.fiscalyear_id.id or False, | ||
212 | 101 | 'filter': wiz.filter, | ||
213 | 102 | 'period_from': wiz.period_from and wiz.period_from.id or False, | ||
214 | 103 | 'period_to': wiz.period_to and wiz.period_to.id or False, | ||
215 | 104 | 'date_from': wiz.date_from or False, | ||
216 | 105 | 'date_to': wiz.date_to or False, | ||
217 | 106 | 'instance_ids': wiz.instance_ids and [inst.id for inst in wiz.instance_ids], | ||
218 | 107 | }) | ||
219 | 108 | company = user_obj.browse(cr, uid, uid, fields_to_fetch=['company_id'], context=context).company_id | ||
220 | 109 | current_instance = company.instance_id and company.instance_id.code or '' | ||
221 | 110 | current_date = datetime.today().strftime('%Y%m%d') | ||
222 | 111 | data['target_filename'] = "%s %s %s" % (_('Entries Data Integrity'), current_instance, current_date) | ||
223 | 112 | return { | ||
224 | 113 | 'type': 'ir.actions.report.xml', | ||
225 | 114 | 'report_name': 'integrity.finance', | ||
226 | 115 | 'datas': data, | ||
227 | 116 | 'context': context, | ||
228 | 117 | } | ||
229 | 118 | |||
230 | 119 | |||
231 | 120 | integrity_finance_wizard() | ||
232 | 121 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
233 | 0 | 122 | ||
234 | === added file 'bin/addons/account_override/wizard/integrity_finance_wizard_view.xml' | |||
235 | --- bin/addons/account_override/wizard/integrity_finance_wizard_view.xml 1970-01-01 00:00:00 +0000 | |||
236 | +++ bin/addons/account_override/wizard/integrity_finance_wizard_view.xml 2018-11-07 14:15:37 +0000 | |||
237 | @@ -0,0 +1,63 @@ | |||
238 | 1 | <?xml version="1.0" encoding="utf-8"?> | ||
239 | 2 | <openerp> | ||
240 | 3 | <data> | ||
241 | 4 | |||
242 | 5 | <!-- Entries Data Integrity - Wizard --> | ||
243 | 6 | <record id="integrity_finance_wizard_view" model="ir.ui.view"> | ||
244 | 7 | <field name="name">Entries Data Integrity</field> | ||
245 | 8 | <field name="model">integrity.finance.wizard</field> | ||
246 | 9 | <field name="type">form</field> | ||
247 | 10 | <field name="arch" type="xml"> | ||
248 | 11 | <form> | ||
249 | 12 | <field name="instance_ids" domain="[('instance_to_display_ids', '=', True)]"> | ||
250 | 13 | <tree noteditable="1"> | ||
251 | 14 | <field name="code"/> | ||
252 | 15 | <field name="name"/> | ||
253 | 16 | </tree> | ||
254 | 17 | </field> | ||
255 | 18 | <field name="fiscalyear_id" on_change="onchange_fiscalyear_id(fiscalyear_id)"/> | ||
256 | 19 | <notebook tabpos="up" colspan="4"> | ||
257 | 20 | <page string="Filters" name="filters"> | ||
258 | 21 | <field name="filter" on_change="onchange_filter(filter)" colspan="4"/> | ||
259 | 22 | <separator string="Dates" colspan="4"/> | ||
260 | 23 | <field name="date_from" attrs="{'readonly': [('filter', 'not in', ('filter_date', 'filter_date_doc'))], | ||
261 | 24 | 'required': [('filter', 'in', ('filter_date', 'filter_date_doc'))]}" colspan="4"/> | ||
262 | 25 | <field name="date_to" attrs="{'readonly': [('filter', 'not in', ('filter_date', 'filter_date_doc'))], | ||
263 | 26 | 'required': [('filter', 'in', ('filter_date', 'filter_date_doc'))]}" colspan="4"/> | ||
264 | 27 | <separator string="Periods" colspan="4"/> | ||
265 | 28 | <field name="period_from" | ||
266 | 29 | attrs="{'readonly': [('filter', '!=', 'filter_period')], | ||
267 | 30 | 'required':[('filter', '=', 'filter_period')]}" colspan="4"/> | ||
268 | 31 | <field name="period_to" | ||
269 | 32 | attrs="{'readonly': [('filter', '!=', 'filter_period')], | ||
270 | 33 | 'required':[('filter', '=', 'filter_period')]}" colspan="4"/> | ||
271 | 34 | </page> | ||
272 | 35 | </notebook> | ||
273 | 36 | <group colspan="6" col="4"> | ||
274 | 37 | <button icon="gtk-cancel" string="Cancel" special="cancel" colspan="2"/> | ||
275 | 38 | <button icon="gtk-print" string="Print" name="print_integrity_finance_report" type="object" | ||
276 | 39 | default_focus="1" colspan="2"/> | ||
277 | 40 | </group> | ||
278 | 41 | </form> | ||
279 | 42 | </field> | ||
280 | 43 | </record> | ||
281 | 44 | |||
282 | 45 | <!-- Entries Data Integrity - Menu Entry --> | ||
283 | 46 | <record id="action_integrity_finance_report" model="ir.actions.act_window"> | ||
284 | 47 | <field name="name">Entries Data Integrity</field> | ||
285 | 48 | <field name="res_model">integrity.finance.wizard</field> | ||
286 | 49 | <field name="type">ir.actions.act_window</field> | ||
287 | 50 | <field name="view_type">form</field> | ||
288 | 51 | <field name="view_mode">form</field> | ||
289 | 52 | <field name="view_id" ref="integrity_finance_wizard_view"/> | ||
290 | 53 | <field name="target">new</field> | ||
291 | 54 | </record> | ||
292 | 55 | <menuitem | ||
293 | 56 | name="Entries Data Integrity" | ||
294 | 57 | action="action_integrity_finance_report" | ||
295 | 58 | id="menu_integrity_finance_report" | ||
296 | 59 | parent="account.menu_finance_generic_reporting" | ||
297 | 60 | sequence="100"/> | ||
298 | 61 | |||
299 | 62 | </data> | ||
300 | 63 | </openerp> | ||
301 | 0 | 64 | ||
302 | === modified file 'bin/addons/board/queries_finance.py' | |||
303 | --- bin/addons/board/queries_finance.py 2018-02-19 16:13:36 +0000 | |||
304 | +++ bin/addons/board/queries_finance.py 2018-11-07 14:15:37 +0000 | |||
305 | @@ -7,6 +7,7 @@ | |||
306 | 7 | 7 | ||
307 | 8 | queries = [ | 8 | queries = [ |
308 | 9 | { | 9 | { |
309 | 10 | 'ref': 'ji_unbalanced_booking', | ||
310 | 10 | 'title': _('Journal Items that are not balanced in booking currency'), | 11 | 'title': _('Journal Items that are not balanced in booking currency'), |
311 | 11 | 'headers': [_('Period'), _('Entry Sequence'), _('Difference')], | 12 | 'headers': [_('Period'), _('Entry Sequence'), _('Difference')], |
312 | 12 | 'query': """select p.name period, m.name, sum(l.credit_currency-l.debit_currency) difference | 13 | 'query': """select p.name period, m.name, sum(l.credit_currency-l.debit_currency) difference |
313 | @@ -20,12 +21,14 @@ | |||
314 | 20 | m.state='posted' and | 21 | m.state='posted' and |
315 | 21 | m.journal_id = j.id and | 22 | m.journal_id = j.id and |
316 | 22 | j.type != 'system' | 23 | j.type != 'system' |
317 | 24 | %s | ||
318 | 23 | group by p.name, m.name, l.move_id, p.date_start | 25 | group by p.name, m.name, l.move_id, p.date_start |
319 | 24 | having abs(sum(l.credit_currency-l.debit_currency)) > 0.00001 | 26 | having abs(sum(l.credit_currency-l.debit_currency)) > 0.00001 |
321 | 25 | order by p.date_start, m.name | 27 | order by p.date_start, m.name; |
322 | 26 | """ | 28 | """ |
323 | 27 | }, | 29 | }, |
324 | 28 | { | 30 | { |
325 | 31 | 'ref': 'ji_unbalanced_fctal', | ||
326 | 29 | 'title': _('Journal Items that are not balanced in functional currency'), | 32 | 'title': _('Journal Items that are not balanced in functional currency'), |
327 | 30 | 'headers': [_('Period'), _('Entry Sequence'), _('Difference')], | 33 | 'headers': [_('Period'), _('Entry Sequence'), _('Difference')], |
328 | 31 | 'query': """select p.name period, m.name, sum(l.credit-l.debit) difference | 34 | 'query': """select p.name period, m.name, sum(l.credit-l.debit) difference |
329 | @@ -39,82 +42,91 @@ | |||
330 | 39 | m.state='posted' and | 42 | m.state='posted' and |
331 | 40 | m.journal_id = j.id and | 43 | m.journal_id = j.id and |
332 | 41 | j.type != 'system' | 44 | j.type != 'system' |
333 | 45 | %s | ||
334 | 42 | group by p.name, m.name, l.move_id, p.date_start | 46 | group by p.name, m.name, l.move_id, p.date_start |
335 | 43 | having abs(sum(l.credit-l.debit)) > 0.00001 | 47 | having abs(sum(l.credit-l.debit)) > 0.00001 |
337 | 44 | order by p.date_start, m.name""" | 48 | order by p.date_start, m.name;""" |
338 | 45 | }, | 49 | }, |
339 | 46 | { | 50 | { |
340 | 51 | 'ref': 'mismatch_ji_aji_booking', | ||
341 | 47 | 'title': _('P&L Journal Items vs Analytic Journal Items mismatch in booking currency (except FXA and REV)'), | 52 | 'title': _('P&L Journal Items vs Analytic Journal Items mismatch in booking currency (except FXA and REV)'), |
342 | 48 | 'headers': [_('Period'), _('Entry Sequence'), _('Account Code'), _('JI Book. Amount'), _('AJI Book. Amount'), _('Difference')], | 53 | 'headers': [_('Period'), _('Entry Sequence'), _('Account Code'), _('JI Book. Amount'), _('AJI Book. Amount'), _('Difference')], |
343 | 49 | 'query': """SELECT | 54 | 'query': """SELECT |
344 | 50 | account_period.name, | 55 | account_period.name, |
346 | 51 | account_move.name, | 56 | m.name, |
347 | 52 | account_account.code, | 57 | account_account.code, |
349 | 53 | avg(account_move_line.credit_currency-account_move_line.debit_currency) JI, | 58 | avg(l.credit_currency - l.debit_currency) JI, |
350 | 54 | sum(COALESCE(account_analytic_line.amount_currency, 0)) AJI, | 59 | sum(COALESCE(account_analytic_line.amount_currency, 0)) AJI, |
352 | 55 | abs(abs(avg(account_move_line.debit_currency-account_move_line.credit_currency)) - abs(sum(COALESCE(account_analytic_line.amount_currency, 0)))) difference | 60 | abs(abs(avg(l.debit_currency - l.credit_currency)) - abs(sum(COALESCE(account_analytic_line.amount_currency, 0)))) difference |
353 | 56 | FROM | 61 | FROM |
360 | 57 | account_move_line | 62 | account_move_line l |
361 | 58 | JOIN account_move ON account_move.id = account_move_line.move_id | 63 | JOIN account_move m ON m.id = l.move_id |
362 | 59 | JOIN account_account ON account_account.id = account_move_line.account_id | 64 | JOIN account_account ON account_account.id = l.account_id |
363 | 60 | JOIN account_journal ON account_journal.id = account_move.journal_id | 65 | JOIN account_journal ON account_journal.id = m.journal_id |
364 | 61 | JOIN account_period ON account_move.period_id = account_period.id | 66 | JOIN account_period ON m.period_id = account_period.id |
365 | 62 | LEFT JOIN account_analytic_line on account_analytic_line.move_id = account_move_line.id | 67 | LEFT JOIN account_analytic_line on account_analytic_line.move_id = l.id |
366 | 63 | LEFT JOIN account_analytic_account ON account_analytic_line.account_id = account_analytic_account.id | 68 | LEFT JOIN account_analytic_account ON account_analytic_line.account_id = account_analytic_account.id |
367 | 64 | WHERE | 69 | WHERE |
368 | 65 | account_journal.type not in ('system', 'revaluation', 'cur_adj') AND | 70 | account_journal.type not in ('system', 'revaluation', 'cur_adj') AND |
369 | 66 | account_account.is_analytic_addicted = 't' AND | 71 | account_account.is_analytic_addicted = 't' AND |
370 | 67 | account_analytic_account.category not in ('FREE1', 'FREE2') | 72 | account_analytic_account.category not in ('FREE1', 'FREE2') |
374 | 68 | GROUP BY account_period.name, account_move.name, account_move_line.id, account_period.date_start, account_account.code | 73 | %s |
375 | 69 | HAVING abs(abs(avg(account_move_line.debit_currency-account_move_line.credit_currency)) - abs(sum(COALESCE(account_analytic_line.amount_currency, 0)))) > 0.00001 | 74 | GROUP BY account_period.name, m.name, l.id, account_period.date_start, account_account.code |
376 | 70 | ORDER BY account_period.date_start, account_move.name""" | 75 | HAVING abs(abs(avg(l.debit_currency - l.credit_currency)) - abs(sum(COALESCE(account_analytic_line.amount_currency, 0)))) > 0.00001 |
377 | 76 | ORDER BY account_period.date_start, m.name;""" | ||
378 | 71 | }, | 77 | }, |
379 | 72 | { | 78 | { |
380 | 79 | 'ref': 'mismatch_ji_aji_fctal', | ||
381 | 73 | 'title': _('P&L Journal Items vs Analytic Journal Items mismatch in functional currency (FXA and REV only)'), | 80 | 'title': _('P&L Journal Items vs Analytic Journal Items mismatch in functional currency (FXA and REV only)'), |
382 | 74 | 'headers': [_('Period'), _('Entry Sequence'), _('Account Code'), _('JI Func. Amount'), _('AJI Func. Amount'), _('Difference')], | 81 | 'headers': [_('Period'), _('Entry Sequence'), _('Account Code'), _('JI Func. Amount'), _('AJI Func. Amount'), _('Difference')], |
383 | 75 | 'query': """SELECT | 82 | 'query': """SELECT |
384 | 76 | account_period.name, | 83 | account_period.name, |
386 | 77 | account_move.name, | 84 | m.name, |
387 | 78 | account_account.code, | 85 | account_account.code, |
389 | 79 | avg(account_move_line.credit-account_move_line.debit) JI, | 86 | avg(l.credit - l.debit) JI, |
390 | 80 | sum(COALESCE(account_analytic_line.amount, 0)) AJI, | 87 | sum(COALESCE(account_analytic_line.amount, 0)) AJI, |
392 | 81 | abs(avg(account_move_line.credit-account_move_line.debit) - sum(COALESCE(account_analytic_line.amount, 0))) difference | 88 | abs(avg(l.credit - l.debit) - sum(COALESCE(account_analytic_line.amount, 0))) difference |
393 | 82 | FROM | 89 | FROM |
400 | 83 | account_move_line | 90 | account_move_line l |
401 | 84 | JOIN account_move ON account_move.id = account_move_line.move_id | 91 | JOIN account_move m ON m.id = l.move_id |
402 | 85 | JOIN account_account ON account_account.id = account_move_line.account_id | 92 | JOIN account_account ON account_account.id = l.account_id |
403 | 86 | JOIN account_journal ON account_move.journal_id = account_journal.id | 93 | JOIN account_journal ON m.journal_id = account_journal.id |
404 | 87 | JOIN account_period ON account_period.id = account_move.period_id | 94 | JOIN account_period ON account_period.id = m.period_id |
405 | 88 | LEFT JOIN account_analytic_line ON account_analytic_line.move_id = account_move_line.id | 95 | LEFT JOIN account_analytic_line ON account_analytic_line.move_id = l.id |
406 | 89 | LEFT JOIN account_analytic_account ON account_analytic_line.account_id = account_analytic_account.id | 96 | LEFT JOIN account_analytic_account ON account_analytic_line.account_id = account_analytic_account.id |
407 | 90 | WHERE | 97 | WHERE |
408 | 91 | account_journal.type in ('revaluation', 'cur_adj') AND | 98 | account_journal.type in ('revaluation', 'cur_adj') AND |
409 | 92 | account_account.is_analytic_addicted = 't' AND | 99 | account_account.is_analytic_addicted = 't' AND |
410 | 93 | account_analytic_account.category not in ('FREE1', 'FREE2') | 100 | account_analytic_account.category not in ('FREE1', 'FREE2') |
414 | 94 | GROUP BY account_period.name, account_move.name, account_move_line.id, account_period.date_start, account_account.code | 101 | %s |
415 | 95 | HAVING abs(avg(account_move_line.credit-account_move_line.debit) - sum(COALESCE(account_analytic_line.amount, 0))) > 0.00001 | 102 | GROUP BY account_period.name, m.name, l.id, account_period.date_start, account_account.code |
416 | 96 | order by account_period.date_start, account_move.name""" | 103 | HAVING abs(avg(l.credit - l.debit) - sum(COALESCE(account_analytic_line.amount, 0))) > 0.00001 |
417 | 104 | order by account_period.date_start, m.name;""" | ||
418 | 97 | }, | 105 | }, |
419 | 98 | { | 106 | { |
420 | 107 | 'ref': 'unbalanced_rec_fctal', | ||
421 | 99 | 'title': _('Unbalanced reconciliations in functional currency'), | 108 | 'title': _('Unbalanced reconciliations in functional currency'), |
424 | 100 | 'headers': [_('Reconcile number'), _('Difference')], | 109 | 'headers': [_('Reconcile number'), _('Reconcile date'), _('Difference')], |
425 | 101 | 'query': """SELECT rec.name, sum(l.credit-l.debit) | 110 | 'query': """SELECT rec.name, 'rec_date', sum(l.credit-l.debit) |
426 | 102 | from account_move_line l, account_move_reconcile rec | 111 | from account_move_line l, account_move_reconcile rec |
427 | 103 | where l.reconcile_id=rec.id | 112 | where l.reconcile_id=rec.id |
428 | 113 | %s | ||
429 | 104 | group by rec.id, rec.name | 114 | group by rec.id, rec.name |
430 | 105 | having(abs(sum(l.credit-l.debit)) > 0.0001) | 115 | having(abs(sum(l.credit-l.debit)) > 0.0001) |
432 | 106 | order by rec.name | 116 | order by rec.name; |
433 | 107 | """ | 117 | """ |
434 | 108 | }, | 118 | }, |
435 | 109 | { | 119 | { |
436 | 120 | 'ref': 'unbalanced_rec_booking', | ||
437 | 110 | 'title': _('Unbalanced reconciliations in booking currency'), | 121 | 'title': _('Unbalanced reconciliations in booking currency'), |
440 | 111 | 'headers': [_('Reconcile number'), _('Difference')], | 122 | 'headers': [_('Reconcile number'), _('Reconcile date'), _('Difference')], |
441 | 112 | 'query': """SELECT rec.name, sum(l.credit_currency-l.debit_currency) | 123 | 'query': """SELECT rec.name, 'rec_date', sum(l.credit_currency-l.debit_currency) |
442 | 113 | from account_move_line l, account_move_reconcile rec | 124 | from account_move_line l, account_move_reconcile rec |
443 | 114 | where l.reconcile_id=rec.id | 125 | where l.reconcile_id=rec.id |
444 | 126 | %s | ||
445 | 115 | group by rec.id, rec.name | 127 | group by rec.id, rec.name |
446 | 116 | having(abs(sum(l.credit_currency-l.debit_currency)) > 0.0001 and count(distinct(l.currency_id))=1) | 128 | having(abs(sum(l.credit_currency-l.debit_currency)) > 0.0001 and count(distinct(l.currency_id))=1) |
448 | 117 | order by rec.name | 129 | order by rec.name; |
449 | 118 | """ | 130 | """ |
450 | 119 | }, | 131 | }, |
451 | 120 | ] | 132 | ] |
452 | 121 | 133 | ||
453 | === modified file 'bin/addons/board/report/integrity.mako' | |||
454 | --- bin/addons/board/report/integrity.mako 2016-11-09 16:46:03 +0000 | |||
455 | +++ bin/addons/board/report/integrity.mako 2018-11-07 14:15:37 +0000 | |||
456 | @@ -93,16 +93,24 @@ | |||
457 | 93 | <Cell ss:StyleID="ssH"><Data ss:Type="String">${_t(header)|x}</Data></Cell> | 93 | <Cell ss:StyleID="ssH"><Data ss:Type="String">${_t(header)|x}</Data></Cell> |
458 | 94 | % endfor | 94 | % endfor |
459 | 95 | </Row> | 95 | </Row> |
461 | 96 | % for result in get_results(check.get('query')): | 96 | % for result in get_results(check.get('query'), check.get('ref')): |
462 | 97 | <Row> | 97 | <Row> |
463 | 98 | % for cell in result: | 98 | % for cell in result: |
467 | 99 | <Cell ss:StyleID="ssBorder"> | 99 | % if cell == 'rec_date': |
468 | 100 | % if isinstance(cell, (int, float, long)): | 100 | <% |
469 | 101 | <Data ss:Type="Number">${cell}</Data> | 101 | reconcile_ref = result[0] |
470 | 102 | reconcile_date = get_reconcile_date(reconcile_ref) | ||
471 | 103 | %> | ||
472 | 104 | % if reconcile_date: | ||
473 | 105 | <Cell ss:StyleID="sShortDate"><Data ss:Type="DateTime">${reconcile_date|n}T00:00:00.000</Data></Cell> | ||
474 | 106 | % else: | ||
475 | 107 | <Cell ss:StyleID="ssBorder"></Cell> | ||
476 | 108 | % endif | ||
477 | 109 | % elif isinstance(cell, (int, float, long)): | ||
478 | 110 | <Cell ss:StyleID="ssBorder"><Data ss:Type="Number">${cell}</Data></Cell> | ||
479 | 102 | % else: | 111 | % else: |
481 | 103 | <Data ss:Type="String">${cell|x}</Data> | 112 | <Cell ss:StyleID="ssBorder"><Data ss:Type="String">${cell|x}</Data></Cell> |
482 | 104 | % endif | 113 | % endif |
483 | 105 | </Cell> | ||
484 | 106 | %endfor | 114 | %endfor |
485 | 107 | </Row> | 115 | </Row> |
486 | 108 | % endfor | 116 | % endfor |
487 | 109 | 117 | ||
488 | === modified file 'bin/addons/board/report/integrity_finance.py' | |||
489 | --- bin/addons/board/report/integrity_finance.py 2016-11-02 09:29:48 +0000 | |||
490 | +++ bin/addons/board/report/integrity_finance.py 2018-11-07 14:15:37 +0000 | |||
491 | @@ -3,31 +3,162 @@ | |||
492 | 3 | from report import report_sxw | 3 | from report import report_sxw |
493 | 4 | from spreadsheet_xml.spreadsheet_xml_write import SpreadsheetReport | 4 | from spreadsheet_xml.spreadsheet_xml_write import SpreadsheetReport |
494 | 5 | from board import queries_finance | 5 | from board import queries_finance |
495 | 6 | from osv import osv | ||
496 | 6 | from tools.translate import _ | 7 | from tools.translate import _ |
497 | 7 | 8 | ||
498 | 8 | 9 | ||
499 | 9 | class integrity_finance(report_sxw.rml_parse): | 10 | class integrity_finance(report_sxw.rml_parse): |
500 | 10 | def __init__(self, cr, uid, name, context): | 11 | def __init__(self, cr, uid, name, context): |
501 | 11 | super(integrity_finance, self).__init__(cr, uid, name, context=context) | 12 | super(integrity_finance, self).__init__(cr, uid, name, context=context) |
502 | 13 | self.sql_additional = "" # to add the criteria from the wizard filters | ||
503 | 14 | self.sql_params = [] | ||
504 | 15 | self.sql_rec_additional = "" # specific to queries related to reconciliations | ||
505 | 16 | self.sql_rec_params = [] | ||
506 | 12 | self.localcontext.update({ | 17 | self.localcontext.update({ |
507 | 13 | 'get_title': self.get_title, | 18 | 'get_title': self.get_title, |
508 | 14 | 'list_checks': self.list_checks, | 19 | 'list_checks': self.list_checks, |
509 | 15 | 'get_results': self.get_results, | 20 | 'get_results': self.get_results, |
510 | 21 | 'get_reconcile_date': self.get_reconcile_date, | ||
511 | 16 | '_t': self._t, | 22 | '_t': self._t, |
512 | 17 | }) | 23 | }) |
513 | 18 | 24 | ||
514 | 25 | def set_context(self, objects, data, ids, report_type=None): | ||
515 | 26 | """ | ||
516 | 27 | Fills in: | ||
517 | 28 | - self.sql_additional and self.sql_rec_additional with the part of SQL request corresponding to the criteria selected (string) | ||
518 | 29 | - self.sql_params and self.sql_rec_params with the related parameters (list) | ||
519 | 30 | |||
520 | 31 | For reconciliation queries the reconciliation dates must be within the FY/periods/dates selected. | ||
521 | 32 | For other queries the JI dates are used. | ||
522 | 33 | """ | ||
523 | 34 | period_obj = self.pool.get('account.period') | ||
524 | 35 | fy_obj = self.pool.get('account.fiscalyear') | ||
525 | 36 | if data.get('form', False): | ||
526 | 37 | # note: the JE id is used and not the JI one to make sure whole entries are retrieved (cf. JI doc dates can differ within a JE) | ||
527 | 38 | sql_additional_subreq = """ | ||
528 | 39 | AND m.id IN | ||
529 | 40 | ( | ||
530 | 41 | SELECT DISTINCT (m.id) | ||
531 | 42 | FROM account_move m, account_move_line l | ||
532 | 43 | WHERE l.move_id = m.id | ||
533 | 44 | %s | ||
534 | 45 | ) | ||
535 | 46 | """ | ||
536 | 47 | sql_rec_additional_subreq = """ | ||
537 | 48 | AND l.reconcile_id IN | ||
538 | 49 | ( | ||
539 | 50 | SELECT DISTINCT (reconcile_id) | ||
540 | 51 | FROM account_move_line | ||
541 | 52 | WHERE reconcile_id IS NOT NULL | ||
542 | 53 | %s | ||
543 | 54 | ) | ||
544 | 55 | """ | ||
545 | 56 | # instances | ||
546 | 57 | instance_ids = data['form'].get('instance_ids', False) | ||
547 | 58 | if instance_ids: | ||
548 | 59 | self.sql_additional += " AND l.instance_id IN %s " | ||
549 | 60 | self.sql_params.append(tuple(instance_ids,)) | ||
550 | 61 | self.sql_rec_additional += " AND instance_id IN %s " | ||
551 | 62 | self.sql_rec_params.append(tuple(instance_ids,)) | ||
552 | 63 | # FY | ||
553 | 64 | fiscalyear_id = data['form'].get('fiscalyear_id', False) | ||
554 | 65 | if fiscalyear_id: | ||
555 | 66 | self.sql_additional += " AND l.period_id IN (SELECT id FROM account_period WHERE fiscalyear_id = %s) " | ||
556 | 67 | self.sql_params.append(fiscalyear_id) | ||
557 | 68 | fiscalyear = fy_obj.browse(self.cr, self.uid, fiscalyear_id, fields_to_fetch=['date_start', 'date_stop'], context=data.get('context', {})) | ||
558 | 69 | self.sql_rec_additional += " AND reconcile_date >= %s AND reconcile_date <= %s " | ||
559 | 70 | self.sql_rec_params.append(fiscalyear.date_start) | ||
560 | 71 | self.sql_rec_params.append(fiscalyear.date_stop) | ||
561 | 72 | wiz_filter = data['form'].get('filter', '') | ||
562 | 73 | # periods | ||
563 | 74 | if wiz_filter == 'filter_period': | ||
564 | 75 | period_from = data['form'].get('period_from', False) | ||
565 | 76 | period_to = data['form'].get('period_to', False) | ||
566 | 77 | if not period_from or not period_to: | ||
567 | 78 | raise osv.except_osv(_('Error'), _('Either the Start period or the End period is missing.')) | ||
568 | 79 | else: | ||
569 | 80 | period_ids = period_obj.get_period_range(self.cr, self.uid, period_from, period_to, context=data.get('context', {})) | ||
570 | 81 | if not period_ids: | ||
571 | 82 | raise osv.except_osv(_('Error'), _('No period matches the selected criteria.')) | ||
572 | 83 | self.sql_additional += " AND l.period_id IN %s " | ||
573 | 84 | self.sql_params.append(tuple(period_ids,)) | ||
574 | 85 | per_from = period_obj.browse(self.cr, self.uid, period_from, fields_to_fetch=['date_start'], context=data.get('context', {})) | ||
575 | 86 | per_to = period_obj.browse(self.cr, self.uid, period_to, fields_to_fetch=['date_stop'], context=data.get('context', {})) | ||
576 | 87 | self.sql_rec_additional += " AND reconcile_date >= %s AND reconcile_date <= %s " | ||
577 | 88 | self.sql_rec_params.append(per_from.date_start) | ||
578 | 89 | self.sql_rec_params.append(per_to.date_stop) | ||
579 | 90 | # dates | ||
580 | 91 | if wiz_filter in ('filter_date_doc', 'filter_date'): | ||
581 | 92 | date_from = data['form'].get('date_from', False) | ||
582 | 93 | date_to = data['form'].get('date_to', False) | ||
583 | 94 | if not date_from or not date_to: | ||
584 | 95 | raise osv.except_osv(_('Error'), _('Either the Start date or the End date is missing.')) | ||
585 | 96 | else: | ||
586 | 97 | if wiz_filter == 'filter_date_doc': | ||
587 | 98 | # JI doc dates | ||
588 | 99 | self.sql_additional += " AND l.document_date >= %s AND l.document_date <= %s " | ||
589 | 100 | else: | ||
590 | 101 | # JI posting dates | ||
591 | 102 | self.sql_additional += " AND l.date >= %s AND l.date <= %s " | ||
592 | 103 | self.sql_params.append(date_from) | ||
593 | 104 | self.sql_params.append(date_to) | ||
594 | 105 | # reconciliation dates | ||
595 | 106 | self.sql_rec_additional += " AND reconcile_date >= %s AND reconcile_date <= %s " | ||
596 | 107 | self.sql_rec_params.append(date_from) | ||
597 | 108 | self.sql_rec_params.append(date_to) | ||
598 | 109 | # LAST STEP: if the request additional parts aren't empty: add the related subrequests | ||
599 | 110 | if self.sql_additional: | ||
600 | 111 | self.sql_additional = sql_additional_subreq % self.sql_additional | ||
601 | 112 | if self.sql_rec_additional: | ||
602 | 113 | self.sql_rec_additional = sql_rec_additional_subreq % self.sql_rec_additional | ||
603 | 114 | return super(integrity_finance, self).set_context(objects, data, ids, report_type=report_type) | ||
604 | 115 | |||
605 | 19 | def get_title(self): | 116 | def get_title(self): |
606 | 20 | return _('Entries Data Integrity') | 117 | return _('Entries Data Integrity') |
607 | 21 | 118 | ||
608 | 22 | def list_checks(self): | 119 | def list_checks(self): |
609 | 23 | return queries_finance.queries | 120 | return queries_finance.queries |
610 | 24 | 121 | ||
612 | 25 | def get_results(self, sql): | 122 | def get_results(self, sql, query_ref): |
613 | 26 | if not sql: | 123 | if not sql: |
614 | 27 | return [] | 124 | return [] |
616 | 28 | self.cr.execute(sql) | 125 | # reconciliation queries |
617 | 126 | if query_ref in ('unbalanced_rec_fctal', 'unbalanced_rec_booking'): | ||
618 | 127 | sql = sql % self.sql_rec_additional | ||
619 | 128 | if self.sql_rec_params: | ||
620 | 129 | self.cr.execute(sql, tuple(self.sql_rec_params)) | ||
621 | 130 | else: | ||
622 | 131 | self.cr.execute(sql) | ||
623 | 132 | # other queries | ||
624 | 133 | else: | ||
625 | 134 | sql = sql % self.sql_additional | ||
626 | 135 | if self.sql_params: | ||
627 | 136 | self.cr.execute(sql, tuple(self.sql_params)) | ||
628 | 137 | else: | ||
629 | 138 | self.cr.execute(sql) | ||
630 | 29 | return self.cr.fetchall() | 139 | return self.cr.fetchall() |
631 | 30 | 140 | ||
632 | 141 | def get_reconcile_date(self, reconcile_ref): | ||
633 | 142 | """ | ||
634 | 143 | Returns the reconcile_date of the reconciliation in parameter (or None if the reconciled entries have no reconcile_date). | ||
635 | 144 | Note that this date isn't retrieved directly in the original requests as there are old entries for which within a same reconciliation | ||
636 | 145 | some lines have a reconcile_date and some others haven't any, so to be consistent the results can't be "grouped by" reconcile date. | ||
637 | 146 | """ | ||
638 | 147 | reconcile_date = None | ||
639 | 148 | if reconcile_ref: | ||
640 | 149 | rec_date_sql = """ | ||
641 | 150 | SELECT reconcile_date | ||
642 | 151 | FROM account_move_line | ||
643 | 152 | WHERE reconcile_date IS NOT NULL | ||
644 | 153 | AND reconcile_id = (SELECT id FROM account_move_reconcile WHERE name = %s LIMIT 1) | ||
645 | 154 | LIMIT 1; | ||
646 | 155 | """ | ||
647 | 156 | self.cr.execute(rec_date_sql, (reconcile_ref,)) | ||
648 | 157 | rec_date_res = self.cr.fetchone() | ||
649 | 158 | if rec_date_res: | ||
650 | 159 | reconcile_date = rec_date_res[0] | ||
651 | 160 | return reconcile_date | ||
652 | 161 | |||
653 | 31 | def _t(self, source): | 162 | def _t(self, source): |
654 | 32 | return _(source) | 163 | return _(source) |
655 | 33 | 164 | ||
656 | 34 | 165 | ||
657 | === modified file 'bin/addons/msf_profile/i18n/fr_MF.po' | |||
658 | --- bin/addons/msf_profile/i18n/fr_MF.po 2018-10-30 10:56:14 +0000 | |||
659 | +++ bin/addons/msf_profile/i18n/fr_MF.po 2018-11-07 14:15:37 +0000 | |||
660 | @@ -10256,7 +10256,7 @@ | |||
661 | 10256 | msgid "Back Order of :" | 10256 | msgid "Back Order of :" |
662 | 10257 | msgstr "Back Order of :" | 10257 | msgstr "Back Order of :" |
663 | 10258 | 10258 | ||
665 | 10259 | #. modules: purchase, account, msf_outgoing, financing_contract, register_accounting, sale, product_expiry, stock | 10259 | #. modules: purchase, account, msf_outgoing, financing_contract, register_accounting, sale, product_expiry, stock, account_override |
666 | 10260 | #: view:account.bank.statement:0 | 10260 | #: view:account.bank.statement:0 |
667 | 10261 | #: view:account.common.report:0 | 10261 | #: view:account.common.report:0 |
668 | 10262 | #: view:account.move:0 | 10262 | #: view:account.move:0 |
669 | @@ -10272,6 +10272,7 @@ | |||
670 | 10272 | #: view:stock.move:0 | 10272 | #: view:stock.move:0 |
671 | 10273 | #: view:stock.picking:0 | 10273 | #: view:stock.picking:0 |
672 | 10274 | #: view:free.allocation.wizard:0 | 10274 | #: view:free.allocation.wizard:0 |
673 | 10275 | #: view:integrity.finance.wizard:0 | ||
674 | 10275 | msgid "Dates" | 10276 | msgid "Dates" |
675 | 10276 | msgstr "Dates" | 10277 | msgstr "Dates" |
676 | 10277 | 10278 | ||
677 | @@ -10322,7 +10323,7 @@ | |||
678 | 10322 | #: code:addons/board/queries_finance.py:47 | 10323 | #: code:addons/board/queries_finance.py:47 |
679 | 10323 | #, python-format | 10324 | #, python-format |
680 | 10324 | msgid "P&L Journal Items vs Analytic Journal Items mismatch in booking currency (except FXA and REV)" | 10325 | msgid "P&L Journal Items vs Analytic Journal Items mismatch in booking currency (except FXA and REV)" |
682 | 10325 | msgstr "Différence en devise d'enregistrement entre entrées comptables et analytiques (exceptés FAX et REV)" | 10326 | msgstr "Différence en devise d'enregistrement entre entrées comptables et analytiques (exceptés FXA et REV)" |
683 | 10326 | 10327 | ||
684 | 10327 | #. modules: sale, msf_supply_doc_export | 10328 | #. modules: sale, msf_supply_doc_export |
685 | 10328 | #: report:po.follow.up_rml:0 | 10329 | #: report:po.follow.up_rml:0 |
686 | @@ -17716,7 +17717,7 @@ | |||
687 | 17716 | msgid "Create Access" | 17717 | msgid "Create Access" |
688 | 17717 | msgstr "Créer l'Accès " | 17718 | msgstr "Créer l'Accès " |
689 | 17718 | 17719 | ||
691 | 17719 | #. modules: account, base, procurement_request | 17720 | #. modules: account, base, procurement_request, account_override |
692 | 17720 | #: view:account.common.report:0 | 17721 | #: view:account.common.report:0 |
693 | 17721 | #: view:ir.actions.act_window:0 | 17722 | #: view:ir.actions.act_window:0 |
694 | 17722 | #: model:ir.actions.act_window,name:base.actions_ir_filters_view | 17723 | #: model:ir.actions.act_window,name:base.actions_ir_filters_view |
695 | @@ -17724,6 +17725,7 @@ | |||
696 | 17724 | #: model:ir.model,name:base.model_ir_filters | 17725 | #: model:ir.model,name:base.model_ir_filters |
697 | 17725 | #: model:ir.ui.menu,name:base.menu_ir_filters | 17726 | #: model:ir.ui.menu,name:base.menu_ir_filters |
698 | 17726 | #: view:sale.order:0 | 17727 | #: view:sale.order:0 |
699 | 17728 | #: view:integrity.finance.wizard:0 | ||
700 | 17727 | msgid "Filters" | 17729 | msgid "Filters" |
701 | 17728 | msgstr "Filtres" | 17730 | msgstr "Filtres" |
702 | 17729 | 17731 | ||
703 | @@ -20061,7 +20063,9 @@ | |||
704 | 20061 | msgstr "MANIFESTE DE FRET" | 20063 | msgstr "MANIFESTE DE FRET" |
705 | 20062 | 20064 | ||
706 | 20063 | #. modules: account_override, board | 20065 | #. modules: account_override, board |
708 | 20064 | #: model:ir.ui.menu,name:account_override.menu_integrity_finance | 20066 | #: model:ir.actions.act_window,name:account_override.action_integrity_finance_report |
709 | 20067 | #: model:ir.ui.menu,name:account_override.menu_integrity_finance_report | ||
710 | 20068 | #: code:addons/account_override/wizard/integrity_finance_wizard.py:111 | ||
711 | 20065 | #: code:addons/board/report/integrity_finance.py:20 | 20069 | #: code:addons/board/report/integrity_finance.py:20 |
712 | 20066 | #, python-format | 20070 | #, python-format |
713 | 20067 | msgid "Entries Data Integrity" | 20071 | msgid "Entries Data Integrity" |
714 | @@ -22622,7 +22626,7 @@ | |||
715 | 22622 | msgid "Populate fields order" | 22626 | msgid "Populate fields order" |
716 | 22623 | msgstr "Remplir les champs commande" | 22627 | msgstr "Remplir les champs commande" |
717 | 22624 | 22628 | ||
719 | 22625 | #. modules: account, finance | 22629 | #. modules: account, finance, account_override |
720 | 22626 | #: field:account.aged.trial.balance,filter:0 | 22630 | #: field:account.aged.trial.balance,filter:0 |
721 | 22627 | #: field:account.balance.report,filter:0 | 22631 | #: field:account.balance.report,filter:0 |
722 | 22628 | #: field:account.bs.report,filter:0 | 22632 | #: field:account.bs.report,filter:0 |
723 | @@ -22639,6 +22643,7 @@ | |||
724 | 22639 | #: field:account.report.general.ledger,filter:0 | 22643 | #: field:account.report.general.ledger,filter:0 |
725 | 22640 | #: field:account.vat.declaration,filter:0 | 22644 | #: field:account.vat.declaration,filter:0 |
726 | 22641 | #: field:wizard.account.partner.balance.tree,filter:0 | 22645 | #: field:wizard.account.partner.balance.tree,filter:0 |
727 | 22646 | #: field:integrity.finance.wizard,filter:0 | ||
728 | 22642 | msgid "Filter by" | 22647 | msgid "Filter by" |
729 | 22643 | msgstr "Filtrer par" | 22648 | msgstr "Filtrer par" |
730 | 22644 | 22649 | ||
731 | @@ -24255,7 +24260,7 @@ | |||
732 | 24255 | msgid "Create Composition List" | 24260 | msgid "Create Composition List" |
733 | 24256 | msgstr "Créer une Liste de Composition" | 24261 | msgstr "Créer une Liste de Composition" |
734 | 24257 | 24262 | ||
736 | 24258 | #. modules: account, res_currency_tables, finance | 24263 | #. modules: account, res_currency_tables, finance, account_override |
737 | 24259 | #: field:account.common.partner.report,period_from:0 | 24264 | #: field:account.common.partner.report,period_from:0 |
738 | 24260 | #: field:account.partner.balance,period_from:0 | 24265 | #: field:account.partner.balance,period_from:0 |
739 | 24261 | #: field:account.partner.ledger,period_from:0 | 24266 | #: field:account.partner.ledger,period_from:0 |
740 | @@ -24274,6 +24279,7 @@ | |||
741 | 24274 | #: field:account.vat.declaration,period_from:0 | 24279 | #: field:account.vat.declaration,period_from:0 |
742 | 24275 | #: field:wizard.report.currency.table,start_period_id:0 | 24280 | #: field:wizard.report.currency.table,start_period_id:0 |
743 | 24276 | #: field:wizard.report.rates.table,start_period_id:0 | 24281 | #: field:wizard.report.rates.table,start_period_id:0 |
744 | 24282 | #: field:integrity.finance.wizard,period_from:0 | ||
745 | 24277 | msgid "Start period" | 24283 | msgid "Start period" |
746 | 24278 | msgstr "Période de début" | 24284 | msgstr "Période de début" |
747 | 24279 | 24285 | ||
748 | @@ -25353,6 +25359,7 @@ | |||
749 | 25353 | #: report:addons/consumption_calculation/report/product_likely_expire_xls.mako:86 | 25359 | #: report:addons/consumption_calculation/report/product_likely_expire_xls.mako:86 |
750 | 25354 | #: report:addons/account/report/free_allocation_report.mako:171 | 25360 | #: report:addons/account/report/free_allocation_report.mako:171 |
751 | 25355 | #: field:free.allocation.wizard,period_id:0 | 25361 | #: field:free.allocation.wizard,period_id:0 |
752 | 25362 | #: selection:integrity.finance.wizard,filter:0 | ||
753 | 25356 | #, python-format | 25363 | #, python-format |
754 | 25357 | msgid "Period" | 25364 | msgid "Period" |
755 | 25358 | msgstr "Période" | 25365 | msgstr "Période" |
756 | @@ -27281,11 +27288,12 @@ | |||
757 | 27281 | msgid "The number of packages by layer" | 27288 | msgid "The number of packages by layer" |
758 | 27282 | msgstr "Le nombre de colis par couche" | 27289 | msgstr "Le nombre de colis par couche" |
759 | 27283 | 27290 | ||
761 | 27284 | #. modules: account_reconciliation, account | 27291 | #. modules: account_reconciliation, account, board |
762 | 27285 | #: selection:account.journal.column,field:0 | 27292 | #: selection:account.journal.column,field:0 |
763 | 27286 | #: field:account.move.line,reconcile_date:0 | 27293 | #: field:account.move.line,reconcile_date:0 |
764 | 27294 | #: code:addons/board/queries_finance.py:100 | ||
765 | 27287 | msgid "Reconcile date" | 27295 | msgid "Reconcile date" |
767 | 27288 | msgstr "Reconcile date" | 27296 | msgstr "Date de lettrage" |
768 | 27289 | 27297 | ||
769 | 27290 | #. module: account | 27298 | #. module: account |
770 | 27291 | #: report:account.vat.declaration:0 | 27299 | #: report:account.vat.declaration:0 |
771 | @@ -28368,7 +28376,7 @@ | |||
772 | 28368 | msgid "XML Identifier" | 28376 | msgid "XML Identifier" |
773 | 28369 | msgstr "Identifiant XML" | 28377 | msgstr "Identifiant XML" |
774 | 28370 | 28378 | ||
776 | 28371 | #. modules: msf_budget, account, stock_move_tracking, product, sale, stock_forecast, purchase_allocation_report, order_types | 28379 | #. modules: msf_budget, account, stock_move_tracking, product, sale, stock_forecast, purchase_allocation_report, order_types, account_override |
777 | 28372 | #: view:account.aged.trial.balance:0 | 28380 | #: view:account.aged.trial.balance:0 |
778 | 28373 | #: view:account.analytic.Journal.report:0 | 28381 | #: view:account.analytic.Journal.report:0 |
779 | 28374 | #: view:account.analytic.balance:0 | 28382 | #: view:account.analytic.balance:0 |
780 | @@ -28385,6 +28393,7 @@ | |||
781 | 28385 | #: view:wizard.fo.allocation.report:0 | 28393 | #: view:wizard.fo.allocation.report:0 |
782 | 28386 | #: view:stock.forecast:0 | 28394 | #: view:stock.forecast:0 |
783 | 28387 | #: view:stock.move.tracking:0 | 28395 | #: view:stock.move.tracking:0 |
784 | 28396 | #: view:integrity.finance.wizard:0 | ||
785 | 28388 | msgid "Print" | 28397 | msgid "Print" |
786 | 28389 | msgstr "Imprimer" | 28398 | msgstr "Imprimer" |
787 | 28390 | 28399 | ||
788 | @@ -29745,10 +29754,11 @@ | |||
789 | 29745 | msgid "Fiscal Position Template" | 29754 | msgid "Fiscal Position Template" |
790 | 29746 | msgstr "Modèle de Position Fiscale" | 29755 | msgstr "Modèle de Position Fiscale" |
791 | 29747 | 29756 | ||
793 | 29748 | #. modules: account, finance | 29757 | #. modules: account, finance, account_override |
794 | 29749 | #: field:account.partner.balance,period_to:0 | 29758 | #: field:account.partner.balance,period_to:0 |
795 | 29750 | #: field:account.partner.ledger,period_to:0 | 29759 | #: field:account.partner.ledger,period_to:0 |
796 | 29751 | #: field:wizard.account.partner.balance.tree,period_to:0 | 29760 | #: field:wizard.account.partner.balance.tree,period_to:0 |
797 | 29761 | #: field:integrity.finance.wizard,period_to:0 | ||
798 | 29752 | msgid "End period" | 29762 | msgid "End period" |
799 | 29753 | msgstr "Période de fin" | 29763 | msgstr "Période de fin" |
800 | 29754 | 29764 | ||
801 | @@ -35001,7 +35011,7 @@ | |||
802 | 35001 | msgid "Shipment Date:" | 35011 | msgid "Shipment Date:" |
803 | 35002 | msgstr "Shipment Date:" | 35012 | msgstr "Shipment Date:" |
804 | 35003 | 35013 | ||
806 | 35004 | #. modules: sales_followup, sync_client, procurement_request, sale, mission_stock, msf_doc_import, purchase_followup | 35014 | #. modules: sales_followup, sync_client, procurement_request, sale, mission_stock, msf_doc_import, purchase_followup, account_override |
807 | 35005 | #: field:msr_in_progress,start_date:0 | 35015 | #: field:msr_in_progress,start_date:0 |
808 | 35006 | #: field:abstract.wizard.import,start_date:0 | 35016 | #: field:abstract.wizard.import,start_date:0 |
809 | 35007 | #: field:wizard.import.batch,start_date:0 | 35017 | #: field:wizard.import.batch,start_date:0 |
810 | @@ -35014,6 +35024,7 @@ | |||
811 | 35014 | #: field:po.track.changes.wizard,start_date:0 | 35024 | #: field:po.track.changes.wizard,start_date:0 |
812 | 35015 | #: field:sale.loan.stock.moves,start_date:0 | 35025 | #: field:sale.loan.stock.moves,start_date:0 |
813 | 35016 | #: field:ir.track.changes.wizard,start_date:0 | 35026 | #: field:ir.track.changes.wizard,start_date:0 |
814 | 35027 | #: field:integrity.finance.wizard,date_from:0 | ||
815 | 35017 | msgid "Start date" | 35028 | msgid "Start date" |
816 | 35018 | msgstr "Date de début" | 35029 | msgstr "Date de début" |
817 | 35019 | 35030 | ||
818 | @@ -41033,7 +41044,7 @@ | |||
819 | 41033 | msgid "Name of the batch will be ignored because the batch is 'Internal' so name is created by the system" | 41044 | msgid "Name of the batch will be ignored because the batch is 'Internal' so name is created by the system" |
820 | 41034 | msgstr "Le nom du batch sera ignoré car le batch est 'Interne' donc son nom sera créé par le système" | 41045 | msgstr "Le nom du batch sera ignoré car le batch est 'Interne' donc son nom sera créé par le système" |
821 | 41035 | 41046 | ||
823 | 41036 | #. modules: account, msf_instance, finance, account_mcdb | 41047 | #. modules: account, msf_instance, finance, account_mcdb, account_override |
824 | 41037 | #: report:account.general.ledger_landscape:0 | 41048 | #: report:account.general.ledger_landscape:0 |
825 | 41038 | #: report:account.general.ledger_landscape_tb:0 | 41049 | #: report:account.general.ledger_landscape_tb:0 |
826 | 41039 | #: report:account.partner.balance:0 | 41050 | #: report:account.partner.balance:0 |
827 | @@ -41058,6 +41069,7 @@ | |||
828 | 41058 | #: model:ir.actions.act_window,name:msf_instance.action_msf_instance_tree | 41069 | #: model:ir.actions.act_window,name:msf_instance.action_msf_instance_tree |
829 | 41059 | #: model:ir.ui.menu,name:msf_instance.menu_action_msf_instance_tree | 41070 | #: model:ir.ui.menu,name:msf_instance.menu_action_msf_instance_tree |
830 | 41060 | #: view:msf.instance:0 | 41071 | #: view:msf.instance:0 |
831 | 41072 | #: field:integrity.finance.wizard,instance_ids:0 | ||
832 | 41061 | msgid "Proprietary Instances" | 41073 | msgid "Proprietary Instances" |
833 | 41062 | msgstr "Instances Propriétaires" | 41074 | msgstr "Instances Propriétaires" |
834 | 41063 | 41075 | ||
835 | @@ -44422,13 +44434,14 @@ | |||
836 | 44422 | msgid "Reordering Mode" | 44434 | msgid "Reordering Mode" |
837 | 44423 | msgstr "Mode de Réapprovisionnement" | 44435 | msgstr "Mode de Réapprovisionnement" |
838 | 44424 | 44436 | ||
840 | 44425 | #. modules: msf_doc_import, sale, sales_followup | 44437 | #. modules: msf_doc_import, sale, sales_followups, account_override |
841 | 44426 | #: field:abstract.wizard.import,end_date:0 | 44438 | #: field:abstract.wizard.import,end_date:0 |
842 | 44427 | #: field:wizard.import.batch,end_date:0 | 44439 | #: field:wizard.import.batch,end_date:0 |
843 | 44428 | #: field:sale.donation.stock.moves,end_date:0 | 44440 | #: field:sale.donation.stock.moves,end_date:0 |
844 | 44429 | #: field:sale.order.sourcing.progress,end_date:0 | 44441 | #: field:sale.order.sourcing.progress,end_date:0 |
845 | 44430 | #: field:ir.followup.location.wizard,end_date:0 | 44442 | #: field:ir.followup.location.wizard,end_date:0 |
846 | 44431 | #: field:sale.followup.multi.wizard,end_date:0 | 44443 | #: field:sale.followup.multi.wizard,end_date:0 |
847 | 44444 | #: field:integrity.finance.wizard,date_to:0 | ||
848 | 44432 | msgid "End date" | 44445 | msgid "End date" |
849 | 44433 | msgstr "Date de fin" | 44446 | msgstr "Date de fin" |
850 | 44434 | 44447 | ||
851 | @@ -51614,7 +51627,7 @@ | |||
852 | 51614 | msgid "Donation Line" | 51627 | msgid "Donation Line" |
853 | 51615 | msgstr "Donation Line" | 51628 | msgstr "Donation Line" |
854 | 51616 | 51629 | ||
856 | 51617 | #. module: account | 51630 | #. modules: account, account_override |
857 | 51618 | #: selection:account.aged.trial.balance,filter:0 | 51631 | #: selection:account.aged.trial.balance,filter:0 |
858 | 51619 | #: selection:account.balance.report,filter:0 | 51632 | #: selection:account.balance.report,filter:0 |
859 | 51620 | #: selection:account.bs.report,filter:0 | 51633 | #: selection:account.bs.report,filter:0 |
860 | @@ -51630,6 +51643,7 @@ | |||
861 | 51630 | #: selection:account.print.journal,filter:0 | 51643 | #: selection:account.print.journal,filter:0 |
862 | 51631 | #: selection:account.report.general.ledger,filter:0 | 51644 | #: selection:account.report.general.ledger,filter:0 |
863 | 51632 | #: selection:account.vat.declaration,filter:0 | 51645 | #: selection:account.vat.declaration,filter:0 |
864 | 51646 | #: selection:integrity.finance.wizard,filter:0 | ||
865 | 51633 | msgid "No Filters" | 51647 | msgid "No Filters" |
866 | 51634 | msgstr "Aucun Filtre" | 51648 | msgstr "Aucun Filtre" |
867 | 51635 | 51649 | ||
868 | @@ -54842,7 +54856,7 @@ | |||
869 | 54842 | msgid "Africa/Timbuktu" | 54856 | msgid "Africa/Timbuktu" |
870 | 54843 | msgstr "Africa/Timbuktu" | 54857 | msgstr "Africa/Timbuktu" |
871 | 54844 | 54858 | ||
873 | 54845 | #. modules: account, finance, account_mcdb, analytic_distribution | 54859 | #. modules: account, finance, account_mcdb, analytic_distribution, account_override |
874 | 54846 | #: selection:account.aged.trial.balance,filter:0 | 54860 | #: selection:account.aged.trial.balance,filter:0 |
875 | 54847 | #: selection:account.balance.report,filter:0 | 54861 | #: selection:account.balance.report,filter:0 |
876 | 54848 | #: selection:account.bs.report,filter:0 | 54862 | #: selection:account.bs.report,filter:0 |
877 | @@ -54879,6 +54893,7 @@ | |||
878 | 54879 | #: selection:wizard.account.partner.balance.tree,filter:0 | 54893 | #: selection:wizard.account.partner.balance.tree,filter:0 |
879 | 54880 | #: view:account.period.state:0 | 54894 | #: view:account.period.state:0 |
880 | 54881 | #: view:account.analytic.chart:0 | 54895 | #: view:account.analytic.chart:0 |
881 | 54896 | #: view:integrity.finance.wizard:0 | ||
882 | 54882 | #, python-format | 54897 | #, python-format |
883 | 54883 | msgid "Periods" | 54898 | msgid "Periods" |
884 | 54884 | msgstr "Périodes" | 54899 | msgstr "Périodes" |
885 | @@ -65785,7 +65800,7 @@ | |||
886 | 65785 | msgid "PO line to confirm" | 65800 | msgid "PO line to confirm" |
887 | 65786 | msgstr "PO line to confirm" | 65801 | msgstr "PO line to confirm" |
888 | 65787 | 65802 | ||
890 | 65788 | #. modules: account, finance, account_mcdb, register_accounting, account_hq_entries, account_override, analytic, msf_accrual, vertical_integration | 65803 | #. modules: account, finance, account_mcdb, register_accounting, account_hq_entries, account_override, analytic, msf_accrual, vertical_integration, board |
891 | 65789 | #: field:account.bank.statement.line,date:0 | 65804 | #: field:account.bank.statement.line,date:0 |
892 | 65790 | #: field:account.invoice,date_invoice:0 | 65805 | #: field:account.invoice,date_invoice:0 |
893 | 65791 | #: report:combined.journals.report.pdf:0 | 65806 | #: report:combined.journals.report.pdf:0 |
894 | @@ -65826,6 +65841,7 @@ | |||
895 | 65826 | #: report:addons/register_accounting/report/pending_cheque_xls.mako:218 | 65841 | #: report:addons/register_accounting/report/pending_cheque_xls.mako:218 |
896 | 65827 | #: report:addons/vertical_integration/report/open_invoices_xls.mako:291 | 65842 | #: report:addons/vertical_integration/report/open_invoices_xls.mako:291 |
897 | 65828 | #: field:hq.entries.split,date:0 | 65843 | #: field:hq.entries.split,date:0 |
898 | 65844 | #: selection:integrity.finance.wizard,filter:0 | ||
899 | 65829 | #, python-format | 65845 | #, python-format |
900 | 65830 | msgid "Posting Date" | 65846 | msgid "Posting Date" |
901 | 65831 | msgstr "Date de Comptabilisation" | 65847 | msgstr "Date de Comptabilisation" |
902 | @@ -75641,7 +75657,7 @@ | |||
903 | 75641 | msgid "Update Sent Monitor" | 75657 | msgid "Update Sent Monitor" |
904 | 75642 | msgstr "Surveillance des Mises à jour Envoyées" | 75658 | msgstr "Surveillance des Mises à jour Envoyées" |
905 | 75643 | 75659 | ||
907 | 75644 | #. modules: msf_budget, account, account_period_closing_level, finance, vertical_integration, msf_currency_revaluation, analytic_distribution | 75660 | #. modules: msf_budget, account, account_period_closing_level, finance, vertical_integration, msf_currency_revaluation, analytic_distribution, account_override |
908 | 75645 | #: field:account.aged.trial.balance,fiscalyear_id:0 | 75661 | #: field:account.aged.trial.balance,fiscalyear_id:0 |
909 | 75646 | #: field:account.balance.report,fiscalyear_id:0 | 75662 | #: field:account.balance.report,fiscalyear_id:0 |
910 | 75647 | #: field:account.bs.report,fiscalyear_id:0 | 75663 | #: field:account.bs.report,fiscalyear_id:0 |
911 | @@ -75672,6 +75688,7 @@ | |||
912 | 75672 | #: field:ocp.matching.export.wizard,fiscalyear_id:0 | 75688 | #: field:ocp.matching.export.wizard,fiscalyear_id:0 |
913 | 75673 | #: field:wizard.hq.report.oca,fiscalyear_id:0 | 75689 | #: field:wizard.hq.report.oca,fiscalyear_id:0 |
914 | 75674 | #: field:wizard.hq.report.ocg,fiscalyear_id:0 | 75690 | #: field:wizard.hq.report.ocg,fiscalyear_id:0 |
915 | 75691 | #: field:integrity.finance.wizard,fiscalyear_id:0 | ||
916 | 75675 | #, python-format | 75692 | #, python-format |
917 | 75676 | msgid "Fiscal year" | 75693 | msgid "Fiscal year" |
918 | 75677 | msgstr "Exercice Comptable" | 75694 | msgstr "Exercice Comptable" |
919 | @@ -97048,6 +97065,7 @@ | |||
920 | 97048 | #: selection:account.balance.report,filter:0 | 97065 | #: selection:account.balance.report,filter:0 |
921 | 97049 | #: selection:account.journal.column,field:0 | 97066 | #: selection:account.journal.column,field:0 |
922 | 97050 | #: selection:account.report.general.ledger,filter:0 | 97067 | #: selection:account.report.general.ledger,filter:0 |
923 | 97068 | #: selection:integrity.finance.wizard,filter:0 | ||
924 | 97051 | #: code:addons/account/report/common_report_header.py:166 | 97069 | #: code:addons/account/report/common_report_header.py:166 |
925 | 97052 | #: report:addons/account_mcdb/report/report_account_analytic_line_free_xls.mako:78 | 97070 | #: report:addons/account_mcdb/report/report_account_analytic_line_free_xls.mako:78 |
926 | 97053 | #: report:addons/account_override/report/open_invoices_xls.mako:330 | 97071 | #: report:addons/account_override/report/open_invoices_xls.mako:330 |
927 | @@ -97764,6 +97782,7 @@ | |||
928 | 97764 | #: view:wizard.import.mapping:0 | 97782 | #: view:wizard.import.mapping:0 |
929 | 97765 | #: view:automated.export.job:0 | 97783 | #: view:automated.export.job:0 |
930 | 97766 | #: view:free.allocation.wizard:0 | 97784 | #: view:free.allocation.wizard:0 |
931 | 97785 | #: view:integrity.finance.wizard:0 | ||
932 | 97767 | #, python-format | 97786 | #, python-format |
933 | 97768 | msgid "Cancel" | 97787 | msgid "Cancel" |
934 | 97769 | msgstr "Annuler" | 97788 | msgstr "Annuler" |
935 | @@ -101982,6 +102001,30 @@ | |||
936 | 101982 | msgid "Related entries" | 102001 | msgid "Related entries" |
937 | 101983 | msgstr "Ecritures associées" | 102002 | msgstr "Ecritures associées" |
938 | 101984 | 102003 | ||
939 | 102004 | #. module: board | ||
940 | 102005 | #: code:addons/board/report/integrity_finance.py:46 | ||
941 | 102006 | #, python-format | ||
942 | 102007 | msgid "Either the Start period or the End period is missing." | ||
943 | 102008 | msgstr "Il manque soit la Période de début soit la Période de fin." | ||
944 | 102009 | |||
945 | 102010 | #. module: board | ||
946 | 102011 | #: code:addons/board/report/integrity_finance.py:62 | ||
947 | 102012 | #, python-format | ||
948 | 102013 | msgid "No period matches the selected criteria." | ||
949 | 102014 | msgstr "Aucune période ne correspond aux critères sélectionnés." | ||
950 | 102015 | |||
951 | 102016 | #. module: account_override | ||
952 | 102017 | #: code:addons/account_override/period.py:129 | ||
953 | 102018 | #, python-format | ||
954 | 102019 | msgid "The End period can't precede the Start period." | ||
955 | 102020 | msgstr "La Période de fin ne peut pas précéder la Période de début." | ||
956 | 102021 | |||
957 | 102022 | #. module: board | ||
958 | 102023 | #: code:addons/board/report/integrity_finance.py:57 | ||
959 | 102024 | #, python-format | ||
960 | 102025 | msgid "Either the Start date or the End date is missing." | ||
961 | 102026 | msgstr "Il manque soit la Date de début soit la Date de fin." | ||
962 | 102027 | |||
963 | 101985 | #. module: stock | 102028 | #. module: stock |
964 | 101986 | #: code:addons/stock/physical_inventory.py:938 | 102029 | #: code:addons/stock/physical_inventory.py:938 |
965 | 101987 | #, python-format | 102030 | #, python-format |
966 | 101988 | 102031 | ||
967 | === modified file 'bin/service/web_services.py' | |||
968 | --- bin/service/web_services.py 2018-10-05 08:17:24 +0000 | |||
969 | +++ bin/service/web_services.py 2018-11-07 14:15:37 +0000 | |||
970 | @@ -1104,7 +1104,7 @@ | |||
971 | 1104 | tb_s = "".join(traceback.format_exception(*tb)) | 1104 | tb_s = "".join(traceback.format_exception(*tb)) |
972 | 1105 | logger = netsvc.Logger() | 1105 | logger = netsvc.Logger() |
973 | 1106 | logger.notifyChannel('web-services', netsvc.LOG_ERROR, | 1106 | logger.notifyChannel('web-services', netsvc.LOG_ERROR, |
975 | 1107 | 'Exception: %s\n%s' % (str(exception), tb_s)) | 1107 | 'Exception: %s\n%s' % (tools.ustr(exception), tb_s)) |
976 | 1108 | if hasattr(exception, 'name') and hasattr(exception, 'value'): | 1108 | if hasattr(exception, 'name') and hasattr(exception, 'value'): |
977 | 1109 | self._reports[id]['exception'] = ExceptionWithTraceback(tools.ustr(exception.name), tools.ustr(exception.value)) | 1109 | self._reports[id]['exception'] = ExceptionWithTraceback(tools.ustr(exception.name), tools.ustr(exception.value)) |
978 | 1110 | else: | 1110 | else: |