Jump to content
thirty bees forum

datakick

Administrators
  • Posts

    3,120
  • Joined

  • Last visited

  • Days Won

    486

Everything posted by datakick

  1. Apply this fix: https://github.com/thirtybees/elasticsearch/commit/49bfd11fd7e673d547de6115a13972a650c60f31
  2. I've released another version 0.3.0 From feature point of view, this version brings only two new actions: Create Voucher you can now dynamically create vouchers for your customers example use case is to award your customer for posting review on your shop Award loyalty points this action is works with standard loyalty module, and it will appear only if you have this module installed and enabled it will allow you to give your customer additional loyalty points for their action for example, you can give them loyalty points for reviews, for page visits, etc... Changes in licensing: This version also changes licensing structure of this module. I decided to abandon trial-version model. Instead, I offer this as a free module with limited number of rules you can create. If you reach the rule limit, you will have to purchase license (or delete those you don't need). I made this change because I believe module like this might benefit from big user base. My hope is that its users will create interesting integration and share them with other folks.
  3. My module should work with any payment module that implements standard displayPaymentEU hook. Mollie does implement it, so there shouldn't be any blocking issue. Regarding demo version -- this module is released under trial license. You can download it from my store, and you'll get 14 days to evaluate it for free
  4. datakick

    Cache 'warmer'

    are you using FPC? If not, than there is nothing to warm...
  5. you can't download github repository and use it as a module. Github contains source code that needs to be build.
  6. I've just added new feature to my conseqs module that can handle this use case https://store.getdatakick.com/en/blog/conseqs-attach-file-to-outgoing-emails
  7. New release: 0.2.0 I'm happy to announce new version of this module. This version brings one important feature Ability to impact execution path Until now, conseqs rules were executed in parallel to the code that triggered it. It run in isolation and it could not impact execution path of the code that triggered it. Let's take Before email is sent trigger as an example. Regardless of what action was executed, the email was always sent, unchanged. We were able to create rule to log information about email, but it wasn't possible to create action to prevent email from being sent, or to modify email subject... That's not true anymore. This new version of module supports these kind of actions. New actions: Change Order Status you can create rules and change order status example use case is to automatically cancel old, unpaid orders Email: prevent sending email this action will block email from being sent for example, you can drop contact form notification emails or you can ignore emails to disposable addresses (for example mailinator) Email: change subject you can use this action to compose custom email subject ideal for email personalisation Email: add BCC recipient you can add new recipient to BCC great way to send yourself copy of all emails sent from your store Email: attach file you can dynamically attach file(s) to your emails for example, you can attach product manual to Order Confirmation email Email: change recipient you can use this action to change email recipient (to email address) Email: change email template this action will allow you to use different email template to render email You can use this feature to have different templates for different customer groups, for example I hope you will find these new features useful. If you have any feature requests or suggestions, please let me know. At the moment, I have the last big feature planned for this module -- Custom variables (as explained in previous post)
  8. This should be already fixed in upcoming version / bleeding edge: https://github.com/thirtybees/thirtybees/commit/45fe39bf0b82aedf0e570263447c8fb7cc306a58
  9. As I wrote before, I will add new variable 'Order: Products' that will contain html <table>...</table> with products in order. Similarly for cart object. That should be enough to address this use case. Anyway, I do plan to add another feature that will allow you to define your own variables. It will be another (optional) step between Trigger and Conditions. In here, you will be able to create new variables, and used them later in Conditions and Actions. You will be able to define new variables using one of these ways: expression to calculate new variable value based on old values (provided by Trigger) {Custom:MyPrice} = {Order.Total} * 1.2 {Custom:Subject} = 'Hello ' + {Customer.First name} + ' ' + {Customer.Last name} ... this is very similar to what my DataKick module supports now fetch some data from database using SQL query, like this: SELECT COUNT(1) FROM tb_order WHERE id_customer = {Order:Customer:ID} That should give great flexibility to create (almost) any automation that comes to mind
  10. Conseqs actually parses email template, finds all {placeholders}, and then requires you to provide values for them. Now it depends on what data are available -- every kind of trigger provides different set of data you can use. For example, trigger "Order was updated" give you complete Order object, so you can it's data bind to email placeholders. But if you use trigger "Page view: Product", you don't have any order to work with. This trigger gives you Product object displayed on current page. Other thing is that email templates are very dumb. We can't use any loops, for cycles, or even conditional statements in them. They are not smarty templates, unfortunately. So it's very hard to display dynamic content, like products in order. Thirtybees can do this only by using nasty hack -- it pregenerate html table with ordered products and pass it to email template in as one variable. I guess I could do something similar in conseqs (when dealing with Order, or Cart object) Regarding sql queries -- what do you mean? Could you please explain more?
  11. There is no automatic conversion of points to coupon during checkout. Customer needs to do this manually -- both in native loyalty module, and in krona module. See screenshot from native loyalty module -- when I placed order 316, points from order 315 were not used. In order to use points, customer needs to manually click on Transform button.
  12. Loyalty module creates database entry when order is placed, and these entries expires separately. That means, if customer places two orders 2019-01-01 - 10 points 2019-01-10 - 20 points If expiration period is 20 days, then on 2019-01-15 the total points available is 30. But on 2019-01-30, the first entry expired, and total available points is just 20. Krona, if I'm not mistaken, doesn't do think like that. It keeps single record with current total amount. So, it's not easily possible to expire individual entries. But I believe it's nonsense, anyway. I would suggest that every purchase will re-start expiration. This way, all what's needed is new column in player table.
  13. I believe Krona doesn't have loyalty points expiration feature
  14. datakick

    carrier errors

    I can also confirm that the fix works. I've picked this change into the next tb version https://github.com/thirtybees/thirtybees/commit/51ebfa051ebd330f0d35a873679ca28ff818e2d2
  15. I believe krona module supports this already. When you import players for the first time, you can use option 'Import Core Loyalty Points':
  16. New release 0.1.0 I'm pushing this module towards the final shape. This new version is almost complete solution, from framework perspective. What's new: 1) Integration with @wakabayashi amazing krona module. You can now use any conseqs trigger to award loyalty points to your customer. For example, give extra loyalty points if bank payment is done within 5 days or placing order. Or anything else, the possibilities are unlimited 2) Log errors -- shit happens, so we need to count with that. The last thing we want is conseq rule to cause 500 error page. From now on this is (almost) impossible. If any error happens during rule execution, it will NOT affect user in any way. Instead, error will be silently log, and page will render. You will see error log page in your back office conseq module page: 3) Measures - you can now measure some interesting values in your database, and react when this value changes over time. This is the most important functionality in this release. Until now, conseqs could react to real-time events only. We could create rule that was executed when order is placed, or when customer visits some page. We needed some event to perform the action. With measures, we don't need to anymore. It depends on cron task to periodically re-calculate some values. If the current value is different than measured value from the last run, we can trigger any action. This opens doors to many possibilities, and many new types of triggers. For example, this version contains trigger to detect and react to loyalty points expiration (pinging @30knees) I know this sounds way too technical, so let me try to explain this by example: Example: Assignment: We want customer to be assigned to VIP group if (and only if) he purchased over $300 in the last 90 days Solution: (you can download the complete solution vip_group_example.json, and import it to your conseqs module) 1) we will create measure that will calculate amount purchased in last 90 days by customer. This measure will be based on following sql, which returns id customer, and purchased amount in the last 90 days: SELECT `id_customer`, SUM(`total_paid_real` / `conversion_rate`) AS `total` FROM `tb_orders` AS `o` WHERE `o`.`valid` = 1 AND `o`.`date_add` > DATE_SUB(NOW(), INTERVAL 90 DAY) GROUP BY `id_customer` 2) we will create new rule to assign customer to VIP group if measure value goes over threshold of $300 trigger = Measure Value Changed add 2 conditions: "Measure: Old value" < 300 "Measure: New value" >= 300 action = Assign customer to group, bind values "Customer ID" bind to "Measure: Customer: ID" "Group" set to constant value of "VIP" 3) similarly, we will create new rule to assign customer back to Customer group, if measure value goes below $300 trigger = Measure Value Changed add 2 conditions: "Measure: Old value" >= 300 "Measure: New value" < 300 action = Assign customer to group, bind values "Customer ID" bind to "Measure: Customer: ID" "Group" set to constant value of "Customer" And we are done. Conseqs module will periodically recalculate measure, and executes one of these rules if necesseary. The same process in screenshots: 1) create measure: 2) create rule
  17. I wonder - how did you perform the upgrade? Manually, or did you use coreupdater? From what version? Because I can't understand how you've managed to get to this particular error. For advdebug to not be initialized, you would need to delete or modify config/defines_custom.inc.php file. And neither coreupder or tbupder does this (I believe), and why would you do it manually?
  18. This exception is encrypted using your server's private key. Only you can decrypt it. Turn on debug mode to see the error message on the screen
  19. try delete cache/class_index.php
  20. There's some error during bootstrap. It might not be related to Configuration class at all, you need to figure out root cause first. Start by changing line 85 in /config/config.inc.php to d([ $e->getMessage(), $e->getCode(), $e->getTrace(), $e->getFile(), $e->getLine() ]); That will tell you more
  21. Yes, revws comes with Yotpo import functinality. In fact, it's also in free version of the module. It looks like I should make it more prominent somehow, as people have hard time finding it. Maybe I'll add import button to the review page if there are no reviews -- right after installation. That could do the trick.
  22. These kind of triggers are in the backlog, but it's not immediate task. The problem here is that there is no real-time event conseqs could subscribe and react to. In this case, this trigger action is defined by state that changes over time. That means that some cron needs to run, and periodically check if the conditions are met. What's even more complicated is the fact that conditions can hold for a long time. We definitely don't want to send email reminder to use loyalty points every time cron task executes. That means some database storage in which we will hold previous value of this measurement, and use it to react on changes only. Altogether, it's very complicated. But I agree that this extends the use cases significantly, so I'll definitely implement this in near future.
  23. I just copied and pasted text you entered here
  24. @movieseals you are using some sort of adblocker, aren't you? My site uses gdpr popup, and some ad-blocker extensions can incorrectly categorize it as an ad, and hide it. This is how it should look 🙂 Anyway, to learn more / download this module, you can go to my store
  25. I've just tested this, and it works correctly: This is probably related to your theme / css / fonts you are using
×
×
  • Create New...