## Blocks: Coupon

block_coupon
Maintained by Sebsoft Plugins, Rogier van Dongen
The Sebsoft Coupon Plugin offers you the possibility to create coupons for various levels of course access. Using a coupon code, users will be enrolled into courses that are attached to the coupon.
298 sites
55 fans

SEBSOFT COUPON PLUGIN

The Sebsoft Coupon Plugin offers you the possibility to create coupons for various levels

of course access. Using a coupon code, users will be enrolled into courses that are attached to the coupon. That way, you can use the coupon system as voucher or vouchering system for your course(s).

There are a few different ways of generating coupons:

- Course level: this means one or more course(s) need to be selected for which the coupon is valid.

Once the coupon code is entered by a user, he or she will be enroled in every course the coupon

is attached to.

A nice extra feature is, when groups are configured for a certain course, you can configure which

course group the coupon is for. When a user claims the coupon, he or she will be added to that specific

group in the course. This makes it possible to separate coupon users from regular users.

You could also make specific course groups every time you generate a batch of new coupons, so there's

some way of matching a batch of coupons to a group of users. The possibilities are numerous.

- Cohort level: this means one or more cohort(s) need to be selected for which the coupon is valid.

Once the coupon code is entered by a user, he or she will be added as a cohort member for every

cohort the coupon is attached to.

NOTE: When generating cohort level coupons, there is a possibility to "connect" extra courses to

a given cohort. One MUST know that upon doing this, the courses will at that point be added to

the cohort enrolment sync. Without knowing this little fact, it could be "unexpected" behavior,

even though it's a logical step.

Furthermore, coupons can be generated on two "access" levels:

- Personalized. The base of this, is either a CSV is uploaded, or a CSV is given directly in a textbox.

The needed user information for every coupon to be generated will be the user's name, email address

and gender.

These coupons will then be generated and sent off to the appropriate users using a background task.

- Bulk: The base of this is simple: you generate a certain amount of access coupons, which will then

be emailed to the pre-configured recipient or (if allowed) to an emailaddress that can be freely entered.

- WARNING:

Wherever possible, please use PNG images.

Also, whenever possible, do NOT use images that have an alpha channel.

This will MASSIVELY slow down processing time, due to internal conversion of images by TCPDF.

On our tests, for a 300 DPI image on A4 format (2480 x 3508 pixels) with an alpha channel,

rendering a single PDF took around 25 seconds. Taking the alpha channel out of the image,

rendering a single PDF was reduced to around 3 seconds.

Furthermore, whenever possible, have the coupon generator create a single PDF with all

coupons (this is only applicable when generating coupons in "bulk" mode). The process of

generating coupons has been optimized to only "use" the image 1 time when creating any amount

of coupons in a single PDF. If you choose the option to create a seperate PDF for every coupon,

the image will have to be rendered for each and every PDF.

This has 2 major downfalls:

1. Every PDF will roughly have a slightly bigger size than the image size (in our tests, 350 - 400 kB per PDF)

2. Every PDF takes the full amount of time to render.

Effectively, this means the following (using fictitious sizes):

10 coupons, single PDF -> result is around 400 kB, rendering takes around 3-4 seconds.

10 coupons, seperate PDFs -> result is around 4 MB, rendering takes around 35-40 seconds.

INSTALLATION INSTRUCTIONS

- Copy the coupon folder to your blocks directory.

- Go to the moodle admin pages (you will probably be confronted with it anyway) and install the plugin

- Configure the main settings for the plugin.

- We're set up for usage!

PLACEMENT OF THE PLUGIN

There are only two pages you can add the coupon block on. This is the site's frontpage

or the user dashboard (my) page. The main reason for this is because the block is the

"frontend" for users to enter their coupon or voucher code.

Administrators and users with the correct capabilities will also see the links to

the coupon administration pages and the coupon generator page.

GENERAL CONSIDERATIONS

There's two main configurations to consider when generating coupons.

For course type coupons, this plugin attempts to enrol a user through use of Moodle's

internal function "enrol_try_internal_enrol".

The Moodle documentation shows it will attempt to enrol you using manual enrolment.

For this reason manual enrolment MUST be enabled for these courses.

For cohort type coupons, a user is made a member of a cohort. That's all there is to it.

Surprise though, if you want to actually make a user have access to a course, you

probably want to configure cohort enrolment for the course.

For those paying attention, creating cohort type coupons thus enables a simple

way of enrolling users into multiple courses at once just by configuring the right

cohort enrolments in multiple courses.

That's still not to say course coupons can't be used in a similar way (using meta courses).

### Contributors

Rogier van Dongen

### Awards

• Wed, 3 Oct 2018, 11:37 PM
Hi Franky,
You mean like https://yourmoodle/blocks/coupon/view/signup.php? - (Do note, that to enforce this, you will have to use that page as signup page)
• Thu, 4 Oct 2018, 12:14 AM
Hi Sebastian,

yes, this is exactly what I mean. I've now only put the URL in, and then indeed a field couponcode is showing up at the top. I've not tested it yet further if this works correctly. Is there in the backend a field where you can fill in this specific URL instead of the URL of the normal registration page? I didn't find this field so far.
• Thu, 4 Oct 2018, 12:40 AM
In backend there is a field to change the Login URL, but it seems that there is surprisingly not a field to change the Signup url. This would mean that this has to be changed in the CFG-file?
• Thu, 4 Oct 2018, 9:20 PM
Hi Franky,
Unfortunately, no. The one way we've been able to implement this without enforcing Moodle core hacks, is by using custom scripts.
To configure, do the following:
modify your Moodle config.php and add a line "$CFG->customscripts = /path/to/customscripts/" You will usually either out your customscripts either IN the moodle datadir, or just outside of the www-root, e.g.: /yourhomedir/moodledata/customscripts Now, add a folder called "login" so you end up with: /yourhomedir/moodledata/customscripts/login/ Finally, add a php file called signup.php, so you end up with: /yourhomedir/moodledata/customscripts/login/signup.php The ONLY thing you need to do here is enter a redirect statement so you end up with the coupon signup url: <?php // This script does nothing more than redirect to the coupon signup method. redirect($CFG->wwwroot . '/blocks/coupon/view/signup.php');
exit;

and that's it. Using these 4 lines of code, you're now set up to use the custom signup
Let me know if you get this to work.
Good luck & cheers,
Rogier
• Fri, 5 Oct 2018, 3:10 AM
Hi Rogier,

Thanks for your advice, this saved me some time to search this out myself. I've implemented your tip and the redirects works fine. Thanks again.

Franky
• Sat, 20 Oct 2018, 4:15 AM
Hello , im .new to moodle , i just installed your plugin but i can't find a way to generate coupons! i searched everywhere but. no sign of it except the config section. but no way to start generating coupons for courses ? any helo with screebshots if possible !
• Mon, 22 Oct 2018, 3:40 PM
Hello Qasmaoui, a first draft of a manual we're working on to get you started can be found on our repository pages.
• Fri, 26 Oct 2018, 12:12 AM
Hi,
I love this plugin and find it very useful. I would like to make some changes to the directions on the Coupon but am not sure in what directory the stock directions are kept. Could you please give me that information. Thank-you!
• Wed, 7 Nov 2018, 8:22 PM
Hello Mark,

If you're familiar with adjusting the language packages from within Moodle you can do it from there. For the time being this is basically the only way to do this. If you run into any issues with this please send me a message through the messaging system.
Cheers,
Rogier
• Tue, 13 Nov 2018, 12:37 AM
Is there a way to create a coupon for something like 5% or 10% off, or does this plugin only offer 100% off? If it only works with 100%, is this a possibility in the future? I could really use a plugin where you could offer a 10% discount. Please advise.
• Sun, 18 Nov 2018, 2:53 AM
hello
first of all thank you for such great plugin. i would like to ask how to extend the functionality of this plugin and integrate it with paypal . i want to link it to PayPal listening page where upon receiving PayPal IPN the plugin generate only one code upon the purchased course and duration and email it to the payer email address ( PayPal sends the payer email and course purchased and many other information in the PayPal IPN)
in this way the scenario will be like that : the participant will click on paypal button on the course page or activity which redirect him to paypal checkout page .
on completion of purchase and payment the paypal redirect the payer to payment confirmation page where a script is there to generate a single coupon by the plugin it (using the variables from paypal IPN) and send that coupon code to the payer email with other instruction
any help in this regard
• Sat, 5 Jan 2019, 4:48 AM
• Mon, 7 Jan 2019, 5:21 AM
Hi,
I've send you a private message...
• Wed, 9 Jan 2019, 4:11 AM
ok
• Wed, 9 Jan 2019, 4:24 AM
Please i cant read the message, i have used all my browsers but messages is blank. So here is what i want ok. I want my student to enroll into courses using a voucher. I am already using the coupon plugin by sebesoft. But my students find it difficult in locating and loading the voucher. SO i want an app that will be installed on the students phone which will make it easier for them to load the voucher. SO this is how the app will work

I generate coupons and sell it to a student. the student opens the app. He receives the welcome message, and a bold field Load Coupon. student clicks on load coupon next page will ask for username, student types username and click continue, the app communicates with the moodle website and fetch the users name and school. if the user details is correct, the user click continue, the next field ask the user to load coupon, he will enter the coupon code he bought and click submitt. The app communicates with the moodle site and enroll the user to the courses associated with the coupon. next page is confirmation page. it will tell the user, submission is successful, then list the courses activated and enrollment duration with expiry date.

I dont know how you will do it, but i should have a backend where i can generate coupons just like in moodle. that page should give me statistics of the number of coupon generated, the number of coupon used, number of unused coupons. Also i should be able to view the coupon used by a specific student. in case there is an error or a duplicate coupon, i should be able to fetch the student that used a particular coupon. Also when a students enrollment expire, i want the system to remove him from the course so that he can buy a new coupon. sebisoft coupon uses enrollment extension, but i dont want that feature. unroll a student when enrollment expires, so that he can use a new coupon to enroll

if you can integrate sms notifications, i will be very happy. if you can do it send me a an email at adminng@bsacademy.us because my moodle messages dont open. I Have sent a message to sebisoft on their website but no reply.Thank you. If you need further details, please let me know