Merge lp:~matjaz-6/openerpsl/openerpsl_01_07 into lp:openerpsl/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
Reviewer Review Type Date Requested Status
Mentis Pending
Review via email: mp+201299@code.launchpad.net

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()

Subscribers

People subscribed via source and target branches