Untitled
unknown
plain_text
4 years ago
124 kB
28
Indexable
public without sharing class CEP_LC_DedicatedProcessWizard {
private static final CEP_QR_AtecoTranscode atecoQr = CEP_QR_AtecoTranscode.getInstance();
private static final CEP_QR_IvaConfiguration ivaQr = CEP_QR_IvaConfiguration.getInstance();
private static final CEP_QR_Accisa accisaQr= CEP_QR_Accisa.getInstance();
private static final CEP_QR_CityRegistry cityRegistryQr = CEP_QR_CityRegistry.getInstance();
private static final CEP_QR_ClimaticZone climaticQr = CEP_QR_ClimaticZone.getInstance();
private static final CEP_QR_Taxes imposteQr = CEP_QR_Taxes.getInstance();
private static final CEP_QR_AdditionalRegional additionaQr =CEP_QR_AdditionalRegional.getInstance();
private static OpportunityServiceItemQueries osiQuery = OpportunityServiceItemQueries.getInstance();
private static OpportunityQueries oppQuery = OpportunityQueries.getInstance();
private static ServicePointQueries servicePointQuery = ServicePointQueries.getInstance();
private static final AccountQueries accountQuery = AccountQueries.getInstance();
private static Constants constantSrv = Constants.getAllConstants();
private static final String DIST_REMI_CODE_KEY = 'distRemicode';
private static final String DIST_P_IVA_KEY = 'distpIva';
@AuraEnabled
public static Map<String,Object> insertOsi(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
if(!CEP_UTL_Permissions.isUserOnline(UserInfo.getUserId())){
response.put('error',true);
response.put('errorMsg','Impossibile salvare. Si prega di aggiornare lo stato di presenza sull\'omnichannel e riprovare');
}
String osiParams = params.get('OSI');
String codeAteco = params.get('codeAteco');
String atecoId = params.get('atecoId');
String actualVoltageLevel = params.get('actualVoltageLevel');
String isMassMarketString = params.get('isMassMarket');
Boolean isMassMarket = String.isNotBlank(isMassMarketString) && Boolean.valueOf(isMassMarketString);
System.debug('ATECO ' + codeAteco);
System.debug('OSI FROM PARAMS ' + osiParams);
try{
AtecoTranscode__c ateco = new AtecoTranscode__c();
if(codeAteco!=null && String.isNotBlank(codeAteco)){
ateco = atecoQr.atecoTranscode(codeAteco);
}
if(atecoId != null && String.isNotBlank(atecoId)){
ateco = atecoQr.atecoTranscodeById(atecoId);
}
System.debug('ATECO OBJ' + ateco);
OpportunityServiceItem__c osi = (OpportunityServiceItem__c) JSON.deserialize(osiParams,OpportunityServiceItem__c.class);
System.debug('OSI DESERIALIZED ' + osi);
Boolean isLargeWorld = FeatureManagement.checkPermission('CEP_Large_Sme_Permission') || FeatureManagement.checkPermission('CEP_Small_Business_Permission') ;
System.debug('isLargeWorld ' + isLargeWorld );
if(osi!=null){
//if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_ATTIVAZIONE_PROCESS) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SUBENTRO_PROCESS)){
if(osi.Process__c.equalsIgnoreCase( 'Modifica potenza e tensione' ) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_ATTIVAZIONE_PROCESS) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SUBENTRO_PROCESS)){
String tensione1 = osi.VoltageLevel__c!=null ? osi.VoltageLevel__c.containsIgnoreCase('monofase') ? 'Monofase' : 'Trifase' : '';
String tensione2 = actualVoltageLevel!=null ? actualVoltageLevel.containsIgnoreCase('monofase') ? 'Monofase' : 'Trifase' : '';
String voltageReq = osi.VoltageLevel__c!=null ? osi.VoltageLevel__c.substring( 0, 2 ) : '';
String voltageAct = actualVoltageLevel!=null ? actualVoltageLevel.substring( 0, 2 ) : '';
System.debug('tensione 1 ' + tensione1 + ' tensione 2 ' + tensione2);
if( osi.Process__c != 'Modifica potenza e tensione' && (osi.VoltageLevel__c != actualVoltageLevel || ( !isLargeWorld && ((osi.VoltageLevel__c != null && osi.VoltageLevel__c.containsIgnoreCase('MT')) || (actualVoltageLevel != null && actualVoltageLevel.containsIgnoreCase('MT'))))) ){
response.put('isOrdinario', true);
response.put('message', 'Il punto non è a preventivo rapido i costi verranno comunicati successivamente');
osi.QuoteType__c = '';
// osi.QuoteStatus__c = 'Da inviare a distributore';
// return response;
}else{
if( osi.Process__c == 'Modifica potenza e tensione'
&& ( tensione1 != tensione2 //FASE!!!!
|| voltageAct != voltageReq
|| osi.IsPowerBeyond__c != osi.IsAvaiablePowerBeyond__c
//|| ( String.isNotBlank( osi.RequestedContractualPower__c ) && Double.valueOf( osi.RequestedContractualPower__c ) > 6 && osi.ContractualPower__c <= 6 )
|| ( String.isNotBlank( osi.RequestedContractualPower__c ) && Double.valueOf( osi.RequestedContractualPower__c ) > 6 )
|| ( String.isNotBlank( osi.RequestedContractualPower__c ) && osi.ContractualPower__c > 6 && Double.valueOf( osi.RequestedContractualPower__c ) <= 6 ) ) ){
response.put('isOrdinario', true);
response.put('message', 'Il punto non è a preventivo rapido i costi verranno comunicati successivamente');
osi.QuoteType__c = '';
// osi.QuoteStatus__c = 'Da inviare a distributore';
return response;
}
//UnusedLocalVariable QuoteType__c preventivo = new QuoteType__c();
Boolean isPowerBeyond = osi.IsPowerBeyond__c != null && osi.IsPowerBeyond__c;
Double potenzaDisponibileRichiest;
if(isPowerBeyond){
potenzaDisponibileRichiest = Double.valueOf(osi.RequestedContractualPowerBeyond__c);
}else{
potenzaDisponibileRichiest = Double.valueOf(osi.RequestedAvailablePower__c);
}
String variazioneDiPotenza = potenzaDisponibileRichiest == osi.AvailablePower__c ? 'NO' : 'SI';
if(variazioneDiPotenza == 'SI'){
Double potenzaDisponibile = osi.AvailablePower__c;
String thresholdAvailablePower = CEP_QR_TipoPreventivo.getInstance().getThresholdAvaiablePowerByVoltageLevel(tensione1);
Double threshold = (thresholdAvailablePower!=null && thresholdAvailablePower != '') ? Double.valueOf(thresholdAvailablePower) : potenzaDisponibile;
String operator1 = '';
String operator2 = '';
System.debug('variazione di potenza ' + variazioneDiPotenza);
System.debug('potenza disponibile richiesta ' + potenzaDisponibileRichiest);
System.debug('potenza disponibile ' + potenzaDisponibile);
System.debug('thresold ' + threshold);
if(potenzaDisponibile <= threshold || potenzaDisponibileRichiest <= threshold )
operator1 = 'Minore uguale di';
if(potenzaDisponibile > threshold || potenzaDisponibileRichiest > threshold )
operator2 = 'Maggiore di';
System.debug('operator 1 ' + operator1 + ' operator 2 ' + operator2);
List<QuoteType__c> quotesType = new List<QuoteType__c>();
quotesType = CEP_QR_TipoPreventivo.getInstance().getTipoPreventivo(osi.Process__c,variazioneDiPotenza,operator1,operator2,threshold);
Boolean isOrdinario = false;
for(QuoteType__c qt : quotesType ){
if(qt.Type__c == 'Ordinario'){
isOrdinario = true;
break;
}
}
System.debug('ordinarioooooooooooooooooooooooooooooooo ' + isOrdinario);
if(isOrdinario){
osi.QuoteType__c = '';
// osi.QuoteStatus__c = 'Da inviare a distributore';
response.put('isOrdinario', isOrdinario);
response.put('message', 'Il punto non è a preventivo rapido i costi verranno comunicati successivamente');
// return response;
}else{
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
}
}else{
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
}
}
}
if(osi.RecordTypeId == Constants.getAllConstants().OSIRecordTypes.get('Gas')){
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
}
//LD ADD
if( osi.Process__c.equalsIgnoreCase( 'Modifica potenza e tensione' ) ){
return response;
}
//UnusedLocalVariable Integer noOfDays = 0;//osi.ActDate__c.daysBetween( osi.RevenueAgencyRegisteredDate__c );
if(osi.ActDate__c != null){
if(osi.RevenueAgencyRegisteredDate__c < osi.ActDate__c){
System.debug('Data regis. presso Ag.Entrate: ' + osi.RevenueAgencyRegisteredDate__c);
System.debug('Data Atto: ' + osi.ActDate__c);
response.put('error', true);
response.put('errorMsg', 'Data regis. presso Ag.Entrate non può essere precedente alla data Data Atto');
return response;
}
}
if(osi.ExpectedAnnualWithdrawal__c != null && osi.ExpectedAnnualWithdrawal__c < 1){
System.debug('Prelievo annuo previsto: ' + osi.ExpectedAnnualWithdrawal__c);
response.put('error', true);
response.put('errorMsg', 'Prelievo annuo previsto non può essere minore di 1');
return response;
}
List<Accisa__c> accise = new List<Accisa__c>();
if(osi.Excise__c != null && String.isNotBlank(osi.Excise__c)){
accise = accisaQr.getAcciseByDescription(osi.Excise__c);
}
if(ateco!=null && ateco.Id!=null && String.isNotBlank(ateco.Id)){
osi.AtecoDescription__c = ateco.ClientAteco__c;
osi.CodeAteco__c = ateco.Code__c;
//osi.AtecueCode__c = ateco.AtecueCode__c;
}
if(accise != null && accise.size() > 0){
osi.AccisaCode__c = accise[0].AccisaCode__c;
}
if(osi.DistributorVATNumber__c == null || String.isBlank(osi.DistributorVATNumber__c)){
String idCode = '%' + osi.ServicePointCode__c.substring(0,5) + '%';
List<PODDistributorAlignment__c> pdas = CEP_QR_PODDistributorAlignment.getInstance().getByIdentificationCodeList(idCode);
String distributorVat = '';
if(pdas!=null && pdas.size()>0){
distributorVat = pdas[0].DistributorVATNumber__c;
}
osi.DistributorVATNumber__c = distributorVat;
}
List<OpportunityServiceItem__c> osis = new List<OpportunityServiceItem__c>();
Account acc = accountQuery.findAccount(osi.Account__c);
if(!isMassMarket) {
setOsiContractType(osi, acc);
}
if(osi.Id != null && String.isNotBlank(osi.Id))
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
else
CEP_SRV_OpportunityServiceItem.insertOsi(osi);
osis = osiQuery.getOSIsByOpportunityId(osi.Opportunity__c);
if(!isMassMarket) {
updateAccountAteco(osi, ateco);
}
// Account acc = AccountQueries.getInstance().findAccount(osi.Account__c);
// if( osis != null && osis.size() == 1){
// if(ateco.Code__c != null && acc != null && String.isNotBlank(acc.Id) &&(( osi.ContractType__c != null && String.isNotBlank(osi.ContractType__c) && osi.ContractType__c != 'Persona fisica') ||(acc.RecordType.DeveloperName != null && acc.RecordType.DeveloperName =='CEP_RT_Organization' ))){
// acc.AtecoName__c = ateco.ClientAteco__c;
// acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
// acc.Classification__c = ateco.Classification__c;
// Database.update(acc);
// }
// }
response.put('error', false);
response.put('osi', osi);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> insertOsiSwitching(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
try{
String osiParams = params.get('OSI');
String codeAteco = params.get('codeAteco');
String atecoId = params.get('atecoId');
String isMassMarketString = params.get('isMassMarket');
Boolean isMassMarket = String.isNotBlank(isMassMarketString) && Boolean.valueOf(isMassMarketString);
Boolean isFromCommunity = null!=params.get('isFromCommunity') && 'true' == params.get('isFromCommunity') ? true : false;
// String actualVoltageLevel = params.get('actualVoltageLevel');
System.debug('ATECO ' + codeAteco);
System.debug('OSI FROM PARAMS ' + osiParams);
AtecoTranscode__c ateco = new AtecoTranscode__c();
if(codeAteco!=null && String.isNotBlank(codeAteco)){
ateco = atecoQr.atecoTranscode(codeAteco);
}
if(atecoId != null && String.isNotBlank(atecoId)){
ateco = atecoQr.atecoTranscodeById(atecoId);
}
System.debug('ATECO OBJ' + ateco);
OpportunityServiceItem__c osi = (OpportunityServiceItem__c) JSON.deserialize(osiParams,OpportunityServiceItem__c.class);
Opportunity opp = oppQuery.getOpportunityById(osi.Opportunity__c);
System.debug('OSI DESERIALIZED ' + osi);
Boolean isLargeWorld = FeatureManagement.checkPermission('CEP_Large_Sme_Permission') || FeatureManagement.checkPermission('CEP_Small_Business_Permission');
System.debug('isLargeWorld ' + isLargeWorld );
if(osi!=null){
// if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SWITCHING_WIN_PROCESS) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS)){
// String tensione1 = osi.VoltageLevel__c!=null ? osi.VoltageLevel__c.containsIgnoreCase('monofase') ? 'Monofase' : 'Trifase' : '';
// // String tensione2 = actualVoltageLevel!=null ? actualVoltageLevel.containsIgnoreCase('monofase') ? 'Monofase' : 'Trifase' : '';
// System.debug('tensione 1 ' + tensione1);
// if((!isLargeWorld && (osi.VoltageLevel__c != null && osi.VoltageLevel__c.containsIgnoreCase('MT'))) ){
// response.put('error', true);
// response.put('isOrdinario', true);
// response.put('message', 'Impossibile salvare il punto perché non a preventivazione rapida. Modificare i dati o procedere su Siebel');
// return response;
// }
// // QuoteType__c preventivo = new QuoteType__c();
// // Boolean isPowerBeyond = osi.IsPowerBeyond__c != null;
// // Double potenzaDisponibileRichiest;
// // if(isPowerBeyond){
// // potenzaDisponibileRichiest = Double.valueOf(osi.RequestedContractualPowerBeyond__c);
// // }else{
// // potenzaDisponibileRichiest = Double.valueOf(osi.RequestedAvailablePower__c);
// // }
// }
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
if( (osi.Process__c == 'Predisposizione con attivazione permanente') || (osi.Process__c == 'Predisposizione con attivazione temporanea - straordinaria') || (osi.Process__c == 'Predisposizione con attivazione temporanea - cantiere')){
osi.QuoteType__c = '';
osi.QuoteStatus__c = '';
}
if(osi.ExpectedAnnualWithdrawal__c != null && osi.ExpectedAnnualWithdrawal__c < 1){
System.debug('Prelievo annuo previsto: ' + osi.ExpectedAnnualWithdrawal__c);
response.put('error', true);
response.put('errorMsg', 'Prelievo annuo previsto non può essere minore di 1');
return response;
}
List<Accisa__c> accise = new List<Accisa__c>();
if(osi.Excise__c != null && String.isNotBlank(osi.Excise__c)){
accise = accisaQr.getAcciseByDescription(osi.Excise__c);
}
if(ateco!=null && ateco.Id!=null && String.isNotBlank(ateco.Id)){
osi.AtecoDescription__c = ateco.ClientAteco__c;
osi.CodeAteco__c = ateco.Code__c;
osi.AtecueCode__c = ateco.AtecueCode__c;
}
if(accise != null && accise.size() > 0){
osi.AccisaCode__c = accise[0].AccisaCode__c;
}
if(osi.DistributorVATNumber__c == null || String.isBlank(osi.DistributorVATNumber__c)){
String idCode = '%' + osi.ServicePointCode__c.substring(0,5) + '%';
List<PODDistributorAlignment__c> pdas = CEP_QR_PODDistributorAlignment.getInstance().getByIdentificationCodeList(idCode);
String distributorVat = '';
if(pdas!=null && pdas.size()>0){
distributorVat = pdas[0].DistributorVATNumber__c;
}
osi.DistributorVATNumber__c = distributorVat;
}
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS)){
ServicePoint__c servicePoint = servicePointQuery.getAddressByKey(osi.ServicePointCode__c);
if(servicePoint != null){
setOsiAddress(osi,servicePoint);
}
}
List<OpportunityServiceItem__c> osis = new List<OpportunityServiceItem__c>();
Account acc = accountQuery.findAccount(osi.Account__c);
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OPPORTUNITY_SERVICE_ITEM_PROCESS_CAMBIO_USO)){
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
// Map<String,Object> ivaResponse = ivaSelectedEle(type,osi.Usage__c, osi.RequestedIndustrialSector__c, 'Electric');
Map<String,Object> atecoResponse = atecueSelected(osi.Usage__c, osi.RequestedIndustrialSector__c);
ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) osi.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) osi.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
/* if(ivaResponse != null && ivaResponse.get('iva') != null){
IvaConfiguration__c iva = (IvaConfiguration__c) ivaResponse.get('iva');
osi.VATTreatment__c = iva.Description__c;
osi.VATClass__c = iva.IvaCode__c;
if(iva.Rate__c != null){
osi.VATRate__c = Decimal.valueOf(iva.Rate__c);
}
}*/
if(atecoResponse != null && atecoResponse.get('ateco') != null){
AtecoTranscode__c atecue = (AtecoTranscode__c) atecoResponse.get('ateco');
if(atecue.AtecueCode__c != null){
osi.AtecueCode__c = String.valueOf(atecue.AtecueCode__c);
}
}
if(String.isBlank(acc.AtecoName__c) || String.isBlank(acc.AtecoDescription__c)){
acc.AtecoName__c = 'Altre attività professionali, scientifiche e tecniche nca';
acc.AtecoDescription__c = '74.90';
Database.update(acc);
}
if(sp != null){
osi.VoltageLevel__c = sp.VoltageLevel__c;
osi.Voltage__c = sp.Voltage__c;
if(sp.AvailablePower__c != null){
osi.AvailablePower__c = sp.AvailablePower__c;
osi.RequestedAvailablePower__c = String.valueOf(sp.AvailablePower__c).replace('.', ',');
} else if(sp.ContractualPower__c != null) {
osi.AvailablePower__c = sp.ContractualPower__c*1.1;
osi.RequestedAvailablePower__c = String.valueOf(sp.ContractualPower__c*1.1).replace('.', ',');
}
if(sp.VoltageLevel__c != null){
osi.PowerPhase__c = sp.VoltageLevel__c.equalsIgnoreCase('bt monofase') ? 'Monofase' : 'Trifase';
}
if(sp.ContractualPower__c != null){
if(sp.ContractualPower__c > 30 || (sp.DistributorVATNumber__c == '05779711000' && sp.ContractualPower__c > 15)){
osi.IsAvaiablePowerBeyond__c = true;
osi.ContractualPowerBeyond__c = sp.ContractualPower__c;
}else{
osi.IsAvaiablePowerBeyond__c = false;
osi.ContractualPower__c = sp.ContractualPower__c;
osi.RequestedContractualPower__c = String.valueOf(sp.ContractualPower__c).replace('.', ',');
}
}
}
}
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SWITCHING_WIN_PROCESS)){
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
/* Map<String,Object> ivaResponse = new Map<String,Object>();
if(osi.RecordType.DeveloperName == 'Electric')
ivaResponse = ivaSelectedEle(type,osi.Usage__c, osi.RequestedIndustrialSector__c, 'Electric');
if(osi.RecordType.DeveloperName == 'Gas')
ivaResponse = ivaSelectedGas(osi.TISGUseType__c, osi.PDRType__c, osi.RecordType.DeveloperName);*/
ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
/* if(ivaResponse != null && ivaResponse.get('iva') != null){
IvaConfiguration__c iva = (IvaConfiguration__c) ivaResponse.get('iva');
osi.VATTreatment__c = iva.Description__c;
osi.VATClass__c = iva.IvaCode__c;
if(iva.Rate__c != null){
osi.VATRate__c = Decimal.valueOf(iva.Rate__c);
}
}*/
}
if(osi.Process__c == 'SWITCHING WIN' && isMassMarket){
osi.EffectiveDate__c = CEP_UTL_Date.calcSupplyStartDateSwitchingReset(Date.today());
}
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) osi.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) osi.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
if(!isMassMarket) {
setOsiContractType(osi, acc);
}
if(String.isNotBlank(params.get('startTime'))){
String[] startTime = params.get('startTime').split(':');
osi.StartTime__c = Time.newInstance( Integer.valueOf(startTime[0]),
Integer.valueOf(startTime[1]),
0,
0);
}
if(String.isNotBlank(params.get('endTime'))){
String[] endTime = params.get('endTime').split(':');
osi.EndTime__c = Time.newInstance( Integer.valueOf(endTime[0]),
Integer.valueOf(endTime[1]),
0,
0);
}
if(osi.Id != null && String.isNotBlank(osi.Id))
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
else
CEP_SRV_OpportunityServiceItem.insertOsi(osi);
osis = osiQuery.getOSIsByOpportunityId(osi.Opportunity__c);
// Account acc = AccountQueries.getInstance().findAccount(osi.Account__c);
if(!isMassMarket) {
updateAccountAteco(osi, ateco);
}
for(OpportunityServiceItem__c o : osis){
if(o.Id == osi.Id){
ServicePoint__c sp = (ServicePoint__c) getPreviousProduct(o.Account__c, o.RecordType.DeveloperName, o.ServicePointCode__c).get('servicePoint');
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS)
|| (osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SWITCHING_WIN_PROCESS) && !isFromCommunity)
|| (osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_USO_PROCESS))
|| (osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_MODIFICA_PDR_PROCESS))
|| (osi.Process__c.toUppercase() == 'CAMBIO PRODOTTO CROSS BRAND')){//NTT W3
if(sp!=null && sp.CurrentAsset__r!=null){
String oldContractAccount = sp.CurrentAsset__r.ContractAccount__c;
String oldBillingProfile = sp.CurrentAsset__r.ContractAccount__r.BillingProfile__c;
osi.OldContractAccount__c = oldContractAccount;
osi.OldBillingProfile__c = oldBillingProfile;
osi.ContractAccount__c = sp.CurrentAsset__r.ContractAccount__r.PaymentTerms__c == opp.PaymentTerms__c ? oldContractAccount : isMassMarket ? oldContractAccount : null;
osi.BillingProfile__c = sp.CurrentAsset__r.ContractAccount__r.PaymentTerms__c == opp.PaymentTerms__c ? oldBillingProfile : isMassMarket ? oldBillingProfile : null;
osi.VATClass__c = sp.CurrentAsset__r.VATClass__c;
osi.VATTreatment__c = sp.CurrentAsset__r.VATTreatment__c;
}
if(osi.ContractAccount__c == null){
response.put('error', true);
response.put('errorMsg', 'Contract Account non trovato sull\'Asset o con termini di pagamento diversi da quelli dell\'opporunity');
}
}
}
}
if(osi.Process__c == 'Modifica Tipologia PDR') {
List<OpportunityServiceItem__c> osiList = (List<OpportunityServiceItem__c>) CEP_UTL_SObject.getListExecuteRequest('OpportunityServiceItem__c',
'Id,Process__c, Account__r.Segment__c, Account__r.SellingCharge__c,Account__r.RecordType.DeveloperName, Account__r.JointVenture__r.JointVentureCode__c,Account__r.JointVenture__r.AdministrativeSalesCharge__c,Account__r.Name, Opportunity__r.SalesCharges__c',
'Id =\''+ String.escapeSingleQuotes(osi.Id) + '\'',
null);
osi.AdministrativeSalesCharges__c = CEP_UTL_ProcessWizard.getAdministrativeSalesCharges(osiList[0]);
}
if(osis!=null && osi!=null && osi.Id!=null){
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
}
// if( osis != null && osis.size() == 1){
// if(ateco.Code__c != null && acc != null && String.isNotBlank(acc.Id) &&(( osi.ContractType__c != null && String.isNotBlank(osi.ContractType__c) && osi.ContractType__c != 'Persona fisica') ||(acc.RecordType.DeveloperName != null && acc.RecordType.DeveloperName =='CEP_RT_Organization' ))){
// acc.AtecoName__c = ateco.ClientAteco__c;
// acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
// acc.Classification__c = ateco.Classification__c;
// Database.update(acc);
// }
// }
response.put('error', false);
response.put('osi', osi);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
/*
@AuraEnabled
public static Map<String,Object> insertOsiAttivazioneTecnica(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
try{
String osiParams = params.get('OSI');
String codeAteco = params.get('codeAteco');
String atecoId = params.get('atecoId');
String isMassMarketString = params.get('isMassMarket');
Boolean isMassMarket = String.isNotBlank(isMassMarketString) && Boolean.valueOf(isMassMarketString);
Boolean isFromCommunity = null!=params.get('isFromCommunity') && 'true' == params.get('isFromCommunity') ? true : false;
// String actualVoltageLevel = params.get('actualVoltageLevel');
System.debug('ATECO ' + codeAteco);
System.debug('OSI FROM PARAMS ' + osiParams);
AtecoTranscode__c ateco = new AtecoTranscode__c();
if(codeAteco!=null && String.isNotBlank(codeAteco)){
ateco = atecoQr.atecoTranscode(codeAteco);
}
if(atecoId != null && String.isNotBlank(atecoId)){
ateco = atecoQr.atecoTranscodeById(atecoId);
}
System.debug('ATECO OBJ' + ateco);
OpportunityServiceItem__c osi = (OpportunityServiceItem__c) JSON.deserialize(osiParams,OpportunityServiceItem__c.class);
Opportunity opp = oppQuery.getOpportunityById(osi.Opportunity__c);
System.debug('OSI DESERIALIZED ' + osi);
Boolean isLargeWorld = FeatureManagement.checkPermission('CEP_Large_Sme_Permission') || FeatureManagement.checkPermission('CEP_Small_Business_Permission');
System.debug('isLargeWorld ' + isLargeWorld );
if(osi!=null){
if(osi.ExpectedAnnualWithdrawal__c != null && osi.ExpectedAnnualWithdrawal__c < 1){
System.debug('Prelievo annuo previsto: ' + osi.ExpectedAnnualWithdrawal__c);
response.put('error', true);
response.put('errorMsg', 'Prelievo annuo previsto non può essere minore di 1');
return response;
}
List<Accisa__c> accise = new List<Accisa__c>();
if(osi.Excise__c != null && String.isNotBlank(osi.Excise__c)){
accise = accisaQr.getAcciseByDescription(osi.Excise__c);
}
if(ateco!=null && ateco.Id!=null && String.isNotBlank(ateco.Id)){
osi.AtecoDescription__c = ateco.ClientAteco__c;
osi.CodeAteco__c = ateco.Code__c;
osi.AtecueCode__c = ateco.AtecueCode__c;
}
if(accise != null && accise.size() > 0){
osi.AccisaCode__c = accise[0].AccisaCode__c;
}
if(osi.DistributorVATNumber__c == null || String.isBlank(osi.DistributorVATNumber__c)){
String idCode = '%' + osi.ServicePointCode__c.substring(0,5) + '%';
List<PODDistributorAlignment__c> pdas = CEP_QR_PODDistributorAlignment.getInstance().getByIdentificationCodeList(idCode);
String distributorVat = '';
if(pdas!=null && pdas.size()>0){
distributorVat = pdas[0].DistributorVATNumber__c;
}
osi.DistributorVATNumber__c = distributorVat;
}
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS)){
ServicePoint__c servicePoint = servicePointQuery.getAddressByKey(osi.ServicePointCode__c);
if(servicePoint != null){
setOsiAddress(osi,servicePoint);
}
}
List<OpportunityServiceItem__c> osis = new List<OpportunityServiceItem__c>();
Account acc = accountQuery.findAccount(osi.Account__c);
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OPPORTUNITY_SERVICE_ITEM_PROCESS_CAMBIO_USO)){
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
// Map<String,Object> ivaResponse = ivaSelectedEle(type,osi.Usage__c, osi.RequestedIndustrialSector__c, 'Electric');
Map<String,Object> atecoResponse = atecueSelected(osi.Usage__c, osi.RequestedIndustrialSector__c);
ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) osi.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) osi.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
if(atecoResponse != null && atecoResponse.get('ateco') != null){
AtecoTranscode__c atecue = (AtecoTranscode__c) atecoResponse.get('ateco');
if(atecue.AtecueCode__c != null){
osi.AtecueCode__c = String.valueOf(atecue.AtecueCode__c);
}
}
if(String.isBlank(acc.AtecoName__c) || String.isBlank(acc.AtecoDescription__c)){
acc.AtecoName__c = 'Altre attività professionali, scientifiche e tecniche nca';
acc.AtecoDescription__c = '74.90';
Database.update(acc);
}
if(sp != null){
osi.VoltageLevel__c = sp.VoltageLevel__c;
osi.Voltage__c = sp.Voltage__c;
if(sp.AvailablePower__c != null){
osi.AvailablePower__c = sp.AvailablePower__c;
osi.RequestedAvailablePower__c = String.valueOf(sp.AvailablePower__c).replace('.', ',');
} else if(sp.ContractualPower__c != null) {
osi.AvailablePower__c = sp.ContractualPower__c*1.1;
osi.RequestedAvailablePower__c = String.valueOf(sp.ContractualPower__c*1.1).replace('.', ',');
}
if(sp.VoltageLevel__c != null){
osi.PowerPhase__c = sp.VoltageLevel__c.equalsIgnoreCase('bt monofase') ? 'Monofase' : 'Trifase';
}
if(sp.ContractualPower__c != null){
if(sp.ContractualPower__c > 30 || (sp.DistributorVATNumber__c == '05779711000' && sp.ContractualPower__c > 15)){
osi.IsAvaiablePowerBeyond__c = true;
osi.ContractualPowerBeyond__c = sp.ContractualPower__c;
}else{
osi.IsAvaiablePowerBeyond__c = false;
osi.ContractualPower__c = sp.ContractualPower__c;
osi.RequestedContractualPower__c = String.valueOf(sp.ContractualPower__c).replace('.', ',');
}
}
}
}
if(osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS) || osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SWITCHING_WIN_PROCESS)){
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
// ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
}
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) osi.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) osi.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
if(!isMassMarket) {
setOsiContractType(osi, acc);
}
if(osi.Id != null && String.isNotBlank(osi.Id))
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
else
CEP_SRV_OpportunityServiceItem.insertOsi(osi);
osis = osiQuery.getOSIsByOpportunityId(osi.Opportunity__c);
// Account acc = AccountQueries.getInstance().findAccount(osi.Account__c);
if(!isMassMarket) {
updateAccountAteco(osi, ateco);
}
for(OpportunityServiceItem__c o : osis){
if(o.Id == osi.Id){
ServicePoint__c sp = (ServicePoint__c) getPreviousProduct(o.Account__c, o.RecordType.DeveloperName, o.ServicePointCode__c).get('servicePoint');
if((osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_PRODOTTO_PROCESS) && sp.CurrentAsset__r!=null && (isMassMarket || sp.CurrentAsset__r.ContractAccount__r.PaymentTerms__c == opp.PaymentTerms__c)) || (osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_SWITCHING_WIN_PROCESS) && !isFromCommunity) || (osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_CAMBIO_USO_PROCESS) && sp.CurrentAsset__r!=null && sp.CurrentAsset__r.ContractAccount__r.PaymentTerms__c == opp.PaymentTerms__c)){
if(sp!=null && sp.CurrentAsset__r!=null){
String oldContractAccount = sp.CurrentAsset__r.ContractAccount__c;
String oldBillingProfile = sp.CurrentAsset__r.ContractAccount__r.BillingProfile__c;
osi.OldContractAccount__c = oldContractAccount;
osi.OldBillingProfile__c = oldBillingProfile;
osi.ContractAccount__c = oldContractAccount;
osi.BillingProfile__c = oldBillingProfile;
osi.VATClass__c = sp.CurrentAsset__r.VATClass__c;
osi.VATTreatment__c = sp.CurrentAsset__r.VATTreatment__c;
}
}
}
}
if(osis!=null && osi!=null && osi.Id!=null){
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
}
response.put('error', false);
response.put('osi', osi);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
} */
private static void updateAccountAteco(OpportunityServiceItem__c osi, AtecoTranscode__c ateco) {
if(ateco != null && osi.Account__c != null && ateco.ClientAteco__c != null && ateco.AtecoDescriptionClient__c != null) {
Account acc = new Account(Id = osi.Account__c);
acc.AtecoName__c = ateco.ClientAteco__c;
acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
Database.update(acc);
}
}
@TestVisible
private static void setOsiContractType(OpportunityServiceItem__c osi, Account acc) {
if(null == acc){
return;
}
String accDeveloperName = acc.RecordTypeDeveloperName__c;
if(accDeveloperName == constantSrv.ACCOUNT_RECORDTYPE_RESELLER_END_CUSTOMER) {
String reqUsageCat = osi.Usage__c;
if(acc.Type == constantSrv.ACCOUNT_TYPE_PERSONA_FISICA) {
String fiscalCode = acc.FiscalCode__c;
String vatNumber = acc.VATNumber__c;
Boolean isOtherOrPublicUsage = reqUsageCat == 'Altri us' || reqUsageCat == 'Illuminazione Pubblica';
if(String.isNotBlank(fiscalCode) && !fiscalCode.isNumeric() && String.isNotBlank(reqUsageCat)) {
if(reqUsageCat == 'Domestico' || (isOtherOrPublicUsage && String.isBlank(vatNumber))) {
osi.ContractType__c = constantSrv.OSI_CONTRACT_TYPE_PERSONA_FISICA;
} else if(isOtherOrPublicUsage && String.isNotBlank(vatNumber)) {
osi.ContractType__c = constantSrv.OSI_CONTRACT_TYPE_DITTA_INDIVIDUALE;
}
}
}
}
}
@AuraEnabled
public static Map<String,Object> insertOsiVoltura(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
List<Accisa__c> accisa =new List<Accisa__c>();
List<Taxes__c> taxis = new List<Taxes__c>();
try{
String osiParams = params.get('OSI');
String codeAteco = params.get('codeAteco');
String atecoId = params.get('atecoId');
Boolean isCommercialCounterPart = params.get('isCommercialCounterPart')!=null && params.get('isCommercialCounterPart').equalsIgnoreCase('SI');
// String actualVoltageLevel = params.get('actualVoltageLevel');
System.debug('ATECO ' + codeAteco);
System.debug('OSI FROM PARAMS ' + osiParams);
AtecoTranscode__c ateco = new AtecoTranscode__c();
if(codeAteco!=null && String.isNotBlank(codeAteco)){
ateco = atecoQr.atecoTranscode(codeAteco);
}
if(atecoId != null && String.isNotBlank(atecoId)){
ateco = atecoQr.atecoTranscodeById(atecoId);
}
System.debug('ATECO OBJ' + ateco);
OpportunityServiceItem__c osi = (OpportunityServiceItem__c) JSON.deserialize(osiParams,OpportunityServiceItem__c.class);
Opportunity opp = oppQuery.getOpportunityById(osi.Opportunity__c);
System.debug('OSI DESERIALIZED ' + osi);
if(osi!=null && osi.ServicePointCode__c!=null){
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
ServicePoint__c servicePointAdress = servicePointQuery.getAddressByKey(osi.ServicePointCode__c);
if(servicePointAdress != null){
setOsiAddress(osi,servicePointAdress);
}
//START GET Servicepoint WITHOUT SHARING
String selectedFields = 'Id, DistributorVATNumber__c,InstalledPotentiality__c,RequestedPotentiality__c,Voltage__c, VoltageLevel__c, AvailablePower__c, ContractualPower__c,CurrentAsset__r.AccountId,CurrentAsset__r.Product2Id';
String clauseCondition = 'Key__c =\'' + osi.ServicePointCode__c +'\'';
ServicePoint__c sp = null;
List<ServicePoint__c> spList= (List<ServicePoint__c>)CEP_UTL_SObject.getListExecuteRequest('ServicePoint__c',selectedFields,clauseCondition,null);
if(!spList.isEmpty()){
sp = spList.get(0);
}
//END GET Servicepoint WITHOUT SHARING
if(sp != null){
osi.InstalledPotentiality__c = sp.InstalledPotentiality__c;
osi.RequestedPotentiality__c = sp.RequestedPotentiality__c;
if(sp.AvailablePower__c != null){
osi.AvailablePower__c = sp.AvailablePower__c;
osi.RequestedAvailablePower__c = String.valueOf(sp.AvailablePower__c).replace('.', ',');
} else if(sp.ContractualPower__c != null) {
osi.AvailablePower__c = sp.ContractualPower__c*1.1;
osi.RequestedAvailablePower__c = String.valueOf(sp.ContractualPower__c*1.1).replace('.', ',');
}
if(sp.ContractualPower__c != null){
osi.ContractualPower__c = sp.ContractualPower__c;
osi.RequestedContractualPower__c = String.valueOf(sp.ContractualPower__c).replace('.', ',');
}
if(osi.Process__c.toLowerCase() == Constants.getAllConstants().OSI_VOLTURA_MORTIS_CAUSA_PROCESS.toLowerCase() ||
osi.Process__c.toLowerCase() == Constants.getAllConstants().OSI_VOLTURA_FUSIONE_INCORPORAZIONE_PROCESS.toLowerCase()){
if(sp.CurrentAsset__r.Product2Id == null || String.isBlank(sp.CurrentAsset__r.Product2Id)){
response.put('error', true);
response.put('errorMsg', 'Errore Base Dati : Sull\'Asset associato alla fornitura : ' + osi.ServicePointCode__c + ' non è presente un prodotto');
return response;
}
osi.Product__c = sp.CurrentAsset__r.Product2Id;
if (osi.Process__c.toLowerCase() == Constants.getAllConstants().OSI_VOLTURA_FUSIONE_INCORPORAZIONE_PROCESS.toLowerCase()) {
list<quote> quoteList = new list<quote>();
list<QuoteLineItem> quoteLineItemList = new list<QuoteLineItem>();
quoteList = [select id from quote where OpportunityId = :osi.opportunity__c limit 1];
if (quoteList.size() > 0 && quoteList[0].id != null) {
quoteLineItemList = [select id, Product2Id from QuoteLineItem where QuoteId = :quoteList[0].id limit 1];
if (quoteList.size() > 0 && quoteLineItemList[0].Product2Id != null) {
if (quoteLineItemList[0].Product2Id != sp.CurrentAsset__r.Product2Id) {
osi.Product__c = quoteLineItemList[0].Product2Id;
}
}
}
}
}
osi.Asset__c = sp.CurrentAsset__c;
List<AccountContactRelation> acr = AccountContactRelationQueries.getInstance().listByAccountIdAndRoles(sp.CurrentAsset__r.AccountId);
if(acr != null && acr.size()>0){
osi.TransferredContact__c = acr[0].ContactId;
}
}
}
if(osi!=null){
String descriptionAccisa = '';
if(osi.PointIstatCode__c!=null && String.isNotEmpty(osi.PointIstatCode__c)){
taxis = imposteQr.getIstat(osi.PointIstatCode__c);
if(taxis != null && taxis.size()>0){
osi.RegionalAdition__c = taxis[0].AdditionalCode__c;
accisa = accisaQr.getAcciseByCode(taxis[0].AccisaCode__c);
if(accisa!=null && accisa.size()>0){
descriptionAccisa = accisa[0].Description__c;
osi.Excise__c = descriptionAccisa;
osi.AccisaCode__c = taxis[0].AccisaCode__c;
}
}
}
if(osi.ExpectedAnnualWithdrawal__c != null && osi.ExpectedAnnualWithdrawal__c < 1){
System.debug('Prelievo annuo previsto: ' + osi.ExpectedAnnualWithdrawal__c);
response.put('error', true);
response.put('errorMsg', 'Prelievo annuo previsto non può essere minore di 1');
return response;
}
if(ateco!=null && ateco.Id!=null && String.isNotBlank(ateco.Id)){
osi.AtecoDescription__c = ateco.ClientAteco__c;
osi.CodeAteco__c = ateco.Code__c;
osi.AtecueCode__c = ateco.AtecueCode__c;
}
if(osi.process__c =='Voltura Tecnica' && osi.CorrectionEffectiveDate__c==null && osi.EffectiveDate__c!=null ){
osi.CorrectionEffectiveDate__c = osi.EffectiveDate__c;
}
if(osi.DistributorVATNumber__c == null || String.isBlank(osi.DistributorVATNumber__c)){
String distributorVat = '';
if(osi.RecordTypeId!=null && osi.RecordTypeId == Constants.getAllConstants().OSIRecordTypes.get('Electric')){
String idCode = '%' + osi.ServicePointCode__c.substring(0,5) + '%';
List<PODDistributorAlignment__c> pdas = CEP_QR_PODDistributorAlignment.getInstance().getByIdentificationCodeList(idCode);
if(pdas!=null && pdas.size()>0){
distributorVat = pdas[0].DistributorVATNumber__c;
}
}
if(osi.RecordTypeId!=null && osi.RecordTypeId == Constants.getAllConstants().OSIRecordTypes.get('Gas')){
ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
if(sp!=null)
distributorVat = sp.DistributorVATNumber__c;
}
System.debug('DISTRIBUTOR VAT NUMBER ' + distributorVat);
osi.DistributorVATNumber__c = distributorVat;
}
List<OpportunityServiceItem__c> osis = new List<OpportunityServiceItem__c>();
if(osi.Id != null && String.isNotBlank(osi.Id))
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
else
CEP_SRV_OpportunityServiceItem.insertOsi(osi);
osis = osiQuery.getOSIsByOpportunityId(osi.Opportunity__c);
Account acc = AccountQueries.getInstance().findAccount(osi.Account__c);
if( osis != null && osis.size() > 0){
if(ateco.Code__c != null && acc != null && String.isNotBlank(acc.Id) &&(( osi.ContractType__c != null && String.isNotBlank(osi.ContractType__c) && osi.ContractType__c != 'Persona fisica') ||(acc.RecordType.DeveloperName != null && acc.RecordType.DeveloperName =='CEP_RT_Organization' ))){
acc.AtecoName__c = ateco.ClientAteco__c;
acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
acc.Classification__c = ateco.Classification__c;
Database.update(acc);
}
}
if(osi.Id!=null){
OpportunityServiceItem__c tmp = OpportunityServiceItemQueries.getInstance().getById(osi.Id);
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
Map<String,Object> ivaResponse = new Map<String,Object>();
if(tmp.RecordType.DeveloperName == 'Electric')
//ivaResponse = ivaSelectedEle(type,tmp.Usage__c, tmp.RequestedIndustrialSector__c, tmp.RecordType.DeveloperName);
if(tmp.RecordType.DeveloperName == 'Gas'){
// ivaResponse = ivaSelectedGas(tmp.TISGUseType__c, tmp.PDRType__c, tmp.RecordType.DeveloperName);
if(acc != null && acc.Segment__c != Constants.getAllConstants().ACCOUNT_SEGMENT_MASS_MARKET && String.isBlank(tmp.SupplyEnergyService__c)){
tmp.SupplyEnergyService__c = 'NO';
}
}
/* if(ivaResponse.get('iva')!=null){
tmp.VATClass__c = ((IvaConfiguration__c)ivaResponse.get('iva')).IvaCode__c;
tmp.VATRate__c = Decimal.valueOf(((IvaConfiguration__c)ivaResponse.get('iva')).Rate__c);
}*/
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) tmp.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) tmp.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
if(isCommercialCounterPart!=null && osi.Process__c.equalsIgnoreCase(Constants.getAllConstants().OSI_VOLTURA_CON_SWITCHING_PROCESS)){
List<CEP_ProcessOmTranscode__mdt> ompt = CEP_QR_ProcessOmTranscode.getInstance().getOMTranscode(osi.Process__c, isCommercialCounterPart);
if(ompt!=null && ompt.size()>0){
tmp.ProcessOM__c = ompt[0].ProcessOM__c;
}
}
else{
tmp.ProcessOM__c = tmp.Process__c;
}
DatabaseService.getInstance().updateSObject(tmp);
}
/*for(OpportunityServiceItem__c o : osis){
if(o.Id == osi.Id){
ServicePoint__c sp = (ServicePoint__c) getPreviousProduct(o.Account__c, o.RecordType.DeveloperName, o.ServicePointCode__c).get('servicePoint');
if(sp.CurrentAsset__r!=null && sp.CurrentAsset__r.ContractAccount__r.PaymentTerms__c == opp.PaymentTerms__c){
if(sp!=null && sp.CurrentAsset__r!=null){
String oldContractAccount = sp.CurrentAsset__r.ContractAccount__c;
String oldBillingProfile = sp.CurrentAsset__r.ContractAccount__r.BillingProfile__c;
osi.OldContractAccount__c = oldContractAccount;
osi.OldBillingProfile__c = oldBillingProfile;
osi.ContractAccount__c = oldContractAccount;
osi.BillingProfile__c = oldBillingProfile;
osi.VATClass__c = sp.CurrentAsset__r.VATClass__c;
osi.VATTreatment__c = sp.CurrentAsset__r.VATTreatment__c;
}
}
}
}*/
response.put('error', false);
response.put('osi', osi);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> insertOsiAttivazioneTecnicaRemiDirette(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
List<Accisa__c> accisa =new List<Accisa__c>();
List<Taxes__c> taxis = new List<Taxes__c>();
try{
String osiParams = params.get('OSI');
Boolean isCommercialCounterPart = params.get('isCommercialCounterPart')!=null && params.get('isCommercialCounterPart').equalsIgnoreCase('SI');
// String actualVoltageLevel = params.get('actualVoltageLevel');
System.debug('OSI FROM PARAMS ' + osiParams);
OpportunityServiceItem__c osi = (OpportunityServiceItem__c) JSON.deserialize(osiParams,OpportunityServiceItem__c.class);
Opportunity opp = oppQuery.getOpportunityById(osi.Opportunity__c);
System.debug('OSI DESERIALIZED ' + osi);
if(osi!=null && osi.ServicePointCode__c!=null){
osi.QuoteType__c = 'Rapido';
osi.QuoteStatus__c = 'Preventivo Perfezionato';
ServicePoint__c servicePointAdress = servicePointQuery.getAddressByKey(osi.ServicePointCode__c);
if(servicePointAdress != null){
setOsiAddress(osi,servicePointAdress);
}
//START GET Servicepoint WITHOUT SHARING
String selectedFields = 'Id, DistributorVATNumber__c,InstalledPotentiality__c,RequestedPotentiality__c,Voltage__c, VoltageLevel__c, AvailablePower__c, ContractualPower__c,CurrentAsset__r.AccountId,CurrentAsset__r.Product2Id';
String clauseCondition = 'Key__c =\'' + osi.ServicePointCode__c +'\'';
ServicePoint__c sp = null;
List<ServicePoint__c> spList= (List<ServicePoint__c>)CEP_UTL_SObject.getListExecuteRequest('ServicePoint__c',selectedFields,clauseCondition,null);
if(!spList.isEmpty()){
sp = spList.get(0);
}
//END GET Servicepoint WITHOUT SHARING
if(sp != null){
osi.InstalledPotentiality__c = sp.InstalledPotentiality__c;
osi.RequestedPotentiality__c = sp.RequestedPotentiality__c;
if(sp.AvailablePower__c != null){
osi.AvailablePower__c = sp.AvailablePower__c;
osi.RequestedAvailablePower__c = String.valueOf(sp.AvailablePower__c).replace('.', ',');
} else if(sp.ContractualPower__c != null) {
osi.AvailablePower__c = sp.ContractualPower__c*1.1;
osi.RequestedAvailablePower__c = String.valueOf(sp.ContractualPower__c*1.1).replace('.', ',');
}
if(sp.ContractualPower__c != null){
osi.ContractualPower__c = sp.ContractualPower__c;
osi.RequestedContractualPower__c = String.valueOf(sp.ContractualPower__c).replace('.', ',');
}
if(osi.Process__c.toLowerCase() == Constants.getAllConstants().OSI_VOLTURA_MORTIS_CAUSA_PROCESS.toLowerCase() ||
osi.Process__c.toLowerCase() == Constants.getAllConstants().OSI_VOLTURA_FUSIONE_INCORPORAZIONE_PROCESS.toLowerCase()){
if(sp.CurrentAsset__r.Product2Id == null || String.isBlank(sp.CurrentAsset__r.Product2Id)){
response.put('error', true);
response.put('errorMsg', 'Errore Base Dati : Sull\'Asset associato alla fornitura : ' + osi.ServicePointCode__c + ' non è presente un prodotto');
return response;
}
osi.Product__c = sp.CurrentAsset__r.Product2Id;
}
osi.Asset__c = sp.CurrentAsset__c;
List<AccountContactRelation> acr = AccountContactRelationQueries.getInstance().listByAccountIdAndRoles(sp.CurrentAsset__r.AccountId);
if(acr != null && acr.size()>0){
osi.TransferredContact__c = acr[0].ContactId;
}
}
}
if(osi!=null){
String descriptionAccisa = '';
if(osi.PointIstatCode__c!=null && String.isNotEmpty(osi.PointIstatCode__c)){
taxis = imposteQr.getIstat(osi.PointIstatCode__c);
if(taxis != null && taxis.size()>0){
osi.RegionalAdition__c = taxis[0].AdditionalCode__c;
accisa = accisaQr.getAcciseByCode(taxis[0].AccisaCode__c);
if(accisa!=null && accisa.size()>0){
descriptionAccisa = accisa[0].Description__c;
osi.Excise__c = descriptionAccisa;
osi.AccisaCode__c = taxis[0].AccisaCode__c;
}
}
}
if(osi.ExpectedAnnualWithdrawal__c != null && osi.ExpectedAnnualWithdrawal__c < 1){
System.debug('Prelievo annuo previsto: ' + osi.ExpectedAnnualWithdrawal__c);
response.put('error', true);
response.put('errorMsg', 'Prelievo annuo previsto non può essere minore di 1');
return response;
}
if(osi.DistributorVATNumber__c == null || String.isBlank(osi.DistributorVATNumber__c)){
String distributorVat = '';
if(osi.RecordTypeId!=null && osi.RecordTypeId == Constants.getAllConstants().OSIRecordTypes.get('Electric')){
String idCode = '%' + osi.ServicePointCode__c.substring(0,5) + '%';
List<PODDistributorAlignment__c> pdas = CEP_QR_PODDistributorAlignment.getInstance().getByIdentificationCodeList(idCode);
if(pdas!=null && pdas.size()>0){
distributorVat = pdas[0].DistributorVATNumber__c;
}
}
if(osi.RecordTypeId!=null && osi.RecordTypeId == Constants.getAllConstants().OSIRecordTypes.get('Gas')){
ServicePoint__c sp = ServicePointQueries.getInstance().getByKey(osi.ServicePointCode__c);
if(sp!=null)
distributorVat = sp.DistributorVATNumber__c;
}
System.debug('DISTRIBUTOR VAT NUMBER ' + distributorVat);
osi.DistributorVATNumber__c = distributorVat;
}
List<OpportunityServiceItem__c> osis = new List<OpportunityServiceItem__c>();
if(osi.Id != null && String.isNotBlank(osi.Id))
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
else
CEP_SRV_OpportunityServiceItem.insertOsi(osi);
osis = osiQuery.getOSIsByOpportunityId(osi.Opportunity__c);
Account acc = AccountQueries.getInstance().findAccount(osi.Account__c);
if(osi.Id!=null){
OpportunityServiceItem__c tmp = OpportunityServiceItemQueries.getInstance().getById(osi.Id);
String type = acc.RecordType.DeveloperName == 'CEP_RT_PhysicalPerson' ? 'Persona Fisica/Ditta Individuale' :
acc.RecordType.DeveloperName == 'CEP_RT_Organization' || acc.RecordType.DeveloperName == 'Business' ? 'Organizzazione' : '*';
Map<String,Object> ivaResponse = new Map<String,Object>();
if(tmp.RecordType.DeveloperName == 'Electric')
//ivaResponse = ivaSelectedEle(type,tmp.Usage__c, tmp.RequestedIndustrialSector__c, tmp.RecordType.DeveloperName);
if(tmp.RecordType.DeveloperName == 'Gas'){
// ivaResponse = ivaSelectedGas(tmp.TISGUseType__c, tmp.PDRType__c, tmp.RecordType.DeveloperName);
if(acc != null && acc.Segment__c != Constants.getAllConstants().ACCOUNT_SEGMENT_MASS_MARKET && String.isBlank(tmp.SupplyEnergyService__c)){
tmp.SupplyEnergyService__c = 'NO';
}
}
/* if(ivaResponse.get('iva')!=null){
tmp.VATClass__c = ((IvaConfiguration__c)ivaResponse.get('iva')).IvaCode__c;
tmp.VATRate__c = Decimal.valueOf(((IvaConfiguration__c)ivaResponse.get('iva')).Rate__c);
}*/
if (osi.Commodity__c != null && string.isNotBlank(osi.VATTreatment__c)) {
Map<String, String> osiIva = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(osi.Commodity__c, osi.VATTreatment__c);
if (osiIva.containsKey('IvaCode__c') && osiIva.get('IvaCode__c') != null) tmp.VATClass__c = osiIva.get('IvaCode__c');
if (osiIva.containsKey('IvaCode__c') && osiIva.get('Rate__c') != null) tmp.VATRate__c = decimal.valueOf(osiIva.get('Rate__c'));
}
DatabaseService.getInstance().updateSObject(tmp);
}
response.put('error', false);
response.put('osi', osi);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> checkDistributorVAT(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
try{
String osiId = params.get('osiId');
System.debug('OSI ID ' + osiId);
OpportunityServiceItem__c osi = new OpportunityServiceItem__c();
// Controllo su piva distributore
osi = osiQuery.getById(osiId);
if(osi.DistributorName__c!=null && String.isNotEmpty(osi.DistributorName__c) &&
osi.REMICode__c!=null && String.isNotEmpty(osi.REMICode__c) &&
(osi.DistributorVATNumber__c == null || String.isEmpty(osi.DistributorVATNumber__c)) &&
osi.PointIstatCode__c!=null && String.isNotEmpty(osi.PointIstatCode__c)){
System.debug('RETRIEVE DISTR');
System.debug(osi.DistributorName__c);
System.debug(osi.PointIstatCode__c);
osi.DistributorVATNumber__c = CEP_LC_DedicatedProcessWizard.retrieveDistributorVat(osi.PointIstatCode__c,osi.DistributorName__c);
System.debug('RETRIEVE DISTR RES ' + osi.DistributorVATNumber__c);
if(osi.DistributorVATNumber__c!=null)
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
}
response.put('error', false);
} catch(Exception ex){
response.put('error', true);
response.put('errorMsg', ex.getMessage());
response.put('errorTrace', ex.getStackTraceString());
}
return response;
}
public static String retrieveDistributorVat(String istatCode, String distributorName){
Map<String,Object> res = callEbdm(istatCode);
if(res!=null && ((Map<String,String>)res.get(DIST_P_IVA_KEY)).get(distributorName)!=null){
System.debug('DISTR PIVA MAP ' + (Map<String,String>)res.get(DIST_P_IVA_KEY));
return ((Map<String,String>)res.get(DIST_P_IVA_KEY)).get(distributorName);
}
return null;
}
@AuraEnabled(cacheable = false)
public static Object prescreening(String accountId, String oppId){
Map<String,Object> response = new Map<String,Object>();
response = CEP_UTL_CervedCachingCheck.Prescreening(accountId);
CreditCheck__c check= new CreditCheck__c();
String esito;
Account acc = new Account();
AtecoTranscode__c ateco = new AtecoTranscode__c();
try{
// CACHE NON PRESENTE
if(!(Boolean)response.get('prescreening')){
// invoco il servizio
check = CEP_SRV_CreditPreCheckCER01.invokePreCheck(oppId);
// la chiamata va a buon fine
if(check!= null && check.ResultCode__c!=null){
// leggo l'esito sritto sull'opp
esito = OpportunityQueries.getInstance().getCreditCheckStatusOpportunity(oppId).PrescreeningStatus__c;
//Opportunity opp = new Opportunity(Id = oppId);
//opp.Prescreening__c = check.Id;
//DatabaseService.getInstance().updateSObject(opp);
// ko lavorabile - creo l'attività per BO
// EDIT 03/03/2020 VS : L'activity viene creata dal metodo di invocazione del servizio
/*if(esito.containsIgnoreCase('ko lavorabile')){
Utils.createCervedBackOfficeActivity(oppId);
response.put('koLavorabile', true);
}*/
response.put('error', false);
response.put('esito', esito);
response.put('precheckResponse', check);
response.put('codiceAteco', check.Ateco__c);
//Se ateco e presente scrivo su account
if(check.Ateco__c != null && accountId!=null){
ateco = atecoQr.atecoTranscode(check.Ateco__c);
acc.Id = accountId;
acc.AtecoName__c = ateco.ClientAteco__c;
acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
acc.Classification__c = ateco.Classification__c;
DatabaseService.getInstance().updateSObject(acc);
}
}
// la chiamata non va a buon fine
else{
response.put('error', true);
response.put('esito', 'TECHNICAL ERROR');
response.put('precheckResponse', check);
}
}
// RECUPERO ESITO DA CACHE
else{
// Se l'opportunity da cache è diversa da quella attuale
if((String)response.get('oppId')!=null && (String)response.get('oppId')!=oppId){
// scrivo l'esito sull'opp
Opportunity opp = new Opportunity(Id=oppId);
opp.PrescreeningStatus__c = (String)response.get('esito');
if(((CreditCheck__c)response.get('creditCheck'))!=null){
CreditCheck__c cc = CEP_QR_CreditCheck.getInstance().getAllFieldsById(((CreditCheck__c)response.get('creditCheck')).Id);
System.debug('>>>cc: ' + cc);
if(cc.Opportunity__c != opp.Id){
CreditCheck__c ccClone = cc.clone(false, true, false, false);
ccClone.Opportunity__c = opp.Id;
DatabaseService.getInstance().insertSObject(ccClone);
System.debug('>>>ccClone: ' + ccClone);
opp.Prescreening__c = ccClone.Id;
System.debug('>>>opp: ' + opp);
}
}
opp.PrescreeningDate__c = System.Date.today();
DatabaseService.getInstance().updateSObject(opp);
// ko lavorabile - creo l'attività per BO
if(((String)response.get('esito')).containsIgnoreCase('ko lavorabile')){
Utils.createCervedBackOfficeActivity(oppId);
response.put('koLavorabile', true);
}
response.put('error', false);
// recupero l'ateco da account
String codiceAteco = AccountQueries.getInstance().getAccountAtecoDescription(accountId);
response.put('codiceAteco', codiceAteco); // mocked
response.put('atecoObj', atecoQr.atecoTranscodeByDescriptionClient(codiceAteco));
}
// Opportunity da cache è quella attuale - prescreening già richiesto
else{
response.put('preescreeningAlreadyRequired', true);
}
}
}catch(Exception e){
response.put('error', true);
response.put('esito', 'TECHNICAL ERROR');
response.put('errorMsg', e.getMessage() + ' ' + e.getStackTraceString());
}
return response;
}
@AuraEnabled(cacheable = false)
public static Object getDefaultAteco(String accountId){
Map<String,Object> response = new Map<String,Object>();
AtecoTranscode__c ateco = new AtecoTranscode__c();
try{
List<Account> accounts = (List<Account>)CEP_UTL_SObject.getListExecuteRequest('Account', 'AtecoName__c', 'Id=\'' + accountId+ '\'', null);
String codiceAteco = accounts[0].AtecoName__c;
response.put('codiceAteco', codiceAteco);
response.put('atecoObj', atecoQr.getByClientAtecoWithSameDesc(codiceAteco));
}catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage() + ' ' + e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> atecTranscode(String codeAteco, String accountId, String contractType){
Map<String,Object> response = new Map<String,Object>();
try{
AtecoTranscode__c ateco = new AtecoTranscode__c();
//UnusedLocalVariable Account acc = new Account();
if(String.isBlank(codeAteco)){
throw new WrtsException(System.Label.MissingParameter);
}
ateco = atecoQr.atecoTranscode(codeAteco);
// if(ateco.Code__c != null && accountId != null && String.isNotBlank(accountId) && contractType != null && String.isNotBlank(contractType) && contractType != 'Persona fisica'){
// acc.Id = accountId;
// acc.AtecoName__c = ateco.ClientAteco__c;
// acc.AtecoDescription__c = ateco.AtecoDescriptionClient__c;
// acc.Classification__c = ateco.Classification__c;
// Database.update(acc);
// }
response.put('error', false);
response.put('ateco', ateco);
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> atecueSelected(String usage, String industry){
Map<String,Object> response = new Map<String,Object>();
try{
AtecoTranscode__c ateco = new AtecoTranscode__c();
if(usage != null && String.isNotBlank(usage) && industry != null && String.isNotBlank(industry)){
ateco = atecoQr.getAtecoByUsageIndustry(usage , industry);
System.debug('systemmmmmm atecoooooooo ' + ateco);
}else {
throw new WrtsException(System.Label.MissingParameter);
}
response.put('error', false);
response.put('ateco', ateco);
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getAtecoManualValues(){
Map<String,Object> response = new Map<String,Object>();
List<AtecoTranscode__c> atecoValues = new List<AtecoTranscode__c>();
try{
atecoValues = atecoQr.getAtecosByCode('%MANUALE%');
response.put('error', false);
response.put('atecoValues', atecoValues);
System.debug('ATECO VALUES' + atecoValues);
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> checkProcessCompatibility(Map <String,String> params){
Map<String,Object> response = new Map<String,Object>();
Map<String,String> input = new Map<String,String>();
try{
input.put('podPdr', params.get('podPdr'));
input.put('startingProcess', params.get('startingProcess'));
input.put('channel', params.get('channel'));
input.put('commodity', params.get('commodity'));
input.put('distributor', params.get('distributor'));
Boolean isTitoloIV = params.get('isTitoloIV')!=null && params.get('isTitoloIV').containsIgnoreCase('si');
if(input.get('startingProcess').containsIgnoreCase('voltura')){
if(Constants.getAllConstants().OSI_VOLTURE_TITOLO_3.containsIgnoreCase(input.get('startingProcess'))){
input.put('startingProcess', 'Voltura Titolo 3');
}
if(Constants.getAllConstants().OSI_VOLTURE_TITOLO_4.containsIgnoreCase(input.get('startingProcess'))){
input.put('startingProcess', isTitoloIV ? 'Voltura Titolo 4' : 'Voltura Titolo 3');
}
}
Map<String,Object> incompatibilitySrvResMap = CEP_UTL_CompatibilityMatrix.getCompatibility(input);
response.put('incompatibility', incompatibilitySrvResMap.get('incompatibility'));
response.put('records', incompatibilitySrvResMap.get('records'));
response.put('incompatibleObject', incompatibilitySrvResMap.get('incompatibleObject'));
response.put('error', false);
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> ivaSelectedEle(String accountType, String usage, String industry,String commodity){
Map<String,Object> response = new Map<String,Object>();
IvaConfiguration__c iva = new IvaConfiguration__c();
try {
if(accountType != null && String.isNotBlank(accountType) && usage != null && String.isNotBlank(usage) && industry != null && String.isNotBlank(industry)&& commodity != null && String.isNotBlank(commodity))
iva = ivaQr.getIvaByEle(accountType,usage,industry,commodity);
else {
throw new WrtsException(System.Label.MissingParameter);
}
response.put('error', false);
response.put('iva', iva);
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> ivaSelectedGas(String tipoTisg, String tipPdr, String commodity){
Map<String,Object> response = new Map<String,Object>();
IvaConfiguration__c iva = new IvaConfiguration__c();
try {
if(tipoTisg != null && String.isNotBlank(tipoTisg) && tipPdr !=null && String.isNotBlank(tipPdr)&& commodity !=null && String.isNotBlank(commodity)){
iva =ivaQr.getIvaByGas(tipoTisg,tipPdr,commodity);
System.debug('IVA ' +iva);
response.put('error',false);
response.put('iva', iva);
} else {
throw new WrtsException(System.Label.MissingParameter);
}
System.debug('fdfgdkgdgriopturiturhjkbnlngeeeeeeeeveeeeeeee tipo tisg ' + tipoTisg + ' tipo pdr ' + tipPdr);
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
//SS - AENRTI-894 - 18/01/2021 - START
@AuraEnabled
public static Map<String, Object> callEbdm(String istatCode){
System.debug('callEbdm istatCode= ' +istatCode);
Map<String, List<String>> distRemicode = new Map<String, List<String>>();
Map<String, String> distpIva = new Map<String, String>();
Map<String, Object> res = new Map<String, Object>();
Map<String, String> richiestaDistributoreRemiHeader = new Map<String, String>{
'PIATTA_SORG' => 'SF',
'PIATTA_DEST' => 'EBDM',
'DATA_RICH' => String.valueOf(DateTime.now()),
'DATA_PUBBL' => String.valueOf(DateTime.now()),
'COD_SERVIZIO' => 'ISU30',
'COD_FLUSSO' => '0050'
};
Map<String, String> richiestaDistributoreRemiPosizione = new Map<String, String>{
'COMMODITY' => 'GAS',
'ISTAT_FOR' => istatCode
//'ISTAT_FOR' => '058091'
};
System.debug('@@richiestaDistributoreRemiHeader ' + richiestaDistributoreRemiHeader);
System.debug('@@richiestaDistributoreRemiPosizione ' + richiestaDistributoreRemiPosizione);
try {
CEP_UTL_EbdmCallout service = new CEP_UTL_EbdmCallout();
Object obj = service.invokeEbdmSync(richiestaDistributoreRemiHeader, richiestaDistributoreRemiPosizione);
String objSerialize = Json.serialize(obj);
CEP_WS_EDM01_EbdmSchema.ebdmResponse_element response = (CEP_WS_EDM01_EbdmSchema.ebdmResponse_element) json.deserialize(objSerialize,CEP_WS_EDM01_EbdmSchema.ebdmResponse_element.class);
System.debug('response = ' +response);
String distributor;
String remiCode;
String pIvaDistr;
for(CEP_WS_EDM01_EbdmSchema.itemTbPos_element element : response.TbPos.itemTbPos){
if(('NOME_DISTRIBUTORE').equalsIgnoreCase(element.NomeCampo)){
distributor = element.ValoreCampo;
}
if(('COD_REMI').equalsIgnoreCase(element.NomeCampo)){
remiCode = element.ValoreCampo;
}
if(('PIVA_DISTR').equalsIgnoreCase(element.NomeCampo)){
pIvaDistr = element.ValoreCampo;
}
if(String.isNotBlank(distributor) && String.isNotBlank(remiCode)) {
List<String> remidoceList = new List<String>();
remidoceList.add(remiCode);
distRemicode.put(distributor, remidoceList);
distpIva.put(distributor, pIvaDistr);
distributor = '';
remiCode= '';
pIvaDistr='';
break;
}
}
System.debug('distRemicode ' +distRemicode);
String stIdLeva = 'DISREMI0X';
for(Integer i = 1; i < 10; i++){
String replacement = String.valueOf(i);
String currentIdLeva = stIdLeva.replace('X', replacement);
System.debug('currentIdLeva ' +currentIdLeva);
System.debug('response ' +response);
System.debug('response.TbOut ' +response.TbOut);
System.debug('response.TbOut.itemTbOut ' +response.TbOut.itemTbOut);
for(CEP_WS_EDM01_EbdmSchema.itemTbOut_element element : response.TbOut.itemTbOut){
if(currentIdLeva.equalsIgnoreCase(element.IdLeva) && ('NOME_DISTRIBUTORE').equalsIgnoreCase(element.IdAttributo)){
distributor = element.ValoreAttributo;
System.debug('distributor' +distributor);
}
if(currentIdLeva.equalsIgnoreCase(element.IdLeva) && ('COD_REMI').equalsIgnoreCase(element.IdAttributo)){
remiCode = element.ValoreAttributo;
System.debug('remiCode' +remiCode);
}
if(currentIdLeva.equalsIgnoreCase(element.IdLeva) && ('PIVA_DISTR').equalsIgnoreCase(element.IdAttributo)){
pIvaDistr = element.ValoreAttributo;
System.debug('pIvaDistr' +pIvaDistr);
}
if(String.isNotBlank(distributor) && String.isNotBlank(remiCode)) {
if(distpIva.get(distributor)==null || distpIva.get(distributor) == pIvaDistr)
distpIva.put(distributor, pIvaDistr);
List<String> rmlist = new List<String>();
if(null != distRemicode.get(distributor)) {
rmlist = distRemicode.get(distributor);
if(!rmlist.contains(remiCode)){
rmlist.add(remiCode);
distRemicode.put(distributor, rmlist);
distributor = '';
remiCode= '';
pIvaDistr='';
break;
}
} else {
rmlist.add(remiCode);
distRemicode.put(distributor, rmlist);
if(distpIva.get(distributor)==null || distpIva.get(distributor) == pIvaDistr)
distpIva.put(distributor, pIvaDistr);
distributor = '';
remiCode= '';
pIvaDistr='';
break;
}
res.put('remiCodeList', rmlist);
}
}
System.debug('itezarione ' +i +'distRemicode ' +distRemicode);
}
System.debug('@@@ distRemicode ' +distRemicode);
res.put(DIST_REMI_CODE_KEY, distRemicode);
res.put(DIST_P_IVA_KEY, distpIva);
res.put('pIvaDistr', pIvaDistr);
res.put('distributorName', distributor);
res.put('response' , JSON.serialize(response));
return res;
} catch (Exception e) {
System.debug('Exception callEbdm: ' + e.getMessage() + ' ' + e.getStackTraceString());
return null;
}
}
@AuraEnabled
public static Map<String, Object> updateOpportunityPrescreeningStatus(String prescreeningStatus, String oppId){
Map<String,Object> response = new Map<string,Object>();
Opportunity opp = new Opportunity();
try {
if(prescreeningStatus != null && String.isNotBlank(prescreeningStatus) && oppId != null && String.isNotBlank(oppId)){
opp.PrescreeningStatus__c = prescreeningStatus;
opp.Id = oppId;
DatabaseService.getInstance().updateSObject(opp);
response.put('error', false);
response.put('opp', opp);
}else{
response.put('error', true);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStacktrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getCadastalCode(String cityName){
Map<String,Object> response = new Map<String,Object>();
CityRegistry__c city = new CityRegistry__c();
try {
if(cityName != null && String.isNotBlank(cityName)){
city = cityRegistryQr.findByCityName(cityName);
response.put('error', false);
response.put('city', city);
} else {
throw new WrtsException(System.Label.MissingParameter);
}
} catch (Exception e ) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getCap(String postalCode){
Map<String,Object> response = new Map<String,Object>();
List<Accisa__c> accisa =new List<Accisa__c>();
List<Taxes__c> taxis = new List<Taxes__c>();
// ClimaticZoneCity__c climaticzone = new ClimaticZoneCity__c();
// List<ClimaticZoneCity__c> zone = new List<ClimaticZoneCity__c>();
try {
if(postalCode != null && String.isNotBlank(postalCode)){
taxis = imposteQr.getIstat(postalCode);
if(taxis != null && taxis.size()>0){
accisa = accisaQr.getAcciseByCode(taxis[0].AccisaCode__c);
String descriptionAccisa = '';
if(accisa!=null && accisa.size()>0){
descriptionAccisa = accisa[0].Description__c;
}
response.put('error', false);
response.put('taxis',taxis);
response.put('descriptionAccisa',descriptionAccisa);
}else{
response.put('error', true);
response.put('errorMsg', 'Non sono stati trovati dati imposte per l\'istat ' + postalCode);
}
// climaticzone= climaticQr.getPostalCode(postalCode)[0];
// zone = climaticQr.getPostalCodeFromCassaMezzogiono(postalCode);
// Boolean isCassa = zone.size() > 0;
// response.put('climaticzone', climaticzone);
// response.put('isCassa', isCassa);
}
} catch (Exception e ) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> addizionaleRegionale(String uso , String zone, String regione ){
Map<String, Object> response = new Map<String, Object>();
AdditionalRegion__c addizionale = new AdditionalRegion__c();
List<AdditionalRegion__c> addizionali = new List<AdditionalRegion__c>();
try {
if(uso != null && String.isNotBlank(uso) && zone != null && String.isNotBlank(zone) && regione != null && String.isNotBlank(regione)){
if(uso == 'Uso Tecnologico'){
uso = 'Uso Industriale';
}
addizionali= additionaQr.getAddizionale(uso,zone,regione);
System.debug('ADDIZIONALI ' + addizionali);
if(addizionali.size()>0)
addizionale = additionaQr.getAddizionale(uso,zone,regione)[0];
response.put('error', false);
response.put('addizionale', addizionale);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static List<Map<String,Object>> getIvaPickList(String commodity){
List<Map<String,Object>> response = new List<Map<String,Object>>();
try {
if(commodity != null && String.isNotBlank(commodity))
response = CEP_QR_IvaConfiguration.getInstance().getIvaDescriptions(commodity);
} catch (Exception e ) {
System.debug('e.getMessage() ----> ' + e.getMessage());
System.debug('errorStackTraceString -----> ' + e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getIvaRateAndCode(String commodity,String description){
Map<String,Object> response = new Map<String,Object>();
try {
if(commodity != null && String.isNotBlank(commodity) && description != null && String.isNotBlank(description))
response = CEP_QR_IvaConfiguration.getInstance().getIvaRateAndCode(commodity,description);
} catch (Exception e ) {
System.debug('e.getMessage() ----> ' + e.getMessage());
System.debug('errorStackTraceString -----> ' + e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String, Object> recoverDistributorVatNumber(String opportunityId) {
return recoverDistributorVatNumber(opportunityId, false);
}
public static Map<String, Object> recoverDistributorVatNumber(String opportunityId, Boolean isFunnelBasso){
Map<String, Object> res = new Map<String, Object>();
res.put('error', false);
List<Boolean> osiWithDistributerVatNumbr = new List<Boolean>();
//UnusedLocalVariable Boolean blockOpportunity = false;
Map<String, Object> returnValue = null;
try {
List<OpportunityServiceItem__c> osiList = osiQuery.getOsiWithoutDistributorVatNumber(opportunityId);
List<OpportunityServiceItem__c> osiListToUpdate = new List<OpportunityServiceItem__c>();
for(OpportunityServiceItem__c osi : osiList){
returnValue = callEbdm(osi.PointIstatCode__c);
if(returnValue != null && !returnValue.isEmpty()) {
Map<String, List<String>> distRemicode = ( Map<String, List<String>>) returnValue.get(DIST_REMI_CODE_KEY);
Map<String, String> distpIva = (Map<String, String>) returnValue.get(DIST_P_IVA_KEY);
String distributerKey ;
for(String key : distpIva.keySet()) {
distributerKey = key;
break;
}
if(String.isNotBlank(distributerKey)) {
OpportunityServiceItem__c updatedOsi = new OpportunityServiceItem__c(Id = osi.Id);
Boolean updated = false;
if(isFunnelBasso) {
updatedOsi.DistributorName__c = distributerKey;
updated = true;
}
List<String> remiCodes = distRemicode.get(distributerKey);
if(remiCodes != null && !remiCodes.isEmpty()) {
updatedOsi.RemiCode__c = remiCodes.get(0);
updated = true;
}
String distributerVatNumber = distpIva.get(distributerKey);
if(String.isNotBlank(distributerVatNumber)) {
updatedOsi.DistributorVATNumber__c = distributerVatNumber;
updated = true;
osiWithDistributerVatNumbr.add(true);
}
if(updated) {
osiListToUpdate.add(updatedOsi);
}
}
}
}
if(!osiListToUpdate.isEmpty()){
update osiListToUpdate;
}
Boolean blocckOpportunity = osiWithDistributerVatNumbr.size() != osiList.size();
res.put('blockOpportunity', blocckOpportunity);
} catch (Exception e) {
System.debug('e.getMessage() ----> ' + e.getMessage());
System.debug('errorStackTraceString -----> ' + e.getStackTraceString());
res.put('error', true);
res.put('errorMessage', e.getMessage());
res.put('errorStackTraceString', e.getStackTraceString());
}
return res;
}
@AuraEnabled
public static Map<String,Object> retrieveAtecueDescriptionById(String atecoId){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
String atecueDescription;
try {
atecueDescription = CEP_QR_AtecoTranscode.getInstance().retrieveAtecueDescriptionById(atecoId);
response.put('atecueDescription', atecueDescription);
} catch (Exception e ) {
System.debug('e.getMessage() ----> ' + e.getMessage());
System.debug('errorStackTraceString -----> ' + e.getStackTraceString());
response.put('error', true);
response.put('errorMessage', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getPreviousProduct(String accountID, String commodity, String servicePointCode){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
try {
ServicePoint__c servicePoint;
if(commodity.equalsIgnoreCase('Gas')){
servicePoint = servicePointQuery.getPreviousProductGas(accountID,servicePointCode);
response.put('servicePoint', servicePoint);
}else if(commodity.equalsIgnoreCase('Electric')){
servicePoint = servicePointQuery.getPreviousProductEle(accountID,servicePointCode);
response.put('servicePoint', servicePoint);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMessage', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@TestVisible
private static void handleBusinessGreen(OpportunityServiceItem__c osi){
Boolean isBusiness = FeatureManagement.checkPermission('CEP_Large_Sme_Permission')
|| FeatureManagement.checkPermission('CEP_Small_Business_Permission')
|| FeatureManagement.checkPermission('CEP_CP_AgencyReseller')
|| FeatureManagement.checkPermission('CEP_Large_Aema_Permission')
|| FeatureManagement.checkPermission('CEP_isUmbriaEnergy');
if(isBusiness){
List<CEP_SRV_CPQ.OptionalComponent> listOptionEle = CEP_SRV_CPQ.getOptionalComponents(osi.Id);
if(!listOptionEle.isEmpty()){
for(CEP_SRV_CPQ.OptionalComponent ele : listOptionEle){
osi.GreenPower__c = ele.sapCode == 'EV' ? 'SI' : '';
osi.CO2__c = ele.sapCode == 'CO2_GAS' ? 'SI' : '';
}
CEP_SRV_OpportunityServiceItem.updateOsi(osi);
}
}
}
@AuraEnabled
public static Id getApproverId(){
Id userId = UserInfo.getUserId();
Id step1 = [SELECT Id, ManagerId FROM User WHERE Id =: userId].ManagerId;
Id step2 = [SELECT Id, ManagerId FROM User WHERE Id =: step1].ManagerId;
if(step2 == null)
return step1;
else
return step2;
/*
Id userId = UserInfo.getUserId();
String role = [SELECT Id, UserRole.DeveloperName FROM User WHERE Id =: userId].UserRole.DeveloperName;
String approverRole;
if(role == 'CEP_KAM_SME')
approverRole = 'CEP_Direttore_Commerciale_SME';
else if(role == 'CEP_KAM')
approverRole = 'CEP_Direttore_Commerciale';
else if(role == 'CEP_KAM_AEMA')
approverRole = 'CEP_Direttore_Commerciale_AEMA';
else if(role == 'CEP_KAM_UE')
approverRole = 'CEP_Direttore_Commerciale_UE';
Id approverId = [SELECT Id, UserRole.DeveloperName FROM User WHERE UserRole.DeveloperName =: approverRole LIMIT 1].Id;
return approverId;
*/
}
@AuraEnabled
public static Map<String,Object> getPreviousTraderName(String Piva){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
try {
String traderName = osiQuery.getPreviousTraderName(Piva);
response.put('name',traderName);
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getUsoTecnologicoEnabled(){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
Boolean isEnabled = true;
try {
isEnabled = CEP_QR_UsoTecnologicoEnabled.getInstance().getUsoTecnologicoEnabled();
response.put('enabled',isEnabled);
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> checkAccountResidence(String accountid, String pod){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
List<Asset> accountAssets = new List<Asset>();
try {
if(accountid != null){
if(pod != null){
accountAssets = [SELECT ID, ResidentialFlag__c FROM Asset WHERE AccountId =: accountid
AND Commodity__c = 'Electric' AND Status = 'Attivo' AND ServicePointCode__c != :pod];
}else {
accountAssets = [SELECT ID, ResidentialFlag__c FROM Asset WHERE AccountId =: accountid AND Commodity__c = 'Electric' AND Status = 'Attivo'];
}
if(accountAssets != null){
for(Asset asset: accountAssets){
if(asset.ResidentialFlag__c){
response.put('hasResidence',true);
break;
}
}
}
}else {
response.put('error', true);
response.put('errorMsg', 'Manca l\'id del Account!');
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getCadastralData(String servicePointId, String accountId){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
OpportunityServiceItem__c cadastralData;
try {
if(servicePointId != null){
List<ServicePoint__c> servicePoint = [SELECT Id, CurrentAsset__r.OriginCase__r.OpportunityServiceItem__c FROM ServicePoint__c WHERE ID =: servicePointId AND Account__c =: accountId AND CurrentAsset__r.OriginCase__c <> null];
if(servicePoint != null && servicePoint.size() > 0 && servicePoint.get(0).CurrentAsset__r.OriginCase__r.OpportunityServiceItem__c != null){
List<OpportunityServiceItem__c> osi = osiQuery.getCadastralDataById(servicePoint.get(0).CurrentAsset__r.OriginCase__r.OpportunityServiceItem__c);
if(osi!= null && osi.size() > 0) {
cadastralData = osi.get(0);
}
}
}
response.put('cadastralData', cadastralData);
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getSearchAccounts(String firstName,String lastName,String codeFiscal,String partitaIva,String company){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
String query;
try {
if((firstName != '' && firstName != null) || (lastName != '' && lastName != null) ||(codeFiscal != '' && codeFiscal != null)
||(partitaIva != '' && partitaIva != null) || (company != '' && company != null)){
query = 'Select Id,Name,FirstName__c,LastName__c,FiscalCode__c,VATNumber__c,CompanyName__c FROM Account WHERE Id <> NULL ';
if(firstName != '' && firstName != null) {
query += ' AND FirstName__c =:firstName ';
}
if(lastName != '' && lastName != null) {
query += ' AND LastName__c =:lastName';
}
if(codeFiscal != '' && codeFiscal != null) {
query += ' AND FiscalCode__c=:codeFiscal';
}
if(partitaIva != '' && partitaIva != null) {
query += ' AND VATNumber__c =:partitaIva';
}
if(company != '' && company != null) {
query += ' AND CompanyName__c=:company';
}
query += ' AND AccountRole__c includes (\'BSE\') ';
}
if(query!=null){
List<Account> accounts = Database.query(query);
response.put('data', accounts);
}else{
response.put('data', null);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorStackTraceString', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getAccountById(String accountId){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
response.put('account', null);
try {
if(accountid != null && accountid!=''){
Account account= [Select Id, FirstName__c, LastName__c, CompanyName__c, VATNumber__c, FiscalCode__c,Phone,AtecoName__c,MailingStreetType__c,
MailingStreetName__c,MailingStreetNumber__c,ResidentialStreetNumberExtn__c,MailingPostalCode__c,
MailingLocality__c,MailingProvince__c,MailingCountry__c,PersonOtherAddress
FROM Account WHERE Id =: accountId ];
response.put('account', account);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getAccountByAssetId(String pod){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
response.put('accountUscente', null);
try {
if(pod != null && pod!=''){
String sObjectNameAsset = 'Asset';
String selectedFieldsAsset = 'Account.Id';
String clauseConditionAsset = 'ServicePointKey__c = \''+pod+'\'';
List<Asset> assetList = CEP_UTL_SObject.getListExecuteRequest(sObjectNameAsset,selectedFieldsAsset,clauseConditionAsset,null);
Asset asset = assetList.get(0);
String accountId = asset.Account.Id;
String sObjectNameAccount = 'Account';
String selectedFieldsAccount = 'Id, Code__c, FirstName__c, LastName__c, CompanyName__c, VATNumber__c, FiscalCode__c,Phone,AtecoName__c';
String clauseConditionAccount = 'Id = \''+accountId+'\'';
system.debug('accountId ' + accountId);
List<Account> accountUscenteList = CEP_UTL_SObject.getListExecuteRequest(sObjectNameAccount,selectedFieldsAccount,clauseConditionAccount,null);
if(accountUscenteList != null)system.debug('accountUscenteList ' + accountUscenteList);
Account accountUscente = accountUscenteList.get(0);
response.put('accountUscente', accountUscente);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
}
return response;
}
@AuraEnabled
public static Map<String,Object> getAccountBeneficiarioByAssetPod(String pod){
Map<String,Object> response = new Map<String,Object>();
response.put('error', false);
response.put('accountBeneficiario', null);
try {
if(pod != null && pod!=''){
String sObjectNameAsset = 'Asset';
String selectedFieldsAsset = 'BeneficiaryAccount__c';
String clauseConditionAsset = 'ServicePointKey__c = \'' + pod + '\'';
List<Asset> assetList = CEP_UTL_SObject.getListExecuteRequest(sObjectNameAsset, selectedFieldsAsset, clauseConditionAsset, null);
Asset asset = assetList.get(0);
String accountId = asset?.BeneficiaryAccount__c;
String sObjectNameAccount = 'Account';
String selectedFieldsAccount = 'Id, Code__c, FirstName__c, LastName__c, CompanyName__c, VATNumber__c, FiscalCode__c,Phone,AtecoName__c';
String clauseConditionAccount = 'Id = \'' + accountId + '\'';
List<Account> accountUscenteList = CEP_UTL_SObject.getListExecuteRequest(sObjectNameAccount, selectedFieldsAccount, clauseConditionAccount, null);
Account accountBeneficiario = accountUscenteList.get(0);
response.put('accountBeneficiario', accountBeneficiario);
}
} catch (Exception e) {
response.put('error', true);
response.put('errorMsg', e.getMessage());
}
return response;
}
@TestVisible
public static void setOsiAddress(OpportunityServiceItem__c osi, ServicePoint__c servicePoint){
osi.PointStreetName__c = servicePoint.PointStreetName__c;
osi.PointStreetNumber__c = servicePoint.PointStreetNumber__c;
osi.PointStreetNumberExtn__c = servicePoint.PointStreetNumberExtn__c;
osi.PointPostalCode__c = servicePoint.PointPostalCode__c;
osi.PointCity__c = servicePoint.PointCity__c;
osi.PointCountry__c = servicePoint.PointCountry__c;
osi.PointStreetType__c = servicePoint.PointStreetType__c;
osi.PointApartment__c = servicePoint.PointApartment__c;
osi.PointBuilding__c = servicePoint.PointBuilding__c;
osi.PointLocality__c = servicePoint.PointLocality__c;
osi.PointProvince__c = servicePoint.PointProvince__c;
osi.PointFloor__c = servicePoint.PointFloor__c;
osi.PointAddressNormalized__c = servicePoint.PointAddressNormalized__c;
osi.PointIstatCode__c = servicePoint.PointIstatCode__c;
osi.PointCadastralCode__c = servicePoint.PointCadastralCode__c;
osi.PointStaircase__c = servicePoint.PointStaircase__c;
osi.PointAt__c = servicePoint.PointAt__c;
osi.PointAddressForced__c = servicePoint.PointAddressForced__c;
osi.PointAddressForcedBy__c = servicePoint.PointAddressForcedBy__c;
osi.PointStreetNumberType__c = servicePoint.PointStreetNumberType__c;
}
@AuraEnabled
public static Map<String,Object> checkResidenceAndUsageFromAsset(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
String COMMODITY_ELE = 'Electric';
String COMMODITY_GAS = 'Gas';
String USAGE_DOMMESTICO = 'Domestico';
String USAGE_DOMMESTICO_CLIENTE = 'PDR nella titolarità di un cliente domestico';
String USAGE_DOMMESTICO_CONDOMINIO = 'PDR relativo a un condominio con uso domestico';
try{
response.put('error', false);
response.put('errorToShow', false);
String pod = (String) params.get('pod');
String commodity = (String) params.get('commodity');
ServicePoint__c servicePoint = [SELECT Id, CurrentAsset__r.Usage__c,CurrentAsset__r.ResidentialFlag__c, PDRType__c FROM ServicePoint__c WHERE Key__c =: pod ];
if(servicePoint !=null){
if(commodity.equalsIgnoreCase(COMMODITY_ELE)){
if(servicePoint.CurrentAsset__c == null || servicePoint.CurrentAsset__r.Usage__c == null || !servicePoint.CurrentAsset__r.Usage__c.equalsIgnoreCase(USAGE_DOMMESTICO) || servicePoint.CurrentAsset__r.ResidentialFlag__c != true){
response.put('errorToShow', true);
}
}else{
if(servicePoint.PDRType__c == null || (!servicePoint.PDRType__c.equalsIgnoreCase(USAGE_DOMMESTICO_CLIENTE) && !servicePoint.PDRType__c.equalsIgnoreCase(USAGE_DOMMESTICO_CONDOMINIO))){
response.put('errorToShow', true);
}
}
}
} catch(Exception ex){
response.put('error', true);
response.put('errorMsg', ex.getMessage());
response.put('errorTrace', ex.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Asset getContractAccount(String assetId){
Asset ass = [SELECT ContractAccount__c, ContractAccount__r.PaymentTerms__c FROM Asset WHERE Id =: assetId];
return ass;
}
@AuraEnabled
public static Map<String,Object> checkVolturaCambioControparteCommerciale(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
String assetId = params.get('assetId');
String accId = params.get('accountId');
Account acc = [SELECT Segment__c, Name, JointVenture__r.Name, Account.RecordTypeDeveloperName__c FROM Account WHERE Id =: accId];
response.put('isVolturaCambioControparteCommerciale', false);
try{
if(acc != null && acc.Segment__c == 'Mass Market'){
Asset a = new Asset();
if(assetId!=null && String.isNotBlank(assetId)){
a = CEP_QR_Asset.getInstance().getById(assetId);
if(a!=null /*&& a.DistributorName__c!=null && !a.DistributorName__c.equalsIgnoreCase('acea distribuzione spa') */&& a.AccountId != null && a.Account.RecordType.DeveloperName.equalsIgnoreCase('cep_rt_resellerendcustomer')){
response.put('isVolturaCambioControparteCommerciale', true);
}
}
response.put('error', false);
response.put('asset', a);
} else {
Asset a = new Asset();
if(assetId!=null && String.isNotBlank(assetId)){
a = CEP_QR_Asset.getInstance().getById(assetId);
if(acc != null && acc.RecordTypeDeveloperName__c != 'CEP_RT_Reseller'){
if(a!=null && (a.Status == 'Attivo' || a.Status == 'Sospeso') && a.Account.JointVenture__r.Name != acc.JointVenture__r.Name){
response.put('isVolturaCambioControparteCommerciale', true);
}
} else {
if(a!=null && (a.Status == 'Attivo' || a.Status == 'Sospeso') && a.Account.Name != acc.Name){
response.put('isVolturaCambioControparteCommerciale', true);
}
}
}
response.put('error', false);
response.put('asset', a);
}
}
catch(Exception e){
response.put('error', true);
response.put('errorMsg', e.getMessage());
response.put('errorTrace', e.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String,Object> checkPdrAttivazioneRemiDirette(Map<String,String> params){
Map<String,Object> response = new Map<String,Object>();
try{
String RemiDirette = 'RemiDirette';
String RinnovoRemiDirette = 'RinnovoRemiDirette';
String RemiDiretteORinnovo = (String) params.get('RemiDiretteORinnovo');
response.put('error', false);
Boolean isForRemiDirette = RemiDiretteORinnovo.equalsIgnoreCase(RemiDirette);
Boolean isForRinnovoRemiDirette = RemiDiretteORinnovo.equalsIgnoreCase(RinnovoRemiDirette);
String pod = (String) params.get('pod');
String accId = params.get('accountId');
String podTobeSearched= pod.substring(0,5);
String podTobeSaved = '';
String likeOperator = podTobeSearched + '%';
System.debug('isForRemiDirette: '+isForRemiDirette);
System.debug('isForRinnovoRemiDirette: '+isForRinnovoRemiDirette);
if(isForRemiDirette){
OpportunityServiceItem__c osi = osiQuery.getLatestOpportunityServiceItem(likeOperator);
if(osi != null){
//String last = pod.substring(5, s1.length());
Integer parseString = osiQuery.getIntFromServicePointCode(osi.ServicePointCode__c);
//Integer parseString = Integer.valueOf(last);
System.debug('parseString: '+parseString);
Integer incremented = parseString+1;
String incrementedInteger = String.valueOf(incremented);
Integer numberOfZeroToBeAdded = (pod.length() -5) - incrementedInteger.length();
System.debug('zeroToBeAdded: '+numberOfZeroToBeAdded);
String valueOfZeros = '';
for(Integer i=0;i<numberOfZeroToBeAdded;i++){
valueOfZeros += '0';
}
podTobeSaved = pod.substring(0,5)+valueOfZeros+incrementedInteger;
System.debug('podTobeSaved :' + podTobeSaved);
}
if(String.isBlank(podTobeSaved)){
podTobeSaved = pod;
}
}
else if(isForRinnovoRemiDirette){
List<Asset> asset = CEP_QR_Asset.getInstance().getAssetByAccountIdAndPod(accId, pod);
if(!asset.isEmpty() ){
podTobeSaved = asset[0].ServicePointCode__c;
}
}
response.put('podTobeSaved', podTobeSaved);
response.put('isForRinnovoRemiDirette', isForRinnovoRemiDirette);
} catch(Exception ex){
response.put('error', true);
response.put('errorMsg', ex.getMessage());
response.put('errorTrace', ex.getStackTraceString());
}
return response;
}
@AuraEnabled
public static Map<String, Object> ConfrontoProdotti(string assetId, string opportunityId) {
Map<String, Object> response = new Map<String, Object>();
list<quote> quoteList = new list<quote>();
list<QuoteLineItem> quoteLineItemList = new list<QuoteLineItem>();
system.debug('apex ConfrontoProdotti');
system.debug('apex assetId ' + assetId);
system.debug('apex opportunityId ' + opportunityId);
try {
system.debug('sono nel try ');
response.put('error', false);
if (string.isnotblank(opportunityId) && string.isnotblank(assetId)) {
system.debug('sono nel 1 ');
quoteList = [select id from quote where OpportunityId = :opportunityId limit 1];
if (quoteList.size() > 0 && quoteList[0].id != null) {
system.debug('sono nel 2 ');
quoteLineItemList = [select id, Product2Id from QuoteLineItem where QuoteId = :quoteList[0].id limit 1];
if (quoteList.size() > 0 && quoteLineItemList[0].Product2Id != null) {
system.debug('sono nel 3 ');
if (quoteLineItemList[0].Product2Id != assetId) {
response.put('ProdottiUguali', false);
system.debug('apex ConfrontoProdotti false');
} else {
response.put('ProdottiUguali', true);
system.debug('apex ConfrontoProdotti true');
}
}
}
}
} catch (Exception ex) {
system.debug(LoggingLevel.ERROR, 'ex.getMessage() '+ ex.getMessage());
system.debug(LoggingLevel.ERROR, 'ex.getStackTraceString() '+ ex.getStackTraceString());
response.put('error', true);
response.put('errorMsg', ex.getMessage());
response.put('errorTrace', ex.getStackTraceString());
}
return response;
}
}Editor is loading...