Merge lp:~mallorymarcot/unifield-server/us-449 into lp:unifield-server
- us-449
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
UniField Reviewer Team | Pending | ||
Review via email: mp+329612@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/addons/account/account.py' | |||
2 | === modified file 'bin/addons/account/account_invoice_view.xml' | |||
3 | === modified file 'bin/addons/account/account_view.xml' | |||
4 | === modified file 'bin/addons/account/project/project_view.xml' | |||
5 | === modified file 'bin/addons/account_override/account_invoice_view.xml' | |||
6 | === modified file 'bin/addons/account_override/account_move_line.py' | |||
7 | === modified file 'bin/addons/account_period_closing_level/account_period.py' | |||
8 | --- bin/addons/account_period_closing_level/account_period.py 2017-08-28 14:06:27 +0000 | |||
9 | +++ bin/addons/account_period_closing_level/account_period.py 2017-09-01 09:49:29 +0000 | |||
10 | @@ -193,11 +193,20 @@ | |||
11 | 193 | 193 | ||
12 | 194 | # first verify that all existent registers for this period are closed | 194 | # first verify that all existent registers for this period are closed |
13 | 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) |
14 | 196 | <<<<<<< TREE | ||
15 | 196 | journal_ok = [] | 197 | journal_ok = [] |
16 | 198 | ======= | ||
17 | 199 | linked_prev_reg_ids = [] | ||
18 | 200 | >>>>>>> MERGE-SOURCE | ||
19 | 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): |
20 | 202 | <<<<<<< TREE | ||
21 | 198 | journal_ok.append(register.journal_id.id) | 203 | journal_ok.append(register.journal_id.id) |
22 | 204 | ======= | ||
23 | 205 | register.prev_reg_id and linked_prev_reg_ids.append(register.prev_reg_id.id) | ||
24 | 206 | >>>>>>> MERGE-SOURCE | ||
25 | 199 | if register.state not in ['confirm']: | 207 | if register.state not in ['confirm']: |
26 | 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,)) |
27 | 209 | <<<<<<< TREE | ||
28 | 201 | 210 | ||
29 | 202 | # prevent period closing if one of the registers of the previous period | 211 | # prevent period closing if one of the registers of the previous period |
30 | 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) |
31 | @@ -218,6 +227,29 @@ | |||
32 | 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" |
33 | 219 | "%s") % ", ".join([r.name for r in reg_ko])) | 228 | "%s") % ", ".join([r.name for r in reg_ko])) |
34 | 220 | 229 | ||
35 | 230 | ======= | ||
36 | 231 | |||
37 | 232 | # prevent period closing if one of the registers of the previous period | ||
38 | 233 | # has no corresponding register in the period to close AND has a non 0 balance. (except for period 13..16) | ||
39 | 234 | if not period.special: | ||
40 | 235 | prev_period_id = register_tools.previous_period_id(self, cr, uid, period.id, context=context, raise_error=False) | ||
41 | 236 | if prev_period_id: | ||
42 | 237 | all_prev_reg_ids = reg_obj.search(cr, uid, [('period_id', '=', prev_period_id)], order='NO_ORDER', context=context) | ||
43 | 238 | # get the registers of the previous period which are NOT linked to a register of the period to close | ||
44 | 239 | orphan_prev_reg_ids = [reg_id for reg_id in all_prev_reg_ids if reg_id not in linked_prev_reg_ids] | ||
45 | 240 | reg_ko = [] | ||
46 | 241 | for reg in reg_obj.browse(cr, uid, orphan_prev_reg_ids, | ||
47 | 242 | fields_to_fetch=['balance_end', 'balance_end_real', 'balance_end_cash', 'name'], | ||
48 | 243 | context=context): | ||
49 | 244 | if abs(reg.balance_end) > 10**-3 or abs(reg.balance_end_real) > 10**-3 or abs(reg.balance_end_cash) > 10**-3: | ||
50 | 245 | reg_ko.append(reg) | ||
51 | 246 | if len(reg_ko) > 0: | ||
52 | 247 | raise osv.except_osv(_('Warning'), | ||
53 | 248 | _("One or several registers have not been generated for the period " | ||
54 | 249 | "to close and have a balance which isn't equal to 0:\n" | ||
55 | 250 | "%s") % ", ".join([r.name for r in reg_ko])) | ||
56 | 251 | |||
57 | 252 | >>>>>>> MERGE-SOURCE | ||
58 | 221 | # check if subscriptions lines were not created for this period | 253 | # check if subscriptions lines were not created for this period |
59 | 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) |
60 | 223 | if len(sub_ids) > 0: | 255 | if len(sub_ids) > 0: |
61 | 224 | 256 | ||
62 | === modified file 'bin/addons/base/ir/ir.xml' | |||
63 | === modified file 'bin/addons/delivery_mechanism/delivery_mechanism.py' | |||
64 | --- bin/addons/delivery_mechanism/delivery_mechanism.py 2017-08-28 12:05:59 +0000 | |||
65 | +++ bin/addons/delivery_mechanism/delivery_mechanism.py 2017-09-01 09:49:29 +0000 | |||
66 | @@ -334,8 +334,12 @@ | |||
67 | 334 | for move in self.browse(cr, uid, move_ids, context=context): | 334 | for move in self.browse(cr, uid, move_ids, context=context): |
68 | 335 | pick = move.picking_id | 335 | pick = move.picking_id |
69 | 336 | cond1 = move.picking_id.subtype == 'standard' | 336 | cond1 = move.picking_id.subtype == 'standard' |
70 | 337 | <<<<<<< TREE | ||
71 | 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' |
72 | 339 | ======= | ||
73 | 340 | >>>>>>> MERGE-SOURCE | ||
74 | 338 | # move from draft picking or standard picking | 341 | # move from draft picking or standard picking |
75 | 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' | ||
76 | 339 | if cond2 or cond1: | 343 | if cond2 or cond1: |
77 | 340 | integrity_check.append(move) | 344 | integrity_check.append(move) |
78 | 341 | # return the first one matching | 345 | # return the first one matching |
79 | 342 | 346 | ||
80 | === modified file 'bin/addons/financing_contract/financing_contract_view.xml' | |||
81 | === modified file 'bin/addons/msf_budget/msf_budget_view.xml' | |||
82 | === modified file 'bin/addons/msf_doc_import/wizard/__init__.py' | |||
83 | === modified file 'bin/addons/msf_doc_import/wizard/wizard_delete_lines.py' | |||
84 | --- bin/addons/msf_doc_import/wizard/wizard_delete_lines.py 2017-08-11 13:56:44 +0000 | |||
85 | +++ bin/addons/msf_doc_import/wizard/wizard_delete_lines.py 2017-09-01 09:49:29 +0000 | |||
86 | @@ -573,6 +573,7 @@ | |||
87 | 573 | if isinstance(ids, (int, long)): | 573 | if isinstance(ids, (int, long)): |
88 | 574 | ids = [ids] | 574 | ids = [ids] |
89 | 575 | 575 | ||
90 | 576 | <<<<<<< TREE | ||
91 | 576 | # only for FO | 577 | # only for FO |
92 | 577 | if context['active_model'] == 'sale.order' \ | 578 | if context['active_model'] == 'sale.order' \ |
93 | 578 | and (not context.get('procurement_request') or not context['procurement_request']): | 579 | and (not context.get('procurement_request') or not context['procurement_request']): |
94 | @@ -611,6 +612,28 @@ | |||
95 | 611 | else: | 612 | else: |
96 | 612 | line_obj.unlink(cr, uid, line_ids, context=context) | 613 | line_obj.unlink(cr, uid, line_ids, context=context) |
97 | 613 | context['from_del_wizard'] = False | 614 | context['from_del_wizard'] = False |
98 | 615 | ======= | ||
99 | 616 | for wiz in self.browse(cr, uid, ids, context=context): | ||
100 | 617 | line_obj = self.pool.get(wiz.to_remove_type) | ||
101 | 618 | line_ids = [] | ||
102 | 619 | # Parse the content of 'line_ids' field (text field) to retrieve | ||
103 | 620 | # the id of lines to remove. | ||
104 | 621 | for line in wiz.line_ids: | ||
105 | 622 | for l in line[2]: | ||
106 | 623 | line_ids.append(l) | ||
107 | 624 | |||
108 | 625 | context['noraise'] = True | ||
109 | 626 | context.update({ | ||
110 | 627 | 'noraise': True, | ||
111 | 628 | 'from_del_wizard': True, | ||
112 | 629 | }) | ||
113 | 630 | if wiz.to_remove_type in ('purchase.order.line', 'tender.line'): | ||
114 | 631 | line_obj.fake_unlink(cr, uid, line_ids, context=context) | ||
115 | 632 | else: | ||
116 | 633 | line_obj.unlink(cr, uid, line_ids, context=context) | ||
117 | 634 | |||
118 | 635 | context['from_del_wizard'] = False | ||
119 | 636 | >>>>>>> MERGE-SOURCE | ||
120 | 614 | 637 | ||
121 | 615 | return {'type': 'ir.actions.act_window_close'} | 638 | return {'type': 'ir.actions.act_window_close'} |
122 | 616 | 639 | ||
123 | 617 | 640 | ||
124 | === modified file 'bin/addons/msf_instance/msf_instance_installer.py' | |||
125 | === modified file 'bin/addons/msf_order_date/order_dates_view.xml' | |||
126 | === modified file 'bin/addons/msf_outgoing/msf_outgoing.py' | |||
127 | --- bin/addons/msf_outgoing/msf_outgoing.py 2017-08-16 10:23:09 +0000 | |||
128 | +++ bin/addons/msf_outgoing/msf_outgoing.py 2017-09-01 09:49:29 +0000 | |||
129 | @@ -811,6 +811,15 @@ | |||
130 | 811 | picking = family.draft_packing_id | 811 | picking = family.draft_packing_id |
131 | 812 | draft_picking = family.ppl_id and family.ppl_id.previous_step_id and family.ppl_id.previous_step_id.backorder_id or False | 812 | draft_picking = family.ppl_id and family.ppl_id.previous_step_id and family.ppl_id.previous_step_id.backorder_id or False |
132 | 813 | 813 | ||
133 | 814 | # get the linked "save as draft" wizard if has: | ||
134 | 815 | picking_processor_wiz = [] | ||
135 | 816 | if draft_picking: | ||
136 | 817 | picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ | ||
137 | 818 | ('picking_id', '=', draft_picking.id), | ||
138 | 819 | ('draft', '=', True), | ||
139 | 820 | ], context=context) | ||
140 | 821 | if picking_processor_wiz: | ||
141 | 822 | picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) | ||
142 | 814 | 823 | ||
143 | 815 | # UF-2531: Store some important info for the return pack messages | 824 | # UF-2531: Store some important info for the return pack messages |
144 | 816 | return_info.setdefault(str(counter), { | 825 | return_info.setdefault(str(counter), { |
145 | @@ -885,6 +894,24 @@ | |||
146 | 885 | draft_initial_qty += return_qty | 894 | draft_initial_qty += return_qty |
147 | 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) |
148 | 887 | 896 | ||
149 | 897 | # Update or create "save as draft" lines with returned qty: | ||
150 | 898 | if picking_processor_wiz: | ||
151 | 899 | save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ | ||
152 | 900 | ('wizard_id', '=', picking_processor_wiz.id), | ||
153 | 901 | ('move_id', '=', draft_move.id), | ||
154 | 902 | ], context=context) | ||
155 | 903 | if not save_as_draft_move: # then create the SaD line: | ||
156 | 904 | move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=draft_move, context=context) | ||
157 | 905 | move_data.update({'quantity': return_qty}) | ||
158 | 906 | save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) | ||
159 | 907 | save_as_draft_move = [save_as_draft_move] | ||
160 | 908 | else: # update Sad line | ||
161 | 909 | for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): | ||
162 | 910 | self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { | ||
163 | 911 | 'ordered_quantity': sad_move.ordered_quantity + return_qty, | ||
164 | 912 | 'quantity': sad_move.quantity + return_qty, | ||
165 | 913 | }, context=context) | ||
166 | 914 | |||
167 | 888 | # log the increase action - display the picking ticket view form - log message for each draft packing because each corresponds to a different draft picking | 915 | # log the increase action - display the picking ticket view form - log message for each draft packing because each corresponds to a different draft picking |
168 | 889 | if not log_flag: | 916 | if not log_flag: |
169 | 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'] |
170 | @@ -3506,9 +3533,16 @@ | |||
171 | 3506 | 3533 | ||
172 | 3507 | if isinstance(ids, (int, long)): | 3534 | if isinstance(ids, (int, long)): |
173 | 3508 | ids = [ids] | 3535 | ids = [ids] |
174 | 3536 | if context is None: | ||
175 | 3537 | context = {} | ||
176 | 3509 | 3538 | ||
179 | 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): |
180 | 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) |
181 | 3541 | if wiz_ids: | ||
182 | 3542 | processor_id = wiz_ids[0] | ||
183 | 3543 | else: | ||
184 | 3544 | processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) | ||
185 | 3545 | proc_obj.create_lines(cr, uid, processor_id, context=context) | ||
186 | 3512 | 3546 | ||
187 | 3513 | return { | 3547 | return { |
188 | 3514 | 'type': 'ir.actions.act_window', | 3548 | 'type': 'ir.actions.act_window', |
189 | @@ -3517,6 +3551,7 @@ | |||
190 | 3517 | 'view_type': 'form', | 3551 | 'view_type': 'form', |
191 | 3518 | 'view_mode': 'form', | 3552 | 'view_mode': 'form', |
192 | 3519 | 'target': 'new', | 3553 | 'target': 'new', |
193 | 3554 | 'context': context, | ||
194 | 3520 | } | 3555 | } |
195 | 3521 | 3556 | ||
196 | 3522 | def do_create_picking(self, cr, uid, wizard_ids, context=None): | 3557 | def do_create_picking(self, cr, uid, wizard_ids, context=None): |
197 | @@ -3698,8 +3733,13 @@ | |||
198 | 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') |
199 | 3699 | ) | 3734 | ) |
200 | 3700 | 3735 | ||
203 | 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): |
204 | 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) |
205 | 3738 | if wiz_ids: | ||
206 | 3739 | processor_id = wiz_ids[0] | ||
207 | 3740 | else: | ||
208 | 3741 | processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) | ||
209 | 3742 | proc_obj.create_lines(cr, uid, processor_id, context=context) | ||
210 | 3703 | 3743 | ||
211 | 3704 | return { | 3744 | return { |
212 | 3705 | 'type': 'ir.actions.act_window', | 3745 | 'type': 'ir.actions.act_window', |
213 | @@ -4314,6 +4354,16 @@ | |||
214 | 4314 | picking = wizard.picking_id | 4354 | picking = wizard.picking_id |
215 | 4315 | draft_picking_id = picking.previous_step_id.backorder_id.id | 4355 | draft_picking_id = picking.previous_step_id.backorder_id.id |
216 | 4316 | 4356 | ||
217 | 4357 | # get the linked "save as draft" wizard if has: | ||
218 | 4358 | picking_processor_wiz = [] | ||
219 | 4359 | if draft_picking_id: | ||
220 | 4360 | picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ | ||
221 | 4361 | ('picking_id', '=', draft_picking_id), | ||
222 | 4362 | ('draft', '=', True), | ||
223 | 4363 | ], context=context) | ||
224 | 4364 | if picking_processor_wiz: | ||
225 | 4365 | picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) | ||
226 | 4366 | |||
227 | 4317 | for line in wizard.move_ids: | 4367 | for line in wizard.move_ids: |
228 | 4318 | return_qty = line.quantity | 4368 | return_qty = line.quantity |
229 | 4319 | 4369 | ||
230 | @@ -4363,11 +4413,27 @@ | |||
231 | 4363 | 4413 | ||
232 | 4364 | # Increase the draft move with the returned quantity | 4414 | # Increase the draft move with the returned quantity |
233 | 4365 | draft_move_id = line.move_id.backmove_id.id | 4415 | draft_move_id = line.move_id.backmove_id.id |
239 | 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'] |
240 | 4367 | draft_initial_qty += return_qty | 4417 | draft_move_qty += return_qty |
241 | 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) |
242 | 4369 | 4419 | ||
243 | 4370 | 4420 | # Update or create "save as draft" lines with returned qty: | |
244 | 4421 | if picking_processor_wiz: | ||
245 | 4422 | save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ | ||
246 | 4423 | ('wizard_id', '=', picking_processor_wiz.id), | ||
247 | 4424 | ('move_id', '=', draft_move_id), | ||
248 | 4425 | ], context=context) | ||
249 | 4426 | if not save_as_draft_move: # then create the SaD line: | ||
250 | 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) | ||
251 | 4428 | move_data.update({'quantity': return_qty}) | ||
252 | 4429 | save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) | ||
253 | 4430 | save_as_draft_move = [save_as_draft_move] | ||
254 | 4431 | else: # update Sad line | ||
255 | 4432 | for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): | ||
256 | 4433 | self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { | ||
257 | 4434 | 'ordered_quantity': sad_move.ordered_quantity + return_qty, | ||
258 | 4435 | 'quantity': sad_move.quantity + return_qty, | ||
259 | 4436 | }, context=context) | ||
260 | 4371 | 4437 | ||
261 | 4372 | # Log message for PPL | 4438 | # Log message for PPL |
262 | 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] |
263 | @@ -4477,6 +4543,14 @@ | |||
264 | 4477 | # get the draft picking | 4543 | # get the draft picking |
265 | 4478 | draft_picking_id = picking.backorder_id.id | 4544 | draft_picking_id = picking.backorder_id.id |
266 | 4479 | 4545 | ||
267 | 4546 | # get the linked "save as draft" wizard if has: | ||
268 | 4547 | picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ | ||
269 | 4548 | ('picking_id', '=', draft_picking_id), | ||
270 | 4549 | ('draft', '=', True), | ||
271 | 4550 | ], context=context) | ||
272 | 4551 | if picking_processor_wiz: | ||
273 | 4552 | picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) | ||
274 | 4553 | |||
275 | 4480 | # for each move from picking ticket - could be split moves | 4554 | # for each move from picking ticket - could be split moves |
276 | 4481 | for move in picking.move_lines: | 4555 | for move in picking.move_lines: |
277 | 4482 | # find the corresponding move in draft | 4556 | # find the corresponding move in draft |
278 | @@ -4486,6 +4560,25 @@ | |||
279 | 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'] |
280 | 4487 | initial_qty += move.product_qty | 4561 | initial_qty += move.product_qty |
281 | 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) |
282 | 4563 | |||
283 | 4564 | # Update or create "save as draft" lines with returned qty: | ||
284 | 4565 | if picking_processor_wiz: | ||
285 | 4566 | save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ | ||
286 | 4567 | ('wizard_id', '=', picking_processor_wiz.id), | ||
287 | 4568 | ('move_id', '=', draft_move.id), | ||
288 | 4569 | ], context=context) | ||
289 | 4570 | if not save_as_draft_move: # then create the SaD line: | ||
290 | 4571 | move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=move, context=context) | ||
291 | 4572 | move_data.update({'quantity': move.product_qty}) | ||
292 | 4573 | save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) | ||
293 | 4574 | save_as_draft_move = [save_as_draft_move] | ||
294 | 4575 | else: # update Sad line | ||
295 | 4576 | for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): | ||
296 | 4577 | self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { | ||
297 | 4578 | 'ordered_quantity': sad_move.ordered_quantity + move.product_qty, | ||
298 | 4579 | 'quantity': sad_move.quantity + move.product_qty, | ||
299 | 4580 | }, context=context) | ||
300 | 4581 | |||
301 | 4489 | # log the increase action | 4582 | # log the increase action |
302 | 4490 | # TODO refactoring needed | 4583 | # TODO refactoring needed |
303 | 4491 | obj_data = self.pool.get('ir.model.data') | 4584 | obj_data = self.pool.get('ir.model.data') |
304 | 4492 | 4585 | ||
305 | === modified file 'bin/addons/msf_outgoing/wizard/create_picking_processor.py' | |||
306 | --- bin/addons/msf_outgoing/wizard/create_picking_processor.py 2016-11-09 09:07:38 +0000 | |||
307 | +++ bin/addons/msf_outgoing/wizard/create_picking_processor.py 2017-09-01 09:49:29 +0000 | |||
308 | @@ -40,6 +40,7 @@ | |||
309 | 40 | 'wizard_id', | 40 | 'wizard_id', |
310 | 41 | string='Moves', | 41 | string='Moves', |
311 | 42 | ), | 42 | ), |
312 | 43 | 'draft': fields.boolean('Draft'), | ||
313 | 43 | } | 44 | } |
314 | 44 | 45 | ||
315 | 45 | """ | 46 | """ |
316 | @@ -54,11 +55,50 @@ | |||
317 | 54 | 55 | ||
318 | 55 | wizard_brw_list = self.browse(cr, uid, ids, context=context) | 56 | wizard_brw_list = self.browse(cr, uid, ids, context=context) |
319 | 56 | 57 | ||
320 | 58 | # disable "save as draft": | ||
321 | 59 | self.write(cr, uid, ids, {'draft': False}, context=context) | ||
322 | 60 | |||
323 | 57 | self.integrity_check_quantity(cr, uid, wizard_brw_list, context=context) | 61 | self.integrity_check_quantity(cr, uid, wizard_brw_list, context=context) |
324 | 58 | self.integrity_check_prodlot(cr, uid, wizard_brw_list, context=context) | 62 | self.integrity_check_prodlot(cr, uid, wizard_brw_list, context=context) |
325 | 59 | # call stock_picking method which returns action call | 63 | # call stock_picking method which returns action call |
326 | 60 | return picking_obj.do_create_picking(cr, uid, ids, context=context) | 64 | return picking_obj.do_create_picking(cr, uid, ids, context=context) |
327 | 61 | 65 | ||
328 | 66 | |||
329 | 67 | def do_reset(self, cr, uid, ids, context=None): | ||
330 | 68 | if context is None: | ||
331 | 69 | context = {} | ||
332 | 70 | if isinstance(ids, (int, long)): | ||
333 | 71 | ids = [ids] | ||
334 | 72 | if not ids: | ||
335 | 73 | raise osv.except_osv( | ||
336 | 74 | _('Processing Error'), | ||
337 | 75 | _('No data to process !'), | ||
338 | 76 | ) | ||
339 | 77 | |||
340 | 78 | pick_id = [] | ||
341 | 79 | for proc in self.browse(cr, uid, ids, context=context): | ||
342 | 80 | pick_id = proc['picking_id']['id'] | ||
343 | 81 | |||
344 | 82 | self.write(cr, uid, ids, {'draft': False}, context=context) | ||
345 | 83 | |||
346 | 84 | return self.pool.get('stock.picking').create_picking(cr, uid, pick_id, context=context) | ||
347 | 85 | |||
348 | 86 | |||
349 | 87 | def do_save_draft(self, cr, uid, ids, context=None): | ||
350 | 88 | if context is None: | ||
351 | 89 | context = {} | ||
352 | 90 | if isinstance(ids, (int, long)): | ||
353 | 91 | ids = [ids] | ||
354 | 92 | if not ids: | ||
355 | 93 | raise osv.except_osv( | ||
356 | 94 | _('Processing Error'), | ||
357 | 95 | _('No data to process !'), | ||
358 | 96 | ) | ||
359 | 97 | |||
360 | 98 | self.write(cr, uid, ids, {'draft': True}, context=context) | ||
361 | 99 | |||
362 | 100 | return {} | ||
363 | 101 | |||
364 | 62 | create_picking_processor() | 102 | create_picking_processor() |
365 | 63 | 103 | ||
366 | 64 | 104 | ||
367 | 65 | 105 | ||
368 | === modified file 'bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml' | |||
369 | --- bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml 2016-10-28 12:36:50 +0000 | |||
370 | +++ bin/addons/msf_outgoing/wizard/create_picking_processor_view.xml 2017-09-01 09:49:29 +0000 | |||
371 | @@ -15,9 +15,11 @@ | |||
372 | 15 | <separator colspan="4" string="Move lines" /> | 15 | <separator colspan="4" string="Move lines" /> |
373 | 16 | <field name="move_ids" mode="tree" | 16 | <field name="move_ids" mode="tree" |
374 | 17 | colspan="4" nolabel="1" /> | 17 | colspan="4" nolabel="1" /> |
375 | 18 | <field name="draft" invisible="1"/> | ||
376 | 18 | <group colspan="4" col="6" name="actions"> | 19 | <group colspan="4" col="6" name="actions"> |
377 | 19 | <separator string="Actions" colspan="6" /> | 20 | <separator string="Actions" colspan="6" /> |
379 | 20 | <label colspan="4"> </label> | 21 | <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" /> |
380 | 22 | <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" /> | ||
381 | 21 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> | 23 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> |
382 | 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" /> |
383 | 23 | </group> | 25 | </group> |
384 | 24 | 26 | ||
385 | === modified file 'bin/addons/msf_outgoing/wizard/validate_picking_processor.py' | |||
386 | --- bin/addons/msf_outgoing/wizard/validate_picking_processor.py 2016-11-09 09:07:38 +0000 | |||
387 | +++ bin/addons/msf_outgoing/wizard/validate_picking_processor.py 2017-09-01 09:49:29 +0000 | |||
388 | @@ -41,6 +41,7 @@ | |||
389 | 41 | 'wizard_id', | 41 | 'wizard_id', |
390 | 42 | string='Moves to process', | 42 | string='Moves to process', |
391 | 43 | ), | 43 | ), |
392 | 44 | 'draft': fields.boolean('Draft'), | ||
393 | 44 | } | 45 | } |
394 | 45 | 46 | ||
395 | 46 | """ | 47 | """ |
396 | @@ -58,8 +59,10 @@ | |||
397 | 58 | if context is None: | 59 | if context is None: |
398 | 59 | context = {} | 60 | context = {} |
399 | 60 | 61 | ||
400 | 62 | # disable "save as draft": | ||
401 | 63 | self.write(cr, uid, ids, {'draft': False}, context=context) | ||
402 | 64 | |||
403 | 61 | to_unlink = [] | 65 | to_unlink = [] |
404 | 62 | |||
405 | 63 | for proc in self.browse(cr, uid, ids, context=context): | 66 | for proc in self.browse(cr, uid, ids, context=context): |
406 | 64 | total_qty = 0.00 | 67 | total_qty = 0.00 |
407 | 65 | 68 | ||
408 | @@ -154,6 +157,42 @@ | |||
409 | 154 | 157 | ||
410 | 155 | return True | 158 | return True |
411 | 156 | 159 | ||
412 | 160 | |||
413 | 161 | def do_reset(self, cr, uid, ids, context=None): | ||
414 | 162 | if context is None: | ||
415 | 163 | context = {} | ||
416 | 164 | if isinstance(ids, (int, long)): | ||
417 | 165 | ids = [ids] | ||
418 | 166 | if not ids: | ||
419 | 167 | raise osv.except_osv( | ||
420 | 168 | _('Processing Error'), | ||
421 | 169 | _('No data to process !'), | ||
422 | 170 | ) | ||
423 | 171 | |||
424 | 172 | pick_id = [] | ||
425 | 173 | for proc in self.browse(cr, uid, ids, context=context): | ||
426 | 174 | pick_id = proc['picking_id']['id'] | ||
427 | 175 | |||
428 | 176 | self.write(cr, uid, ids, {'draft': False}, context=context) | ||
429 | 177 | |||
430 | 178 | return self.pool.get('stock.picking').validate_picking(cr, uid, pick_id, context=context) | ||
431 | 179 | |||
432 | 180 | |||
433 | 181 | def do_save_draft(self, cr, uid, ids, context=None): | ||
434 | 182 | if context is None: | ||
435 | 183 | context = {} | ||
436 | 184 | if isinstance(ids, (int, long)): | ||
437 | 185 | ids = [ids] | ||
438 | 186 | if not ids: | ||
439 | 187 | raise osv.except_osv( | ||
440 | 188 | _('Processing Error'), | ||
441 | 189 | _('No data to process !'), | ||
442 | 190 | ) | ||
443 | 191 | |||
444 | 192 | self.write(cr, uid, ids, {'draft': True}, context=context) | ||
445 | 193 | |||
446 | 194 | return {} | ||
447 | 195 | |||
448 | 157 | validate_picking_processor() | 196 | validate_picking_processor() |
449 | 158 | 197 | ||
450 | 159 | 198 | ||
451 | 160 | 199 | ||
452 | === modified file 'bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml' | |||
453 | --- bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml 2016-10-28 12:36:50 +0000 | |||
454 | +++ bin/addons/msf_outgoing/wizard/validate_picking_processor_view.xml 2017-09-01 09:49:29 +0000 | |||
455 | @@ -15,9 +15,11 @@ | |||
456 | 15 | <separator colspan="4" string="Move lines" /> | 15 | <separator colspan="4" string="Move lines" /> |
457 | 16 | <field name="move_ids" mode="tree" | 16 | <field name="move_ids" mode="tree" |
458 | 17 | colspan="4" nolabel="1" /> | 17 | colspan="4" nolabel="1" /> |
459 | 18 | <field name="draft" invisible="1"/> | ||
460 | 18 | <group colspan="4" col="6" name="actions"> | 19 | <group colspan="4" col="6" name="actions"> |
461 | 19 | <separator string="Actions" colspan="6" /> | 20 | <separator string="Actions" colspan="6" /> |
463 | 20 | <label colspan="4"> </label> | 21 | <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" /> |
464 | 22 | <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" /> | ||
465 | 21 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> | 23 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> |
466 | 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" /> |
467 | 23 | </group> | 25 | </group> |
468 | 24 | 26 | ||
469 | === modified file 'bin/addons/msf_profile/data.xml' | |||
470 | === modified file 'bin/addons/msf_profile/data/patches.xml' | |||
471 | --- bin/addons/msf_profile/data/patches.xml 2017-08-25 15:40:47 +0000 | |||
472 | +++ bin/addons/msf_profile/data/patches.xml 2017-09-01 09:49:29 +0000 | |||
473 | @@ -1,6 +1,7 @@ | |||
474 | 1 | <?xml version="1.0" encoding="utf-8" ?> | 1 | <?xml version="1.0" encoding="utf-8" ?> |
475 | 2 | <openerp> | 2 | <openerp> |
476 | 3 | <data> | 3 | <data> |
477 | 4 | <<<<<<< TREE | ||
478 | 4 | <record id="us_2647_patch" model="patch.scripts"> | 5 | <record id="us_2647_patch" model="patch.scripts"> |
479 | 5 | <field name="method">us_2647</field> | 6 | <field name="method">us_2647</field> |
480 | 6 | </record> | 7 | </record> |
481 | @@ -23,6 +24,27 @@ | |||
482 | 23 | <field name="method">us_2806_add_ir_ui_view_constraint</field> | 24 | <field name="method">us_2806_add_ir_ui_view_constraint</field> |
483 | 24 | </record> | 25 | </record> |
484 | 25 | 26 | ||
485 | 27 | ======= | ||
486 | 28 | <record id="us_244_patch" model="patch.scripts"> | ||
487 | 29 | <field name="method">us_2444_touch_liquidity_journals</field> | ||
488 | 30 | </record> | ||
489 | 31 | |||
490 | 32 | <record id="us_3098_patch" model="patch.scripts"> | ||
491 | 33 | <field name="method">us_3098_patch</field> | ||
492 | 34 | </record> | ||
493 | 35 | |||
494 | 36 | <record id="us_2257_patch" model="patch.scripts"> | ||
495 | 37 | <field name="method">us_2257_patch</field> | ||
496 | 38 | </record> | ||
497 | 39 | <record id="us_2730_patch" model="patch.scripts"> | ||
498 | 40 | <field name="method">us_2730_patch</field> | ||
499 | 41 | </record> | ||
500 | 42 | |||
501 | 43 | <record id="us_2806_add_ir_ui_view_constraint" model="patch.scripts"> | ||
502 | 44 | <field name="method">us_2806_add_ir_ui_view_constraint</field> | ||
503 | 45 | </record> | ||
504 | 46 | |||
505 | 47 | >>>>>>> MERGE-SOURCE | ||
506 | 26 | <record id="remove_not_synchronized_data" model="patch.scripts"> | 48 | <record id="remove_not_synchronized_data" model="patch.scripts"> |
507 | 27 | <field name="method">remove_not_synchronized_data</field> | 49 | <field name="method">remove_not_synchronized_data</field> |
508 | 28 | </record> | 50 | </record> |
509 | 29 | 51 | ||
510 | === modified file 'bin/addons/msf_profile/i18n/fr_MF.po' | |||
511 | --- bin/addons/msf_profile/i18n/fr_MF.po 2017-08-29 13:47:43 +0000 | |||
512 | +++ bin/addons/msf_profile/i18n/fr_MF.po 2017-09-01 09:49:29 +0000 | |||
513 | @@ -10842,7 +10842,7 @@ | |||
514 | 10842 | msgid "International status" | 10842 | msgid "International status" |
515 | 10843 | msgstr "International status" | 10843 | msgstr "International status" |
516 | 10844 | 10844 | ||
518 | 10845 | #. modules: return_claim, msf_outgoing | 10845 | #. modules: return_claim, delivery_mechanism, msf_outgoing, stock_override, stock |
519 | 10846 | #: code:addons/msf_outgoing/msf_outgoing.py:536 | 10846 | #: code:addons/msf_outgoing/msf_outgoing.py:536 |
520 | 10847 | #: code:addons/msf_outgoing/msf_outgoing.py:739 | 10847 | #: code:addons/msf_outgoing/msf_outgoing.py:739 |
521 | 10848 | #: code:addons/msf_outgoing/msf_outgoing.py:778 | 10848 | #: code:addons/msf_outgoing/msf_outgoing.py:778 |
522 | @@ -10897,7 +10897,7 @@ | |||
523 | 10897 | #: code:addons/return_claim/return_claim.py:1639 | 10897 | #: code:addons/return_claim/return_claim.py:1639 |
524 | 10898 | #, python-format | 10898 | #, python-format |
525 | 10899 | msgid "Processing Error" | 10899 | msgid "Processing Error" |
527 | 10900 | msgstr "Erreur en cours " | 10900 | msgstr "Erreur de traitement" |
528 | 10901 | 10901 | ||
529 | 10902 | #. module: account_payment | 10902 | #. module: account_payment |
530 | 10903 | #: field:payment.order,mode:0 | 10903 | #: field:payment.order,mode:0 |
531 | @@ -35824,6 +35824,44 @@ | |||
532 | 35824 | msgid "Only technically to filter currencies according to partner type" | 35824 | msgid "Only technically to filter currencies according to partner type" |
533 | 35825 | msgstr "Seulement techniquement pour filtrer les devises d'après le type de partenaire" | 35825 | msgstr "Seulement techniquement pour filtrer les devises d'après le type de partenaire" |
534 | 35826 | 35826 | ||
535 | 35827 | <<<<<<< TREE | ||
536 | 35828 | ======= | ||
537 | 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 | ||
538 | 35830 | #: field:account.invoice.line,price_unit:0 | ||
539 | 35831 | #: report:account.invoice2:0 | ||
540 | 35832 | #: field:kit.selection.line,price_unit_kit_selection_line:0 | ||
541 | 35833 | #: field:kit.selection.sale.line,price_unit_kit_selection_sale_line:0 | ||
542 | 35834 | #: report:invoice:0 | ||
543 | 35835 | #: field:stock.certificate.valuation,unit_price:0 | ||
544 | 35836 | #: field:pricelist.partnerinfo,price:0 | ||
545 | 35837 | #: report:purchase.order:0 | ||
546 | 35838 | #: field:purchase.order.line,price_unit:0 | ||
547 | 35839 | #: report:po.line.allocation.report:0 | ||
548 | 35840 | #: report:purchase.order.allocation.report:0 | ||
549 | 35841 | #: field:purchase.order.line.allocation.report,unit_price:0 | ||
550 | 35842 | #: report:msf.purchase.order:0 | ||
551 | 35843 | #: report:purchase.order.merged:0 | ||
552 | 35844 | #: field:purchase.order.merged.line,price_unit:0 | ||
553 | 35845 | #: field:wizard.account.invoice.line,price_unit:0 | ||
554 | 35846 | #: report:msf.sale.order:0 | ||
555 | 35847 | #: report:sale.order.allocation.report:0 | ||
556 | 35848 | #: field:sale.order.line,price_unit:0 | ||
557 | 35849 | #: report:lot.stock.overview:0 | ||
558 | 35850 | #: report:lot.stock.overview_all:0 | ||
559 | 35851 | #: field:stock.move,price_unit:0 | ||
560 | 35852 | #: field:supplier.catalogue.line,unit_price:0 | ||
561 | 35853 | #: report:addons/tender_flow/report/tender_rfq_comparison_xls.mako:577 | ||
562 | 35854 | #: code:addons/msf_doc_import/wizard/__init__.py:112 | ||
563 | 35855 | #: code:addons/msf_doc_import/wizard/__init__.py:133 | ||
564 | 35856 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:195 | ||
565 | 35857 | #: field:wizard.simu.import.po.line,import_unit_price:0 | ||
566 | 35858 | #: field:wizard.simu.import.po.line,initial_unit_price:0 | ||
567 | 35859 | #: field:account.direct.invoice.wizard.line,price_unit:0 | ||
568 | 35860 | #, python-format | ||
569 | 35861 | msgid "Unit Price" | ||
570 | 35862 | msgstr "Prix unitaire" | ||
571 | 35863 | |||
572 | 35864 | >>>>>>> MERGE-SOURCE | ||
573 | 35827 | #. module: base | 35865 | #. module: base |
574 | 35828 | #: field:res.config.users,is_erp_manager:0 | 35866 | #: field:res.config.users,is_erp_manager:0 |
575 | 35829 | #: field:res.users,is_erp_manager:0 | 35867 | #: field:res.users,is_erp_manager:0 |
576 | @@ -37260,7 +37298,7 @@ | |||
577 | 37260 | #: code:addons/return_claim/return_claim.py:1640 | 37298 | #: code:addons/return_claim/return_claim.py:1640 |
578 | 37261 | #, python-format | 37299 | #, python-format |
579 | 37262 | msgid "No data to process !" | 37300 | msgid "No data to process !" |
581 | 37263 | msgstr "No data to process !" | 37301 | msgstr "Aucune donnée à traiter !" |
582 | 37264 | 37302 | ||
583 | 37265 | #. module: stock_override | 37303 | #. module: stock_override |
584 | 37266 | #: field:export.report.stock.move,exported_file:0 | 37304 | #: field:export.report.stock.move,exported_file:0 |
585 | @@ -63785,23 +63823,6 @@ | |||
586 | 63785 | msgid "Child Accounts" | 63823 | msgid "Child Accounts" |
587 | 63786 | msgstr "Comptes Enfant " | 63824 | msgstr "Comptes Enfant " |
588 | 63787 | 63825 | ||
589 | 63788 | #. modules: delivery_mechanism, msf_outgoing, stock_override, stock | ||
590 | 63789 | #: code:addons/delivery_mechanism/wizard/stock_partial_picking.py:149 | ||
591 | 63790 | #: code:addons/msf_outgoing/wizard/shipment.py:444 | ||
592 | 63791 | #: code:addons/stock/wizard/stock_move.py:265 | ||
593 | 63792 | #: code:addons/stock/wizard/stock_partial_picking.py:157 | ||
594 | 63793 | #: code:addons/stock/wizard/stock_partial_picking.py:165 | ||
595 | 63794 | #: code:addons/stock/wizard/stock_partial_picking.py:172 | ||
596 | 63795 | #: code:addons/stock_override/wizard/stock_partial_picking.py:113 | ||
597 | 63796 | #: code:addons/stock_override/wizard/stock_partial_picking.py:131 | ||
598 | 63797 | #: code:addons/stock_override/wizard/stock_partial_picking.py:138 | ||
599 | 63798 | #: code:addons/stock_override/wizard/stock_partial_picking.py:149 | ||
600 | 63799 | #: code:addons/stock_override/wizard/stock_partial_picking.py:187 | ||
601 | 63800 | #: code:addons/stock_override/wizard/stock_partial_picking.py:193 | ||
602 | 63801 | #, python-format | ||
603 | 63802 | msgid "Processing Error" | ||
604 | 63803 | msgstr "Erreur de traitement" | ||
605 | 63804 | |||
606 | 63805 | #. module: specific_rules | 63826 | #. module: specific_rules |
607 | 63806 | #: help:product.uom,uom_by_product:0 | 63827 | #: help:product.uom,uom_by_product:0 |
608 | 63807 | msgid "Field used to filter the UoM for a specific product" | 63828 | msgid "Field used to filter the UoM for a specific product" |
609 | @@ -98303,6 +98324,7 @@ | |||
610 | 98303 | msgid "Intermission Vouchers linked to a PO can be deleted only in Draft state." | 98324 | msgid "Intermission Vouchers linked to a PO can be deleted only in Draft state." |
611 | 98304 | msgstr "Les Bons Intermission liés à un BC ne peuvent être supprimés qu'à l'état Brouillon." | 98325 | msgstr "Les Bons Intermission liés à un BC ne peuvent être supprimés qu'à l'état Brouillon." |
612 | 98305 | 98326 | ||
613 | 98327 | <<<<<<< TREE | ||
614 | 98306 | #. module: account_override | 98328 | #. module: account_override |
615 | 98307 | #: code:addons/account_override/invoice.py:723 | 98329 | #: code:addons/account_override/invoice.py:723 |
616 | 98308 | #, python-format | 98330 | #, python-format |
617 | @@ -99361,3 +99383,609 @@ | |||
618 | 99361 | msgid "Unable to generate updates, retrying %d/%d" | 99383 | msgid "Unable to generate updates, retrying %d/%d" |
619 | 99362 | msgstr "Impossible de générer les data, nouvel essai %d/%d" | 99384 | msgstr "Impossible de générer les data, nouvel essai %d/%d" |
620 | 99363 | 99385 | ||
621 | 99386 | ======= | ||
622 | 99387 | #. module: account_override | ||
623 | 99388 | #: code:addons/account_override/invoice.py:723 | ||
624 | 99389 | #, python-format | ||
625 | 99390 | msgid "No Intermission journal found for the current instance." | ||
626 | 99391 | msgstr "Pas de journal Intermission trouvé pour l'instance actuelle." | ||
627 | 99392 | |||
628 | 99393 | #. module: purchase_override | ||
629 | 99394 | #: field:purchase.order,fixed_order_type:0 | ||
630 | 99395 | msgid "Possible order types" | ||
631 | 99396 | msgstr "Types de commande possibles" | ||
632 | 99397 | |||
633 | 99398 | #. module: purchase_override | ||
634 | 99399 | #: code:addons/purchase_override/purchase.py:669 | ||
635 | 99400 | #: code:addons/purchase_override/purchase.py:853 | ||
636 | 99401 | #, python-format | ||
637 | 99402 | msgid "%s: This purchase order is a loan counterpart. You cannot change its order type" | ||
638 | 99403 | msgstr "%s: Ce bon de commande est la contrepartie d'un prêt. Vous ne pouvez pas modifier son type" | ||
639 | 99404 | |||
640 | 99405 | #. module: purchase_override | ||
641 | 99406 | #: code:addons/purchase_override/purchase.py:672 | ||
642 | 99407 | #: code:addons/purchase_override/purchase.py:857 | ||
643 | 99408 | #, python-format | ||
644 | 99409 | msgid "%s: Only %s order types are allowed for this purchase order" | ||
645 | 99410 | msgstr "%s: Seuls les types %s sont autorisés pour cette commande" | ||
646 | 99411 | |||
647 | 99412 | #. modules: sourcing, purchase_override, sync_so | ||
648 | 99413 | #: constraint:purchase.order:0 | ||
649 | 99414 | #: constraint:purchase.order:0 | ||
650 | 99415 | #: constraint:purchase.order:0 | ||
651 | 99416 | msgid "The order type of the order is not consistent with the order type of the source" | ||
652 | 99417 | msgstr "Le type de commande n'est pas compatible avec le type de la commande qui est sourcée" | ||
653 | 99418 | |||
654 | 99419 | #. module: purchase_override | ||
655 | 99420 | #: code:addons/purchase_override/purchase.py:888 | ||
656 | 99421 | #, python-format | ||
657 | 99422 | msgid "You cannot select Direct Purchase order for a lines sourced to a normal PO" | ||
658 | 99423 | msgstr "Vous ne pouvez pas sélectionner 'Bon de commande direct' pour des lignes sourcées sur un PO normal" | ||
659 | 99424 | |||
660 | 99425 | #. module: sourcing | ||
661 | 99426 | #: code:addons/sourcing/sale_order_line.py:929 | ||
662 | 99427 | #, python-format | ||
663 | 99428 | msgid "loan" | ||
664 | 99429 | msgstr "prêt" | ||
665 | 99430 | |||
666 | 99431 | #. module: sourcing | ||
667 | 99432 | #: code:addons/sourcing/sale_order_line.py:929 | ||
668 | 99433 | #, python-format | ||
669 | 99434 | msgid "donation" | ||
670 | 99435 | msgstr "don" | ||
671 | 99436 | |||
672 | 99437 | #. module: sourcing | ||
673 | 99438 | #: code:addons/sourcing/sale_order_line.py:1004 | ||
674 | 99439 | #, python-format | ||
675 | 99440 | msgid "You can only source a Donation line from stock." | ||
676 | 99441 | msgstr "Vous pouvez sourcé une ligne de don uniquement sur stock" | ||
677 | 99442 | |||
678 | 99443 | #. module: sourcing | ||
679 | 99444 | #: code:addons/sourcing/sale_order_line.py:1278 | ||
680 | 99445 | #, python-format | ||
681 | 99446 | msgid "You can't source a donation 'on order'." | ||
682 | 99447 | msgstr "Vous ne pouvez pas sourcer un don 'sur commande'." | ||
683 | 99448 | |||
684 | 99449 | #. module: base | ||
685 | 99450 | #: field:ir.model,default_order:0 | ||
686 | 99451 | #, python-format | ||
687 | 99452 | msgid "Default Order" | ||
688 | 99453 | msgstr "Ordre par défaut" | ||
689 | 99454 | |||
690 | 99455 | #. module: mission_stock | ||
691 | 99456 | #: view:mission.stock.wizard:0 | ||
692 | 99457 | msgid "Errors" | ||
693 | 99458 | msgstr "Erreurs" | ||
694 | 99459 | |||
695 | 99460 | #. module: mission_stock | ||
696 | 99461 | #: field:stock.mission.report,export_state:0 | ||
697 | 99462 | msgid "Export state" | ||
698 | 99463 | msgstr "Statut du rapport" | ||
699 | 99464 | |||
700 | 99465 | #. module: mission_stock | ||
701 | 99466 | #: selection:stock.mission.report,export_state:0 | ||
702 | 99467 | msgid "Draft" | ||
703 | 99468 | msgstr "Brouillon" | ||
704 | 99469 | |||
705 | 99470 | #. module: mission_stock | ||
706 | 99471 | #: selection:stock.mission.report,export_state:0 | ||
707 | 99472 | msgid "Error" | ||
708 | 99473 | msgstr "Erreur" | ||
709 | 99474 | |||
710 | 99475 | #. module: mission_stock | ||
711 | 99476 | #: field:mission.stock.wizard,export_error_msg:0 | ||
712 | 99477 | #: field:stock.mission.report,export_error_msg:0 | ||
713 | 99478 | msgid "Error message" | ||
714 | 99479 | msgstr "Message d'erreur" | ||
715 | 99480 | |||
716 | 99481 | #. modules: finance, msf_profile | ||
717 | 99482 | #: model:ir.actions.act_window,name:finance.account_board_commitment_voucher | ||
718 | 99483 | #: view:board.board:0 | ||
719 | 99484 | msgid "Commitment Vouchers to validate" | ||
720 | 99485 | msgstr "Bons d'Engagement à valider" | ||
721 | 99486 | |||
722 | 99487 | #. module: account_reconciliation | ||
723 | 99488 | #: field:account.move.reconcile,nb_partial_legs:0 | ||
724 | 99489 | msgid "Nb legs in partial reconcile" | ||
725 | 99490 | msgstr "Nb d'entrées du lettrage partiel" | ||
726 | 99491 | |||
727 | 99492 | #. module: product_attributes | ||
728 | 99493 | #: selection:product.product,state_ud:0 | ||
729 | 99494 | msgid "Forbidden" | ||
730 | 99495 | msgstr "Interdit" | ||
731 | 99496 | |||
732 | 99497 | #. module: msf_doc_import | ||
733 | 99498 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:106 | ||
734 | 99499 | #, python-format | ||
735 | 99500 | msgid "No data found in the spreadhseet." | ||
736 | 99501 | msgstr "Aucune donnée trouvée dans le tableur." | ||
737 | 99502 | |||
738 | 99503 | #. module: msf_doc_import | ||
739 | 99504 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:143 | ||
740 | 99505 | #, python-format | ||
741 | 99506 | msgid "Line %s. %s was not set. This field is mandatory." | ||
742 | 99507 | msgstr "Ligne %s. %s n'est pas défini. Ce champ est requis." | ||
743 | 99508 | |||
744 | 99509 | #. module: msf_doc_import | ||
745 | 99510 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:156 | ||
746 | 99511 | #, python-format | ||
747 | 99512 | msgid "Line %s. Account %s not found!" | ||
748 | 99513 | msgstr "Ligne %s. Compte %s non trouvé !" | ||
749 | 99514 | |||
750 | 99515 | #. module: msf_doc_import | ||
751 | 99516 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:162 | ||
752 | 99517 | #, python-format | ||
753 | 99518 | msgid "Line %s. Account %s is 'Donations' type which is forbidden." | ||
754 | 99519 | msgstr "Ligne %s. Le compte %s est de type 'Donations' ce qui est interdit." | ||
755 | 99520 | |||
756 | 99521 | #. module: msf_doc_import | ||
757 | 99522 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:174 | ||
758 | 99523 | #, python-format | ||
759 | 99524 | msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n" | ||
760 | 99525 | "- the account cannot be of type 'View' or 'Liquidity'\n" | ||
761 | 99526 | "- account can not be corrected on HQ entries\n" | ||
762 | 99527 | "- 'Type for specific treatment' cannot be 'Donations'\n" | ||
763 | 99528 | "- 'Internal Type' should be different from 'Regular' OR 'Account Type' should be different from 'Stock'\n" | ||
764 | 99529 | "- 'Account Type' should be different from 'Expense' OR 'P&L / BS Category' not None." | ||
765 | 99530 | msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n" | ||
766 | 99531 | "- le compte ne peut pas être de type 'Vue' ou 'Liquidités'\n" | ||
767 | 99532 | "- compte impossible à corriger dans les entrées HQ\n" | ||
768 | 99533 | "- 'Type pour traitement spécifique' ne peut pas être 'Donations'\n" | ||
769 | 99534 | "- 'Type Interne' doit être différent de 'Normal' OU 'Type de Compte' doit être différent de 'Stock'\n" | ||
770 | 99535 | "- 'Type de Compte' doit être différent de 'Expense' OU 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide." | ||
771 | 99536 | |||
772 | 99537 | #. module: msf_doc_import | ||
773 | 99538 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:168 | ||
774 | 99539 | #, python-format | ||
775 | 99540 | msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n" | ||
776 | 99541 | "- the account cannot be of type 'View'\n" | ||
777 | 99542 | "- account can not be corrected on HQ entries\n" | ||
778 | 99543 | "- 'Account Type' should be in ('expense', 'income', 'receivables')\n" | ||
779 | 99544 | "- 'P&L / BS Category' cannot be None." | ||
780 | 99545 | msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n" | ||
781 | 99546 | "- le compte ne peut pas être de type 'Vue'\n" | ||
782 | 99547 | "- compte impossible à corriger dans les entrées HQ\n" | ||
783 | 99548 | "- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'\n" | ||
784 | 99549 | "- 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide." | ||
785 | 99550 | |||
786 | 99551 | #. module: msf_doc_import | ||
787 | 99552 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:184 | ||
788 | 99553 | #, python-format | ||
789 | 99554 | msgid "\n" | ||
790 | 99555 | "- 'Account Type' should be in ('expense', 'income', 'receivables')." | ||
791 | 99556 | msgstr "\n" | ||
792 | 99557 | "- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'." | ||
793 | 99558 | |||
794 | 99559 | #. module: msf_doc_import | ||
795 | 99560 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:275 | ||
796 | 99561 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:280 | ||
797 | 99562 | #: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:370 | ||
798 | 99563 | #: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:378 | ||
799 | 99564 | #, python-format | ||
800 | 99565 | msgid "Line %s in the Excel file, uncaught error: %s\n" | ||
801 | 99566 | "" | ||
802 | 99567 | msgstr "Ligne %s du fichier Excel, erreur non détectée: %s\n" | ||
803 | 99568 | "" | ||
804 | 99569 | |||
805 | 99570 | #. module: msf_doc_import | ||
806 | 99571 | #: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:354 | ||
807 | 99572 | #, python-format | ||
808 | 99573 | msgid "You can refresh the screen if you need to follow the upload progress by clicking on 'Update'." | ||
809 | 99574 | msgstr "Vous pouvez rafraichir l'écran si vous avez besoin de suivre la progresion du téléchargement en cliquant sur le bouton 'Mettre à jour'." | ||
810 | 99575 | |||
811 | 99576 | #. module: msf_doc_import | ||
812 | 99577 | #: model:ir.model,name:msf_doc_import.model_wizard_import_invoice_line | ||
813 | 99578 | msgid "Import Invoice Lines from Excel sheet" | ||
814 | 99579 | msgstr "Importer des lignes depuis un fichier Excel" | ||
815 | 99580 | |||
816 | 99581 | #. module: finance | ||
817 | 99582 | #: code:addons/finance/invoice.py:57 | ||
818 | 99583 | #, python-format | ||
819 | 99584 | msgid "%s_template.xls" | ||
820 | 99585 | msgstr "modèle_%s.xls" | ||
821 | 99586 | |||
822 | 99587 | #. module: stock_override | ||
823 | 99588 | #: field:stock.location,filter_partner_id2:0 | ||
824 | 99589 | msgid "Filter location by partner" | ||
825 | 99590 | msgstr "Filtrer l'emplacement de stock par partenaire" | ||
826 | 99591 | |||
827 | 99592 | #. module: register_accounting | ||
828 | 99593 | #: code:addons/register_accounting/wizard/import_cheque_on_bank_registers.py:166 | ||
829 | 99594 | #, python-format | ||
830 | 99595 | msgid "Please add a Document Date on imported lines." | ||
831 | 99596 | msgstr "Veuillez saisir la date du document sur les lignes importées." | ||
832 | 99597 | |||
833 | 99598 | #. module: product_list | ||
834 | 99599 | #: code:addons/product_list/product_list.py:306 | ||
835 | 99600 | #: code:addons/product_list/product_list.py:316 | ||
836 | 99601 | #, python-format | ||
837 | 99602 | msgid "This product cannot be added as it already exists in this list." | ||
838 | 99603 | msgstr "Ce produit ne peut pas être ajouter car il est déjà présent dans la liste" | ||
839 | 99604 | |||
840 | 99605 | #. module: product_list | ||
841 | 99606 | #: code:addons/product_list/wizard/add_products.py:103 | ||
842 | 99607 | #, python-format | ||
843 | 99608 | msgid "product(s) %s already exist(s) in the product list and so cannot be added" | ||
844 | 99609 | msgstr "Les produits %s ne peuvent pas être ajouter car ils sont déjà présent dans la liste de produits" | ||
845 | 99610 | |||
846 | 99611 | #. module: account_mcdb | ||
847 | 99612 | #: field:account.mcdb,top_prop_instance_ids:0 | ||
848 | 99613 | msgid "Top Proprietary instances" | ||
849 | 99614 | msgstr "Instances propriétaires parentes" | ||
850 | 99615 | |||
851 | 99616 | #. module: account_mcdb | ||
852 | 99617 | #: field:account.mcdb,rev_top_prop_instance_ids:0 | ||
853 | 99618 | msgid "Exclude top prop instances selection" | ||
854 | 99619 | msgstr "Exclure la selection d'instances prop. parentes" | ||
855 | 99620 | |||
856 | 99621 | #. module: account_mcdb | ||
857 | 99622 | #: field:account.mcdb,display_top_prop_instance:0 | ||
858 | 99623 | msgid "Display Top prop instances?" | ||
859 | 99624 | msgstr "Afficher les instances propriétaires parentes" | ||
860 | 99625 | |||
861 | 99626 | #. module: account_mcdb | ||
862 | 99627 | #: code:addons/account_mcdb/account_mcdb.py:230 | ||
863 | 99628 | #, python-format | ||
864 | 99629 | msgid "You cannot select 'Instances' because 'Top prop Instances' is already selected." | ||
865 | 99630 | msgstr "Vous ne pouvez pas selectionner 'Instances' car 'Instance prop. parente' est déjà selectionné." | ||
866 | 99631 | |||
867 | 99632 | #. module: account_mcdb | ||
868 | 99633 | #: view:account.mcdb:0 | ||
869 | 99634 | msgid "Top prop Instances" | ||
870 | 99635 | msgstr "Instance prop. parente" | ||
871 | 99636 | |||
872 | 99637 | #. module: account_mcdb | ||
873 | 99638 | #: code:addons/account_mcdb/account_mcdb.py:244 | ||
874 | 99639 | #, python-format | ||
875 | 99640 | msgid "You cannot select 'Top prop Instances' because 'Instances' is already selected." | ||
876 | 99641 | msgstr "Vous ne pouvez pas selectionner 'Instance prop. parente' car 'Instances' est déjà selectionné." | ||
877 | 99642 | |||
878 | 99643 | #. module: account_mcdb | ||
879 | 99644 | #: field:account.mcdb,rev_instance_ids:0 | ||
880 | 99645 | msgid "Exclude instances selection" | ||
881 | 99646 | msgstr "Exclure la sélection d'instance" | ||
882 | 99647 | |||
883 | 99648 | #. module: account_mcdb | ||
884 | 99649 | #: view:account.mcdb:0 | ||
885 | 99650 | msgid "Remove all Instances" | ||
886 | 99651 | msgstr "Supprimer toutes les instances" | ||
887 | 99652 | |||
888 | 99653 | #. module: account_mcdb | ||
889 | 99654 | #: view:account.mcdb:0 | ||
890 | 99655 | msgid "Add all Instances" | ||
891 | 99656 | msgstr "Ajouter toutes les instances" | ||
892 | 99657 | |||
893 | 99658 | #. module: account_mcdb | ||
894 | 99659 | #: view:account.mcdb:0 | ||
895 | 99660 | msgid "Remove Prop Instances" | ||
896 | 99661 | msgstr "Supprimer toutes les instances propriétaires" | ||
897 | 99662 | |||
898 | 99663 | #. module: account_mcdb | ||
899 | 99664 | #: view:account.mcdb:0 | ||
900 | 99665 | msgid "Add Prop Instances" | ||
901 | 99666 | msgstr "Ajouter toutes les instances propriétaires" | ||
902 | 99667 | |||
903 | 99668 | #. module: account | ||
904 | 99669 | #: report:addons/account/report/account_liquidity_balance.mako:171 | ||
905 | 99670 | msgid "Calculated balance" | ||
906 | 99671 | msgstr "Solde calculé (théorique)" | ||
907 | 99672 | |||
908 | 99673 | #. module: account | ||
909 | 99674 | #: code:addons/account/wizard/account_report_liquidity_balance.py:65 | ||
910 | 99675 | #: model:ir.actions.act_window,name:account.action_liquidity_balance_report | ||
911 | 99676 | #: model:ir.ui.menu,name:account.menu_liquidity_balance_report | ||
912 | 99677 | #: report:addons/account/report/account_liquidity_balance.mako:142 | ||
913 | 99678 | #, python-format | ||
914 | 99679 | msgid "Liquidity Balances" | ||
915 | 99680 | msgstr "Balances de trésorie" | ||
916 | 99681 | |||
917 | 99682 | #. module: account | ||
918 | 99683 | #: code:addons/account/wizard/account_report_common_partner.py:89 | ||
919 | 99684 | #, python-format | ||
920 | 99685 | msgid "Only dates of the selected Fiscal Year can be chosen." | ||
921 | 99686 | msgstr "Seules des dates de l'exercice comptable sélectionné peuvent être choisies." | ||
922 | 99687 | |||
923 | 99688 | #. module: mission_stock | ||
924 | 99689 | #: field:mission.stock.wizard,processed_state:0 | ||
925 | 99690 | msgid "Processing" | ||
926 | 99691 | msgstr "En traitement..." | ||
927 | 99692 | |||
928 | 99693 | #. module: mission_stock | ||
929 | 99694 | #: view:mission.stock.wizard:0 | ||
930 | 99695 | msgid "Updating..." | ||
931 | 99696 | msgstr "Mise à jour ..." | ||
932 | 99697 | |||
933 | 99698 | #. module: mission_stock | ||
934 | 99699 | #: field:mission.stock.wizard,processed_start_date:0 | ||
935 | 99700 | msgid "since" | ||
936 | 99701 | msgstr "depuis" | ||
937 | 99702 | |||
938 | 99703 | #. module: stock_override | ||
939 | 99704 | #: code:addons/stock_override/stock.py:389 | ||
940 | 99705 | #, python-format | ||
941 | 99706 | msgid "The source location of lines has been changed to the same as header value" | ||
942 | 99707 | msgstr "La zone source des lignes a été changé avec la valeur présente en en-tête" | ||
943 | 99708 | |||
944 | 99709 | #. module: stock_override | ||
945 | 99710 | #: code:addons/stock_override/stock.py:393 | ||
946 | 99711 | #, python-format | ||
947 | 99712 | msgid "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!" | ||
948 | 99713 | msgstr "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!" | ||
949 | 99714 | |||
950 | 99715 | #. module: account_override | ||
951 | 99716 | #: code:addons/account_override/account.py:524 | ||
952 | 99717 | #, python-format | ||
953 | 99718 | msgid "An account can't be both reconcilable and included in the yearly move to 0." | ||
954 | 99719 | msgstr "Un compte ne peut pas être à la fois lettrable et inclus dans la mise à zéro annuelle." | ||
955 | 99720 | |||
956 | 99721 | #. module: account_period_closing_level | ||
957 | 99722 | #: code:addons/account_period_closing_level/account_year_end_closing.py:423 | ||
958 | 99723 | #, python-format | ||
959 | 99724 | msgid "The yearly closure can't be processed due to one or several reconciled entries that are included in the move to 0." | ||
960 | 99725 | msgstr "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." | ||
961 | 99726 | |||
962 | 99727 | #. module: account_reconciliation | ||
963 | 99728 | #: code:addons/account_reconciliation/account_move_line.py:269 | ||
964 | 99729 | #, python-format | ||
965 | 99730 | msgid "The entries included in the yearly move to zero can't be reconciled together because they are unbalanced." | ||
966 | 99731 | msgstr "Les écritures incluses dans la mise à zéro annuelle ne peuvent pas être lettrées ensemble car elles ne sont pas équilibrées." | ||
967 | 99732 | |||
968 | 99733 | #. modules: account_override, account_mcdb, account | ||
969 | 99734 | #: field:account.move.line,open_items:0 | ||
970 | 99735 | #: field:account.mcdb,open_items:0 | ||
971 | 99736 | #: field:account.report.general.ledger,open_items:0 | ||
972 | 99737 | msgid "Open Items at" | ||
973 | 99738 | msgstr "Écritures ouvertes à " | ||
974 | 99739 | |||
975 | 99740 | #. module: account | ||
976 | 99741 | #: model:ir.actions.server,name:account.action_aml_related_entries | ||
977 | 99742 | msgid "Related Entries" | ||
978 | 99743 | msgstr "Ecritures associées" | ||
979 | 99744 | |||
980 | 99745 | #. module: account | ||
981 | 99746 | #: code:addons/account/account_move_line.py:1369 | ||
982 | 99747 | #, python-format | ||
983 | 99748 | msgid "Related entries: Entry Sequence %s" | ||
984 | 99749 | msgstr "Ecritures associées : Entrée Comptable %s" | ||
985 | 99750 | |||
986 | 99751 | #. module: account | ||
987 | 99752 | #: code:addons/account/account_move_line.py:1330 | ||
988 | 99753 | #, python-format | ||
989 | 99754 | msgid "The related entries feature can only be used with one Journal Item." | ||
990 | 99755 | msgstr "La fonctionnalité des écritures associées ne peut être utilisée qu'avec une seule ligne d'écriture comptable." | ||
991 | 99756 | |||
992 | 99757 | #. module: account_period_closing_level | ||
993 | 99758 | #: code:addons/account_period_closing_level/account_period.py:217 | ||
994 | 99759 | #, python-format | ||
995 | 99760 | msgid "One or several registers have not been generated for the period to close and have a balance which isn't equal to 0:\n" | ||
996 | 99761 | "%s" | ||
997 | 99762 | msgstr "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" | ||
998 | 99763 | "%s" | ||
999 | 99764 | |||
1000 | 99765 | #. module: res_currency_tables | ||
1001 | 99766 | #: code:addons/res_currency_tables/res_currency.py:0 | ||
1002 | 99767 | #, python-format | ||
1003 | 99768 | msgid "delete" | ||
1004 | 99769 | msgstr "supprimer" | ||
1005 | 99770 | |||
1006 | 99771 | #. module: res_currency_tables | ||
1007 | 99772 | #: code:addons/res_currency_tables/res_currency.py:0 | ||
1008 | 99773 | #, python-format | ||
1009 | 99774 | msgid "de-activate" | ||
1010 | 99775 | msgstr "désactiver" | ||
1011 | 99776 | |||
1012 | 99777 | #. module: res_currency_tables | ||
1013 | 99778 | #: code:addons/res_currency_tables/res_currency.py:225 | ||
1014 | 99779 | #, python-format | ||
1015 | 99780 | msgid "The currency you want to %s is used in at least one active partner form." | ||
1016 | 99781 | msgstr "La devise que vous désirez %s est utilisée dans au moins un formulaire d'un partenaire actif." | ||
1017 | 99782 | |||
1018 | 99783 | #. module: res_currency_tables | ||
1019 | 99784 | #: code:addons/res_currency_tables/res_currency.py:216 | ||
1020 | 99785 | #, python-format | ||
1021 | 99786 | msgid "The currency you want to %s is used in at least one Field Order which isn't Closed." | ||
1022 | 99787 | msgstr "La devise que vous désirez %s est utilisée dans au moins une Commande de Terrain qui n'est pas Clôturée." | ||
1023 | 99788 | |||
1024 | 99789 | #. module: res_currency_tables | ||
1025 | 99790 | #: code:addons/res_currency_tables/res_currency.py:216 | ||
1026 | 99791 | #, python-format | ||
1027 | 99792 | msgid "The currency you want to %s is used in at least one Purchase Order which isn't Closed." | ||
1028 | 99793 | msgstr "La devise que vous désirez %s est utilisée dans au moins un Bon de Commande qui n'est pas Clôturé." | ||
1029 | 99794 | |||
1030 | 99795 | #. module: res_currency_tables | ||
1031 | 99796 | #: code:addons/res_currency_tables/res_currency.py:230 | ||
1032 | 99797 | #, python-format | ||
1033 | 99798 | msgid "The currency you want to %s is used in at least one document in Draft or Open state." | ||
1034 | 99799 | msgstr "La devise que vous désirez %s est utilisée dans au moins un document à l'état Brouillon ou Ouvert." | ||
1035 | 99800 | |||
1036 | 99801 | #. module: res_currency_tables | ||
1037 | 99802 | #: code:addons/res_currency_tables/res_currency.py:256 | ||
1038 | 99803 | #, python-format | ||
1039 | 99804 | msgid "The currency you want to %s is used in at least one Register in Draft or Open state." | ||
1040 | 99805 | msgstr "La devise que vous désirez %s est utilisée dans au moins un Registre à l'état Brouillon ou Ouvert." | ||
1041 | 99806 | |||
1042 | 99807 | #. module: res_currency_tables | ||
1043 | 99808 | #: code:addons/res_currency_tables/res_currency.py:236 | ||
1044 | 99809 | #, python-format | ||
1045 | 99810 | msgid "The currency you want to %s is used in at least one Journal Item in Unposted state." | ||
1046 | 99811 | msgstr "La devise que vous désirez %s est utilisée dans au moins une Ligne d'écriture comptable non comptabilisée." | ||
1047 | 99812 | |||
1048 | 99813 | #. module: res_currency_tables | ||
1049 | 99814 | #: code:addons/res_currency_tables/res_currency.py:263 | ||
1050 | 99815 | #, python-format | ||
1051 | 99816 | msgid "The currency you want to %s is used in at least one Recurring Entry having a state not Done." | ||
1052 | 99817 | msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture Périodique avec un statut non Terminé." | ||
1053 | 99818 | |||
1054 | 99819 | #. module: res_currency_tables | ||
1055 | 99820 | #: code:addons/res_currency_tables/res_currency.py:240 | ||
1056 | 99821 | #, python-format | ||
1057 | 99822 | msgid "The currency you want to %s is used in at least one Commitment Voucher which isn't Done." | ||
1058 | 99823 | msgstr "La devise que vous désirez %s est utilisée dans un moins un Bon d'Engagement non Terminé." | ||
1059 | 99824 | |||
1060 | 99825 | #. module: res_currency_tables | ||
1061 | 99826 | #: code:addons/res_currency_tables/res_currency.py:244 | ||
1062 | 99827 | #, python-format | ||
1063 | 99828 | msgid "The currency you want to %s is used in at least one HQ Entry which isn't validated." | ||
1064 | 99829 | msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture HQ non validée." | ||
1065 | 99830 | |||
1066 | 99831 | #. module: res_currency_tables | ||
1067 | 99832 | #: code:addons/res_currency_tables/res_currency.py:272 | ||
1068 | 99833 | #, python-format | ||
1069 | 99834 | msgid "The currency you want to %s is used in at least one Draft or Partially Posted Accrual Line." | ||
1070 | 99835 | msgstr "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." | ||
1071 | 99836 | |||
1072 | 99837 | #. module: res_currency_tables | ||
1073 | 99838 | #: code:addons/res_currency_tables/res_currency.py:249 | ||
1074 | 99839 | #, python-format | ||
1075 | 99840 | msgid "The currency you want to %s is used in at least one Payroll Entry which isn't validated." | ||
1076 | 99841 | msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture de Paie non validée." | ||
1077 | 99842 | |||
1078 | 99843 | #. module: account_override | ||
1079 | 99844 | #: report:addons/account_override/report/open_invoices_xls.mako:315 | ||
1080 | 99845 | msgid "Payment Sequence Number" | ||
1081 | 99846 | msgstr "Numéro de séquence du paiement" | ||
1082 | 99847 | |||
1083 | 99848 | #. module: account_override | ||
1084 | 99849 | #: report:addons/account_override/report/open_invoices_xls.mako:316 | ||
1085 | 99850 | msgid "Down Payment Sequence Number" | ||
1086 | 99851 | msgstr "Numéro de séquence de l'acompte" | ||
1087 | 99852 | |||
1088 | 99853 | #. module: account_override | ||
1089 | 99854 | #: model:ir.actions.act_window,name:account_override.action_paid_invoices_menu | ||
1090 | 99855 | #: model:ir.actions.report.xml,name:account_override.paid_invoices | ||
1091 | 99856 | #: report:addons/account_override/report/open_invoices_xls.mako:238 | ||
1092 | 99857 | msgid "Paid Invoices" | ||
1093 | 99858 | msgstr "Factures Payées" | ||
1094 | 99859 | |||
1095 | 99860 | #. module: account_override | ||
1096 | 99861 | #: report:addons/account_override/report/open_invoices_xls.mako:264 | ||
1097 | 99862 | msgid "PAID INVOICES" | ||
1098 | 99863 | msgstr "FACTURES PAYÉES" | ||
1099 | 99864 | |||
1100 | 99865 | #. module: account_override | ||
1101 | 99866 | #: model:ir.model,name:account_override.model_wizard_report_paid_invoice | ||
1102 | 99867 | msgid "Wizard of the Paid Invoices Report" | ||
1103 | 99868 | msgstr "Assistant du Rapport des Factures Payées" | ||
1104 | 99869 | |||
1105 | 99870 | #. module: account_override | ||
1106 | 99871 | #: field:wizard.report.paid.invoice,beginning_date:0 | ||
1107 | 99872 | msgid "Beginning date" | ||
1108 | 99873 | msgstr "Date de début" | ||
1109 | 99874 | |||
1110 | 99875 | #. module: account_override | ||
1111 | 99876 | #: field:wizard.report.paid.invoice,ending_date:0 | ||
1112 | 99877 | msgid "Ending date" | ||
1113 | 99878 | msgstr "Date de fin" | ||
1114 | 99879 | |||
1115 | 99880 | #. module: account_override | ||
1116 | 99881 | #: report:addons/account_override/report/open_invoices_xls.mako:290 | ||
1117 | 99882 | msgid "Beginning date:" | ||
1118 | 99883 | msgstr "Date de début :" | ||
1119 | 99884 | |||
1120 | 99885 | #. module: account_override | ||
1121 | 99886 | #: report:addons/account_override/report/open_invoices_xls.mako:296 | ||
1122 | 99887 | msgid "Ending date:" | ||
1123 | 99888 | msgstr "Date de fin :" | ||
1124 | 99889 | |||
1125 | 99890 | #. module: account_override | ||
1126 | 99891 | #: report:addons/account_override/report/open_invoices_xls.mako:306 | ||
1127 | 99892 | msgid "Intermission Vouchers IN" | ||
1128 | 99893 | msgstr "Bons Intermission IN" | ||
1129 | 99894 | |||
1130 | 99895 | #. module: account_override | ||
1131 | 99896 | #: report:addons/account_override/report/open_invoices_xls.mako:307 | ||
1132 | 99897 | msgid "Intermission Vouchers OUT" | ||
1133 | 99898 | msgstr "Bons Intermission OUT" | ||
1134 | 99899 | |||
1135 | 99900 | #. module: account_override | ||
1136 | 99901 | #: report:addons/account_override/report/open_invoices_xls.mako:305 | ||
1137 | 99902 | msgid "Donations" | ||
1138 | 99903 | msgstr "Donations" | ||
1139 | 99904 | |||
1140 | 99905 | #. module: account_override | ||
1141 | 99906 | #: report:addons/account_override/report/open_invoices_xls.mako:307 | ||
1142 | 99907 | msgid "Debit Notes" | ||
1143 | 99908 | msgstr "Notes de débit" | ||
1144 | 99909 | |||
1145 | 99910 | #. module: msf_homere_interface | ||
1146 | 99911 | #: code:addons/msf_homere_interface/wizard/hr_payroll_import.py:188 | ||
1147 | 99912 | #, python-format | ||
1148 | 99913 | msgid "This account is a Donation account: %s" | ||
1149 | 99914 | msgstr "Ce compte est un compte de Donation : %s" | ||
1150 | 99915 | |||
1151 | 99916 | #. module: account_override | ||
1152 | 99917 | #: code:addons/account_override/account.py:597 | ||
1153 | 99918 | #, python-format | ||
1154 | 99919 | msgid "Please check the Type for specific treatment of the accounts used." | ||
1155 | 99920 | msgstr "Veuillez vérifier le Type pour traitement spécifique des comptes utilisés." | ||
1156 | 99921 | |||
1157 | 99922 | #. module: msf_homere_interface | ||
1158 | 99923 | #: field:hr.payroll.msf,has_third_party:0 | ||
1159 | 99924 | msgid "Has a Third Party" | ||
1160 | 99925 | msgstr "A un Tiers" | ||
1161 | 99926 | |||
1162 | 99927 | #. module: msf_homere_interface | ||
1163 | 99928 | #: view:hr.payroll.msf:0 | ||
1164 | 99929 | msgid "Empty Third Party" | ||
1165 | 99930 | msgstr "Pas de Tiers" | ||
1166 | 99931 | |||
1167 | 99932 | #. module: msf_homere_interface | ||
1168 | 99933 | #: model:ir.actions.server,name:msf_homere_interface.action_move_to_payroll_bs_lines | ||
1169 | 99934 | msgid "Validate Payroll Expenses and move to Payroll B/S lines" | ||
1170 | 99935 | msgstr "Valider les Lignes de dépenses et aller aux Lignes du bilan" | ||
1171 | 99936 | |||
1172 | 99937 | #. module: msf_homere_interface | ||
1173 | 99938 | #: code:addons/msf_homere_interface/hr_payroll.py:367 | ||
1174 | 99939 | #, python-format | ||
1175 | 99940 | msgid "Payroll B/S lines" | ||
1176 | 99941 | msgstr "Lignes de paye du bilan" | ||
1177 | 99942 | |||
1178 | 99943 | #. module: msf_homere_interface | ||
1179 | 99944 | #: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:324 | ||
1180 | 99945 | #, python-format | ||
1181 | 99946 | msgid "An error occurred%s" | ||
1182 | 99947 | msgstr "Une erreur est survenue%s" | ||
1183 | 99948 | |||
1184 | 99949 | #. module: msf_homere_interface | ||
1185 | 99950 | #: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:161 | ||
1186 | 99951 | #, python-format | ||
1187 | 99952 | msgid "Checking account/partner compatibility..." | ||
1188 | 99953 | msgstr "Vérification de la compatibilité compte/partenaire..." | ||
1189 | 99954 | |||
1190 | 99955 | #. module: msf_homere_interface | ||
1191 | 99956 | #: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:303 | ||
1192 | 99957 | #, python-format | ||
1193 | 99958 | msgid "Posting of the Journal Entry. This may take a while..." | ||
1194 | 99959 | msgstr "Comptabilisation de l'Ecriture Comptable. Cela peut prendre un certain temps..." | ||
1195 | 99960 | |||
1196 | 99961 | #. module: msf_homere_interface | ||
1197 | 99962 | #: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:308 | ||
1198 | 99963 | #, python-format | ||
1199 | 99964 | msgid "Updating the status of the Journal Items..." | ||
1200 | 99965 | msgstr "Mise à jour du statut des Lignes d'Ecritures Comptables..." | ||
1201 | 99966 | |||
1202 | 99967 | #. module: msf_homere_interface | ||
1203 | 99968 | #: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:213 | ||
1204 | 99969 | #, python-format | ||
1205 | 99970 | msgid "Creation of the Journal Items..." | ||
1206 | 99971 | msgstr "Création des Lignes d'Ecritures Comptables..." | ||
1207 | 99972 | |||
1208 | 99973 | #. module: msf_currency_revaluation | ||
1209 | 99974 | #: code:addons/msf_currency_revaluation/wizard/wizard_currency_revaluation.py:723 | ||
1210 | 99975 | #, python-format | ||
1211 | 99976 | msgid "The following projects are not field-closed:\n" | ||
1212 | 99977 | "%s" | ||
1213 | 99978 | msgstr "Les projets suivants ne sont pas fermés sur le terrain :\n" | ||
1214 | 99979 | "%s" | ||
1215 | 99980 | |||
1216 | 99981 | #. module: register_accounting | ||
1217 | 99982 | #: code:addons/register_accounting/account_bank_statement.py:120 | ||
1218 | 99983 | #, python-format | ||
1219 | 99984 | msgid "Writing on liquidity journals %s is not allowed" | ||
1220 | 99985 | msgstr "Vous ne pouvez pas modifier le journal de liquidité %s" | ||
1221 | 99986 | |||
1222 | 99987 | #. module: sync_client | ||
1223 | 99988 | #: field:sync.version.instance.monitor,instance_state:0 | ||
1224 | 99989 | msgid "Instance State" | ||
1225 | 99990 | msgstr "État de l'instance" | ||
1226 | 99991 | >>>>>>> MERGE-SOURCE | ||
1227 | 99364 | 99992 | ||
1228 | === modified file 'bin/addons/msf_profile/msf_profile.py' | |||
1229 | --- bin/addons/msf_profile/msf_profile.py 2017-08-25 15:40:47 +0000 | |||
1230 | +++ bin/addons/msf_profile/msf_profile.py 2017-09-01 09:49:29 +0000 | |||
1231 | @@ -47,6 +47,7 @@ | |||
1232 | 47 | 'model': lambda *a: 'patch.scripts', | 47 | 'model': lambda *a: 'patch.scripts', |
1233 | 48 | } | 48 | } |
1234 | 49 | 49 | ||
1235 | 50 | <<<<<<< TREE | ||
1236 | 50 | def us_2647(self, cr, uid, *a, **b): | 51 | def us_2647(self, cr, uid, *a, **b): |
1237 | 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 ( |
1238 | 52 | select l.id from stock_inventory_line l | 53 | select l.id from stock_inventory_line l |
1239 | @@ -220,6 +221,171 @@ | |||
1240 | 220 | else: | 221 | else: |
1241 | 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.') |
1242 | 222 | 223 | ||
1243 | 224 | ======= | ||
1244 | 225 | def us_2444_touch_liquidity_journals(self, cr, uid, *a, **b): | ||
1245 | 226 | if _get_instance_level(self, cr, uid) == 'project': | ||
1246 | 227 | cr.execute(''' | ||
1247 | 228 | update ir_model_data set last_modification=NOW(), touched='[''type'']' | ||
1248 | 229 | where module='sd' and model='account.journal' and res_id in ( | ||
1249 | 230 | select id from account_journal where type in ('bank', 'cash', 'cheque') and is_current_instance='t' | ||
1250 | 231 | ) | ||
1251 | 232 | ''') | ||
1252 | 233 | |||
1253 | 234 | def us_3098_patch(self, cr, uid, *a, **b): | ||
1254 | 235 | cr.execute(""" | ||
1255 | 236 | SELECT id, name | ||
1256 | 237 | FROM res_partner | ||
1257 | 238 | WHERE name IN (select name from res_partner where partner_type = 'internal') | ||
1258 | 239 | AND name IN (select name from res_partner where partner_type = 'intermission') | ||
1259 | 240 | AND partner_type = 'intermission'; | ||
1260 | 241 | """) | ||
1261 | 242 | wrong_partners = cr.fetchall() | ||
1262 | 243 | |||
1263 | 244 | updated_doc = [] | ||
1264 | 245 | for partner in wrong_partners: | ||
1265 | 246 | intermission_partner_id = partner[0] | ||
1266 | 247 | partner_name = partner[1] | ||
1267 | 248 | internal_partner_id = self.pool.get('res.partner').search(cr, uid, [ | ||
1268 | 249 | ('name', '=', partner_name), | ||
1269 | 250 | ('partner_type', '=', 'internal'), | ||
1270 | 251 | ])[0] | ||
1271 | 252 | address_id = self.pool.get('res.partner.address').search(cr, uid, [ | ||
1272 | 253 | ('partner_id', '=', internal_partner_id), | ||
1273 | 254 | ('type', '=', 'default'), | ||
1274 | 255 | ]) | ||
1275 | 256 | if not address_id: | ||
1276 | 257 | address_id = self.pool.get('res.partner.address').search(cr, uid, [ | ||
1277 | 258 | ('partner_id', '=', internal_partner_id), | ||
1278 | 259 | ]) | ||
1279 | 260 | |||
1280 | 261 | address_id = address_id[0] | ||
1281 | 262 | |||
1282 | 263 | cr.execute("SELECT name FROM stock_picking WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) | ||
1283 | 264 | updated_doc += [x[0] for x in cr.fetchall()] | ||
1284 | 265 | cr.execute(""" | ||
1285 | 266 | UPDATE stock_picking | ||
1286 | 267 | SET partner_id = %s, partner_id2 = %s, address_id = %s, partner_type_stock_picking = 'internal', invoice_state = 'none' | ||
1287 | 268 | WHERE partner_id = %s | ||
1288 | 269 | AND state not in ('done', 'cancel'); | ||
1289 | 270 | """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) ) | ||
1290 | 271 | cr.execute(""" | ||
1291 | 272 | UPDATE stock_move | ||
1292 | 273 | SET partner_id = %s, partner_id2 = %s, address_id = %s | ||
1293 | 274 | WHERE (partner_id = %s OR partner_id2 = %s) AND state not in ('done', 'cancel'); | ||
1294 | 275 | """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id, intermission_partner_id) ) | ||
1295 | 276 | |||
1296 | 277 | cr.execute("SELECT name FROM purchase_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) | ||
1297 | 278 | updated_doc += [x[0] for x in cr.fetchall()] | ||
1298 | 279 | cr.execute(""" | ||
1299 | 280 | UPDATE purchase_order | ||
1300 | 281 | SET partner_id = %s, partner_address_id = %s, partner_type = 'internal' | ||
1301 | 282 | WHERE partner_id = %s | ||
1302 | 283 | AND state not in ('done', 'cancel'); | ||
1303 | 284 | """, (internal_partner_id, address_id, intermission_partner_id) ) | ||
1304 | 285 | cr.execute(""" | ||
1305 | 286 | UPDATE purchase_order_line pol | ||
1306 | 287 | SET partner_id = %s | ||
1307 | 288 | FROM purchase_order po | ||
1308 | 289 | WHERE pol.order_id = po.id | ||
1309 | 290 | AND pol.partner_id = %s | ||
1310 | 291 | AND po.state not in ('done', 'cancel'); | ||
1311 | 292 | """, (internal_partner_id, intermission_partner_id) ) | ||
1312 | 293 | |||
1313 | 294 | cr.execute("SELECT name FROM sale_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) | ||
1314 | 295 | updated_doc += [x[0] for x in cr.fetchall()] | ||
1315 | 296 | cr.execute(""" | ||
1316 | 297 | UPDATE sale_order | ||
1317 | 298 | SET partner_id = %s, partner_invoice_id = %s, partner_order_id = %s, partner_shipping_id = %s, partner_type = 'internal' | ||
1318 | 299 | WHERE partner_id = %s | ||
1319 | 300 | AND state not in ('done', 'cancel'); | ||
1320 | 301 | """, (internal_partner_id, address_id, address_id, address_id, intermission_partner_id) ) | ||
1321 | 302 | cr.execute(""" | ||
1322 | 303 | UPDATE sale_order_line sol | ||
1323 | 304 | SET order_partner_id = %s | ||
1324 | 305 | FROM sale_order so | ||
1325 | 306 | WHERE sol.order_id = so.id | ||
1326 | 307 | AND sol.order_partner_id = %s | ||
1327 | 308 | AND so.state not in ('done', 'cancel'); | ||
1328 | 309 | """, (internal_partner_id, intermission_partner_id) ) | ||
1329 | 310 | |||
1330 | 311 | cr.execute("SELECT name FROM shipment WHERE partner_id = %s AND state not in ('done', 'cancel', 'delivered');", (intermission_partner_id,)) | ||
1331 | 312 | updated_doc += [x[0] for x in cr.fetchall()] | ||
1332 | 313 | cr.execute(""" | ||
1333 | 314 | UPDATE shipment | ||
1334 | 315 | SET partner_id = %s, partner_id2 = %s, address_id = %s | ||
1335 | 316 | WHERE partner_id = %s | ||
1336 | 317 | AND state not in ('done', 'cancel', 'delivered'); | ||
1337 | 318 | """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) ) | ||
1338 | 319 | |||
1339 | 320 | self._logger.warn("Following documents have been updated with internal partner: %s" % ", ".join(updated_doc)) | ||
1340 | 321 | |||
1341 | 322 | return True | ||
1342 | 323 | |||
1343 | 324 | def us_2257_patch(self, cr, uid, *a, **b): | ||
1344 | 325 | context = {} | ||
1345 | 326 | user_obj = self.pool.get('res.users') | ||
1346 | 327 | partner_obj = self.pool.get('res.partner') | ||
1347 | 328 | usr = user_obj.browse(cr, uid, [uid], context=context)[0] | ||
1348 | 329 | level_current = False | ||
1349 | 330 | |||
1350 | 331 | if usr and usr.company_id and usr.company_id.instance_id: | ||
1351 | 332 | level_current = usr.company_id.instance_id.level | ||
1352 | 333 | |||
1353 | 334 | if level_current == 'section': | ||
1354 | 335 | intermission_ids = partner_obj.search(cr, uid, [('active', 'in', ['t', 'f']), ('partner_type', '=', 'intermission')]) | ||
1355 | 336 | address_ids = [] | ||
1356 | 337 | if intermission_ids: | ||
1357 | 338 | address_ids = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', 'in', intermission_ids)]) | ||
1358 | 339 | self._logger.warn('touch %d partners, %d addresses' % (len(intermission_ids), len(address_ids))) | ||
1359 | 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), )) | ||
1360 | 341 | if address_ids: | ||
1361 | 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), )) | ||
1362 | 343 | |||
1363 | 344 | return True | ||
1364 | 345 | |||
1365 | 346 | def us_2730_patch(self, cr, uid, *a, **b): | ||
1366 | 347 | ''' | ||
1367 | 348 | remove all translations, and then re-import them | ||
1368 | 349 | so that the {*}_MF.po files are authoratative | ||
1369 | 350 | ''' | ||
1370 | 351 | cr.execute("""delete from ir_model_data where model='ir.translation' and res_id in ( | ||
1371 | 352 | select id from ir_translation where lang = 'fr_MF' and type != 'model' | ||
1372 | 353 | ) | ||
1373 | 354 | """) | ||
1374 | 355 | cr.execute("delete from ir_translation where lang = 'fr_MF' and type != 'model'") | ||
1375 | 356 | irmm = self.pool.get('ir.module.module') | ||
1376 | 357 | msf_profile_id = irmm.search(cr, uid, [('name', '=', 'msf_profile')]) | ||
1377 | 358 | irmm.update_translations(cr, uid, msf_profile_id) | ||
1378 | 359 | |||
1379 | 360 | def us_2632_patch(self, cr, uid, *a, **b): | ||
1380 | 361 | '''fix ir.model.data entries on sync_server instances | ||
1381 | 362 | ''' | ||
1382 | 363 | update_module = self.pool.get('sync.server.update') | ||
1383 | 364 | if update_module: | ||
1384 | 365 | cr.execute(""" | ||
1385 | 366 | UPDATE ir_model_data SET module='msf_sync_data_server' WHERE | ||
1386 | 367 | model='sync_server.message_rule' AND module=''; | ||
1387 | 368 | """) | ||
1388 | 369 | |||
1389 | 370 | def us_2806_add_ir_ui_view_constraint(self, cr, uid, *a, **b): | ||
1390 | 371 | ''' | ||
1391 | 372 | The constraint may have not been added during the update because it is | ||
1392 | 373 | needeed to update all the modules before to add this constraint. | ||
1393 | 374 | Having it in this patch script will add it at the end of the update. | ||
1394 | 375 | ''' | ||
1395 | 376 | cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_ui_view_model_type_priority\'') | ||
1396 | 377 | if not cr.fetchone(): | ||
1397 | 378 | cr.execute("""SELECT model, type, priority, count(*) | ||
1398 | 379 | FROM ir_ui_view | ||
1399 | 380 | WHERE inherit_id IS NULL | ||
1400 | 381 | GROUP BY model, type, priority | ||
1401 | 382 | HAVING count(*) > 1""") | ||
1402 | 383 | if not cr.fetchone(): | ||
1403 | 384 | cr.execute('CREATE UNIQUE INDEX ir_ui_view_model_type_priority ON ir_ui_view (priority, type, model) WHERE inherit_id IS NULL') | ||
1404 | 385 | else: | ||
1405 | 386 | self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.') | ||
1406 | 387 | |||
1407 | 388 | >>>>>>> MERGE-SOURCE | ||
1408 | 223 | def remove_not_synchronized_data(self, cr, uid, *a, **b): | 389 | def remove_not_synchronized_data(self, cr, uid, *a, **b): |
1409 | 224 | ''' | 390 | ''' |
1410 | 225 | The list of models to synchronize was wrong. It is now build | 391 | The list of models to synchronize was wrong. It is now build |
1411 | 226 | 392 | ||
1412 | === modified file 'bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv' | |||
1413 | --- bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2017-08-03 15:16:40 +0000 | |||
1414 | +++ bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2017-09-01 09:49:29 +0000 | |||
1415 | @@ -1,4 +1,5 @@ | |||
1416 | 1 | id,active,applies_to_type,arguments,domain,destination_name,type_id,remote_call,model_id,name,sequence_number,status | 1 | id,active,applies_to_type,arguments,domain,destination_name,type_id,remote_call,model_id,name,sequence_number,status |
1417 | 2 | <<<<<<< TREE | ||
1418 | 2 | msf_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 | 3 | msf_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 |
1419 | 3 | msf_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 | 4 | msf_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 |
1420 | 4 | msf_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 | 5 | msf_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 |
1421 | @@ -47,3 +48,53 @@ | |||
1422 | 47 | msf_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 | 48 | msf_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 |
1423 | 48 | msf_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 | 49 | msf_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 |
1424 | 49 | msf_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 | 50 | msf_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 |
1425 | 51 | ======= | ||
1426 | 52 | msf_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 | ||
1427 | 53 | msf_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 | ||
1428 | 54 | msf_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 | ||
1429 | 55 | msf_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 | ||
1430 | 56 | msf_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 | ||
1431 | 57 | msf_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 | ||
1432 | 58 | msf_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 | ||
1433 | 59 | msf_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 | ||
1434 | 60 | msf_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 | ||
1435 | 61 | msf_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 | ||
1436 | 62 | msf_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 | ||
1437 | 63 | msf_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 | ||
1438 | 64 | msf_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 | ||
1439 | 65 | msf_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 | ||
1440 | 66 | msf_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 | ||
1441 | 67 | msf_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 | ||
1442 | 68 | msf_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 | ||
1443 | 69 | msf_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 | ||
1444 | 70 | msf_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 | ||
1445 | 71 | msf_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 | ||
1446 | 72 | msf_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 | ||
1447 | 73 | msf_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 | ||
1448 | 74 | msf_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 | ||
1449 | 75 | msf_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 | ||
1450 | 76 | msf_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 | ||
1451 | 77 | msf_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 | ||
1452 | 78 | msf_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 | ||
1453 | 79 | msf_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 | ||
1454 | 80 | msf_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 | ||
1455 | 81 | msf_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 | ||
1456 | 82 | msf_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 | ||
1457 | 83 | msf_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 | ||
1458 | 84 | msf_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 | ||
1459 | 85 | msf_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 | ||
1460 | 86 | msf_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 | ||
1461 | 87 | msf_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 | ||
1462 | 88 | msf_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 | ||
1463 | 89 | msf_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 | ||
1464 | 90 | msf_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 | ||
1465 | 91 | msf_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 | ||
1466 | 92 | msf_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 | ||
1467 | 93 | msf_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 | ||
1468 | 94 | msf_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 | ||
1469 | 95 | msf_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 | ||
1470 | 96 | msf_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 | ||
1471 | 97 | msf_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 | ||
1472 | 98 | msf_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 | ||
1473 | 99 | msf_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 | ||
1474 | 100 | >>>>>>> MERGE-SOURCE | ||
1475 | 50 | 101 | ||
1476 | === modified file 'bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv' | |||
1477 | --- bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2017-08-23 18:38:09 +0000 | |||
1478 | +++ bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2017-09-01 09:49:29 +0000 | |||
1479 | @@ -123,12 +123,21 @@ | |||
1480 | 123 | msf_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 | 123 | msf_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 |
1481 | 124 | msf_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 | 124 | msf_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 |
1482 | 125 | msf_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 | 125 | msf_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 |
1483 | 126 | <<<<<<< TREE | ||
1484 | 126 | msf_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 | 127 | msf_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 |
1485 | 127 | msf_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 | 128 | msf_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 |
1486 | 128 | msf_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 | 129 | msf_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 |
1487 | 129 | msf_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 | 130 | msf_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 |
1488 | 130 | msf_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 | 131 | msf_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 |
1489 | 131 | msf_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 | 132 | msf_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 |
1490 | 133 | ======= | ||
1491 | 134 | msf_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 | ||
1492 | 135 | msf_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 | ||
1493 | 136 | msf_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 | ||
1494 | 137 | msf_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 | ||
1495 | 138 | msf_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 | ||
1496 | 139 | msf_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 | ||
1497 | 140 | >>>>>>> MERGE-SOURCE | ||
1498 | 132 | msf_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 | 141 | msf_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 |
1499 | 133 | msf_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 | 142 | msf_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 |
1500 | 134 | msf_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 | 143 | msf_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 |
1501 | 135 | 144 | ||
1502 | === modified file 'bin/addons/procurement_request/procurement_request.py' | |||
1503 | === modified file 'bin/addons/procurement_request/procurement_request_view.xml' | |||
1504 | --- bin/addons/procurement_request/procurement_request_view.xml 2017-08-01 15:45:31 +0000 | |||
1505 | +++ bin/addons/procurement_request/procurement_request_view.xml 2017-09-01 09:49:29 +0000 | |||
1506 | @@ -54,12 +54,16 @@ | |||
1507 | 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'])]}" /> |
1508 | 55 | <field name="origin" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" /> | 55 | <field name="origin" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" /> |
1509 | 56 | <field name="functional_currency_id" /> | 56 | <field name="functional_currency_id" /> |
1510 | 57 | <<<<<<< TREE | ||
1511 | 57 | <field name="categ" on_change="onchange_categ(categ)" /> | 58 | <field name="categ" on_change="onchange_categ(categ)" /> |
1512 | 58 | <group colspan="2" col="3"> | 59 | <group colspan="2" col="3"> |
1513 | 59 | <field name="stock_take_date" attrs="{'readonly': [('state', 'not in', ['draft'])]}" /> | 60 | <field name="stock_take_date" attrs="{'readonly': [('state', 'not in', ['draft'])]}" /> |
1514 | 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" |
1515 | 61 | attrs="{'invisible': [('state', 'not in', ('draft', 'confirmed'))]}" /> | 62 | attrs="{'invisible': [('state', 'not in', ('draft', 'confirmed'))]}" /> |
1516 | 62 | </group> | 63 | </group> |
1517 | 64 | ======= | ||
1518 | 65 | <field name="categ" on_change="onchange_categ(categ)" /> | ||
1519 | 66 | >>>>>>> MERGE-SOURCE | ||
1520 | 63 | <field name="fo_to_resource" invisible="1" /> | 67 | <field name="fo_to_resource" invisible="1" /> |
1521 | 64 | <field name="parent_order_name" attrs="{'invisible': [('fo_to_resource', '=', False)]}" /> | 68 | <field name="parent_order_name" attrs="{'invisible': [('fo_to_resource', '=', False)]}" /> |
1522 | 65 | </group> | 69 | </group> |
1523 | 66 | 70 | ||
1524 | === modified file 'bin/addons/product_attributes/product_attributes_view.xml' | |||
1525 | === modified file 'bin/addons/purchase_override/purchase.py' | |||
1526 | === modified file 'bin/addons/purchase_override/purchase_view.xml' | |||
1527 | === modified file 'bin/addons/reason_types_moves/reason_type.py' | |||
1528 | --- bin/addons/reason_types_moves/reason_type.py 2017-08-25 16:02:26 +0000 | |||
1529 | +++ bin/addons/reason_types_moves/reason_type.py 2017-09-01 09:49:29 +0000 | |||
1530 | @@ -177,12 +177,21 @@ | |||
1531 | 177 | @return: | 177 | @return: |
1532 | 178 | """ | 178 | """ |
1533 | 179 | # Copy the comment | 179 | # Copy the comment |
1534 | 180 | <<<<<<< TREE | ||
1535 | 180 | if inventory_line: | 181 | if inventory_line: |
1536 | 181 | move_vals.update({ | 182 | move_vals.update({ |
1537 | 182 | 'comment': inventory_line.comment, | 183 | 'comment': inventory_line.comment, |
1538 | 183 | 'reason_type_id': inventory_line.reason_type_id.id, | 184 | 'reason_type_id': inventory_line.reason_type_id.id, |
1539 | 184 | }) | 185 | }) |
1540 | 185 | move_vals.update({'not_chained': True}) | 186 | move_vals.update({'not_chained': True}) |
1541 | 187 | ======= | ||
1542 | 188 | if inventory_line: | ||
1543 | 189 | move_vals.update({ | ||
1544 | 190 | 'comment': inventory_line.comment, | ||
1545 | 191 | 'reason_type_id': inventory_line.reason_type_id.id, | ||
1546 | 192 | }) | ||
1547 | 193 | move_vals.update({'not_chained': True}) | ||
1548 | 194 | >>>>>>> MERGE-SOURCE | ||
1549 | 186 | 195 | ||
1550 | 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) |
1551 | 188 | # @@@end | 197 | # @@@end |
1552 | 189 | 198 | ||
1553 | === modified file 'bin/addons/report_webkit/webkit_report.py' | |||
1554 | === modified file 'bin/addons/sale/sale_view.xml' | |||
1555 | === modified file 'bin/addons/sale_override/sale.py' | |||
1556 | === modified file 'bin/addons/sale_override/sale_view.xml' | |||
1557 | === modified file 'bin/addons/sales_followup/report/sale_follow_up_report_multi.py' | |||
1558 | --- bin/addons/sales_followup/report/sale_follow_up_report_multi.py 2017-07-25 09:04:51 +0000 | |||
1559 | +++ bin/addons/sales_followup/report/sale_follow_up_report_multi.py 2017-09-01 09:49:29 +0000 | |||
1560 | @@ -147,11 +147,18 @@ | |||
1561 | 147 | data = { | 147 | data = { |
1562 | 148 | 'po_name': po_name, | 148 | 'po_name': po_name, |
1563 | 149 | 'cdd': cdd, | 149 | 'cdd': cdd, |
1564 | 150 | <<<<<<< TREE | ||
1565 | 150 | 'line_number': line.line_number, | 151 | 'line_number': line.line_number, |
1566 | 151 | 'product_name': line.product_id.name, | 152 | 'product_name': line.product_id.name, |
1567 | 152 | 'product_code': line.product_id.code, | 153 | 'product_code': line.product_id.code, |
1568 | 153 | 'is_delivered': False, | 154 | 'is_delivered': False, |
1569 | 154 | 'backordered_qty': 0.00, | 155 | 'backordered_qty': 0.00, |
1570 | 156 | ======= | ||
1571 | 157 | 'line_number': line.line_number, | ||
1572 | 158 | 'product_name': line.product_id.name, | ||
1573 | 159 | 'product_code': line.product_id.code, | ||
1574 | 160 | 'is_delivered': False, | ||
1575 | 161 | >>>>>>> MERGE-SOURCE | ||
1576 | 155 | } | 162 | } |
1577 | 156 | if first_line: | 163 | if first_line: |
1578 | 157 | data.update({ | 164 | data.update({ |
1579 | @@ -162,6 +169,7 @@ | |||
1580 | 162 | }) | 169 | }) |
1581 | 163 | first_line = False | 170 | first_line = False |
1582 | 164 | 171 | ||
1583 | 172 | <<<<<<< TREE | ||
1584 | 165 | if ppl or ppl_not_shipped: | 173 | if ppl or ppl_not_shipped: |
1585 | 166 | eta = '' | 174 | eta = '' |
1586 | 167 | is_delivered = False | 175 | is_delivered = False |
1587 | @@ -177,6 +185,23 @@ | |||
1588 | 177 | packing = move.picking_id.name or '' | 185 | packing = move.picking_id.name or '' |
1589 | 178 | shipment = '' | 186 | shipment = '' |
1590 | 179 | 187 | ||
1591 | 188 | ======= | ||
1592 | 189 | if ppl or ppl_not_shipped: | ||
1593 | 190 | eta = '' | ||
1594 | 191 | is_delivered = False | ||
1595 | 192 | is_shipment_done = False | ||
1596 | 193 | if ppl: | ||
1597 | 194 | packing = move.picking_id.previous_step_id.name or '' | ||
1598 | 195 | shipment = move.picking_id.shipment_id and move.picking_id.shipment_id.name or '' | ||
1599 | 196 | eta = datetime.strptime(move.picking_id.shipment_id.shipment_actual_date[0:10], '%Y-%m-%d') | ||
1600 | 197 | eta += timedelta(days=line.order_id.partner_id.supplier_lt or 0.00) | ||
1601 | 198 | is_delivered = move.picking_id.shipment_id.state == 'delivered' or False | ||
1602 | 199 | is_shipment_done = move.picking_id.shipment_id.state == 'done' or False | ||
1603 | 200 | else: | ||
1604 | 201 | packing = move.picking_id.name or '' | ||
1605 | 202 | shipment = '' | ||
1606 | 203 | |||
1607 | 204 | >>>>>>> MERGE-SOURCE | ||
1608 | 180 | if not grouped: | 205 | if not grouped: |
1609 | 181 | key = (packing, shipment, move.product_uom.name) | 206 | key = (packing, shipment, move.product_uom.name) |
1610 | 182 | else: | 207 | else: |
1611 | 183 | 208 | ||
1612 | === modified file 'bin/addons/sourcing/procurement_order.py' | |||
1613 | === modified file 'bin/addons/specific_rules/specific_rules.py' | |||
1614 | --- bin/addons/specific_rules/specific_rules.py 2017-08-23 14:10:02 +0000 | |||
1615 | +++ bin/addons/specific_rules/specific_rules.py 2017-09-01 09:49:29 +0000 | |||
1616 | @@ -75,9 +75,15 @@ | |||
1617 | 75 | prod_obj = self.pool.get('product.product') | 75 | prod_obj = self.pool.get('product.product') |
1618 | 76 | if prod_obj.browse(cr, uid, product).is_ssl: | 76 | if prod_obj.browse(cr, uid, product).is_ssl: |
1619 | 77 | warning = { | 77 | warning = { |
1620 | 78 | <<<<<<< TREE | ||
1621 | 78 | 'title': 'Short Shelf Life product', | 79 | 'title': 'Short Shelf Life product', |
1622 | 79 | 'message': _(SHORT_SHELF_LIFE_MESS) | 80 | 'message': _(SHORT_SHELF_LIFE_MESS) |
1623 | 80 | } | 81 | } |
1624 | 82 | ======= | ||
1625 | 83 | 'title': 'Short Shelf Life product', | ||
1626 | 84 | 'message': _(SHORT_SHELF_LIFE_MESS) | ||
1627 | 85 | } | ||
1628 | 86 | >>>>>>> MERGE-SOURCE | ||
1629 | 81 | result.update(warning=warning) | 87 | result.update(warning=warning) |
1630 | 82 | 88 | ||
1631 | 83 | return result | 89 | return result |
1632 | @@ -168,9 +174,15 @@ | |||
1633 | 168 | prod_obj = self.pool.get('product.product') | 174 | prod_obj = self.pool.get('product.product') |
1634 | 169 | if prod_obj.browse(cr, uid, product).is_ssl: | 175 | if prod_obj.browse(cr, uid, product).is_ssl: |
1635 | 170 | warning = { | 176 | warning = { |
1636 | 177 | <<<<<<< TREE | ||
1637 | 171 | 'title': 'Short Shelf Life product', | 178 | 'title': 'Short Shelf Life product', |
1638 | 172 | 'message': _(SHORT_SHELF_LIFE_MESS) | 179 | 'message': _(SHORT_SHELF_LIFE_MESS) |
1639 | 173 | } | 180 | } |
1640 | 181 | ======= | ||
1641 | 182 | 'title': 'Short Shelf Life product', | ||
1642 | 183 | 'message': _(SHORT_SHELF_LIFE_MESS) | ||
1643 | 184 | } | ||
1644 | 185 | >>>>>>> MERGE-SOURCE | ||
1645 | 174 | result.update(warning=warning) | 186 | result.update(warning=warning) |
1646 | 175 | 187 | ||
1647 | 176 | return result | 188 | return result |
1648 | @@ -704,12 +716,21 @@ | |||
1649 | 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.')) |
1650 | 705 | if not move.prodlot_id and move.product_qty and \ | 717 | if not move.prodlot_id and move.product_qty and \ |
1651 | 706 | (move.state == 'done' and \ | 718 | (move.state == 'done' and \ |
1652 | 719 | <<<<<<< TREE | ||
1653 | 707 | ( \ | 720 | ( \ |
1654 | 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 \ |
1655 | 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 \ |
1656 | 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 \ |
1657 | 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') \ |
1658 | 712 | )): | 725 | )): |
1659 | 726 | ======= | ||
1660 | 727 | ( \ | ||
1661 | 728 | (move.product_id.track_production and move.location_id.usage == 'production') or \ | ||
1662 | 729 | (move.product_id.track_production and move.location_dest_id.usage == 'production') or \ | ||
1663 | 730 | (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \ | ||
1664 | 731 | (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \ | ||
1665 | 732 | )): | ||
1666 | 733 | >>>>>>> MERGE-SOURCE | ||
1667 | 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.')) |
1668 | 714 | 735 | ||
1669 | 715 | return True | 736 | return True |
1670 | @@ -783,6 +804,7 @@ | |||
1671 | 783 | product_ids.add(read_dict['product_id'][0]) | 804 | product_ids.add(read_dict['product_id'][0]) |
1672 | 784 | 805 | ||
1673 | 785 | product_list_dict = self.pool.get('product.product').read(cr, uid, | 806 | product_list_dict = self.pool.get('product.product').read(cr, uid, |
1674 | 807 | <<<<<<< TREE | ||
1675 | 786 | list(product_ids), | 808 | list(product_ids), |
1676 | 787 | ['kc_txt', | 809 | ['kc_txt', |
1677 | 788 | 'ssl_txt', | 810 | 'ssl_txt', |
1678 | @@ -793,6 +815,18 @@ | |||
1679 | 793 | 'type', | 815 | 'type', |
1680 | 794 | 'subtype',], | 816 | 'subtype',], |
1681 | 795 | context=context) | 817 | context=context) |
1682 | 818 | ======= | ||
1683 | 819 | list(product_ids), | ||
1684 | 820 | ['kc_txt', | ||
1685 | 821 | 'ssl_txt', | ||
1686 | 822 | 'dg_txt', | ||
1687 | 823 | 'cs_txt', | ||
1688 | 824 | 'batch_management', | ||
1689 | 825 | 'perishable', | ||
1690 | 826 | 'type', | ||
1691 | 827 | 'subtype',], | ||
1692 | 828 | context=context) | ||
1693 | 829 | >>>>>>> MERGE-SOURCE | ||
1694 | 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]) |
1695 | 797 | 831 | ||
1696 | 798 | for stock_move_dict in read_result: | 832 | for stock_move_dict in read_result: |
1697 | @@ -1362,9 +1396,15 @@ | |||
1698 | 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.', |
1699 | 1363 | ['Type', 'Product']), | 1397 | ['Type', 'Product']), |
1700 | 1364 | (_check_perishable_type_integrity, | 1398 | (_check_perishable_type_integrity, |
1701 | 1399 | <<<<<<< TREE | ||
1702 | 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.', |
1703 | 1366 | ['Type', 'Product']), | 1401 | ['Type', 'Product']), |
1704 | 1367 | ] | 1402 | ] |
1705 | 1403 | ======= | ||
1706 | 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.', | ||
1707 | 1405 | ['Type', 'Product']), | ||
1708 | 1406 | ] | ||
1709 | 1407 | >>>>>>> MERGE-SOURCE | ||
1710 | 1368 | 1408 | ||
1711 | 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): |
1712 | 1370 | ''' | 1410 | ''' |
1713 | @@ -1601,9 +1641,15 @@ | |||
1714 | 1601 | GROUP BY l.product_id, l.location_id, l.%s, l.expiry_date | 1641 | GROUP BY l.product_id, l.location_id, l.%s, l.expiry_date |
1715 | 1602 | HAVING count(l.id) > 1 | 1642 | HAVING count(l.id) > 1 |
1716 | 1603 | ORDER BY count(l.id) DESC""" % ( | 1643 | ORDER BY count(l.id) DESC""" % ( |
1717 | 1644 | <<<<<<< TREE | ||
1718 | 1604 | self._name.replace('.', '_'), | 1645 | self._name.replace('.', '_'), |
1719 | 1605 | self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name', | 1646 | self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name', |
1720 | 1606 | ) | 1647 | ) |
1721 | 1648 | ======= | ||
1722 | 1649 | self._name.replace('.', '_'), | ||
1723 | 1650 | self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name', | ||
1724 | 1651 | ) | ||
1725 | 1652 | >>>>>>> MERGE-SOURCE | ||
1726 | 1607 | cr.execute(sql_req, (tuple(ids),)) | 1653 | cr.execute(sql_req, (tuple(ids),)) |
1727 | 1608 | check_res = cr.dictfetchall() | 1654 | check_res = cr.dictfetchall() |
1728 | 1609 | if check_res: | 1655 | if check_res: |
1729 | 1610 | 1656 | ||
1730 | === modified file 'bin/addons/stock/stock.py' | |||
1731 | --- bin/addons/stock/stock.py 2017-08-23 14:10:02 +0000 | |||
1732 | +++ bin/addons/stock/stock.py 2017-09-01 09:49:29 +0000 | |||
1733 | @@ -3057,6 +3057,7 @@ | |||
1734 | 3057 | 'location_id': line['location_id'][0], | 3057 | 'location_id': line['location_id'][0], |
1735 | 3058 | 'location_dest_id': location_id, | 3058 | 'location_dest_id': location_id, |
1736 | 3059 | }) | 3059 | }) |
1737 | 3060 | <<<<<<< TREE | ||
1738 | 3060 | value.update({ | 3061 | value.update({ |
1739 | 3061 | 'comment': line['comment'], | 3062 | 'comment': line['comment'], |
1740 | 3062 | 'reason_type_id': line['reason_type_id'][0], | 3063 | 'reason_type_id': line['reason_type_id'][0], |
1741 | @@ -3071,6 +3072,20 @@ | |||
1742 | 3071 | message = _('Inventory') + " '" + inv['name'] + "' "+ _("is validated.") | 3072 | message = _('Inventory') + " '" + inv['name'] + "' "+ _("is validated.") |
1743 | 3072 | self.log(cr, uid, inv['id'], message) | 3073 | self.log(cr, uid, inv['id'], message) |
1744 | 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)]}) |
1745 | 3075 | ======= | ||
1746 | 3076 | value.update({ | ||
1747 | 3077 | 'comment': line['comment'], | ||
1748 | 3078 | 'reason_type_id': line['reason_type_id'][0], | ||
1749 | 3079 | }) | ||
1750 | 3080 | |||
1751 | 3081 | if self._name == 'initial.stock.inventory': | ||
1752 | 3082 | value.update({'price_unit': line['average_cost']}) | ||
1753 | 3083 | move_ids.append(self._inventory_line_hook(cr, uid, None, value)) | ||
1754 | 3084 | # Changed the text of the following line to "is confirmed" instead of "is done" due to the state value | ||
1755 | 3085 | message = _('Inventory') + " '" + inv['name'] + "' "+ _("is confirmed.") | ||
1756 | 3086 | self.log(cr, uid, inv['id'], message) | ||
1757 | 3087 | self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]}) | ||
1758 | 3088 | >>>>>>> MERGE-SOURCE | ||
1759 | 3074 | return True | 3089 | return True |
1760 | 3075 | 3090 | ||
1761 | 3076 | def action_cancel_draft(self, cr, uid, ids, context=None): | 3091 | def action_cancel_draft(self, cr, uid, ids, context=None): |
1762 | 3077 | 3092 | ||
1763 | === modified file 'bin/addons/stock_override/wizard/stock_card_wizard.py' | |||
1764 | --- bin/addons/stock_override/wizard/stock_card_wizard.py 2017-08-23 14:10:02 +0000 | |||
1765 | +++ bin/addons/stock_override/wizard/stock_card_wizard.py 2017-09-01 09:49:29 +0000 | |||
1766 | @@ -245,12 +245,16 @@ | |||
1767 | 245 | 'notes': move.picking_id and move.picking_id.note or '', | 245 | 'notes': move.picking_id and move.picking_id.note or '', |
1768 | 246 | } | 246 | } |
1769 | 247 | 247 | ||
1770 | 248 | <<<<<<< TREE | ||
1771 | 248 | line_obj.create(cr, uid, line_values, context=context) | 249 | line_obj.create(cr, uid, line_values, context=context) |
1772 | 249 | 250 | ||
1773 | 250 | for inv_date in inv_line_dates: | 251 | for inv_date in inv_line_dates: |
1774 | 251 | for new_line in inv_line_to_add[inv_date]: | 252 | for new_line in inv_line_to_add[inv_date]: |
1775 | 252 | new_line['balance'] = initial_stock | 253 | new_line['balance'] = initial_stock |
1776 | 253 | line_obj.create(cr, uid, new_line, context=context) | 254 | line_obj.create(cr, uid, new_line, context=context) |
1777 | 255 | ======= | ||
1778 | 256 | line_obj.create(cr, uid, line_values, context=context) | ||
1779 | 257 | >>>>>>> MERGE-SOURCE | ||
1780 | 254 | 258 | ||
1781 | 255 | self.write(cr, uid, [ids[0]], {'available_stock': initial_stock}, | 259 | self.write(cr, uid, [ids[0]], {'available_stock': initial_stock}, |
1782 | 256 | context=context) | 260 | context=context) |
1783 | 257 | 261 | ||
1784 | === modified file 'bin/addons/sync_client/sync_client.py' | |||
1785 | === modified file 'bin/addons/sync_so/so_po_common.py' | |||
1786 | === modified file 'bin/release.py' | |||
1787 | --- bin/release.py 2017-08-29 14:56:45 +0000 | |||
1788 | +++ bin/release.py 2017-09-01 09:49:29 +0000 | |||
1789 | @@ -20,7 +20,11 @@ | |||
1790 | 20 | ############################################################################## | 20 | ############################################################################## |
1791 | 21 | 21 | ||
1792 | 22 | name = 'openerp-server' | 22 | name = 'openerp-server' |
1793 | 23 | <<<<<<< TREE | ||
1794 | 23 | version = 'UF6.0rc1' | 24 | version = 'UF6.0rc1' |
1795 | 25 | ======= | ||
1796 | 26 | version = 'UF6.0dev' | ||
1797 | 27 | >>>>>>> MERGE-SOURCE | ||
1798 | 24 | major_version = '6.0' | 28 | major_version = '6.0' |
1799 | 25 | description = 'OpenERP Server' | 29 | description = 'OpenERP Server' |
1800 | 26 | long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic | 30 | long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic |
1801 | 27 | 31 | ||
1802 | === modified file 'bin/tools/misc.py' | |||
1803 | === modified file 'bin/unifield-version.txt' | |||
1804 | --- bin/unifield-version.txt 2017-08-29 14:56:45 +0000 | |||
1805 | +++ bin/unifield-version.txt 2017-09-01 09:49:29 +0000 | |||
1806 | @@ -48,7 +48,13 @@ | |||
1807 | 48 | 364232a949995b3e46324fa93b5a06c3 2016-12-14 10:00:00 UF3.0 | 48 | 364232a949995b3e46324fa93b5a06c3 2016-12-14 10:00:00 UF3.0 |
1808 | 49 | b2bc3aa15d627714868e8bac1c44b821 2017-01-26 14:00:00 UF3.1 | 49 | b2bc3aa15d627714868e8bac1c44b821 2017-01-26 14:00:00 UF3.1 |
1809 | 50 | f37e6ab5138ec1768214805ec03b77ec 2017-03-20 16:00:00 UF4.0 | 50 | f37e6ab5138ec1768214805ec03b77ec 2017-03-20 16:00:00 UF4.0 |
1810 | 51 | <<<<<<< TREE | ||
1811 | 51 | 0b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1 | 52 | 0b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1 |
1812 | 52 | 7777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0 | 53 | 7777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0 |
1813 | 53 | 6e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1 | 54 | 6e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1 |
1814 | 54 | 07a26b10a43329d42ecbfeb1fe5a26e1 2017-08-29 17:00:00 UF6.0rc1 | 55 | 07a26b10a43329d42ecbfeb1fe5a26e1 2017-08-29 17:00:00 UF6.0rc1 |
1815 | 56 | ======= | ||
1816 | 57 | 0b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1 | ||
1817 | 58 | 7777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0 | ||
1818 | 59 | 6e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1 | ||
1819 | 60 | >>>>>>> MERGE-SOURCE | ||
1820 | 55 | 61 | ||
1821 | === modified file 'bin/updater.py' | |||
1822 | --- bin/updater.py 2017-08-25 12:42:18 +0000 | |||
1823 | +++ bin/updater.py 2017-09-01 09:49:29 +0000 | |||
1824 | @@ -554,6 +554,7 @@ | |||
1825 | 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)) |
1826 | 555 | logger.info("Check mako and xml files finished.") | 555 | logger.info("Check mako and xml files finished.") |
1827 | 556 | 556 | ||
1828 | 557 | <<<<<<< TREE | ||
1829 | 557 | # | 558 | # |
1830 | 558 | # Functions related to upgrading PostgreSQL. | 559 | # Functions related to upgrading PostgreSQL. |
1831 | 559 | # | 560 | # |
1832 | @@ -979,3 +980,374 @@ | |||
1833 | 979 | if sys.platform != 'win32': | 980 | if sys.platform != 'win32': |
1834 | 980 | root = '/' | 981 | root = '/' |
1835 | 981 | assert get_free_space_mb(root) != None | 982 | assert get_free_space_mb(root) != None |
1836 | 983 | ======= | ||
1837 | 984 | # | ||
1838 | 985 | # Functions related to upgrading PostgreSQL. | ||
1839 | 986 | # | ||
1840 | 987 | |||
1841 | 988 | def _find_pg_patch(): | ||
1842 | 989 | """ | ||
1843 | 990 | Looks in the cwd for a file matching pgsql-*-*-patch. | ||
1844 | 991 | Returns the filename of the patch, the oldVer and the newVer. | ||
1845 | 992 | """ | ||
1846 | 993 | import glob | ||
1847 | 994 | pfiles = glob.glob('pgsql-*-*-patch') | ||
1848 | 995 | if len(pfiles) == 0: | ||
1849 | 996 | return None, None, None | ||
1850 | 997 | if len(pfiles) != 1: | ||
1851 | 998 | warn("Too many PostgreSQL patch files: %s" % pfiles) | ||
1852 | 999 | warn("PostgreSQL will not be updated.") | ||
1853 | 1000 | return None, None, None | ||
1854 | 1001 | |||
1855 | 1002 | (oldVer, newVer) = pfiles[0].split('-')[1:3] | ||
1856 | 1003 | |||
1857 | 1004 | # Check version format: 8.4.14 or 10.1 | ||
1858 | 1005 | if not re.match('\d+\.\d+(\.\d+)?', oldVer) or \ | ||
1859 | 1006 | not re.match('\d+\.\d+(\.\d+)?', newVer): | ||
1860 | 1007 | return None, None, None | ||
1861 | 1008 | |||
1862 | 1009 | return pfiles[0], oldVer, newVer | ||
1863 | 1010 | |||
1864 | 1011 | def _is_major(oldVer, newVer): | ||
1865 | 1012 | oldVer = oldVer.split('.') | ||
1866 | 1013 | newVer = newVer.split('.') | ||
1867 | 1014 | if oldVer[0] != newVer[0]: | ||
1868 | 1015 | return True | ||
1869 | 1016 | if oldVer[0] >= 10: | ||
1870 | 1017 | # for 10.x and onward, second position indicates minor | ||
1871 | 1018 | # version: https://www.postgresql.org/support/versioning/ | ||
1872 | 1019 | return False | ||
1873 | 1020 | if oldVer[1] != newVer[1]: | ||
1874 | 1021 | return True | ||
1875 | 1022 | return False | ||
1876 | 1023 | |||
1877 | 1024 | def _no_log(*x): | ||
1878 | 1025 | pass | ||
1879 | 1026 | |||
1880 | 1027 | def _archive_patch(pf): | ||
1881 | 1028 | """ | ||
1882 | 1029 | Put away the patch file in order to indicate that it has | ||
1883 | 1030 | already been applied and PG update should not be attempted | ||
1884 | 1031 | again. | ||
1885 | 1032 | """ | ||
1886 | 1033 | warn('Archiving patch file %s' % pf) | ||
1887 | 1034 | if not os.path.exists('backup'): | ||
1888 | 1035 | os.mkdir('backup') | ||
1889 | 1036 | bf = os.path.join('backup', pf) | ||
1890 | 1037 | if os.path.exists(bf): | ||
1891 | 1038 | os.remove(bf) | ||
1892 | 1039 | os.rename(pf, bf) | ||
1893 | 1040 | |||
1894 | 1041 | def do_pg_update(): | ||
1895 | 1042 | """ | ||
1896 | 1043 | This function is run on every server start (see openerp-server.py). | ||
1897 | 1044 | If the conditions are not right for a PostgreSQL update, it | ||
1898 | 1045 | immeditately returns, so that the server can start up (the common case). | ||
1899 | 1046 | If an update is required, then it attempts the update. If the | ||
1900 | 1047 | update fails, it must leave the server in the same condition it | ||
1901 | 1048 | started, i.e. with the original Postgres up and running. | ||
1902 | 1049 | """ | ||
1903 | 1050 | |||
1904 | 1051 | # Postgres updates are only done on Windows. | ||
1905 | 1052 | if os.name != "nt": | ||
1906 | 1053 | return | ||
1907 | 1054 | |||
1908 | 1055 | # We need to open this here because do_update only | ||
1909 | 1056 | # opens it once it starts to work, not if there is no | ||
1910 | 1057 | # update to apply. | ||
1911 | 1058 | global log | ||
1912 | 1059 | try: | ||
1913 | 1060 | log = open(log_file, 'a') | ||
1914 | 1061 | except Exception as e: | ||
1915 | 1062 | log = os.stderr | ||
1916 | 1063 | warn("Could not open %s correctly: %s" % (log_file, e)) | ||
1917 | 1064 | |||
1918 | 1065 | # If there is no patch file available, then there's no | ||
1919 | 1066 | # update to do. | ||
1920 | 1067 | pf, oldVer, newVer = _find_pg_patch() | ||
1921 | 1068 | if pf is None: | ||
1922 | 1069 | return | ||
1923 | 1070 | |||
1924 | 1071 | try: | ||
1925 | 1072 | with open(pf, 'rb') as f: | ||
1926 | 1073 | pdata = f.read() | ||
1927 | 1074 | except Exception as e: | ||
1928 | 1075 | warn("Could not read patch file %s: %s" % (pf, e)) | ||
1929 | 1076 | _archive_patch(pf) | ||
1930 | 1077 | return | ||
1931 | 1078 | |||
1932 | 1079 | for root in ('c:\\', 'd:\\'): | ||
1933 | 1080 | if os.path.exists(root): | ||
1934 | 1081 | free = get_free_space_mb(root) | ||
1935 | 1082 | if free < 1000: | ||
1936 | 1083 | warn("Less than 1 gb free on %s. Not attempting PostgreSQL upgrade." % root) | ||
1937 | 1084 | return | ||
1938 | 1085 | |||
1939 | 1086 | # Minor update: | ||
1940 | 1087 | # 1. check that the patch will apply | ||
1941 | 1088 | # 2. stop server | ||
1942 | 1089 | # 3. patch the binaries in place, nuke patch to show it is done | ||
1943 | 1090 | # 4. start server | ||
1944 | 1091 | # | ||
1945 | 1092 | # Minor updates will only happen after the 8.4->9.6.x transition, | ||
1946 | 1093 | # so things are much easier, with more fixed items (PG inst location, | ||
1947 | 1094 | # service name). | ||
1948 | 1095 | if not _is_major(oldVer, newVer): | ||
1949 | 1096 | if oldVer.startswith("8.4."): | ||
1950 | 1097 | warn("Minor patch from 8.4.x not supported.") | ||
1951 | 1098 | return | ||
1952 | 1099 | warn("Postgres minor update from %s to %s" % (oldVer, newVer)) | ||
1953 | 1100 | |||
1954 | 1101 | try: | ||
1955 | 1102 | bsdifftree.applyPatch(pdata, r'..\pgsql', doIt=False, log=_no_log) | ||
1956 | 1103 | subprocess.call('net stop Postgres', stdout=log, stderr=log) | ||
1957 | 1104 | bsdifftree.applyPatch(pdata, r'..\pgsql', log=warn) | ||
1958 | 1105 | _archive_patch(pf) | ||
1959 | 1106 | except Exception as e: | ||
1960 | 1107 | s = str(e) or type(e) | ||
1961 | 1108 | warn("Could not apply patch:", s) | ||
1962 | 1109 | finally: | ||
1963 | 1110 | subprocess.call('net start Postgres', stdout=log, stderr=log) | ||
1964 | 1111 | warn("Minor update done.") | ||
1965 | 1112 | return | ||
1966 | 1113 | |||
1967 | 1114 | # Major upgrade | ||
1968 | 1115 | # | ||
1969 | 1116 | # 0. find out if tablespaces are in use, if so abort | ||
1970 | 1117 | # 1. figure out where the old PG is and copy it to pgsql-next | ||
1971 | 1118 | # 2. patch pgsql-next, nuke patch file | ||
1972 | 1119 | # 3. prepare new db dir using new initdb, old user/pass. | ||
1973 | 1120 | # 4. stop server | ||
1974 | 1121 | # 5. pg_upgrade -> if fail, clean db dir, goto 8 | ||
1975 | 1122 | # 6. commit to new bin dir, put it in '..\pgsql' | ||
1976 | 1123 | # 7. if old was 8.4, change service entry | ||
1977 | 1124 | # 8. start server | ||
1978 | 1125 | |||
1979 | 1126 | warn("Postgres major update from %s to %s" % (oldVer, newVer)) | ||
1980 | 1127 | import tools | ||
1981 | 1128 | |||
1982 | 1129 | stopped = False | ||
1983 | 1130 | pg_new_db = None | ||
1984 | 1131 | try: | ||
1985 | 1132 | env = os.environ | ||
1986 | 1133 | if tools.config.get('db_user'): | ||
1987 | 1134 | env['PGUSER'] = tools.config['db_user'] | ||
1988 | 1135 | if tools.config.get('db_password'): | ||
1989 | 1136 | env['PGPASSWORD'] = tools.config['db_password'] | ||
1990 | 1137 | |||
1991 | 1138 | pg_new = r'..\pgsql-next' | ||
1992 | 1139 | if oldVer == '8.4.14': | ||
1993 | 1140 | svc = 'PostgreSQL_For_OpenERP' | ||
1994 | 1141 | pg_old = r'D:\MSF data\Unifield\PostgreSQL' | ||
1995 | 1142 | else: | ||
1996 | 1143 | svc = 'Postgres' | ||
1997 | 1144 | pg_old = r'..\pgsql' | ||
1998 | 1145 | if not os.path.exists(pg_old): | ||
1999 | 1146 | raise RuntimeError('PostgreSQL install directory %s not found.' % pg_old) | ||
2000 | 1147 | |||
2001 | 1148 | # 0: check for tablespaces (pg_upgrade seems to unify them | ||
2002 | 1149 | # into pg_default, which is not ok) | ||
2003 | 1150 | cmd = [ os.path.join(pg_old, 'bin', 'psql'), '-t', '-c', | ||
2004 | 1151 | 'select count(*) > 2 from pg_tablespace;', 'postgres' ] | ||
2005 | 1152 | out = None | ||
2006 | 1153 | try: | ||
2007 | 1154 | out = subprocess.check_output(cmd, stderr=log, env=env) | ||
2008 | 1155 | except subprocess.CalledProcessError as e: | ||
2009 | 1156 | warn(e) | ||
2010 | 1157 | warn("out is", out) | ||
2011 | 1158 | if out is None or 'f' not in out: | ||
2012 | 1159 | raise RuntimeError("User-defined tablespaces might be in use. Upgrade needs human intervention.") | ||
2013 | 1160 | |||
2014 | 1161 | # 1: use old PG install to make a new one to patch | ||
2015 | 1162 | if os.path.exists(pg_new): | ||
2016 | 1163 | warn("Removing previous %s directory" % pg_new) | ||
2017 | 1164 | shutil.rmtree(pg_new) | ||
2018 | 1165 | |||
2019 | 1166 | if oldVer == '8.4.14': | ||
2020 | 1167 | warn("Creating %s by selective copy from %s" % (pg_new, pg_old)) | ||
2021 | 1168 | os.mkdir(pg_new) | ||
2022 | 1169 | for d in ('bin', 'lib', 'share'): | ||
2023 | 1170 | shutil.copytree(os.path.join(pg_old, d), | ||
2024 | 1171 | os.path.join(pg_new, d)) | ||
2025 | 1172 | else: | ||
2026 | 1173 | shutil.copytree(pg_old, pg_new) | ||
2027 | 1174 | |||
2028 | 1175 | # 2: patch the pg exes -- no trial run here, because if applyPatch | ||
2029 | 1176 | # fails, we have only left pg_new unusable, and we will revert | ||
2030 | 1177 | # to pg_old. Compare to minor (in-place) upgrade, above. | ||
2031 | 1178 | warn('Patching %s' % pg_new) | ||
2032 | 1179 | bsdifftree.applyPatch(pdata, pg_new, log=warn) | ||
2033 | 1180 | _archive_patch(pf) | ||
2034 | 1181 | |||
2035 | 1182 | # 3: prepare the new db | ||
2036 | 1183 | pg_old_db = r'D:\MSF data\Unifield\PostgreSQL\data' | ||
2037 | 1184 | if not os.path.exists(pg_old_db): | ||
2038 | 1185 | raise RuntimeError('Could not find existing PostgreSQL data in %s' % pg_old_db) | ||
2039 | 1186 | pg_new_db = pg_old_db + '-new' | ||
2040 | 1187 | if os.path.exists(pg_new_db): | ||
2041 | 1188 | raise RuntimeError('New data directory %s already exists.' % pg_new_db) | ||
2042 | 1189 | pwf = tempfile.NamedTemporaryFile(delete=False) | ||
2043 | 1190 | pwf.write(tools.config.get('db_password')) | ||
2044 | 1191 | # TODO: apply same fix here for trust as in the AIO | ||
2045 | 1192 | cmd = [ os.path.join(pg_new, 'bin', 'initdb'), | ||
2046 | 1193 | '--pwfile', pwf.name, | ||
2047 | 1194 | '--data-checksums', '-A', 'md5', | ||
2048 | 1195 | '-U', tools.config.get('db_user'), | ||
2049 | 1196 | '--locale', 'English_United States', | ||
2050 | 1197 | '-E', 'UTF8', pg_new_db | ||
2051 | 1198 | ] | ||
2052 | 1199 | rc = subprocess.call(cmd, stdout=log, stderr=log) | ||
2053 | 1200 | pwf.close() | ||
2054 | 1201 | os.remove(pwf.name) | ||
2055 | 1202 | if rc != 0: | ||
2056 | 1203 | raise RuntimeError("initdb returned %d" % rc) | ||
2057 | 1204 | |||
2058 | 1205 | # modify the postgresql.conf file for best | ||
2059 | 1206 | # defaults | ||
2060 | 1207 | pgconf = os.path.join(pg_new_db, "postgresql.conf") | ||
2061 | 1208 | with open(pgconf, "a") as f: | ||
2062 | 1209 | f.write("listen_addresses = 'localhost'\n") | ||
2063 | 1210 | f.write("shared_buffers = 1024MB\n") | ||
2064 | 1211 | |||
2065 | 1212 | # 4: stop old service | ||
2066 | 1213 | subprocess.call('net stop %s' % svc, stdout=log, stderr=log) | ||
2067 | 1214 | stopped = True | ||
2068 | 1215 | |||
2069 | 1216 | # 5: pg_upgrade | ||
2070 | 1217 | run_analyze = False | ||
2071 | 1218 | cmd = [ os.path.join(pg_new, 'bin', 'pg_upgrade'), | ||
2072 | 1219 | '-b', os.path.join(pg_old, 'bin'), | ||
2073 | 1220 | '-B', os.path.join(pg_new, 'bin'), | ||
2074 | 1221 | '-d', pg_old_db, '-D', pg_new_db, '-k', '-v', | ||
2075 | 1222 | ] | ||
2076 | 1223 | rc = subprocess.call(cmd, stdout=log, stderr=log, env=env) | ||
2077 | 1224 | if rc != 0: | ||
2078 | 1225 | raise RuntimeError("pg_upgrade returned %d" % rc) | ||
2079 | 1226 | |||
2080 | 1227 | # The pg_upgrade went ok, so we are committed now. Nuke the | ||
2081 | 1228 | # old db directory and move the upgraded one into place. | ||
2082 | 1229 | warn("pg_upgrade returned %d, commiting to new version" % rc) | ||
2083 | 1230 | run_analyze = True | ||
2084 | 1231 | |||
2085 | 1232 | warn("Rename %s to %s." % (pg_new_db, pg_old_db)) | ||
2086 | 1233 | # we do this with two renames since rmtree/rename sometimes | ||
2087 | 1234 | # failed (why? due to antivirus still holding files open?) | ||
2088 | 1235 | pg_old_db2 = pg_old_db + "-trash" | ||
2089 | 1236 | os.rename(pg_old_db, pg_old_db2) | ||
2090 | 1237 | os.rename(pg_new_db, pg_old_db) | ||
2091 | 1238 | shutil.rmtree(pg_old_db2) | ||
2092 | 1239 | |||
2093 | 1240 | # 6: commit to new bin dir | ||
2094 | 1241 | if oldVer == '8.4.14': | ||
2095 | 1242 | # Move pg_new to it's final name. | ||
2096 | 1243 | os.rename(pg_new, r'..\pgsql') | ||
2097 | 1244 | # For 8.4->9.9.x transition, nuke 8.4 install | ||
2098 | 1245 | warn("Removing stand-alone PostgreSQL 8.4 installation.") | ||
2099 | 1246 | cmd = [ os.path.join(pg_old, 'uninstall-postgresql.exe'), | ||
2100 | 1247 | '--mode', 'unattended', | ||
2101 | 1248 | ] | ||
2102 | 1249 | rc = subprocess.call(cmd, stdout=log, stderr=log) | ||
2103 | 1250 | if rc != 0: | ||
2104 | 1251 | warn("PostgreSQL 8.4 uninstall returned %d" % rc) | ||
2105 | 1252 | pg_old = r'..\pgsql' | ||
2106 | 1253 | else: | ||
2107 | 1254 | warn("Remove %s." % pg_old) | ||
2108 | 1255 | shutil.rmtree(pg_old) | ||
2109 | 1256 | |||
2110 | 1257 | warn("Rename %s to %s." % (pg_new, pg_old)) | ||
2111 | 1258 | os.rename(pg_new, pg_old) | ||
2112 | 1259 | |||
2113 | 1260 | pgp = os.path.normpath(os.path.join(pg_old, 'bin')) | ||
2114 | 1261 | if tools.config['pg_path'] != pgp: | ||
2115 | 1262 | warn("Setting pg_path to %s." % pgp) | ||
2116 | 1263 | tools.config['pg_path'] = pgp | ||
2117 | 1264 | tools.config.save() | ||
2118 | 1265 | |||
2119 | 1266 | # 7: change service entry to the correct install location | ||
2120 | 1267 | if oldVer == '8.4.14': | ||
2121 | 1268 | cmd = [ | ||
2122 | 1269 | os.path.join(pg_old, 'bin', 'pg_ctl'), | ||
2123 | 1270 | 'register', '-N', 'Postgres', | ||
2124 | 1271 | '-U', 'openpgsvc', | ||
2125 | 1272 | '-P', '0p3npgsvcPWD', | ||
2126 | 1273 | '-D', pg_old_db, | ||
2127 | 1274 | ] | ||
2128 | 1275 | rc = subprocess.call(cmd, stdout=log, stderr=log) | ||
2129 | 1276 | if rc != 0: | ||
2130 | 1277 | raise RuntimeError("pg_ctl returned %d" % rc) | ||
2131 | 1278 | svc = 'Postgres' | ||
2132 | 1279 | |||
2133 | 1280 | except Exception as e: | ||
2134 | 1281 | s = str(e) or type(e) | ||
2135 | 1282 | warn('Failed to update Postgres:', s) | ||
2136 | 1283 | finally: | ||
2137 | 1284 | try: | ||
2138 | 1285 | if pg_new_db is not None and os.path.exists(pg_new_db): | ||
2139 | 1286 | warn("Removing failed DB upgrade directory %s" % pg_new_db) | ||
2140 | 1287 | shutil.rmtree(pg_new_db) | ||
2141 | 1288 | except Exception: | ||
2142 | 1289 | # don't know what went wrong, but we must not crash here | ||
2143 | 1290 | # or else OpenERP-Server will not start. | ||
2144 | 1291 | pass | ||
2145 | 1292 | # 8. start service (either the old one or the new one) | ||
2146 | 1293 | if stopped: | ||
2147 | 1294 | warn('Starting service %s' % svc) | ||
2148 | 1295 | subprocess.call('net start %s' % svc, stdout=log, stderr=log) | ||
2149 | 1296 | if run_analyze: | ||
2150 | 1297 | cmd = [ os.path.join(r'..\pgsql', 'bin', 'vacuumdb'), | ||
2151 | 1298 | '--all', '--analyze-only' ] | ||
2152 | 1299 | subprocess.call(cmd, stdout=log, stderr=log, env=env) | ||
2153 | 1300 | return | ||
2154 | 1301 | |||
2155 | 1302 | # https://stackoverflow.com/questions/51658/cross-platform-space-remaining-on-volume-using-python | ||
2156 | 1303 | def get_free_space_mb(dirname): | ||
2157 | 1304 | """Return folder/drive free space (in megabytes).""" | ||
2158 | 1305 | if platform.system() == 'Windows': | ||
2159 | 1306 | free_bytes = ctypes.c_ulonglong(0) | ||
2160 | 1307 | ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes)) | ||
2161 | 1308 | return free_bytes.value / 1024 / 1024 | ||
2162 | 1309 | else: | ||
2163 | 1310 | st = os.statvfs(dirname) | ||
2164 | 1311 | return st.f_bavail * st.f_frsize / 1024 / 1024 | ||
2165 | 1312 | |||
2166 | 1313 | # | ||
2167 | 1314 | # Unit tests follow | ||
2168 | 1315 | # | ||
2169 | 1316 | if __name__ == '__main__': | ||
2170 | 1317 | d = tempfile.mkdtemp() | ||
2171 | 1318 | os.chdir(d) | ||
2172 | 1319 | |||
2173 | 1320 | # no file | ||
2174 | 1321 | pf, oldVer, newVer = _find_pg_patch() | ||
2175 | 1322 | assert pf == None | ||
2176 | 1323 | |||
2177 | 1324 | # one good file | ||
2178 | 1325 | with open('pgsql-8.4.14-9.6.3-patch', 'wb') as f: | ||
2179 | 1326 | f.write('Fake patch for testing.') | ||
2180 | 1327 | pf, oldVer, newVer = _find_pg_patch() | ||
2181 | 1328 | assert oldVer == '8.4.14' | ||
2182 | 1329 | assert newVer == '9.6.3' | ||
2183 | 1330 | assert pf == 'pgsql-8.4.14-9.6.3-patch' | ||
2184 | 1331 | |||
2185 | 1332 | # two files: oops | ||
2186 | 1333 | warn("Expect 2 messages on stderr after this:") | ||
2187 | 1334 | with open('pgsql-wat-huh-patch', 'wb') as f: | ||
2188 | 1335 | f.write('Second fake patch for testing.') | ||
2189 | 1336 | pf, oldVer, newVer = _find_pg_patch() | ||
2190 | 1337 | assert pf == None | ||
2191 | 1338 | |||
2192 | 1339 | # one file with wrong version format | ||
2193 | 1340 | os.remove('pgsql-8.4.14-9.6.3-patch') | ||
2194 | 1341 | pf, oldVer, newVer = _find_pg_patch() | ||
2195 | 1342 | assert pf == None | ||
2196 | 1343 | |||
2197 | 1344 | assert _is_major('8.4.14', '9.6.3') | ||
2198 | 1345 | assert not _is_major('8.4.14', '8.4.15') | ||
2199 | 1346 | assert _is_major('9.6.9', '10.1') | ||
2200 | 1347 | assert not _is_major('10.1', '10.2') | ||
2201 | 1348 | assert _is_major('21.9', '22.1') | ||
2202 | 1349 | |||
2203 | 1350 | os.chdir('..') | ||
2204 | 1351 | shutil.rmtree(d) | ||
2205 | 1352 | assert get_free_space_mb("D:\\") != None | ||
2206 | 1353 | >>>>>>> MERGE-SOURCE | ||
2207 | 982 | 1354 | ||
2208 | === modified file 'setup.py' | |||
2209 | --- setup.py 2017-08-04 14:42:21 +0000 | |||
2210 | +++ setup.py 2017-09-01 09:49:29 +0000 | |||
2211 | @@ -60,6 +60,7 @@ | |||
2212 | 60 | "imaplib", "smtplib", "email", "yaml", | 60 | "imaplib", "smtplib", "email", "yaml", |
2213 | 61 | "uuid", "commands", "mx.DateTime", "json", | 61 | "uuid", "commands", "mx.DateTime", "json", |
2214 | 62 | "pylzma", "xlwt", "passlib", "bcrypt", "six", "cffi", | 62 | "pylzma", "xlwt", "passlib", "bcrypt", "six", "cffi", |
2215 | 63 | <<<<<<< TREE | ||
2216 | 63 | "psutil", | 64 | "psutil", |
2217 | 64 | ], | 65 | ], |
2218 | 65 | 'dist_dir': 'dist', | 66 | 'dist_dir': 'dist', |
2219 | @@ -77,6 +78,24 @@ | |||
2220 | 77 | 'api-ms-win-core-sysinfo-l1-2-1.dll', | 78 | 'api-ms-win-core-sysinfo-l1-2-1.dll', |
2221 | 78 | 'api-ms-win-security-activedirectoryclient-l1-1-0.dll', | 79 | 'api-ms-win-security-activedirectoryclient-l1-1-0.dll', |
2222 | 79 | ], | 80 | ], |
2223 | 81 | ======= | ||
2224 | 82 | ], | ||
2225 | 83 | 'dist_dir': 'dist', | ||
2226 | 84 | 'excludes' : ["Tkconstants","Tkinter","tcl"], | ||
2227 | 85 | 'dll_excludes': [ | ||
2228 | 86 | 'w9xpopen.exe', 'PSAPI.dll', 'CRYPT32.dll', 'MPR.dll', | ||
2229 | 87 | 'Secur32.dll', 'SHFOLDER.dll', | ||
2230 | 88 | 'api-ms-win-core-delayload-l1-1-1.dll', | ||
2231 | 89 | 'api-ms-win-core-errorhandling-l1-1-1.dll', | ||
2232 | 90 | 'api-ms-win-core-heap-obsolete-l1-1-0.dll', | ||
2233 | 91 | 'api-ms-win-core-libraryloader-l1-2-0.dll', | ||
2234 | 92 | 'api-ms-win-core-processthreads-l1-1-2.dll', | ||
2235 | 93 | 'api-ms-win-core-profile-l1-1-0.dll', | ||
2236 | 94 | 'api-ms-win-core-string-obsolete-l1-1-0.dll', | ||
2237 | 95 | 'api-ms-win-core-sysinfo-l1-2-1.dll', | ||
2238 | 96 | 'api-ms-win-security-activedirectoryclient-l1-1-0.dll', | ||
2239 | 97 | ], | ||
2240 | 98 | >>>>>>> MERGE-SOURCE | ||
2241 | 80 | } | 99 | } |
2242 | 81 | } | 100 | } |
2243 | 82 | 101 | ||
2244 | @@ -226,11 +245,18 @@ | |||
2245 | 226 | 'reportlab==2.5', | 245 | 'reportlab==2.5', |
2246 | 227 | 'pyyaml==3.12', | 246 | 'pyyaml==3.12', |
2247 | 228 | 'egenix-mx-base==3.2.9', | 247 | 'egenix-mx-base==3.2.9', |
2248 | 248 | <<<<<<< TREE | ||
2249 | 229 | 'passlib==1.7.1', | 249 | 'passlib==1.7.1', |
2250 | 230 | 'bcrypt==3.1.3', | 250 | 'bcrypt==3.1.3', |
2251 | 231 | 'xlwt==1.2.0', | 251 | 'xlwt==1.2.0', |
2252 | 232 | 'psutil==5.2.2', | 252 | 'psutil==5.2.2', |
2253 | 233 | 'bsdiff4==1.1.4', | 253 | 'bsdiff4==1.1.4', |
2254 | 254 | ======= | ||
2255 | 255 | 'passlib==1.7.1', | ||
2256 | 256 | 'bcrypt==3.1.3', | ||
2257 | 257 | 'xlwt==1.2.0', | ||
2258 | 258 | 'bsdiff4==1.1.4', | ||
2259 | 259 | >>>>>>> MERGE-SOURCE | ||
2260 | 234 | ], | 260 | ], |
2261 | 235 | **py2exe_keywords | 261 | **py2exe_keywords |
2262 | 236 | ) | 262 | ) |