Assistant Director of Finance
window.notificationMessages = []; Find a Job + + + + Search const TopSearch = { handleSubmit: function (event) { event.p
window.notificationMessages = []; Find a Job + + + + Search const TopSearch = { handleSubmit: function (event) { event.preventDefault(); event.stopPropagation();
const form = event.target;
const getValue = (name) => { if (form[name]) { if (form[name].type) { if (["select-one", "text", "hidden"].indexOf(form[name].type) > -1) { return form[name].value; } if (["checkbox", "radio"].indexOf(form[name].type) > -1 && form[name].checked) { return form[name].value; } } else if (form[name].length) { return form[name].value; } }
return ""; };
const experienceLevel = getValue("experience[]") || getValue("experience"); const jobFunction = getValue("job_function[]") || getValue("job_function"); const industry = getValue("industry[]") || getValue("industry"); const location = getValue("location[]") || getValue("location"); const workType = getValue("work_type"); const term = getValue("q"); const sortBy = getValue("sort_by");
// If the logged in user is authenticated
// Append authenticated value to make url unique/different to logged out url
// same action is happening in SearchFilterViewComposer
// line 589 in the multiSearchFilterHref function
const authenticated = document.getElementById("authenticated").value;
let toUrl = "";
if (industry.trim() && jobFunction.trim()) {
const segments = [jobFunction, location, workType].filter((x) => x);
toUrl = ${segments.join("/")}?industry=${industry};
} else {
const segments = [jobFunction, industry, location, workType].filter((x) => x);
toUrl = segments.join("/");
}
if (experienceLevel) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}experience=${experienceLevel};
}
if (term.trim()) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}q=${encodeURI(term.replace(" ", "+"))};
}
if (sortBy.trim()) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}sort=${sortBy};
}
if (authenticated === "true") {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}authenticated=${Date.now()};
}
const wholeUrl = ${form.getAttribute("action")}/${toUrl.toLocaleLowerCase()};
window.location.assign(wholeUrl.replace(//$/, ""));
return false; }, }; Homepage Accounting, Auditing & Finance Hospitality & Hotel Kampala Full Time Assistant Director of Finance M Assistant Director of Finance Marriott International Accounting, Auditing & Finance 5 days ago Kampala Full Time Hospitality & Hotel Confidential Share link Share on
[Click the Apply button below to see the contact details]
Degree requirement — Non precisé specifies a bachelor degree: if yours is from a related field, compensate with highly targeted field experience proving your competence in the exact domain.
Positioning — Your cover letter must answer one question: why YOU for THIS specific role right NOW? Avoid generic templates — one sentence on what you specifically bring beats three generic paragraphs.
Key figures — Budgets managed, cost savings achieved, audits closed on time: prepare 3 precise financial achievements with amounts. African CFOs often test IFRS or local GAAP knowledge — be ready with specific examples.
🎯 Make your application ATS-ready
ATS (Applicant Tracking Systems) are the software recruiters use to automatically filter CVs before any human reads them. Our CV builder is specifically designed to pass these filters — and it takes under 3 minutes.
Create my ATS CV →Never pay money to get an interview. Taf4All will never contact you to request application fees.
window.notificationMessages = []; Find a Job + + + + Search const TopSearch = { handleSubmit: function (event) { event.p
Finance Assistant at Wesdom Valves and Fittings Uganda LTD | BrighterMonday { const diff = pageYOffset window.pageYOffse
Director of Operations and Finance à Post A Job Post A Job Accounting, Auditing & Fina, Uganda — Concevoir, développer
UN Job Vacancy: Finance Assistant, Kampala, Uganda. Recruiter: FHI 360.