Jump to content
thirty bees forum

datakick

Administrators
  • Posts

    3,035
  • Joined

  • Last visited

  • Days Won

    465

Everything posted by datakick

  1. This should be already fixed in upcoming version / bleeding edge: https://github.com/thirtybees/thirtybees/commit/45fe39bf0b82aedf0e570263447c8fb7cc306a58
  2. 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
  3. 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?
  4. 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.
  5. 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.
  6. I believe Krona doesn't have loyalty points expiration feature
  7. 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
  8. I believe krona module supports this already. When you import players for the first time, you can use option 'Import Core Loyalty Points':
  9. 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
  10. 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?
  11. 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
  12. try delete cache/class_index.php
  13. 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
  14. 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.
  15. 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.
  16. I just copied and pasted text you entered here
  17. @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
  18. I've just tested this, and it works correctly: This is probably related to your theme / css / fonts you are using
  19. I've just released new version 0.0.3, with following changes: Features: Ability to register third-party triggers and actions -- Other modules can now register their own triggers and actions. I will soon release new version of my other modules (datakick, revws, pricealert) that will add integrations with conseqs. That will allow to trigger action when new review is created, generate xml/csv file when something happens, etc. Import and export rules -- you can now export your rules and import them back, or to another server. If you have some interesting rules, you can now share them with the community! New action - log into text file,... you can log anything that happens in your store. For example, you can keep track of order state changes. Or you can generate list of orders with VAT number in separate file, etc. New action: Assign customer to group - you can, for example, automatically assign your customers to B2B group if they enter VAT number New binding mode - Interpolation -- in previous version, you could bind action parameters to either constant, or value provided by trigger. Newly, you can combine multiple values using interpolation binding. During runtime, placeholders will be replaced by actual values. You can use this, for example, to personalize subject email: Improvements: Added more common context variables that you can use for binding (date, time, current url, shop url, shop email,...) Caching object models detection to improve performance Bugfixes fix mobile issues I'm open for any ideas for future enhancements!
  20. Please don't, that's not how you should customize thirtybees (or prestashop). Changing core files is the worst you can do, it will lock you to the current version, with very limited options to upgrade. The best way to do this is to implement your own module. If that's too hard for you, at least do this using override. You should never change core files. In other words, Advanced Parameters > Configuration Information > LIST OF CHANGED FILES should be empty. If it's not, you will hate yourself soon enough.
  21. There is nothing different here from prestashop 16. You will need to do the same changes on both platforms.
  22. I've just released new version 1.0.24. This version brings following enhancements and bugfixes: Enhancements Reviews with empty titles are now supported Review tab label now shows number of total reviews Customer is redirected back to product page after login Added default css for review average custom placement Italian translation French translation Bugfixes Fixed image overflow issue Fixed images being stretched in firefox Fixed ordering by usefulness Also, new paid version 2.0.5 has been released as well, containing the same features and bugfixes
  23. @yaniv14 answered you already. I can elaborate more: 1) create new module 2) this module should register hook actionEmailSendBefore 3) in this hook, you can add your files to 'fileAttachments' output parameter. That requires loading the file content from disk and passing it in a structure like this: [ 'content' => ...file content... 'name' => 'filename.pdf', 'mime' => 'file mime type' ] If you don't know how to do any of these steps, then you will have to study. There are plenty of resources for prestashop module development out othere. If you don't have time, then hire somebody to do this for you.
  24. Thanks for the heads up. I didn't really test the module for mobile use, because not many merchants are managing their back office using their phones. But it should definitely be fixed
  25. PS: new version is also compatible with ps16 / ps17,... in case you haven't still migrated 🙂
×
×
  • Create New...