registrasion/reporting/views.py
def sales_payment_summary():
    ''' Summarises paid items and payments. '''

    def value_or_zero(aggregate, key):
        return aggregate[key] or 0

    def sum_amount(payment_set):
        a = payment_set.values("amount").aggregate(total=Sum("amount"))
        return value_or_zero(a, "total")

    headings = ["Category", "Total"]
    data = []

    # Summarise all sales made (= income.)
    sales = commerce.LineItem.objects.filter(
        invoice__status=commerce.Invoice.STATUS_PAID,
    ).values(
        "price", "quantity"
    ).aggregate(
        total=Sum(F("price") * F("quantity"), output_field=CURRENCY()),
    )
    sales = value_or_zero(sales, "total")

    all_payments = sum_amount(commerce.PaymentBase.objects.all())

    # Manual payments
    # Credit notes generated (total)
    # Payments made by credit note
    # Claimed credit notes

    all_credit_notes = 0 - sum_amount(commerce.CreditNote.objects.all())
    unclaimed_credit_notes = 0 - sum_amount(commerce.CreditNote.unclaimed())
    claimed_credit_notes = sum_amount(
        commerce.CreditNoteApplication.objects.all()
    )
    refunded_credit_notes = 0 - sum_amount(commerce.CreditNote.refunded())

    data.append(["Items on paid invoices", sales])
    data.append(["All payments", all_payments])
    data.append(["Sales - Payments ", sales - all_payments])
    data.append(["All credit notes", all_credit_notes])
    data.append(["Credit notes paid on invoices", claimed_credit_notes])
    data.append(["Credit notes refunded", refunded_credit_notes])
    data.append(["Unclaimed credit notes", unclaimed_credit_notes])
    data.append([
        "Credit notes - (claimed credit notes + unclaimed credit notes)",
        all_credit_notes - claimed_credit_notes -
        refunded_credit_notes - unclaimed_credit_notes
        ])

    return ListReport("Sales and Payments Summary", headings, data)
def sales_payment_summary():
    ''' Summarises paid items and payments. '''

    def value_or_zero(aggregate, key):
        return aggregate[key] or 0

    def sum_amount(payment_set):
        a = payment_set.values("amount").aggregate(total=Sum("amount"))
        return value_or_zero(a, "total")

    headings = ["Category", "Total"]
    data = []

    # Summarise all sales made (= income.)
    sales = commerce.LineItem.objects.filter(
        invoice__status=commerce.Invoice.STATUS_PAID,
    ).values(
        "price", "quantity"
    ).aggregate(
        total=Sum(F("price") * F("quantity"), output_field=CURRENCY()),
    )
    sales = value_or_zero(sales, "total")

    all_payments = sum_amount(commerce.PaymentBase.objects.all())

    # Manual payments
    # Credit notes generated (total)
    # Payments made by credit note
    # Claimed credit notes

    all_credit_notes = 0 - sum_amount(commerce.CreditNote.objects.all())
    unclaimed_credit_notes = 0 - sum_amount(commerce.CreditNote.unclaimed())
    claimed_credit_notes = sum_amount(
        commerce.CreditNoteApplication.objects.all()
    )
    refunded_credit_notes = 0 - sum_amount(commerce.CreditNote.refunded())

    data.append(["Items on paid invoices", sales])
    data.append(["All payments", all_payments])
    data.append(["Sales - Payments ", sales - all_payments])
    data.append(["All credit notes", all_credit_notes])
    data.append(["Credit notes paid on invoices", claimed_credit_notes])
    data.append(["Credit notes refunded", refunded_credit_notes])
    data.append(["Unclaimed credit notes", unclaimed_credit_notes])
    data.append([
        "Credit notes - (claimed credit notes + unclaimed credit notes)",
        all_credit_notes - claimed_credit_notes -
        refunded_credit_notes - unclaimed_credit_notes
        ])

    return ListReport("Sales and Payments Summary", headings, data)
def sales_payment_summary ( ) : def value_or_zero ( aggregate , key ) : return aggregate [ key ] or 0 def sum_amount ( payment_set ) : a = payment_set . values ( "amount" ) . aggregate ( total = Sum ( "amount" ) ) return value_or_zero ( a , "total" ) headings = [ "Category" , "Total" ] data = [ ] # Summarise all sales made (= income.) sales = commerce . LineItem . objects . filter ( invoice__status = commerce . Invoice . STATUS_PAID , ) . values ( "price" , "quantity" ) . aggregate ( total = Sum ( F ( "price" ) * F ( "quantity" ) , output_field = CURRENCY ( ) ) , ) sales = value_or_zero ( sales , "total" ) all_payments = sum_amount ( commerce . PaymentBase . objects . all ( ) ) # Manual payments # Credit notes generated (total) # Payments made by credit note # Claimed credit notes all_credit_notes = 0 - sum_amount ( commerce . CreditNote . objects . all ( ) ) unclaimed_credit_notes = 0 - sum_amount ( commerce . CreditNote . unclaimed ( ) ) claimed_credit_notes = sum_amount ( commerce . CreditNoteApplication . objects . all ( ) ) refunded_credit_notes = 0 - sum_amount ( commerce . CreditNote . refunded ( ) ) data . append ( [ "Items on paid invoices" , sales ] ) data . append ( [ "All payments" , all_payments ] ) data . append ( [ "Sales - Payments " , sales - all_payments ] ) data . append ( [ "All credit notes" , all_credit_notes ] ) data . append ( [ "Credit notes paid on invoices" , claimed_credit_notes ] ) data . append ( [ "Credit notes refunded" , refunded_credit_notes ] ) data . append ( [ "Unclaimed credit notes" , unclaimed_credit_notes ] ) data . append ( [ "Credit notes - (claimed credit notes + unclaimed credit notes)" , all_credit_notes - claimed_credit_notes - refunded_credit_notes - unclaimed_credit_notes ] ) return ListReport ( "Sales and Payments Summary" , headings , data )
Summarises paid items and payments.
Summarises paid items and payments .