Beispiel #1
0
def payments(request):
    results = accounting.views.payment.search(request)
    results = sort_by_date(request, results)
    return paginate(request,
                    results,
                    'task/accounting/payment_results.html',
                    max_limit=15)
Beispiel #2
0
def bills(request):
    results = accounting.views.bill.search(request)
    results = sort_by_date(request, results)
    return paginate(request,
                    results,
                    'task/accounting/bill_results.html',
                    max_limit=15)
Beispiel #3
0
def expenses(request):
    results = accounting.views.expense.search(request)
    results = sort_by_date(request, results)
    return paginate(request,
                    results,
                    'task/accounting/expense_results.html',
                    max_limit=15)
Beispiel #4
0
def transactions(request):
    service_id = request.GET['service_id']
    service_type = ContentType.objects.get_for_model(Service)
    results = OrderTransfer.objects.filter(
        items__order__info_type=service_type,
        items__order__info_id=service_id,
        labels__name=OrderTransfer.VALID)
    results = sort_by_date(request, results)
    return paginate(request, results, 'catalog/service_transactions.html')
Beispiel #5
0
def items(request):
    offset = int(request.GET.get('year_offset', 0))
    primary = request.user.account.company
    cutoff = primary.account.current_cutoff_date(offset)
    item_ids = ItemAccount.objects.filter(owner=primary).values_list('id', flat=True)
    data = YearData.objects.filter(label=YearData.SALES,
                                   year=cutoff.year,
                                   account_type=ItemAccount.content_type(),
                                   account_id__in=item_ids).order_by('-total')
    return paginate(request, data, 'task/management/items.html')
Beispiel #6
0
def suppliers(request):
    offset = int(request.GET.get('year_offset', 0))
    primary = request.user.account.company
    cutoff = primary.account.current_cutoff_date(offset)
    supplier_ids = TradeAccount.objects.filter(customer=primary).values_list('id', flat=True)
    data = YearData.objects.filter(label=YearData.PURCHASES,
                                   year=cutoff.year,
                                   account_type=TradeAccount.content_type().id,
                                   account_id__in=supplier_ids).order_by('-total')
    return paginate(request, data, 'task/management/suppliers.html')
Beispiel #7
0
def transaction_search_results(request, _id):
    transfers = OrderTransferItem.objects.filter(order__order__labels__name=Order.CANCELABLE)
    transfers = transfers.filter(Q(order__order__customer__id=_id) | Q(order__order__supplier__id=_id))
    item_id = request.GET.get('item_id', None)
    if item_id == 'None': item_id = None
    item_type = request.GET.get('item_type', None)
    if item_type == 'None': item_type = None
    terms = request.GET.get('terms', None)
    if item_id and item_type:
        transfers = transfers.filter(order__info_id=item_id, order__info_type=item_type)
    elif terms:
        terms = terms.strip()
        results = SearchQuerySet().auto_query(terms)
        results = results.models(Product)
        item_ids = results.values_list('pk', flat=True)
        transfers = transfers.filter(order__info_id__in=item_ids)
    transfers = transfers.distinct().order_by('-transfer__date')
    return paginate(request, transfers, 'addressbook/contact_transaction_search_results.html')        
Beispiel #8
0
def receivables_per_customer(request):
    primary = request.user.account.company
    age = request.GET.get('age', '120')
    age_map = {
        '120': TradeAccount.RECEIVABLES_120,
        '90': TradeAccount.RECEIVABLES_090,
        '60': TradeAccount.RECEIVABLES_060,
        '30': TradeAccount.RECEIVABLES_030
    }
    account_ids = TradeAccount.objects.filter(supplier=primary).values_list(
        'id', flat=True)
    data = AccountData.objects.filter(
        label=age_map.get(age, TradeAccount.RECEIVABLES_120),
        date=datetime.min,
        account_type=TradeAccount.content_type(),
        account_id__in=account_ids).order_by('-value')
    return paginate(request,
                    data,
                    'task/accounting/receivables_customer.html',
                    max_limit=50)
Beispiel #9
0
def urgent(request):
    primary = request.user.account.company

    # get all sale and purchase items with non-zero balance
    order_items = OrderItem.objects.pending().filter(
        info_type=Product.content_type())
    products = {}
    for i in order_items:
        pid = i.info.id
        if pid not in products:
            products[pid] = i.info
            products[pid].stock = 0
            products[pid].incoming = 0
            products[pid].outgoing = 0
            products[pid].required = 0
        if i.order.supplier == primary:
            products[pid].outgoing = products[pid].outgoing + i.balance
        elif i.order.customer == primary:
            products[pid].incoming = products[pid].incoming + i.balance
    accounts = ItemAccount.objects.filter(owner=primary,
                                          item_type=Product.content_type(),
                                          item_id__in=products.keys())
    for account in accounts:
        products[account.item_id].stock = account.stock


#    stocks = Stock.objects.filter(product__id__in=products.keys())
#    for s in stocks:
#        pid = s.product.id
#        products[pid].stock = products[pid].stock + s.quantity
    urgent = []
    for pid, p in products.items():
        p.required = p.outgoing - p.stock - p.incoming
        if p.required > 0:
            urgent.append(p)
    return paginate(request, urgent, 'task/purchasing/urgent_results.html')
Beispiel #10
0
def incoming(request):
    primary = request.user.account.company
    items = OrderItem.objects.filter(order__customer=primary,
                                     balance__gt=0,
                                     order__labels__name=Order.OPEN)
    return paginate(request, items, 'task/purchasing/incoming_result.html')
Beispiel #11
0
def payments(request):
    results = accounting.views.payment.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results, 'addressbook/contact_payments.html')
Beispiel #12
0
def transfers(request):
    results = trade.views.ordertransfer.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results, 'addressbook/contact_orders.html')
Beispiel #13
0
def bills(request):
    results = accounting.views.bill.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results, 'addressbook/contact_bills.html')
Beispiel #14
0
def ordertransfers(request):
    results = trade.views.ordertransferitem.search(request)
    return paginate(request, results, 'catalog/product_ordertransfers.html')
Beispiel #15
0
def transactions(request):
    results = inventory.views.stocktransaction.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results, 'catalog/product_transactions.html')
Beispiel #16
0
def stocktransfers(request):
    results = inventory.views.stocktransferitem.search(request)
    return paginate(request, results, 'catalog/product_stocktransfers.html')
Beispiel #17
0
def adjustments(request):
    results = adjustment.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results,
                    'inventory/location_adjustment_result.html')
Beispiel #18
0
def stocks(request):
    results = stock.search(request)
    return paginate(request, results, 'inventory/location_stock_result.html')
Beispiel #19
0
def transfers(request):
    results = stocktransfer.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results,
                    'inventory/location_transfer_result.html')
Beispiel #20
0
def pending(request):
    results = trade.views.order.search(request)
    results = sort_by_date(request, results)
    return paginate(request, results, 'task/sales/order_results.html')
Beispiel #21
0
def negative(request):
    company = request.user.account.company
    stocks = Stock.objects.filter(location__in=company.locations.all(), quantity__lt=0)
    return paginate(request, stocks, 'task/inventory/negative_results.html', max_limit=5)
Beispiel #22
0
def for_physical(request):
    company = request.user.account.company
    six_months_ago = datetime.now() - timedelta(days=180)
    stocks = Stock.objects.filter(location__in=company.locations.all()).filter(Q(last_physical=None) | Q(last_physical__date__lte=six_months_ago))
    return paginate(request, stocks, 'task/inventory/for_physical_results.html', max_limit=5)
Beispiel #23
0
def costing_items(request):
    primary = request.user.account.company
    items = ItemAccount.objects.filter(cost=0, owner=primary)
    return paginate(request, items, 'task/management/costing_items.html')
Beispiel #24
0
def stocks(request):
    return paginate(request, inventory.views.stock.search(request),
                    'catalog/product_stocks.html')