Merge pull request #10713 from edx/cdodge/fix-zero-seat-invoices
Cdodge/fix zero seat invoices
This commit is contained in:
@@ -968,7 +968,7 @@ def get_sale_records(request, course_id, csv=False): # pylint: disable=unused-a
|
||||
course_id = SlashSeparatedCourseKey.from_deprecated_string(course_id)
|
||||
query_features = [
|
||||
'company_name', 'company_contact_name', 'company_contact_email', 'total_codes', 'total_used_codes',
|
||||
'total_amount', 'created_at', 'customer_reference_number', 'recipient_name', 'recipient_email', 'created_by',
|
||||
'total_amount', 'created', 'customer_reference_number', 'recipient_name', 'recipient_email', 'created_by',
|
||||
'internal_reference', 'invoice_number', 'codes', 'course_id'
|
||||
]
|
||||
|
||||
|
||||
@@ -32,12 +32,12 @@ ORDER_ITEM_FEATURES = ('list_price', 'unit_cost', 'status')
|
||||
ORDER_FEATURES = ('purchase_time',)
|
||||
|
||||
SALE_FEATURES = ('total_amount', 'company_name', 'company_contact_name', 'company_contact_email', 'recipient_name',
|
||||
'recipient_email', 'customer_reference_number', 'internal_reference')
|
||||
'recipient_email', 'customer_reference_number', 'internal_reference', 'created')
|
||||
|
||||
SALE_ORDER_FEATURES = ('id', 'company_name', 'company_contact_name', 'company_contact_email', 'purchase_time',
|
||||
'customer_reference_number', 'recipient_name', 'recipient_email', 'bill_to_street1',
|
||||
'bill_to_street2', 'bill_to_city', 'bill_to_state', 'bill_to_postalcode',
|
||||
'bill_to_country', 'order_type',)
|
||||
'bill_to_country', 'order_type', 'created')
|
||||
|
||||
AVAILABLE_FEATURES = STUDENT_FEATURES + PROFILE_FEATURES
|
||||
COURSE_REGISTRATION_FEATURES = ('code', 'course_id', 'created_by', 'created_at', 'is_valid')
|
||||
@@ -154,9 +154,13 @@ def sale_record_features(course_id, features):
|
||||
codes = [reg_code.code for reg_code in sale.courseregistrationcode_set.all()]
|
||||
|
||||
# Extracting registration code information
|
||||
obj_course_reg_code = sale.courseregistrationcode_set.all()[:1].get()
|
||||
course_reg_dict = dict((feature, getattr(obj_course_reg_code, feature))
|
||||
for feature in course_reg_features)
|
||||
if len(codes) > 0:
|
||||
obj_course_reg_code = sale.courseregistrationcode_set.all()[:1].get()
|
||||
course_reg_dict = dict((feature, getattr(obj_course_reg_code, feature))
|
||||
for feature in course_reg_features)
|
||||
else:
|
||||
course_reg_dict = dict((feature, None)
|
||||
for feature in course_reg_features)
|
||||
|
||||
course_reg_dict['course_id'] = course_id.to_deprecated_string()
|
||||
course_reg_dict.update({'codes': ", ".join(codes)})
|
||||
|
||||
@@ -225,7 +225,7 @@ class TestCourseSaleRecordsAnalyticsBasic(ModuleStoreTestCase):
|
||||
|
||||
query_features = [
|
||||
'company_name', 'company_contact_name', 'company_contact_email', 'total_codes', 'total_used_codes',
|
||||
'total_amount', 'created_at', 'customer_reference_number', 'recipient_name', 'recipient_email',
|
||||
'total_amount', 'created', 'customer_reference_number', 'recipient_name', 'recipient_email',
|
||||
'created_by', 'internal_reference', 'invoice_number', 'codes', 'course_id'
|
||||
]
|
||||
|
||||
@@ -264,6 +264,43 @@ class TestCourseSaleRecordsAnalyticsBasic(ModuleStoreTestCase):
|
||||
self.assertEqual(sale_record['total_used_codes'], 0)
|
||||
self.assertEqual(sale_record['total_codes'], 5)
|
||||
|
||||
def test_course_sale_no_codes(self):
|
||||
|
||||
query_features = [
|
||||
'company_name', 'company_contact_name', 'company_contact_email', 'total_codes', 'total_used_codes',
|
||||
'total_amount', 'created', 'customer_reference_number', 'recipient_name', 'recipient_email',
|
||||
'created_by', 'internal_reference', 'invoice_number', 'codes', 'course_id'
|
||||
]
|
||||
|
||||
#create invoice
|
||||
sale_invoice = Invoice.objects.create(
|
||||
total_amount=0.00, company_name='Test1', company_contact_name='TestName',
|
||||
company_contact_email='test@company.com', recipient_name='Testw_1', recipient_email='test2@test.com',
|
||||
customer_reference_number='2Fwe23S', internal_reference="ABC", course_id=self.course.id
|
||||
)
|
||||
CourseRegistrationCodeInvoiceItem.objects.create(
|
||||
invoice=sale_invoice,
|
||||
qty=0,
|
||||
unit_price=0.00,
|
||||
course_id=self.course.id
|
||||
)
|
||||
|
||||
course_sale_records_list = sale_record_features(self.course.id, query_features)
|
||||
|
||||
for sale_record in course_sale_records_list:
|
||||
self.assertEqual(sale_record['total_amount'], sale_invoice.total_amount)
|
||||
self.assertEqual(sale_record['recipient_email'], sale_invoice.recipient_email)
|
||||
self.assertEqual(sale_record['recipient_name'], sale_invoice.recipient_name)
|
||||
self.assertEqual(sale_record['company_name'], sale_invoice.company_name)
|
||||
self.assertEqual(sale_record['company_contact_name'], sale_invoice.company_contact_name)
|
||||
self.assertEqual(sale_record['company_contact_email'], sale_invoice.company_contact_email)
|
||||
self.assertEqual(sale_record['internal_reference'], sale_invoice.internal_reference)
|
||||
self.assertEqual(sale_record['customer_reference_number'], sale_invoice.customer_reference_number)
|
||||
self.assertEqual(sale_record['invoice_number'], sale_invoice.id)
|
||||
self.assertEqual(sale_record['created_by'], None)
|
||||
self.assertEqual(sale_record['total_used_codes'], 0)
|
||||
self.assertEqual(sale_record['total_codes'], 0)
|
||||
|
||||
def test_sale_order_features_with_discount(self):
|
||||
"""
|
||||
Test Order Sales Report CSV
|
||||
|
||||
Reference in New Issue
Block a user