WIP
parent
d285fbf2bb
commit
4e5ee2cf59
|
|
@ -22,6 +22,9 @@ class App_State :
|
|||
, 30 : "CNC generation started"
|
||||
, 35 : "CNC generation finished"
|
||||
, 40 : "Odoo Freigabe"
|
||||
, 100 : "Article created"
|
||||
, 110 : "Order Line created"
|
||||
, 111 : "Order Line updated"
|
||||
}
|
||||
@classmethod
|
||||
def Create_Action (cls, kind, text, order = None) :
|
||||
|
|
@ -51,7 +54,7 @@ class App_State :
|
|||
lh.setLevel (level)
|
||||
lh.setFormatter \
|
||||
( logging.Formatter
|
||||
( "%(asctime)s - %(levelname)s - %(message)s"
|
||||
( "%(asctime)s - %(message)s"
|
||||
, datefmt = "%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
bno = row_data [0].text ()
|
||||
with schema.orm.db_session () :
|
||||
state = schema.State.get ()
|
||||
order = schema.Order.get (basket_no = bno)
|
||||
order = schema.Order.get (basket_no = bno, active = True)
|
||||
if order.state < 20 :
|
||||
order.state = 20
|
||||
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
|
||||
|
||||
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]
|
||||
while p.poll () is None :
|
||||
time.sleep (.5)
|
||||
del self._cad_processes [basket_no]
|
||||
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
|
||||
self.update_order (order, False)
|
||||
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 ()}"
|
||||
, order
|
||||
)
|
||||
App_State.L.info ("CAD für Auftrag %s beendet", basket_no)
|
||||
# end def _wait_for_cad_close
|
||||
|
||||
def _start_recreate_cnc (self) :
|
||||
|
|
@ -185,7 +187,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
"""
|
||||
with schema.orm.db_session () :
|
||||
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)
|
||||
/ App_State.sim_batches
|
||||
/ f"{bno}.xml"
|
||||
|
|
@ -229,7 +231,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
else :
|
||||
text = f"CNC Erzeugung für {basket_no} abgeschlossen"
|
||||
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
|
||||
self.update_order (order, False)
|
||||
App_State.Create_Action (35, text, order)
|
||||
|
|
@ -255,7 +257,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
bno = row_data [0].text ()
|
||||
with schema.orm.db_session () :
|
||||
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)
|
||||
for ext in ".xml", ".txt" :
|
||||
sf = factory / App_State.imos_done_dir / f"{bno}{ext}"
|
||||
|
|
@ -273,7 +275,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
if row_data :
|
||||
bno = row_data [0].text ()
|
||||
with schema.orm.db_session () :
|
||||
order = schema.Order.get (basket_no = bno)
|
||||
order = schema.Order.get (basket_no = bno, active = True)
|
||||
Action_Dialog \
|
||||
(order.actions.order_by (schema.orm.desc (schema.Action.date))).exec ()
|
||||
# end def _show_actions
|
||||
|
|
@ -292,7 +294,7 @@ class Order_List (_With_Table_Widget_) :
|
|||
if r == QtWidgets.QMessageBox.No :
|
||||
return
|
||||
with schema.orm.db_session () :
|
||||
order = schema.Order.get (basket_no = bno)
|
||||
order = schema.Order.get (basket_no = bno, active = True)
|
||||
order.state = 10
|
||||
self.update_order (order, False)
|
||||
App_State.Create_Action \
|
||||
|
|
|
|||
|
|
@ -132,9 +132,66 @@ class Order_Processing (Main_Window) :
|
|||
f"Auftrag geändert fom XML {basket_no}"
|
||||
, order = order
|
||||
)
|
||||
self._scan_order_pos (order, xml)
|
||||
order.active = True
|
||||
# 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) :
|
||||
super ()._restore_settings ()
|
||||
sp = self.centralWidget ()
|
||||
|
|
|
|||
Loading…
Reference in New Issue