0

I've enabled a Ubercart Discount Coupons module in my eshop site and created some coupons with multiple one-time use only codes for testing purposes.

Now I would like to get one of the active coupon codes to customer who submits a newsletter registration form. Are there any functions to retrieve one of unused coupon codes?

2 Answers 2

1

The UC coupon module doesn't have a general purpose coupon retrieval function.

If you're solely looking to retrieve an active coupon, you can follow what the module itself does: query the DB table uc_coupons for rows with column status = 1. Using a DB query will let you modify it to whatever your particular case (e.g. 1 or more results, bulk codes, date range, etc.).

0

I am also looking for this functionality because I want to create a Coupons tab in the MY ACCOUNT area of a Drupal 7 website that uses Ubercart 3 (D7U3).

The line of code that generates a list of system coupons starts at line 118 in uc_coupon.admin.inc with the following comment:

/**
 * Display a brief overview of system coupons
 *
 * @param $view_type
 *   'active' or 'inactive'
 */

To be able to accomplish this task, you need three things:

  • "Hook" to a Drupal event so your code can be "Triggered"
  • Have your "Triggered" code generate relevant and meaningful results
  • Present your relevant and meaningful results in a human-understandable way

The first thing you need to do is figure out what event "triggers" your customization, which defines how it is then "fired". In my case, the even in question is the marshaling of information necessary to create and present the information that appears in they MY ACCOUNT screen. Your situation may differ, but the crux of this challenge is to identify the system event to which your custom code can be "hooked".

One potential list of Drupal 7 "hooks" is located at: https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

The next thing you need to do is obtain and manipulate data from the back-end database of Drupal (presumably MySQL, but not strictly so) by creating a database connection, issuing a structured query through that connection and then receiving the result into a data structure that can be iterated through - because most systems have more than one active coupon at any given time.

The design pattern is this:

A) Establish connection
B) Issue command through connection
C) Receive results into local data structure

A tutorial on how to do this is available at: https://www.drupal.org/docs/7/creating-custom-modules/retrieving-data

The last thing you need to do is present the results of the above two operations in a way that the user can perceive as a meaningful response. This usually entails the creation of representative PHP and CSS code to position and then present/style the results.

A tutorial on creating an input form and producing an output form is available at: https://www.youtube.com/watch?v=EHY8McU79gc&ab_channel=CodeKarate

g.

4
  • This does not really answer the question. If you have a different question, you can ask it by clicking Ask Question. To get notified when this question gets new answers, you can follow this question. Once you have enough reputation, you can also add a bounty to draw more attention to this question. - From Review
    – mona lisa
    Commented Sep 18, 2022 at 11:08
  • Question asked: "Are there any functions to retrieve one of unused coupon codes?" 1st Answer: NO 2nd Answer (mine): NO, but here's an outline of HOW, WHAT, WHERE and WHEN to answer your own question. Honestly, please move beyond 1st order thinking. I am not doing free "work for hire" here. I am DONE posting on this platform.
    – user34692
    Commented Sep 19, 2022 at 2:41
  • Flag my comment for moderation instead of leaving. Let’s get another opinion.
    – mona lisa
    Commented Sep 19, 2022 at 3:02
  • Goodbye, Have A Nice Day and Bless Your Heart: 1110110100000010110011101100111011011111101101000111010100111101110101
    – user34692
    Commented Sep 19, 2022 at 4:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.