Merge lp:~mallorymarcot/unifield-server/us-449 into lp:unifield-server

Proposed by jftempo
Status: Merged
Merged at revision: 4490
Proposed branch: lp:~mallorymarcot/unifield-server/us-449
Merge into: lp:unifield-server
Diff against target: 2262 lines (+1654/-32) (has conflicts)
23 files modified
bin/addons/account_period_closing_level/account_period.py (+32/-0)
bin/addons/delivery_mechanism/delivery_mechanism.py (+4/-0)
bin/addons/msf_doc_import/wizard/wizard_delete_lines.py (+23/-0)
bin/addons/msf_outgoing/msf_outgoing.py (+102/-9)
bin/addons/msf_outgoing/wizard/create_picking_processor.py (+40/-0)
bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml (+3/-1)
bin/addons/msf_outgoing/wizard/validate_picking_processor.py (+40/-1)
bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml (+3/-1)
bin/addons/msf_profile/data/patches.xml (+22/-0)
bin/addons/msf_profile/i18n/fr_MF.po (+648/-20)
bin/addons/msf_profile/msf_profile.py (+166/-0)
bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv (+51/-0)
bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv (+9/-0)
bin/addons/procurement_request/procurement_request_view.xml (+4/-0)
bin/addons/reason_types_moves/reason_type.py (+9/-0)
bin/addons/sales_followup/report/sale_follow_up_report_multi.py (+25/-0)
bin/addons/specific_rules/specific_rules.py (+46/-0)
bin/addons/stock/stock.py (+15/-0)
bin/addons/stock_override/wizard/stock_card_wizard.py (+4/-0)
bin/release.py (+4/-0)
bin/unifield-version.txt (+6/-0)
bin/updater.py (+372/-0)
setup.py (+26/-0)
Text conflict in bin/addons/account_period_closing_level/account_period.py
Text conflict in bin/addons/delivery_mechanism/delivery_mechanism.py
Text conflict in bin/addons/msf_doc_import/wizard/wizard_delete_lines.py
Text conflict in bin/addons/msf_profile/data/patches.xml
Text conflict in bin/addons/msf_profile/i18n/fr_MF.po
Text conflict in bin/addons/msf_profile/msf_profile.py
Text conflict in bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv
Text conflict in bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv
Text conflict in bin/addons/procurement_request/procurement_request_view.xml
Text conflict in bin/addons/reason_types_moves/reason_type.py
Text conflict in bin/addons/sales_followup/report/sale_follow_up_report_multi.py
Text conflict in bin/addons/specific_rules/specific_rules.py
Text conflict in bin/addons/stock/stock.py
Text conflict in bin/addons/stock_override/wizard/stock_card_wizard.py
Text conflict in bin/release.py
Text conflict in bin/unifield-version.txt
Text conflict in bin/updater.py
Text conflict in setup.py
To merge this branch: bzr merge lp:~mallorymarcot/unifield-server/us-449
Reviewer Review Type Date Requested Status
UniField Reviewer Team Pending
Review via email: mp+329612@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/account.py'
=== modified file 'bin/addons/account/account_invoice_view.xml'
=== modified file 'bin/addons/account/account_view.xml'
=== modified file 'bin/addons/account/project/project_view.xml'
=== modified file 'bin/addons/account_override/account_invoice_view.xml'
=== modified file 'bin/addons/account_override/account_move_line.py'
=== modified file 'bin/addons/account_period_closing_level/account_period.py'
--- bin/addons/account_period_closing_level/account_period.py 2017-08-28 14:06:27 +0000
+++ bin/addons/account_period_closing_level/account_period.py 2017-09-01 09:49:29 +0000
@@ -193,11 +193,20 @@
193193
194 # first verify that all existent registers for this period are closed194 # first verify that all existent registers for this period are closed
195 reg_ids = reg_obj.search(cr, uid, [('period_id', '=', period.id)], context=context)195 reg_ids = reg_obj.search(cr, uid, [('period_id', '=', period.id)], context=context)
196<<<<<<< TREE
196 journal_ok = []197 journal_ok = []
198=======
199 linked_prev_reg_ids = []
200>>>>>>> MERGE-SOURCE
197 for register in reg_obj.browse(cr, uid, reg_ids, context=context):201 for register in reg_obj.browse(cr, uid, reg_ids, context=context):
202<<<<<<< TREE
198 journal_ok.append(register.journal_id.id)203 journal_ok.append(register.journal_id.id)
204=======
205 register.prev_reg_id and linked_prev_reg_ids.append(register.prev_reg_id.id)
206>>>>>>> MERGE-SOURCE
199 if register.state not in ['confirm']:207 if register.state not in ['confirm']:
200 raise osv.except_osv(_('Warning'), _("The register '%s' is not closed. Please close it before closing period") % (register.name,))208 raise osv.except_osv(_('Warning'), _("The register '%s' is not closed. Please close it before closing period") % (register.name,))
209<<<<<<< TREE
201210
202 # prevent period closing if one of the registers of the previous period211 # prevent period closing if one of the registers of the previous period
203 # has no corresponding register in the period to close AND has a non 0 balance. (except for period 13..16)212 # has no corresponding register in the period to close AND has a non 0 balance. (except for period 13..16)
@@ -218,6 +227,29 @@
218 "to close and have a balance which isn't equal to 0:\n"227 "to close and have a balance which isn't equal to 0:\n"
219 "%s") % ", ".join([r.name for r in reg_ko]))228 "%s") % ", ".join([r.name for r in reg_ko]))
220229
230=======
231
232 # prevent period closing if one of the registers of the previous period
233 # has no corresponding register in the period to close AND has a non 0 balance. (except for period 13..16)
234 if not period.special:
235 prev_period_id = register_tools.previous_period_id(self, cr, uid, period.id, context=context, raise_error=False)
236 if prev_period_id:
237 all_prev_reg_ids = reg_obj.search(cr, uid, [('period_id', '=', prev_period_id)], order='NO_ORDER', context=context)
238 # get the registers of the previous period which are NOT linked to a register of the period to close
239 orphan_prev_reg_ids = [reg_id for reg_id in all_prev_reg_ids if reg_id not in linked_prev_reg_ids]
240 reg_ko = []
241 for reg in reg_obj.browse(cr, uid, orphan_prev_reg_ids,
242 fields_to_fetch=['balance_end', 'balance_end_real', 'balance_end_cash', 'name'],
243 context=context):
244 if abs(reg.balance_end) > 10**-3 or abs(reg.balance_end_real) > 10**-3 or abs(reg.balance_end_cash) > 10**-3:
245 reg_ko.append(reg)
246 if len(reg_ko) > 0:
247 raise osv.except_osv(_('Warning'),
248 _("One or several registers have not been generated for the period "
249 "to close and have a balance which isn't equal to 0:\n"
250 "%s") % ", ".join([r.name for r in reg_ko]))
251
252>>>>>>> MERGE-SOURCE
221 # check if subscriptions lines were not created for this period253 # check if subscriptions lines were not created for this period
222 sub_ids = sub_obj.search(cr, uid, [('date', '<', period.date_stop), ('move_id', '=', False)], context=context)254 sub_ids = sub_obj.search(cr, uid, [('date', '<', period.date_stop), ('move_id', '=', False)], context=context)
223 if len(sub_ids) > 0:255 if len(sub_ids) > 0:
224256
=== modified file 'bin/addons/base/ir/ir.xml'
=== modified file 'bin/addons/delivery_mechanism/delivery_mechanism.py'
--- bin/addons/delivery_mechanism/delivery_mechanism.py 2017-08-28 12:05:59 +0000
+++ bin/addons/delivery_mechanism/delivery_mechanism.py 2017-09-01 09:49:29 +0000
@@ -334,8 +334,12 @@
334 for move in self.browse(cr, uid, move_ids, context=context):334 for move in self.browse(cr, uid, move_ids, context=context):
335 pick = move.picking_id335 pick = move.picking_id
336 cond1 = move.picking_id.subtype == 'standard'336 cond1 = move.picking_id.subtype == 'standard'
337<<<<<<< TREE
337 cond2 = move.product_qty != 0.00 and pick.subtype == 'picking' and (not pick.backorder_id or pick.backorder_id.subtype == 'standard') and pick.state == 'draft'338 cond2 = move.product_qty != 0.00 and pick.subtype == 'picking' and (not pick.backorder_id or pick.backorder_id.subtype == 'standard') and pick.state == 'draft'
339=======
340>>>>>>> MERGE-SOURCE
338 # move from draft picking or standard picking341 # move from draft picking or standard picking
342 cond2 = move.product_qty != 0.00 and pick.subtype == 'picking' and (not pick.backorder_id or pick.backorder_id.subtype == 'standard') and pick.state == 'draft'
339 if cond2 or cond1:343 if cond2 or cond1:
340 integrity_check.append(move)344 integrity_check.append(move)
341 # return the first one matching345 # return the first one matching
342346
=== modified file 'bin/addons/financing_contract/financing_contract_view.xml'
=== modified file 'bin/addons/msf_budget/msf_budget_view.xml'
=== modified file 'bin/addons/msf_doc_import/wizard/__init__.py'
=== modified file 'bin/addons/msf_doc_import/wizard/wizard_delete_lines.py'
--- bin/addons/msf_doc_import/wizard/wizard_delete_lines.py 2017-08-11 13:56:44 +0000
+++ bin/addons/msf_doc_import/wizard/wizard_delete_lines.py 2017-09-01 09:49:29 +0000
@@ -573,6 +573,7 @@
573 if isinstance(ids, (int, long)):573 if isinstance(ids, (int, long)):
574 ids = [ids]574 ids = [ids]
575575
576<<<<<<< TREE
576 # only for FO577 # only for FO
577 if context['active_model'] == 'sale.order' \578 if context['active_model'] == 'sale.order' \
578 and (not context.get('procurement_request') or not context['procurement_request']):579 and (not context.get('procurement_request') or not context['procurement_request']):
@@ -611,6 +612,28 @@
611 else:612 else:
612 line_obj.unlink(cr, uid, line_ids, context=context)613 line_obj.unlink(cr, uid, line_ids, context=context)
613 context['from_del_wizard'] = False614 context['from_del_wizard'] = False
615=======
616 for wiz in self.browse(cr, uid, ids, context=context):
617 line_obj = self.pool.get(wiz.to_remove_type)
618 line_ids = []
619 # Parse the content of 'line_ids' field (text field) to retrieve
620 # the id of lines to remove.
621 for line in wiz.line_ids:
622 for l in line[2]:
623 line_ids.append(l)
624
625 context['noraise'] = True
626 context.update({
627 'noraise': True,
628 'from_del_wizard': True,
629 })
630 if wiz.to_remove_type in ('purchase.order.line', 'tender.line'):
631 line_obj.fake_unlink(cr, uid, line_ids, context=context)
632 else:
633 line_obj.unlink(cr, uid, line_ids, context=context)
634
635 context['from_del_wizard'] = False
636>>>>>>> MERGE-SOURCE
614637
615 return {'type': 'ir.actions.act_window_close'}638 return {'type': 'ir.actions.act_window_close'}
616639
617640
=== modified file 'bin/addons/msf_instance/msf_instance_installer.py'
=== modified file 'bin/addons/msf_order_date/order_dates_view.xml'
=== modified file 'bin/addons/msf_outgoing/msf_outgoing.py'
--- bin/addons/msf_outgoing/msf_outgoing.py 2017-08-16 10:23:09 +0000
+++ bin/addons/msf_outgoing/msf_outgoing.py 2017-09-01 09:49:29 +0000
@@ -811,6 +811,15 @@
811 picking = family.draft_packing_id811 picking = family.draft_packing_id
812 draft_picking = family.ppl_id and family.ppl_id.previous_step_id and family.ppl_id.previous_step_id.backorder_id or False812 draft_picking = family.ppl_id and family.ppl_id.previous_step_id and family.ppl_id.previous_step_id.backorder_id or False
813813
814 # get the linked "save as draft" wizard if has:
815 picking_processor_wiz = []
816 if draft_picking:
817 picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [
818 ('picking_id', '=', draft_picking.id),
819 ('draft', '=', True),
820 ], context=context)
821 if picking_processor_wiz:
822 picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context)
814823
815 # UF-2531: Store some important info for the return pack messages824 # UF-2531: Store some important info for the return pack messages
816 return_info.setdefault(str(counter), {825 return_info.setdefault(str(counter), {
@@ -885,6 +894,24 @@
885 draft_initial_qty += return_qty894 draft_initial_qty += return_qty
886 move_obj.write(cr, uid, [draft_move.id], {'product_qty': draft_initial_qty}, context=context)895 move_obj.write(cr, uid, [draft_move.id], {'product_qty': draft_initial_qty}, context=context)
887896
897 # Update or create "save as draft" lines with returned qty:
898 if picking_processor_wiz:
899 save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [
900 ('wizard_id', '=', picking_processor_wiz.id),
901 ('move_id', '=', draft_move.id),
902 ], context=context)
903 if not save_as_draft_move: # then create the SaD line:
904 move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=draft_move, context=context)
905 move_data.update({'quantity': return_qty})
906 save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context)
907 save_as_draft_move = [save_as_draft_move]
908 else: # update Sad line
909 for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context):
910 self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, {
911 'ordered_quantity': sad_move.ordered_quantity + return_qty,
912 'quantity': sad_move.quantity + return_qty,
913 }, context=context)
914
888 # log the increase action - display the picking ticket view form - log message for each draft packing because each corresponds to a different draft picking915 # log the increase action - display the picking ticket view form - log message for each draft packing because each corresponds to a different draft picking
889 if not log_flag:916 if not log_flag:
890 draft_shipment_name = self.read(cr, uid, shipment.id, ['name'], context=context)['name']917 draft_shipment_name = self.read(cr, uid, shipment.id, ['name'], context=context)['name']
@@ -3506,9 +3533,16 @@
35063533
3507 if isinstance(ids, (int, long)):3534 if isinstance(ids, (int, long)):
3508 ids = [ids]3535 ids = [ids]
3536 if context is None:
3537 context = {}
35093538
3510 processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context)3539 # if wizard already exists, then open it (able save as draft/reset functionnality):
3511 proc_obj.create_lines(cr, uid, processor_id, context=context)3540 wiz_ids = proc_obj.search(cr, uid, [('picking_id', 'in', ids), ('draft', '=', True)], context=context)
3541 if wiz_ids:
3542 processor_id = wiz_ids[0]
3543 else:
3544 processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context)
3545 proc_obj.create_lines(cr, uid, processor_id, context=context)
35123546
3513 return {3547 return {
3514 'type': 'ir.actions.act_window',3548 'type': 'ir.actions.act_window',
@@ -3517,6 +3551,7 @@
3517 'view_type': 'form',3551 'view_type': 'form',
3518 'view_mode': 'form',3552 'view_mode': 'form',
3519 'target': 'new',3553 'target': 'new',
3554 'context': context,
3520 }3555 }
35213556
3522 def do_create_picking(self, cr, uid, wizard_ids, context=None):3557 def do_create_picking(self, cr, uid, wizard_ids, context=None):
@@ -3698,8 +3733,13 @@
3698 _('The picking ticket is not in \'Available\' state. Please check this and re-try')3733 _('The picking ticket is not in \'Available\' state. Please check this and re-try')
3699 )3734 )
37003735
3701 processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context)3736 # if wizard already exists, then open it (able save as draft/reset functionnality):
3702 proc_obj.create_lines(cr, uid, processor_id, context=context)3737 wiz_ids = proc_obj.search(cr, uid, [('picking_id', 'in', ids), ('draft', '=', True)], context=context)
3738 if wiz_ids:
3739 processor_id = wiz_ids[0]
3740 else:
3741 processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context)
3742 proc_obj.create_lines(cr, uid, processor_id, context=context)
37033743
3704 return {3744 return {
3705 'type': 'ir.actions.act_window',3745 'type': 'ir.actions.act_window',
@@ -4314,6 +4354,16 @@
4314 picking = wizard.picking_id4354 picking = wizard.picking_id
4315 draft_picking_id = picking.previous_step_id.backorder_id.id4355 draft_picking_id = picking.previous_step_id.backorder_id.id
43164356
4357 # get the linked "save as draft" wizard if has:
4358 picking_processor_wiz = []
4359 if draft_picking_id:
4360 picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [
4361 ('picking_id', '=', draft_picking_id),
4362 ('draft', '=', True),
4363 ], context=context)
4364 if picking_processor_wiz:
4365 picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context)
4366
4317 for line in wizard.move_ids:4367 for line in wizard.move_ids:
4318 return_qty = line.quantity4368 return_qty = line.quantity
43194369
@@ -4363,11 +4413,27 @@
43634413
4364 # Increase the draft move with the returned quantity4414 # Increase the draft move with the returned quantity
4365 draft_move_id = line.move_id.backmove_id.id4415 draft_move_id = line.move_id.backmove_id.id
4366 draft_initial_qty = move_obj.read(cr, uid, [draft_move_id], ['product_qty'], context=context)[0]['product_qty']4416 draft_move_qty = move_obj.read(cr, uid, [draft_move_id], ['product_qty'], context=context)[0]['product_qty']
4367 draft_initial_qty += return_qty4417 draft_move_qty += return_qty
4368 move_obj.write(cr, uid, [draft_move_id], {'product_qty': draft_initial_qty}, context=context)4418 move_obj.write(cr, uid, [draft_move_id], {'product_qty': draft_move_qty}, context=context)
43694419
43704420 # Update or create "save as draft" lines with returned qty:
4421 if picking_processor_wiz:
4422 save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [
4423 ('wizard_id', '=', picking_processor_wiz.id),
4424 ('move_id', '=', draft_move_id),
4425 ], context=context)
4426 if not save_as_draft_move: # then create the SaD line:
4427 move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=line.move_id.backmove_id, context=context)
4428 move_data.update({'quantity': return_qty})
4429 save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context)
4430 save_as_draft_move = [save_as_draft_move]
4431 else: # update Sad line
4432 for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context):
4433 self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, {
4434 'ordered_quantity': sad_move.ordered_quantity + return_qty,
4435 'quantity': sad_move.quantity + return_qty,
4436 }, context=context)
43714437
4372 # Log message for PPL4438 # Log message for PPL
4373 ppl_view = data_obj.get_object_reference(cr, uid, 'msf_outgoing', 'view_ppl_form')[1]4439 ppl_view = data_obj.get_object_reference(cr, uid, 'msf_outgoing', 'view_ppl_form')[1]
@@ -4477,6 +4543,14 @@
4477 # get the draft picking4543 # get the draft picking
4478 draft_picking_id = picking.backorder_id.id4544 draft_picking_id = picking.backorder_id.id
44794545
4546 # get the linked "save as draft" wizard if has:
4547 picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [
4548 ('picking_id', '=', draft_picking_id),
4549 ('draft', '=', True),
4550 ], context=context)
4551 if picking_processor_wiz:
4552 picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context)
4553
4480 # for each move from picking ticket - could be split moves4554 # for each move from picking ticket - could be split moves
4481 for move in picking.move_lines:4555 for move in picking.move_lines:
4482 # find the corresponding move in draft4556 # find the corresponding move in draft
@@ -4486,6 +4560,25 @@
4486 initial_qty = move_obj.read(cr, uid, [draft_move.id], ['product_qty'], context=context)[0]['product_qty']4560 initial_qty = move_obj.read(cr, uid, [draft_move.id], ['product_qty'], context=context)[0]['product_qty']
4487 initial_qty += move.product_qty4561 initial_qty += move.product_qty
4488 move_obj.write(cr, uid, [draft_move.id], {'product_qty': initial_qty}, context=context)4562 move_obj.write(cr, uid, [draft_move.id], {'product_qty': initial_qty}, context=context)
4563
4564 # Update or create "save as draft" lines with returned qty:
4565 if picking_processor_wiz:
4566 save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [
4567 ('wizard_id', '=', picking_processor_wiz.id),
4568 ('move_id', '=', draft_move.id),
4569 ], context=context)
4570 if not save_as_draft_move: # then create the SaD line:
4571 move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=move, context=context)
4572 move_data.update({'quantity': move.product_qty})
4573 save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context)
4574 save_as_draft_move = [save_as_draft_move]
4575 else: # update Sad line
4576 for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context):
4577 self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, {
4578 'ordered_quantity': sad_move.ordered_quantity + move.product_qty,
4579 'quantity': sad_move.quantity + move.product_qty,
4580 }, context=context)
4581
4489 # log the increase action4582 # log the increase action
4490 # TODO refactoring needed4583 # TODO refactoring needed
4491 obj_data = self.pool.get('ir.model.data')4584 obj_data = self.pool.get('ir.model.data')
44924585
=== modified file 'bin/addons/msf_outgoing/wizard/create_picking_processor.py'
--- bin/addons/msf_outgoing/wizard/create_picking_processor.py 2016-11-09 09:07:38 +0000
+++ bin/addons/msf_outgoing/wizard/create_picking_processor.py 2017-09-01 09:49:29 +0000
@@ -40,6 +40,7 @@
40 'wizard_id',40 'wizard_id',
41 string='Moves',41 string='Moves',
42 ),42 ),
43 'draft': fields.boolean('Draft'),
43 }44 }
4445
45 """46 """
@@ -54,11 +55,50 @@
5455
55 wizard_brw_list = self.browse(cr, uid, ids, context=context)56 wizard_brw_list = self.browse(cr, uid, ids, context=context)
5657
58 # disable "save as draft":
59 self.write(cr, uid, ids, {'draft': False}, context=context)
60
57 self.integrity_check_quantity(cr, uid, wizard_brw_list, context=context)61 self.integrity_check_quantity(cr, uid, wizard_brw_list, context=context)
58 self.integrity_check_prodlot(cr, uid, wizard_brw_list, context=context)62 self.integrity_check_prodlot(cr, uid, wizard_brw_list, context=context)
59 # call stock_picking method which returns action call63 # call stock_picking method which returns action call
60 return picking_obj.do_create_picking(cr, uid, ids, context=context)64 return picking_obj.do_create_picking(cr, uid, ids, context=context)
6165
66
67 def do_reset(self, cr, uid, ids, context=None):
68 if context is None:
69 context = {}
70 if isinstance(ids, (int, long)):
71 ids = [ids]
72 if not ids:
73 raise osv.except_osv(
74 _('Processing Error'),
75 _('No data to process !'),
76 )
77
78 pick_id = []
79 for proc in self.browse(cr, uid, ids, context=context):
80 pick_id = proc['picking_id']['id']
81
82 self.write(cr, uid, ids, {'draft': False}, context=context)
83
84 return self.pool.get('stock.picking').create_picking(cr, uid, pick_id, context=context)
85
86
87 def do_save_draft(self, cr, uid, ids, context=None):
88 if context is None:
89 context = {}
90 if isinstance(ids, (int, long)):
91 ids = [ids]
92 if not ids:
93 raise osv.except_osv(
94 _('Processing Error'),
95 _('No data to process !'),
96 )
97
98 self.write(cr, uid, ids, {'draft': True}, context=context)
99
100 return {}
101
62create_picking_processor()102create_picking_processor()
63103
64104
65105
=== modified file 'bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml'
--- bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml 2016-10-28 12:36:50 +0000
+++ bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml 2017-09-01 09:49:29 +0000
@@ -15,9 +15,11 @@
15 <separator colspan="4" string="Move lines" />15 <separator colspan="4" string="Move lines" />
16 <field name="move_ids" mode="tree"16 <field name="move_ids" mode="tree"
17 colspan="4" nolabel="1" />17 colspan="4" nolabel="1" />
18 <field name="draft" invisible="1"/>
18 <group colspan="4" col="6" name="actions">19 <group colspan="4" col="6" name="actions">
19 <separator string="Actions" colspan="6" />20 <separator string="Actions" colspan="6" />
20 <label colspan="4"> </label>21 <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" />
22 <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" />
21 <button special="cancel" string="Cancel" icon="gtk-cancel" />23 <button special="cancel" string="Cancel" icon="gtk-cancel" />
22 <button name="do_create_picking" type="object" string="Create Picking" icon="gtk-go-forward" />24 <button name="do_create_picking" type="object" string="Create Picking" icon="gtk-go-forward" />
23 </group>25 </group>
2426
=== modified file 'bin/addons/msf_outgoing/wizard/validate_picking_processor.py'
--- bin/addons/msf_outgoing/wizard/validate_picking_processor.py 2016-11-09 09:07:38 +0000
+++ bin/addons/msf_outgoing/wizard/validate_picking_processor.py 2017-09-01 09:49:29 +0000
@@ -41,6 +41,7 @@
41 'wizard_id',41 'wizard_id',
42 string='Moves to process',42 string='Moves to process',
43 ),43 ),
44 'draft': fields.boolean('Draft'),
44 }45 }
4546
46 """47 """
@@ -58,8 +59,10 @@
58 if context is None:59 if context is None:
59 context = {}60 context = {}
6061
62 # disable "save as draft":
63 self.write(cr, uid, ids, {'draft': False}, context=context)
64
61 to_unlink = []65 to_unlink = []
62
63 for proc in self.browse(cr, uid, ids, context=context):66 for proc in self.browse(cr, uid, ids, context=context):
64 total_qty = 0.0067 total_qty = 0.00
6568
@@ -154,6 +157,42 @@
154157
155 return True158 return True
156159
160
161 def do_reset(self, cr, uid, ids, context=None):
162 if context is None:
163 context = {}
164 if isinstance(ids, (int, long)):
165 ids = [ids]
166 if not ids:
167 raise osv.except_osv(
168 _('Processing Error'),
169 _('No data to process !'),
170 )
171
172 pick_id = []
173 for proc in self.browse(cr, uid, ids, context=context):
174 pick_id = proc['picking_id']['id']
175
176 self.write(cr, uid, ids, {'draft': False}, context=context)
177
178 return self.pool.get('stock.picking').validate_picking(cr, uid, pick_id, context=context)
179
180
181 def do_save_draft(self, cr, uid, ids, context=None):
182 if context is None:
183 context = {}
184 if isinstance(ids, (int, long)):
185 ids = [ids]
186 if not ids:
187 raise osv.except_osv(
188 _('Processing Error'),
189 _('No data to process !'),
190 )
191
192 self.write(cr, uid, ids, {'draft': True}, context=context)
193
194 return {}
195
157validate_picking_processor()196validate_picking_processor()
158197
159198
160199
=== modified file 'bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml'
--- bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml 2016-10-28 12:36:50 +0000
+++ bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml 2017-09-01 09:49:29 +0000
@@ -15,9 +15,11 @@
15 <separator colspan="4" string="Move lines" />15 <separator colspan="4" string="Move lines" />
16 <field name="move_ids" mode="tree"16 <field name="move_ids" mode="tree"
17 colspan="4" nolabel="1" />17 colspan="4" nolabel="1" />
18 <field name="draft" invisible="1"/>
18 <group colspan="4" col="6" name="actions">19 <group colspan="4" col="6" name="actions">
19 <separator string="Actions" colspan="6" />20 <separator string="Actions" colspan="6" />
20 <label colspan="4"> </label>21 <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" />
22 <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" />
21 <button special="cancel" string="Cancel" icon="gtk-cancel" />23 <button special="cancel" string="Cancel" icon="gtk-cancel" />
22 <button name="do_validate_picking" type="object" string="Validate Picking" icon="gtk-go-forward" />24 <button name="do_validate_picking" type="object" string="Validate Picking" icon="gtk-go-forward" />
23 </group>25 </group>
2426
=== modified file 'bin/addons/msf_profile/data.xml'
=== modified file 'bin/addons/msf_profile/data/patches.xml'
--- bin/addons/msf_profile/data/patches.xml 2017-08-25 15:40:47 +0000
+++ bin/addons/msf_profile/data/patches.xml 2017-09-01 09:49:29 +0000
@@ -1,6 +1,7 @@
1<?xml version="1.0" encoding="utf-8" ?>1<?xml version="1.0" encoding="utf-8" ?>
2<openerp>2<openerp>
3 <data>3 <data>
4<<<<<<< TREE
4 <record id="us_2647_patch" model="patch.scripts">5 <record id="us_2647_patch" model="patch.scripts">
5 <field name="method">us_2647</field>6 <field name="method">us_2647</field>
6 </record>7 </record>
@@ -23,6 +24,27 @@
23 <field name="method">us_2806_add_ir_ui_view_constraint</field>24 <field name="method">us_2806_add_ir_ui_view_constraint</field>
24 </record>25 </record>
2526
27=======
28 <record id="us_244_patch" model="patch.scripts">
29 <field name="method">us_2444_touch_liquidity_journals</field>
30 </record>
31
32 <record id="us_3098_patch" model="patch.scripts">
33 <field name="method">us_3098_patch</field>
34 </record>
35
36 <record id="us_2257_patch" model="patch.scripts">
37 <field name="method">us_2257_patch</field>
38 </record>
39 <record id="us_2730_patch" model="patch.scripts">
40 <field name="method">us_2730_patch</field>
41 </record>
42
43 <record id="us_2806_add_ir_ui_view_constraint" model="patch.scripts">
44 <field name="method">us_2806_add_ir_ui_view_constraint</field>
45 </record>
46
47>>>>>>> MERGE-SOURCE
26 <record id="remove_not_synchronized_data" model="patch.scripts">48 <record id="remove_not_synchronized_data" model="patch.scripts">
27 <field name="method">remove_not_synchronized_data</field>49 <field name="method">remove_not_synchronized_data</field>
28 </record>50 </record>
2951
=== modified file 'bin/addons/msf_profile/i18n/fr_MF.po'
--- bin/addons/msf_profile/i18n/fr_MF.po 2017-08-29 13:47:43 +0000
+++ bin/addons/msf_profile/i18n/fr_MF.po 2017-09-01 09:49:29 +0000
@@ -10842,7 +10842,7 @@
10842msgid "International status"10842msgid "International status"
10843msgstr "International status"10843msgstr "International status"
1084410844
10845#. modules: return_claim, msf_outgoing10845#. modules: return_claim, delivery_mechanism, msf_outgoing, stock_override, stock
10846#: code:addons/msf_outgoing/msf_outgoing.py:53610846#: code:addons/msf_outgoing/msf_outgoing.py:536
10847#: code:addons/msf_outgoing/msf_outgoing.py:73910847#: code:addons/msf_outgoing/msf_outgoing.py:739
10848#: code:addons/msf_outgoing/msf_outgoing.py:77810848#: code:addons/msf_outgoing/msf_outgoing.py:778
@@ -10897,7 +10897,7 @@
10897#: code:addons/return_claim/return_claim.py:163910897#: code:addons/return_claim/return_claim.py:1639
10898#, python-format10898#, python-format
10899msgid "Processing Error"10899msgid "Processing Error"
10900msgstr "Erreur en cours "10900msgstr "Erreur de traitement"
1090110901
10902#. module: account_payment10902#. module: account_payment
10903#: field:payment.order,mode:010903#: field:payment.order,mode:0
@@ -35824,6 +35824,44 @@
35824msgid "Only technically to filter currencies according to partner type"35824msgid "Only technically to filter currencies according to partner type"
35825msgstr "Seulement techniquement pour filtrer les devises d'après le type de partenaire"35825msgstr "Seulement techniquement pour filtrer les devises d'après le type de partenaire"
3582635826
35827<<<<<<< TREE
35828=======
35829#. modules: purchase, product, msf_outgoing, purchase_override, supplier_catalogue, sale, account, kit, purchase_allocation_report, order_types, tender_flow, register_accounting, stock, msf_doc_import
35830#: field:account.invoice.line,price_unit:0
35831#: report:account.invoice2:0
35832#: field:kit.selection.line,price_unit_kit_selection_line:0
35833#: field:kit.selection.sale.line,price_unit_kit_selection_sale_line:0
35834#: report:invoice:0
35835#: field:stock.certificate.valuation,unit_price:0
35836#: field:pricelist.partnerinfo,price:0
35837#: report:purchase.order:0
35838#: field:purchase.order.line,price_unit:0
35839#: report:po.line.allocation.report:0
35840#: report:purchase.order.allocation.report:0
35841#: field:purchase.order.line.allocation.report,unit_price:0
35842#: report:msf.purchase.order:0
35843#: report:purchase.order.merged:0
35844#: field:purchase.order.merged.line,price_unit:0
35845#: field:wizard.account.invoice.line,price_unit:0
35846#: report:msf.sale.order:0
35847#: report:sale.order.allocation.report:0
35848#: field:sale.order.line,price_unit:0
35849#: report:lot.stock.overview:0
35850#: report:lot.stock.overview_all:0
35851#: field:stock.move,price_unit:0
35852#: field:supplier.catalogue.line,unit_price:0
35853#: report:addons/tender_flow/report/tender_rfq_comparison_xls.mako:577
35854#: code:addons/msf_doc_import/wizard/__init__.py:112
35855#: code:addons/msf_doc_import/wizard/__init__.py:133
35856#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:195
35857#: field:wizard.simu.import.po.line,import_unit_price:0
35858#: field:wizard.simu.import.po.line,initial_unit_price:0
35859#: field:account.direct.invoice.wizard.line,price_unit:0
35860#, python-format
35861msgid "Unit Price"
35862msgstr "Prix unitaire"
35863
35864>>>>>>> MERGE-SOURCE
35827#. module: base35865#. module: base
35828#: field:res.config.users,is_erp_manager:035866#: field:res.config.users,is_erp_manager:0
35829#: field:res.users,is_erp_manager:035867#: field:res.users,is_erp_manager:0
@@ -37260,7 +37298,7 @@
37260#: code:addons/return_claim/return_claim.py:164037298#: code:addons/return_claim/return_claim.py:1640
37261#, python-format37299#, python-format
37262msgid "No data to process !"37300msgid "No data to process !"
37263msgstr "No data to process !"37301msgstr "Aucune donnée à traiter !"
3726437302
37265#. module: stock_override37303#. module: stock_override
37266#: field:export.report.stock.move,exported_file:037304#: field:export.report.stock.move,exported_file:0
@@ -63785,23 +63823,6 @@
63785msgid "Child Accounts"63823msgid "Child Accounts"
63786msgstr "Comptes Enfant "63824msgstr "Comptes Enfant "
6378763825
63788#. modules: delivery_mechanism, msf_outgoing, stock_override, stock
63789#: code:addons/delivery_mechanism/wizard/stock_partial_picking.py:149
63790#: code:addons/msf_outgoing/wizard/shipment.py:444
63791#: code:addons/stock/wizard/stock_move.py:265
63792#: code:addons/stock/wizard/stock_partial_picking.py:157
63793#: code:addons/stock/wizard/stock_partial_picking.py:165
63794#: code:addons/stock/wizard/stock_partial_picking.py:172
63795#: code:addons/stock_override/wizard/stock_partial_picking.py:113
63796#: code:addons/stock_override/wizard/stock_partial_picking.py:131
63797#: code:addons/stock_override/wizard/stock_partial_picking.py:138
63798#: code:addons/stock_override/wizard/stock_partial_picking.py:149
63799#: code:addons/stock_override/wizard/stock_partial_picking.py:187
63800#: code:addons/stock_override/wizard/stock_partial_picking.py:193
63801#, python-format
63802msgid "Processing Error"
63803msgstr "Erreur de traitement"
63804
63805#. module: specific_rules63826#. module: specific_rules
63806#: help:product.uom,uom_by_product:063827#: help:product.uom,uom_by_product:0
63807msgid "Field used to filter the UoM for a specific product"63828msgid "Field used to filter the UoM for a specific product"
@@ -98303,6 +98324,7 @@
98303msgid "Intermission Vouchers linked to a PO can be deleted only in Draft state."98324msgid "Intermission Vouchers linked to a PO can be deleted only in Draft state."
98304msgstr "Les Bons Intermission liés à un BC ne peuvent être supprimés qu'à l'état Brouillon."98325msgstr "Les Bons Intermission liés à un BC ne peuvent être supprimés qu'à l'état Brouillon."
9830598326
98327<<<<<<< TREE
98306#. module: account_override98328#. module: account_override
98307#: code:addons/account_override/invoice.py:72398329#: code:addons/account_override/invoice.py:723
98308#, python-format98330#, python-format
@@ -99361,3 +99383,609 @@
99361msgid "Unable to generate updates, retrying %d/%d"99383msgid "Unable to generate updates, retrying %d/%d"
99362msgstr "Impossible de générer les data, nouvel essai %d/%d"99384msgstr "Impossible de générer les data, nouvel essai %d/%d"
9936399385
99386=======
99387#. module: account_override
99388#: code:addons/account_override/invoice.py:723
99389#, python-format
99390msgid "No Intermission journal found for the current instance."
99391msgstr "Pas de journal Intermission trouvé pour l'instance actuelle."
99392
99393#. module: purchase_override
99394#: field:purchase.order,fixed_order_type:0
99395msgid "Possible order types"
99396msgstr "Types de commande possibles"
99397
99398#. module: purchase_override
99399#: code:addons/purchase_override/purchase.py:669
99400#: code:addons/purchase_override/purchase.py:853
99401#, python-format
99402msgid "%s: This purchase order is a loan counterpart. You cannot change its order type"
99403msgstr "%s: Ce bon de commande est la contrepartie d'un prêt. Vous ne pouvez pas modifier son type"
99404
99405#. module: purchase_override
99406#: code:addons/purchase_override/purchase.py:672
99407#: code:addons/purchase_override/purchase.py:857
99408#, python-format
99409msgid "%s: Only %s order types are allowed for this purchase order"
99410msgstr "%s: Seuls les types %s sont autorisés pour cette commande"
99411
99412#. modules: sourcing, purchase_override, sync_so
99413#: constraint:purchase.order:0
99414#: constraint:purchase.order:0
99415#: constraint:purchase.order:0
99416msgid "The order type of the order is not consistent with the order type of the source"
99417msgstr "Le type de commande n'est pas compatible avec le type de la commande qui est sourcée"
99418
99419#. module: purchase_override
99420#: code:addons/purchase_override/purchase.py:888
99421#, python-format
99422msgid "You cannot select Direct Purchase order for a lines sourced to a normal PO"
99423msgstr "Vous ne pouvez pas sélectionner 'Bon de commande direct' pour des lignes sourcées sur un PO normal"
99424
99425#. module: sourcing
99426#: code:addons/sourcing/sale_order_line.py:929
99427#, python-format
99428msgid "loan"
99429msgstr "prêt"
99430
99431#. module: sourcing
99432#: code:addons/sourcing/sale_order_line.py:929
99433#, python-format
99434msgid "donation"
99435msgstr "don"
99436
99437#. module: sourcing
99438#: code:addons/sourcing/sale_order_line.py:1004
99439#, python-format
99440msgid "You can only source a Donation line from stock."
99441msgstr "Vous pouvez sourcé une ligne de don uniquement sur stock"
99442
99443#. module: sourcing
99444#: code:addons/sourcing/sale_order_line.py:1278
99445#, python-format
99446msgid "You can't source a donation 'on order'."
99447msgstr "Vous ne pouvez pas sourcer un don 'sur commande'."
99448
99449#. module: base
99450#: field:ir.model,default_order:0
99451#, python-format
99452msgid "Default Order"
99453msgstr "Ordre par défaut"
99454
99455#. module: mission_stock
99456#: view:mission.stock.wizard:0
99457msgid "Errors"
99458msgstr "Erreurs"
99459
99460#. module: mission_stock
99461#: field:stock.mission.report,export_state:0
99462msgid "Export state"
99463msgstr "Statut du rapport"
99464
99465#. module: mission_stock
99466#: selection:stock.mission.report,export_state:0
99467msgid "Draft"
99468msgstr "Brouillon"
99469
99470#. module: mission_stock
99471#: selection:stock.mission.report,export_state:0
99472msgid "Error"
99473msgstr "Erreur"
99474
99475#. module: mission_stock
99476#: field:mission.stock.wizard,export_error_msg:0
99477#: field:stock.mission.report,export_error_msg:0
99478msgid "Error message"
99479msgstr "Message d'erreur"
99480
99481#. modules: finance, msf_profile
99482#: model:ir.actions.act_window,name:finance.account_board_commitment_voucher
99483#: view:board.board:0
99484msgid "Commitment Vouchers to validate"
99485msgstr "Bons d'Engagement à valider"
99486
99487#. module: account_reconciliation
99488#: field:account.move.reconcile,nb_partial_legs:0
99489msgid "Nb legs in partial reconcile"
99490msgstr "Nb d'entrées du lettrage partiel"
99491
99492#. module: product_attributes
99493#: selection:product.product,state_ud:0
99494msgid "Forbidden"
99495msgstr "Interdit"
99496
99497#. module: msf_doc_import
99498#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:106
99499#, python-format
99500msgid "No data found in the spreadhseet."
99501msgstr "Aucune donnée trouvée dans le tableur."
99502
99503#. module: msf_doc_import
99504#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:143
99505#, python-format
99506msgid "Line %s. %s was not set. This field is mandatory."
99507msgstr "Ligne %s. %s n'est pas défini. Ce champ est requis."
99508
99509#. module: msf_doc_import
99510#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:156
99511#, python-format
99512msgid "Line %s. Account %s not found!"
99513msgstr "Ligne %s. Compte %s non trouvé !"
99514
99515#. module: msf_doc_import
99516#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:162
99517#, python-format
99518msgid "Line %s. Account %s is 'Donations' type which is forbidden."
99519msgstr "Ligne %s. Le compte %s est de type 'Donations' ce qui est interdit."
99520
99521#. module: msf_doc_import
99522#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:174
99523#, python-format
99524msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n"
99525"- the account cannot be of type 'View' or 'Liquidity'\n"
99526"- account can not be corrected on HQ entries\n"
99527"- 'Type for specific treatment' cannot be 'Donations'\n"
99528"- 'Internal Type' should be different from 'Regular' OR 'Account Type' should be different from 'Stock'\n"
99529"- 'Account Type' should be different from 'Expense' OR 'P&L / BS Category' not None."
99530msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n"
99531"- le compte ne peut pas être de type 'Vue' ou 'Liquidités'\n"
99532"- compte impossible à corriger dans les entrées HQ\n"
99533"- 'Type pour traitement spécifique' ne peut pas être 'Donations'\n"
99534"- 'Type Interne' doit être différent de 'Normal' OU 'Type de Compte' doit être différent de 'Stock'\n"
99535"- 'Type de Compte' doit être différent de 'Expense' OU 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide."
99536
99537#. module: msf_doc_import
99538#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:168
99539#, python-format
99540msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n"
99541"- the account cannot be of type 'View'\n"
99542"- account can not be corrected on HQ entries\n"
99543"- 'Account Type' should be in ('expense', 'income', 'receivables')\n"
99544"- 'P&L / BS Category' cannot be None."
99545msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n"
99546"- le compte ne peut pas être de type 'Vue'\n"
99547"- compte impossible à corriger dans les entrées HQ\n"
99548"- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'\n"
99549"- 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide."
99550
99551#. module: msf_doc_import
99552#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:184
99553#, python-format
99554msgid "\n"
99555"- 'Account Type' should be in ('expense', 'income', 'receivables')."
99556msgstr "\n"
99557"- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'."
99558
99559#. module: msf_doc_import
99560#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:275
99561#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:280
99562#: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:370
99563#: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:378
99564#, python-format
99565msgid "Line %s in the Excel file, uncaught error: %s\n"
99566""
99567msgstr "Ligne %s du fichier Excel, erreur non détectée: %s\n"
99568""
99569
99570#. module: msf_doc_import
99571#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:354
99572#, python-format
99573msgid "You can refresh the screen if you need to follow the upload progress by clicking on 'Update'."
99574msgstr "Vous pouvez rafraichir l'écran si vous avez besoin de suivre la progresion du téléchargement en cliquant sur le bouton 'Mettre à jour'."
99575
99576#. module: msf_doc_import
99577#: model:ir.model,name:msf_doc_import.model_wizard_import_invoice_line
99578msgid "Import Invoice Lines from Excel sheet"
99579msgstr "Importer des lignes depuis un fichier Excel"
99580
99581#. module: finance
99582#: code:addons/finance/invoice.py:57
99583#, python-format
99584msgid "%s_template.xls"
99585msgstr "modèle_%s.xls"
99586
99587#. module: stock_override
99588#: field:stock.location,filter_partner_id2:0
99589msgid "Filter location by partner"
99590msgstr "Filtrer l'emplacement de stock par partenaire"
99591
99592#. module: register_accounting
99593#: code:addons/register_accounting/wizard/import_cheque_on_bank_registers.py:166
99594#, python-format
99595msgid "Please add a Document Date on imported lines."
99596msgstr "Veuillez saisir la date du document sur les lignes importées."
99597
99598#. module: product_list
99599#: code:addons/product_list/product_list.py:306
99600#: code:addons/product_list/product_list.py:316
99601#, python-format
99602msgid "This product cannot be added as it already exists in this list."
99603msgstr "Ce produit ne peut pas être ajouter car il est déjà présent dans la liste"
99604
99605#. module: product_list
99606#: code:addons/product_list/wizard/add_products.py:103
99607#, python-format
99608msgid "product(s) %s already exist(s) in the product list and so cannot be added"
99609msgstr "Les produits %s ne peuvent pas être ajouter car ils sont déjà présent dans la liste de produits"
99610
99611#. module: account_mcdb
99612#: field:account.mcdb,top_prop_instance_ids:0
99613msgid "Top Proprietary instances"
99614msgstr "Instances propriétaires parentes"
99615
99616#. module: account_mcdb
99617#: field:account.mcdb,rev_top_prop_instance_ids:0
99618msgid "Exclude top prop instances selection"
99619msgstr "Exclure la selection d'instances prop. parentes"
99620
99621#. module: account_mcdb
99622#: field:account.mcdb,display_top_prop_instance:0
99623msgid "Display Top prop instances?"
99624msgstr "Afficher les instances propriétaires parentes"
99625
99626#. module: account_mcdb
99627#: code:addons/account_mcdb/account_mcdb.py:230
99628#, python-format
99629msgid "You cannot select 'Instances' because 'Top prop Instances' is already selected."
99630msgstr "Vous ne pouvez pas selectionner 'Instances' car 'Instance prop. parente' est déjà selectionné."
99631
99632#. module: account_mcdb
99633#: view:account.mcdb:0
99634msgid "Top prop Instances"
99635msgstr "Instance prop. parente"
99636
99637#. module: account_mcdb
99638#: code:addons/account_mcdb/account_mcdb.py:244
99639#, python-format
99640msgid "You cannot select 'Top prop Instances' because 'Instances' is already selected."
99641msgstr "Vous ne pouvez pas selectionner 'Instance prop. parente' car 'Instances' est déjà selectionné."
99642
99643#. module: account_mcdb
99644#: field:account.mcdb,rev_instance_ids:0
99645msgid "Exclude instances selection"
99646msgstr "Exclure la sélection d'instance"
99647
99648#. module: account_mcdb
99649#: view:account.mcdb:0
99650msgid "Remove all Instances"
99651msgstr "Supprimer toutes les instances"
99652
99653#. module: account_mcdb
99654#: view:account.mcdb:0
99655msgid "Add all Instances"
99656msgstr "Ajouter toutes les instances"
99657
99658#. module: account_mcdb
99659#: view:account.mcdb:0
99660msgid "Remove Prop Instances"
99661msgstr "Supprimer toutes les instances propriétaires"
99662
99663#. module: account_mcdb
99664#: view:account.mcdb:0
99665msgid "Add Prop Instances"
99666msgstr "Ajouter toutes les instances propriétaires"
99667
99668#. module: account
99669#: report:addons/account/report/account_liquidity_balance.mako:171
99670msgid "Calculated balance"
99671msgstr "Solde calculé (théorique)"
99672
99673#. module: account
99674#: code:addons/account/wizard/account_report_liquidity_balance.py:65
99675#: model:ir.actions.act_window,name:account.action_liquidity_balance_report
99676#: model:ir.ui.menu,name:account.menu_liquidity_balance_report
99677#: report:addons/account/report/account_liquidity_balance.mako:142
99678#, python-format
99679msgid "Liquidity Balances"
99680msgstr "Balances de trésorie"
99681
99682#. module: account
99683#: code:addons/account/wizard/account_report_common_partner.py:89
99684#, python-format
99685msgid "Only dates of the selected Fiscal Year can be chosen."
99686msgstr "Seules des dates de l'exercice comptable sélectionné peuvent être choisies."
99687
99688#. module: mission_stock
99689#: field:mission.stock.wizard,processed_state:0
99690msgid "Processing"
99691msgstr "En traitement..."
99692
99693#. module: mission_stock
99694#: view:mission.stock.wizard:0
99695msgid "Updating..."
99696msgstr "Mise à jour ..."
99697
99698#. module: mission_stock
99699#: field:mission.stock.wizard,processed_start_date:0
99700msgid "since"
99701msgstr "depuis"
99702
99703#. module: stock_override
99704#: code:addons/stock_override/stock.py:389
99705#, python-format
99706msgid "The source location of lines has been changed to the same as header value"
99707msgstr "La zone source des lignes a été changé avec la valeur présente en en-tête"
99708
99709#. module: stock_override
99710#: code:addons/stock_override/stock.py:393
99711#, python-format
99712msgid "Warning, you have removed header value source location! The lines will be re-set to have 'Other Supplier' as the source location. Please check this is correct!"
99713msgstr "Attention, vous avez supprimé la zone source d'en-tête! La zone source des lignes va être réinitialisée avec la valeur 'Autre Fournisseur'. Merci de vérifier leur cohérence!"
99714
99715#. module: account_override
99716#: code:addons/account_override/account.py:524
99717#, python-format
99718msgid "An account can't be both reconcilable and included in the yearly move to 0."
99719msgstr "Un compte ne peut pas être à la fois lettrable et inclus dans la mise à zéro annuelle."
99720
99721#. module: account_period_closing_level
99722#: code:addons/account_period_closing_level/account_year_end_closing.py:423
99723#, python-format
99724msgid "The yearly closure can't be processed due to one or several reconciled entries that are included in the move to 0."
99725msgstr "La fermeture de l'année fiscale ne peut pas être effectuée car une ou plusieurs écritures incluses dans la mise à zéro sont déjà lettrées."
99726
99727#. module: account_reconciliation
99728#: code:addons/account_reconciliation/account_move_line.py:269
99729#, python-format
99730msgid "The entries included in the yearly move to zero can't be reconciled together because they are unbalanced."
99731msgstr "Les écritures incluses dans la mise à zéro annuelle ne peuvent pas être lettrées ensemble car elles ne sont pas équilibrées."
99732
99733#. modules: account_override, account_mcdb, account
99734#: field:account.move.line,open_items:0
99735#: field:account.mcdb,open_items:0
99736#: field:account.report.general.ledger,open_items:0
99737msgid "Open Items at"
99738msgstr "Écritures ouvertes à"
99739
99740#. module: account
99741#: model:ir.actions.server,name:account.action_aml_related_entries
99742msgid "Related Entries"
99743msgstr "Ecritures associées"
99744
99745#. module: account
99746#: code:addons/account/account_move_line.py:1369
99747#, python-format
99748msgid "Related entries: Entry Sequence %s"
99749msgstr "Ecritures associées : Entrée Comptable %s"
99750
99751#. module: account
99752#: code:addons/account/account_move_line.py:1330
99753#, python-format
99754msgid "The related entries feature can only be used with one Journal Item."
99755msgstr "La fonctionnalité des écritures associées ne peut être utilisée qu'avec une seule ligne d'écriture comptable."
99756
99757#. module: account_period_closing_level
99758#: code:addons/account_period_closing_level/account_period.py:217
99759#, python-format
99760msgid "One or several registers have not been generated for the period to close and have a balance which isn't equal to 0:\n"
99761"%s"
99762msgstr "Un ou plusieurs registres n'ont pas été générés pour la période à fermer et ont un solde qui n'est pas égal à 0 :\n"
99763"%s"
99764
99765#. module: res_currency_tables
99766#: code:addons/res_currency_tables/res_currency.py:0
99767#, python-format
99768msgid "delete"
99769msgstr "supprimer"
99770
99771#. module: res_currency_tables
99772#: code:addons/res_currency_tables/res_currency.py:0
99773#, python-format
99774msgid "de-activate"
99775msgstr "désactiver"
99776
99777#. module: res_currency_tables
99778#: code:addons/res_currency_tables/res_currency.py:225
99779#, python-format
99780msgid "The currency you want to %s is used in at least one active partner form."
99781msgstr "La devise que vous désirez %s est utilisée dans au moins un formulaire d'un partenaire actif."
99782
99783#. module: res_currency_tables
99784#: code:addons/res_currency_tables/res_currency.py:216
99785#, python-format
99786msgid "The currency you want to %s is used in at least one Field Order which isn't Closed."
99787msgstr "La devise que vous désirez %s est utilisée dans au moins une Commande de Terrain qui n'est pas Clôturée."
99788
99789#. module: res_currency_tables
99790#: code:addons/res_currency_tables/res_currency.py:216
99791#, python-format
99792msgid "The currency you want to %s is used in at least one Purchase Order which isn't Closed."
99793msgstr "La devise que vous désirez %s est utilisée dans au moins un Bon de Commande qui n'est pas Clôturé."
99794
99795#. module: res_currency_tables
99796#: code:addons/res_currency_tables/res_currency.py:230
99797#, python-format
99798msgid "The currency you want to %s is used in at least one document in Draft or Open state."
99799msgstr "La devise que vous désirez %s est utilisée dans au moins un document à l'état Brouillon ou Ouvert."
99800
99801#. module: res_currency_tables
99802#: code:addons/res_currency_tables/res_currency.py:256
99803#, python-format
99804msgid "The currency you want to %s is used in at least one Register in Draft or Open state."
99805msgstr "La devise que vous désirez %s est utilisée dans au moins un Registre à l'état Brouillon ou Ouvert."
99806
99807#. module: res_currency_tables
99808#: code:addons/res_currency_tables/res_currency.py:236
99809#, python-format
99810msgid "The currency you want to %s is used in at least one Journal Item in Unposted state."
99811msgstr "La devise que vous désirez %s est utilisée dans au moins une Ligne d'écriture comptable non comptabilisée."
99812
99813#. module: res_currency_tables
99814#: code:addons/res_currency_tables/res_currency.py:263
99815#, python-format
99816msgid "The currency you want to %s is used in at least one Recurring Entry having a state not Done."
99817msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture Périodique avec un statut non Terminé."
99818
99819#. module: res_currency_tables
99820#: code:addons/res_currency_tables/res_currency.py:240
99821#, python-format
99822msgid "The currency you want to %s is used in at least one Commitment Voucher which isn't Done."
99823msgstr "La devise que vous désirez %s est utilisée dans un moins un Bon d'Engagement non Terminé."
99824
99825#. module: res_currency_tables
99826#: code:addons/res_currency_tables/res_currency.py:244
99827#, python-format
99828msgid "The currency you want to %s is used in at least one HQ Entry which isn't validated."
99829msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture HQ non validée."
99830
99831#. module: res_currency_tables
99832#: code:addons/res_currency_tables/res_currency.py:272
99833#, python-format
99834msgid "The currency you want to %s is used in at least one Draft or Partially Posted Accrual Line."
99835msgstr "La devise que vous désirez %s est utilisée dans au moins une Ligne de Régularisation à l'état Brouillon ou Partiellement Comptabilisée."
99836
99837#. module: res_currency_tables
99838#: code:addons/res_currency_tables/res_currency.py:249
99839#, python-format
99840msgid "The currency you want to %s is used in at least one Payroll Entry which isn't validated."
99841msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture de Paie non validée."
99842
99843#. module: account_override
99844#: report:addons/account_override/report/open_invoices_xls.mako:315
99845msgid "Payment Sequence Number"
99846msgstr "Numéro de séquence du paiement"
99847
99848#. module: account_override
99849#: report:addons/account_override/report/open_invoices_xls.mako:316
99850msgid "Down Payment Sequence Number"
99851msgstr "Numéro de séquence de l'acompte"
99852
99853#. module: account_override
99854#: model:ir.actions.act_window,name:account_override.action_paid_invoices_menu
99855#: model:ir.actions.report.xml,name:account_override.paid_invoices
99856#: report:addons/account_override/report/open_invoices_xls.mako:238
99857msgid "Paid Invoices"
99858msgstr "Factures Payées"
99859
99860#. module: account_override
99861#: report:addons/account_override/report/open_invoices_xls.mako:264
99862msgid "PAID INVOICES"
99863msgstr "FACTURES PAYÉES"
99864
99865#. module: account_override
99866#: model:ir.model,name:account_override.model_wizard_report_paid_invoice
99867msgid "Wizard of the Paid Invoices Report"
99868msgstr "Assistant du Rapport des Factures Payées"
99869
99870#. module: account_override
99871#: field:wizard.report.paid.invoice,beginning_date:0
99872msgid "Beginning date"
99873msgstr "Date de début"
99874
99875#. module: account_override
99876#: field:wizard.report.paid.invoice,ending_date:0
99877msgid "Ending date"
99878msgstr "Date de fin"
99879
99880#. module: account_override
99881#: report:addons/account_override/report/open_invoices_xls.mako:290
99882msgid "Beginning date:"
99883msgstr "Date de début :"
99884
99885#. module: account_override
99886#: report:addons/account_override/report/open_invoices_xls.mako:296
99887msgid "Ending date:"
99888msgstr "Date de fin :"
99889
99890#. module: account_override
99891#: report:addons/account_override/report/open_invoices_xls.mako:306
99892msgid "Intermission Vouchers IN"
99893msgstr "Bons Intermission IN"
99894
99895#. module: account_override
99896#: report:addons/account_override/report/open_invoices_xls.mako:307
99897msgid "Intermission Vouchers OUT"
99898msgstr "Bons Intermission OUT"
99899
99900#. module: account_override
99901#: report:addons/account_override/report/open_invoices_xls.mako:305
99902msgid "Donations"
99903msgstr "Donations"
99904
99905#. module: account_override
99906#: report:addons/account_override/report/open_invoices_xls.mako:307
99907msgid "Debit Notes"
99908msgstr "Notes de débit"
99909
99910#. module: msf_homere_interface
99911#: code:addons/msf_homere_interface/wizard/hr_payroll_import.py:188
99912#, python-format
99913msgid "This account is a Donation account: %s"
99914msgstr "Ce compte est un compte de Donation : %s"
99915
99916#. module: account_override
99917#: code:addons/account_override/account.py:597
99918#, python-format
99919msgid "Please check the Type for specific treatment of the accounts used."
99920msgstr "Veuillez vérifier le Type pour traitement spécifique des comptes utilisés."
99921
99922#. module: msf_homere_interface
99923#: field:hr.payroll.msf,has_third_party:0
99924msgid "Has a Third Party"
99925msgstr "A un Tiers"
99926
99927#. module: msf_homere_interface
99928#: view:hr.payroll.msf:0
99929msgid "Empty Third Party"
99930msgstr "Pas de Tiers"
99931
99932#. module: msf_homere_interface
99933#: model:ir.actions.server,name:msf_homere_interface.action_move_to_payroll_bs_lines
99934msgid "Validate Payroll Expenses and move to Payroll B/S lines"
99935msgstr "Valider les Lignes de dépenses et aller aux Lignes du bilan"
99936
99937#. module: msf_homere_interface
99938#: code:addons/msf_homere_interface/hr_payroll.py:367
99939#, python-format
99940msgid "Payroll B/S lines"
99941msgstr "Lignes de paye du bilan"
99942
99943#. module: msf_homere_interface
99944#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:324
99945#, python-format
99946msgid "An error occurred%s"
99947msgstr "Une erreur est survenue%s"
99948
99949#. module: msf_homere_interface
99950#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:161
99951#, python-format
99952msgid "Checking account/partner compatibility..."
99953msgstr "Vérification de la compatibilité compte/partenaire..."
99954
99955#. module: msf_homere_interface
99956#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:303
99957#, python-format
99958msgid "Posting of the Journal Entry. This may take a while..."
99959msgstr "Comptabilisation de l'Ecriture Comptable. Cela peut prendre un certain temps..."
99960
99961#. module: msf_homere_interface
99962#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:308
99963#, python-format
99964msgid "Updating the status of the Journal Items..."
99965msgstr "Mise à jour du statut des Lignes d'Ecritures Comptables..."
99966
99967#. module: msf_homere_interface
99968#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:213
99969#, python-format
99970msgid "Creation of the Journal Items..."
99971msgstr "Création des Lignes d'Ecritures Comptables..."
99972
99973#. module: msf_currency_revaluation
99974#: code:addons/msf_currency_revaluation/wizard/wizard_currency_revaluation.py:723
99975#, python-format
99976msgid "The following projects are not field-closed:\n"
99977"%s"
99978msgstr "Les projets suivants ne sont pas fermés sur le terrain :\n"
99979"%s"
99980
99981#. module: register_accounting
99982#: code:addons/register_accounting/account_bank_statement.py:120
99983#, python-format
99984msgid "Writing on liquidity journals %s is not allowed"
99985msgstr "Vous ne pouvez pas modifier le journal de liquidité %s"
99986
99987#. module: sync_client
99988#: field:sync.version.instance.monitor,instance_state:0
99989msgid "Instance State"
99990msgstr "État de l'instance"
99991>>>>>>> MERGE-SOURCE
9936499992
=== modified file 'bin/addons/msf_profile/msf_profile.py'
--- bin/addons/msf_profile/msf_profile.py 2017-08-25 15:40:47 +0000
+++ bin/addons/msf_profile/msf_profile.py 2017-09-01 09:49:29 +0000
@@ -47,6 +47,7 @@
47 'model': lambda *a: 'patch.scripts',47 'model': lambda *a: 'patch.scripts',
48 }48 }
4949
50<<<<<<< TREE
50 def us_2647(self, cr, uid, *a, **b):51 def us_2647(self, cr, uid, *a, **b):
51 cr.execute('''update stock_inventory_line set dont_move='t' where id not in (52 cr.execute('''update stock_inventory_line set dont_move='t' where id not in (
52 select l.id from stock_inventory_line l53 select l.id from stock_inventory_line l
@@ -220,6 +221,171 @@
220 else:221 else:
221 self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.')222 self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.')
222223
224=======
225 def us_2444_touch_liquidity_journals(self, cr, uid, *a, **b):
226 if _get_instance_level(self, cr, uid) == 'project':
227 cr.execute('''
228 update ir_model_data set last_modification=NOW(), touched='[''type'']'
229 where module='sd' and model='account.journal' and res_id in (
230 select id from account_journal where type in ('bank', 'cash', 'cheque') and is_current_instance='t'
231 )
232 ''')
233
234 def us_3098_patch(self, cr, uid, *a, **b):
235 cr.execute("""
236 SELECT id, name
237 FROM res_partner
238 WHERE name IN (select name from res_partner where partner_type = 'internal')
239 AND name IN (select name from res_partner where partner_type = 'intermission')
240 AND partner_type = 'intermission';
241 """)
242 wrong_partners = cr.fetchall()
243
244 updated_doc = []
245 for partner in wrong_partners:
246 intermission_partner_id = partner[0]
247 partner_name = partner[1]
248 internal_partner_id = self.pool.get('res.partner').search(cr, uid, [
249 ('name', '=', partner_name),
250 ('partner_type', '=', 'internal'),
251 ])[0]
252 address_id = self.pool.get('res.partner.address').search(cr, uid, [
253 ('partner_id', '=', internal_partner_id),
254 ('type', '=', 'default'),
255 ])
256 if not address_id:
257 address_id = self.pool.get('res.partner.address').search(cr, uid, [
258 ('partner_id', '=', internal_partner_id),
259 ])
260
261 address_id = address_id[0]
262
263 cr.execute("SELECT name FROM stock_picking WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
264 updated_doc += [x[0] for x in cr.fetchall()]
265 cr.execute("""
266 UPDATE stock_picking
267 SET partner_id = %s, partner_id2 = %s, address_id = %s, partner_type_stock_picking = 'internal', invoice_state = 'none'
268 WHERE partner_id = %s
269 AND state not in ('done', 'cancel');
270 """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) )
271 cr.execute("""
272 UPDATE stock_move
273 SET partner_id = %s, partner_id2 = %s, address_id = %s
274 WHERE (partner_id = %s OR partner_id2 = %s) AND state not in ('done', 'cancel');
275 """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id, intermission_partner_id) )
276
277 cr.execute("SELECT name FROM purchase_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
278 updated_doc += [x[0] for x in cr.fetchall()]
279 cr.execute("""
280 UPDATE purchase_order
281 SET partner_id = %s, partner_address_id = %s, partner_type = 'internal'
282 WHERE partner_id = %s
283 AND state not in ('done', 'cancel');
284 """, (internal_partner_id, address_id, intermission_partner_id) )
285 cr.execute("""
286 UPDATE purchase_order_line pol
287 SET partner_id = %s
288 FROM purchase_order po
289 WHERE pol.order_id = po.id
290 AND pol.partner_id = %s
291 AND po.state not in ('done', 'cancel');
292 """, (internal_partner_id, intermission_partner_id) )
293
294 cr.execute("SELECT name FROM sale_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
295 updated_doc += [x[0] for x in cr.fetchall()]
296 cr.execute("""
297 UPDATE sale_order
298 SET partner_id = %s, partner_invoice_id = %s, partner_order_id = %s, partner_shipping_id = %s, partner_type = 'internal'
299 WHERE partner_id = %s
300 AND state not in ('done', 'cancel');
301 """, (internal_partner_id, address_id, address_id, address_id, intermission_partner_id) )
302 cr.execute("""
303 UPDATE sale_order_line sol
304 SET order_partner_id = %s
305 FROM sale_order so
306 WHERE sol.order_id = so.id
307 AND sol.order_partner_id = %s
308 AND so.state not in ('done', 'cancel');
309 """, (internal_partner_id, intermission_partner_id) )
310
311 cr.execute("SELECT name FROM shipment WHERE partner_id = %s AND state not in ('done', 'cancel', 'delivered');", (intermission_partner_id,))
312 updated_doc += [x[0] for x in cr.fetchall()]
313 cr.execute("""
314 UPDATE shipment
315 SET partner_id = %s, partner_id2 = %s, address_id = %s
316 WHERE partner_id = %s
317 AND state not in ('done', 'cancel', 'delivered');
318 """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) )
319
320 self._logger.warn("Following documents have been updated with internal partner: %s" % ", ".join(updated_doc))
321
322 return True
323
324 def us_2257_patch(self, cr, uid, *a, **b):
325 context = {}
326 user_obj = self.pool.get('res.users')
327 partner_obj = self.pool.get('res.partner')
328 usr = user_obj.browse(cr, uid, [uid], context=context)[0]
329 level_current = False
330
331 if usr and usr.company_id and usr.company_id.instance_id:
332 level_current = usr.company_id.instance_id.level
333
334 if level_current == 'section':
335 intermission_ids = partner_obj.search(cr, uid, [('active', 'in', ['t', 'f']), ('partner_type', '=', 'intermission')])
336 address_ids = []
337 if intermission_ids:
338 address_ids = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', 'in', intermission_ids)])
339 self._logger.warn('touch %d partners, %d addresses' % (len(intermission_ids), len(address_ids)))
340 cr.execute("update ir_model_data set touched='[''name'']', last_modification=now() where model='res.partner' and module='sd' and res_id in %s" , (tuple(intermission_ids), ))
341 if address_ids:
342 cr.execute("update ir_model_data set touched='[''name'']', last_modification=now() where model='res.partner.address' and module='sd' and res_id in %s" , (tuple(address_ids), ))
343
344 return True
345
346 def us_2730_patch(self, cr, uid, *a, **b):
347 '''
348 remove all translations, and then re-import them
349 so that the {*}_MF.po files are authoratative
350 '''
351 cr.execute("""delete from ir_model_data where model='ir.translation' and res_id in (
352 select id from ir_translation where lang = 'fr_MF' and type != 'model'
353 )
354 """)
355 cr.execute("delete from ir_translation where lang = 'fr_MF' and type != 'model'")
356 irmm = self.pool.get('ir.module.module')
357 msf_profile_id = irmm.search(cr, uid, [('name', '=', 'msf_profile')])
358 irmm.update_translations(cr, uid, msf_profile_id)
359
360 def us_2632_patch(self, cr, uid, *a, **b):
361 '''fix ir.model.data entries on sync_server instances
362 '''
363 update_module = self.pool.get('sync.server.update')
364 if update_module:
365 cr.execute("""
366 UPDATE ir_model_data SET module='msf_sync_data_server' WHERE
367 model='sync_server.message_rule' AND module='';
368 """)
369
370 def us_2806_add_ir_ui_view_constraint(self, cr, uid, *a, **b):
371 '''
372 The constraint may have not been added during the update because it is
373 needeed to update all the modules before to add this constraint.
374 Having it in this patch script will add it at the end of the update.
375 '''
376 cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_ui_view_model_type_priority\'')
377 if not cr.fetchone():
378 cr.execute("""SELECT model, type, priority, count(*)
379 FROM ir_ui_view
380 WHERE inherit_id IS NULL
381 GROUP BY model, type, priority
382 HAVING count(*) > 1""")
383 if not cr.fetchone():
384 cr.execute('CREATE UNIQUE INDEX ir_ui_view_model_type_priority ON ir_ui_view (priority, type, model) WHERE inherit_id IS NULL')
385 else:
386 self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.')
387
388>>>>>>> MERGE-SOURCE
223 def remove_not_synchronized_data(self, cr, uid, *a, **b):389 def remove_not_synchronized_data(self, cr, uid, *a, **b):
224 '''390 '''
225 The list of models to synchronize was wrong. It is now build391 The list of models to synchronize was wrong. It is now build
226392
=== 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 2017-08-03 15:16:40 +0000
+++ bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2017-09-01 09:49:29 +0000
@@ -1,4 +1,5 @@
1id,active,applies_to_type,arguments,domain,destination_name,type_id,remote_call,model_id,name,sequence_number,status1id,active,applies_to_type,arguments,domain,destination_name,type_id,remote_call,model_id,name,sequence_number,status
2<<<<<<< TREE
2msf_sync_data_server.resourcing_lines,TRUE,TRUE,"['sync_order_line_db_id', 'partner_id', 'resource_ok', 'resource_sync_line_db_id', 'partner_type']","[('partner_type','!=','external'), ('partner_id', '!=', False)]",partner_id,MISSION,sale.order.line.cancel.create_line,sale.order.line.cancel,Resourcing lines,1,Valid3msf_sync_data_server.resourcing_lines,TRUE,TRUE,"['sync_order_line_db_id', 'partner_id', 'resource_ok', 'resource_sync_line_db_id', 'partner_type']","[('partner_type','!=','external'), ('partner_id', '!=', False)]",partner_id,MISSION,sale.order.line.cancel.create_line,sale.order.line.cancel,Resourcing lines,1,Valid
3msf_sync_data_server.po_creates_fo,TRUE,TRUE,"['name', 'analytic_distribution_id/id', 'delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'sourced_references', 'stock_take_date', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned', 'order_line/stock_take_date']","['&','&','&',('partner_type','!=','external'),('state','in',['confirmed']), ('split_po','!=','True'),('push_fo','!=','True')]",partner_id,MISSION,sale.order.create_so,purchase.order,PO creates FO,2,Valid4msf_sync_data_server.po_creates_fo,TRUE,TRUE,"['name', 'analytic_distribution_id/id', 'delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'sourced_references', 'stock_take_date', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned', 'order_line/stock_take_date']","['&','&','&',('partner_type','!=','external'),('state','in',['confirmed']), ('split_po','!=','True'),('push_fo','!=','True')]",partner_id,MISSION,sale.order.create_so,purchase.order,PO creates FO,2,Valid
4msf_sync_data_server.split_po_lines_from_splitted_fo_lines,TRUE,TRUE,"['partner_id','old_sync_order_line_db_id','new_sync_order_line_db_id','new_line_qty','old_line_qty']","[]",partner_id,MISSION,purchase.order.line.to.split.create_from_sync_message,sync.sale.order.line.split,Split PO lines from splitted FO lines,3,Valid5msf_sync_data_server.split_po_lines_from_splitted_fo_lines,TRUE,TRUE,"['partner_id','old_sync_order_line_db_id','new_sync_order_line_db_id','new_line_qty','old_line_qty']","[]",partner_id,MISSION,purchase.order.line.to.split.create_from_sync_message,sync.sale.order.line.split,Split PO lines from splitted FO lines,3,Valid
@@ -47,3 +48,53 @@
47msf_sync_data_server.USB_Validate_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['done']), ('already_rw_validated', '=', False),('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_validated_shipment,shipment,USB_Validate_Shipment,2055,Valid48msf_sync_data_server.USB_Validate_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['done']), ('already_rw_validated', '=', False),('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_validated_shipment,shipment,USB_Validate_Shipment,2055,Valid
48msf_sync_data_server.USB_Set_Delivered_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['delivered']), ('already_rw_delivered', '=', False), ('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_delivered_shipment,shipment,USB_Set_Delivered_Shipment,2056,Valid49msf_sync_data_server.USB_Set_Delivered_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['delivered']), ('already_rw_delivered', '=', False), ('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_delivered_shipment,shipment,USB_Set_Delivered_Shipment,2056,Valid
49msf_sync_data_server.USB_Cancel_Int,TRUE,TRUE,['name'],"[('type', '=', 'internal'), ('state', '=', 'cancel')]",partner_id,USB,stock.picking.usb_cancel_int,stock.picking,USB_Cancel_Int,2057,Valid50msf_sync_data_server.USB_Cancel_Int,TRUE,TRUE,['name'],"[('type', '=', 'internal'), ('state', '=', 'cancel')]",partner_id,USB,stock.picking.usb_cancel_int,stock.picking,USB_Cancel_Int,2057,Valid
51=======
52msf_sync_data_server.resourcing_lines,TRUE,TRUE,"['sync_order_line_db_id', 'partner_id', 'resource_ok', 'resource_sync_line_db_id', 'partner_type']","[('partner_type','!=','external'), ('partner_id', '!=', False)]",partner_id,MISSION,sale.order.line.cancel.create_line,sale.order.line.cancel,Resourcing lines,1,Valid
53msf_sync_data_server.po_creates_fo,TRUE,TRUE,"['name', 'analytic_distribution_id/id', 'delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'sourced_references', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned']","['&','&','&',('partner_type','!=','external'),('state','in',['confirmed']), ('split_po','!=','True'),('push_fo','!=','True')]",partner_id,MISSION,sale.order.create_so,purchase.order,PO creates FO,2,Valid
54msf_sync_data_server.split_po_lines_from_splitted_fo_lines,TRUE,TRUE,"['partner_id','old_sync_order_line_db_id','new_sync_order_line_db_id','new_line_qty','old_line_qty']","[]",partner_id,MISSION,purchase.order.line.to.split.create_from_sync_message,sync.sale.order.line.split,Split PO lines from splitted FO lines,3,Valid
55msf_sync_data_server.validated_fo_updates_po,TRUE,TRUE,"['name','state','analytic_distribution_id/id', 'original_so_id_sale_order','categ', 'order_type', 'priority', 'loan_duration','delivery_confirmed_date','est_transport_lead_time', 'transport_type', 'ready_to_ship_date', 'details', 'note','client_order_ref', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/date_planned','order_line/is_line_split', 'order_line/confirmed_delivery_date', 'order_line/cancel_split_ok']","['&','&','&',('partner_type','!=','external'),('state','in',['validated', 'done']),('original_so_id_sale_order','=',''), ('client_order_ref','!=',False)]",partner_id,MISSION,purchase.order.validated_fo_update_original_po,sale.order,Validated FO updates PO,4,Valid
56msf_sync_data_server.normal_fo_creates_po,TRUE,TRUE,"['name','state','analytic_distribution_id/id','parent_order_name','delivery_confirmed_date','est_transport_lead_time', 'categ', 'order_type', 'priority', 'loan_duration','transport_type', 'ready_to_ship_date', 'details', 'note','client_order_ref', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/date_planned', 'order_line/confirmed_delivery_date']","['&','&','&',('partner_type','!=','external'),('state','in',['validated','done']),('client_order_ref','=',False),('split_type_sale_order','=','original_sale_order')]",partner_id,MISSION,purchase.order.normal_fo_create_po,sale.order,Normal FO creates PO,5,Valid
57msf_sync_data_server.split_fo_creates_split_po,TRUE,TRUE,"['name','state','analytic_distribution_id/id', 'delivery_confirmed_date','categ', 'order_type', 'priority', 'loan_duration','est_transport_lead_time', 'transport_type', 'ready_to_ship_date', 'details', 'note','client_order_ref', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/is_line_split','order_line/name', 'order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/date_planned', 'order_line/confirmed_delivery_date', 'order_line/source_sync_line_id']","['&',('partner_type','!=','external'),('original_so_id_sale_order','!=','False')]",partner_id,MISSION,purchase.order.create_split_po,sale.order,Split FO creates Split PO,6,Valid
58msf_sync_data_server.split_fo_updates_split_po,TRUE,TRUE,"['name', 'state', 'client_order_ref','sync_date','analytic_distribution_id/id','categ', 'order_type', 'priority', 'loan_duration', 'delivery_confirmed_date','est_transport_lead_time', 'transport_type', 'note','original_so_id_sale_order', 'ready_to_ship_date', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/is_line_split','order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code', 'order_line/confirmed_delivery_date', 'order_line/source_sync_line_id', 'order_line/sync_sourced_origin']","['&','&',('partner_type','!=','external'),('state','in',['manual','progress','shipping_except','invoice_except','done']),('original_so_id_sale_order','!=','False')]",partner_id,MISSION,purchase.order.update_split_po,sale.order,Split FO updates split PO,7,Valid
59msf_sync_data_server.po_updates_so_ref,TRUE,TRUE,"['name','state','partner_ref']","['&','&','&',('partner_type','!=','external'),('state','in',['confirmed','sourced','split', 'approved']),('partner_ref','!=',False),'!',('partner_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,sale.order.update_sub_so_ref,purchase.order,PO updates SO ref,8,Valid
60msf_sync_data_server.fo_updates_po_ref,TRUE,TRUE,"['name','state','client_order_ref']","['&','&','&',('partner_type','!=','external'),('client_order_ref','!=',False),('split_type_sale_order','=','original_sale_order'),'!',('client_order_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,purchase.order.update_fo_ref,sale.order,FO updates PO ref,9,Valid
61msf_sync_data_server.update_in_ref,TRUE,TRUE,"['name','shipment_ref']","['&',('shipment_ref','!=',False),'!',('shipment_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,stock.picking.update_in_ref,stock.picking,IN updates ref to OUT SHIP,10,Valid
62msf_sync_data_server.canceled_fo_cancels_po,TRUE,TRUE,"['name','state', 'client_order_ref']","[('state', '=', 'cancel'), ('client_order_ref', '!=', '')]",partner_id,MISSION,purchase.order.canceled_fo_cancel_po,sale.order,Canceled FO cancels PO,18,Valid
63msf_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', '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_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', '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']","['&','&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['standard', 'packing']), ('state', '=', 'done'), ('already_shipped', '=', True), ('do_not_sync', '=', False), ('claim', '=', False)]",partner_id,MISSION,stock.picking.partial_shipped_fo_updates_in_po,stock.picking,Partial shipped at Coordo updates IN at Project,19,Valid
64msf_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_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', '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
65msf_sync_data_server.dpo_service_lines_update_in_at_project,FALSE,TRUE,"['order_id/name', 'order_id/delivery_confirmed_date', 'fake_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', '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
66msf_sync_data_server.cancel_out_at_coordo_cancels_in_at_project,TRUE,TRUE,"['name', 'state', 'origin']","['&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'),('state', '=', 'cancel'),('subtype', '=', 'standard'),('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.cancel_out_pick_cancel_in,stock.picking,Canceled OUT at Coordo cancels IN at Project,22,Valid
67msf_sync_data_server.cancel_pick_at_coordo_cancels_in_at_project,TRUE,TRUE,"['name', 'state', 'origin']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'),('state', '=', 'cancel'),('subtype', '=', 'picking'),('backorder_id', '=', False),('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.cancel_out_pick_cancel_in,stock.picking,Canceled PICK at Coordo cancels IN at Project,23,Valid
68msf_sync_data_server.cancel_stock_move_at_coordo_cancels_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'date_cancel']","['&','&','&','&','&','&',('picking_id.partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'),('state', '=', 'cancel'),('picking_id.state', '=', 'done'),('picking_id.do_not_sync', '=', False),('to_be_sent', '=', True), '&', '|', ('picking_id.subtype', '=', 'picking'), ('picking_id.subtype', '=', 'standard'), ('picking_id.already_shipped', '=', False)]",partner_id,MISSION,stock.picking.cancel_stock_move_of_pick_cancel_in,stock.move,Canceled stock move cancels IN,24,Valid
69msf_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
70msf_sync_data_server.closed_in_confirms_dpo_reception,TRUE,TRUE,"['name', 'state', 'dpo_line_id']","['&','&','&','&',('picking_id.partner_type_stock_picking', '!=', 'external'), ('picking_id.type', '=', 'in'), ('picking_id.subtype', 'in', ['standard']), ('state', '=', 'done'), ('dpo_line_id', '!=', 0)]",partner_id,MISSION,stock.picking.closed_in_confirms_dpo_reception,stock.move,Closed IN confirms DPO reception,27,Valid
71msf_sync_data_server.create_batch_object,FALSE,TRUE,"['name', 'xmlid_name', 'prefix', 'product_id/id', 'partner_id/id', 'date', 'ref','life_date','sequence_id','type']","[('name', '=', False)]",partner_id,MISSION,stock.picking.create_batch_number,stock.production.lot,Create Batch Object,1001,Valid
72msf_sync_data_server.create_asset_object,TRUE,TRUE,"['name', 'xmlid_name', 'arrival_date', 'asset_type_id/id', 'partner_id/id', 'brand', 'comment', 'description', 'hq_ref', 'international_po', 'invo_certif_depreciation', 'invo_currency/id', 'invo_date', 'invo_donator_code', 'invo_num', 'invo_supplier', 'invo_value', 'local_ref', 'model', 'orig_mission_code', 'product_id/id', 'project_po', 'receipt_place', 'serial_nb', 'type', 'year']","[('name', '=', False)]",partner_id,MISSION,stock.picking.create_asset,product.asset,Create Asset Object,1002,Valid
73msf_sync_data_server.reset_ref_by_recovery_mode,TRUE,TRUE,['name'],"[('name', '=', False)]",partner_id,MISSION,sale.order.reset_ref_by_recovery_mode,sale.order,Reset Due to Recovery,1003,Valid
74msf_sync_data_server.USB_replicate_po,TRUE,TRUE,"['name', 'analytic_distribution_id/id', 'partner_id/id','pricelist_id/id','delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'cross_docking_ok', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned','order_line/procurement_id/id']","[('state','in',['approved', 'done'])]",partner_id,USB,purchase.order.usb_replicate_po,purchase.order,USB_replicate_po,2000,Valid
75msf_sync_data_server.USB_replicate_fo,TRUE,TRUE,"['name', 'location_requestor_id/id', 'analytic_distribution_id/id', 'partner_id/id','pricelist_id/id','delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned','order_line/procurement_id/id']","[('state','in',['manual','done','progress'])]",partner_id,USB,sale.order.usb_replicate_fo,sale.order,USB_replicate_fo,2001,Valid
76msf_sync_data_server.USB_replicate_ir,TRUE,TRUE,"['name', 'location_requestor_id/id', 'analytic_distribution_id/id', 'partner_id/id','pricelist_id/id','delivery_requested_date','details','notes', 'origin', 'categ', 'order_type', 'priority', 'loan_duration', 'is_a_counterpart', 'order_line/product_id/id', 'order_line/product_id/name','order_line/id', 'order_line/name', 'order_line/product_uom_qty', 'order_line/product_uom', 'order_line/price_unit','order_line/cost_price', 'order_line/analytic_distribution_id/id','order_line/comment','order_line/have_analytic_distribution_from_header','order_line/line_number', 'order_line/nomen_manda_0/id','order_line/nomen_manda_1/id','order_line/nomen_manda_2/id','order_line/nomen_manda_3/id', 'order_line/sync_order_line_db_id', 'order_line/nomenclature_description','order_line/notes','order_line/default_name','order_line/default_code','order_line/is_line_split','order_line/date_planned','order_line/procurement_id/id']","[('procurement_request', '=', True), ('state', 'in', ['progress','done'])]",partner_id,USB,sale.order.usb_replicate_fo,sale.order,USB_replicate_ir,2003,Valid
77msf_sync_data_server.USB_replicate_in,TRUE,TRUE,"['name','subtype','rw_force_seq','from_wkf','state','stock_journal_id/id','origin','purchase_id/id', 'sale_id/id', 'shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_requestor_rw/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'in'),('subtype', '=', 'standard'),('state', 'in', ['assigned']),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_replicate_in,stock.picking,USB_replicate_in,2010,Valid
78msf_sync_data_server.USB_update_in_shipped_available,TRUE,TRUE,"['name','from_wkf','subtype','rw_force_seq','state','stock_journal_id/id','origin','purchase_id/id', 'sale_id/id', 'shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_requestor_rw/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'in'),('subtype', '=', 'standard'),('state', 'in', ['shipped']),('partner_id', '!=', False),('already_replicated', '=', False)]",partner_id,USB,stock.picking.usb_update_in_shipped_available,stock.picking,USB_update_in_shipped_available,2011,Valid
79msf_sync_data_server.USB_cancel_in,TRUE,TRUE,"['name','subtype','origin']","[('type', '=', 'in'),('subtype', '=', 'standard'),('state', 'in', ['cancel']),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_cancel_in,stock.picking,USB_cancel_in,2012,Valid
80msf_sync_data_server.USB_cancel_pick_out,TRUE,TRUE,"['name','subtype','origin']","[('type', '=', 'out'),('state', 'in', ['cancel']),('partner_id', '!=', False), ('already_replicated', '=', False)]",partner_id,USB,stock.picking.usb_cancel_pick_out,stock.picking,USB_cancel_pick_out,2013,Valid
81msf_sync_data_server.USB_create_partial_in,TRUE,TRUE,"['name','from_wkf','subtype','date_done','associate_pick_name','rw_force_seq','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/location_requestor_rw/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'in'),('subtype', '=', 'standard'),('state', 'in', ['done']),('already_replicated', '=',False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_create_partial_in,stock.picking,USB_create_partial_in,2015,Valid
82msf_sync_data_server.USB_replicate_int,TRUE,TRUE,"['name','from_wkf','subtype','date_done','rw_force_seq','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'internal'),('subtype', '=', 'standard'),('state', 'in', ['assigned','done','confirmed']),('already_replicated', '=', False)]",partner_id,USB,stock.picking.usb_replicate_int,stock.picking,USB_replicate_int,2020,Valid
83msf_sync_data_server.USB_create_partial_int_moves,TRUE,TRUE,"['name','from_wkf','date_done','subtype','associate_pick_name','rw_force_seq','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/location_requestor_rw/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'internal'),('subtype', '=', 'standard'),('state', 'in', ['done'])]",partner_id,USB,stock.picking.usb_create_partial_int_moves,stock.picking,USB_create_partial_int_moves,2021,Valid
84msf_sync_data_server.USB_replicate_out,TRUE,TRUE,"['name','subtype','from_wkf','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id', 'backorder_id/id','backorder_id/name','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'standard'),('state', 'in', ['confirmed', 'assigned']),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_replicate_picking,stock.picking,USB_replicate_out,2030,Valid
85msf_sync_data_server.USB_replicate_pick,TRUE,TRUE,"['name','subtype','from_wkf','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id', 'backorder_id/id','backorder_id/name','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'picking'),('state', 'in', ['draft']),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_replicate_picking,stock.picking,USB_replicate_pick,2031,Valid
86msf_sync_data_server.USB_replicate_out_conso,TRUE,TRUE,"['name','subtype','from_wkf','date_done','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'standard'),('name', 'like', 'OUT-CONSO'),('state', '=', 'done'),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_replicate_picking,stock.picking,USB_replicate_out_conso,2032,Valid
87msf_sync_data_server.USB_convert_PICK_to_OUT,TRUE,TRUE,"['name','subtype','from_wkf','associate_pick_name','date_done','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('name', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_convert_pick_to_out,stock.picking,USB_convert_PICK_to_OUT,2035,Valid
88msf_sync_data_server.USB_convert_OUT_to_PICK,TRUE,TRUE,"['name','subtype','from_wkf','associate_pick_name','date_done','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('name', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_convert_out_to_pick,stock.picking,USB_convert_OUT_to_PICK,2036,Valid
89msf_sync_data_server.USB_closed_OUT_closes_OUT,TRUE,TRUE,"['name','subtype','from_wkf','date_done','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'standard'),('state', '=', 'done'),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_closed_out_closes_out,stock.picking,USB_closed_OUT_closes_OUT,2040,Valid
90msf_sync_data_server.USB_closed_new_PICK_closes_PICK,TRUE,TRUE,"['name','subtype','date_done','state','from_wkf','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id', 'backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'picking'),('state', 'in', ['done', 'assigned']),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_create_picking,stock.picking,USB_closed_new_PICK_closes_PICK,2041,Valid
91msf_sync_data_server.USB_replicate_PPL,TRUE,TRUE,"['name','subtype','from_wkf','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'ppl'),('state', 'in', ['done','assigned']),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_replicate_ppl,stock.picking,USB_replicate_PPL,2044,Valid
92msf_sync_data_server.USB_picking_return_products,TRUE,TRUE,['name'],"[('state', 'in',['fake'])]",partner_id,USB,stock.picking.usb_picking_return_products,stock.picking,usb_picking_return_products,2045,Valid
93msf_sync_data_server.USB_Create_Packing_List,TRUE,TRUE,"['name','from_wkf','subtype','state','stock_journal_id/id','purchase_id/id', 'sale_id/id','origin','shipment_id/name','shipment_id/num_of_packs','previous_step_id/name','location_id/id','backorder_ids/id','backorder_ids/rw_sdref_counterpart', 'backorder_id/id','backorder_id/name','warehouse_id/id','order_category','overall_qty','change_reason','cross_docking_ok','location_dest_id/id','address_id', 'partner_type_stock_picking', 'delivered','reason_type_id/id','min_date', 'note', 'partner_id', 'move_type', 'type', 'dpo_out', 'flow_type', 'transport_order_id/id', 'direct_incoming','shipment_id/name', '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/reason_type_id/id','move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_qty', 'move_lines/product_uos_qty', 'move_lines/prodlot_id/id', '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/id','move_lines/location_id/id','move_lines/from_pack','move_lines/to_pack','move_lines/width','move_lines/height','move_lines/weight','move_lines/length','move_lines/pack_type','move_lines/purchase_line_id/id','move_lines/sale_line_id/id','move_lines/price_unit','move_lines/price_currency_id/id']","[('type', '=', 'out'),('subtype', '=', 'packing'),('state', 'in', ['draft','done','assigned']),('shipment_id', '!=', False),('backorder_id', '=', False),('already_replicated', '=', False),('partner_id', '!=', False)]",partner_id,USB,stock.picking.usb_create_packing,stock.picking,USB_Create_Packing_List,2046,Valid
94msf_sync_data_server.USB_shipment_return_packs_shipment_draft,TRUE,TRUE,['name'],"[('state', 'in',['fake'])]",partner_id,USB,shipment.usb_shipment_return_packs_shipment_draft,shipment,usb_shipment_return_packs_shipment_draft,2047,Valid
95msf_sync_data_server.USB_Create_Shipment,TRUE,TRUE,"['shipper_address','address_id/id','date_of_departure','shipment_expected_date','invoice_id/id', 'consignee_date', 'shipper_name', 'carrier_address', 'registration', 'planned_date_of_arrival', 'partner_id', 'carrier_name', 'carrier_other', 'consignee_email', 'shipment_actual_date', 'shipper_date', 'parent_id/name', 'state', 'driver_name' , 'cargo_manifest_reference', 'carrier_signature', 'shipper_phone' , 'carrier_phone' , 'consignee_signature' , 'sequence_id' , 'carrier_email' , 'date', 'shipper_signature', 'carrier_date', 'name' , 'consignee_other', 'consignee_phone' , 'consignee_address', 'in_ref', 'transit_via', 'transport_type', 'shipper_email', 'partner_id2/id' , 'shipper_other' , 'consignee_name' , 'transport_order_id/id','pack_family_memory_ids/ppl_id/name','pack_family_memory_ids/from_pack','pack_family_memory_ids/to_pack','pack_family_memory_ids/description_ppl']","[('state', 'not in', ['draft']),('already_replicated', '=', False)]",partner_id,USB,shipment.usb_create_shipment,shipment,USB_Create_Shipment,2050,Valid
96msf_sync_data_server.Usb_Shipment_Return_Packs,TRUE,TRUE,['name'],"[('state','in',['fake'])]",partner_id,USB,shipment.usb_shipment_return_packs,shipment,USB_Shipment_Return_Packs,2051,Valid
97msf_sync_data_server.USB_Validate_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['done']), ('already_rw_validated', '=', False),('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_validated_shipment,shipment,USB_Validate_Shipment,2055,Valid
98msf_sync_data_server.USB_Set_Delivered_Shipment,TRUE,TRUE,['name'],"[('state', 'in', ['delivered']), ('already_rw_delivered', '=', False), ('parent_id', '!=', False)]",partner_id,USB,shipment.usb_set_delivered_shipment,shipment,USB_Set_Delivered_Shipment,2056,Valid
99msf_sync_data_server.USB_Cancel_Int,TRUE,TRUE,['name'],"[('type', '=', 'internal'), ('state', '=', 'cancel')]",partner_id,USB,stock.picking.usb_cancel_int,stock.picking,USB_Cancel_Int,2057,Valid
100>>>>>>> MERGE-SOURCE
50101
=== 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 2017-08-23 18:38:09 +0000
+++ bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2017-09-01 09:49:29 +0000
@@ -123,12 +123,21 @@
123msf_sync_data_server.account_tax_tree,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('parent_id','!=','')]",['parent_id/id'],OC,account.tax,,Account Tax Tree,Valid,,613123msf_sync_data_server.account_tax_tree,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('parent_id','!=','')]",['parent_id/id'],OC,account.tax,,Account Tax Tree,Valid,,613
124msf_sync_data_server.composition_kit,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','completed'),('composition_type','=','theoretical')]","['active', 'composition_creation_date', 'composition_description', 'composition_product_id/id', 'composition_type', 'composition_version', 'composition_version_txt', 'name', 'state']",OC,composition.kit,,Theoretical Kit Composition List,Valid,,620124msf_sync_data_server.composition_kit,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','completed'),('composition_type','=','theoretical')]","['active', 'composition_creation_date', 'composition_description', 'composition_product_id/id', 'composition_type', 'composition_version', 'composition_version_txt', 'name', 'state']",OC,composition.kit,,Theoretical Kit Composition List,Valid,,620
125msf_sync_data_server.composition_item,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('item_kit_id' , 'in' , ('composition.kit' , 'id' , [('state','=','completed'),('composition_type','=','theoretical')]))]","['item_asset_id/id', 'item_kit_id/id', 'item_module', 'item_product_id/id', 'item_qty', 'item_uom_id/id']",OC,composition.item,,Theoretical Kit Composition List Line,Valid,,621125msf_sync_data_server.composition_item,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('item_kit_id' , 'in' , ('composition.kit' , 'id' , [('state','=','completed'),('composition_type','=','theoretical')]))]","['item_asset_id/id', 'item_kit_id/id', 'item_module', 'item_product_id/id', 'item_qty', 'item_uom_id/id']",OC,composition.item,,Theoretical Kit Composition List Line,Valid,,621
126<<<<<<< TREE
126msf_sync_data_server.internal_catalogue,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",OC,supplier.catalogue,,External Supplier Catalogue,Valid,"{'state': 'confirmed'}",650127msf_sync_data_server.internal_catalogue,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",OC,supplier.catalogue,,External Supplier Catalogue,Valid,"{'state': 'confirmed'}",650
127msf_sync_data_server.internal_catalogue_line,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",OC,supplier.catalogue.line,,External Supplier Catalogue Line,Valid,,651128msf_sync_data_server.internal_catalogue_line,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",OC,supplier.catalogue.line,,External Supplier Catalogue Line,Valid,,651
128msf_sync_data_server.esc_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",COORDINATIONS,supplier.catalogue,,ESC Supplier Catalogue,Valid,"{'state': 'confirmed'}",655129msf_sync_data_server.esc_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",COORDINATIONS,supplier.catalogue,,ESC Supplier Catalogue,Valid,"{'state': 'confirmed'}",655
129msf_sync_data_server.esc_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",COORDINATIONS,supplier.catalogue.line,,ESC Supplier Catalogue Lines,Valid,,656130msf_sync_data_server.esc_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",COORDINATIONS,supplier.catalogue.line,,ESC Supplier Catalogue Lines,Valid,,656
130msf_sync_data_server.coordo_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",MISSION,supplier.catalogue,,Coordo Supplier Catalogue,Valid,"{'state': 'confirmed'}",660131msf_sync_data_server.coordo_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",MISSION,supplier.catalogue,,Coordo Supplier Catalogue,Valid,"{'state': 'confirmed'}",660
131msf_sync_data_server.coordo_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",MISSION,supplier.catalogue.line,,Coordo Supplier Catalogue Lines,Valid,,661132msf_sync_data_server.coordo_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price', 'product_code']",MISSION,supplier.catalogue.line,,Coordo Supplier Catalogue Lines,Valid,,661
133=======
134msf_sync_data_server.internal_catalogue,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",OC,supplier.catalogue,,External Supplier Catalogue,Valid,"{'state': 'confirmed'}",650
135msf_sync_data_server.internal_catalogue_line,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','external')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price']",OC,supplier.catalogue.line,,External Supplier Catalogue Line,Valid,,651
136msf_sync_data_server.esc_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",COORDINATIONS,supplier.catalogue,,ESC Supplier Catalogue,Valid,"{'state': 'confirmed'}",655
137msf_sync_data_server.esc_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('partner_type','=','esc')]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price']",COORDINATIONS,supplier.catalogue.line,,ESC Supplier Catalogue Lines,Valid,,656
138msf_sync_data_server.coordo_catalogue,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('state','=','confirmed'),('active', 'in', ['t', 'f']),('partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","[ 'comment', 'currency_id/id', 'current', 'esc_update_ts', 'active', 'name', 'partner_id/id', 'period_from', 'period_to']",MISSION,supplier.catalogue,,Coordo Supplier Catalogue,Valid,"{'state': 'confirmed'}",660
139msf_sync_data_server.coordo_catalogue_line,TRUE,TRUE,FALSE,TRUE,bidirectional,Down,"[('catalogue_id.state','=','confirmed'),('catalogue_id.partner_id' , 'in' , ('res.partner' , 'id' , [('is_coordo','=',True)]))]","['catalogue_id/id', 'comment', 'line_number', 'line_uom_id/id', 'min_order_qty', 'min_qty', 'product_id/id', 'rounding', 'unit_price']",MISSION,supplier.catalogue.line,,Coordo Supplier Catalogue Lines,Valid,,661
140>>>>>>> MERGE-SOURCE
132msf_sync_data_server.user_groups,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['comment', 'menu_access/id', 'name', 'visible_res_groups', 'is_an_admin_profile', 'level']",OC,res.groups,,User Groups,Valid,,700141msf_sync_data_server.user_groups,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['comment', 'menu_access/id', 'name', 'visible_res_groups', 'is_an_admin_profile', 'level']",OC,res.groups,,User Groups,Valid,,700
133msf_sync_data_server.ACL,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['group_id/id', 'model_id/id', 'name', 'perm_create', 'perm_read', 'perm_unlink', 'perm_write']",OC,ir.model.access,,Access Control Lists,Valid,,701142msf_sync_data_server.ACL,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['group_id/id', 'model_id/id', 'name', 'perm_create', 'perm_read', 'perm_unlink', 'perm_write']",OC,ir.model.access,,Access Control Lists,Valid,,701
134msf_sync_data_server.record_rules,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['domain_force', 'global', 'groups/id', 'model_id/id', 'name', 'perm_create', 'perm_read', 'perm_unlink', 'perm_write']",OC,ir.rule,,Record Rules,Valid,,702143msf_sync_data_server.record_rules,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,[],"['domain_force', 'global', 'groups/id', 'model_id/id', 'name', 'perm_create', 'perm_read', 'perm_unlink', 'perm_write']",OC,ir.rule,,Record Rules,Valid,,702
135144
=== modified file 'bin/addons/procurement_request/procurement_request.py'
=== modified file 'bin/addons/procurement_request/procurement_request_view.xml'
--- bin/addons/procurement_request/procurement_request_view.xml 2017-08-01 15:45:31 +0000
+++ bin/addons/procurement_request/procurement_request_view.xml 2017-09-01 09:49:29 +0000
@@ -54,12 +54,16 @@
54 <field name="delivery_requested_date" required="1" string="Requested date" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" />54 <field name="delivery_requested_date" required="1" string="Requested date" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" />
55 <field name="origin" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" />55 <field name="origin" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" />
56 <field name="functional_currency_id" />56 <field name="functional_currency_id" />
57<<<<<<< TREE
57 <field name="categ" on_change="onchange_categ(categ)" />58 <field name="categ" on_change="onchange_categ(categ)" />
58 <group colspan="2" col="3">59 <group colspan="2" col="3">
59 <field name="stock_take_date" attrs="{'readonly': [('state', 'not in', ['draft'])]}" />60 <field name="stock_take_date" attrs="{'readonly': [('state', 'not in', ['draft'])]}" />
60 <button colspan="1" name="update_date" string="Update Lines" type="object" context="{'field_name': 'stock_take', 'type': 'sale.order'}" icon="gtk-indent"61 <button colspan="1" name="update_date" string="Update Lines" type="object" context="{'field_name': 'stock_take', 'type': 'sale.order'}" icon="gtk-indent"
61 attrs="{'invisible': [('state', 'not in', ('draft', 'confirmed'))]}" />62 attrs="{'invisible': [('state', 'not in', ('draft', 'confirmed'))]}" />
62 </group>63 </group>
64=======
65 <field name="categ" on_change="onchange_categ(categ)" />
66>>>>>>> MERGE-SOURCE
63 <field name="fo_to_resource" invisible="1" />67 <field name="fo_to_resource" invisible="1" />
64 <field name="parent_order_name" attrs="{'invisible': [('fo_to_resource', '=', False)]}" />68 <field name="parent_order_name" attrs="{'invisible': [('fo_to_resource', '=', False)]}" />
65 </group>69 </group>
6670
=== modified file 'bin/addons/product_attributes/product_attributes_view.xml'
=== modified file 'bin/addons/purchase_override/purchase.py'
=== modified file 'bin/addons/purchase_override/purchase_view.xml'
=== modified file 'bin/addons/reason_types_moves/reason_type.py'
--- bin/addons/reason_types_moves/reason_type.py 2017-08-25 16:02:26 +0000
+++ bin/addons/reason_types_moves/reason_type.py 2017-09-01 09:49:29 +0000
@@ -177,12 +177,21 @@
177 @return:177 @return:
178 """178 """
179 # Copy the comment179 # Copy the comment
180<<<<<<< TREE
180 if inventory_line:181 if inventory_line:
181 move_vals.update({182 move_vals.update({
182 'comment': inventory_line.comment,183 'comment': inventory_line.comment,
183 'reason_type_id': inventory_line.reason_type_id.id,184 'reason_type_id': inventory_line.reason_type_id.id,
184 })185 })
185 move_vals.update({'not_chained': True})186 move_vals.update({'not_chained': True})
187=======
188 if inventory_line:
189 move_vals.update({
190 'comment': inventory_line.comment,
191 'reason_type_id': inventory_line.reason_type_id.id,
192 })
193 move_vals.update({'not_chained': True})
194>>>>>>> MERGE-SOURCE
186195
187 return super(stock_inventory, self)._inventory_line_hook(cr, uid, inventory_line, move_vals)196 return super(stock_inventory, self)._inventory_line_hook(cr, uid, inventory_line, move_vals)
188 # @@@end197 # @@@end
189198
=== modified file 'bin/addons/report_webkit/webkit_report.py'
=== modified file 'bin/addons/sale/sale_view.xml'
=== modified file 'bin/addons/sale_override/sale.py'
=== modified file 'bin/addons/sale_override/sale_view.xml'
=== modified file 'bin/addons/sales_followup/report/sale_follow_up_report_multi.py'
--- bin/addons/sales_followup/report/sale_follow_up_report_multi.py 2017-07-25 09:04:51 +0000
+++ bin/addons/sales_followup/report/sale_follow_up_report_multi.py 2017-09-01 09:49:29 +0000
@@ -147,11 +147,18 @@
147 data = {147 data = {
148 'po_name': po_name,148 'po_name': po_name,
149 'cdd': cdd,149 'cdd': cdd,
150<<<<<<< TREE
150 'line_number': line.line_number,151 'line_number': line.line_number,
151 'product_name': line.product_id.name,152 'product_name': line.product_id.name,
152 'product_code': line.product_id.code,153 'product_code': line.product_id.code,
153 'is_delivered': False,154 'is_delivered': False,
154 'backordered_qty': 0.00,155 'backordered_qty': 0.00,
156=======
157 'line_number': line.line_number,
158 'product_name': line.product_id.name,
159 'product_code': line.product_id.code,
160 'is_delivered': False,
161>>>>>>> MERGE-SOURCE
155 }162 }
156 if first_line:163 if first_line:
157 data.update({164 data.update({
@@ -162,6 +169,7 @@
162 })169 })
163 first_line = False170 first_line = False
164171
172<<<<<<< TREE
165 if ppl or ppl_not_shipped:173 if ppl or ppl_not_shipped:
166 eta = ''174 eta = ''
167 is_delivered = False175 is_delivered = False
@@ -177,6 +185,23 @@
177 packing = move.picking_id.name or ''185 packing = move.picking_id.name or ''
178 shipment = ''186 shipment = ''
179187
188=======
189 if ppl or ppl_not_shipped:
190 eta = ''
191 is_delivered = False
192 is_shipment_done = False
193 if ppl:
194 packing = move.picking_id.previous_step_id.name or ''
195 shipment = move.picking_id.shipment_id and move.picking_id.shipment_id.name or ''
196 eta = datetime.strptime(move.picking_id.shipment_id.shipment_actual_date[0:10], '%Y-%m-%d')
197 eta += timedelta(days=line.order_id.partner_id.supplier_lt or 0.00)
198 is_delivered = move.picking_id.shipment_id.state == 'delivered' or False
199 is_shipment_done = move.picking_id.shipment_id.state == 'done' or False
200 else:
201 packing = move.picking_id.name or ''
202 shipment = ''
203
204>>>>>>> MERGE-SOURCE
180 if not grouped:205 if not grouped:
181 key = (packing, shipment, move.product_uom.name)206 key = (packing, shipment, move.product_uom.name)
182 else:207 else:
183208
=== modified file 'bin/addons/sourcing/procurement_order.py'
=== modified file 'bin/addons/specific_rules/specific_rules.py'
--- bin/addons/specific_rules/specific_rules.py 2017-08-23 14:10:02 +0000
+++ bin/addons/specific_rules/specific_rules.py 2017-09-01 09:49:29 +0000
@@ -75,9 +75,15 @@
75 prod_obj = self.pool.get('product.product')75 prod_obj = self.pool.get('product.product')
76 if prod_obj.browse(cr, uid, product).is_ssl:76 if prod_obj.browse(cr, uid, product).is_ssl:
77 warning = {77 warning = {
78<<<<<<< TREE
78 'title': 'Short Shelf Life product',79 'title': 'Short Shelf Life product',
79 'message': _(SHORT_SHELF_LIFE_MESS)80 'message': _(SHORT_SHELF_LIFE_MESS)
80 }81 }
82=======
83 'title': 'Short Shelf Life product',
84 'message': _(SHORT_SHELF_LIFE_MESS)
85 }
86>>>>>>> MERGE-SOURCE
81 result.update(warning=warning)87 result.update(warning=warning)
8288
83 return result89 return result
@@ -168,9 +174,15 @@
168 prod_obj = self.pool.get('product.product')174 prod_obj = self.pool.get('product.product')
169 if prod_obj.browse(cr, uid, product).is_ssl:175 if prod_obj.browse(cr, uid, product).is_ssl:
170 warning = {176 warning = {
177<<<<<<< TREE
171 'title': 'Short Shelf Life product',178 'title': 'Short Shelf Life product',
172 'message': _(SHORT_SHELF_LIFE_MESS)179 'message': _(SHORT_SHELF_LIFE_MESS)
173 }180 }
181=======
182 'title': 'Short Shelf Life product',
183 'message': _(SHORT_SHELF_LIFE_MESS)
184 }
185>>>>>>> MERGE-SOURCE
174 result.update(warning=warning)186 result.update(warning=warning)
175187
176 return result188 return result
@@ -704,12 +716,21 @@
704 raise osv.except_osv(_('Error!'), _('The selected product is Expiry Date Mandatory while the selected Batch number corresponds to Batch Number Mandatory.'))716 raise osv.except_osv(_('Error!'), _('The selected product is Expiry Date Mandatory while the selected Batch number corresponds to Batch Number Mandatory.'))
705 if not move.prodlot_id and move.product_qty and \717 if not move.prodlot_id and move.product_qty and \
706 (move.state == 'done' and \718 (move.state == 'done' and \
719<<<<<<< TREE
707 ( \720 ( \
708 (move.product_id.track_production and move.location_id.usage == 'production') or \721 (move.product_id.track_production and move.location_id.usage == 'production') or \
709 (move.product_id.track_production and move.location_dest_id.usage == 'production') or \722 (move.product_id.track_production and move.location_dest_id.usage == 'production') or \
710 (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \723 (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \
711 (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \724 (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \
712 )):725 )):
726=======
727 ( \
728 (move.product_id.track_production and move.location_id.usage == 'production') or \
729 (move.product_id.track_production and move.location_dest_id.usage == 'production') or \
730 (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \
731 (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \
732 )):
733>>>>>>> MERGE-SOURCE
713 raise osv.except_osv(_('Error!'), _('You must assign a batch number for this product.'))734 raise osv.except_osv(_('Error!'), _('You must assign a batch number for this product.'))
714735
715 return True736 return True
@@ -783,6 +804,7 @@
783 product_ids.add(read_dict['product_id'][0])804 product_ids.add(read_dict['product_id'][0])
784805
785 product_list_dict = self.pool.get('product.product').read(cr, uid,806 product_list_dict = self.pool.get('product.product').read(cr, uid,
807<<<<<<< TREE
786 list(product_ids),808 list(product_ids),
787 ['kc_txt',809 ['kc_txt',
788 'ssl_txt',810 'ssl_txt',
@@ -793,6 +815,18 @@
793 'type',815 'type',
794 'subtype',],816 'subtype',],
795 context=context)817 context=context)
818=======
819 list(product_ids),
820 ['kc_txt',
821 'ssl_txt',
822 'dg_txt',
823 'cs_txt',
824 'batch_management',
825 'perishable',
826 'type',
827 'subtype',],
828 context=context)
829>>>>>>> MERGE-SOURCE
796 product_dict = dict([(x['id'], x) for x in product_list_dict])830 product_dict = dict([(x['id'], x) for x in product_list_dict])
797831
798 for stock_move_dict in read_result:832 for stock_move_dict in read_result:
@@ -1362,9 +1396,15 @@
1362 'You can\'t create a standard batch number for a product which is not batch mandatory. If the product is perishable, the system will create automatically an internal batch number on reception/inventory.',1396 'You can\'t create a standard batch number for a product which is not batch mandatory. If the product is perishable, the system will create automatically an internal batch number on reception/inventory.',
1363 ['Type', 'Product']),1397 ['Type', 'Product']),
1364 (_check_perishable_type_integrity,1398 (_check_perishable_type_integrity,
1399<<<<<<< TREE
1365 'You can\'t create an internal Batch Number for a product which is batch managed or which is not perishable. If the product is batch managed, please create a standard batch number.',1400 'You can\'t create an internal Batch Number for a product which is batch managed or which is not perishable. If the product is batch managed, please create a standard batch number.',
1366 ['Type', 'Product']),1401 ['Type', 'Product']),
1367 ]1402 ]
1403=======
1404 'You can\'t create an internal Batch Number for a product which is batch managed or which is not perishable. If the product is batch managed, please create a standard batch number.',
1405 ['Type', 'Product']),
1406 ]
1407>>>>>>> MERGE-SOURCE
13681408
1369 def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):1409 def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
1370 '''1410 '''
@@ -1601,9 +1641,15 @@
1601 GROUP BY l.product_id, l.location_id, l.%s, l.expiry_date1641 GROUP BY l.product_id, l.location_id, l.%s, l.expiry_date
1602 HAVING count(l.id) > 11642 HAVING count(l.id) > 1
1603 ORDER BY count(l.id) DESC""" % (1643 ORDER BY count(l.id) DESC""" % (
1644<<<<<<< TREE
1604 self._name.replace('.', '_'),1645 self._name.replace('.', '_'),
1605 self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name',1646 self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name',
1606 )1647 )
1648=======
1649 self._name.replace('.', '_'),
1650 self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name',
1651 )
1652>>>>>>> MERGE-SOURCE
1607 cr.execute(sql_req, (tuple(ids),))1653 cr.execute(sql_req, (tuple(ids),))
1608 check_res = cr.dictfetchall()1654 check_res = cr.dictfetchall()
1609 if check_res:1655 if check_res:
16101656
=== modified file 'bin/addons/stock/stock.py'
--- bin/addons/stock/stock.py 2017-08-23 14:10:02 +0000
+++ bin/addons/stock/stock.py 2017-09-01 09:49:29 +0000
@@ -3057,6 +3057,7 @@
3057 'location_id': line['location_id'][0],3057 'location_id': line['location_id'][0],
3058 'location_dest_id': location_id,3058 'location_dest_id': location_id,
3059 })3059 })
3060<<<<<<< TREE
3060 value.update({3061 value.update({
3061 'comment': line['comment'],3062 'comment': line['comment'],
3062 'reason_type_id': line['reason_type_id'][0],3063 'reason_type_id': line['reason_type_id'][0],
@@ -3071,6 +3072,20 @@
3071 message = _('Inventory') + " '" + inv['name'] + "' "+ _("is validated.")3072 message = _('Inventory') + " '" + inv['name'] + "' "+ _("is validated.")
3072 self.log(cr, uid, inv['id'], message)3073 self.log(cr, uid, inv['id'], message)
3073 self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]})3074 self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]})
3075=======
3076 value.update({
3077 'comment': line['comment'],
3078 'reason_type_id': line['reason_type_id'][0],
3079 })
3080
3081 if self._name == 'initial.stock.inventory':
3082 value.update({'price_unit': line['average_cost']})
3083 move_ids.append(self._inventory_line_hook(cr, uid, None, value))
3084 # Changed the text of the following line to "is confirmed" instead of "is done" due to the state value
3085 message = _('Inventory') + " '" + inv['name'] + "' "+ _("is confirmed.")
3086 self.log(cr, uid, inv['id'], message)
3087 self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]})
3088>>>>>>> MERGE-SOURCE
3074 return True3089 return True
30753090
3076 def action_cancel_draft(self, cr, uid, ids, context=None):3091 def action_cancel_draft(self, cr, uid, ids, context=None):
30773092
=== modified file 'bin/addons/stock_override/wizard/stock_card_wizard.py'
--- bin/addons/stock_override/wizard/stock_card_wizard.py 2017-08-23 14:10:02 +0000
+++ bin/addons/stock_override/wizard/stock_card_wizard.py 2017-09-01 09:49:29 +0000
@@ -245,12 +245,16 @@
245 'notes': move.picking_id and move.picking_id.note or '',245 'notes': move.picking_id and move.picking_id.note or '',
246 }246 }
247247
248<<<<<<< TREE
248 line_obj.create(cr, uid, line_values, context=context)249 line_obj.create(cr, uid, line_values, context=context)
249250
250 for inv_date in inv_line_dates:251 for inv_date in inv_line_dates:
251 for new_line in inv_line_to_add[inv_date]:252 for new_line in inv_line_to_add[inv_date]:
252 new_line['balance'] = initial_stock253 new_line['balance'] = initial_stock
253 line_obj.create(cr, uid, new_line, context=context)254 line_obj.create(cr, uid, new_line, context=context)
255=======
256 line_obj.create(cr, uid, line_values, context=context)
257>>>>>>> MERGE-SOURCE
254258
255 self.write(cr, uid, [ids[0]], {'available_stock': initial_stock},259 self.write(cr, uid, [ids[0]], {'available_stock': initial_stock},
256 context=context)260 context=context)
257261
=== modified file 'bin/addons/sync_client/sync_client.py'
=== modified file 'bin/addons/sync_so/so_po_common.py'
=== modified file 'bin/release.py'
--- bin/release.py 2017-08-29 14:56:45 +0000
+++ bin/release.py 2017-09-01 09:49:29 +0000
@@ -20,7 +20,11 @@
20##############################################################################20##############################################################################
2121
22name = 'openerp-server'22name = 'openerp-server'
23<<<<<<< TREE
23version = 'UF6.0rc1'24version = 'UF6.0rc1'
25=======
26version = 'UF6.0dev'
27>>>>>>> MERGE-SOURCE
24major_version = '6.0'28major_version = '6.0'
25description = 'OpenERP Server'29description = 'OpenERP Server'
26long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic30long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic
2731
=== modified file 'bin/tools/misc.py'
=== modified file 'bin/unifield-version.txt'
--- bin/unifield-version.txt 2017-08-29 14:56:45 +0000
+++ bin/unifield-version.txt 2017-09-01 09:49:29 +0000
@@ -48,7 +48,13 @@
48364232a949995b3e46324fa93b5a06c3 2016-12-14 10:00:00 UF3.048364232a949995b3e46324fa93b5a06c3 2016-12-14 10:00:00 UF3.0
49b2bc3aa15d627714868e8bac1c44b821 2017-01-26 14:00:00 UF3.149b2bc3aa15d627714868e8bac1c44b821 2017-01-26 14:00:00 UF3.1
50f37e6ab5138ec1768214805ec03b77ec 2017-03-20 16:00:00 UF4.050f37e6ab5138ec1768214805ec03b77ec 2017-03-20 16:00:00 UF4.0
51<<<<<<< TREE
510b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1520b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1
527777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0537777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0
536e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1546e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1
5407a26b10a43329d42ecbfeb1fe5a26e1 2017-08-29 17:00:00 UF6.0rc15507a26b10a43329d42ecbfeb1fe5a26e1 2017-08-29 17:00:00 UF6.0rc1
56=======
570b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1
587777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0
596e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1
60>>>>>>> MERGE-SOURCE
5561
=== modified file 'bin/updater.py'
--- bin/updater.py 2017-08-25 12:42:18 +0000
+++ bin/updater.py 2017-09-01 09:49:29 +0000
@@ -554,6 +554,7 @@
554 logger.warning('ExpandedColumnCount is present in file %s line %s.' % (full_path, line_number))554 logger.warning('ExpandedColumnCount is present in file %s line %s.' % (full_path, line_number))
555 logger.info("Check mako and xml files finished.")555 logger.info("Check mako and xml files finished.")
556556
557<<<<<<< TREE
557#558#
558# Functions related to upgrading PostgreSQL.559# Functions related to upgrading PostgreSQL.
559#560#
@@ -979,3 +980,374 @@
979 if sys.platform != 'win32':980 if sys.platform != 'win32':
980 root = '/'981 root = '/'
981 assert get_free_space_mb(root) != None982 assert get_free_space_mb(root) != None
983=======
984#
985# Functions related to upgrading PostgreSQL.
986#
987
988def _find_pg_patch():
989 """
990 Looks in the cwd for a file matching pgsql-*-*-patch.
991 Returns the filename of the patch, the oldVer and the newVer.
992 """
993 import glob
994 pfiles = glob.glob('pgsql-*-*-patch')
995 if len(pfiles) == 0:
996 return None, None, None
997 if len(pfiles) != 1:
998 warn("Too many PostgreSQL patch files: %s" % pfiles)
999 warn("PostgreSQL will not be updated.")
1000 return None, None, None
1001
1002 (oldVer, newVer) = pfiles[0].split('-')[1:3]
1003
1004 # Check version format: 8.4.14 or 10.1
1005 if not re.match('\d+\.\d+(\.\d+)?', oldVer) or \
1006 not re.match('\d+\.\d+(\.\d+)?', newVer):
1007 return None, None, None
1008
1009 return pfiles[0], oldVer, newVer
1010
1011def _is_major(oldVer, newVer):
1012 oldVer = oldVer.split('.')
1013 newVer = newVer.split('.')
1014 if oldVer[0] != newVer[0]:
1015 return True
1016 if oldVer[0] >= 10:
1017 # for 10.x and onward, second position indicates minor
1018 # version: https://www.postgresql.org/support/versioning/
1019 return False
1020 if oldVer[1] != newVer[1]:
1021 return True
1022 return False
1023
1024def _no_log(*x):
1025 pass
1026
1027def _archive_patch(pf):
1028 """
1029 Put away the patch file in order to indicate that it has
1030 already been applied and PG update should not be attempted
1031 again.
1032 """
1033 warn('Archiving patch file %s' % pf)
1034 if not os.path.exists('backup'):
1035 os.mkdir('backup')
1036 bf = os.path.join('backup', pf)
1037 if os.path.exists(bf):
1038 os.remove(bf)
1039 os.rename(pf, bf)
1040
1041def do_pg_update():
1042 """
1043 This function is run on every server start (see openerp-server.py).
1044 If the conditions are not right for a PostgreSQL update, it
1045 immeditately returns, so that the server can start up (the common case).
1046 If an update is required, then it attempts the update. If the
1047 update fails, it must leave the server in the same condition it
1048 started, i.e. with the original Postgres up and running.
1049 """
1050
1051 # Postgres updates are only done on Windows.
1052 if os.name != "nt":
1053 return
1054
1055 # We need to open this here because do_update only
1056 # opens it once it starts to work, not if there is no
1057 # update to apply.
1058 global log
1059 try:
1060 log = open(log_file, 'a')
1061 except Exception as e:
1062 log = os.stderr
1063 warn("Could not open %s correctly: %s" % (log_file, e))
1064
1065 # If there is no patch file available, then there's no
1066 # update to do.
1067 pf, oldVer, newVer = _find_pg_patch()
1068 if pf is None:
1069 return
1070
1071 try:
1072 with open(pf, 'rb') as f:
1073 pdata = f.read()
1074 except Exception as e:
1075 warn("Could not read patch file %s: %s" % (pf, e))
1076 _archive_patch(pf)
1077 return
1078
1079 for root in ('c:\\', 'd:\\'):
1080 if os.path.exists(root):
1081 free = get_free_space_mb(root)
1082 if free < 1000:
1083 warn("Less than 1 gb free on %s. Not attempting PostgreSQL upgrade." % root)
1084 return
1085
1086 # Minor update:
1087 # 1. check that the patch will apply
1088 # 2. stop server
1089 # 3. patch the binaries in place, nuke patch to show it is done
1090 # 4. start server
1091 #
1092 # Minor updates will only happen after the 8.4->9.6.x transition,
1093 # so things are much easier, with more fixed items (PG inst location,
1094 # service name).
1095 if not _is_major(oldVer, newVer):
1096 if oldVer.startswith("8.4."):
1097 warn("Minor patch from 8.4.x not supported.")
1098 return
1099 warn("Postgres minor update from %s to %s" % (oldVer, newVer))
1100
1101 try:
1102 bsdifftree.applyPatch(pdata, r'..\pgsql', doIt=False, log=_no_log)
1103 subprocess.call('net stop Postgres', stdout=log, stderr=log)
1104 bsdifftree.applyPatch(pdata, r'..\pgsql', log=warn)
1105 _archive_patch(pf)
1106 except Exception as e:
1107 s = str(e) or type(e)
1108 warn("Could not apply patch:", s)
1109 finally:
1110 subprocess.call('net start Postgres', stdout=log, stderr=log)
1111 warn("Minor update done.")
1112 return
1113
1114 # Major upgrade
1115 #
1116 # 0. find out if tablespaces are in use, if so abort
1117 # 1. figure out where the old PG is and copy it to pgsql-next
1118 # 2. patch pgsql-next, nuke patch file
1119 # 3. prepare new db dir using new initdb, old user/pass.
1120 # 4. stop server
1121 # 5. pg_upgrade -> if fail, clean db dir, goto 8
1122 # 6. commit to new bin dir, put it in '..\pgsql'
1123 # 7. if old was 8.4, change service entry
1124 # 8. start server
1125
1126 warn("Postgres major update from %s to %s" % (oldVer, newVer))
1127 import tools
1128
1129 stopped = False
1130 pg_new_db = None
1131 try:
1132 env = os.environ
1133 if tools.config.get('db_user'):
1134 env['PGUSER'] = tools.config['db_user']
1135 if tools.config.get('db_password'):
1136 env['PGPASSWORD'] = tools.config['db_password']
1137
1138 pg_new = r'..\pgsql-next'
1139 if oldVer == '8.4.14':
1140 svc = 'PostgreSQL_For_OpenERP'
1141 pg_old = r'D:\MSF data\Unifield\PostgreSQL'
1142 else:
1143 svc = 'Postgres'
1144 pg_old = r'..\pgsql'
1145 if not os.path.exists(pg_old):
1146 raise RuntimeError('PostgreSQL install directory %s not found.' % pg_old)
1147
1148 # 0: check for tablespaces (pg_upgrade seems to unify them
1149 # into pg_default, which is not ok)
1150 cmd = [ os.path.join(pg_old, 'bin', 'psql'), '-t', '-c',
1151 'select count(*) > 2 from pg_tablespace;', 'postgres' ]
1152 out = None
1153 try:
1154 out = subprocess.check_output(cmd, stderr=log, env=env)
1155 except subprocess.CalledProcessError as e:
1156 warn(e)
1157 warn("out is", out)
1158 if out is None or 'f' not in out:
1159 raise RuntimeError("User-defined tablespaces might be in use. Upgrade needs human intervention.")
1160
1161 # 1: use old PG install to make a new one to patch
1162 if os.path.exists(pg_new):
1163 warn("Removing previous %s directory" % pg_new)
1164 shutil.rmtree(pg_new)
1165
1166 if oldVer == '8.4.14':
1167 warn("Creating %s by selective copy from %s" % (pg_new, pg_old))
1168 os.mkdir(pg_new)
1169 for d in ('bin', 'lib', 'share'):
1170 shutil.copytree(os.path.join(pg_old, d),
1171 os.path.join(pg_new, d))
1172 else:
1173 shutil.copytree(pg_old, pg_new)
1174
1175 # 2: patch the pg exes -- no trial run here, because if applyPatch
1176 # fails, we have only left pg_new unusable, and we will revert
1177 # to pg_old. Compare to minor (in-place) upgrade, above.
1178 warn('Patching %s' % pg_new)
1179 bsdifftree.applyPatch(pdata, pg_new, log=warn)
1180 _archive_patch(pf)
1181
1182 # 3: prepare the new db
1183 pg_old_db = r'D:\MSF data\Unifield\PostgreSQL\data'
1184 if not os.path.exists(pg_old_db):
1185 raise RuntimeError('Could not find existing PostgreSQL data in %s' % pg_old_db)
1186 pg_new_db = pg_old_db + '-new'
1187 if os.path.exists(pg_new_db):
1188 raise RuntimeError('New data directory %s already exists.' % pg_new_db)
1189 pwf = tempfile.NamedTemporaryFile(delete=False)
1190 pwf.write(tools.config.get('db_password'))
1191 # TODO: apply same fix here for trust as in the AIO
1192 cmd = [ os.path.join(pg_new, 'bin', 'initdb'),
1193 '--pwfile', pwf.name,
1194 '--data-checksums', '-A', 'md5',
1195 '-U', tools.config.get('db_user'),
1196 '--locale', 'English_United States',
1197 '-E', 'UTF8', pg_new_db
1198 ]
1199 rc = subprocess.call(cmd, stdout=log, stderr=log)
1200 pwf.close()
1201 os.remove(pwf.name)
1202 if rc != 0:
1203 raise RuntimeError("initdb returned %d" % rc)
1204
1205 # modify the postgresql.conf file for best
1206 # defaults
1207 pgconf = os.path.join(pg_new_db, "postgresql.conf")
1208 with open(pgconf, "a") as f:
1209 f.write("listen_addresses = 'localhost'\n")
1210 f.write("shared_buffers = 1024MB\n")
1211
1212 # 4: stop old service
1213 subprocess.call('net stop %s' % svc, stdout=log, stderr=log)
1214 stopped = True
1215
1216 # 5: pg_upgrade
1217 run_analyze = False
1218 cmd = [ os.path.join(pg_new, 'bin', 'pg_upgrade'),
1219 '-b', os.path.join(pg_old, 'bin'),
1220 '-B', os.path.join(pg_new, 'bin'),
1221 '-d', pg_old_db, '-D', pg_new_db, '-k', '-v',
1222 ]
1223 rc = subprocess.call(cmd, stdout=log, stderr=log, env=env)
1224 if rc != 0:
1225 raise RuntimeError("pg_upgrade returned %d" % rc)
1226
1227 # The pg_upgrade went ok, so we are committed now. Nuke the
1228 # old db directory and move the upgraded one into place.
1229 warn("pg_upgrade returned %d, commiting to new version" % rc)
1230 run_analyze = True
1231
1232 warn("Rename %s to %s." % (pg_new_db, pg_old_db))
1233 # we do this with two renames since rmtree/rename sometimes
1234 # failed (why? due to antivirus still holding files open?)
1235 pg_old_db2 = pg_old_db + "-trash"
1236 os.rename(pg_old_db, pg_old_db2)
1237 os.rename(pg_new_db, pg_old_db)
1238 shutil.rmtree(pg_old_db2)
1239
1240 # 6: commit to new bin dir
1241 if oldVer == '8.4.14':
1242 # Move pg_new to it's final name.
1243 os.rename(pg_new, r'..\pgsql')
1244 # For 8.4->9.9.x transition, nuke 8.4 install
1245 warn("Removing stand-alone PostgreSQL 8.4 installation.")
1246 cmd = [ os.path.join(pg_old, 'uninstall-postgresql.exe'),
1247 '--mode', 'unattended',
1248 ]
1249 rc = subprocess.call(cmd, stdout=log, stderr=log)
1250 if rc != 0:
1251 warn("PostgreSQL 8.4 uninstall returned %d" % rc)
1252 pg_old = r'..\pgsql'
1253 else:
1254 warn("Remove %s." % pg_old)
1255 shutil.rmtree(pg_old)
1256
1257 warn("Rename %s to %s." % (pg_new, pg_old))
1258 os.rename(pg_new, pg_old)
1259
1260 pgp = os.path.normpath(os.path.join(pg_old, 'bin'))
1261 if tools.config['pg_path'] != pgp:
1262 warn("Setting pg_path to %s." % pgp)
1263 tools.config['pg_path'] = pgp
1264 tools.config.save()
1265
1266 # 7: change service entry to the correct install location
1267 if oldVer == '8.4.14':
1268 cmd = [
1269 os.path.join(pg_old, 'bin', 'pg_ctl'),
1270 'register', '-N', 'Postgres',
1271 '-U', 'openpgsvc',
1272 '-P', '0p3npgsvcPWD',
1273 '-D', pg_old_db,
1274 ]
1275 rc = subprocess.call(cmd, stdout=log, stderr=log)
1276 if rc != 0:
1277 raise RuntimeError("pg_ctl returned %d" % rc)
1278 svc = 'Postgres'
1279
1280 except Exception as e:
1281 s = str(e) or type(e)
1282 warn('Failed to update Postgres:', s)
1283 finally:
1284 try:
1285 if pg_new_db is not None and os.path.exists(pg_new_db):
1286 warn("Removing failed DB upgrade directory %s" % pg_new_db)
1287 shutil.rmtree(pg_new_db)
1288 except Exception:
1289 # don't know what went wrong, but we must not crash here
1290 # or else OpenERP-Server will not start.
1291 pass
1292 # 8. start service (either the old one or the new one)
1293 if stopped:
1294 warn('Starting service %s' % svc)
1295 subprocess.call('net start %s' % svc, stdout=log, stderr=log)
1296 if run_analyze:
1297 cmd = [ os.path.join(r'..\pgsql', 'bin', 'vacuumdb'),
1298 '--all', '--analyze-only' ]
1299 subprocess.call(cmd, stdout=log, stderr=log, env=env)
1300 return
1301
1302# https://stackoverflow.com/questions/51658/cross-platform-space-remaining-on-volume-using-python
1303def get_free_space_mb(dirname):
1304 """Return folder/drive free space (in megabytes)."""
1305 if platform.system() == 'Windows':
1306 free_bytes = ctypes.c_ulonglong(0)
1307 ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes))
1308 return free_bytes.value / 1024 / 1024
1309 else:
1310 st = os.statvfs(dirname)
1311 return st.f_bavail * st.f_frsize / 1024 / 1024
1312
1313#
1314# Unit tests follow
1315#
1316if __name__ == '__main__':
1317 d = tempfile.mkdtemp()
1318 os.chdir(d)
1319
1320 # no file
1321 pf, oldVer, newVer = _find_pg_patch()
1322 assert pf == None
1323
1324 # one good file
1325 with open('pgsql-8.4.14-9.6.3-patch', 'wb') as f:
1326 f.write('Fake patch for testing.')
1327 pf, oldVer, newVer = _find_pg_patch()
1328 assert oldVer == '8.4.14'
1329 assert newVer == '9.6.3'
1330 assert pf == 'pgsql-8.4.14-9.6.3-patch'
1331
1332 # two files: oops
1333 warn("Expect 2 messages on stderr after this:")
1334 with open('pgsql-wat-huh-patch', 'wb') as f:
1335 f.write('Second fake patch for testing.')
1336 pf, oldVer, newVer = _find_pg_patch()
1337 assert pf == None
1338
1339 # one file with wrong version format
1340 os.remove('pgsql-8.4.14-9.6.3-patch')
1341 pf, oldVer, newVer = _find_pg_patch()
1342 assert pf == None
1343
1344 assert _is_major('8.4.14', '9.6.3')
1345 assert not _is_major('8.4.14', '8.4.15')
1346 assert _is_major('9.6.9', '10.1')
1347 assert not _is_major('10.1', '10.2')
1348 assert _is_major('21.9', '22.1')
1349
1350 os.chdir('..')
1351 shutil.rmtree(d)
1352 assert get_free_space_mb("D:\\") != None
1353>>>>>>> MERGE-SOURCE
9821354
=== modified file 'setup.py'
--- setup.py 2017-08-04 14:42:21 +0000
+++ setup.py 2017-09-01 09:49:29 +0000
@@ -60,6 +60,7 @@
60 "imaplib", "smtplib", "email", "yaml",60 "imaplib", "smtplib", "email", "yaml",
61 "uuid", "commands", "mx.DateTime", "json",61 "uuid", "commands", "mx.DateTime", "json",
62 "pylzma", "xlwt", "passlib", "bcrypt", "six", "cffi",62 "pylzma", "xlwt", "passlib", "bcrypt", "six", "cffi",
63<<<<<<< TREE
63 "psutil",64 "psutil",
64 ],65 ],
65 'dist_dir': 'dist',66 'dist_dir': 'dist',
@@ -77,6 +78,24 @@
77 'api-ms-win-core-sysinfo-l1-2-1.dll',78 'api-ms-win-core-sysinfo-l1-2-1.dll',
78 'api-ms-win-security-activedirectoryclient-l1-1-0.dll',79 'api-ms-win-security-activedirectoryclient-l1-1-0.dll',
79 ],80 ],
81=======
82 ],
83 'dist_dir': 'dist',
84 'excludes' : ["Tkconstants","Tkinter","tcl"],
85 'dll_excludes': [
86 'w9xpopen.exe', 'PSAPI.dll', 'CRYPT32.dll', 'MPR.dll',
87 'Secur32.dll', 'SHFOLDER.dll',
88 'api-ms-win-core-delayload-l1-1-1.dll',
89 'api-ms-win-core-errorhandling-l1-1-1.dll',
90 'api-ms-win-core-heap-obsolete-l1-1-0.dll',
91 'api-ms-win-core-libraryloader-l1-2-0.dll',
92 'api-ms-win-core-processthreads-l1-1-2.dll',
93 'api-ms-win-core-profile-l1-1-0.dll',
94 'api-ms-win-core-string-obsolete-l1-1-0.dll',
95 'api-ms-win-core-sysinfo-l1-2-1.dll',
96 'api-ms-win-security-activedirectoryclient-l1-1-0.dll',
97 ],
98>>>>>>> MERGE-SOURCE
80 }99 }
81 }100 }
82101
@@ -226,11 +245,18 @@
226 'reportlab==2.5',245 'reportlab==2.5',
227 'pyyaml==3.12',246 'pyyaml==3.12',
228 'egenix-mx-base==3.2.9',247 'egenix-mx-base==3.2.9',
248<<<<<<< TREE
229 'passlib==1.7.1',249 'passlib==1.7.1',
230 'bcrypt==3.1.3',250 'bcrypt==3.1.3',
231 'xlwt==1.2.0',251 'xlwt==1.2.0',
232 'psutil==5.2.2',252 'psutil==5.2.2',
233 'bsdiff4==1.1.4',253 'bsdiff4==1.1.4',
254=======
255 'passlib==1.7.1',
256 'bcrypt==3.1.3',
257 'xlwt==1.2.0',
258 'bsdiff4==1.1.4',
259>>>>>>> MERGE-SOURCE
234 ],260 ],
235 **py2exe_keywords261 **py2exe_keywords
236 )262 )

Subscribers

People subscribed via source and target branches