Craft Commerce: Hard code different product prices based on currency? We are considering using Commerce for a site where the company sets hard coded prices for the various regions and countries they sell in. I know Commerce has multi-currency support but pricing is in a primary currency and then you set conversion rates. However our client just sets prices - there's not a consistent conversion rate. So, for example, a US product would be $700, it would be $950 in Canada and 14000 pesos in Mexico.

Is there a way to achieve this with Commerce in a fashion where the client can update these prices in the admin? It's an important requirement for them and we're considering other platforms but thought someone might have some insight specific to Commerce because we do like Craft for other reasons. Thanks!

--- UPDATE ---

Trying this as per the accepted answer and the lineItem price on the Cart page doesn't seem to reflect what gets set in the plugin. My code...

class NewPricingPlugin extends BasePlugin
{
    function init(){
        craft()-&gt;on('commerce_cart.onBeforeAddToCart', function($event){
​​           $line = $event-&gt;params['lineItem'];

​​ ​          ​NewPricingPlugin::log(​$line['price']​);​ # = $9.00
​
​           // this sets the lineitem price, but when the cart page
           // loads the price hasn't changed.
​           ​$line['price'] = 1000;

​ ​          ​NewPricingPlugin::log(​$line['price']​);​ # = $1000.00
​    ​    });
​    ​}

    // other plugin methods...
}


​Is there a lineItem or cart update method that needs to be called?​
You can add custom fields to store the 'other' price for your products (and/or variants), like, as you say, a matrix, or probably even a table would do.  The fields can then be edited by admins in the back end.

In your templates, you'd selectively display whichever price the particular market needs - this would just be basic template logic.

Then, you'll also need a simple custom plugin that listens to onPopulateLineItem and checks which market the customer is in, and modifies the lineItem price accordingly (by retrieving the correct price form the appropriate field).  Once the lineItem prices are modified as appropriate, they'll be used for the payments and stored with the order, factored into totals etc.

There is an example of modifying a lineItem in the docs here:
https://craftcommerce.com/docs/events-reference#commerce_lineitems.onpopulatelineitem

Unless you have other requirements not mentioned, for someone with Commerce experience, that would be really be quite simple to implement.

(Based on ~ a years work with Commerce and related plugin writing).