I don't know if this is an option. I've got a solution that requires a CRON to be run every so often.
gist.github.com/btray77/d37fc77bc22b397b03b8 <-- Code is also here.
It's not been tested, but I use almost the same code to update products attributes.
Observer.php
<?php
// app/code/local/Yourname/Tax/Model/Observer.php
class YourName_Tax_Model_Observer {
public function updateTaxRates(){
$productCollection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('tax_class_id');
foreach ($productCollection as $product) {
if (($taxClassId != '1')) {
//You can change the logic here
$product->setData('tax_class_id', $store_id)->getResource()->saveAttribute($product, 'tax_class_id');
usleep(20000);//0.02 seconds to keep database from being locked
}
}
}
}
Config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- html/app/code/local/Yourname/Tax/etc/config.xml -->
<config>
<modules>
<Yourname_Tax>
<version>0.1.1</version>
</Yourname_Tax>
</modules>
<!-- -->
<crontab>
<jobs>
<Yourname_Tax>
<schedule>
<cron_expr>*/05 * * * *</cron_expr> <!-- Every X Minutes Update As Needed-->
</schedule>
<run>
<model>Yourname_Tax/observer::updateTaxRates</model>
</run>
</Yourname_Tax>
</jobs>
</crontab>
<!-- -->
</config>