Merge lp:~julie-w/unifield-server/US-7314 into lp:unifield-server/uf17

Proposed by jftempo
Status: Needs review
Proposed branch: lp:~julie-w/unifield-server/US-7314
Merge into: lp:unifield-server/uf17
Diff against target: 684 lines (+162/-70)
22 files modified
bin/addons/account/project/project.py (+1/-0)
bin/addons/account/project/project_view.xml (+0/-1)
bin/addons/account/report/account_general_ledger.py (+12/-14)
bin/addons/account/report/account_general_ledger_xls.mako (+42/-9)
bin/addons/account/wizard/account_report_general_ledger.py (+5/-2)
bin/addons/account/wizard/account_report_general_ledger_view.xml (+1/-2)
bin/addons/account_mcdb/report/combined_journals_report.py (+1/-1)
bin/addons/account_reconciliation/wizard/account_reconcile.py (+2/-9)
bin/addons/finance/account_drill.py (+1/-1)
bin/addons/msf_doc_import/account.py (+10/-1)
bin/addons/msf_profile/data/patches.xml (+9/-0)
bin/addons/msf_profile/i18n/fr_MF.po (+21/-10)
bin/addons/msf_profile/msf_profile.py (+27/-0)
bin/addons/msf_supply_doc_export/wizard/wizard_pick_import.py (+7/-6)
bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv (+1/-1)
bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv (+4/-4)
bin/addons/register_accounting/wizard/wizard_register_import.py (+4/-0)
bin/addons/sale/report/sale_donation_stock_moves_report.py (+4/-2)
bin/addons/sales_followup/report/ir_follow_up_location_report.py (+1/-1)
bin/addons/stock/report/products_situation_report.py (+4/-2)
bin/osv/expression.py (+4/-3)
bin/release.py (+1/-1)
To merge this branch: bzr merge lp:~julie-w/unifield-server/US-7314
Reviewer Review Type Date Requested Status
UniField Dev Team Pending
Review via email: mp+387028@code.launchpad.net
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
=== modified file 'bin/addons/account/project/project.py'
--- bin/addons/account/project/project.py 2019-12-16 11:00:41 +0000
+++ bin/addons/account/project/project.py 2020-07-08 09:16:28 +0000
@@ -28,6 +28,7 @@
28 _columns = {28 _columns = {
29 'name': fields.char('Journal Name', size=64, required=True),29 'name': fields.char('Journal Name', size=64, required=True),
30 'code': fields.char('Journal Code', size=8),30 'code': fields.char('Journal Code', size=8),
31 # the Active tag should not be used anymore from US-7194
31 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),32 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the analytic journal without removing it."),
32 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),33 'type': fields.selection([('sale','Sale'), ('purchase','Purchase'), ('cash','Cash'), ('general','General'), ('situation','Situation')], 'Type', size=32, required=True, help="Gives the type of the analytic journal. When it needs for a document (eg: an invoice) to create analytic entries, OpenERP will look for a matching journal of the same type."),
33 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),34 'line_ids': fields.one2many('account.analytic.line', 'journal_id', 'Lines'),
3435
=== modified file 'bin/addons/account/project/project_view.xml'
--- bin/addons/account/project/project_view.xml 2020-01-30 10:18:45 +0000
+++ bin/addons/account/project/project_view.xml 2020-07-08 09:16:28 +0000
@@ -330,7 +330,6 @@
330 <field name="name" select="1" default_focus="1"/>330 <field name="name" select="1" default_focus="1"/>
331 <field name="code" select="1" attrs="{'readonly': [('has_ajis', '=', True)]}"/>331 <field name="code" select="1" attrs="{'readonly': [('has_ajis', '=', True)]}"/>
332 <field name="type" select="2" attrs="{'readonly': [('has_ajis', '=', True)]}"/>332 <field name="type" select="2" attrs="{'readonly': [('has_ajis', '=', True)]}"/>
333 <field name="active" select="2"/>
334 <field name="company_id" groups="base.group_multi_company" widget="selection"/>333 <field name="company_id" groups="base.group_multi_company" widget="selection"/>
335 </form>334 </form>
336 </field>335 </field>
337336
=== modified file 'bin/addons/account/report/account_general_ledger.py'
--- bin/addons/account/report/account_general_ledger.py 2020-02-03 14:46:06 +0000
+++ bin/addons/account/report/account_general_ledger.py 2020-07-08 09:16:28 +0000
@@ -225,7 +225,6 @@
225 'get_start_period': self.get_start_period,225 'get_start_period': self.get_start_period,
226 'get_end_period': self.get_end_period,226 'get_end_period': self.get_end_period,
227 'get_filter': self._get_filter,227 'get_filter': self._get_filter,
228 'get_sortby': self._get_sortby,
229 'get_start_date':self._get_start_date,228 'get_start_date':self._get_start_date,
230 'get_end_date':self._get_end_date,229 'get_end_date':self._get_end_date,
231 'get_target_move': self._get_target_move,230 'get_target_move': self._get_target_move,
@@ -337,10 +336,14 @@
337 del counterpart_res'''336 del counterpart_res'''
338 # Then select all account_move_line of this account337 # Then select all account_move_line of this account
339338
340 if self.sortby == 'sort_journal_partner':339 if self.sortby == 'sort_third_party':
341 sql_sort='j.code, p.name, l.move_id'340 sql_sort = 'l.partner_txt NULLS first, l.move_id'
342 else:341 elif self.sortby == 'sort_currency':
343 sql_sort='l.date, l.move_id'342 sql_sort = 'c.name, l.move_id'
343 elif self.sortby == 'sort_reconcile':
344 sql_sort = 'l.reconcile_txt NULLS first, l.move_id'
345 else: # sort_date by default
346 sql_sort = 'l.date, l.move_id'
344 sql = """347 sql = """
345 SELECT l.id AS lid, l.date AS ldate, j.code AS lcode, l.currency_id,348 SELECT l.id AS lid, l.date AS ldate, j.code AS lcode, l.currency_id,
346 l.amount_currency,l.ref AS lref, l.name AS lname,349 l.amount_currency,l.ref AS lref, l.name AS lname,
@@ -352,7 +355,7 @@
352 c.symbol AS currency_code,355 c.symbol AS currency_code,
353 i.id AS invoice_id, i.type AS invoice_type,356 i.id AS invoice_id, i.type AS invoice_type,
354 i.number AS invoice_number,357 i.number AS invoice_number,
355 p.name AS partner_name, c.name as currency_name, l.partner_txt as third_party358 p.name AS partner_name, c.name as currency_name, l.partner_txt as third_party, l.reconcile_txt
356 FROM account_move_line l359 FROM account_move_line l
357 JOIN account_move m on (l.move_id=m.id)360 JOIN account_move m on (l.move_id=m.id)
358 LEFT JOIN res_currency c on (l.currency_id=c.id)361 LEFT JOIN res_currency c on (l.currency_id=c.id)
@@ -370,6 +373,8 @@
370 if self.init_balance:373 if self.init_balance:
371 # US-822: move lines for period 0 IB journal374 # US-822: move lines for period 0 IB journal
372 sql_sort = 'l.move_id'375 sql_sort = 'l.move_id'
376 if self.sortby == 'sort_currency': # also sort by currency in case the related option is selected
377 sql_sort = 'c.name, l.move_id'
373 sql = """378 sql = """
374 SELECT l.id AS lid, l.date AS ldate, j.code AS lcode, l.currency_id,379 SELECT l.id AS lid, l.date AS ldate, j.code AS lcode, l.currency_id,
375 l.amount_currency,l.ref AS lref, l.name AS lname,380 l.amount_currency,l.ref AS lref, l.name AS lname,
@@ -381,7 +386,7 @@
381 per.code as period_code, c.symbol AS currency_code,386 per.code as period_code, c.symbol AS currency_code,
382 '' AS invoice_id, '' invoice_type,387 '' AS invoice_id, '' invoice_type,
383 '' AS invoice_number,388 '' AS invoice_number,
384 '' AS partner_name, c.name as currency_name389 '' AS partner_name, c.name as currency_name, l.reconcile_txt
385 FROM account_move_line l390 FROM account_move_line l
386 JOIN account_move m on (l.move_id=m.id)391 JOIN account_move m on (l.move_id=m.id)
387 LEFT JOIN res_currency c on (l.currency_id=c.id)392 LEFT JOIN res_currency c on (l.currency_id=c.id)
@@ -416,13 +421,6 @@
416 return self.pool.get('account.account').browse(self.cr, self.uid, data['form']['id'], context=self.context).company_id.name421 return self.pool.get('account.account').browse(self.cr, self.uid, data['form']['id'], context=self.context).company_id.name
417 return super(general_ledger ,self)._get_account(data)422 return super(general_ledger ,self)._get_account(data)
418423
419 def _get_sortby(self, data):
420 if self.sortby == 'sort_date':
421 return 'Date'
422 elif self.sortby == 'sort_journal_partner':
423 return 'Journal & Partner'
424 return 'Date'
425
426 def _get_output_currency_code(self, data):424 def _get_output_currency_code(self, data):
427 return self.output_currency_code or self.currency_name425 return self.output_currency_code or self.currency_name
428426
429427
=== modified file 'bin/addons/account/report/account_general_ledger_xls.mako'
--- bin/addons/account/report/account_general_ledger_xls.mako 2019-07-31 15:26:10 +0000
+++ bin/addons/account/report/account_general_ledger_xls.mako 2020-07-08 09:16:28 +0000
@@ -132,6 +132,16 @@
132 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />132 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
133</Borders>133</Borders>
134</Style>134</Style>
135<Style ss:ID="ssAccountLineRight">
136<Alignment ss:Bottom="Top" ss:WrapText="1" ss:Vertical="Center" ss:Horizontal="Right"/>
137<Font ss:Size="8"/>
138<Borders>
139 <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" />
140 <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" />
141 <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" />
142 <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" />
143</Borders>
144</Style>
135<Style ss:ID="ssAccountLineColored1">145<Style ss:ID="ssAccountLineColored1">
136<Alignment ss:Bottom="Top" ss:WrapText="1"/>146<Alignment ss:Bottom="Top" ss:WrapText="1"/>
137<Font ss:Size="8"/>147<Font ss:Size="8"/>
@@ -201,10 +211,7 @@
201<Column ss:AutoFitWidth="1" ss:Width="55" />211<Column ss:AutoFitWidth="1" ss:Width="55" />
202<Column ss:AutoFitWidth="1" ss:Width="100" ss:Span="1" />212<Column ss:AutoFitWidth="1" ss:Width="100" ss:Span="1" />
203<Column ss:AutoFitWidth="1" ss:Width="55" />213<Column ss:AutoFitWidth="1" ss:Width="55" />
204<Column ss:Width="90" />214<Column ss:Width="90" ss:Span="4" />
205<Column ss:Width="90" />
206<Column ss:Width="90" />
207<Column ss:Width="90" />
208<Row>215<Row>
209<Cell ss:StyleID="ssH"><Data ss:Type="String">${header_company_or_chart_of_account}</Data></Cell>216<Cell ss:StyleID="ssH"><Data ss:Type="String">${header_company_or_chart_of_account}</Data></Cell>
210<Cell ss:StyleID="ssH"><Data ss:Type="String">Fiscal Year</Data></Cell>217<Cell ss:StyleID="ssH"><Data ss:Type="String">Fiscal Year</Data></Cell>
@@ -213,7 +220,12 @@
213<Cell ss:StyleID="ssH"><Data ss:Type="String">${_('Open Items at')}</Data></Cell>220<Cell ss:StyleID="ssH"><Data ss:Type="String">${_('Open Items at')}</Data></Cell>
214<Cell ss:StyleID="ssH"><Data ss:Type="String">Filter By ${(get_filter(data)!='No Filter' and get_filter(data) or '')|x}</Data></Cell>221<Cell ss:StyleID="ssH"><Data ss:Type="String">Filter By ${(get_filter(data)!='No Filter' and get_filter(data) or '')|x}</Data></Cell>
215<Cell ss:StyleID="ssH"><Data ss:Type="String">Target Moves</Data></Cell>222<Cell ss:StyleID="ssH"><Data ss:Type="String">Target Moves</Data></Cell>
216<Cell ss:StyleID="ssH" ss:MergeAcross="1"><Data ss:Type="String">Proprietary Instances</Data></Cell>223% if get_show_move_lines():
224 <Cell ss:StyleID="ssH" ss:MergeAcross="2">
225% else:
226 <Cell ss:StyleID="ssH" ss:MergeAcross="1">
227% endif
228<Data ss:Type="String">Proprietary Instances</Data></Cell>
217<Cell ss:StyleID="ssH"><Data ss:Type="String">Currency</Data></Cell>229<Cell ss:StyleID="ssH"><Data ss:Type="String">Currency</Data></Cell>
218</Row>230</Row>
219% for a in objects:231% for a in objects:
@@ -239,8 +251,12 @@
239<Cell ss:StyleID="ssHeader">251<Cell ss:StyleID="ssHeader">
240 <Data ss:Type="String">${(get_target_move(data) or '')|x}</Data>252 <Data ss:Type="String">${(get_target_move(data) or '')|x}</Data>
241</Cell>253</Cell>
242<Cell ss:StyleID="ssHeader" ss:MergeAcross="1">254% if get_show_move_lines():
243 <Data ss:Type="String">${(get_prop_instances() or '')|x}</Data>255 <Cell ss:StyleID="ssHeader" ss:MergeAcross="2">
256% else:
257 <Cell ss:StyleID="ssHeader" ss:MergeAcross="1">
258% endif
259<Data ss:Type="String">${(get_prop_instances() or '')|x}</Data>
244</Cell>260</Cell>
245<Cell ss:StyleID="ssHeader">261<Cell ss:StyleID="ssHeader">
246 <Data ss:Type="String">${get_output_currency_code(data)}</Data>262 <Data ss:Type="String">${get_output_currency_code(data)}</Data>
@@ -269,6 +285,9 @@
269<Cell ss:StyleID="ssH"><Data ss:Type="String">Credit</Data></Cell>285<Cell ss:StyleID="ssH"><Data ss:Type="String">Credit</Data></Cell>
270<Cell ss:StyleID="ssH"><Data ss:Type="String">Booking Balance</Data></Cell>286<Cell ss:StyleID="ssH"><Data ss:Type="String">Booking Balance</Data></Cell>
271<Cell ss:StyleID="ssH"><Data ss:Type="String">Balance ${get_output_currency_code(data)}</Data></Cell>287<Cell ss:StyleID="ssH"><Data ss:Type="String">Balance ${get_output_currency_code(data)}</Data></Cell>
288% if get_show_move_lines():
289 <Cell ss:StyleID="ssH"><Data ss:Type="String">${_('Reconcile Number')}</Data></Cell>
290% endif
272<Cell><Data ss:Type="String"></Data></Cell>291<Cell><Data ss:Type="String"></Data></Cell>
273% if not get_show_move_lines():292% if not get_show_move_lines():
274<Cell><Data ss:Type="String"></Data></Cell>293<Cell><Data ss:Type="String"></Data></Cell>
@@ -305,6 +324,9 @@
305<Cell ss:StyleID="ssNumber${ac_style_suffix}">324<Cell ss:StyleID="ssNumber${ac_style_suffix}">
306 <Data ss:Type="Number">${o.data['*']['debit'] - o.data['*']['credit']}</Data>325 <Data ss:Type="Number">${o.data['*']['debit'] - o.data['*']['credit']}</Data>
307</Cell>326</Cell>
327% if get_show_move_lines():
328 <Cell ss:StyleID="ssBorder${ac_style_suffix}"><Data ss:Type="String"></Data></Cell>
329% endif
308</Row>330</Row>
309% endif331% endif
310332
@@ -333,6 +355,9 @@
333 <Cell ss:StyleID="ssNumber${ccy_sub_total_style_suffix}">355 <Cell ss:StyleID="ssNumber${ccy_sub_total_style_suffix}">
334 <Data ss:Type="Number">${o.data[ccy]['debit'] - o.data[ccy]['credit']}</Data>356 <Data ss:Type="Number">${o.data[ccy]['debit'] - o.data[ccy]['credit']}</Data>
335 </Cell>357 </Cell>
358 % if get_show_move_lines():
359 <Cell ss:StyleID="ssAccountLine${ccy_sub_total_style_suffix}"><Data ss:Type="String"></Data></Cell>
360 % endif
336</Row>361</Row>
337% endfor362% endfor
338% endif363% endif
@@ -360,13 +385,18 @@
360<Cell ss:StyleID="ssNumber${ccy_sub_total_style_suffix}">385<Cell ss:StyleID="ssNumber${ccy_sub_total_style_suffix}">
361 <Data ss:Type="Number">${get_line_balance(line, booking=False)}</Data>386 <Data ss:Type="Number">${get_line_balance(line, booking=False)}</Data>
362</Cell>387</Cell>
388% if get_show_move_lines():
389 <Cell ss:StyleID="ssAccountLine${ccy_sub_total_style_suffix}">
390 <Data ss:Type="String">${(line.get('reconcile_txt') or '')|x}</Data>
391 </Cell>
392% endif
363</Row>393</Row>
364% endfor394% endfor
365395
366% for line in lines(o, initial_balance_mode=False):396% for line in lines(o, initial_balance_mode=False):
367<Row>397<Row>
368<Cell ss:StyleID="ssAccountLine">398<Cell ss:StyleID="ssAccountLineRight">
369 <Data ss:Type="String"></Data>399 <Data ss:Type="String">${(o.code or '')|x}</Data>
370</Cell>400</Cell>
371<Cell ss:StyleID="ssAccountLine">401<Cell ss:StyleID="ssAccountLine">
372 <Data ss:Type="String">${(line['move'] or '' or '')|x}</Data>402 <Data ss:Type="String">${(line['move'] or '' or '')|x}</Data>
@@ -395,6 +425,9 @@
395<Cell ss:StyleID="ssAccountLineNumber">425<Cell ss:StyleID="ssAccountLineNumber">
396 <Data ss:Type="Number">${get_line_balance(line, booking=False)}</Data>426 <Data ss:Type="Number">${get_line_balance(line, booking=False)}</Data>
397</Cell>427</Cell>
428<Cell ss:StyleID="ssAccountLine">
429 <Data ss:Type="String">${(line.get('reconcile_txt') or '')|x}</Data>
430</Cell>
398</Row>431</Row>
399% endfor432% endfor
400433
401434
=== modified file 'bin/addons/account/wizard/account_report_general_ledger.py'
--- bin/addons/account/wizard/account_report_general_ledger.py 2017-08-18 09:55:08 +0000
+++ bin/addons/account/wizard/account_report_general_ledger.py 2020-07-08 09:16:28 +0000
@@ -41,7 +41,10 @@
41 help='It adds initial balance row on report which display previous sum amount of debit/credit/balance'),41 help='It adds initial balance row on report which display previous sum amount of debit/credit/balance'),
42 'is_initial_balance_available': fields.function(_get_fake, method=True, type='boolean', string="Is initial balance filter available ?"),42 'is_initial_balance_available': fields.function(_get_fake, method=True, type='boolean', string="Is initial balance filter available ?"),
43 'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),43 'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),
44 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort By', required=True),44 'sortby': fields.selection([('sort_date', 'Posting Date'),
45 ('sort_third_party', 'Third Party'),
46 ('sort_currency', 'Currency'),
47 ('sort_reconcile', 'Reconcile Number')], 'Sort by', required=True),
45 'output_currency': fields.many2one('res.currency', 'Output Currency', required=True),48 'output_currency': fields.many2one('res.currency', 'Output Currency', required=True),
46 'instance_ids': fields.many2many('msf.instance', 'account_report_general_ledger_instance_rel', 'instance_id', 'argl_id', 'Proprietary Instances'),49 'instance_ids': fields.many2many('msf.instance', 'account_report_general_ledger_instance_rel', 'instance_id', 'argl_id', 'Proprietary Instances'),
47 #'export_format': fields.selection([('xls', 'Excel'), ('csv', 'CSV'), ('pdf', 'PDF')], string="Export format", required=True),50 #'export_format': fields.selection([('xls', 'Excel'), ('csv', 'CSV'), ('pdf', 'PDF')], string="Export format", required=True),
@@ -196,7 +199,7 @@
196199
197 if data['form']['export_format'] \200 if data['form']['export_format'] \
198 and data['form']['export_format'] == 'xls':201 and data['form']['export_format'] == 'xls':
199 return { 202 return {
200 'type': 'ir.actions.report.xml',203 'type': 'ir.actions.report.xml',
201 'report_name': 'account.general.ledger_xls',204 'report_name': 'account.general.ledger_xls',
202 'datas': data,205 'datas': data,
203206
=== modified file 'bin/addons/account/wizard/account_report_general_ledger_view.xml'
--- bin/addons/account/wizard/account_report_general_ledger_view.xml 2017-08-10 14:19:58 +0000
+++ bin/addons/account/wizard/account_report_general_ledger_view.xml 2020-07-08 09:16:28 +0000
@@ -16,7 +16,6 @@
16 <xpath expr="//field[@name='target_move']" position="after">16 <xpath expr="//field[@name='target_move']" position="after">
17 <field name="is_initial_balance_available" invisible="1"/>17 <field name="is_initial_balance_available" invisible="1"/>
18 <field name="display_account"/>18 <field name="display_account"/>
19 <field name="sortby" invisible="1" />
20 <field name="initial_balance" attrs="{'readonly':[('is_initial_balance_available', '=', False)]}" />19 <field name="initial_balance" attrs="{'readonly':[('is_initial_balance_available', '=', False)]}" />
21 <field name="export_format"/>20 <field name="export_format"/>
22 <newline/> 21 <newline/>
@@ -24,7 +23,7 @@
24 <field name="amount_currency" invisible="1" />23 <field name="amount_currency" invisible="1" />
25 <newline/>24 <newline/>
26 <field name="account_type" />25 <field name="account_type" />
27 <newline/>26 <field name="sortby" />
28 <field name="reconciled" />27 <field name="reconciled" />
29 <field name="reconcile_date" />28 <field name="reconcile_date" />
30 <field name="open_items"/>29 <field name="open_items"/>
3130
=== modified file 'bin/addons/account_mcdb/report/combined_journals_report.py'
--- bin/addons/account_mcdb/report/combined_journals_report.py 2019-09-17 12:44:09 +0000
+++ bin/addons/account_mcdb/report/combined_journals_report.py 2020-07-08 09:16:28 +0000
@@ -331,7 +331,7 @@
331 for aji in aal_obj.browse(self.cr, self.uid, analytic_line_ids, fields_to_fetch=aji_fields, context=self.context):331 for aji in aal_obj.browse(self.cr, self.uid, analytic_line_ids, fields_to_fetch=aji_fields, context=self.context):
332 if not aji.move_id:332 if not aji.move_id:
333 aji_ids.append(aji.id)333 aji_ids.append(aji.id)
334 elif aji.journal_id.type == 'correction':334 elif aji.journal_id.type in ('correction', 'correction_hq', 'extra'):
335 corrected_aal = aji.last_corrected_id or aji.reversal_origin or False335 corrected_aal = aji.last_corrected_id or aji.reversal_origin or False
336 corrected_aml = corrected_aal and corrected_aal.move_id or False336 corrected_aml = corrected_aal and corrected_aal.move_id or False
337 if corrected_aml and corrected_aml.last_cor_was_only_analytic and corrected_aml.id == aji.move_id.id:337 if corrected_aml and corrected_aml.last_cor_was_only_analytic and corrected_aml.id == aji.move_id.id:
338338
=== modified file 'bin/addons/account_reconciliation/wizard/account_reconcile.py'
--- bin/addons/account_reconciliation/wizard/account_reconcile.py 2019-05-10 14:28:26 +0000
+++ bin/addons/account_reconciliation/wizard/account_reconcile.py 2020-07-08 09:16:28 +0000
@@ -226,15 +226,8 @@
226 different_currencies = True226 different_currencies = True
227 debit = fdebit227 debit = fdebit
228 credit = fcredit228 credit = fcredit
229 # For salaries, behaviour is the same as total_change: we use functional debit/credit229 # UF-2050: Do not allow partial reconciliation of entries in different currencies. We ALWAYS do total reconciliation
230 if account_id == salary_account_id or (currency_id and currency2_id and not transfer_with_change):230 state = 'total'
231 if abs(fdebit - fcredit) <= 10**-3:
232 state = 'total'
233 else:
234 state = 'partial'
235 # UF-2050: Do not allow partial reconciliation of entries in different currencies. We ALWAYS do total reconciliation
236 if different_currencies and not transfer_with_change:
237 state = 'total'
238 return {'trans_nbr': count, 'account_id': account_id, 'credit': credit, 'debit': debit, 'writeoff': debit - credit, 'state': state, 'different_currencies': different_currencies}231 return {'trans_nbr': count, 'account_id': account_id, 'credit': credit, 'debit': debit, 'writeoff': debit - credit, 'state': state, 'different_currencies': different_currencies}
239232
240 def total_reconcile(self, cr, uid, ids, context=None):233 def total_reconcile(self, cr, uid, ids, context=None):
241234
=== modified file 'bin/addons/finance/account_drill.py'
--- bin/addons/finance/account_drill.py 2017-07-06 10:27:39 +0000
+++ bin/addons/finance/account_drill.py 2020-07-08 09:16:28 +0000
@@ -54,7 +54,7 @@
54 def get_currencies(self):54 def get_currencies(self):
55 if not self.data:55 if not self.data:
56 return []56 return []
57 return [ c for c in self.data.keys() if c != '*' ]57 return sorted([ c for c in self.data.keys() if c != '*' ])
5858
59 def output(self):59 def output(self):
60 """60 """
6161
=== modified file 'bin/addons/msf_doc_import/account.py'
--- bin/addons/msf_doc_import/account.py 2020-03-17 16:24:38 +0000
+++ bin/addons/msf_doc_import/account.py 2020-07-08 09:16:28 +0000
@@ -370,6 +370,7 @@
370 r_credit = book_credit370 r_credit = book_credit
371371
372 # Check the journal code which must match with one of the journal types listed in ACCOUNTING_IMPORT_JOURNALS372 # Check the journal code which must match with one of the journal types listed in ACCOUNTING_IMPORT_JOURNALS
373 journal_type = ''
373 if not line[cols['Journal Code']]:374 if not line[cols['Journal Code']]:
374 errors.append(_('Line %s. No Journal Code specified') % (current_line_num,))375 errors.append(_('Line %s. No Journal Code specified') % (current_line_num,))
375 continue376 continue
@@ -381,7 +382,8 @@
381 continue382 continue
382 else:383 else:
383 aj_data = aj_obj.read(cr, uid, aj_ids, ['type'])[0]384 aj_data = aj_obj.read(cr, uid, aj_ids, ['type'])[0]
384 if aj_data.get('type', False) is False or aj_data.get('type', False) not in ACCOUNTING_IMPORT_JOURNALS:385 journal_type = aj_data.get('type', False)
386 if journal_type is False or journal_type not in ACCOUNTING_IMPORT_JOURNALS:
385 journal_list = ', '.join([x[1] for x in aj_obj.get_journal_type(cr, uid) if x[0] in ACCOUNTING_IMPORT_JOURNALS])387 journal_list = ', '.join([x[1] for x in aj_obj.get_journal_type(cr, uid) if x[0] in ACCOUNTING_IMPORT_JOURNALS])
386 errors.append(_('Line %s. Import of entries only allowed on the following journal(s): %s') % (current_line_num, journal_list))388 errors.append(_('Line %s. Import of entries only allowed on the following journal(s): %s') % (current_line_num, journal_list))
387 continue389 continue
@@ -462,6 +464,13 @@
462 "\"Prevent correction on account codes\".") % (current_line_num, account.code, account.name,))464 "\"Prevent correction on account codes\".") % (current_line_num, account.code, account.name,))
463 continue465 continue
464466
467 if account.type_for_register == 'donation' and journal_type != 'extra':
468 jtype_value = journal_type and \
469 dict(aj_obj.fields_get(cr, uid, context=context)['type']['selection']).get(journal_type) or ''
470 errors.append(_('Line %s. The donation accounts are not compatible with the journal type %s.') %
471 (current_line_num, jtype_value))
472 continue
473
465 # Check analytic axis only if G/L account is analytic-a-holic474 # Check analytic axis only if G/L account is analytic-a-holic
466 if account.is_analytic_addicted:475 if account.is_analytic_addicted:
467 # Check Destination476 # Check Destination
468477
=== modified file 'bin/addons/msf_profile/data/patches.xml'
--- bin/addons/msf_profile/data/patches.xml 2020-06-26 12:27:30 +0000
+++ bin/addons/msf_profile/data/patches.xml 2020-07-08 09:16:28 +0000
@@ -560,5 +560,14 @@
560 <field name="method">us_7631_set_default_liquidity_accounts</field>560 <field name="method">us_7631_set_default_liquidity_accounts</field>
561 </record>561 </record>
562562
563 <!-- UF18.0 -->
564 <record id="us_7576_sync_msg_from_itself" model="patch.scripts">
565 <field name="method">sync_msg_from_itself</field>
566 </record>
567
568 <record id="us_6544_no_sync_on_forced_out" model="patch.scripts">
569 <field name="method">us_6544_no_sync_on_forced_out</field>
570 </record>
571
563 </data>572 </data>
564</openerp>573</openerp>
565574
=== modified file 'bin/addons/msf_profile/i18n/fr_MF.po'
--- bin/addons/msf_profile/i18n/fr_MF.po 2020-07-06 08:41:50 +0000
+++ bin/addons/msf_profile/i18n/fr_MF.po 2020-07-08 09:16:28 +0000
@@ -11816,11 +11816,6 @@
11816msgid "Group By"11816msgid "Group By"
11817msgstr "Grouper par"11817msgstr "Grouper par"
1181811818
11819#. module: account
11820#: selection:account.report.general.ledger,sortby:0
11821msgid "Journal & Partner"
11822msgstr "Journal et Partenaire"
11823
11824#. module: account_mcdb11819#. module: account_mcdb
11825#: selection:account.mcdb,currency_choice:011820#: selection:account.mcdb,currency_choice:0
11826msgid "Functional"11821msgid "Functional"
@@ -12112,7 +12107,7 @@
1211212107
12113#. module: account12108#. module: account
12114#: field:account.report.general.ledger,sortby:012109#: field:account.report.general.ledger,sortby:0
12115msgid "Sort By"12110msgid "Sort by"
12116msgstr "Trier par"12111msgstr "Trier par"
1211712112
12118#. module: product12113#. module: product
@@ -37163,7 +37158,6 @@
37163#: selection:account.pl.report,filter:037158#: selection:account.pl.report,filter:0
37164#: selection:account.print.journal,filter:037159#: selection:account.print.journal,filter:0
37165#: selection:account.print.journal,sort_selection:037160#: selection:account.print.journal,sort_selection:0
37166#: selection:account.report.general.ledger,sortby:0
37167#: field:account.subscription.generate,date:037161#: field:account.subscription.generate,date:0
37168#: field:account.subscription.line,date:037162#: field:account.subscription.line,date:0
37169#: report:account.tax.code.entries:037163#: report:account.tax.code.entries:0
@@ -65008,6 +65002,7 @@
65008#: selection:integrity.finance.wizard,filter:065002#: selection:integrity.finance.wizard,filter:0
65009#: code:addons/account_override/res_company.py:4065003#: code:addons/account_override/res_company.py:40
65010#: report:addons/account/report/export_invoice.mako:10865004#: report:addons/account/report/export_invoice.mako:108
65005#: selection:account.report.general.ledger,sortby:0
65011#, python-format65006#, python-format
65012msgid "Posting Date"65007msgid "Posting Date"
65013msgstr "Date de Comptabilisation"65008msgstr "Date de Comptabilisation"
@@ -78028,6 +78023,7 @@
78028#: report:account.general.ledger_landscape:078023#: report:account.general.ledger_landscape:0
78029#: report:account.general.ledger_landscape_tb:078024#: report:account.general.ledger_landscape_tb:0
78030#: report:addons/account/report/account_general_ledger_xls.mako:24778025#: report:addons/account/report/account_general_ledger_xls.mako:247
78026#: selection:account.report.general.ledger,sortby:0
78031#, python-format78027#, python-format
78032msgid "Third Party"78028msgid "Third Party"
78033msgstr "Tiers"78029msgstr "Tiers"
@@ -92901,6 +92897,7 @@
92901#: report:addons/stock/report/stock_delivery_report_xls.mako:22192897#: report:addons/stock/report/stock_delivery_report_xls.mako:221
92902#: report:addons/account/report/export_invoice.mako:9692898#: report:addons/account/report/export_invoice.mako:96
92903#: report:msf.purchase.quotation:092899#: report:msf.purchase.quotation:0
92900#: selection:account.report.general.ledger,sortby:0
92904#, python-format92901#, python-format
92905msgid "Currency"92902msgid "Currency"
92906msgstr "Devise"92903msgstr "Devise"
@@ -100630,6 +100627,8 @@
100630#: report:account.third_party_ledger:0100627#: report:account.third_party_ledger:0
100631#: report:account.third_party_ledger_other:0100628#: report:account.third_party_ledger_other:0
100632#: report:addons/account/report/account_partner_ledger.mako:310100629#: report:addons/account/report/account_partner_ledger.mako:310
100630#: selection:account.report.general.ledger,sortby:0
100631#: report:addons/account/report/account_general_ledger_xls.mako:289
100633msgid "Reconcile Number"100632msgid "Reconcile Number"
100634msgstr "Numéro de lettrage"100633msgstr "Numéro de lettrage"
100635100634
@@ -108042,7 +108041,7 @@
108042#. module: procurement_cycle108041#. module: procurement_cycle
108043#: field:replenishment.segment,order_creation_lt:0108042#: field:replenishment.segment,order_creation_lt:0
108044msgid "Order Creation Lead Time (days)"108043msgid "Order Creation Lead Time (days)"
108045msgstr "Délai de création de commande (jours)"108044msgstr "Délai de Création de Commande (jours)"
108046108045
108047#. module: procurement_cycle108046#. module: procurement_cycle
108048#: report:addons/procurement_cycle/report/replenishment_order_calc.mako:428108047#: report:addons/procurement_cycle/report/replenishment_order_calc.mako:428
@@ -110298,7 +110297,7 @@
110298#. module: procurement_cycle110297#. module: procurement_cycle
110299#: view:replenishment.segment:0110298#: view:replenishment.segment:0
110300msgid "Order Creation Lead Time (days) :"110299msgid "Order Creation Lead Time (days) :"
110301msgstr "Délai de création de commande (jours) :"110300msgstr "Délai de Création de Commande (jours) :"
110302110301
110303#. module: procurement_cycle110302#. module: procurement_cycle
110304#: view:replenishment.segment:0110303#: view:replenishment.segment:0
@@ -110323,7 +110322,19 @@
110323#. module: procurement_cycle110322#. module: procurement_cycle
110324#: view:replenishment.segment:0110323#: view:replenishment.segment:0
110325msgid "Handling Lead Time (days) :"110324msgid "Handling Lead Time (days) :"
110326msgstr "Délai de traitement (jours) :"110325msgstr "Délai de Manutention (jours) :"
110326
110327#. module: register_accounting
110328#: code:addons/register_accounting/wizard/wizard_register_import.py:495
110329#, python-format
110330msgid "Line %s. The journal third party used for the internal transfer must be different from the journal of the register."
110331msgstr "Ligne %s. Le tiers de type journal utilisé pour le transfert interne doit être différent du journal du registre."
110332
110333#. module: msf_doc_import
110334#: code:addons/msf_doc_import/account.py:470
110335#, python-format
110336msgid "Line %s. The donation accounts are not compatible with the journal type %s."
110337msgstr "Ligne %s. Les comptes de donation ne sont pas compatibles avec le type de journal %s."
110327110338
110328#. module: msf_doc_import110339#. module: msf_doc_import
110329#: code:addons/msf_doc_import/wizard/wizard_in_simulation_screen.py:1570110340#: code:addons/msf_doc_import/wizard/wizard_in_simulation_screen.py:1570
110330110341
=== modified file 'bin/addons/msf_profile/msf_profile.py'
--- bin/addons/msf_profile/msf_profile.py 2020-06-26 12:27:30 +0000
+++ bin/addons/msf_profile/msf_profile.py 2020-07-08 09:16:28 +0000
@@ -52,6 +52,33 @@
52 'model': lambda *a: 'patch.scripts',52 'model': lambda *a: 'patch.scripts',
53 }53 }
5454
55 # UF18.0
56 def sync_msg_from_itself(self, cr, uid, *a, **b):
57 instance = self.pool.get('res.users').browse(cr, uid, uid, fields_to_fetch=['company_id']).company_id.instance_id
58 if not instance:
59 return True
60 cr.execute(''' update sync_client_message_received set run='t', manually_ran='t', log='Set manually to run without execution', manually_set_run_date=now() where run='f' and source=%s ''', (instance.instance, ))
61 self._logger.warn('Set %s self sync messages as Run' % (cr.rowcount,))
62 return True
63
64
65 def us_6544_no_sync_on_forced_out(self, cr, uid, *a, **b):
66 # already forced OUT as delivred must no generate sync msg to prevent NR at reception
67 if self.pool.get('sync_client.version'):
68 cr.execute('''
69 update ir_model_data set sync_date=NOW() where id in (
70 select d.id from
71 stock_picking p
72 left join ir_model_data d on d.model='stock.picking' and d.res_id=p.id and d.module='sd'
73 where
74 p.type='out' and
75 p.subtype='standard' and
76 p.state='delivered' and
77 (d.sync_date is null or d.sync_date < d.last_modification)
78 )''')
79 self._logger.warn('Prevent NR on forced delivered OUT (%s)' % (cr.rowcount,))
80 return True
81
55 # UF17.182 # UF17.1
56 def us_7631_set_default_liquidity_accounts(self, cr, uid, *a, **b):83 def us_7631_set_default_liquidity_accounts(self, cr, uid, *a, **b):
57 if self.pool.get('sync_client.version') and self.pool.get('sync.client.entity'):84 if self.pool.get('sync_client.version') and self.pool.get('sync.client.entity'):
5885
=== modified file 'bin/addons/msf_supply_doc_export/wizard/wizard_pick_import.py'
--- bin/addons/msf_supply_doc_export/wizard/wizard_pick_import.py 2019-10-01 09:33:29 +0000
+++ bin/addons/msf_supply_doc_export/wizard/wizard_pick_import.py 2020-07-08 09:16:28 +0000
@@ -281,13 +281,14 @@
281 qty_per_line[line_data['item']] = line_data['qty']281 qty_per_line[line_data['item']] = line_data['qty']
282282
283 product = self.get_product(cr, uid, ids, line_data, context=context)283 product = self.get_product(cr, uid, ids, line_data, context=context)
284 self.checks_on_batch(cr, uid, ids, product, line_data, context=context)284 move_id = self.get_matching_move(cr, uid, ids, line_data, product.id, wiz.picking_id.id, treated_lines, context=context)
285 to_write.update({285 if not move_id:
286 'move_id': self.get_matching_move(cr, uid, ids, line_data, product.id, wiz.picking_id.id, treated_lines, context=context)
287 })
288 if not to_write.get('move_id'):
289 continue286 continue
290 else:287 else:
288 self.checks_on_batch(cr, uid, ids, product, line_data, context=context)
289 to_write.update({
290 'move_id': move_id,
291 })
291 if line_data['qty_to_process'] > line_data['qty']:292 if line_data['qty_to_process'] > line_data['qty']:
292 raise osv.except_osv(293 raise osv.except_osv(
293 _('Error'),294 _('Error'),
@@ -334,7 +335,7 @@
334 cr.execute("""335 cr.execute("""
335 SELECT m.line_number, p.default_code, SUM(product_qty) 336 SELECT m.line_number, p.default_code, SUM(product_qty)
336 FROM stock_move m, product_product p337 FROM stock_move m, product_product p
337 WHERE m.product_id = p.id AND m.picking_id = %s AND m.state IN ('confirmed', 'assigned') 338 WHERE m.product_id = p.id AND m.picking_id = %s AND m.state = 'assigned'
338 GROUP BY m.line_number, p.default_code339 GROUP BY m.line_number, p.default_code
339 """, (wiz.picking_id.id,))340 """, (wiz.picking_id.id,))
340 for prod in cr.fetchall():341 for prod in cr.fetchall():
341342
=== modified file 'bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv'
--- bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2020-05-10 10:29:07 +0000
+++ bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2020-07-08 09:16:28 +0000
@@ -8,7 +8,7 @@
8msf_sync_data_server.pol_create_sol,TRUE,TRUE,"['sync_local_id', 'order_id/name','product_id/id', 'product_id/name', 'name', 'state', 'product_qty', 'product_uom', 'price_unit', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','is_line_split','date_planned', 'stock_take_date', 'ir_name_for_sync']","[('sync_linked_sol', '=', False), ('order_id.partner_type', 'not in',['external','esc']), ('state', 'in', ['validated', 'confirmed', 'done']), ('order_id.state', 'not in', ['draft', 'draft_p', 'cancel'])]",partner_id,MISSION,sale.order.line.create_so_line,purchase.order.line,PO line creates FO line,11,,Valid8msf_sync_data_server.pol_create_sol,TRUE,TRUE,"['sync_local_id', 'order_id/name','product_id/id', 'product_id/name', 'name', 'state', 'product_qty', 'product_uom', 'price_unit', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','is_line_split','date_planned', 'stock_take_date', 'ir_name_for_sync']","[('sync_linked_sol', '=', False), ('order_id.partner_type', 'not in',['external','esc']), ('state', 'in', ['validated', 'confirmed', 'done']), ('order_id.state', 'not in', ['draft', 'draft_p', 'cancel'])]",partner_id,MISSION,sale.order.line.create_so_line,purchase.order.line,PO line creates FO line,11,,Valid
9msf_sync_data_server.sol_updates_pol,TRUE,TRUE,"['resourced_original_line/id', 'resourced_original_remote_line','sync_sourced_origin', 'sync_local_id', 'sync_linked_pol', 'order_id/name', 'product_id/id', 'product_id/name', 'name', 'state','product_uom_qty', 'product_uom', 'price_unit', 'in_name_goods_return', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','date_planned','is_line_split', 'original_line_id/id', 'confirmed_delivery_date', 'stock_take_date', 'cancel_split_ok', 'modification_comment', 'from_cancel_out', 'pol_external_ref']","[('order_id.partner_type', '!=', 'external'), ('state', '!=', 'draft'), ('product_uom_qty', '!=', 0.0), '!', '&', ('order_id.fo_created_by_po_sync', '=', False), ('order_id.state', '=', 'draft')]",partner_id,MISSION,purchase.order.line.sol_update_original_pol,sale.order.line,FO line updates PO line,12,"[('order_id.state', 'in', ['draft', 'draft_p']), ('order_id.partner_type', 'not in', ['external', 'esc']), ('order_id.client_order_ref', '=', False)]",Valid9msf_sync_data_server.sol_updates_pol,TRUE,TRUE,"['resourced_original_line/id', 'resourced_original_remote_line','sync_sourced_origin', 'sync_local_id', 'sync_linked_pol', 'order_id/name', 'product_id/id', 'product_id/name', 'name', 'state','product_uom_qty', 'product_uom', 'price_unit', 'in_name_goods_return', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','date_planned','is_line_split', 'original_line_id/id', 'confirmed_delivery_date', 'stock_take_date', 'cancel_split_ok', 'modification_comment', 'from_cancel_out', 'pol_external_ref']","[('order_id.partner_type', '!=', 'external'), ('state', '!=', 'draft'), ('product_uom_qty', '!=', 0.0), '!', '&', ('order_id.fo_created_by_po_sync', '=', False), ('order_id.state', '=', 'draft')]",partner_id,MISSION,purchase.order.line.sol_update_original_pol,sale.order.line,FO line updates PO line,12,"[('order_id.state', 'in', ['draft', 'draft_p']), ('order_id.partner_type', 'not in', ['external', 'esc']), ('order_id.client_order_ref', '=', False)]",Valid
10msf_sync_data_server.pol_update_date_expected,TRUE,TRUE,"['sync_local_id', 'sync_linked_pol']","[('id', '=', 0)]",partner_id,MISSION,purchase.order.line.update_date_expected,sale.order.line,Update IN expected date,55,,Valid10msf_sync_data_server.pol_update_date_expected,TRUE,TRUE,"['sync_local_id', 'sync_linked_pol']","[('id', '=', 0)]",partner_id,MISSION,purchase.order.line.update_date_expected,sale.order.line,Update IN expected date,55,,Valid
11msf_sync_data_server.partial_shipped_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'claim', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/location_dest_id/usage', 'move_lines/comment', 'move_lines/sale_line_id/id', 'move_lines/sale_line_id/in_name_goods_return', 'sale_id/claim_name_goods_return', 'sale_id/client_order_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['standard', 'packing']), ('state', '=', 'done'), ('already_shipped', '=', True), ('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.partial_shipped_fo_updates_in_po,stock.picking,Partial shipped at Coordo updates IN at Project,19,,Valid11msf_sync_data_server.partial_shipped_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'claim', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/location_dest_id/usage', 'move_lines/comment', 'move_lines/sale_line_id/id', 'move_lines/sale_line_id/in_name_goods_return', 'sale_id/claim_name_goods_return', 'sale_id/client_order_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['standard', 'packing']), ('state', 'in', ['done', 'delivered']), ('already_shipped', '=', True), ('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.partial_shipped_fo_updates_in_po,stock.picking,Partial shipped at Coordo updates IN at Project,19,,Valid
12msf_sync_data_server.moves_from_dpo_closed_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'subtype', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/dpo_line_id', 'move_lines/comment']","['&', '&', '&', ('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['picking', 'standard']), ('dpo_out', '=', True)]",partner_id,MISSION,stock.picking.partial_shippped_dpo_updates_in_po,stock.picking,Moves from DPO closed at Coordo updates IN at Project,20,,Valid12msf_sync_data_server.moves_from_dpo_closed_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'subtype', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/dpo_line_id', 'move_lines/comment']","['&', '&', '&', ('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['picking', 'standard']), ('dpo_out', '=', True)]",partner_id,MISSION,stock.picking.partial_shippped_dpo_updates_in_po,stock.picking,Moves from DPO closed at Coordo updates IN at Project,20,,Valid
13msf_sync_data_server.dpo_service_lines_update_in_at_project,FALSE,TRUE,"['order_id/name', 'order_id/delivery_confirmed_date', 'sync_local_id', 'origin', 'confirmed_delivery_date', 'name', 'product_uom/id', 'product_uom/name', 'link_sol_id/line_number', 'notes', 'product_qty', 'product_id/name', 'product_id/id', 'product_id/default_code', 'comment']","[('dest_partner_id.partner_type', '=', 'internal'), ('order_id.order_type', '=', 'direct'), ('order_id.state', 'in', ['approved', 'done']), ('product_id.type', 'in', ['service', 'service_recep'])]",dest_partner_id,MISSION,purchase.order.line.confirmed_dpo_service_lines_update_in_po,purchase.order.line,DPO service lines update IN at Project,21,,Valid13msf_sync_data_server.dpo_service_lines_update_in_at_project,FALSE,TRUE,"['order_id/name', 'order_id/delivery_confirmed_date', 'sync_local_id', 'origin', 'confirmed_delivery_date', 'name', 'product_uom/id', 'product_uom/name', 'link_sol_id/line_number', 'notes', 'product_qty', 'product_id/name', 'product_id/id', 'product_id/default_code', 'comment']","[('dest_partner_id.partner_type', '=', 'internal'), ('order_id.order_type', '=', 'direct'), ('order_id.state', 'in', ['approved', 'done']), ('product_id.type', 'in', ['service', 'service_recep'])]",dest_partner_id,MISSION,purchase.order.line.confirmed_dpo_service_lines_update_in_po,purchase.order.line,DPO service lines update IN at Project,21,,Valid
14msf_sync_data_server.closed_in_validates_delivery_out_ship,TRUE,TRUE,"['name', 'state', 'shipment_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'in'),('subtype', 'in', ['standard']), ('state', '=', 'done'), ('shipment_ref', '!=', False), ('dpo_incoming', '=', False)]",partner_id,MISSION,stock.picking.closed_in_validates_delivery_out_ship,stock.picking,Closed IN validates delivery of OUT-SHIP,26,,Valid14msf_sync_data_server.closed_in_validates_delivery_out_ship,TRUE,TRUE,"['name', 'state', 'shipment_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'in'),('subtype', 'in', ['standard']), ('state', '=', 'done'), ('shipment_ref', '!=', False), ('dpo_incoming', '=', False)]",partner_id,MISSION,stock.picking.closed_in_validates_delivery_out_ship,stock.picking,Closed IN validates delivery of OUT-SHIP,26,,Valid
1515
=== modified file 'bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv'
--- bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2020-05-25 09:59:55 +0000
+++ bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2020-07-08 09:16:28 +0000
@@ -21,10 +21,10 @@
21msf_sync_data_server.gl_account_type,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['close_method', 'code', 'name', 'note', 'not_correctible', 'report_type']",OC,account.account.type,,GL Account Type,Valid,,11621msf_sync_data_server.gl_account_type,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['close_method', 'code', 'name', 'note', 'not_correctible', 'report_type']",OC,account.account.type,,GL Account Type,Valid,,116
22msf_sync_data_server.gl_accounts,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,[],"['accrual_account','code', 'default_destination_id/id', 'display_in_reports', 'inactivation_date', 'activation_date', 'is_not_hq_correctible', 'name', 'note', 'reconcile', 'shrink_entries_for_hq', 'type', 'type_for_register', 'user_type/id', 'currency_revaluation', 'include_in_yearly_move', 'has_partner_type_internal', 'has_partner_type_section', 'has_partner_type_external', 'has_partner_type_esc', 'has_partner_type_intermission', 'has_partner_type_local', 'has_partner_type_ex', 'has_partner_type_book', 'has_partner_type_empty', 'is_not_ad_correctable', 'prevent_multi_curr_rec']",OC,account.account,,GL Accounts,Valid,,11722msf_sync_data_server.gl_accounts,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,[],"['accrual_account','code', 'default_destination_id/id', 'display_in_reports', 'inactivation_date', 'activation_date', 'is_not_hq_correctible', 'name', 'note', 'reconcile', 'shrink_entries_for_hq', 'type', 'type_for_register', 'user_type/id', 'currency_revaluation', 'include_in_yearly_move', 'has_partner_type_internal', 'has_partner_type_section', 'has_partner_type_external', 'has_partner_type_esc', 'has_partner_type_intermission', 'has_partner_type_local', 'has_partner_type_ex', 'has_partner_type_book', 'has_partner_type_empty', 'is_not_ad_correctable', 'prevent_multi_curr_rec']",OC,account.account,,GL Accounts,Valid,,117
23msf_sync_data_server.gl_accounts_tree,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('parent_id', '!=', '')]",['parent_id/id'],OC,account.account,,GL Accounts Tree,Valid,,11823msf_sync_data_server.gl_accounts_tree,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('parent_id', '!=', '')]",['parent_id/id'],OC,account.account,,GL Accounts Tree,Valid,,118
24msf_sync_data_server.analytical_journal_hq,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('instance_id.level', '=', 'section')]","['active', 'code', 'name', 'type','instance_id/id']",OC,account.analytic.journal,,Analytical Journal (HQ),Valid,,11924msf_sync_data_server.analytical_journal_hq,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('instance_id.level', '=', 'section')]","['code', 'name', 'type','instance_id/id']",OC,account.analytic.journal,,Analytical Journal (HQ),Valid,,119
25msf_sync_data_server.analytical_journal_coordo,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('instance_id.level', '=', 'coordo'),('code','!=','ENGI')]","['active', 'code', 'name', 'type','instance_id/id']",MISSION,account.analytic.journal,,Analytical Journal (Coordo),Valid,,12025msf_sync_data_server.analytical_journal_coordo,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('instance_id.level', '=', 'coordo'),('code','!=','ENGI')]","['code', 'name', 'type','instance_id/id']",MISSION,account.analytic.journal,,Analytical Journal (Coordo),Valid,,120
26msf_sync_data_server.analytical_journal_project,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional,"[('instance_id.level', '=', 'project'),('code','!=','ENGI')]","['active', 'code', 'name', 'type','instance_id/id']",MISSION,account.analytic.journal,,Analytical Journal (Project),Valid,,12126msf_sync_data_server.analytical_journal_project,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional,"[('instance_id.level', '=', 'project'),('code','!=','ENGI')]","['code', 'name', 'type','instance_id/id']",MISSION,account.analytic.journal,,Analytical Journal (Project),Valid,,121
27msf_sync_data_server.analytical_journal,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional-Private,[],"['active', 'code', 'name', 'type','instance_id/id']",OC,account.analytic.journal,instance_id,Analytical Journal,Valid,,12227msf_sync_data_server.analytical_journal,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional-Private,[],"['code', 'name', 'type','instance_id/id']",OC,account.analytic.journal,instance_id,Analytical Journal,Valid,,122
28msf_sync_data_server.link_accounts_destination,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['account_id/id', 'destination_id/id', 'disabled']",OC,account.destination.link,,Link accounts Destination,Valid,,12328msf_sync_data_server.link_accounts_destination,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['account_id/id', 'destination_id/id', 'disabled']",OC,account.destination.link,,Link accounts Destination,Valid,,123
29msf_sync_data_server.funding_pool_to_coordo,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional-Private,"[('category' , '=' , 'FUNDING')]","['category', 'code', 'cost_center_ids/id', 'date', 'date_start', 'description', 'instance_id/id', 'name', 'tuple_destination_account_ids/id', 'type']",HQ + MISSION,account.analytic.account,instance_id,Funding Pool linked to a special coordo,Valid,,12429msf_sync_data_server.funding_pool_to_coordo,TRUE,TRUE,FALSE,TRUE,bidirectional,Bidirectional-Private,"[('category' , '=' , 'FUNDING')]","['category', 'code', 'cost_center_ids/id', 'date', 'date_start', 'description', 'instance_id/id', 'name', 'tuple_destination_account_ids/id', 'type']",HQ + MISSION,account.analytic.account,instance_id,Funding Pool linked to a special coordo,Valid,,124
30msf_sync_data_server.fp_tree0,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('category', 'in', ['FREE1', 'FREE2', 'DEST']),('parent_id', '!=', '')]","['parent_id/id', 'instance_id/id']",OC,account.analytic.account,instance_id,"DestF1F2 tree (only F1, F2 and Dest)",Valid,,12630msf_sync_data_server.fp_tree0,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('category', 'in', ['FREE1', 'FREE2', 'DEST']),('parent_id', '!=', '')]","['parent_id/id', 'instance_id/id']",OC,account.analytic.account,instance_id,"DestF1F2 tree (only F1, F2 and Dest)",Valid,,126
3131
=== modified file 'bin/addons/register_accounting/wizard/wizard_register_import.py'
--- bin/addons/register_accounting/wizard/wizard_register_import.py 2020-02-27 16:28:21 +0000
+++ bin/addons/register_accounting/wizard/wizard_register_import.py 2020-07-08 09:16:28 +0000
@@ -491,6 +491,10 @@
491 if tp_journal.currency.id != register_currency:491 if tp_journal.currency.id != register_currency:
492 errors.append(_('Line %s. A Transfer Same Journal must have the same currency as the register.') % (current_line_num,))492 errors.append(_('Line %s. A Transfer Same Journal must have the same currency as the register.') % (current_line_num,))
493 continue493 continue
494 if tp_journal.id == wiz.register_id.journal_id.id:
495 errors.append(_('Line %s. The journal third party used for the internal transfer '
496 'must be different from the journal of the register.') % (current_line_num,))
497 continue
494 # Type DP ==> PARTNER required498 # Type DP ==> PARTNER required
495 elif type_for_register == 'down_payment':499 elif type_for_register == 'down_payment':
496 tp_ids = partner_obj.search(cr, uid, [('name', '=', line[cols['third_party']])], context=context)500 tp_ids = partner_obj.search(cr, uid, [('name', '=', line[cols['third_party']])], context=context)
497501
=== modified file 'bin/addons/sale/report/sale_donation_stock_moves_report.py'
--- bin/addons/sale/report/sale_donation_stock_moves_report.py 2019-10-30 16:33:21 +0000
+++ bin/addons/sale/report/sale_donation_stock_moves_report.py 2020-07-08 09:16:28 +0000
@@ -45,8 +45,10 @@
45 Return the moves for the report45 Return the moves for the report
46 '''46 '''
47 result = []47 result = []
48 for move in report.sm_ids:48 for move_id in report.sm_ids:
49 result.append(self.pool.get('stock.move').browse(self.cr, self.uid, move))49 move = self.pool.get('stock.move').browse(self.cr, self.uid, move_id)
50 if self._get_qty(move) != 0:
51 result.append(move)
5052
51 return sorted(result, key=lambda r: (r['date']), reverse=True)53 return sorted(result, key=lambda r: (r['date']), reverse=True)
5254
5355
=== modified file 'bin/addons/sales_followup/report/ir_follow_up_location_report.py'
--- bin/addons/sales_followup/report/ir_follow_up_location_report.py 2019-12-12 13:30:26 +0000
+++ bin/addons/sales_followup/report/ir_follow_up_location_report.py 2020-07-08 09:16:28 +0000
@@ -331,7 +331,7 @@
331 # Put the backorderd qty on the first line331 # Put the backorderd qty on the first line
332 if not lines:332 if not lines:
333 continue333 continue
334 if bo_qty and bo_qty > 0 and not first_line and line.order_id.state not in ('cancel', 'done'):334 if bo_qty and bo_qty > 0 and not first_line and line.state not in ('cancel', 'cancel_r', 'done'):
335 lines.append({335 lines.append({
336 'po_name': po_name,336 'po_name': po_name,
337 'cdd': cdd,337 'cdd': cdd,
338338
=== modified file 'bin/addons/stock/report/products_situation_report.py'
--- bin/addons/stock/report/products_situation_report.py 2019-05-10 15:21:38 +0000
+++ bin/addons/stock/report/products_situation_report.py 2020-07-08 09:16:28 +0000
@@ -131,10 +131,12 @@
131 prod_domain.append(('dangerous_goods', '=', report.dangerous_goods))131 prod_domain.append(('dangerous_goods', '=', report.dangerous_goods))
132132
133 if report.perishable:133 if report.perishable:
134 prod_domain.append(('perishable', '=', report.perishable))134 perishable = report.perishable == 'True' and True or report.perishable == 'False' and False or ''
135 prod_domain.append(('perishable', '=', perishable))
135136
136 if report.batch_management:137 if report.batch_management:
137 prod_domain.append(('batch_management', '=', report.batch_management))138 batch_management = report.batch_management == 'True' and True or report.batch_management == 'False' and False or ''
139 prod_domain.append(('batch_management', '=', batch_management))
138140
139 prod_ids = prod_obj.search(cr, uid, prod_domain, order='default_code', context=context)141 prod_ids = prod_obj.search(cr, uid, prod_domain, order='default_code', context=context)
140142
141143
=== modified file 'bin/osv/expression.py'
--- bin/osv/expression.py 2020-02-28 09:27:51 +0000
+++ bin/osv/expression.py 2020-07-08 09:16:28 +0000
@@ -70,7 +70,7 @@
70 raise ValueError('Bad domain expression: %r' % (exp,))70 raise ValueError('Bad domain expression: %r' % (exp,))
71 self.__exp = exp71 self.__exp = exp
72 self.__field_tables = {} # used to store the table to use for the sql generation. key = index of the leaf72 self.__field_tables = {} # used to store the table to use for the sql generation. key = index of the leaf
73 self.__all_tables = set()73 self.__all_tables = []
74 self.__joins = []74 self.__joins = []
75 self.__main_table = None # 'root' table. set by parse()75 self.__main_table = None # 'root' table. set by parse()
76 self.__DUMMY_LEAF = (1, '=', 1) # a dummy leaf that must not be parsed or sql generated76 self.__DUMMY_LEAF = (1, '=', 1) # a dummy leaf that must not be parsed or sql generated
@@ -107,7 +107,8 @@
107 return [(left, 'in', rg(ids, table, parent or table._parent_name))]107 return [(left, 'in', rg(ids, table, parent or table._parent_name))]
108108
109 self.__main_table = table109 self.__main_table = table
110 self.__all_tables.add(table)110 if table not in self.__all_tables:
111 self.__all_tables.append(table)
111112
112 i = -1113 i = -1
113 while i + 1<len(self.__exp):114 while i + 1<len(self.__exp):
@@ -130,7 +131,7 @@
130 working_table = main_table.pool.get(main_table._inherit_fields[fargs[0]][0])131 working_table = main_table.pool.get(main_table._inherit_fields[fargs[0]][0])
131 if working_table not in self.__all_tables:132 if working_table not in self.__all_tables:
132 self.__joins.append('%s.%s=%s.%s' % (working_table._table, 'id', main_table._table, main_table._inherits[working_table._name]))133 self.__joins.append('%s.%s=%s.%s' % (working_table._table, 'id', main_table._table, main_table._inherits[working_table._name]))
133 self.__all_tables.add(working_table)134 self.__all_tables.append(working_table)
134 main_table = working_table135 main_table = working_table
135136
136 field = working_table._columns.get(fargs[0], False)137 field = working_table._columns.get(fargs[0], False)
137138
=== modified file 'bin/release.py'
--- bin/release.py 2020-06-26 08:10:24 +0000
+++ bin/release.py 2020-07-08 09:16:28 +0000
@@ -20,7 +20,7 @@
20##############################################################################20##############################################################################
2121
22name = 'openerp-server'22name = 'openerp-server'
23version = 'UF17.1dev'23version = 'UF18.0dev'
24major_version = '8.0'24major_version = '8.0'
25description = 'OpenERP Server'25description = 'OpenERP Server'
26long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic26long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic

Subscribers

People subscribed via source and target branches