Prestashop one step checkout programatically change carrier - prestashop

I'm dealing with an issue, I've been working in a module that does pretty much the same as a cart rule if you have certan type of products and a certain amount in your cart, the module sets a free shipping carrier for you, this can be achieved with discount codes I know that, but the requierement was specific, Do that ... without using discount codes, So, the site has enabled the one step checkout, the module does it well in the 5 step checkout, but the hook DisplayBeforePayment does not work, I know that maybe it isn't working because of ajax call, To keep it simple, What can I do to get my module working with the One step checkout? (order-opc Controller). Thanks in advance!

I think you need to use a different hook. Please have a look at this page.
If you search for "DisplayBeforePayment", you see it's only used in /controllers/front/OrderController.php. The 5 step checkout uses this controller.
The one step checkout uses a different controller: /controllers/front/OrderOpcController.php.
The hook DisplayBeforePayment is not present in that controller, so that's why i think your module doesn't work on the one page checkout.

Related

Limit product to only one per customer

I'm trying to code a solution for a client, that doesn't wish to use apps. We need to be able to limit one of our products, so there only can be one of it in cart at a time.
Is there an easy way to achieve this without an app?
I'm fairly known in JS, HTML and basic liquid solutions. Is it possible to create a pure liquid solution or do we need javascript aswell? The store use ajax cart, which we need to keep.
Thank you,
Magnus
Any time you have a call to add to cart, ensure the quantity is 1
Any time you have a call to add to cart, first ensure that item is not in the cart
When you render the cart, take all the inputs for updating the cart away. Allow only delete.
With that, you can hope that for the most part, customers will only ever have one of something in the cart.
You can then focus on removing any ability to change the quantity when adding to cart, and ensuring that when checkout is selected, items do in fact only have a quantity of 1.
No Apps needed.

BigCommerce - Custom Checkout (Adding Field to Cart)

I am doing some work for a client who uses BigCommerce Stencil Theme and I am pretty new to BC. Until now most of my work with them has been basic theme formatting and styling.
They are asking if I can add checkboxes next to items in cart to indicate an alternative delivery system, and then add a field to address for a hotel room. It seems like built into BC checkout customization you can add fields to addresses so that doesn't seem like an issue, but I'm not so sure about the checkboxes. I would imagine I would need access to the underlying PHP to make this happen which doesn't seem possible. Is this accurate? If not, how might I go about doing this?
I see that I can add the checkboxes themselves to the template files, but as far as sending any data with the checkout I don't know how I'd go about doing this.
For the hotel room address field, you are correct that the simplest solution would be to use the built-in custom address field feature.
For the checkbox/alternate delivery system, we're close to releasing a new Checkout JS SDK that will give you the ability to create a completely custom checkout experience. The SDK is basically a Javascript wrapper for our Storefront Checkout API and it includes operations for checkout actions (like creating a new shipping consignment for an alternate delivery method).
The Checkout SDK doesn't give you access to the underlying PHP; instead, it allows you to create your own frontend using React or whatever framework you prefer. The logic for custom checkout steps would exist in your frontend, and you would send your data to the checkout via the BC Checkout API.
https://stencil.bigcommerce.com/docs/customizing-checkout

BigCommerce Custom Add To Cart Speed Issue

We had a developer add a custom code to certain product pages so that the user could order multiple quantities of multiple product variants all at once from one product page.
The issue is that the script takes too long to run...when you click Add To Cart it is taking 30-60 seconds or more to add all the products to the cart.
That is way too long. (see video here https://www.dipietro.biz/wp-content/uploads/2017/04/add-to-cart-slow.webm )
This is because the script is adding each product to the cart sequentially one by one instead of simultaneously.
Is this something that can be fixed?
We need the Add To Cart speed increased drastically.
I've been told that if we had access to the cart.php file that sits on BigCommerce's server we could just add some type of ajax multi array function and that would solve the problem but of course we do not have access to BigCommerce's servers.
Any help is appreciated at this point.
Thanks!
Without seeing the code, most likely the issue is that, as you mentioned, the products are being added to the cart sequentially, while also waiting for each individual add to cart request to finish before beginning the next - that is, it will add a product to the cart, wait for that product to successfully be added, and then proceed to add the next product to the cart.
Each 'add to cart' action is an individual POST request to the cart.php file. There is a challenge here in that BigCommerce will block the requests if too many of them occur within a certain time period; this is a BigCommerce security feature.
While you do not have access to the cart.php file, and while I do not know the specifics of the BigCommerce rate-limit/security feature, the best way to approach this is to determine and set a feasible max number of concurrent requests as well as a necessary cool-down period in order to maximize the number of requests to BigCommerce while also satisfying the security/rate-limit limitation.
For example, you might set up the program to concurrently add 3 products to the cart, wait 1 second, and then proceed to add another 3 products. Does this make sense?

How to get list carts with magento API?

I working on Magento with carts. I using SOAP to create cart and add products to it. but can i get list of carts. And how to active it.
In dashboard of magento admin, i see
Reports > Shopping Cart > Abandoned Carts
with list of carts is active. Can i get it?
Thank a lot, sorry for my bad english.
If you want to see how the query behind the report is generated, have a look at https://github.com/magento/magento2/blob/83132783e0a6bed32c45e6d06df851865e668abc/app/code/Magento/Reports/Model/Resource/Quote/Collection.php#L54 - this is the code that forms the query. You can see the table fields it uses (e.g. checking if is_active, must be at least one item in cart, etc), then sorts by updated_at so oldest cart comes up first.
There is also a blog post at http://cyrillschumacher.com/2015/01/02/magento2---search-parameters-for-the-rest-api/ which describes (for the REST API) how to build a search. It is backed by the same data constructs as for SOAP.
You can use the end point http:///soap/default?wsdl&services=quoteCartRepositoryV1 to bring up the WSDL file.
Sorry, I don't have time right now to build up the SOAP request myself, but hopefully these pointers are useful to help you make some progress.

Shopify API: Create a Promotion?

Using the Shopify API, is there a way to creation promotions for your store? If not, is there a way to programmatically create promotions in Shopify? (short of using CURL posts to the admin)
That is, I can create a promotion by hand using the admin and navigating to the Promotions and clicking the Add a discount code link. I'd like to be able to do the same thing programmatically, or to know for certain this isn't possible. I don't see any obvious method on the api list, but it seems like something should be an API method.
Unfortunately they don't allow it... I resorted to creating an interface to do so, though:
https://github.com/MartinAmps/Shopify-Private-APIs
Hope it helps
Edit
I also created a blog post about it.
There is no way to create discounts via the API.
If you want we have made an application that can be used to create discount codes.
Otherwise you can use a tool like Mechanize to automate coupon creation for you, but keep in mind theres a good chance that any time in the future it will break since we don't make any promises to keep our admin the same in the future. Any changes have a good chance of breaking whatever script you'd end up writing.
The Price Rules API is now public and allow any app to create price rules and discount codes.
https://help.shopify.com/api/price-rules
If you're familiar with Rails or you're already using ActiveResource for your Shopify API calls, then you can drop in this modified version of Discount < ActiveResource::Base https://gist.github.com/choonkeat/09a56da222f506e627c5