コード例 #1
0
ファイル: orders.py プロジェクト: hudora/Beliza
def _create_order(api, customer, useremail, form_data, documents=None, orderlines=None):
    """ speichert einen neuen Auftrag via RobotRock """
    order = {'customer': customer.kundennr,
             'erfasst_von': useremail,
             'source': 'FF'}    # drei moegliche Quellen: "FF": Fullfillment,
                                #                         "SV": Serviceauftrag,
                                #                         "WS": Webshop
    
    # Service-Aufträge als solche markieren
    if customer.kundennr == '66663':
        order['source'] = 'SV'

    # zuerst bauen wir uns die Basis-Felder zusammen
    fields = ['kundenauftragsnr', 'name1', 'name2', 'strasse',
              'plz', 'ort', 'land', 'phone', 'mobil', 'mail']
    for field in fields:
        order[field] = form_data[field]

    # haben wir eine einzelne Bestellposition bekommen?
    ic = CreateApiResource('inventory/Price')
    eap = CreateApiResource('inventory/EAP')
    order['orderlines'] = []
    if 'orderline_artnr' in form_data:
        artnr = form_data['orderline_artnr']
        preis = ic.preis(artnr)
        name = eap.fetch(artnr).get('name', '???')
        order['orderlines'].append({'artnr': artnr,
                                    'name': name,
                                    'menge': form_data['orderline_menge'],
                                    'preis': preis})

    # oder haben wir eine ganze Liste von Bestellpositionen?
    if orderlines:
        for form in orderlines:
            artnr = form.cleaned_data['artnr']
            preis = ic.preis(artnr)
            order['orderlines'].append({'artnr': artnr,
                                        'name': form.cleaned_data['name'],
                                        'menge': form.cleaned_data['menge'],
                                        'preis': preis})

    # sollen wir noch Zusatzdokumente anhaengen?
    if documents is None:
        documents = []

    order['dokumente'] = []
    for filename, data in documents:
        #try:
        order['dokumente'].append({'name': filename, 'content': data.encode('base64')})
        #except Exception as ex:
        #    pass

    # Handling-Gebühren als eigenständige Position
    order['additional_expenses'] = customer.additional_expenses

    # XXX: CB: Warum wird die api Variable bis hierher durchgeschleift?
    #          Reicht es nicht, api hier erst zu initialisieren
    return api.create(order)
コード例 #2
0
ファイル: orderlines.py プロジェクト: hudora/Beliza
def check_availability(request):
    """ Verfügbarkeit einer Bestellposition überprüfen. Wenn der entsprechende Artikel 
        fuer den jeweiligen Kunden lieferbar ist wird ein HTML-Snippet mit der Orderline
        gerendert und zurueckgeliefert, damit es dann in der Tabelle der Bestellpositionen
        angezeigt werden kann. """

    # ueberprueft die Parameter 
    artnr = request.GET.get('artnr')
    try:
        menge = int(request.GET.get('menge'))
    except ValueError:
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})
    if not (menge and artnr):
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})

    # eap Infos holen
    api = CreateApiResource('inventory/EAP')
    eap = api.fetch(artnr)
    if not eap:
        return render_to_json({'result': 'does_not_exist', 'reason': 'invalid article or quantity'})
    
    try:
        # zuerst die Verfuegbarkeit
        if not filter(lambda entry: entry['articles'] and entry['automatisch_moeglich'],
                      CreateApiResource('inventory/Alternatives').read(menge, artnr)):
            NonAvailable.objects.create(menge=menge, artnr=artnr, customer=request.customer.designator)
            return render_to_json({'result': 'not_available'})

        # jetzt den Preis und den Namen
        api = CreateApiResource('inventory/Price')
        preis = api.preis(artnr, request.customer.kundennr) * menge,

        form = OrderlineForm(prefix='form-%d' % int(time()),
                             initial={'menge': menge,
                                      'artnr': artnr,
                                      'preis': '%.2f EUR' % preis,
                                      'name': eap.get('name', '???')});
        t = loader.get_template('beliza/orders/orderline.html')
        html = t.render(Context({'form': form}))
        return render_to_json({'result': 'ok', 'html': html})

    except Exception, exc:
        print "------------> debug 100, %s" % exc
        if str(exc).find('unbekannt') != -1:
            return render_to_json({'result': 'does_not_exist'})