Assuming that the prices are random and impossible to figure out a formula, you could either create 31 product attributes (ie today_price_1...31) for each day, create one attributes and enter the price for each day as a csv or create a csv upload that keep track of the product id/sku and each day price for all the item that need to be updated.
Assuming that there is a formula, then you will need to figure out if this formula should apply to the current day price or the original base product price. You may want to consider using/changing the "special price" so you can all way know what the base price is (assuming it always more)
Module
<config>
<global>
<models>
<pricecron>
<class>MagePal_PriceCron_Model</class>
</pricecron>
</models>
</global>
<crontab>
<jobs>
<pricecron>
<schedule>
<cron_expr>0 0 * * *</cron_expr>
</schedule>
<run>
<model>pricecron/observer::setPrice</model>
</run>
</pricecron>
</jobs>
</crontab>
</config>
In app/code/local/Roomstory/Invoice/Model/Observer.php
add the following:
<?php
class MagePal_PriceCron_Model_Observer {
public function setPrice() {
//to do - get today day index (assuming 1)
$todayIndex = 1;
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
//Assuming you are using product attributes
$products = Mage::getModel('catalog/product')->getCollection();
foreach($products as $product) {
//get attribute base of today
$todayPrice = $product->getData('today_price_' . $todayIndex);
if($todayPrice > 0){
//may want to think about using special price
$product->getPrice($todayPrice);
$product->save();
}
}
}
}