示例#1
0
文件: views.py 项目: flackdl/abr
def json_estimates(request):
    client = get_qbo_client(get_callback_url(request))

    # get recent estimates
    query = "SELECT * FROM Estimate WHERE TxnDate >= '%s' ORDERBY TxnDate ASC MAXRESULTS %s" % (
        (datetime.now() - timedelta(weeks=settings.ESTIMATE_AGE_WEEKS)).date().isoformat(), settings.QBO_MAX_RESULTS)

    # remove "Closed" estimates without a "Tag #" which indicates the bike has been serviced and picked up
    results = [json.loads(e.to_json()) for e in Estimate.query(query, qb=client)]
    results = [e for e in results if not (e['TxnStatus'] == 'Closed' and not estimate_has_tag_number(e))]

    return JsonResponse({'success': True, 'estimates': results})
示例#2
0
文件: views.py 项目: flackdl/abr
def purge_orders(request):
    client = get_qbo_client(get_callback_url(request))

    # get recent estimates
    query = "SELECT * FROM Estimate WHERE TxnDate >= '%s' ORDERBY TxnDate DESC MAXRESULTS %s" % (
        (datetime.now() - timedelta(weeks=settings.ESTIMATE_AGE_WEEKS)).date().isoformat(), settings.QBO_MAX_RESULTS)

    # filter to "Closed" and "Accepted"
    results = [json.loads(e.to_json()) for e in Estimate.query(query, qb=client)]
    results = [e for e in results if e['TxnStatus'] in ['Closed', 'Accepted']]

    orders_to_purge = []
    parts_to_purge = []
    for result in results:
        # verify the DocNumber is an integer
        if not result['DocNumber'] or not result['DocNumber'].isdigit():
            continue

        # delete all parts for this "DocNumber" (i.e estimate_id)
        order_parts = OrderPart.objects.filter(estimate_id=result['DocNumber'])
        order_ids = set()
        for part in order_parts:
            order_ids.add(part.order.id)
            parts_to_purge.append({
                "qbo_estimate_id": result['Id'],
                "part_id": part.id,
                "order_id": part.order.id,
                "qbo_DocNumber": part.estimate_id,
            })
            part.delete()

        # delete all orders without any associated parts
        orders = Order.objects.filter(order_id__in=order_ids)
        for order in orders:
            if not order.orderpart_set.exists():
                orders_to_purge.append({
                    "order_id": order.id,
                })
                order.delete()

    return JsonResponse({
        'parts_to_purge': parts_to_purge,
        'orders_to_purge': orders_to_purge,
    })