WIP
parent
d285fbf2bb
commit
4e5ee2cf59
|
|
@ -22,6 +22,9 @@ class App_State :
|
||||||
, 30 : "CNC generation started"
|
, 30 : "CNC generation started"
|
||||||
, 35 : "CNC generation finished"
|
, 35 : "CNC generation finished"
|
||||||
, 40 : "Odoo Freigabe"
|
, 40 : "Odoo Freigabe"
|
||||||
|
, 100 : "Article created"
|
||||||
|
, 110 : "Order Line created"
|
||||||
|
, 111 : "Order Line updated"
|
||||||
}
|
}
|
||||||
@classmethod
|
@classmethod
|
||||||
def Create_Action (cls, kind, text, order = None) :
|
def Create_Action (cls, kind, text, order = None) :
|
||||||
|
|
@ -51,7 +54,7 @@ class App_State :
|
||||||
lh.setLevel (level)
|
lh.setLevel (level)
|
||||||
lh.setFormatter \
|
lh.setFormatter \
|
||||||
( logging.Formatter
|
( logging.Formatter
|
||||||
( "%(asctime)s - %(levelname)s - %(message)s"
|
( "%(asctime)s - %(message)s"
|
||||||
, datefmt = "%Y-%m-%d %H:%M:%S"
|
, datefmt = "%Y-%m-%d %H:%M:%S"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
bno = row_data [0].text ()
|
bno = row_data [0].text ()
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
state = schema.State.get ()
|
state = schema.State.get ()
|
||||||
order = schema.Order.get (basket_no = bno)
|
order = schema.Order.get (basket_no = bno, active = True)
|
||||||
if order.state < 20 :
|
if order.state < 20 :
|
||||||
order.state = 20
|
order.state = 20
|
||||||
self.update_order (order, False, row_data [0].row ())
|
self.update_order (order, False, row_data [0].row ())
|
||||||
|
|
@ -153,12 +153,13 @@ class Order_List (_With_Table_Widget_) :
|
||||||
# end def _open_order_in_cad
|
# end def _open_order_in_cad
|
||||||
|
|
||||||
def _wait_for_cad_close (self, basket_no) :
|
def _wait_for_cad_close (self, basket_no) :
|
||||||
|
App_State.L.info ("Auftrag %s im CAD geöffnet", basket_no)
|
||||||
p = self._cad_processes [basket_no]
|
p = self._cad_processes [basket_no]
|
||||||
while p.poll () is None :
|
while p.poll () is None :
|
||||||
time.sleep (.5)
|
time.sleep (.5)
|
||||||
del self._cad_processes [basket_no]
|
del self._cad_processes [basket_no]
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
order = schema.Order.get (basket_no = basket_no)
|
order = schema.Order.get (basket_no = basket_no, active = True)
|
||||||
order.state = 10
|
order.state = 10
|
||||||
self.update_order (order, False)
|
self.update_order (order, False)
|
||||||
App_State.Create_Action \
|
App_State.Create_Action \
|
||||||
|
|
@ -166,6 +167,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
, f"IMOS CAD closed {order.basket_no}: Error code {p.poll ()}"
|
, f"IMOS CAD closed {order.basket_no}: Error code {p.poll ()}"
|
||||||
, order
|
, order
|
||||||
)
|
)
|
||||||
|
App_State.L.info ("CAD für Auftrag %s beendet", basket_no)
|
||||||
# end def _wait_for_cad_close
|
# end def _wait_for_cad_close
|
||||||
|
|
||||||
def _start_recreate_cnc (self) :
|
def _start_recreate_cnc (self) :
|
||||||
|
|
@ -185,7 +187,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
"""
|
"""
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
state = schema.State.get ()
|
state = schema.State.get ()
|
||||||
order = schema.Order.get (basket_no = bno)
|
order = schema.Order.get (basket_no = bno, active = True)
|
||||||
job_file_name = ( pathlib.Path (state.imos_sim_root)
|
job_file_name = ( pathlib.Path (state.imos_sim_root)
|
||||||
/ App_State.sim_batches
|
/ App_State.sim_batches
|
||||||
/ f"{bno}.xml"
|
/ f"{bno}.xml"
|
||||||
|
|
@ -229,7 +231,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
else :
|
else :
|
||||||
text = f"CNC Erzeugung für {basket_no} abgeschlossen"
|
text = f"CNC Erzeugung für {basket_no} abgeschlossen"
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
order = schema.Order.get (basket_no = basket_no)
|
order = schema.Order.get (basket_no = basket_no, active = True)
|
||||||
order.state = 10
|
order.state = 10
|
||||||
self.update_order (order, False)
|
self.update_order (order, False)
|
||||||
App_State.Create_Action (35, text, order)
|
App_State.Create_Action (35, text, order)
|
||||||
|
|
@ -255,7 +257,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
bno = row_data [0].text ()
|
bno = row_data [0].text ()
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
state = schema.State.get ()
|
state = schema.State.get ()
|
||||||
order = schema.Order.get (basket_no = bno)
|
order = schema.Order.get (basket_no = bno, active = True)
|
||||||
factory = pathlib.Path (state.imos_factory_root)
|
factory = pathlib.Path (state.imos_factory_root)
|
||||||
for ext in ".xml", ".txt" :
|
for ext in ".xml", ".txt" :
|
||||||
sf = factory / App_State.imos_done_dir / f"{bno}{ext}"
|
sf = factory / App_State.imos_done_dir / f"{bno}{ext}"
|
||||||
|
|
@ -273,7 +275,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
if row_data :
|
if row_data :
|
||||||
bno = row_data [0].text ()
|
bno = row_data [0].text ()
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
order = schema.Order.get (basket_no = bno)
|
order = schema.Order.get (basket_no = bno, active = True)
|
||||||
Action_Dialog \
|
Action_Dialog \
|
||||||
(order.actions.order_by (schema.orm.desc (schema.Action.date))).exec ()
|
(order.actions.order_by (schema.orm.desc (schema.Action.date))).exec ()
|
||||||
# end def _show_actions
|
# end def _show_actions
|
||||||
|
|
@ -292,7 +294,7 @@ class Order_List (_With_Table_Widget_) :
|
||||||
if r == QtWidgets.QMessageBox.No :
|
if r == QtWidgets.QMessageBox.No :
|
||||||
return
|
return
|
||||||
with schema.orm.db_session () :
|
with schema.orm.db_session () :
|
||||||
order = schema.Order.get (basket_no = bno)
|
order = schema.Order.get (basket_no = bno, active = True)
|
||||||
order.state = 10
|
order.state = 10
|
||||||
self.update_order (order, False)
|
self.update_order (order, False)
|
||||||
App_State.Create_Action \
|
App_State.Create_Action \
|
||||||
|
|
|
||||||
|
|
@ -132,9 +132,66 @@ class Order_Processing (Main_Window) :
|
||||||
f"Auftrag geändert fom XML {basket_no}"
|
f"Auftrag geändert fom XML {basket_no}"
|
||||||
, order = order
|
, order = order
|
||||||
)
|
)
|
||||||
|
self._scan_order_pos (order, xml)
|
||||||
order.active = True
|
order.active = True
|
||||||
# end def _update_order_in_database
|
# end def _update_order_in_database
|
||||||
|
|
||||||
|
def _scan_order_pos (self, order, xml) :
|
||||||
|
bl = xml.xpath ("//BuilderList") [0]
|
||||||
|
changes = 0
|
||||||
|
for a in bl.getchildren () :
|
||||||
|
art_name = a.xpath ("Pname") [0].text.strip ()
|
||||||
|
count = int (a.xpath ("Count") [0].text)
|
||||||
|
pos = a.get ("LineNo")
|
||||||
|
text = a.xpath ("ARTICLE_TEXT_INFO1" ) [0].text.strip ()
|
||||||
|
price = float (a.xpath ("ARTICLE_PRICE_INFO1") [0].text)
|
||||||
|
article = schema.Odoo_Article.get (name = art_name)
|
||||||
|
if not article :
|
||||||
|
article = schema.Odoo_Article \
|
||||||
|
( name = art_name
|
||||||
|
, default_text = art_name
|
||||||
|
, default_price = 0
|
||||||
|
)
|
||||||
|
App_State.Create_Action \
|
||||||
|
( 100
|
||||||
|
, f"Artikel {art_name} wurde in der Datenbank angelegt"
|
||||||
|
, order
|
||||||
|
)
|
||||||
|
order_line = schema.Order_Line.get (order = order, position = pos)
|
||||||
|
if not order_line :
|
||||||
|
order_line = schema.Order_Line \
|
||||||
|
( order = order
|
||||||
|
, position = pos
|
||||||
|
, count = count
|
||||||
|
, text = text
|
||||||
|
, price = price
|
||||||
|
, odoo_article = article
|
||||||
|
)
|
||||||
|
App_State.Create_Action \
|
||||||
|
( 110
|
||||||
|
, f"Auftragszeile {pos} für {order.basket_no} wurde in der "
|
||||||
|
"Datenbank angelegt"
|
||||||
|
, order
|
||||||
|
)
|
||||||
|
changes += 1
|
||||||
|
else :
|
||||||
|
if ( (order_line.text != text)
|
||||||
|
or (order_line.count != count)
|
||||||
|
or (order_line.price != price)
|
||||||
|
) :
|
||||||
|
print ("Update")
|
||||||
|
order_line.text = text
|
||||||
|
order_line.price = price
|
||||||
|
order_line.count = count
|
||||||
|
changes += 1
|
||||||
|
App_State.Create_Action \
|
||||||
|
( 111
|
||||||
|
, f"Auftragszeile {pos} für {order.basket_no} wurde "
|
||||||
|
"in der Datenbank geändert"
|
||||||
|
, order
|
||||||
|
)
|
||||||
|
# end def _scan_order_pos
|
||||||
|
|
||||||
def _restore_settings (self) :
|
def _restore_settings (self) :
|
||||||
super ()._restore_settings ()
|
super ()._restore_settings ()
|
||||||
sp = self.centralWidget ()
|
sp = self.centralWidget ()
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,8 @@ class Odoo_Article (db.Entity) :
|
||||||
|
|
||||||
class Order_Line (db.Entity) :
|
class Order_Line (db.Entity) :
|
||||||
order = orm.Required (Order)
|
order = orm.Required (Order)
|
||||||
|
position = orm.Required (str)
|
||||||
|
count = orm.Required (int)
|
||||||
text = orm.Required (str)
|
text = orm.Required (str)
|
||||||
price = orm.Required (float)
|
price = orm.Required (float)
|
||||||
odoo_article = orm.Required (Odoo_Article)
|
odoo_article = orm.Required (Odoo_Article)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue