I have made a look at the priicng tables, and i found your idea is totally can be the fix for the multi pricing system gird , from database
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`package_id` int(10) unsigned NOT NULL,
`term` smallint(5) unsigned NOT NULL DEFAULT '1',
`period` enum('day','week','month','year','onetime') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'month',
`price` decimal(12,4) NOT NULL DEFAULT '0.0000',
`setup_fee` decimal(12,4) NOT NULL DEFAULT '0.0000',
`cancel_fee` decimal(12,4) NOT NULL DEFAULT '0.0000',
`currency` char(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'USD',
it can be altered to become something like
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`package_id` int(10) unsigned NOT NULL,
`term` smallint(5) unsigned NOT NULL DEFAULT '1',
`period` enum('day','week','month','year','onetime') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'month',
`price` decimal(12,4) NOT NULL DEFAULT '0.0000',
`setup_fee` decimal(12,4) NOT NULL DEFAULT '0.0000',
`cancel_fee` decimal(12,4) NOT NULL DEFAULT '0.0000',
`renew_price` decimal(12,4) DEFAULT NULL,
`transfer_price` decimal(12,4) DEFAULT NULL,
`currency` char(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'USD',
this way we can conserve the same package system and module system, it will need only some small adjustement in the service invoicing, we should include the added prices in the fucntion get getPricingInfo() and PackageOptions->getValuePricingById() not sure if others exist , the function getLinesForServices() is is already has services_renew as parameter and we can use it to determinate which pricing we should use, i think the below code line should be converted to a conditional statement to check if is services_renew = true or not :
$line_item_amount = (isset($pricing_info->price) ? $pricing_info->price : $service->price);
to be something like
$line_item_amount = ($services_renew && isset($pricing_info->renew_price) ?
$pricing_info->renew_price :
isset($pricing_info->price) ? $pricing_info->price : $service->price
);
this is a simple approach to accomplish the pricing schema module .
i think we need to divide the work in steps.
1 - Complete Multi Pricing System (Activation, Renew, Transfer, Setup, Cancel)
2 - Update order plugin to set Transfer price instead of price in domain transfer
3 - Create a Complete Hosting Order Form
4 - Update Registrar Modules to have more tabs management (DNS, Domain forwarding, Email Forwarding)