<div role="presentation" id="__oj_zorder_container">
<div id="ui-id-11_layer" role="presentation" class="oj-dialog-layer oj-focus-within" data-oj-surrogate-id="ui-id-11_layer_surrogate">
<p><strong><span style="font-family: Roboto, Helvetica, Arial, sans-serif; font-size: 36px;">Seasonal Sales Associate (120hr) &#8211; Various TFG Stores</span></strong><br />
<oj-dialog initial-visibility="hide" resize-behavior="none" drag-affordance="none" cancel-behavior="none" modality="modeless" aria-modal="true" on-oj-focus="{{setFocusToBody}}" data-bind="focus: focusCallback, attr:{ 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy, 'role': role }, class: 'app-dialog font-family-primary ' + baseClass, a11y.keysHandler: { keys: 'esc', handler: close }, moveChatBot: { shouldMoveChatbot: shouldMoveChatbot }, isDialogVisible: { isVisible: isVisible, afterClose: afterClose }" class="app-dialog font-family-primary job-details-modal-container oj-dialog oj-component oj-component-initnode oj-complete oj-dialog-sheet oj-dialog-full" aria-label="Job Details" id="ui-id-11" role="dialog" aria-labelledby="ui-id-12" tabindex="-1"></oj-dialog></p>
<div class="oj-dialog-container">
<div class="oj-dialog-content oj-dialog-default-content">
<div class="oj-dialog-body-wrapper">
<div class="app-dialog__wrapper app-dialog__wrapper--active app-dialog__wrapper--align-center oj-dialog-body" data-bind=" css: { 'app-dialog__wrapper--active': isVisible }, class: 'app-dialog__wrapper--align-' + alignment() ">
<div class="oj-dialog-body app-dialog__main background-color-dialog job-details-modal-container__main job-details-modal-container__main-center" data-bind=" css: baseClass ? baseClass + '__main ' + baseClass + '__main-' + alignment() : null, a11y.setInitialFocus: {isVisible: isVisible, focusOn: '.app-dialog__content', delay: 1000 }, attr: { style: width() ? 'max-width: ' + width() : '' } " tabindex="-1">
<div slot="body">
<div class="job-details__header">
<div class="app-dialog__bar job-actions text-color-secondary" data-bind="i18nLang: lang" dir="ltr">
<div class="job-actions__section" data-bind="i18nLang: job.lang " dir="ltr">
<p><share-widget params=" id: jobId, showCopyLink: showCopyLink, context: context, hasInitialFocus: true "></share-widget></p>
<div class="share-widget">
<p><copy-link params="id: id, context: context, language: lang, hasInitialFocus: hasInitialFocus"></copy-link></p>
<p> ;</p>
</div>
<p> ;</p>
</div>
<p> ;</p>
</div>
</div>
<p> ;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
</div>
</div>
<div class="cc-element-rule__line" data-bind="style: { width: percentageWidth, backgroundColor: params.lineColor }"></div>
<div data-bind="style: { width: percentageWidth, backgroundColor: params.lineColor }"></div>
<div data-bind="style: { width: percentageWidth, backgroundColor: params.lineColor }"></div>
<div role="presentation" id="__oj_zorder_container">
<div id="ui-id-11_layer" role="presentation" class="oj-dialog-layer oj-focus-within" data-oj-surrogate-id="ui-id-11_layer_surrogate">
<p><oj-dialog initial-visibility="hide" resize-behavior="none" drag-affordance="none" cancel-behavior="none" modality="modeless" aria-modal="true" on-oj-focus="{{setFocusToBody}}" data-bind="focus: focusCallback, attr:{ 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy, 'role': role }, class: 'app-dialog font-family-primary ' + baseClass, a11y.keysHandler: { keys: 'esc', handler: close }, moveChatBot: { shouldMoveChatbot: shouldMoveChatbot }, isDialogVisible: { isVisible: isVisible, afterClose: afterClose }" class="app-dialog font-family-primary job-details-modal-container oj-dialog oj-component oj-component-initnode oj-complete oj-dialog-sheet oj-dialog-full" aria-label="Job Details" id="ui-id-11" role="dialog" aria-labelledby="ui-id-12" tabindex="-1"></oj-dialog></p>
<div class="oj-dialog-container">
<div class="oj-dialog-content oj-dialog-default-content">
<div class="oj-dialog-body-wrapper">
<div class="app-dialog__wrapper app-dialog__wrapper--active app-dialog__wrapper--align-center oj-dialog-body" data-bind=" css: { 'app-dialog__wrapper--active': isVisible }, class: 'app-dialog__wrapper--align-' + alignment() ">
<div class="oj-dialog-body app-dialog__main background-color-dialog job-details-modal-container__main job-details-modal-container__main-center" data-bind=" css: baseClass ? baseClass + '__main ' + baseClass + '__main-' + alignment() : null, a11y.setInitialFocus: {isVisible: isVisible, focusOn: '.app-dialog__content', delay: 1000 }, attr: { style: width() ? 'max-width: ' + width() : '' } " tabindex="-1">
<div slot="body">
<p><job-details-checker params="viewData: viewData, jobId: jobId, isExpired: isExpired"><job-details-loader params="viewData: viewData, jobId: jobId"><job-details-page params="viewData: viewData, pageData: state().data"></job-details-page></job-details-loader></job-details-checker></p>
<article><job-details-content params=" pageData: pageData, viewData: viewData, onMessage: onMessage, "></p>
<div class="job-details job-details--with-similar-jobs" data-bind=" i18nLang: pageData().job.lang, attr: { lang: pageData().job.lang }, css: { 'job-details--with-similar-jobs': pageData().similarJobsState().hasJobs }" dir="ltr" lang="en">
<div class="cc-page cc-page--boxed cc-page--job-details-modal" data-bind=" css: {'cc-page--boxed': isPageDisplayBoxed}, class: classWithModifier ">
<div class="cc-page__content">
<div class="cc-section cc-section--width-" data-bind="css: cssClass, style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }">
<div class="cc-section__content">
<div class="cc-row">
<div class="cc-row__content cc-columns-count-1" data-bind="class: 'cc-columns-count-' + columns.length">
<div class="cc-column cc-column--default" data-bind="style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }, class: 'cc-column--' + size()">
<div class="cc-column__content">
<div data-bind="class: uniqueWrapperClass" class="component-styling-wrapper-0">
<div class="job-details__section" data-bind=" class: customizationParams.commonParams.cssClass, attr: { id: customizationParams.commonParams.cssId }, customStyles: customizationParams.commonParams, ">
<h2 class="job-details__description-header text-color-secondary font-family-secondary" data-bind="i18n: 'job-details.job-description-title'"><strong>JOB DESCRIPTION</strong></h2>
<div class="job-details__description-content basic-formatter" data-bind="html: pageData().job.description">
<p><strong>TFG is looking for fun, energetic, excited and hardworking SEASONAL employees to help create the ultimate shopping experience during the festive period.</strong></p>
<p><strong>If you have strong selling instinct, enjoy the fast paced environment of retail and have a way with customers, then</strong></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
<p> ;</p>
<p> ;</p>
<p></job-details-content></article>
<p> ;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
</div>
</div>
<p> ;</p>
<p> ;</p>
<div role="presentation" id="__oj_zorder_container">
<div id="ui-id-11_layer" role="presentation" class="oj-dialog-layer oj-focus-within" data-oj-surrogate-id="ui-id-11_layer_surrogate">
<p><oj-dialog initial-visibility="hide" resize-behavior="none" drag-affordance="none" cancel-behavior="none" modality="modeless" aria-modal="true" on-oj-focus="{{setFocusToBody}}" data-bind="focus: focusCallback, attr:{ 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy, 'role': role }, class: 'app-dialog font-family-primary ' + baseClass, a11y.keysHandler: { keys: 'esc', handler: close }, moveChatBot: { shouldMoveChatbot: shouldMoveChatbot }, isDialogVisible: { isVisible: isVisible, afterClose: afterClose }" class="app-dialog font-family-primary job-details-modal-container oj-dialog oj-component oj-component-initnode oj-complete oj-dialog-sheet oj-dialog-full" aria-label="Job Details" id="ui-id-11" role="dialog" aria-labelledby="ui-id-12" tabindex="-1"></oj-dialog></p>
<div class="oj-dialog-container">
<div class="oj-dialog-content oj-dialog-default-content">
<div class="oj-dialog-body-wrapper">
<div class="app-dialog__wrapper app-dialog__wrapper--active app-dialog__wrapper--align-center oj-dialog-body" data-bind=" css: { 'app-dialog__wrapper--active': isVisible }, class: 'app-dialog__wrapper--align-' + alignment() ">
<div class="oj-dialog-body app-dialog__main background-color-dialog job-details-modal-container__main job-details-modal-container__main-center" data-bind=" css: baseClass ? baseClass + '__main ' + baseClass + '__main-' + alignment() : null, a11y.setInitialFocus: {isVisible: isVisible, focusOn: '.app-dialog__content', delay: 1000 }, attr: { style: width() ? 'max-width: ' + width() : '' } " tabindex="-1">
<div slot="body">
<p><job-details-checker params="viewData: viewData, jobId: jobId, isExpired: isExpired"><job-details-loader params="viewData: viewData, jobId: jobId"><job-details-page params="viewData: viewData, pageData: state().data"></job-details-page></job-details-loader></job-details-checker></p>
<article><job-details-content params=" pageData: pageData, viewData: viewData, onMessage: onMessage, "></p>
<div class="job-details job-details--with-similar-jobs" data-bind=" i18nLang: pageData().job.lang, attr: { lang: pageData().job.lang }, css: { 'job-details--with-similar-jobs': pageData().similarJobsState().hasJobs }" dir="ltr" lang="en">
<div class="cc-page cc-page--boxed cc-page--job-details-modal" data-bind=" css: {'cc-page--boxed': isPageDisplayBoxed}, class: classWithModifier ">
<div class="cc-page__content">
<div class="cc-section cc-section--width-" data-bind="css: cssClass, style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }">
<div class="cc-section__content">
<div class="cc-row">
<div class="cc-row__content cc-columns-count-1" data-bind="class: 'cc-columns-count-' + columns.length">
<div class="cc-column cc-column--default" data-bind="style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }, class: 'cc-column--' + size()">
<div class="cc-column__content">
<div data-bind="class: uniqueWrapperClass" class="component-styling-wrapper-0">
<div class="job-details__section" data-bind=" class: customizationParams.commonParams.cssClass, attr: { id: customizationParams.commonParams.cssId }, customStyles: customizationParams.commonParams, ">
<div class="job-details__description-content basic-formatter" data-bind="html: pageData().job.description">
<p><strong>THIS POSITION IS FOR YOU!</strong></p>
<p><strong>Your key areas of responsibilities will include:</strong><br />
<strong>• Being an ambassador for our brand and offering amazing Customer experience.</strong><br />
<strong>• Exceed Customer expectations by identifying and providing them with the best possible solutions.</strong><br />
<strong>• Actively keeping track of sales performance against target.</strong><br />
<strong>• Selling a diverse product range and keeping up to date with the latest décor and fashion trends.</strong><br />
<strong>• Searching out opportunities for making new sales.</strong><br />
<strong>• Assist with replenishing of stock to ensure the store is ready for our customers at all times.</strong></p>
<p> ;</p>
<p><strong>Must haves:</strong><br />
<strong>• Can do attitude</strong><br />
<strong>• Be a South African Citizen</strong><br />
<strong>• Excellent communication and selling skills</strong><br />
<strong>• Passionate about retail and fashion – advantageous</strong><br />
<strong>• Sales driven and service focused</strong><br />
<strong>• Possess a strong work ethic</strong><br />
<strong>• Demonstrate initiative to deliver results.</strong><br />
<strong>• Ability to thrive under pressure</strong><br />
<strong>• The ability to deal efficiently with customer queries and complaints</strong><br />
<strong>• Must be able to work retail hours</strong><br />
<strong>• Reliable transport</strong><br />
<strong>• Must be able to start immediately</strong></p>
<p> ;</p>
</div>
<p> ;</p>
<div class="job-details__description-content basic-formatter" data-bind="html: pageData().job.description">
<p><strong>Preference will be given, but not limited to, candidates from designated groups (Including people with disabilities) in terms of the Employment Equity Act.</strong></p>
<p> ;</p>
<p><strong>If you have not heard from us within four weeks, your application was regrettably not successful</strong></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
<p> ;</p>
<p> ;</p>
<p></job-details-content></article>
<p> ;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
</div>
</div>
<p><strong><a class="maxbutton-1 maxbutton" href="https://fa-expc-saasfaprod1.fa.ocs.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1/requisitions?keyword=Seasonal&#038;mode=location"><span class='mb-text'>CLICK HERE TO APPLY</span></a></strong></p>
<p> ;</p>
<p><strong> </strong></p>
<div role="presentation" id="__oj_zorder_container">
<div id="ui-id-11_layer" role="presentation" class="oj-dialog-layer oj-focus-within" data-oj-surrogate-id="ui-id-11_layer_surrogate">
<p><oj-dialog initial-visibility="hide" resize-behavior="none" drag-affordance="none" cancel-behavior="none" modality="modeless" aria-modal="true" on-oj-focus="{{setFocusToBody}}" data-bind="focus: focusCallback, attr:{ 'aria-label': ariaLabel, 'aria-describedby': ariaDescribedBy, 'role': role }, class: 'app-dialog font-family-primary ' + baseClass, a11y.keysHandler: { keys: 'esc', handler: close }, moveChatBot: { shouldMoveChatbot: shouldMoveChatbot }, isDialogVisible: { isVisible: isVisible, afterClose: afterClose }" class="app-dialog font-family-primary job-details-modal-container oj-dialog oj-component oj-component-initnode oj-complete oj-dialog-sheet oj-dialog-full" aria-label="Job Details" id="ui-id-11" role="dialog" aria-labelledby="ui-id-12" tabindex="-1"></oj-dialog></p>
<div class="oj-dialog-container">
<div class="oj-dialog-content oj-dialog-default-content">
<div class="oj-dialog-body-wrapper">
<div class="app-dialog__wrapper app-dialog__wrapper--active app-dialog__wrapper--align-center oj-dialog-body" data-bind=" css: { 'app-dialog__wrapper--active': isVisible }, class: 'app-dialog__wrapper--align-' + alignment() ">
<div class="oj-dialog-body app-dialog__main background-color-dialog job-details-modal-container__main job-details-modal-container__main-center" data-bind=" css: baseClass ? baseClass + '__main ' + baseClass + '__main-' + alignment() : null, a11y.setInitialFocus: {isVisible: isVisible, focusOn: '.app-dialog__content', delay: 1000 }, attr: { style: width() ? 'max-width: ' + width() : '' } " tabindex="-1">
<div slot="body">
<p><job-details-checker params="viewData: viewData, jobId: jobId, isExpired: isExpired"><job-details-loader params="viewData: viewData, jobId: jobId"><job-details-page params="viewData: viewData, pageData: state().data"></job-details-page></job-details-loader></job-details-checker></p>
<article><job-details-content params=" pageData: pageData, viewData: viewData, onMessage: onMessage, "></p>
<div class="job-details job-details--with-similar-jobs" data-bind=" i18nLang: pageData().job.lang, attr: { lang: pageData().job.lang }, css: { 'job-details--with-similar-jobs': pageData().similarJobsState().hasJobs }" dir="ltr" lang="en">
<div class="cc-page cc-page--boxed cc-page--job-details-modal" data-bind=" css: {'cc-page--boxed': isPageDisplayBoxed}, class: classWithModifier ">
<div class="cc-page__content">
<div class="cc-section cc-section--width-" data-bind="css: cssClass, style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }">
<div class="cc-section__content">
<div class="cc-row">
<div class="cc-row__content cc-columns-count-1" data-bind="class: 'cc-columns-count-' + columns.length">
<div class="cc-column cc-column--default" data-bind="style: { backgroundColor: params.backgroundColor, backgroundImage: backgroundSrc }, class: 'cc-column--' + size()">
<div class="cc-column__content"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
<p> ;</p>
<p> ;</p>
<p></job-details-content></article>
<p> ;</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p> ;</p>
</div>
</div>

If you are currently looking for an entry-level job in the manufacturing sector, this opportunity…
If you are looking for flexible work as a domestic worker, cleaner, or housekeeper, this…
Finding a job can be frustrating, especially when you apply to many companies and never…
If you are an unemployed South African looking to build a career in logistics, operations,…
Department of Correctional Services is hiring Security Officers (X381) for 2026 – Apply with Matric…
Department of Transport Hiring 102 Driver Operators (2026) The Department of Transport is offering a…