It is a typo, but it was consistent with the coupon code ... still I made it correct english
Announcement
Collapse
No announcement yet.
Get assigned categories
Collapse
X
-
:deep sigh:
I don't understand why this mvt:do call doesn't go.
Code:<mvt:foreach iterator="group" array="basket:groups"> <mvt:assign name="g.assigned_categories" value="''" /> <mvt:do name="l.result" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l.settings:group:product:id,0,'','',0,l.null, g.assigned_categories )" /> <mvt:foreach iterator="category" array="global:assigned_categories"> <mvt:if expr="l.settings:category:code EQ 'Capstar-tablets'"> <mvt:do file="g.Module_Feature_PGR_RT" name="l.success" value="Action_ApplyCouponToBasket('Capstar-Special')" /> <p>The correct items are in the basket.</p> <---- This line will show up so the `mvt:if expr` seems to be correct but there is no evidence of a coupon code being applied. </mvt:if> </mvt:foreach> </mvt:foreach>
But all of it is worthless unless the coupon code goes.
edit -- 2019-05-22-1005
I guess the last resort alternative is to put a JavaScript block in the checkout page and do the coupon check there, since I know the customer will load that page, and the client side JS will run.Last edited by cpp-dev; 05-22-19, 09:06 AM.
Comment
-
Could be for a number of different reasons. Few of which can be known without additional information, so, its time to play "Debug". For example:
Code:<mvt:do name="l.result1" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l.settings:group:product:id,0,'','',0,l.null, g.assigned_categories )" /> <p>Debug1: <mvt:eval expr="l.result1"/></p>
Bruce Golub
Phosphor Media - "Your Success is our Business"
Improve Your Customer Service | Get MORE Customers | Edit CSS/Javascript/HTML Easily | Make Your Site Faster | Get Indexed by Google | Free Modules | Follow Us on Facebook
phosphormedia.com
Comment
-
Originally posted by Bruce - PhosphorMedia View PostBut, you also have an incorrect syntax on the foreach. When used in an expression a global variable is expressed with just "g." not "global"
- Result: the nested loop did not output the expected paragraph text
- Action: returned to previous var name
- Result: the expected paragraph text is visible again
-- Conjecture: nested loops have a different syntax?
Step 02: add debug line after line 3
- Result: "Debug1: 1" -- and the paragraph went away but that is expected since the variables changed.
Comment
-
Well, a nested 'loop' can have different results given what changes to the variable structure occur within the first loop, but syntax will not change. Try this:
[code]
<mvt:foreach iterator="group" array="basket:groups">
<mvt:assign name="g.assigned_categories" value="''" />
<mvt:do name="l.result" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l .settings:group:product:id,0,'','',0,l.null, l.theseCategories)" />
<mvt:foreach iterator="category" array="theseCategories">
<mvt:if expr="l.settings:category:code EQ 'Capstar-tablets'">
<mvt:do file="g.Module_Feature_PGR_RT" name="l.success" value="Action_ApplyCouponToBasket('Capstar-Special')" />
<mvt:eval expr="'<p>Did it work: ' $l.success$ '</p>"/>
</mvt:if>
</mvt:foreach>
</mvt:foreach>
[\code]
Bruce Golub
Phosphor Media - "Your Success is our Business"
Improve Your Customer Service | Get MORE Customers | Edit CSS/Javascript/HTML Easily | Make Your Site Faster | Get Indexed by Google | Free Modules | Follow Us on Facebook
phosphormedia.com
Comment
-
First thank you for your help Bruce - PhosphorMedia
Here's the results:
Attempted to use your suggested code:
Code:<mvt:foreach iterator="group" array="basket:groups"> <mvt:assign name="g.assigned_categories" value="''" /> <mvt:do name="l.result" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l.settings:group:product:id,0,'','',0,l.null, l.theseCategories)" /> <mvt:foreach iterator="category" array="theseCategories"> <mvt:if expr="l.settings:category:code EQ 'Capstar-tablets'"> <mvt:do file="g.Module_Feature_PGR_RT" name="l.success" value="Action_ApplyCouponToBasket('Capstar-Special')" /> <mvt:eval expr="'<p>Did it work: ' $l.success$ '</p>'"/> </mvt:if> </mvt:foreach> </mvt:foreach>
- After adding in a missing single quote the content section syntax checker was satisfied and updated the code.
- Adding one of the products to the produced no output from the content section.
For the sake of getting some sort of output I modified the 'known working' code with the debug message
Code:<mvt:foreach iterator="group" array="basket:groups"> <mvt:assign name="g.assigned_categories" value="''" /> <mvt:do name="l.result" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l.settings:group:product:id,0,'','',0,l.null, g.assigned_categories )" /> <mvt:foreach iterator="category" array="global:assigned_categories"> <mvt:if expr="l.settings:category:code EQ 'Capstar-tablets'"> <mvt:do file="g.Module_Feature_PGR_RT" name="l.success" value="Action_ApplyCouponToBasket('Capstar-Special')" /> <p>The correct items are in the basket.</p> <mvt:eval expr="'<p>Did it work: ' $l.success$ '</p>'"/> </mvt:if> </mvt:foreach> </mvt:foreach>
- The expected output was visible
- The debug message revealed no value for "$l.success$"
Comment
-
sorry, guess someone should have checked the LSK... Action_ApplyCouponToBasket() doesn't take any parameters. The basket contents is scanned for the required inclusions/exclusions. You need (hopefully) to pass the coupon code in as a global (g.coupon_code).
<mvt:if expr="l.settings:category:code EQ 'Capstar-tablets'"> <mvt:assign name="g.coupon_code" value="'Name_of_Coupon'"/> <mvt:do file="g.Module_Feature_PGR_RT" name="l.success" value="Action_ApplyCouponToBasket()" />
Bruce Golub
Phosphor Media - "Your Success is our Business"
Improve Your Customer Service | Get MORE Customers | Edit CSS/Javascript/HTML Easily | Make Your Site Faster | Get Indexed by Google | Free Modules | Follow Us on Facebook
phosphormedia.com
Comment
-
I'm not sure what 'LSK' stands for. But you expressed in code, what my brain was coming to re-reading the `mvt:do` docs.
There is some slightly unexpected behavior when I try to edit the item or have more than one of the 'correct' item in the cart, but it is operational as a proof of concept.
Comment
-
Ok so looking at how the cart is now repeating itself over and over and over. Obviously the loop needs a 'stop' condition, since I want to apply the code only once per qualifying category. The most progress I've made in days.
Interesting second point -- The coupon is in the 'coupon' field, but the actual 'apply' action isn't done till the checkout. I'm sure this can be worked though but interesting wrinkle
In the BASK. clicking the 'apply' button on the coupon form triggers the 'cascade'(in Firefox), or just having the item in the BASK (when using Chrome). See the first comment about this behavior. -- https://drive.google.com/open?id=1h-...5Coh9lbMgv0bwjLast edited by cpp-dev; 05-22-19, 12:50 PM.
Comment
-
I've kind of lost track of the end result here...but you can have automatic 'basket' discounts based on products (so by default Categories since a categories is a set of products) using the Miva Admin settings.Bruce Golub
Phosphor Media - "Your Success is our Business"
Improve Your Customer Service | Get MORE Customers | Edit CSS/Javascript/HTML Easily | Make Your Site Faster | Get Indexed by Google | Free Modules | Follow Us on Facebook
phosphormedia.com
Comment
-
Sorry. Bruce - PhosphorMedia -- End goal, is to have a means to automatically apply a coupon code, based on the item's category or code.
So now we have:- the loops that go over the bask page, and get the items & their categories.
- a mvt "native" way to put a coupon code into the BASK page.
Thanks again Bruce - PhosphorMedia and @scot-scotscripts-com for all your guidance.
Comment
-
Originally posted by cpp-dev View PostSorry. Bruce - PhosphorMedia -- End goal, is to have a means to automatically apply a coupon code, based on the item's category or code.Bruce Golub
Phosphor Media - "Your Success is our Business"
Improve Your Customer Service | Get MORE Customers | Edit CSS/Javascript/HTML Easily | Make Your Site Faster | Get Indexed by Google | Free Modules | Follow Us on Facebook
phosphormedia.com
Comment
-
Using the tools as you describe will give the end result, but it will not allow us to promote this feature to Google Shopping or our other advertising platforms. This seemed the best way to fulfill out contract with the manufacturer and offer our clients an easy experience.
The complication at the core is that the margins on the different products allow for greater an lesser discounts. Which means that there isn't a single discount that can be applied to all the items, to keep our competitive pricing and fulfill the pricing commitment made with the manufacturer. Also there isn't a way to set multiple price groups to a coupon code so even making it a single coupon was not feasible. This was the best I could come up with to work around the issue we are in.
Comment
Comment