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 | |
12 | # first verify that all existent registers for this period are closed |
13 | reg_ids = reg_obj.search(cr, uid, [('period_id', '=', period.id)], context=context) |
14 | +<<<<<<< TREE |
15 | journal_ok = [] |
16 | +======= |
17 | + linked_prev_reg_ids = [] |
18 | +>>>>>>> MERGE-SOURCE |
19 | for register in reg_obj.browse(cr, uid, reg_ids, context=context): |
20 | +<<<<<<< TREE |
21 | journal_ok.append(register.journal_id.id) |
22 | +======= |
23 | + register.prev_reg_id and linked_prev_reg_ids.append(register.prev_reg_id.id) |
24 | +>>>>>>> MERGE-SOURCE |
25 | if register.state not in ['confirm']: |
26 | raise osv.except_osv(_('Warning'), _("The register '%s' is not closed. Please close it before closing period") % (register.name,)) |
27 | +<<<<<<< TREE |
28 | |
29 | # prevent period closing if one of the registers of the previous period |
30 | # 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 | "to close and have a balance which isn't equal to 0:\n" |
33 | "%s") % ", ".join([r.name for r in reg_ko])) |
34 | |
35 | +======= |
36 | + |
37 | + # prevent period closing if one of the registers of the previous period |
38 | + # has no corresponding register in the period to close AND has a non 0 balance. (except for period 13..16) |
39 | + if not period.special: |
40 | + prev_period_id = register_tools.previous_period_id(self, cr, uid, period.id, context=context, raise_error=False) |
41 | + if prev_period_id: |
42 | + all_prev_reg_ids = reg_obj.search(cr, uid, [('period_id', '=', prev_period_id)], order='NO_ORDER', context=context) |
43 | + # get the registers of the previous period which are NOT linked to a register of the period to close |
44 | + orphan_prev_reg_ids = [reg_id for reg_id in all_prev_reg_ids if reg_id not in linked_prev_reg_ids] |
45 | + reg_ko = [] |
46 | + for reg in reg_obj.browse(cr, uid, orphan_prev_reg_ids, |
47 | + fields_to_fetch=['balance_end', 'balance_end_real', 'balance_end_cash', 'name'], |
48 | + context=context): |
49 | + if abs(reg.balance_end) > 10**-3 or abs(reg.balance_end_real) > 10**-3 or abs(reg.balance_end_cash) > 10**-3: |
50 | + reg_ko.append(reg) |
51 | + if len(reg_ko) > 0: |
52 | + raise osv.except_osv(_('Warning'), |
53 | + _("One or several registers have not been generated for the period " |
54 | + "to close and have a balance which isn't equal to 0:\n" |
55 | + "%s") % ", ".join([r.name for r in reg_ko])) |
56 | + |
57 | +>>>>>>> MERGE-SOURCE |
58 | # check if subscriptions lines were not created for this period |
59 | sub_ids = sub_obj.search(cr, uid, [('date', '<', period.date_stop), ('move_id', '=', False)], context=context) |
60 | if len(sub_ids) > 0: |
61 | |
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 | for move in self.browse(cr, uid, move_ids, context=context): |
68 | pick = move.picking_id |
69 | cond1 = move.picking_id.subtype == 'standard' |
70 | +<<<<<<< TREE |
71 | 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 | +======= |
73 | +>>>>>>> MERGE-SOURCE |
74 | # move from draft picking or standard picking |
75 | + 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 | if cond2 or cond1: |
77 | integrity_check.append(move) |
78 | # return the first one matching |
79 | |
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 | if isinstance(ids, (int, long)): |
88 | ids = [ids] |
89 | |
90 | +<<<<<<< TREE |
91 | # only for FO |
92 | if context['active_model'] == 'sale.order' \ |
93 | and (not context.get('procurement_request') or not context['procurement_request']): |
94 | @@ -611,6 +612,28 @@ |
95 | else: |
96 | line_obj.unlink(cr, uid, line_ids, context=context) |
97 | context['from_del_wizard'] = False |
98 | +======= |
99 | + for wiz in self.browse(cr, uid, ids, context=context): |
100 | + line_obj = self.pool.get(wiz.to_remove_type) |
101 | + line_ids = [] |
102 | + # Parse the content of 'line_ids' field (text field) to retrieve |
103 | + # the id of lines to remove. |
104 | + for line in wiz.line_ids: |
105 | + for l in line[2]: |
106 | + line_ids.append(l) |
107 | + |
108 | + context['noraise'] = True |
109 | + context.update({ |
110 | + 'noraise': True, |
111 | + 'from_del_wizard': True, |
112 | + }) |
113 | + if wiz.to_remove_type in ('purchase.order.line', 'tender.line'): |
114 | + line_obj.fake_unlink(cr, uid, line_ids, context=context) |
115 | + else: |
116 | + line_obj.unlink(cr, uid, line_ids, context=context) |
117 | + |
118 | + context['from_del_wizard'] = False |
119 | +>>>>>>> MERGE-SOURCE |
120 | |
121 | return {'type': 'ir.actions.act_window_close'} |
122 | |
123 | |
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 | picking = family.draft_packing_id |
131 | draft_picking = family.ppl_id and family.ppl_id.previous_step_id and family.ppl_id.previous_step_id.backorder_id or False |
132 | |
133 | + # get the linked "save as draft" wizard if has: |
134 | + picking_processor_wiz = [] |
135 | + if draft_picking: |
136 | + picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ |
137 | + ('picking_id', '=', draft_picking.id), |
138 | + ('draft', '=', True), |
139 | + ], context=context) |
140 | + if picking_processor_wiz: |
141 | + picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) |
142 | |
143 | # UF-2531: Store some important info for the return pack messages |
144 | return_info.setdefault(str(counter), { |
145 | @@ -885,6 +894,24 @@ |
146 | draft_initial_qty += return_qty |
147 | move_obj.write(cr, uid, [draft_move.id], {'product_qty': draft_initial_qty}, context=context) |
148 | |
149 | + # Update or create "save as draft" lines with returned qty: |
150 | + if picking_processor_wiz: |
151 | + save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ |
152 | + ('wizard_id', '=', picking_processor_wiz.id), |
153 | + ('move_id', '=', draft_move.id), |
154 | + ], context=context) |
155 | + if not save_as_draft_move: # then create the SaD line: |
156 | + move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=draft_move, context=context) |
157 | + move_data.update({'quantity': return_qty}) |
158 | + save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) |
159 | + save_as_draft_move = [save_as_draft_move] |
160 | + else: # update Sad line |
161 | + for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): |
162 | + self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { |
163 | + 'ordered_quantity': sad_move.ordered_quantity + return_qty, |
164 | + 'quantity': sad_move.quantity + return_qty, |
165 | + }, context=context) |
166 | + |
167 | # 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 | if not log_flag: |
169 | draft_shipment_name = self.read(cr, uid, shipment.id, ['name'], context=context)['name'] |
170 | @@ -3506,9 +3533,16 @@ |
171 | |
172 | if isinstance(ids, (int, long)): |
173 | ids = [ids] |
174 | + if context is None: |
175 | + context = {} |
176 | |
177 | - processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) |
178 | - proc_obj.create_lines(cr, uid, processor_id, context=context) |
179 | + # if wizard already exists, then open it (able save as draft/reset functionnality): |
180 | + wiz_ids = proc_obj.search(cr, uid, [('picking_id', 'in', ids), ('draft', '=', True)], context=context) |
181 | + if wiz_ids: |
182 | + processor_id = wiz_ids[0] |
183 | + else: |
184 | + processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) |
185 | + proc_obj.create_lines(cr, uid, processor_id, context=context) |
186 | |
187 | return { |
188 | 'type': 'ir.actions.act_window', |
189 | @@ -3517,6 +3551,7 @@ |
190 | 'view_type': 'form', |
191 | 'view_mode': 'form', |
192 | 'target': 'new', |
193 | + 'context': context, |
194 | } |
195 | |
196 | def do_create_picking(self, cr, uid, wizard_ids, context=None): |
197 | @@ -3698,8 +3733,13 @@ |
198 | _('The picking ticket is not in \'Available\' state. Please check this and re-try') |
199 | ) |
200 | |
201 | - processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) |
202 | - proc_obj.create_lines(cr, uid, processor_id, context=context) |
203 | + # if wizard already exists, then open it (able save as draft/reset functionnality): |
204 | + wiz_ids = proc_obj.search(cr, uid, [('picking_id', 'in', ids), ('draft', '=', True)], context=context) |
205 | + if wiz_ids: |
206 | + processor_id = wiz_ids[0] |
207 | + else: |
208 | + processor_id = proc_obj.create(cr, uid, {'picking_id': ids[0]}, context=context) |
209 | + proc_obj.create_lines(cr, uid, processor_id, context=context) |
210 | |
211 | return { |
212 | 'type': 'ir.actions.act_window', |
213 | @@ -4314,6 +4354,16 @@ |
214 | picking = wizard.picking_id |
215 | draft_picking_id = picking.previous_step_id.backorder_id.id |
216 | |
217 | + # get the linked "save as draft" wizard if has: |
218 | + picking_processor_wiz = [] |
219 | + if draft_picking_id: |
220 | + picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ |
221 | + ('picking_id', '=', draft_picking_id), |
222 | + ('draft', '=', True), |
223 | + ], context=context) |
224 | + if picking_processor_wiz: |
225 | + picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) |
226 | + |
227 | for line in wizard.move_ids: |
228 | return_qty = line.quantity |
229 | |
230 | @@ -4363,11 +4413,27 @@ |
231 | |
232 | # Increase the draft move with the returned quantity |
233 | draft_move_id = line.move_id.backmove_id.id |
234 | - draft_initial_qty = move_obj.read(cr, uid, [draft_move_id], ['product_qty'], context=context)[0]['product_qty'] |
235 | - draft_initial_qty += return_qty |
236 | - move_obj.write(cr, uid, [draft_move_id], {'product_qty': draft_initial_qty}, context=context) |
237 | - |
238 | - |
239 | + draft_move_qty = move_obj.read(cr, uid, [draft_move_id], ['product_qty'], context=context)[0]['product_qty'] |
240 | + draft_move_qty += return_qty |
241 | + move_obj.write(cr, uid, [draft_move_id], {'product_qty': draft_move_qty}, context=context) |
242 | + |
243 | + # Update or create "save as draft" lines with returned qty: |
244 | + if picking_processor_wiz: |
245 | + save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ |
246 | + ('wizard_id', '=', picking_processor_wiz.id), |
247 | + ('move_id', '=', draft_move_id), |
248 | + ], context=context) |
249 | + if not save_as_draft_move: # then create the SaD line: |
250 | + 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 | + move_data.update({'quantity': return_qty}) |
252 | + save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) |
253 | + save_as_draft_move = [save_as_draft_move] |
254 | + else: # update Sad line |
255 | + for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): |
256 | + self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { |
257 | + 'ordered_quantity': sad_move.ordered_quantity + return_qty, |
258 | + 'quantity': sad_move.quantity + return_qty, |
259 | + }, context=context) |
260 | |
261 | # Log message for PPL |
262 | ppl_view = data_obj.get_object_reference(cr, uid, 'msf_outgoing', 'view_ppl_form')[1] |
263 | @@ -4477,6 +4543,14 @@ |
264 | # get the draft picking |
265 | draft_picking_id = picking.backorder_id.id |
266 | |
267 | + # get the linked "save as draft" wizard if has: |
268 | + picking_processor_wiz = self.pool.get('create.picking.processor').search(cr, uid, [ |
269 | + ('picking_id', '=', draft_picking_id), |
270 | + ('draft', '=', True), |
271 | + ], context=context) |
272 | + if picking_processor_wiz: |
273 | + picking_processor_wiz = self.pool.get('create.picking.processor').browse(cr, uid, picking_processor_wiz[0], context=context) |
274 | + |
275 | # for each move from picking ticket - could be split moves |
276 | for move in picking.move_lines: |
277 | # find the corresponding move in draft |
278 | @@ -4486,6 +4560,25 @@ |
279 | initial_qty = move_obj.read(cr, uid, [draft_move.id], ['product_qty'], context=context)[0]['product_qty'] |
280 | initial_qty += move.product_qty |
281 | move_obj.write(cr, uid, [draft_move.id], {'product_qty': initial_qty}, context=context) |
282 | + |
283 | + # Update or create "save as draft" lines with returned qty: |
284 | + if picking_processor_wiz: |
285 | + save_as_draft_move = self.pool.get('create.picking.move.processor').search(cr, uid, [ |
286 | + ('wizard_id', '=', picking_processor_wiz.id), |
287 | + ('move_id', '=', draft_move.id), |
288 | + ], context=context) |
289 | + if not save_as_draft_move: # then create the SaD line: |
290 | + move_data = self.pool.get('create.picking.move.processor')._get_line_data(cr, uid, wizard=picking_processor_wiz, move=move, context=context) |
291 | + move_data.update({'quantity': move.product_qty}) |
292 | + save_as_draft_move = self.pool.get('create.picking.move.processor').create(cr, uid, move_data, context=context) |
293 | + save_as_draft_move = [save_as_draft_move] |
294 | + else: # update Sad line |
295 | + for sad_move in self.pool.get('create.picking.move.processor').browse(cr, uid, save_as_draft_move, context=context): |
296 | + self.pool.get('create.picking.move.processor').write(cr, uid, sad_move.id, { |
297 | + 'ordered_quantity': sad_move.ordered_quantity + move.product_qty, |
298 | + 'quantity': sad_move.quantity + move.product_qty, |
299 | + }, context=context) |
300 | + |
301 | # log the increase action |
302 | # TODO refactoring needed |
303 | obj_data = self.pool.get('ir.model.data') |
304 | |
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 | 'wizard_id', |
310 | string='Moves', |
311 | ), |
312 | + 'draft': fields.boolean('Draft'), |
313 | } |
314 | |
315 | """ |
316 | @@ -54,11 +55,50 @@ |
317 | |
318 | wizard_brw_list = self.browse(cr, uid, ids, context=context) |
319 | |
320 | + # disable "save as draft": |
321 | + self.write(cr, uid, ids, {'draft': False}, context=context) |
322 | + |
323 | self.integrity_check_quantity(cr, uid, wizard_brw_list, context=context) |
324 | self.integrity_check_prodlot(cr, uid, wizard_brw_list, context=context) |
325 | # call stock_picking method which returns action call |
326 | return picking_obj.do_create_picking(cr, uid, ids, context=context) |
327 | |
328 | + |
329 | + def do_reset(self, cr, uid, ids, context=None): |
330 | + if context is None: |
331 | + context = {} |
332 | + if isinstance(ids, (int, long)): |
333 | + ids = [ids] |
334 | + if not ids: |
335 | + raise osv.except_osv( |
336 | + _('Processing Error'), |
337 | + _('No data to process !'), |
338 | + ) |
339 | + |
340 | + pick_id = [] |
341 | + for proc in self.browse(cr, uid, ids, context=context): |
342 | + pick_id = proc['picking_id']['id'] |
343 | + |
344 | + self.write(cr, uid, ids, {'draft': False}, context=context) |
345 | + |
346 | + return self.pool.get('stock.picking').create_picking(cr, uid, pick_id, context=context) |
347 | + |
348 | + |
349 | + def do_save_draft(self, cr, uid, ids, context=None): |
350 | + if context is None: |
351 | + context = {} |
352 | + if isinstance(ids, (int, long)): |
353 | + ids = [ids] |
354 | + if not ids: |
355 | + raise osv.except_osv( |
356 | + _('Processing Error'), |
357 | + _('No data to process !'), |
358 | + ) |
359 | + |
360 | + self.write(cr, uid, ids, {'draft': True}, context=context) |
361 | + |
362 | + return {} |
363 | + |
364 | create_picking_processor() |
365 | |
366 | |
367 | |
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 | <separator colspan="4" string="Move lines" /> |
373 | <field name="move_ids" mode="tree" |
374 | colspan="4" nolabel="1" /> |
375 | + <field name="draft" invisible="1"/> |
376 | <group colspan="4" col="6" name="actions"> |
377 | <separator string="Actions" colspan="6" /> |
378 | - <label colspan="4"> </label> |
379 | + <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" /> |
380 | + <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" /> |
381 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> |
382 | <button name="do_create_picking" type="object" string="Create Picking" icon="gtk-go-forward" /> |
383 | </group> |
384 | |
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 | 'wizard_id', |
390 | string='Moves to process', |
391 | ), |
392 | + 'draft': fields.boolean('Draft'), |
393 | } |
394 | |
395 | """ |
396 | @@ -58,8 +59,10 @@ |
397 | if context is None: |
398 | context = {} |
399 | |
400 | + # disable "save as draft": |
401 | + self.write(cr, uid, ids, {'draft': False}, context=context) |
402 | + |
403 | to_unlink = [] |
404 | - |
405 | for proc in self.browse(cr, uid, ids, context=context): |
406 | total_qty = 0.00 |
407 | |
408 | @@ -154,6 +157,42 @@ |
409 | |
410 | return True |
411 | |
412 | + |
413 | + def do_reset(self, cr, uid, ids, context=None): |
414 | + if context is None: |
415 | + context = {} |
416 | + if isinstance(ids, (int, long)): |
417 | + ids = [ids] |
418 | + if not ids: |
419 | + raise osv.except_osv( |
420 | + _('Processing Error'), |
421 | + _('No data to process !'), |
422 | + ) |
423 | + |
424 | + pick_id = [] |
425 | + for proc in self.browse(cr, uid, ids, context=context): |
426 | + pick_id = proc['picking_id']['id'] |
427 | + |
428 | + self.write(cr, uid, ids, {'draft': False}, context=context) |
429 | + |
430 | + return self.pool.get('stock.picking').validate_picking(cr, uid, pick_id, context=context) |
431 | + |
432 | + |
433 | + def do_save_draft(self, cr, uid, ids, context=None): |
434 | + if context is None: |
435 | + context = {} |
436 | + if isinstance(ids, (int, long)): |
437 | + ids = [ids] |
438 | + if not ids: |
439 | + raise osv.except_osv( |
440 | + _('Processing Error'), |
441 | + _('No data to process !'), |
442 | + ) |
443 | + |
444 | + self.write(cr, uid, ids, {'draft': True}, context=context) |
445 | + |
446 | + return {} |
447 | + |
448 | validate_picking_processor() |
449 | |
450 | |
451 | |
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 | <separator colspan="4" string="Move lines" /> |
457 | <field name="move_ids" mode="tree" |
458 | colspan="4" nolabel="1" /> |
459 | + <field name="draft" invisible="1"/> |
460 | <group colspan="4" col="6" name="actions"> |
461 | <separator string="Actions" colspan="6" /> |
462 | - <label colspan="4"> </label> |
463 | + <button name="do_reset" type="object" string="Reset" attrs="{'invisible':[('draft','!=',True)]}" icon="gtk-go-forward" /> |
464 | + <button name="do_save_draft" type="object" string="Save as draft" icon="gtk-go-forward" /> |
465 | <button special="cancel" string="Cancel" icon="gtk-cancel" /> |
466 | <button name="do_validate_picking" type="object" string="Validate Picking" icon="gtk-go-forward" /> |
467 | </group> |
468 | |
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 | <?xml version="1.0" encoding="utf-8" ?> |
475 | <openerp> |
476 | <data> |
477 | +<<<<<<< TREE |
478 | <record id="us_2647_patch" model="patch.scripts"> |
479 | <field name="method">us_2647</field> |
480 | </record> |
481 | @@ -23,6 +24,27 @@ |
482 | <field name="method">us_2806_add_ir_ui_view_constraint</field> |
483 | </record> |
484 | |
485 | +======= |
486 | + <record id="us_244_patch" model="patch.scripts"> |
487 | + <field name="method">us_2444_touch_liquidity_journals</field> |
488 | + </record> |
489 | + |
490 | + <record id="us_3098_patch" model="patch.scripts"> |
491 | + <field name="method">us_3098_patch</field> |
492 | + </record> |
493 | + |
494 | + <record id="us_2257_patch" model="patch.scripts"> |
495 | + <field name="method">us_2257_patch</field> |
496 | + </record> |
497 | + <record id="us_2730_patch" model="patch.scripts"> |
498 | + <field name="method">us_2730_patch</field> |
499 | + </record> |
500 | + |
501 | + <record id="us_2806_add_ir_ui_view_constraint" model="patch.scripts"> |
502 | + <field name="method">us_2806_add_ir_ui_view_constraint</field> |
503 | + </record> |
504 | + |
505 | +>>>>>>> MERGE-SOURCE |
506 | <record id="remove_not_synchronized_data" model="patch.scripts"> |
507 | <field name="method">remove_not_synchronized_data</field> |
508 | </record> |
509 | |
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 | msgid "International status" |
515 | msgstr "International status" |
516 | |
517 | -#. modules: return_claim, msf_outgoing |
518 | +#. modules: return_claim, delivery_mechanism, msf_outgoing, stock_override, stock |
519 | #: code:addons/msf_outgoing/msf_outgoing.py:536 |
520 | #: code:addons/msf_outgoing/msf_outgoing.py:739 |
521 | #: code:addons/msf_outgoing/msf_outgoing.py:778 |
522 | @@ -10897,7 +10897,7 @@ |
523 | #: code:addons/return_claim/return_claim.py:1639 |
524 | #, python-format |
525 | msgid "Processing Error" |
526 | -msgstr "Erreur en cours " |
527 | +msgstr "Erreur de traitement" |
528 | |
529 | #. module: account_payment |
530 | #: field:payment.order,mode:0 |
531 | @@ -35824,6 +35824,44 @@ |
532 | msgid "Only technically to filter currencies according to partner type" |
533 | msgstr "Seulement techniquement pour filtrer les devises d'après le type de partenaire" |
534 | |
535 | +<<<<<<< TREE |
536 | +======= |
537 | +#. 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 | +#: field:account.invoice.line,price_unit:0 |
539 | +#: report:account.invoice2:0 |
540 | +#: field:kit.selection.line,price_unit_kit_selection_line:0 |
541 | +#: field:kit.selection.sale.line,price_unit_kit_selection_sale_line:0 |
542 | +#: report:invoice:0 |
543 | +#: field:stock.certificate.valuation,unit_price:0 |
544 | +#: field:pricelist.partnerinfo,price:0 |
545 | +#: report:purchase.order:0 |
546 | +#: field:purchase.order.line,price_unit:0 |
547 | +#: report:po.line.allocation.report:0 |
548 | +#: report:purchase.order.allocation.report:0 |
549 | +#: field:purchase.order.line.allocation.report,unit_price:0 |
550 | +#: report:msf.purchase.order:0 |
551 | +#: report:purchase.order.merged:0 |
552 | +#: field:purchase.order.merged.line,price_unit:0 |
553 | +#: field:wizard.account.invoice.line,price_unit:0 |
554 | +#: report:msf.sale.order:0 |
555 | +#: report:sale.order.allocation.report:0 |
556 | +#: field:sale.order.line,price_unit:0 |
557 | +#: report:lot.stock.overview:0 |
558 | +#: report:lot.stock.overview_all:0 |
559 | +#: field:stock.move,price_unit:0 |
560 | +#: field:supplier.catalogue.line,unit_price:0 |
561 | +#: report:addons/tender_flow/report/tender_rfq_comparison_xls.mako:577 |
562 | +#: code:addons/msf_doc_import/wizard/__init__.py:112 |
563 | +#: code:addons/msf_doc_import/wizard/__init__.py:133 |
564 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:195 |
565 | +#: field:wizard.simu.import.po.line,import_unit_price:0 |
566 | +#: field:wizard.simu.import.po.line,initial_unit_price:0 |
567 | +#: field:account.direct.invoice.wizard.line,price_unit:0 |
568 | +#, python-format |
569 | +msgid "Unit Price" |
570 | +msgstr "Prix unitaire" |
571 | + |
572 | +>>>>>>> MERGE-SOURCE |
573 | #. module: base |
574 | #: field:res.config.users,is_erp_manager:0 |
575 | #: field:res.users,is_erp_manager:0 |
576 | @@ -37260,7 +37298,7 @@ |
577 | #: code:addons/return_claim/return_claim.py:1640 |
578 | #, python-format |
579 | msgid "No data to process !" |
580 | -msgstr "No data to process !" |
581 | +msgstr "Aucune donnée à traiter !" |
582 | |
583 | #. module: stock_override |
584 | #: field:export.report.stock.move,exported_file:0 |
585 | @@ -63785,23 +63823,6 @@ |
586 | msgid "Child Accounts" |
587 | msgstr "Comptes Enfant " |
588 | |
589 | -#. modules: delivery_mechanism, msf_outgoing, stock_override, stock |
590 | -#: code:addons/delivery_mechanism/wizard/stock_partial_picking.py:149 |
591 | -#: code:addons/msf_outgoing/wizard/shipment.py:444 |
592 | -#: code:addons/stock/wizard/stock_move.py:265 |
593 | -#: code:addons/stock/wizard/stock_partial_picking.py:157 |
594 | -#: code:addons/stock/wizard/stock_partial_picking.py:165 |
595 | -#: code:addons/stock/wizard/stock_partial_picking.py:172 |
596 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:113 |
597 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:131 |
598 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:138 |
599 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:149 |
600 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:187 |
601 | -#: code:addons/stock_override/wizard/stock_partial_picking.py:193 |
602 | -#, python-format |
603 | -msgid "Processing Error" |
604 | -msgstr "Erreur de traitement" |
605 | - |
606 | #. module: specific_rules |
607 | #: help:product.uom,uom_by_product:0 |
608 | msgid "Field used to filter the UoM for a specific product" |
609 | @@ -98303,6 +98324,7 @@ |
610 | msgid "Intermission Vouchers linked to a PO can be deleted only in Draft state." |
611 | msgstr "Les Bons Intermission liés à un BC ne peuvent être supprimés qu'à l'état Brouillon." |
612 | |
613 | +<<<<<<< TREE |
614 | #. module: account_override |
615 | #: code:addons/account_override/invoice.py:723 |
616 | #, python-format |
617 | @@ -99361,3 +99383,609 @@ |
618 | msgid "Unable to generate updates, retrying %d/%d" |
619 | msgstr "Impossible de générer les data, nouvel essai %d/%d" |
620 | |
621 | +======= |
622 | +#. module: account_override |
623 | +#: code:addons/account_override/invoice.py:723 |
624 | +#, python-format |
625 | +msgid "No Intermission journal found for the current instance." |
626 | +msgstr "Pas de journal Intermission trouvé pour l'instance actuelle." |
627 | + |
628 | +#. module: purchase_override |
629 | +#: field:purchase.order,fixed_order_type:0 |
630 | +msgid "Possible order types" |
631 | +msgstr "Types de commande possibles" |
632 | + |
633 | +#. module: purchase_override |
634 | +#: code:addons/purchase_override/purchase.py:669 |
635 | +#: code:addons/purchase_override/purchase.py:853 |
636 | +#, python-format |
637 | +msgid "%s: This purchase order is a loan counterpart. You cannot change its order type" |
638 | +msgstr "%s: Ce bon de commande est la contrepartie d'un prêt. Vous ne pouvez pas modifier son type" |
639 | + |
640 | +#. module: purchase_override |
641 | +#: code:addons/purchase_override/purchase.py:672 |
642 | +#: code:addons/purchase_override/purchase.py:857 |
643 | +#, python-format |
644 | +msgid "%s: Only %s order types are allowed for this purchase order" |
645 | +msgstr "%s: Seuls les types %s sont autorisés pour cette commande" |
646 | + |
647 | +#. modules: sourcing, purchase_override, sync_so |
648 | +#: constraint:purchase.order:0 |
649 | +#: constraint:purchase.order:0 |
650 | +#: constraint:purchase.order:0 |
651 | +msgid "The order type of the order is not consistent with the order type of the source" |
652 | +msgstr "Le type de commande n'est pas compatible avec le type de la commande qui est sourcée" |
653 | + |
654 | +#. module: purchase_override |
655 | +#: code:addons/purchase_override/purchase.py:888 |
656 | +#, python-format |
657 | +msgid "You cannot select Direct Purchase order for a lines sourced to a normal PO" |
658 | +msgstr "Vous ne pouvez pas sélectionner 'Bon de commande direct' pour des lignes sourcées sur un PO normal" |
659 | + |
660 | +#. module: sourcing |
661 | +#: code:addons/sourcing/sale_order_line.py:929 |
662 | +#, python-format |
663 | +msgid "loan" |
664 | +msgstr "prêt" |
665 | + |
666 | +#. module: sourcing |
667 | +#: code:addons/sourcing/sale_order_line.py:929 |
668 | +#, python-format |
669 | +msgid "donation" |
670 | +msgstr "don" |
671 | + |
672 | +#. module: sourcing |
673 | +#: code:addons/sourcing/sale_order_line.py:1004 |
674 | +#, python-format |
675 | +msgid "You can only source a Donation line from stock." |
676 | +msgstr "Vous pouvez sourcé une ligne de don uniquement sur stock" |
677 | + |
678 | +#. module: sourcing |
679 | +#: code:addons/sourcing/sale_order_line.py:1278 |
680 | +#, python-format |
681 | +msgid "You can't source a donation 'on order'." |
682 | +msgstr "Vous ne pouvez pas sourcer un don 'sur commande'." |
683 | + |
684 | +#. module: base |
685 | +#: field:ir.model,default_order:0 |
686 | +#, python-format |
687 | +msgid "Default Order" |
688 | +msgstr "Ordre par défaut" |
689 | + |
690 | +#. module: mission_stock |
691 | +#: view:mission.stock.wizard:0 |
692 | +msgid "Errors" |
693 | +msgstr "Erreurs" |
694 | + |
695 | +#. module: mission_stock |
696 | +#: field:stock.mission.report,export_state:0 |
697 | +msgid "Export state" |
698 | +msgstr "Statut du rapport" |
699 | + |
700 | +#. module: mission_stock |
701 | +#: selection:stock.mission.report,export_state:0 |
702 | +msgid "Draft" |
703 | +msgstr "Brouillon" |
704 | + |
705 | +#. module: mission_stock |
706 | +#: selection:stock.mission.report,export_state:0 |
707 | +msgid "Error" |
708 | +msgstr "Erreur" |
709 | + |
710 | +#. module: mission_stock |
711 | +#: field:mission.stock.wizard,export_error_msg:0 |
712 | +#: field:stock.mission.report,export_error_msg:0 |
713 | +msgid "Error message" |
714 | +msgstr "Message d'erreur" |
715 | + |
716 | +#. modules: finance, msf_profile |
717 | +#: model:ir.actions.act_window,name:finance.account_board_commitment_voucher |
718 | +#: view:board.board:0 |
719 | +msgid "Commitment Vouchers to validate" |
720 | +msgstr "Bons d'Engagement à valider" |
721 | + |
722 | +#. module: account_reconciliation |
723 | +#: field:account.move.reconcile,nb_partial_legs:0 |
724 | +msgid "Nb legs in partial reconcile" |
725 | +msgstr "Nb d'entrées du lettrage partiel" |
726 | + |
727 | +#. module: product_attributes |
728 | +#: selection:product.product,state_ud:0 |
729 | +msgid "Forbidden" |
730 | +msgstr "Interdit" |
731 | + |
732 | +#. module: msf_doc_import |
733 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:106 |
734 | +#, python-format |
735 | +msgid "No data found in the spreadhseet." |
736 | +msgstr "Aucune donnée trouvée dans le tableur." |
737 | + |
738 | +#. module: msf_doc_import |
739 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:143 |
740 | +#, python-format |
741 | +msgid "Line %s. %s was not set. This field is mandatory." |
742 | +msgstr "Ligne %s. %s n'est pas défini. Ce champ est requis." |
743 | + |
744 | +#. module: msf_doc_import |
745 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:156 |
746 | +#, python-format |
747 | +msgid "Line %s. Account %s not found!" |
748 | +msgstr "Ligne %s. Compte %s non trouvé !" |
749 | + |
750 | +#. module: msf_doc_import |
751 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:162 |
752 | +#, python-format |
753 | +msgid "Line %s. Account %s is 'Donations' type which is forbidden." |
754 | +msgstr "Ligne %s. Le compte %s est de type 'Donations' ce qui est interdit." |
755 | + |
756 | +#. module: msf_doc_import |
757 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:174 |
758 | +#, python-format |
759 | +msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n" |
760 | +"- the account cannot be of type 'View' or 'Liquidity'\n" |
761 | +"- account can not be corrected on HQ entries\n" |
762 | +"- 'Type for specific treatment' cannot be 'Donations'\n" |
763 | +"- 'Internal Type' should be different from 'Regular' OR 'Account Type' should be different from 'Stock'\n" |
764 | +"- 'Account Type' should be different from 'Expense' OR 'P&L / BS Category' not None." |
765 | +msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n" |
766 | +"- le compte ne peut pas être de type 'Vue' ou 'Liquidités'\n" |
767 | +"- compte impossible à corriger dans les entrées HQ\n" |
768 | +"- 'Type pour traitement spécifique' ne peut pas être 'Donations'\n" |
769 | +"- 'Type Interne' doit être différent de 'Normal' OU 'Type de Compte' doit être différent de 'Stock'\n" |
770 | +"- 'Type de Compte' doit être différent de 'Expense' OU 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide." |
771 | + |
772 | +#. module: msf_doc_import |
773 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:168 |
774 | +#, python-format |
775 | +msgid "Line %s: Some restrictions prevent account %s to be used to import this line:\n" |
776 | +"- the account cannot be of type 'View'\n" |
777 | +"- account can not be corrected on HQ entries\n" |
778 | +"- 'Account Type' should be in ('expense', 'income', 'receivables')\n" |
779 | +"- 'P&L / BS Category' cannot be None." |
780 | +msgstr "Ligne %s: Des restrictions empêchent le compte %s d'être utilisé pour importer cette ligne :\n" |
781 | +"- le compte ne peut pas être de type 'Vue'\n" |
782 | +"- compte impossible à corriger dans les entrées HQ\n" |
783 | +"- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'\n" |
784 | +"- 'Catégorie Bilan/Cte de Résultat' ne doit pas être vide." |
785 | + |
786 | +#. module: msf_doc_import |
787 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:184 |
788 | +#, python-format |
789 | +msgid "\n" |
790 | +"- 'Account Type' should be in ('expense', 'income', 'receivables')." |
791 | +msgstr "\n" |
792 | +"- 'Type de Compte' doit être de type 'expense', 'income' ou 'receivables'." |
793 | + |
794 | +#. module: msf_doc_import |
795 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:275 |
796 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:280 |
797 | +#: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:370 |
798 | +#: code:addons/msf_doc_import/wizard/wizard_import_po_line.py:378 |
799 | +#, python-format |
800 | +msgid "Line %s in the Excel file, uncaught error: %s\n" |
801 | +"" |
802 | +msgstr "Ligne %s du fichier Excel, erreur non détectée: %s\n" |
803 | +"" |
804 | + |
805 | +#. module: msf_doc_import |
806 | +#: code:addons/msf_doc_import/wizard/wizard_import_invoice_line.py:354 |
807 | +#, python-format |
808 | +msgid "You can refresh the screen if you need to follow the upload progress by clicking on 'Update'." |
809 | +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 | + |
811 | +#. module: msf_doc_import |
812 | +#: model:ir.model,name:msf_doc_import.model_wizard_import_invoice_line |
813 | +msgid "Import Invoice Lines from Excel sheet" |
814 | +msgstr "Importer des lignes depuis un fichier Excel" |
815 | + |
816 | +#. module: finance |
817 | +#: code:addons/finance/invoice.py:57 |
818 | +#, python-format |
819 | +msgid "%s_template.xls" |
820 | +msgstr "modèle_%s.xls" |
821 | + |
822 | +#. module: stock_override |
823 | +#: field:stock.location,filter_partner_id2:0 |
824 | +msgid "Filter location by partner" |
825 | +msgstr "Filtrer l'emplacement de stock par partenaire" |
826 | + |
827 | +#. module: register_accounting |
828 | +#: code:addons/register_accounting/wizard/import_cheque_on_bank_registers.py:166 |
829 | +#, python-format |
830 | +msgid "Please add a Document Date on imported lines." |
831 | +msgstr "Veuillez saisir la date du document sur les lignes importées." |
832 | + |
833 | +#. module: product_list |
834 | +#: code:addons/product_list/product_list.py:306 |
835 | +#: code:addons/product_list/product_list.py:316 |
836 | +#, python-format |
837 | +msgid "This product cannot be added as it already exists in this list." |
838 | +msgstr "Ce produit ne peut pas être ajouter car il est déjà présent dans la liste" |
839 | + |
840 | +#. module: product_list |
841 | +#: code:addons/product_list/wizard/add_products.py:103 |
842 | +#, python-format |
843 | +msgid "product(s) %s already exist(s) in the product list and so cannot be added" |
844 | +msgstr "Les produits %s ne peuvent pas être ajouter car ils sont déjà présent dans la liste de produits" |
845 | + |
846 | +#. module: account_mcdb |
847 | +#: field:account.mcdb,top_prop_instance_ids:0 |
848 | +msgid "Top Proprietary instances" |
849 | +msgstr "Instances propriétaires parentes" |
850 | + |
851 | +#. module: account_mcdb |
852 | +#: field:account.mcdb,rev_top_prop_instance_ids:0 |
853 | +msgid "Exclude top prop instances selection" |
854 | +msgstr "Exclure la selection d'instances prop. parentes" |
855 | + |
856 | +#. module: account_mcdb |
857 | +#: field:account.mcdb,display_top_prop_instance:0 |
858 | +msgid "Display Top prop instances?" |
859 | +msgstr "Afficher les instances propriétaires parentes" |
860 | + |
861 | +#. module: account_mcdb |
862 | +#: code:addons/account_mcdb/account_mcdb.py:230 |
863 | +#, python-format |
864 | +msgid "You cannot select 'Instances' because 'Top prop Instances' is already selected." |
865 | +msgstr "Vous ne pouvez pas selectionner 'Instances' car 'Instance prop. parente' est déjà selectionné." |
866 | + |
867 | +#. module: account_mcdb |
868 | +#: view:account.mcdb:0 |
869 | +msgid "Top prop Instances" |
870 | +msgstr "Instance prop. parente" |
871 | + |
872 | +#. module: account_mcdb |
873 | +#: code:addons/account_mcdb/account_mcdb.py:244 |
874 | +#, python-format |
875 | +msgid "You cannot select 'Top prop Instances' because 'Instances' is already selected." |
876 | +msgstr "Vous ne pouvez pas selectionner 'Instance prop. parente' car 'Instances' est déjà selectionné." |
877 | + |
878 | +#. module: account_mcdb |
879 | +#: field:account.mcdb,rev_instance_ids:0 |
880 | +msgid "Exclude instances selection" |
881 | +msgstr "Exclure la sélection d'instance" |
882 | + |
883 | +#. module: account_mcdb |
884 | +#: view:account.mcdb:0 |
885 | +msgid "Remove all Instances" |
886 | +msgstr "Supprimer toutes les instances" |
887 | + |
888 | +#. module: account_mcdb |
889 | +#: view:account.mcdb:0 |
890 | +msgid "Add all Instances" |
891 | +msgstr "Ajouter toutes les instances" |
892 | + |
893 | +#. module: account_mcdb |
894 | +#: view:account.mcdb:0 |
895 | +msgid "Remove Prop Instances" |
896 | +msgstr "Supprimer toutes les instances propriétaires" |
897 | + |
898 | +#. module: account_mcdb |
899 | +#: view:account.mcdb:0 |
900 | +msgid "Add Prop Instances" |
901 | +msgstr "Ajouter toutes les instances propriétaires" |
902 | + |
903 | +#. module: account |
904 | +#: report:addons/account/report/account_liquidity_balance.mako:171 |
905 | +msgid "Calculated balance" |
906 | +msgstr "Solde calculé (théorique)" |
907 | + |
908 | +#. module: account |
909 | +#: code:addons/account/wizard/account_report_liquidity_balance.py:65 |
910 | +#: model:ir.actions.act_window,name:account.action_liquidity_balance_report |
911 | +#: model:ir.ui.menu,name:account.menu_liquidity_balance_report |
912 | +#: report:addons/account/report/account_liquidity_balance.mako:142 |
913 | +#, python-format |
914 | +msgid "Liquidity Balances" |
915 | +msgstr "Balances de trésorie" |
916 | + |
917 | +#. module: account |
918 | +#: code:addons/account/wizard/account_report_common_partner.py:89 |
919 | +#, python-format |
920 | +msgid "Only dates of the selected Fiscal Year can be chosen." |
921 | +msgstr "Seules des dates de l'exercice comptable sélectionné peuvent être choisies." |
922 | + |
923 | +#. module: mission_stock |
924 | +#: field:mission.stock.wizard,processed_state:0 |
925 | +msgid "Processing" |
926 | +msgstr "En traitement..." |
927 | + |
928 | +#. module: mission_stock |
929 | +#: view:mission.stock.wizard:0 |
930 | +msgid "Updating..." |
931 | +msgstr "Mise à jour ..." |
932 | + |
933 | +#. module: mission_stock |
934 | +#: field:mission.stock.wizard,processed_start_date:0 |
935 | +msgid "since" |
936 | +msgstr "depuis" |
937 | + |
938 | +#. module: stock_override |
939 | +#: code:addons/stock_override/stock.py:389 |
940 | +#, python-format |
941 | +msgid "The source location of lines has been changed to the same as header value" |
942 | +msgstr "La zone source des lignes a été changé avec la valeur présente en en-tête" |
943 | + |
944 | +#. module: stock_override |
945 | +#: code:addons/stock_override/stock.py:393 |
946 | +#, python-format |
947 | +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 | +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 | + |
950 | +#. module: account_override |
951 | +#: code:addons/account_override/account.py:524 |
952 | +#, python-format |
953 | +msgid "An account can't be both reconcilable and included in the yearly move to 0." |
954 | +msgstr "Un compte ne peut pas être à la fois lettrable et inclus dans la mise à zéro annuelle." |
955 | + |
956 | +#. module: account_period_closing_level |
957 | +#: code:addons/account_period_closing_level/account_year_end_closing.py:423 |
958 | +#, python-format |
959 | +msgid "The yearly closure can't be processed due to one or several reconciled entries that are included in the move to 0." |
960 | +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 | + |
962 | +#. module: account_reconciliation |
963 | +#: code:addons/account_reconciliation/account_move_line.py:269 |
964 | +#, python-format |
965 | +msgid "The entries included in the yearly move to zero can't be reconciled together because they are unbalanced." |
966 | +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 | + |
968 | +#. modules: account_override, account_mcdb, account |
969 | +#: field:account.move.line,open_items:0 |
970 | +#: field:account.mcdb,open_items:0 |
971 | +#: field:account.report.general.ledger,open_items:0 |
972 | +msgid "Open Items at" |
973 | +msgstr "Écritures ouvertes à " |
974 | + |
975 | +#. module: account |
976 | +#: model:ir.actions.server,name:account.action_aml_related_entries |
977 | +msgid "Related Entries" |
978 | +msgstr "Ecritures associées" |
979 | + |
980 | +#. module: account |
981 | +#: code:addons/account/account_move_line.py:1369 |
982 | +#, python-format |
983 | +msgid "Related entries: Entry Sequence %s" |
984 | +msgstr "Ecritures associées : Entrée Comptable %s" |
985 | + |
986 | +#. module: account |
987 | +#: code:addons/account/account_move_line.py:1330 |
988 | +#, python-format |
989 | +msgid "The related entries feature can only be used with one Journal Item." |
990 | +msgstr "La fonctionnalité des écritures associées ne peut être utilisée qu'avec une seule ligne d'écriture comptable." |
991 | + |
992 | +#. module: account_period_closing_level |
993 | +#: code:addons/account_period_closing_level/account_period.py:217 |
994 | +#, python-format |
995 | +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 | +"%s" |
997 | +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 | +"%s" |
999 | + |
1000 | +#. module: res_currency_tables |
1001 | +#: code:addons/res_currency_tables/res_currency.py:0 |
1002 | +#, python-format |
1003 | +msgid "delete" |
1004 | +msgstr "supprimer" |
1005 | + |
1006 | +#. module: res_currency_tables |
1007 | +#: code:addons/res_currency_tables/res_currency.py:0 |
1008 | +#, python-format |
1009 | +msgid "de-activate" |
1010 | +msgstr "désactiver" |
1011 | + |
1012 | +#. module: res_currency_tables |
1013 | +#: code:addons/res_currency_tables/res_currency.py:225 |
1014 | +#, python-format |
1015 | +msgid "The currency you want to %s is used in at least one active partner form." |
1016 | +msgstr "La devise que vous désirez %s est utilisée dans au moins un formulaire d'un partenaire actif." |
1017 | + |
1018 | +#. module: res_currency_tables |
1019 | +#: code:addons/res_currency_tables/res_currency.py:216 |
1020 | +#, python-format |
1021 | +msgid "The currency you want to %s is used in at least one Field Order which isn't Closed." |
1022 | +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 | + |
1024 | +#. module: res_currency_tables |
1025 | +#: code:addons/res_currency_tables/res_currency.py:216 |
1026 | +#, python-format |
1027 | +msgid "The currency you want to %s is used in at least one Purchase Order which isn't Closed." |
1028 | +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 | + |
1030 | +#. module: res_currency_tables |
1031 | +#: code:addons/res_currency_tables/res_currency.py:230 |
1032 | +#, python-format |
1033 | +msgid "The currency you want to %s is used in at least one document in Draft or Open state." |
1034 | +msgstr "La devise que vous désirez %s est utilisée dans au moins un document à l'état Brouillon ou Ouvert." |
1035 | + |
1036 | +#. module: res_currency_tables |
1037 | +#: code:addons/res_currency_tables/res_currency.py:256 |
1038 | +#, python-format |
1039 | +msgid "The currency you want to %s is used in at least one Register in Draft or Open state." |
1040 | +msgstr "La devise que vous désirez %s est utilisée dans au moins un Registre à l'état Brouillon ou Ouvert." |
1041 | + |
1042 | +#. module: res_currency_tables |
1043 | +#: code:addons/res_currency_tables/res_currency.py:236 |
1044 | +#, python-format |
1045 | +msgid "The currency you want to %s is used in at least one Journal Item in Unposted state." |
1046 | +msgstr "La devise que vous désirez %s est utilisée dans au moins une Ligne d'écriture comptable non comptabilisée." |
1047 | + |
1048 | +#. module: res_currency_tables |
1049 | +#: code:addons/res_currency_tables/res_currency.py:263 |
1050 | +#, python-format |
1051 | +msgid "The currency you want to %s is used in at least one Recurring Entry having a state not Done." |
1052 | +msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture Périodique avec un statut non Terminé." |
1053 | + |
1054 | +#. module: res_currency_tables |
1055 | +#: code:addons/res_currency_tables/res_currency.py:240 |
1056 | +#, python-format |
1057 | +msgid "The currency you want to %s is used in at least one Commitment Voucher which isn't Done." |
1058 | +msgstr "La devise que vous désirez %s est utilisée dans un moins un Bon d'Engagement non Terminé." |
1059 | + |
1060 | +#. module: res_currency_tables |
1061 | +#: code:addons/res_currency_tables/res_currency.py:244 |
1062 | +#, python-format |
1063 | +msgid "The currency you want to %s is used in at least one HQ Entry which isn't validated." |
1064 | +msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture HQ non validée." |
1065 | + |
1066 | +#. module: res_currency_tables |
1067 | +#: code:addons/res_currency_tables/res_currency.py:272 |
1068 | +#, python-format |
1069 | +msgid "The currency you want to %s is used in at least one Draft or Partially Posted Accrual Line." |
1070 | +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 | + |
1072 | +#. module: res_currency_tables |
1073 | +#: code:addons/res_currency_tables/res_currency.py:249 |
1074 | +#, python-format |
1075 | +msgid "The currency you want to %s is used in at least one Payroll Entry which isn't validated." |
1076 | +msgstr "La devise que vous désirez %s est utilisée dans au moins une Ecriture de Paie non validée." |
1077 | + |
1078 | +#. module: account_override |
1079 | +#: report:addons/account_override/report/open_invoices_xls.mako:315 |
1080 | +msgid "Payment Sequence Number" |
1081 | +msgstr "Numéro de séquence du paiement" |
1082 | + |
1083 | +#. module: account_override |
1084 | +#: report:addons/account_override/report/open_invoices_xls.mako:316 |
1085 | +msgid "Down Payment Sequence Number" |
1086 | +msgstr "Numéro de séquence de l'acompte" |
1087 | + |
1088 | +#. module: account_override |
1089 | +#: model:ir.actions.act_window,name:account_override.action_paid_invoices_menu |
1090 | +#: model:ir.actions.report.xml,name:account_override.paid_invoices |
1091 | +#: report:addons/account_override/report/open_invoices_xls.mako:238 |
1092 | +msgid "Paid Invoices" |
1093 | +msgstr "Factures Payées" |
1094 | + |
1095 | +#. module: account_override |
1096 | +#: report:addons/account_override/report/open_invoices_xls.mako:264 |
1097 | +msgid "PAID INVOICES" |
1098 | +msgstr "FACTURES PAYÉES" |
1099 | + |
1100 | +#. module: account_override |
1101 | +#: model:ir.model,name:account_override.model_wizard_report_paid_invoice |
1102 | +msgid "Wizard of the Paid Invoices Report" |
1103 | +msgstr "Assistant du Rapport des Factures Payées" |
1104 | + |
1105 | +#. module: account_override |
1106 | +#: field:wizard.report.paid.invoice,beginning_date:0 |
1107 | +msgid "Beginning date" |
1108 | +msgstr "Date de début" |
1109 | + |
1110 | +#. module: account_override |
1111 | +#: field:wizard.report.paid.invoice,ending_date:0 |
1112 | +msgid "Ending date" |
1113 | +msgstr "Date de fin" |
1114 | + |
1115 | +#. module: account_override |
1116 | +#: report:addons/account_override/report/open_invoices_xls.mako:290 |
1117 | +msgid "Beginning date:" |
1118 | +msgstr "Date de début :" |
1119 | + |
1120 | +#. module: account_override |
1121 | +#: report:addons/account_override/report/open_invoices_xls.mako:296 |
1122 | +msgid "Ending date:" |
1123 | +msgstr "Date de fin :" |
1124 | + |
1125 | +#. module: account_override |
1126 | +#: report:addons/account_override/report/open_invoices_xls.mako:306 |
1127 | +msgid "Intermission Vouchers IN" |
1128 | +msgstr "Bons Intermission IN" |
1129 | + |
1130 | +#. module: account_override |
1131 | +#: report:addons/account_override/report/open_invoices_xls.mako:307 |
1132 | +msgid "Intermission Vouchers OUT" |
1133 | +msgstr "Bons Intermission OUT" |
1134 | + |
1135 | +#. module: account_override |
1136 | +#: report:addons/account_override/report/open_invoices_xls.mako:305 |
1137 | +msgid "Donations" |
1138 | +msgstr "Donations" |
1139 | + |
1140 | +#. module: account_override |
1141 | +#: report:addons/account_override/report/open_invoices_xls.mako:307 |
1142 | +msgid "Debit Notes" |
1143 | +msgstr "Notes de débit" |
1144 | + |
1145 | +#. module: msf_homere_interface |
1146 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_import.py:188 |
1147 | +#, python-format |
1148 | +msgid "This account is a Donation account: %s" |
1149 | +msgstr "Ce compte est un compte de Donation : %s" |
1150 | + |
1151 | +#. module: account_override |
1152 | +#: code:addons/account_override/account.py:597 |
1153 | +#, python-format |
1154 | +msgid "Please check the Type for specific treatment of the accounts used." |
1155 | +msgstr "Veuillez vérifier le Type pour traitement spécifique des comptes utilisés." |
1156 | + |
1157 | +#. module: msf_homere_interface |
1158 | +#: field:hr.payroll.msf,has_third_party:0 |
1159 | +msgid "Has a Third Party" |
1160 | +msgstr "A un Tiers" |
1161 | + |
1162 | +#. module: msf_homere_interface |
1163 | +#: view:hr.payroll.msf:0 |
1164 | +msgid "Empty Third Party" |
1165 | +msgstr "Pas de Tiers" |
1166 | + |
1167 | +#. module: msf_homere_interface |
1168 | +#: model:ir.actions.server,name:msf_homere_interface.action_move_to_payroll_bs_lines |
1169 | +msgid "Validate Payroll Expenses and move to Payroll B/S lines" |
1170 | +msgstr "Valider les Lignes de dépenses et aller aux Lignes du bilan" |
1171 | + |
1172 | +#. module: msf_homere_interface |
1173 | +#: code:addons/msf_homere_interface/hr_payroll.py:367 |
1174 | +#, python-format |
1175 | +msgid "Payroll B/S lines" |
1176 | +msgstr "Lignes de paye du bilan" |
1177 | + |
1178 | +#. module: msf_homere_interface |
1179 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:324 |
1180 | +#, python-format |
1181 | +msgid "An error occurred%s" |
1182 | +msgstr "Une erreur est survenue%s" |
1183 | + |
1184 | +#. module: msf_homere_interface |
1185 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:161 |
1186 | +#, python-format |
1187 | +msgid "Checking account/partner compatibility..." |
1188 | +msgstr "Vérification de la compatibilité compte/partenaire..." |
1189 | + |
1190 | +#. module: msf_homere_interface |
1191 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:303 |
1192 | +#, python-format |
1193 | +msgid "Posting of the Journal Entry. This may take a while..." |
1194 | +msgstr "Comptabilisation de l'Ecriture Comptable. Cela peut prendre un certain temps..." |
1195 | + |
1196 | +#. module: msf_homere_interface |
1197 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:308 |
1198 | +#, python-format |
1199 | +msgid "Updating the status of the Journal Items..." |
1200 | +msgstr "Mise à jour du statut des Lignes d'Ecritures Comptables..." |
1201 | + |
1202 | +#. module: msf_homere_interface |
1203 | +#: code:addons/msf_homere_interface/wizard/hr_payroll_validation.py:213 |
1204 | +#, python-format |
1205 | +msgid "Creation of the Journal Items..." |
1206 | +msgstr "Création des Lignes d'Ecritures Comptables..." |
1207 | + |
1208 | +#. module: msf_currency_revaluation |
1209 | +#: code:addons/msf_currency_revaluation/wizard/wizard_currency_revaluation.py:723 |
1210 | +#, python-format |
1211 | +msgid "The following projects are not field-closed:\n" |
1212 | +"%s" |
1213 | +msgstr "Les projets suivants ne sont pas fermés sur le terrain :\n" |
1214 | +"%s" |
1215 | + |
1216 | +#. module: register_accounting |
1217 | +#: code:addons/register_accounting/account_bank_statement.py:120 |
1218 | +#, python-format |
1219 | +msgid "Writing on liquidity journals %s is not allowed" |
1220 | +msgstr "Vous ne pouvez pas modifier le journal de liquidité %s" |
1221 | + |
1222 | +#. module: sync_client |
1223 | +#: field:sync.version.instance.monitor,instance_state:0 |
1224 | +msgid "Instance State" |
1225 | +msgstr "État de l'instance" |
1226 | +>>>>>>> MERGE-SOURCE |
1227 | |
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 | 'model': lambda *a: 'patch.scripts', |
1233 | } |
1234 | |
1235 | +<<<<<<< TREE |
1236 | def us_2647(self, cr, uid, *a, **b): |
1237 | cr.execute('''update stock_inventory_line set dont_move='t' where id not in ( |
1238 | select l.id from stock_inventory_line l |
1239 | @@ -220,6 +221,171 @@ |
1240 | else: |
1241 | self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.') |
1242 | |
1243 | +======= |
1244 | + def us_2444_touch_liquidity_journals(self, cr, uid, *a, **b): |
1245 | + if _get_instance_level(self, cr, uid) == 'project': |
1246 | + cr.execute(''' |
1247 | + update ir_model_data set last_modification=NOW(), touched='[''type'']' |
1248 | + where module='sd' and model='account.journal' and res_id in ( |
1249 | + select id from account_journal where type in ('bank', 'cash', 'cheque') and is_current_instance='t' |
1250 | + ) |
1251 | + ''') |
1252 | + |
1253 | + def us_3098_patch(self, cr, uid, *a, **b): |
1254 | + cr.execute(""" |
1255 | + SELECT id, name |
1256 | + FROM res_partner |
1257 | + WHERE name IN (select name from res_partner where partner_type = 'internal') |
1258 | + AND name IN (select name from res_partner where partner_type = 'intermission') |
1259 | + AND partner_type = 'intermission'; |
1260 | + """) |
1261 | + wrong_partners = cr.fetchall() |
1262 | + |
1263 | + updated_doc = [] |
1264 | + for partner in wrong_partners: |
1265 | + intermission_partner_id = partner[0] |
1266 | + partner_name = partner[1] |
1267 | + internal_partner_id = self.pool.get('res.partner').search(cr, uid, [ |
1268 | + ('name', '=', partner_name), |
1269 | + ('partner_type', '=', 'internal'), |
1270 | + ])[0] |
1271 | + address_id = self.pool.get('res.partner.address').search(cr, uid, [ |
1272 | + ('partner_id', '=', internal_partner_id), |
1273 | + ('type', '=', 'default'), |
1274 | + ]) |
1275 | + if not address_id: |
1276 | + address_id = self.pool.get('res.partner.address').search(cr, uid, [ |
1277 | + ('partner_id', '=', internal_partner_id), |
1278 | + ]) |
1279 | + |
1280 | + address_id = address_id[0] |
1281 | + |
1282 | + cr.execute("SELECT name FROM stock_picking WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) |
1283 | + updated_doc += [x[0] for x in cr.fetchall()] |
1284 | + cr.execute(""" |
1285 | + UPDATE stock_picking |
1286 | + SET partner_id = %s, partner_id2 = %s, address_id = %s, partner_type_stock_picking = 'internal', invoice_state = 'none' |
1287 | + WHERE partner_id = %s |
1288 | + AND state not in ('done', 'cancel'); |
1289 | + """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) ) |
1290 | + cr.execute(""" |
1291 | + UPDATE stock_move |
1292 | + SET partner_id = %s, partner_id2 = %s, address_id = %s |
1293 | + WHERE (partner_id = %s OR partner_id2 = %s) AND state not in ('done', 'cancel'); |
1294 | + """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id, intermission_partner_id) ) |
1295 | + |
1296 | + cr.execute("SELECT name FROM purchase_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) |
1297 | + updated_doc += [x[0] for x in cr.fetchall()] |
1298 | + cr.execute(""" |
1299 | + UPDATE purchase_order |
1300 | + SET partner_id = %s, partner_address_id = %s, partner_type = 'internal' |
1301 | + WHERE partner_id = %s |
1302 | + AND state not in ('done', 'cancel'); |
1303 | + """, (internal_partner_id, address_id, intermission_partner_id) ) |
1304 | + cr.execute(""" |
1305 | + UPDATE purchase_order_line pol |
1306 | + SET partner_id = %s |
1307 | + FROM purchase_order po |
1308 | + WHERE pol.order_id = po.id |
1309 | + AND pol.partner_id = %s |
1310 | + AND po.state not in ('done', 'cancel'); |
1311 | + """, (internal_partner_id, intermission_partner_id) ) |
1312 | + |
1313 | + cr.execute("SELECT name FROM sale_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,)) |
1314 | + updated_doc += [x[0] for x in cr.fetchall()] |
1315 | + cr.execute(""" |
1316 | + UPDATE sale_order |
1317 | + SET partner_id = %s, partner_invoice_id = %s, partner_order_id = %s, partner_shipping_id = %s, partner_type = 'internal' |
1318 | + WHERE partner_id = %s |
1319 | + AND state not in ('done', 'cancel'); |
1320 | + """, (internal_partner_id, address_id, address_id, address_id, intermission_partner_id) ) |
1321 | + cr.execute(""" |
1322 | + UPDATE sale_order_line sol |
1323 | + SET order_partner_id = %s |
1324 | + FROM sale_order so |
1325 | + WHERE sol.order_id = so.id |
1326 | + AND sol.order_partner_id = %s |
1327 | + AND so.state not in ('done', 'cancel'); |
1328 | + """, (internal_partner_id, intermission_partner_id) ) |
1329 | + |
1330 | + cr.execute("SELECT name FROM shipment WHERE partner_id = %s AND state not in ('done', 'cancel', 'delivered');", (intermission_partner_id,)) |
1331 | + updated_doc += [x[0] for x in cr.fetchall()] |
1332 | + cr.execute(""" |
1333 | + UPDATE shipment |
1334 | + SET partner_id = %s, partner_id2 = %s, address_id = %s |
1335 | + WHERE partner_id = %s |
1336 | + AND state not in ('done', 'cancel', 'delivered'); |
1337 | + """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) ) |
1338 | + |
1339 | + self._logger.warn("Following documents have been updated with internal partner: %s" % ", ".join(updated_doc)) |
1340 | + |
1341 | + return True |
1342 | + |
1343 | + def us_2257_patch(self, cr, uid, *a, **b): |
1344 | + context = {} |
1345 | + user_obj = self.pool.get('res.users') |
1346 | + partner_obj = self.pool.get('res.partner') |
1347 | + usr = user_obj.browse(cr, uid, [uid], context=context)[0] |
1348 | + level_current = False |
1349 | + |
1350 | + if usr and usr.company_id and usr.company_id.instance_id: |
1351 | + level_current = usr.company_id.instance_id.level |
1352 | + |
1353 | + if level_current == 'section': |
1354 | + intermission_ids = partner_obj.search(cr, uid, [('active', 'in', ['t', 'f']), ('partner_type', '=', 'intermission')]) |
1355 | + address_ids = [] |
1356 | + if intermission_ids: |
1357 | + address_ids = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', 'in', intermission_ids)]) |
1358 | + self._logger.warn('touch %d partners, %d addresses' % (len(intermission_ids), len(address_ids))) |
1359 | + 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 | + if address_ids: |
1361 | + 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 | + |
1363 | + return True |
1364 | + |
1365 | + def us_2730_patch(self, cr, uid, *a, **b): |
1366 | + ''' |
1367 | + remove all translations, and then re-import them |
1368 | + so that the {*}_MF.po files are authoratative |
1369 | + ''' |
1370 | + cr.execute("""delete from ir_model_data where model='ir.translation' and res_id in ( |
1371 | + select id from ir_translation where lang = 'fr_MF' and type != 'model' |
1372 | + ) |
1373 | + """) |
1374 | + cr.execute("delete from ir_translation where lang = 'fr_MF' and type != 'model'") |
1375 | + irmm = self.pool.get('ir.module.module') |
1376 | + msf_profile_id = irmm.search(cr, uid, [('name', '=', 'msf_profile')]) |
1377 | + irmm.update_translations(cr, uid, msf_profile_id) |
1378 | + |
1379 | + def us_2632_patch(self, cr, uid, *a, **b): |
1380 | + '''fix ir.model.data entries on sync_server instances |
1381 | + ''' |
1382 | + update_module = self.pool.get('sync.server.update') |
1383 | + if update_module: |
1384 | + cr.execute(""" |
1385 | + UPDATE ir_model_data SET module='msf_sync_data_server' WHERE |
1386 | + model='sync_server.message_rule' AND module=''; |
1387 | + """) |
1388 | + |
1389 | + def us_2806_add_ir_ui_view_constraint(self, cr, uid, *a, **b): |
1390 | + ''' |
1391 | + The constraint may have not been added during the update because it is |
1392 | + needeed to update all the modules before to add this constraint. |
1393 | + Having it in this patch script will add it at the end of the update. |
1394 | + ''' |
1395 | + cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_ui_view_model_type_priority\'') |
1396 | + if not cr.fetchone(): |
1397 | + cr.execute("""SELECT model, type, priority, count(*) |
1398 | + FROM ir_ui_view |
1399 | + WHERE inherit_id IS NULL |
1400 | + GROUP BY model, type, priority |
1401 | + HAVING count(*) > 1""") |
1402 | + if not cr.fetchone(): |
1403 | + cr.execute('CREATE UNIQUE INDEX ir_ui_view_model_type_priority ON ir_ui_view (priority, type, model) WHERE inherit_id IS NULL') |
1404 | + else: |
1405 | + self._logger.warn('The constraint \'ir_ui_view_model_type_priority\' have not been created because there is some duplicated values.') |
1406 | + |
1407 | +>>>>>>> MERGE-SOURCE |
1408 | def remove_not_synchronized_data(self, cr, uid, *a, **b): |
1409 | ''' |
1410 | The list of models to synchronize was wrong. It is now build |
1411 | |
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 | id,active,applies_to_type,arguments,domain,destination_name,type_id,remote_call,model_id,name,sequence_number,status |
1417 | +<<<<<<< TREE |
1418 | 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 | 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 | 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 | 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 | 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 | 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 | +======= |
1426 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +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 | +>>>>>>> MERGE-SOURCE |
1475 | |
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 | 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 | 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 | 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 | +<<<<<<< TREE |
1484 | 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 | 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 | 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 | 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 | 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 | 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 | +======= |
1491 | +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 | +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 | +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 | +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 | +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 | +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 | +>>>>>>> MERGE-SOURCE |
1498 | 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 | 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 | 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 | |
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 | <field name="delivery_requested_date" required="1" string="Requested date" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" /> |
1508 | <field name="origin" attrs="{'readonly': [('state', 'not in', ['draft', 'validated'])]}" /> |
1509 | <field name="functional_currency_id" /> |
1510 | +<<<<<<< TREE |
1511 | <field name="categ" on_change="onchange_categ(categ)" /> |
1512 | <group colspan="2" col="3"> |
1513 | <field name="stock_take_date" attrs="{'readonly': [('state', 'not in', ['draft'])]}" /> |
1514 | <button colspan="1" name="update_date" string="Update Lines" type="object" context="{'field_name': 'stock_take', 'type': 'sale.order'}" icon="gtk-indent" |
1515 | attrs="{'invisible': [('state', 'not in', ('draft', 'confirmed'))]}" /> |
1516 | </group> |
1517 | +======= |
1518 | + <field name="categ" on_change="onchange_categ(categ)" /> |
1519 | +>>>>>>> MERGE-SOURCE |
1520 | <field name="fo_to_resource" invisible="1" /> |
1521 | <field name="parent_order_name" attrs="{'invisible': [('fo_to_resource', '=', False)]}" /> |
1522 | </group> |
1523 | |
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 | @return: |
1532 | """ |
1533 | # Copy the comment |
1534 | +<<<<<<< TREE |
1535 | if inventory_line: |
1536 | move_vals.update({ |
1537 | 'comment': inventory_line.comment, |
1538 | 'reason_type_id': inventory_line.reason_type_id.id, |
1539 | }) |
1540 | move_vals.update({'not_chained': True}) |
1541 | +======= |
1542 | + if inventory_line: |
1543 | + move_vals.update({ |
1544 | + 'comment': inventory_line.comment, |
1545 | + 'reason_type_id': inventory_line.reason_type_id.id, |
1546 | + }) |
1547 | + move_vals.update({'not_chained': True}) |
1548 | +>>>>>>> MERGE-SOURCE |
1549 | |
1550 | return super(stock_inventory, self)._inventory_line_hook(cr, uid, inventory_line, move_vals) |
1551 | # @@@end |
1552 | |
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 | data = { |
1562 | 'po_name': po_name, |
1563 | 'cdd': cdd, |
1564 | +<<<<<<< TREE |
1565 | 'line_number': line.line_number, |
1566 | 'product_name': line.product_id.name, |
1567 | 'product_code': line.product_id.code, |
1568 | 'is_delivered': False, |
1569 | 'backordered_qty': 0.00, |
1570 | +======= |
1571 | + 'line_number': line.line_number, |
1572 | + 'product_name': line.product_id.name, |
1573 | + 'product_code': line.product_id.code, |
1574 | + 'is_delivered': False, |
1575 | +>>>>>>> MERGE-SOURCE |
1576 | } |
1577 | if first_line: |
1578 | data.update({ |
1579 | @@ -162,6 +169,7 @@ |
1580 | }) |
1581 | first_line = False |
1582 | |
1583 | +<<<<<<< TREE |
1584 | if ppl or ppl_not_shipped: |
1585 | eta = '' |
1586 | is_delivered = False |
1587 | @@ -177,6 +185,23 @@ |
1588 | packing = move.picking_id.name or '' |
1589 | shipment = '' |
1590 | |
1591 | +======= |
1592 | + if ppl or ppl_not_shipped: |
1593 | + eta = '' |
1594 | + is_delivered = False |
1595 | + is_shipment_done = False |
1596 | + if ppl: |
1597 | + packing = move.picking_id.previous_step_id.name or '' |
1598 | + shipment = move.picking_id.shipment_id and move.picking_id.shipment_id.name or '' |
1599 | + eta = datetime.strptime(move.picking_id.shipment_id.shipment_actual_date[0:10], '%Y-%m-%d') |
1600 | + eta += timedelta(days=line.order_id.partner_id.supplier_lt or 0.00) |
1601 | + is_delivered = move.picking_id.shipment_id.state == 'delivered' or False |
1602 | + is_shipment_done = move.picking_id.shipment_id.state == 'done' or False |
1603 | + else: |
1604 | + packing = move.picking_id.name or '' |
1605 | + shipment = '' |
1606 | + |
1607 | +>>>>>>> MERGE-SOURCE |
1608 | if not grouped: |
1609 | key = (packing, shipment, move.product_uom.name) |
1610 | else: |
1611 | |
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 | prod_obj = self.pool.get('product.product') |
1618 | if prod_obj.browse(cr, uid, product).is_ssl: |
1619 | warning = { |
1620 | +<<<<<<< TREE |
1621 | 'title': 'Short Shelf Life product', |
1622 | 'message': _(SHORT_SHELF_LIFE_MESS) |
1623 | } |
1624 | +======= |
1625 | + 'title': 'Short Shelf Life product', |
1626 | + 'message': _(SHORT_SHELF_LIFE_MESS) |
1627 | + } |
1628 | +>>>>>>> MERGE-SOURCE |
1629 | result.update(warning=warning) |
1630 | |
1631 | return result |
1632 | @@ -168,9 +174,15 @@ |
1633 | prod_obj = self.pool.get('product.product') |
1634 | if prod_obj.browse(cr, uid, product).is_ssl: |
1635 | warning = { |
1636 | +<<<<<<< TREE |
1637 | 'title': 'Short Shelf Life product', |
1638 | 'message': _(SHORT_SHELF_LIFE_MESS) |
1639 | } |
1640 | +======= |
1641 | + 'title': 'Short Shelf Life product', |
1642 | + 'message': _(SHORT_SHELF_LIFE_MESS) |
1643 | + } |
1644 | +>>>>>>> MERGE-SOURCE |
1645 | result.update(warning=warning) |
1646 | |
1647 | return result |
1648 | @@ -704,12 +716,21 @@ |
1649 | raise osv.except_osv(_('Error!'), _('The selected product is Expiry Date Mandatory while the selected Batch number corresponds to Batch Number Mandatory.')) |
1650 | if not move.prodlot_id and move.product_qty and \ |
1651 | (move.state == 'done' and \ |
1652 | +<<<<<<< TREE |
1653 | ( \ |
1654 | (move.product_id.track_production and move.location_id.usage == 'production') or \ |
1655 | (move.product_id.track_production and move.location_dest_id.usage == 'production') or \ |
1656 | (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \ |
1657 | (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \ |
1658 | )): |
1659 | +======= |
1660 | + ( \ |
1661 | + (move.product_id.track_production and move.location_id.usage == 'production') or \ |
1662 | + (move.product_id.track_production and move.location_dest_id.usage == 'production') or \ |
1663 | + (move.product_id.track_incoming and move.location_id.usage == 'supplier') or \ |
1664 | + (move.product_id.track_outgoing and move.location_dest_id.usage == 'customer') \ |
1665 | + )): |
1666 | +>>>>>>> MERGE-SOURCE |
1667 | raise osv.except_osv(_('Error!'), _('You must assign a batch number for this product.')) |
1668 | |
1669 | return True |
1670 | @@ -783,6 +804,7 @@ |
1671 | product_ids.add(read_dict['product_id'][0]) |
1672 | |
1673 | product_list_dict = self.pool.get('product.product').read(cr, uid, |
1674 | +<<<<<<< TREE |
1675 | list(product_ids), |
1676 | ['kc_txt', |
1677 | 'ssl_txt', |
1678 | @@ -793,6 +815,18 @@ |
1679 | 'type', |
1680 | 'subtype',], |
1681 | context=context) |
1682 | +======= |
1683 | + list(product_ids), |
1684 | + ['kc_txt', |
1685 | + 'ssl_txt', |
1686 | + 'dg_txt', |
1687 | + 'cs_txt', |
1688 | + 'batch_management', |
1689 | + 'perishable', |
1690 | + 'type', |
1691 | + 'subtype',], |
1692 | + context=context) |
1693 | +>>>>>>> MERGE-SOURCE |
1694 | product_dict = dict([(x['id'], x) for x in product_list_dict]) |
1695 | |
1696 | for stock_move_dict in read_result: |
1697 | @@ -1362,9 +1396,15 @@ |
1698 | '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 | ['Type', 'Product']), |
1700 | (_check_perishable_type_integrity, |
1701 | +<<<<<<< TREE |
1702 | '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 | ['Type', 'Product']), |
1704 | ] |
1705 | +======= |
1706 | + '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 | + ['Type', 'Product']), |
1708 | + ] |
1709 | +>>>>>>> MERGE-SOURCE |
1710 | |
1711 | def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): |
1712 | ''' |
1713 | @@ -1601,9 +1641,15 @@ |
1714 | GROUP BY l.product_id, l.location_id, l.%s, l.expiry_date |
1715 | HAVING count(l.id) > 1 |
1716 | ORDER BY count(l.id) DESC""" % ( |
1717 | +<<<<<<< TREE |
1718 | self._name.replace('.', '_'), |
1719 | self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name', |
1720 | ) |
1721 | +======= |
1722 | + self._name.replace('.', '_'), |
1723 | + self._name == 'stock.inventory' and 'prod_lot_id' or 'prodlot_name', |
1724 | + ) |
1725 | +>>>>>>> MERGE-SOURCE |
1726 | cr.execute(sql_req, (tuple(ids),)) |
1727 | check_res = cr.dictfetchall() |
1728 | if check_res: |
1729 | |
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 | 'location_id': line['location_id'][0], |
1735 | 'location_dest_id': location_id, |
1736 | }) |
1737 | +<<<<<<< TREE |
1738 | value.update({ |
1739 | 'comment': line['comment'], |
1740 | 'reason_type_id': line['reason_type_id'][0], |
1741 | @@ -3071,6 +3072,20 @@ |
1742 | message = _('Inventory') + " '" + inv['name'] + "' "+ _("is validated.") |
1743 | self.log(cr, uid, inv['id'], message) |
1744 | self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]}) |
1745 | +======= |
1746 | + value.update({ |
1747 | + 'comment': line['comment'], |
1748 | + 'reason_type_id': line['reason_type_id'][0], |
1749 | + }) |
1750 | + |
1751 | + if self._name == 'initial.stock.inventory': |
1752 | + value.update({'price_unit': line['average_cost']}) |
1753 | + move_ids.append(self._inventory_line_hook(cr, uid, None, value)) |
1754 | + # Changed the text of the following line to "is confirmed" instead of "is done" due to the state value |
1755 | + message = _('Inventory') + " '" + inv['name'] + "' "+ _("is confirmed.") |
1756 | + self.log(cr, uid, inv['id'], message) |
1757 | + self.write(cr, uid, [inv['id']], {'state': 'confirm', 'move_ids': [(6, 0, move_ids)]}) |
1758 | +>>>>>>> MERGE-SOURCE |
1759 | return True |
1760 | |
1761 | def action_cancel_draft(self, cr, uid, ids, context=None): |
1762 | |
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 | 'notes': move.picking_id and move.picking_id.note or '', |
1768 | } |
1769 | |
1770 | +<<<<<<< TREE |
1771 | line_obj.create(cr, uid, line_values, context=context) |
1772 | |
1773 | for inv_date in inv_line_dates: |
1774 | for new_line in inv_line_to_add[inv_date]: |
1775 | new_line['balance'] = initial_stock |
1776 | line_obj.create(cr, uid, new_line, context=context) |
1777 | +======= |
1778 | + line_obj.create(cr, uid, line_values, context=context) |
1779 | +>>>>>>> MERGE-SOURCE |
1780 | |
1781 | self.write(cr, uid, [ids[0]], {'available_stock': initial_stock}, |
1782 | context=context) |
1783 | |
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 | ############################################################################## |
1791 | |
1792 | name = 'openerp-server' |
1793 | +<<<<<<< TREE |
1794 | version = 'UF6.0rc1' |
1795 | +======= |
1796 | +version = 'UF6.0dev' |
1797 | +>>>>>>> MERGE-SOURCE |
1798 | major_version = '6.0' |
1799 | description = 'OpenERP Server' |
1800 | long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic |
1801 | |
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 | 364232a949995b3e46324fa93b5a06c3 2016-12-14 10:00:00 UF3.0 |
1808 | b2bc3aa15d627714868e8bac1c44b821 2017-01-26 14:00:00 UF3.1 |
1809 | f37e6ab5138ec1768214805ec03b77ec 2017-03-20 16:00:00 UF4.0 |
1810 | +<<<<<<< TREE |
1811 | 0b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1 |
1812 | 7777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0 |
1813 | 6e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1 |
1814 | 07a26b10a43329d42ecbfeb1fe5a26e1 2017-08-29 17:00:00 UF6.0rc1 |
1815 | +======= |
1816 | +0b4c9c7c2367ce89a4258c7e97016f68 2017-05-05 12:00:00 UF4.1 |
1817 | +7777607e902de5a698ab370152ca6302 2017-06-16 09:23:00 UF5.0 |
1818 | +6e67c8793129be46edc2237c80f13846 2017-07-20 15:00:00 UF5.1 |
1819 | +>>>>>>> MERGE-SOURCE |
1820 | |
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 | logger.warning('ExpandedColumnCount is present in file %s line %s.' % (full_path, line_number)) |
1826 | logger.info("Check mako and xml files finished.") |
1827 | |
1828 | +<<<<<<< TREE |
1829 | # |
1830 | # Functions related to upgrading PostgreSQL. |
1831 | # |
1832 | @@ -979,3 +980,374 @@ |
1833 | if sys.platform != 'win32': |
1834 | root = '/' |
1835 | assert get_free_space_mb(root) != None |
1836 | +======= |
1837 | +# |
1838 | +# Functions related to upgrading PostgreSQL. |
1839 | +# |
1840 | + |
1841 | +def _find_pg_patch(): |
1842 | + """ |
1843 | + Looks in the cwd for a file matching pgsql-*-*-patch. |
1844 | + Returns the filename of the patch, the oldVer and the newVer. |
1845 | + """ |
1846 | + import glob |
1847 | + pfiles = glob.glob('pgsql-*-*-patch') |
1848 | + if len(pfiles) == 0: |
1849 | + return None, None, None |
1850 | + if len(pfiles) != 1: |
1851 | + warn("Too many PostgreSQL patch files: %s" % pfiles) |
1852 | + warn("PostgreSQL will not be updated.") |
1853 | + return None, None, None |
1854 | + |
1855 | + (oldVer, newVer) = pfiles[0].split('-')[1:3] |
1856 | + |
1857 | + # Check version format: 8.4.14 or 10.1 |
1858 | + if not re.match('\d+\.\d+(\.\d+)?', oldVer) or \ |
1859 | + not re.match('\d+\.\d+(\.\d+)?', newVer): |
1860 | + return None, None, None |
1861 | + |
1862 | + return pfiles[0], oldVer, newVer |
1863 | + |
1864 | +def _is_major(oldVer, newVer): |
1865 | + oldVer = oldVer.split('.') |
1866 | + newVer = newVer.split('.') |
1867 | + if oldVer[0] != newVer[0]: |
1868 | + return True |
1869 | + if oldVer[0] >= 10: |
1870 | + # for 10.x and onward, second position indicates minor |
1871 | + # version: https://www.postgresql.org/support/versioning/ |
1872 | + return False |
1873 | + if oldVer[1] != newVer[1]: |
1874 | + return True |
1875 | + return False |
1876 | + |
1877 | +def _no_log(*x): |
1878 | + pass |
1879 | + |
1880 | +def _archive_patch(pf): |
1881 | + """ |
1882 | + Put away the patch file in order to indicate that it has |
1883 | + already been applied and PG update should not be attempted |
1884 | + again. |
1885 | + """ |
1886 | + warn('Archiving patch file %s' % pf) |
1887 | + if not os.path.exists('backup'): |
1888 | + os.mkdir('backup') |
1889 | + bf = os.path.join('backup', pf) |
1890 | + if os.path.exists(bf): |
1891 | + os.remove(bf) |
1892 | + os.rename(pf, bf) |
1893 | + |
1894 | +def do_pg_update(): |
1895 | + """ |
1896 | + This function is run on every server start (see openerp-server.py). |
1897 | + If the conditions are not right for a PostgreSQL update, it |
1898 | + immeditately returns, so that the server can start up (the common case). |
1899 | + If an update is required, then it attempts the update. If the |
1900 | + update fails, it must leave the server in the same condition it |
1901 | + started, i.e. with the original Postgres up and running. |
1902 | + """ |
1903 | + |
1904 | + # Postgres updates are only done on Windows. |
1905 | + if os.name != "nt": |
1906 | + return |
1907 | + |
1908 | + # We need to open this here because do_update only |
1909 | + # opens it once it starts to work, not if there is no |
1910 | + # update to apply. |
1911 | + global log |
1912 | + try: |
1913 | + log = open(log_file, 'a') |
1914 | + except Exception as e: |
1915 | + log = os.stderr |
1916 | + warn("Could not open %s correctly: %s" % (log_file, e)) |
1917 | + |
1918 | + # If there is no patch file available, then there's no |
1919 | + # update to do. |
1920 | + pf, oldVer, newVer = _find_pg_patch() |
1921 | + if pf is None: |
1922 | + return |
1923 | + |
1924 | + try: |
1925 | + with open(pf, 'rb') as f: |
1926 | + pdata = f.read() |
1927 | + except Exception as e: |
1928 | + warn("Could not read patch file %s: %s" % (pf, e)) |
1929 | + _archive_patch(pf) |
1930 | + return |
1931 | + |
1932 | + for root in ('c:\\', 'd:\\'): |
1933 | + if os.path.exists(root): |
1934 | + free = get_free_space_mb(root) |
1935 | + if free < 1000: |
1936 | + warn("Less than 1 gb free on %s. Not attempting PostgreSQL upgrade." % root) |
1937 | + return |
1938 | + |
1939 | + # Minor update: |
1940 | + # 1. check that the patch will apply |
1941 | + # 2. stop server |
1942 | + # 3. patch the binaries in place, nuke patch to show it is done |
1943 | + # 4. start server |
1944 | + # |
1945 | + # Minor updates will only happen after the 8.4->9.6.x transition, |
1946 | + # so things are much easier, with more fixed items (PG inst location, |
1947 | + # service name). |
1948 | + if not _is_major(oldVer, newVer): |
1949 | + if oldVer.startswith("8.4."): |
1950 | + warn("Minor patch from 8.4.x not supported.") |
1951 | + return |
1952 | + warn("Postgres minor update from %s to %s" % (oldVer, newVer)) |
1953 | + |
1954 | + try: |
1955 | + bsdifftree.applyPatch(pdata, r'..\pgsql', doIt=False, log=_no_log) |
1956 | + subprocess.call('net stop Postgres', stdout=log, stderr=log) |
1957 | + bsdifftree.applyPatch(pdata, r'..\pgsql', log=warn) |
1958 | + _archive_patch(pf) |
1959 | + except Exception as e: |
1960 | + s = str(e) or type(e) |
1961 | + warn("Could not apply patch:", s) |
1962 | + finally: |
1963 | + subprocess.call('net start Postgres', stdout=log, stderr=log) |
1964 | + warn("Minor update done.") |
1965 | + return |
1966 | + |
1967 | + # Major upgrade |
1968 | + # |
1969 | + # 0. find out if tablespaces are in use, if so abort |
1970 | + # 1. figure out where the old PG is and copy it to pgsql-next |
1971 | + # 2. patch pgsql-next, nuke patch file |
1972 | + # 3. prepare new db dir using new initdb, old user/pass. |
1973 | + # 4. stop server |
1974 | + # 5. pg_upgrade -> if fail, clean db dir, goto 8 |
1975 | + # 6. commit to new bin dir, put it in '..\pgsql' |
1976 | + # 7. if old was 8.4, change service entry |
1977 | + # 8. start server |
1978 | + |
1979 | + warn("Postgres major update from %s to %s" % (oldVer, newVer)) |
1980 | + import tools |
1981 | + |
1982 | + stopped = False |
1983 | + pg_new_db = None |
1984 | + try: |
1985 | + env = os.environ |
1986 | + if tools.config.get('db_user'): |
1987 | + env['PGUSER'] = tools.config['db_user'] |
1988 | + if tools.config.get('db_password'): |
1989 | + env['PGPASSWORD'] = tools.config['db_password'] |
1990 | + |
1991 | + pg_new = r'..\pgsql-next' |
1992 | + if oldVer == '8.4.14': |
1993 | + svc = 'PostgreSQL_For_OpenERP' |
1994 | + pg_old = r'D:\MSF data\Unifield\PostgreSQL' |
1995 | + else: |
1996 | + svc = 'Postgres' |
1997 | + pg_old = r'..\pgsql' |
1998 | + if not os.path.exists(pg_old): |
1999 | + raise RuntimeError('PostgreSQL install directory %s not found.' % pg_old) |
2000 | + |
2001 | + # 0: check for tablespaces (pg_upgrade seems to unify them |
2002 | + # into pg_default, which is not ok) |
2003 | + cmd = [ os.path.join(pg_old, 'bin', 'psql'), '-t', '-c', |
2004 | + 'select count(*) > 2 from pg_tablespace;', 'postgres' ] |
2005 | + out = None |
2006 | + try: |
2007 | + out = subprocess.check_output(cmd, stderr=log, env=env) |
2008 | + except subprocess.CalledProcessError as e: |
2009 | + warn(e) |
2010 | + warn("out is", out) |
2011 | + if out is None or 'f' not in out: |
2012 | + raise RuntimeError("User-defined tablespaces might be in use. Upgrade needs human intervention.") |
2013 | + |
2014 | + # 1: use old PG install to make a new one to patch |
2015 | + if os.path.exists(pg_new): |
2016 | + warn("Removing previous %s directory" % pg_new) |
2017 | + shutil.rmtree(pg_new) |
2018 | + |
2019 | + if oldVer == '8.4.14': |
2020 | + warn("Creating %s by selective copy from %s" % (pg_new, pg_old)) |
2021 | + os.mkdir(pg_new) |
2022 | + for d in ('bin', 'lib', 'share'): |
2023 | + shutil.copytree(os.path.join(pg_old, d), |
2024 | + os.path.join(pg_new, d)) |
2025 | + else: |
2026 | + shutil.copytree(pg_old, pg_new) |
2027 | + |
2028 | + # 2: patch the pg exes -- no trial run here, because if applyPatch |
2029 | + # fails, we have only left pg_new unusable, and we will revert |
2030 | + # to pg_old. Compare to minor (in-place) upgrade, above. |
2031 | + warn('Patching %s' % pg_new) |
2032 | + bsdifftree.applyPatch(pdata, pg_new, log=warn) |
2033 | + _archive_patch(pf) |
2034 | + |
2035 | + # 3: prepare the new db |
2036 | + pg_old_db = r'D:\MSF data\Unifield\PostgreSQL\data' |
2037 | + if not os.path.exists(pg_old_db): |
2038 | + raise RuntimeError('Could not find existing PostgreSQL data in %s' % pg_old_db) |
2039 | + pg_new_db = pg_old_db + '-new' |
2040 | + if os.path.exists(pg_new_db): |
2041 | + raise RuntimeError('New data directory %s already exists.' % pg_new_db) |
2042 | + pwf = tempfile.NamedTemporaryFile(delete=False) |
2043 | + pwf.write(tools.config.get('db_password')) |
2044 | + # TODO: apply same fix here for trust as in the AIO |
2045 | + cmd = [ os.path.join(pg_new, 'bin', 'initdb'), |
2046 | + '--pwfile', pwf.name, |
2047 | + '--data-checksums', '-A', 'md5', |
2048 | + '-U', tools.config.get('db_user'), |
2049 | + '--locale', 'English_United States', |
2050 | + '-E', 'UTF8', pg_new_db |
2051 | + ] |
2052 | + rc = subprocess.call(cmd, stdout=log, stderr=log) |
2053 | + pwf.close() |
2054 | + os.remove(pwf.name) |
2055 | + if rc != 0: |
2056 | + raise RuntimeError("initdb returned %d" % rc) |
2057 | + |
2058 | + # modify the postgresql.conf file for best |
2059 | + # defaults |
2060 | + pgconf = os.path.join(pg_new_db, "postgresql.conf") |
2061 | + with open(pgconf, "a") as f: |
2062 | + f.write("listen_addresses = 'localhost'\n") |
2063 | + f.write("shared_buffers = 1024MB\n") |
2064 | + |
2065 | + # 4: stop old service |
2066 | + subprocess.call('net stop %s' % svc, stdout=log, stderr=log) |
2067 | + stopped = True |
2068 | + |
2069 | + # 5: pg_upgrade |
2070 | + run_analyze = False |
2071 | + cmd = [ os.path.join(pg_new, 'bin', 'pg_upgrade'), |
2072 | + '-b', os.path.join(pg_old, 'bin'), |
2073 | + '-B', os.path.join(pg_new, 'bin'), |
2074 | + '-d', pg_old_db, '-D', pg_new_db, '-k', '-v', |
2075 | + ] |
2076 | + rc = subprocess.call(cmd, stdout=log, stderr=log, env=env) |
2077 | + if rc != 0: |
2078 | + raise RuntimeError("pg_upgrade returned %d" % rc) |
2079 | + |
2080 | + # The pg_upgrade went ok, so we are committed now. Nuke the |
2081 | + # old db directory and move the upgraded one into place. |
2082 | + warn("pg_upgrade returned %d, commiting to new version" % rc) |
2083 | + run_analyze = True |
2084 | + |
2085 | + warn("Rename %s to %s." % (pg_new_db, pg_old_db)) |
2086 | + # we do this with two renames since rmtree/rename sometimes |
2087 | + # failed (why? due to antivirus still holding files open?) |
2088 | + pg_old_db2 = pg_old_db + "-trash" |
2089 | + os.rename(pg_old_db, pg_old_db2) |
2090 | + os.rename(pg_new_db, pg_old_db) |
2091 | + shutil.rmtree(pg_old_db2) |
2092 | + |
2093 | + # 6: commit to new bin dir |
2094 | + if oldVer == '8.4.14': |
2095 | + # Move pg_new to it's final name. |
2096 | + os.rename(pg_new, r'..\pgsql') |
2097 | + # For 8.4->9.9.x transition, nuke 8.4 install |
2098 | + warn("Removing stand-alone PostgreSQL 8.4 installation.") |
2099 | + cmd = [ os.path.join(pg_old, 'uninstall-postgresql.exe'), |
2100 | + '--mode', 'unattended', |
2101 | + ] |
2102 | + rc = subprocess.call(cmd, stdout=log, stderr=log) |
2103 | + if rc != 0: |
2104 | + warn("PostgreSQL 8.4 uninstall returned %d" % rc) |
2105 | + pg_old = r'..\pgsql' |
2106 | + else: |
2107 | + warn("Remove %s." % pg_old) |
2108 | + shutil.rmtree(pg_old) |
2109 | + |
2110 | + warn("Rename %s to %s." % (pg_new, pg_old)) |
2111 | + os.rename(pg_new, pg_old) |
2112 | + |
2113 | + pgp = os.path.normpath(os.path.join(pg_old, 'bin')) |
2114 | + if tools.config['pg_path'] != pgp: |
2115 | + warn("Setting pg_path to %s." % pgp) |
2116 | + tools.config['pg_path'] = pgp |
2117 | + tools.config.save() |
2118 | + |
2119 | + # 7: change service entry to the correct install location |
2120 | + if oldVer == '8.4.14': |
2121 | + cmd = [ |
2122 | + os.path.join(pg_old, 'bin', 'pg_ctl'), |
2123 | + 'register', '-N', 'Postgres', |
2124 | + '-U', 'openpgsvc', |
2125 | + '-P', '0p3npgsvcPWD', |
2126 | + '-D', pg_old_db, |
2127 | + ] |
2128 | + rc = subprocess.call(cmd, stdout=log, stderr=log) |
2129 | + if rc != 0: |
2130 | + raise RuntimeError("pg_ctl returned %d" % rc) |
2131 | + svc = 'Postgres' |
2132 | + |
2133 | + except Exception as e: |
2134 | + s = str(e) or type(e) |
2135 | + warn('Failed to update Postgres:', s) |
2136 | + finally: |
2137 | + try: |
2138 | + if pg_new_db is not None and os.path.exists(pg_new_db): |
2139 | + warn("Removing failed DB upgrade directory %s" % pg_new_db) |
2140 | + shutil.rmtree(pg_new_db) |
2141 | + except Exception: |
2142 | + # don't know what went wrong, but we must not crash here |
2143 | + # or else OpenERP-Server will not start. |
2144 | + pass |
2145 | + # 8. start service (either the old one or the new one) |
2146 | + if stopped: |
2147 | + warn('Starting service %s' % svc) |
2148 | + subprocess.call('net start %s' % svc, stdout=log, stderr=log) |
2149 | + if run_analyze: |
2150 | + cmd = [ os.path.join(r'..\pgsql', 'bin', 'vacuumdb'), |
2151 | + '--all', '--analyze-only' ] |
2152 | + subprocess.call(cmd, stdout=log, stderr=log, env=env) |
2153 | + return |
2154 | + |
2155 | +# https://stackoverflow.com/questions/51658/cross-platform-space-remaining-on-volume-using-python |
2156 | +def get_free_space_mb(dirname): |
2157 | + """Return folder/drive free space (in megabytes).""" |
2158 | + if platform.system() == 'Windows': |
2159 | + free_bytes = ctypes.c_ulonglong(0) |
2160 | + ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes)) |
2161 | + return free_bytes.value / 1024 / 1024 |
2162 | + else: |
2163 | + st = os.statvfs(dirname) |
2164 | + return st.f_bavail * st.f_frsize / 1024 / 1024 |
2165 | + |
2166 | +# |
2167 | +# Unit tests follow |
2168 | +# |
2169 | +if __name__ == '__main__': |
2170 | + d = tempfile.mkdtemp() |
2171 | + os.chdir(d) |
2172 | + |
2173 | + # no file |
2174 | + pf, oldVer, newVer = _find_pg_patch() |
2175 | + assert pf == None |
2176 | + |
2177 | + # one good file |
2178 | + with open('pgsql-8.4.14-9.6.3-patch', 'wb') as f: |
2179 | + f.write('Fake patch for testing.') |
2180 | + pf, oldVer, newVer = _find_pg_patch() |
2181 | + assert oldVer == '8.4.14' |
2182 | + assert newVer == '9.6.3' |
2183 | + assert pf == 'pgsql-8.4.14-9.6.3-patch' |
2184 | + |
2185 | + # two files: oops |
2186 | + warn("Expect 2 messages on stderr after this:") |
2187 | + with open('pgsql-wat-huh-patch', 'wb') as f: |
2188 | + f.write('Second fake patch for testing.') |
2189 | + pf, oldVer, newVer = _find_pg_patch() |
2190 | + assert pf == None |
2191 | + |
2192 | + # one file with wrong version format |
2193 | + os.remove('pgsql-8.4.14-9.6.3-patch') |
2194 | + pf, oldVer, newVer = _find_pg_patch() |
2195 | + assert pf == None |
2196 | + |
2197 | + assert _is_major('8.4.14', '9.6.3') |
2198 | + assert not _is_major('8.4.14', '8.4.15') |
2199 | + assert _is_major('9.6.9', '10.1') |
2200 | + assert not _is_major('10.1', '10.2') |
2201 | + assert _is_major('21.9', '22.1') |
2202 | + |
2203 | + os.chdir('..') |
2204 | + shutil.rmtree(d) |
2205 | + assert get_free_space_mb("D:\\") != None |
2206 | +>>>>>>> MERGE-SOURCE |
2207 | |
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 | "imaplib", "smtplib", "email", "yaml", |
2213 | "uuid", "commands", "mx.DateTime", "json", |
2214 | "pylzma", "xlwt", "passlib", "bcrypt", "six", "cffi", |
2215 | +<<<<<<< TREE |
2216 | "psutil", |
2217 | ], |
2218 | 'dist_dir': 'dist', |
2219 | @@ -77,6 +78,24 @@ |
2220 | 'api-ms-win-core-sysinfo-l1-2-1.dll', |
2221 | 'api-ms-win-security-activedirectoryclient-l1-1-0.dll', |
2222 | ], |
2223 | +======= |
2224 | + ], |
2225 | + 'dist_dir': 'dist', |
2226 | + 'excludes' : ["Tkconstants","Tkinter","tcl"], |
2227 | + 'dll_excludes': [ |
2228 | + 'w9xpopen.exe', 'PSAPI.dll', 'CRYPT32.dll', 'MPR.dll', |
2229 | + 'Secur32.dll', 'SHFOLDER.dll', |
2230 | + 'api-ms-win-core-delayload-l1-1-1.dll', |
2231 | + 'api-ms-win-core-errorhandling-l1-1-1.dll', |
2232 | + 'api-ms-win-core-heap-obsolete-l1-1-0.dll', |
2233 | + 'api-ms-win-core-libraryloader-l1-2-0.dll', |
2234 | + 'api-ms-win-core-processthreads-l1-1-2.dll', |
2235 | + 'api-ms-win-core-profile-l1-1-0.dll', |
2236 | + 'api-ms-win-core-string-obsolete-l1-1-0.dll', |
2237 | + 'api-ms-win-core-sysinfo-l1-2-1.dll', |
2238 | + 'api-ms-win-security-activedirectoryclient-l1-1-0.dll', |
2239 | + ], |
2240 | +>>>>>>> MERGE-SOURCE |
2241 | } |
2242 | } |
2243 | |
2244 | @@ -226,11 +245,18 @@ |
2245 | 'reportlab==2.5', |
2246 | 'pyyaml==3.12', |
2247 | 'egenix-mx-base==3.2.9', |
2248 | +<<<<<<< TREE |
2249 | 'passlib==1.7.1', |
2250 | 'bcrypt==3.1.3', |
2251 | 'xlwt==1.2.0', |
2252 | 'psutil==5.2.2', |
2253 | 'bsdiff4==1.1.4', |
2254 | +======= |
2255 | + 'passlib==1.7.1', |
2256 | + 'bcrypt==3.1.3', |
2257 | + 'xlwt==1.2.0', |
2258 | + 'bsdiff4==1.1.4', |
2259 | +>>>>>>> MERGE-SOURCE |
2260 | ], |
2261 | **py2exe_keywords |
2262 | ) |