From bf36890bd3f65d7c1d464382022d3addcded16c6 Mon Sep 17 00:00:00 2001 From: Joedeep Singh Date: Sun, 12 Oct 2025 17:07:42 +0000 Subject: [PATCH] feat: added coupon code functionality --- frontend/components.d.ts | 2 + .../src/components/Settings/CouponDetails.vue | 157 +++++++++++++++++ frontend/src/components/Settings/Coupons.vue | 92 ++++++++++ frontend/src/components/Settings/Settings.vue | 7 + .../Settings/TransactionDetails.vue | 52 +++++- frontend/src/pages/Billing.vue | 48 ++++- lms/lms/doctype/lms_coupon/__init__.py | 0 lms/lms/doctype/lms_coupon/lms_coupon.js | 8 + lms/lms/doctype/lms_coupon/lms_coupon.json | 166 ++++++++++++++++++ lms/lms/doctype/lms_coupon/lms_coupon.py | 56 ++++++ lms/lms/doctype/lms_coupon/test_lms_coupon.py | 22 +++ lms/lms/doctype/lms_coupon_item/__init__.py | 0 .../lms_coupon_item/lms_coupon_item.json | 43 +++++ .../lms_coupon_item/lms_coupon_item.py | 9 + lms/lms/doctype/lms_payment/lms_payment.json | 27 +++ lms/lms/payments.py | 72 +++++--- lms/lms/utils.py | 83 +++++++++ 17 files changed, 821 insertions(+), 23 deletions(-) create mode 100644 frontend/src/components/Settings/CouponDetails.vue create mode 100644 frontend/src/components/Settings/Coupons.vue create mode 100644 lms/lms/doctype/lms_coupon/__init__.py create mode 100644 lms/lms/doctype/lms_coupon/lms_coupon.js create mode 100644 lms/lms/doctype/lms_coupon/lms_coupon.json create mode 100644 lms/lms/doctype/lms_coupon/lms_coupon.py create mode 100644 lms/lms/doctype/lms_coupon/test_lms_coupon.py create mode 100644 lms/lms/doctype/lms_coupon_item/__init__.py create mode 100644 lms/lms/doctype/lms_coupon_item/lms_coupon_item.json create mode 100644 lms/lms/doctype/lms_coupon_item/lms_coupon_item.py diff --git a/frontend/components.d.ts b/frontend/components.d.ts index b9411e86..c205bb11 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -42,6 +42,8 @@ declare module 'vue' { CodeEditor: typeof import('./src/components/Controls/CodeEditor.vue')['default'] CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default'] ColorSwatches: typeof import('./src/components/Controls/ColorSwatches.vue')['default'] + CouponDetails: typeof import('./src/components/Settings/CouponDetails.vue')['default'] + Coupons: typeof import('./src/components/Settings/Coupons.vue')['default'] CourseCard: typeof import('./src/components/CourseCard.vue')['default'] CourseCardOverlay: typeof import('./src/components/CourseCardOverlay.vue')['default'] CourseInstructors: typeof import('./src/components/CourseInstructors.vue')['default'] diff --git a/frontend/src/components/Settings/CouponDetails.vue b/frontend/src/components/Settings/CouponDetails.vue new file mode 100644 index 00000000..3e3fff36 --- /dev/null +++ b/frontend/src/components/Settings/CouponDetails.vue @@ -0,0 +1,157 @@ + + + diff --git a/frontend/src/components/Settings/Coupons.vue b/frontend/src/components/Settings/Coupons.vue new file mode 100644 index 00000000..078f4846 --- /dev/null +++ b/frontend/src/components/Settings/Coupons.vue @@ -0,0 +1,92 @@ + + + diff --git a/frontend/src/components/Settings/Settings.vue b/frontend/src/components/Settings/Settings.vue index 57c40f3e..f660fab4 100644 --- a/frontend/src/components/Settings/Settings.vue +++ b/frontend/src/components/Settings/Settings.vue @@ -81,6 +81,7 @@ import Categories from '@/components/Settings/Categories.vue' import EmailTemplates from '@/components/Settings/EmailTemplates.vue' import BrandSettings from '@/components/Settings/BrandSettings.vue' import PaymentGateways from '@/components/Settings/PaymentGateways.vue' +import Coupons from '@/components/Settings/Coupons.vue' import Transactions from '@/components/Settings/Transactions.vue' import ZoomSettings from '@/components/Settings/ZoomSettings.vue' import Badges from '@/components/Settings/Badges.vue' @@ -230,6 +231,12 @@ const tabsStructure = computed(() => { template: markRaw(PaymentGateways), description: 'Add and manage all your payment gateways', }, + { + label: 'Coupons', + icon: 'Tag', + template: markRaw(Coupons), + description: 'Create and manage coupon codes', + }, { label: 'Transactions', icon: 'Landmark', diff --git a/frontend/src/components/Settings/TransactionDetails.vue b/frontend/src/components/Settings/TransactionDetails.vue index b996b02d..a3e38933 100644 --- a/frontend/src/components/Settings/TransactionDetails.vue +++ b/frontend/src/components/Settings/TransactionDetails.vue @@ -72,6 +72,40 @@ /> +
+
+ {{ __('Coupon (if applied)') }} +
+
+ + + + +
+
+
@@ -100,7 +134,7 @@