Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by KirkM

  1. Well, I feel like an idiot (not the first time). I was totally focused on where the coupon was applied and not on the shipping module. Uncommenting that line of code did the trick and makes perfect sense. It was right there in the shipping.class.php file, with a big flag of a comment to tell dummies like me "HEY! right here!". Sheesh. Thanks Brian for always jumping in to help. Your remark made me take a look over at the AIOS class after being so focused on the coupon class code.
  2. This is commented in the AIOS class: $this->_value = (float)$this->_basket['subtotal']; // XXX May want to remove coupon discount, i.e. // $this->_value -= $this->_basket['discount']; Could it really be as easy as uncommenting that line of code?
  3. Sorry, I realize this is not really clear. The example of what he needs is over-simplified with just the one product. There could be multiple products. The coupon in this case is for $15 off the whole order. Plus, his promotion also has free shipping for all orders $49 or more. He needs the shipping to be considered AFTER all coupons and any other discounts are deducted. The way the store works now, the coupon looks at the subtotal and the shipping looks at the subtotal ignoring the subtraction for the coupon, because the coupon also happens AFTER the subtotal. There is no consideration by the shipping for a modified subtotal because of the coupon. He will always need the shipping promotion to be on the final amount AFTER any discounts. To me, he is right, that is the way this should work or at least have the option for it to work that way. I hope that is a bit clearer on what the issue is with the current way CC handles the checkout flow.
  4. Been trying to figure out a way to get the coupon to be part of the calculation of subtotal. The more I examine the function of the cart / checkout process from the store owner's point of view and possible marketing approaches, the more I see that the coupon logic is deficient in it's ability to be used in conjunction with other marketing tools. I realize my point of view is rather simplistic since I am not intimately familiar with the code, but I have been reading through the relevant scripts and it seems that even with the complication of coupons for particular products or other variables, those discounts should be taken BEFORE the subtotal that all other things act upon, like shipping. Do you have any suggestions or ideas of how to hack this? Combining coupons with variable shipping zones / rates is pretty common for my client and seems to me to be a pretty basic marketing approach. Thanks.
  5. All in one shipping. What I was thinking was that the coupon should have the user choice of either calculating on the subtotal or as part of the calculation of the subtotal. That way the shipping or any other module can stay looking at the subtotal for their calculations. It would be a really nice flexibility feature in the coupon module.
  6. Interesting situation with a client on CC 6.4.4: He has shipping set up for a fixed rate of $7.95 for orders $0 - $48.99. He has another rate of free shipping for $49.00 - $100,000. He also has a coupon for $15 off for new customers. He needs the coupon to be subtracted BEFORE the store calculates the shipping rate. Here what is happening: Product Z 49.96 Subtotal 49.96 Certificate -15.00 Free Shipping Total 34.96 What he needs: Product Z 49.96 Certificate -15.00 Subtotal 34.96 Ship Charge 7.95 Total 42.91 I don't see a way to get this to happen. Anyone know if this is possible?
  7. OK, I got it. Once again, I got bitten by the "security by obscurity" silliness of CC. Updated the admin folder but not the old obscured admin folder before I ran the upgrade. Loaded the files manually to the new obscured folder and all is good now. I REALLY hate that "feature".
  8. No. Only Authorize.net Accept Hosted, Paypal Commerce Platform and All In One Shipping modules are enabled.
  9. OK, I see the bug you are referring to appears to be in the Print Order Form extension. I don't use that extension. I am getting this in the admin interface when viewing an order. Did I miss something in that bug thread on Github?
  10. Thanks Brian. I should have gone and checked the bug tracker but am so busy I took the lazy way and posted here. Will monitor it over there.
  11. Upgraded store from 6.2.9 to 6.4.4. No error messages in the upgrade. However, now product options print in what looks like a hash of some sort instead of the color, size, etc. (See attachment) Everything seems correct in the admin and I even deleted and re-added the options but it still prints out this hash on the order. I went in to the tables to make sure it wasn't something getting written that way but the options are correct and in plain text there. Any help on where I should start looking for this would be greatly appreciated.
  12. Is this available somewhere? One of my clients wants this functionality and it appears it still isn't built into the latest version of CC. I don't see it in the Extensions Marketplace. Thanks
  13. Just a side note - I took a look in detail of the 6.x checkout process since my client is kind of inferring that it is leading to people opening multiple accounts if they shop before starting checkout. <rant>JFC, you have to be some special sort of stupid to not be able to log into your account at ANY TIME shopping or at checkout. The very first step in checkout says to log in if you have a profile. If you ignore that and start to fill out the information, the ajax call to check the email tells you in real time that you already have that email registered so you can click the login link at the top. To purposely ignore all that and type a different email and continue and THEN call to complain that the store said you couldn't use your registered email address is absolutely mind blowing. You have to work at being that oblivious. </rant> Back on topic, if he requests it, I will close his store overnight, back everything up and try consolidating accounts according to the process I have identified and see if it works. If it does, I will do my best to document it and report back. If it doesn't work, I will report that too. If, after letting him know the risks of undetected issues appearing down the road upon initial success, he decides to leave it, then I will go radio silent on this whole thing. Thanks for the ear.
  14. That is about what one of my clients wants to do - Ask the customers if they intended to have multiple accounts. If not, then find out which email do they want to consolidate under. In most cases, this comes about because his customers call and complain that they couldn't log in so they used a different email to just get the order done. Not sure if it is due to text case issues (does CC use strtolower() on both read and write of user emails to eliminate text case verification errors?) or just people being stupid in one way or another. His business has a giant selection of dietary supplements so he has people that order over and over again for years and even decades. My only concern with doing this manual consolidation was missing something and causing data issues. I listed the ones that I found to be relevant and was looking for some guidance or verification that this will work from someone who has done it before in CC6.x.
  15. Resurrecting this from last year, I think a lot of store owners have this problem (my clients do), so I was looking at the tables and it appears that all of the tables regarding orders use the order number as a key reference and the only table that relates back to the customer ID is order_summary. It looks to me like this is where the relationship between orders (via order #) and customer (customer ID) is established and the order number is the key for all other relational information. Am I wrong in thinking that if I simply do a query in the order_summary table replacing the redundant customers I don't want with the ID of the one I am keeping, that this should move the history and all of the relational table information to that customer? It looks like it to me at this point since I don't see any other reference to customer ID in any tables relating to orders. Any observations about this? The other tables that would have to have the customer_id changed appear to be addressbook, downloads, customer_memberships, saved_cart, shipping_log (no entries?), transactions and customer_reviews. Cookie consent and sessions are strange ones since it seems that the store always puts a 0 in customer_id.
  16. I just did a test with the original code restored and the CCD enabled and it appears you are correct. Thanks for tracking that down. Seeing that the GDPR extends to any company who could possibly do business with anyone in Europe, I suppose it should just be enabled by default in CC since theoretically every store on the web is doing business "worldwide".
  17. Using DevTools in Chrome, I cleared all cookies from the site and then loaded a couple of pages. I see a lot of cookies being stored from the CC store, but none that appear to be any of the listed cookie names used by Smarty. I need to find out where the $smarty.cookies.accept_cookies variable is stored and how it is triggered to true. Perhaps this is a result of the "Cookie Compliance Dialog" not being active in the store?
  18. So it has something to do with the cookie acceptance. If I go to skins/foundation/templates/element.google_analytics.php and take out the smarty {if} statement, it works fine. Original code: {if isset($smarty.cookies.accept_cookies) && $smarty.cookies.accept_cookies=='true'} {literal}<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '{/literal}{$ANALYTICS}{literal}', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script>{/literal} {/if} Removed the {if} statement and that works: {literal}<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '{/literal}{$ANALYTICS}{literal}', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script>{/literal} I don't see where this cookie acceptance is unless it is in the GDPR settings. In this store, they are both off. Does the cookie compliance dialog have to be on for the GA code to work?
  19. My skin is basically the Foundation skin with a few css tweaks. It should be doing exactly what the Foundation skin does. I will have to hunt around and see if I can find what you are talking about. In the mean time, I see a LOT of this in the error logs: File: [controller.admin.pre_session.inc.php] Line: [26] "SET @@time_zone = 'America/Los_Angeles'" - Unknown or incorrect time zone: 'America/Los_Angeles' File: [controller.index.inc.php] Line: [27] "SET @@time_zone = 'America/Los_Angeles'" - Unknown or incorrect time zone: 'America/Los_Angeles' Don't understand how that can be since it is the correct formatting for a timezone and it is selected from the admin drop-down menu. Edit: It does it with all timezone choices. Edit #2: It appears it is not relevant to this situation per this thread - https://forums.cubecart.com/topic/55533-error-about-timezone/
  20. Strangest thing - I upgraded from 6.1.13 to 6.2.9 a little bit ago and my client just noticed that there is no GA feed to his GA account. The really strange part of it is that it isn't an instant drop off. It goes from Feb 2 to Feb 17 in a sharp decline to zero over days. I don't know if the upgrade has anything to do with it or not. If it did, you would think it would have dropped to zero instantly when the upgrade was done. I have diffmerged all of the files to make sure that everything is the same on my installation as the clean version of 6.2.9, including matching my custom skin to the foundation skin with only my css changes the difference. Everything seems to be there. Also, I noticed that Google Tag manager shows no Google Pixel on the site when I go to it in Chrome. I also checked to make sure the element.google_analytics.php file is there in the skin templates file. Not sure where to start looking for this.
  21. Al - Just noticed that the First Name and Last Name are inverted in versions 1.0.4 & 1.0.5 on lines 179 & 180 in gateway.class.php
  22. So I tried the mod you suggested and it appears to work and give the correct tax based on my loading a basket with the same items that were in the original example. As far as the customer's view is concerned, the display is still rounded to 2 dp. I took it up to the hosted checkout so it would register in the admin as a pending order and that seems to display correctly also. I don't think any template mods are necessary unless I am missing something. Is there any reason this can't be in the next version as the actual bug fix? It seems that the rounding on each taxable line item before subtotaling isn't necessary for the entire tax routine to work accurately.
  23. My wife did some accounting early in her career and tells me that line-item tax calculation is the way she was taught for various reasons, such as returns and refunds. You have to be able to pinpoint the amount of tax paid for each item so you can refund the item cost AND the tax paid for it from a multiple-item order. Therefore, your proposal seems like a reasonable theoretical solution. However, right now, my clients need the tax to be accurate and can't wait for a possible fix in the distant future. Tax authorities frown on taking excess tax from consumers. Too little is fine because they just make you take it out of your profits to pay your sales taxes. Too much can be considered defrauding the consumer since you end up with the excess that was taken under the guise of tax after you pay the correct amount to the government tax authority. If you are going to rip people off, they want you to use the "Shipping and Handling" scam. I will try to use your fix idea above and see if that works for now. Thanks again for all of your help and expertise.
  24. Thanks bsmither. I see that the final conclusion of issue 2210 is that the tax calculation of the store really needs to be rewritten to solve all of the issues. I am looking into sprintf vs round discussions to try to expand my knowledge of working with floats in php. Forgive me if this is the dumbest question ever asked, but why can't the order carry two (non-displayed) subtotals: one for taxable items (& shipping, if specified as taxable) and one with non-taxable and tax-included items? At the calculation / display endpoint, tax is calculated on the taxable item sum rounded to 2 dp (for western currencies). Since tax always applies to subtotals per order and not individual items per order in normal commerce transactions, wouldn't this eliminate the "creep"? You would only be rounding once at the end instead of creating a chain of rounding that increases the error with each additional line item. It just seems that the tax work is being unnecessarily done on product line items where it isn't needed and should be moved to a taxable subtotal. Are there accounting reasons for needing a sales tax breakdown for every item sold? Again, forgive me if this is incredibly naive.
  25. Thanks very much for your help. It would take me ages to track it down as I am not really familiar with the CC code.
  • Create New...