Prestashop 1.7.3.3 Edit Registration Form - prestashop

I use prestashop 1.7.3.3 e-commerce system.
I need to get a phone number from the customer.
Phone field looks optional. I want to make it mandatory.
How can i do that?
enter image description here

You can set that field as mandatory in the BO > Customers > Addresses.

Related

How do I get a field in odoo 15 from res.partner module shown in account.move?

In odoo 15 I have created a PDF report for invoices using a custom layout via an external module. The address of the customer is specified at the top left of the first page of the PDF report. The content comes from the record that was created via "Customer" (res.partner) and selected via the field "partner_id". After the selection, the street and postal code as well as city are loaded in the edit view of an invoice and thus transferred to the PDF document.
How can I extend or overwrite the address field in my custom report layout to create an own address field that comes from the customer data (model res.partner)? I have created an additional field there via a module (address_suffix) that can store an address addition. I would like to be able to include this custom field of res.partner in the address field at account.move and in the end into the PDF report.
To illustrate it:
I want this field (address_suffix in res.partner)
can be seen here (account.move):
You can check the OCA partner_address_street3 module. It is similar to yours, it adds a third street field (street3) to store additional address information.
The module extends the address format, so it should automatically show on reports
On your report xm, I think you can try using t-field and using widget contact inside the t-options tag.
Example:
<span t-field="partner_id" t-options='{"widget": "contact", "fields": ["address"]}'/>

Prestashop add custom radio button on shipping carriers on front end checkout

I have created one custom module in Prestashop 1.7.8.7 which will add multiple shipping methods (Carrier) and will show shipping cost based on product dimensions and delivery address. So shipping carrier will look something like this on front-end checkout page. https://prnt.sc/E1avDASyJYYW
Now if someone select SameDay Courier Shipping then i need to show two radio button to select which service they want.
It will have two radio options like
Delivery pickup (by default this option will be selected)
Locker pickup
So if someone select Delivery pickup then it will have different shipping cost and if someone select Locker pickup then it will have different shipping cost.
Can anybody help me how can i achieve this functionality.
While digging, i found that we have file called DeliveryOptionsFinder.php and in that file we have one public function called getDeliveryOptions() where we have this line of code
if ($moduleId = Module::getModuleIdByName($carrier['external_module_name'])) {
$carrier['extraContent'] = Hook::exec('displayCarrierExtraContent', ['carrier' => $carrier], $moduleId);
}
}
So if i set is_module to 1 to all my carriers directly from DB then on frontend checkout page, no carriers is being displayed.
Thanks in advance.
I've already done something like this in the last 2 year as prestashop developer.
The truth is that you can't achieve what you want by "respecting" prestashop processes.
Maybe you can hook using a module the hookDisplayCarrierExtraContent($data) and then return the 2 radios if carrier is certain one (use $data).
But you can't handle a form submit or something else, or include it to prestashop checkout data.
But what you can do as workaround, for example, is the following.
In your module, as I said, hook the extra content, render a template with the 2 radios. Hook displayHeader too and use $this->context->controller->addJS() to add your own js if the current controller is the checkout one.
Then in this JS code you can handle the "change" event of the radios and send an ajax request to your module.
You can create inside {your_module}/controllers/front/ a controller called, for example, radio-choose and handle the js ajax request by saving inside your own table the choosen one.
Obviously you can disable the "next" button in checkout untill one of the two radios are selected, or maybe you can just set a radio button as default one to simplify.
For example your table "ps_cart_choosen_radio" could look like this |id_cart|choosen_radio|.
Then you have all the data you needed. When a cart is converted into an order you will have inside Order object (and ps_orders table as well) the id_cart.
Just select / join choosen radio from your own table by using order's id_cart.
"SELECT choosen_radio FROM ps_cart_choosen_radio WHERE id_cart = {$order.id_cart}"
If you need to show data depending on choosen_radio in frontend you can hook everywhere an order is present and select these data. Or maybe you can edit carrier name in ps_orders table by adding a piece of string. Let' say carrier is "express" and customer choosed "24h". You can update that column with carrier name by changing it to "express-24h" so around the whole prestashop ecosystem everybody will see that's a 24h choice.
Remember that the carrier name related to an order is not the carrier name inside the carriers table. So you can edit it without having trouble.
All these problems comes from the "need" to show some nested choices instead of listing all these in the main selections. In that case it would be easy (just create carrier in the prestashop backoffice)

How can I change invoice sequence in Odoo 10?

I want to change this format generated by default in odoo , with a custom format from this:
to this :
ING-ENR-YEAR-MONTH
How I can do it?
activate the developer mode
Go to Settings > Technical > External Identifiers > Sequences
Search for the Customer Invoices and open the record
Change the prefix to ING-ENR-%(year)s-%(month)s (see image)
hope this helps!

Currency conversion based on location and Paypal payments

In a Prestashop 1.6 based store I want to accept payments via Paypal in only one currency (Euros). However, I want to show prices in other currencies based on the location of the customer (probably using it's IP address?). How can I do that?
In Modules and services > payment you have a tab CURRENCY RESTRICTIONS, you can check in which currency you would like Paypal to be available
For currecy selection by IP:
First, you should get the user IP after, you should set the curency of the Prestashop context
$this->context->currency->id = $id_currency
To get $id_currency, follow this steps
You should get the country of the the user IP with this script
Then get the currency code by country code (you can get if from a csv file or you you should use an API or database)
The free IP Find service provides currency information in the response for any given IP Address.
Eg. http://ipfind.co?ip=8.8.8.8
Will return (among other things)
currency: USD

Override email templates (mailalert module) in prestashop

We have an eshop in prestashop (1.6.1.12 version) with mail alerts module installed. The concept is to modify the email template in order to change the way some values are being displayed. In particular we would like to modify the new_order email notification (the one that the shop owner receive for every new order) removing the product links from the product list and display the shipping costs without tax (the total tax is visible on the next field of the email).
You have the template files in this directory:
/modules/mailalerts/mails/[your-language]