").addClass( "TradeClaims").css({ "height": "100%" });
instance.createToolbar();
instance.checkAndDisableSummary();
instance.createDataGrid()
instance.rootElement.append( instance.toolbar.element().css( { 'margin' : '5px', 'padding-right' : '10px' } ) );
instance.rootElement.append( instance.dataGrid.element() );
return instance.rootElement;
}
TradeClaims.prototype.createToolbar = function() {
let instance = this;
var sDataURL = $("link#PortalDocRootURL").attr("href");
let timeFrameItems = [
{ id: '*', text: 'All Time' },
{ id: 'TY', text: 'YTD' },
{ id: 'LY', text: 'Last Year' },
{ id: 'R12', text: '12 Months' },
];
let contractScopeDataSource = Fse.Data.newDataSource( {
object : "TPM.tradeContractScope", paginate: true, pageSize: 50, objectParams : { partnerId : instance.partnerId, partnerType: instance.partnerType },
});
let distributorClaimantDataSource = Fse.Data.newDataSource({
object: 'TPM.tradeDistributorClaimants', paginate: true, pageSize: 50, keyField: 'cdr_recordId', objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType },
})
let tradeSkuDataSource = Fse.Data.newDataSource({
object: 'TPM.tradeSkus', paginate: true, pageSize: 50, keyField: 'skuId', objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType },
})
instance.toolbar = $( '
' ).dxToolbar({
items:[
{
widget: 'dxSelectBox',
location: 'before',
options: {
elementAttr: { id : 'agreementSelectBox' },
searchEnabled : true,
searchMode : "contains",
showClearButton : true,
width: 300,
dataSource : contractScopeDataSource,
displayExpr: 'agreement',
/*displayExpr: function( item ) {
if( item ) {
return item.contractName + ' (' + item.assignedContractNbr + ')';
}
return '';
},*/
valueExpr: 'contractName',
//valueExpr: 'requestId',
onValueChanged: function() {
let claimDataSource = Fse.Data.newDataSource(
{ object: 'TPM.TradeClaims', keyField: 'claimId', paginate: true, pageSize: 50, objectParams: instance.getObjectParams() }
)
instance.dataGrid.option( 'dataSource', claimDataSource );
},
placeholder: '-- All Agreements --',
showClearButton: true,
useItemTextAsTitle: true,
},
},
{
widget: 'dxSelectBox',
location: 'before',
options: {
elementAttr: { id : 'distributorClaimantSelectBox' },
searchEnabled : true,
searchMode : "contains",
showClearButton : true,
width: 300,
dataSource : distributorClaimantDataSource,
displayExpr: 'cdr_dstName',
valueExpr: 'cdr_recordId',
onValueChanged: function() {
let claimDataSource = Fse.Data.newDataSource(
{ object: 'TPM.TradeClaims', keyField: 'claimId', paginate: true, pageSize: 50, objectParams: instance.getObjectParams() }
)
instance.dataGrid.option( 'dataSource', claimDataSource );
},
placeholder: '-- All Distributors --',
showClearButton: true,
useItemTextAsTitle: true,
},
},
{
widget: 'dxSelectBox',
location: 'before',
options: {
elementAttr: { id : 'tradeSkuSelectBox' },
searchEnabled : true,
searchMode : "contains",
showClearButton : true,
width: 300,
dataSource : tradeSkuDataSource,
displayExpr: 'tradeSku',
valueExpr: 'skuId',
onValueChanged: function() {
let claimDataSource = Fse.Data.newDataSource(
{ object: 'TPM.TradeClaims', keyField: 'claimId', paginate: true, pageSize: 50, objectParams: instance.getObjectParams() }
)
instance.dataGrid.option( 'dataSource', claimDataSource );
},
placeholder: '-- All Skus --',
showClearButton: true,
useItemTextAsTitle: true,
},
},
{
widget: 'dxSelectBox',
location: 'before',
options: {
elementAttr: { id : 'timeFrameSelectBox' },
width: 200,
items: timeFrameItems,
displayExpr: 'text',
valueExpr: 'id',
value: timeFrameItems[1].id,
onValueChanged: function( args ) {
let claimDataSource = Fse.Data.newDataSource(
{ object: 'TPM.TradeClaims', keyField: 'claimId', paginate: true, pageSize: 50, objectParams: instance.getObjectParams() }
)
instance.dataGrid.option( 'dataSource', claimDataSource );
},
},
},
{
widget: 'dxButton',
location: 'after',
options: {
text: 'New Claim',
},
onClick: function( e ) {
if( instance.partnerType == 'OPR' ) {
let sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", {
app : 'OPR.portfolio',
tab : 'tpm',
operatorId : instance.partnerId,
operatorTk : instance.partnerTk
})
Fse.TPM.newClaim( { partnerType: instance.partnerType, partnerId: instance.partnerId, returnURL: sReturnURL } );
} else {
let sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", {
app : 'CDR.portfolio',
tab : 'tpm',
cdr_recordId : instance.partnerId,
cdr_recordTk : instance.partnerTk
})
Fse.TPM.newClaim({ partnerType: instance.partnerType, partnerId : instance.partnerId, enterAs : 'Deduction', returnURL : sReturnURL } );
}
}
},{
location : "after", widget : "dxButton", options : {
type : "normal",
icon :"help",
hint : "View Help",
onClick : function( e ) {
Fse.Portal.showQuickHelp( "PartnerTradeClaims" );
}
}
}
]
}).dxToolbar( 'instance' );
if( instance.partnerType == 'CDR' ) {
instance.toolbar.option( 'items[1].options.visible', false );
}
return instance.toolbar.element();
}
TradeClaims.prototype.createDataGrid = function() {
let instance = this;
if( instance.dataGrid ) {
instance.dataGrid.element().remove();
instance.dataGrid = null;
}
const appDataURL = $( '#appDataURL' ).attr( 'href' );
let claimDataSource = Fse.Data.newDataSource({
object: 'TPM.tradeClaims', paginate: true, pageSize: 50, objectParams: { partnerId: this.partnerId, partnerType: this.partnerType, timeframe: 'TY' },
});
/*const claimDataSource = Fse.Data.createDataSource({
customStore: {
dataURL: appDataURL,
object: 'TPM.tradeClaims',
objectParams: { partnerId: this.partnerId, partnerType: this.partnerType, timeframe: 'TY' }
}
});*/
instance.dataGrid = $( '
' ).dxDataGrid( {
dataSource: claimDataSource,
showBorders: false,
filterRow : { visible : true },
headerFilter : { visible : true },
scrolling : { mode : "virtual" },
rowAlternationEnabled : true,
columns: [
{ dataField: 'claimDate', dataType: 'date' },
{ dataField: 'assignedContractNbr', caption: 'Contract',
cellTemplate: function( container, options ) {
container.append( options.data.assignedContractNbr + ' - ' + options.data.description );
},
calculateFilterExpression: function( filterValue, selectedFilterOperation ) {
return [
["assignedContractNbr", "contains", filterValue],
"or",
["description", "contains", filterValue]
];
}
},
{ dataField: 'claimantName', caption: 'Claimant',
cellTemplate: function( container, options ) {
container.append( options.data.claimantName + '
INV: ' + options.data.claimInvoice );
},
calculateFilterExpression: function( filterValue, selectedFilterOperation ) {
return [
["claimantName", "contains", filterValue],
"or",
["claimInvoice", "contains", filterValue]
];
}
},
{ dataField: 'tradeCases', caption: 'Trade Cases', dataType: 'number', format: { type: 'fixedPoint', precision: 0 } },
{ dataField: 'tradeDollars', caption: 'Trade Dollars', dataType: 'number', format: { type: 'currency', precision: 2 } },
{ width: '30', name: 'claimActions',
type: 'buttons',
buttons: [{
template: function( data ) {
let button = $( '' ).addClass( 'dx-icon-overflow' ).css( { 'display' : 'inline-block', 'cursor' : 'pointer' } );
return button;
}
}]
},
],
onCellClick: function( cce ) {
const data = cce.data;
if( cce.column.name === 'claimActions' && data.claimId > 0 ) {
let items = [
{ text: 'View', actionCode: 'view' },
{ text: 'View ePod', actionCode: 'viewEPods' },
{ text: 'View Files', actionCode: 'viewFiles' },
{ text: 'View Tasks', actionCode: 'viewTasks' },
{ text: 'View Summary', actionCode: 'viewSummary' },
{ text: 'View Details', actionCode: 'viewDetails' },
{ text: 'View Locations', actionCode: 'viewLocations' },
]
if( data.checkIssued == 'Y' ) {
items.push( { text: 'View Check', actionCode: 'viewCheck'} );
}
let sDataURL = $("link#PortalDocRootURL").attr("href");
$( '
' ).dxContextMenu({
items: items,
hideOnOutsideClick: true,
onHidden: function( cme ) {
cme.component.element().remove();
cme.component.dispose();
},
onItemClick: function( cme ) {
if( cme.itemData.actionCode ) {
let claimURL = '';
switch( cme.itemData.actionCode ) {
case 'view':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId;
window.open( claimURL, '_blank' );
break;
case 'viewEPods':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=manifest';
window.open( claimURL, '_blank' );
break;
case 'viewFiles':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=files';
window.open( claimURL, '_blank' );
break;
case 'viewTasks':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=tasks';
window.open( claimURL, '_blank' );
break;
case 'viewSummary':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=summary';
window.open( claimURL, '_blank' );
break;
case 'viewDetails':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=details';
window.open( claimURL, '_blank' );
break;
case 'viewLocations':
claimURL = sDataURL + '/apps/TPM/index.cfm?view=claim&claimId=' + data.claimId + '&tab=locations';
window.open( claimURL, '_blank' );
break;
case 'viewCheck':
Fse.TPM.showCheckRequestDialog( data.claimId, 'VIEW' );
break;
}
}
cme.component.hide();
},
target: cce.cellElement,
}).appendTo( 'body' ).dxContextMenu( 'show' );
}
},
masterDetail: {
enabled: true,
template( container, options ) {
const currentData = options.data;
console.log( currentData );
let claimDataSource2 = Fse.Data.newDataSource({
object: 'TPM.tradeClaims2', paginate: true, pageSize: 50, objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType, timeframe: currentData.timeframe, claimId: currentData.claimId },
});
/*const claimDataSource2 = Fse.Data.createDataSource({
customStore: {
dataURL: appDataURL,
object: 'TPM.tradeClaims2',
objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType, timeframe: currentData.timeframe, claimId: currentData.claimId }
}
});*/
$( '
' ).dxDataGrid({
dataSource: claimDataSource2,
columnAutoWidth: true,
showBorders: true,
columns: [
{ dataField: 'distributor' },
{ name: 'period', caption: 'Period',
cellTemplate: function( container, options ) {
var formattedFirstDate = DevExpress.localization.formatDate( new Date( options.data.firstDate ), "MM/dd/yyyy" );
var formattedLastDate = DevExpress.localization.formatDate( new Date( options.data.lastDate ), "MM/dd/yyyy" );
container.append( formattedFirstDate + ' - ' + formattedLastDate );
},
},
{ dataField: 'tradeCases', caption: 'Trade Cases', dataType: 'number', format: { type: 'fixedPoint', precision: 0 } },
{ dataField: 'tradeDollars', caption: 'Trade Dollars', dataType: 'number', format: { type: 'currency', precision: 2 } }
],
}).appendTo( container );
}
},
summary: {
totalItems: [
{ column: 'tradeCases', summaryType: 'sum',
customizeText( itemInfo ) {
var formattedValue = DevExpress.localization.formatNumber( itemInfo.value, {
type: 'fixedPoint',
precision: 0
});
return `Total Cases: ${ formattedValue }`;
}
},
{ column: 'tradeDollars', summaryType: 'sum', valueFormat: 'currency',
customizeText( itemInfo ) {
var formattedCurrency = DevExpress.localization.formatNumber( itemInfo.value, {
type: 'currency',
precision: 2,
currency: 'USD'
});
return `Total Dollars: ${ formattedCurrency }`;
}
}
],
},
}).dxDataGrid( 'instance' );
return instance.dataGrid.element();
}
TradeClaims.prototype.getObjectParams = function() {
let parameters = {};
parameters.partnerId = this.partnerId;
parameters.partnerType = this.partnerType;
let agreement = $( '#agreementSelectBox' ).dxSelectBox( 'instance' ).option( 'value' );
let distributor = $( '#distributorClaimantSelectBox' ).dxSelectBox( 'instance' ).option( 'value' );
let skuId = $( '#tradeSkuSelectBox' ).dxSelectBox( 'instance' ).option( 'value' );
let timeframe = $( '#timeFrameSelectBox' ).dxSelectBox( 'instance' ).option( 'value' );
if( agreement ) {
parameters.agreement = agreement;
}
if( distributor ) {
parameters.distributor = distributor;
}
if( skuId ) {
parameters.skuId = skuId;
}
if( timeframe ) {
parameters.timeframe = timeframe;
}
return parameters;
}
TradeClaims.prototype.checkAndDisableSummary = function() {
let instance = this;
let contractScopeDataSource = Fse.Data.newDataSource( {
object : "TPM.tradeContractScope", objectParams : { partnerId : instance.partnerId, partnerType: instance.partnerType },
});
contractScopeDataSource.load().done( function( data ) {
if( data.length = 0 ) {
let skuSummaryCheckBox = $( '#skuSummaryCheckBox' ).dxCheckBox( 'instance' );
skuSummaryCheckBox.option( 'disabled', true );
let distributorSummaryCheckBox = $( '#distributorSummaryCheckBox' ).dxCheckBox( 'instance' );
distributorSummaryCheckBox.option( 'disabled', true );
}
})
}