Você está aqui:
InsPolicyService:createPolicyVersion
Use esse serviço para criar uma nova versão de uma política existente enquanto mantém o registro da política existente como está.
Esse serviço habilita o controle de versões da política. Todas as alterações em uma política são rastreadas em diferentes versões dessa política. Você pode usá-lo em modificar a política e cancelar OmniScripts de política e Procedimentos de integração. Você também pode usar esse serviço para restaurar apólices expiradas e canceladas.
Esse serviço funciona com o Salesforce Financial Services Cloud para suporte opcional à criação de Agenda de pagamento.
Como funciona
-
Assume a
assetIdoupolicyIdda política atual e o JSON indicado pelainputKey. -
Cria um clone da política original.
-
Se houver uma agenda de pagamento existente, o serviço atualizará a agenda de pagamento e criará uma entrada de agenda de pagamento na data efetiva de aprovação. Se a
useIsPaidFlagfor verdadeira, todas as entradas futuras da agenda de pagamento (da data de vigência) sem transações (para as quais o campo de status éValide o campoisPaidestá desmarcado) serão atualizadas com base em valores mais recentes de prêmio, impostos e taxas. A nova entrada da agenda de pagamento contém os valores ajustados de prêmio, imposto e tarifa com base em novos prêmios, impostos e tarifas e entradas da agenda de pagamento atualizadas. Além disso, os registros de contribuição dos componentes da apólice em cada entrada da agenda de pagamento são atualizados. -
O serviço usa o método de cálculo de prêmio da apólice anterior, o tipo de pagamento e a frequência do prêmio, e o prêmio total para prazo, a tarifa total para prazo e o imposto total para prazo da nova apólice para gerar a agenda de pagamento modificada. Além da criação da transação, os dados de detalhamento da transação são preenchidos no objeto de detalhes da transação. Esse objeto armazena dados sobre quanto cada ativo, participante ou cobertura contribui para os valores totais da transação em termos de prêmio, impostos e taxas. Somente ativos, participantes e coberturas com pelo menos um valor maior que zero para prêmio, impostos ou tarifas são exibidos.
Nota Método de cálculo premium, Tipo de pagamento e Frequência premium não são copiados da política anterior e devem ser passados como entradas para o serviço por meio do JSON. -
Se
includeRevenueScheduleestiver definido como true, ele chamará o serviço de agenda de receita para modificar a agenda de receita. -
Se for a primeira modificação desta política, o serviço marcará a
originalVersionId__ce apreviousVersionId__ccom a mesmaassetId. Se essa não for a primeira modificação desta política, o serviço passará aOriginalVersionId__cpara a nova versão e carimbará aassetIdanterior paraPreviousVersionId__cna nova política. -
Se os nós
taxesAndFees,taxAmounte/oufeeAmountforem incluídos no JSON de entrada, os campos e/ou registros de taxa/imposto correspondentes serão criados e divididos proporcionalmente na nova versão da política. -
Se aplicável, uma InsurancePolicyTransaction será criada para o ajuste de pagamento.
-
Se
calculateCommissionfortrue, o serviço chamaráInsurancePolicyService.calculateAndSaveCommission, que preparará a entrada para os serviços deInsCommissionService.calculateeInsCommissionService.saveCommissions. Depois que o serviço de cálculo processa a entrada, o serviço de salvamento armazena o valor calculado emTotalCommissionAmount, então totaliza o valor e o adiciona àTotalCommissionAmountda Política original. - Se o sinalizador de
disableAttributeCategoriesno serviçogetquotedetailestiver definido como true, o serviço omitirá o nó attributeCategory da resposta e o serviçocreatePolicyVersionnão criará termos de política. Para garantir que o serviço decreatePolicyVersioncrie termos de política, defina o sinalizador dedisableAttributeCategoriesno serviço degetQuoteDetailcomo false.
Impostos e taxas
É assim que esse serviço funciona para impostos e tarifas:
-
Se o campo
taxesAndFeesfor especificado em um registro JSON, um registro deAssetPricingAdjustment__ccorrespondente persistirá para cada item na lista detaxesAndFees. -
Se o campo
taxAmountfor especificado em um registro JSON, o campoTaxAmount__cserá definido como o valor do campotaxAmountno objetoAssetItemcriado. -
Se o campo
feeAmountfor especificado em um registro JSON, o campoFeeAmount__cserá definido como o valor do campofeeAmountnoAssetItemcriado.
No que se refere à política atual (criada recentemente):
-
Se a política atual tiver um
TotalTaxAmount__c, esse valor será dividido proporcionalmente entre as datas de vigência e de término e definido no campoTotalTaxForTerm__c. -
Se a política atual tiver um
TotalFeeAmount__c, esse valor será dividido proporcionalmente entre as datas de vigência e de término e definido no campoTotalFeeForTerm__c. -
Se a
AssetItemna política atual tiver umTaxAmount__c, esse valor será dividido proporcionalmente entre as datas de vigência e de término e definido no campoProratedTaxAmount__c. -
Se a
AssetItemna política atual tiver umFeeAmount__c, esse valor será dividido proporcionalmente entre as datas de vigência e de término e definido no campoProratedFeeAmount__c.
Para apólices já criadas, é assim que os impostos e tarifas são transferidos:
-
Se a política anterior tiver um
TotalTaxAmount__c, esse valor será rateado sobre as novas datas de vigência e término e definido no campoTotalTaxForTerm__c. -
Se a política anterior tiver um
TotalFeeAmount__c, esse valor será rateado sobre as novas datas de vigência e término e definido no campoTotalFeeForTerm__c. -
Se os campos AssetItem tiverem um
TaxAmount__c, esse valor será rateado sobre as novas datas de vigência e término e definido no campoProratedTaxAmount__c. -
Se os campos de
AssetItemna política anterior tiverem umFeeAmount__c, esse valor será dividido proporcionalmente entre as novas datas de vigência e de término e definido no campoProratedFeeAmount__c.
Por fim, se a opção createTransaction (ver abaixo) for definida como true e a nova versão da apólice tiver impostos e taxas associados, os campos TaxAmount__c e FeeAmount__c na transação criada serão definidos para a diferença entre a nova (atual) apólice e as TotalTaxForTerm__c e TotalFeeForTerm__c da apólice anterior.
Opções remotas
JSON de entrada
Este serviço procura os inputKey especificados no JSON do produto.
"policyJson": {
"productConfigurationDetail": {
"insuredItems": {
"Auto": [{
"instanceKey": "2015 Lexus LX250",
"autoLicNum": "Lexus",
"autoModel": "LX150",
"autoYear": 2015,
"BodyClass": "Sedan/Saloon",
"VehicleType": "PASSENGER CAR",
"isPrimary": true
"isParent": true
},
{
"instanceKey": "2006 Honda Odyssey",
"autoLicNum": "Honda",
"autoModel": "Odyssey",
"autoYear": 2006,
"BodyClass": "Minivan",
"VehicleType": "MULTIPURPOSE PASSENGER VEHICLE (MPV)",
"isPrimary": true
"isParent": true
},
{
"instanceKey": "2018 530 BMW",
"autoLicNum": "530",
"autoModel": "BMW",
"autoYear": 2018,
"BodyClass": "Sedan/Saloon",
"VehicleType": "PASSENGER CAR",
"isPrimary": true
"isParent": true
},
{
"instanceKey": "2016 Camry Toyota",
"autoLicNum": "Camry",
"autoModel": "Toyota",
"autoYear": 2016,
"BodyClass": "Sedan/Saloon",
"VehicleType": "PASSENGER CAR",
"isPrimary": true
"isParent": true
}
],
"Driver": [{
"AGE": 20,
"instanceKey": "Joan Smith",
"FN": "Joan",
"GENDER": "Female",
"LN": "Smith",
"isPrimary": false
"isParent": false
},
{
"AGE": 30,
"instanceKey": "John Smith",
"FN": "John",
"GENDER": "Male",
"LN": "Smith",
"isPrimary": false
"isParent": false
},
{
"AGE": 30,
"instanceKey": "Robert Henderson",
"FN": "Robert",
"GENDER": "Male",
"LN": "Henderson",
"isPrimary": false
"isParent": false
},
{
"AGE": 20,
"instanceKey": "Kinsey Schell",
"FN": "Kinsey",
"GENDER": "Female",
"LN": "Schell",
"isPrimary": false
"isParent": false
}
]
},
"accountId": "001f400000RrQSrAAN"
}Se a opção de controle remoto de isCreatingPolicyTerms estiver definida como true, um nó de policyTermIds será incluído. Aqui está um exemplo de nó de policyTermIds:
{
"policyId": "02i6g000000h110AAA",
"policyTermIds": [
"a5X6g000001LeUUEA0",
"a5X6g000001LeUVEA0",
"a5X6g000001LeUWEA0",
"a5X6g000001LeUXEA0",
"a5X6g000001LeUYEA0",
"a5X6g000001LeUZEA0",
"a5X6g000001LeUaEAK",
"a5X6g000001LeUbEAK",
"a5X6g000001LeUcEAK",
"a5X6g000001LeUdEAK",
"a5X6g000001LeUeEAK",
"a5X6g000001LeUfEAK"
]
}
