Example #1
0
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))
Example #2
0
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))
Example #3
0
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))
Example #4
0
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))
Example #5
0
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)