1009 lines
32 KiB
JavaScript
1009 lines
32 KiB
JavaScript
export class ROEViewController extends BaseViewController {
|
|
constructor( options = {} ) {
|
|
_.defaults( options, {
|
|
el: '#roe_view_container', //Must set el here and can only set string, so events can work
|
|
user_api: null,
|
|
company_api: null,
|
|
pay_period_schedule_api: null,
|
|
user_status_array: null,
|
|
status_array: null,
|
|
code_array: null,
|
|
type_array: null,
|
|
user_termination_status_array: null,
|
|
|
|
user_generic_data_api: null,
|
|
|
|
form_setup_item: null,
|
|
|
|
|
|
} );
|
|
|
|
super( options );
|
|
}
|
|
|
|
init( options ) {
|
|
|
|
//this._super('initialize', options );
|
|
this.permission_id = 'roe';
|
|
this.viewId = 'ROE';
|
|
this.edit_view_tpl = 'ROEEditView.html';
|
|
this.script_name = 'ROEView';
|
|
this.table_name_key = 'roe';
|
|
this.context_menu_name = $.i18n._( 'Record Of Employment' );
|
|
this.navigation_label = $.i18n._( 'Record Of Employment' );
|
|
this.api = TTAPI.APIROE;
|
|
this.report_api = TTAPI.APIROEReport;
|
|
this.user_api = TTAPI.APIUser;
|
|
this.company_api = TTAPI.APICompany;
|
|
this.pay_period_schedule_api = TTAPI.APIPayPeriodSchedule;
|
|
this.user_generic_data_api = TTAPI.APIUserGenericData;
|
|
|
|
this.render();
|
|
this.buildContextMenu();
|
|
this.initData();
|
|
}
|
|
|
|
initOptions() {
|
|
var $this = this;
|
|
var options = [
|
|
{ option_name: 'status', api: this.api },
|
|
{ option_name: 'user_status', api: this.api },
|
|
{ option_name: 'user_termination_status', api: this.api },
|
|
{ option_name: 'code', api: this.api },
|
|
{ option_name: 'type', field_name: 'pay_period_type_id', api: this.pay_period_schedule_api },
|
|
];
|
|
|
|
this.initDropDownOptions( options, () => {
|
|
if ( $this.type_array ) {
|
|
$this.type_array.shift();
|
|
}
|
|
} );
|
|
}
|
|
|
|
getFilterColumnsFromDisplayColumns() {
|
|
var column_filter = {};
|
|
column_filter.user_id = true;
|
|
|
|
return this._getFilterColumnsFromDisplayColumns( column_filter, true );
|
|
}
|
|
|
|
getCustomContextMenuModel() {
|
|
var context_menu_model = {
|
|
exclude: ['view'],
|
|
include: [
|
|
{
|
|
label: $.i18n._( 'Form' ),
|
|
id: 'form_header',
|
|
menu_align: 'right',
|
|
action_group: 'form',
|
|
action_group_header: true,
|
|
permission_result: false // to hide it in legacy context menu and avoid errors in legacy parsers.
|
|
},
|
|
{
|
|
label: $.i18n._( 'View' ),
|
|
id: 'view_roe', //Don't bother with constant here, as its only used once.
|
|
menu_align: 'right',
|
|
action_group: 'form',
|
|
show_on_right_click: true,
|
|
},
|
|
{
|
|
label: $.i18n._( 'eFile' ),
|
|
id: 'e_file',
|
|
menu_align: 'right',
|
|
action_group: 'form',
|
|
},
|
|
{
|
|
label: $.i18n._( 'Save Setup' ),
|
|
id: 'save_setup',
|
|
menu_align: 'right',
|
|
action_group: 'form',
|
|
},
|
|
{
|
|
label: $.i18n._( 'Jump To' ),
|
|
id: 'jump_to_header',
|
|
menu_align: 'right',
|
|
action_group: 'jump_to',
|
|
action_group_header: true,
|
|
permission_result: false // to hide it in legacy context menu and avoid errors in legacy parsers.
|
|
},
|
|
{
|
|
label: $.i18n._( 'Pay Stubs' ),
|
|
id: 'pay_stub',
|
|
menu_align: 'right',
|
|
action_group: 'jump_to',
|
|
group: 'navigation',
|
|
},
|
|
{
|
|
label: $.i18n._( 'Edit Employee' ),
|
|
id: 'edit_employee',
|
|
menu_align: 'right',
|
|
action_group: 'jump_to',
|
|
group: 'navigation',
|
|
},
|
|
{
|
|
label: $.i18n._( 'TimeSheet' ),
|
|
id: 'timesheet',
|
|
menu_align: 'right',
|
|
action_group: 'jump_to',
|
|
group: 'navigation',
|
|
}
|
|
]
|
|
};
|
|
|
|
if ( ( Global.getProductEdition() >= 15 ) ) {
|
|
var publish = {
|
|
label: $.i18n._( 'Publish' ),
|
|
id: 'publish_roe', //Don't bother with constant here, as its only used once.
|
|
menu_align: 'right',
|
|
action_group: 'form',
|
|
sort_order: 2100
|
|
};
|
|
|
|
context_menu_model.include.unshift( publish );
|
|
}
|
|
|
|
return context_menu_model;
|
|
}
|
|
|
|
setCustomDefaultMenuIcon( id, context_btn, grid_selected_length ) {
|
|
switch ( id ) {
|
|
case 'view_roe':
|
|
this.setDefaultMenuViewIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'publish_roe':
|
|
this.setDefaultMenuViewIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'print':
|
|
this.setDefaultMenuPrintIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'e_file':
|
|
this.setDefaultMenuEfileIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'save_setup':
|
|
this.setDefaultMenuSaveSetupIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'pay_stub':
|
|
this.setDefaultMenuPayStubIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'edit_employee':
|
|
this.setDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length );
|
|
break;
|
|
case 'timesheet':
|
|
this.setDefaultMenuTimesheetIcon( context_btn, grid_selected_length );
|
|
break;
|
|
}
|
|
}
|
|
|
|
setDefaultMenuPrintIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( grid_selected_length > 0 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setDefaultMenuEfileIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( grid_selected_length > 0 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setDefaultMenuSaveSetupIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
|
|
setDefaultMenuPayStubIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( !PermissionManager.checkTopLevelPermission( 'PayStub' ) ) {
|
|
ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )
|
|
}
|
|
|
|
if ( grid_selected_length === 1 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( !this.editPermissionValidate( 'user' ) ) {
|
|
ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )
|
|
}
|
|
|
|
if ( grid_selected_length === 1 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setDefaultMenuTimesheetIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( grid_selected_length === 1 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setDefaultMenuViewIcon( context_btn, grid_selected_length, pId ) {
|
|
|
|
if ( grid_selected_length > 0 ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );
|
|
} else {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setEditRoeViewIcon( context_btn, grid_selected_length, pId ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
|
|
setEditMenuPublishIcon( context_btn, grid_selected_length, pId ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
|
|
setCustomEditMenuIcon( id, context_btn ) {
|
|
switch ( id ) {
|
|
case 'view_roe':
|
|
this.setEditMenuViewIcon( context_btn );
|
|
break;
|
|
case 'publish_roe':
|
|
this.setEditMenuPublishIcon( context_btn );
|
|
break;
|
|
case 'print':
|
|
this.setEditMenuPrintIcon( context_btn );
|
|
break;
|
|
case 'e_file':
|
|
this.setEditMenuEfileIcon( context_btn );
|
|
break;
|
|
case 'save_setup':
|
|
this.setEditMenuSaveSetupIcon( context_btn );
|
|
break;
|
|
case 'pay_stub':
|
|
this.setEditMenuPayStubIcon( context_btn );
|
|
break;
|
|
case 'edit_employee':
|
|
this.setEditMenuEditEmployeeIcon( context_btn );
|
|
break;
|
|
case 'timesheet':
|
|
this.setEditMenuTimeSheetIcon( context_btn );
|
|
break;
|
|
}
|
|
}
|
|
|
|
setEditMenuPrintIcon( context_btn, pId ) {
|
|
|
|
if ( !this.current_edit_record || !this.current_edit_record.id ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setEditMenuEfileIcon( context_btn, pId ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
ContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
|
|
setEditMenuSaveSetupIcon( context_btn, pId ) {
|
|
|
|
// if ( !this.current_edit_record || !this.current_edit_record.id ) {
|
|
// context_btn.addClass( 'disable-image' );
|
|
// }
|
|
}
|
|
|
|
setEditMenuPayStubIcon( context_btn, pId ) {
|
|
|
|
if ( !this.current_edit_record || !this.current_edit_record.id ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setEditMenuEditEmployeeIcon( context_btn, pId ) {
|
|
|
|
if ( !this.current_edit_record || !this.current_edit_record.id ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
setEditMenuTimeSheetIcon( context_btn, pId ) {
|
|
|
|
if ( !this.current_edit_record || !this.current_edit_record.id ) {
|
|
ContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );
|
|
}
|
|
}
|
|
|
|
buildSearchFields() {
|
|
super.buildSearchFields();
|
|
var default_args = { permission_section: 'roe' };
|
|
this.search_fields = [
|
|
|
|
new SearchField( {
|
|
label: $.i18n._( 'Employee' ),
|
|
in_column: 1,
|
|
field: 'user_id',
|
|
default_args: default_args,
|
|
multiple: true,
|
|
basic_search: true,
|
|
layout_name: 'global_user',
|
|
api_class: TTAPI.APIUser,
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Status' ),
|
|
in_column: 1,
|
|
field: 'status_id',
|
|
multiple: true,
|
|
basic_search: true,
|
|
layout_name: 'global_option_column',
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Reason' ),
|
|
in_column: 1,
|
|
field: 'code_id',
|
|
multiple: true,
|
|
basic_search: true,
|
|
layout_name: 'global_option_column',
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Pay Period Type' ),
|
|
in_column: 1,
|
|
field: 'pay_period_type_id',
|
|
multiple: true,
|
|
basic_search: true,
|
|
layout_name: 'global_option_column',
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Comments' ),
|
|
field: 'comments',
|
|
basic_search: true,
|
|
in_column: 1,
|
|
form_item_type: FormItemType.TEXT_INPUT
|
|
} ),
|
|
|
|
new SearchField( {
|
|
label: $.i18n._( 'First Name' ),
|
|
in_column: 2,
|
|
field: 'first_name',
|
|
basic_search: true,
|
|
form_item_type: FormItemType.TEXT_INPUT
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Last Name' ),
|
|
in_column: 2,
|
|
field: 'last_name',
|
|
basic_search: true,
|
|
form_item_type: FormItemType.TEXT_INPUT
|
|
} ),
|
|
new SearchField( {
|
|
label: $.i18n._( 'Created By' ),
|
|
in_column: 2,
|
|
field: 'created_by',
|
|
layout_name: 'global_user',
|
|
api_class: TTAPI.APIUser,
|
|
multiple: true,
|
|
basic_search: true,
|
|
script_name: 'EmployeeView',
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} ),
|
|
|
|
new SearchField( {
|
|
label: $.i18n._( 'Updated By' ),
|
|
in_column: 2,
|
|
field: 'updated_by',
|
|
layout_name: 'global_user',
|
|
api_class: TTAPI.APIUser,
|
|
multiple: true,
|
|
basic_search: true,
|
|
script_name: 'EmployeeView',
|
|
form_item_type: FormItemType.AWESOME_BOX
|
|
} )
|
|
|
|
];
|
|
}
|
|
|
|
search( set_default_menu, page_action, page_number, callBack ) {
|
|
if ( !this.form_setup_item ) {
|
|
this.initFormSetup( () => {
|
|
super.search( set_default_menu, page_action, page_number, callBack );
|
|
} );
|
|
} else {
|
|
super.search( set_default_menu, page_action, page_number, callBack );
|
|
}
|
|
}
|
|
|
|
setCurrentEditRecordData() {
|
|
|
|
//Set current edit record data to all widgets
|
|
for ( var key in this.current_edit_record ) {
|
|
|
|
if ( !this.current_edit_record.hasOwnProperty( key ) ) {
|
|
continue;
|
|
}
|
|
|
|
var widget = this.edit_view_ui_dic[key];
|
|
if ( Global.isSet( widget ) ) {
|
|
switch ( key ) {
|
|
case 'country': //popular case
|
|
this.setCountryValue( widget, key );
|
|
break;
|
|
default:
|
|
widget.setValue( this.current_edit_record[key] );
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
this.setFormSetupData();
|
|
this.collectUIDataToCurrentEditRecord();
|
|
this.setEditViewDataDone();
|
|
}
|
|
|
|
buildEditViewUI() {
|
|
|
|
super.buildEditViewUI();
|
|
|
|
var $this = this;
|
|
|
|
var tab_model = {
|
|
'tab_roe': {
|
|
'label': $.i18n._( 'ROE' )
|
|
},
|
|
'tab_form_setup': { 'label': $.i18n._( 'Form Setup' ), 'on_exit_callback': 'checkFormSetupSaved' },
|
|
'tab_audit': true,
|
|
};
|
|
this.setTabModel( tab_model );
|
|
|
|
this.navigation.AComboBox( {
|
|
api_class: TTAPI.APIROE,
|
|
id: this.script_name + '_navigation',
|
|
allow_multiple_selection: false,
|
|
layout_name: 'global_roe',
|
|
navigation_mode: true,
|
|
show_search_inputs: true
|
|
} );
|
|
|
|
this.setNavigation();
|
|
|
|
//Tab 0 start
|
|
|
|
var tab_roe = this.edit_view_tab.find( '#tab_roe' );
|
|
var tab_form_setup = this.edit_view_tab.find( '#tab_form_setup' );
|
|
|
|
var tab_roe_column1 = tab_roe.find( '.first-column' );
|
|
var tab_form_setup_column1 = tab_form_setup.find( '.first-column' );
|
|
|
|
this.edit_view_tabs[0] = [];
|
|
this.edit_view_tabs[1] = [];
|
|
|
|
this.edit_view_tabs[0].push( tab_roe_column1 );
|
|
this.edit_view_tabs[1].push( tab_form_setup_column1 );
|
|
|
|
var form_item_input;
|
|
var widgetContainer;
|
|
var label;
|
|
|
|
// Employee
|
|
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
|
form_item_input.AComboBox( {
|
|
api_class: TTAPI.APIUser,
|
|
allow_multiple_selection: false,
|
|
layout_name: 'global_user',
|
|
field: 'user_id',
|
|
show_search_inputs: true,
|
|
set_empty: true
|
|
} );
|
|
|
|
var default_args = {};
|
|
default_args.permission_section = 'roe';
|
|
form_item_input.setDefaultArgs( default_args );
|
|
|
|
this.addEditFieldToColumn( $.i18n._( 'Employee' ), form_item_input, tab_roe_column1, '' );
|
|
|
|
// Status
|
|
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
|
form_item_input.TComboBox( { field: 'status_id' } );
|
|
form_item_input.setSourceData( $this.user_status_array );
|
|
this.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Reason
|
|
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
|
form_item_input.TComboBox( { field: 'code_id' } );
|
|
form_item_input.setSourceData( $this.code_array );
|
|
this.addEditFieldToColumn( $.i18n._( 'Reason' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Pay Period Type
|
|
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
|
form_item_input.TComboBox( { field: 'pay_period_type_id' } );
|
|
form_item_input.setSourceData( $this.type_array );
|
|
this.addEditFieldToColumn( $.i18n._( 'Pay Period Type' ), form_item_input, tab_roe_column1 );
|
|
|
|
// First Day Worked
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'first_date' } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'Or first day since last ROE' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'First Day Worked' ), form_item_input, tab_roe_column1, '', widgetContainer );
|
|
|
|
// Last Day For Which Paid
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'last_date' } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'Last day worked or received insurable earnings' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'Last Day For Which Paid' ), form_item_input, tab_roe_column1, '', widgetContainer );
|
|
|
|
//Final Pay Period Ending Date
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'pay_period_end_date' } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'Pay period end date after Last Day For Which Paid' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'Final Pay Period Ending Date' ), form_item_input, tab_roe_column1, '', widgetContainer );
|
|
|
|
// Expected Date of Recall
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'recall_date' } );
|
|
this.addEditFieldToColumn( $.i18n._( 'Expected Date of Recall' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Serial No
|
|
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
|
form_item_input.TTextInput( { field: 'serial', width: 100 } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'Optional' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'Serial No' ), form_item_input, tab_roe_column1, '', widgetContainer );
|
|
|
|
// Comments
|
|
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
|
form_item_input.TTextInput( { field: 'comments', width: 400 } );
|
|
this.addEditFieldToColumn( $.i18n._( 'Comments' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Release All Accruals
|
|
form_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );
|
|
form_item_input.TCheckbox( { field: 'release_accruals' } );
|
|
this.addEditFieldToColumn( $.i18n._( 'Release All Accruals' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Generate Final Pay Stub
|
|
form_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );
|
|
form_item_input.TCheckbox( { field: 'generate_pay_stub' } );
|
|
this.addEditFieldToColumn( $.i18n._( 'Generate Final Pay Stub' ), form_item_input, tab_roe_column1, '' );
|
|
|
|
// Set User Termination Status
|
|
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
|
form_item_input.TComboBox( { field: 'user_termination_status_id' } );
|
|
form_item_input.setSourceData( $this.user_termination_status_array );
|
|
this.addEditFieldToColumn( $.i18n._( 'Change Employee Status To' ), form_item_input, tab_roe_column1 );
|
|
|
|
//Final Pay Stub End Date
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'final_pay_stub_end_date' } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'May be after Final Pay Period Ending Date if vacation/severence is paid separately' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'Final Pay Stub End Date' ), form_item_input, tab_roe_column1, '', widgetContainer );
|
|
|
|
//Final Pay Stub Transaction Date
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'final_pay_stub_transaction_date' } );
|
|
this.addEditFieldToColumn( $.i18n._( 'Final Pay Stub Transaction Date' ), form_item_input, tab_roe_column1 );
|
|
|
|
// Insurable Absence Policies
|
|
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
|
form_item_input.AComboBox( {
|
|
api_class: TTAPI.APIAbsencePolicy,
|
|
allow_multiple_selection: true,
|
|
layout_name: 'global_absences',
|
|
field: 'absence_policy_ids',
|
|
show_search_inputs: true,
|
|
set_empty: true
|
|
} );
|
|
|
|
this.addEditFieldToColumn( $.i18n._( 'Insurable Absence Policies' ), form_item_input, tab_form_setup_column1, '' );
|
|
|
|
var args = {};
|
|
args.filter_data = {};
|
|
args.filter_data.type_id = [10, 30, 40, 80];
|
|
args.filter_data.status_id = 10;
|
|
|
|
// Insurable Earnings (Box 15B)
|
|
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
|
form_item_input.AComboBox( {
|
|
api_class: TTAPI.APIPayStubEntryAccount,
|
|
allow_multiple_selection: true,
|
|
layout_name: 'global_PayStubAccount',
|
|
field: 'insurable_earnings_psea_ids',
|
|
show_search_inputs: true,
|
|
set_empty: true
|
|
} );
|
|
|
|
form_item_input.setDefaultArgs( args );
|
|
this.addEditFieldToColumn( $.i18n._( 'Insurable Earnings (Box 15B)' ), form_item_input, tab_form_setup_column1, '' );
|
|
|
|
// Vacation Pay (Box 17A)
|
|
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
|
form_item_input.AComboBox( {
|
|
api_class: TTAPI.APIPayStubEntryAccount,
|
|
allow_multiple_selection: true,
|
|
layout_name: 'global_PayStubAccount',
|
|
field: 'vacation_psea_ids',
|
|
show_search_inputs: true,
|
|
set_empty: true
|
|
} );
|
|
|
|
form_item_input.setDefaultArgs( args );
|
|
this.addEditFieldToColumn( $.i18n._( 'Vacation Pay (Box 17A)' ), form_item_input, tab_form_setup_column1, '' );
|
|
|
|
// Other Monies (Box 17C)
|
|
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
|
form_item_input.AComboBox( {
|
|
api_class: TTAPI.APIPayStubEntryAccount,
|
|
allow_multiple_selection: true,
|
|
layout_name: 'global_PayStubAccount',
|
|
field: 'other_psea_ids',
|
|
show_search_inputs: true,
|
|
set_empty: true
|
|
} );
|
|
|
|
form_item_input.setDefaultArgs( args );
|
|
this.addEditFieldToColumn( $.i18n._( 'Other Monies (Box 17C)' ), form_item_input, tab_form_setup_column1, '' );
|
|
|
|
//Date all employees were issues ROEs from a previous payroll system.
|
|
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
|
form_item_input.TDatePicker( { field: 'min_first_date' } );
|
|
widgetContainer = $( '<div class=\'widget-h-box\'></div>' );
|
|
label = $( '<span class=\'widget-right-label\'> ' + '(' + $.i18n._( 'Date all employees were issued an ROE' ) + ')' + '</span>' );
|
|
widgetContainer.append( form_item_input );
|
|
widgetContainer.append( label );
|
|
this.addEditFieldToColumn( $.i18n._( 'Earliest First Day Since Last ROE' ), form_item_input, tab_form_setup_column1, '', widgetContainer );
|
|
}
|
|
|
|
onCustomContextClick( id ) {
|
|
switch ( id ) {
|
|
case 'download':
|
|
this.onDownloadClick();
|
|
break;
|
|
case 'pay_stub':
|
|
case 'edit_employee':
|
|
case 'timesheet':
|
|
case 'view_roe':
|
|
case 'print':
|
|
case 'e_file':
|
|
case 'publish_roe':
|
|
case 'export_excel':
|
|
this.onNavigationClick( id );
|
|
break;
|
|
case 'save_setup':
|
|
this.onSaveSetup();
|
|
}
|
|
}
|
|
|
|
initFormSetup( callBack ) {
|
|
var args = {};
|
|
var $this = this;
|
|
args.filter_data = {};
|
|
args.filter_data.script = 'roe';
|
|
args.filter_data.user_id = TTUUID.zero_id;
|
|
args.filter_data.is_default = true;
|
|
|
|
this.user_generic_data_api.getUserGenericData( args, {
|
|
onResult: function( result ) {
|
|
|
|
var result_data = result.getResult();
|
|
|
|
if ( result_data && result_data.length > 0 ) {
|
|
$this.form_setup_item = result_data[0];
|
|
} else {
|
|
$this.form_setup_item = {};
|
|
}
|
|
|
|
if ( callBack ) {
|
|
callBack();
|
|
}
|
|
|
|
}
|
|
} );
|
|
}
|
|
|
|
setFormSetupData() {
|
|
if ( this.form_setup_item.data ) {
|
|
this.edit_view_ui_dic.absence_policy_ids.setValue( this.form_setup_item.data.absence_policy_ids );
|
|
this.edit_view_ui_dic.insurable_earnings_psea_ids.setValue( this.form_setup_item.data.insurable_earnings_psea_ids );
|
|
this.edit_view_ui_dic.vacation_psea_ids.setValue( this.form_setup_item.data.vacation_psea_ids );
|
|
this.edit_view_ui_dic.other_psea_ids.setValue( this.form_setup_item.data.other_psea_ids );
|
|
this.edit_view_ui_dic.min_first_date.setValue( this.form_setup_item.data.min_first_date );
|
|
}
|
|
}
|
|
|
|
getFormSetupData( form_item ) {
|
|
|
|
//Error: TypeError: form_item is undefined in /interface/html5/framework/jquery.min.js?v=8.0.0-20141117-091433 line 2 > eval line 1015
|
|
if ( !form_item ) {
|
|
form_item = {};
|
|
}
|
|
|
|
form_item.form = {};
|
|
|
|
form_item.form.absence_policy_ids = this.edit_view_ui_dic.absence_policy_ids.getValue();
|
|
form_item.form.insurable_earnings_psea_ids = this.edit_view_ui_dic.insurable_earnings_psea_ids.getValue();
|
|
form_item.form.vacation_psea_ids = this.edit_view_ui_dic.vacation_psea_ids.getValue();
|
|
form_item.form.other_psea_ids = this.edit_view_ui_dic.other_psea_ids.getValue();
|
|
form_item.form.min_first_date = this.edit_view_ui_dic.min_first_date.getValue();
|
|
|
|
return form_item;
|
|
}
|
|
|
|
onSaveSetup() {
|
|
var $this = this;
|
|
var form_setup = this.form_setup_item;
|
|
|
|
form_setup.user_id = TTUUID.zero_id;
|
|
form_setup.is_default = true;
|
|
|
|
if ( !form_setup.id ) {
|
|
form_setup.script = 'roe';
|
|
form_setup.name = 'form';
|
|
}
|
|
|
|
form_setup.data = this.getFormSetupData( {} ).form;
|
|
|
|
$this.form_setup_item = form_setup;
|
|
this.user_generic_data_api.setUserGenericData( form_setup, {
|
|
onResult: function( result ) {
|
|
|
|
if ( result.isValid() ) {
|
|
if ( typeof $this.form_setup_item.id == 'undefined' && TTUUID.isUUID( result.getResult() ) ) {
|
|
$this.form_setup_item.id = result.getResult();
|
|
}
|
|
TAlertManager.showAlert( $.i18n._( 'Form Setup has been saved successfully' ) );
|
|
} else {
|
|
TAlertManager.showAlert( $.i18n._( 'Form Setup save failed, Please try again' ) );
|
|
}
|
|
|
|
}
|
|
} );
|
|
}
|
|
|
|
onNavigationClick( iconName ) {
|
|
|
|
var $this = this;
|
|
|
|
var grid_selected_id_array;
|
|
|
|
var filter = {};
|
|
|
|
var user_ids = [];
|
|
|
|
var ids = [];
|
|
|
|
var base_date;
|
|
|
|
if ( $this.edit_view && $this.current_edit_record.id ) {
|
|
user_ids.push( $this.current_edit_record.user_id );
|
|
base_date = $this.current_edit_record.last_date;
|
|
ids.push( $this.current_edit_record.id );
|
|
} else {
|
|
grid_selected_id_array = this.getGridSelectIdArray();
|
|
$.each( grid_selected_id_array, function( index, value ) {
|
|
var grid_selected_row = $this.getRecordFromGridById( value );
|
|
user_ids.push( grid_selected_row.user_id );
|
|
base_date = grid_selected_row.last_date;
|
|
ids.push( grid_selected_row.id );
|
|
} );
|
|
}
|
|
|
|
var args = { roe_id: ids };
|
|
|
|
if ( !$this.edit_view ) {
|
|
if ( this.form_setup_item.data ) {
|
|
args.form = this.form_setup_item.data;
|
|
}
|
|
} else {
|
|
args.form = this.getFormSetupData( this.current_edit_record ).form;
|
|
}
|
|
|
|
var post_data;
|
|
|
|
switch ( iconName ) {
|
|
case 'edit_employee':
|
|
if ( user_ids.length > 0 ) {
|
|
IndexViewController.openEditView( this, 'Employee', user_ids[0] );
|
|
}
|
|
break;
|
|
case 'pay_stub':
|
|
if ( user_ids.length > 0 ) {
|
|
filter.filter_data = {};
|
|
filter.filter_data.user_id = user_ids[0];
|
|
Global.addViewTab( $this.viewId, $.i18n._( 'Record of Employment' ), window.location.href );
|
|
IndexViewController.goToView( 'PayStub', filter );
|
|
|
|
}
|
|
break;
|
|
case 'timesheet':
|
|
if ( user_ids.length > 0 ) {
|
|
filter.user_id = user_ids[0];
|
|
filter.base_date = base_date;
|
|
Global.addViewTab( $this.viewId, $.i18n._( 'Record of Employment' ), window.location.href );
|
|
IndexViewController.goToView( 'TimeSheet', filter );
|
|
|
|
}
|
|
break;
|
|
case 'view_roe':
|
|
post_data = { 0: args, 1: 'pdf_form' };
|
|
this.doFormIFrameCall( post_data );
|
|
break;
|
|
case 'publish_roe':
|
|
this.report_api.getROEReport( args, 'pdf_form_publish_employee', {
|
|
onResult: function( result ) {
|
|
if ( result.isValid() ) {
|
|
var retval = result.getResult();
|
|
if ( retval ) {
|
|
UserGenericStatusWindowController.open( retval, LocalCacheData.getLoginUser().id );
|
|
}
|
|
} else {
|
|
TAlertManager.showErrorAlert( result );
|
|
}
|
|
}
|
|
} );
|
|
break;
|
|
case 'print':
|
|
post_data = { 0: args, 1: 'pdf_form_print' };
|
|
this.doFormIFrameCall( post_data );
|
|
break;
|
|
case 'e_file':
|
|
post_data = { 0: args, 1: 'efile_xml' };
|
|
this.doFormIFrameCall( post_data );
|
|
|
|
//Refresh grid within 5 seconds, hopefully the file has been downloaded by then.
|
|
$this = this;
|
|
setTimeout( function() {
|
|
$this.search();
|
|
}, 5000 );
|
|
break;
|
|
case 'export_excel':
|
|
this.onExportClick( 'export' + this.api.key_name );
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
doFormIFrameCall( postData ) {
|
|
Global.APIFileDownload( 'APIROEReport', 'getROEReport', postData );
|
|
}
|
|
|
|
onSaveResult( result ) {
|
|
super.onSaveResult( result );
|
|
if ( result.isValid() ) {
|
|
this.showStatusReport( result, this.refresh_id );
|
|
}
|
|
}
|
|
|
|
onSaveAndNewResult( result ) {
|
|
super.onSaveAndNewResult( result );
|
|
if ( result.isValid() ) {
|
|
this.showStatusReport( result, this.refresh_id );
|
|
}
|
|
}
|
|
|
|
onSaveAndContinueResult( result ) {
|
|
super.onSaveAndContinueResult( result );
|
|
if ( result.isValid() ) {
|
|
this.showStatusReport( result, this.refresh_id );
|
|
}
|
|
}
|
|
|
|
onSaveAndNextResult( result ) {
|
|
super.onSaveAndNextResult( result );
|
|
if ( result.isValid() ) {
|
|
this.showStatusReport( result, this.refresh_id );
|
|
}
|
|
}
|
|
|
|
onSaveAndCopyResult( result ) {
|
|
super.onSaveAndCopyResult( result );
|
|
if ( result.isValid() ) {
|
|
this.showStatusReport( result, this.refresh_id );
|
|
}
|
|
}
|
|
|
|
showStatusReport( result, id ) {
|
|
var user_ids = id;
|
|
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, user_ids );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Originally copied from same function name in ReportBaseViewController
|
|
* FIXME: refactor to base class when needed in other children
|
|
* @param label
|
|
*/
|
|
checkFormSetupSaved( label ) {
|
|
var $this = this;
|
|
|
|
label = $.i18n._( 'Form Setup' );
|
|
|
|
if ( this.form_setup_changed ) {
|
|
$this.form_setup_changed = false;
|
|
TAlertManager.showConfirmAlert( $.i18n._( 'You have modified' ) + ' ' + label + ' ' + $.i18n._( 'data without saving, would you like to save your data now?' ), '', function( flag ) {
|
|
if ( flag ) {
|
|
$this.onSaveSetup( label );
|
|
}
|
|
} );
|
|
}
|
|
}
|
|
|
|
onFormItemChange( target, doNotValidate ) {
|
|
if ( this.getEditViewTabIndex() == 1 ) {
|
|
this.form_setup_changed = true;
|
|
}
|
|
|
|
var $this = this;
|
|
this.setIsChanged( target );
|
|
this.setMassEditingFieldsWhenFormChange( target );
|
|
var key = target.getField();
|
|
var c_value = target.getValue();
|
|
switch ( key ) {
|
|
case 'user_id':
|
|
this.api['get' + this.api.key_name + 'DefaultData']( c_value, {
|
|
onResult: function( res ) {
|
|
var result = res.getResult();
|
|
$this.edit_view_ui_dic['first_date'].setValue( result.first_date );
|
|
$this.edit_view_ui_dic['last_date'].setValue( result.last_date );
|
|
$this.edit_view_ui_dic['pay_period_end_date'].setValue( result.pay_period_end_date );
|
|
$this.edit_view_ui_dic['final_pay_stub_end_date'].setValue( result.final_pay_stub_end_date );
|
|
$this.edit_view_ui_dic['final_pay_stub_transaction_date'].setValue( result.final_pay_stub_transaction_date );
|
|
$this.edit_view_ui_dic['pay_period_type_id'].setValue( result.pay_period_type_id );
|
|
$this.edit_view_ui_dic['release_accruals'].setValue( result.release_accruals );
|
|
$this.edit_view_ui_dic['generate_pay_stub'].setValue( result.generate_pay_stub );
|
|
|
|
$this.current_edit_record.first_date = result.first_date;
|
|
$this.current_edit_record.last_date = result.last_date;
|
|
$this.current_edit_record.pay_period_end_date = result.pay_period_end_date;
|
|
$this.current_edit_record.final_pay_stub_end_date = result.final_pay_stub_end_date;
|
|
$this.current_edit_record.final_pay_stub_transaction_date = result.final_pay_stub_transaction_date;
|
|
$this.current_edit_record.pay_period_type_id = result.pay_period_type_id;
|
|
$this.current_edit_record.release_accruals = result.release_accruals;
|
|
$this.current_edit_record.generate_pay_stub = result.generate_pay_stub;
|
|
$this.current_edit_record[key] = c_value;
|
|
if ( !doNotValidate ) {
|
|
$this.validate();
|
|
}
|
|
}
|
|
} );
|
|
break;
|
|
default:
|
|
this.current_edit_record[key] = c_value;
|
|
if ( !doNotValidate ) {
|
|
this.validate();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
uniformVariable( records ) {
|
|
|
|
records.form = this.getFormSetupData( records ).form;
|
|
|
|
return records;
|
|
}
|
|
|
|
} |