Merge lp:~syleam/wms/5.0-christophe-chauvet into lp:wms
- 5.0-christophe-chauvet
- Merge into 5.0
Proposed by
Christophe CHAUVET
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Approved by: | Christophe CHAUVET | ||||||||
Approved revision: | no longer in the source branch. | ||||||||
Merged at revision: | 212 | ||||||||
Proposed branch: | lp:~syleam/wms/5.0-christophe-chauvet | ||||||||
Merge into: | lp:wms | ||||||||
Diff against target: |
2322 lines (+1033/-291) 20 files modified
wms/i18n/fr_FR.po (+141/-61) wms/i18n/wms.pot (+128/-50) wms/object/burst.py (+27/-9) wms/object/picking.py (+33/-16) wms/object/tracking.py (+1/-1) wms/object/warehouse.py (+28/-2) wms/view/burst.xml (+2/-2) wms/view/location.xml (+8/-0) wms/view/warehouse.xml (+28/-4) wms/wizard/burst.py (+3/-3) wms/wizard/generate_wave.py (+4/-4) wms/wizard/wizard.xml (+4/-4) wms_inventory/__terp__.py (+1/-0) wms_inventory/i18n/fr_FR.po (+199/-38) wms_inventory/i18n/wms_inventory.pot (+188/-44) wms_inventory/object/__init__.py (+1/-0) wms_inventory/object/inventory.py (+158/-53) wms_inventory/object/warehouse.py (+37/-0) wms_inventory/view/warehouse.xml (+41/-0) wms_location/object/location.py (+1/-0) |
||||||||
To merge this branch: | bzr merge lp:~syleam/wms/5.0-christophe-chauvet | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Christophe CHAUVET | Approve | ||
Review via email: mp+51498@code.launchpad.net |
Commit message
bugfix merge for 2 bugs
Description of the change
Fix 2 bugs and new features for inventory
To post a comment you must log in.
- 212. 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/i18n/fr_FR.po' | |||
2 | --- wms/i18n/fr_FR.po 2011-02-24 20:58:12 +0000 | |||
3 | +++ wms/i18n/fr_FR.po 2011-02-28 08:44:57 +0000 | |||
4 | @@ -5,8 +5,8 @@ | |||
5 | 5 | msgstr "" | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: OpenERP Server 5.0.12\n" | 6 | "Project-Id-Version: OpenERP Server 5.0.12\n" |
7 | 7 | "Report-Msgid-Bugs-To: support@openerp.com\n" | 7 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
10 | 8 | "POT-Creation-Date: 2011-02-24 20:33:56+0000\n" | 8 | "POT-Creation-Date: 2011-02-27 21:41:21+0000\n" |
11 | 9 | "PO-Revision-Date: 2011-02-24 21:57+0100\n" | 9 | "PO-Revision-Date: 2011-02-27 22:43+0100\n" |
12 | 10 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" | 10 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" |
13 | 11 | "Language-Team: \n" | 11 | "Language-Team: \n" |
14 | 12 | "MIME-Version: 1.0\n" | 12 | "MIME-Version: 1.0\n" |
15 | @@ -15,6 +15,12 @@ | |||
16 | 15 | "X-Generator: Translate Toolkit 1.3.0\n" | 15 | "X-Generator: Translate Toolkit 1.3.0\n" |
17 | 16 | 16 | ||
18 | 17 | #. module: wms | 17 | #. module: wms |
19 | 18 | #: model:stock.location,name:wms.stock_location_output_thursday | ||
20 | 19 | #: model:stock.round,name:wms.stock_round_thursday | ||
21 | 20 | msgid "Thursday" | ||
22 | 21 | msgstr "Jeudi" | ||
23 | 22 | |||
24 | 23 | #. module: wms | ||
25 | 18 | #: model:ir.actions.wizard,name:wms.wizard_generate_wave | 24 | #: model:ir.actions.wizard,name:wms.wizard_generate_wave |
26 | 19 | msgid "Generate wave" | 25 | msgid "Generate wave" |
27 | 20 | msgstr "Générer une vague" | 26 | msgstr "Générer une vague" |
28 | @@ -31,11 +37,6 @@ | |||
29 | 31 | msgstr "Reception en rafale" | 37 | msgstr "Reception en rafale" |
30 | 32 | 38 | ||
31 | 33 | #. module: wms | 39 | #. module: wms |
32 | 34 | #: view:stock.burst:0 | ||
33 | 35 | msgid "Pickings" | ||
34 | 36 | msgstr "Pickings" | ||
35 | 37 | |||
36 | 38 | #. module: wms | ||
37 | 39 | #: help:product.ul,is_inside:0 | 40 | #: help:product.ul,is_inside:0 |
38 | 40 | msgid "Check this if the content is include in this volume" | 41 | msgid "Check this if the content is include in this volume" |
39 | 41 | msgstr "Cocher ceci si le contenu est inclus dans le volume" | 42 | msgstr "Cocher ceci si le contenu est inclus dans le volume" |
40 | @@ -62,6 +63,11 @@ | |||
41 | 62 | msgstr "Enregistre le prix facturé, vérifier l'unité de facturation également" | 63 | msgstr "Enregistre le prix facturé, vérifier l'unité de facturation également" |
42 | 63 | 64 | ||
43 | 64 | #. module: wms | 65 | #. module: wms |
44 | 66 | #: field:stock.picking,wave_id:0 | ||
45 | 67 | msgid "Wave" | ||
46 | 68 | msgstr "Vague" | ||
47 | 69 | |||
48 | 70 | #. module: wms | ||
49 | 65 | #: field:product.ul,volume:0 | 71 | #: field:product.ul,volume:0 |
50 | 66 | msgid "Volume" | 72 | msgid "Volume" |
51 | 67 | msgstr "Volume" | 73 | msgstr "Volume" |
52 | @@ -149,6 +155,11 @@ | |||
53 | 149 | msgstr "Suivi" | 155 | msgstr "Suivi" |
54 | 150 | 156 | ||
55 | 151 | #. module: wms | 157 | #. module: wms |
56 | 158 | #: wizard_button:wms.burst,init,end:0 | ||
57 | 159 | msgid "Finnish" | ||
58 | 160 | msgstr "Terminé" | ||
59 | 161 | |||
60 | 162 | #. module: wms | ||
61 | 152 | #: help:product.ul,product_id:0 | 163 | #: help:product.ul,product_id:0 |
62 | 153 | msgid "Product for replenishment" | 164 | msgid "Product for replenishment" |
63 | 154 | msgstr "Produit pour le réapprovisionnement" | 165 | msgstr "Produit pour le réapprovisionnement" |
64 | @@ -204,12 +215,23 @@ | |||
65 | 204 | msgstr "Est ce que le contenu est à l'intérieur ?" | 215 | msgstr "Est ce que le contenu est à l'intérieur ?" |
66 | 205 | 216 | ||
67 | 206 | #. module: wms | 217 | #. module: wms |
68 | 218 | #: field:stock.warehouse,parent_id:0 | ||
69 | 219 | msgid "Parent warehouse" | ||
70 | 220 | msgstr "Entrepôt parent" | ||
71 | 221 | |||
72 | 222 | #. module: wms | ||
73 | 223 | #: view:stock.burst:0 | ||
74 | 224 | msgid "Pickings in" | ||
75 | 225 | msgstr "Receptions liés" | ||
76 | 226 | |||
77 | 227 | #. module: wms | ||
78 | 207 | #: field:wms.report.stock.available,qty:0 | 228 | #: field:wms.report.stock.available,qty:0 |
79 | 208 | msgid "Qty" | 229 | msgid "Qty" |
80 | 209 | msgstr "Qté" | 230 | msgstr "Qté" |
81 | 210 | 231 | ||
82 | 211 | #. module: wms | 232 | #. module: wms |
83 | 212 | #: wizard_button:picking.generate.wave,init,valid:0 | 233 | #: wizard_button:picking.generate.wave,init,valid:0 |
84 | 234 | #: wizard_button:wms.burst,init,valid:0 | ||
85 | 213 | msgid "OK" | 235 | msgid "OK" |
86 | 214 | msgstr "OK" | 236 | msgstr "OK" |
87 | 215 | 237 | ||
88 | @@ -271,9 +293,14 @@ | |||
89 | 271 | msgstr "Lot de production" | 293 | msgstr "Lot de production" |
90 | 272 | 294 | ||
91 | 273 | #. module: wms | 295 | #. module: wms |
95 | 274 | #: help:stock.picking,warehouse_id:0 | 296 | #: view:stock.warehouse:0 |
96 | 275 | msgid "Indicate the warehouse for this picking" | 297 | msgid "burst" |
97 | 276 | msgstr "Indiquer l'entrepôt pour ce bon" | 298 | msgstr "Rafale" |
98 | 299 | |||
99 | 300 | #. module: wms | ||
100 | 301 | #: help:stock.warehouse,keep_missing_product_in:0 | ||
101 | 302 | msgid "If check, missing product line on receipt order stay with quantity = 0" | ||
102 | 303 | msgstr "Si coché, les lignes de produits manquant sur les receptions reste avec une quantité égal à 0 " | ||
103 | 277 | 304 | ||
104 | 278 | #. module: wms | 305 | #. module: wms |
105 | 279 | #: view:stock.picking:0 | 306 | #: view:stock.picking:0 |
106 | @@ -281,6 +308,11 @@ | |||
107 | 281 | msgstr "Vérifier la disponibilité" | 308 | msgstr "Vérifier la disponibilité" |
108 | 282 | 309 | ||
109 | 283 | #. module: wms | 310 | #. module: wms |
110 | 311 | #: field:stock.warehouse,check_tracking_burst:0 | ||
111 | 312 | msgid "check tracking" | ||
112 | 313 | msgstr "Activer le suivi" | ||
113 | 314 | |||
114 | 315 | #. module: wms | ||
115 | 284 | #: field:res.partner,is_transporter:0 | 316 | #: field:res.partner,is_transporter:0 |
116 | 285 | msgid "Transporter ?" | 317 | msgid "Transporter ?" |
117 | 286 | msgstr "Transporteur ?" | 318 | msgstr "Transporteur ?" |
118 | @@ -334,16 +366,37 @@ | |||
119 | 334 | msgstr "PUMP" | 366 | msgstr "PUMP" |
120 | 335 | 367 | ||
121 | 336 | #. module: wms | 368 | #. module: wms |
122 | 369 | #: view:stock.burst:0 | ||
123 | 370 | msgid "Pickings out" | ||
124 | 371 | msgstr "Préparatiions liés" | ||
125 | 372 | |||
126 | 373 | #. module: wms | ||
127 | 374 | #: constraint:stock.warehouse:0 | ||
128 | 375 | msgid "You cannot create recursive warehouse !" | ||
129 | 376 | msgstr "Vous ne pouvez pas créer d'entrepôts récursifs !" | ||
130 | 377 | |||
131 | 378 | #. module: wms | ||
132 | 337 | #: help:product.ul,warehouse_ids:0 | 379 | #: help:product.ul,warehouse_ids:0 |
133 | 338 | msgid "Select the warehouse where the UL must be seen" | 380 | msgid "Select the warehouse where the UL must be seen" |
134 | 339 | msgstr "Selectionner le ou les entrepot(s) ou sera visible cette unité" | 381 | msgstr "Selectionner le ou les entrepot(s) ou sera visible cette unité" |
135 | 340 | 382 | ||
136 | 341 | #. module: wms | 383 | #. module: wms |
137 | 384 | #: model:ir.actions.wizard,name:wms.stock_burst | ||
138 | 385 | msgid "Fast entry" | ||
139 | 386 | msgstr "Saisie rapide" | ||
140 | 387 | |||
141 | 388 | #. module: wms | ||
142 | 342 | #: help:product.product,qty_physical:0 | 389 | #: help:product.product,qty_physical:0 |
143 | 343 | msgid "Currenti real quantities of products, include reserved" | 390 | msgid "Currenti real quantities of products, include reserved" |
144 | 344 | msgstr "Quantité réel courant du produit, incluant le réservé" | 391 | msgstr "Quantité réel courant du produit, incluant le réservé" |
145 | 345 | 392 | ||
146 | 346 | #. module: wms | 393 | #. module: wms |
147 | 394 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
148 | 395 | #, python-format | ||
149 | 396 | msgid "Select cart" | ||
150 | 397 | msgstr "Sélectionner un chariot" | ||
151 | 398 | |||
152 | 399 | #. module: wms | ||
153 | 347 | #: view:stock.burst.line:0 | 400 | #: view:stock.burst.line:0 |
154 | 348 | msgid "Line" | 401 | msgid "Line" |
155 | 349 | msgstr "Ligne" | 402 | msgstr "Ligne" |
156 | @@ -365,6 +418,7 @@ | |||
157 | 365 | 418 | ||
158 | 366 | #. module: wms | 419 | #. module: wms |
159 | 367 | #: field:stock.burst.line,remark_id:0 | 420 | #: field:stock.burst.line,remark_id:0 |
160 | 421 | #: wizard_field:wms.burst,init,remark_id:0 | ||
161 | 368 | msgid "Observation" | 422 | msgid "Observation" |
162 | 369 | msgstr "Observation" | 423 | msgstr "Observation" |
163 | 370 | 424 | ||
164 | @@ -374,12 +428,6 @@ | |||
165 | 374 | msgstr "Erreur: L'unité secondaire doit être dans un catégorie différente que l'unité principale" | 428 | msgstr "Erreur: L'unité secondaire doit être dans un catégorie différente que l'unité principale" |
166 | 375 | 429 | ||
167 | 376 | #. module: wms | 430 | #. module: wms |
168 | 377 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
169 | 378 | #, python-format | ||
170 | 379 | msgid "You cannot affect chariot on picking in done or cancel" | ||
171 | 380 | msgstr "Vous ne pouvez pas affecter un chariot sur un bon terminé ou annulé" | ||
172 | 381 | |||
173 | 382 | #. module: wms | ||
174 | 383 | #: field:product.ul,width:0 | 431 | #: field:product.ul,width:0 |
175 | 384 | msgid "Width" | 432 | msgid "Width" |
176 | 385 | msgstr "Largeur" | 433 | msgstr "Largeur" |
177 | @@ -395,12 +443,6 @@ | |||
178 | 395 | msgstr "Enreigistre le PUMP dans les mouvements de stock" | 443 | msgstr "Enreigistre le PUMP dans les mouvements de stock" |
179 | 396 | 444 | ||
180 | 397 | #. module: wms | 445 | #. module: wms |
181 | 398 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
182 | 399 | #, python-format | ||
183 | 400 | msgid "Only picking out must be affected to a chariot!" | ||
184 | 401 | msgstr "Seule des préparations peuvent être affecter dans un chariot!" | ||
185 | 402 | |||
186 | 403 | #. module: wms | ||
187 | 404 | #: view:stock.picking:0 | 446 | #: view:stock.picking:0 |
188 | 405 | msgid "Force Availability" | 447 | msgid "Force Availability" |
189 | 406 | msgstr "Forcer la disponibilité" | 448 | msgstr "Forcer la disponibilité" |
190 | @@ -411,11 +453,6 @@ | |||
191 | 411 | msgstr "Commentaire" | 453 | msgstr "Commentaire" |
192 | 412 | 454 | ||
193 | 413 | #. module: wms | 455 | #. module: wms |
194 | 414 | #: wizard_field:picking.generate.wave,init,chariot_id:0 | ||
195 | 415 | msgid "Chariot" | ||
196 | 416 | msgstr "Chariot" | ||
197 | 417 | |||
198 | 418 | #. module: wms | ||
199 | 419 | #: view:stock.burst:0 | 456 | #: view:stock.burst:0 |
200 | 420 | msgid "Partial" | 457 | msgid "Partial" |
201 | 421 | msgstr "Partiel" | 458 | msgstr "Partiel" |
202 | @@ -457,12 +494,22 @@ | |||
203 | 457 | msgstr "Carton déchiré" | 494 | msgstr "Carton déchiré" |
204 | 458 | 495 | ||
205 | 459 | #. module: wms | 496 | #. module: wms |
206 | 497 | #: help:stock.warehouse,parent_id:0 | ||
207 | 498 | msgid "Define the parent warehouse" | ||
208 | 499 | msgstr "Définier l'entrepôt parent" | ||
209 | 500 | |||
210 | 501 | #. module: wms | ||
211 | 460 | #: code:addons/wms/object/burst.py:0 | 502 | #: code:addons/wms/object/burst.py:0 |
212 | 461 | #, python-format | 503 | #, python-format |
213 | 462 | msgid "Not in initial receipt" | 504 | msgid "Not in initial receipt" |
214 | 463 | msgstr "Absent dans le bon initial" | 505 | msgstr "Absent dans le bon initial" |
215 | 464 | 506 | ||
216 | 465 | #. module: wms | 507 | #. module: wms |
217 | 508 | #: help:stock.location,analysis_id:0 | ||
218 | 509 | msgid "Select the ABC of product that can be store by default in this location" | ||
219 | 510 | msgstr "Sélectionner la classe ABC du produit qui sera stocké par défaut dans cet emplacement" | ||
220 | 511 | |||
221 | 512 | #. module: wms | ||
222 | 466 | #: constraint:product.template:0 | 513 | #: constraint:product.template:0 |
223 | 467 | msgid "Error: The default UOM and the purchase UOM must be in the same category." | 514 | msgid "Error: The default UOM and the purchase UOM must be in the same category." |
224 | 468 | msgstr "Erreur: l'unité par défaut et l'unité d'achat doivent appartenir à la même catégorie." | 515 | msgstr "Erreur: l'unité par défaut et l'unité d'achat doivent appartenir à la même catégorie." |
225 | @@ -474,9 +521,9 @@ | |||
226 | 474 | msgstr "Note" | 521 | msgstr "Note" |
227 | 475 | 522 | ||
228 | 476 | #. module: wms | 523 | #. module: wms |
232 | 477 | #: model:ir.actions.act_window,name:wms.act_product_product_2_stock_move_in | 524 | #: view:product.product:0 |
233 | 478 | msgid "Incoming stock" | 525 | msgid "Qty Available" |
234 | 479 | msgstr "Stock entrant" | 526 | msgstr "Qté disponible" |
235 | 480 | 527 | ||
236 | 481 | #. module: wms | 528 | #. module: wms |
237 | 482 | #: field:res.company,average_price_stock_picking_internal:0 | 529 | #: field:res.company,average_price_stock_picking_internal:0 |
238 | @@ -520,6 +567,11 @@ | |||
239 | 520 | msgstr "Ce champ pourra être utilser lors de l'impression" | 567 | msgstr "Ce champ pourra être utilser lors de l'impression" |
240 | 521 | 568 | ||
241 | 522 | #. module: wms | 569 | #. module: wms |
242 | 570 | #: wizard_field:picking.generate.wave,init,cart_id:0 | ||
243 | 571 | msgid "Cart" | ||
244 | 572 | msgstr "Chariot de préparation" | ||
245 | 573 | |||
246 | 574 | #. module: wms | ||
247 | 523 | #: view:stock.picking:0 | 575 | #: view:stock.picking:0 |
248 | 524 | msgid "Validate" | 576 | msgid "Validate" |
249 | 525 | msgstr "Valider" | 577 | msgstr "Valider" |
250 | @@ -535,14 +587,19 @@ | |||
251 | 535 | msgstr "Actif" | 587 | msgstr "Actif" |
252 | 536 | 588 | ||
253 | 537 | #. module: wms | 589 | #. module: wms |
254 | 590 | #: help:stock.picking,wave_id:0 | ||
255 | 591 | msgid "Picking wave affectation for this picking" | ||
256 | 592 | msgstr "Affectation à la vague pour cette préparation" | ||
257 | 593 | |||
258 | 594 | #. module: wms | ||
259 | 538 | #: model:product.template,name:wms.product_magic_mouse_product_template | 595 | #: model:product.template,name:wms.product_magic_mouse_product_template |
260 | 539 | msgid "Magic Mouse" | 596 | msgid "Magic Mouse" |
261 | 540 | msgstr "Magic Mouse" | 597 | msgstr "Magic Mouse" |
262 | 541 | 598 | ||
263 | 542 | #. module: wms | 599 | #. module: wms |
267 | 543 | #: model:ir.actions.act_window,name:wms.action_picking_wms_out_board | 600 | #: help:stock.picking,warehouse_id:0 |
268 | 544 | msgid "Picking Orders" | 601 | msgid "Indicate the warehouse for this picking" |
269 | 545 | msgstr "Bons de préparations" | 602 | msgstr "Indiquer l'entrepôt pour ce bon" |
270 | 546 | 603 | ||
271 | 547 | #. module: wms | 604 | #. module: wms |
272 | 548 | #: help:res.partner,round_id:0 | 605 | #: help:res.partner,round_id:0 |
273 | @@ -572,10 +629,9 @@ | |||
274 | 572 | msgstr "DPA" | 629 | msgstr "DPA" |
275 | 573 | 630 | ||
276 | 574 | #. module: wms | 631 | #. module: wms |
281 | 575 | #: model:stock.location,name:wms.stock_location_output_thursday | 632 | #: model:stock.location,name:wms.stock_location_w1_output |
282 | 576 | #: model:stock.round,name:wms.stock_round_thursday | 633 | msgid "Output 1" |
283 | 577 | msgid "Thursday" | 634 | msgstr "Sortie 1" |
280 | 578 | msgstr "Jeudi" | ||
284 | 579 | 635 | ||
285 | 580 | #. module: wms | 636 | #. module: wms |
286 | 581 | #: code:addons/wms/object/burst.py:0 | 637 | #: code:addons/wms/object/burst.py:0 |
287 | @@ -593,12 +649,18 @@ | |||
288 | 593 | msgstr "Nom de la tournée" | 649 | msgstr "Nom de la tournée" |
289 | 594 | 650 | ||
290 | 595 | #. module: wms | 651 | #. module: wms |
291 | 652 | #: model:ir.model,name:wms.model_stock_move_remark | ||
292 | 653 | msgid "Remark for the stock move" | ||
293 | 654 | msgstr "Observation pour ce mouvement de stock" | ||
294 | 655 | |||
295 | 656 | #. module: wms | ||
296 | 596 | #: model:ir.model,name:wms.model_stock_burst_line | 657 | #: model:ir.model,name:wms.model_stock_burst_line |
297 | 597 | msgid "Burst picking line" | 658 | msgid "Burst picking line" |
298 | 598 | msgstr "Ligne de saisie en rafale" | 659 | msgstr "Ligne de saisie en rafale" |
299 | 599 | 660 | ||
300 | 600 | #. module: wms | 661 | #. module: wms |
301 | 601 | #: field:stock.burst.line,quantity:0 | 662 | #: field:stock.burst.line,quantity:0 |
302 | 663 | #: wizard_field:wms.burst,init,quantity:0 | ||
303 | 602 | msgid "Quantity" | 664 | msgid "Quantity" |
304 | 603 | msgstr "Quantité" | 665 | msgstr "Quantité" |
305 | 604 | 666 | ||
306 | @@ -627,14 +689,17 @@ | |||
307 | 627 | msgstr "Code" | 689 | msgstr "Code" |
308 | 628 | 690 | ||
309 | 629 | #. module: wms | 691 | #. module: wms |
313 | 630 | #: model:ir.model,name:wms.model_stock_move_remark | 692 | #: field:stock.warehouse,keep_missing_product_in:0 |
314 | 631 | msgid "Remark for the stock move" | 693 | msgid "Keep product in" |
315 | 632 | msgstr "Observation pour ce mouvement de stock" | 694 | msgstr "Garder la trace des produits entrants" |
316 | 633 | 695 | ||
317 | 634 | #. module: wms | 696 | #. module: wms |
318 | 697 | #: code:addons/wms/wizard/burst.py:0 | ||
319 | 635 | #: model:ir.ui.menu,name:wms.menu_stock_burst | 698 | #: model:ir.ui.menu,name:wms.menu_stock_burst |
320 | 636 | #: view:stock.burst:0 | 699 | #: view:stock.burst:0 |
321 | 637 | #: field:stock.burst.line,burst_id:0 | 700 | #: field:stock.burst.line,burst_id:0 |
322 | 701 | #: wizard_view:wms.burst,init:0 | ||
323 | 702 | #, python-format | ||
324 | 638 | msgid "Burst" | 703 | msgid "Burst" |
325 | 639 | msgstr "Mode rafale" | 704 | msgstr "Mode rafale" |
326 | 640 | 705 | ||
327 | @@ -667,6 +732,12 @@ | |||
328 | 667 | msgstr "Annuler" | 732 | msgstr "Annuler" |
329 | 668 | 733 | ||
330 | 669 | #. module: wms | 734 | #. module: wms |
331 | 735 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
332 | 736 | #, python-format | ||
333 | 737 | msgid "You cannot affect cart on picking in done or cancel" | ||
334 | 738 | msgstr "Vous ne pouvez affecter un chariot sur des préparations terminées ou annulées" | ||
335 | 739 | |||
336 | 740 | #. module: wms | ||
337 | 670 | #: view:res.company:0 | 741 | #: view:res.company:0 |
338 | 671 | msgid "Average price calculate on stock picking" | 742 | msgid "Average price calculate on stock picking" |
339 | 672 | msgstr "Calcul du PUMP sur les mouvements de stock de type :" | 743 | msgstr "Calcul du PUMP sur les mouvements de stock de type :" |
340 | @@ -682,9 +753,9 @@ | |||
341 | 682 | msgstr "Rediriger" | 753 | msgstr "Rediriger" |
342 | 683 | 754 | ||
343 | 684 | #. module: wms | 755 | #. module: wms |
347 | 685 | #: help:stock.location,analysis_id:0 | 756 | #: view:stock.warehouse:0 |
348 | 686 | msgid "Select the ABC of product that can be store by default in this location" | 757 | msgid "Information" |
349 | 687 | msgstr "Sélectionner la classe ABC du produit qui sera stocké par défaut dans cet emplacement" | 758 | msgstr "Information" |
350 | 688 | 759 | ||
351 | 689 | #. module: wms | 760 | #. module: wms |
352 | 690 | #: field:stock.picking,picking_time:0 | 761 | #: field:stock.picking,picking_time:0 |
353 | @@ -697,6 +768,11 @@ | |||
354 | 697 | msgstr "The Object name must start with x_ and not contain any special character !" | 768 | msgstr "The Object name must start with x_ and not contain any special character !" |
355 | 698 | 769 | ||
356 | 699 | #. module: wms | 770 | #. module: wms |
357 | 771 | #: model:ir.actions.act_window,name:wms.action_picking_wms_out_board | ||
358 | 772 | msgid "Picking Orders" | ||
359 | 773 | msgstr "Bons de préparations" | ||
360 | 774 | |||
361 | 775 | #. module: wms | ||
362 | 700 | #: model:ir.actions.act_window,name:wms.act_open_stock_picking_transfer_view | 776 | #: model:ir.actions.act_window,name:wms.act_open_stock_picking_transfer_view |
363 | 701 | #: model:ir.ui.menu,name:wms.menu_stock_picking_transfer | 777 | #: model:ir.ui.menu,name:wms.menu_stock_picking_transfer |
364 | 702 | #: view:stock.picking:0 | 778 | #: view:stock.picking:0 |
365 | @@ -723,9 +799,10 @@ | |||
366 | 723 | msgstr "Vous devez assigner un lot de production pour ce produit" | 799 | msgstr "Vous devez assigner un lot de production pour ce produit" |
367 | 724 | 800 | ||
368 | 725 | #. module: wms | 801 | #. module: wms |
372 | 726 | #: model:stock.location,name:wms.stock_location_w1_output | 802 | #: code:addons/wms/wizard/generate_wave.py:0 |
373 | 727 | msgid "Output 1" | 803 | #, python-format |
374 | 728 | msgstr "Sortie 1" | 804 | msgid "Affect a cart for these picking" |
375 | 805 | msgstr "Affecter un chariot à ces bons de préparations" | ||
376 | 729 | 806 | ||
377 | 730 | #. module: wms | 807 | #. module: wms |
378 | 731 | #: model:ir.module.module,description:wms.module_meta_information | 808 | #: model:ir.module.module,description:wms.module_meta_information |
379 | @@ -767,6 +844,12 @@ | |||
380 | 767 | "\n" | 844 | "\n" |
381 | 768 | 845 | ||
382 | 769 | #. module: wms | 846 | #. module: wms |
383 | 847 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
384 | 848 | #, python-format | ||
385 | 849 | msgid "Only picking out must be affected to a cart!" | ||
386 | 850 | msgstr "Seul des bons de préparation peuvent être affecter à un chariot!" | ||
387 | 851 | |||
388 | 852 | #. module: wms | ||
389 | 770 | #: field:res.users,context_warehouse_id:0 | 853 | #: field:res.users,context_warehouse_id:0 |
390 | 771 | #: field:stock.picking,warehouse_id:0 | 854 | #: field:stock.picking,warehouse_id:0 |
391 | 772 | #: field:wms.report.stock.available,warehouse_id:0 | 855 | #: field:wms.report.stock.available,warehouse_id:0 |
392 | @@ -798,6 +881,7 @@ | |||
393 | 798 | #: field:stock.burst.line,product_id:0 | 881 | #: field:stock.burst.line,product_id:0 |
394 | 799 | #: field:stock.picking,product_id:0 | 882 | #: field:stock.picking,product_id:0 |
395 | 800 | #: field:stock.tracking,product_id:0 | 883 | #: field:stock.tracking,product_id:0 |
396 | 884 | #: wizard_field:wms.burst,init,product_id:0 | ||
397 | 801 | #: field:wms.report.stock.available,product_id:0 | 885 | #: field:wms.report.stock.available,product_id:0 |
398 | 802 | msgid "Product" | 886 | msgid "Product" |
399 | 803 | msgstr "Produit" | 887 | msgstr "Produit" |
400 | @@ -818,9 +902,9 @@ | |||
401 | 818 | msgstr "Fournit le concept de classe ABC" | 902 | msgstr "Fournit le concept de classe ABC" |
402 | 819 | 903 | ||
403 | 820 | #. module: wms | 904 | #. module: wms |
407 | 821 | #: field:stock.picking,wave_id:0 | 905 | #: help:stock.warehouse,check_tracking_burst:0 |
408 | 822 | msgid "Wave" | 906 | msgid "Check tracking on burst out" |
409 | 823 | msgstr "Vague" | 907 | msgstr "Activer le suivi en préparation rafale" |
410 | 824 | 908 | ||
411 | 825 | #. module: wms | 909 | #. module: wms |
412 | 826 | #: field:res.company,average_price_stock_picking_delivery:0 | 910 | #: field:res.company,average_price_stock_picking_delivery:0 |
413 | @@ -901,13 +985,9 @@ | |||
414 | 901 | msgstr "Dimension/Poids de l'unité logistique seulement" | 985 | msgstr "Dimension/Poids de l'unité logistique seulement" |
415 | 902 | 986 | ||
416 | 903 | #. module: wms | 987 | #. module: wms |
424 | 904 | #: code:addons/wms/wizard/generate_wave.py:0 | 988 | #: model:ir.actions.act_window,name:wms.act_product_product_2_stock_move_in |
425 | 905 | #, python-format | 989 | msgid "Incoming stock" |
426 | 906 | msgid "" | 990 | msgstr "Stock entrant" |
420 | 907 | "Not enough location on this chariot.\n" | ||
421 | 908 | "Required %d\n" | ||
422 | 909 | "Available %d" | ||
423 | 910 | msgstr "Pas assez d'emplacement sur ce chariot.\n" | ||
427 | 911 | 991 | ||
428 | 912 | #. module: wms | 992 | #. module: wms |
429 | 913 | #: model:ir.model,name:wms.model_stock_burst | 993 | #: model:ir.model,name:wms.model_stock_burst |
430 | @@ -930,11 +1010,6 @@ | |||
431 | 930 | msgstr "Utiliser pour faire un traitement différent, lorsque la remarque est sélectionnée!" | 1010 | msgstr "Utiliser pour faire un traitement différent, lorsque la remarque est sélectionnée!" |
432 | 931 | 1011 | ||
433 | 932 | #. module: wms | 1012 | #. module: wms |
434 | 933 | #: view:product.product:0 | ||
435 | 934 | msgid "Qty Available" | ||
436 | 935 | msgstr "Qté disponible" | ||
437 | 936 | |||
438 | 937 | #. module: wms | ||
439 | 938 | #: field:product.product,analysis_id:0 | 1013 | #: field:product.product,analysis_id:0 |
440 | 939 | #: field:stock.location,analysis_id:0 | 1014 | #: field:stock.location,analysis_id:0 |
441 | 940 | msgid "ABC Class" | 1015 | msgid "ABC Class" |
442 | @@ -977,3 +1052,8 @@ | |||
443 | 977 | msgid "You try to assign a lot which is not from the same product" | 1052 | msgid "You try to assign a lot which is not from the same product" |
444 | 978 | msgstr "Vous essayez d'assigner un lot qui n'appartient pas au même produit" | 1053 | msgstr "Vous essayez d'assigner un lot qui n'appartient pas au même produit" |
445 | 979 | 1054 | ||
446 | 1055 | #~ msgid "test" | ||
447 | 1056 | #~ msgstr "test" | ||
448 | 1057 | #~ msgid "Pickings" | ||
449 | 1058 | #~ msgstr "Pickings" | ||
450 | 1059 | |||
451 | 980 | 1060 | ||
452 | === modified file 'wms/i18n/wms.pot' | |||
453 | --- wms/i18n/wms.pot 2011-02-24 20:58:12 +0000 | |||
454 | +++ wms/i18n/wms.pot 2011-02-28 08:44:57 +0000 | |||
455 | @@ -4,10 +4,10 @@ | |||
456 | 4 | # | 4 | # |
457 | 5 | msgid "" | 5 | msgid "" |
458 | 6 | msgstr "" | 6 | msgstr "" |
460 | 7 | "Project-Id-Version: OpenERP Server 5.0.12\n" | 7 | "Project-Id-Version: OpenERP Server 5.0.15\n" |
461 | 8 | "Report-Msgid-Bugs-To: support@openerp.com\n" | 8 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
464 | 9 | "POT-Creation-Date: 2011-02-24 20:33:56+0000\n" | 9 | "POT-Creation-Date: 2011-02-27 21:41:21+0000\n" |
465 | 10 | "PO-Revision-Date: 2011-02-24 20:33:56+0000\n" | 10 | "PO-Revision-Date: 2011-02-27 21:41:21+0000\n" |
466 | 11 | "Last-Translator: <>\n" | 11 | "Last-Translator: <>\n" |
467 | 12 | "Language-Team: \n" | 12 | "Language-Team: \n" |
468 | 13 | "MIME-Version: 1.0\n" | 13 | "MIME-Version: 1.0\n" |
469 | @@ -16,6 +16,12 @@ | |||
470 | 16 | "Plural-Forms: \n" | 16 | "Plural-Forms: \n" |
471 | 17 | 17 | ||
472 | 18 | #. module: wms | 18 | #. module: wms |
473 | 19 | #: model:stock.location,name:wms.stock_location_output_thursday | ||
474 | 20 | #: model:stock.round,name:wms.stock_round_thursday | ||
475 | 21 | msgid "Thursday" | ||
476 | 22 | msgstr "" | ||
477 | 23 | |||
478 | 24 | #. module: wms | ||
479 | 19 | #: model:ir.actions.wizard,name:wms.wizard_generate_wave | 25 | #: model:ir.actions.wizard,name:wms.wizard_generate_wave |
480 | 20 | msgid "Generate wave" | 26 | msgid "Generate wave" |
481 | 21 | msgstr "" | 27 | msgstr "" |
482 | @@ -32,11 +38,6 @@ | |||
483 | 32 | msgstr "" | 38 | msgstr "" |
484 | 33 | 39 | ||
485 | 34 | #. module: wms | 40 | #. module: wms |
486 | 35 | #: view:stock.burst:0 | ||
487 | 36 | msgid "Pickings" | ||
488 | 37 | msgstr "" | ||
489 | 38 | |||
490 | 39 | #. module: wms | ||
491 | 40 | #: help:product.ul,is_inside:0 | 41 | #: help:product.ul,is_inside:0 |
492 | 41 | msgid "Check this if the content is include in this volume" | 42 | msgid "Check this if the content is include in this volume" |
493 | 42 | msgstr "" | 43 | msgstr "" |
494 | @@ -63,6 +64,11 @@ | |||
495 | 63 | msgstr "" | 64 | msgstr "" |
496 | 64 | 65 | ||
497 | 65 | #. module: wms | 66 | #. module: wms |
498 | 67 | #: field:stock.picking,wave_id:0 | ||
499 | 68 | msgid "Wave" | ||
500 | 69 | msgstr "" | ||
501 | 70 | |||
502 | 71 | #. module: wms | ||
503 | 66 | #: field:product.ul,volume:0 | 72 | #: field:product.ul,volume:0 |
504 | 67 | msgid "Volume" | 73 | msgid "Volume" |
505 | 68 | msgstr "" | 74 | msgstr "" |
506 | @@ -150,6 +156,11 @@ | |||
507 | 150 | msgstr "" | 156 | msgstr "" |
508 | 151 | 157 | ||
509 | 152 | #. module: wms | 158 | #. module: wms |
510 | 159 | #: wizard_button:wms.burst,init,end:0 | ||
511 | 160 | msgid "Finnish" | ||
512 | 161 | msgstr "" | ||
513 | 162 | |||
514 | 163 | #. module: wms | ||
515 | 153 | #: help:product.ul,product_id:0 | 164 | #: help:product.ul,product_id:0 |
516 | 154 | msgid "Product for replenishment" | 165 | msgid "Product for replenishment" |
517 | 155 | msgstr "" | 166 | msgstr "" |
518 | @@ -205,12 +216,23 @@ | |||
519 | 205 | msgstr "" | 216 | msgstr "" |
520 | 206 | 217 | ||
521 | 207 | #. module: wms | 218 | #. module: wms |
522 | 219 | #: field:stock.warehouse,parent_id:0 | ||
523 | 220 | msgid "Parent warehouse" | ||
524 | 221 | msgstr "" | ||
525 | 222 | |||
526 | 223 | #. module: wms | ||
527 | 224 | #: view:stock.burst:0 | ||
528 | 225 | msgid "Pickings in" | ||
529 | 226 | msgstr "" | ||
530 | 227 | |||
531 | 228 | #. module: wms | ||
532 | 208 | #: field:wms.report.stock.available,qty:0 | 229 | #: field:wms.report.stock.available,qty:0 |
533 | 209 | msgid "Qty" | 230 | msgid "Qty" |
534 | 210 | msgstr "" | 231 | msgstr "" |
535 | 211 | 232 | ||
536 | 212 | #. module: wms | 233 | #. module: wms |
537 | 213 | #: wizard_button:picking.generate.wave,init,valid:0 | 234 | #: wizard_button:picking.generate.wave,init,valid:0 |
538 | 235 | #: wizard_button:wms.burst,init,valid:0 | ||
539 | 214 | msgid "OK" | 236 | msgid "OK" |
540 | 215 | msgstr "" | 237 | msgstr "" |
541 | 216 | 238 | ||
542 | @@ -272,8 +294,13 @@ | |||
543 | 272 | msgstr "" | 294 | msgstr "" |
544 | 273 | 295 | ||
545 | 274 | #. module: wms | 296 | #. module: wms |
548 | 275 | #: help:stock.picking,warehouse_id:0 | 297 | #: view:stock.warehouse:0 |
549 | 276 | msgid "Indicate the warehouse for this picking" | 298 | msgid "burst" |
550 | 299 | msgstr "" | ||
551 | 300 | |||
552 | 301 | #. module: wms | ||
553 | 302 | #: help:stock.warehouse,keep_missing_product_in:0 | ||
554 | 303 | msgid "If check, missing product line on receipt order stay with quantity = 0" | ||
555 | 277 | msgstr "" | 304 | msgstr "" |
556 | 278 | 305 | ||
557 | 279 | #. module: wms | 306 | #. module: wms |
558 | @@ -282,6 +309,11 @@ | |||
559 | 282 | msgstr "" | 309 | msgstr "" |
560 | 283 | 310 | ||
561 | 284 | #. module: wms | 311 | #. module: wms |
562 | 312 | #: field:stock.warehouse,check_tracking_burst:0 | ||
563 | 313 | msgid "check tracking" | ||
564 | 314 | msgstr "" | ||
565 | 315 | |||
566 | 316 | #. module: wms | ||
567 | 285 | #: field:res.partner,is_transporter:0 | 317 | #: field:res.partner,is_transporter:0 |
568 | 286 | msgid "Transporter ?" | 318 | msgid "Transporter ?" |
569 | 287 | msgstr "" | 319 | msgstr "" |
570 | @@ -335,16 +367,37 @@ | |||
571 | 335 | msgstr "" | 367 | msgstr "" |
572 | 336 | 368 | ||
573 | 337 | #. module: wms | 369 | #. module: wms |
574 | 370 | #: view:stock.burst:0 | ||
575 | 371 | msgid "Pickings out" | ||
576 | 372 | msgstr "" | ||
577 | 373 | |||
578 | 374 | #. module: wms | ||
579 | 375 | #: constraint:stock.warehouse:0 | ||
580 | 376 | msgid "You cannot create recursive warehouse !" | ||
581 | 377 | msgstr "" | ||
582 | 378 | |||
583 | 379 | #. module: wms | ||
584 | 338 | #: help:product.ul,warehouse_ids:0 | 380 | #: help:product.ul,warehouse_ids:0 |
585 | 339 | msgid "Select the warehouse where the UL must be seen" | 381 | msgid "Select the warehouse where the UL must be seen" |
586 | 340 | msgstr "" | 382 | msgstr "" |
587 | 341 | 383 | ||
588 | 342 | #. module: wms | 384 | #. module: wms |
589 | 385 | #: model:ir.actions.wizard,name:wms.stock_burst | ||
590 | 386 | msgid "Fast entry" | ||
591 | 387 | msgstr "" | ||
592 | 388 | |||
593 | 389 | #. module: wms | ||
594 | 343 | #: help:product.product,qty_physical:0 | 390 | #: help:product.product,qty_physical:0 |
595 | 344 | msgid "Currenti real quantities of products, include reserved" | 391 | msgid "Currenti real quantities of products, include reserved" |
596 | 345 | msgstr "" | 392 | msgstr "" |
597 | 346 | 393 | ||
598 | 347 | #. module: wms | 394 | #. module: wms |
599 | 395 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
600 | 396 | #, python-format | ||
601 | 397 | msgid "Select cart" | ||
602 | 398 | msgstr "" | ||
603 | 399 | |||
604 | 400 | #. module: wms | ||
605 | 348 | #: view:stock.burst.line:0 | 401 | #: view:stock.burst.line:0 |
606 | 349 | msgid "Line" | 402 | msgid "Line" |
607 | 350 | msgstr "" | 403 | msgstr "" |
608 | @@ -366,6 +419,7 @@ | |||
609 | 366 | 419 | ||
610 | 367 | #. module: wms | 420 | #. module: wms |
611 | 368 | #: field:stock.burst.line,remark_id:0 | 421 | #: field:stock.burst.line,remark_id:0 |
612 | 422 | #: wizard_field:wms.burst,init,remark_id:0 | ||
613 | 369 | msgid "Observation" | 423 | msgid "Observation" |
614 | 370 | msgstr "" | 424 | msgstr "" |
615 | 371 | 425 | ||
616 | @@ -375,12 +429,6 @@ | |||
617 | 375 | msgstr "" | 429 | msgstr "" |
618 | 376 | 430 | ||
619 | 377 | #. module: wms | 431 | #. module: wms |
620 | 378 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
621 | 379 | #, python-format | ||
622 | 380 | msgid "You cannot affect chariot on picking in done or cancel" | ||
623 | 381 | msgstr "" | ||
624 | 382 | |||
625 | 383 | #. module: wms | ||
626 | 384 | #: field:product.ul,width:0 | 432 | #: field:product.ul,width:0 |
627 | 385 | msgid "Width" | 433 | msgid "Width" |
628 | 386 | msgstr "" | 434 | msgstr "" |
629 | @@ -396,12 +444,6 @@ | |||
630 | 396 | msgstr "" | 444 | msgstr "" |
631 | 397 | 445 | ||
632 | 398 | #. module: wms | 446 | #. module: wms |
633 | 399 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
634 | 400 | #, python-format | ||
635 | 401 | msgid "Only picking out must be affected to a chariot!" | ||
636 | 402 | msgstr "" | ||
637 | 403 | |||
638 | 404 | #. module: wms | ||
639 | 405 | #: view:stock.picking:0 | 447 | #: view:stock.picking:0 |
640 | 406 | msgid "Force Availability" | 448 | msgid "Force Availability" |
641 | 407 | msgstr "" | 449 | msgstr "" |
642 | @@ -412,11 +454,6 @@ | |||
643 | 412 | msgstr "" | 454 | msgstr "" |
644 | 413 | 455 | ||
645 | 414 | #. module: wms | 456 | #. module: wms |
646 | 415 | #: wizard_field:picking.generate.wave,init,chariot_id:0 | ||
647 | 416 | msgid "Chariot" | ||
648 | 417 | msgstr "" | ||
649 | 418 | |||
650 | 419 | #. module: wms | ||
651 | 420 | #: view:stock.burst:0 | 457 | #: view:stock.burst:0 |
652 | 421 | msgid "Partial" | 458 | msgid "Partial" |
653 | 422 | msgstr "" | 459 | msgstr "" |
654 | @@ -458,12 +495,22 @@ | |||
655 | 458 | msgstr "" | 495 | msgstr "" |
656 | 459 | 496 | ||
657 | 460 | #. module: wms | 497 | #. module: wms |
658 | 498 | #: help:stock.warehouse,parent_id:0 | ||
659 | 499 | msgid "Define the parent warehouse" | ||
660 | 500 | msgstr "" | ||
661 | 501 | |||
662 | 502 | #. module: wms | ||
663 | 461 | #: code:addons/wms/object/burst.py:0 | 503 | #: code:addons/wms/object/burst.py:0 |
664 | 462 | #, python-format | 504 | #, python-format |
665 | 463 | msgid "Not in initial receipt" | 505 | msgid "Not in initial receipt" |
666 | 464 | msgstr "" | 506 | msgstr "" |
667 | 465 | 507 | ||
668 | 466 | #. module: wms | 508 | #. module: wms |
669 | 509 | #: help:stock.location,analysis_id:0 | ||
670 | 510 | msgid "Select the ABC of product that can be store by default in this location" | ||
671 | 511 | msgstr "" | ||
672 | 512 | |||
673 | 513 | #. module: wms | ||
674 | 467 | #: constraint:product.template:0 | 514 | #: constraint:product.template:0 |
675 | 468 | msgid "Error: The default UOM and the purchase UOM must be in the same category." | 515 | msgid "Error: The default UOM and the purchase UOM must be in the same category." |
676 | 469 | msgstr "" | 516 | msgstr "" |
677 | @@ -475,8 +522,8 @@ | |||
678 | 475 | msgstr "" | 522 | msgstr "" |
679 | 476 | 523 | ||
680 | 477 | #. module: wms | 524 | #. module: wms |
683 | 478 | #: model:ir.actions.act_window,name:wms.act_product_product_2_stock_move_in | 525 | #: view:product.product:0 |
684 | 479 | msgid "Incoming stock" | 526 | msgid "Qty Available" |
685 | 480 | msgstr "" | 527 | msgstr "" |
686 | 481 | 528 | ||
687 | 482 | #. module: wms | 529 | #. module: wms |
688 | @@ -521,6 +568,11 @@ | |||
689 | 521 | msgstr "" | 568 | msgstr "" |
690 | 522 | 569 | ||
691 | 523 | #. module: wms | 570 | #. module: wms |
692 | 571 | #: wizard_field:picking.generate.wave,init,cart_id:0 | ||
693 | 572 | msgid "Cart" | ||
694 | 573 | msgstr "" | ||
695 | 574 | |||
696 | 575 | #. module: wms | ||
697 | 524 | #: view:stock.picking:0 | 576 | #: view:stock.picking:0 |
698 | 525 | msgid "Validate" | 577 | msgid "Validate" |
699 | 526 | msgstr "" | 578 | msgstr "" |
700 | @@ -536,13 +588,18 @@ | |||
701 | 536 | msgstr "" | 588 | msgstr "" |
702 | 537 | 589 | ||
703 | 538 | #. module: wms | 590 | #. module: wms |
704 | 591 | #: help:stock.picking,wave_id:0 | ||
705 | 592 | msgid "Picking wave affectation for this picking" | ||
706 | 593 | msgstr "" | ||
707 | 594 | |||
708 | 595 | #. module: wms | ||
709 | 539 | #: model:product.template,name:wms.product_magic_mouse_product_template | 596 | #: model:product.template,name:wms.product_magic_mouse_product_template |
710 | 540 | msgid "Magic Mouse" | 597 | msgid "Magic Mouse" |
711 | 541 | msgstr "" | 598 | msgstr "" |
712 | 542 | 599 | ||
713 | 543 | #. module: wms | 600 | #. module: wms |
716 | 544 | #: model:ir.actions.act_window,name:wms.action_picking_wms_out_board | 601 | #: help:stock.picking,warehouse_id:0 |
717 | 545 | msgid "Picking Orders" | 602 | msgid "Indicate the warehouse for this picking" |
718 | 546 | msgstr "" | 603 | msgstr "" |
719 | 547 | 604 | ||
720 | 548 | #. module: wms | 605 | #. module: wms |
721 | @@ -573,9 +630,8 @@ | |||
722 | 573 | msgstr "" | 630 | msgstr "" |
723 | 574 | 631 | ||
724 | 575 | #. module: wms | 632 | #. module: wms |
728 | 576 | #: model:stock.location,name:wms.stock_location_output_thursday | 633 | #: model:stock.location,name:wms.stock_location_w1_output |
729 | 577 | #: model:stock.round,name:wms.stock_round_thursday | 634 | msgid "Output 1" |
727 | 578 | msgid "Thursday" | ||
730 | 579 | msgstr "" | 635 | msgstr "" |
731 | 580 | 636 | ||
732 | 581 | #. module: wms | 637 | #. module: wms |
733 | @@ -594,12 +650,18 @@ | |||
734 | 594 | msgstr "" | 650 | msgstr "" |
735 | 595 | 651 | ||
736 | 596 | #. module: wms | 652 | #. module: wms |
737 | 653 | #: model:ir.model,name:wms.model_stock_move_remark | ||
738 | 654 | msgid "Remark for the stock move" | ||
739 | 655 | msgstr "" | ||
740 | 656 | |||
741 | 657 | #. module: wms | ||
742 | 597 | #: model:ir.model,name:wms.model_stock_burst_line | 658 | #: model:ir.model,name:wms.model_stock_burst_line |
743 | 598 | msgid "Burst picking line" | 659 | msgid "Burst picking line" |
744 | 599 | msgstr "" | 660 | msgstr "" |
745 | 600 | 661 | ||
746 | 601 | #. module: wms | 662 | #. module: wms |
747 | 602 | #: field:stock.burst.line,quantity:0 | 663 | #: field:stock.burst.line,quantity:0 |
748 | 664 | #: wizard_field:wms.burst,init,quantity:0 | ||
749 | 603 | msgid "Quantity" | 665 | msgid "Quantity" |
750 | 604 | msgstr "" | 666 | msgstr "" |
751 | 605 | 667 | ||
752 | @@ -628,14 +690,17 @@ | |||
753 | 628 | msgstr "" | 690 | msgstr "" |
754 | 629 | 691 | ||
755 | 630 | #. module: wms | 692 | #. module: wms |
758 | 631 | #: model:ir.model,name:wms.model_stock_move_remark | 693 | #: field:stock.warehouse,keep_missing_product_in:0 |
759 | 632 | msgid "Remark for the stock move" | 694 | msgid "Keep product in" |
760 | 633 | msgstr "" | 695 | msgstr "" |
761 | 634 | 696 | ||
762 | 635 | #. module: wms | 697 | #. module: wms |
763 | 698 | #: code:addons/wms/wizard/burst.py:0 | ||
764 | 636 | #: model:ir.ui.menu,name:wms.menu_stock_burst | 699 | #: model:ir.ui.menu,name:wms.menu_stock_burst |
765 | 637 | #: view:stock.burst:0 | 700 | #: view:stock.burst:0 |
766 | 638 | #: field:stock.burst.line,burst_id:0 | 701 | #: field:stock.burst.line,burst_id:0 |
767 | 702 | #: wizard_view:wms.burst,init:0 | ||
768 | 703 | #, python-format | ||
769 | 639 | msgid "Burst" | 704 | msgid "Burst" |
770 | 640 | msgstr "" | 705 | msgstr "" |
771 | 641 | 706 | ||
772 | @@ -668,6 +733,12 @@ | |||
773 | 668 | msgstr "" | 733 | msgstr "" |
774 | 669 | 734 | ||
775 | 670 | #. module: wms | 735 | #. module: wms |
776 | 736 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
777 | 737 | #, python-format | ||
778 | 738 | msgid "You cannot affect cart on picking in done or cancel" | ||
779 | 739 | msgstr "" | ||
780 | 740 | |||
781 | 741 | #. module: wms | ||
782 | 671 | #: view:res.company:0 | 742 | #: view:res.company:0 |
783 | 672 | msgid "Average price calculate on stock picking" | 743 | msgid "Average price calculate on stock picking" |
784 | 673 | msgstr "" | 744 | msgstr "" |
785 | @@ -683,8 +754,8 @@ | |||
786 | 683 | msgstr "" | 754 | msgstr "" |
787 | 684 | 755 | ||
788 | 685 | #. module: wms | 756 | #. module: wms |
791 | 686 | #: help:stock.location,analysis_id:0 | 757 | #: view:stock.warehouse:0 |
792 | 687 | msgid "Select the ABC of product that can be store by default in this location" | 758 | msgid "Information" |
793 | 688 | msgstr "" | 759 | msgstr "" |
794 | 689 | 760 | ||
795 | 690 | #. module: wms | 761 | #. module: wms |
796 | @@ -698,6 +769,11 @@ | |||
797 | 698 | msgstr "" | 769 | msgstr "" |
798 | 699 | 770 | ||
799 | 700 | #. module: wms | 771 | #. module: wms |
800 | 772 | #: model:ir.actions.act_window,name:wms.action_picking_wms_out_board | ||
801 | 773 | msgid "Picking Orders" | ||
802 | 774 | msgstr "" | ||
803 | 775 | |||
804 | 776 | #. module: wms | ||
805 | 701 | #: model:ir.actions.act_window,name:wms.act_open_stock_picking_transfer_view | 777 | #: model:ir.actions.act_window,name:wms.act_open_stock_picking_transfer_view |
806 | 702 | #: model:ir.ui.menu,name:wms.menu_stock_picking_transfer | 778 | #: model:ir.ui.menu,name:wms.menu_stock_picking_transfer |
807 | 703 | #: view:stock.picking:0 | 779 | #: view:stock.picking:0 |
808 | @@ -724,8 +800,9 @@ | |||
809 | 724 | msgstr "" | 800 | msgstr "" |
810 | 725 | 801 | ||
811 | 726 | #. module: wms | 802 | #. module: wms |
814 | 727 | #: model:stock.location,name:wms.stock_location_w1_output | 803 | #: code:addons/wms/wizard/generate_wave.py:0 |
815 | 728 | msgid "Output 1" | 804 | #, python-format |
816 | 805 | msgid "Affect a cart for these picking" | ||
817 | 729 | msgstr "" | 806 | msgstr "" |
818 | 730 | 807 | ||
819 | 731 | #. module: wms | 808 | #. module: wms |
820 | @@ -751,6 +828,12 @@ | |||
821 | 751 | msgstr "" | 828 | msgstr "" |
822 | 752 | 829 | ||
823 | 753 | #. module: wms | 830 | #. module: wms |
824 | 831 | #: code:addons/wms/wizard/generate_wave.py:0 | ||
825 | 832 | #, python-format | ||
826 | 833 | msgid "Only picking out must be affected to a cart!" | ||
827 | 834 | msgstr "" | ||
828 | 835 | |||
829 | 836 | #. module: wms | ||
830 | 754 | #: field:res.users,context_warehouse_id:0 | 837 | #: field:res.users,context_warehouse_id:0 |
831 | 755 | #: field:stock.picking,warehouse_id:0 | 838 | #: field:stock.picking,warehouse_id:0 |
832 | 756 | #: field:wms.report.stock.available,warehouse_id:0 | 839 | #: field:wms.report.stock.available,warehouse_id:0 |
833 | @@ -782,6 +865,7 @@ | |||
834 | 782 | #: field:stock.burst.line,product_id:0 | 865 | #: field:stock.burst.line,product_id:0 |
835 | 783 | #: field:stock.picking,product_id:0 | 866 | #: field:stock.picking,product_id:0 |
836 | 784 | #: field:stock.tracking,product_id:0 | 867 | #: field:stock.tracking,product_id:0 |
837 | 868 | #: wizard_field:wms.burst,init,product_id:0 | ||
838 | 785 | #: field:wms.report.stock.available,product_id:0 | 869 | #: field:wms.report.stock.available,product_id:0 |
839 | 786 | msgid "Product" | 870 | msgid "Product" |
840 | 787 | msgstr "" | 871 | msgstr "" |
841 | @@ -802,8 +886,8 @@ | |||
842 | 802 | msgstr "" | 886 | msgstr "" |
843 | 803 | 887 | ||
844 | 804 | #. module: wms | 888 | #. module: wms |
847 | 805 | #: field:stock.picking,wave_id:0 | 889 | #: help:stock.warehouse,check_tracking_burst:0 |
848 | 806 | msgid "Wave" | 890 | msgid "Check tracking on burst out" |
849 | 807 | msgstr "" | 891 | msgstr "" |
850 | 808 | 892 | ||
851 | 809 | #. module: wms | 893 | #. module: wms |
852 | @@ -885,9 +969,8 @@ | |||
853 | 885 | msgstr "" | 969 | msgstr "" |
854 | 886 | 970 | ||
855 | 887 | #. module: wms | 971 | #. module: wms |
859 | 888 | #: code:addons/wms/wizard/generate_wave.py:0 | 972 | #: model:ir.actions.act_window,name:wms.act_product_product_2_stock_move_in |
860 | 889 | #, python-format | 973 | msgid "Incoming stock" |
858 | 890 | msgid "Not enough location on this chariot.\nRequired %d\nAvailable %d" | ||
861 | 891 | msgstr "" | 974 | msgstr "" |
862 | 892 | 975 | ||
863 | 893 | #. module: wms | 976 | #. module: wms |
864 | @@ -911,11 +994,6 @@ | |||
865 | 911 | msgstr "" | 994 | msgstr "" |
866 | 912 | 995 | ||
867 | 913 | #. module: wms | 996 | #. module: wms |
868 | 914 | #: view:product.product:0 | ||
869 | 915 | msgid "Qty Available" | ||
870 | 916 | msgstr "" | ||
871 | 917 | |||
872 | 918 | #. module: wms | ||
873 | 919 | #: field:product.product,analysis_id:0 | 997 | #: field:product.product,analysis_id:0 |
874 | 920 | #: field:stock.location,analysis_id:0 | 998 | #: field:stock.location,analysis_id:0 |
875 | 921 | msgid "ABC Class" | 999 | msgid "ABC Class" |
876 | 922 | 1000 | ||
877 | === modified file 'wms/object/burst.py' | |||
878 | --- wms/object/burst.py 2011-02-22 16:02:33 +0000 | |||
879 | +++ wms/object/burst.py 2011-02-28 08:44:57 +0000 | |||
880 | @@ -57,7 +57,7 @@ | |||
881 | 57 | 57 | ||
882 | 58 | return super(stock_burst, self).copy(cr, uid, id, default, context=context) | 58 | return super(stock_burst, self).copy(cr, uid, id, default, context=context) |
883 | 59 | 59 | ||
885 | 60 | def _merge(self, cr, uid, ids, context=None): | 60 | def _merge(self, cr, uid, id, context=None): |
886 | 61 | """ | 61 | """ |
887 | 62 | Merge burst lines | 62 | Merge burst lines |
888 | 63 | Returns burst lines in dico : {'product_key': (total_qty, [(qty, line_id, remark_id), (qty, line_id, remark_id), ])} | 63 | Returns burst lines in dico : {'product_key': (total_qty, [(qty, line_id, remark_id), (qty, line_id, remark_id), ])} |
889 | @@ -67,15 +67,16 @@ | |||
890 | 67 | 67 | ||
891 | 68 | # Retrieve burst lines | 68 | # Retrieve burst lines |
892 | 69 | burst_line_obj = self.pool.get('stock.burst.line') | 69 | burst_line_obj = self.pool.get('stock.burst.line') |
894 | 70 | burst_line_ids = burst_line_obj.search(cr, uid, [('burst_id', '=', ids[0]), ('is_done', '=', False)], context=context) | 70 | burst_line_ids = burst_line_obj.search(cr, uid, [('burst_id', '=', id), ('is_done', '=', False)], context=context) |
895 | 71 | burst_lines = burst_line_obj.browse(cr, uid, burst_line_ids, context=context) | 71 | burst_lines = burst_line_obj.browse(cr, uid, burst_line_ids, context=context) |
896 | 72 | 72 | ||
897 | 73 | known_lines = {} | 73 | known_lines = {} |
898 | 74 | lines_to_delete = [] | 74 | lines_to_delete = [] |
899 | 75 | burst_type = self.read(cr, uid, id, ['type'], context=context)['type'] | ||
900 | 75 | for line in burst_lines: | 76 | for line in burst_lines: |
902 | 76 | product_key = "%d_%d_%d" % (line.product_id.id, line.prodlot_id and line.prodlot_id.id or 0, line.tracking_id and line.tracking_id.id or 0) | 77 | product_key = "%d_%d_%d" % (line.product_id.id, line.prodlot_id and line.prodlot_id.id or 0, |
903 | 78 | line.tracking_id and line.tracking_id.id or 0) | ||
904 | 77 | # Remarks are not significant for type 'out' | 79 | # Remarks are not significant for type 'out' |
905 | 78 | burst_type = self.read(cr, uid, ids, ['type'], context=context)[0]['type'] | ||
906 | 79 | rem_id = (burst_type != 'out') and line.remark_id.id or 0 | 80 | rem_id = (burst_type != 'out') and line.remark_id.id or 0 |
907 | 80 | # Check if product_id is known | 81 | # Check if product_id is known |
908 | 81 | if product_key in known_lines.keys(): | 82 | if product_key in known_lines.keys(): |
909 | @@ -103,8 +104,10 @@ | |||
910 | 103 | lines_list.append((line.quantity, line.id, rem_id)) | 104 | lines_list.append((line.quantity, line.id, rem_id)) |
911 | 104 | # final format : | 105 | # final format : |
912 | 105 | known_lines[p] = (total, lines_list) | 106 | known_lines[p] = (total, lines_list) |
913 | 107 | |||
914 | 106 | # Delete lines to delete | 108 | # Delete lines to delete |
916 | 107 | burst_line_obj.unlink(cr, uid, lines_to_delete, context=context) | 109 | if lines_to_delete: |
917 | 110 | burst_line_obj.unlink(cr, uid, lines_to_delete, context=context) | ||
918 | 108 | 111 | ||
919 | 109 | return known_lines | 112 | return known_lines |
920 | 110 | 113 | ||
921 | @@ -117,7 +120,7 @@ | |||
922 | 117 | 120 | ||
923 | 118 | # Retrieve merged burst lines | 121 | # Retrieve merged burst lines |
924 | 119 | burst_line_obj = self.pool.get('stock.burst.line') | 122 | burst_line_obj = self.pool.get('stock.burst.line') |
926 | 120 | burst_lines = self._merge(cr, uid, ids, context=context) | 123 | burst_lines = self._merge(cr, uid, ids[0], context=context) |
927 | 121 | # No new line : quit | 124 | # No new line : quit |
928 | 122 | if not burst_lines: | 125 | if not burst_lines: |
929 | 123 | return | 126 | return |
930 | @@ -128,9 +131,9 @@ | |||
931 | 128 | picking_id = self.read(cr, uid, ids, ['stock_picking_id'], context=context)[0]['stock_picking_id'][0] | 131 | picking_id = self.read(cr, uid, ids, ['stock_picking_id'], context=context)[0]['stock_picking_id'][0] |
932 | 129 | backorder_ids = self.pool.get('stock.picking').search(cr, uid, [('backorder_id', '=', picking_id), ('state', 'not in', ('done', 'cancel', 'draft'))], context=context) | 132 | backorder_ids = self.pool.get('stock.picking').search(cr, uid, [('backorder_id', '=', picking_id), ('state', 'not in', ('done', 'cancel', 'draft'))], context=context) |
933 | 130 | if backorder_ids: | 133 | if backorder_ids: |
935 | 131 | picking = self.pool.get('stock.picking').browse(cr, uid, [backorder_ids[0]], context=context)[0] | 134 | picking = self.pool.get('stock.picking').browse(cr, uid, backorder_ids[0], context=context) |
936 | 132 | else: | 135 | else: |
938 | 133 | picking = self.pool.get('stock.picking').browse(cr, uid, [picking_id], context=context)[0] | 136 | picking = self.pool.get('stock.picking').browse(cr, uid, picking_id, context=context) |
939 | 134 | picking_moves = picking_obj.move_merge(cr, uid, picking.id, context=context) | 137 | picking_moves = picking_obj.move_merge(cr, uid, picking.id, context=context) |
940 | 135 | 138 | ||
941 | 136 | # Compare burst lines and move lines | 139 | # Compare burst lines and move lines |
942 | @@ -198,7 +201,9 @@ | |||
943 | 198 | missing.append((move_id, qty)) | 201 | missing.append((move_id, qty)) |
944 | 199 | 202 | ||
945 | 200 | wf_service = netsvc.LocalService("workflow") | 203 | wf_service = netsvc.LocalService("workflow") |
946 | 204 | del_empty_move = [] | ||
947 | 201 | if len(missing) > 0: | 205 | if len(missing) > 0: |
948 | 206 | no_keep = (picking.type == 'in' and not picking.warehouse_id.keep_missing_product_in) or False | ||
949 | 202 | # Generate new picking for missing products | 207 | # Generate new picking for missing products |
950 | 203 | new_picking = picking_obj.copy(cr, uid, picking_id, | 208 | new_picking = picking_obj.copy(cr, uid, picking_id, |
951 | 204 | { | 209 | { |
952 | @@ -211,6 +216,12 @@ | |||
953 | 211 | for (move_id, qty) in missing: | 216 | for (move_id, qty) in missing: |
954 | 212 | # Generate move lines in new_picking for missing products | 217 | # Generate move lines in new_picking for missing products |
955 | 213 | move_obj.copy(cr, uid, move_id, {'product_qty': qty, 'picking_id': new_picking, 'remark_id': False}) | 218 | move_obj.copy(cr, uid, move_id, {'product_qty': qty, 'picking_id': new_picking, 'remark_id': False}) |
956 | 219 | if no_keep: | ||
957 | 220 | del_empty_move.append(move_id) | ||
958 | 221 | |||
959 | 222 | if del_empty_move: | ||
960 | 223 | #move_obj.write(cr, uid, del_empty_move, {'state': 'draft'}) | ||
961 | 224 | move_obj.unlink(cr, uid, del_empty_move) | ||
962 | 214 | 225 | ||
963 | 215 | # Sets state to assigned for new picking | 226 | # Sets state to assigned for new picking |
964 | 216 | wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr) | 227 | wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr) |
965 | @@ -218,13 +229,20 @@ | |||
966 | 218 | if burst_type != 'out': | 229 | if burst_type != 'out': |
967 | 219 | picking_obj.force_assign(cr, uid, [new_picking]) | 230 | picking_obj.force_assign(cr, uid, [new_picking]) |
968 | 220 | 231 | ||
969 | 232 | for val in done_move_lines: | ||
970 | 233 | if val in del_empty_move: | ||
971 | 234 | done_move_lines.remove(val) | ||
972 | 235 | |||
973 | 221 | # Set state to Done for picking | 236 | # Set state to Done for picking |
975 | 222 | move_obj.write(cr, uid, done_move_lines, {'state': 'done'}, context=context) | 237 | if done_move_lines: |
976 | 238 | move_obj.write(cr, uid, done_move_lines, {'state': 'done'}, context=context) | ||
977 | 239 | |||
978 | 223 | picking_obj.force_assign(cr, uid, [picking.id]) | 240 | picking_obj.force_assign(cr, uid, [picking.id]) |
979 | 224 | wf_service.trg_validate(uid, 'stock.picking', picking.id, 'button_done', cr) | 241 | wf_service.trg_validate(uid, 'stock.picking', picking.id, 'button_done', cr) |
980 | 225 | 242 | ||
981 | 226 | # Set is_done=True for finished burst lines | 243 | # Set is_done=True for finished burst lines |
982 | 227 | burst_line_obj.write(cr, uid, done_burst_lines, {'is_done': True}, context=context) | 244 | burst_line_obj.write(cr, uid, done_burst_lines, {'is_done': True}, context=context) |
983 | 245 | |||
984 | 228 | # Add picking in M2M | 246 | # Add picking in M2M |
985 | 229 | self.write(cr, uid, ids, {'picking_ids': [(4, picking.id)]}, context=context) | 247 | self.write(cr, uid, ids, {'picking_ids': [(4, picking.id)]}, context=context) |
986 | 230 | 248 | ||
987 | 231 | 249 | ||
988 | === modified file 'wms/object/picking.py' | |||
989 | --- wms/object/picking.py 2011-02-24 13:07:22 +0000 | |||
990 | +++ wms/object/picking.py 2011-02-28 08:44:57 +0000 | |||
991 | @@ -26,6 +26,15 @@ | |||
992 | 26 | from osv import fields | 26 | from osv import fields |
993 | 27 | from tools.translate import _ | 27 | from tools.translate import _ |
994 | 28 | 28 | ||
995 | 29 | _picking_state = [ | ||
996 | 30 | ('draft', 'Draft'), | ||
997 | 31 | ('auto', 'Waiting'), | ||
998 | 32 | ('confirmed', 'Confirmed'), | ||
999 | 33 | ('assigned', 'Assigned'), | ||
1000 | 34 | ('done', 'Done'), | ||
1001 | 35 | ('cancel', 'Cancelled'), | ||
1002 | 36 | ] | ||
1003 | 37 | |||
1004 | 29 | 38 | ||
1005 | 30 | class StockPicking(osv.osv): | 39 | class StockPicking(osv.osv): |
1006 | 31 | """ | 40 | """ |
1007 | @@ -52,7 +61,8 @@ | |||
1008 | 52 | 'transporter_number': fields.char('Tracking number', size=128), | 61 | 'transporter_number': fields.char('Tracking number', size=128), |
1009 | 53 | 'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'), | 62 | 'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'), |
1010 | 54 | 'round_id': fields.many2one('stock.round', 'Round', help='Use for manage deliveries'), | 63 | 'round_id': fields.many2one('stock.round', 'Round', help='Use for manage deliveries'), |
1012 | 55 | 'wave_id': fields.many2one('stock.location', 'Wave'), | 64 | 'wave_id': fields.many2one('stock.location', 'Wave', help='Picking wave affectation for this picking'), |
1013 | 65 | 'state': fields.selection(_picking_state, 'Status', readonly=True), | ||
1014 | 56 | } | 66 | } |
1015 | 57 | 67 | ||
1016 | 58 | _defaults = { | 68 | _defaults = { |
1017 | @@ -61,6 +71,7 @@ | |||
1018 | 61 | 'transporter_id': lambda *a: False, | 71 | 'transporter_id': lambda *a: False, |
1019 | 62 | 'transporter_number': lambda *a: False, | 72 | 'transporter_number': lambda *a: False, |
1020 | 63 | 'round_id': lambda *a: False, | 73 | 'round_id': lambda *a: False, |
1021 | 74 | 'state': lambda *a: 'draft', | ||
1022 | 64 | } | 75 | } |
1023 | 65 | 76 | ||
1024 | 66 | def default_get(self, cr, uid, fields_list, context=None): | 77 | def default_get(self, cr, uid, fields_list, context=None): |
1025 | @@ -126,7 +137,7 @@ | |||
1026 | 126 | 137 | ||
1027 | 127 | def product_crossdock_location(self, cr, uid, product_id, warehouse_id, context=None): | 138 | def product_crossdock_location(self, cr, uid, product_id, warehouse_id, context=None): |
1028 | 128 | """ | 139 | """ |
1030 | 129 | Search id | 140 | Search id |
1031 | 130 | """ | 141 | """ |
1032 | 131 | if context is None: | 142 | if context is None: |
1033 | 132 | context = {} | 143 | context = {} |
1034 | @@ -187,7 +198,7 @@ | |||
1035 | 187 | ['crossdock_location_id'], context=context)['crossdock_location_id'] | 198 | ['crossdock_location_id'], context=context)['crossdock_location_id'] |
1036 | 188 | if not default_crossdock: | 199 | if not default_crossdock: |
1037 | 189 | raise osv.except_osv(_('Error'), _('No default crossdock location defined on the warehouse!')) | 200 | raise osv.except_osv(_('Error'), _('No default crossdock location defined on the warehouse!')) |
1039 | 190 | crossdock_id = isinstance(default_crossdock, list) and default_crossdock[0] or default_crossdock | 201 | crossdock_id = isinstance(default_crossdock, tuple) and default_crossdock[0] or default_crossdock |
1040 | 191 | 202 | ||
1041 | 192 | ### | 203 | ### |
1042 | 193 | ## If we have an outgoing quantity, and location type is crossdock, we split in two line | 204 | ## If we have an outgoing quantity, and location type is crossdock, we split in two line |
1043 | @@ -201,7 +212,7 @@ | |||
1044 | 201 | args = [ | 212 | args = [ |
1045 | 202 | ('picking_id', 'in', picking_ids), | 213 | ('picking_id', 'in', picking_ids), |
1046 | 203 | ('product_id', '=', move.product_id.id), | 214 | ('product_id', '=', move.product_id.id), |
1048 | 204 | ('state', 'in', ['confirmed', 'waiting']), | 215 | ('state', 'in', ['assigned', 'confirmed', 'waiting']), |
1049 | 205 | ] | 216 | ] |
1050 | 206 | reserve_ids = move_obj.search(cr, uid, args, | 217 | reserve_ids = move_obj.search(cr, uid, args, |
1051 | 207 | limit=abs(move.product_qty), order='date_planned', context=context) | 218 | limit=abs(move.product_qty), order='date_planned', context=context) |
1052 | @@ -212,11 +223,12 @@ | |||
1053 | 212 | total_crossdock += r.product_qty | 223 | total_crossdock += r.product_qty |
1054 | 213 | 224 | ||
1055 | 214 | # Check if we must split the line in two if there is enougth quantity available | 225 | # Check if we must split the line in two if there is enougth quantity available |
1057 | 215 | if move.product_qty > total_crossdock: | 226 | if total_crossdock and move.product_qty > total_crossdock: |
1058 | 216 | args = { | 227 | args = { |
1059 | 217 | 'product_qty': (move.product_qty - total_crossdock), | 228 | 'product_qty': (move.product_qty - total_crossdock), |
1060 | 218 | 'state': 'done', | 229 | 'state': 'done', |
1061 | 219 | 'crossdock_ok': True, | 230 | 'crossdock_ok': True, |
1062 | 231 | 'move_dest_id': False, | ||
1063 | 220 | } | 232 | } |
1064 | 221 | new_id = move_obj.copy(cr, uid, move.id, args, context=context) | 233 | new_id = move_obj.copy(cr, uid, move.id, args, context=context) |
1065 | 222 | args = { | 234 | args = { |
1066 | @@ -226,7 +238,7 @@ | |||
1067 | 226 | 'crossdock_ok': True, | 238 | 'crossdock_ok': True, |
1068 | 227 | } | 239 | } |
1069 | 228 | move_obj.write(cr, uid, [move.id], args, context=context) | 240 | move_obj.write(cr, uid, [move.id], args, context=context) |
1071 | 229 | else: | 241 | elif total_crossdock: |
1072 | 230 | # We don't have enougth quantity, how many moves can be assigned with quantity | 242 | # We don't have enougth quantity, how many moves can be assigned with quantity |
1073 | 231 | args = { | 243 | args = { |
1074 | 232 | 'location_dest_id': crossdock_id, | 244 | 'location_dest_id': crossdock_id, |
1075 | @@ -244,11 +256,12 @@ | |||
1076 | 244 | else: | 256 | else: |
1077 | 245 | break | 257 | break |
1078 | 246 | 258 | ||
1084 | 247 | args = { | 259 | if total_crossdock: |
1085 | 248 | 'location_id': crossdock_id, | 260 | args = { |
1086 | 249 | 'state': 'assigned', | 261 | 'location_id': crossdock_id, |
1087 | 250 | } | 262 | 'state': 'assigned', |
1088 | 251 | move_obj.write(cr, uid, reserve_ids, args, context=context) | 263 | } |
1089 | 264 | move_obj.write(cr, uid, reserve_ids, args, context=context) | ||
1090 | 252 | 265 | ||
1091 | 253 | return new_id or move.id | 266 | return new_id or move.id |
1092 | 254 | 267 | ||
1093 | @@ -308,15 +321,15 @@ | |||
1094 | 308 | # For each picking out in confirm, check all lines and verify if it available | 321 | # For each picking out in confirm, check all lines and verify if it available |
1095 | 309 | # If yes, execute the workflow. | 322 | # If yes, execute the workflow. |
1096 | 310 | args = [ | 323 | args = [ |
1099 | 311 | ('type','=','out'), | 324 | ('type', '=', 'out'), |
1100 | 312 | ('state','=','confirmed'), | 325 | ('state', '=', 'confirmed'), |
1101 | 313 | ] | 326 | ] |
1102 | 314 | p_ids = self.search(cr, uid, args) | 327 | p_ids = self.search(cr, uid, args) |
1103 | 315 | pick_list = [] | 328 | pick_list = [] |
1104 | 316 | for p in self.browse(cr, uid, p_ids): | 329 | for p in self.browse(cr, uid, p_ids): |
1105 | 317 | l_ok = True | 330 | l_ok = True |
1106 | 318 | for l in p.move_lines: | 331 | for l in p.move_lines: |
1108 | 319 | if l.state not in ('assigned','cancel'): | 332 | if l.state not in ('assigned', 'cancel'): |
1109 | 320 | l_ok = False | 333 | l_ok = False |
1110 | 321 | 334 | ||
1111 | 322 | if l_ok: | 335 | if l_ok: |
1112 | @@ -340,7 +353,8 @@ | |||
1113 | 340 | known_moves = {} | 353 | known_moves = {} |
1114 | 341 | moves_to_delete = [] | 354 | moves_to_delete = [] |
1115 | 342 | for move in move_obj.browse(cr, uid, move_ids, context=context): | 355 | for move in move_obj.browse(cr, uid, move_ids, context=context): |
1117 | 343 | product_key = "%d_%d_%d" % (move.product_id.id, move.prodlot_id and move.prodlot_id.id or 0, move.tracking_id and move.tracking_id.id or 0) | 356 | product_key = "%d_%d_%d" % (move.product_id.id, move.prodlot_id and move.prodlot_id.id or 0, |
1118 | 357 | move.tracking_id and move.tracking_id.id or 0) | ||
1119 | 344 | # Check if product_id is known | 358 | # Check if product_id is known |
1120 | 345 | if product_key in known_moves.keys(): | 359 | if product_key in known_moves.keys(): |
1121 | 346 | # Add quantities | 360 | # Add quantities |
1122 | @@ -355,7 +369,10 @@ | |||
1123 | 355 | known_moves[p] = (move.product_qty, move.id, ) | 369 | known_moves[p] = (move.product_qty, move.id, ) |
1124 | 356 | 370 | ||
1125 | 357 | # Delete moves to delete | 371 | # Delete moves to delete |
1127 | 358 | move_obj.unlink(cr, uid, moves_to_delete, context=context) | 372 | if moves_to_delete: |
1128 | 373 | ctx = context.copy() | ||
1129 | 374 | ctx['call_unlink'] = True | ||
1130 | 375 | move_obj.unlink(cr, uid, moves_to_delete, context=ctx) | ||
1131 | 359 | 376 | ||
1132 | 360 | return known_moves | 377 | return known_moves |
1133 | 361 | 378 | ||
1134 | 362 | 379 | ||
1135 | === modified file 'wms/object/tracking.py' | |||
1136 | --- wms/object/tracking.py 2010-07-01 08:22:53 +0000 | |||
1137 | +++ wms/object/tracking.py 2011-02-28 08:44:57 +0000 | |||
1138 | @@ -29,7 +29,7 @@ | |||
1139 | 29 | _inherit = 'stock.tracking' | 29 | _inherit = 'stock.tracking' |
1140 | 30 | 30 | ||
1141 | 31 | _columns = { | 31 | _columns = { |
1143 | 32 | 'product_id': fields.many2one('product.product', 'Product', required=True), | 32 | 'product_id': fields.many2one('product.product', 'Product'), |
1144 | 33 | } | 33 | } |
1145 | 34 | 34 | ||
1146 | 35 | _defaults = { | 35 | _defaults = { |
1147 | 36 | 36 | ||
1148 | === modified file 'wms/object/warehouse.py' | |||
1149 | --- wms/object/warehouse.py 2011-01-31 18:09:20 +0000 | |||
1150 | +++ wms/object/warehouse.py 2011-02-28 08:44:57 +0000 | |||
1151 | @@ -36,9 +36,35 @@ | |||
1152 | 36 | 'lot_stock_id': fields.many2one('stock.location', 'Location Stock', required=False, domain=[('usage', '<>', 'view')]), | 36 | 'lot_stock_id': fields.many2one('stock.location', 'Location Stock', required=False, domain=[('usage', '<>', 'view')]), |
1153 | 37 | 'lot_output_id': fields.many2one('stock.location', 'Location Output', required=False, domain=[('usage', '<>', 'view')]), | 37 | 'lot_output_id': fields.many2one('stock.location', 'Location Output', required=False, domain=[('usage', '<>', 'view')]), |
1154 | 38 | 'code': fields.char('Code', size=16, help='Enter the warehouse code'), | 38 | 'code': fields.char('Code', size=16, help='Enter the warehouse code'), |
1155 | 39 | 'parent_id': fields.many2one('stock.warehouse', 'Parent warehouse', help='Define the parent warehouse'), | ||
1156 | 39 | 'crossdock_location_id': fields.many2one('stock.location', 'Crossdock location', | 40 | 'crossdock_location_id': fields.many2one('stock.location', 'Crossdock location', |
1157 | 40 | help='Choose the crossdock location on this warehouse'), | 41 | help='Choose the crossdock location on this warehouse'), |
1159 | 41 | } | 42 | 'check_tracking_burst': fields.boolean('check tracking', help='Check tracking on burst out'), |
1160 | 43 | 'keep_missing_product_in': fields.boolean('Keep product in', help='If check, missing product line on receipt order stay with quantity = 0'), | ||
1161 | 44 | } | ||
1162 | 45 | |||
1163 | 46 | _defaults = { | ||
1164 | 47 | 'check_tracking_burst': lambda *a: False, | ||
1165 | 48 | 'keep_missing_product_in': lambda *a: True, | ||
1166 | 49 | } | ||
1167 | 50 | |||
1168 | 51 | def _check_recursion(self, cr, uid, ids): | ||
1169 | 52 | """ | ||
1170 | 53 | Check if the selected parent warehouse create a recursive loop | ||
1171 | 54 | """ | ||
1172 | 55 | level = 100 | ||
1173 | 56 | while len(ids): | ||
1174 | 57 | cr.execute('select distinct parent_id from stock_warehouse where id in %s', (tuple(ids),)) | ||
1175 | 58 | ids = filter(None, map(lambda x:x[0], cr.fetchall())) | ||
1176 | 59 | if not level: | ||
1177 | 60 | return False | ||
1178 | 61 | level -= 1 | ||
1179 | 62 | return True | ||
1180 | 63 | |||
1181 | 64 | _constraints = [ | ||
1182 | 65 | (_check_recursion, 'You cannot create recursive warehouse !', ['parent_id']), | ||
1183 | 66 | ] | ||
1184 | 67 | |||
1185 | 42 | 68 | ||
1186 | 43 | def search(self, cr, uid, args, offset=0, limit=None, order=None, | 69 | def search(self, cr, uid, args, offset=0, limit=None, order=None, |
1187 | 44 | context=None, count=False): | 70 | context=None, count=False): |
1188 | @@ -51,7 +77,7 @@ | |||
1189 | 51 | ids = super(Warehouse, self).search(cr, uid, args, offset=offset, limit=limit, | 77 | ids = super(Warehouse, self).search(cr, uid, args, offset=offset, limit=limit, |
1190 | 52 | order=order, context=context, count=count) | 78 | order=order, context=context, count=count) |
1191 | 53 | for w in self.browse(cr, uid, ids, context=context): | 79 | for w in self.browse(cr, uid, ids, context=context): |
1193 | 54 | if not w.lot_stock_id or not w.lot_input_id or not w.lot_output_id: | 80 | if not context.get('new_warehouse', False) and (not w.lot_stock_id or not w.lot_input_id or not w.lot_output_id): |
1194 | 55 | raise osv.except_osv(_('Error'), _('Warehouse "%s" not correctly configure !') % w.name) | 81 | raise osv.except_osv(_('Error'), _('Warehouse "%s" not correctly configure !') % w.name) |
1195 | 56 | 82 | ||
1196 | 57 | return ids | 83 | return ids |
1197 | 58 | 84 | ||
1198 | === modified file 'wms/view/burst.xml' | |||
1199 | --- wms/view/burst.xml 2011-02-22 16:02:33 +0000 | |||
1200 | +++ wms/view/burst.xml 2011-02-28 08:44:57 +0000 | |||
1201 | @@ -95,7 +95,7 @@ | |||
1202 | 95 | <field name="line_ids" string="Lines" colspan="4" nolabel="1" | 95 | <field name="line_ids" string="Lines" colspan="4" nolabel="1" |
1203 | 96 | attrs="{'readonly': [('state','=', 'done')]}"/> | 96 | attrs="{'readonly': [('state','=', 'done')]}"/> |
1204 | 97 | </page> | 97 | </page> |
1206 | 98 | <page string="Pickings"> | 98 | <page string="Pickings in"> |
1207 | 99 | <field name="picking_ids" nolabel="1" attrs="{'readonly': [('state','=', 'done')]}"/> | 99 | <field name="picking_ids" nolabel="1" attrs="{'readonly': [('state','=', 'done')]}"/> |
1208 | 100 | </page> | 100 | </page> |
1209 | 101 | </notebook> | 101 | </notebook> |
1210 | @@ -126,7 +126,7 @@ | |||
1211 | 126 | <field name="line_ids" string="Lines" colspan="4" nolabel="1" | 126 | <field name="line_ids" string="Lines" colspan="4" nolabel="1" |
1212 | 127 | attrs="{'readonly': [('state','=', 'done')]}"/> | 127 | attrs="{'readonly': [('state','=', 'done')]}"/> |
1213 | 128 | </page> | 128 | </page> |
1215 | 129 | <page string="Pickings"> | 129 | <page string="Pickings out"> |
1216 | 130 | <field name="picking_ids" nolabel="1" attrs="{'readonly': [('state','=', 'done')]}"/> | 130 | <field name="picking_ids" nolabel="1" attrs="{'readonly': [('state','=', 'done')]}"/> |
1217 | 131 | </page> | 131 | </page> |
1218 | 132 | </notebook> | 132 | </notebook> |
1219 | 133 | 133 | ||
1220 | === modified file 'wms/view/location.xml' | |||
1221 | --- wms/view/location.xml 2010-06-22 05:47:58 +0000 | |||
1222 | +++ wms/view/location.xml 2011-02-28 08:44:57 +0000 | |||
1223 | @@ -39,5 +39,13 @@ | |||
1224 | 39 | </field> | 39 | </field> |
1225 | 40 | </record> | 40 | </record> |
1226 | 41 | 41 | ||
1227 | 42 | <!-- ************************************************************** --> | ||
1228 | 43 | <!-- ** Add value to the context, to bypass the protection id ***** --> | ||
1229 | 44 | <!-- ** the warehouse is not well configure *********************** --> | ||
1230 | 45 | <!-- ************************************************************** --> | ||
1231 | 46 | <record id="stock.action_location_form" model="ir.actions.act_window"> | ||
1232 | 47 | <field name="context">{'new_warehouse': True}</field> | ||
1233 | 48 | </record> | ||
1234 | 49 | |||
1235 | 42 | </data> | 50 | </data> |
1236 | 43 | </openerp> | 51 | </openerp> |
1237 | 44 | 52 | ||
1238 | === modified file 'wms/view/warehouse.xml' | |||
1239 | --- wms/view/warehouse.xml 2011-01-20 22:50:19 +0000 | |||
1240 | +++ wms/view/warehouse.xml 2011-02-28 08:44:57 +0000 | |||
1241 | @@ -44,10 +44,21 @@ | |||
1242 | 44 | </xpath> | 44 | </xpath> |
1243 | 45 | <xpath expr="/form/field[@name='name']" position="after"> | 45 | <xpath expr="/form/field[@name='name']" position="after"> |
1244 | 46 | <field name="code"/> | 46 | <field name="code"/> |
1245 | 47 | <field name="parent_id"/> | ||
1246 | 47 | <field name="company_id"/> | 48 | <field name="company_id"/> |
1247 | 49 | <newline/> | ||
1248 | 48 | </xpath> | 50 | </xpath> |
1249 | 49 | <xpath expr="/form/field[@name='lot_output_id']" position="after"> | 51 | <xpath expr="/form/field[@name='lot_output_id']" position="after"> |
1251 | 50 | <field name="crossdock_location_id" domain="[('usage','=', 'crossdock')]"/> | 52 | <field name="crossdock_location_id" domain="[('warehouse_id','=', active_id),('usage','=', 'crossdock')]"/> |
1252 | 53 | </xpath> | ||
1253 | 54 | <xpath expr="/form/field[@name='partner_address_id']" position="after"> | ||
1254 | 55 | <notebook colspan="4"> | ||
1255 | 56 | <page string="Information"> | ||
1256 | 57 | <separator string="burst" colspan="4"/> | ||
1257 | 58 | <field name="check_tracking_burst"/> | ||
1258 | 59 | <field name="keep_missing_product_in" invisible="1"/> | ||
1259 | 60 | </page> | ||
1260 | 61 | </notebook> | ||
1261 | 51 | </xpath> | 62 | </xpath> |
1262 | 52 | </data> | 63 | </data> |
1263 | 53 | 64 | ||
1264 | @@ -62,12 +73,25 @@ | |||
1265 | 62 | <field name="inherit_id" ref="stock.view_warehouse_tree"/> | 73 | <field name="inherit_id" ref="stock.view_warehouse_tree"/> |
1266 | 63 | <field name="arch" type="xml"> | 74 | <field name="arch" type="xml"> |
1267 | 64 | 75 | ||
1271 | 65 | <xpath expr="/tree/field[@name='name']" position="before"> | 76 | <data> |
1272 | 66 | <field name="code"/> | 77 | <xpath expr="/tree/field[@name='name']" position="before"> |
1273 | 67 | </xpath> | 78 | <field name="code"/> |
1274 | 79 | </xpath> | ||
1275 | 80 | <xpath expr="/tree/field[@name='name']" position="after"> | ||
1276 | 81 | <field name="parent_id"/> | ||
1277 | 82 | </xpath> | ||
1278 | 83 | </data> | ||
1279 | 68 | 84 | ||
1280 | 69 | </field> | 85 | </field> |
1281 | 70 | </record> | 86 | </record> |
1282 | 71 | 87 | ||
1283 | 88 | <!-- ************************************************************** --> | ||
1284 | 89 | <!-- ** Add value to the context, to bypass the protection id ***** --> | ||
1285 | 90 | <!-- ** the warehouse is not well configure *********************** --> | ||
1286 | 91 | <!-- ************************************************************** --> | ||
1287 | 92 | <record id="stock.action_warehouse_form" model="ir.actions.act_window"> | ||
1288 | 93 | <field name="context">{'new_warehouse': True}</field> | ||
1289 | 94 | </record> | ||
1290 | 95 | |||
1291 | 72 | </data> | 96 | </data> |
1292 | 73 | </openerp> | 97 | </openerp> |
1293 | 74 | 98 | ||
1294 | === modified file 'wms/wizard/burst.py' | |||
1295 | --- wms/wizard/burst.py 2011-02-03 15:35:26 +0000 | |||
1296 | +++ wms/wizard/burst.py 2011-02-28 08:44:57 +0000 | |||
1297 | @@ -28,12 +28,12 @@ | |||
1298 | 28 | from tools.translate import _ | 28 | from tools.translate import _ |
1299 | 29 | 29 | ||
1300 | 30 | init_form = """<?xml version="1.0" ?> | 30 | init_form = """<?xml version="1.0" ?> |
1302 | 31 | <form string="Burst"> | 31 | <form string="%s"> |
1303 | 32 | <field name="product_id" colspan="4"/> | 32 | <field name="product_id" colspan="4"/> |
1304 | 33 | <field name="quantity"/> | 33 | <field name="quantity"/> |
1305 | 34 | <field name="remark_id"/> | 34 | <field name="remark_id"/> |
1306 | 35 | </form> | 35 | </form> |
1308 | 36 | """ | 36 | """ % (_('Burst')) |
1309 | 37 | 37 | ||
1310 | 38 | init_fields = { | 38 | init_fields = { |
1311 | 39 | 'product_id': {'string': 'Product', 'type': 'many2one', 'relation': 'product.product', 'required': True, }, | 39 | 'product_id': {'string': 'Product', 'type': 'many2one', 'relation': 'product.product', 'required': True, }, |
1312 | @@ -98,7 +98,7 @@ | |||
1313 | 98 | 'type': 'form', | 98 | 'type': 'form', |
1314 | 99 | 'arch': init_form, | 99 | 'arch': init_form, |
1315 | 100 | 'fields': init_fields, | 100 | 'fields': init_fields, |
1317 | 101 | 'state': [('end','Cancel','gtk-cancel'), ('valid', 'OK', 'gtk-ok', True)], | 101 | 'state': [('end','Finnish','gtk-cancel'), ('valid', 'OK', 'gtk-ok', True)], |
1318 | 102 | } | 102 | } |
1319 | 103 | }, | 103 | }, |
1320 | 104 | 'valid': { | 104 | 'valid': { |
1321 | 105 | 105 | ||
1322 | === modified file 'wms/wizard/generate_wave.py' | |||
1323 | --- wms/wizard/generate_wave.py 2011-02-24 22:02:45 +0000 | |||
1324 | +++ wms/wizard/generate_wave.py 2011-02-28 08:44:57 +0000 | |||
1325 | @@ -31,11 +31,11 @@ | |||
1326 | 31 | _moves_arch = UpdateableStr() | 31 | _moves_arch = UpdateableStr() |
1327 | 32 | 32 | ||
1328 | 33 | init_form = """<?xml version="1.0" ?> | 33 | init_form = """<?xml version="1.0" ?> |
1331 | 34 | <form string="Select cart"> | 34 | <form string="%s"> |
1332 | 35 | <separator string="Affect a cart for these picking" colspan="4"/> | 35 | <separator string="%s" colspan="4"/> |
1333 | 36 | <field name="cart_id" colspan="4" domain="[('categ_id','=', %d)]"/> | 36 | <field name="cart_id" colspan="4" domain="[('categ_id','=', %d)]"/> |
1334 | 37 | </form> | 37 | </form> |
1336 | 38 | """ | 38 | """ |
1337 | 39 | 39 | ||
1338 | 40 | init_fields = { | 40 | init_fields = { |
1339 | 41 | 'cart_id': {'string': 'Cart', 'type': 'many2one', 'required': True, 'relation': 'stock.location'}, | 41 | 'cart_id': {'string': 'Cart', 'type': 'many2one', 'required': True, 'relation': 'stock.location'}, |
1340 | @@ -60,7 +60,7 @@ | |||
1341 | 60 | ir_id = ir_mod_obj._get_id(cr, uid, 'wms_location', 'location_category_chariot') | 60 | ir_id = ir_mod_obj._get_id(cr, uid, 'wms_location', 'location_category_chariot') |
1342 | 61 | id = ir_mod_obj.read(cr, uid, ir_id, ['res_id'])['res_id'] | 61 | id = ir_mod_obj.read(cr, uid, ir_id, ['res_id'])['res_id'] |
1343 | 62 | 62 | ||
1345 | 63 | _moves_arch.string = init_form % id | 63 | _moves_arch.string = init_form % (_('Select cart'), _('Affect a cart for these picking'), id) |
1346 | 64 | 64 | ||
1347 | 65 | for i in pool.get('stock.picking').browse(cr, uid, data['ids'], context=context): | 65 | for i in pool.get('stock.picking').browse(cr, uid, data['ids'], context=context): |
1348 | 66 | if i.type != 'out': | 66 | if i.type != 'out': |
1349 | 67 | 67 | ||
1350 | === modified file 'wms/wizard/wizard.xml' | |||
1351 | --- wms/wizard/wizard.xml 2011-02-24 13:07:22 +0000 | |||
1352 | +++ wms/wizard/wizard.xml 2011-02-28 08:44:57 +0000 | |||
1353 | @@ -31,11 +31,11 @@ | |||
1354 | 31 | name="wms.partial_picking" | 31 | name="wms.partial_picking" |
1355 | 32 | string="Partial packing"/> | 32 | string="Partial packing"/> |
1356 | 33 | 33 | ||
1359 | 34 | <wizard | 34 | <wizard id="stock_burst" |
1360 | 35 | id="stock.burst" | 35 | string="Fast entry" |
1361 | 36 | model="stock.burst" | 36 | model="stock.burst" |
1364 | 37 | name="wms.burst" | 37 | multi="False" |
1365 | 38 | string="Burst"/> | 38 | name="wms.burst"/> |
1366 | 39 | 39 | ||
1367 | 40 | <wizard id="wizard_generate_wave" | 40 | <wizard id="wizard_generate_wave" |
1368 | 41 | string="Generate wave" | 41 | string="Generate wave" |
1369 | 42 | 42 | ||
1370 | === modified file 'wms_inventory/__terp__.py' | |||
1371 | --- wms_inventory/__terp__.py 2010-06-29 05:35:00 +0000 | |||
1372 | +++ wms_inventory/__terp__.py 2011-02-28 08:44:57 +0000 | |||
1373 | @@ -42,6 +42,7 @@ | |||
1374 | 42 | #'security/groups.xml', | 42 | #'security/groups.xml', |
1375 | 43 | #'security/ir.model.access.csv', | 43 | #'security/ir.model.access.csv', |
1376 | 44 | #'view/menu.xml', | 44 | #'view/menu.xml', |
1377 | 45 | 'view/warehouse.xml', | ||
1378 | 45 | 'view/inventory.xml', | 46 | 'view/inventory.xml', |
1379 | 46 | #'wizard/wizard.xml', | 47 | #'wizard/wizard.xml', |
1380 | 47 | #'report/report.xml', | 48 | #'report/report.xml', |
1381 | 48 | 49 | ||
1382 | === modified file 'wms_inventory/i18n/fr_FR.po' | |||
1383 | --- wms_inventory/i18n/fr_FR.po 2010-06-29 09:41:10 +0000 | |||
1384 | +++ wms_inventory/i18n/fr_FR.po 2011-02-28 08:44:57 +0000 | |||
1385 | @@ -5,8 +5,8 @@ | |||
1386 | 5 | msgstr "" | 5 | msgstr "" |
1387 | 6 | "Project-Id-Version: PACKAGE VERSION\n" | 6 | "Project-Id-Version: PACKAGE VERSION\n" |
1388 | 7 | "Report-Msgid-Bugs-To: support@openerp.com\n" | 7 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1391 | 8 | "POT-Creation-Date: 2010-06-29 09:40:16+0000\n" | 8 | "POT-Creation-Date: 2011-02-27 18:39:06+0000\n" |
1392 | 9 | "PO-Revision-Date: 2010-06-29 11:40+0100\n" | 9 | "PO-Revision-Date: 2011-02-27 19:39+0100\n" |
1393 | 10 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" | 10 | "Last-Translator: Christophe Chauvet <christophe.chauvet@syleam.fr>\n" |
1394 | 11 | "Language-Team: LANGUAGE <LL@li.org>\n" | 11 | "Language-Team: LANGUAGE <LL@li.org>\n" |
1395 | 12 | "MIME-Version: 1.0\n" | 12 | "MIME-Version: 1.0\n" |
1396 | @@ -15,9 +15,67 @@ | |||
1397 | 15 | "X-Generator: Translate Toolkit 1.3.0\n" | 15 | "X-Generator: Translate Toolkit 1.3.0\n" |
1398 | 16 | 16 | ||
1399 | 17 | #. module: wms_inventory | 17 | #. module: wms_inventory |
1402 | 18 | #: constraint:ir.ui.view:0 | 18 | #: code:addons/wms_inventory/object/inventory.py:0 |
1403 | 19 | msgid "Invalid XML for View Architecture!" | 19 | #, python-format |
1404 | 20 | msgid "nothing to regulate" | ||
1405 | 21 | msgstr "Rien à régulariser" | ||
1406 | 22 | |||
1407 | 23 | #. module: wms_inventory | ||
1408 | 24 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1409 | 25 | #, python-format | ||
1410 | 26 | msgid "global" | ||
1411 | 27 | msgstr "globale" | ||
1412 | 28 | |||
1413 | 29 | #. module: wms_inventory | ||
1414 | 30 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1415 | 31 | #, python-format | ||
1416 | 32 | msgid "quantity count %.2f" | ||
1417 | 33 | msgstr "quantité comptée %.2f" | ||
1418 | 34 | |||
1419 | 35 | #. module: wms_inventory | ||
1420 | 36 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1421 | 37 | #, python-format | ||
1422 | 38 | msgid "Default inventory location %s" | ||
1423 | 39 | msgstr "Emplacement d'inventaire par défaut %s" | ||
1424 | 40 | |||
1425 | 41 | #. module: wms_inventory | ||
1426 | 42 | #: model:ir.module.module,description:wms_inventory.module_meta_information | ||
1427 | 43 | msgid "" | ||
1428 | 44 | "Module to extended inventory process\n" | ||
1429 | 45 | "- enter production lot in inventory line\n" | ||
1430 | 46 | "- enter serial number in inventory line\n" | ||
1431 | 20 | msgstr "" | 47 | msgstr "" |
1432 | 48 | "Module étendu de gestion du processus de l'inventaire\n" | ||
1433 | 49 | "- gestion des lot de production dans les lignes d'inventaires\n" | ||
1434 | 50 | "- gestion des numéros de série dans les lignes d'inventaires\n" | ||
1435 | 51 | |||
1436 | 52 | #. module: wms_inventory | ||
1437 | 53 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1438 | 54 | #, python-format | ||
1439 | 55 | msgid "quantity to reset %.2f" | ||
1440 | 56 | msgstr "quantité à reinitialisée %.2f" | ||
1441 | 57 | |||
1442 | 58 | #. module: wms_inventory | ||
1443 | 59 | #: field:stock.inventory,warehouse_id:0 | ||
1444 | 60 | msgid "Warehouse" | ||
1445 | 61 | msgstr "Entrepôt" | ||
1446 | 62 | |||
1447 | 63 | #. module: wms_inventory | ||
1448 | 64 | #: field:stock.inventory,type:0 | ||
1449 | 65 | msgid "Type" | ||
1450 | 66 | msgstr "TYpe" | ||
1451 | 67 | |||
1452 | 68 | #. module: wms_inventory | ||
1453 | 69 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1454 | 70 | #, python-format | ||
1455 | 71 | msgid " -> Partial Inventory" | ||
1456 | 72 | msgstr " -> Inventaire partiel" | ||
1457 | 73 | |||
1458 | 74 | #. module: wms_inventory | ||
1459 | 75 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1460 | 76 | #, python-format | ||
1461 | 77 | msgid " [%s]" | ||
1462 | 78 | msgstr " [%s]" | ||
1463 | 21 | 79 | ||
1464 | 22 | #. module: wms_inventory | 80 | #. module: wms_inventory |
1465 | 23 | #: help:stock.inventory,warehouse_id:0 | 81 | #: help:stock.inventory,warehouse_id:0 |
1466 | @@ -25,11 +83,118 @@ | |||
1467 | 25 | msgstr "Sélectionner l'entrepôt ou sera fait cet inventaire" | 83 | msgstr "Sélectionner l'entrepôt ou sera fait cet inventaire" |
1468 | 26 | 84 | ||
1469 | 27 | #. module: wms_inventory | 85 | #. module: wms_inventory |
1470 | 86 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1471 | 87 | #, python-format | ||
1472 | 88 | msgid "init" | ||
1473 | 89 | msgstr "init" | ||
1474 | 90 | |||
1475 | 91 | #. module: wms_inventory | ||
1476 | 92 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1477 | 93 | #, python-format | ||
1478 | 94 | msgid "Cost price %.2f" | ||
1479 | 95 | msgstr "P.U.M.P. %.2f" | ||
1480 | 96 | |||
1481 | 97 | #. module: wms_inventory | ||
1482 | 98 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1483 | 99 | #, python-format | ||
1484 | 100 | msgid "Inventory number %s" | ||
1485 | 101 | msgstr "Inventaire numéro %s" | ||
1486 | 102 | |||
1487 | 103 | #. module: wms_inventory | ||
1488 | 104 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1489 | 105 | #, python-format | ||
1490 | 106 | msgid "analyze" | ||
1491 | 107 | msgstr "analyse" | ||
1492 | 108 | |||
1493 | 109 | #. module: wms_inventory | ||
1494 | 110 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1495 | 111 | #, python-format | ||
1496 | 112 | msgid "product %s" | ||
1497 | 113 | msgstr "produit %s" | ||
1498 | 114 | |||
1499 | 115 | #. module: wms_inventory | ||
1500 | 116 | #: constraint:ir.ui.view:0 | ||
1501 | 117 | msgid "Invalid XML for View Architecture!" | ||
1502 | 118 | msgstr "XML non valide pour cette vue!" | ||
1503 | 119 | |||
1504 | 120 | #. module: wms_inventory | ||
1505 | 121 | #: field:stock.inventory.line,tracking_id:0 | ||
1506 | 122 | msgid "Tracking" | ||
1507 | 123 | msgstr "Suivi" | ||
1508 | 124 | |||
1509 | 125 | #. module: wms_inventory | ||
1510 | 126 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1511 | 127 | #, python-format | ||
1512 | 128 | msgid "quantity to regulate %.2f" | ||
1513 | 129 | msgstr "quantité à régularisé %.2f" | ||
1514 | 130 | |||
1515 | 131 | #. module: wms_inventory | ||
1516 | 132 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1517 | 133 | #, python-format | ||
1518 | 134 | msgid " -> Global Inventory" | ||
1519 | 135 | msgstr " -> Inventaire globale" | ||
1520 | 136 | |||
1521 | 137 | #. module: wms_inventory | ||
1522 | 138 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1523 | 139 | #, python-format | ||
1524 | 140 | msgid "Start to analyse each line" | ||
1525 | 141 | msgstr "Démarrer une analyse pour chaque ligne" | ||
1526 | 142 | |||
1527 | 143 | #. module: wms_inventory | ||
1528 | 144 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1529 | 145 | #, python-format | ||
1530 | 146 | msgid "Validate each inventory line" | ||
1531 | 147 | msgstr "Validation de chaque ligne d'inventaire" | ||
1532 | 148 | |||
1533 | 149 | #. module: wms_inventory | ||
1534 | 150 | #: help:stock.inventory,type:0 | ||
1535 | 151 | msgid "If global, reset all quantity product not found in this inventory" | ||
1536 | 152 | msgstr "Si globale, remise à zéro des quantités produits sur non trouvé dans l'inventaire" | ||
1537 | 153 | |||
1538 | 154 | #. module: wms_inventory | ||
1539 | 155 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1540 | 156 | #, python-format | ||
1541 | 157 | msgid "" | ||
1542 | 158 | "Inventory %s failed\n" | ||
1543 | 159 | "see below\n" | ||
1544 | 160 | msgstr "Échec de l'inventaire %s\n" | ||
1545 | 161 | |||
1546 | 162 | #. module: wms_inventory | ||
1547 | 163 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1548 | 164 | #, python-format | ||
1549 | 165 | msgid "Inventory %s has been finished" | ||
1550 | 166 | msgstr "L'inventaire %s est terminé." | ||
1551 | 167 | |||
1552 | 168 | #. module: wms_inventory | ||
1553 | 169 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1554 | 170 | #, python-format | ||
1555 | 171 | msgid "Finish the current inventory" | ||
1556 | 172 | msgstr "Fin de l'inventaire actuel" | ||
1557 | 173 | |||
1558 | 174 | #. module: wms_inventory | ||
1559 | 175 | #: field:stock.warehouse,lot_inventory_id:0 | ||
1560 | 176 | #: help:stock.warehouse,lot_inventory_id:0 | ||
1561 | 177 | msgid "Default inventory location" | ||
1562 | 178 | msgstr "Emplacement de régul d'inventaire par défaut" | ||
1563 | 179 | |||
1564 | 180 | #. module: wms_inventory | ||
1565 | 181 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1566 | 182 | #, python-format | ||
1567 | 183 | msgid "Compute inventory %s done" | ||
1568 | 184 | msgstr "Calcul de l'inventaire %s terminé" | ||
1569 | 185 | |||
1570 | 186 | #. module: wms_inventory | ||
1571 | 28 | #: selection:stock.inventory,type:0 | 187 | #: selection:stock.inventory,type:0 |
1572 | 29 | msgid "Partial" | 188 | msgid "Partial" |
1573 | 30 | msgstr "Partiel" | 189 | msgstr "Partiel" |
1574 | 31 | 190 | ||
1575 | 32 | #. module: wms_inventory | 191 | #. module: wms_inventory |
1576 | 192 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1577 | 193 | #, python-format | ||
1578 | 194 | msgid "tracking %s" | ||
1579 | 195 | msgstr "suivi %s" | ||
1580 | 196 | |||
1581 | 197 | #. module: wms_inventory | ||
1582 | 33 | #: selection:stock.inventory,type:0 | 198 | #: selection:stock.inventory,type:0 |
1583 | 34 | msgid "Global" | 199 | msgid "Global" |
1584 | 35 | msgstr "Globale" | 200 | msgstr "Globale" |
1585 | @@ -37,16 +202,8 @@ | |||
1586 | 37 | #. module: wms_inventory | 202 | #. module: wms_inventory |
1587 | 38 | #: code:addons/wms_inventory/object/inventory.py:0 | 203 | #: code:addons/wms_inventory/object/inventory.py:0 |
1588 | 39 | #, python-format | 204 | #, python-format |
1599 | 40 | msgid "Compute inventory %s done" | 205 | msgid "quantity in stock %.2f at location %s" |
1600 | 41 | msgstr "Calcul de l'inventaire %s terminé" | 206 | msgstr "Quantité en stock %.2f à cet emplacement %s" |
1591 | 42 | |||
1592 | 43 | #. module: wms_inventory | ||
1593 | 44 | #: model:ir.module.module,description:wms_inventory.module_meta_information | ||
1594 | 45 | msgid "" | ||
1595 | 46 | "Module to extended inventory process\n" | ||
1596 | 47 | "- enter production lot in inventory line\n" | ||
1597 | 48 | "- enter serial number in inventory line\n" | ||
1598 | 49 | msgstr "" | ||
1601 | 50 | 207 | ||
1602 | 51 | #. module: wms_inventory | 208 | #. module: wms_inventory |
1603 | 52 | #: model:ir.module.module,shortdesc:wms_inventory.module_meta_information | 209 | #: model:ir.module.module,shortdesc:wms_inventory.module_meta_information |
1604 | @@ -54,30 +211,22 @@ | |||
1605 | 54 | msgstr "WMS Inventory" | 211 | msgstr "WMS Inventory" |
1606 | 55 | 212 | ||
1607 | 56 | #. module: wms_inventory | 213 | #. module: wms_inventory |
1632 | 57 | #: help:stock.inventory,type:0 | 214 | #: code:addons/wms_inventory/object/inventory.py:0 |
1633 | 58 | msgid "If global, reset all quantity product not found in this inventory" | 215 | #, python-format |
1634 | 59 | msgstr "Si globale, remise à zéro des quantités produits sur non trouvé dans l'inventaire" | 216 | msgid "error" |
1635 | 60 | 217 | msgstr "erreur" | |
1636 | 61 | #. module: wms_inventory | 218 | |
1637 | 62 | #: field:stock.inventory.line,tracking_id:0 | 219 | #. module: wms_inventory |
1638 | 63 | msgid "Tracking" | 220 | #: code:addons/wms_inventory/object/inventory.py:0 |
1639 | 64 | msgstr "Suivi" | 221 | #, python-format |
1640 | 65 | 222 | msgid "action" | |
1641 | 66 | #. module: wms_inventory | 223 | msgstr "action" |
1642 | 67 | #: field:stock.inventory,warehouse_id:0 | 224 | |
1643 | 68 | msgid "Warehouse" | 225 | #. module: wms_inventory |
1644 | 69 | msgstr "Entrepôt" | 226 | #: code:addons/wms_inventory/object/inventory.py:0 |
1645 | 70 | 227 | #, python-format | |
1646 | 71 | #. module: wms_inventory | 228 | msgid "production lot %s" |
1647 | 72 | #: code:addons/wms_inventory/object/inventory.py:0 | 229 | msgstr "lot de production %s" |
1624 | 73 | #, python-format | ||
1625 | 74 | msgid "Inventory %s has been finished" | ||
1626 | 75 | msgstr "L'inventaire %s est terminé." | ||
1627 | 76 | |||
1628 | 77 | #. module: wms_inventory | ||
1629 | 78 | #: field:stock.inventory,type:0 | ||
1630 | 79 | msgid "Type" | ||
1631 | 80 | msgstr "TYpe" | ||
1648 | 81 | 230 | ||
1649 | 82 | #. module: wms_inventory | 231 | #. module: wms_inventory |
1650 | 83 | #: field:stock.inventory.line,prodlot_id:0 | 232 | #: field:stock.inventory.line,prodlot_id:0 |
1651 | @@ -85,6 +234,18 @@ | |||
1652 | 85 | msgstr "Lot de production" | 234 | msgstr "Lot de production" |
1653 | 86 | 235 | ||
1654 | 87 | #, python-format | 236 | #, python-format |
1655 | 237 | #~ msgid "quantity in stock %.2f" | ||
1656 | 238 | #~ msgstr "quantité en stock %.2f" | ||
1657 | 239 | |||
1658 | 240 | #, python-format | ||
1659 | 241 | #~ msgid " %s" | ||
1660 | 242 | #~ msgstr " %s" | ||
1661 | 243 | |||
1662 | 244 | #, python-format | ||
1663 | 245 | #~ msgid "Cost price %s" | ||
1664 | 246 | #~ msgstr "PUMP %s" | ||
1665 | 247 | |||
1666 | 248 | #, python-format | ||
1667 | 88 | #~ msgid "\"\"Inventory %s has been finished\"\"" | 249 | #~ msgid "\"\"Inventory %s has been finished\"\"" |
1668 | 89 | #~ msgstr "\"\"l'inventaire %s est terminé\"\"" | 250 | #~ msgstr "\"\"l'inventaire %s est terminé\"\"" |
1669 | 90 | 251 | ||
1670 | 91 | 252 | ||
1671 | === modified file 'wms_inventory/i18n/wms_inventory.pot' | |||
1672 | --- wms_inventory/i18n/wms_inventory.pot 2010-06-29 09:41:10 +0000 | |||
1673 | +++ wms_inventory/i18n/wms_inventory.pot 2011-02-28 08:44:57 +0000 | |||
1674 | @@ -4,10 +4,10 @@ | |||
1675 | 4 | # | 4 | # |
1676 | 5 | msgid "" | 5 | msgid "" |
1677 | 6 | msgstr "" | 6 | msgstr "" |
1679 | 7 | "Project-Id-Version: OpenERP Server 5.0.11\n" | 7 | "Project-Id-Version: OpenERP Server 5.0.12\n" |
1680 | 8 | "Report-Msgid-Bugs-To: support@openerp.com\n" | 8 | "Report-Msgid-Bugs-To: support@openerp.com\n" |
1683 | 9 | "POT-Creation-Date: 2010-06-29 09:40:16+0000\n" | 9 | "POT-Creation-Date: 2011-02-27 18:39:06+0000\n" |
1684 | 10 | "PO-Revision-Date: 2010-06-29 09:40:16+0000\n" | 10 | "PO-Revision-Date: 2011-02-27 18:39:06+0000\n" |
1685 | 11 | "Last-Translator: <>\n" | 11 | "Last-Translator: <>\n" |
1686 | 12 | "Language-Team: \n" | 12 | "Language-Team: \n" |
1687 | 13 | "MIME-Version: 1.0\n" | 13 | "MIME-Version: 1.0\n" |
1688 | @@ -16,29 +16,27 @@ | |||
1689 | 16 | "Plural-Forms: \n" | 16 | "Plural-Forms: \n" |
1690 | 17 | 17 | ||
1691 | 18 | #. module: wms_inventory | 18 | #. module: wms_inventory |
1715 | 19 | #: constraint:ir.ui.view:0 | 19 | #: code:addons/wms_inventory/object/inventory.py:0 |
1716 | 20 | msgid "Invalid XML for View Architecture!" | 20 | #, python-format |
1717 | 21 | msgstr "" | 21 | msgid "nothing to regulate" |
1718 | 22 | 22 | msgstr "" | |
1719 | 23 | #. module: wms_inventory | 23 | |
1720 | 24 | #: help:stock.inventory,warehouse_id:0 | 24 | #. module: wms_inventory |
1721 | 25 | msgid "Select the warehouse where the inventory is made" | 25 | #: code:addons/wms_inventory/object/inventory.py:0 |
1722 | 26 | msgstr "" | 26 | #, python-format |
1723 | 27 | 27 | msgid "global" | |
1724 | 28 | #. module: wms_inventory | 28 | msgstr "" |
1725 | 29 | #: selection:stock.inventory,type:0 | 29 | |
1726 | 30 | msgid "Partial" | 30 | #. module: wms_inventory |
1727 | 31 | msgstr "" | 31 | #: code:addons/wms_inventory/object/inventory.py:0 |
1728 | 32 | 32 | #, python-format | |
1729 | 33 | #. module: wms_inventory | 33 | msgid "quantity count %.2f" |
1730 | 34 | #: selection:stock.inventory,type:0 | 34 | msgstr "" |
1731 | 35 | msgid "Global" | 35 | |
1732 | 36 | msgstr "" | 36 | #. module: wms_inventory |
1733 | 37 | 37 | #: code:addons/wms_inventory/object/inventory.py:0 | |
1734 | 38 | #. module: wms_inventory | 38 | #, python-format |
1735 | 39 | #: code:addons/wms_inventory/object/inventory.py:0 | 39 | msgid "Default inventory location %s" |
1713 | 40 | #, python-format | ||
1714 | 41 | msgid "Compute inventory %s done" | ||
1736 | 42 | msgstr "" | 40 | msgstr "" |
1737 | 43 | 41 | ||
1738 | 44 | #. module: wms_inventory | 42 | #. module: wms_inventory |
1739 | @@ -50,18 +48,9 @@ | |||
1740 | 50 | msgstr "" | 48 | msgstr "" |
1741 | 51 | 49 | ||
1742 | 52 | #. module: wms_inventory | 50 | #. module: wms_inventory |
1755 | 53 | #: model:ir.module.module,shortdesc:wms_inventory.module_meta_information | 51 | #: code:addons/wms_inventory/object/inventory.py:0 |
1756 | 54 | msgid "Wms Inventory" | 52 | #, python-format |
1757 | 55 | msgstr "" | 53 | msgid "quantity to reset %.2f" |
1746 | 56 | |||
1747 | 57 | #. module: wms_inventory | ||
1748 | 58 | #: help:stock.inventory,type:0 | ||
1749 | 59 | msgid "If global, reset all quantity product not found in this inventory" | ||
1750 | 60 | msgstr "" | ||
1751 | 61 | |||
1752 | 62 | #. module: wms_inventory | ||
1753 | 63 | #: field:stock.inventory.line,tracking_id:0 | ||
1754 | 64 | msgid "Tracking" | ||
1758 | 65 | msgstr "" | 54 | msgstr "" |
1759 | 66 | 55 | ||
1760 | 67 | #. module: wms_inventory | 56 | #. module: wms_inventory |
1761 | @@ -70,17 +59,172 @@ | |||
1762 | 70 | msgstr "" | 59 | msgstr "" |
1763 | 71 | 60 | ||
1764 | 72 | #. module: wms_inventory | 61 | #. module: wms_inventory |
1765 | 73 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1766 | 74 | #, python-format | ||
1767 | 75 | msgid "Inventory %s has been finished" | ||
1768 | 76 | msgstr "" | ||
1769 | 77 | |||
1770 | 78 | #. module: wms_inventory | ||
1771 | 79 | #: field:stock.inventory,type:0 | 62 | #: field:stock.inventory,type:0 |
1772 | 80 | msgid "Type" | 63 | msgid "Type" |
1773 | 81 | msgstr "" | 64 | msgstr "" |
1774 | 82 | 65 | ||
1775 | 83 | #. module: wms_inventory | 66 | #. module: wms_inventory |
1776 | 67 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1777 | 68 | #, python-format | ||
1778 | 69 | msgid " -> Partial Inventory" | ||
1779 | 70 | msgstr "" | ||
1780 | 71 | |||
1781 | 72 | #. module: wms_inventory | ||
1782 | 73 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1783 | 74 | #, python-format | ||
1784 | 75 | msgid " [%s]" | ||
1785 | 76 | msgstr "" | ||
1786 | 77 | |||
1787 | 78 | #. module: wms_inventory | ||
1788 | 79 | #: help:stock.inventory,warehouse_id:0 | ||
1789 | 80 | msgid "Select the warehouse where the inventory is made" | ||
1790 | 81 | msgstr "" | ||
1791 | 82 | |||
1792 | 83 | #. module: wms_inventory | ||
1793 | 84 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1794 | 85 | #, python-format | ||
1795 | 86 | msgid "init" | ||
1796 | 87 | msgstr "" | ||
1797 | 88 | |||
1798 | 89 | #. module: wms_inventory | ||
1799 | 90 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1800 | 91 | #, python-format | ||
1801 | 92 | msgid "Cost price %.2f" | ||
1802 | 93 | msgstr "" | ||
1803 | 94 | |||
1804 | 95 | #. module: wms_inventory | ||
1805 | 96 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1806 | 97 | #, python-format | ||
1807 | 98 | msgid "Inventory number %s" | ||
1808 | 99 | msgstr "" | ||
1809 | 100 | |||
1810 | 101 | #. module: wms_inventory | ||
1811 | 102 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1812 | 103 | #, python-format | ||
1813 | 104 | msgid "analyze" | ||
1814 | 105 | msgstr "" | ||
1815 | 106 | |||
1816 | 107 | #. module: wms_inventory | ||
1817 | 108 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1818 | 109 | #, python-format | ||
1819 | 110 | msgid "product %s" | ||
1820 | 111 | msgstr "" | ||
1821 | 112 | |||
1822 | 113 | #. module: wms_inventory | ||
1823 | 114 | #: constraint:ir.ui.view:0 | ||
1824 | 115 | msgid "Invalid XML for View Architecture!" | ||
1825 | 116 | msgstr "" | ||
1826 | 117 | |||
1827 | 118 | #. module: wms_inventory | ||
1828 | 119 | #: field:stock.inventory.line,tracking_id:0 | ||
1829 | 120 | msgid "Tracking" | ||
1830 | 121 | msgstr "" | ||
1831 | 122 | |||
1832 | 123 | #. module: wms_inventory | ||
1833 | 124 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1834 | 125 | #, python-format | ||
1835 | 126 | msgid "quantity to regulate %.2f" | ||
1836 | 127 | msgstr "" | ||
1837 | 128 | |||
1838 | 129 | #. module: wms_inventory | ||
1839 | 130 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1840 | 131 | #, python-format | ||
1841 | 132 | msgid " -> Global Inventory" | ||
1842 | 133 | msgstr "" | ||
1843 | 134 | |||
1844 | 135 | #. module: wms_inventory | ||
1845 | 136 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1846 | 137 | #, python-format | ||
1847 | 138 | msgid "Start to analyse each line" | ||
1848 | 139 | msgstr "" | ||
1849 | 140 | |||
1850 | 141 | #. module: wms_inventory | ||
1851 | 142 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1852 | 143 | #, python-format | ||
1853 | 144 | msgid "Validate each inventory line" | ||
1854 | 145 | msgstr "" | ||
1855 | 146 | |||
1856 | 147 | #. module: wms_inventory | ||
1857 | 148 | #: help:stock.inventory,type:0 | ||
1858 | 149 | msgid "If global, reset all quantity product not found in this inventory" | ||
1859 | 150 | msgstr "" | ||
1860 | 151 | |||
1861 | 152 | #. module: wms_inventory | ||
1862 | 153 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1863 | 154 | #, python-format | ||
1864 | 155 | msgid "Inventory %s failed\nsee below\n" | ||
1865 | 156 | msgstr "" | ||
1866 | 157 | |||
1867 | 158 | #. module: wms_inventory | ||
1868 | 159 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1869 | 160 | #, python-format | ||
1870 | 161 | msgid "Inventory %s has been finished" | ||
1871 | 162 | msgstr "" | ||
1872 | 163 | |||
1873 | 164 | #. module: wms_inventory | ||
1874 | 165 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1875 | 166 | #, python-format | ||
1876 | 167 | msgid "Finish the current inventory" | ||
1877 | 168 | msgstr "" | ||
1878 | 169 | |||
1879 | 170 | #. module: wms_inventory | ||
1880 | 171 | #: field:stock.warehouse,lot_inventory_id:0 | ||
1881 | 172 | #: help:stock.warehouse,lot_inventory_id:0 | ||
1882 | 173 | msgid "Default inventory location" | ||
1883 | 174 | msgstr "" | ||
1884 | 175 | |||
1885 | 176 | #. module: wms_inventory | ||
1886 | 177 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1887 | 178 | #, python-format | ||
1888 | 179 | msgid "Compute inventory %s done" | ||
1889 | 180 | msgstr "" | ||
1890 | 181 | |||
1891 | 182 | #. module: wms_inventory | ||
1892 | 183 | #: selection:stock.inventory,type:0 | ||
1893 | 184 | msgid "Partial" | ||
1894 | 185 | msgstr "" | ||
1895 | 186 | |||
1896 | 187 | #. module: wms_inventory | ||
1897 | 188 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1898 | 189 | #, python-format | ||
1899 | 190 | msgid "tracking %s" | ||
1900 | 191 | msgstr "" | ||
1901 | 192 | |||
1902 | 193 | #. module: wms_inventory | ||
1903 | 194 | #: selection:stock.inventory,type:0 | ||
1904 | 195 | msgid "Global" | ||
1905 | 196 | msgstr "" | ||
1906 | 197 | |||
1907 | 198 | #. module: wms_inventory | ||
1908 | 199 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1909 | 200 | #, python-format | ||
1910 | 201 | msgid "quantity in stock %.2f at location %s" | ||
1911 | 202 | msgstr "" | ||
1912 | 203 | |||
1913 | 204 | #. module: wms_inventory | ||
1914 | 205 | #: model:ir.module.module,shortdesc:wms_inventory.module_meta_information | ||
1915 | 206 | msgid "Wms Inventory" | ||
1916 | 207 | msgstr "" | ||
1917 | 208 | |||
1918 | 209 | #. module: wms_inventory | ||
1919 | 210 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1920 | 211 | #, python-format | ||
1921 | 212 | msgid "error" | ||
1922 | 213 | msgstr "" | ||
1923 | 214 | |||
1924 | 215 | #. module: wms_inventory | ||
1925 | 216 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1926 | 217 | #, python-format | ||
1927 | 218 | msgid "action" | ||
1928 | 219 | msgstr "" | ||
1929 | 220 | |||
1930 | 221 | #. module: wms_inventory | ||
1931 | 222 | #: code:addons/wms_inventory/object/inventory.py:0 | ||
1932 | 223 | #, python-format | ||
1933 | 224 | msgid "production lot %s" | ||
1934 | 225 | msgstr "" | ||
1935 | 226 | |||
1936 | 227 | #. module: wms_inventory | ||
1937 | 84 | #: field:stock.inventory.line,prodlot_id:0 | 228 | #: field:stock.inventory.line,prodlot_id:0 |
1938 | 85 | msgid "Production Lot" | 229 | msgid "Production Lot" |
1939 | 86 | msgstr "" | 230 | msgstr "" |
1940 | 87 | 231 | ||
1941 | === modified file 'wms_inventory/object/__init__.py' | |||
1942 | --- wms_inventory/object/__init__.py 2010-06-29 05:35:00 +0000 | |||
1943 | +++ wms_inventory/object/__init__.py 2011-02-28 08:44:57 +0000 | |||
1944 | @@ -22,6 +22,7 @@ | |||
1945 | 22 | # | 22 | # |
1946 | 23 | ############################################################################## | 23 | ############################################################################## |
1947 | 24 | 24 | ||
1948 | 25 | import warehouse | ||
1949 | 25 | import inventory | 26 | import inventory |
1950 | 26 | 27 | ||
1951 | 27 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | 28 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
1952 | 28 | 29 | ||
1953 | === modified file 'wms_inventory/object/inventory.py' | |||
1954 | --- wms_inventory/object/inventory.py 2010-07-06 06:33:28 +0000 | |||
1955 | +++ wms_inventory/object/inventory.py 2011-02-28 08:44:57 +0000 | |||
1956 | @@ -30,13 +30,15 @@ | |||
1957 | 30 | import thread | 30 | import thread |
1958 | 31 | import pooler | 31 | import pooler |
1959 | 32 | import time | 32 | import time |
1960 | 33 | import tempfile | ||
1961 | 34 | import base64 | ||
1962 | 33 | 35 | ||
1963 | 34 | 36 | ||
1964 | 35 | class Inventory(osv.osv): | 37 | class Inventory(osv.osv): |
1965 | 36 | _inherit = 'stock.inventory' | 38 | _inherit = 'stock.inventory' |
1966 | 37 | 39 | ||
1967 | 38 | _columns = { | 40 | _columns = { |
1969 | 39 | 'type': fields.selection([('global','Global'),('partial','Partial')], 'Type', | 41 | 'type': fields.selection([('global', 'Global'), ('partial', 'Partial')], 'Type', |
1970 | 40 | help='If global, reset all quantity product not found in this inventory'), | 42 | help='If global, reset all quantity product not found in this inventory'), |
1971 | 41 | 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True, | 43 | 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True, |
1972 | 42 | help='Select the warehouse where the inventory is made'), | 44 | help='Select the warehouse where the inventory is made'), |
1973 | @@ -47,7 +49,6 @@ | |||
1974 | 47 | 'warehouse_id': lambda obj, cr, uid, context: obj.pool.get('res.users')._default_warehouse(cr, uid, context), | 49 | 'warehouse_id': lambda obj, cr, uid, context: obj.pool.get('res.users')._default_warehouse(cr, uid, context), |
1975 | 48 | } | 50 | } |
1976 | 49 | 51 | ||
1977 | 50 | |||
1978 | 51 | def action_done(self, cr, uid, ids, context=None): | 52 | def action_done(self, cr, uid, ids, context=None): |
1979 | 52 | """ | 53 | """ |
1980 | 53 | Validate the inventory, it take a lot of time and must be launch in multi thread | 54 | Validate the inventory, it take a lot of time and must be launch in multi thread |
1981 | @@ -57,66 +58,156 @@ | |||
1982 | 57 | Treatment launch as a new thread | 58 | Treatment launch as a new thread |
1983 | 58 | Must be include production lot and tracking | 59 | Must be include production lot and tracking |
1984 | 59 | """ | 60 | """ |
1985 | 61 | def log_message(fic, section, message): | ||
1986 | 62 | """ | ||
1987 | 63 | Format the content of the logfile | ||
1988 | 64 | """ | ||
1989 | 65 | fic.write('[%s] %s: %s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'), section.encode('utf-8'), message.encode('utf-8'))) | ||
1990 | 66 | |||
1991 | 60 | logger = netsvc.Logger() | 67 | logger = netsvc.Logger() |
1993 | 61 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Start compute the inventory *********' % cr.dbname) | 68 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Start compute the inventory *********' % cr.dbname) |
1994 | 62 | cr = pooler.get_db(cr.dbname).cursor() | 69 | cr = pooler.get_db(cr.dbname).cursor() |
1995 | 63 | for inv in self.browse(cr, uid, ids): | 70 | for inv in self.browse(cr, uid, ids): |
2000 | 64 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Inventory %s' % (cr.dbname, inv.name)) | 71 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Inventory %s' % (cr.dbname, inv.name)) |
2001 | 65 | move_ids = [] | 72 | # For each inventory, we save all step in the log file |
2002 | 66 | move_line = [] | 73 | outfp = tempfile.NamedTemporaryFile(prefix='openerp', suffix='inventory') |
2003 | 67 | inv_ok = True | 74 | log_message(outfp, _('init'), _('Inventory number %s') % inv.name) |
2004 | 75 | if inv.type == 'partial': | ||
2005 | 76 | log_message(outfp, _('init'), _(' -> Partial Inventory')) | ||
2006 | 77 | else: | ||
2007 | 78 | log_message(outfp, _('init'), _(' -> Global Inventory')) | ||
2008 | 68 | inv_message = '' | 79 | inv_message = '' |
2035 | 69 | for line in inv.inventory_line_id: | 80 | # If default inventory location is missing in the warehouse, we add information in the logfile and exit properly |
2036 | 70 | pid = line.product_id.id | 81 | if inv.warehouse_id.lot_inventory_id: |
2037 | 71 | price = line.product_id.standard_price or 0.0 | 82 | log_message(outfp, _('init'), _('Default inventory location %s') % inv.warehouse_id.lot_inventory_id.name) |
2038 | 72 | prodlot = line.prodlot_id and line.prodlot_id.id or False | 83 | move_ids = [] |
2039 | 73 | tracking = line.tracking_id and line.tracking_id.id or False | 84 | move_line = [] |
2040 | 74 | amount = self.pool.get('stock.location')._stock_get(cr, uid, line.location_id.id, [pid], | 85 | inv_ok = True |
2041 | 75 | {'uom': line.product_uom.id, 'prodlot': prodlot, 'tracking': tracking}) | 86 | tmp_prod = [] |
2042 | 76 | change = line.product_qty - amount | 87 | log_message(outfp, 'init', _('Start to analyse each line')) |
2043 | 77 | if change: | 88 | for line in inv.inventory_line_id: |
2044 | 78 | location_id = line.product_id.product_tmpl_id.property_stock_inventory.id | 89 | log_message(outfp, _('analyze'), '**********************') |
2045 | 79 | value = { | 90 | pid = line.product_id.id |
2046 | 80 | 'name': 'INV:' + str(line.inventory_id.id) + ':' + line.inventory_id.name, | 91 | log_message(outfp, _('analyze'), _('product %s') % line.product_id.name) |
2047 | 81 | 'product_id': line.product_id.id, | 92 | log_message(outfp, _('analyze'), _(' [%s]') % line.product_id.default_code) |
2048 | 82 | 'product_uom': line.product_uom.id, | 93 | price = line.product_id.standard_price or 0.0 |
2049 | 83 | 'date': inv.date, | 94 | log_message(outfp, _('analyze'), _('Cost price %.2f') % line.product_id.standard_price) |
2050 | 84 | 'date_planned': inv.date, | 95 | prodlot = line.prodlot_id and line.prodlot_id.id or False |
2051 | 85 | 'state': 'assigned', | 96 | if prodlot: |
2052 | 86 | 'prodlot_id': prodlot, | 97 | log_message(outfp, _('analyze'), _('production lot %s') % line.prodlot_id.name) |
2053 | 87 | 'tracking_id': tracking, | 98 | tracking = line.tracking_id and line.tracking_id.id or False |
2054 | 88 | } | 99 | if tracking: |
2055 | 89 | if change > 0: | 100 | log_message(outfp, _('analyze'), _('tracking %s') % line.tracking_id.name) |
2056 | 90 | value.update( { | 101 | |
2057 | 91 | 'product_qty': change, | 102 | amount = self.pool.get('stock.location')._stock_get(cr, uid, line.location_id.id, [pid], |
2058 | 92 | 'location_id': location_id, | 103 | {'uom': line.product_uom.id, 'prodlot': prodlot, 'tracking': tracking}) |
2059 | 93 | 'location_dest_id': line.location_id.id, | 104 | log_message(outfp, _('analyze'), _('quantity in stock %.2f at location %s') % (amount, line.location_id.name)) |
2060 | 94 | }) | 105 | log_message(outfp, _('analyze'), _('quantity count %.2f') % line.product_qty) |
2061 | 106 | |||
2062 | 107 | # for global inventory, we keep if we found this product | ||
2063 | 108 | tmp_prod.append('%d_%d_%d_%d' % (line.product_id.id, line.location_id.id, prodlot or 0, tracking or 0)) | ||
2064 | 109 | change = line.product_qty - amount | ||
2065 | 110 | if not change: | ||
2066 | 111 | log_message(outfp, _('action'), _('nothing to regulate')) | ||
2067 | 95 | else: | 112 | else: |
2071 | 96 | value.update( { | 113 | log_message(outfp, _('action'), _('quantity to regulate %.2f') % change) |
2072 | 97 | 'product_qty': -change, | 114 | location_id = line.product_id.product_tmpl_id.property_stock_inventory.id or inv.warehouse_id.lot_inventory_id.id |
2073 | 98 | 'location_id': line.location_id.id, | 115 | value = { |
2074 | 116 | 'name': 'INV:' + str(line.inventory_id.id) + ':' + line.inventory_id.name, | ||
2075 | 117 | 'product_id': line.product_id.id, | ||
2076 | 118 | 'product_uom': line.product_uom.id, | ||
2077 | 119 | 'date': inv.date, | ||
2078 | 120 | 'date_planned': inv.date, | ||
2079 | 121 | 'state': 'assigned', | ||
2080 | 122 | 'prodlot_id': prodlot, | ||
2081 | 123 | 'tracking_id': tracking, | ||
2082 | 124 | } | ||
2083 | 125 | if change > 0: | ||
2084 | 126 | value.update({ | ||
2085 | 127 | 'product_qty': change, | ||
2086 | 128 | 'location_id': location_id, | ||
2087 | 129 | 'location_dest_id': line.location_id.id, | ||
2088 | 130 | }) | ||
2089 | 131 | else: | ||
2090 | 132 | value.update({ | ||
2091 | 133 | 'product_qty': -change, | ||
2092 | 134 | 'location_id': line.location_id.id, | ||
2093 | 135 | 'location_dest_id': location_id, | ||
2094 | 136 | }) | ||
2095 | 137 | try: | ||
2096 | 138 | move_ids.append(self.pool.get('stock.move').create(cr, uid, value)) | ||
2097 | 139 | except except_orm, e: | ||
2098 | 140 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] %s %s' % (cr.dbname, e.name, e.value)) | ||
2099 | 141 | log_message(outfp, _('error'), '[%s] %s %s' % (cr.dbname, e.name, e.value)) | ||
2100 | 142 | inv_message += ' %s: %s\n' % (e.name, e.value) | ||
2101 | 143 | inv_ok = False | ||
2102 | 144 | |||
2103 | 145 | ## | ||
2104 | 146 | ## Global inventory must reset the missing product, on this warehouse | ||
2105 | 147 | log_message(outfp, _('global'), '===========================================') | ||
2106 | 148 | if inv.type == 'global': | ||
2107 | 149 | avail_obj = self.pool.get('wms.report.stock.available') | ||
2108 | 150 | args = [ | ||
2109 | 151 | ('warehouse_id', '=', inv.warehouse_id.id), | ||
2110 | 152 | ] | ||
2111 | 153 | avail_ids = avail_obj.search(cr, uid, args, context=context) | ||
2112 | 154 | for a in avail_obj.browse(cr, uid, avail_ids, context=context): | ||
2113 | 155 | log_message(outfp, _('analyze'), '**********************') | ||
2114 | 156 | # Check if this product was already found at this location | ||
2115 | 157 | tmp_key = '%d_%d_%d_%d' % (a.product_id.id, a.location_id.id, | ||
2116 | 158 | a.prodlot_id and a.prodlot_id.id or 0, a.tracking_id and a.tracking_id.id or 0) | ||
2117 | 159 | |||
2118 | 160 | if tmp_key in tmp_prod: | ||
2119 | 161 | continue | ||
2120 | 162 | |||
2121 | 163 | log_message(outfp, _('analyze'), _('product %s') % a.product_id.name) | ||
2122 | 164 | log_message(outfp, _('analyze'), _(' [%s]') % a.product_id.default_code) | ||
2123 | 165 | if a.prodlot_id: | ||
2124 | 166 | log_message(outfp, _('analyze'), _('production lot %s') % a.prodlot_id.name) | ||
2125 | 167 | if a.tracking_id: | ||
2126 | 168 | log_message(outfp, _('analyze'), _('tracking %s') % a.tracking_id.name) | ||
2127 | 169 | log_message(outfp, _('action'), _('quantity to reset %.2f') % a.qty) | ||
2128 | 170 | |||
2129 | 171 | location_id = line.product_id.product_tmpl_id.property_stock_inventory.id or inv.warehouse_id.lot_inventory_id.id | ||
2130 | 172 | value = { | ||
2131 | 173 | 'name': 'INV: reset qty: ' + line.inventory_id.name, | ||
2132 | 174 | 'product_id': a.product_id.id, | ||
2133 | 175 | 'product_uom': a.uom_id.id, | ||
2134 | 176 | 'date': inv.date, | ||
2135 | 177 | 'date_planned': inv.date, | ||
2136 | 178 | 'state': 'assigned', | ||
2137 | 179 | 'prodlot_id': a.prodlot_id and a.prodlot_id.id or False, | ||
2138 | 180 | 'tracking_id': a.tracking_id and a.tracking_id.id or False, | ||
2139 | 181 | 'product_qty': a.qty, | ||
2140 | 182 | 'location_id': a.location_id.id, | ||
2141 | 99 | 'location_dest_id': location_id, | 183 | 'location_dest_id': location_id, |
2143 | 100 | }) | 184 | } |
2144 | 185 | try: | ||
2145 | 186 | move_ids.append(self.pool.get('stock.move').create(cr, uid, value)) | ||
2146 | 187 | except except_orm, e: | ||
2147 | 188 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] %s %s' % (cr.dbname, e.name, e.value)) | ||
2148 | 189 | log_message(outfp, _('error'), '[%s] %s %s' % (cr.dbname, e.name, e.value)) | ||
2149 | 190 | inv_message += ' %s: %s\n' % (e.name, e.value) | ||
2150 | 191 | inv_ok = False | ||
2151 | 192 | |||
2152 | 193 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Compute each line' % cr.dbname) | ||
2153 | 194 | log_message(outfp, _('action'), _('Validate each inventory line')) | ||
2154 | 195 | if len(move_ids) and inv_ok: | ||
2155 | 101 | try: | 196 | try: |
2157 | 102 | move_ids.append(self.pool.get('stock.move').create(cr, uid, value)) | 197 | self.pool.get('stock.move').action_done(cr, uid, move_ids, |
2158 | 198 | context=context) | ||
2159 | 103 | except except_orm, e: | 199 | except except_orm, e: |
2161 | 104 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] %s %s' % (cr.dbname, e.name, e.value)) | 200 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] %s %s' % (cr.dbname, e.name, e.value)) |
2162 | 105 | inv_message += ' %s: %s\n' % (e.name, e.value) | 201 | inv_message += ' %s: %s\n' % (e.name, e.value) |
2163 | 106 | inv_ok = False | 202 | inv_ok = False |
2164 | 107 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] Compute each line' % cr.dbname) | ||
2165 | 108 | if len(move_ids) and inv_ok: | ||
2166 | 109 | try: | ||
2167 | 110 | self.pool.get('stock.move').action_done(cr, uid, move_ids, | ||
2168 | 111 | context=context) | ||
2169 | 112 | except except_orm, e: | ||
2170 | 113 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] %s %s' % (cr.dbname, e.name, e.value)) | ||
2171 | 114 | inv_message += ' %s: %s\n' % (e.name, e.value) | ||
2172 | 115 | inv_ok = False | ||
2173 | 116 | 203 | ||
2177 | 117 | if inv_ok: | 204 | log_message(outfp, _('action'), _('Finish the current inventory')) |
2178 | 118 | self.write(cr, uid, [inv.id], {'state': 'done', 'date_done': time.strftime('%Y-%m-%d %H:%M:%S'), | 205 | if inv_ok: |
2179 | 119 | 'move_ids': [(6, 0, move_ids)]}) | 206 | self.write(cr, uid, [inv.id], {'state': 'done', 'date_done': time.strftime('%Y-%m-%d %H:%M:%S'), |
2180 | 207 | 'move_ids': [(6, 0, move_ids)]}) | ||
2181 | 208 | else: | ||
2182 | 209 | log_message(outfp, 'error', 'defaut inventory location is missing on the warehouse %s' % inv.warehouse_id.name) | ||
2183 | 210 | inv_ok = False | ||
2184 | 120 | 211 | ||
2185 | 121 | ### | 212 | ### |
2186 | 122 | ## Send a request to the user whom launch the validation | 213 | ## Send a request to the user whom launch the validation |
2187 | @@ -131,12 +222,25 @@ | |||
2188 | 131 | 'name': _('Compute inventory %s done') % inv.name, | 222 | 'name': _('Compute inventory %s done') % inv.name, |
2189 | 132 | 'act_from': uid, | 223 | 'act_from': uid, |
2190 | 133 | 'act_to': uid, | 224 | 'act_to': uid, |
2192 | 134 | 'body' : body, | 225 | 'body': body, |
2193 | 135 | }, context=context) | 226 | }, context=context) |
2194 | 136 | 227 | ||
2195 | 228 | # Store the logfile as attachment | ||
2196 | 229 | outfp.flush() | ||
2197 | 230 | outfp.seek(0) | ||
2198 | 231 | vals = { | ||
2199 | 232 | 'datas': base64.encodestring(outfp.read()), | ||
2200 | 233 | 'datas_fname': 'inv_%s' % inv.name, | ||
2201 | 234 | 'name': 'INV %s' % inv.name, | ||
2202 | 235 | 'res_model': 'stock.inventory', | ||
2203 | 236 | 'res_id': inv.id, | ||
2204 | 237 | } | ||
2205 | 238 | self.pool.get('ir.attachment').create(cr, uid, vals, context=context) | ||
2206 | 239 | outfp.close() | ||
2207 | 240 | |||
2208 | 137 | cr.commit() | 241 | cr.commit() |
2209 | 138 | cr.close() | 242 | cr.close() |
2211 | 139 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] End compute the inventory ***********' % cr.dbname) | 243 | logger.notifyChannel('wms_inventory', netsvc.LOG_INFO, '[%s] End compute the inventory ***********' % cr.dbname) |
2212 | 140 | return True | 244 | return True |
2213 | 141 | 245 | ||
2214 | 142 | thread.start_new_thread(threading_done, (cr, uid, ids, context)) | 246 | thread.start_new_thread(threading_done, (cr, uid, ids, context)) |
2215 | @@ -144,6 +248,7 @@ | |||
2216 | 144 | 248 | ||
2217 | 145 | Inventory() | 249 | Inventory() |
2218 | 146 | 250 | ||
2219 | 251 | |||
2220 | 147 | class InventoryLine(osv.osv): | 252 | class InventoryLine(osv.osv): |
2221 | 148 | _inherit = 'stock.inventory.line' | 253 | _inherit = 'stock.inventory.line' |
2222 | 149 | 254 | ||
2223 | 150 | 255 | ||
2224 | === added file 'wms_inventory/object/warehouse.py' | |||
2225 | --- wms_inventory/object/warehouse.py 1970-01-01 00:00:00 +0000 | |||
2226 | +++ wms_inventory/object/warehouse.py 2011-02-28 08:44:57 +0000 | |||
2227 | @@ -0,0 +1,37 @@ | |||
2228 | 1 | # -*- coding: utf-8 -*- | ||
2229 | 2 | ############################################################################## | ||
2230 | 3 | # | ||
2231 | 4 | # wms_inventory module for OpenERP, Module to extended inventory process | ||
2232 | 5 | # Copyright (C) 2011 SYLEAM (<http://www.syleam.fr/>) | ||
2233 | 6 | # Christophe CHAUVET <christophe.chauvet@syleam.fr> | ||
2234 | 7 | # | ||
2235 | 8 | # This file is a part of wms_inventory | ||
2236 | 9 | # | ||
2237 | 10 | # wms_inventory is free software: you can redistribute it and/or modify | ||
2238 | 11 | # it under the terms of the GNU General Public License as published by | ||
2239 | 12 | # the Free Software Foundation, either version 3 of the License, or | ||
2240 | 13 | # (at your option) any later version. | ||
2241 | 14 | # | ||
2242 | 15 | # wms_inventory is distributed in the hope that it will be useful, | ||
2243 | 16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
2244 | 17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
2245 | 18 | # GNU General Public License for more details. | ||
2246 | 19 | # | ||
2247 | 20 | # You should have received a copy of the GNU General Public License | ||
2248 | 21 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2249 | 22 | # | ||
2250 | 23 | ############################################################################## | ||
2251 | 24 | |||
2252 | 25 | from osv import osv | ||
2253 | 26 | from osv import fields | ||
2254 | 27 | |||
2255 | 28 | class StockWarehouse(osv.osv): | ||
2256 | 29 | _inherit = 'stock.warehouse' | ||
2257 | 30 | |||
2258 | 31 | _columns = { | ||
2259 | 32 | 'lot_inventory_id': fields.many2one('stock.location', 'Default inventory location', help='Default inventory location'), | ||
2260 | 33 | } | ||
2261 | 34 | |||
2262 | 35 | StockWarehouse() | ||
2263 | 36 | |||
2264 | 37 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
2265 | 0 | 38 | ||
2266 | === added file 'wms_inventory/view/warehouse.xml' | |||
2267 | --- wms_inventory/view/warehouse.xml 1970-01-01 00:00:00 +0000 | |||
2268 | +++ wms_inventory/view/warehouse.xml 2011-02-28 08:44:57 +0000 | |||
2269 | @@ -0,0 +1,41 @@ | |||
2270 | 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2271 | 2 | <openerp> | ||
2272 | 3 | <data> | ||
2273 | 4 | ############################################################################## | ||
2274 | 5 | # | ||
2275 | 6 | # wms_inventory module for OpenERP, Module to extended inventory process | ||
2276 | 7 | # Copyright (C) 2011 SYLEAM ([http://www.syleam.fr/]) | ||
2277 | 8 | # Christophe CHAUVET [christophe.chauvet@syleam.fr] | ||
2278 | 9 | # | ||
2279 | 10 | # This file is a part of wms_inventory | ||
2280 | 11 | # | ||
2281 | 12 | # wms_inventory is free software: you can redistribute it and/or modify | ||
2282 | 13 | # it under the terms of the GNU General Public License as published by | ||
2283 | 14 | # the Free Software Foundation, either version 3 of the License, or | ||
2284 | 15 | # (at your option) any later version. | ||
2285 | 16 | # | ||
2286 | 17 | # wms_inventory is distributed in the hope that it will be useful, | ||
2287 | 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
2288 | 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
2289 | 20 | # GNU General Public License for more details. | ||
2290 | 21 | # | ||
2291 | 22 | # You should have received a copy of the GNU General Public License | ||
2292 | 23 | # along with this program. If not, see [http://www.gnu.org/licenses/]. | ||
2293 | 24 | # | ||
2294 | 25 | ############################################################################## | ||
2295 | 26 | |||
2296 | 27 | <record id="view_stock_warehouse_inventory_form" model="ir.ui.view"> | ||
2297 | 28 | <field name="name">stock.warehouse - inventory</field> | ||
2298 | 29 | <field name="model">stock.warehouse</field> | ||
2299 | 30 | <field name="type">form</field> | ||
2300 | 31 | <field name="priority" eval="18"/> | ||
2301 | 32 | <field name="inherit_id" ref="stock.view_warehouse"/> | ||
2302 | 33 | <field name="arch" type="xml"> | ||
2303 | 34 | <xpath expr="/form/field[@name='crossdock_location_id']" position="after"> | ||
2304 | 35 | <field name="lot_inventory_id" domain="[('warehouse_id','=', active_id),('usage','=', 'inventory')]"/> | ||
2305 | 36 | </xpath> | ||
2306 | 37 | </field> | ||
2307 | 38 | </record> | ||
2308 | 39 | |||
2309 | 40 | </data> | ||
2310 | 41 | </openerp> | ||
2311 | 0 | 42 | ||
2312 | === modified file 'wms_location/object/location.py' | |||
2313 | --- wms_location/object/location.py 2011-01-24 21:52:52 +0000 | |||
2314 | +++ wms_location/object/location.py 2011-02-28 08:44:57 +0000 | |||
2315 | @@ -110,6 +110,7 @@ | |||
2316 | 110 | ('product_uom', '=', context.get('uom')), | 110 | ('product_uom', '=', context.get('uom')), |
2317 | 111 | ('prodlot_id', '=', context.get('prodlot', False)), | 111 | ('prodlot_id', '=', context.get('prodlot', False)), |
2318 | 112 | ('tracking_id', '=', context.get('tracking', False)), | 112 | ('tracking_id', '=', context.get('tracking', False)), |
2319 | 113 | ('state', '=', 'done'), | ||
2320 | 113 | ] | 114 | ] |
2321 | 114 | move_ids = move_obj.search(cr, uid, args, context=context) | 115 | move_ids = move_obj.search(cr, uid, args, context=context) |
2322 | 115 | move = move_obj.read(cr, uid, move_ids, ['product_qty'], context=context) | 116 | move = move_obj.read(cr, uid, move_ids, ['product_qty'], context=context) |
The regression test pass successfull