diff --git a/celerybeat-schedule b/celerybeat-schedule index 2b81de8c9..addf07f13 100644 Binary files a/celerybeat-schedule and b/celerybeat-schedule differ diff --git a/uber/models/commerce.py b/uber/models/commerce.py index b5fe1a4d9..fdb7756c5 100644 --- a/uber/models/commerce.py +++ b/uber/models/commerce.py @@ -178,6 +178,12 @@ def item_total(self): def item_total_sql(cls): return coalesce(func.sum(ReceiptItem.amount * ReceiptItem.count), 0) + @classproperty + def fkless_item_total_sql(cls): + return coalesce(func.sum(ReceiptItem.amount * ReceiptItem.count).filter( + ReceiptItem.fk_id == None + ), 0) + @property def txn_total(self): return self.payment_total - self.refund_total diff --git a/uber/site_sections/reg_reports.py b/uber/site_sections/reg_reports.py index 9a82007b1..7eb20f81c 100644 --- a/uber/site_sections/reg_reports.py +++ b/uber/site_sections/reg_reports.py @@ -46,9 +46,10 @@ def attendee_receipt_discrepancies(self, session, include_pending=False): else: filter = Attendee.is_valid == True # noqa: E712 - attendees = session.query(Attendee).filter(filter).join( # noqa: E712 - Attendee.active_receipt).outerjoin(ModelReceipt.receipt_items).group_by( - ModelReceipt.id).group_by(Attendee.id).having(Attendee.default_cost_cents != ModelReceipt.item_total_sql) + attendees = session.query(Attendee).filter( + filter).join(Attendee.active_receipt).outerjoin(ModelReceipt.receipt_items).group_by( + ModelReceipt.id).group_by(Attendee.id).having( + Attendee.default_cost_cents != ModelReceipt.fkless_item_total_sql) return { 'attendees': attendees,