📄 order.py
字号:
page.widgets['product'] = Widget(CN_PRODUCT,'select','Product', formData[CN_PRODUCT], options={'options': options}, required=True) page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') elif subpath == 'arrival' and not form.has_key(CN_CANCEL): page.subname = 'arrival' deviceorderid = path[2] if form.has_key(CN_ARRIVE_CONFIRM): registerDevices(form,deviceorderid,req.session['user'].login, page) page.orderFound = False if deviceorderid: # Lookup order amountsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid " +\ "AND device.active=true" sql = "SELECT productno,descr,ordernumber,(%s),(%s) " %\ (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "deviceorderid='%s'" % deviceorderid result = executeSQL(sql,fetch=True) if result: result = result[0] productno,descr,ordernumber,amount,arrived = result if (amount-arrived) > 0: page.orderFound = True page.productName = productno + ' (' + descr + ')' if ordernumber: page.tableTitle = "Ordernumber '" + ordernumber +\ "', " + str(arrived) + " of " +\ str(amount) + " registered" else: page.tableTitle = str(arrived) + " of " +\ str(amount) + " registered" page.description = 'Register serials for devices upon' +\ ' arrival.' pending = amount-arrived page.numberOfInputs = min(NUMBER_OF_ARRIVED_SERIALS,pending) else: # No more device to register, close order arrivedstamp = mx.DateTime.now().strftime(TIMESTAMP) fields = {'arrived': arrivedstamp} updateFields(fields,'deviceorder','deviceorderid', deviceorderid) page.messages.append('Order closed') subpath = 'main' else: page.description = 'Order not found' options = [(CN_PENDING,'Pending',True), (CN_ARRIVED,'Arrived',False), (CN_CANCELLED,'Cancelled',False)] page.widgets['arrivaldate'] = Widget([CN_DAY,CN_MONTH,CN_YEAR],'date', 'Arrival date', [formData[CN_YEAR], formData[CN_MONTH], formData[CN_DAY]]) page.widgets['action'] = Widget(CN_STATE,'select','State', options={'options': options}) page.widgets['serial'] = Widget(CN_SERIAL,'text','Serial') page.widgets['submit'] = Widget(CN_ARRIVE_CONFIRM,'submit','Register') page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') elif subpath=='delete' or subpath=='details': deviceorderid = path[2] page.hiddenInputs.append(('deviceorderid',deviceorderid)) page.action = BASEPATH + 'order/' if subpath == 'delete': page.subname = 'delete' page.description = 'Are you sure you want to delete this order? ' +\ 'If any of the devices from this order are ' +\ 'already registered as arrived'+\ ', they will not be deleted and the order '+\ 'will be closed.' else: page.subname = 'details' page.description = '' page.widgets['confirm'] = Widget(CN_DELETE_CONFIRM,'submit','Confirm') page.widgets['cancel'] = Widget(CN_CANCEL,'submit','Cancel') # Get orderdata amountsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE " +\ "device.deviceorderid=deviceorder.deviceorderid " +\ "AND device.active=true" sql = "SELECT productno,descr,ordernumber,(%s),(%s)," %\ (amountsql,arrivedsql) +\ "ordered,comment,retailer,registered,username," +\ "orgid,updatedby,lastupdated,arrived " +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "deviceorderid='%s'" % deviceorderid result = executeSQL(sql,fetch=True) if result: result = result[0] lastupdated = '' if result[12]: lastupdated = result[12].strftime(DATEFORMAT) closed = None if result[13] != INFINITY: closed = result[13].strftime(DATEFORMAT) orderData = {'product': ('Product',result[0]+' ('+result[1]+')'), 'ordernumber': ('Ordernumber',result[2]), 'amount': ('Amount ordered',result[3]), 'arrived': ('Amount arrived',result[4]), 'ordered': ('Order date', result[5].strftime(DATEFORMAT)), 'comment': ('Comment',result[6]), 'retailer': ('Retailer',result[7]), 'registered': ('Date registered', result[8].strftime(DATEFORMAT)), 'username': ('Ordered by',result[9]), 'org': ('Organisation',result[10]), 'updatedby': ('Last updated by',result[11]), 'lastupdated': ('Last updated',lastupdated)} if closed: orderData['closed'] = ('Closed',closed) page.orderData = orderData page.orderDataHead = 'Order details' else: page.errors.append('Order not found') subpath = 'main' elif subpath == 'history': deviceorderid = None if len(path) > 2: deviceorderid = path[2] alternativeOutput = history(req,deviceorderid) page.description = 'Closed orders. Select details for more ' +\ 'information on a specific order. Select ' +\ 'device history to view event history for ' +\ 'all devices in an order.' page.subname = 'main' amountsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid AND device.active=true" sql = "SELECT registered,ordered,ordernumber,retailer,comment," +\ "username,product.productno,product.descr,deviceorderid," +\ "(%s),(%s),orgid,arrived " % (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "arrived!='infinity' ORDER BY arrived DESC" colformat = [['$1$'], ['$12$'], ['$2$'], ['$6$ ($7$)'], ['$9$'], ['$5$'], ['$11$'], [['url','Details',BASEPATH+'order/details/$8$/']], [['url','Device history',BASEPATH+'order/history/$8$/']]] headings = [('Ordered',None), ('Closed',None), ('Ordernumber',None), ('Product',None), ('Amount',None), ('Ordered by',None), ('Organisation',None), ('',None), ('',None)] page.orderList = FormattedList('orders','Order history',headings, colformat,sql) else: # Main page page.description = 'Currently active orders. Register arrival of ' +\ 'devices in an order by selecting arrival. ' page.subname = 'main' amountsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid" arrivedsql = "SELECT count(*) FROM device WHERE device.deviceorderid="+\ "deviceorder.deviceorderid AND device.active=true" sql = "SELECT registered,ordered,ordernumber,retailer,comment," +\ "username,product.productno,product.descr,deviceorderid," +\ "(%s),(%s),orgid " % (amountsql,arrivedsql) +\ "FROM deviceorder,product WHERE " +\ "deviceorder.productid=product.productid AND " +\ "arrived='infinity' ORDER BY ordered" colformat = [['$1$'], ['$2$'], ['$6$ ($7$)'], ['$9$'], ['$10$'], ['$5$'], ['$11$'], [['url','Details',BASEPATH+'order/details/$8$/']], [['url','Arrival',BASEPATH+'order/arrival/$8$/']], [['url','Edit',BASEPATH+'order/edit/$8$/']], [['url','Delete',BASEPATH+'order/delete/$8$/']]] headings = [('Ordered',None), ('Ordernumber',None), ('Product',None), ('Amount',None), ('Arrived',None), ('Ordered by',None), ('Organisation',None), ('',None), ('',None), ('',None), ('',None)] page.orderList = FormattedList('orders','Active orders',headings, colformat,sql) # Set menu page.menu = makeMainMenu(selected=1) if not alternativeOutput: nameSpace = {'page': page} template = deviceManagementTemplate(searchList=[nameSpace]) template.path = CURRENT_PATH output = template.respond() else: output = alternativeOutput return outputdef deleteOrder(deviceorderid,page): # Check if any of the devices are registered amountsql = "SELECT count(*) FROM device WHERE " +\ "deviceorderid='%s'" % (deviceorderid,) +\ "AND active=true" result = executeSQL(amountsql,fetch=True) arrived = result[0][0] if arrived > 0: # Only delete inactive devices and close order sql = "DELETE FROM device WHERE deviceorderid='%s' " % \ (deviceorderid,) +\ "AND active=false" executeSQL(sql) fields = {'arrived': mx.DateTime.now().strftime(TIMESTAMP)} updateFields(fields,'deviceorder','deviceorderid',deviceorderid) page.messages.append('Deleted inactive devices and closed order') else: # Delete entire order sql = "DELETE FROM deviceorder WHERE deviceorderid='%s' " \ % (deviceorderid,) executeSQL(sql) page.messages.append('Order deleted') return pagedef updateOrder(req,formData): form = req.form deviceorderid = form['deviceorderid'] # Add or delete devices amountsql = "SELECT count(*) FROM device WHERE " +\ "deviceorderid='%s'" % (deviceorderid,) +\ "AND device.active=false" result = executeSQL(amountsql,fetch=True) oldamount = result[0][0] amount = int(formData[CN_AMOUNT]) if amount > oldamount: # Make new devices fields = {} fields['productid'] = formData[CN_PRODUCT] fields['deviceorderid'] = deviceorderid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -