Merge lp:~matjaz-6/openerpsl/openerpsl_01_07 into lp:openerpsl/7.0
- openerpsl_01_07
- Merge into 7.0
Proposed by
Matjaz Kalic
Status: | Merged |
---|---|
Merged at revision: | 259 |
Proposed branch: | lp:~matjaz-6/openerpsl/openerpsl_01_07 |
Merge into: | lp:openerpsl/7.0 |
Diff against target: |
315 lines (+140/-32) 4 files modified
m_web_api/m_web.py (+28/-1) m_web_api/static/src/basket_delivery.html (+2/-2) m_web_api/static/src/js/core.js (+61/-19) mrp_procurement_qty/wizard/procurement_order.py (+49/-10) |
To merge this branch: | bzr merge lp:~matjaz-6/openerpsl/openerpsl_01_07 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mentis | Pending | ||
Review via email: mp+201299@code.launchpad.net |
Commit message
Description of the change
[FIX] mrp_procurement_qty (merging man.orders + update procurement orders with new qty)
[FIX] m_web_api (login fixed, new izdelki logic)
To post a comment you must log in.
- 259. By Dušan Laznik (Mentis)
-
[FIX] mrp_procurement_qty (merging man.orders + update procurement orders with new qty)
[FIX] m_web_api (login fixed, new izdelki logic)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'm_web_api/m_web.py' |
2 | --- m_web_api/m_web.py 2013-12-31 15:30:33 +0000 |
3 | +++ m_web_api/m_web.py 2014-01-11 20:34:58 +0000 |
4 | @@ -88,13 +88,40 @@ |
5 | self.get_qty_delivery_available(cr,uid,line_id,False,False) |
6 | return True |
7 | |
8 | - def set_izdelek_produced1(self, cr, uid, line_id,kol1,kol2,kol3,status): |
9 | + def set_izdelek_produced1(self, cr, uid, line_id,kol1,kol2,kol3,status,vrstaIzdelka): |
10 | |
11 | commit = False |
12 | old_produced = self.browse(cr, uid, [line_id])[0]['produced'] |
13 | produced_stock = self.browse(cr, uid, [line_id])[0]['produced_stock'] |
14 | scrap = self.browse(cr, uid, [line_id])[0]['scrap'] |
15 | current_qty_available = self.browse(cr, uid, [line_id])[0]['product_on_bom_qty_available'] |
16 | + product_bom_id = self.browse(cr, uid, [line_id])[0]['product_with_bom_id'] #Izdelek iz katerega je ta produkt narejen |
17 | + current_status_izdelek = self.browse(cr, uid, [line_id])[0]['status_izdelki'] |
18 | + |
19 | + |
20 | + #Ce je izdelek v 'gotovo' in ga zelimo vrniti v 'delu' in je izdelano 0 in na voljo 0 prepreci premik |
21 | + #Mora povecati kolicino ki je na voljo, da ga lahko premakne nazaj v delo |
22 | + if (current_status_izdelek == 1) and (status == 0) and (old_produced == 0) and (current_qty_available == 0): |
23 | + return 'must_not_move' |
24 | + |
25 | + |
26 | + #Ce zakljucujemo in ni dodelava in nismo porabili vsega kar je na voljo |
27 | + #moramo najti a so se kaki produkti ki imajo enako osnovo in jih se nismo zakljucili |
28 | + if (status == 1) and (vrstaIzdelka == 'Izdelki') and (current_qty_available - (float(kol1)-old_produced) >= 0): |
29 | + same_base_ids = self.pool.get('mrp.production').search(cr, uid, [ |
30 | + ('product_with_bom_id', '=', product_bom_id), |
31 | + ('id', '!=', line_id), |
32 | + ('status_izdelki', '=', 0) |
33 | + ]) |
34 | + |
35 | + if (not same_base_ids): #ni vec izdelka z isto osnovo, torej moramo pri tem uporabiti celo osnovo |
36 | + if (current_qty_available - (float(kol1)-old_produced) > 0): |
37 | + return 'not_all_consumed' |
38 | + else: |
39 | + #Se obstajajo produkti, torej ne sme porabiti celotne kolicine ki je na voljo |
40 | + if ((float(kol1) - old_produced) >= current_qty_available): |
41 | + return 'must_not_consume_all' |
42 | + |
43 | |
44 | if (float(kol1) > old_produced): |
45 | if ((float(kol1) - old_produced) > current_qty_available): |
46 | |
47 | === modified file 'm_web_api/static/src/basket_delivery.html' |
48 | --- m_web_api/static/src/basket_delivery.html 2014-01-08 19:33:13 +0000 |
49 | +++ m_web_api/static/src/basket_delivery.html 2014-01-11 20:34:58 +0000 |
50 | @@ -34,8 +34,8 @@ |
51 | <option>Peka-Dodelava-Hladilnica</option> |
52 | <option>Košare</option> |
53 | <option>------------------</option> |
54 | - <option>administrator</option> |
55 | - <option>administrator_all</option> |
56 | + <option>Vodja</option> |
57 | + <option>Administrator</option> |
58 | </select></td> |
59 | </tr> |
60 | <tr> |
61 | |
62 | === modified file 'm_web_api/static/src/js/core.js' |
63 | --- m_web_api/static/src/js/core.js 2014-01-08 20:19:19 +0000 |
64 | +++ m_web_api/static/src/js/core.js 2014-01-11 20:34:58 +0000 |
65 | @@ -362,7 +362,7 @@ |
66 | //------------------------------------------------// |
67 | |
68 | //Prikaz podjetja in verzije |
69 | - $("#podjetje").text('Podjetje: ' + document.getElementById("s1").options[so].text + ', Verzija: v.01.08'); |
70 | + $("#podjetje").text('Podjetje: ' + document.getElementById("s1").options[so].text + ', Verzija: v.01.11'); |
71 | |
72 | openERP_user = ''; |
73 | if (document.getElementById("u").value == 'Testo-Polizdelki'){ |
74 | @@ -433,10 +433,15 @@ |
75 | $("#dv8").show(); |
76 | $("#dhl1").hide(); |
77 | } |
78 | - else if (document.getElementById("u").value == 'administrator' || document.getElementById("u").value == 'administrator_all'){ |
79 | - openERP_user = 'admin'; |
80 | - if (document.getElementById("u").value == 'administrator_all') |
81 | + else if (document.getElementById("u").value == 'Vodja' || document.getElementById("u").value == 'Administrator'){ |
82 | + if (document.getElementById("u").value == 'Vodja'){ |
83 | + openERP_user = '_vodja'; |
84 | + } |
85 | + else if (document.getElementById("u").value == 'Administrator'){ |
86 | + openERP_user = 'admin'; |
87 | userID = 'mentis'; |
88 | + } |
89 | + |
90 | $("#dn1").show(); |
91 | $("#dn2").show(); |
92 | $("#dn3").show(); |
93 | @@ -729,8 +734,8 @@ |
94 | colModel:colm, |
95 | multiselect: false, |
96 | viewrecords: true, |
97 | - sortname: 'product_id', |
98 | - sortorder: "desc", |
99 | + sortname: 'product_name', |
100 | + sortorder: "asc", |
101 | grouping:useGrouping, |
102 | hiddengrid:false, |
103 | onCellSelect:function(rowid,iCol){ |
104 | @@ -812,7 +817,7 @@ |
105 | //groupText : ["<b onclick='tClick(this.parentElement);return false;'> {1} - {0} </b>"], |
106 | groupText : ["<b onclick=\"jQuery('#grid1').jqGrid('groupingToggle',this.parentElement.parentElement.id);return false; \">{1} - {0} </b>"], |
107 | groupCollapse : true, |
108 | - groupOrder: ['desc'] |
109 | + groupOrder: ['asc'] |
110 | }, |
111 | caption: "" |
112 | }); |
113 | @@ -896,7 +901,7 @@ |
114 | jQuery("#grid1").jqGrid('addRowData',i+1,results[i]); |
115 | } |
116 | } |
117 | - $("#grid1").jqGrid('sortGrid','product_delo',true,'desc'); |
118 | + $("#grid1").jqGrid('sortGrid','product_name',true,'asc'); |
119 | }); |
120 | } |
121 | ///////////////////////////////////////////////////////////////////////// |
122 | @@ -1029,12 +1034,12 @@ |
123 | } |
124 | |
125 | if (tip=="close"){ |
126 | - if ((kol_vdelu-kol > 0) && (vrstaIzdelka == "Izdelki")){ |
127 | - $("#label_general_warning").text("Pri zaključevanju morate speči celotno količino, ki je na voljo!"); |
128 | - $("#dialog-general-warning").dialog("option", "height", 260); |
129 | - $("#dialog-general-warning").dialog("open"); |
130 | - return; |
131 | - } |
132 | +// if ((kol_vdelu-kol > 0) && (vrstaIzdelka == "Izdelki")){ |
133 | +// $("#label_general_warning").text("Pri zaključevanju morate speči celotno količino, ki je na voljo!"); |
134 | +// $("#dialog-general-warning").dialog("option", "height", 260); |
135 | +// $("#dialog-general-warning").dialog("open"); |
136 | +// return; |
137 | +// } |
138 | if (kol_skupaj < kol_narocena){ |
139 | $("#label_value_warning").text("Vnesli ste količino, ki je MANJŠA od naročene, nadaljujem?"); |
140 | $("#dialog-value-warning") |
141 | @@ -1042,8 +1047,26 @@ |
142 | .dialog("open"); |
143 | } |
144 | else{ |
145 | - mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,1]).then(function(result){ |
146 | - if (result == 'not_available'){ |
147 | + mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,1,vrstaIzdelka]).then(function(result){ |
148 | + if (result == 'must_not_consume_all'){ |
149 | + $("#label_general_warning").text("Pri zaključevanju ne morete porabiti celotno količino, ki je na voljo, ker obstajajo še drugi izdelki z enako osnovo!"); |
150 | + $("#dialog-general-warning").dialog("option", "height", 320); |
151 | + $("#dialog-general-warning").dialog("open"); |
152 | + return; |
153 | + } |
154 | + else if (result == 'must_not_move'){ |
155 | + $("#label_general_warning").text("Izdelka ne morete premakniti nazaj v delo. Najprej povečajte razpoložljivo količino!"); |
156 | + $("#dialog-general-warning").dialog("option", "height", 260); |
157 | + $("#dialog-general-warning").dialog("open"); |
158 | + return; |
159 | + } |
160 | + else if (result == 'not_all_consumed'){ |
161 | + $("#label_general_warning").text("Pri zaključevanju morate speči celotno količino, ki je na voljo!"); |
162 | + $("#dialog-general-warning").dialog("option", "height", 260); |
163 | + $("#dialog-general-warning").dialog("open"); |
164 | + return; |
165 | + } |
166 | + else if (result == 'not_available'){ |
167 | $("#label_general_warning").text("Ne morete speči več izdelkov kot je pripravljene osnove!"); |
168 | $("#dialog-general-warning").dialog("option", "height", 260); |
169 | $("#dialog-general-warning").dialog("open"); |
170 | @@ -1053,6 +1076,7 @@ |
171 | $("#label_general_warning").text("Ne morete izdelati manjšo količino izdelkov, ker so nekateri že v košarah!"); |
172 | $("#dialog-general-warning").dialog("option", "height", 300); |
173 | $("#dialog-general-warning").dialog("open"); |
174 | + return; |
175 | } |
176 | else |
177 | refreshRow_new(tip,'grid1',true,true,true,false,true,false,kol_skupaj,kol1,kol2,0,(kol_vdelu-kol),0); |
178 | @@ -1060,7 +1084,7 @@ |
179 | } |
180 | } |
181 | else { |
182 | - mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,0]).then(function(result){ |
183 | + mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,0,vrstaIzdelka]).then(function(result){ |
184 | if (result == 'not_available'){ |
185 | $("#label_general_warning").text("Ne morete speči več izdelkov kot je pripravljene osnove!"); |
186 | $("#dialog-general-warning").dialog("option", "height", 260); |
187 | @@ -1236,8 +1260,26 @@ |
188 | kol_izdelana = parseInt($("#grid1").jqGrid('getCell',rId,5)); |
189 | kol_skupaj = kol+kol_izdelana; |
190 | |
191 | - mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,1]).then(function(result){ |
192 | - if (result == 'not_available'){ |
193 | + mrp.call('set_izdelek_produced1',[id1,kol_skupaj,kol1,kol2,1,vrstaIzdelka]).then(function(result){ |
194 | + if (result == 'must_not_consume_all'){ |
195 | + $("#label_general_warning").text("Pri zaključevanju ne morete porabiti celotno količino, ki je na voljo, ker obstajajo še drugi izdelki z enako osnovo!"); |
196 | + $("#dialog-general-warning").dialog("option", "height", 320); |
197 | + $("#dialog-general-warning").dialog("open"); |
198 | + return; |
199 | + } |
200 | + else if (result == 'must_not_move'){ |
201 | + $("#label_general_warning").text("Izdelka ne morete premakniti nazaj v delo. Najprej povečajte razpoložljivo količino!"); |
202 | + $("#dialog-general-warning").dialog("option", "height", 260); |
203 | + $("#dialog-general-warning").dialog("open"); |
204 | + return; |
205 | + } |
206 | + else if (result == 'not_all_consumed'){ |
207 | + $("#label_general_warning").text("Pri zaključevanju morate speči celotno količino, ki je na voljo!"); |
208 | + $("#dialog-general-warning").dialog("option", "height", 260); |
209 | + $("#dialog-general-warning").dialog("open"); |
210 | + return; |
211 | + } |
212 | + else if (result == 'not_available'){ |
213 | $("#label_general_warning").text("Ne morete speči več izdelkov kot je pripravljene osnove!"); |
214 | $("#dialog-general-warning").dialog("option", "height", 260); |
215 | $("#dialog-general-warning").dialog("open"); |
216 | |
217 | === modified file 'mrp_procurement_qty/wizard/procurement_order.py' |
218 | --- mrp_procurement_qty/wizard/procurement_order.py 2013-12-26 12:00:30 +0000 |
219 | +++ mrp_procurement_qty/wizard/procurement_order.py 2014-01-11 20:34:58 +0000 |
220 | @@ -52,6 +52,7 @@ |
221 | |
222 | man_order_obj = self.pool.get('mrp.production') |
223 | picking_obj = self.pool.get('stock.picking') |
224 | + procurement_obj = self.pool.get('procurement.order') |
225 | |
226 | ready_ids = man_order_obj.search(cr, uid, [ |
227 | ('state', 'in', ['ready', 'confirmed']), |
228 | @@ -94,11 +95,16 @@ |
229 | 'product_qty':qty_product_qty, |
230 | 'produced_stock':qty_produced_stock, |
231 | 'produced_phantom':qty_produced_phantom, |
232 | + 'status_izdelki':0, |
233 | + 'status_testo':0, |
234 | }) |
235 | |
236 | picking_obj.action_cancel(cr, uid, [order.picking_id.id], context) #najprej preklicemo picking |
237 | man_order_obj.action_cancel(cr, uid, [order.id], context) #nato preklicemo manufacturing order |
238 | - |
239 | + |
240 | + #Spremenimo se kolicino na procurement_order |
241 | + procurement_id = procurement_obj.search(cr, uid, [('production_id', '=', OR_ID)]) |
242 | + procurement_obj.write(cr, uid, procurement_id, {'product_qty':qty_product_qty}) |
243 | |
244 | return 0 |
245 | |
246 | @@ -121,8 +127,8 @@ |
247 | }) |
248 | #---------------------------------------------------------- |
249 | |
250 | - self._group_procurement_orders(cr, uid, context) |
251 | - cr.commit() |
252 | + #self._group_procurement_orders(cr, uid, context) |
253 | + #cr.commit() |
254 | #----------------------------------------------- |
255 | |
256 | repeat_number = self.browse(cr,uid,ids)[0].repeat_number |
257 | @@ -130,18 +136,51 @@ |
258 | |
259 | #NOVI NACIN - za vsako iteracijo odpremo svoj kurzor, ki se po koncu commite-ne |
260 | print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ' - Start') |
261 | + new_cr = pooler.get_db(cr.dbname).cursor() |
262 | for x in range(0, repeat_number): |
263 | - new_cr = pooler.get_db(cr.dbname).cursor() |
264 | try: |
265 | proc_obj.run_scheduler(new_cr, uid, automatic=False, use_new_cursor=new_cr.dbname, context=context) |
266 | - finally: |
267 | - new_cr.close() |
268 | + new_cr.commit() |
269 | + except Exception: |
270 | + new_cr.rollback() |
271 | + raise osv.except_osv('Opozorilo!', u'Napaka v %s. krogu' % (str(x))) |
272 | + return{} |
273 | print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ' - Close: ' + str(x+1)) |
274 | |
275 | - #------------------------------------------------ |
276 | - #cr.commit() |
277 | - #self._group_manufacturing_orders(cr, uid, context) |
278 | - |
279 | + try: |
280 | + self._group_manufacturing_orders(new_cr, uid, context) |
281 | + new_cr.commit() |
282 | + except Exception: |
283 | + new_cr.rollback() |
284 | + return{} |
285 | + |
286 | + _sql_string = """update stock_move upd |
287 | + set basket_status = 2 |
288 | + where |
289 | + not upd.id in |
290 | + ( |
291 | + |
292 | + select id from stock_move mov |
293 | + where mov.basket_status <> 2 and mov.location_id = 12 |
294 | + and exists( |
295 | + select * from stock_picking pic |
296 | + where |
297 | + pic.id = mov.picking_id and |
298 | + pic.type = 'out' |
299 | + ) |
300 | + |
301 | + ) and basket_status != 2""" |
302 | + try: |
303 | + new_cr.execute(_sql_string) |
304 | + except Exception: |
305 | + new_cr.rollback() |
306 | + return{} |
307 | + |
308 | + try: |
309 | + self.pool.get('stock.move').get_qty_delivery_available(new_cr, uid) |
310 | + except Exception: |
311 | + new_cr.rollback() |
312 | + |
313 | return{} |
314 | |
315 | procurement_order_run_wizard() |