TradeAgreements = function( options ) { let instance = this; //instance.payableData = $.extend( true, {}, options ); instance.partnerType = options.partnerType; instance.partnerId = options.partnerId; instance.partnerTk = Math.floor( 10191817 * Math.sqrt( instance.partnerId * Math.log10( instance.partnerId ) ) ); this.rootElement = null; } TradeAgreements.prototype.constructor = TradeAgreements; TradeAgreements.prototype.element = function() { let instance = this; if( instance.rootElement ) { return instance.rootElement } instance.rootElement = $( '
' ); instance.createToolbar(); instance.createDataGrid( 'active' ); instance.rootElement.append( instance.toolbar.element().css( { 'margin' : '5px', 'padding-right' : '10px' } ) ); instance.rootElement.append( instance.dataGrid.element() ); return instance.rootElement; } TradeAgreements.prototype.createToolbar = function() { let instance = this; let agreementTypes = [ { id: 'active', text: 'Active Agreements' }, { id: 'expired', text: 'Expired Agreements' }, { id: 'all', text: 'All Agreements' } ] let tabs = [ { widget: 'dxSelectBox', location: 'after', options: { width: 200, items: agreementTypes, displayExpr: 'text', valueExpr: 'id', value: agreementTypes[2].id, onValueChanged: function( args ) { let agreementDataSource = Fse.Data.newDataSource( { object: 'TPM.TradeAgreements', keyField: 'contractId', paginate: true, pageSize: 50, objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType, agreementType: args.value } } ) instance.dataGrid.option( 'dataSource', agreementDataSource ); }, }, }, { widget: 'dxButton', location: 'after', options: { text: 'New Contract', }, onClick: function( e ) { let sReturnURL = ''; if( instance.partnerType == 'OPR' ) { //console.log( 'OPR Here'); sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", { app : 'OPR.portfolio', tab : 'tpm', operatorId : instance.partnerId, operatorTk : instance.partnerTk }) //sPartnerURL = $("link#PortalDocRootURL").attr("href") + '/apps/OPR/index.cfm?tab=tpm'; } else { //console.log( 'CDR Here'); sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", { app : 'CDR.portfolio', tab : 'tpm', cdr_recordId : instance.partnerId, cdr_recordTk : instance.partnerTk }) //sPartnerURL = $("link#PortalDocRootURL").attr("href") + '/apps/102/details.cfm?distributorId=' + instance.partnerId + '&distributorTk=' + instance.partnerTk + '&tab=tpm'; } Fse.TPM.newPartnerRequest( instance.partnerType, instance.partnerId, sReturnURL ); } } ] if( Fse.Portal.appConfiguration.STP.ownerType == "MFR" ) { tabs.push( { 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 } ); //sPartnerURL = $("link#PortalDocRootURL").attr("href") + '/apps/OPR/index.cfm?tab=tpm&tpmTab='; } 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: 'CDR', partnerId : instance.partnerId, enterAs : 'Deduction', returnURL : sReturnURL } ); //sPartnerURL = $("link#PortalDocRootURL").attr("href") + '/apps/102/details.cfm?distributorId=' + instance.partnerId + '&distributorTk=&tab=tpm&tpmTab='; } } } ) } tabs.push( { location : "after", widget : "dxButton", options : { type : "normal", icon :"help", hint : "View Help", onClick : function( e ) { Fse.Portal.showQuickHelp( "PartnerTradeAgreements" ); } } } ) instance.toolbar = $( '
' ).dxToolbar({ items: tabs }).dxToolbar( 'instance' ); return instance.toolbar.element(); } TradeAgreements.prototype.createDataGrid = function() { let instance = this; if( instance.dataGrid ) { instance.dataGrid.element().remove(); instance.dataGrid = null; } const appDataURL = $( '#appDataURL' ).attr( 'href' ); /*const agreementDataSource = Fse.Data.createDataSource({ customStore: { dataURL: appDataURL, object: 'TPM.tradeAgreements', objectParams: { partnerId: this.partnerId, partnerType: this.partnerType } } });*/ let agreementDataSource = Fse.Data.newDataSource( { object: 'TPM.TradeAgreements', keyField: 'contractId', paginate: true, pageSize: 50, objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType } } ) let colItems = [ { dataField: 'description', width: '300' }, { dataField: 'startDate', dataType: 'date', caption: 'Start' }, { dataField: 'endDate', dataType: 'date', caption: 'End' }, { dataField: 'renewals' }, { dataField: 'totalEstimatedTrade', dataType: 'number', format: 'currency', caption: 'Est. Trade' }, { dataField: 'claimCount', title: '# Claims', cellTemplate: function( container, options ) { if( options.data.claimCount > 0 ) { //$( '' ).html( options.data.claimCount ).appendTo( container ); //let sClaimsURL = Fse.Util.updateURL( sPartnerClaimsURL, { tab : "claims", urlParams : "tpmTab=tpm-claim&ridf=" + e.row.data.requestId }); $( '' ).append( options.data.claimCount ).attr( 'onclick', 'TradeAgreements.prototype.goToTab( 2 );' ).appendTo( container ).css( 'cursor', 'pointer' ); } else { $( '' ).html( '0' ).appendTo( container ); } } }, { dataField: 'status' }, ]; if( Fse.Portal.appConfiguration.STP.ownerType == "BRO" ) { colItems.unshift({ dataField: 'mfrName', caption: 'Manufacturer' }) } instance.dataGrid = $( '
' ).dxDataGrid({ dataSource: agreementDataSource, showBorders: false, allowColumnResizing: true, columns: colItems, filterRow : { visible : true }, headerFilter : { visible : true }, masterDetail: { enabled: true, template( container, options ) { const currentData = options.data; /*const agreementDataSource2 = Fse.Data.createDataSource({ customStore: { dataURL: appDataURL, object: 'TPM.tradeAgreements2', objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType, contractId: currentData.contractId } } });*/ let agreementDataSource2 = Fse.Data.newDataSource( { object: 'TPM.TradeAgreements2', keyField: 'requestId', paginate: true, pageSize: 50, objectParams: { partnerId: instance.partnerId, partnerType: instance.partnerType, contractId: currentData.contractId } } ) $( '
' ).dxDataGrid({ dataSource: agreementDataSource2, columnAutoWidth: true, showBorders: true, allowColumnResizing: true, columns: [ { dataField: 'chainSequence', caption: 'Version', cellTemplate: function( container, options ) { let promoNbr = options.data.promoNbr; let assignedContractNbr = options.data.assignedContractNbr; let chainSequence = options.data.chainSequence; let versionNbr = ''; if( promoNbr.split( '.' ).length > 1 ) { versionNbr = promoNbr.replace( assignedContractNbr + '.', '' ); } else if( typeof chainSequence === 'number' ) { versionNbr = chainSequence } else { versionNbr = assignedContractNbr; } container.append( versionNbr ); }, }, { dataField: 'description', caption: 'Version Description', width: '300' }, { dataField: 'termStart', caption: 'Start', dataType: 'date' }, { dataField: 'termEnd', caption: 'End', dataType: 'date' }, { dataField: 'totalEstimatedTrade', dataType: 'number', format: 'currency', caption: 'Est. Cost' }, { dataField: 'claimCount', title: '# Claims' }, { dataField: 'source' }, { dataField: 'status' }, { width: '30', name: 'agreementActions', 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; //console.log( data ); if( cce.column.name === 'agreementActions' && data.requestId > 0 ) { let items = [ { text: 'View', actionCode: 'viewRequest' }, ]; if( Fse.Portal.appConfiguration.STP.ownerType != "BRO" ) { items.push( { text: 'Compare', actionCode: 'compare' } ); } if( data.status == 'APPROVED' && data.lastInTheChain == 'true' ) { let todayDate = new Date(); let endDate = new Date( Date.parse( data.endDate ) ); if( endDate >= todayDate ) { if( Fse.Portal.checkPermission( "TradeManagementAdmin" ) && Fse.Portal.appConfiguration.STP.ownerType != "BRO" ) { items.push( { text: 'Correct', actionCode: 'correct' } ); } items.push( { text: 'Revise', actionCode: 'revise' } ); } items.push( { text: 'Renew', actionCode: 'renew' } ); } else if( data.status == 'DRAFT' ) { items.push( { text: 'Edit', actionCode: 'edit' } ); } if( data.status == 'APPROVED' ) { items.push( { text: 'Agreement PDF', actionCode: 'agreementPDF' } ); items.push( { text: 'Email Agreement PDF', actionCode: 'emailAgreementPDF' } ); if( data.claimCount > 0 ) { items.push( { text: 'View Claims', actionCode: 'viewClaims' } ); } if( Fse.Portal.checkPermission( "TradeManagementAdmin" ) && Fse.Portal.appConfiguration.STP.ownerType != "BRO" ) { if( ( data.paymentMethod == 'BB' && data.payableTo == data.primaryPartnerType ) || ( data.payableTo != data.primaryPartnerType ) ) { items.push( { text: 'Process Claim', actionCode: 'processClaim' } ); } items.push( { text: 'Export', actionCode: 'export' } ); } } if( ( data.status == "DRAFT" || data.status == "REJECTED" )|| ( Fse.Portal.checkPermission( "TradeManagementDeleteApprovedAgreements" ) && data.status == "APPROVED" && data.claimCount == 0 && data.lastInTheChain ) ) { items.push( { text: 'Delete', actionCode: 'delete' } ); } /*if( Fse.Portal.checkPermission( "TradeManagementDeleteApprovedAgreements" ) && data.status == "APPROVED" && data.claimCount == 0 && data.lastInTheChain ) { items.push( { text: 'Delete', actionCode: 'delete' } ); }*/ if( Fse.Portal.checkPermission( "TradeManagementAdmin" ) && data.contractId > 0 && data.claimCount > 0 ) { items.push( { text: 'Audit Diary', actionCode: 'auditDiary' } ); } if( Fse.Portal.checkPermission( "TradeManagementAgreementSequencing" ) && data.externalAgreement != 'Y' ) { items.push( { text: 'Version Sequencing...', actionCode: 'versionSequence' } ); } if( Fse.Portal.checkPermission( "TradeManagementAdminEdit" ) && data.status == 'APPROVED' ) { items.push( { text: 'Admin Edit', actionCode: 'adminEdit' } ); } //let sReturnURL = $("link#PortalDocRootURL").attr("href") + '/apps/OPR/index.cfm?operatorId=' + data.primaryPartnerId + '&operatorTk=' + data.partnerTk + 'tab=tpm'; //let sReturnURL = $("link#PortalDocRootURL").attr("href") + '/index.cfm?app=OPR.portfolio'; let sReturnURL = ''; if( instance.partnerType == 'OPR' ) { sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", { app : 'OPR.portfolio', tab : 'tpm', operatorId : instance.partnerId, operatorTk : instance.partnerTk }) } else { sReturnURL = Fse.Util.updateURL( $("link#PortalDocRootURL").attr( "href" ) + "/index.cfm", { app : 'CDR.portfolio', tab : 'tpm', cdr_recordId : instance.partnerId, cdr_recordTk : instance.partnerTk }) } $( '
' ).dxContextMenu( { items: items, hideOnOutsideClick: true, onHidden: function( cme ) { cme.component.element().remove(); cme.component.dispose(); }, onItemClick: function( cme ) { if( cme.itemData.actionCode ) { let _agreementURL = $("link#PortalDocRootURL").attr("href") + '/public/agreementPDF.cfm?r=' + data.requestId + '&t=' + data.requestTk + '&fileName=' + encodeURIComponent( data.assignedContractNbr + '.pdf' ); switch( cme.itemData.actionCode ) { case 'viewRequest': Fse.TPM.viewRequest( data.requestId ); break; case 'compare': let prevVersionReqId = 0; if( data.sourceRequestId > 0 ) { prevVersionReqId = data.sourceRequestId; } Fse.TPM.compare( { requestId: data.requestId, partnerType: data.payableTo, compareRequestId: prevVersionReqId, returnURL: sReturnURL } ); break; case 'correct': case 'edit': let _editURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?view=request&requestId=' + data.requestId + '&tpmAction=EDIT&returnURL=' + encodeURIComponent( sReturnURL ); //window.open( _editURL, '_blank' ); window.location.href = _editURL; break; case 'revise': let _reviseURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?view=directEntry&requestId=' + data.requestId + '&tpmAction=REVISE&returnURL=' + encodeURIComponent( sReturnURL ); //window.open( _reviseURL, '_blank' ); window.location.href = _reviseURL; break; case 'renew': let _renewURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?view=directEntry&requestId=' + data.requestId + '&tpmAction=RENEW&returnURL=' + encodeURIComponent( sReturnURL ); //window.open( _renewURL, '_blank' ); window.location.href = _renewURL; break; case 'agreementPDF': window.open( _agreementURL, '_blank' ); //window.location.href = _agreementURL; break; case 'emailAgreementPDF': // Fse.Portal.showEmailDialog( null, _agreementURL ); { let es = new EmailSender( { subject : "Trade Agreement PDF", attachmentLinks : [ { text : "Trade Agreement PDF", href : _agreementURL } ], trackingCode : "TPM061" }); es.show(); } break; case 'viewClaims': //let _viewClaimURL = $("link#PortalDocRootURL").attr("href") + '/apps/OPR/index.cfm?do=gotoMyCustomer&operatorId=' + data.primaryPartnerId + '&operatorTk=' + data.primaryPartnerType; //window.open( _viewClaimURL, '_blank' ); TradeAgreements.prototype.goToTab( 2 ); break; case 'processClaim': if( data.paymentMethod == 'BB' && data.payableTo == data.primaryPartnerType ) { Fse.TPM.newClaim( { requestId: data.requestId, partnerType: data.primaryPartnerType, partnerId: data.primaryPartnerId, returnURL: sReturnURL } ); } else { Fse.TPM.newClaim( { requestId: data.requestId, partnerType: data.payableTo, returnURL: sReturnURL } ); } break; case 'export': let _exportURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?ajax=agreementExport&mode=direct&requestId=' + data.requestId; //window.open( _exportURL, '_blank' ); window.location.href = _exportURL; break; case 'auditDiary': Fse.Portal.openWebLog( 'TPM', 'TMT', data.contractId, 'Contract Notes' ); break; case 'versionSequence': let _versionSequenceURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?view=agreementMaintenance&contractId=' + data.contractId + '&returnURL=' + encodeURIComponent( sReturnURL ); //window.open( _versionSequenceURL, '_blank' ); window.location.href = _versionSequenceURL; break; case 'adminEdit': let _adminEditURL = $("link#PortalDocRootURL").attr("href") + '/apps/TPM/index.cfm?view=request&requestId=' + data.requestId + '&tpmAction=EDIT&returnURL=' + encodeURIComponent( sReturnURL ) + '&adminEdit=true'; //window.open( _adminEditURL, '_blank' ); window.location.href = _adminEditURL; break; case 'delete': //alert( 'Hello World' ); instance.deleteRequest( data.requestId ); break; } } cme.component.hide(); }, target: cce.cellElement, }).appendTo( 'body' ).dxContextMenu( 'show' ); } }, }).appendTo( container ); } } }).dxDataGrid( 'instance' ); return instance.dataGrid.element(); } TradeAgreements.prototype.deleteRequest = function( nRequestId ) { let instance = this; const loadPanel = $("
").dxLoadPanel( { message : "Deleting, please wait...", }).appendTo( "body" ).dxLoadPanel( "instance" ); let d = $.Deferred(); if( confirm( 'Delete Request?' ) ) { loadPanel.show(); var deleteURL = $("link#PortalDocRootURL").attr("href") + "/apps/TPM/index.cfm?do=deleteRequest"; $.ajax({ url: deleteURL, method: 'POST', data: { requestId: nRequestId }, }).done( function( e ) { d.resolve( e ); loadPanel.hide(); instance.dataGrid.refresh(); }).fail( function() { console.log( 'failed' ); }) } return d; } TradeAgreements.prototype.goToTab = function( tabIndex ) { let tabsInstance = $( '#tradeTabs' ).dxTabPanel( 'instance' ); tabsInstance.option( 'selectedIndex', tabIndex ); }