TimeTrex Community Edition v16.2.0
This commit is contained in:
@@ -0,0 +1,410 @@
|
||||
export class RecurringPayStubAmendmentViewController extends BaseViewController {
|
||||
constructor( options = {} ) {
|
||||
_.defaults( options, {
|
||||
el: '#recurring_pay_stub_amendment_view_container',
|
||||
type_array: null,
|
||||
filtered_status_array: null,
|
||||
frequency_array: null
|
||||
} );
|
||||
|
||||
super( options );
|
||||
}
|
||||
|
||||
init( options ) {
|
||||
//this._super('initialize', options );
|
||||
this.edit_view_tpl = 'RecurringPayStubAmendmentEditView.html';
|
||||
this.permission_id = 'pay_stub_amendment';
|
||||
this.viewId = 'RecurringPayStubAmendment';
|
||||
this.script_name = 'RecurringPayStubAmendmentView';
|
||||
this.table_name_key = 'recurring_ps_amendment';
|
||||
this.context_menu_name = $.i18n._( 'Recurring PS Amendment' );
|
||||
this.navigation_label = $.i18n._( 'Recurring PS Amendment' );
|
||||
this.api = TTAPI.APIRecurringPayStubAmendment;
|
||||
|
||||
this.render();
|
||||
this.buildContextMenu();
|
||||
|
||||
this.initData();
|
||||
}
|
||||
|
||||
initOptions() {
|
||||
var $this = this;
|
||||
this.initDropDownOption( 'type' );
|
||||
this.initDropDownOption( 'filtered_status', 'status_id', this.api, function() {
|
||||
$this.basic_search_field_ui_dic['status_id'].setSourceData( $this.filtered_status_array );
|
||||
} );
|
||||
this.initDropDownOption( 'frequency' );
|
||||
}
|
||||
|
||||
onFormItemChange( target, doNotValidate ) {
|
||||
this.setIsChanged( target );
|
||||
this.setMassEditingFieldsWhenFormChange( target );
|
||||
|
||||
var key = target.getField();
|
||||
var c_value = target.getValue();
|
||||
|
||||
this.current_edit_record[key] = c_value;
|
||||
|
||||
if ( key === 'type_id' ) {
|
||||
this.onTypeChange();
|
||||
}
|
||||
|
||||
if ( key === 'rate' || key === 'units' || key === 'amount' ) {
|
||||
if ( this.is_mass_editing ) {
|
||||
if ( target.isChecked() ) {
|
||||
this.edit_view_ui_dic['rate'].setCheckBox( true );
|
||||
this.edit_view_ui_dic['units'].setCheckBox( true );
|
||||
this.edit_view_ui_dic['amount'].setCheckBox( true );
|
||||
} else {
|
||||
this.edit_view_ui_dic['rate'].setCheckBox( false );
|
||||
this.edit_view_ui_dic['units'].setCheckBox( false );
|
||||
this.edit_view_ui_dic['amount'].setCheckBox( false );
|
||||
}
|
||||
}
|
||||
this.current_edit_record['amount'] = this.edit_view_ui_dic['amount'].getValue();
|
||||
}
|
||||
|
||||
if ( !doNotValidate ) {
|
||||
this.validate();
|
||||
}
|
||||
}
|
||||
|
||||
uniformVariable( records ) {
|
||||
|
||||
if ( records.type_id == 20 ) {
|
||||
records.amount = records.percent_amount;
|
||||
}
|
||||
|
||||
return records;
|
||||
}
|
||||
|
||||
onTypeChange() {
|
||||
if ( this.current_edit_record.type_id == 10 ) {
|
||||
this.detachElement( 'percent_amount' );
|
||||
this.detachElement( 'percent_amount_entry_name_id' );
|
||||
this.attachElement( 'rate' );
|
||||
this.attachElement( 'units' );
|
||||
this.attachElement( 'amount' );
|
||||
|
||||
} else if ( this.current_edit_record.type_id == 20 ) {
|
||||
this.attachElement( 'percent_amount' );
|
||||
this.attachElement( 'percent_amount_entry_name_id' );
|
||||
this.detachElement( 'rate' );
|
||||
this.detachElement( 'units' );
|
||||
this.detachElement( 'amount' );
|
||||
}
|
||||
|
||||
this.editFieldResize();
|
||||
}
|
||||
|
||||
onFormItemKeyUp( target ) {
|
||||
var widget_rate = this.edit_view_ui_dic['rate'];
|
||||
var widget_units = this.edit_view_ui_dic['units'];
|
||||
var widget_amount = this.edit_view_ui_dic['amount'];
|
||||
|
||||
if ( target.getValue().length === 0 ) {
|
||||
widget_amount.setReadOnly( false );
|
||||
}
|
||||
if ( widget_rate.getValue().length > 0 || widget_units.getValue().length > 0 ) {
|
||||
widget_amount.setReadOnly( true );
|
||||
}
|
||||
|
||||
if ( widget_rate.getValue().length > 0 && widget_units.getValue().length > 0 ) {
|
||||
widget_amount.setValue( ( parseFloat( widget_rate.getValue() ) * parseFloat( widget_units.getValue() ) ).toFixed( 2 ) );
|
||||
} else {
|
||||
widget_amount.setValue( '0.00' );
|
||||
}
|
||||
}
|
||||
|
||||
/* jshint ignore:start */
|
||||
onFormItemKeyDown( target ) {
|
||||
var widget = this.edit_view_ui_dic['amount'];
|
||||
var widget_rate = this.edit_view_ui_dic['rate'];
|
||||
var widget_units = this.edit_view_ui_dic['units'];
|
||||
if ( widget_rate.getValue().length > 0 && widget_units.getValue().length > 0 ) {
|
||||
|
||||
} else {
|
||||
widget.setValue( '0.00' );
|
||||
}
|
||||
|
||||
widget.setReadOnly( true );
|
||||
}
|
||||
|
||||
/* jshint ignore:end */
|
||||
setCurrentEditRecordData() {
|
||||
|
||||
// When mass editing, these fields may not be the common data, so their value will be undefined, so this will cause their change event cannot work properly.
|
||||
this.setDefaultData( {
|
||||
'type_id': 10
|
||||
} );
|
||||
|
||||
//Set current edit record data to all widgets
|
||||
var widget;
|
||||
|
||||
for ( var key in this.current_edit_record ) {
|
||||
widget = this.edit_view_ui_dic[key];
|
||||
if ( Global.isSet( widget ) ) {
|
||||
switch ( key ) {
|
||||
default:
|
||||
widget.setValue( this.current_edit_record[key] );
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ( this.current_edit_record.rate || this.current_edit_record.units ) {
|
||||
widget = this.edit_view_ui_dic['amount'];
|
||||
widget.setReadOnly( true );
|
||||
}
|
||||
|
||||
this.collectUIDataToCurrentEditRecord();
|
||||
this.setEditViewDataDone();
|
||||
}
|
||||
|
||||
setEditViewDataDone() {
|
||||
super.setEditViewDataDone();
|
||||
this.onTypeChange();
|
||||
}
|
||||
|
||||
buildEditViewUI() {
|
||||
super.buildEditViewUI();
|
||||
|
||||
var $this = this;
|
||||
var allow_multiple_selection = false;
|
||||
|
||||
var tab_model = {
|
||||
'tab_recurring_ps_amendment': { 'label': $.i18n._( 'Recurring PS Amendment' ) },
|
||||
'tab_audit': true,
|
||||
};
|
||||
this.setTabModel( tab_model );
|
||||
|
||||
this.navigation.AComboBox( {
|
||||
api_class: TTAPI.APIRecurringPayStubAmendment,
|
||||
id: this.script_name + '_navigation',
|
||||
allow_multiple_selection: false,
|
||||
layout_name: 'global_recurring_amendment',
|
||||
navigation_mode: true,
|
||||
show_search_inputs: true
|
||||
} );
|
||||
|
||||
this.setNavigation();
|
||||
|
||||
//Tab 0 start
|
||||
|
||||
var tab_recurring_ps_amendment = this.edit_view_tab.find( '#tab_recurring_ps_amendment' );
|
||||
|
||||
var tab_recurring_ps_amendment_column1 = tab_recurring_ps_amendment.find( '.first-column' );
|
||||
|
||||
this.edit_view_tabs[0] = [];
|
||||
|
||||
this.edit_view_tabs[0].push( tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Status
|
||||
var form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
||||
|
||||
form_item_input.TComboBox( { field: 'status_id', set_empty: false } );
|
||||
form_item_input.setSourceData( $this.filtered_status_array );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_recurring_ps_amendment_column1, '' );
|
||||
|
||||
// Name
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'name', width: '100%' } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
form_item_input.parent().width( '45%' );
|
||||
|
||||
// Description
|
||||
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'description', width: '100%' } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
form_item_input.parent().width( '45%' );
|
||||
|
||||
// Frequency
|
||||
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
||||
|
||||
form_item_input.TComboBox( { field: 'frequency_id', set_empty: false } );
|
||||
form_item_input.setSourceData( $this.frequency_array );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Frequency' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Start Date
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
||||
|
||||
form_item_input.TDatePicker( { field: 'start_date' } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Start Date' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// End Date
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );
|
||||
|
||||
form_item_input.TDatePicker( { field: 'end_date' } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'End Date' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Employee(s)
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
||||
form_item_input.AComboBox( {
|
||||
api_class: TTAPI.APIUser,
|
||||
allow_multiple_selection: true,
|
||||
layout_name: 'global_user',
|
||||
show_search_inputs: true,
|
||||
set_empty: true,
|
||||
field: 'user'
|
||||
} );
|
||||
var default_args = {};
|
||||
default_args.permission_section = 'recurring_ps_amendment';
|
||||
form_item_input.setDefaultArgs( default_args );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Employee(s)' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Pay Stub Amendment
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.SEPARATED_BOX );
|
||||
form_item_input.SeparatedBox( { label: $.i18n._( 'Pay Stub Amendment' ) } );
|
||||
this.addEditFieldToColumn( null, form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Pay Stub Account
|
||||
var args = {};
|
||||
var filter_data = {};
|
||||
filter_data.type_id = [10, 20, 30, 50, 60, 65, 80];
|
||||
args.filter_data = filter_data;
|
||||
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
||||
form_item_input.AComboBox( {
|
||||
api_class: TTAPI.APIPayStubEntryAccount,
|
||||
allow_multiple_selection: false,
|
||||
layout_name: 'global_PayStubAccount',
|
||||
show_search_inputs: true,
|
||||
set_empty: true,
|
||||
field: 'pay_stub_entry_name_id'
|
||||
} );
|
||||
form_item_input.setDefaultArgs( args );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Pay Stub Account' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Amount Type
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );
|
||||
form_item_input.TComboBox( { field: 'type_id', set_empty: false } );
|
||||
form_item_input.setSourceData( $this.type_array );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Amount Type' ), form_item_input, tab_recurring_ps_amendment_column1 );
|
||||
|
||||
// Fixed
|
||||
|
||||
// Rate
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'rate', width: 149, hasKeyEvent: true } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Rate' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true, null, null, true );
|
||||
|
||||
// Units
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'units', width: 149, hasKeyEvent: true } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Units' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true, null, null, true );
|
||||
|
||||
// Amount
|
||||
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'amount', width: 149 } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Amount' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );
|
||||
|
||||
// Percent
|
||||
|
||||
//Percent
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'percent_amount', width: 79 } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Percent' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );
|
||||
|
||||
args = {};
|
||||
filter_data = {};
|
||||
filter_data.type_id = [10, 20, 30, 40, 50, 60, 65];
|
||||
args.filter_data = filter_data;
|
||||
|
||||
// Percent of
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );
|
||||
form_item_input.AComboBox( {
|
||||
api_class: TTAPI.APIPayStubEntryAccount,
|
||||
allow_multiple_selection: false,
|
||||
layout_name: 'global_PayStubAccount',
|
||||
show_search_inputs: true,
|
||||
set_empty: true,
|
||||
field: 'percent_amount_entry_name_id'
|
||||
} );
|
||||
|
||||
form_item_input.setDefaultArgs( args );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Percent of' ), form_item_input, tab_recurring_ps_amendment_column1, '', null, true );
|
||||
|
||||
// Pay Stub Note (Public)
|
||||
form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );
|
||||
|
||||
form_item_input.TTextInput( { field: 'ps_amendment_description', width: 359 } );
|
||||
this.addEditFieldToColumn( $.i18n._( 'Pay Stub Note (Public)' ), form_item_input, tab_recurring_ps_amendment_column1, '' );
|
||||
}
|
||||
|
||||
buildSearchFields() {
|
||||
|
||||
super.buildSearchFields();
|
||||
this.search_fields = [
|
||||
|
||||
new SearchField( {
|
||||
label: $.i18n._( 'Name' ),
|
||||
in_column: 1,
|
||||
field: 'name',
|
||||
basic_search: true,
|
||||
form_item_type: FormItemType.TEXT_INPUT
|
||||
} ),
|
||||
new SearchField( {
|
||||
label: $.i18n._( 'Type' ),
|
||||
in_column: 1,
|
||||
field: 'type_id',
|
||||
multiple: true,
|
||||
basic_search: true,
|
||||
layout_name: 'global_option_column',
|
||||
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._( 'Frequency' ),
|
||||
in_column: 2,
|
||||
field: 'frequency_id',
|
||||
multiple: true,
|
||||
basic_search: true,
|
||||
layout_name: 'global_option_column',
|
||||
form_item_type: FormItemType.AWESOME_BOX
|
||||
} ),
|
||||
|
||||
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,
|
||||
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,
|
||||
form_item_type: FormItemType.AWESOME_BOX
|
||||
} )
|
||||
];
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user