Checkout step shipping after address - Prestashop 1.7 - php

Task
My task is to re-map steps on checkout page in different groups but same order steps to fix UX and align better with expectation.
This sound as valid solution and won't change logic behind.
First page is ready: We have login and register as one step.
Second step is to confirm address and after that shipping method.
Third step I will use as payment select.
Last one will be summary.
Issue
Right now payment is with summary and shipping method is on separated step.
No documentation, just code and no hint how this can be achieved.
Very complex process of wiring and I just need frontend to be more elastic to my needs.
Is somewhere some clue how frontend can be modify in this area (steps on checkout)?
How this UI change can be properly done in code?
Screen of issue
[Step 3 - payment and summary is joined]
Screen of design that I try to achieve
[Screen of design - step 2] (shipping method is by default gray - only on project to showcase 2 steps together how they are join in one dot)
[Screen of design - step 3]
Any hint is welcome to resolve problem and it add as documentation to checkout step manipulation on frontend.

I don’t quite understand exactly what you want to achieve.
"Right now payment is with summary and shipping method is on separated
step."
is this an issue?
If you do not want to completely rethink checkout (like OPC modules), you need to follow the PrestShop checkout steps.
If you do not want to display something in the same step as currently have in PrestaShop (for example do you want to ask for phone number on Personal Information step, not on Address step), the best solution is to:
Modify the checkout step TPL files, and add the additional input field (for example add an phone_number input to Personal Information step)
Save the additional input to a JavaScript variable (even with setCookie)
Hide the input in its original step (hide the phone_number input from Address step)
Set the saved JS value to original(hidden) input
But if you can tell us exactly what modifications you would like, maybe we can help you more.

Related

How to calculate dynamic shipping amount based on address in Magento 2.4

In my shopping card build using Magento2.4.2 , I need a dynamic calculation of shipping amount after going to next step after entering the shipping address. What I need is to make a third party API call to calculate shipping value based on address entered. I begin with the following URL but It gives a static shipping value only. I have attached the screenshot of step1 and step2 which will make some sense of what I need. I want to customise the module given in the link to achieve this. I have referenced many articles but could not find a solution. Someone please help to achieve this. The code I have added in same as in the link here
Step 1 : After entering address
Step 2 : Before finalising payment. Here the shipping should not be 0 it should vary according to the address value
Note: I can manage to do the third party call, leave it for me, What I need is to get is where to hook the Magento to modify the shipping value.
There is a good module to handle this kind of things that you may want to take a look at. I think it answer perfectly what you are trying to achieve. Owebia Shipping methods : https://owebia.com/doc/en/magento2-module-advanced-shipping
It's allowing you to add a config file that determines all available shipping methods, specify the prices using all the information you want from the cart and much more.

Magento Multi-Step Product Configuration

I'm currently attempting to extend the inherent Magento product view to divide the custom options belonging to a configurable product into sections loaded by ajax. The end goal is to create a step by step process guiding the user through each step of the product configuration process before they would add the product to the cart.
Advanced Custom Product Options
We are also utilizing Mageworx's Advanced Custom Product Options to allow for the larger customization of products.
Simple Products Linked to Configurable
Our current environment is set up to handle simple products as configurators for their parent configurable product. When a user navigates to the simple product, they are directed to the configurable product with the option represented by the simple product pre-selected.
End Goal
The hopeful endpoint would be that once a user clicks on a simple product, they would be redirected to the configurable product with a single pre-selected option depending on the simple product. The user would then be able to customize their order, or jump directly to adding it to the cart as is. The customization process would re-evaluate at each step to determine if there is a concurrent step, for example, if the user were to select to add trim, there would be an additional step to customize that trim, whereas if they opted out, the step would be skipped.
The idea is simply a product configurator within the Magento framework, something similar, in function, as to what appears below. The checkout steps being Style, Color, and Size, each which have their own page.
The Overarching Question
I am fairly new to the development of Magento, and am wondering what the best method of attacking this problem is. I have thought of using an observer to hook into before add to cart, but I am unsure it would allow me to refresh the blocks and load in new data. My other idea was to tap into view.phtml and set up some ajax loading within the page itself, but that seemed a bit 'hacky'.
I have spent quite a while searching for examples on how some have overcome this problems, but haven't found much outside of some very vague ideas on what could work. If any one has insight onto a solution to my problem, their thoughts would be much appreciated.
Current Approach
So far I've tried creating a Router for a Controller to handle POST requests to change out the Product Option sidebar when a value is changed. It seems a little bit slow, however.

Customization for Payment Gateway in opencart

So I am trying to set up a site on my localhost. I have selected 2 payment gateways from admin end
Online Payment (Free Shipping)
Cash On Delivery(Free Shipping/Flat COD Charge INR 50 )
Now I have customized all the rules for them. I only need one more rule.
I wish to have a functionality wherein I can enter some pincode/postcode values (through admin panel or maybe in some array in a javascript file or directly into the database, does not matter) of locations where second method is available)
Whenever someone presses continue before confirming order, the checkout form is validated so as to check from the form data if the value entered in post code matches the data (from any of the above methods) and if yes, only then they can continue or I wish to show an error message that
Following payment gateway is not available in your location
If you give me a hint on how to proceed with this, perhaps, I might be able to take it further. I am a bit or a starter in opencart so not much idea about how to proceed. I have sound knowledge of PHP, JQuery and Javascript although. So any and all help will be appreciated.
There are a few different extensions that already exist to do what you want - allow you to restrict shipping methods by various criteria. This one is my personal favorite: http://www.opencart.com/index.php?route=extension/extension/info&extension_id=1614
I managed it with JQuery for the time being. Edited the submit function in the cart.tpl file in catalog->view->theme->ancart (theme name) ->cart folder.
Used a plugin called "Zipcode COD" to enter zipcodes. Edited the response JQuery to hide and show payment options.
Lots of hard coding but does the trick. I will post the code if someone needs.

How do I add custom shipping and payment options to checkout in Magento?

Running Magento 1.5.1. My webstore contains a lot of products that get shipped direct from the manufacturer. The cost of shipping is extremely variable, and due to the number of products we carry, it is unfeasible to determine shipping costs for many items.
I would like to add a "request quote" option during checkout. The basic idea I have is this:
-Items without a weight or dimensions will be required to go through an RFQ (request for quote) process. During checkout, if the user has an item in their cart that requires an RFQ (because it doesn't have weight or dimensions defined), it will present a single option for shipping: "Request quote for shipping".
-The next step is the payment screen. Instead of actual payment options, a "pay invoice later" or "pay when quote is received" option will be present. The user will be forced to select this (or perhaps we could skip the payment screen altogether?).
This seems like it should be relatively easy to hack together, but I'm wondering if I'm going about this the wrong way? Is there an easier way to do this? My thought is to modify the checkout code to check for weight or dimensions, if not, only show that one shipping option (I'd probably re-purpose "free shipping" to be that option). Then, in the payment screen, check if free shipping is selected in the order, and then present the custom payment option (probably re-purpose cheque or money order option). From there we'd send them an official quote via Paypal or something similar.
Any thoughts? Thanks!!
I'll offer my normal advice: There are a ton of extensions to let this happen. My philosophy is to start looking at extensions before trying to code anything in magento. Is especially helpful when an upgrade breaks something; they'll usually fix upgrade problems that clearly affect their own extensions for free.
In your case there is a free custom shipping option extension I use for "Will Call" which you can use for "RFQ" purposes. I strongly advise against messing with payment modules. I have written 6 or more "payment" things in PHP for live sites and admin back-end use. Until you really understand Magento, you are wasting your time and money writing code. If your question is to get a website working so you can make money, go buy extensions that get the job done...
To go on about writing code, I hand rolled some code in the contact form to add google re-capcha as well as to have customers select from existing product attributes (vehicle year, make, model). I was eventually able to figure out how to have these reflect in the emails we get from the contact form, however, there is no database persistence, which is the proper solution. Further, mucking about in the code quickly and easily breaks Magento in unexpected and surprising ways, hence why my normal Magento reply on here is to strongly urge people to buy extensions. If you're asking the kind of questions like I would ask, you don't know enough to make a professional extension... buy a few proper extensions, analyze them, spend lots of time trying to figure it out.
Any more there are plenty of extensions competing to do the same tasks, so there should be something already working to do what you want.

Magento - How to set Payment Information in backend for a custom Payment module

I have created a custom Payment module but I could only display the following information in the admin side of Magento
Type of Card
Card Number : xxxx-last 4 digits
Order was placed using USD
But how can I get other details just liek in case pf Paypal like,
Card Validation Status:
Address Validation Status:
Last Transaction ID:
etc. I am getting all these response from my custom payment gateway but I don't know what function to call or how to display it in the back-end for the store owner to see.
Can any one help me with this? Right now my payment module is doing authorize_capture as the payment action so I have Model/PaymentMethod.php which has function capture(Varien Object payment, amount) to deal with the logic. So can I set the Payment Information from there or do I need to create any other files?
Please let me know.
EDIT: I found partial answer to what I need doing.
http://nicholas.piasecki.name/blog/2009/10/add-avs-and-cvn-to-magentos-admin-screen-in-just-637-easy-steps/#comment-1043
But I am not able to override a default admin template file. This link tells to create a Block file which overrides Mage/Payment/Block/Info and set a template in there to be used.
But its not reading it. Can some one tell me the correct way to override an admin template file so that future upgrades don't overwrite it.
I hope some one must be familiar with this bit now.
it isn't taking the code from my overriden module Block file. The template file I need to over ride is app/design/adminhtml/default/default/template/payment/default/info.phtml. Using the link mentioned I have already overridden Mage/Payment/Block/Info and wrote my own code but am not able to set and point towards my template. Any Ideas?
Here is a good article by Alan Storm which will show you how to add settings to the backend:
http://alanstorm.com/custom_magento_system_configuration

Categories