Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 132 | ||||
Proposed branch: | lp:~syleam/wms/crossdock | ||||
Merge into: | lp:wms | ||||
Diff against target: |
2123 lines (+1561/-66) (has conflicts) 25 files modified
wms/__terp__.py (+10/-0) wms/demo/picking_crossdock_one.xml (+126/-0) wms/demo/picking_fixed_location.xml (+136/-0) wms/demo/picking_move_product_other_location.xml (+111/-0) wms/demo/product.xml (+66/-0) wms/demo/split_line_available.xml (+103/-0) wms/object/move.py (+44/-6) wms/object/picking.py (+175/-0) wms/object/report_stock.py (+1/-1) wms/security/groups.xml (+4/-0) wms/view/move.xml (+3/-0) wms/view/picking.xml (+61/-2) wms/view/warehouse.xml (+1/-1) wms_board/view/picking.xml (+65/-0) wms_location/__terp__.py (+9/-6) wms_location/data/location.xml (+77/-0) wms_location/demo/location.xml (+113/-29) wms_location/demo/partner.xml (+32/-0) wms_location/i18n/fr_FR.po (+112/-11) wms_location/i18n/wms_location.pot (+102/-9) wms_location/object/__init__.py (+1/-0) wms_location/object/location.py (+16/-1) wms_location/object/product.py (+86/-0) wms_location/security/ir.model.access.csv (+1/-0) wms_location/view/product.xml (+106/-0) Text conflict in wms/object/picking.py Text conflict in wms/view/picking.xml |
||||
To merge this branch: | bzr merge lp:~syleam/wms/crossdock | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Christophe CHAUVET | Needs Fixing | ||
Review via email: mp+46990@code.launchpad.net |
Commit message
merge
Description of the change
Add crossdock scenario
To post a comment you must log in.
Revision history for this message
Christophe CHAUVET (christophe-chauvet) : | # |
review:
Approve
Revision history for this message
Christophe CHAUVET (christophe-chauvet) : | # |
review:
Needs Fixing
lp:~syleam/wms/crossdock
updated
- 132. By Christophe CHAUVET
-
merge
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'wms/__terp__.py' |
2 | --- wms/__terp__.py 2011-01-13 09:28:07 +0000 |
3 | +++ wms/__terp__.py 2011-01-20 22:41:56 +0000 |
4 | @@ -38,6 +38,11 @@ |
5 | - dimension and weight can be store on UL |
6 | |
7 | Works only in >= 5.0.12, or install user_preferences before |
8 | + |
9 | + ************************************************************* |
10 | + ** THIS MODULE IS IN CONFLICT WITH stock_location MODULE **** |
11 | + ************************************************************* |
12 | + |
13 | """, |
14 | 'author': 'SYLEAM', |
15 | 'website': 'http://www.syleam.fr/', |
16 | @@ -75,6 +80,11 @@ |
17 | 'demo_xml': [ |
18 | 'demo/warehouse.xml', |
19 | 'demo/users.xml', |
20 | + 'demo/product.xml', |
21 | + 'demo/picking_fixed_location.xml', |
22 | + 'demo/picking_move_product_other_location.xml', |
23 | + 'demo/split_line_available.xml', |
24 | + 'demo/picking_crossdock_one.xml', |
25 | ], |
26 | 'installable': True, |
27 | 'active': False, |
28 | |
29 | === added file 'wms/demo/picking_crossdock_one.xml' |
30 | --- wms/demo/picking_crossdock_one.xml 1970-01-01 00:00:00 +0000 |
31 | +++ wms/demo/picking_crossdock_one.xml 2011-01-20 22:41:56 +0000 |
32 | @@ -0,0 +1,126 @@ |
33 | +<?xml version="1.0" encoding="UTF-8"?> |
34 | +<openerp> |
35 | + <data> |
36 | + ############################################################################## |
37 | + # |
38 | + # wms module for OpenERP, WMS Extended for Open ERP |
39 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
40 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
41 | + # |
42 | + # This file is a part of wms |
43 | + # |
44 | + # wms is free software: you can redistribute it and/or modify |
45 | + # it under the terms of the GNU General Public License as published by |
46 | + # the Free Software Foundation, either version 3 of the License, or |
47 | + # (at your option) any later version. |
48 | + # |
49 | + # wms is distributed in the hope that it will be useful, |
50 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
51 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
52 | + # GNU General Public License for more details. |
53 | + # |
54 | + # You should have received a copy of the GNU General Public License |
55 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
56 | + # |
57 | + ############################################################################## |
58 | + |
59 | + <!-- ************************************************************** --> |
60 | + <!-- ** Change the type of location on product HDD2 *************** --> |
61 | + <!-- ************************************************************** --> |
62 | + <record id="product.product_product_hdd2" model="product.product"> |
63 | + <field name="location_type">crossdock</field> |
64 | + </record> |
65 | + |
66 | + <assert id="product.product_product_hdd2" model="product.product" severity="error" |
67 | + string="Product HDD2 must be in crossdoc locaiton type"> |
68 | + <test expr="location_type">crossdock</test> |
69 | + </assert> |
70 | + |
71 | + <record model="product.location" id="product_location_2"> |
72 | + <field name="auto">transparent</field> |
73 | + <field name="delay" eval="1"/> |
74 | + <field name="location_dest_id" ref="wms_location.location_stock_b02"/> |
75 | + <field name="location_from_id" ref="stock.stock_location_stock"/> |
76 | + <field name="name">put in location</field> |
77 | + <field name="product_id" ref="product.product_product_hdd2"/> |
78 | + </record> |
79 | + |
80 | + <!-- ************************************************************** --> |
81 | + <!-- ** Add new receipt order with HDD2 product ******************* --> |
82 | + <!-- ************************************************************** --> |
83 | + <record model="stock.picking" id="stock_picking_new_hdd2"> |
84 | + <field name="address_id" ref="base.res_partner_address_wong"/> |
85 | + <field name="move_type">direct</field> |
86 | + <field name="origin">MAXHDD2</field> |
87 | + <field name="type">in</field> |
88 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
89 | + </record> |
90 | + <record model="stock.move" id="stock_move_hdd2_1"> |
91 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
92 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
93 | + <field name="name">[HDD2] HDD Seagate 7200.8 120GB</field> |
94 | + <field name="picking_id" ref="stock_picking_new_hdd2"/> |
95 | + <field name="product_id" ref="product.product_product_hdd2"/> |
96 | + <field name="product_qty" eval="50.0"/> |
97 | + <field name="product_uom" ref="product.product_uom_unit"/> |
98 | + </record> |
99 | + |
100 | + <function name="draft_force_assign" model="stock.picking"> |
101 | + <value eval="[obj(ref('stock_picking_new_hdd2')).id]" model="stock.picking"/> |
102 | + </function> |
103 | + |
104 | + <assert id="stock_picking_new_hdd2" model="stock.picking" |
105 | + string="This picking must be in confirmed!"> |
106 | + <test expr="state">confirmed</test> |
107 | + <test expr="len(move_lines) == 1"/> |
108 | + </assert> |
109 | + |
110 | + <assert id="stock_move_hdd2_1" model="stock.move" severity="error" |
111 | + string="The product HDD2 have B02 location affected and confirmed"> |
112 | + <test expr="location_dest_id.code">B02</test> |
113 | + <test expr="state">confirmed</test> |
114 | + </assert> |
115 | + |
116 | + <function name="force_assign" model="stock.picking"> |
117 | + <value eval="[obj(ref('stock_picking_new_hdd2')).id]" model="stock.picking"/> |
118 | + </function> |
119 | + |
120 | + <workflow action="button_done" model="stock.picking" ref="stock_picking_new_hdd2"/> |
121 | + |
122 | + <assert id="stock_picking_new_hdd2" model="stock.picking" |
123 | + string="This picking must be in done and have 2 lines!"> |
124 | + <test expr="state">done</test> |
125 | + <test expr="len(move_lines) == 2"/> |
126 | + </assert> |
127 | + |
128 | + <assert id="stock_move_hdd2_1" model="stock.move" |
129 | + string="This line must have crossdock location type!"> |
130 | + <test expr="location_dest_id.usage">crossdock</test> |
131 | + <test expr="product_qty == 12.0"/> |
132 | + </assert> |
133 | + |
134 | + <!-- Check the related picking, and verify the 2 lines is assigned --> |
135 | + <assert id="picking_out_split_1" model="stock.picking" |
136 | + string="This picking must be available"> |
137 | + <test expr="state">assigned</test> |
138 | + <test expr="len(move_lines) == 2"/> |
139 | + </assert> |
140 | + |
141 | + <assert id="picking_out_split_1" model="stock.picking" |
142 | + string="This 2 lines must have been assigned"> |
143 | + <test expr="move_lines[0].state == 'assigned'"/> |
144 | + <test expr="move_lines[0].product_qty == 10.0"/> |
145 | + <test expr="move_lines[1].state == 'assigned'"/> |
146 | + <test expr="move_lines[1].product_qty == 12.0"/> |
147 | + </assert> |
148 | + |
149 | + <workflow action="button_done" model="stock.picking" ref="picking_out_split_1"/> |
150 | + |
151 | + <assert id="picking_out_split_1" model="stock.picking" |
152 | + string="This picking must be done!"> |
153 | + <test expr="state">done</test> |
154 | + </assert> |
155 | + |
156 | + |
157 | + </data> |
158 | +</openerp> |
159 | |
160 | === added file 'wms/demo/picking_fixed_location.xml' |
161 | --- wms/demo/picking_fixed_location.xml 1970-01-01 00:00:00 +0000 |
162 | +++ wms/demo/picking_fixed_location.xml 2011-01-20 22:41:56 +0000 |
163 | @@ -0,0 +1,136 @@ |
164 | +<?xml version="1.0" encoding="UTF-8"?> |
165 | +<openerp> |
166 | + <data> |
167 | + ############################################################################## |
168 | + # |
169 | + # wms module for OpenERP, WMS Extended for Open ERP |
170 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
171 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
172 | + # |
173 | + # This file is a part of wms |
174 | + # |
175 | + # wms is free software: you can redistribute it and/or modify |
176 | + # it under the terms of the GNU General Public License as published by |
177 | + # the Free Software Foundation, either version 3 of the License, or |
178 | + # (at your option) any later version. |
179 | + # |
180 | + # wms is distributed in the hope that it will be useful, |
181 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
182 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
183 | + # GNU General Public License for more details. |
184 | + # |
185 | + # You should have received a copy of the GNU General Public License |
186 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
187 | + # |
188 | + ############################################################################## |
189 | + |
190 | + <!-- ************************************************************** --> |
191 | + <!-- ** Add receipt order ***************************************** --> |
192 | + <!-- ************************************************************** --> |
193 | + |
194 | + <record model="stock.picking" id="stock_picking_9"> |
195 | + <field name="address_id" ref="base.res_partner_address_2"/> |
196 | + <field name="move_type">direct</field> |
197 | + <field name="name">/</field> |
198 | + <field name="origin">CART1234</field> |
199 | + <field name="type">in</field> |
200 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
201 | + </record> |
202 | + <record model="stock.move" id="stock_move_23"> |
203 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
204 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
205 | + <field name="name">[TRACKP] Trackpad</field> |
206 | + <field name="picking_id" ref="stock_picking_9"/> |
207 | + <field name="priority">1</field> |
208 | + <field name="product_id" ref="wms.product_trackpad"/> |
209 | + <field name="product_qty" eval="2.0"/> |
210 | + <field name="product_uom" ref="product.product_uom_unit"/> |
211 | + </record> |
212 | + <record model="stock.move" id="stock_move_24"> |
213 | + <field name="comment">Preventive stock</field> |
214 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
215 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
216 | + <field name="name">[HDD3] HDD Seagate 7200.8 160GB</field> |
217 | + <field name="picking_id" ref="stock_picking_9"/> |
218 | + <field name="priority">1</field> |
219 | + <field name="product_id" ref="product.product_product_hdd3"/> |
220 | + <field name="product_qty" eval="5.0"/> |
221 | + <field name="product_uom" ref="product.product_uom_unit"/> |
222 | + </record> |
223 | + |
224 | + <!-- ************************************************************** --> |
225 | + <!-- ** Add picking order ***************************************** --> |
226 | + <!-- ************************************************************** --> |
227 | + <record model="stock.picking" id="stock_picking_11"> |
228 | + <field name="address_id" ref="base.res_partner_address_11"/> |
229 | + <field name="move_type">direct</field> |
230 | + <field name="name">/</field> |
231 | + <field name="product_id" ref="wms.product_trackpad"/> |
232 | + <field name="type">out</field> |
233 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
234 | + </record> |
235 | + <record model="stock.move" id="stock_move_27"> |
236 | + <field name="location_dest_id" ref="stock.stock_location_customers"/> |
237 | + <field name="location_id" ref="stock.stock_location_stock"/> |
238 | + <field name="name">[TRACKP] Trackpad</field> |
239 | + <field name="picking_id" ref="stock_picking_11"/> |
240 | + <field name="priority">1</field> |
241 | + <field name="product_id" ref="wms.product_trackpad"/> |
242 | + <field name="product_qty" eval="1.0"/> |
243 | + <field name="product_uom" ref="product.product_uom_unit"/> |
244 | + </record> |
245 | + <record model="stock.move" id="stock_move_28"> |
246 | + <field name="location_dest_id" ref="stock.stock_location_customers"/> |
247 | + <field name="location_id" ref="stock.stock_location_stock"/> |
248 | + <field name="name">[RAM512] DDR 512MB PC400</field> |
249 | + <field name="picking_id" ref="stock_picking_11"/> |
250 | + <field name="priority">1</field> |
251 | + <field name="product_id" ref="product.product_product_ram512"/> |
252 | + <field name="product_qty" eval="5.0"/> |
253 | + <field name="product_uom" ref="product.product_uom_unit"/> |
254 | + </record> |
255 | + |
256 | + |
257 | + <!-- Confirm the receipt order --> |
258 | + <function name="draft_force_assign" model="stock.picking"> |
259 | + <value eval="[obj(ref('stock_picking_9')).id]" model="stock.picking"/> |
260 | + </function> |
261 | + |
262 | + <!-- The product Trackpad have a fixed location and confirmed ! --> |
263 | + <assert id="stock_move_23" model="stock.move" severity="warn" string="The product Trackpad have A01 location affected and confirmed"> |
264 | + <test expr="location_dest_id.code">A01</test> |
265 | + <test expr="state">confirmed</test> |
266 | + </assert> |
267 | + |
268 | + <!-- Force the availability or the recipt order --> |
269 | + <function name="force_assign" model="stock.picking"> |
270 | + <value eval="[obj(ref('stock_picking_9')).id]" model="stock.picking"/> |
271 | + </function> |
272 | + |
273 | + <assert id="stock_picking_9" model="stock.picking" severity="error" string="Picking must be in available state!"> |
274 | + <test expr="state">assigned</test> |
275 | + </assert> |
276 | + |
277 | + <!-- We confirm all move --> |
278 | + <workflow action="button_done" model="stock.picking" ref="stock_picking_9"/> |
279 | + |
280 | + <!-- The receipt order must be done --> |
281 | + <assert id="stock_picking_9" model="stock.picking" severity="error" string="Picking must be in available state!"> |
282 | + <test expr="state">done</test> |
283 | + </assert> |
284 | + |
285 | + <assert id="wms.product_trackpad" model="product.product" severity="error" string="The virtual stock of Trackpad must be to 2.0"> |
286 | + <test expr="virtual_available == 2.0"/> |
287 | + </assert> |
288 | + |
289 | + <!-- Confirm the picking out --> |
290 | + <function name="draft_force_assign" model="stock.picking"> |
291 | + <value eval="[obj(ref('stock_picking_11')).id]" model="stock.picking"/> |
292 | + </function> |
293 | + |
294 | + <assert id="wms.product_trackpad" model="product.product" severity="error" string="The virtual stock of Trackpad must be to 2.0"> |
295 | + <test expr="virtual_available == 1.0"/> |
296 | + </assert> |
297 | + |
298 | + </data> |
299 | +</openerp> |
300 | |
301 | === added file 'wms/demo/picking_move_product_other_location.xml' |
302 | --- wms/demo/picking_move_product_other_location.xml 1970-01-01 00:00:00 +0000 |
303 | +++ wms/demo/picking_move_product_other_location.xml 2011-01-20 22:41:56 +0000 |
304 | @@ -0,0 +1,111 @@ |
305 | +<?xml version="1.0" encoding="UTF-8"?> |
306 | +<openerp> |
307 | + <data> |
308 | + ############################################################################## |
309 | + # |
310 | + # wms module for OpenERP, WMS Extended for Open ERP |
311 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
312 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
313 | + # |
314 | + # This file is a part of wms |
315 | + # |
316 | + # wms is free software: you can redistribute it and/or modify |
317 | + # it under the terms of the GNU General Public License as published by |
318 | + # the Free Software Foundation, either version 3 of the License, or |
319 | + # (at your option) any later version. |
320 | + # |
321 | + # wms is distributed in the hope that it will be useful, |
322 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
323 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
324 | + # GNU General Public License for more details. |
325 | + # |
326 | + # You should have received a copy of the GNU General Public License |
327 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
328 | + # |
329 | + ############################################################################## |
330 | + |
331 | + <record model="product.product" id="product_magic_mouse"> |
332 | + <field name="categ_id" ref="product.product_category_accessories"/> |
333 | + <field name="default_code">MAGICMO</field> |
334 | + <field name="list_price" eval="50.0"/> |
335 | + <field name="location_type">fixed</field> |
336 | + <field name="mes_type">fixed</field> |
337 | + <field name="name">Magic Mouse</field> |
338 | + <field name="property_stock_inventory" ref="stock.location_inventory"/> |
339 | + <field name="property_stock_procurement" ref="stock.location_procurement"/> |
340 | + <field name="property_stock_production" ref="stock.location_production"/> |
341 | + <field name="purchase_ok" eval="True"/> |
342 | + <field name="sale_delay" eval="10.0"/> |
343 | + <field name="sale_ok" eval="True"/> |
344 | + <field name="standard_price" eval="11.0"/> |
345 | + <field name="uom_id" ref="product.product_uom_unit"/> |
346 | + <field name="uom_po_id" ref="product.product_uom_unit"/> |
347 | + </record> |
348 | + <record model="product.location" id="product_location_2"> |
349 | + <field name="auto">transparent</field> |
350 | + <field name="delay" eval="1"/> |
351 | + <field name="location_dest_id" ref="wms_location.location_stock_b01"/> |
352 | + <field name="location_from_id" ref="stock.stock_location_stock"/> |
353 | + <field name="name">put in location</field> |
354 | + <field name="product_id" ref="product_magic_mouse"/> |
355 | + </record> |
356 | + |
357 | + <record model="stock.picking" id="picking_in_fixed_b01"> |
358 | + <field name="address_id" ref="base.res_partner_address_7"/> |
359 | + <field name="invoice_state">none</field> |
360 | + <field name="move_type">direct</field> |
361 | + <field name="name">PACK3</field> |
362 | + <field name="state">draft</field> |
363 | + <field name="type">in</field> |
364 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
365 | + </record> |
366 | + <record model="stock.move" id="stock_move_21"> |
367 | + <field name="location_dest_id" ref="stock.stock_location_stock"/> |
368 | + <field name="location_id" ref="stock.stock_location_suppliers"/> |
369 | + <field name="name">[MAGICMO] Magic Mouse</field> |
370 | + <field name="picking_id" ref="picking_in_fixed_b01"/> |
371 | + <field name="priority">1</field> |
372 | + <field name="product_id" ref="product_magic_mouse"/> |
373 | + <field name="product_qty" eval="20.0"/> |
374 | + <field name="product_uom" ref="product.product_uom_unit"/> |
375 | + </record> |
376 | + |
377 | + <assert id="wms.product_magic_mouse" model="product.product" severity="error" string="The virtual stock of Magic Mouse must be empty (qty=0.0)"> |
378 | + <test expr="virtual_available == 0.0"/> |
379 | + </assert> |
380 | + |
381 | + <!-- Confirm the receipt order --> |
382 | + <function name="draft_force_assign" model="stock.picking"> |
383 | + <value eval="[obj(ref('picking_in_fixed_b01')).id]" model="stock.picking"/> |
384 | + </function> |
385 | + |
386 | + <assert id="wms.product_magic_mouse" model="product.product" severity="error" string="The virtual stock of Magic Mouse must be equal to 2.0"> |
387 | + <test expr="virtual_available == 20.0"/> |
388 | + </assert> |
389 | + |
390 | + <assert id="wms.product_magic_mouse" model="product.product" severity="error" string="The available stock of Magic Mouse must be equal to 0.0"> |
391 | + <test expr="qty_available == 0.0"/> |
392 | + </assert> |
393 | + |
394 | + <function name="force_assign" model="stock.picking"> |
395 | + <value eval="[obj(ref('picking_in_fixed_b01')).id]" model="stock.picking"/> |
396 | + </function> |
397 | + |
398 | + <assert id="picking_in_fixed_b01" model="stock.picking" severity="error" string="Picking must be in available state!"> |
399 | + <test expr="state">assigned</test> |
400 | + </assert> |
401 | + |
402 | + <!-- We confirm all move --> |
403 | + <workflow action="button_done" model="stock.picking" ref="picking_in_fixed_b01"/> |
404 | + |
405 | + <!-- The receipt order must be done --> |
406 | + <assert id="picking_in_fixed_b01" model="stock.picking" severity="error" string="Picking must be in available state!"> |
407 | + <test expr="state">done</test> |
408 | + </assert> |
409 | + |
410 | + <assert id="wms.product_magic_mouse" model="product.product" severity="error" string="The available stock of Magic Mouse must be equal to 0.0"> |
411 | + <test expr="qty_available == 20.0"/> |
412 | + </assert> |
413 | + |
414 | + </data> |
415 | +</openerp> |
416 | |
417 | === added file 'wms/demo/product.xml' |
418 | --- wms/demo/product.xml 1970-01-01 00:00:00 +0000 |
419 | +++ wms/demo/product.xml 2011-01-20 22:41:56 +0000 |
420 | @@ -0,0 +1,66 @@ |
421 | +<?xml version="1.0" encoding="UTF-8"?> |
422 | +<openerp> |
423 | + <data> |
424 | + ############################################################################## |
425 | + # |
426 | + # wms module for OpenERP, WMS Extended for Open ERP |
427 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
428 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
429 | + # |
430 | + # This file is a part of wms |
431 | + # |
432 | + # wms is free software: you can redistribute it and/or modify |
433 | + # it under the terms of the GNU General Public License as published by |
434 | + # the Free Software Foundation, either version 3 of the License, or |
435 | + # (at your option) any later version. |
436 | + # |
437 | + # wms is distributed in the hope that it will be useful, |
438 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
439 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
440 | + # GNU General Public License for more details. |
441 | + # |
442 | + # You should have received a copy of the GNU General Public License |
443 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
444 | + # |
445 | + ############################################################################## |
446 | + |
447 | + <record model="product.product" id="product_trackpad"> |
448 | + <field name="name">Trackpad</field> |
449 | + <field name="code">TRACKP</field> |
450 | + <field name="default_code">TRACKP</field> |
451 | + <field name="property_stock_procurement" ref="stock.location_procurement"/> |
452 | + <field name="supply_method">buy</field> |
453 | + <field name="list_price" eval="25.0"/> |
454 | + <field name="sale_ok" eval="True"/> |
455 | + <field name="ean13">3603360011852</field> |
456 | + <field name="standard_price" eval="12.0"/> |
457 | + <field name="uom_id" ref="product.product_uom_unit"/> |
458 | + <field name="uom_po_id" ref="product.product_uom_unit"/> |
459 | + <field name="cost_method">standard</field> |
460 | + <field name="uos_coeff" eval="1.0"/> |
461 | + <field name="procure_method">make_to_stock</field> |
462 | + <field name="seller_delay" eval="1"/> |
463 | + <field name="purchase_ok" eval="True"/> |
464 | + <field name="produce_delay" eval="1.0"/> |
465 | + <field name="type">product</field> |
466 | + <field name="property_stock_production" ref="stock.location_production"/> |
467 | + <field name="active" eval="True"/> |
468 | + <field name="property_stock_inventory" ref="stock.location_inventory"/> |
469 | + <field name="location_type">crossdock</field> |
470 | + <field name="sale_delay" eval="7.0"/> |
471 | + <field name="categ_id" ref="product.product_category_3"/> |
472 | + <field name="warehouse_ids" eval="[(6,0,[ref('stock.warehouse0')])]"/> |
473 | + <field name="price_margin" eval="1.0"/> |
474 | + </record> |
475 | + |
476 | + <record model="product.location" id="product_location_2"> |
477 | + <field name="auto">transparent</field> |
478 | + <field name="delay" eval="1"/> |
479 | + <field name="location_dest_id" ref="wms_location.location_stock_a01"/> |
480 | + <field name="location_from_id" ref="stock.stock_location_stock"/> |
481 | + <field name="name">put in stock</field> |
482 | + <field name="product_id" ref="wms.product_trackpad"/> |
483 | + </record> |
484 | + |
485 | + </data> |
486 | +</openerp> |
487 | |
488 | === added file 'wms/demo/split_line_available.xml' |
489 | --- wms/demo/split_line_available.xml 1970-01-01 00:00:00 +0000 |
490 | +++ wms/demo/split_line_available.xml 2011-01-20 22:41:56 +0000 |
491 | @@ -0,0 +1,103 @@ |
492 | +<?xml version="1.0" encoding="UTF-8"?> |
493 | +<openerp> |
494 | + <data> |
495 | + ############################################################################## |
496 | + # |
497 | + # wms module for OpenERP, WMS Extended for Open ERP |
498 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
499 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
500 | + # |
501 | + # This file is a part of wms |
502 | + # |
503 | + # wms is free software: you can redistribute it and/or modify |
504 | + # it under the terms of the GNU General Public License as published by |
505 | + # the Free Software Foundation, either version 3 of the License, or |
506 | + # (at your option) any later version. |
507 | + # |
508 | + # wms is distributed in the hope that it will be useful, |
509 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
510 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
511 | + # GNU General Public License for more details. |
512 | + # |
513 | + # You should have received a copy of the GNU General Public License |
514 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
515 | + # |
516 | + ############################################################################## |
517 | + |
518 | + <!-- ************************************************************** --> |
519 | + <!-- ** Add picking out ******************************************* --> |
520 | + <!-- ************************************************************** --> |
521 | + <record model="stock.picking" id="picking_out_split_1"> |
522 | + <field name="address_id" ref="base.res_partner_address_tang"/> |
523 | + <field name="move_type">one</field> |
524 | + <field name="name">/</field> |
525 | + <field name="product_id" ref="product.product_product_hdd2"/> |
526 | + <field name="type">out</field> |
527 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
528 | + </record> |
529 | + <record model="stock.move" id="stock_move_split_1_1"> |
530 | + <field name="location_dest_id" ref="stock.stock_location_customers"/> |
531 | + <field name="location_id" ref="stock.stock_location_stock"/> |
532 | + <field name="name">[HDD2] HDD Seagate 7200.8 120GB</field> |
533 | + <field name="picking_id" ref="picking_out_split_1"/> |
534 | + <field name="product_id" ref="product.product_product_hdd2"/> |
535 | + <field name="product_qty" eval="22.0"/> |
536 | + <field name="product_uom" ref="product.product_uom_unit"/> |
537 | + </record> |
538 | + |
539 | + <function name="draft_force_assign" model="stock.picking"> |
540 | + <value eval="[obj(ref('picking_out_split_1')).id]" model="stock.picking"/> |
541 | + </function> |
542 | + |
543 | + <assert id="picking_out_split_1" model="stock.picking" |
544 | + string="This picking must be confirmed"> |
545 | + <test expr="state">confirmed</test> |
546 | + <test expr="len(move_lines) == 1"/> |
547 | + </assert> |
548 | + |
549 | + <!-- ************************************************************** --> |
550 | + <!-- ** In All in One mode, no lines must be split **************** --> |
551 | + <!-- ** we must check the availability **************************** --> |
552 | + <!-- ************************************************************** --> |
553 | + <function name="action_assign" model="stock.picking"> |
554 | + <value eval="[obj(ref('picking_out_split_1')).id]" model="stock.picking"/> |
555 | + </function> |
556 | + |
557 | + <assert id="picking_out_split_1" model="stock.picking" |
558 | + string="This picking in All in One mode, don't split"> |
559 | + <test expr="state">confirmed</test> |
560 | + <test expr="len(move_lines) == 1"/> |
561 | + </assert> |
562 | + |
563 | + <!-- ************************************************************** --> |
564 | + <!-- ** Change the type to direct, the movement must be split in 2* --> |
565 | + <!-- ** With 1 line in assigned and 1 line in confirm ************* --> |
566 | + <!-- ************************************************************** --> |
567 | + <record model="stock.picking" id="picking_out_split_1"> |
568 | + <field name="move_type">direct</field> |
569 | + </record> |
570 | + |
571 | + <function name="action_assign" model="stock.picking"> |
572 | + <value eval="[obj(ref('picking_out_split_1')).id]" model="stock.picking"/> |
573 | + </function> |
574 | + |
575 | + <assert id="picking_out_split_1" model="stock.picking" |
576 | + string="This picking must be split in 2 lines"> |
577 | + <test expr="state">assigned</test> |
578 | + <test expr="len(move_lines) == 2"/> |
579 | + </assert> |
580 | + |
581 | + <assert id="picking_out_split_1" model="stock.picking" |
582 | + string="The first move must have a quantity 10"> |
583 | + <test expr="move_lines[0].product_qty == 10.0"/> |
584 | + <test expr="move_lines[0].state">assigned</test> |
585 | + </assert> |
586 | + |
587 | + <assert id="picking_out_split_1" model="stock.picking" |
588 | + string="The second move must have a quantity 12"> |
589 | + <test expr="move_lines[1].product_qty == 12.0"/> |
590 | + <test expr="move_lines[1].state">confirmed</test> |
591 | + </assert> |
592 | + |
593 | + </data> |
594 | +</openerp> |
595 | |
596 | === modified file 'wms/object/move.py' |
597 | --- wms/object/move.py 2010-11-13 14:42:10 +0000 |
598 | +++ wms/object/move.py 2011-01-20 22:41:56 +0000 |
599 | @@ -26,6 +26,7 @@ |
600 | from osv import fields |
601 | import netsvc |
602 | |
603 | + |
604 | class StockMoveRemark(osv.osv): |
605 | _name = 'stock.move.remark' |
606 | _description = 'Remark for the stock move' |
607 | @@ -33,11 +34,13 @@ |
608 | _columns = { |
609 | 'name': fields.char('Name', size=128, translate=True, required=True), |
610 | 'code': fields.char('Code', size=16), |
611 | + 'redirect': fields.boolean('Redirect', help='Use to made a different treatment, when this remark is selected!'), |
612 | } |
613 | |
614 | _defaults = { |
615 | 'name': lambda *a: False, |
616 | 'code': lambda *a: False, |
617 | + 'redirect': lambda *a: False, |
618 | } |
619 | |
620 | StockMoveRemark() |
621 | @@ -53,6 +56,8 @@ |
622 | 'average_price': fields.float('Average price', help='Store the weighted average price unit for this product'), |
623 | 'invoice_price': fields.float('Invoice price', help='Store the invoice price, check the invoice UOM as well'), |
624 | 'invoice_uom_id': fields.many2one('product.uom', 'Invoice UOM', help='Store the invoice UOM'), |
625 | + 'crossdock_ok': fields.boolean('Crossdock_ok', help='If check, the crossdoc process have been made'), |
626 | + 'order_qty': fields.float('Order Qty.', help='Usefull when sale module not installed'), |
627 | } |
628 | |
629 | _defaults = { |
630 | @@ -61,8 +66,29 @@ |
631 | 'purchase_price': lambda *a: 0.0, |
632 | 'average_price': lambda *a: 0.0, |
633 | 'invoice_price': lambda *a: 0.0, |
634 | + 'crossdock_ok': lambda *a: False, |
635 | + 'order_qty': lambda *a: 0.0, |
636 | } |
637 | |
638 | + def create(self, cr, uid, values, context=None): |
639 | + """ |
640 | + We must verify if there is a picking_id associate to the move |
641 | + and put correctly the warehouse |
642 | + """ |
643 | + if context is None: |
644 | + context = {} |
645 | + |
646 | + if values.get('picking_id'): |
647 | + pick_obj = self.pool.get('stock.picking') |
648 | + pick = pick_obj.read(cr, uid, values.get('picking_id'), ['warehouse_id'], context=context) |
649 | + if not pick.get('warehouse_id', False) and values.get('location_id'): |
650 | + loc = self.pool.get('stock.location').read(cr, uid, values.get('location_id'), ['warehouse_id'], context=context) |
651 | + if loc and loc['warehouse_id']: |
652 | + pick_obj.write(cr, uid, [values.get('picking_id')], {'warehouse_id': loc['warehouse_id'][0]}, context=context) |
653 | + |
654 | + return super(StockMove, self).create(cr, uid, values, context=context) |
655 | + |
656 | + |
657 | def action_done(self, cr, uid, ids, context=None): |
658 | """ |
659 | This function store average price form product in stock move if configure in comapny |
660 | @@ -81,7 +107,7 @@ |
661 | def check_assign(self, cr, uid, ids, context=None): |
662 | """ |
663 | The assignement must be keep the production_lot and tracking |
664 | - and purpose |
665 | + and purpose |
666 | """ |
667 | done = [] |
668 | count = 0 |
669 | @@ -92,27 +118,39 @@ |
670 | done.append(move.id) |
671 | pickings[move.picking_id.id] = 1 |
672 | continue |
673 | + |
674 | + if move.picking_id.move_type == 'one' and move.product_id.virtual_available < move.product_qty: |
675 | + continue |
676 | + |
677 | if move.state in ('confirmed', 'waiting'): |
678 | prodlot = move.prodlot_id and move.prodlot_id.id or False |
679 | tracking = move.tracking_id and move.tracking_id.id or False |
680 | - res = self.pool.get('stock.location')._product_reserve(cr, uid, [move.location_id.id], move.product_id.id, move.product_qty, |
681 | + res = self.pool.get('stock.location')._product_reserve(cr, uid, [move.location_id.id], move.product_id.id, move.product_qty, |
682 | {'uom': move.product_uom.id, 'prodlot': prodlot, 'tracking': tracking}) |
683 | + |
684 | + total_qty = move.product_qty |
685 | + original_location_id = move.location_id.id |
686 | + |
687 | if res: |
688 | #_product_available_test depends on the next status for correct functioning |
689 | #the test does not work correctly if the same product occurs multiple times |
690 | #in the same order. This is e.g. the case when using the button 'split in two' of |
691 | #the stock outgoing form |
692 | - self.write(cr, uid, move.id, {'state':'assigned'}) |
693 | + r = res.pop(0) |
694 | + self.write(cr, uid, move.id, {'location_id': r[1], 'product_qty': r[0], 'state': 'assigned'}) |
695 | done.append(move.id) |
696 | pickings[move.picking_id.id] = 1 |
697 | - r = res.pop(0) |
698 | - cr.execute('UPDATE stock_move SET location_id=%s, product_qty=%s WHERE id=%s', (r[1], r[0], move.id)) |
699 | + total_qty -= r[0] |
700 | |
701 | while res: |
702 | r = res.pop(0) |
703 | move_id = self.copy(cr, uid, move.id, {'product_qty': r[0], 'location_id': r[1]}) |
704 | done.append(move_id) |
705 | - #cr.execute('insert into stock_move_history_ids values (%s,%s)', (move.id,move_id)) |
706 | + total_qty -= r[0] |
707 | + |
708 | + if total_qty > 0: |
709 | + move_id = self.copy(cr, uid, move.id, {'product_qty': total_qty, 'location_id': original_location_id, 'state': 'confirmed'}, context=context) |
710 | + |
711 | if done: |
712 | count += len(done) |
713 | self.write(cr, uid, done, {'state': 'assigned'}) |
714 | |
715 | === modified file 'wms/object/picking.py' |
716 | --- wms/object/picking.py 2011-01-13 09:29:46 +0000 |
717 | +++ wms/object/picking.py 2011-01-20 22:41:56 +0000 |
718 | @@ -24,8 +24,13 @@ |
719 | |
720 | from osv import osv |
721 | from osv import fields |
722 | +from tools.translate import _ |
723 | + |
724 | |
725 | class StockPicking(osv.osv): |
726 | + """ |
727 | + Add crossdock process |
728 | + """ |
729 | _inherit = 'stock.picking' |
730 | |
731 | def _action_type(self, cr, uid, context=None): |
732 | @@ -45,6 +50,7 @@ |
733 | 'picking_time': fields.float('Time', help='Time to made this picking'), |
734 | 'transporter_id': fields.many2one('res.partner', 'Transporter'), |
735 | 'transporter_number': fields.char('Tracking number', size=128), |
736 | + 'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'), |
737 | } |
738 | |
739 | _defaults = { |
740 | @@ -54,6 +60,7 @@ |
741 | 'transporter_number': lambda *a: False |
742 | } |
743 | |
744 | +<<<<<<< TREE |
745 | def default_get(self, cr, uid, fields_list, context=None): |
746 | if context is None: |
747 | context = {} |
748 | @@ -63,6 +70,174 @@ |
749 | |
750 | return values |
751 | |
752 | +======= |
753 | + def crossdock_location_available(self, cr, uid, warehouse_ids, context=None): |
754 | + """ |
755 | + Return the list ids of empty crossdock location for these warehouse |
756 | + You can specify only_one in context to retrieve 1 location at the time |
757 | + |
758 | + :param warehouse_ids: list of the warehouse |
759 | + :type warehouse_ids: list |
760 | + :return: dict with the list of empty crossdock location |
761 | + :rtype: dict |
762 | + """ |
763 | + if context is None: |
764 | + context = {} |
765 | + |
766 | + st_av_obj = self.pool.get('wms.report.stock.available') |
767 | + res = {} |
768 | + for w in warehouse_ids: |
769 | + tmp_ids = [] |
770 | + l_ids = self.pool.get('stock.location').search(cr, uid, |
771 | + [('warehouse_id', '=', w), ('usage', '=', 'crossdock')], context=context) |
772 | + for a in l_ids: |
773 | + if not st_av_obj.search(cr, uid, [('location_id', '=', a)]): |
774 | + tmp_ids.append(a) |
775 | + if tmp_ids and context.get('only_one'): |
776 | + break |
777 | + |
778 | + if not tmp_ids: |
779 | + default_crossdock = self.pool.get('stock.warehouse').read(cr, uid, w, ['crossdock_location_id'], context=context)['crossdock_location_id'] |
780 | + if default_crossdock: |
781 | + tmp_ids = [default_crossdock[0]] |
782 | + res[str(w)] = tmp_ids |
783 | + return res |
784 | + |
785 | + def create_crossdock_move(self, cr, uid, move, crossdock_id=None, context=None): |
786 | + """ |
787 | + Check if the product on this stock.move have been reserved, |
788 | + and affecte the location on the picking_order |
789 | + |
790 | + :param move_id: movement to check |
791 | + :type move_id: int |
792 | + :return: True if the movement is correct |
793 | + :rtype: boolean |
794 | + """ |
795 | + if context is None: |
796 | + context = {} |
797 | + |
798 | + move_obj = self.pool.get('stock.move') |
799 | + |
800 | + if crossdock_id is None: |
801 | + default_crossdock = self.pool.get('stock.warehouse').read(cr, uid, move.location_dest_id.warehouse_id.id, |
802 | + ['crossdock_location_id'], context=context)['crossdock_location_id'] |
803 | + if not default_crossdock: |
804 | + raise osv.except_osv(_('Error'), _('No default crossdock location defined on the warehouse!')) |
805 | + crossdock_id = isinstance(default_crossdock, list) and default_crossdock[0] or default_crossdock |
806 | + |
807 | + ### |
808 | + ## If we have an outgoing quantity, and location type is crossdock, we split in two line |
809 | + ## |
810 | + new_id = False |
811 | + if abs(move.product_id.outgoing_qty) > 0: |
812 | + |
813 | + # Search how many quantity must be put in crossdock |
814 | + picking_ids = self.search(cr, uid, [('type', '=', 'out'), ('state', 'in', ['confirmed','assigned'])], |
815 | + context=context) |
816 | + args = [ |
817 | + ('picking_id', 'in', picking_ids), |
818 | + ('product_id', '=', move.product_id.id), |
819 | + ('state', 'in', ['confirmed', 'waiting']), |
820 | + ] |
821 | + reserve_ids = move_obj.search(cr, uid, args, |
822 | + limit=abs(move.product_qty), order='date_planned', context=context) |
823 | + |
824 | + reserves = move_obj.browse(cr, uid, reserve_ids, context=context) |
825 | + total_crossdock = 0.0 |
826 | + for r in reserves: |
827 | + total_crossdock += r.product_qty |
828 | + |
829 | + # Check if we must split the line in two if there is enougth quantity available |
830 | + if move.product_qty > total_crossdock: |
831 | + args = { |
832 | + 'product_qty': (move.product_qty - total_crossdock), |
833 | + 'state': 'done', |
834 | + 'crossdock_ok': True, |
835 | + } |
836 | + new_id = move_obj.copy(cr, uid, move.id, args, context=context) |
837 | + args = { |
838 | + 'product_qty': total_crossdock, |
839 | + 'location_dest_id': crossdock_id, |
840 | + 'state': 'done', |
841 | + 'crossdock_ok': True, |
842 | + } |
843 | + move_obj.write(cr, uid, [move.id], args, context=context) |
844 | + else: |
845 | + # We don't have enougth quantity, how many moves can be assigned with quantity |
846 | + args = { |
847 | + 'location_dest_id': crossdock_id, |
848 | + 'state': 'done', |
849 | + 'crossdock_ok': True, |
850 | + } |
851 | + move_obj.write(cr, uid, [move.id], args, context=context) |
852 | + |
853 | + reserve_ids = [] |
854 | + tmp_qty = 0.0 |
855 | + for r in reserves: |
856 | + tmp_qty += r.product_qty |
857 | + if tmp_qty <= move.product_qty: |
858 | + reserve_ids.append(r.id) |
859 | + else: |
860 | + break |
861 | + |
862 | + args = { |
863 | + 'location_id': crossdock_id, |
864 | + 'state': 'assigned', |
865 | + } |
866 | + move_obj.write(cr, uid, reserve_ids, args, context=context) |
867 | + |
868 | + return new_id or move.id |
869 | + |
870 | + def test_finnished(self, cr, uid, ids): |
871 | + """ |
872 | + On receipt order, check if there is picking, and generate crossdock |
873 | + 1) check if all move are finnished |
874 | + 2) if not return False |
875 | + """ |
876 | + in_ids = [] |
877 | + other_ids = [] |
878 | + for p in self.browse(cr, uid, ids): |
879 | + if p.type == 'in': |
880 | + in_ids.append(p.id) |
881 | + else: |
882 | + other_ids.append(p.id) |
883 | + |
884 | + # check if there is a receipt order, if not call directly the super method |
885 | + if len(in_ids) == 0: |
886 | + return super(StockPicking, self).test_finnished(cr, uid, ids) |
887 | + |
888 | + # if we have a receipt we must check |
889 | + elif len(in_ids) >= 1: |
890 | + lines_ok = True |
891 | + move_ids = self.pool.get('stock.move').search(cr, uid, [('picking_id', 'in', in_ids)]) |
892 | + cds_ids = [] |
893 | + new_move_ids = [] |
894 | + moves = self.pool.get('stock.move').browse(cr, uid, move_ids) |
895 | + for move in moves: |
896 | + if not cds_ids: |
897 | + cd_ids = self.crossdock_location_available(cr, uid, [move.location_dest_id.warehouse_id.id]) |
898 | + if isinstance(cd_ids, dict): |
899 | + cd_ids = cd_ids[str(move.location_dest_id.warehouse_id.id)] |
900 | + |
901 | + if move.state not in ('done', 'cancel'): |
902 | + if move.product_qty != 0.0: |
903 | + lines_ok = False |
904 | + |
905 | + if not lines_ok: |
906 | + return False |
907 | + |
908 | + for move in moves: |
909 | + # check if product is in crossdock mode and if out picking is available |
910 | + if not move.crossdock_ok and move.product_id.location_type == 'crossdock' and move.product_qty > 0: |
911 | + |
912 | + tmp_crossdock = cd_ids and cd_ids.pop() or None |
913 | + m_id = self.create_crossdock_move(cr, uid, move, crossdock_id=tmp_crossdock) |
914 | + new_move_ids.append(m_id) |
915 | + |
916 | + |
917 | + return super(StockPicking, self).test_finnished(cr, uid, ids) |
918 | + |
919 | +>>>>>>> MERGE-SOURCE |
920 | StockPicking() |
921 | |
922 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
923 | |
924 | === modified file 'wms/object/report_stock.py' |
925 | --- wms/object/report_stock.py 2010-08-25 13:33:33 +0000 |
926 | +++ wms/object/report_stock.py 2011-01-20 22:41:56 +0000 |
927 | @@ -84,7 +84,7 @@ |
928 | WHERE m0.state='done' |
929 | AND location_dest_id in (SELECT id |
930 | FROM stock_location |
931 | - WHERE usage='internal') |
932 | + WHERE usage in ('internal','crossdock')) |
933 | GROUP by |
934 | location_dest_id, |
935 | m0.state, |
936 | |
937 | === modified file 'wms/security/groups.xml' |
938 | --- wms/security/groups.xml 2010-11-13 11:25:08 +0000 |
939 | +++ wms/security/groups.xml 2011-01-20 22:41:56 +0000 |
940 | @@ -40,6 +40,10 @@ |
941 | <field name="name">WMS - Purchase Price</field> |
942 | </record> |
943 | |
944 | + <record id="group_wms_order_qty" model="res.groups"> |
945 | + <field name="name">WMS - View order qty</field> |
946 | + </record> |
947 | + |
948 | <!-- *************************************************************** --> |
949 | <!-- ** Group to restrict visibility on the warehouse's user ******* --> |
950 | <!-- ** in preference ********************************************** --> |
951 | |
952 | === modified file 'wms/view/move.xml' |
953 | --- wms/view/move.xml 2010-07-15 09:59:18 +0000 |
954 | +++ wms/view/move.xml 2011-01-20 22:41:56 +0000 |
955 | @@ -34,6 +34,7 @@ |
956 | <field name="priority" eval="8"/> |
957 | <field name="arch" type="xml"> |
958 | <tree string="Remark"> |
959 | + <field name="redirect"/> |
960 | <field name="code"/> |
961 | <field name="name"/> |
962 | </tree> |
963 | @@ -49,6 +50,7 @@ |
964 | <form string="Remark"> |
965 | <field name="name" colspan="4" select="1"/> |
966 | <field name="code" select="1"/> |
967 | + <field name="redirect" select="1"/> |
968 | </form> |
969 | </field> |
970 | </record> |
971 | @@ -113,6 +115,7 @@ |
972 | <field name="invoice_price"/> |
973 | <field name="invoice_uom_id"/> |
974 | </group> |
975 | + <field name="order_qty" groups="wms.group_wms_order_qty"/> |
976 | </xpath> |
977 | </data> |
978 | |
979 | |
980 | === modified file 'wms/view/picking.xml' |
981 | --- wms/view/picking.xml 2011-01-13 13:26:59 +0000 |
982 | +++ wms/view/picking.xml 2011-01-20 22:41:56 +0000 |
983 | @@ -50,7 +50,7 @@ |
984 | <field name="location_id" select="1" domain="[('usage','=','supplier'),('warehouse_id','=',parent.warehouse_id)]"/> |
985 | </xpath> |
986 | <xpath expr="/form/notebook/page/field/form/field[@name='location_dest_id']" position="replace"> |
987 | - <field domain="[('usage','=','internal'),('warehouse_id','=',parent.warehouse_id)]" name="location_dest_id" select="1"/> |
988 | + <field domain="[('usage','in',('internal','crossdock')),('warehouse_id','=',parent.warehouse_id)]" name="location_dest_id" select="1"/> |
989 | </xpath> |
990 | <xpath expr="/form/notebook/page/field/form/field[@name='tracking_id']" position="replace"> |
991 | <field groups="wms.group_wms_tracking" name="tracking_id" domain="[('product_id','=',product_id)]" select="1"/> |
992 | @@ -152,7 +152,7 @@ |
993 | <field name="remark_id"/> |
994 | </xpath> |
995 | <xpath expr="/form/notebook/page/field/form/field[@name='location_id']" position="replace"> |
996 | - <field name="location_id" select="1" domain="[('usage','=','internal'),('warehouse_id','=',parent.warehouse_id)]"/> |
997 | + <field name="location_id" select="1" domain="[('usage','in',('internal','crossdock')),('warehouse_id','=',parent.warehouse_id)]"/> |
998 | </xpath> |
999 | <xpath expr="/form/notebook/page/field/form/field[@name='location_dest_id']" position="replace"> |
1000 | <field domain="[('usage','in',['internal','production']),('warehouse_id','=',parent.warehouse_id)]" name="location_dest_id" select="1"/> |
1001 | @@ -174,6 +174,7 @@ |
1002 | <field name="invoice_uom_id"/> |
1003 | --> |
1004 | </group> |
1005 | + <field name="order_qty" groups="wms.group_wms_order_qty"/> |
1006 | </xpath> |
1007 | </data> |
1008 | |
1009 | @@ -227,6 +228,10 @@ |
1010 | <field name="invoice_uom_id"/> |
1011 | --> |
1012 | </group> |
1013 | + <group colspan="4" name="order"> |
1014 | + <field name="order_qty" groups="wms.group_wms_order_qty"/> |
1015 | + <newline/> |
1016 | + </group> |
1017 | </xpath> |
1018 | </data> |
1019 | |
1020 | @@ -329,6 +334,7 @@ |
1021 | <field name="act_window_id" ref="action_picking_wms_in_board"/> |
1022 | </record> |
1023 | |
1024 | +<<<<<<< TREE |
1025 | |
1026 | <!-- ********************************************************************** --> |
1027 | <!-- ** Picking transfer ************************************************** --> |
1028 | @@ -410,5 +416,58 @@ |
1029 | sequence="100" |
1030 | action="act_open_stock_picking_transfer_view"/> |
1031 | |
1032 | +======= |
1033 | + <!-- *************************************************************** --> |
1034 | + <!-- ** Add search on product in picking *************************** --> |
1035 | + <!-- *************************************************************** --> |
1036 | + <record id="picking_product_in_tree" model="ir.ui.view"> |
1037 | + <field name="name">stock.picking.in.tree - product </field> |
1038 | + <field name="model">stock.picking</field> |
1039 | + <field name="inherit_id" ref="stock.view_picking_in_tree"/> |
1040 | + <field name="type">tree</field> |
1041 | + <field name="arch" type="xml"> |
1042 | + <xpath expr="//field[@name='state']" position="after"> |
1043 | + <field name="product_id" select="1" invisible="1"/> |
1044 | + </xpath> |
1045 | + </field> |
1046 | + </record> |
1047 | + |
1048 | + <record id="picking_product_internal_tree" model="ir.ui.view"> |
1049 | + <field name="name">stock.picking.tree - product </field> |
1050 | + <field name="model">stock.picking</field> |
1051 | + <field name="inherit_id" ref="stock.vpicktree"/> |
1052 | + <field name="type">tree</field> |
1053 | + <field name="arch" type="xml"> |
1054 | + <xpath expr="//field[@name='state']" position="after"> |
1055 | + <field name="product_id" select="1" invisible="1"/> |
1056 | + </xpath> |
1057 | + </field> |
1058 | + </record> |
1059 | + |
1060 | + <record id="picking_product_out_tree" model="ir.ui.view"> |
1061 | + <field name="name">stock.picking.out.tree - product </field> |
1062 | + <field name="model">stock.picking</field> |
1063 | + <field name="inherit_id" ref="stock.view_picking_out_tree"/> |
1064 | + <field name="type">tree</field> |
1065 | + <field name="arch" type="xml"> |
1066 | + <xpath expr="//field[@name='state']" position="after"> |
1067 | + <field name="product_id" select="1" invisible="1"/> |
1068 | + </xpath> |
1069 | + </field> |
1070 | + </record> |
1071 | + |
1072 | + <record id="picking_product_delivery_tree" model="ir.ui.view"> |
1073 | + <field name="name">stock.picking.delivery.tree - product </field> |
1074 | + <field name="model">stock.picking</field> |
1075 | + <field name="inherit_id" ref="stock.view_picking_delivery_tree"/> |
1076 | + <field name="type">tree</field> |
1077 | + <field name="arch" type="xml"> |
1078 | + <xpath expr="//field[@name='state']" position="after"> |
1079 | + <field name="product_id" select="1" invisible="1"/> |
1080 | + </xpath> |
1081 | + </field> |
1082 | + </record> |
1083 | + |
1084 | +>>>>>>> MERGE-SOURCE |
1085 | </data> |
1086 | </openerp> |
1087 | |
1088 | === modified file 'wms/view/warehouse.xml' |
1089 | --- wms/view/warehouse.xml 2011-01-13 15:45:24 +0000 |
1090 | +++ wms/view/warehouse.xml 2011-01-20 22:41:56 +0000 |
1091 | @@ -47,7 +47,7 @@ |
1092 | <field name="company_id"/> |
1093 | </xpath> |
1094 | <xpath expr="/form/field[@name='lot_output_id']" position="after"> |
1095 | - <field name="crossdock_location_id" domain="[('usage','=', 'internal')]"/> |
1096 | + <field name="crossdock_location_id" domain="[('usage','=', 'crossdock')]"/> |
1097 | </xpath> |
1098 | </data> |
1099 | |
1100 | |
1101 | === added file 'wms_board/view/picking.xml' |
1102 | --- wms_board/view/picking.xml 1970-01-01 00:00:00 +0000 |
1103 | +++ wms_board/view/picking.xml 2011-01-20 22:41:56 +0000 |
1104 | @@ -0,0 +1,65 @@ |
1105 | +<?xml version="1.0" encoding="UTF-8"?> |
1106 | +<openerp> |
1107 | + <data> |
1108 | + ############################################################################## |
1109 | + # |
1110 | + # wms_board module for OpenERP, Dashboard for WMS module |
1111 | + # Copyright (C) 2010 SYLEAM ([http://www.syleam.fr/]) |
1112 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
1113 | + # |
1114 | + # This file is a part of wms_board |
1115 | + # |
1116 | + # wms_board is free software: you can redistribute it and/or modify |
1117 | + # it under the terms of the GNU General Public License as published by |
1118 | + # the Free Software Foundation, either version 3 of the License, or |
1119 | + # (at your option) any later version. |
1120 | + # |
1121 | + # wms_board is distributed in the hope that it will be useful, |
1122 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
1123 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1124 | + # GNU General Public License for more details. |
1125 | + # |
1126 | + # You should have received a copy of the GNU General Public License |
1127 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
1128 | + # |
1129 | + ############################################################################## |
1130 | + |
1131 | + <record id="note_logistics_type" model="board.note.type"> |
1132 | + <field name="name">Logistics</field> |
1133 | + </record> |
1134 | + |
1135 | + <record id="board_logistics_user_form" model="ir.ui.view"> |
1136 | + <field name="name">board.sales.user.form</field> |
1137 | + <field name="model">board.board</field> |
1138 | + <field name="type">form</field> |
1139 | + <field name="arch" type="xml"> |
1140 | + <form string="Logistics board"> |
1141 | + <hpaned position="100"> |
1142 | + <child1> |
1143 | + <action colspan="4" height="200" name="%(wms.action_picking_wms_delivery_board)d" string="Delivery" width="510"/> |
1144 | + </child1> |
1145 | + </hpaned> |
1146 | + </form> |
1147 | + </field> |
1148 | + </record> |
1149 | + |
1150 | + <record id="open_board_logictics_user" model="ir.actions.act_window"> |
1151 | + <field name="name">Logistics Dashboard</field> |
1152 | + <field name="res_model">board.board</field> |
1153 | + <field name="view_type">form</field> |
1154 | + <field name="view_mode">form</field> |
1155 | + <field name="view_id" ref="board_logistics_user_form"/> |
1156 | + </record> |
1157 | + |
1158 | + <menuitem id="menu_logistics_user_board" |
1159 | + name="Logistics" |
1160 | + parent="board.dashboard_menu"/> |
1161 | + |
1162 | + <menuitem action="open_board_logistics_user" |
1163 | + icon="terp-graph" |
1164 | + id="menu_board_logstics_user" |
1165 | + parent="menu_logistics_user_board" |
1166 | + sequence="1"/> |
1167 | + |
1168 | + </data> |
1169 | +</openerp> |
1170 | |
1171 | === modified file 'wms_location/__terp__.py' |
1172 | --- wms_location/__terp__.py 2010-06-22 07:04:20 +0000 |
1173 | +++ wms_location/__terp__.py 2011-01-20 22:41:56 +0000 |
1174 | @@ -34,18 +34,21 @@ |
1175 | 'product', |
1176 | 'stock', |
1177 | ], |
1178 | - 'init_xml': [ |
1179 | - 'data/location.xml', |
1180 | - ], |
1181 | + 'init_xml': [], |
1182 | 'update_xml': [ |
1183 | #'security/groups.xml', |
1184 | - #'security/ir.model.access.csv', |
1185 | + 'security/ir.model.access.csv', |
1186 | #'view/menu.xml', |
1187 | 'view/location.xml', |
1188 | + 'view/product.xml', |
1189 | #'wizard/wizard.xml', |
1190 | #'report/report.xml', |
1191 | - ], |
1192 | - 'demo_xml': [], |
1193 | + 'data/location.xml', |
1194 | + ], |
1195 | + 'demo_xml': [ |
1196 | + 'demo/location.xml', |
1197 | + 'demo/partner.xml', |
1198 | + ], |
1199 | 'installable': True, |
1200 | 'active': False, |
1201 | 'license': 'GPL-3', |
1202 | |
1203 | === added file 'wms_location/data/location.xml' |
1204 | --- wms_location/data/location.xml 1970-01-01 00:00:00 +0000 |
1205 | +++ wms_location/data/location.xml 2011-01-20 22:41:56 +0000 |
1206 | @@ -0,0 +1,77 @@ |
1207 | +<?xml version="1.0" encoding="UTF-8"?> |
1208 | +<openerp> |
1209 | + <data> |
1210 | + ############################################################################## |
1211 | + # |
1212 | + # wms_location module for OpenERP, Location management |
1213 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
1214 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
1215 | + # |
1216 | + # This file is a part of wms_location |
1217 | + # |
1218 | + # wms_location is free software: you can redistribute it and/or modify |
1219 | + # it under the terms of the GNU General Public License as published by |
1220 | + # the Free Software Foundation, either version 3 of the License, or |
1221 | + # (at your option) any later version. |
1222 | + # |
1223 | + # wms_location is distributed in the hope that it will be useful, |
1224 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
1225 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1226 | + # GNU General Public License for more details. |
1227 | + # |
1228 | + # You should have received a copy of the GNU General Public License |
1229 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
1230 | + # |
1231 | + ############################################################################## |
1232 | + |
1233 | + <record model="stock.location" id="stock.stock_location_output"> |
1234 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1235 | + </record> |
1236 | + <record model="stock.location" id="stock.stock_location_stock"> |
1237 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1238 | + </record> |
1239 | + <record model="stock.location" id="stock.stock_location_company"> |
1240 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1241 | + </record> |
1242 | + <record model="stock.location" id="stock.stock_location_locations"> |
1243 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1244 | + </record> |
1245 | + <record model="stock.location" id="stock.stock_location_locations_partner"> |
1246 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1247 | + </record> |
1248 | + <record model="stock.location" id="stock.location_inventory"> |
1249 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1250 | + </record> |
1251 | + <record model="stock.location" id="stock.location_procurement"> |
1252 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1253 | + </record> |
1254 | + <record model="stock.location" id="stock.location_production"> |
1255 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1256 | + </record> |
1257 | + <record model="stock.location" id="stock.stock_location_locations_virtual"> |
1258 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1259 | + </record> |
1260 | + |
1261 | + |
1262 | + <record model="stock.location" id="stock.stock_location_13"> |
1263 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1264 | + </record> |
1265 | + |
1266 | + <record model="stock.location" id="stock.stock_location_14"> |
1267 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1268 | + </record> |
1269 | + |
1270 | + <record model="stock.location" id="stock.stock_location_15"> |
1271 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1272 | + </record> |
1273 | + |
1274 | + <record model="stock.location" id="stock.stock_location_workshop"> |
1275 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1276 | + </record> |
1277 | + |
1278 | + <record model="stock.location" id="stock.stock_location_components"> |
1279 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1280 | + </record> |
1281 | + |
1282 | + </data> |
1283 | +</openerp> |
1284 | |
1285 | === renamed file 'wms_location/data/location.xml' => 'wms_location/demo/location.xml' |
1286 | --- wms_location/data/location.xml 2010-12-06 16:07:37 +0000 |
1287 | +++ wms_location/demo/location.xml 2011-01-20 22:41:56 +0000 |
1288 | @@ -1,6 +1,6 @@ |
1289 | <?xml version="1.0" encoding="UTF-8"?> |
1290 | <openerp> |
1291 | - <data noupdate="1"> |
1292 | + <data> |
1293 | ############################################################################## |
1294 | # |
1295 | # wms_location module for OpenERP, Location management |
1296 | @@ -24,34 +24,118 @@ |
1297 | # |
1298 | ############################################################################## |
1299 | |
1300 | - <record model="stock.location" id="stock.stock_location_output"> |
1301 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1302 | - </record> |
1303 | - <record model="stock.location" id="stock.stock_location_stock"> |
1304 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1305 | - </record> |
1306 | - <record model="stock.location" id="stock.stock_location_company"> |
1307 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1308 | - </record> |
1309 | - <record model="stock.location" id="stock.stock_location_locations"> |
1310 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1311 | - </record> |
1312 | - <record model="stock.location" id="stock.stock_location_locations_partner"> |
1313 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1314 | - </record> |
1315 | - <record model="stock.location" id="stock.location_inventory"> |
1316 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1317 | - </record> |
1318 | - <record model="stock.location" id="stock.location_procurement"> |
1319 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1320 | - </record> |
1321 | - <record model="stock.location" id="stock.location_production"> |
1322 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1323 | - </record> |
1324 | - <record model="stock.location" id="stock.stock_location_locations_virtual"> |
1325 | - <field name="warehouse_id" ref="stock.warehouse0"/> |
1326 | - </record> |
1327 | - |
1328 | + <!-- ************************************************************** --> |
1329 | + <!-- ** Add crossdock location ************************************ --> |
1330 | + <!-- ************************************************************** --> |
1331 | + <record id="location_crossdock_view" model="stock.location"> |
1332 | + <field name="name">Crossdock</field> |
1333 | + <field name="code">CRD</field> |
1334 | + <field name="location_id" ref="stock.stock_location_company"/> |
1335 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1336 | + <field name="usage">view</field> |
1337 | + </record> |
1338 | + |
1339 | + <record id="location_crossdock_0" model="stock.location"> |
1340 | + <field name="name">Crossdock Default</field> |
1341 | + <field name="code">K00</field> |
1342 | + <field name="location_id" ref="location_crossdock_view"/> |
1343 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1344 | + <field name="usage">crossdock</field> |
1345 | + </record> |
1346 | + |
1347 | + <record id="location_crossdock_1" model="stock.location"> |
1348 | + <field name="name">Crossdock 1</field> |
1349 | + <field name="code">K01</field> |
1350 | + <field name="location_id" ref="location_crossdock_view"/> |
1351 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1352 | + <field name="usage">crossdock</field> |
1353 | + </record> |
1354 | + |
1355 | + <record id="location_crossdock_2" model="stock.location"> |
1356 | + <field name="name">Crossdock 2</field> |
1357 | + <field name="code">K02</field> |
1358 | + <field name="location_id" ref="location_crossdock_view"/> |
1359 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1360 | + <field name="usage">crossdock</field> |
1361 | + </record> |
1362 | + |
1363 | + <record id="location_crossdock_3" model="stock.location"> |
1364 | + <field name="name">Crossdock 3</field> |
1365 | + <field name="code">K03</field> |
1366 | + <field name="location_id" ref="location_crossdock_view"/> |
1367 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1368 | + <field name="usage">crossdock</field> |
1369 | + </record> |
1370 | + |
1371 | + <record id="stock.warehouse0" model="stock.warehouse"> |
1372 | + <field name="crossdock_location_id" ref="location_crossdock_0"/> |
1373 | + <field name="code">TINY</field> |
1374 | + </record> |
1375 | + |
1376 | + <!-- ************************************************************** --> |
1377 | + <!-- ** Add new customer location ********************************* --> |
1378 | + <!-- ************************************************************** --> |
1379 | + <record id="location_customer_view" model="stock.location"> |
1380 | + <field name="name">Clients</field> |
1381 | + <field name="code">CLIENTS</field> |
1382 | + <field name="location_id" ref="stock.stock_location_company"/> |
1383 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1384 | + <field name="usage">view</field> |
1385 | + </record> |
1386 | + |
1387 | + <record id="location_customer_agrolait" model="stock.location"> |
1388 | + <field name="name">Agrolait</field> |
1389 | + <field name="code">AGROLAIT</field> |
1390 | + <field name="location_id" ref="location_customer_view"/> |
1391 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1392 | + <field name="usage">customer</field> |
1393 | + </record> |
1394 | + |
1395 | + <!-- ************************************************************** --> |
1396 | + <!-- ************************************************************** --> |
1397 | + <!-- ************************************************************** --> |
1398 | + <record id="location_inventory_casse" model="stock.location"> |
1399 | + <field name="name">Damage</field> |
1400 | + <field name="code">CASSE</field> |
1401 | + <field name="location_id" ref="stock.stock_location_company"/> |
1402 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1403 | + <field name="usage">inventory</field> |
1404 | + </record> |
1405 | + |
1406 | + <!-- ************************************************************** --> |
1407 | + <!-- ************************************************************** --> |
1408 | + <!-- ************************************************************** --> |
1409 | + <record id="location_stock_a01" model="stock.location"> |
1410 | + <field name="name">A01</field> |
1411 | + <field name="code">A01</field> |
1412 | + <field name="location_id" ref="stock.stock_location_stock"/> |
1413 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1414 | + <field name="usage">internal</field> |
1415 | + </record> |
1416 | + |
1417 | + <record id="location_stock_a02" model="stock.location"> |
1418 | + <field name="name">A02</field> |
1419 | + <field name="code">A02</field> |
1420 | + <field name="location_id" ref="stock.stock_location_stock"/> |
1421 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1422 | + <field name="usage">internal</field> |
1423 | + </record> |
1424 | + |
1425 | + <record id="location_stock_b01" model="stock.location"> |
1426 | + <field name="name">B01</field> |
1427 | + <field name="code">B01</field> |
1428 | + <field name="location_id" ref="stock.stock_location_stock"/> |
1429 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1430 | + <field name="usage">internal</field> |
1431 | + </record> |
1432 | + |
1433 | + <record id="location_stock_b02" model="stock.location"> |
1434 | + <field name="name">B02</field> |
1435 | + <field name="code">B02</field> |
1436 | + <field name="location_id" ref="stock.stock_location_stock"/> |
1437 | + <field name="warehouse_id" ref="stock.warehouse0"/> |
1438 | + <field name="usage">internal</field> |
1439 | + </record> |
1440 | |
1441 | </data> |
1442 | </openerp> |
1443 | |
1444 | === added file 'wms_location/demo/partner.xml' |
1445 | --- wms_location/demo/partner.xml 1970-01-01 00:00:00 +0000 |
1446 | +++ wms_location/demo/partner.xml 2011-01-20 22:41:56 +0000 |
1447 | @@ -0,0 +1,32 @@ |
1448 | +<?xml version="1.0" encoding="UTF-8"?> |
1449 | +<openerp> |
1450 | + <data> |
1451 | + ############################################################################## |
1452 | + # |
1453 | + # wms_location module for OpenERP, Location management |
1454 | + # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) |
1455 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
1456 | + # |
1457 | + # This file is a part of wms_location |
1458 | + # |
1459 | + # wms_location is free software: you can redistribute it and/or modify |
1460 | + # it under the terms of the GNU General Public License as published by |
1461 | + # the Free Software Foundation, either version 3 of the License, or |
1462 | + # (at your option) any later version. |
1463 | + # |
1464 | + # wms_location is distributed in the hope that it will be useful, |
1465 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
1466 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1467 | + # GNU General Public License for more details. |
1468 | + # |
1469 | + # You should have received a copy of the GNU General Public License |
1470 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
1471 | + # |
1472 | + ############################################################################## |
1473 | + |
1474 | + <record id="base.res_partner_agrolait" model="res.partner"> |
1475 | + <field name="property_stock_customer" ref="location_customer_agrolait"/> |
1476 | + </record> |
1477 | + |
1478 | + </data> |
1479 | +</openerp> |
1480 | |
1481 | === modified file 'wms_location/i18n/fr_FR.po' |
1482 | --- wms_location/i18n/fr_FR.po 2010-06-18 20:21:43 +0000 |
1483 | +++ wms_location/i18n/fr_FR.po 2011-01-20 22:41:56 +0000 |
1484 | @@ -5,8 +5,8 @@ |
1485 | msgstr "" |
1486 | "Project-Id-Version: PACKAGE VERSION\n" |
1487 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1488 | -"POT-Creation-Date: 2010-06-18 20:18:23+0000\n" |
1489 | -"PO-Revision-Date: 2010-06-02 09:43+0100\n" |
1490 | +"POT-Creation-Date: 2010-12-09 09:46:26+0000\n" |
1491 | +"PO-Revision-Date: 2010-12-09 11:12+0100\n" |
1492 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" |
1493 | "Language-Team: LANGUAGE <LL@li.org>\n" |
1494 | "MIME-Version: 1.0\n" |
1495 | @@ -15,9 +15,24 @@ |
1496 | "X-Generator: Translate Toolkit 1.5.3\n" |
1497 | |
1498 | #. module: wms_location |
1499 | -#: model:ir.module.module,description:wms_location.module_meta_information |
1500 | -msgid "Location management" |
1501 | -msgstr "Gestion des emplacements" |
1502 | +#: model:ir.module.module,shortdesc:wms_location.module_meta_information |
1503 | +msgid "Wms Location" |
1504 | +msgstr "WMS Gestion des emplacements" |
1505 | + |
1506 | +#. module: wms_location |
1507 | +#: constraint:ir.model:0 |
1508 | +msgid "The Object name must start with x_ and not contain any special character !" |
1509 | +msgstr "" |
1510 | + |
1511 | +#. module: wms_location |
1512 | +#: selection:product.location,auto:0 |
1513 | +msgid "Automatic No Step Added" |
1514 | +msgstr "Mouvement automatique, sans pas ajouter" |
1515 | + |
1516 | +#. module: wms_location |
1517 | +#: field:stock.location,transcend_height:0 |
1518 | +msgid "Transcend Height" |
1519 | +msgstr "DĂ©passer la hauteur" |
1520 | |
1521 | #. module: wms_location |
1522 | #: view:stock.location:0 |
1523 | @@ -40,11 +55,28 @@ |
1524 | msgstr "EntrepĂ´t" |
1525 | |
1526 | #. module: wms_location |
1527 | +#: help:product.location,auto:0 |
1528 | +msgid "This is used to define paths the product has to follow within the location tree.\n" |
1529 | +"The 'Automatic Move' value will create a stock move after the current one that will be validated automatically. With 'Manual Operation', the stock move has to be validated by a worker. With 'Automatic No Step Added', the location is replaced in the original move." |
1530 | +msgstr "" |
1531 | +"Ceci est utilisé pour définir le chemin que le produit doit suivre dans " |
1532 | +"l'arborescence des emplacements.\n" |
1533 | +"le 'Mouvement automatique' créer un mouvement de stock de la position " |
1534 | +"courante qui sera valider automatiquement. Avec 'Opération manuelle' sera " |
1535 | +"valider par le logisticien. Avec 'Mouvement automatique, sans pas ajouter' " |
1536 | +"l'emplacement sera remplacer dans le mouvement original." |
1537 | + |
1538 | +#. module: wms_location |
1539 | #: view:stock.location:0 |
1540 | msgid "General" |
1541 | msgstr "Générale" |
1542 | |
1543 | #. module: wms_location |
1544 | +#: field:product.product,location_type:0 |
1545 | +msgid "Location type" |
1546 | +msgstr "Type d'emplacement" |
1547 | + |
1548 | +#. module: wms_location |
1549 | #: help:stock.location,code:0 |
1550 | msgid "Enter the complete code for this location, usefull for search" |
1551 | msgstr "Entrer le code pour cette emplacement, utile pour la recherche" |
1552 | @@ -55,6 +87,11 @@ |
1553 | msgstr "Entrer la largeur en cm" |
1554 | |
1555 | #. module: wms_location |
1556 | +#: field:product.location,delay:0 |
1557 | +msgid "Delay (days)" |
1558 | +msgstr "DĂ©lai (jour)" |
1559 | + |
1560 | +#. module: wms_location |
1561 | #: view:stock.location:0 |
1562 | msgid "Localisation" |
1563 | msgstr "Emplacement" |
1564 | @@ -70,14 +107,14 @@ |
1565 | msgstr "Entrer la hauteur en cm" |
1566 | |
1567 | #. module: wms_location |
1568 | -#: model:ir.module.module,shortdesc:wms_location.module_meta_information |
1569 | -msgid "Wms Location" |
1570 | -msgstr "WMS Gestion des emplacements" |
1571 | +#: help:product.location,delay:0 |
1572 | +msgid "Number of days to do this transition" |
1573 | +msgstr "Nombre de jour pour effectuer cette transition" |
1574 | |
1575 | #. module: wms_location |
1576 | -#: field:stock.location,transcend_height:0 |
1577 | -msgid "Transcend Height" |
1578 | -msgstr "DĂ©passer la hauteur" |
1579 | +#: model:ir.module.module,description:wms_location.module_meta_information |
1580 | +msgid "Location management" |
1581 | +msgstr "Gestion des emplacements" |
1582 | |
1583 | #. module: wms_location |
1584 | #: constraint:ir.ui.view:0 |
1585 | @@ -85,6 +122,18 @@ |
1586 | msgstr "XML non valide pour cette vue!" |
1587 | |
1588 | #. module: wms_location |
1589 | +#: selection:product.product,location_type:0 |
1590 | +msgid "Compute" |
1591 | +msgstr "Calculé" |
1592 | + |
1593 | +#. module: wms_location |
1594 | +#: help:product.product,location_ids:0 |
1595 | +msgid "These rules set the right path of the product in the whole location tree." |
1596 | +msgstr "" |
1597 | +"Cette règle définit la localisation des produit dans l'arborescence des " |
1598 | +"emplacements." |
1599 | + |
1600 | +#. module: wms_location |
1601 | #: help:stock.location,transcend_width:0 |
1602 | msgid "Autorize the width to be transcend" |
1603 | msgstr "Autoriser le dépassement de largeur" |
1604 | @@ -95,11 +144,36 @@ |
1605 | msgstr "Notes" |
1606 | |
1607 | #. module: wms_location |
1608 | +#: selection:product.location,auto:0 |
1609 | +msgid "Manual Operation" |
1610 | +msgstr "Opération manuelle" |
1611 | + |
1612 | +#. module: wms_location |
1613 | #: help:stock.location,depth:0 |
1614 | msgid "Enter the depth in cm" |
1615 | msgstr "Entrer la profondeur en cm" |
1616 | |
1617 | #. module: wms_location |
1618 | +#: field:product.product,location_ids:0 |
1619 | +msgid "Location Paths" |
1620 | +msgstr "Chemin des emplacements" |
1621 | + |
1622 | +#. module: wms_location |
1623 | +#: field:product.location,product_id:0 |
1624 | +msgid "Products" |
1625 | +msgstr "Produits" |
1626 | + |
1627 | +#. module: wms_location |
1628 | +#: model:ir.model,name:wms_location.model_product_location |
1629 | +msgid "Product per location" |
1630 | +msgstr "Produit par emplacement" |
1631 | + |
1632 | +#. module: wms_location |
1633 | +#: selection:product.product,location_type:0 |
1634 | +msgid "Fixed" |
1635 | +msgstr "DĂ©fini" |
1636 | + |
1637 | +#. module: wms_location |
1638 | #: view:stock.location:0 |
1639 | msgid "Dimension" |
1640 | msgstr "Dimension" |
1641 | @@ -120,6 +194,28 @@ |
1642 | msgstr "Code" |
1643 | |
1644 | #. module: wms_location |
1645 | +#: field:product.location,location_from_id:0 |
1646 | +msgid "Source Location" |
1647 | +msgstr "Emplacement source" |
1648 | + |
1649 | +#. module: wms_location |
1650 | +#: field:product.location,location_dest_id:0 |
1651 | +msgid "Destination Location" |
1652 | +msgstr "Emplacement de destination" |
1653 | + |
1654 | +#. module: wms_location |
1655 | +#: field:product.location,auto:0 |
1656 | +#: selection:product.location,auto:0 |
1657 | +msgid "Automatic Move" |
1658 | +msgstr "Mouvement automatique" |
1659 | + |
1660 | +#. module: wms_location |
1661 | +#: view:product.location:0 |
1662 | +#: view:product.product:0 |
1663 | +msgid "Locations" |
1664 | +msgstr "Emplacements" |
1665 | + |
1666 | +#. module: wms_location |
1667 | #: field:stock.location,height:0 |
1668 | msgid "Height" |
1669 | msgstr "Hauteur" |
1670 | @@ -135,6 +231,11 @@ |
1671 | msgstr "DĂ©passer par largeur" |
1672 | |
1673 | #. module: wms_location |
1674 | +#: field:product.location,name:0 |
1675 | +msgid "Operation" |
1676 | +msgstr "Opération" |
1677 | + |
1678 | +#. module: wms_location |
1679 | #: help:stock.location,transcend_depth:0 |
1680 | msgid "Autorize the depth to be transcend" |
1681 | msgstr "Autoriser le dépassement de profondeur" |
1682 | |
1683 | === modified file 'wms_location/i18n/wms_location.pot' |
1684 | --- wms_location/i18n/wms_location.pot 2010-06-18 20:21:43 +0000 |
1685 | +++ wms_location/i18n/wms_location.pot 2011-01-20 22:41:56 +0000 |
1686 | @@ -4,10 +4,10 @@ |
1687 | # |
1688 | msgid "" |
1689 | msgstr "" |
1690 | -"Project-Id-Version: OpenERP Server 5.0.10\n" |
1691 | +"Project-Id-Version: OpenERP Server 5.0.12\n" |
1692 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1693 | -"POT-Creation-Date: 2010-06-18 20:18:23+0000\n" |
1694 | -"PO-Revision-Date: 2010-06-18 20:18:23+0000\n" |
1695 | +"POT-Creation-Date: 2010-12-09 09:46:26+0000\n" |
1696 | +"PO-Revision-Date: 2010-12-09 09:46:26+0000\n" |
1697 | "Last-Translator: <>\n" |
1698 | "Language-Team: \n" |
1699 | "MIME-Version: 1.0\n" |
1700 | @@ -16,8 +16,23 @@ |
1701 | "Plural-Forms: \n" |
1702 | |
1703 | #. module: wms_location |
1704 | -#: model:ir.module.module,description:wms_location.module_meta_information |
1705 | -msgid "Location management" |
1706 | +#: model:ir.module.module,shortdesc:wms_location.module_meta_information |
1707 | +msgid "Wms Location" |
1708 | +msgstr "" |
1709 | + |
1710 | +#. module: wms_location |
1711 | +#: constraint:ir.model:0 |
1712 | +msgid "The Object name must start with x_ and not contain any special character !" |
1713 | +msgstr "" |
1714 | + |
1715 | +#. module: wms_location |
1716 | +#: selection:product.location,auto:0 |
1717 | +msgid "Automatic No Step Added" |
1718 | +msgstr "" |
1719 | + |
1720 | +#. module: wms_location |
1721 | +#: field:stock.location,transcend_height:0 |
1722 | +msgid "Transcend Height" |
1723 | msgstr "" |
1724 | |
1725 | #. module: wms_location |
1726 | @@ -41,11 +56,22 @@ |
1727 | msgstr "" |
1728 | |
1729 | #. module: wms_location |
1730 | +#: help:product.location,auto:0 |
1731 | +msgid "This is used to define paths the product has to follow within the location tree.\n" |
1732 | +"The 'Automatic Move' value will create a stock move after the current one that will be validated automatically. With 'Manual Operation', the stock move has to be validated by a worker. With 'Automatic No Step Added', the location is replaced in the original move." |
1733 | +msgstr "" |
1734 | + |
1735 | +#. module: wms_location |
1736 | #: view:stock.location:0 |
1737 | msgid "General" |
1738 | msgstr "" |
1739 | |
1740 | #. module: wms_location |
1741 | +#: field:product.product,location_type:0 |
1742 | +msgid "Location type" |
1743 | +msgstr "" |
1744 | + |
1745 | +#. module: wms_location |
1746 | #: help:stock.location,code:0 |
1747 | msgid "Enter the complete code for this location, usefull for search" |
1748 | msgstr "" |
1749 | @@ -56,6 +82,11 @@ |
1750 | msgstr "" |
1751 | |
1752 | #. module: wms_location |
1753 | +#: field:product.location,delay:0 |
1754 | +msgid "Delay (days)" |
1755 | +msgstr "" |
1756 | + |
1757 | +#. module: wms_location |
1758 | #: view:stock.location:0 |
1759 | msgid "Localisation" |
1760 | msgstr "" |
1761 | @@ -71,13 +102,13 @@ |
1762 | msgstr "" |
1763 | |
1764 | #. module: wms_location |
1765 | -#: model:ir.module.module,shortdesc:wms_location.module_meta_information |
1766 | -msgid "Wms Location" |
1767 | +#: help:product.location,delay:0 |
1768 | +msgid "Number of days to do this transition" |
1769 | msgstr "" |
1770 | |
1771 | #. module: wms_location |
1772 | -#: field:stock.location,transcend_height:0 |
1773 | -msgid "Transcend Height" |
1774 | +#: model:ir.module.module,description:wms_location.module_meta_information |
1775 | +msgid "Location management" |
1776 | msgstr "" |
1777 | |
1778 | #. module: wms_location |
1779 | @@ -86,6 +117,16 @@ |
1780 | msgstr "" |
1781 | |
1782 | #. module: wms_location |
1783 | +#: selection:product.product,location_type:0 |
1784 | +msgid "Compute" |
1785 | +msgstr "" |
1786 | + |
1787 | +#. module: wms_location |
1788 | +#: help:product.product,location_ids:0 |
1789 | +msgid "These rules set the right path of the product in the whole location tree." |
1790 | +msgstr "" |
1791 | + |
1792 | +#. module: wms_location |
1793 | #: help:stock.location,transcend_width:0 |
1794 | msgid "Autorize the width to be transcend" |
1795 | msgstr "" |
1796 | @@ -96,11 +137,36 @@ |
1797 | msgstr "" |
1798 | |
1799 | #. module: wms_location |
1800 | +#: selection:product.location,auto:0 |
1801 | +msgid "Manual Operation" |
1802 | +msgstr "" |
1803 | + |
1804 | +#. module: wms_location |
1805 | #: help:stock.location,depth:0 |
1806 | msgid "Enter the depth in cm" |
1807 | msgstr "" |
1808 | |
1809 | #. module: wms_location |
1810 | +#: field:product.product,location_ids:0 |
1811 | +msgid "Location Paths" |
1812 | +msgstr "" |
1813 | + |
1814 | +#. module: wms_location |
1815 | +#: field:product.location,product_id:0 |
1816 | +msgid "Products" |
1817 | +msgstr "" |
1818 | + |
1819 | +#. module: wms_location |
1820 | +#: model:ir.model,name:wms_location.model_product_location |
1821 | +msgid "Product per location" |
1822 | +msgstr "" |
1823 | + |
1824 | +#. module: wms_location |
1825 | +#: selection:product.product,location_type:0 |
1826 | +msgid "Fixed" |
1827 | +msgstr "" |
1828 | + |
1829 | +#. module: wms_location |
1830 | #: view:stock.location:0 |
1831 | msgid "Dimension" |
1832 | msgstr "" |
1833 | @@ -121,6 +187,28 @@ |
1834 | msgstr "" |
1835 | |
1836 | #. module: wms_location |
1837 | +#: field:product.location,location_from_id:0 |
1838 | +msgid "Source Location" |
1839 | +msgstr "" |
1840 | + |
1841 | +#. module: wms_location |
1842 | +#: field:product.location,location_dest_id:0 |
1843 | +msgid "Destination Location" |
1844 | +msgstr "" |
1845 | + |
1846 | +#. module: wms_location |
1847 | +#: field:product.location,auto:0 |
1848 | +#: selection:product.location,auto:0 |
1849 | +msgid "Automatic Move" |
1850 | +msgstr "" |
1851 | + |
1852 | +#. module: wms_location |
1853 | +#: view:product.location:0 |
1854 | +#: view:product.product:0 |
1855 | +msgid "Locations" |
1856 | +msgstr "" |
1857 | + |
1858 | +#. module: wms_location |
1859 | #: field:stock.location,height:0 |
1860 | msgid "Height" |
1861 | msgstr "" |
1862 | @@ -136,6 +224,11 @@ |
1863 | msgstr "" |
1864 | |
1865 | #. module: wms_location |
1866 | +#: field:product.location,name:0 |
1867 | +msgid "Operation" |
1868 | +msgstr "" |
1869 | + |
1870 | +#. module: wms_location |
1871 | #: help:stock.location,transcend_depth:0 |
1872 | msgid "Autorize the depth to be transcend" |
1873 | msgstr "" |
1874 | |
1875 | === modified file 'wms_location/object/__init__.py' |
1876 | --- wms_location/object/__init__.py 2010-06-06 15:32:35 +0000 |
1877 | +++ wms_location/object/__init__.py 2011-01-20 22:41:56 +0000 |
1878 | @@ -23,5 +23,6 @@ |
1879 | ############################################################################## |
1880 | |
1881 | import location |
1882 | +import product |
1883 | |
1884 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1885 | |
1886 | === modified file 'wms_location/object/location.py' |
1887 | --- wms_location/object/location.py 2010-12-06 16:11:29 +0000 |
1888 | +++ wms_location/object/location.py 2011-01-20 22:41:56 +0000 |
1889 | @@ -62,9 +62,24 @@ |
1890 | 'transcend_depth': lambda *a: False, |
1891 | } |
1892 | |
1893 | + def chained_location_get(self, cr, uid, location, partner=None, product=None, context=None): |
1894 | + """ |
1895 | + Check if there is a chained location for this product at this location, and include with crossdock process |
1896 | + This function is similar to stock_location (conflict if stock_location is installed) |
1897 | + """ |
1898 | + if context is None: |
1899 | + context = {} |
1900 | + |
1901 | + if product and product.location_type in ('fixed','crossdock'): |
1902 | + for path in product.location_ids: |
1903 | + if path.location_from_id.id == location.id: |
1904 | + return path.location_dest_id, path.auto, path.delay |
1905 | + |
1906 | + return super(StockLocation, self).chained_location_get(cr, uid, location, partner, product, context=context) |
1907 | + |
1908 | def _stock_get(self, cr, uid, location_id, product_id, context=None): |
1909 | """ |
1910 | - We must retrieve the stop at this location and for this production_lot or tracking ID |
1911 | + We must retrieve the stock at this location and for this production_lot or tracking ID |
1912 | """ |
1913 | if context is None: |
1914 | context = {} |
1915 | |
1916 | === added file 'wms_location/object/product.py' |
1917 | --- wms_location/object/product.py 1970-01-01 00:00:00 +0000 |
1918 | +++ wms_location/object/product.py 2011-01-20 22:41:56 +0000 |
1919 | @@ -0,0 +1,86 @@ |
1920 | +# -*- coding: utf-8 -*- |
1921 | +############################################################################## |
1922 | +# |
1923 | +# wms_location module for OpenERP, Location management |
1924 | +# Copyright (C) 2010 SYLEAM (<http://www.syleam.fr/>) |
1925 | +# Christophe CHAUVET <christophe.chauvet@syleam.fr> |
1926 | +# |
1927 | +# This file is a part of wms_location |
1928 | +# |
1929 | +# wms_location is free software: you can redistribute it and/or modify |
1930 | +# it under the terms of the GNU General Public License as published by |
1931 | +# the Free Software Foundation, either version 3 of the License, or |
1932 | +# (at your option) any later version. |
1933 | +# |
1934 | +# wms_location is distributed in the hope that it will be useful, |
1935 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1936 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1937 | +# GNU General Public License for more details. |
1938 | +# |
1939 | +# You should have received a copy of the GNU General Public License |
1940 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
1941 | +# |
1942 | +############################################################################## |
1943 | + |
1944 | +from osv import osv |
1945 | +from osv import fields |
1946 | + |
1947 | + |
1948 | +_auto_move = [ |
1949 | + ('auto', 'Automatic Move'), |
1950 | + ('manual', 'Manual Operation'), |
1951 | + ('transparent', 'Automatic No Step Added') |
1952 | +] |
1953 | + |
1954 | + |
1955 | +class product_location(osv.osv): |
1956 | + _name = 'product.location' |
1957 | + _description = 'Product per location' |
1958 | + |
1959 | + _columns = { |
1960 | + 'name': fields.char('Operation', size=64, required=True), |
1961 | + 'product_id': fields.many2one('product.product', 'Products', ondelete='cascade'), |
1962 | + 'location_from_id': fields.many2one('stock.location', 'Source Location', ondelete='cascade', required=True), |
1963 | + 'location_dest_id': fields.many2one('stock.location', 'Destination Location', ondelete='cascade', required=True), |
1964 | + 'delay': fields.integer('Delay (days)', help="Number of days to do this transition"), |
1965 | + 'auto': fields.selection(_auto_move, 'Automatic Move', required=True, |
1966 | + help="This is used to define paths the product has to follow within the location tree.\n" \ |
1967 | + "The 'Automatic Move' value will create a stock move after the current one that will be "\ |
1968 | + "validated automatically. With 'Manual Operation', the stock move has to be validated "\ |
1969 | + "by a worker. With 'Automatic No Step Added', the location is replaced in the original move." |
1970 | + ), |
1971 | + } |
1972 | + |
1973 | + _defaults = { |
1974 | + 'auto': lambda *arg: 'auto', |
1975 | + 'delay': lambda *arg: 1 |
1976 | + } |
1977 | + |
1978 | +product_location() |
1979 | + |
1980 | +_loc_type = [ |
1981 | + ('fixed', 'Fixed'), |
1982 | + ('compute', 'Compute'), |
1983 | + ('crossdock', 'Cross Docking'), |
1984 | +] |
1985 | + |
1986 | + |
1987 | +class product_product(osv.osv): |
1988 | + _inherit = 'product.product' |
1989 | + |
1990 | + _columns = { |
1991 | + 'location_type': fields.selection(_loc_type, |
1992 | + 'Location type'), |
1993 | + 'location_ids': fields.one2many('product.location', 'product_id', |
1994 | + 'Location Paths', |
1995 | + help="These rules set the right path of the product in the "\ |
1996 | + "whole location tree.") |
1997 | + } |
1998 | + |
1999 | + _defaults = { |
2000 | + 'location_type': lambda *a: 'compute', |
2001 | + } |
2002 | + |
2003 | +product_product() |
2004 | + |
2005 | +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
2006 | |
2007 | === modified file 'wms_location/security/ir.model.access.csv' |
2008 | --- wms_location/security/ir.model.access.csv 2010-06-06 15:32:35 +0000 |
2009 | +++ wms_location/security/ir.model.access.csv 2011-01-20 22:41:56 +0000 |
2010 | @@ -1,1 +1,2 @@ |
2011 | "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" |
2012 | +"access_product_location_user","product_location User","model_product_location","",1,0,0,0 |
2013 | |
2014 | === added file 'wms_location/view/product.xml' |
2015 | --- wms_location/view/product.xml 1970-01-01 00:00:00 +0000 |
2016 | +++ wms_location/view/product.xml 2011-01-20 22:41:56 +0000 |
2017 | @@ -0,0 +1,106 @@ |
2018 | +<?xml version="1.0" encoding="UTF-8"?> |
2019 | +<openerp> |
2020 | + <data> |
2021 | + ############################################################################## |
2022 | + # |
2023 | + # wms_location module for OpenERP, Location management |
2024 | + # Copyright (C) 2010 SYLEAM ([http://www.syleam.fr/]) |
2025 | + # Christophe CHAUVET [christophe.chauvet@syleam.fr] |
2026 | + # |
2027 | + # This file is a part of wms_location |
2028 | + # |
2029 | + # wms_location is free software: you can redistribute it and/or modify |
2030 | + # it under the terms of the GNU General Public License as published by |
2031 | + # the Free Software Foundation, either version 3 of the License, or |
2032 | + # (at your option) any later version. |
2033 | + # |
2034 | + # wms_location is distributed in the hope that it will be useful, |
2035 | + # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2036 | + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2037 | + # GNU General Public License for more details. |
2038 | + # |
2039 | + # You should have received a copy of the GNU General Public License |
2040 | + # along with this program. If not, see [http://www.gnu.org/licenses/]. |
2041 | + # |
2042 | + ############################################################################## |
2043 | + |
2044 | + <!-- ************************************************************** --> |
2045 | + <!-- ** Product Location ****************************************** --> |
2046 | + <!-- ************************************************************** --> |
2047 | + |
2048 | + <record id="view_product_location_tree" model="ir.ui.view"> |
2049 | + <field name="name">product.location.tree</field> |
2050 | + <field name="model">product.location</field> |
2051 | + <field name="type">tree</field> |
2052 | + <field name="priority" eval="8"/> |
2053 | + <field name="arch" type="xml"> |
2054 | + <tree string="Locations"> |
2055 | + <field name="name"/> |
2056 | + <field name="location_from_id"/> |
2057 | + <field name="location_dest_id"/> |
2058 | + <field name="delay"/> |
2059 | + <field name="auto"/> |
2060 | + </tree> |
2061 | + </field> |
2062 | + </record> |
2063 | + |
2064 | + <record id="view_product_location_form" model="ir.ui.view"> |
2065 | + <field name="name">product.location.form</field> |
2066 | + <field name="model">product.location</field> |
2067 | + <field name="type">form</field> |
2068 | + <field name="priority" eval="8"/> |
2069 | + <field name="arch" type="xml"> |
2070 | + <form string="Locations"> |
2071 | + <field name="name" select="1"/> |
2072 | + <field name="location_from_id" select="1"/> |
2073 | + <field name="location_dest_id" select="1"/> |
2074 | + <field name="delay" select="2"/> |
2075 | + <field name="auto" select="2"/> |
2076 | + </form> |
2077 | + </field> |
2078 | + </record> |
2079 | + |
2080 | + <!-- ************************************************************** --> |
2081 | + <!-- ** Product Product ******************************************* --> |
2082 | + <!-- ************************************************************** --> |
2083 | + |
2084 | + <record id="view_product_normal_location_form" model="ir.ui.view"> |
2085 | + <field name="name">product.normal.form - WMS location</field> |
2086 | + <field name="model">product.product</field> |
2087 | + <field name="type">form</field> |
2088 | + <field name="priority" eval="20"/> |
2089 | + <field name="inherit_id" ref="product.product_normal_form_view"/> |
2090 | + <field name="arch" type="xml"> |
2091 | + |
2092 | + <data> |
2093 | + <xpath expr="/form/notebook/page/group/field[@name='virtual_available']" position="after"> |
2094 | + <field name="location_type" required="1"/> |
2095 | + </xpath> |
2096 | + <xpath expr="/form/notebook" position="inside"> |
2097 | + <page string="Locations" attrs="{'invisible': [('location_type','not in', ['fixed','crossdock'])]}"> |
2098 | + <field name="location_ids" nolabel="1" colspan="4"> |
2099 | + <tree string="Locations" editable="bottom"> |
2100 | + <field name="name"/> |
2101 | + <field name="location_from_id"/> |
2102 | + <field name="location_dest_id"/> |
2103 | + <field name="delay"/> |
2104 | + <field name="auto"/> |
2105 | + </tree> |
2106 | + <form string="Locations"> |
2107 | + <field name="name" select="1"/> |
2108 | + <field name="location_from_id" select="1"/> |
2109 | + <field name="location_dest_id" select="1"/> |
2110 | + <field name="delay" select="2"/> |
2111 | + <field name="auto" select="2"/> |
2112 | + </form> |
2113 | + </field> |
2114 | + </page> |
2115 | + </xpath> |
2116 | + </data> |
2117 | + |
2118 | + </field> |
2119 | + </record> |
2120 | + |
2121 | + |
2122 | + </data> |
2123 | +</openerp> |