export class ProcessPayrollWizardController extends BaseWizardController { constructor( options = {} ) { _.defaults( options, { el: '.wizard-bg', all_columns: null, pay_stub_transaction_columns: null, api_pay_period: null, api_pay_stub: null, api_pay_stub_transaction: null, alert_message: $.i18n._( 'Please select one or more pay periods in the list above to enable icons.' ), transaction_source_data: null } ); super( options ); } init( options ) { //this._super('initialize', options ); this.title = $.i18n._( 'Payroll Processing Wizard' ); this.steps = 9; this.current_step = 1; this.script_name = 'wizard_process_payroll'; this.wizard_id = 'ProcessPayrollWizard'; this.api_pay_period = TTAPI.APIPayPeriod; this.api_pay_stub = TTAPI.APIPayStub; this.api_pay_stub_transaction = TTAPI.APIPayStubTransaction; this.render(); } render() { super.render(); this.initUserGenericData(); } setButtonsStatus() { Global.setWidgetEnabled( this.done_btn, false ); Global.setWidgetEnabled( this.close_btn, true ); if ( this.current_step === 1 ) { Global.setWidgetEnabled( this.back_btn, false ); } else { Global.setWidgetEnabled( this.back_btn, true ); } if ( this.current_step !== this.steps ) { Global.setWidgetEnabled( this.done_btn, false ); Global.setWidgetEnabled( this.next_btn, true ); //Error: TypeError: this.stepsWidgetDic[1] is undefined in interface/html5/framework/jquery.min.js?v=9.0.0-20150918-155419 line 2 > eval line 45 if ( this.stepsWidgetDic[1] && ( !this.stepsWidgetDic[1].pay_period_id.getValue() || this.stepsWidgetDic[1].pay_period_id.getValue().length < 1 ) ) { Global.setWidgetEnabled( this.next_btn, false ); } } else { Global.setWidgetEnabled( this.done_btn, true ); Global.setWidgetEnabled( this.next_btn, false ); } } //Create each page UI buildCurrentStepUI() { var $this = this; this.content_div.empty(); switch ( this.current_step ) { case 1: var label = this.getLabel(); label.text( $.i18n._( 'Select one or more pay periods to process payroll for' ) ); var a_combobox = this.getAComboBox( TTAPI.APIPayPeriod, true, 'global_Pay_period', 'pay_period_id' ); var div = $( '
' ); div.append( a_combobox ); a_combobox.unbind( 'formItemChange' ).bind( 'formItemChange', function() { $this.setButtonsStatus(); } ); this.stepsWidgetDic[this.current_step] = {}; this.stepsWidgetDic[this.current_step][a_combobox.getField()] = a_combobox; this.content_div.append( label ); this.content_div.append( div ); break; case 2: label = this.getLabel(); label.text( $.i18n._( 'Confirm all requests are authorized' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; var grid_id = 'pending_request'; var grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); var ribbon_button_box = this.getRibbonButtonBox(); var request_button = this.getRibbonButton( 'request', Global.getRibbonIconRealPath( 'requests-35x35.png' ), $.i18n._( 'Requests' ) ); request_button.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'request' ); } ); ribbon_button_box.children().eq( 0 ).append( request_button ); this.content_div.append( ribbon_button_box ); break; case 3: label = this.getLabel(); label.text( $.i18n._( 'Confirm that no critical exceptions exist' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'exceptions'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); this.removeResizableGrids(); ribbon_button_box = this.getRibbonButtonBox(); var ribbon_btn = this.getRibbonButton( 'exceptions', Global.getRibbonIconRealPath( 'exceptions-35x35.png' ), $.i18n._( 'Exceptions' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'exceptions' ); } ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); this.content_div.append( ribbon_button_box ); break; case 4: label = this.getLabel(); label.text( $.i18n._( 'Confirm timesheets are verified' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'timesheet'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); this.removeResizableGrids(); ribbon_button_box = this.getRibbonButtonBox(); ribbon_btn = this.getRibbonButton( 'timesheet_reports', Global.getRibbonIconRealPath( 'timesheet_reports-35x35.png' ), $.i18n._( 'TimeSheet
Summary' ) ); var ribbon_btn2 = this.getRibbonButton( 'authorization_timesheet', Global.getRibbonIconRealPath( 'authorize_timesheet-35x35.png' ), $.i18n._( 'TimeSheet
Authorizations' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'timesheet_reports' ); } ); ribbon_btn2.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'authorization_timesheet' ); } ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn2 ); this.content_div.append( ribbon_button_box ); break; case 5: label = this.getLabel(); label.text( $.i18n._( 'Lock pay periods to prevent changes' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'lock_pay_period'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); ribbon_button_box = this.getRibbonButtonBox(); ribbon_btn = this.getRibbonButton( 'lock', Global.getRibbonIconRealPath( 'lock-35x35.png' ), $.i18n._( 'Lock' ) ); ribbon_btn2 = this.getRibbonButton( 'unlock', Global.getRibbonIconRealPath( 'unlock-35x35.png' ), $.i18n._( 'UnLock' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { if ( $( this ).hasClass( 'disable-image' ) ) { TAlertManager.showAlert( $this.alert_message ); return; } $this.onNavigationClick( 'lock' ); } ); ribbon_btn2.unbind( 'click' ).bind( 'click', function() { if ( $( this ).hasClass( 'disable-image' ) ) { TAlertManager.showAlert( $this.alert_message ); return; } $this.onNavigationClick( 'unlock' ); } ); this.stepsWidgetDic[this.current_step].lock = ribbon_btn; this.stepsWidgetDic[this.current_step].unlock = ribbon_btn2; ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn2 ); this.content_div.append( ribbon_button_box ); break; case 6: label = this.getLabel(); label.text( $.i18n._( 'Create any necessary pay stub amendments' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'pay_stub_amendments'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); ribbon_button_box = this.getRibbonButtonBox(); ribbon_btn = this.getRibbonButton( 'pay_stub_amendment', Global.getRibbonIconRealPath( 'pay_stub_amendments-35x35.png' ), $.i18n._( 'Pay Stub
Amendments' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'pay_stub_amendment' ); } ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); this.content_div.append( ribbon_button_box ); break; case 7: label = this.getLabel(); label.text( $.i18n._( 'Generate pay stubs' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'pay_stub_generate'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); ribbon_button_box = this.getRibbonButtonBox(); ribbon_btn = this.getRibbonButton( 'generate_pay_stub', Global.getRibbonIconRealPath( 'calculate_paystubs-35x35.png' ), $.i18n._( 'Generate
Pay Stubs' ) ); ribbon_btn2 = this.getRibbonButton( 'pay_stub', Global.getRibbonIconRealPath( 'pay_stubs-35x35.png' ), $.i18n._( 'Pay
Stubs' ) ); var ribbon_btn3 = this.getRibbonButton( 'pay_stub_summary', Global.getRibbonIconRealPath( 'pay_stubs_accounts-35x35.png' ), $.i18n._( 'Pay Stub
Summary' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { if ( $( this ).hasClass( 'disable-image' ) ) { TAlertManager.showAlert( $this.alert_message ); return; } $this.onNavigationClick( 'generate_pay_stub' ); } ); ribbon_btn2.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'pay_stub' ); } ); ribbon_btn3.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'pay_stub_summary' ); } ); this.stepsWidgetDic[this.current_step].generate_pay_stub = ribbon_btn; ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn2 ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn3 ); this.content_div.append( ribbon_button_box ); break; case 8: label = this.getLabel(); label.text( $.i18n._( 'Process transactions' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; $( '.wizard .content' ).css( 'opacity', 0 ); TTPromise.add( 'wizard', 'step8' ); TTPromise.wait( 'wizard', 'step8', function() { $( '.wizard .content' ).css( 'opacity', 1 ); } ); grid_id = 'pay_stub_transfer'; grid_div = $( '

' ); this.setGrid( grid_id, grid_div, true ); grid_id = 'pay_stub_transaction'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, false ).setGridHeight( Math.floor( ( this.content_div.height() - 150 ) / 2 ) ); ribbon_button_box = this.getRibbonButtonBox(); var ribbon_btn1 = this.getRibbonButton( 'direct_deposit', Global.getRibbonIconRealPath( 'direct_deposit-35x35.png' ), $.i18n._( 'Process
Transactions' ) ); ribbon_btn2 = this.getRibbonButton( 'pay_stub_transaction_summary', Global.getRibbonIconRealPath( 'payroll_reports-35x35.png' ), $.i18n._( 'Pay Stub
Transaction Summary' ) ); ribbon_btn3 = this.getRibbonButton( 'payroll_export_report', Global.getRibbonIconRealPath( 'payroll_reports-35x35.png' ), $.i18n._( 'Payroll Export' ) ); ribbon_btn1.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'direct_deposit' ); } ); ribbon_btn2.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'pay_stub_transaction_summary' ); } ); ribbon_btn3.unbind( 'click' ).bind( 'click', function() { $this.onNavigationClick( 'payroll_export_report' ); } ); //this is the display order for buttons on step 8 ribbon_button_box.children().eq( 0 ).append( ribbon_btn1 ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn2 ); ribbon_button_box.children().eq( 0 ).append( ribbon_btn3 ); this.content_div.append( ribbon_button_box ); break; case 9: label = this.getLabel(); label.text( $.i18n._( 'Close pay period' ) ); this.content_div.append( label ); this.stepsWidgetDic[this.current_step] = {}; grid_id = 'pay_stub_close'; grid_div = $( '
' ); this.setGrid( grid_id, grid_div, true ); ribbon_button_box = this.getRibbonButtonBox(); ribbon_btn = this.getRibbonButton( 'close_pay_period', Global.getRibbonIconRealPath( 'close_pay_period-35x35.png' ), $.i18n._( 'Close' ) ); ribbon_btn.unbind( 'click' ).bind( 'click', function() { if ( $( this ).hasClass( 'disable-image' ) ) { TAlertManager.showAlert( $this.alert_message ); return; } $this.onNavigationClick( 'close_pay_period' ); } ); this.stepsWidgetDic[this.current_step].close = ribbon_btn; ribbon_button_box.children().eq( 0 ).append( ribbon_btn ); this.content_div.append( ribbon_button_box ); break; } } onNextClick() { this.saveCurrentStep(); if ( this.current_step === 1 ) { var current_step_ui = this.stepsWidgetDic[this.current_step]; var pay_period_id = current_step_ui.pay_period_id.getValue(); if ( !pay_period_id || pay_period_id.length == 0 || ( pay_period_id == TTUUID.zero_id ) || ( pay_period_id.length == 1 && pay_period_id[0] == TTUUID.zero_id ) ) { TAlertManager.showAlert( $.i18n._( 'Please choose a Pay Period' ) ); return; } } this.current_step = this.current_step + 1; this.initCurrentStep(); } onDoneClick() { this.cleanStepsData(); LocalCacheData.current_open_wizard_controllers = LocalCacheData.current_open_wizard_controllers.filter( wizard => wizard.wizard_id !== this.wizard_id ); this.saveAllStepsToUserGenericData( function() { } ); if ( this.call_back ) { this.call_back(); } $( this.el ).remove(); $().TFeedback( { source: this.wizard_id } ); } getGridColumns( gridId, callBack ) { var $this = this; if ( gridId == 'pay_stub_transaction' ) { var result = this.api_pay_stub_transaction.getOptions( 'columns', { 'payroll_wizard': true }, { async: false } ); var column_info_array = []; var result_data = result.getResult(); $this.pay_stub_transaction_columns = Global.buildColumnArray( result_data ); for ( var x in $this.pay_stub_transaction_columns ) { var column_data = $this.pay_stub_transaction_columns[x]; if ( column_data.value == 'remittance_source_account' || column_data.value == 'remittance_source_account_type' || column_data.value == 'currency' || column_data.value == 'total_transactions' || column_data.value == 'total_amount' ) { var column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } callBack( column_info_array ); return; } if ( this.all_columns ) { doNext(); } else { var result = this.api_pay_period.getOptions( 'columns', { async: false } ); var result_data = result.getResult(); $this.all_columns = Global.buildColumnArray( result_data ); doNext(); } function doNext() { var len = $this.all_columns.length; var column_info_array = []; switch ( gridId ) { case 'pending_request': for ( var i = 0; i < len; i++ ) { var column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'pending_requests' ) { var column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } break; case 'exceptions': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'exceptions_high' || column_data.value == 'exceptions_medium' || column_data.value == 'exceptions_low' || column_data.value == 'exceptions_critical' ) { if ( column_data.value == 'exceptions_high' || column_data.value == 'exceptions_medium' || column_data.value == 'exceptions_low' || column_data.value == 'exceptions_critical' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 50, sortable: false, title: false }; column_info_array.push( column_info ); } else { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } } break; case 'timesheet': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'verified_timesheets' || column_data.value == 'pending_timesheets' || column_data.value == 'total_timesheets' ) { if ( column_data.value == 'verified_timesheets' || column_data.value == 'pending_timesheets' || column_data.value == 'total_timesheets' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 50, sortable: false, title: false }; column_info_array.push( column_info ); } else { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } } break; case 'lock_pay_period': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'status' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } break; case 'pay_stub_amendments': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'ps_amendments' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } break; case 'pay_stub_generate': case 'pay_stub_transfer': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'pay_stubs_open' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } break; case 'pay_stub_close': for ( var i = 0; i < len; i++ ) { column_data = $this.all_columns[i]; if ( column_data.value == 'status' || column_data.value == 'start_date' || column_data.value == 'end_date' || column_data.value == 'transaction_date' || column_data.value == 'pay_stubs_open' ) { column_info = { resizable: false, name: column_data.value, index: column_data.value, label: column_data.label, width: 100, sortable: false, title: false }; column_info_array.push( column_info ); } } break; } callBack( column_info_array ); } } removeResizableGrids() { //Issue #3214 - Exception triggered when page is resized while on Exception or TimeSheet wizard steps //This is a related to a previous fix found in this.setGridGroupColumns(). //To avoid this we now remove the two error causing grids from the resizeable grid list. //This solution was chosen as the exception is deep within TTGrid and not easily avoidable. //Resizing is not requires for normal use and only causes display issues with very small resolutions <1024px. //In addition, only happens in the specific case where the end user resizes their browser on those two wizard steps. if ( Array.isArray( LocalCacheData.resizeable_grids ) ) { LocalCacheData.resizeable_grids = LocalCacheData.resizeable_grids.filter( function( grid ) { return grid !== null && grid.ui_id !== 'exceptions' && grid.ui_id !== 'timesheet'; } ); } } setGridGroupColumns( gridId ) { //Short circuit this function if we aren't creating any spanning cells for exceptions/timesheets. // As having "group-column-tr" without anything in it causes jqGrid to trigger JS exception: Uncaught TypeError: Cannot read property 'style' of undefined // when running: $( '#contentContainer' ).trigger( 'resize' ) from the console. if ( gridId !== 'exceptions' && gridId !== 'timesheet' ) { return; } var table = $( $( this.el ).find( 'table[aria-labelledby=gbox_' + gridId + ']' )[0] ); var table_width_target = $( $( this.el ).find( 'table[id=' + gridId + ']' )[0] ); var new_tr = $( '' + '' ); var new_th = $( '' + '' + '' ); switch ( gridId ) { case 'exceptions': var ths = table_width_target.children( 0 ).children( 0 ).children(); var default_th = new_th.clone(); default_th.attr( 'colspan', '1' ); default_th.width( ths.eq( 0 ).width() ); new_tr.append( default_th ); default_th = new_th.clone(); default_th.attr( 'colspan', '3' ); default_th.width( ths.eq( 1 ).width() * 3 ); new_tr.append( default_th ); default_th = new_th.clone(); default_th.attr( 'colspan', '4' ); default_th.width( ths.eq( 4 ).width() * 4 ); default_th.children( 0 ).text( $.i18n._( 'Exceptions' ) ); break; case 'timesheet': ths = table_width_target.children( 0 ).children( 0 ).children(); default_th = new_th.clone(); default_th.attr( 'colspan', '1' ); default_th.width( ths.eq( 0 ).width() ); new_tr.append( default_th ); default_th = new_th.clone(); default_th.attr( 'colspan', '3' ); default_th.width( ths.eq( 1 ).width() * 3 ); new_tr.append( default_th ); default_th = new_th.clone(); default_th.attr( 'colspan', '3' ); default_th.width( ths.eq( 4 ).width() * 3 ); default_th.children( 0 ).text( $.i18n._( 'Timesheets' ) ); break; } new_tr.append( default_th ); table.find( 'thead' ).prepend( new_tr ); } onNavigationClick( iconName ) { var $this = this; var current_step_ui = this.stepsWidgetDic[this.current_step]; var grid; var ids; var data_array; var filter; switch ( iconName ) { case 'exceptions': filter = { filter_data: {} }; grid = current_step_ui.exceptions; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); var pay_period_ids = { value: ids }; filter.filter_data.pay_period_id = pay_period_ids; Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); IndexViewController.goToView( 'Exception', filter ); break; case 'request': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); IndexViewController.goToView( 'Request' ); this.onCloseClick(); break; case 'timesheet_reports': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); LocalCacheData.default_filter_for_next_open_view = { template: 'by_pay_period_by_employee+verified_time_sheet' }; IndexViewController.openReport( LocalCacheData.current_open_primary_controller, 'TimesheetSummaryReport' ); break; case 'lock': grid = current_step_ui.lock_pay_period; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); data_array = []; for ( var i = 0; i < ids.length; i++ ) { var data = {}; data.id = ids[i]; data.status_id = 12; data_array.push( data ); } ProgressBar.showOverlay(); this.api_pay_period.setPayPeriod( data_array, { onResult: function( result ) { if ( result.isValid() ) { $this.buildCurrentStepData(); } else { TAlertManager.showErrorAlert( result ); } } } ); break; case 'unlock': grid = current_step_ui.lock_pay_period; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); data_array = []; for ( var i = 0; i < ids.length; i++ ) { data = {}; data.id = ids[i]; data.status_id = 10; data_array.push( data ); } ProgressBar.showOverlay(); this.api_pay_period.setPayPeriod( data_array, { onResult: function( result ) { if ( result.isValid() ) { $this.buildCurrentStepData(); } else { TAlertManager.showErrorAlert( result ); } } } ); break; case 'pay_stub_amendment': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); grid = current_step_ui.pay_stub_amendments; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); filter = { filter_data: { pay_period_id: { value: ids } } }; IndexViewController.goToView( 'PayStubAmendment', filter ); break; case 'generate_pay_stub': grid = current_step_ui.pay_stub_generate; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); ProgressBar.showOverlay(); TTAPI.APIPayStub.setIsIdempotent( true ); //Force to idempotent API call to avoid duplicate network requests from causing errors displayed to the user. TTAPI.APIPayStub.generatePayStubs( ids, { onResult: function( result ) { if ( result.isValid() ) { var user_generic_status_batch_id = result.getAttributeInAPIDetails( 'user_generic_status_batch_id' ); if ( user_generic_status_batch_id && TTUUID.isUUID( user_generic_status_batch_id ) && user_generic_status_batch_id != TTUUID.zero_id && user_generic_status_batch_id != TTUUID.not_exist_id ) { UserGenericStatusWindowController.open( user_generic_status_batch_id, [], function() { $this.buildCurrentStepData(); } ); } } else { TAlertManager.showErrorAlert( result ); } } } ); break; case 'pay_stub': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); if ( this.current_step === 7 ) { grid = current_step_ui.pay_stub_generate; } else { grid = current_step_ui.pay_stub_transfer; } ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); filter = { filter_data: { pay_period_id: { value: ids } } }; IndexViewController.goToView( 'PayStub', filter ); break; case 'pay_stub_summary': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); IndexViewController.openReport( LocalCacheData.current_open_primary_controller, 'PayStubSummaryReport' ); break; case 'pay_stub_transaction_summary': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); IndexViewController.openReport( LocalCacheData.current_open_primary_controller, 'PayStubTransactionSummaryReport' ); break; case 'payroll_export_report': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); this.onCloseClick(); IndexViewController.openReport( LocalCacheData.current_open_primary_controller, 'PayrollExportReport' ); break; case 'close_pay_period': grid = current_step_ui.pay_stub_close; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); data_array = []; for ( var i = 0; i < ids.length; i++ ) { data = {}; data.id = ids[i]; data.status_id = 20; data_array.push( data ); } ProgressBar.showOverlay(); this.api_pay_period.setPayPeriod( data_array, { onResult: function( result ) { if ( result.isValid() ) { $this.buildCurrentStepData(); } else { TAlertManager.showErrorAlert( result ); } } } ); break; case 'authorization_timesheet': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); IndexViewController.goToView( 'TimeSheetAuthorization' ); this.onCloseClick(); break; //Process Payments Button Click case 'direct_deposit': Global.addViewTab( this.wizard_id, $.i18n._( 'Process Payroll' ), window.location.href ); var pay_stub_transfer_grid = current_step_ui.pay_stub_transfer; var data = { transaction_source_data: $this.transaction_source_data, filter_data: { pay_period_id: pay_stub_transfer_grid.grid.jqGrid( 'getGridParam', 'selarrrow' ) } }; IndexViewController.openWizardController( 'ProcessTransactionsWizardController', data ); this.onCloseClick(); break; } } onGridSelectRow( e ) { var current_step_data = this.stepsDataDic[this.current_step]; var current_step_ui = this.stepsWidgetDic[this.current_step]; var grid; var ids; if ( this.current_step === 5 ) { grid = current_step_ui.lock_pay_period; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); if ( ids.length < 1 ) { current_step_ui.lock.addClass( 'disable-image' ); current_step_ui.unlock.addClass( 'disable-image' ); } else { current_step_ui.lock.removeClass( 'disable-image' ); current_step_ui.unlock.removeClass( 'disable-image' ); } } else if ( this.current_step === 7 ) { grid = current_step_ui.pay_stub_generate; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); if ( ids.length < 1 ) { current_step_ui.generate_pay_stub.addClass( 'disable-image' ); } else { current_step_ui.generate_pay_stub.removeClass( 'disable-image' ); } } else if ( this.current_step === 8 ) { var pay_stub_transfer_grid = current_step_ui.pay_stub_transfer; var pay_stub_transaction_grid = current_step_ui.pay_stub_transaction; var pay_period_ids = pay_stub_transfer_grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); if ( pay_period_ids.length < 1 ) { this.content_div.find( '#directDepositIcon' ).addClass( 'disable-image' ); var grid = current_step_ui.pay_stub_transaction; grid.grid.trigger( 'reloadGrid' ); this.setGridAutoHeight( grid, this.transaction_source_data.length ); this.showNoResultCover( grid.grid.parents( '.grid-div' ) ); pay_stub_transaction_grid.grid.show(); } else { this.content_div.find( '#directDepositIcon' ).removeClass( 'disable-image' ); var $this = this; var grid = current_step_ui.pay_stub_transaction; // A similar call to this api function is in the Process Transactions Popup this.api_pay_stub_transaction.getPayPeriodTransactionSummary( { pay_period_id: pay_period_ids }, { onResult: function( result ) { $this.transaction_source_data = result.getResult(); if ( $this.transaction_source_data.length > 0 ) { $this.removeNoResultCover( grid.grid.parents( '.grid-div' ) ); grid.setData( $this.transaction_source_data ); $this.setGridAutoHeight( grid, $this.transaction_source_data.length ); } else { $this.showNoResultCover( grid ); } pay_stub_transaction_grid.grid.show(); } } ); } } else if ( this.current_step === 9 ) { grid = current_step_ui.pay_stub_close; ids = grid.grid.jqGrid( 'getGridParam', 'selarrrow' ); if ( ids.length < 1 ) { current_step_ui.close.addClass( 'disable-image' ); } else { current_step_ui.close.removeClass( 'disable-image' ); } } } setGridAutoHeight( grid, length ) { if ( length > 0 && length < 10 ) { grid.grid.setGridHeight( length * 23 ); } else if ( length > 10 ) { grid.grid.setGridHeight( 230 ); } } buildCurrentStepData() { if ( !this.stepsDataDic[1] ) { return; } var pay_period_id = this.stepsDataDic[1].pay_period_id; if ( !pay_period_id || pay_period_id.length == 0 ) { pay_period_id = [0]; } var args = {}; var grid; var $this = this; var source_data; var current_step_ui = this.stepsWidgetDic[this.current_step]; switch ( this.current_step ) { case 2: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.pending_requests = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.pending_request; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 3: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.exceptions_high = true; args.filter_columns.exceptions_medium = true; args.filter_columns.exceptions_low = true; args.filter_columns.exceptions_critical = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.exceptions; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 4: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.verified_timesheets = true; args.filter_columns.pending_timesheets = true; args.filter_columns.total_timesheets = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.timesheet; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 5: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.status = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.lock_pay_period; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 6: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.ps_amendments = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.pay_stub_amendments; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 7: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.pay_stubs_open = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.pay_stub_generate; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; case 8: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.pay_stubs_open = true; args.filter_data = {}; args.filter_data.id = pay_period_id; //this if statement is only used for step 8 to prevent populating the transactions grid if ( TTUUID.isUUID( pay_period_id ) && pay_period_id != TTUUID.zero_id ) { this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.pay_stub_transfer; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); var pay_period_ids = []; for ( var i in source_data ) { pay_period_ids.push( source_data[i].id ); } $this.api_pay_stub_transaction.getPayPeriodTransactionSummary( { pay_period_id: pay_period_ids }, { onResult: function( result ) { $this.transaction_source_data = result.getResult(); grid = current_step_ui.pay_stub_transaction; if ( typeof $this.transaction_source_data == 'object' && $this.transaction_source_data.length > 0 ) { grid.setData( $this.transaction_source_data ); } else { grid.setData( [] ); $this.showNoResultCover( grid.grid.parents( '.grid-div' ) ); } $this.setGridAutoHeight( grid, $this.transaction_source_data.length ); grid.grid.find( '.cbox' ).prop( 'checked', true ); TTPromise.resolve( 'wizard', 'step8' ); } } ); } } ); } break; case 9: args.filter_columns = {}; args.filter_columns.id = true; args.filter_columns.status = true; args.filter_columns.start_date = true; args.filter_columns.end_date = true; args.filter_columns.transaction_date = true; args.filter_columns.pay_stubs_open = true; args.filter_data = {}; args.filter_data.id = pay_period_id; this.api_pay_period.getPayPeriod( args, true, { onResult: function( result ) { source_data = result.getResult(); grid = current_step_ui.pay_stub_close; grid.setData( source_data ); $this.setGridSelection( grid, source_data ); $this.setGridAutoHeight( grid, source_data.length ); } } ); break; } } setCurrentStepValues() { if ( !this.stepsDataDic[this.current_step] ) { if ( this.current_step === 1 ) { this.setLastPayPeriod(); } return; } else { var current_step_data = this.stepsDataDic[this.current_step]; var current_step_ui = this.stepsWidgetDic[this.current_step]; } switch ( this.current_step ) { case 1: if ( current_step_data.pay_period_id ) { if ( current_step_data.pay_period_id === TTUUID.zero_id || current_step_data.pay_period_id[0] === TTUUID.zero_id ) { this.setLastPayPeriod(); } else { current_step_ui.pay_period_id.setValue( current_step_data.pay_period_id ); } } break; case 2: break; case 3: break; } } setGridSelection( grid, source_data ) { if ( source_data ) { for ( var i = 0; i < source_data.length; i++ ) { var content = source_data[i]; grid.grid.jqGrid( 'setSelection', content['id'], false ); } } } setLastPayPeriod() { var $this = this; this.api_pay_period.getLastPayPeriod( { onResult: function( result ) { var result_data = result.getResult(); if ( result_data && result_data[0] && result_data[0].id ) { $this.stepsWidgetDic[1].pay_period_id.setValue( result_data ); } else { $this.stepsWidgetDic[1].pay_period_id.setValue( TTUUID.zero_id ); } } } ); } saveCurrentStep() { this.stepsDataDic[this.current_step] = {}; var current_step_data = this.stepsDataDic[this.current_step]; var current_step_ui = this.stepsWidgetDic[this.current_step]; //Error: TypeError: current_step_ui is undefined in /interface/html5/framework/jquery.min.js?v=8.0.0-20150126-115958 line 2 > eval line 989 if ( !current_step_ui ) { return; } switch ( this.current_step ) { case 1: current_step_data.pay_period_id = current_step_ui.pay_period_id.getValue(); break; case 2: break; } } setDefaultDataToSteps() { if ( !this.default_data ) { return null; } // this.stepsDataDic[2] = {}; // this.stepsDataDic[3] = {}; // // if ( this.getDefaultData( 'user_id' ) ) { // this.stepsDataDic[3].user_id = this.getDefaultData( 'user_id' ); // } // // if ( this.getDefaultData( 'pay_period_id' ) ) { // this.stepsDataDic[2].pay_period_id = this.getDefaultData( 'pay_period_id' ); // } } }