def info_panel(request): """Renders a page, that shows an info panel for the employees in the store.""" kerneladapter = Kerneladapter() pipeline = (kerneladapter.get_kommiauftrag(kommi) for kommi in kerneladapter.get_kommiauftrag_list()) for kommi in pipeline: kommi['orderlines_count'] = len(kommi.get('orderlines', [])) db = myplfrontend.tools.get_pickinfo_from_pipeline_data(pipeline) # FIXME: Der Code hier beruht noch teilweise auf den Daten, die aus der zugeh. Django DB kamen, zB. postions['done'] wurde vorher # aus dieser DB berechnet. Wie können wir die erledigten Positionen aus dem Kernel / couchdb / ... erhalten? positions = {} positions['done'] = 0 positions['inwork'] = 0 if 'yes' in db: # FIXME aus dem get_pickinfo_from_pipeline_data() code verstehe ich nicht, wo hier ein key 'yes' herkommen soll? positions['todo'] = int(db['yes']['orderlines_count']) else: positions['todo'] = 0 positions['total'] = positions['done'] + positions['inwork'] + positions['todo'] if positions['total']: positions['percent_done'] = (100.0/positions['total']) * positions['done'] else: positions['percent_done'] = 0 return render_to_response('myplfrontend/info_panel.html', {'pipeline': pipeline, 'db': db, 'positions': positions}, context_instance=RequestContext(request))
def artikel_heute(request): """View für Übersichtsseite mit den heute zu verschickenden Artikeln""" kerneladapter = Kerneladapter() # summarize product quantities products = {} for komminr in kerneladapter.get_kommiauftrag_list(): kommi = kerneladapter.get_kommiauftrag(komminr) if kommi['shouldprocess'] == 'yes': for orderline in kommi['orderlines']: artnr = orderline['artnr'] products[artnr] = products.get(artnr, 0) + orderline['menge'] artikel_heutel = [] for artnr, quantity in products.items(): product = cs.masterdata.article.eap(artnr) if product: total_weight = quantity * float_or_0(product.get("package_weight")) / 1000.0 total_volume = quantity * float_or_0(product.get("package_volume_liter")) total_palettes = quantity / float_or_0(product.get("palettenfaktor"), default=1.0) artikel_heutel.append({'quantity': quantity, 'artnr': artnr, 'name': product['name'], 'palettenfaktor': product.get('palettenfaktor'), 'total_weight': total_weight, 'total_volume': total_volume, 'paletten': total_palettes}) else: cs.zwitscher.zwitscher('%s: eAP nicht in CouchDB. OMG! #error' % artnr, username='******') return render_to_response('myplfrontend/artikel_heute.html', {'artikel_heute': artikel_heutel}, context_instance=RequestContext(request))
def kommiauftrag_list(request): """View für Liste der Aufträge in der Provpipeline""" kerneladapter = Kerneladapter() kommiauftraege_new, kommiauftraege_processing = [], [] for kommiauftragnr in kerneladapter.get_kommiauftrag_list(): kommiauftrag = kerneladapter.get_kommiauftrag(kommiauftragnr) if kommiauftrag['status'] == 'processing': kommiauftraege_processing.append(kerneladapter.get_kommiauftrag(kommiauftragnr)) else: kommiauftraege_new.append(kerneladapter.get_kommiauftrag(kommiauftragnr)) kommiauftraege = kommiauftraege_processing + kommiauftraege_new return render_to_response('myplfrontend/kommiauftraege.html', {'title': 'Komissionierungen, die nicht erledigt sind.', 'kommiauftraege': kommiauftraege}, context_instance=RequestContext(request))
def kommiauftrag_show(request, kommiauftragnr): """Render a page with further information for a single Kommiauftrag.""" kerneladapter = Kerneladapter() kommiauftrag = kerneladapter.get_kommiauftrag(kommiauftragnr) # Prüfen, ob genug Ware für den Artikel verfügbar ist. orderlines = [] if not kommiauftrag.get('archived') and 'orderlines' in kommiauftrag: for orderline in kommiauftrag['orderlines']: orderline['picksuggestion'] = kerneladapter.find_provisioning_candidates(orderline['menge'], orderline['artnr']) available = bool(orderline['picksuggestion']) orderline['available'] = available if not available: orderline['fehler'] = u'Kann zur Zeit nicht efüllt werden' orderlines.append(orderline) kommischeine = [] for kommischein_id in kommiauftrag.get('provisioninglists', []): kommischein = kommiauftrag.get_kommischein(kommischein_id) provisionings = [] for provisioning_id in kommischein.get('provisioning_ids', []): if kommischein.get('type') == 'picklist': provisioning = kommiauftrag.get_pick(provisioning_id) if not provisioning: provisioning = {} provisioning.update({'id': provisioning_id}) provisionings.append(provisioning) kommischein['provisionings'] = provisionings kommischeine.append(kommischein) # TODO: change to unitaudit audit = kerneladapter.get_audit('fields/by_komminr', kommiauftragnr) title = 'Kommissionierauftrag %s' % kommiauftragnr if kommiauftrag.get('archived'): title += ' (archiviert)' return render_to_response('myplfrontend/kommiauftrag.html', {'title': title, 'kommiauftrag': kommiauftrag, 'orderlines': orderlines, 'kommischeine': kommischeine, 'auditlines': audit}, context_instance=RequestContext(request))
def get_provisioning_pdf(provisioning_id): """Public interface to get a kommischein pdf.""" ka = Kerneladapter() auftragsart = ka.get_kommiauftrag(ka.get_kommischein(provisioning_id)["provpipeline_id"])['art'] generator = _ProvisioningGenerator(produktionsauftrag=(auftragsart == 'KO')) return generator.generate(provisioning_id)