name: contestacao_tool version: 1 start: registrar_protocolo nodes: # 1. Registrar protocolo — primeiro passo ao entrar em contestação - id: registrar_protocolo action: registrar_protocolo input: msisdn: $.input.msisdn social_sec_no: $.input.social_sec_no scenario: "contestacao" request_status: "Aberto" status: "OPENED" # 2. Consultar perfil de fatura (forma de pagamento) - id: consultar_perfil_fatura action: consultar_perfil_fatura input: msisdn: $.input.msisdn # 3. Enviar SMS com código do boleto - id: enviar_sms action: enviar_sms input: msisdn: $.input.msisdn message: $.input.mensagem_sms # 3.1 Consultar status da fatura (CompleteInvoices) - id: check_invoice_status action: check_invoice_status input: msisdn: $.input.msisdn invoice_id: $.input.invoice_id current_invoice_number: $.input.current_invoice_number # 4. Abrir contestação no serviço dedicado - id: abrir_contestacao_cliente action: abrir_contestacao_cliente input: msisdn: $.input.msisdn social_sec_no: $.input.social_sec_no customer_id: $.input.customer_id current_invoice_number: $.input.current_invoice_number invoice_id: $.input.invoice_id current_invoice_due_date: $.input.current_invoice_due_date servico: $.input.servico valor: $.input.valor descricao: $.input.descricao items: $.input.items protocolo_id: $.vars.registrar_protocolo.protocolo_id customer_type: $.input.customer_type customer_status: $.input.customer_status invoice_status: $.vars.check_invoice_status.invoice_status invoice_amount_open: $.input.invoice_amount_open invoice_amount: $.input.invoice_amount contestation_type: $.input.contestation_type adjust_reason: $.input.adjust_reason refund_option: $.input.refund_option manual_conta_certa_indicator: $.input.manual_conta_certa_indicator double_refund: $.input.double_refund user_id: $.input.user_id message_id: $.input.message_id client_id: $.input.client_id tipo_atendimento: $.input.tipo_atendimento skip_invoice_item_validation: $.input.skip_invoice_item_validation # 5. Consultar contrato para verificar data de corte - id: consultar_contrato_corte action: consultar_contrato_corte input: msisdn: $.input.msisdn current_invoice_due_date: $.input.current_invoice_due_date # 6. Abrir SR de Conta Certa Manual (quando após data de corte) - id: abrir_sr_conta_certa_manual action: abrir_sr_conta_certa_manual input: msisdn: $.input.msisdn social_sec_no: $.input.social_sec_no dia_vencimento: $.vars.consultar_contrato_corte.dia_vencimento request_status: "Encaminhado" status: "Encaminhado" # 7. Atualizar status do protocolo principal — último passo - id: atualizar_status_sr action: atualizar_status_sr input: msisdn: $.input.msisdn social_sec_no: $.input.social_sec_no protocolo_id: $.vars.registrar_protocolo.protocolo_id dia_vencimento: $.vars.abrir_sr_conta_certa_manual.dia_vencimento scenario: "contestacao" channel: "AIAGENTCR" status: "Fechado" client_id: "AIAGENTCR" # 8. Atualiza status do protocolo principal após Conta Certa Manual - id: atualizar_status_sr_registro action: atualizar_status_sr input: msisdn: $.input.msisdn social_sec_no: $.input.social_sec_no protocolo_id: $.vars.abrir_sr_conta_certa_manual.sr_conta_certa_id scenario: "conta_certa_manual" status: "Encaminhado" client_id: "AIAGENTCR" edges: # Protocolo registrado → consultar perfil de fatura - from: registrar_protocolo to: consultar_perfil_fatura # Consultou perfil → consulta status da fatura (CompleteInvoices) - from: consultar_perfil_fatura to: check_invoice_status priority: 10 # Todas as formas → abrir contestação - from: check_invoice_status to: abrir_contestacao_cliente priority: 10 # Após contestação: quando necessário, enviar SMS - from: abrir_contestacao_cliente to: enviar_sms priority: 10 when: all: - exists: $.vars.abrir_contestacao_cliente.barcode - neq: [$.vars.abrir_contestacao_cliente.barcode, ""] # Após contestação (sem SMS) → verificar data de corte - from: abrir_contestacao_cliente to: consultar_contrato_corte priority: 99 # Após SMS → verificar data de corte - from: enviar_sms to: consultar_contrato_corte # Após data de corte → abrir SR Conta Certa Manual - from: consultar_contrato_corte to: abrir_sr_conta_certa_manual priority: 10 when: all: - eq: [$.vars.consultar_contrato_corte.apos_data_corte, true] - eq: [$.vars.consultar_contrato_corte.contestation_success, true] - any: - eq: [$.input.manual_conta_certa_indicator, true] - eq: [$.vars.abrir_contestacao_cliente.manual_conta_certa_indicator, true] # Antes da data de corte → ir direto para fechar protocolo - from: consultar_contrato_corte to: atualizar_status_sr priority: 99 # Após SR manual → fechar protocolo - from: abrir_sr_conta_certa_manual to: atualizar_status_sr_registro priority: 10 # Protocolo principal de contestação atualizado após Conta Certa Manual → END - from: atualizar_status_sr_registro to: END # Protocolo atualizado → END - from: atualizar_status_sr to: END