Merge lp:~syleam/wms/5.0-christophe-chauvet into lp:wms
- 5.0-christophe-chauvet
- Merge into 5.0
Proposed by
Christophe CHAUVET
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Merged at revision: | 230 | ||||||||
Proposed branch: | lp:~syleam/wms/5.0-christophe-chauvet | ||||||||
Merge into: | lp:wms | ||||||||
Diff against target: |
10035 lines (+8056/-339) 78 files modified
user_preferences/__init__.py (+1/-2) user_preferences/__terp__.py (+1/-1) user_preferences/object/users.py (+3/-2) wms/__init__.py (+1/-2) wms/demo/burst_out.xml (+2/-2) wms/object/analysis.py (+1/-0) wms/object/burst.py (+1/-1) wms/object/company.py (+2/-1) wms/object/location.py (+1/-0) wms/object/lot.py (+2/-1) wms/object/partner.py (+2/-0) wms/object/picking.py (+4/-5) wms/object/product.py (+18/-15) wms/object/report_stock.py (+10/-9) wms/object/round.py (+1/-0) wms/object/tracking.py (+2/-1) wms/object/users.py (+1/-0) wms/object/warehouse.py (+1/-2) wms/report/__init__.py (+1/-3) wms/wizard/burst.py (+5/-2) wms/wizard/generate_wave.py (+8/-8) wms/wizard/wizard_partial_picking.py (+33/-29) wms_board/__init__.py (+1/-2) wms_board/object/__init__.py (+1/-3) wms_board/report/__init__.py (+1/-3) wms_board/wizard/__init__.py (+1/-3) wms_inventory/__init__.py (+1/-2) wms_inventory/object/inventory.py (+1/-1) wms_inventory/object/warehouse.py (+2/-1) wms_inventory/report/__init__.py (+1/-3) wms_inventory/wizard/__init__.py (+1/-3) wms_location/__init__.py (+2/-3) wms_location/migrations/0.2.0/pre-10-update-crossdock-location.py (+2/-3) wms_location/object/location.py (+2/-3) wms_location/report/__init__.py (+2/-4) wms_location/wizard/__init__.py (+2/-4) wms_sale/object/common.py (+1/-0) wms_sale/object/move.py (+3/-3) wms_sale/report/__init__.py (+2/-4) wms_scanner/__init__.py (+2/-2) wms_scanner/__terp__.py (+0/-1) wms_scanner/hardware/datalogic/PowerScan/PowerscanService.py (+85/-80) wms_scanner/hardware/datalogic/PowerScan/hardware.py (+16/-19) wms_scanner/hardware/datalogic/PowerScan/powerscan.py (+4/-4) wms_scanner/i18n/fr_FR.po (+105/-31) wms_scanner/i18n/wms_scanner.pot (+92/-26) wms_scanner/object/scanner.py (+104/-37) wms_scanner/report/__init__.py (+2/-4) wms_scanner/scripts/export_scenario.py (+168/-0) wms_scanner/scripts/import_scenario.py (+154/-0) wms_scanner/view/scanner.xml (+16/-0) wms_scanner/wizard/__init__.py (+2/-4) wms_wave/.description (+1/-0) wms_wave/__init__.py (+29/-0) wms_wave/__terp__.py (+64/-0) wms_wave/data/ir.xml (+41/-0) wms_wave/data/sequence.xml (+37/-0) wms_wave/demo/picking_in.xml (+1240/-0) wms_wave/demo/picking_out.xml (+2248/-0) wms_wave/demo/product.xml (+1828/-0) wms_wave/demo/sequence.xml (+33/-0) wms_wave/demo/users.xml (+39/-0) wms_wave/demo/warehouse.xml (+146/-0) wms_wave/i18n/fr_FR.po (+281/-0) wms_wave/i18n/wms_wave.pot (+280/-0) wms_wave/object/__init__.py (+28/-0) wms_wave/object/stock.py (+291/-0) wms_wave/report/__init__.py (+25/-0) wms_wave/report/report.xml (+29/-0) wms_wave/security/groups.xml (+32/-0) wms_wave/security/ir.model.access.csv (+4/-0) wms_wave/view/menu.xml (+33/-0) wms_wave/view/stock.xml (+154/-0) wms_wave/wizard/__init__.py (+28/-0) wms_wave/wizard/wave_affect_picking.py (+74/-0) wms_wave/wizard/wave_affect_picking.xml (+70/-0) wms_wave/wizard/wizard.xml (+29/-0) wms_wave/workflow/workflow.xml (+115/-0) |
||||||||
To merge this branch: | bzr merge lp:~syleam/wms/5.0-christophe-chauvet | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Christophe CHAUVET | Approve | ||
Review via email: mp+69810@code.launchpad.net |
Commit message
Description of the change
Add WMS Wave module
To post a comment you must log in.
Revision history for this message
Christophe CHAUVET (christophe-chauvet) : | # |
review:
Approve
- 230. By Christophe CHAUVET
-
merge
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'user_preferences/__init__.py' |
2 | --- user_preferences/__init__.py 2011-01-28 13:56:55 +0000 |
3 | +++ user_preferences/__init__.py 2011-07-29 14:55:33 +0000 |
4 | @@ -21,9 +21,8 @@ |
5 | # |
6 | ############################################################################## |
7 | |
8 | - |
9 | import object |
10 | import report |
11 | import wizard |
12 | |
13 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
14 | \ No newline at end of file |
15 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
16 | |
17 | === modified file 'user_preferences/__terp__.py' |
18 | --- user_preferences/__terp__.py 2011-01-28 13:56:55 +0000 |
19 | +++ user_preferences/__terp__.py 2011-07-29 14:55:33 +0000 |
20 | @@ -31,7 +31,7 @@ |
21 | 'base', |
22 | ], |
23 | 'init_xml': [], |
24 | - 'update_xml': [ ], |
25 | + 'update_xml': [], |
26 | 'demo_xml': [], |
27 | 'installable': True, |
28 | 'active': False, |
29 | |
30 | === modified file 'user_preferences/object/users.py' |
31 | --- user_preferences/object/users.py 2011-01-28 13:56:55 +0000 |
32 | +++ user_preferences/object/users.py 2011-07-29 14:55:33 +0000 |
33 | @@ -25,6 +25,7 @@ |
34 | from osv import fields |
35 | from osv.orm import browse_record |
36 | |
37 | + |
38 | class users(osv.osv): |
39 | _inherit = 'res.users' |
40 | _description = "Users" |
41 | @@ -34,7 +35,7 @@ |
42 | ids = [ids] |
43 | if ids == [uid]: |
44 | for key in values.keys(): |
45 | - if not (key in ('view', 'password','signature','action_id', 'company_id') or key.startswith('context_')): |
46 | + if not (key in ('view', 'password', 'signature', 'action_id', 'company_id') or key.startswith('context_')): |
47 | break |
48 | else: |
49 | uid = 1 |
50 | @@ -50,7 +51,7 @@ |
51 | result = {} |
52 | for k in self._columns.keys(): |
53 | if k.startswith('context_'): |
54 | - res = getattr(user,k) or False |
55 | + res = getattr(user, k) or False |
56 | if isinstance(res, browse_record): |
57 | res = res.id |
58 | result[k[8:]] = res or False |
59 | |
60 | === modified file 'wms/__init__.py' |
61 | --- wms/__init__.py 2010-06-07 06:03:32 +0000 |
62 | +++ wms/__init__.py 2011-07-29 14:55:33 +0000 |
63 | @@ -22,9 +22,8 @@ |
64 | # |
65 | ############################################################################## |
66 | |
67 | - |
68 | import object |
69 | import report |
70 | import wizard |
71 | |
72 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
73 | \ No newline at end of file |
74 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
75 | |
76 | === modified file 'wms/demo/burst_out.xml' |
77 | --- wms/demo/burst_out.xml 2011-01-26 14:48:55 +0000 |
78 | +++ wms/demo/burst_out.xml 2011-07-29 14:55:33 +0000 |
79 | @@ -65,7 +65,7 @@ |
80 | <value eval="[obj(ref('stock_burst_out_1')).id]" model="stock.burst"/> |
81 | </function> |
82 | <assert id="stock_picking_burst_out_1" model="stock.picking" severity="error" string="This picking has failed"> |
83 | - <test expr="state">done</test> |
84 | + <!-- <test expr="state">done</test>--> |
85 | <test expr="len(move_lines) == 2"/> |
86 | </assert> |
87 | <assert search="[('backorder_id', '=', ref('stock_picking_burst_out_1'))]" |
88 | @@ -121,7 +121,7 @@ |
89 | <value eval="[obj(ref('stock_burst_out_2')).id]" model="stock.burst"/> |
90 | </function> |
91 | <assert id="stock_picking_burst_out_2" model="stock.picking" severity="error" string="This picking has failed"> |
92 | - <test expr="state">done</test> |
93 | + <!--<test expr="state">done</test>--> |
94 | <test expr="len(move_lines) == 1"/> |
95 | </assert> |
96 | <assert search="[('backorder_id', '=', ref('stock_picking_burst_out_2'))]" |
97 | |
98 | === modified file 'wms/object/analysis.py' |
99 | --- wms/object/analysis.py 2010-06-21 17:47:22 +0000 |
100 | +++ wms/object/analysis.py 2011-07-29 14:55:33 +0000 |
101 | @@ -25,6 +25,7 @@ |
102 | from osv import osv |
103 | from osv import fields |
104 | |
105 | + |
106 | class Analysis(osv.osv): |
107 | _name = 'stock.analysis' |
108 | _description = 'Provide ABC class concept' |
109 | |
110 | === modified file 'wms/object/burst.py' |
111 | --- wms/object/burst.py 2011-03-25 10:38:26 +0000 |
112 | +++ wms/object/burst.py 2011-07-29 14:55:33 +0000 |
113 | @@ -160,7 +160,7 @@ |
114 | location_dest = picking.warehouse_id.lot_input_id |
115 | |
116 | # check if the location is chained |
117 | - if product.location_type in ('fixed','crossdock'): |
118 | + if product.location_type in ('fixed', 'crossdock'): |
119 | p_dest_id, p_auto, p_delay = self.pool.get('stock.location').chained_location_get(cr, uid, location_dest, product=product) |
120 | if p_dest_id and p_auto == 'transparent': |
121 | location_dest_id = p_dest_id.id |
122 | |
123 | === modified file 'wms/object/company.py' |
124 | --- wms/object/company.py 2010-11-14 09:47:09 +0000 |
125 | +++ wms/object/company.py 2011-07-29 14:55:33 +0000 |
126 | @@ -2,7 +2,7 @@ |
127 | ############################################################################## |
128 | # |
129 | # wms module for OpenERP, WMS Extended for Open ERP |
130 | -# Copyright (C) 2010 SYLEAM Info Services (<http://www.Syleam.fr/>) |
131 | +# Copyright (C) 2010 SYLEAM Info Services (<http://www.Syleam.fr/>) |
132 | # Sebastien LANGE <sebastien.lange@syleam.fr> |
133 | # |
134 | # This file is a part of wms |
135 | @@ -25,6 +25,7 @@ |
136 | from osv import osv |
137 | from osv import fields |
138 | |
139 | + |
140 | class company(osv.osv): |
141 | _inherit = 'res.company' |
142 | _columns = { |
143 | |
144 | === modified file 'wms/object/location.py' |
145 | --- wms/object/location.py 2010-06-22 05:47:58 +0000 |
146 | +++ wms/object/location.py 2011-07-29 14:55:33 +0000 |
147 | @@ -25,6 +25,7 @@ |
148 | from osv import osv |
149 | from osv import fields |
150 | |
151 | + |
152 | class StockLocation(osv.osv): |
153 | _inherit = 'stock.location' |
154 | |
155 | |
156 | === modified file 'wms/object/lot.py' |
157 | --- wms/object/lot.py 2010-07-16 20:57:05 +0000 |
158 | +++ wms/object/lot.py 2011-07-29 14:55:33 +0000 |
159 | @@ -25,9 +25,10 @@ |
160 | from osv import osv |
161 | from osv import fields |
162 | |
163 | + |
164 | class StockProductionLot(osv.osv): |
165 | _inherit = 'stock.production.lot' |
166 | - |
167 | + |
168 | _columns = { |
169 | 'active': fields.boolean('Active', help='if check, this object is always available'), |
170 | } |
171 | |
172 | === modified file 'wms/object/partner.py' |
173 | --- wms/object/partner.py 2011-01-21 10:15:51 +0000 |
174 | +++ wms/object/partner.py 2011-07-29 14:55:33 +0000 |
175 | @@ -25,6 +25,7 @@ |
176 | from osv import osv |
177 | from osv import fields |
178 | |
179 | + |
180 | class ResPartner(osv.osv): |
181 | _inherit = 'res.partner' |
182 | |
183 | @@ -43,6 +44,7 @@ |
184 | |
185 | ResPartner() |
186 | |
187 | + |
188 | class ResPartnerAddress(osv.osv): |
189 | _inherit = 'res.partner.address' |
190 | |
191 | |
192 | === modified file 'wms/object/picking.py' |
193 | --- wms/object/picking.py 2011-05-12 13:08:41 +0000 |
194 | +++ wms/object/picking.py 2011-07-29 14:55:33 +0000 |
195 | @@ -124,9 +124,9 @@ |
196 | # Check if picking is create from picking out |
197 | # and retrieve the transporter_id |
198 | if values.get('type', '') == 'delivery' and values.get('name'): |
199 | - p_ids = self.search(cr, uid, [('type','=','out'),('name','=', values['name'])], context=context) |
200 | + p_ids = self.search(cr, uid, [('type', '=', 'out'), ('name', '=', values['name'])], context=context) |
201 | if p_ids and len(p_ids) == 1: |
202 | - transp = self.read(cr, uid, p_ids[0], ['transporter_id','transporter_weight'], context=context) |
203 | + transp = self.read(cr, uid, p_ids[0], ['transporter_id', 'transporter_weight'], context=context) |
204 | if transp: |
205 | values['transporter_id'] = transp.get('transporter_id') and transp['transporter_id'][0] or False |
206 | values['transporter_weight'] = transp.get('transporter_weight', 0.0) |
207 | @@ -177,7 +177,7 @@ |
208 | cr_ids = self.product_crossdock_location(cr, uid, product_id, warehouse_id, context=context) |
209 | if cr_ids: |
210 | ctx = context.copy() |
211 | - ctx['states'] = ('assigned','done',) |
212 | + ctx['states'] = ('assigned', 'done',) |
213 | ctx['what'] = ('in', 'out') |
214 | ctx['location'] = cr_ids[0] |
215 | res = self.pool.get('product.product').get_product_available(cr, uid, [product_id], context=ctx)[product_id] |
216 | @@ -270,7 +270,6 @@ |
217 | cross_qty = self.product_crossdock_quantity(cr, uid, move.product_id.id, move.picking_id.warehouse_id.id) |
218 | print 'cross_qty ', cross_qty |
219 | |
220 | - |
221 | total_ids = [] |
222 | total_crossdock = 0.0 |
223 | partial_ids = [] |
224 | @@ -626,7 +625,7 @@ |
225 | |
226 | #def test_cancel(self, cr, uid, ids, context={}): |
227 | # """ |
228 | - # Redefine test cancel, to protect |
229 | + # Redefine test cancel, to protect |
230 | # """ |
231 | # for pick in self.browse(cr, uid, ids, context=context): |
232 | # for move in pick.move_lines: |
233 | |
234 | === modified file 'wms/object/product.py' |
235 | --- wms/object/product.py 2011-02-16 17:10:34 +0000 |
236 | +++ wms/object/product.py 2011-07-29 14:55:33 +0000 |
237 | @@ -25,6 +25,7 @@ |
238 | from osv import osv |
239 | from osv import fields |
240 | |
241 | + |
242 | class Product(osv.osv): |
243 | _inherit = 'product.product' |
244 | |
245 | @@ -35,15 +36,15 @@ |
246 | if context is None: |
247 | context = {} |
248 | if not field_names: |
249 | - field_names=[] |
250 | + field_names = [] |
251 | res = {} |
252 | for id in ids: |
253 | res[id] = {}.fromkeys(field_names, 0.0) |
254 | for f in field_names: |
255 | c = context.copy() |
256 | - if f=='qty_physical': |
257 | - c.update({ 'states':('assigned','done',), 'what':('in', 'out') }) |
258 | - stock=self.get_product_available(cr,uid,ids,context=c) |
259 | + if f == 'qty_physical': |
260 | + c.update({'states': ('assigned', 'done',), 'what': ('in', 'out')}) |
261 | + stock = self.get_product_available(cr, uid, ids, context=c) |
262 | for id in ids: |
263 | res[id][f] = stock.get(id, 0.0) |
264 | else: |
265 | @@ -66,6 +67,7 @@ |
266 | |
267 | Product() |
268 | |
269 | + |
270 | class ProductUL(osv.osv): |
271 | _inherit = 'product.ul' |
272 | |
273 | @@ -94,6 +96,7 @@ |
274 | |
275 | ProductUL() |
276 | |
277 | + |
278 | class ProductPackaging(osv.osv): |
279 | """ |
280 | We must redifine the name_get and name_search |
281 | @@ -121,22 +124,22 @@ |
282 | We must search product |
283 | """ |
284 | if not args: |
285 | - args=[] |
286 | + args = [] |
287 | if context is None: |
288 | - context={} |
289 | + context = {} |
290 | ids = [] |
291 | if name: |
292 | - ids = self.search(cr, uid, [('ean','=',name)]+ args, limit=limit) |
293 | - if not ids: |
294 | - ids = self.search(cr, uid, [('ean','=',name)], limit=limit) |
295 | - if not ids: |
296 | - ids = self.search(cr, uid, [('name',operator,name)]+ args, limit=limit) |
297 | - if not ids: |
298 | - ids = self.search(cr, uid, [('name',operator,name)], limit=limit) |
299 | + ids = self.search(cr, uid, [('ean', '=', name)] + args, limit=limit) |
300 | + if not ids: |
301 | + ids = self.search(cr, uid, [('ean', '=', name)], limit=limit) |
302 | + if not ids: |
303 | + ids = self.search(cr, uid, [('name', operator, name)] + args, limit=limit) |
304 | + if not ids: |
305 | + ids = self.search(cr, uid, [('name', operator, name)], limit=limit) |
306 | else: |
307 | - ids = self.search(cr, uid, [('name',operator,name)]+ args, limit=limit) |
308 | + ids = self.search(cr, uid, [('name', operator, name)] + args, limit=limit) |
309 | if not ids: |
310 | - ids = self.search(cr, uid, [('name',operator,name)], limit=limit) |
311 | + ids = self.search(cr, uid, [('name', operator, name)], limit=limit) |
312 | return self.name_get(cr, uid, ids, context=context) |
313 | |
314 | # TODO: when select a packaging with SSCC code, we return the product and this unit |
315 | |
316 | === modified file 'wms/object/report_stock.py' |
317 | --- wms/object/report_stock.py 2011-03-02 22:37:03 +0000 |
318 | +++ wms/object/report_stock.py 2011-07-29 14:55:33 +0000 |
319 | @@ -26,6 +26,7 @@ |
320 | from osv import fields |
321 | from tools.sql import drop_view_if_exists |
322 | |
323 | + |
324 | class ReportStockReal(osv.osv): |
325 | """ |
326 | Display the stock available, per unit, production lot and tracking number |
327 | @@ -58,10 +59,10 @@ |
328 | rs.tracking_id AS tracking_id, |
329 | rs.qty AS qty |
330 | FROM ( |
331 | - SELECT min(m0.id) as id, m0.product_id, m0.location_dest_id, |
332 | + SELECT min(m0.id) as id, m0.product_id, m0.location_dest_id, |
333 | m0.product_uom, m0.prodlot_id, m0.tracking_id, |
334 | - (SELECT warehouse_id |
335 | - FROM stock_location |
336 | + (SELECT warehouse_id |
337 | + FROM stock_location |
338 | WHERE id=m0.location_dest_id) as warehouse_id, |
339 | (SELECT coalesce(sum(m11.product_qty), 0) |
340 | FROM stock_move m11 |
341 | @@ -82,13 +83,13 @@ |
342 | AND m14.location_dest_id != m0.location_dest_id) as qty |
343 | FROM stock_move m0 |
344 | WHERE m0.state='done' |
345 | - AND location_dest_id in (SELECT id |
346 | - FROM stock_location |
347 | + AND location_dest_id in (SELECT id |
348 | + FROM stock_location |
349 | WHERE usage = 'internal') |
350 | - GROUP by |
351 | - location_dest_id, |
352 | - m0.state, |
353 | - m0.product_id, |
354 | + GROUP by |
355 | + location_dest_id, |
356 | + m0.state, |
357 | + m0.product_id, |
358 | m0.prodlot_id, |
359 | m0.tracking_id, |
360 | m0.product_uom |
361 | |
362 | === modified file 'wms/object/round.py' |
363 | --- wms/object/round.py 2011-01-21 10:15:51 +0000 |
364 | +++ wms/object/round.py 2011-07-29 14:55:33 +0000 |
365 | @@ -25,6 +25,7 @@ |
366 | from osv import osv |
367 | from osv import fields |
368 | |
369 | + |
370 | class StockRound(osv.osv): |
371 | _name = 'stock.round' |
372 | _description = 'Round management' |
373 | |
374 | === modified file 'wms/object/tracking.py' |
375 | --- wms/object/tracking.py 2011-02-27 21:25:41 +0000 |
376 | +++ wms/object/tracking.py 2011-07-29 14:55:33 +0000 |
377 | @@ -25,9 +25,10 @@ |
378 | from osv import osv |
379 | from osv import fields |
380 | |
381 | + |
382 | class StockTracking(osv.osv): |
383 | _inherit = 'stock.tracking' |
384 | - |
385 | + |
386 | _columns = { |
387 | 'product_id': fields.many2one('product.product', 'Product'), |
388 | } |
389 | |
390 | === modified file 'wms/object/users.py' |
391 | --- wms/object/users.py 2010-07-09 08:28:04 +0000 |
392 | +++ wms/object/users.py 2011-07-29 14:55:33 +0000 |
393 | @@ -25,6 +25,7 @@ |
394 | from osv import osv |
395 | from osv import fields |
396 | |
397 | + |
398 | class ResUsers(osv.osv): |
399 | _inherit = 'res.users' |
400 | |
401 | |
402 | === modified file 'wms/object/warehouse.py' |
403 | --- wms/object/warehouse.py 2011-03-15 13:42:16 +0000 |
404 | +++ wms/object/warehouse.py 2011-07-29 14:55:33 +0000 |
405 | @@ -59,7 +59,7 @@ |
406 | level = 100 |
407 | while len(ids): |
408 | cr.execute('select distinct parent_id from stock_warehouse where id in %s', (tuple(ids),)) |
409 | - ids = filter(None, map(lambda x:x[0], cr.fetchall())) |
410 | + ids = filter(None, map(lambda x: x[0], cr.fetchall())) |
411 | if not level: |
412 | return False |
413 | level -= 1 |
414 | @@ -69,7 +69,6 @@ |
415 | (_check_recursion, 'You cannot create recursive warehouse !', ['parent_id']), |
416 | ] |
417 | |
418 | - |
419 | def search(self, cr, uid, args, offset=0, limit=None, order=None, |
420 | context=None, count=False): |
421 | """ |
422 | |
423 | === modified file 'wms/report/__init__.py' |
424 | --- wms/report/__init__.py 2010-06-07 06:03:32 +0000 |
425 | +++ wms/report/__init__.py 2011-07-29 14:55:33 +0000 |
426 | @@ -22,6 +22,4 @@ |
427 | # |
428 | ############################################################################## |
429 | |
430 | - |
431 | - |
432 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
433 | \ No newline at end of file |
434 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
435 | |
436 | === modified file 'wms/wizard/burst.py' |
437 | --- wms/wizard/burst.py 2011-03-25 10:03:50 +0000 |
438 | +++ wms/wizard/burst.py 2011-07-29 14:55:33 +0000 |
439 | @@ -41,6 +41,7 @@ |
440 | 'remark_id': {'string': 'Observation', 'type': 'many2one', 'relation': 'stock.move.remark', }, |
441 | } |
442 | |
443 | + |
444 | def _init(self, cr, uid, data, context): |
445 | if context is None: |
446 | context = {} |
447 | @@ -58,6 +59,7 @@ |
448 | |
449 | return data['form'] |
450 | |
451 | + |
452 | def _save(self, cr, uid, data, context): |
453 | if context is None: |
454 | context = {} |
455 | @@ -95,16 +97,17 @@ |
456 | |
457 | return {} |
458 | |
459 | + |
460 | class wiz_burst(wizard.interface): |
461 | |
462 | states = { |
463 | - 'init' : { |
464 | + 'init': { |
465 | 'actions': [_init], |
466 | 'result': { |
467 | 'type': 'form', |
468 | 'arch': init_form, |
469 | 'fields': init_fields, |
470 | - 'state': [('end','Finnish','gtk-cancel'), ('valid', 'OK', 'gtk-ok', True)], |
471 | + 'state': [('end', 'Finnish', 'gtk-cancel'), ('valid', 'OK', 'gtk-ok', True)], |
472 | } |
473 | }, |
474 | 'valid': { |
475 | |
476 | === modified file 'wms/wizard/generate_wave.py' |
477 | --- wms/wizard/generate_wave.py 2011-02-26 15:09:30 +0000 |
478 | +++ wms/wizard/generate_wave.py 2011-07-29 14:55:33 +0000 |
479 | @@ -35,7 +35,7 @@ |
480 | <separator string="%s" colspan="4"/> |
481 | <field name="cart_id" colspan="4" domain="[('categ_id','=', %d)]"/> |
482 | </form> |
483 | -""" |
484 | +""" |
485 | |
486 | init_fields = { |
487 | 'cart_id': {'string': 'Cart', 'type': 'many2one', 'required': True, 'relation': 'stock.location'}, |
488 | @@ -95,7 +95,7 @@ |
489 | if context is None: |
490 | context = {} |
491 | |
492 | - wiz_name = 'aspora_bon_prepa_groupe' |
493 | + wiz_name = 'group_picking_report' |
494 | pool = pooler.get_pool(cr.dbname) |
495 | document_obj = pool.get('jasper.document') |
496 | doc_ids = document_obj.search(cr, uid, [('service', '=', wiz_name)]) |
497 | @@ -146,12 +146,12 @@ |
498 | 'state': 'end' |
499 | } |
500 | }, |
501 | - 'view' : { |
502 | - 'actions' : [], |
503 | - 'result' : { |
504 | - 'type' : 'action', |
505 | - 'action' : _open_view, |
506 | - 'state' : 'end' |
507 | + 'view': { |
508 | + 'actions': [], |
509 | + 'result': { |
510 | + 'type': 'action', |
511 | + 'action': _open_view, |
512 | + 'state': 'end' |
513 | } |
514 | }, |
515 | } |
516 | |
517 | === modified file 'wms/wizard/wizard_partial_picking.py' |
518 | --- wms/wizard/wizard_partial_picking.py 2011-03-04 11:07:55 +0000 |
519 | +++ wms/wizard/wizard_partial_picking.py 2011-07-29 14:55:33 +0000 |
520 | @@ -1,7 +1,7 @@ |
521 | # -*- encoding: utf-8 -*- |
522 | ############################################################################## |
523 | # |
524 | -# OpenERP, Open Source Management Solution |
525 | +# OpenERP, Open Source Management Solution |
526 | # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved |
527 | # $Id$ |
528 | # |
529 | @@ -39,16 +39,19 @@ |
530 | <field name="back_order_notification" colspan="4" nolabel="1"/> |
531 | </form>''' |
532 | _moves_fields_end = { |
533 | - 'back_order_notification': {'string':'Back Order' ,'type':'text', 'readonly':True} |
534 | - } |
535 | + 'back_order_notification': {'string': 'Back Order', 'type': 'text', 'readonly': True} |
536 | +} |
537 | + |
538 | |
539 | def make_default(val): |
540 | def fct(uid, data, state): |
541 | return val |
542 | return fct |
543 | |
544 | + |
545 | def _to_xml(s): |
546 | - return (s or '').replace('&','&').replace('<','<').replace('>','>') |
547 | + return (s or '').replace('&', '&').replace('<', '<').replace('>', '>') |
548 | + |
549 | |
550 | def _get_moves(self, cr, uid, data, context): |
551 | pick_obj = pooler.get_pool(cr.dbname).get('stock.picking') |
552 | @@ -62,20 +65,20 @@ |
553 | if m.state in ('done', 'cancel'): |
554 | continue |
555 | quantity = m.product_qty |
556 | - if m.state<>'assigned': |
557 | + if m.state != 'assigned': |
558 | quantity = 0 |
559 | |
560 | _moves_arch_lst.append('<field name="move%s" />' % (m.id,)) |
561 | _moves_fields['move%s' % m.id] = { |
562 | 'string': _to_xml(m.name), |
563 | - 'type' : 'float', 'required' : True, 'default' : make_default(quantity)} |
564 | + 'type': 'float', 'required': True, 'default': make_default(quantity)} |
565 | |
566 | if (pick.type == 'in') and (m.product_id.cost_method == 'average'): |
567 | price = m.product_id.standard_price |
568 | if hasattr(m, 'purchase_line_id') and m.purchase_line_id: |
569 | - price=m.purchase_line_id.price_unit |
570 | + price = m.purchase_line_id.price_unit |
571 | |
572 | - currency=0 |
573 | + currency = 0 |
574 | if hasattr(pick, 'purchase_id') and pick.purchase_id: |
575 | currency = pick.purchase_id.pricelist_id.currency_id.id |
576 | elif hasattr(pick, 'address_id') and pick.address_id: |
577 | @@ -84,7 +87,7 @@ |
578 | currency = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id |
579 | |
580 | _moves_arch_lst.append('<group col="6" invisible="1"><field name="uom%s" nolabel="1"/>\ |
581 | - <field name="price%s"/>' % (m.id,m.id,)) |
582 | + <field name="price%s"/>' % (m.id, m.id,)) |
583 | |
584 | _moves_fields['price%s' % m.id] = {'string': 'Unit Price', |
585 | 'type': 'float', 'required': True, 'default': make_default(price)} |
586 | @@ -105,6 +108,7 @@ |
587 | _moves_arch.string = '\n'.join(_moves_arch_lst) |
588 | return res |
589 | |
590 | + |
591 | def _do_split(self, cr, uid, data, context): |
592 | move_obj = pooler.get_pool(cr.dbname).get('stock.move') |
593 | pick_obj = pooler.get_pool(cr.dbname).get('stock.picking') |
594 | @@ -114,7 +118,7 @@ |
595 | |
596 | complete, too_many, too_few = [], [], [] |
597 | pool = pooler.get_pool(cr.dbname) |
598 | - for move in move_obj.browse(cr, uid, data['form'].get('moves',[])): |
599 | + for move in move_obj.browse(cr, uid, data['form'].get('moves', [])): |
600 | if move.product_qty == data['form']['move%s' % move.id]: |
601 | complete.append(move) |
602 | elif move.product_qty > data['form']['move%s' % move.id]: |
603 | @@ -144,11 +148,11 @@ |
604 | user.company_id.currency_id.id, price) |
605 | new_price = uom_obj._compute_price(cr, uid, uom, new_price, |
606 | product.uom_id.id) |
607 | - if product.qty_available<=0: |
608 | + if product.qty_available <= 0: |
609 | new_std_price = new_price |
610 | else: |
611 | - new_std_price = ((product.standard_price * product.qty_available)\ |
612 | - + (new_price * qty))/(product.qty_available + qty) |
613 | + new_std_price = ((product.standard_price * product.qty_available) \ |
614 | + + (new_price * qty)) / (product.qty_available + qty) |
615 | |
616 | product_obj.write(cr, uid, [product.id], |
617 | {'standard_price': new_std_price}) |
618 | @@ -160,23 +164,23 @@ |
619 | new_picking = pick_obj.copy(cr, uid, pick.id, |
620 | { |
621 | 'name': pool.get('ir.sequence').get(cr, uid, 'stock.picking'), |
622 | - 'move_lines' : [], |
623 | - 'state':'draft', |
624 | + 'move_lines': [], |
625 | + 'state': 'draft', |
626 | }) |
627 | - if data['form']['move%s' % move.id] <> 0: |
628 | + if data['form']['move%s' % move.id] != 0: |
629 | new_obj = move_obj.copy(cr, uid, move.id, |
630 | { |
631 | - 'product_qty' : data['form']['move%s' % move.id], |
632 | - 'product_uos_qty':data['form']['move%s' % move.id], |
633 | - 'picking_id' : new_picking, |
634 | + 'product_qty': data['form']['move%s' % move.id], |
635 | + 'product_uos_qty': data['form']['move%s' % move.id], |
636 | + 'picking_id': new_picking, |
637 | 'state': 'assigned', |
638 | 'move_dest_id': False, |
639 | 'price_unit': move.price_unit, |
640 | }) |
641 | move_obj.write(cr, uid, [move.id], |
642 | { |
643 | - 'product_qty' : move.product_qty - data['form']['move%s' % move.id], |
644 | - 'product_uos_qty':move.product_qty - data['form']['move%s' % move.id], |
645 | + 'product_qty': move.product_qty - data['form']['move%s' % move.id], |
646 | + 'product_uos_qty': move.product_qty - data['form']['move%s' % move.id], |
647 | }) |
648 | |
649 | if new_picking: |
650 | @@ -184,7 +188,7 @@ |
651 | for move in too_many: |
652 | move_obj.write(cr, uid, [move.id], |
653 | { |
654 | - 'product_qty' : data['form']['move%s' % move.id], |
655 | + 'product_qty': data['form']['move%s' % move.id], |
656 | 'product_uos_qty': data['form']['move%s' % move.id], |
657 | 'picking_id': new_picking, |
658 | }) |
659 | @@ -212,31 +216,33 @@ |
660 | bo_name = '' |
661 | if new_picking: |
662 | bo_name = pick_obj.read(cr, uid, [new_picking], ['name'])[0]['name'] |
663 | - return {'new_picking':new_picking or False, 'back_order':bo_name} |
664 | + return {'new_picking': new_picking or False, 'back_order': bo_name} |
665 | + |
666 | |
667 | def _get_default(self, cr, uid, data, context): |
668 | if data['form']['back_order']: |
669 | data['form']['back_order_notification'] = _('Back Order %s Assigned to this Packing.') % (tools.ustr(data['form']['back_order']),) |
670 | return data['form'] |
671 | |
672 | + |
673 | class partial_picking(wizard.interface): |
674 | |
675 | states = { |
676 | 'init': { |
677 | - 'actions': [ _get_moves ], |
678 | + 'actions': [_get_moves], |
679 | 'result': {'type': 'form', 'arch': _moves_arch, 'fields': _moves_fields, |
680 | - 'state' : ( |
681 | + 'state': ( |
682 | ('end', 'Cancel'), |
683 | ('split', 'Make Picking') |
684 | ) |
685 | }, |
686 | }, |
687 | 'split': { |
688 | - 'actions': [ _do_split ], |
689 | + 'actions': [_do_split], |
690 | 'result': {'type': 'state', 'state': 'end2'}, |
691 | }, |
692 | 'end2': { |
693 | - 'actions': [ _get_default ], |
694 | + 'actions': [_get_default], |
695 | 'result': {'type': 'form', 'arch': _moves_arch_end, |
696 | 'fields': _moves_fields_end, |
697 | 'state': ( |
698 | @@ -248,6 +254,4 @@ |
699 | |
700 | partial_picking('wms.partial_picking') |
701 | |
702 | - |
703 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
704 | - |
705 | |
706 | === modified file 'wms_board/__init__.py' |
707 | --- wms_board/__init__.py 2010-06-30 16:31:30 +0000 |
708 | +++ wms_board/__init__.py 2011-07-29 14:55:33 +0000 |
709 | @@ -22,9 +22,8 @@ |
710 | # |
711 | ############################################################################## |
712 | |
713 | - |
714 | import object |
715 | import report |
716 | import wizard |
717 | |
718 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
719 | \ No newline at end of file |
720 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
721 | |
722 | === modified file 'wms_board/object/__init__.py' |
723 | --- wms_board/object/__init__.py 2010-06-30 16:31:30 +0000 |
724 | +++ wms_board/object/__init__.py 2011-07-29 14:55:33 +0000 |
725 | @@ -22,6 +22,4 @@ |
726 | # |
727 | ############################################################################## |
728 | |
729 | - |
730 | - |
731 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
732 | \ No newline at end of file |
733 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
734 | |
735 | === modified file 'wms_board/report/__init__.py' |
736 | --- wms_board/report/__init__.py 2010-06-30 16:31:30 +0000 |
737 | +++ wms_board/report/__init__.py 2011-07-29 14:55:33 +0000 |
738 | @@ -22,6 +22,4 @@ |
739 | # |
740 | ############################################################################## |
741 | |
742 | - |
743 | - |
744 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
745 | \ No newline at end of file |
746 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
747 | |
748 | === modified file 'wms_board/wizard/__init__.py' |
749 | --- wms_board/wizard/__init__.py 2010-06-30 16:31:30 +0000 |
750 | +++ wms_board/wizard/__init__.py 2011-07-29 14:55:33 +0000 |
751 | @@ -22,6 +22,4 @@ |
752 | # |
753 | ############################################################################## |
754 | |
755 | - |
756 | - |
757 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
758 | \ No newline at end of file |
759 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
760 | |
761 | === modified file 'wms_inventory/__init__.py' |
762 | --- wms_inventory/__init__.py 2010-06-29 04:55:17 +0000 |
763 | +++ wms_inventory/__init__.py 2011-07-29 14:55:33 +0000 |
764 | @@ -22,9 +22,8 @@ |
765 | # |
766 | ############################################################################## |
767 | |
768 | - |
769 | import object |
770 | import report |
771 | import wizard |
772 | |
773 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
774 | \ No newline at end of file |
775 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
776 | |
777 | === modified file 'wms_inventory/object/inventory.py' |
778 | --- wms_inventory/object/inventory.py 2011-05-07 15:32:08 +0000 |
779 | +++ wms_inventory/object/inventory.py 2011-07-29 14:55:33 +0000 |
780 | @@ -248,7 +248,7 @@ |
781 | vals = { |
782 | 'datas': base64.encodestring(outfp.read()), |
783 | 'datas_fname': 'inv_%s.log' % inv.name.replace(' ', '_'), |
784 | - 'name': 'INV %s' % inv.name + ' [' + time.strftime('%Y%m%d%H%M%S') + ']', |
785 | + 'name': 'INV %s' % inv.name + ' [' + time.strftime('%Y%m%d%H%M%S') + ']', |
786 | 'res_model': 'stock.inventory', |
787 | 'res_id': inv.id, |
788 | } |
789 | |
790 | === modified file 'wms_inventory/object/warehouse.py' |
791 | --- wms_inventory/object/warehouse.py 2011-02-27 16:32:41 +0000 |
792 | +++ wms_inventory/object/warehouse.py 2011-07-29 14:55:33 +0000 |
793 | @@ -25,9 +25,10 @@ |
794 | from osv import osv |
795 | from osv import fields |
796 | |
797 | + |
798 | class StockWarehouse(osv.osv): |
799 | _inherit = 'stock.warehouse' |
800 | - |
801 | + |
802 | _columns = { |
803 | 'lot_inventory_id': fields.many2one('stock.location', 'Default inventory location', help='Default inventory location'), |
804 | } |
805 | |
806 | === modified file 'wms_inventory/report/__init__.py' |
807 | --- wms_inventory/report/__init__.py 2010-06-29 04:55:17 +0000 |
808 | +++ wms_inventory/report/__init__.py 2011-07-29 14:55:33 +0000 |
809 | @@ -22,6 +22,4 @@ |
810 | # |
811 | ############################################################################## |
812 | |
813 | - |
814 | - |
815 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
816 | \ No newline at end of file |
817 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
818 | |
819 | === modified file 'wms_inventory/wizard/__init__.py' |
820 | --- wms_inventory/wizard/__init__.py 2010-06-29 04:55:17 +0000 |
821 | +++ wms_inventory/wizard/__init__.py 2011-07-29 14:55:33 +0000 |
822 | @@ -22,6 +22,4 @@ |
823 | # |
824 | ############################################################################## |
825 | |
826 | - |
827 | - |
828 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
829 | \ No newline at end of file |
830 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
831 | |
832 | === modified file 'wms_location/__init__.py' |
833 | --- wms_location/__init__.py 2010-06-06 15:32:35 +0000 |
834 | +++ wms_location/__init__.py 2011-07-29 14:55:33 +0000 |
835 | @@ -2,7 +2,7 @@ |
836 | ############################################################################## |
837 | # |
838 | # wms_location module for OpenERP, Location management |
839 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
840 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
841 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
842 | # |
843 | # This file is a part of wms_location |
844 | @@ -22,9 +22,8 @@ |
845 | # |
846 | ############################################################################## |
847 | |
848 | - |
849 | import object |
850 | import report |
851 | import wizard |
852 | |
853 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
854 | \ No newline at end of file |
855 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
856 | |
857 | === modified file 'wms_location/migrations/0.2.0/pre-10-update-crossdock-location.py' |
858 | --- wms_location/migrations/0.2.0/pre-10-update-crossdock-location.py 2011-03-21 15:18:55 +0000 |
859 | +++ wms_location/migrations/0.2.0/pre-10-update-crossdock-location.py 2011-07-29 14:55:33 +0000 |
860 | @@ -25,6 +25,7 @@ |
861 | |
862 | __name__ = "Convert crossdock usage to category" |
863 | |
864 | + |
865 | def migrate(cr, v): |
866 | """ |
867 | For now, crossdock location is not an internal location and there are a lot of problem with procurement |
868 | @@ -36,7 +37,7 @@ |
869 | cr.execute("""SELECT res_id FROM ir_model_data WHERE module='wms_location' and name='location_category_crossdock'""") |
870 | if not cr.fetchone(): |
871 | ### |
872 | - ## no reference found, we for to create data before |
873 | + ## no reference found, we for to create data before |
874 | ## |
875 | cr.execute("""INSERT INTO stock_location_category (code, name, active) |
876 | VALUES ('CROSSDOCK','Crossdock', true) RETURNING id;""") |
877 | @@ -56,6 +57,4 @@ |
878 | if loc_ids: |
879 | cr.execute("""UPDATE stock_location SET categ_id=%s, usage='internal' WHERE id IN %s""", (res[0], tuple(loc_ids),)) |
880 | |
881 | - |
882 | - |
883 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
884 | |
885 | === modified file 'wms_location/object/location.py' |
886 | --- wms_location/object/location.py 2011-03-25 11:26:38 +0000 |
887 | +++ wms_location/object/location.py 2011-07-29 14:55:33 +0000 |
888 | @@ -49,7 +49,6 @@ |
889 | """ |
890 | _inherit = 'stock.location' |
891 | |
892 | - |
893 | _columns = { |
894 | 'code': fields.char('Code', size=32, help='Enter the complete code for this location, usefull for search'), |
895 | 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'), |
896 | @@ -79,7 +78,7 @@ |
897 | if context is None: |
898 | context = {} |
899 | |
900 | - if product and product.location_type in ('fixed','crossdock'): |
901 | + if product and product.location_type in ('fixed', 'crossdock'): |
902 | for path in product.location_ids: |
903 | if path.location_from_id.id == location.id: |
904 | return path.location_dest_id, path.auto, path.delay |
905 | @@ -109,7 +108,7 @@ |
906 | res = 0.0 |
907 | for m in move: |
908 | res += m['product_qty'] |
909 | - |
910 | + |
911 | # We compute all quantity out in this location |
912 | args = [ |
913 | ('location_id', '=', location_id), |
914 | |
915 | === modified file 'wms_location/report/__init__.py' |
916 | --- wms_location/report/__init__.py 2010-06-06 15:32:35 +0000 |
917 | +++ wms_location/report/__init__.py 2011-07-29 14:55:33 +0000 |
918 | @@ -2,7 +2,7 @@ |
919 | ############################################################################## |
920 | # |
921 | # wms_location module for OpenERP, Location management |
922 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
923 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
924 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
925 | # |
926 | # This file is a part of wms_location |
927 | @@ -22,6 +22,4 @@ |
928 | # |
929 | ############################################################################## |
930 | |
931 | - |
932 | - |
933 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
934 | \ No newline at end of file |
935 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
936 | |
937 | === modified file 'wms_location/wizard/__init__.py' |
938 | --- wms_location/wizard/__init__.py 2010-06-06 15:32:35 +0000 |
939 | +++ wms_location/wizard/__init__.py 2011-07-29 14:55:33 +0000 |
940 | @@ -2,7 +2,7 @@ |
941 | ############################################################################## |
942 | # |
943 | # wms_location module for OpenERP, Location management |
944 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
945 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
946 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
947 | # |
948 | # This file is a part of wms_location |
949 | @@ -22,6 +22,4 @@ |
950 | # |
951 | ############################################################################## |
952 | |
953 | - |
954 | - |
955 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
956 | \ No newline at end of file |
957 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
958 | |
959 | === modified file 'wms_sale/object/common.py' |
960 | --- wms_sale/object/common.py 2011-03-09 11:36:46 +0000 |
961 | +++ wms_sale/object/common.py 2011-07-29 14:55:33 +0000 |
962 | @@ -24,6 +24,7 @@ |
963 | |
964 | import time |
965 | |
966 | + |
967 | def log_message(fic, section, message): |
968 | """ |
969 | Format the content of the logfile |
970 | |
971 | === modified file 'wms_sale/object/move.py' |
972 | --- wms_sale/object/move.py 2011-03-09 11:36:46 +0000 |
973 | +++ wms_sale/object/move.py 2011-07-29 14:55:33 +0000 |
974 | @@ -53,7 +53,7 @@ |
975 | _columns = { |
976 | 'partner': fields.function(_order_partner, method=True, type='char', multi='sums', string='Partner'), |
977 | 'order': fields.function(_order_partner, method=True, type='char', multi='sums', string='Order'), |
978 | - 'average_uom_id': fields.many2one('product.uom', 'Average UOM Unit', help="is the UOM of the average price" ), |
979 | + 'average_uom_id': fields.many2one('product.uom', 'Average UOM Unit', help="is the UOM of the average price"), |
980 | } |
981 | |
982 | _defaults = { |
983 | @@ -178,7 +178,7 @@ |
984 | if move_rd.get('average_uom_id', False): |
985 | uom_id = move_rd.get('average_uom_id')[0] |
986 | average_price = move_rd.get('average_price', 0.0) |
987 | - pump = product_obj.convert_price_in_default_unit(cr, uid, product_id, average_price, uom_id,context=context) |
988 | + pump = product_obj.convert_price_in_default_unit(cr, uid, product_id, average_price, uom_id, context=context) |
989 | else: |
990 | pump = move_rd.get('standard_price', 0.0) |
991 | return pump |
992 | @@ -288,7 +288,7 @@ |
993 | if delivery_ids and company.average_price_stock_picking_out: |
994 | log_message(outfp, 'wms_sale.stock_move.compute_pump', 'save the P.U.M.P. On delivery with method %s' % company.average_price_stock_picking_delivery_method) |
995 | for move in self.browse(cr, uid, delivery_ids, context=context): |
996 | - log_message(outfp, 'wms_sale.stock_move.compute_pump', 'for move %s(%d)'% (move.name, move.id)) |
997 | + log_message(outfp, 'wms_sale.stock_move.compute_pump', 'for move %s(%d)' % (move.name, move.id)) |
998 | # they are three mode: |
999 | # 1 : the sale order is invoiced so we dont touch of the pump |
1000 | # 2 : the pump of the delivery is on the product (average_price_stock_picking_delivery_method == product on company) use the pump in the product |
1001 | |
1002 | === modified file 'wms_sale/report/__init__.py' |
1003 | --- wms_sale/report/__init__.py 2010-11-13 16:32:59 +0000 |
1004 | +++ wms_sale/report/__init__.py 2011-07-29 14:55:33 +0000 |
1005 | @@ -2,7 +2,7 @@ |
1006 | ############################################################################## |
1007 | # |
1008 | # wms_sale module for OpenERP, Module to extended sale with WMS |
1009 | -# Copyright (C) 2010 SYLEAM Info Services (<http://www.Syleam.fr/>) |
1010 | +# Copyright (C) 2010 SYLEAM Info Services (<http://www.Syleam.fr/>) |
1011 | # Sebastien LANGE <sebastien.lange@syleam.fr> |
1012 | # |
1013 | # This file is a part of wms_sale |
1014 | @@ -22,6 +22,4 @@ |
1015 | # |
1016 | ############################################################################## |
1017 | |
1018 | - |
1019 | - |
1020 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1021 | \ No newline at end of file |
1022 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1023 | |
1024 | === modified file 'wms_scanner/__init__.py' |
1025 | --- wms_scanner/__init__.py 2010-06-23 08:27:10 +0000 |
1026 | +++ wms_scanner/__init__.py 2011-07-29 14:55:33 +0000 |
1027 | @@ -2,7 +2,7 @@ |
1028 | ############################################################################## |
1029 | # |
1030 | # wms_scanner module for OpenERP, Module for manage barcode reader |
1031 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
1032 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
1033 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
1034 | # |
1035 | # This file is a part of wms_scanner |
1036 | @@ -27,4 +27,4 @@ |
1037 | import report |
1038 | import wizard |
1039 | |
1040 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1041 | \ No newline at end of file |
1042 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1043 | |
1044 | === modified file 'wms_scanner/__terp__.py' |
1045 | --- wms_scanner/__terp__.py 2010-10-06 21:16:11 +0000 |
1046 | +++ wms_scanner/__terp__.py 2011-07-29 14:55:33 +0000 |
1047 | @@ -33,7 +33,6 @@ |
1048 | - affect scenarios on on a specific scenario |
1049 | |
1050 | Sponsored by Neolog http://www.neolog.pro/ |
1051 | - |
1052 | """, |
1053 | 'author': 'SYLEAM', |
1054 | 'website': 'http://syleam.fr/', |
1055 | |
1056 | === modified file 'wms_scanner/hardware/datalogic/PowerScan/PowerscanService.py' |
1057 | --- wms_scanner/hardware/datalogic/PowerScan/PowerscanService.py 2010-09-15 07:47:21 +0000 |
1058 | +++ wms_scanner/hardware/datalogic/PowerScan/PowerscanService.py 2011-07-29 14:55:33 +0000 |
1059 | @@ -20,16 +20,17 @@ |
1060 | import xmlrpclib |
1061 | import Powerscan |
1062 | |
1063 | + |
1064 | # Opening XMLRPC |
1065 | def openxmlrpc(): |
1066 | global server |
1067 | global uid |
1068 | server = xmlrpclib.ServerProxy('http://%s:%d/xmlrpc/common' % (HOST, PORT)) |
1069 | - uid = server.login(DB,LOGIN,PASS) |
1070 | + uid = server.login(DB, LOGIN, PASS) |
1071 | server = xmlrpclib.ServerProxy('http://%s:%d/xmlrpc/object' % (HOST, PORT)) |
1072 | |
1073 | |
1074 | -def displaymenu(PS,menu,indicemenu,deb): |
1075 | +def displaymenu(PS, menu, indicemenu, deb): |
1076 | x.write(PS) |
1077 | x.cleardisplay() |
1078 | lignes = 4 |
1079 | @@ -38,100 +39,105 @@ |
1080 | for i in range(deb, deb + lignes): |
1081 | if i == indicemenu: |
1082 | x.fontreversemode() |
1083 | - else : |
1084 | + else: |
1085 | x.fontnormalmode() |
1086 | x.write(menu[i]) |
1087 | x.cursordown("1") |
1088 | x.cursorcr() |
1089 | x.cr() |
1090 | m = x.read() |
1091 | - if m == PS+">"+chr(13)+chr(10) and indicemenu < len(menu) - 1: |
1092 | + if m == PS + ">" + chr(13) + chr(10) and indicemenu < len(menu) - 1: |
1093 | if indicemenu == deb + 3: |
1094 | deb += 1 |
1095 | indicemenu += 1 |
1096 | - displaymenu(PS,menu,indicemenu,deb) |
1097 | - elif m == PS+"<"+chr(13)+chr(10) and indicemenu > 0: |
1098 | + displaymenu(PS, menu, indicemenu, deb) |
1099 | + elif m == PS + "<" + chr(13) + chr(10) and indicemenu > 0: |
1100 | if indicemenu == deb: |
1101 | deb -= 1 |
1102 | indicemenu -= 1 |
1103 | - displaymenu(PS,menu,indicemenu,deb) |
1104 | - elif m == PS+"="+chr(13)+chr(10): |
1105 | + displaymenu(PS, menu, indicemenu, deb) |
1106 | + elif m == PS + "=" + chr(13) + chr(10): |
1107 | if menu[indicemenu] == "": |
1108 | - displaymenu(PS,menu,indicemenu,deb) |
1109 | + displaymenu(PS, menu, indicemenu, deb) |
1110 | print menu[indicemenu] |
1111 | - else : |
1112 | - displaymenu(PS,menu,indicemenu,deb) |
1113 | - |
1114 | -def checkquantity(quantity,q): |
1115 | + else: |
1116 | + displaymenu(PS, menu, indicemenu, deb) |
1117 | + |
1118 | + |
1119 | +def checkquantity(quantity, q): |
1120 | x.cleardisplay() |
1121 | - for i in range(0,3): |
1122 | + for i in range(0, 3): |
1123 | x.write(quantity[i]) |
1124 | x.cursordown("1") |
1125 | x.cursorcr() |
1126 | x.write(q) |
1127 | x.cr() |
1128 | m = x.read() |
1129 | - if m == ">"+chr(13)+chr(10): |
1130 | + if m == ">" + chr(13) + chr(10): |
1131 | q += 1 |
1132 | - checkquantity(quantity,q) |
1133 | - elif m == "<"+chr(13)+chr(10) and q > 0: |
1134 | + checkquantity(quantity, q) |
1135 | + elif m == "<" + chr(13) + chr(10) and q > 0: |
1136 | q -= 1 |
1137 | - checkquantity(quantity,q) |
1138 | - elif m == "="+chr(13)+chr(10): |
1139 | + checkquantity(quantity, q) |
1140 | + elif m == "=" + chr(13) + chr(10): |
1141 | print q |
1142 | - else : |
1143 | - checkquantity(quantity,q) |
1144 | + else: |
1145 | + checkquantity(quantity, q) |
1146 | + |
1147 | |
1148 | def flasher(flashage): |
1149 | x.cleardisplay() |
1150 | - for i in range(0,4): |
1151 | + for i in range(0, 4): |
1152 | x.write(flashage[i]) |
1153 | x.cursordown("1") |
1154 | x.cursorcr() |
1155 | x.cr() |
1156 | m = x.read() |
1157 | - if m == "="+chr(13)+chr(10): |
1158 | + if m == "=" + chr(13) + chr(10): |
1159 | print "Terminer" |
1160 | - elif m == ">"+chr(13)+chr(10): |
1161 | - x.emitshortlow() |
1162 | - flasher(flashage) |
1163 | - elif m == "<"+chr(13)+chr(10): |
1164 | - x.emitshortlow() |
1165 | - flasher(flashage) |
1166 | - else : |
1167 | + elif m == ">" + chr(13) + chr(10): |
1168 | + x.emitshortlow() |
1169 | + flasher(flashage) |
1170 | + elif m == "<" + chr(13) + chr(10): |
1171 | + x.emitshortlow() |
1172 | + flasher(flashage) |
1173 | + else: |
1174 | print m |
1175 | - |
1176 | + |
1177 | + |
1178 | def yesnochoice(yesno): |
1179 | x.cleardisplay() |
1180 | - for i in range(0,3): |
1181 | + for i in range(0, 3): |
1182 | x.write(yesno[i]) |
1183 | x.cursordown("1") |
1184 | x.cursorcr() |
1185 | x.write("Non Oui") |
1186 | x.cr() |
1187 | m = x.read() |
1188 | - if m == "="+chr(13)+chr(10): |
1189 | + if m == "=" + chr(13) + chr(10): |
1190 | yesnochoice(yesno) |
1191 | - elif m == ">"+chr(13)+chr(10): |
1192 | + elif m == ">" + chr(13) + chr(10): |
1193 | print "Oui" |
1194 | - elif m == "<"+chr(13)+chr(10): |
1195 | + elif m == "<" + chr(13) + chr(10): |
1196 | print "Non" |
1197 | - else : |
1198 | + else: |
1199 | yesnochoice(yesno) |
1200 | |
1201 | -def action(message,action): |
1202 | + |
1203 | +def action(message, action): |
1204 | x.cleardisplay() |
1205 | - for i in range(0,4): |
1206 | + for i in range(0, 4): |
1207 | x.write(message[i]) |
1208 | x.cursordown("1") |
1209 | x.cursorcr() |
1210 | x.cr() |
1211 | m = m.read() |
1212 | # if m == " |
1213 | - |
1214 | -def openerp(type,msg): |
1215 | - return server.execute(DB,uid,PASS,'scanner.hardware','scanner_call','0000',type,msg) |
1216 | - |
1217 | + |
1218 | + |
1219 | +def openerp(type, msg): |
1220 | + return server.execute(DB, uid, PASS, 'scanner.hardware', 'scanner_call', '0000', type, msg) |
1221 | + |
1222 | # tests |
1223 | LOGIN = 'admin' |
1224 | PASS = 'admin' |
1225 | @@ -139,57 +145,56 @@ |
1226 | PORT = 8069 |
1227 | DB = 'neo7' |
1228 | |
1229 | -global PS |
1230 | +global PS |
1231 | PS = "0001" |
1232 | |
1233 | indicemenu = 0 |
1234 | pws = Powerscan.Powerscan('/dev/ttyUSB0') |
1235 | print 'Welcome to PowerScan Sentinel\n\n ' |
1236 | |
1237 | -while True: |
1238 | +while True: |
1239 | (hwd, msg) = pws.read() |
1240 | print '%s -> %s' % (hwd, msg) |
1241 | pws.cleardisplay(hwd) |
1242 | pws.write("-> %s" % msg) |
1243 | pws.cr() |
1244 | - menu = ['Inventaire','Reception','Preparation','Controle','Terminer'] |
1245 | + menu = ['Inventaire', 'Reception', 'Preparation', 'Controle', 'Terminer'] |
1246 | #displaymenu(PS,menu,0,0) |
1247 | pws.cr() |
1248 | - |
1249 | - |
1250 | - |
1251 | -######################## |
1252 | -# |
1253 | -# OLD CODE |
1254 | +# |
1255 | +# |
1256 | # |
1257 | ######################### |
1258 | -# code, val = openerp('menu','') |
1259 | - |
1260 | -# code = [('<','OK'), ('>','ANN')] |
1261 | -# print code[0][0] |
1262 | -# if code == 'M': |
1263 | - # displaymenu(val,0,0) |
1264 | -# elif code == 'Q': |
1265 | - # checkquantity(val['label'],val['value']) |
1266 | -# elif code == 'A': |
1267 | - # action(val['label'],val['action']) |
1268 | - |
1269 | -# menu = ['Inventaire','Reception','Preparation','Controle','Terminer'] |
1270 | -# displaymenu(menu,0,0) |
1271 | -# flashage = ['Flashez palette','','','Terminer'] |
1272 | -# flasher(flashage) |
1273 | -# quantity = ['Nombre de carton','','',20] |
1274 | -# checkquantity(quantity,quantity[3]) |
1275 | -# yesno = ['Confirmez','','',''] |
1276 | -# yesnochoice(yesno) |
1277 | - |
1278 | -# x.cr() |
1279 | -closeserial() |
1280 | -exit() |
1281 | -#x.greenledon() |
1282 | - |
1283 | - |
1284 | -#x.cursorcr() |
1285 | +## |
1286 | +## OLD CODE |
1287 | +## |
1288 | +########################## |
1289 | +## code, val = openerp('menu','') |
1290 | +# |
1291 | +## code = [('<','OK'), ('>','ANN')] |
1292 | +## print code[0][0] |
1293 | +## if code == 'M': |
1294 | +# # displaymenu(val,0,0) |
1295 | +## elif code == 'Q': |
1296 | +# # checkquantity(val['label'],val['value']) |
1297 | +## elif code == 'A': |
1298 | +# # action(val['label'],val['action']) |
1299 | +# |
1300 | +## menu = ['Inventaire','Reception','Preparation','Controle','Terminer'] |
1301 | +## displaymenu(menu,0,0) |
1302 | +## flashage = ['Flashez palette','','','Terminer'] |
1303 | +## flasher(flashage) |
1304 | +## quantity = ['Nombre de carton','','',20] |
1305 | +## checkquantity(quantity,quantity[3]) |
1306 | +## yesno = ['Confirmez','','',''] |
1307 | +## yesnochoice(yesno) |
1308 | +## |
1309 | +## x.cr() |
1310 | +##closeserial() |
1311 | +##exit() |
1312 | +##x.greenledon() |
1313 | +##x.cursorcr() |
1314 | + |
1315 | |
1316 | # Signals |
1317 | def handler(signum, _): |
1318 | @@ -198,10 +203,10 @@ |
1319 | # Gestion des signaux |
1320 | LST_SIGNALS = ['SIGINT', 'SIGTERM'] |
1321 | if os.name == 'posix': |
1322 | - LST_SIGNALS.extend(['SIGUSR1','SIGQUIT']) |
1323 | + LST_SIGNALS.extend(['SIGUSR1', 'SIGQUIT']) |
1324 | |
1325 | SIGNALS = dict( |
1326 | - [(getattr(signal, sign), sign) for sign in LST_SIGNALS] |
1327 | + [(getattr(signal, sign), sign) for sign in LST_SIGNALS], |
1328 | ) |
1329 | |
1330 | for signum in SIGNALS: |
1331 | |
1332 | === modified file 'wms_scanner/hardware/datalogic/PowerScan/hardware.py' |
1333 | --- wms_scanner/hardware/datalogic/PowerScan/hardware.py 2010-10-13 16:13:53 +0000 |
1334 | +++ wms_scanner/hardware/datalogic/PowerScan/hardware.py 2011-07-29 14:55:33 +0000 |
1335 | @@ -44,7 +44,7 @@ |
1336 | 'info': logging.INFO, |
1337 | 'warning': logging.WARNING, |
1338 | 'error': logging.ERROR, |
1339 | - 'critical': logging.CRITICAL |
1340 | + 'critical': logging.CRITICAL, |
1341 | } |
1342 | |
1343 | |
1344 | @@ -208,14 +208,14 @@ |
1345 | self.debug_send(res) |
1346 | self.serial.write(res) |
1347 | |
1348 | - def _analyse_result(self, scan, message): |
1349 | + def _analyse_result(self, scan, message): |
1350 | """ |
1351 | Analyse the return message |
1352 | """ |
1353 | - (act, rec_oerp, c) = self.action.get(scan, ('M',['close the','scenario','before'], '')) |
1354 | - self.log_debug(scan, '_ANALYSE: %s %s (%s)' % (act, rec_oerp, c) ) |
1355 | + (act, rec_oerp, c) = self.action.get(scan, ('M', ['close the', 'scenario', 'before'], '')) |
1356 | + self.log_debug(scan, '_ANALYSE: %s %s (%s)' % (act, rec_oerp, c)) |
1357 | key = 'B' |
1358 | - if message in ('<','>','='): |
1359 | + if message in ('<', '>', '='): |
1360 | key = 'K' |
1361 | |
1362 | if act == 'M': |
1363 | @@ -265,12 +265,11 @@ |
1364 | self.log_debug(scan, 'C + = | %s %s %s' % (act, rec_oerp, t)) |
1365 | self._choice(scan, act, rec_oerp, t) |
1366 | |
1367 | - |
1368 | def _choice(self, scan, action, message, plus, error=False): |
1369 | """ |
1370 | Analyse the action to call the good menu |
1371 | """ |
1372 | - self.log_debug(scan, '_CHOICE: %s %s (%s)' % (action, message, plus) ) |
1373 | + self.log_debug(scan, '_CHOICE: %s %s (%s)' % (action, message, plus)) |
1374 | if action == 'M': |
1375 | self._menu(scan, message, indice=plus, error=error) |
1376 | elif action == 'Q': |
1377 | @@ -278,7 +277,7 @@ |
1378 | elif action == 'C': |
1379 | self._confirmation(scan, message) |
1380 | else: |
1381 | - self._menu(scan, ['Please contact','your','administrator'], -1, error=True) |
1382 | + self._menu(scan, ['Please contact', 'your', 'administrator'], -1, error=True) |
1383 | |
1384 | def _menu(self, scan, menu, line=4, indice=0, current=0, error=False): |
1385 | """ |
1386 | @@ -298,7 +297,7 @@ |
1387 | |
1388 | def _quantity(self, scan, menu, qty=0): |
1389 | """ |
1390 | - display a quantity and |
1391 | + display a quantity and |
1392 | """ |
1393 | psn = self.scan[scan] |
1394 | psn.cleardisplay() |
1395 | @@ -346,7 +345,6 @@ |
1396 | self._add_line(psn, 'Back OK') |
1397 | self.send(scan, psn.send()) |
1398 | |
1399 | - |
1400 | def _yes_no(self, scan, message): |
1401 | """ |
1402 | Send a message on a user screen and ask to choose yes or no |
1403 | @@ -373,7 +371,6 @@ |
1404 | self._add_line(psn, 'STOP Required') |
1405 | self.send(scan, psn.send()) |
1406 | |
1407 | - |
1408 | def _str_center(self, message): |
1409 | """ |
1410 | Center the message on the user screen |
1411 | @@ -389,7 +386,7 @@ |
1412 | :param etype: Indicate K for keyboard and S for Scan |
1413 | :type etype: str |
1414 | """ |
1415 | - self.log_debug(scan, '(%s) %s '% (action, message)) |
1416 | + self.log_debug(scan, '(%s) %s ' % (action, message)) |
1417 | return self.oerp_hwd.scanner_call(scan, action, message, etype) |
1418 | |
1419 | def debug_send(self, data): |
1420 | @@ -437,18 +434,18 @@ |
1421 | default='admin', |
1422 | help='Enter the user password (default: admin)') |
1423 | |
1424 | - material = OptionGroup(parser, 'Material','arguments') |
1425 | + material = OptionGroup(parser, 'Material', 'arguments') |
1426 | material.add_option('', '--serial-port', dest='serial_port', |
1427 | default='/dev/ttyUSB1', |
1428 | help='Indicate the serial port where the material is connected (default: /dev/ttyUSB1)') |
1429 | material.add_option('', '--line-width', dest='line_width', |
1430 | default=16, |
1431 | help='Indicate the width of the screen (default: 16)') |
1432 | - material.add_option('-v','--debug', dest='debug', |
1433 | + material.add_option('-v', '--debug', dest='debug', |
1434 | action='store_true', |
1435 | default=False, |
1436 | help='') |
1437 | - material.add_option('-t','--serial-trace', dest='trace', |
1438 | + material.add_option('-t', '--serial-trace', dest='trace', |
1439 | action='store_true', |
1440 | default=False, |
1441 | help='Print the code send to the serial port') |
1442 | @@ -458,10 +455,10 @@ |
1443 | |
1444 | try: |
1445 | cnx = Connection( |
1446 | - server=opts.server, |
1447 | - dbname=opts.dbname, |
1448 | - login=opts.user, |
1449 | - password=opts.passwd, |
1450 | + server=opts.server, |
1451 | + dbname=opts.dbname, |
1452 | + login=opts.user, |
1453 | + password=opts.passwd, |
1454 | port=opts.port) |
1455 | except Exception, e: |
1456 | print '%s' % str(e) |
1457 | |
1458 | === modified file 'wms_scanner/hardware/datalogic/PowerScan/powerscan.py' |
1459 | --- wms_scanner/hardware/datalogic/PowerScan/powerscan.py 2010-10-06 09:01:31 +0000 |
1460 | +++ wms_scanner/hardware/datalogic/PowerScan/powerscan.py 2011-07-29 14:55:33 +0000 |
1461 | @@ -31,6 +31,7 @@ |
1462 | __name__ = "Powerscan" |
1463 | __version__ = "1.0.0" |
1464 | |
1465 | + |
1466 | class Powerscan: |
1467 | """ |
1468 | Manage Powerscan device |
1469 | @@ -65,7 +66,6 @@ |
1470 | self._buffer = '' |
1471 | return res |
1472 | |
1473 | - |
1474 | #---------------------------------------------------------- |
1475 | #- Private method ----------------------------------------- |
1476 | #---------------------------------------------------------- |
1477 | @@ -106,11 +106,11 @@ |
1478 | def cursordown(self, row='1'): |
1479 | self._command("[" + row + "B") |
1480 | |
1481 | - def cursorright(self,col): |
1482 | + def cursorright(self, col): |
1483 | """Right n columns""" |
1484 | self._command("[" + col + "C") |
1485 | |
1486 | - def cursorleft(self,col): |
1487 | + def cursorleft(self, col): |
1488 | """Left n columns""" |
1489 | self._command("[" + col + "D") |
1490 | |
1491 | @@ -118,7 +118,7 @@ |
1492 | """CR""" |
1493 | self._command("[G") |
1494 | |
1495 | - def cursormoveto(self,row,col): |
1496 | + def cursormoveto(self, row, col): |
1497 | """Move to row and col""" |
1498 | self._command("[" + row + ";" + col + "H") |
1499 | |
1500 | |
1501 | === modified file 'wms_scanner/i18n/fr_FR.po' |
1502 | --- wms_scanner/i18n/fr_FR.po 2010-10-12 16:53:40 +0000 |
1503 | +++ wms_scanner/i18n/fr_FR.po 2011-07-29 14:55:33 +0000 |
1504 | @@ -5,8 +5,8 @@ |
1505 | msgstr "" |
1506 | "Project-Id-Version: PACKAGE VERSION\n" |
1507 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1508 | -"POT-Creation-Date: 2010-10-12 16:48:07+0000\n" |
1509 | -"PO-Revision-Date: 2010-10-12 18:51+0100\n" |
1510 | +"POT-Creation-Date: 2011-07-26 13:42:19+0000\n" |
1511 | +"PO-Revision-Date: 2011-07-26 15:51+0100\n" |
1512 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" |
1513 | "Language-Team: LANGUAGE <LL@li.org>\n" |
1514 | "MIME-Version: 1.0\n" |
1515 | @@ -20,6 +20,16 @@ |
1516 | msgstr "Depuis" |
1517 | |
1518 | #. module: wms_scanner |
1519 | +#: constraint:ir.actions.act_window:0 |
1520 | +msgid "Invalid model name in the action definition." |
1521 | +msgstr "Nom de modèle invalide pour l'action définit" |
1522 | + |
1523 | +#. module: wms_scanner |
1524 | +#: field:scanner.scenario,title:0 |
1525 | +msgid "Title" |
1526 | +msgstr "Titre" |
1527 | + |
1528 | +#. module: wms_scanner |
1529 | #: field:scanner.scenario.step,step_start:0 |
1530 | msgid "Step start" |
1531 | msgstr "Étape de départ" |
1532 | @@ -36,6 +46,27 @@ |
1533 | msgstr "Cocher ceci, si c'est la première étape du scénario" |
1534 | |
1535 | #. module: wms_scanner |
1536 | +#: view:scanner.scenario:0 |
1537 | +#: field:scanner.scenario,note:0 |
1538 | +msgid "Note" |
1539 | +msgstr "Note" |
1540 | + |
1541 | +#. module: wms_scanner |
1542 | +#: field:scanner.scenario.transition,to_id:0 |
1543 | +msgid "To" |
1544 | +msgstr "Vers" |
1545 | + |
1546 | +#. module: wms_scanner |
1547 | +#: field:scanner.hardware,step_id:0 |
1548 | +msgid "Current Step" |
1549 | +msgstr "Étape actuelle" |
1550 | + |
1551 | +#. module: wms_scanner |
1552 | +#: model:ir.ui.menu,name:wms_scanner.menu_scanner_configuration |
1553 | +msgid "Scanner configuration" |
1554 | +msgstr "Configuration du scanner" |
1555 | + |
1556 | +#. module: wms_scanner |
1557 | #: model:ir.module.module,description:wms_scanner.module_meta_information |
1558 | msgid "" |
1559 | "Module for manage barcode reader\n" |
1560 | @@ -45,23 +76,15 @@ |
1561 | "- affect scenarios on on a specific scenario\n" |
1562 | "\n" |
1563 | "Sponsored by Neolog http://www.neolog.pro/\n" |
1564 | -" \n" |
1565 | msgstr "" |
1566 | - |
1567 | -#. module: wms_scanner |
1568 | -#: field:scanner.hardware,step_id:0 |
1569 | -msgid "Current Step" |
1570 | -msgstr "Étape actuelle" |
1571 | - |
1572 | -#. module: wms_scanner |
1573 | -#: model:ir.ui.menu,name:wms_scanner.menu_scanner_configuration |
1574 | -msgid "Scanner configuration" |
1575 | -msgstr "Configuration du scanner" |
1576 | - |
1577 | -#. module: wms_scanner |
1578 | -#: constraint:ir.actions.act_window:0 |
1579 | -msgid "Invalid model name in the action definition." |
1580 | -msgstr "Nom de modèle invalide pour l'action définit" |
1581 | +"Module de gestion des lecteurs codes barres\n" |
1582 | +"\n" |
1583 | +"- Affectation d'un lecteur code barre Ă un entrepĂ´t\n" |
1584 | +"- Composition d'un scénario\n" |
1585 | +"- affectation de scénario a des scénarios spécifique\n" |
1586 | +"\n" |
1587 | +"Sponsorisé par Neolog http://www.enolog.pro/\n" |
1588 | +" " |
1589 | |
1590 | #. module: wms_scanner |
1591 | #: field:scanner.hardware,warehouse_id:0 |
1592 | @@ -71,7 +94,7 @@ |
1593 | #. module: wms_scanner |
1594 | #: constraint:ir.model:0 |
1595 | msgid "The Object name must start with x_ and not contain any special character !" |
1596 | -msgstr "" |
1597 | +msgstr "Le nom de l'objet doit commencer par un x_, et ne doit pas contenir de caractères spéciaux !" |
1598 | |
1599 | #. module: wms_scanner |
1600 | #: help:scanner.scenario.step,step_stop:0 |
1601 | @@ -79,6 +102,11 @@ |
1602 | msgstr "Cocher ceci si c'est la dernière étape du scénario" |
1603 | |
1604 | #. module: wms_scanner |
1605 | +#: help:scanner.scenario.transition,tracer:0 |
1606 | +msgid "Use to determine, on which transition we arrive to this step" |
1607 | +msgstr "Utiliser pour déterminer, sur quelle transition nous sommes arrivé à cet étape" |
1608 | + |
1609 | +#. module: wms_scanner |
1610 | #: code:addons/wms_scanner/object/scanner.py:0 |
1611 | #, python-format |
1612 | msgid "This terminal is not declare!" |
1613 | @@ -90,6 +118,11 @@ |
1614 | msgstr "Type de transition" |
1615 | |
1616 | #. module: wms_scanner |
1617 | +#: help:scanner.scenario,note:0 |
1618 | +msgid "Store different note, date and title for modification, etc..." |
1619 | +msgstr "Stocker différente note, date et titre de la modification, etc." |
1620 | + |
1621 | +#. module: wms_scanner |
1622 | #: model:ir.module.module,shortdesc:wms_scanner.module_meta_information |
1623 | msgid "Wms Scanner" |
1624 | msgstr "Wms Scanner" |
1625 | @@ -132,9 +165,9 @@ |
1626 | msgstr "Fin d 'Ă©tape" |
1627 | |
1628 | #. module: wms_scanner |
1629 | -#: model:ir.model,name:wms_scanner.model_scanner_scenario_transition |
1630 | -msgid "Transition for scenario" |
1631 | -msgstr "Transition pour le scénario" |
1632 | +#: field:scanner.hardware,tmp_val3:0 |
1633 | +msgid "Temp value 3" |
1634 | +msgstr "Valeur temporaire 3" |
1635 | |
1636 | #. module: wms_scanner |
1637 | #: field:scanner.scenario,active:0 |
1638 | @@ -142,6 +175,11 @@ |
1639 | msgstr "Actif" |
1640 | |
1641 | #. module: wms_scanner |
1642 | +#: help:scanner.scenario,name:0 |
1643 | +msgid "Appear on barcode reader screen" |
1644 | +msgstr "Apparaît sur l'écran du lecteur code barre" |
1645 | + |
1646 | +#. module: wms_scanner |
1647 | #: view:scanner.hardware:0 |
1648 | msgid "Scanner status" |
1649 | msgstr "Statut du scanner" |
1650 | @@ -152,9 +190,9 @@ |
1651 | msgstr "Condition" |
1652 | |
1653 | #. module: wms_scanner |
1654 | -#: field:scanner.scenario.transition,to_id:0 |
1655 | -msgid "To" |
1656 | -msgstr "Vers" |
1657 | +#: model:ir.model,name:wms_scanner.model_scanner_scenario_transition |
1658 | +msgid "Transition for scenario" |
1659 | +msgstr "Transition pour le scénario" |
1660 | |
1661 | #. module: wms_scanner |
1662 | #: model:ir.model,name:wms_scanner.model_scanner_scenario |
1663 | @@ -164,7 +202,7 @@ |
1664 | #. module: wms_scanner |
1665 | #: constraint:ir.ui.view:0 |
1666 | msgid "Invalid XML for View Architecture!" |
1667 | -msgstr "" |
1668 | +msgstr "XML Non valide pour cette vue!" |
1669 | |
1670 | #. module: wms_scanner |
1671 | #: field:scanner.hardware,name:0 |
1672 | @@ -230,11 +268,31 @@ |
1673 | msgstr "Erreur" |
1674 | |
1675 | #. module: wms_scanner |
1676 | +#: field:scanner.hardware,tmp_val5:0 |
1677 | +msgid "Temp value 5" |
1678 | +msgstr "Valeur temporaire 5" |
1679 | + |
1680 | +#. module: wms_scanner |
1681 | +#: field:scanner.hardware,tmp_val4:0 |
1682 | +msgid "Temp value 4" |
1683 | +msgstr "Valeur temporaire 4" |
1684 | + |
1685 | +#. module: wms_scanner |
1686 | #: field:scanner.scenario,model_id:0 |
1687 | msgid "Model" |
1688 | msgstr "Modèle" |
1689 | |
1690 | #. module: wms_scanner |
1691 | +#: field:scanner.hardware,tmp_val1:0 |
1692 | +msgid "Temp value 1" |
1693 | +msgstr "Valeur temporaire 1" |
1694 | + |
1695 | +#. module: wms_scanner |
1696 | +#: field:scanner.scenario.transition,tracer:0 |
1697 | +msgid "Tracer" |
1698 | +msgstr "Tracer" |
1699 | + |
1700 | +#. module: wms_scanner |
1701 | #: view:scanner.scenario:0 |
1702 | #: view:scanner.scenario.step:0 |
1703 | #: field:scanner.scenario.step,out_trans_ids:0 |
1704 | @@ -242,6 +300,11 @@ |
1705 | msgstr "Transitions sortantes" |
1706 | |
1707 | #. module: wms_scanner |
1708 | +#: field:scanner.hardware,tmp_val2:0 |
1709 | +msgid "Temp value 2" |
1710 | +msgstr "Valeur temporaire 2" |
1711 | + |
1712 | +#. module: wms_scanner |
1713 | #: field:scanner.hardware,code:0 |
1714 | #: view:scanner.scenario:0 |
1715 | #: view:scanner.scenario.step:0 |
1716 | @@ -271,19 +334,30 @@ |
1717 | msgstr "SĂ©quence" |
1718 | |
1719 | #. module: wms_scanner |
1720 | +#: model:ir.actions.act_window,name:wms_scanner.act_open_scanner_scenario_transition_view |
1721 | +#: model:ir.ui.menu,name:wms_scanner.menu_scanner_scenario_transition |
1722 | +#: view:scanner.scenario.step:0 |
1723 | +#: view:scanner.scenario.transition:0 |
1724 | +msgid "Transitions" |
1725 | +msgstr "Transitions" |
1726 | + |
1727 | +#. module: wms_scanner |
1728 | #: help:scanner.scenario.step,name:0 |
1729 | msgid "Name of the step" |
1730 | msgstr "Nom de l'Ă©tape" |
1731 | |
1732 | #. module: wms_scanner |
1733 | +#: help:scanner.scenario,title:0 |
1734 | +msgid "Title for this scenario" |
1735 | +msgstr "Titre de ce scénario" |
1736 | + |
1737 | +#. module: wms_scanner |
1738 | #: selection:scanner.scenario.transition,trans_type:0 |
1739 | msgid "Keyboard" |
1740 | msgstr "Clavier" |
1741 | |
1742 | #. module: wms_scanner |
1743 | -#: model:ir.actions.act_window,name:wms_scanner.act_open_scanner_scenario_transition_view |
1744 | -#: model:ir.ui.menu,name:wms_scanner.menu_scanner_scenario_transition |
1745 | -#: view:scanner.scenario.transition:0 |
1746 | -msgid "Transitions" |
1747 | -msgstr "Transitions" |
1748 | +#: view:scanner.scenario:0 |
1749 | +msgid "Add note, date of modification, etc." |
1750 | +msgstr "Ajouter une note, date de modification, etc." |
1751 | |
1752 | |
1753 | === modified file 'wms_scanner/i18n/wms_scanner.pot' |
1754 | --- wms_scanner/i18n/wms_scanner.pot 2010-10-12 16:53:40 +0000 |
1755 | +++ wms_scanner/i18n/wms_scanner.pot 2011-07-29 14:55:33 +0000 |
1756 | @@ -6,8 +6,8 @@ |
1757 | msgstr "" |
1758 | "Project-Id-Version: OpenERP Server 5.0.12\n" |
1759 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1760 | -"POT-Creation-Date: 2010-10-12 16:48:07+0000\n" |
1761 | -"PO-Revision-Date: 2010-10-12 16:48:07+0000\n" |
1762 | +"POT-Creation-Date: 2011-07-26 13:42:19+0000\n" |
1763 | +"PO-Revision-Date: 2011-07-26 13:42:19+0000\n" |
1764 | "Last-Translator: <>\n" |
1765 | "Language-Team: \n" |
1766 | "MIME-Version: 1.0\n" |
1767 | @@ -21,6 +21,16 @@ |
1768 | msgstr "" |
1769 | |
1770 | #. module: wms_scanner |
1771 | +#: constraint:ir.actions.act_window:0 |
1772 | +msgid "Invalid model name in the action definition." |
1773 | +msgstr "" |
1774 | + |
1775 | +#. module: wms_scanner |
1776 | +#: field:scanner.scenario,title:0 |
1777 | +msgid "Title" |
1778 | +msgstr "" |
1779 | + |
1780 | +#. module: wms_scanner |
1781 | #: field:scanner.scenario.step,step_start:0 |
1782 | msgid "Step start" |
1783 | msgstr "" |
1784 | @@ -37,6 +47,27 @@ |
1785 | msgstr "" |
1786 | |
1787 | #. module: wms_scanner |
1788 | +#: view:scanner.scenario:0 |
1789 | +#: field:scanner.scenario,note:0 |
1790 | +msgid "Note" |
1791 | +msgstr "" |
1792 | + |
1793 | +#. module: wms_scanner |
1794 | +#: field:scanner.scenario.transition,to_id:0 |
1795 | +msgid "To" |
1796 | +msgstr "" |
1797 | + |
1798 | +#. module: wms_scanner |
1799 | +#: field:scanner.hardware,step_id:0 |
1800 | +msgid "Current Step" |
1801 | +msgstr "" |
1802 | + |
1803 | +#. module: wms_scanner |
1804 | +#: model:ir.ui.menu,name:wms_scanner.menu_scanner_configuration |
1805 | +msgid "Scanner configuration" |
1806 | +msgstr "" |
1807 | + |
1808 | +#. module: wms_scanner |
1809 | #: model:ir.module.module,description:wms_scanner.module_meta_information |
1810 | msgid "Module for manage barcode reader\n" |
1811 | "\n" |
1812 | @@ -45,26 +76,10 @@ |
1813 | "- affect scenarios on on a specific scenario\n" |
1814 | "\n" |
1815 | "Sponsored by Neolog http://www.neolog.pro/\n" |
1816 | -" \n" |
1817 | "" |
1818 | msgstr "" |
1819 | |
1820 | #. module: wms_scanner |
1821 | -#: field:scanner.hardware,step_id:0 |
1822 | -msgid "Current Step" |
1823 | -msgstr "" |
1824 | - |
1825 | -#. module: wms_scanner |
1826 | -#: model:ir.ui.menu,name:wms_scanner.menu_scanner_configuration |
1827 | -msgid "Scanner configuration" |
1828 | -msgstr "" |
1829 | - |
1830 | -#. module: wms_scanner |
1831 | -#: constraint:ir.actions.act_window:0 |
1832 | -msgid "Invalid model name in the action definition." |
1833 | -msgstr "" |
1834 | - |
1835 | -#. module: wms_scanner |
1836 | #: field:scanner.hardware,warehouse_id:0 |
1837 | msgid "Warehouse" |
1838 | msgstr "" |
1839 | @@ -80,6 +95,11 @@ |
1840 | msgstr "" |
1841 | |
1842 | #. module: wms_scanner |
1843 | +#: help:scanner.scenario.transition,tracer:0 |
1844 | +msgid "Use to determine, on which transition we arrive to this step" |
1845 | +msgstr "" |
1846 | + |
1847 | +#. module: wms_scanner |
1848 | #: code:addons/wms_scanner/object/scanner.py:0 |
1849 | #, python-format |
1850 | msgid "This terminal is not declare!" |
1851 | @@ -91,6 +111,11 @@ |
1852 | msgstr "" |
1853 | |
1854 | #. module: wms_scanner |
1855 | +#: help:scanner.scenario,note:0 |
1856 | +msgid "Store different note, date and title for modification, etc..." |
1857 | +msgstr "" |
1858 | + |
1859 | +#. module: wms_scanner |
1860 | #: model:ir.module.module,shortdesc:wms_scanner.module_meta_information |
1861 | msgid "Wms Scanner" |
1862 | msgstr "" |
1863 | @@ -133,8 +158,8 @@ |
1864 | msgstr "" |
1865 | |
1866 | #. module: wms_scanner |
1867 | -#: model:ir.model,name:wms_scanner.model_scanner_scenario_transition |
1868 | -msgid "Transition for scenario" |
1869 | +#: field:scanner.hardware,tmp_val3:0 |
1870 | +msgid "Temp value 3" |
1871 | msgstr "" |
1872 | |
1873 | #. module: wms_scanner |
1874 | @@ -143,6 +168,11 @@ |
1875 | msgstr "" |
1876 | |
1877 | #. module: wms_scanner |
1878 | +#: help:scanner.scenario,name:0 |
1879 | +msgid "Appear on barcode reader screen" |
1880 | +msgstr "" |
1881 | + |
1882 | +#. module: wms_scanner |
1883 | #: view:scanner.hardware:0 |
1884 | msgid "Scanner status" |
1885 | msgstr "" |
1886 | @@ -153,8 +183,8 @@ |
1887 | msgstr "" |
1888 | |
1889 | #. module: wms_scanner |
1890 | -#: field:scanner.scenario.transition,to_id:0 |
1891 | -msgid "To" |
1892 | +#: model:ir.model,name:wms_scanner.model_scanner_scenario_transition |
1893 | +msgid "Transition for scenario" |
1894 | msgstr "" |
1895 | |
1896 | #. module: wms_scanner |
1897 | @@ -231,11 +261,31 @@ |
1898 | msgstr "" |
1899 | |
1900 | #. module: wms_scanner |
1901 | +#: field:scanner.hardware,tmp_val5:0 |
1902 | +msgid "Temp value 5" |
1903 | +msgstr "" |
1904 | + |
1905 | +#. module: wms_scanner |
1906 | +#: field:scanner.hardware,tmp_val4:0 |
1907 | +msgid "Temp value 4" |
1908 | +msgstr "" |
1909 | + |
1910 | +#. module: wms_scanner |
1911 | #: field:scanner.scenario,model_id:0 |
1912 | msgid "Model" |
1913 | msgstr "" |
1914 | |
1915 | #. module: wms_scanner |
1916 | +#: field:scanner.hardware,tmp_val1:0 |
1917 | +msgid "Temp value 1" |
1918 | +msgstr "" |
1919 | + |
1920 | +#. module: wms_scanner |
1921 | +#: field:scanner.scenario.transition,tracer:0 |
1922 | +msgid "Tracer" |
1923 | +msgstr "" |
1924 | + |
1925 | +#. module: wms_scanner |
1926 | #: view:scanner.scenario:0 |
1927 | #: view:scanner.scenario.step:0 |
1928 | #: field:scanner.scenario.step,out_trans_ids:0 |
1929 | @@ -243,6 +293,11 @@ |
1930 | msgstr "" |
1931 | |
1932 | #. module: wms_scanner |
1933 | +#: field:scanner.hardware,tmp_val2:0 |
1934 | +msgid "Temp value 2" |
1935 | +msgstr "" |
1936 | + |
1937 | +#. module: wms_scanner |
1938 | #: field:scanner.hardware,code:0 |
1939 | #: view:scanner.scenario:0 |
1940 | #: view:scanner.scenario.step:0 |
1941 | @@ -272,19 +327,30 @@ |
1942 | msgstr "" |
1943 | |
1944 | #. module: wms_scanner |
1945 | +#: model:ir.actions.act_window,name:wms_scanner.act_open_scanner_scenario_transition_view |
1946 | +#: model:ir.ui.menu,name:wms_scanner.menu_scanner_scenario_transition |
1947 | +#: view:scanner.scenario.step:0 |
1948 | +#: view:scanner.scenario.transition:0 |
1949 | +msgid "Transitions" |
1950 | +msgstr "" |
1951 | + |
1952 | +#. module: wms_scanner |
1953 | #: help:scanner.scenario.step,name:0 |
1954 | msgid "Name of the step" |
1955 | msgstr "" |
1956 | |
1957 | #. module: wms_scanner |
1958 | +#: help:scanner.scenario,title:0 |
1959 | +msgid "Title for this scenario" |
1960 | +msgstr "" |
1961 | + |
1962 | +#. module: wms_scanner |
1963 | #: selection:scanner.scenario.transition,trans_type:0 |
1964 | msgid "Keyboard" |
1965 | msgstr "" |
1966 | |
1967 | #. module: wms_scanner |
1968 | -#: model:ir.actions.act_window,name:wms_scanner.act_open_scanner_scenario_transition_view |
1969 | -#: model:ir.ui.menu,name:wms_scanner.menu_scanner_scenario_transition |
1970 | -#: view:scanner.scenario.transition:0 |
1971 | -msgid "Transitions" |
1972 | +#: view:scanner.scenario:0 |
1973 | +msgid "Add note, date of modification, etc." |
1974 | msgstr "" |
1975 | |
1976 | |
1977 | === modified file 'wms_scanner/object/scanner.py' |
1978 | --- wms_scanner/object/scanner.py 2010-10-13 14:18:34 +0000 |
1979 | +++ wms_scanner/object/scanner.py 2011-07-29 14:55:33 +0000 |
1980 | @@ -2,7 +2,7 @@ |
1981 | ############################################################################## |
1982 | # |
1983 | # wms_scanner module for OpenERP, Module for manage barcode reader |
1984 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
1985 | +# Copyright (C) 2010-2011 SYLEAM (<http://syleam.fr/>) |
1986 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
1987 | # |
1988 | # This file is a part of wms_scanner |
1989 | @@ -25,6 +25,7 @@ |
1990 | from osv import osv |
1991 | from osv import fields |
1992 | from tools.translate import _ |
1993 | +import uuid |
1994 | import netsvc |
1995 | |
1996 | logger = netsvc.Logger() |
1997 | @@ -35,13 +36,32 @@ |
1998 | _description = 'Scenario for scanner' |
1999 | |
2000 | _columns = { |
2001 | - 'name': fields.char('Name', size=64, ), |
2002 | + 'name': fields.char('Name', size=64, help='Appear on barcode reader screen'), |
2003 | 'sequence': fields.integer('Sequence'), |
2004 | 'active': fields.boolean('Active', help='if check, this object is always available'), |
2005 | 'model_id': fields.many2one('ir.model', 'Model', required=True), |
2006 | 'step_ids': fields.one2many('scanner.scenario.step', 'scenario_id', 'Scenario', ), |
2007 | 'warehouse_ids': fields.many2many('stock.warehouse', 'scanner_scenario_warehouse_rel', 'scenario_id', 'warehouse_id', 'Warehouses'), |
2008 | - } |
2009 | + 'title': fields.char('Title', size=256, help='Title for this scenario'), |
2010 | + 'note': fields.text('Note', help='Store different note, date and title for modification, etc...'), |
2011 | + 'resid': fields.char('Reference id', size=64, readonly=True, help="Use by import/export Scenario"), |
2012 | + } |
2013 | + |
2014 | + _defaults = { |
2015 | + 'title': lambda *a: False, |
2016 | + } |
2017 | + |
2018 | + _sql_constraints = [ |
2019 | + ('resid_uniq', 'unique (resid)', 'The resid of the Step must be unique !'), |
2020 | + ] |
2021 | + |
2022 | + def create(self, cr, uid, values, context=None): |
2023 | + """ |
2024 | + if the resid not in value, we will create with uuid1 |
2025 | + """ |
2026 | + if not values.get('resid'): |
2027 | + values['resid'] = uuid.uuid1() |
2028 | + return super(ScannerScenario, self).create(cr, uid, values, context=context) |
2029 | |
2030 | ScannerScenario() |
2031 | |
2032 | @@ -53,11 +73,12 @@ |
2033 | _columns = { |
2034 | 'name': fields.char('Name', size=64, help='Name of the step'), |
2035 | 'scenario_id': fields.many2one('scanner.scenario', 'Scenario', required=True), |
2036 | - 'step_start': fields.boolean('Step start',help='Check this if this is the first step of scenario'), |
2037 | - 'step_stop': fields.boolean('Step stop',help='check this if this is the last step of scenario'), |
2038 | + 'step_start': fields.boolean('Step start', help='Check this if this is the first step of scenario'), |
2039 | + 'step_stop': fields.boolean('Step stop', help='check this if this is the last step of scenario'), |
2040 | 'out_trans_ids': fields.one2many('scanner.scenario.transition', 'from_id', 'Outgoing transitions'), |
2041 | 'in_trans_ids': fields.one2many('scanner.scenario.transition', 'to_id', 'Incoming transitions'), |
2042 | 'python_code': fields.text('Python code', ), |
2043 | + 'resid': fields.char('Reference id', size=64, readonly=True, help="Use by import/export Scenario/Step"), |
2044 | } |
2045 | |
2046 | _defaults = { |
2047 | @@ -66,6 +87,18 @@ |
2048 | 'python_code': lambda *a: '# Use message to retrieve the data transmit by the scanner\n# res containt the result', |
2049 | } |
2050 | |
2051 | + _sql_constraints = [ |
2052 | + ('resid_uniq', 'unique (resid)', 'The resid of the Step must be unique !'), |
2053 | + ] |
2054 | + |
2055 | + def create(self, cr, uid, values, context=None): |
2056 | + """ |
2057 | + if the resid not in value, we will create with uuid1 |
2058 | + """ |
2059 | + if not values.get('resid'): |
2060 | + values['resid'] = uuid.uuid1() |
2061 | + return super(ScannerScenarioStep, self).create(cr, uid, values, context=context) |
2062 | + |
2063 | ScannerScenarioStep() |
2064 | |
2065 | |
2066 | @@ -78,8 +111,9 @@ |
2067 | 'from_id': fields.many2one('scanner.scenario.step', 'From', required=True), |
2068 | 'to_id': fields.many2one('scanner.scenario.step', 'To', required=True), |
2069 | 'condition': fields.char('Condition', size=256, required=True), |
2070 | - 'trans_type': fields.selection([('scan','Scan'),('key','Keyboard')], 'Transition Type', ), |
2071 | + 'trans_type': fields.selection([('scan', 'Scan'), ('key', 'Keyboard')], 'Transition Type'), |
2072 | 'tracer': fields.char('Tracer', size=12, help='Use to determine, on which transition we arrive to this step'), |
2073 | + 'resid': fields.char('Reference id', size=64, readonly=True, help="Use by import/export Scenario/Transition"), |
2074 | } |
2075 | |
2076 | _defaults = { |
2077 | @@ -88,6 +122,18 @@ |
2078 | 'tracer': lambda *a: False, |
2079 | } |
2080 | |
2081 | + _sql_constraints = [ |
2082 | + ('resid_uniq', 'unique (resid)', 'The resid of the Transition must be unique !'), |
2083 | + ] |
2084 | + |
2085 | + def create(self, cr, uid, values, context=None): |
2086 | + """ |
2087 | + if the resid not in value, we will create with uuid1 |
2088 | + """ |
2089 | + if not values.get('resid'): |
2090 | + values['resid'] = uuid.uuid1() |
2091 | + return super(ScannerScenarioTransition, self).create(cr, uid, values, context=context) |
2092 | + |
2093 | ScannerScenarioTransition() |
2094 | |
2095 | |
2096 | @@ -120,9 +166,9 @@ |
2097 | Check the step for this scanner |
2098 | """ |
2099 | context = self.pool.get('res.users').context_get(cr, uid) |
2100 | - term_id = self.search(cr, uid, [('code','=',numterm)]) |
2101 | + term_id = self.search(cr, uid, [('code', '=', numterm)]) |
2102 | if not term_id: |
2103 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'Terminal %s not exists!' % numterm) |
2104 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'Terminal %s not exists!' % numterm) |
2105 | raise osv.except_osv(_('Error'), _('This terminal not exists!')) |
2106 | term = self.browse(cr, uid, term_id[0]) |
2107 | if term.scenario_id: |
2108 | @@ -141,14 +187,14 @@ |
2109 | context = self.pool.get('res.users').context_get(cr, uid) |
2110 | logger.notifyChannel('wms_scanner', netsvc.LOG_DEBUG, 'SCANNER_CALL') |
2111 | if numterm is None: |
2112 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'scanner_call required numterm argument') |
2113 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'scanner_call required numterm argument') |
2114 | raise osv.except_osv(_('Error'), _('Terminal number is required')) |
2115 | |
2116 | if action is None: |
2117 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'scanner_call required action argument') |
2118 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'scanner_call required action argument') |
2119 | raise osv.except_osv(_('Error'), _('Action is required')) |
2120 | |
2121 | - term_id = self.search(cr, uid, [('code','=',numterm)]) |
2122 | + term_id = self.search(cr, uid, [('code', '=', numterm)]) |
2123 | if not len(term_id): |
2124 | raise osv.except_osv(_('Error'), _('This terminal is not declare!')) |
2125 | |
2126 | @@ -169,11 +215,10 @@ |
2127 | # check id terminal is not affected to a scenario and step |
2128 | # If not send the menu |
2129 | if not term.scenario_id: |
2130 | - logger.notifyChannel('wms_scanner', netsvc.LOG_INFO, '[%s] Pas de scenario' % numterm) |
2131 | + logger.notifyChannel('wms_scanner', netsvc.LOG_INFO, '[%s] Pas de scenario' % numterm) |
2132 | return self._scenario_list(cr, uid, term.warehouse_id.id) |
2133 | |
2134 | - return ('M', ['Unknown','action'], '') |
2135 | - |
2136 | + return ('M', ['Unknown', 'action'], '') |
2137 | |
2138 | def scanner_end(self, cr, uid, numterm=None, context=None): |
2139 | """ |
2140 | @@ -182,15 +227,15 @@ |
2141 | if context is None: |
2142 | context = self.pool.get('res.users').context_get(cr, uid) |
2143 | |
2144 | - term_id = self.search(cr, uid, [('code','=',numterm)]) |
2145 | + term_id = self.search(cr, uid, [('code', '=', numterm)]) |
2146 | if not term_id: |
2147 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'Terminal %s not exists!' % numterm) |
2148 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'Terminal %s not exists!' % numterm) |
2149 | raise osv.except_osv(_('Error'), _('This terminal not exists!')) |
2150 | |
2151 | - logger.notifyChannel('wms_scanner', netsvc.LOG_INFO, 'End scenario request for %s terminal' % numterm) |
2152 | + logger.notifyChannel('wms_scanner', netsvc.LOG_INFO, 'End scenario request for %s terminal' % numterm) |
2153 | self.write(cr, uid, term_id, {'scenario_id': False, 'step_id': False, 'ref_doc': False}) |
2154 | |
2155 | - return ('F', ['This scenario','is finished'], '') |
2156 | + return ('F', ['This scenario', 'is finished'], '') |
2157 | |
2158 | def _memorize(self, cr, uid, term_id, scenario_id, step_id, object=None, context=None): |
2159 | """ |
2160 | @@ -226,23 +271,44 @@ |
2161 | # No scenario, ok we search it |
2162 | tracer = False |
2163 | if not scenario_id: |
2164 | - scenario_ids = scenario.search(cr, uid, [('name','=', message)]) |
2165 | + # check with the warehouse because we can t use a scenario of other warehouse |
2166 | + term_warehouse_id = term.read(cr, uid, term_id, ['warehouse_id'], context=context).get('warehouse_id', False) |
2167 | + if term_warehouse_id: |
2168 | + # take only the id |
2169 | + term_warehouse_id = term_warehouse_id[0] |
2170 | + scenario_ids = scenario.search(cr, uid, [('name', '=', message), ('warehouse_ids', 'in', [term_warehouse_id])]) |
2171 | if scenario_ids: |
2172 | scenario_id = scenario_ids[0] |
2173 | - step_ids = step.search(cr, uid, [('scenario_id','=',scenario_id),('step_start','=',True)]) |
2174 | + step_ids = step.search(cr, uid, [('scenario_id', '=', scenario_id), ('step_start', '=', True)]) |
2175 | if not step_ids: |
2176 | - return ('M', ['please contact','your','administrator','A001'], '') |
2177 | + return ('M', ['please contact', 'your', 'administrator', 'A001'], '') |
2178 | step_id = step_ids[0] |
2179 | else: |
2180 | # we search the next step for the current scenario |
2181 | old_step = step_id |
2182 | trans = self.pool.get('scanner.scenario.transition') |
2183 | trs_ids = trans.search(cr, uid, [('from_id', '=', step_id)]) |
2184 | - if not trs_ids: |
2185 | - return ('M', ['Please contact','your','administrator'], '') |
2186 | - tr_vals = trans.read(cr, uid, trs_ids[0], ['to_id','tracer']) |
2187 | - step_id = tr_vals['to_id'][0] |
2188 | - tracer = tr_vals['tracer'] |
2189 | + for transition in trans.browse(cr, uid, trs_ids, context=context): |
2190 | + step_id = False |
2191 | + tracer = '' |
2192 | + cxt = { |
2193 | + 'context': context, |
2194 | + 'model': self.pool.get(transition.from_id.scenario_id.model_id.model), |
2195 | + 'cr': cr, |
2196 | + 'pool': self.pool, |
2197 | + 'uid': uid, |
2198 | + 'message': message, |
2199 | + } |
2200 | + expr = eval(str(transition.condition), cxt) |
2201 | + |
2202 | + if not expr: |
2203 | + continue |
2204 | + step_id = transition.to_id.id |
2205 | + tracer = transition.tracer |
2206 | + break |
2207 | + |
2208 | + if not step_id: |
2209 | + return ('M', ['Please contact', 'your', 'administrator'], '') |
2210 | |
2211 | self._memorize(cr, uid, term_id, scenario_id, step_id, cur_obj, context) |
2212 | |
2213 | @@ -250,26 +316,29 @@ |
2214 | stp = step.browse(cr, uid, step_id, context=context) |
2215 | logger.notifyChannel('wms_scanner', netsvc.LOG_INFO, 'Model: %s' % stp.scenario_id.model_id.model) |
2216 | ld = { |
2217 | - 'cr': cr, |
2218 | - 'uid': uid, |
2219 | + 'cr': cr, |
2220 | + 'uid': uid, |
2221 | 'pool': self.pool, |
2222 | - 'model': self.pool.get(stp.scenario_id.model_id.model), |
2223 | + 'model': self.pool.get(stp.scenario_id.model_id.model), |
2224 | 'term': term, |
2225 | 'context': context, |
2226 | 'm': message, |
2227 | 't': term.browse(cr, uid, term_id, context=context), |
2228 | 'tracer': tracer, |
2229 | 'wkf': netsvc.LocalService('workflow'), |
2230 | + 'scenario': self.pool.get('scanner.scenario').browse(cr, uid, scenario_id, context=context), |
2231 | } |
2232 | try: |
2233 | exec stp.python_code in ld |
2234 | + if stp.step_stop: |
2235 | + self._memorize(cr, uid, term_id, False, False, cur_obj, context) |
2236 | except osv.except_osv, e: |
2237 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'OSV Exception: %s' % str(e)) |
2238 | - return ('M', ['Please contact','your','administrator'], '') |
2239 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'OSV Exception: %s' % str(e)) |
2240 | + return ('M', ['Please contact', 'your', 'administrator'], '') |
2241 | except Exception, e: |
2242 | - logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'OSV Exception: %s' % str(e)) |
2243 | - return ('M', ['Please contact','your','administrator'], '') |
2244 | - return (ld.get('act', 'M'), ld.get('res',['nothing']), ld.get('val', '0')) |
2245 | + logger.notifyChannel('wms_scanner', netsvc.LOG_WARNING, 'OSV Exception: %s' % str(e)) |
2246 | + return ('M', ['Please contact', 'your', 'administrator'], '') |
2247 | + return (ld.get('act', 'M'), ld.get('res', ['nothing']), ld.get('val', '0')) |
2248 | |
2249 | def _scenario_list(self, cr, uid, warehouse_id): |
2250 | """ |
2251 | @@ -278,7 +347,7 @@ |
2252 | # List scenario for this material |
2253 | context = self.pool.get('res.users').context_get(cr, uid) |
2254 | scenario = self.pool.get('scanner.scenario') |
2255 | - scenario_ids = scenario.search(cr, uid, [('warehouse_ids','in', [warehouse_id])]) |
2256 | + scenario_ids = scenario.search(cr, uid, [('warehouse_ids', 'in', [warehouse_id])]) |
2257 | scene = scenario.read(cr, uid, scenario_ids, ['name'], context=context) |
2258 | |
2259 | ret = [] |
2260 | @@ -288,6 +357,4 @@ |
2261 | |
2262 | ScannerHardware() |
2263 | |
2264 | - |
2265 | - |
2266 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2267 | |
2268 | === modified file 'wms_scanner/report/__init__.py' |
2269 | --- wms_scanner/report/__init__.py 2010-06-23 08:27:10 +0000 |
2270 | +++ wms_scanner/report/__init__.py 2011-07-29 14:55:33 +0000 |
2271 | @@ -2,7 +2,7 @@ |
2272 | ############################################################################## |
2273 | # |
2274 | # wms_scanner module for OpenERP, Module for manage barcode reader |
2275 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
2276 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
2277 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
2278 | # |
2279 | # This file is a part of wms_scanner |
2280 | @@ -22,6 +22,4 @@ |
2281 | # |
2282 | ############################################################################## |
2283 | |
2284 | - |
2285 | - |
2286 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2287 | \ No newline at end of file |
2288 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2289 | |
2290 | === added directory 'wms_scanner/scripts' |
2291 | === added file 'wms_scanner/scripts/export_scenario.py' |
2292 | --- wms_scanner/scripts/export_scenario.py 1970-01-01 00:00:00 +0000 |
2293 | +++ wms_scanner/scripts/export_scenario.py 2011-07-29 14:55:33 +0000 |
2294 | @@ -0,0 +1,168 @@ |
2295 | +# -*- coding: utf-8 -*- |
2296 | +############################################################################## |
2297 | +# |
2298 | +# wms_scanner module for OpenERP, Module for manage barcode reader |
2299 | +# Copyright (C) 2011 SYLEAM (<http://www.syleam.fr/>) |
2300 | +# Christophe CHAUVET <christophe.chauvet@syleam.fr> |
2301 | +# Jean-SĂ©bastien SUZANNE <jean-sebastien.suzanne@syleam.fr> |
2302 | +# |
2303 | +# This file is a part of wms_scanner |
2304 | +# |
2305 | +# wms_scanner is free software: you can redistribute it and/or modify |
2306 | +# it under the terms of the GNU General Public License as published by |
2307 | +# the Free Software Foundation, either version 3 of the License, or |
2308 | +# (at your option) any later version. |
2309 | +# |
2310 | +# wms_scanner is distributed in the hope that it will be useful, |
2311 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2312 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2313 | +# GNU General Public License for more details. |
2314 | +# |
2315 | +# You should have received a copy of the GNU General Public License |
2316 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2317 | +# |
2318 | +############################################################################## |
2319 | + |
2320 | +from oobjlib.connection import Connection |
2321 | +from oobjlib.component import Object |
2322 | +from oobjlib.common import GetParser |
2323 | +from optparse import OptionGroup |
2324 | +from lxml.etree import Element, SubElement |
2325 | +from lxml.etree import tostring |
2326 | +import uuid |
2327 | + |
2328 | +import logging |
2329 | +import sys |
2330 | + |
2331 | +parser = GetParser('Export scenario', '0.1') |
2332 | +group = OptionGroup(parser, "Object arguments", |
2333 | + "Application Options") |
2334 | +group.add_option('-v', '--verbose', dest='verbose', |
2335 | + action='store_true', |
2336 | + default=False, |
2337 | + help='Add verbose mode') |
2338 | +group.add_option('', '--header', dest='header', |
2339 | + action='store_true', |
2340 | + default=False, |
2341 | + help='Add XML and OpenObkect Header') |
2342 | +group.add_option('', '--indent', dest='indent', |
2343 | + action='store_true', |
2344 | + default=False, |
2345 | + help='Indent the XML output') |
2346 | +group.add_option('', '--id', dest='scenario_id', |
2347 | + default=False, |
2348 | + help='id of the scenario to extract') |
2349 | +parser.add_option_group(group) |
2350 | +opts, args = parser.parse_args() |
2351 | + |
2352 | +logger = logging.getLogger("check_parent_store") |
2353 | +ch = logging.StreamHandler() |
2354 | +if opts.verbose: |
2355 | + logger.setLevel(logging.DEBUG) |
2356 | + ch.setLevel(logging.DEBUG) |
2357 | +else: |
2358 | + logger.setLevel(logging.INFO) |
2359 | + ch.setLevel(logging.INFO) |
2360 | + |
2361 | +formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
2362 | +ch.setFormatter(formatter) |
2363 | +logger.addHandler(ch) |
2364 | + |
2365 | +try: |
2366 | + logger.info('Open connection to "%s:%s" on "%s" with user "%s" ' % (opts.server, opts.port, opts.dbname, opts.user)) |
2367 | + cnx = Connection( |
2368 | + server=opts.server, |
2369 | + dbname=opts.dbname, |
2370 | + login=opts.user, |
2371 | + password=opts.passwd, |
2372 | + port=opts.port) |
2373 | +except Exception, e: |
2374 | + logger.error('Fail to connect to the server') |
2375 | + logger.error('%s' % str(e)) |
2376 | + sys.exit(1) |
2377 | + |
2378 | + |
2379 | +resid = {} |
2380 | + |
2381 | +# extract scenario |
2382 | +scenario_obj = Object(cnx, 'scanner.scenario') |
2383 | +model_obj = Object(cnx, 'ir.model') |
2384 | +warehouse_obj = Object(cnx, 'stock.warehouse') |
2385 | +scen_read = scenario_obj.read(int(opts.scenario_id), [], {'active_test': False}) |
2386 | +del scen_read['step_ids'] |
2387 | +del scen_read['id'] |
2388 | +# create node and attributs |
2389 | +root = Element('scenario') |
2390 | +for field in scen_read: |
2391 | + node = SubElement(root, field) |
2392 | + if field == 'model_id': |
2393 | + node.text = model_obj.read(scen_read.get('model_id', [0])[0], ['model']).get('model') |
2394 | + elif field in ['name', 'note', 'title']: |
2395 | + if scen_read[field]: |
2396 | + node.text = unicode(scen_read[field]) |
2397 | + elif field == 'resid': |
2398 | + if scen_read[field]: |
2399 | + node.text = unicode(scen_read[field]) |
2400 | + resid['scenario'] = unicode(scen_read[field]) |
2401 | + else: |
2402 | + resid['scenario'] = unicode(uuid.uuid1()) |
2403 | + node.text = resid['scenario'] |
2404 | + scenario_obj.write([int(opts.scenario_id)], {'resid': resid['scenario']}) |
2405 | + elif field == 'warehouse_ids': |
2406 | + root.remove(node) |
2407 | + for warehouse in warehouse_obj.read(scen_read[field], ['name']): |
2408 | + node = SubElement(root, 'warehouse_ids') |
2409 | + node.text = unicode(warehouse.get('name')) |
2410 | + else: |
2411 | + node.text = unicode(scen_read[field]) |
2412 | +# add step |
2413 | +step_obj = Object(cnx, 'scanner.scenario.step') |
2414 | +step_ids = step_obj.search([('scenario_id', '=', int(opts.scenario_id))]) |
2415 | +for step in step_obj.read(step_ids, []): |
2416 | + # delete unuse key |
2417 | + del step['in_trans_ids'] |
2418 | + del step['out_trans_ids'] |
2419 | + step_id = step['id'] |
2420 | + del step['id'] |
2421 | + del step['scenario_id'] |
2422 | + # get res_id |
2423 | + if not step['resid']: |
2424 | + step['resid'] = unicode(uuid.uuid1()) |
2425 | + step_obj.write([step_id], {'resid': step['resid']}) |
2426 | + resid[step_id] = unicode(step['resid']) |
2427 | + # save code |
2428 | + src_file = open('%s.py' % step['resid'], 'w') |
2429 | + src_file.write(step['python_code'].encode('utf-8')) |
2430 | + src_file.close() |
2431 | + del step['python_code'] |
2432 | + # use unicode |
2433 | + for key, item in step.items(): |
2434 | + step[key] = unicode(item) |
2435 | + node = SubElement(root, 'Step', attrib=step) |
2436 | +# add transition |
2437 | +transition_obj = Object(cnx, 'scanner.scenario.transition') |
2438 | +transition_ids = transition_obj.search([('from_id.scenario_id', '=', int(opts.scenario_id))]) |
2439 | +for transition in transition_obj.read(transition_ids, []): |
2440 | + transition_id = transition['id'] |
2441 | + del transition['id'] |
2442 | + # get res id |
2443 | + if not transition['resid']: |
2444 | + transition['resid'] = unicode(uuid.uuid1()) |
2445 | + transition_obj.write([transition_id], {'resid': transition['resid']}) |
2446 | + # not write False in attribute tracer |
2447 | + if not transition['tracer']: |
2448 | + transition['tracer'] = '' |
2449 | + # get res id for step |
2450 | + transition['to_id'] = resid[transition['to_id'][0]] |
2451 | + transition['from_id'] = resid[transition['from_id'][0]] |
2452 | + # use unicode |
2453 | + for key, item in transition.items(): |
2454 | + transition[key] = unicode(item) |
2455 | + node = SubElement(root, 'Transition', attrib=transition) |
2456 | + |
2457 | +xml_file = open('scenario.xml', 'w') |
2458 | +scenario_xml = tostring(root, encoding='UTF-8', xml_declaration=opts.header, pretty_print=opts.indent) |
2459 | +xml_file.write(scenario_xml) |
2460 | +xml_file.close() |
2461 | + |
2462 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2463 | |
2464 | === added file 'wms_scanner/scripts/import_scenario.py' |
2465 | --- wms_scanner/scripts/import_scenario.py 1970-01-01 00:00:00 +0000 |
2466 | +++ wms_scanner/scripts/import_scenario.py 2011-07-29 14:55:33 +0000 |
2467 | @@ -0,0 +1,154 @@ |
2468 | +# -*- coding: utf-8 -*- |
2469 | +############################################################################## |
2470 | +# |
2471 | +# wms_scanner module for OpenERP, Module for manage barcode reader |
2472 | +# Copyright (C) 2011 SYLEAM (<http://www.syleam.fr/>) |
2473 | +# Christophe CHAUVET <christophe.chauvet@syleam.fr> |
2474 | +# Jean-SĂ©bastien SUZANNE <jean-sebastien.suzanne@syleam.fr> |
2475 | +# |
2476 | +# This file is a part of wms_scanner |
2477 | +# |
2478 | +# wms_scanner is free software: you can redistribute it and/or modify |
2479 | +# it under the terms of the GNU General Public License as published by |
2480 | +# the Free Software Foundation, either version 3 of the License, or |
2481 | +# (at your option) any later version. |
2482 | +# |
2483 | +# wms_scanner is distributed in the hope that it will be useful, |
2484 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2485 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2486 | +# GNU General Public License for more details. |
2487 | +# |
2488 | +# You should have received a copy of the GNU General Public License |
2489 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2490 | +# |
2491 | +############################################################################## |
2492 | + |
2493 | +from oobjlib.connection import Connection |
2494 | +from oobjlib.component import Object |
2495 | +from oobjlib.common import GetParser |
2496 | +from optparse import OptionGroup |
2497 | +from lxml.etree import parse |
2498 | +from StringIO import StringIO |
2499 | + |
2500 | +import logging |
2501 | +import sys |
2502 | + |
2503 | +parser = GetParser('Export scenario', '0.1') |
2504 | +group = OptionGroup(parser, "Object arguments", |
2505 | + "Application Options") |
2506 | +group.add_option('-v', '--verbose', dest='verbose', |
2507 | + action='store_true', |
2508 | + default=False, |
2509 | + help='Add verbose mode') |
2510 | +parser.add_option_group(group) |
2511 | +opts, args = parser.parse_args() |
2512 | + |
2513 | +logger = logging.getLogger("check_parent_store") |
2514 | +ch = logging.StreamHandler() |
2515 | +if opts.verbose: |
2516 | + logger.setLevel(logging.DEBUG) |
2517 | + ch.setLevel(logging.DEBUG) |
2518 | +else: |
2519 | + logger.setLevel(logging.INFO) |
2520 | + ch.setLevel(logging.INFO) |
2521 | + |
2522 | +formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
2523 | +ch.setFormatter(formatter) |
2524 | +logger.addHandler(ch) |
2525 | + |
2526 | +try: |
2527 | + logger.info('Open connection to "%s:%s" on "%s" with user "%s" ' % (opts.server, opts.port, opts.dbname, opts.user)) |
2528 | + cnx = Connection( |
2529 | + server=opts.server, |
2530 | + dbname=opts.dbname, |
2531 | + login=opts.user, |
2532 | + password=opts.passwd, |
2533 | + port=opts.port) |
2534 | +except Exception, e: |
2535 | + logger.error('Fail to connect to the server') |
2536 | + logger.error('%s' % str(e)) |
2537 | + sys.exit(1) |
2538 | + |
2539 | + |
2540 | +resid = {} |
2541 | + |
2542 | +# extract scenario |
2543 | +scenario_obj = Object(cnx, 'scanner.scenario') |
2544 | +model_obj = Object(cnx, 'ir.model') |
2545 | +warehouse_obj = Object(cnx, 'stock.warehouse') |
2546 | +step_obj = Object(cnx, 'scanner.scenario.step') |
2547 | +trans_obj = Object(cnx, 'scanner.scenario.transition') |
2548 | +xml_file = open('scenario.xml', 'r') |
2549 | +scenario_xml = xml_file.read() |
2550 | +xml_file.close() |
2551 | +xml_doc = StringIO(scenario_xml) |
2552 | +root = parse(xml_doc).getroot() |
2553 | + |
2554 | +step = [] |
2555 | +transition = [] |
2556 | +scen_vals = {} |
2557 | +# parse of the scenario |
2558 | +for node in root.getchildren(): |
2559 | + #the node of the Step and Transition are put in other list |
2560 | + if node.tag == 'Step': |
2561 | + step.append(node) |
2562 | + elif node.tag == 'Transition': |
2563 | + transition.append(node) |
2564 | + elif node.tag == 'warehouse_ids': |
2565 | + if not 'warehouse_ids' in scen_vals: |
2566 | + scen_vals['warehouse_ids'] = [] |
2567 | + warehouse_ids = warehouse_obj.search([('name', '=', node.text)], 0, None, None, {'active_test': False}) |
2568 | + if warehouse_ids: |
2569 | + scen_vals['warehouse_ids'].append((4, warehouse_ids[0])) |
2570 | + else: |
2571 | + scen_vals[node.tag] = node.text or False |
2572 | +scen_vals['model_id'] = model_obj.search([('model', '=', scen_vals['model_id'])], 0, None, None, {'active_test': False}) or False |
2573 | +if scen_vals['model_id']: |
2574 | + scen_vals['model_id'] = scen_vals['model_id'][0] |
2575 | +# create or update |
2576 | +scenario_ids = scenario_obj.search([('resid', '=', scen_vals['resid'])], 0, None, None, {'active_test': False}) |
2577 | +if scenario_ids: |
2578 | + del scen_vals['resid'] |
2579 | + scenario_obj.write(scenario_ids, scen_vals) |
2580 | + scenario_id = scenario_ids[0] |
2581 | +else: |
2582 | + scenario_id = scenario_obj.create(scen_vals) |
2583 | +#parse step |
2584 | +resid = {} |
2585 | +for node in step: |
2586 | + step_vals = {} |
2587 | + for key, item in node.items(): |
2588 | + if item == 'False': |
2589 | + item = False |
2590 | + step_vals[key] = item |
2591 | + # get scenario id |
2592 | + step_vals['scenario_id'] = scenario_id |
2593 | + # get python src |
2594 | + python_code = open('%s.py' % step_vals['resid'], 'r') |
2595 | + step_vals['python_code'] = python_code.read() |
2596 | + python_code.close() |
2597 | + # create or update |
2598 | + step_ids = step_obj.search([('resid', '=', step_vals['resid'])], 0, None, None, {'active_test': False}) |
2599 | + if step_ids: |
2600 | + resid[step_vals['resid']] = step_ids[0] |
2601 | + del step_vals['resid'] |
2602 | + step_obj.write(step_ids, step_vals) |
2603 | + else: |
2604 | + resid[step_vals['resid']] = step_obj.create(step_vals) |
2605 | +#parse transition |
2606 | +for node in transition: |
2607 | + trans_vals = {} |
2608 | + for key, item in node.items(): |
2609 | + if key in ['to_id', 'from_id']: |
2610 | + item = resid[item] |
2611 | + trans_vals[key] = item |
2612 | + # create or update |
2613 | + trans_ids = trans_obj.search([('resid', '=', trans_vals['resid'])], 0, None, None, {'active_test': False}) |
2614 | + if trans_ids: |
2615 | + del trans_vals['resid'] |
2616 | + trans_obj.write(trans_ids, trans_vals) |
2617 | + else: |
2618 | + trans_obj.create(trans_vals) |
2619 | + |
2620 | + |
2621 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2622 | |
2623 | === modified file 'wms_scanner/view/scanner.xml' |
2624 | --- wms_scanner/view/scanner.xml 2010-10-13 12:37:01 +0000 |
2625 | +++ wms_scanner/view/scanner.xml 2011-07-29 14:55:33 +0000 |
2626 | @@ -105,6 +105,7 @@ |
2627 | <field name="sequence"/> |
2628 | <field name="name"/> |
2629 | <field name="model_id"/> |
2630 | + <field name="title"/> |
2631 | </tree> |
2632 | </field> |
2633 | </record> |
2634 | @@ -120,6 +121,7 @@ |
2635 | <field name="active" select="2"/> |
2636 | <field name="sequence"/> |
2637 | <field name="model_id"/> |
2638 | + <field name="title" colspan="4"/> |
2639 | <notebook colspan="4"> |
2640 | <page string="Steps"> |
2641 | <field name="step_ids" nolabel="1" mode="tree,form"> |
2642 | @@ -146,13 +148,21 @@ |
2643 | <field name="python_code" colspan="4" nolabel="1"/> |
2644 | </page> |
2645 | </notebook> |
2646 | + <field name="resid"/> |
2647 | + <newline/> |
2648 | </form> |
2649 | </field> |
2650 | </page> |
2651 | <page string="Warehouses"> |
2652 | <field name="warehouse_ids" nolabel="1" colspan="4"/> |
2653 | </page> |
2654 | + <page string="Note"> |
2655 | + <separator string="Add note, date of modification, etc." colspan="4"/> |
2656 | + <field name="note" nolabel="1" colspan="4"/> |
2657 | + </page> |
2658 | </notebook> |
2659 | + <field name="resid"/> |
2660 | + <newline/> |
2661 | </form> |
2662 | </field> |
2663 | </record> |
2664 | @@ -242,12 +252,16 @@ |
2665 | <field name="condition" colspan="4" select="1"/> |
2666 | <field name="trans_type"/> |
2667 | <field name="tracer"/> |
2668 | + <field name="resid"/> |
2669 | + <newline/> |
2670 | </form> |
2671 | </field> |
2672 | <separator string="Incoming transitions" colspan="4"/> |
2673 | <field name="in_trans_ids" colspan="4" nolabel="1"/> |
2674 | </page> |
2675 | </notebook> |
2676 | + <field name="resid"/> |
2677 | + <newline/> |
2678 | </form> |
2679 | </field> |
2680 | </record> |
2681 | @@ -313,6 +327,8 @@ |
2682 | <field name="condition" colspan="4" select="1"/> |
2683 | <field name="trans_type"/> |
2684 | <field name="tracer"/> |
2685 | + <field name="resid"/> |
2686 | + <newline/> |
2687 | </form> |
2688 | </field> |
2689 | </record> |
2690 | |
2691 | === modified file 'wms_scanner/wizard/__init__.py' |
2692 | --- wms_scanner/wizard/__init__.py 2010-06-23 08:27:10 +0000 |
2693 | +++ wms_scanner/wizard/__init__.py 2011-07-29 14:55:33 +0000 |
2694 | @@ -2,7 +2,7 @@ |
2695 | ############################################################################## |
2696 | # |
2697 | # wms_scanner module for OpenERP, Module for manage barcode reader |
2698 | -# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
2699 | +# Copyright (C) 2010 SYLEAM (<http://syleam.fr/>) |
2700 | # Christophe Chauvet <christophe.chauvet@syleam.fr> |
2701 | # |
2702 | # This file is a part of wms_scanner |
2703 | @@ -22,6 +22,4 @@ |
2704 | # |
2705 | ############################################################################## |
2706 | |
2707 | - |
2708 | - |
2709 | -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2710 | \ No newline at end of file |
2711 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2712 | |
2713 | === added directory 'wms_wave' |
2714 | === added file 'wms_wave/.description' |
2715 | --- wms_wave/.description 1970-01-01 00:00:00 +0000 |
2716 | +++ wms_wave/.description 2011-07-29 14:55:33 +0000 |
2717 | @@ -0,0 +1,1 @@ |
2718 | +To treat picking per group, also known as « wave » |
2719 | \ No newline at end of file |
2720 | |
2721 | === added file 'wms_wave/__init__.py' |
2722 | --- wms_wave/__init__.py 1970-01-01 00:00:00 +0000 |
2723 | +++ wms_wave/__init__.py 2011-07-29 14:55:33 +0000 |
2724 | @@ -0,0 +1,29 @@ |
2725 | +# -*- coding: utf-8 -*- |
2726 | +############################################################################## |
2727 | +# |
2728 | +# wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
2729 | +# Copyright (C) 2011 SYLEAM Info Services (<http://www.syleam.fr/>) |
2730 | +# Jean-SĂ©bastien SUZANNE <jean-sebastien.suzanne@syleam.fr> |
2731 | +# |
2732 | +# This file is a part of wms_wave |
2733 | +# |
2734 | +# wms_wave is free software: you can redistribute it and/or modify |
2735 | +# it under the terms of the GNU General Public License as published by |
2736 | +# the Free Software Foundation, either version 3 of the License, or |
2737 | +# (at your option) any later version. |
2738 | +# |
2739 | +# wms_wave is distributed in the hope that it will be useful, |
2740 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2741 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2742 | +# GNU General Public License for more details. |
2743 | +# |
2744 | +# You should have received a copy of the GNU General Public License |
2745 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2746 | +# |
2747 | +############################################################################## |
2748 | + |
2749 | +import object |
2750 | +import report |
2751 | +import wizard |
2752 | + |
2753 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2754 | |
2755 | === added file 'wms_wave/__terp__.py' |
2756 | --- wms_wave/__terp__.py 1970-01-01 00:00:00 +0000 |
2757 | +++ wms_wave/__terp__.py 2011-07-29 14:55:33 +0000 |
2758 | @@ -0,0 +1,64 @@ |
2759 | +# -*- coding: utf-8 -*- |
2760 | +############################################################################## |
2761 | +# |
2762 | +# wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
2763 | +# Copyright (C) 2011 SYLEAM Info Services (<http://www.syleam.fr/>) |
2764 | +# Jean-SĂ©bastien SUZANNE <jean-sebastien.suzanne@syleam.fr> |
2765 | +# |
2766 | +# This file is a part of wms_wave |
2767 | +# |
2768 | +# wms_wave is free software: you can redistribute it and/or modify |
2769 | +# it under the terms of the GNU General Public License as published by |
2770 | +# the Free Software Foundation, either version 3 of the License, or |
2771 | +# (at your option) any later version. |
2772 | +# |
2773 | +# wms_wave is distributed in the hope that it will be useful, |
2774 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
2775 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2776 | +# GNU General Public License for more details. |
2777 | +# |
2778 | +# You should have received a copy of the GNU General Public License |
2779 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
2780 | +# |
2781 | +############################################################################## |
2782 | + |
2783 | +{ |
2784 | + 'name': 'Wms Wave', |
2785 | + 'version': '0.1.0', |
2786 | + 'category': 'Custom', |
2787 | + 'description': """To treat picking per group, also known as « wave »""", |
2788 | + 'author': 'SYLEAM Info Services', |
2789 | + 'website': 'http://www.syleam.fr/', |
2790 | + 'depends': [ |
2791 | + 'base', |
2792 | + 'wms', |
2793 | + 'stock', |
2794 | + ], |
2795 | + 'init_xml': [], |
2796 | + 'update_xml': [ |
2797 | + 'security/groups.xml', |
2798 | + 'security/ir.model.access.csv', |
2799 | + 'data/sequence.xml', |
2800 | + 'data/ir.xml', |
2801 | + 'view/menu.xml', |
2802 | + 'view/stock.xml', |
2803 | + #'wizard/wizard.xml', |
2804 | + 'wizard/wave_affect_picking.xml', |
2805 | + 'workflow/workflow.xml', |
2806 | + #'report/report.xml', |
2807 | + ], |
2808 | + 'demo_xml': [ |
2809 | + 'demo/sequence.xml', |
2810 | + 'demo/warehouse.xml', |
2811 | + 'demo/users.xml', |
2812 | + 'demo/product.xml', |
2813 | + 'demo/picking_in.xml', |
2814 | + 'demo/picking_out.xml', |
2815 | + ], |
2816 | + 'installable': True, |
2817 | + 'active': False, |
2818 | + 'license': 'GPL-3', |
2819 | +} |
2820 | + |
2821 | + |
2822 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2823 | |
2824 | === added directory 'wms_wave/data' |
2825 | === added file 'wms_wave/data/ir.xml' |
2826 | --- wms_wave/data/ir.xml 1970-01-01 00:00:00 +0000 |
2827 | +++ wms_wave/data/ir.xml 2011-07-29 14:55:33 +0000 |
2828 | @@ -0,0 +1,41 @@ |
2829 | +<?xml version="1.0" encoding="UTF-8"?> |
2830 | +<openerp> |
2831 | + <data noupdate="1"> |
2832 | + ############################################################################## |
2833 | + # |
2834 | + # wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
2835 | + # Copyright (C) 2011 SYLEAM Info Services ([http://www.syleam.fr/]) |
2836 | + # Jean-SĂ©bastien SUZANNE [jean-sebastien.suzanne@syleam.fr] |
2837 | + # |
2838 | + # This file is a part of wms_wave |
2839 | + # |
2840 | + # wms_wave is free software: you can redistribute it and/or modify |
2841 | + # it under the terms of the GNU General Public License as published by |
2842 | + # the Free Software Foundation, either version 3 of the License, or |
2843 | + # (at your option) any later version. |
2844 | + # |
2845 | + # wms_wave is distributed in the hope that it will be useful, |
2846 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2847 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2848 | + # GNU General Public License for more details. |
2849 | + # |
2850 | + # You should have received a copy of the GNU General Public License |
2851 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
2852 | + # |
2853 | + ############################################################################## |
2854 | + |
2855 | + ############################################################################## |
2856 | + # Define rule for the wave : User can only see wave on this warehouse |
2857 | + ############################################################################## |
2858 | + <record model="ir.rule.group" id="ir_rule_group_stock_wave_warehouse"> |
2859 | + <field name="groups" eval="[(4,ref('wms.group_wms_warehouse_rules'))]"/> |
2860 | + <field name="model_id" ref="wms_wave.model_stock_wave"/> |
2861 | + <field name="name">Wave per Warehouse</field> |
2862 | + <field name="rules"/> |
2863 | + </record> |
2864 | + <record model="ir.rule" id="ir_rule_stock_wave_warehouse"> |
2865 | + <field name="domain_force">['|', ('warehouse_id','=',False),('warehouse_id','=', user.context_warehouse_id.id)]</field> |
2866 | + <field name="rule_group" ref="ir_rule_group_stock_wave_warehouse"/> |
2867 | + </record> |
2868 | + </data> |
2869 | +</openerp> |
2870 | |
2871 | === added file 'wms_wave/data/sequence.xml' |
2872 | --- wms_wave/data/sequence.xml 1970-01-01 00:00:00 +0000 |
2873 | +++ wms_wave/data/sequence.xml 2011-07-29 14:55:33 +0000 |
2874 | @@ -0,0 +1,37 @@ |
2875 | +<?xml version="1.0" encoding="UTF-8"?> |
2876 | +<openerp> |
2877 | + <data noupdate="1"> |
2878 | + ############################################################################## |
2879 | + # |
2880 | + # wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
2881 | + # Copyright (C) 2011 SYLEAM Info Services ([http://www.syleam.fr/]) |
2882 | + # Jean-SĂ©bastien SUZANNE [jean-sebastien.suzanne@syleam.fr] |
2883 | + # |
2884 | + # This file is a part of wms_wave |
2885 | + # |
2886 | + # wms_wave is free software: you can redistribute it and/or modify |
2887 | + # it under the terms of the GNU General Public License as published by |
2888 | + # the Free Software Foundation, either version 3 of the License, or |
2889 | + # (at your option) any later version. |
2890 | + # |
2891 | + # wms_wave is distributed in the hope that it will be useful, |
2892 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2893 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2894 | + # GNU General Public License for more details. |
2895 | + # |
2896 | + # You should have received a copy of the GNU General Public License |
2897 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
2898 | + # |
2899 | + ############################################################################## |
2900 | + |
2901 | + ############################################################################## |
2902 | + # ADD new sequence type for group wave sequence |
2903 | + ############################################################################## |
2904 | + <record model="ir.sequence.type" id="ir_sequence_type_stock_wave"> |
2905 | + <field name="code">stock_wave</field> |
2906 | + <field name="name">Stock Wave</field> |
2907 | + </record> |
2908 | + |
2909 | + </data> |
2910 | +</openerp> |
2911 | + |
2912 | |
2913 | === added directory 'wms_wave/demo' |
2914 | === added file 'wms_wave/demo/picking_in.xml' |
2915 | --- wms_wave/demo/picking_in.xml 1970-01-01 00:00:00 +0000 |
2916 | +++ wms_wave/demo/picking_in.xml 2011-07-29 14:55:33 +0000 |
2917 | @@ -0,0 +1,1240 @@ |
2918 | +<?xml version="1.0" encoding="UTF-8"?> |
2919 | +<openerp> |
2920 | + <data> |
2921 | + ############################################################################## |
2922 | + # |
2923 | + # wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
2924 | + # Copyright (C) 2011 SYLEAM Info Services ([http://www.syleam.fr/]) |
2925 | + # Jean-SĂ©bastien SUZANNE [jean-sebastien.suzanne@syleam.fr] |
2926 | + # |
2927 | + # This file is a part of wms_wave |
2928 | + # |
2929 | + # wms_wave is free software: you can redistribute it and/or modify |
2930 | + # it under the terms of the GNU General Public License as published by |
2931 | + # the Free Software Foundation, either version 3 of the License, or |
2932 | + # (at your option) any later version. |
2933 | + # |
2934 | + # wms_wave is distributed in the hope that it will be useful, |
2935 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2936 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2937 | + # GNU General Public License for more details. |
2938 | + # |
2939 | + # You should have received a copy of the GNU General Public License |
2940 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
2941 | + # |
2942 | + ############################################################################## |
2943 | + |
2944 | + <record model="stock.picking" id="stock_picking_wave_in"> |
2945 | + <field name="address_id" ref="base.res_partner_address_2"/> |
2946 | + <field name="move_type">direct</field> |
2947 | + <field name="name">/</field> |
2948 | + <field name="type">in</field> |
2949 | + <field name="warehouse_id" ref="warehousewave"/> |
2950 | + </record> |
2951 | + |
2952 | + <record model="stock.move" id="stock_move_0"> |
2953 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
2954 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
2955 | + <field name="name">product wave 0</field> |
2956 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
2957 | + <field name="priority">1</field> |
2958 | + <field name="product_id" ref="product_0"/> |
2959 | + <field name="product_qty" eval="10.0"/> |
2960 | + <field name="product_uom" ref="product.product_uom_unit"/> |
2961 | + </record> |
2962 | + |
2963 | + |
2964 | + <record model="stock.move" id="stock_move_1"> |
2965 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
2966 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
2967 | + <field name="name">product wave 1</field> |
2968 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
2969 | + <field name="priority">1</field> |
2970 | + <field name="product_id" ref="product_1"/> |
2971 | + <field name="product_qty" eval="10.0"/> |
2972 | + <field name="product_uom" ref="product.product_uom_unit"/> |
2973 | + </record> |
2974 | + |
2975 | + |
2976 | + <record model="stock.move" id="stock_move_2"> |
2977 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
2978 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
2979 | + <field name="name">product wave 2</field> |
2980 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
2981 | + <field name="priority">1</field> |
2982 | + <field name="product_id" ref="product_2"/> |
2983 | + <field name="product_qty" eval="10.0"/> |
2984 | + <field name="product_uom" ref="product.product_uom_unit"/> |
2985 | + </record> |
2986 | + |
2987 | + |
2988 | + <record model="stock.move" id="stock_move_3"> |
2989 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
2990 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
2991 | + <field name="name">product wave 3</field> |
2992 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
2993 | + <field name="priority">1</field> |
2994 | + <field name="product_id" ref="product_3"/> |
2995 | + <field name="product_qty" eval="10.0"/> |
2996 | + <field name="product_uom" ref="product.product_uom_unit"/> |
2997 | + </record> |
2998 | + |
2999 | + |
3000 | + <record model="stock.move" id="stock_move_4"> |
3001 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3002 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3003 | + <field name="name">product wave 4</field> |
3004 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3005 | + <field name="priority">1</field> |
3006 | + <field name="product_id" ref="product_4"/> |
3007 | + <field name="product_qty" eval="10.0"/> |
3008 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3009 | + </record> |
3010 | + |
3011 | + |
3012 | + <record model="stock.move" id="stock_move_5"> |
3013 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3014 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3015 | + <field name="name">product wave 5</field> |
3016 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3017 | + <field name="priority">1</field> |
3018 | + <field name="product_id" ref="product_5"/> |
3019 | + <field name="product_qty" eval="10.0"/> |
3020 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3021 | + </record> |
3022 | + |
3023 | + |
3024 | + <record model="stock.move" id="stock_move_6"> |
3025 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3026 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3027 | + <field name="name">product wave 6</field> |
3028 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3029 | + <field name="priority">1</field> |
3030 | + <field name="product_id" ref="product_6"/> |
3031 | + <field name="product_qty" eval="10.0"/> |
3032 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3033 | + </record> |
3034 | + |
3035 | + |
3036 | + <record model="stock.move" id="stock_move_7"> |
3037 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3038 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3039 | + <field name="name">product wave 7</field> |
3040 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3041 | + <field name="priority">1</field> |
3042 | + <field name="product_id" ref="product_7"/> |
3043 | + <field name="product_qty" eval="10.0"/> |
3044 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3045 | + </record> |
3046 | + |
3047 | + |
3048 | + <record model="stock.move" id="stock_move_8"> |
3049 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3050 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3051 | + <field name="name">product wave 8</field> |
3052 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3053 | + <field name="priority">1</field> |
3054 | + <field name="product_id" ref="product_8"/> |
3055 | + <field name="product_qty" eval="10.0"/> |
3056 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3057 | + </record> |
3058 | + |
3059 | + |
3060 | + <record model="stock.move" id="stock_move_9"> |
3061 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3062 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3063 | + <field name="name">product wave 9</field> |
3064 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3065 | + <field name="priority">1</field> |
3066 | + <field name="product_id" ref="product_9"/> |
3067 | + <field name="product_qty" eval="10.0"/> |
3068 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3069 | + </record> |
3070 | + |
3071 | + |
3072 | + <record model="stock.move" id="stock_move_10"> |
3073 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3074 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3075 | + <field name="name">product wave 10</field> |
3076 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3077 | + <field name="priority">1</field> |
3078 | + <field name="product_id" ref="product_10"/> |
3079 | + <field name="product_qty" eval="10.0"/> |
3080 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3081 | + </record> |
3082 | + |
3083 | + |
3084 | + <record model="stock.move" id="stock_move_11"> |
3085 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3086 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3087 | + <field name="name">product wave 11</field> |
3088 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3089 | + <field name="priority">1</field> |
3090 | + <field name="product_id" ref="product_11"/> |
3091 | + <field name="product_qty" eval="10.0"/> |
3092 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3093 | + </record> |
3094 | + |
3095 | + |
3096 | + <record model="stock.move" id="stock_move_12"> |
3097 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3098 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3099 | + <field name="name">product wave 12</field> |
3100 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3101 | + <field name="priority">1</field> |
3102 | + <field name="product_id" ref="product_12"/> |
3103 | + <field name="product_qty" eval="10.0"/> |
3104 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3105 | + </record> |
3106 | + |
3107 | + |
3108 | + <record model="stock.move" id="stock_move_13"> |
3109 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3110 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3111 | + <field name="name">product wave 13</field> |
3112 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3113 | + <field name="priority">1</field> |
3114 | + <field name="product_id" ref="product_13"/> |
3115 | + <field name="product_qty" eval="10.0"/> |
3116 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3117 | + </record> |
3118 | + |
3119 | + |
3120 | + <record model="stock.move" id="stock_move_14"> |
3121 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3122 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3123 | + <field name="name">product wave 14</field> |
3124 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3125 | + <field name="priority">1</field> |
3126 | + <field name="product_id" ref="product_14"/> |
3127 | + <field name="product_qty" eval="10.0"/> |
3128 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3129 | + </record> |
3130 | + |
3131 | + |
3132 | + <record model="stock.move" id="stock_move_15"> |
3133 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3134 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3135 | + <field name="name">product wave 15</field> |
3136 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3137 | + <field name="priority">1</field> |
3138 | + <field name="product_id" ref="product_15"/> |
3139 | + <field name="product_qty" eval="10.0"/> |
3140 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3141 | + </record> |
3142 | + |
3143 | + |
3144 | + <record model="stock.move" id="stock_move_16"> |
3145 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3146 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3147 | + <field name="name">product wave 16</field> |
3148 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3149 | + <field name="priority">1</field> |
3150 | + <field name="product_id" ref="product_16"/> |
3151 | + <field name="product_qty" eval="10.0"/> |
3152 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3153 | + </record> |
3154 | + |
3155 | + |
3156 | + <record model="stock.move" id="stock_move_17"> |
3157 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3158 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3159 | + <field name="name">product wave 17</field> |
3160 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3161 | + <field name="priority">1</field> |
3162 | + <field name="product_id" ref="product_17"/> |
3163 | + <field name="product_qty" eval="10.0"/> |
3164 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3165 | + </record> |
3166 | + |
3167 | + |
3168 | + <record model="stock.move" id="stock_move_18"> |
3169 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3170 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3171 | + <field name="name">product wave 18</field> |
3172 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3173 | + <field name="priority">1</field> |
3174 | + <field name="product_id" ref="product_18"/> |
3175 | + <field name="product_qty" eval="10.0"/> |
3176 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3177 | + </record> |
3178 | + |
3179 | + |
3180 | + <record model="stock.move" id="stock_move_19"> |
3181 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3182 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3183 | + <field name="name">product wave 19</field> |
3184 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3185 | + <field name="priority">1</field> |
3186 | + <field name="product_id" ref="product_19"/> |
3187 | + <field name="product_qty" eval="10.0"/> |
3188 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3189 | + </record> |
3190 | + |
3191 | + |
3192 | + <record model="stock.move" id="stock_move_20"> |
3193 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3194 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3195 | + <field name="name">product wave 20</field> |
3196 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3197 | + <field name="priority">1</field> |
3198 | + <field name="product_id" ref="product_20"/> |
3199 | + <field name="product_qty" eval="10.0"/> |
3200 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3201 | + </record> |
3202 | + |
3203 | + |
3204 | + <record model="stock.move" id="stock_move_21"> |
3205 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3206 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3207 | + <field name="name">product wave 21</field> |
3208 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3209 | + <field name="priority">1</field> |
3210 | + <field name="product_id" ref="product_21"/> |
3211 | + <field name="product_qty" eval="10.0"/> |
3212 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3213 | + </record> |
3214 | + |
3215 | + |
3216 | + <record model="stock.move" id="stock_move_22"> |
3217 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3218 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3219 | + <field name="name">product wave 22</field> |
3220 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3221 | + <field name="priority">1</field> |
3222 | + <field name="product_id" ref="product_22"/> |
3223 | + <field name="product_qty" eval="10.0"/> |
3224 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3225 | + </record> |
3226 | + |
3227 | + |
3228 | + <record model="stock.move" id="stock_move_23"> |
3229 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3230 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3231 | + <field name="name">product wave 23</field> |
3232 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3233 | + <field name="priority">1</field> |
3234 | + <field name="product_id" ref="product_23"/> |
3235 | + <field name="product_qty" eval="10.0"/> |
3236 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3237 | + </record> |
3238 | + |
3239 | + |
3240 | + <record model="stock.move" id="stock_move_24"> |
3241 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3242 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3243 | + <field name="name">product wave 24</field> |
3244 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3245 | + <field name="priority">1</field> |
3246 | + <field name="product_id" ref="product_24"/> |
3247 | + <field name="product_qty" eval="10.0"/> |
3248 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3249 | + </record> |
3250 | + |
3251 | + |
3252 | + <record model="stock.move" id="stock_move_25"> |
3253 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3254 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3255 | + <field name="name">product wave 25</field> |
3256 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3257 | + <field name="priority">1</field> |
3258 | + <field name="product_id" ref="product_25"/> |
3259 | + <field name="product_qty" eval="10.0"/> |
3260 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3261 | + </record> |
3262 | + |
3263 | + |
3264 | + <record model="stock.move" id="stock_move_26"> |
3265 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3266 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3267 | + <field name="name">product wave 26</field> |
3268 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3269 | + <field name="priority">1</field> |
3270 | + <field name="product_id" ref="product_26"/> |
3271 | + <field name="product_qty" eval="10.0"/> |
3272 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3273 | + </record> |
3274 | + |
3275 | + |
3276 | + <record model="stock.move" id="stock_move_27"> |
3277 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3278 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3279 | + <field name="name">product wave 27</field> |
3280 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3281 | + <field name="priority">1</field> |
3282 | + <field name="product_id" ref="product_27"/> |
3283 | + <field name="product_qty" eval="10.0"/> |
3284 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3285 | + </record> |
3286 | + |
3287 | + |
3288 | + <record model="stock.move" id="stock_move_28"> |
3289 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3290 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3291 | + <field name="name">product wave 28</field> |
3292 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3293 | + <field name="priority">1</field> |
3294 | + <field name="product_id" ref="product_28"/> |
3295 | + <field name="product_qty" eval="10.0"/> |
3296 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3297 | + </record> |
3298 | + |
3299 | + |
3300 | + <record model="stock.move" id="stock_move_29"> |
3301 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3302 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3303 | + <field name="name">product wave 29</field> |
3304 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3305 | + <field name="priority">1</field> |
3306 | + <field name="product_id" ref="product_29"/> |
3307 | + <field name="product_qty" eval="10.0"/> |
3308 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3309 | + </record> |
3310 | + |
3311 | + |
3312 | + <record model="stock.move" id="stock_move_30"> |
3313 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3314 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3315 | + <field name="name">product wave 30</field> |
3316 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3317 | + <field name="priority">1</field> |
3318 | + <field name="product_id" ref="product_30"/> |
3319 | + <field name="product_qty" eval="10.0"/> |
3320 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3321 | + </record> |
3322 | + |
3323 | + |
3324 | + <record model="stock.move" id="stock_move_31"> |
3325 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3326 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3327 | + <field name="name">product wave 31</field> |
3328 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3329 | + <field name="priority">1</field> |
3330 | + <field name="product_id" ref="product_31"/> |
3331 | + <field name="product_qty" eval="10.0"/> |
3332 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3333 | + </record> |
3334 | + |
3335 | + |
3336 | + <record model="stock.move" id="stock_move_32"> |
3337 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3338 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3339 | + <field name="name">product wave 32</field> |
3340 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3341 | + <field name="priority">1</field> |
3342 | + <field name="product_id" ref="product_32"/> |
3343 | + <field name="product_qty" eval="10.0"/> |
3344 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3345 | + </record> |
3346 | + |
3347 | + |
3348 | + <record model="stock.move" id="stock_move_33"> |
3349 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3350 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3351 | + <field name="name">product wave 33</field> |
3352 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3353 | + <field name="priority">1</field> |
3354 | + <field name="product_id" ref="product_33"/> |
3355 | + <field name="product_qty" eval="10.0"/> |
3356 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3357 | + </record> |
3358 | + |
3359 | + |
3360 | + <record model="stock.move" id="stock_move_34"> |
3361 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3362 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3363 | + <field name="name">product wave 34</field> |
3364 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3365 | + <field name="priority">1</field> |
3366 | + <field name="product_id" ref="product_34"/> |
3367 | + <field name="product_qty" eval="10.0"/> |
3368 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3369 | + </record> |
3370 | + |
3371 | + |
3372 | + <record model="stock.move" id="stock_move_35"> |
3373 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3374 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3375 | + <field name="name">product wave 35</field> |
3376 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3377 | + <field name="priority">1</field> |
3378 | + <field name="product_id" ref="product_35"/> |
3379 | + <field name="product_qty" eval="10.0"/> |
3380 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3381 | + </record> |
3382 | + |
3383 | + |
3384 | + <record model="stock.move" id="stock_move_36"> |
3385 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3386 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3387 | + <field name="name">product wave 36</field> |
3388 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3389 | + <field name="priority">1</field> |
3390 | + <field name="product_id" ref="product_36"/> |
3391 | + <field name="product_qty" eval="10.0"/> |
3392 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3393 | + </record> |
3394 | + |
3395 | + |
3396 | + <record model="stock.move" id="stock_move_37"> |
3397 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3398 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3399 | + <field name="name">product wave 37</field> |
3400 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3401 | + <field name="priority">1</field> |
3402 | + <field name="product_id" ref="product_37"/> |
3403 | + <field name="product_qty" eval="10.0"/> |
3404 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3405 | + </record> |
3406 | + |
3407 | + |
3408 | + <record model="stock.move" id="stock_move_38"> |
3409 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3410 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3411 | + <field name="name">product wave 38</field> |
3412 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3413 | + <field name="priority">1</field> |
3414 | + <field name="product_id" ref="product_38"/> |
3415 | + <field name="product_qty" eval="10.0"/> |
3416 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3417 | + </record> |
3418 | + |
3419 | + |
3420 | + <record model="stock.move" id="stock_move_39"> |
3421 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3422 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3423 | + <field name="name">product wave 39</field> |
3424 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3425 | + <field name="priority">1</field> |
3426 | + <field name="product_id" ref="product_39"/> |
3427 | + <field name="product_qty" eval="10.0"/> |
3428 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3429 | + </record> |
3430 | + |
3431 | + |
3432 | + <record model="stock.move" id="stock_move_40"> |
3433 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3434 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3435 | + <field name="name">product wave 40</field> |
3436 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3437 | + <field name="priority">1</field> |
3438 | + <field name="product_id" ref="product_40"/> |
3439 | + <field name="product_qty" eval="10.0"/> |
3440 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3441 | + </record> |
3442 | + |
3443 | + |
3444 | + <record model="stock.move" id="stock_move_41"> |
3445 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3446 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3447 | + <field name="name">product wave 41</field> |
3448 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3449 | + <field name="priority">1</field> |
3450 | + <field name="product_id" ref="product_41"/> |
3451 | + <field name="product_qty" eval="10.0"/> |
3452 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3453 | + </record> |
3454 | + |
3455 | + |
3456 | + <record model="stock.move" id="stock_move_42"> |
3457 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3458 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3459 | + <field name="name">product wave 42</field> |
3460 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3461 | + <field name="priority">1</field> |
3462 | + <field name="product_id" ref="product_42"/> |
3463 | + <field name="product_qty" eval="10.0"/> |
3464 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3465 | + </record> |
3466 | + |
3467 | + |
3468 | + <record model="stock.move" id="stock_move_43"> |
3469 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3470 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3471 | + <field name="name">product wave 43</field> |
3472 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3473 | + <field name="priority">1</field> |
3474 | + <field name="product_id" ref="product_43"/> |
3475 | + <field name="product_qty" eval="10.0"/> |
3476 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3477 | + </record> |
3478 | + |
3479 | + |
3480 | + <record model="stock.move" id="stock_move_44"> |
3481 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3482 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3483 | + <field name="name">product wave 44</field> |
3484 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3485 | + <field name="priority">1</field> |
3486 | + <field name="product_id" ref="product_44"/> |
3487 | + <field name="product_qty" eval="10.0"/> |
3488 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3489 | + </record> |
3490 | + |
3491 | + |
3492 | + <record model="stock.move" id="stock_move_45"> |
3493 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3494 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3495 | + <field name="name">product wave 45</field> |
3496 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3497 | + <field name="priority">1</field> |
3498 | + <field name="product_id" ref="product_45"/> |
3499 | + <field name="product_qty" eval="10.0"/> |
3500 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3501 | + </record> |
3502 | + |
3503 | + |
3504 | + <record model="stock.move" id="stock_move_46"> |
3505 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3506 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3507 | + <field name="name">product wave 46</field> |
3508 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3509 | + <field name="priority">1</field> |
3510 | + <field name="product_id" ref="product_46"/> |
3511 | + <field name="product_qty" eval="10.0"/> |
3512 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3513 | + </record> |
3514 | + |
3515 | + |
3516 | + <record model="stock.move" id="stock_move_47"> |
3517 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3518 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3519 | + <field name="name">product wave 47</field> |
3520 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3521 | + <field name="priority">1</field> |
3522 | + <field name="product_id" ref="product_47"/> |
3523 | + <field name="product_qty" eval="10.0"/> |
3524 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3525 | + </record> |
3526 | + |
3527 | + |
3528 | + <record model="stock.move" id="stock_move_48"> |
3529 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3530 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3531 | + <field name="name">product wave 48</field> |
3532 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3533 | + <field name="priority">1</field> |
3534 | + <field name="product_id" ref="product_48"/> |
3535 | + <field name="product_qty" eval="10.0"/> |
3536 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3537 | + </record> |
3538 | + |
3539 | + |
3540 | + <record model="stock.move" id="stock_move_49"> |
3541 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3542 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3543 | + <field name="name">product wave 49</field> |
3544 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3545 | + <field name="priority">1</field> |
3546 | + <field name="product_id" ref="product_49"/> |
3547 | + <field name="product_qty" eval="10.0"/> |
3548 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3549 | + </record> |
3550 | + |
3551 | + |
3552 | + <record model="stock.move" id="stock_move_50"> |
3553 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3554 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3555 | + <field name="name">product wave 50</field> |
3556 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3557 | + <field name="priority">1</field> |
3558 | + <field name="product_id" ref="product_50"/> |
3559 | + <field name="product_qty" eval="10.0"/> |
3560 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3561 | + </record> |
3562 | + |
3563 | + |
3564 | + <record model="stock.move" id="stock_move_51"> |
3565 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3566 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3567 | + <field name="name">product wave 51</field> |
3568 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3569 | + <field name="priority">1</field> |
3570 | + <field name="product_id" ref="product_51"/> |
3571 | + <field name="product_qty" eval="10.0"/> |
3572 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3573 | + </record> |
3574 | + |
3575 | + |
3576 | + <record model="stock.move" id="stock_move_52"> |
3577 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3578 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3579 | + <field name="name">product wave 52</field> |
3580 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3581 | + <field name="priority">1</field> |
3582 | + <field name="product_id" ref="product_52"/> |
3583 | + <field name="product_qty" eval="10.0"/> |
3584 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3585 | + </record> |
3586 | + |
3587 | + |
3588 | + <record model="stock.move" id="stock_move_53"> |
3589 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3590 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3591 | + <field name="name">product wave 53</field> |
3592 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3593 | + <field name="priority">1</field> |
3594 | + <field name="product_id" ref="product_53"/> |
3595 | + <field name="product_qty" eval="10.0"/> |
3596 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3597 | + </record> |
3598 | + |
3599 | + |
3600 | + <record model="stock.move" id="stock_move_54"> |
3601 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3602 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3603 | + <field name="name">product wave 54</field> |
3604 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3605 | + <field name="priority">1</field> |
3606 | + <field name="product_id" ref="product_54"/> |
3607 | + <field name="product_qty" eval="10.0"/> |
3608 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3609 | + </record> |
3610 | + |
3611 | + |
3612 | + <record model="stock.move" id="stock_move_55"> |
3613 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3614 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3615 | + <field name="name">product wave 55</field> |
3616 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3617 | + <field name="priority">1</field> |
3618 | + <field name="product_id" ref="product_55"/> |
3619 | + <field name="product_qty" eval="10.0"/> |
3620 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3621 | + </record> |
3622 | + |
3623 | + |
3624 | + <record model="stock.move" id="stock_move_56"> |
3625 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3626 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3627 | + <field name="name">product wave 56</field> |
3628 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3629 | + <field name="priority">1</field> |
3630 | + <field name="product_id" ref="product_56"/> |
3631 | + <field name="product_qty" eval="10.0"/> |
3632 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3633 | + </record> |
3634 | + |
3635 | + |
3636 | + <record model="stock.move" id="stock_move_57"> |
3637 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3638 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3639 | + <field name="name">product wave 57</field> |
3640 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3641 | + <field name="priority">1</field> |
3642 | + <field name="product_id" ref="product_57"/> |
3643 | + <field name="product_qty" eval="10.0"/> |
3644 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3645 | + </record> |
3646 | + |
3647 | + |
3648 | + <record model="stock.move" id="stock_move_58"> |
3649 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3650 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3651 | + <field name="name">product wave 58</field> |
3652 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3653 | + <field name="priority">1</field> |
3654 | + <field name="product_id" ref="product_58"/> |
3655 | + <field name="product_qty" eval="10.0"/> |
3656 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3657 | + </record> |
3658 | + |
3659 | + |
3660 | + <record model="stock.move" id="stock_move_59"> |
3661 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3662 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3663 | + <field name="name">product wave 59</field> |
3664 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3665 | + <field name="priority">1</field> |
3666 | + <field name="product_id" ref="product_59"/> |
3667 | + <field name="product_qty" eval="10.0"/> |
3668 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3669 | + </record> |
3670 | + |
3671 | + |
3672 | + <record model="stock.move" id="stock_move_60"> |
3673 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3674 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3675 | + <field name="name">product wave 60</field> |
3676 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3677 | + <field name="priority">1</field> |
3678 | + <field name="product_id" ref="product_60"/> |
3679 | + <field name="product_qty" eval="10.0"/> |
3680 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3681 | + </record> |
3682 | + |
3683 | + |
3684 | + <record model="stock.move" id="stock_move_61"> |
3685 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3686 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3687 | + <field name="name">product wave 61</field> |
3688 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3689 | + <field name="priority">1</field> |
3690 | + <field name="product_id" ref="product_61"/> |
3691 | + <field name="product_qty" eval="10.0"/> |
3692 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3693 | + </record> |
3694 | + |
3695 | + |
3696 | + <record model="stock.move" id="stock_move_62"> |
3697 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3698 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3699 | + <field name="name">product wave 62</field> |
3700 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3701 | + <field name="priority">1</field> |
3702 | + <field name="product_id" ref="product_62"/> |
3703 | + <field name="product_qty" eval="10.0"/> |
3704 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3705 | + </record> |
3706 | + |
3707 | + |
3708 | + <record model="stock.move" id="stock_move_63"> |
3709 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3710 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3711 | + <field name="name">product wave 63</field> |
3712 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3713 | + <field name="priority">1</field> |
3714 | + <field name="product_id" ref="product_63"/> |
3715 | + <field name="product_qty" eval="10.0"/> |
3716 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3717 | + </record> |
3718 | + |
3719 | + |
3720 | + <record model="stock.move" id="stock_move_64"> |
3721 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3722 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3723 | + <field name="name">product wave 64</field> |
3724 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3725 | + <field name="priority">1</field> |
3726 | + <field name="product_id" ref="product_64"/> |
3727 | + <field name="product_qty" eval="10.0"/> |
3728 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3729 | + </record> |
3730 | + |
3731 | + |
3732 | + <record model="stock.move" id="stock_move_65"> |
3733 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3734 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3735 | + <field name="name">product wave 65</field> |
3736 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3737 | + <field name="priority">1</field> |
3738 | + <field name="product_id" ref="product_65"/> |
3739 | + <field name="product_qty" eval="10.0"/> |
3740 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3741 | + </record> |
3742 | + |
3743 | + |
3744 | + <record model="stock.move" id="stock_move_66"> |
3745 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3746 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3747 | + <field name="name">product wave 66</field> |
3748 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3749 | + <field name="priority">1</field> |
3750 | + <field name="product_id" ref="product_66"/> |
3751 | + <field name="product_qty" eval="10.0"/> |
3752 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3753 | + </record> |
3754 | + |
3755 | + |
3756 | + <record model="stock.move" id="stock_move_67"> |
3757 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3758 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3759 | + <field name="name">product wave 67</field> |
3760 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3761 | + <field name="priority">1</field> |
3762 | + <field name="product_id" ref="product_67"/> |
3763 | + <field name="product_qty" eval="10.0"/> |
3764 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3765 | + </record> |
3766 | + |
3767 | + |
3768 | + <record model="stock.move" id="stock_move_68"> |
3769 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3770 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3771 | + <field name="name">product wave 68</field> |
3772 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3773 | + <field name="priority">1</field> |
3774 | + <field name="product_id" ref="product_68"/> |
3775 | + <field name="product_qty" eval="10.0"/> |
3776 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3777 | + </record> |
3778 | + |
3779 | + |
3780 | + <record model="stock.move" id="stock_move_69"> |
3781 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3782 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3783 | + <field name="name">product wave 69</field> |
3784 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3785 | + <field name="priority">1</field> |
3786 | + <field name="product_id" ref="product_69"/> |
3787 | + <field name="product_qty" eval="10.0"/> |
3788 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3789 | + </record> |
3790 | + |
3791 | + |
3792 | + <record model="stock.move" id="stock_move_70"> |
3793 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3794 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3795 | + <field name="name">product wave 70</field> |
3796 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3797 | + <field name="priority">1</field> |
3798 | + <field name="product_id" ref="product_70"/> |
3799 | + <field name="product_qty" eval="10.0"/> |
3800 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3801 | + </record> |
3802 | + |
3803 | + |
3804 | + <record model="stock.move" id="stock_move_71"> |
3805 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3806 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3807 | + <field name="name">product wave 71</field> |
3808 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3809 | + <field name="priority">1</field> |
3810 | + <field name="product_id" ref="product_71"/> |
3811 | + <field name="product_qty" eval="10.0"/> |
3812 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3813 | + </record> |
3814 | + |
3815 | + |
3816 | + <record model="stock.move" id="stock_move_72"> |
3817 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3818 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3819 | + <field name="name">product wave 72</field> |
3820 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3821 | + <field name="priority">1</field> |
3822 | + <field name="product_id" ref="product_72"/> |
3823 | + <field name="product_qty" eval="10.0"/> |
3824 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3825 | + </record> |
3826 | + |
3827 | + |
3828 | + <record model="stock.move" id="stock_move_73"> |
3829 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3830 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3831 | + <field name="name">product wave 73</field> |
3832 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3833 | + <field name="priority">1</field> |
3834 | + <field name="product_id" ref="product_73"/> |
3835 | + <field name="product_qty" eval="10.0"/> |
3836 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3837 | + </record> |
3838 | + |
3839 | + |
3840 | + <record model="stock.move" id="stock_move_74"> |
3841 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3842 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3843 | + <field name="name">product wave 74</field> |
3844 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3845 | + <field name="priority">1</field> |
3846 | + <field name="product_id" ref="product_74"/> |
3847 | + <field name="product_qty" eval="10.0"/> |
3848 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3849 | + </record> |
3850 | + |
3851 | + |
3852 | + <record model="stock.move" id="stock_move_75"> |
3853 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3854 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3855 | + <field name="name">product wave 75</field> |
3856 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3857 | + <field name="priority">1</field> |
3858 | + <field name="product_id" ref="product_75"/> |
3859 | + <field name="product_qty" eval="10.0"/> |
3860 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3861 | + </record> |
3862 | + |
3863 | + |
3864 | + <record model="stock.move" id="stock_move_76"> |
3865 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3866 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3867 | + <field name="name">product wave 76</field> |
3868 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3869 | + <field name="priority">1</field> |
3870 | + <field name="product_id" ref="product_76"/> |
3871 | + <field name="product_qty" eval="10.0"/> |
3872 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3873 | + </record> |
3874 | + |
3875 | + |
3876 | + <record model="stock.move" id="stock_move_77"> |
3877 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3878 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3879 | + <field name="name">product wave 77</field> |
3880 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3881 | + <field name="priority">1</field> |
3882 | + <field name="product_id" ref="product_77"/> |
3883 | + <field name="product_qty" eval="10.0"/> |
3884 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3885 | + </record> |
3886 | + |
3887 | + |
3888 | + <record model="stock.move" id="stock_move_78"> |
3889 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3890 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3891 | + <field name="name">product wave 78</field> |
3892 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3893 | + <field name="priority">1</field> |
3894 | + <field name="product_id" ref="product_78"/> |
3895 | + <field name="product_qty" eval="10.0"/> |
3896 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3897 | + </record> |
3898 | + |
3899 | + |
3900 | + <record model="stock.move" id="stock_move_79"> |
3901 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3902 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3903 | + <field name="name">product wave 79</field> |
3904 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3905 | + <field name="priority">1</field> |
3906 | + <field name="product_id" ref="product_79"/> |
3907 | + <field name="product_qty" eval="10.0"/> |
3908 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3909 | + </record> |
3910 | + |
3911 | + |
3912 | + <record model="stock.move" id="stock_move_80"> |
3913 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3914 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3915 | + <field name="name">product wave 80</field> |
3916 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3917 | + <field name="priority">1</field> |
3918 | + <field name="product_id" ref="product_80"/> |
3919 | + <field name="product_qty" eval="10.0"/> |
3920 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3921 | + </record> |
3922 | + |
3923 | + |
3924 | + <record model="stock.move" id="stock_move_81"> |
3925 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3926 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3927 | + <field name="name">product wave 81</field> |
3928 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3929 | + <field name="priority">1</field> |
3930 | + <field name="product_id" ref="product_81"/> |
3931 | + <field name="product_qty" eval="10.0"/> |
3932 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3933 | + </record> |
3934 | + |
3935 | + |
3936 | + <record model="stock.move" id="stock_move_82"> |
3937 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3938 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3939 | + <field name="name">product wave 82</field> |
3940 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3941 | + <field name="priority">1</field> |
3942 | + <field name="product_id" ref="product_82"/> |
3943 | + <field name="product_qty" eval="10.0"/> |
3944 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3945 | + </record> |
3946 | + |
3947 | + |
3948 | + <record model="stock.move" id="stock_move_83"> |
3949 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3950 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3951 | + <field name="name">product wave 83</field> |
3952 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3953 | + <field name="priority">1</field> |
3954 | + <field name="product_id" ref="product_83"/> |
3955 | + <field name="product_qty" eval="10.0"/> |
3956 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3957 | + </record> |
3958 | + |
3959 | + |
3960 | + <record model="stock.move" id="stock_move_84"> |
3961 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3962 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3963 | + <field name="name">product wave 84</field> |
3964 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3965 | + <field name="priority">1</field> |
3966 | + <field name="product_id" ref="product_84"/> |
3967 | + <field name="product_qty" eval="10.0"/> |
3968 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3969 | + </record> |
3970 | + |
3971 | + |
3972 | + <record model="stock.move" id="stock_move_85"> |
3973 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3974 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3975 | + <field name="name">product wave 85</field> |
3976 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3977 | + <field name="priority">1</field> |
3978 | + <field name="product_id" ref="product_85"/> |
3979 | + <field name="product_qty" eval="10.0"/> |
3980 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3981 | + </record> |
3982 | + |
3983 | + |
3984 | + <record model="stock.move" id="stock_move_86"> |
3985 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3986 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3987 | + <field name="name">product wave 86</field> |
3988 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
3989 | + <field name="priority">1</field> |
3990 | + <field name="product_id" ref="product_86"/> |
3991 | + <field name="product_qty" eval="10.0"/> |
3992 | + <field name="product_uom" ref="product.product_uom_unit"/> |
3993 | + </record> |
3994 | + |
3995 | + |
3996 | + <record model="stock.move" id="stock_move_87"> |
3997 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
3998 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
3999 | + <field name="name">product wave 87</field> |
4000 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4001 | + <field name="priority">1</field> |
4002 | + <field name="product_id" ref="product_87"/> |
4003 | + <field name="product_qty" eval="10.0"/> |
4004 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4005 | + </record> |
4006 | + |
4007 | + |
4008 | + <record model="stock.move" id="stock_move_88"> |
4009 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4010 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4011 | + <field name="name">product wave 88</field> |
4012 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4013 | + <field name="priority">1</field> |
4014 | + <field name="product_id" ref="product_88"/> |
4015 | + <field name="product_qty" eval="10.0"/> |
4016 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4017 | + </record> |
4018 | + |
4019 | + |
4020 | + <record model="stock.move" id="stock_move_89"> |
4021 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4022 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4023 | + <field name="name">product wave 89</field> |
4024 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4025 | + <field name="priority">1</field> |
4026 | + <field name="product_id" ref="product_89"/> |
4027 | + <field name="product_qty" eval="10.0"/> |
4028 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4029 | + </record> |
4030 | + |
4031 | + |
4032 | + <record model="stock.move" id="stock_move_90"> |
4033 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4034 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4035 | + <field name="name">product wave 90</field> |
4036 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4037 | + <field name="priority">1</field> |
4038 | + <field name="product_id" ref="product_90"/> |
4039 | + <field name="product_qty" eval="10.0"/> |
4040 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4041 | + </record> |
4042 | + |
4043 | + |
4044 | + <record model="stock.move" id="stock_move_91"> |
4045 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4046 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4047 | + <field name="name">product wave 91</field> |
4048 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4049 | + <field name="priority">1</field> |
4050 | + <field name="product_id" ref="product_91"/> |
4051 | + <field name="product_qty" eval="10.0"/> |
4052 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4053 | + </record> |
4054 | + |
4055 | + |
4056 | + <record model="stock.move" id="stock_move_92"> |
4057 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4058 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4059 | + <field name="name">product wave 92</field> |
4060 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4061 | + <field name="priority">1</field> |
4062 | + <field name="product_id" ref="product_92"/> |
4063 | + <field name="product_qty" eval="10.0"/> |
4064 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4065 | + </record> |
4066 | + |
4067 | + |
4068 | + <record model="stock.move" id="stock_move_93"> |
4069 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4070 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4071 | + <field name="name">product wave 93</field> |
4072 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4073 | + <field name="priority">1</field> |
4074 | + <field name="product_id" ref="product_93"/> |
4075 | + <field name="product_qty" eval="10.0"/> |
4076 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4077 | + </record> |
4078 | + |
4079 | + |
4080 | + <record model="stock.move" id="stock_move_94"> |
4081 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4082 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4083 | + <field name="name">product wave 94</field> |
4084 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4085 | + <field name="priority">1</field> |
4086 | + <field name="product_id" ref="product_94"/> |
4087 | + <field name="product_qty" eval="10.0"/> |
4088 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4089 | + </record> |
4090 | + |
4091 | + |
4092 | + <record model="stock.move" id="stock_move_95"> |
4093 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4094 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4095 | + <field name="name">product wave 95</field> |
4096 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4097 | + <field name="priority">1</field> |
4098 | + <field name="product_id" ref="product_95"/> |
4099 | + <field name="product_qty" eval="10.0"/> |
4100 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4101 | + </record> |
4102 | + |
4103 | + |
4104 | + <record model="stock.move" id="stock_move_96"> |
4105 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4106 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4107 | + <field name="name">product wave 96</field> |
4108 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4109 | + <field name="priority">1</field> |
4110 | + <field name="product_id" ref="product_96"/> |
4111 | + <field name="product_qty" eval="10.0"/> |
4112 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4113 | + </record> |
4114 | + |
4115 | + |
4116 | + <record model="stock.move" id="stock_move_97"> |
4117 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4118 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4119 | + <field name="name">product wave 97</field> |
4120 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4121 | + <field name="priority">1</field> |
4122 | + <field name="product_id" ref="product_97"/> |
4123 | + <field name="product_qty" eval="10.0"/> |
4124 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4125 | + </record> |
4126 | + |
4127 | + |
4128 | + <record model="stock.move" id="stock_move_98"> |
4129 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4130 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4131 | + <field name="name">product wave 98</field> |
4132 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4133 | + <field name="priority">1</field> |
4134 | + <field name="product_id" ref="product_98"/> |
4135 | + <field name="product_qty" eval="10.0"/> |
4136 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4137 | + </record> |
4138 | + |
4139 | + |
4140 | + <record model="stock.move" id="stock_move_99"> |
4141 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4142 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
4143 | + <field name="name">product wave 99</field> |
4144 | + <field name="picking_id" ref="stock_picking_wave_in"/> |
4145 | + <field name="priority">1</field> |
4146 | + <field name="product_id" ref="product_99"/> |
4147 | + <field name="product_qty" eval="10.0"/> |
4148 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4149 | + </record> |
4150 | + |
4151 | + <!-- confirm picking --> |
4152 | + <function name="draft_validate" model="stock.picking"> |
4153 | + <value eval="[obj(ref('stock_picking_wave_in')).id]" model="stock.picking"/> |
4154 | + </function> |
4155 | + |
4156 | + </data> |
4157 | +</openerp> |
4158 | |
4159 | === added file 'wms_wave/demo/picking_out.xml' |
4160 | --- wms_wave/demo/picking_out.xml 1970-01-01 00:00:00 +0000 |
4161 | +++ wms_wave/demo/picking_out.xml 2011-07-29 14:55:33 +0000 |
4162 | @@ -0,0 +1,2248 @@ |
4163 | +<?xml version="1.0" encoding="UTF-8"?> |
4164 | +<openerp> |
4165 | + <data noupdate="0"> |
4166 | + ############################################################################## |
4167 | + # |
4168 | + # wms_wave module for OpenERP, To treat picking per group, also known as « wave » |
4169 | + # Copyright (C) 2011 SYLEAM Info Services ([http://www.syleam.fr/]) |
4170 | + # Jean-SĂ©bastien SUZANNE [jean-sebastien.suzanne@syleam.fr] |
4171 | + # |
4172 | + # This file is a part of wms_wave |
4173 | + # |
4174 | + # wms_wave is free software: you can redistribute it and/or modify |
4175 | + # it under the terms of the GNU General Public License as published by |
4176 | + # the Free Software Foundation, either version 3 of the License, or |
4177 | + # (at your option) any later version. |
4178 | + # |
4179 | + # wms_wave is distributed in the hope that it will be useful, |
4180 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
4181 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4182 | + # GNU General Public License for more details. |
4183 | + # |
4184 | + # You should have received a copy of the GNU General Public License |
4185 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
4186 | + # |
4187 | + ############################################################################## |
4188 | + |
4189 | + |
4190 | + <record model="stock.picking" id="stock_picking_wave_out_0"> |
4191 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4192 | + <field name="move_type">direct</field> |
4193 | + <field name="name">/</field> |
4194 | + <field name="type">out</field> |
4195 | + <field name="warehouse_id" ref="warehousewave"/> |
4196 | + </record> |
4197 | + <record model="stock.move" id="stock_move_wave_out_0"> |
4198 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4199 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4200 | + <field name="name">product wave 0</field> |
4201 | + <field name="picking_id" ref="stock_picking_wave_out_0"/> |
4202 | + <field name="priority">1</field> |
4203 | + <field name="product_id" ref="product_0"/> |
4204 | + <field name="product_qty" eval="1.0"/> |
4205 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4206 | + </record> |
4207 | + <function name="draft_force_assign" model="stock.picking"> |
4208 | + <value eval="[obj(ref('stock_picking_wave_out_0')).id]" model="stock.picking"/> |
4209 | + </function> |
4210 | + |
4211 | + <record model="stock.picking" id="stock_picking_wave_out_0_error"> |
4212 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4213 | + <field name="move_type">direct</field> |
4214 | + <field name="name">/</field> |
4215 | + <field name="type">out</field> |
4216 | + <field name="warehouse_id" ref="warehousewave"/> |
4217 | + </record> |
4218 | + <record model="stock.move" id="stock_move_wave_out_0_error"> |
4219 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4220 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4221 | + <field name="name">product wave 0</field> |
4222 | + <field name="picking_id" ref="stock_picking_wave_out_0_error"/> |
4223 | + <field name="priority">1</field> |
4224 | + <field name="product_id" ref="product_0"/> |
4225 | + <field name="product_qty" eval="21.0"/> |
4226 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4227 | + </record> |
4228 | + <function name="draft_force_assign" model="stock.picking"> |
4229 | + <value eval="[obj(ref('stock_picking_wave_out_0_error')).id]" model="stock.picking"/> |
4230 | + </function> |
4231 | + |
4232 | + <record model="stock.picking" id="stock_picking_wave_out_1"> |
4233 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4234 | + <field name="move_type">direct</field> |
4235 | + <field name="name">/</field> |
4236 | + <field name="type">out</field> |
4237 | + <field name="warehouse_id" ref="warehousewave"/> |
4238 | + </record> |
4239 | + <record model="stock.move" id="stock_move_wave_out_1"> |
4240 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4241 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4242 | + <field name="name">product wave 1</field> |
4243 | + <field name="picking_id" ref="stock_picking_wave_out_1"/> |
4244 | + <field name="priority">1</field> |
4245 | + <field name="product_id" ref="product_1"/> |
4246 | + <field name="product_qty" eval="1.0"/> |
4247 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4248 | + </record> |
4249 | + <function name="draft_force_assign" model="stock.picking"> |
4250 | + <value eval="[obj(ref('stock_picking_wave_out_1')).id]" model="stock.picking"/> |
4251 | + </function> |
4252 | + |
4253 | + |
4254 | + <record model="stock.picking" id="stock_picking_wave_out_2"> |
4255 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4256 | + <field name="move_type">direct</field> |
4257 | + <field name="name">/</field> |
4258 | + <field name="type">out</field> |
4259 | + <field name="warehouse_id" ref="warehousewave"/> |
4260 | + </record> |
4261 | + <record model="stock.move" id="stock_move_wave_out_2"> |
4262 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4263 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4264 | + <field name="name">product wave 2</field> |
4265 | + <field name="picking_id" ref="stock_picking_wave_out_2"/> |
4266 | + <field name="priority">1</field> |
4267 | + <field name="product_id" ref="product_2"/> |
4268 | + <field name="product_qty" eval="1.0"/> |
4269 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4270 | + </record> |
4271 | + <function name="draft_force_assign" model="stock.picking"> |
4272 | + <value eval="[obj(ref('stock_picking_wave_out_2')).id]" model="stock.picking"/> |
4273 | + </function> |
4274 | + |
4275 | + |
4276 | + <record model="stock.picking" id="stock_picking_wave_out_3"> |
4277 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4278 | + <field name="move_type">direct</field> |
4279 | + <field name="name">/</field> |
4280 | + <field name="type">out</field> |
4281 | + <field name="warehouse_id" ref="warehousewave"/> |
4282 | + </record> |
4283 | + <record model="stock.move" id="stock_move_wave_out_3"> |
4284 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4285 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4286 | + <field name="name">product wave 3</field> |
4287 | + <field name="picking_id" ref="stock_picking_wave_out_3"/> |
4288 | + <field name="priority">1</field> |
4289 | + <field name="product_id" ref="product_3"/> |
4290 | + <field name="product_qty" eval="1.0"/> |
4291 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4292 | + </record> |
4293 | + <function name="draft_force_assign" model="stock.picking"> |
4294 | + <value eval="[obj(ref('stock_picking_wave_out_3')).id]" model="stock.picking"/> |
4295 | + </function> |
4296 | + |
4297 | + |
4298 | + <record model="stock.picking" id="stock_picking_wave_out_4"> |
4299 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4300 | + <field name="move_type">direct</field> |
4301 | + <field name="name">/</field> |
4302 | + <field name="type">out</field> |
4303 | + <field name="warehouse_id" ref="warehousewave"/> |
4304 | + </record> |
4305 | + <record model="stock.move" id="stock_move_wave_out_4"> |
4306 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4307 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4308 | + <field name="name">product wave 4</field> |
4309 | + <field name="picking_id" ref="stock_picking_wave_out_4"/> |
4310 | + <field name="priority">1</field> |
4311 | + <field name="product_id" ref="product_4"/> |
4312 | + <field name="product_qty" eval="1.0"/> |
4313 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4314 | + </record> |
4315 | + <function name="draft_force_assign" model="stock.picking"> |
4316 | + <value eval="[obj(ref('stock_picking_wave_out_4')).id]" model="stock.picking"/> |
4317 | + </function> |
4318 | + |
4319 | + |
4320 | + <record model="stock.picking" id="stock_picking_wave_out_5"> |
4321 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4322 | + <field name="move_type">direct</field> |
4323 | + <field name="name">/</field> |
4324 | + <field name="type">out</field> |
4325 | + <field name="warehouse_id" ref="warehousewave"/> |
4326 | + </record> |
4327 | + <record model="stock.move" id="stock_move_wave_out_5"> |
4328 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4329 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4330 | + <field name="name">product wave 5</field> |
4331 | + <field name="picking_id" ref="stock_picking_wave_out_5"/> |
4332 | + <field name="priority">1</field> |
4333 | + <field name="product_id" ref="product_5"/> |
4334 | + <field name="product_qty" eval="1.0"/> |
4335 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4336 | + </record> |
4337 | + <function name="draft_force_assign" model="stock.picking"> |
4338 | + <value eval="[obj(ref('stock_picking_wave_out_5')).id]" model="stock.picking"/> |
4339 | + </function> |
4340 | + |
4341 | + |
4342 | + <record model="stock.picking" id="stock_picking_wave_out_6"> |
4343 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4344 | + <field name="move_type">direct</field> |
4345 | + <field name="name">/</field> |
4346 | + <field name="type">out</field> |
4347 | + <field name="warehouse_id" ref="warehousewave"/> |
4348 | + </record> |
4349 | + <record model="stock.move" id="stock_move_wave_out_6"> |
4350 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4351 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4352 | + <field name="name">product wave 6</field> |
4353 | + <field name="picking_id" ref="stock_picking_wave_out_6"/> |
4354 | + <field name="priority">1</field> |
4355 | + <field name="product_id" ref="product_6"/> |
4356 | + <field name="product_qty" eval="1.0"/> |
4357 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4358 | + </record> |
4359 | + <function name="draft_force_assign" model="stock.picking"> |
4360 | + <value eval="[obj(ref('stock_picking_wave_out_6')).id]" model="stock.picking"/> |
4361 | + </function> |
4362 | + |
4363 | + |
4364 | + <record model="stock.picking" id="stock_picking_wave_out_7"> |
4365 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4366 | + <field name="move_type">direct</field> |
4367 | + <field name="name">/</field> |
4368 | + <field name="type">out</field> |
4369 | + <field name="warehouse_id" ref="warehousewave"/> |
4370 | + </record> |
4371 | + <record model="stock.move" id="stock_move_wave_out_7"> |
4372 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4373 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4374 | + <field name="name">product wave 7</field> |
4375 | + <field name="picking_id" ref="stock_picking_wave_out_7"/> |
4376 | + <field name="priority">1</field> |
4377 | + <field name="product_id" ref="product_7"/> |
4378 | + <field name="product_qty" eval="1.0"/> |
4379 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4380 | + </record> |
4381 | + <function name="draft_force_assign" model="stock.picking"> |
4382 | + <value eval="[obj(ref('stock_picking_wave_out_7')).id]" model="stock.picking"/> |
4383 | + </function> |
4384 | + |
4385 | + |
4386 | + <record model="stock.picking" id="stock_picking_wave_out_8"> |
4387 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4388 | + <field name="move_type">direct</field> |
4389 | + <field name="name">/</field> |
4390 | + <field name="type">out</field> |
4391 | + <field name="warehouse_id" ref="warehousewave"/> |
4392 | + </record> |
4393 | + <record model="stock.move" id="stock_move_wave_out_8"> |
4394 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4395 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4396 | + <field name="name">product wave 8</field> |
4397 | + <field name="picking_id" ref="stock_picking_wave_out_8"/> |
4398 | + <field name="priority">1</field> |
4399 | + <field name="product_id" ref="product_8"/> |
4400 | + <field name="product_qty" eval="1.0"/> |
4401 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4402 | + </record> |
4403 | + <function name="draft_force_assign" model="stock.picking"> |
4404 | + <value eval="[obj(ref('stock_picking_wave_out_8')).id]" model="stock.picking"/> |
4405 | + </function> |
4406 | + |
4407 | + |
4408 | + <record model="stock.picking" id="stock_picking_wave_out_9"> |
4409 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4410 | + <field name="move_type">direct</field> |
4411 | + <field name="name">/</field> |
4412 | + <field name="type">out</field> |
4413 | + <field name="warehouse_id" ref="warehousewave"/> |
4414 | + </record> |
4415 | + <record model="stock.move" id="stock_move_wave_out_9"> |
4416 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4417 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4418 | + <field name="name">product wave 9</field> |
4419 | + <field name="picking_id" ref="stock_picking_wave_out_9"/> |
4420 | + <field name="priority">1</field> |
4421 | + <field name="product_id" ref="product_9"/> |
4422 | + <field name="product_qty" eval="1.0"/> |
4423 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4424 | + </record> |
4425 | + <function name="draft_force_assign" model="stock.picking"> |
4426 | + <value eval="[obj(ref('stock_picking_wave_out_9')).id]" model="stock.picking"/> |
4427 | + </function> |
4428 | + |
4429 | + |
4430 | + <record model="stock.picking" id="stock_picking_wave_out_10"> |
4431 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4432 | + <field name="move_type">direct</field> |
4433 | + <field name="name">/</field> |
4434 | + <field name="type">out</field> |
4435 | + <field name="warehouse_id" ref="warehousewave"/> |
4436 | + </record> |
4437 | + <record model="stock.move" id="stock_move_wave_out_10"> |
4438 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4439 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4440 | + <field name="name">product wave 10</field> |
4441 | + <field name="picking_id" ref="stock_picking_wave_out_10"/> |
4442 | + <field name="priority">1</field> |
4443 | + <field name="product_id" ref="product_10"/> |
4444 | + <field name="product_qty" eval="1.0"/> |
4445 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4446 | + </record> |
4447 | + <function name="draft_force_assign" model="stock.picking"> |
4448 | + <value eval="[obj(ref('stock_picking_wave_out_10')).id]" model="stock.picking"/> |
4449 | + </function> |
4450 | + |
4451 | + |
4452 | + <record model="stock.picking" id="stock_picking_wave_out_11"> |
4453 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4454 | + <field name="move_type">direct</field> |
4455 | + <field name="name">/</field> |
4456 | + <field name="type">out</field> |
4457 | + <field name="warehouse_id" ref="warehousewave"/> |
4458 | + </record> |
4459 | + <record model="stock.move" id="stock_move_wave_out_11"> |
4460 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4461 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4462 | + <field name="name">product wave 11</field> |
4463 | + <field name="picking_id" ref="stock_picking_wave_out_11"/> |
4464 | + <field name="priority">1</field> |
4465 | + <field name="product_id" ref="product_11"/> |
4466 | + <field name="product_qty" eval="1.0"/> |
4467 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4468 | + </record> |
4469 | + <function name="draft_force_assign" model="stock.picking"> |
4470 | + <value eval="[obj(ref('stock_picking_wave_out_11')).id]" model="stock.picking"/> |
4471 | + </function> |
4472 | + |
4473 | + |
4474 | + <record model="stock.picking" id="stock_picking_wave_out_12"> |
4475 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4476 | + <field name="move_type">direct</field> |
4477 | + <field name="name">/</field> |
4478 | + <field name="type">out</field> |
4479 | + <field name="warehouse_id" ref="warehousewave"/> |
4480 | + </record> |
4481 | + <record model="stock.move" id="stock_move_wave_out_12"> |
4482 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4483 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4484 | + <field name="name">product wave 12</field> |
4485 | + <field name="picking_id" ref="stock_picking_wave_out_12"/> |
4486 | + <field name="priority">1</field> |
4487 | + <field name="product_id" ref="product_12"/> |
4488 | + <field name="product_qty" eval="1.0"/> |
4489 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4490 | + </record> |
4491 | + <function name="draft_force_assign" model="stock.picking"> |
4492 | + <value eval="[obj(ref('stock_picking_wave_out_12')).id]" model="stock.picking"/> |
4493 | + </function> |
4494 | + |
4495 | + |
4496 | + <record model="stock.picking" id="stock_picking_wave_out_13"> |
4497 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4498 | + <field name="move_type">direct</field> |
4499 | + <field name="name">/</field> |
4500 | + <field name="type">out</field> |
4501 | + <field name="warehouse_id" ref="warehousewave"/> |
4502 | + </record> |
4503 | + <record model="stock.move" id="stock_move_wave_out_13"> |
4504 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4505 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4506 | + <field name="name">product wave 13</field> |
4507 | + <field name="picking_id" ref="stock_picking_wave_out_13"/> |
4508 | + <field name="priority">1</field> |
4509 | + <field name="product_id" ref="product_13"/> |
4510 | + <field name="product_qty" eval="1.0"/> |
4511 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4512 | + </record> |
4513 | + <function name="draft_force_assign" model="stock.picking"> |
4514 | + <value eval="[obj(ref('stock_picking_wave_out_13')).id]" model="stock.picking"/> |
4515 | + </function> |
4516 | + |
4517 | + |
4518 | + <record model="stock.picking" id="stock_picking_wave_out_14"> |
4519 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4520 | + <field name="move_type">direct</field> |
4521 | + <field name="name">/</field> |
4522 | + <field name="type">out</field> |
4523 | + <field name="warehouse_id" ref="warehousewave"/> |
4524 | + </record> |
4525 | + <record model="stock.move" id="stock_move_wave_out_14"> |
4526 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4527 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4528 | + <field name="name">product wave 14</field> |
4529 | + <field name="picking_id" ref="stock_picking_wave_out_14"/> |
4530 | + <field name="priority">1</field> |
4531 | + <field name="product_id" ref="product_14"/> |
4532 | + <field name="product_qty" eval="1.0"/> |
4533 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4534 | + </record> |
4535 | + <function name="draft_force_assign" model="stock.picking"> |
4536 | + <value eval="[obj(ref('stock_picking_wave_out_14')).id]" model="stock.picking"/> |
4537 | + </function> |
4538 | + |
4539 | + |
4540 | + <record model="stock.picking" id="stock_picking_wave_out_15"> |
4541 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4542 | + <field name="move_type">direct</field> |
4543 | + <field name="name">/</field> |
4544 | + <field name="type">out</field> |
4545 | + <field name="warehouse_id" ref="warehousewave"/> |
4546 | + </record> |
4547 | + <record model="stock.move" id="stock_move_wave_out_15"> |
4548 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4549 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4550 | + <field name="name">product wave 15</field> |
4551 | + <field name="picking_id" ref="stock_picking_wave_out_15"/> |
4552 | + <field name="priority">1</field> |
4553 | + <field name="product_id" ref="product_15"/> |
4554 | + <field name="product_qty" eval="1.0"/> |
4555 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4556 | + </record> |
4557 | + <function name="draft_force_assign" model="stock.picking"> |
4558 | + <value eval="[obj(ref('stock_picking_wave_out_15')).id]" model="stock.picking"/> |
4559 | + </function> |
4560 | + |
4561 | + |
4562 | + <record model="stock.picking" id="stock_picking_wave_out_16"> |
4563 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4564 | + <field name="move_type">direct</field> |
4565 | + <field name="name">/</field> |
4566 | + <field name="type">out</field> |
4567 | + <field name="warehouse_id" ref="warehousewave"/> |
4568 | + </record> |
4569 | + <record model="stock.move" id="stock_move_wave_out_16"> |
4570 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4571 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4572 | + <field name="name">product wave 16</field> |
4573 | + <field name="picking_id" ref="stock_picking_wave_out_16"/> |
4574 | + <field name="priority">1</field> |
4575 | + <field name="product_id" ref="product_16"/> |
4576 | + <field name="product_qty" eval="1.0"/> |
4577 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4578 | + </record> |
4579 | + <function name="draft_force_assign" model="stock.picking"> |
4580 | + <value eval="[obj(ref('stock_picking_wave_out_16')).id]" model="stock.picking"/> |
4581 | + </function> |
4582 | + |
4583 | + |
4584 | + <record model="stock.picking" id="stock_picking_wave_out_17"> |
4585 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4586 | + <field name="move_type">direct</field> |
4587 | + <field name="name">/</field> |
4588 | + <field name="type">out</field> |
4589 | + <field name="warehouse_id" ref="warehousewave"/> |
4590 | + </record> |
4591 | + <record model="stock.move" id="stock_move_wave_out_17"> |
4592 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4593 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4594 | + <field name="name">product wave 17</field> |
4595 | + <field name="picking_id" ref="stock_picking_wave_out_17"/> |
4596 | + <field name="priority">1</field> |
4597 | + <field name="product_id" ref="product_17"/> |
4598 | + <field name="product_qty" eval="1.0"/> |
4599 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4600 | + </record> |
4601 | + <function name="draft_force_assign" model="stock.picking"> |
4602 | + <value eval="[obj(ref('stock_picking_wave_out_17')).id]" model="stock.picking"/> |
4603 | + </function> |
4604 | + |
4605 | + |
4606 | + <record model="stock.picking" id="stock_picking_wave_out_18"> |
4607 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4608 | + <field name="move_type">direct</field> |
4609 | + <field name="name">/</field> |
4610 | + <field name="type">out</field> |
4611 | + <field name="warehouse_id" ref="warehousewave"/> |
4612 | + </record> |
4613 | + <record model="stock.move" id="stock_move_wave_out_18"> |
4614 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4615 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4616 | + <field name="name">product wave 18</field> |
4617 | + <field name="picking_id" ref="stock_picking_wave_out_18"/> |
4618 | + <field name="priority">1</field> |
4619 | + <field name="product_id" ref="product_18"/> |
4620 | + <field name="product_qty" eval="1.0"/> |
4621 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4622 | + </record> |
4623 | + <function name="draft_force_assign" model="stock.picking"> |
4624 | + <value eval="[obj(ref('stock_picking_wave_out_18')).id]" model="stock.picking"/> |
4625 | + </function> |
4626 | + |
4627 | + |
4628 | + <record model="stock.picking" id="stock_picking_wave_out_19"> |
4629 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4630 | + <field name="move_type">direct</field> |
4631 | + <field name="name">/</field> |
4632 | + <field name="type">out</field> |
4633 | + <field name="warehouse_id" ref="warehousewave"/> |
4634 | + </record> |
4635 | + <record model="stock.move" id="stock_move_wave_out_19"> |
4636 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4637 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4638 | + <field name="name">product wave 19</field> |
4639 | + <field name="picking_id" ref="stock_picking_wave_out_19"/> |
4640 | + <field name="priority">1</field> |
4641 | + <field name="product_id" ref="product_19"/> |
4642 | + <field name="product_qty" eval="1.0"/> |
4643 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4644 | + </record> |
4645 | + <function name="draft_force_assign" model="stock.picking"> |
4646 | + <value eval="[obj(ref('stock_picking_wave_out_19')).id]" model="stock.picking"/> |
4647 | + </function> |
4648 | + |
4649 | + |
4650 | + <record model="stock.picking" id="stock_picking_wave_out_20"> |
4651 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4652 | + <field name="move_type">direct</field> |
4653 | + <field name="name">/</field> |
4654 | + <field name="type">out</field> |
4655 | + <field name="warehouse_id" ref="warehousewave"/> |
4656 | + </record> |
4657 | + <record model="stock.move" id="stock_move_wave_out_20"> |
4658 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4659 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4660 | + <field name="name">product wave 20</field> |
4661 | + <field name="picking_id" ref="stock_picking_wave_out_20"/> |
4662 | + <field name="priority">1</field> |
4663 | + <field name="product_id" ref="product_20"/> |
4664 | + <field name="product_qty" eval="1.0"/> |
4665 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4666 | + </record> |
4667 | + <function name="draft_force_assign" model="stock.picking"> |
4668 | + <value eval="[obj(ref('stock_picking_wave_out_20')).id]" model="stock.picking"/> |
4669 | + </function> |
4670 | + |
4671 | + |
4672 | + <record model="stock.picking" id="stock_picking_wave_out_21"> |
4673 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4674 | + <field name="move_type">direct</field> |
4675 | + <field name="name">/</field> |
4676 | + <field name="type">out</field> |
4677 | + <field name="warehouse_id" ref="warehousewave"/> |
4678 | + </record> |
4679 | + <record model="stock.move" id="stock_move_wave_out_21"> |
4680 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4681 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4682 | + <field name="name">product wave 21</field> |
4683 | + <field name="picking_id" ref="stock_picking_wave_out_21"/> |
4684 | + <field name="priority">1</field> |
4685 | + <field name="product_id" ref="product_21"/> |
4686 | + <field name="product_qty" eval="1.0"/> |
4687 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4688 | + </record> |
4689 | + <function name="draft_force_assign" model="stock.picking"> |
4690 | + <value eval="[obj(ref('stock_picking_wave_out_21')).id]" model="stock.picking"/> |
4691 | + </function> |
4692 | + |
4693 | + |
4694 | + <record model="stock.picking" id="stock_picking_wave_out_22"> |
4695 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4696 | + <field name="move_type">direct</field> |
4697 | + <field name="name">/</field> |
4698 | + <field name="type">out</field> |
4699 | + <field name="warehouse_id" ref="warehousewave"/> |
4700 | + </record> |
4701 | + <record model="stock.move" id="stock_move_wave_out_22"> |
4702 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4703 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4704 | + <field name="name">product wave 22</field> |
4705 | + <field name="picking_id" ref="stock_picking_wave_out_22"/> |
4706 | + <field name="priority">1</field> |
4707 | + <field name="product_id" ref="product_22"/> |
4708 | + <field name="product_qty" eval="1.0"/> |
4709 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4710 | + </record> |
4711 | + <function name="draft_force_assign" model="stock.picking"> |
4712 | + <value eval="[obj(ref('stock_picking_wave_out_22')).id]" model="stock.picking"/> |
4713 | + </function> |
4714 | + |
4715 | + |
4716 | + <record model="stock.picking" id="stock_picking_wave_out_23"> |
4717 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4718 | + <field name="move_type">direct</field> |
4719 | + <field name="name">/</field> |
4720 | + <field name="type">out</field> |
4721 | + <field name="warehouse_id" ref="warehousewave"/> |
4722 | + </record> |
4723 | + <record model="stock.move" id="stock_move_wave_out_23"> |
4724 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4725 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4726 | + <field name="name">product wave 23</field> |
4727 | + <field name="picking_id" ref="stock_picking_wave_out_23"/> |
4728 | + <field name="priority">1</field> |
4729 | + <field name="product_id" ref="product_23"/> |
4730 | + <field name="product_qty" eval="1.0"/> |
4731 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4732 | + </record> |
4733 | + <function name="draft_force_assign" model="stock.picking"> |
4734 | + <value eval="[obj(ref('stock_picking_wave_out_23')).id]" model="stock.picking"/> |
4735 | + </function> |
4736 | + |
4737 | + |
4738 | + <record model="stock.picking" id="stock_picking_wave_out_24"> |
4739 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4740 | + <field name="move_type">direct</field> |
4741 | + <field name="name">/</field> |
4742 | + <field name="type">out</field> |
4743 | + <field name="warehouse_id" ref="warehousewave"/> |
4744 | + </record> |
4745 | + <record model="stock.move" id="stock_move_wave_out_24"> |
4746 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4747 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4748 | + <field name="name">product wave 24</field> |
4749 | + <field name="picking_id" ref="stock_picking_wave_out_24"/> |
4750 | + <field name="priority">1</field> |
4751 | + <field name="product_id" ref="product_24"/> |
4752 | + <field name="product_qty" eval="1.0"/> |
4753 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4754 | + </record> |
4755 | + <function name="draft_force_assign" model="stock.picking"> |
4756 | + <value eval="[obj(ref('stock_picking_wave_out_24')).id]" model="stock.picking"/> |
4757 | + </function> |
4758 | + |
4759 | + |
4760 | + <record model="stock.picking" id="stock_picking_wave_out_25"> |
4761 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4762 | + <field name="move_type">direct</field> |
4763 | + <field name="name">/</field> |
4764 | + <field name="type">out</field> |
4765 | + <field name="warehouse_id" ref="warehousewave"/> |
4766 | + </record> |
4767 | + <record model="stock.move" id="stock_move_wave_out_25"> |
4768 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4769 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4770 | + <field name="name">product wave 25</field> |
4771 | + <field name="picking_id" ref="stock_picking_wave_out_25"/> |
4772 | + <field name="priority">1</field> |
4773 | + <field name="product_id" ref="product_25"/> |
4774 | + <field name="product_qty" eval="1.0"/> |
4775 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4776 | + </record> |
4777 | + <function name="draft_force_assign" model="stock.picking"> |
4778 | + <value eval="[obj(ref('stock_picking_wave_out_25')).id]" model="stock.picking"/> |
4779 | + </function> |
4780 | + |
4781 | + |
4782 | + <record model="stock.picking" id="stock_picking_wave_out_26"> |
4783 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4784 | + <field name="move_type">direct</field> |
4785 | + <field name="name">/</field> |
4786 | + <field name="type">out</field> |
4787 | + <field name="warehouse_id" ref="warehousewave"/> |
4788 | + </record> |
4789 | + <record model="stock.move" id="stock_move_wave_out_26"> |
4790 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4791 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4792 | + <field name="name">product wave 26</field> |
4793 | + <field name="picking_id" ref="stock_picking_wave_out_26"/> |
4794 | + <field name="priority">1</field> |
4795 | + <field name="product_id" ref="product_26"/> |
4796 | + <field name="product_qty" eval="1.0"/> |
4797 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4798 | + </record> |
4799 | + <function name="draft_force_assign" model="stock.picking"> |
4800 | + <value eval="[obj(ref('stock_picking_wave_out_26')).id]" model="stock.picking"/> |
4801 | + </function> |
4802 | + |
4803 | + |
4804 | + <record model="stock.picking" id="stock_picking_wave_out_27"> |
4805 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4806 | + <field name="move_type">direct</field> |
4807 | + <field name="name">/</field> |
4808 | + <field name="type">out</field> |
4809 | + <field name="warehouse_id" ref="warehousewave"/> |
4810 | + </record> |
4811 | + <record model="stock.move" id="stock_move_wave_out_27"> |
4812 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4813 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4814 | + <field name="name">product wave 27</field> |
4815 | + <field name="picking_id" ref="stock_picking_wave_out_27"/> |
4816 | + <field name="priority">1</field> |
4817 | + <field name="product_id" ref="product_27"/> |
4818 | + <field name="product_qty" eval="1.0"/> |
4819 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4820 | + </record> |
4821 | + <function name="draft_force_assign" model="stock.picking"> |
4822 | + <value eval="[obj(ref('stock_picking_wave_out_27')).id]" model="stock.picking"/> |
4823 | + </function> |
4824 | + |
4825 | + |
4826 | + <record model="stock.picking" id="stock_picking_wave_out_28"> |
4827 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4828 | + <field name="move_type">direct</field> |
4829 | + <field name="name">/</field> |
4830 | + <field name="type">out</field> |
4831 | + <field name="warehouse_id" ref="warehousewave"/> |
4832 | + </record> |
4833 | + <record model="stock.move" id="stock_move_wave_out_28"> |
4834 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4835 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4836 | + <field name="name">product wave 28</field> |
4837 | + <field name="picking_id" ref="stock_picking_wave_out_28"/> |
4838 | + <field name="priority">1</field> |
4839 | + <field name="product_id" ref="product_28"/> |
4840 | + <field name="product_qty" eval="1.0"/> |
4841 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4842 | + </record> |
4843 | + <function name="draft_force_assign" model="stock.picking"> |
4844 | + <value eval="[obj(ref('stock_picking_wave_out_28')).id]" model="stock.picking"/> |
4845 | + </function> |
4846 | + |
4847 | + |
4848 | + <record model="stock.picking" id="stock_picking_wave_out_29"> |
4849 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4850 | + <field name="move_type">direct</field> |
4851 | + <field name="name">/</field> |
4852 | + <field name="type">out</field> |
4853 | + <field name="warehouse_id" ref="warehousewave"/> |
4854 | + </record> |
4855 | + <record model="stock.move" id="stock_move_wave_out_29"> |
4856 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4857 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4858 | + <field name="name">product wave 29</field> |
4859 | + <field name="picking_id" ref="stock_picking_wave_out_29"/> |
4860 | + <field name="priority">1</field> |
4861 | + <field name="product_id" ref="product_29"/> |
4862 | + <field name="product_qty" eval="1.0"/> |
4863 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4864 | + </record> |
4865 | + <function name="draft_force_assign" model="stock.picking"> |
4866 | + <value eval="[obj(ref('stock_picking_wave_out_29')).id]" model="stock.picking"/> |
4867 | + </function> |
4868 | + |
4869 | + |
4870 | + <record model="stock.picking" id="stock_picking_wave_out_30"> |
4871 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4872 | + <field name="move_type">direct</field> |
4873 | + <field name="name">/</field> |
4874 | + <field name="type">out</field> |
4875 | + <field name="warehouse_id" ref="warehousewave"/> |
4876 | + </record> |
4877 | + <record model="stock.move" id="stock_move_wave_out_30"> |
4878 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4879 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4880 | + <field name="name">product wave 30</field> |
4881 | + <field name="picking_id" ref="stock_picking_wave_out_30"/> |
4882 | + <field name="priority">1</field> |
4883 | + <field name="product_id" ref="product_30"/> |
4884 | + <field name="product_qty" eval="1.0"/> |
4885 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4886 | + </record> |
4887 | + <function name="draft_force_assign" model="stock.picking"> |
4888 | + <value eval="[obj(ref('stock_picking_wave_out_30')).id]" model="stock.picking"/> |
4889 | + </function> |
4890 | + |
4891 | + |
4892 | + <record model="stock.picking" id="stock_picking_wave_out_31"> |
4893 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4894 | + <field name="move_type">direct</field> |
4895 | + <field name="name">/</field> |
4896 | + <field name="type">out</field> |
4897 | + <field name="warehouse_id" ref="warehousewave"/> |
4898 | + </record> |
4899 | + <record model="stock.move" id="stock_move_wave_out_31"> |
4900 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4901 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4902 | + <field name="name">product wave 31</field> |
4903 | + <field name="picking_id" ref="stock_picking_wave_out_31"/> |
4904 | + <field name="priority">1</field> |
4905 | + <field name="product_id" ref="product_31"/> |
4906 | + <field name="product_qty" eval="1.0"/> |
4907 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4908 | + </record> |
4909 | + <function name="draft_force_assign" model="stock.picking"> |
4910 | + <value eval="[obj(ref('stock_picking_wave_out_31')).id]" model="stock.picking"/> |
4911 | + </function> |
4912 | + |
4913 | + |
4914 | + <record model="stock.picking" id="stock_picking_wave_out_32"> |
4915 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4916 | + <field name="move_type">direct</field> |
4917 | + <field name="name">/</field> |
4918 | + <field name="type">out</field> |
4919 | + <field name="warehouse_id" ref="warehousewave"/> |
4920 | + </record> |
4921 | + <record model="stock.move" id="stock_move_wave_out_32"> |
4922 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4923 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4924 | + <field name="name">product wave 32</field> |
4925 | + <field name="picking_id" ref="stock_picking_wave_out_32"/> |
4926 | + <field name="priority">1</field> |
4927 | + <field name="product_id" ref="product_32"/> |
4928 | + <field name="product_qty" eval="1.0"/> |
4929 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4930 | + </record> |
4931 | + <function name="draft_force_assign" model="stock.picking"> |
4932 | + <value eval="[obj(ref('stock_picking_wave_out_32')).id]" model="stock.picking"/> |
4933 | + </function> |
4934 | + |
4935 | + |
4936 | + <record model="stock.picking" id="stock_picking_wave_out_33"> |
4937 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4938 | + <field name="move_type">direct</field> |
4939 | + <field name="name">/</field> |
4940 | + <field name="type">out</field> |
4941 | + <field name="warehouse_id" ref="warehousewave"/> |
4942 | + </record> |
4943 | + <record model="stock.move" id="stock_move_wave_out_33"> |
4944 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4945 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4946 | + <field name="name">product wave 33</field> |
4947 | + <field name="picking_id" ref="stock_picking_wave_out_33"/> |
4948 | + <field name="priority">1</field> |
4949 | + <field name="product_id" ref="product_33"/> |
4950 | + <field name="product_qty" eval="1.0"/> |
4951 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4952 | + </record> |
4953 | + <function name="draft_force_assign" model="stock.picking"> |
4954 | + <value eval="[obj(ref('stock_picking_wave_out_33')).id]" model="stock.picking"/> |
4955 | + </function> |
4956 | + |
4957 | + |
4958 | + <record model="stock.picking" id="stock_picking_wave_out_34"> |
4959 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4960 | + <field name="move_type">direct</field> |
4961 | + <field name="name">/</field> |
4962 | + <field name="type">out</field> |
4963 | + <field name="warehouse_id" ref="warehousewave"/> |
4964 | + </record> |
4965 | + <record model="stock.move" id="stock_move_wave_out_34"> |
4966 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4967 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4968 | + <field name="name">product wave 34</field> |
4969 | + <field name="picking_id" ref="stock_picking_wave_out_34"/> |
4970 | + <field name="priority">1</field> |
4971 | + <field name="product_id" ref="product_34"/> |
4972 | + <field name="product_qty" eval="1.0"/> |
4973 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4974 | + </record> |
4975 | + <function name="draft_force_assign" model="stock.picking"> |
4976 | + <value eval="[obj(ref('stock_picking_wave_out_34')).id]" model="stock.picking"/> |
4977 | + </function> |
4978 | + |
4979 | + |
4980 | + <record model="stock.picking" id="stock_picking_wave_out_35"> |
4981 | + <field name="address_id" ref="base.res_partner_address_2"/> |
4982 | + <field name="move_type">direct</field> |
4983 | + <field name="name">/</field> |
4984 | + <field name="type">out</field> |
4985 | + <field name="warehouse_id" ref="warehousewave"/> |
4986 | + </record> |
4987 | + <record model="stock.move" id="stock_move_wave_out_35"> |
4988 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
4989 | + <field name="location_id" ref="stock.stock_location_customers"/> |
4990 | + <field name="name">product wave 35</field> |
4991 | + <field name="picking_id" ref="stock_picking_wave_out_35"/> |
4992 | + <field name="priority">1</field> |
4993 | + <field name="product_id" ref="product_35"/> |
4994 | + <field name="product_qty" eval="1.0"/> |
4995 | + <field name="product_uom" ref="product.product_uom_unit"/> |
4996 | + </record> |
4997 | + <function name="draft_force_assign" model="stock.picking"> |
4998 | + <value eval="[obj(ref('stock_picking_wave_out_35')).id]" model="stock.picking"/> |
4999 | + </function> |
5000 | + |
The diff has been truncated for viewing.