Australia | 11:38 AM
Sigma Healthcare has adjusted guidance to account for the renewed Chemist Warehouse contract, while Australian Pharmaceutical Industries finally takes its hat out of the merger ring.
-Downgrades FY20 guidance to reflect investment in new CW contract
-Brokers question whether full Project Pivot savings can be achieved
-Execution risk in strategy to diversify away from PBS
By Eva Brocklehurst
It’s now official. After a rebuff from Sigma Healthcare ((SIG)) to its advances early in the year, suitor Australian Pharmaceutical Industries ((API)) has decided to step away, selling its stake in the company.
Meanwhile Sigma Healthcare has now adjusted its outlook to account for the renewed Chemist Warehouse contract, which was obtained last month. The company has downgraded FY20 operating earnings guidance to $46-47m, from the lower end of $55-60m previously, to reflect the investment that will be needed.
Australian Pharmaceutical Industries has sold its 12.96% stake in Sigma Healthcare for $0.60 a share, representing a -$3.5m loss, having acquired the stake in December 2018. This ends, for now, the long-running conjecture over a merger of the two.
Sigma finally rejected the merger talks in March, instead opting to focus on its cost reduction program. Brokers had considered the economic rationale for consolidation strong, as there is significant overcapacity and duplication.
Yet, Credit Suisse had ascertained last December that a deal would not be accretive for Australian Pharmaceutical until FY22 and subsequently expected it to sell, given Sigma’s indifference, confirming consolidation of the wholesale pharmaceutical distribution industry is unlikely.
Chemist Warehouse
Sigma Healthcare will resume as Chemist Warehouse’s first line FMCG (fast moving consumer goods) wholesaler from December and has had to reinvest some of the early benefits from its ongoing cost reduction program, Project Pivot.
The company has stated that the new contract is the only reason for the downgrade to guidance and the core business is performing “ahead of expectations”. Sigma expects earnings growth to accelerate in FY21 as the new contract reaches its $700-800m annualised run rate.
The new deal with Chemist Warehouse provides for an upturn in volumes and distribution centre utilisation. Still the products will not carry any CSO (community service obligations) reimbursement and require material working capital involvement.
This reflects a challenged wholesale market, Credit Suisse asserts, with increasing price pressure on PBS (pharmaceutical benefits scheme) medicines and no increase in the CSO funding.
Moreover, EBOS Healthcare holds a commanding 40% market share, creating greater competition among small operators. The broker also is sceptical about any material improvement further out for CSO wholesalers, given the current tight funding environment.
Sigma Healthcare remains confident about achieving the $100m in targeted cost reductions. Around 55% of the program has already been actioned and it aims to achieve 60% of these savings from the Chemist Warehouse transition, 30% from operating efficiencies and 10% from ‘smart spend’ programs.
UBS remains of the view that execution on the $40m in savings not tied to Chemist Warehouse will be more difficult post the reinvestment, and it will also be difficult to determine the actual quantum of savings achieved.
The full story is for FNArena subscribers only. To read the full story plus enjoy a free two-week trial to our service SIGN UP HERE
If you already had your free trial, why not join as a paying subscriber? CLICK HERE
var fn_do_fb_login; var fn_check_login_state; var fn_get_fb_login_button; var fn_remove_fb_loading_btn; var fn_status_change_callback;
jQuery(document).ready(function(e){
window.fbAsyncInit = function() { FB.init({ appId : '2003222569780759', // dev version: 500318794096450 cookie : true, // Enable cookies to allow the server to access the session. xfbml : true, // Parse social plugins on this webpage. version : 'v4.0' // Use this Graph API version for this call. });
//check if all fb elements done rendering //========== fn_get_fb_login_button();
FB.Event.subscribe('xfbml.render', function(response) { fn_remove_fb_loading_btn(); }); //==========
FB.getLoginStatus(function(response) { // Called after the JS SDK has been initialized.
var fb_r = response;
if (fb_r && fb_r.status === 'connected') {
get_detail_data(fb_r.authResponse.userID); // Returns the login status.
// logout function // FB.logout(function(response) { // console.log('do logout'); // }); } }); };
(function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
//fb functionality //======================================================= fn_check_login_state = function check_login_state() { // Called when a person is finished with the Login Button.
//everytime event login triggered, reset the form fn_reset_form();
FB.getLoginStatus(function(response) {
var status_change_callback = fn_status_change_callback(response);
if (status_change_callback) {
FB.api('/me', function(response) {
console.log(response);
});
}
});
}
//new function to do fb login - since might need a separate function //between checking and login fn_do_fb_login = function do_fb_login() { // Called when a person is finished with the Login Button.
//everytime event login triggered, reset the form fn_reset_form();
FB.getLoginStatus(function(response) {
e('.form_loading').show();
var status_change_callback = fn_status_change_callback(response);
if (status_change_callback) {
FB.api('/me', function(response) {
console.log(response); set_detail_data_to_form_and_submit(response.id);
});
} else {
FB.login(function(fb_l_r) {
if (fb_l_r.authResponse && fb_l_r.status == 'connected') {
console.log(fb_l_r.authResponse.userID); set_detail_data_to_form_and_submit(fb_l_r.authResponse.userID);
} else { e('.form_loading').hide(); }
});
}
});
}
fn_status_change_callback = function status_change_callback(response) { // Called with the results from FB.getLoginStatus().
var check_status;
console.log('status_change_callback'); console.log(response); // The current login status of the person.
if (response.status === 'connected') { // Logged into your webpage and Facebook.
get_detail_data(response.id); check_status = true;
} else { // Not logged into your webpage or we are unable to tell.
console.log('facebook is not logged in'); check_status = false;
}
return check_status;
}
function get_detail_data(fb_id) {
FB.api( '/'+fb_id+'/', {fields: 'id,first_name,last_name,email'}, function (fb_r) {
var fb_data_json = JSON.stringify(fb_r);
if (fb_r && !fb_r.error) {
e('#fb_data').html(fb_data_json);
}
} );
}
//it's kinda silly, but since fb is an async, cannot use passing parameter on a function like jquery //so instead put it on FB.api function set_detail_data_to_form_and_submit(fb_id) {
e('.form_loading').show();
FB.api( '/'+fb_id+'/', {fields: 'id,first_name,last_name,email'}, function (fb_r) {
var fb_data_json = JSON.stringify(fb_r);
if (fb_r && !fb_r.error) {
var fb_id = fb_r.id; var fb_firstname = fb_r.first_name; var fb_lastname = fb_r.last_name; var fb_email = fb_r.email;
e('.sns_facebook').val(1); e('.sns_facebook_id').val(fb_id);
e('#fb_data').html(fb_data_json); do_submit_form();
//no form_loading hide - we gonna lock the form IF it's success
} else {
e('.form_loading').hide();
}
} );
}
fn_get_fb_login_button = function get_fb_login_button() {
var html = '
'+ ' '; e('.fb_button_placeholder').html(html);}
fn_remove_fb_loading_btn = function remove_fb_loading_btn() {
e('.fb_loading_btn').hide(); e('.fb_login_wrapper').show();
}
fn_reset_form = function reset_form() {
e('.sns_facebook').val(''); e('.sns_facebook_id').val(''); e('.form_loading').hide();
}
function do_submit_form() {
var the_form = e('.formLogin:visible');
if (the_form.length) {
var target_form = the_form[0]; target_form.submit();
} else {
console.log('form not exist');
}
} //=======================================================
//initialize fn_reset_form();
});