Untitled
unknown
plain_text
3 years ago
37 kB
4
Indexable
/** * @description : * @author : Mady COLY * @group : * @last modified on : 10-07-2021 * @last modified by : ChangeMeIn@UserSettingsUnder.SFDoc **/ public without sharing class CEP_UTL_StatePerformanceCheck { private static Set<String> pointFieldSet = new Set<String>{ 'Id', 'Name', 'Key__c', 'CurrentAsset__c', 'CurrentAsset__r.Account.VATNumber__c', 'CurrentAsset__r.Status', 'RecordTypeId', 'RecordType.Name', 'CurrentSupply__r.CompanyDivision__r.Name', 'CurrentSupply__c', 'CurrentSupply__r.Name', 'CurrentSupply__r.Key__c', 'CurrentSupply__r.Status__c', 'CurrentSupply__r.CompanyDivision__c', 'CurrentSupply__r.Product__c', 'CurrentSupply__r.Product__r.Name', 'CurrentSupply__r.Account__c', 'CurrentSupply__r.Account__r.Name', 'CurrentSupply__r.Account__r.Key__c', 'CurrentSupply__r.ContractAccount__r.Account__r.Name', 'CurrentSupply__r.ContractAccount__c', 'CurrentSupply__r.ContractAccount__r.Name', 'CurrentSupply__r.ContractAccount__r.Key__c', 'CurrentSupply__r.ServiceSite__c', 'CurrentSupply__r.ServiceSite__r.Name', 'CurrentSupply__r.ServiceSite__r.SiteAddressKey__c', 'CurrentSupply__r.ServiceSite__r.Account__c', 'CurrentSupply__r.ServiceSite__r.Account__r.Name', 'CurrentSupply__r.ServiceSite__r.SiteAddress__c', 'CurrentSupply__r.Contract__c', 'CurrentSupply__r.Contract__r.ContractNumber', 'CurrentSupply__r.Contract__r.AccountId', 'CurrentSupply__r.Contract__r.Account.Name','Distributor__c', 'CurrentAsset__r.AccountId','CurrentAsset__r.SupplyEnergyService__c', 'CurrentAsset__r.Account.Segment__c', 'CurrentAsset__r.Account.Name', 'CurrentAsset__r.Account.JointVenture__r.Name' }; private String opportunityId; private String accountId; private String vatNumberUscente; public static final CEP_QR_ContestablePod podContendibiliSrv = CEP_QR_ContestablePod.getInstance(); public static CEP_UTL_StatePerformanceCheck getInstance() { return (CEP_UTL_StatePerformanceCheck) ServiceLocator.getInstance(CEP_UTL_StatePerformanceCheck.class); } public List<String> statoPrestazionePreValorizzazione(String podPdr, String commodity,String accountId, String opportunityId) { System.debug('CEP_UTL_StatePerformanceCheck.statoPrestazionePreValorizzazione'); if(String.isBlank(podPdr)) { throw new WrtsException(System.Label.AtLeastOneQueryFilterMustBeSet); } String text = podPdr; Set<String> fieldSet = pointFieldSet; this.opportunityId = opportunityId; this.accountId = accountId; String query = 'SELECT ' + String.join(new List<String>(fieldSet), ', ') + ', CurrentAsset__r.Account.FiscalCode__c, CurrentAsset__r.Account.Type, CurrentAsset__r.Account.RecordType.Name, CurrentAsset__r.Account.CompanyChannel__c, CurrentAsset__r.Account.Key__c ' +' FROM ServicePoint__c ' +' WHERE Key__c = \'' + text + '\''; List<ServicePoint__c> servicePoints; List<ContestablePod__c> podContendibili = new List<ContestablePod__c>(); List<PODDistributorAlignment__c> pda = new List<PODDistributorAlignment__c>(); if(Schema.SObjectType.ServicePoint__c.isAccessible()) { servicePoints= Database.query(query); System.debug('POD SERVICE POINT--list : ' + servicePoints); } String status = ''; List<CEP_StatePerformance__mdt> statePerformances = new List<CEP_StatePerformance__mdt>(); List<String> prestazioni = new List<String>(); System.debug('*** accountId: '+accountId); Account acc = AccountQueries.getInstance().findAccount(accountId); String accountCfEntrante = acc.FiscalCode__c; String accountVatNumber = acc.VATNumber__c; /* if('Reseller'.equalsIgnoreCase(acc.Segment__c)){ accountCfEntrante = acc.Key__c; } */ String clientType = acc.Type!=null && String.isNotBlank(acc.Type) ? acc.Type : acc.RecordType.Name; String recordTypeName = acc.RecordTypeDeveloperName__c; System.debug('71'); switch on commodity{ when 'Electric' { System.debug('Electric commodity'); prestazioni = this.manageEleCommodity(servicePoints,podPdr,accountCfEntrante,clientType, accountVatNumber, this.opportunityId); } when 'Gas'{ System.debug('Gas commodity'); prestazioni = this.manageGasCommodity(servicePoints,accountCfEntrante,clientType, accountVatNumber, this.opportunityId); } when else { return null; } } //RIMUOVE I VALORI DI VOLTURA PER CLIENTI RESELLER if(recordTypeName == 'CEP_RT_Reseller' || recordTypeName == 'CEP_RT_ResellerEndCustomer'){ if(prestazioni.contains('Voltura')) prestazioni.remove(prestazioni.indexOf('Voltura')); if(prestazioni.contains('Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); if(prestazioni.contains('Voltura Fusione, Incorporazione')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione, Incorporazione')); if(prestazioni.contains('Voltura Per Incorporazione Societaria')) prestazioni.remove(prestazioni.indexOf('Voltura Per Incorporazione Societaria')); if(prestazioni.contains('Voltura Beneficiario Servizi Energetici')) prestazioni.remove(prestazioni.indexOf('Voltura Beneficiario Servizi Energetici')); if(prestazioni.contains('Voltura Gestore Servizi Energetici')) prestazioni.remove(prestazioni.indexOf('Voltura Gestore Servizi Energetici')); } // ELIMINA I VALORI PERFORMANCE NON PREVISTI PER LA WAVE 1 /*if(Constants.getAllConstants().ACTIVE_PERFORMANCE_VALUE_WAVE_1){ prestazioni = this.filterPerformanceValuesForWave1(prestazioni,commodity); } */ return prestazioni; } public List<String> manageGasCommodity(List<ServicePoint__c> servicePoints, String accountCfEntrante, String clientType,String vatNumber, String opportunityId){ System.debug('In manageGasCommodity 114'); List<ContestablePod__c> podContendibili = new List<ContestablePod__c>(); List<PODDistributorAlignment__c> pda = new List<PODDistributorAlignment__c>(); List<PermissionSetAssignment> prs=[SELECT PermissionSetId FROM PermissionSetAssignment WHERE PermissionSet.Name IN ('CEP_LargeSme_AEMA','CEP_LargeSme_UE','CEP_LeadSmeLarge') AND AssigneeId =: UserInfo.getUserId() limit 1]; String status = ''; String accountIdAsset = ''; String accountCfUscente; String supplyEnergyService; String companyDivisionAsset; String accountNameAsset; String segment = ''; String accountTypeUscente; String accountTypeEntrante = clientType; //NTT W3 String brand; // List<CEP_StatePerformance__mdt> statePerformances = new List<CEP_StatePerformance__mdt>(); List<String> prestazioni = new List<String>(); String CorrespondenceCFIncomingOutgoing = 'NO'; //non sempre, quando viene richiamato questo metodo, si ha l'opportunityId popolato //nei casi in cui è null è necessario controllarlo prima di effettuare la query //INC0000000057134 --> errore sulla verifica offertabilità Opportunity oppty; String accountNameOppty; String companyDivisionOppty; String recordTypeName; String opptySegment = ''; if(!String.isBlank(opportunityId)) { oppty = [SELECT Account.Name, Account.JointVenture__r.Name, Account.RecordTypeDeveloperName__c, Segment__c FROM Opportunity WHERE Id =: opportunityId]; accountNameOppty = oppty.Account.Name; companyDivisionOppty = oppty.Account.JointVenture__r.Name; recordTypeName = oppty.Account.RecordTypeDeveloperName__c; if(string.isNotBlank(oppty.Segment__c))opptySegment = oppty.Segment__c; } if(servicePoints.size()>0){ accountCfUscente = servicePoints[0].CurrentAsset__r.Account.FiscalCode__c; status = servicePoints[0].CurrentAsset__r.Status; accountIdAsset = servicePoints[0].CurrentAsset__r.AccountId; segment = servicePoints[0].CurrentAsset__r.Account.Segment__c; companyDivisionAsset = servicePoints[0].CurrentAsset__r.Account.JointVenture__r.Name; accountNameAsset = servicePoints[0].CurrentAsset__r.Account.Name; //NTT W3 brand = ServicePoints[0].CurrentAsset__r.Account.CompanyChannel__c; // CorrespondenceCFIncomingOutgoing = accountCfUscente != null && accountCfEntrante != null && accountCfEntrante == accountCfUscente ? 'SI' : 'NO'; supplyEnergyService = servicePoints[0].CurrentAsset__r.SupplyEnergyService__c; String accTypeTmp = servicePoints[0].CurrentAsset__r.Account.Type; String recTypeTmp = servicePoints[0].CurrentAsset__r.Account.RecordType.Name; accountTypeUscente = accTypeTmp!=null && String.isNotBlank(accTypeTmp) ? accTypeTmp : recTypeTmp; if(status == 'Attivo'){ statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('DB Acea',status,'Gas', CorrespondenceCFIncomingOutgoing, clientType); }else { statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('DB Acea',status,'Gas',clientType); } if(statePerformances.size()>0){ String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } else{ prestazioni.add('SWITCHING WIN'); prestazioni.add('Voltura Con Switching'); prestazioni.add('A40 - ATTIVAZIONE SOGGETTA ALLA DELIBERA 40/14'); prestazioni.add('A01 - ATTIVAZIONE NON SOGGETTA ALLA DELIBERA 40/14'); System.debug('Ser179'); // prestazioni.add('VOLTURA TITOLO 4'); // prestazioni.add('CAMBIO PRODOTTO'); } }else{ prestazioni.add('SWITCHING WIN'); prestazioni.add('Voltura Con Switching'); prestazioni.add('A40 - ATTIVAZIONE SOGGETTA ALLA DELIBERA 40/14'); prestazioni.add('A01 - ATTIVAZIONE NON SOGGETTA ALLA DELIBERA 40/14'); prestazioni.add('Attivazione Tecnica'); System.debug('Service Point nuovo190'); // prestazioni.add('VOLTURA TITOLO 4'); // prestazioni.add('CAMBIO PRODOTTO'); } System.debug('this.opportunityId >>> '+this.opportunityId); //if(prs!=null && prs.size()==1){ //valori gestiti da matrice CEP_StatePerformance__mdt //prestazioni.add('Voltura'); //prestazioni.add('Voltura Successione Mortis Causa'); //prestazioni.add('Voltura per Incorporazione Societaria'); //prestazioni.add('Voltura Titolo 4'); //prestazioni.add('Voltura Retroattiva o di recupero'); if((status=='Attivo')&&(this.accountId == accountIdAsset)){ prestazioni.add('Modifica Tipologia PDR'); } if(prs!=null && prs.size()==1){ if((status=='Attivo' || status=='Sospeso') && supplyEnergyService == 'SI' && servicePoints[0].CurrentAsset__r != null){ if(this.accountId == accountIdAsset){ prestazioni.add('Voltura Beneficiario Servizi Energetici'); }else{ prestazioni.add('Voltura Gestore Servizi Energetici'); } } } //NTT W3 //CONTROLLO SUL CANALE DELLO USER /* Id userId = userinfo.getUserId(); List<User> userInfo = [SELECT DefaultChannel__c, DefaultSubChannel__c FROM User WHERE Id = :userId LIMIT 1]; if(userInfo.size()>0){ String canale = userInfo[0].DefaultChannel__c; String sottoCanale = userInfo[0].DefaultSubChannel__c; if (canale == 'Punti fisici' && sottoCanale == 'Store WINDTRE') { if(prestazioni.contains('Cambio Prodotto') && brand == 'AE'){ prestazioni.remove(prestazioni.indexOf('Cambio Prodotto')); prestazioni.add('Cambio Prodotto Cross Brand'); } if(prestazioni.contains('Cambio Prodotto') && brand == 'W3'){ prestazioni.remove(prestazioni.indexOf('Cambio Prodotto')); prestazioni.add('Errore'); } } } */ // if(segment == 'Mass Market' && clientType == 'Organizzazione'){ if(prestazioni.contains('Voltura Successione Mortis Causa')){ prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); } } if(opptySegment != 'Mass Market'){ // if(segment != 'Mass Market'){ if(recordTypeName != 'CEP_RT_Reseller'){ if(prestazioni.contains('Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); if(prestazioni.contains(' Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf(' Voltura Successione Mortis Causa')); if((status =='Attivo' || status =='Sospeso') && companyDivisionAsset != companyDivisionOppty){ prestazioni.add('Voltura Con Switching'); if(prestazioni.contains('Voltura')) prestazioni.remove(prestazioni.indexOf('Voltura')); if(prestazioni.contains(' Voltura')) prestazioni.remove(prestazioni.indexOf(' Voltura')); if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains(' Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf(' Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf('Incorporazione')); if(prestazioni.contains(' Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); if(prestazioni.contains('Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf('Voltura Retroattiva')); if(prestazioni.contains(' Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf(' Voltura Retroattiva')); if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); if(prestazioni.contains(' Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf(' Voltura Tecnica')); } } else{ if((status =='Attivo' || status =='Sospeso') && accountNameAsset != accountNameOppty){ prestazioni.add('Voltura Con Switching'); if(prestazioni.contains('Voltura')) prestazioni.remove(prestazioni.indexOf('Voltura')); if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf('Incorporazione')); if(prestazioni.contains('Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf('Voltura Retroattiva')); if(prestazioni.contains(' Voltura')) prestazioni.remove(prestazioni.indexOf(' Voltura')); if(prestazioni.contains(' Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf(' Voltura Fusione\\')); if(prestazioni.contains(' Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); if(prestazioni.contains(' Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf(' Voltura Retroattiva')); if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); if(prestazioni.contains(' Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf(' Voltura Tecnica')); } } } if(segment == 'Mass Market'){ if(accountTypeUscente!=null && ((accountTypeEntrante.containsIgnoreCase('organizzazione') && !accountTypeUscente.containsIgnoreCase('organizzazione')) || (accountTypeUscente.containsIgnoreCase('organizzazione') && !accountTypeEntrante.containsIgnoreCase('organizzazione')))){ if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); } if(accountTypeUscente!=null && ((accountTypeEntrante.containsIgnoreCase('persona fisica') && !accountTypeUscente.containsIgnoreCase('persona fisica')) || (accountTypeUscente.containsIgnoreCase('persona fisica') && !accountTypeEntrante.containsIgnoreCase('persona fisica')))){ if(prestazioni.contains('Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); } } System.debug('segment = '+segment); System.debug('status2 = '+status); if( status=='Cessato'){ prestazioni.add('Attivazione Tecnica'); } return prestazioni; } public List<String> manageEleCommodity(List<ServicePoint__c> servicePoints, String pod, String accountCfEntrante, String clientType, String vatNumber, String opportunityId){ List<ContestablePod__c> podContendibili = new List<ContestablePod__c>(); List<PODDistributorAlignment__c> pda = new List<PODDistributorAlignment__c>(); //list<PermissionSetAssignment> prs=[SELECT PermissionSetId FROM PermissionSetAssignment WHERE PermissionSet.Name IN ('CEP_LargeSme_AEMA','CEP_LargeSme_UE','CEP_LeadSmeLarge') AND AssigneeId =: UserInfo.getUserId() limit 1]; String status = ''; String accountIdAsset = ''; String accountCfUscente; String accountTypeUscente; String accountTypeEntrante = clientType; String segment = ''; String companyDivisionAsset; String accountNameAsset; String CorrespondenceCFIncomingOutgoing = 'NO'; //NTT W3 String brand; // List<CEP_StatePerformance__mdt> statePerformances = new List<CEP_StatePerformance__mdt>(); List<String> prestazioni = new List<String>(); System.debug('Search in service points...'); //non sempre, quando viene richiamato questo metodo, si ha l'opportunityId popolato //nei casi in cui è null è necessario controllarlo prima di effettuare la query //INC0000000057134 --> errore sulla verifica offertabilità Opportunity oppty; String accountNameOppty; String companyDivisionOppty; String recordTypeName; String opptySegment = ''; if(!String.isBlank(opportunityId)) { oppty = [SELECT Account.Name, Account.JointVenture__r.Name, Account.RecordTypeDeveloperName__c, Segment__c,(select id FROM OpportunityServiceItems__r) FROM Opportunity WHERE Id =: opportunityId]; accountNameOppty = oppty.Account.Name; companyDivisionOppty = oppty.Account.JointVenture__r.Name; recordTypeName = oppty.Account.RecordTypeDeveloperName__c; if(string.isNotBlank(oppty.Segment__c))opptySegment = oppty.Segment__c; } // Il sistema cerca il punto sul DB Acea if(servicePoints.size()>0){ accountCfUscente = servicePoints[0].CurrentAsset__r.Account.FiscalCode__c; //GIO String jointAccountUscente; if(!String.isEmpty(servicePoints[0].CurrentAsset__c)){ String idCompany = servicePoints[0].CurrentAsset__r.Account.JointVenture__c; System.debug('*** idCompany: '+idCompany); List<CompanyDivision__c> ListJointAccountUscente = [Select id, JointVentureCode__c from CompanyDivision__c where id =: idCompany limit 1]; if(ListJointAccountUscente.size() > 0){ jointAccountUscente = ListJointAccountUscente[0].JointVentureCode__c; } } /* //gio se reseller ricerca per key__c dell'account sull'asset if('Reseller'.equalsIgnoreCase(servicePoints[0].CurrentAsset__r.Account.Segment__c)){ accountCfUscente = servicePoints[0].CurrentAsset__r.Account.Key__c; } */ String accTypeTmp = servicePoints[0].CurrentAsset__r.Account.Type; String recTypeTmp = servicePoints[0].CurrentAsset__r.Account.RecordType.Name; accountTypeUscente = accTypeTmp!=null && String.isNotBlank(accTypeTmp) ? accTypeTmp : recTypeTmp; //System.debug('service point field BusinessPartnerType__c ' + servicePoints[0].CurrentAsset__r.Account.BusinessPartnerType__c ); System.debug('Found service point ' + servicePoints[0].Id); status = servicePoints[0].CurrentAsset__r.Status; accountIdAsset = servicePoints[0].CurrentAsset__r.AccountId; segment = servicePoints[0].CurrentAsset__r.Account.Segment__c; vatNumberUscente = servicePoints[0].CurrentAsset__r.Account.VATNumber__c; companyDivisionAsset = servicePoints[0].CurrentAsset__r.Account.JointVenture__r.Name; accountNameAsset = servicePoints[0].CurrentAsset__r.Account.Name; //NTT W3 brand = ServicePoints[0].CurrentAsset__r.Account.CompanyChannel__c; // System.debug('Current service point status '+ status); // gio List<Account> accountEntrante = [SELECT Id, VATNumber__c, FiscalCode__c, JointVenture__r.JointVentureCode__c FROM Account WHERE FiscalCode__c =: accountCfEntrante LIMIT 1]; String jointAccountEntrante = accountEntrante[0].JointVenture__r.JointVentureCode__c; // System.debug('*** jointAccountEntrante: '+jointAccountEntrante+' *** jointAccountUscente: '+jointAccountUscente); if(!String.isEmpty(jointAccountUscente)){ CorrespondenceCFIncomingOutgoing = accountCfUscente != null && accountCfEntrante != null && jointAccountEntrante != null && jointAccountUscente != null && accountCfEntrante == accountCfUscente && jointAccountEntrante == jointAccountUscente ? 'SI' : 'NO'; }else{ CorrespondenceCFIncomingOutgoing = accountCfUscente != null && accountCfEntrante != null && accountCfEntrante == accountCfUscente ? 'SI' : 'NO'; } // Se lo trova e lo Stato DB è “Attivo” interroga la tabella per determinare la prestazione if(status == 'Attivo'){ statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('DB Acea',status,'Ele',CorrespondenceCFIncomingOutgoing,clientType); if(statePerformances.size()>0){ String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } String firstToSearch; String secondToSearch; //accountCfUscente = servicePoints[0].CurrentAsset__r.Account.FiscalCode__c; //ripristino il controllo sul cf uscente invece che sulla key uscente if(String.isNotBlank(accountCfEntrante)){ firstToSearch = accountCfEntrante; }else{ firstToSearch = vatNumber; } if(String.isNotBlank(accountCfUscente)){ secondToSearch = accountCfUscente; }else{ secondToSearch = vatNumberUscente; } if(firstToSearch == secondToSearch){ // probabile controparte commerciale. Vado a querare gli account List<Account> accountList = new List<Account>(); //List<Account> accountListCF = new List<Account>(); //gio NON mettere if per fare query sulle key__c perchè serve ad aggiungere solo la prestazione di Switching Win //if('Reseller'.equalsIgnoreCase(servicePoints[0].CurrentAsset__r.Account.Segment__c)){ // accountListCF = [SELECT Id, VATNumber__c, FiscalCode__c, JointVenture__r.JointVentureCode__c FROM Account WHERE Key__c IN(:accountCfEntrante, :accountCfUscente) LIMIT 2]; //}else{ List<Account> accountListCF = [SELECT Id, VATNumber__c, FiscalCode__c, JointVenture__r.JointVentureCode__c FROM Account WHERE FiscalCode__c IN(:firstToSearch, :secondToSearch) OR vatNumber__c IN(:firstToSearch, :secondToSearch) LIMIT 2]; //} for(Account account : accountListCF){ if(String.isNotBlank(account.FiscalCode__c)){ accountList.add(account); }else if(String.isNotBlank(account.VATNumber__c)) { accountList.add(account); } } System.debug('accountList = '+accountList); if(!accountList.isEmpty() && accountList.size()>=2 ){ if((accountList[0]?.JointVenture__r?.JointVentureCode__c != accountList[1]?.JointVenture__r?.JointVentureCode__c) && !prestazioni.contains('Switching Win')){ prestazioni.add('Switching Win'); } } } System.debug('prestazioni = '+prestazioni); } // Altrimenti cerca il punto sulla tabella dei POD Contendibili else{ System.debug('Search in POD CONTENDIBILI'); podContendibili = CEP_QR_ContestablePod.getInstance().getByPod(pod); // Se il punto è trovato if(podContendibili.size()>0){ System.debug('Found POD CONTENDIBILI ' + servicePoints[0].Id); status = podContendibili[0].CounterStatus__c; System.debug('Current service point status '+ status); statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('Pod Contendibili',status,'Ele',clientType); //e lo Stato Contendibile è censito in tabella if(statePerformances.size()>0){ // allora il sistema usa questo stato per determinare la prestazione String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } // Altrimenti se lo Stato Contendibile non è censito in tabella // possiamo avere 2 situazioni else{ statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('DB Acea',status,'Ele',clientType); // 1 - lo Stato DB è censito in tabella if(statePerformances.size()>0){ // allora il sistema usa lo Stato DB per determinare la prestazione String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } // 2 - lo Stato DB non è censito in tabella else{ // allora il sistema fa vedere tutte le prestazioni previste per la commodity ELE if(segment != 'Mass Market'){ prestazioni.add('Switching Win'); prestazioni.add('Voltura Con Switching'); prestazioni.add('Attivazione'); prestazioni.add('Subentro'); } // NOTA : sul documento per ora sono questi // inserire nella variabile eventuali altri stati } } } // Altrimenti se il punto non è stato trovato nei POD Contendibili // possiamo avere 2 situazioni else{ statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('DB Acea',status,'Ele',clientType); // 1 - lo Stato DB è censito in tabella if(statePerformances.size()>0){ // allora il sistema usa lo Stato DB per determinare la prestazione String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } // 2 - lo Stato DB non è censito in tabella else{ System.debug('senza ASSET 512'); // allora il sistema fa vedere tutte le prestazioni previste per la commodity ELE if(segment != 'Mass Market'){ prestazioni.add('Switching Win'); prestazioni.add('Voltura Con Switching'); prestazioni.add('Attivazione'); prestazioni.add('Subentro'); prestazioni.add('Attivazione Tecnica'); } } } } } // Altrimenti se il punto non è stato trovato sul DB Acea // cerca il punto sulla tabella dei POD Contendibili else{ System.debug('POD CONTENDIBILI 526'); podContendibili = podContendibiliSrv.getByPod(pod); // Se il punto è trovato if(podContendibili.size()>0){ status = podContendibili[0].CounterStatus__c; statePerformances = CEP_QR_StatePerformance.getInstance().getByOriginAndStatus('Pod Contendibili',status,'Ele',clientType); //e lo Stato Contendibile è censito in tabella if(statePerformances.size()>0){ // allora il sistema usa questo stato per determinare la prestazione String prestazione = ''; for(CEP_StatePerformance__mdt stpf : statePerformances){ prestazione = prestazione + stpf.Performance__c + ','; } prestazioni = prestazione.split(','); } // Altrimenti se lo Stato Contendibile non è censito in tabella else{ prestazioni.add('Switching Win'); prestazioni.add('Voltura Con Switching'); prestazioni.add('Attivazione'); prestazioni.add('Subentro'); //prestazioni.add('Voltura'); // prestazioni.add('Cambio Prodotto'); } } // Altrimenti se il punto non è stato trovato nemmeno sui POD Contendibili else{ System.debug('553'); prestazioni.add('Switching Win'); prestazioni.add('Voltura Con Switching'); prestazioni.add('Attivazione'); prestazioni.add('Subentro'); prestazioni.add('Attivazione Tecnica'); // prestazioni.add('Voltura Titolo 4'); // prestazioni.add('Cambio Prodotto'); } } //if(prs!=null && prs.size()==1){ //valori gestiti da matrice CEP_StatePerformance__mdt //prestazioni.add('Voltura'); //prestazioni.add('Voltura Successione Mortis Causa'); //prestazioni.add('Voltura per Incorporazione Societaria'); //prestazioni.add('Voltura Titolo 4'); //prestazioni.add('Voltura Retroattiva o di recupero'); //NTT W3 //CONTROLLO SUL CANALE DELLO USER Id userId = userinfo.getUserId(); List<User> userInfo = [SELECT DefaultChannel__c, DefaultSubChannel__c FROM User WHERE Id = :userId LIMIT 1]; if(userInfo.size()>0){ String canale = userInfo[0].DefaultChannel__c; String sottoCanale = userInfo[0].DefaultSubChannel__c; System.debug(canale); System.debug(sottoCanale); System.debug('Controllo 1'); if (canale == 'Punti fisici' && sottoCanale == 'Store WINDTRE') { System.debug('Controllo 2'); if(prestazioni.contains('Cambio Prodotto') && brand == 'AE'){ System.debug('Controllo 3'); prestazioni.remove(prestazioni.indexOf('Cambio Prodotto')); prestazioni.add('Cambio Prodotto Cross Brand'); } if(prestazioni.contains('Cambio Prodotto') && brand == 'W3'){ System.debug('Controllo 4'); prestazioni.remove(prestazioni.indexOf('Cambio Prodotto')); prestazioni.add('Errore'); } } } if((status=='Attivo' || status=='Sospeso') && this.accountId == accountIdAsset){ if(this.accountId!=null && [Select Segment__c FROM Account WHERE Id =: this.accountId].Segment__c != 'Mass Market'){ prestazioni.add('Cambio Uso'); } } if(segment == 'Mass Market' && clientType == 'Organizzazione'){ if(prestazioni.contains('Voltura Successione Mortis Causa')){ prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); } } if(opptySegment != 'Mass Market'){ //if(segment != 'Mass Market'){ if(prestazioni.contains('Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); if(recordTypeName != 'CEP_RT_Reseller'){ if((status =='Attivo' || status =='Sospeso') && companyDivisionAsset != companyDivisionOppty){ prestazioni.add('Voltura Con Switching'); System.debug('RIMUOVO LA VOLTURA TECNICA'); if(prestazioni.contains('Voltura')) prestazioni.remove(prestazioni.indexOf('Voltura')); if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf('Incorporazione')); if(prestazioni.contains('Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf('Voltura Retroattiva')); if(prestazioni.contains(' Voltura')) prestazioni.remove(prestazioni.indexOf(' Voltura')); if(prestazioni.contains(' Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf(' Voltura Fusione\\')); if(prestazioni.contains(' Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); if(prestazioni.contains(' Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf(' Voltura Retroattiva')); if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); if(prestazioni.contains(' Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf(' Voltura Tecnica')); } } else{ if((status =='Attivo' || status =='Sospeso') && accountNameAsset != accountNameOppty){ prestazioni.add('Voltura Con Switching'); if(prestazioni.contains('Voltura')) prestazioni.remove(prestazioni.indexOf('Voltura')); if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf('Incorporazione')); if(prestazioni.contains('Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf('Voltura Retroattiva')); if(prestazioni.contains(' Voltura')) prestazioni.remove(prestazioni.indexOf(' Voltura')); if(prestazioni.contains(' Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf(' Voltura Fusione\\')); if(prestazioni.contains(' Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); if(prestazioni.contains(' Voltura Retroattiva')) prestazioni.remove(prestazioni.indexOf(' Voltura Retroattiva')); if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); if(prestazioni.contains(' Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf(' Voltura Tecnica')); } } } if(segment == 'Mass Market'){ if(accountTypeUscente!=null && ((accountTypeEntrante.containsIgnoreCase('organizzazione') && !accountTypeUscente.containsIgnoreCase('organizzazione')) || (accountTypeUscente.containsIgnoreCase('organizzazione') && !accountTypeEntrante.containsIgnoreCase('organizzazione')))){ if(prestazioni.contains('Voltura Fusione\\')) prestazioni.remove(prestazioni.indexOf('Voltura Fusione\\')); if(prestazioni.contains('Incorporazione')) prestazioni.remove(prestazioni.indexOf(' Incorporazione')); } if(accountTypeUscente!=null && ((accountTypeEntrante.containsIgnoreCase('persona fisica') && !accountTypeUscente.containsIgnoreCase('persona fisica')) || (accountTypeUscente.containsIgnoreCase('persona fisica') && !accountTypeEntrante.containsIgnoreCase('persona fisica')))){ if(prestazioni.contains('Voltura Successione Mortis Causa')) prestazioni.remove(prestazioni.indexOf('Voltura Successione Mortis Causa')); } } System.debug('segment = '+segment); System.debug('status = '+status); if(status=='Cessato'){ prestazioni.add('Attivazione Tecnica'); } // rimuovo la Voltura Tecnica se ci sono altre osi di qualsiasi altro tipo if(oppty!= null && !oppty.OpportunityServiceItems__r.isEmpty() && segment == 'Mass Market'){ if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); if(prestazioni.contains(' Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf(' Voltura Tecnica')); } List<PermissionSetAssignment> prs=[SELECT PermissionSetId FROM PermissionSetAssignment WHERE PermissionSet.Name = 'CEP_CanViewVolturaTecnica' AND AssigneeId = :userId limit 1]; if(prs.size() == 0){ if(prestazioni.contains('Voltura Tecnica')) prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); } if(segment == 'Reseller' && prestazioni.contains('Voltura Tecnica')){ prestazioni.remove(prestazioni.indexOf('Voltura Tecnica')); } return prestazioni; } @TestVisible private List<String> filterPerformanceValuesForWave1(List<String> input, String commodity){ List<String> output = new List<String>(); if(commodity=='Electric'){ for(String s : input){ if(Constants.getAllConstants().PERFORMANCE_ELE_WAVE_1.contains(s)){ output.add(s); } } } if(commodity=='Gas'){ for(String s : input){ if(Constants.getAllConstants().PERFORMANCE_GAS_WAVE_1.contains(s)){ output.add(s); } } } return output; } /* @TestVisible private List<String> addPrestazioniPermissionSet(List<String> prestazioni){ List<PermissionSetAssignment> prs=[SELECT PermissionSetId FROM PermissionSetAssignment WHERE PermissionSet.Name = 'CEP_LargeUsers' AND AssigneeId = :UserInfo.getUserId() limit 1]; if(prs!=null && prs.size()==1){ prestazioni.add('Voltura Ordinaria'); prestazioni.add('Voltura Mortis causa'); prestazioni.add('Voltura per Incorporazione Societaria'); prestazioni.add('Voltura Titolo IV'); prestazioni.add('Voltura Retroattiva o di recupero'); } return prestazioni; }*/ }
Editor is loading...