Seu Template de Dados para Processamento de Devoluções e Reembolsos
Seu Template de Dados para Processamento de Devoluções e Reembolsos
- Atributos recomendados para coletar
- Atividades-chave a monitorizar
- Guia de extração do NetSuite
Atributos de Processamento de Devoluções e Reembolsos
| Nome | Descrição | ||
|---|---|---|---|
| Event Timestamp EventTimestamp | A data e hora exatas em que a atividade ocorreu, servindo como a espinha dorsal cronológica do processo. | ||
| Descrição O Event Timestamp registra o exato momento em que uma atividade ocorreu. Este dado é crucial para sequenciar os eventos corretamente e para toda análise temporal. É usado para calcular durações entre atividades, tempos totais de ciclo e tempos de espera, fundamentais para monitoramento de desempenho, análise de gargalos e verificação de conformidade de SLA. Os timestamps precisam ser precisos para garantir a confiabilidade dos insights de Process Mining. Por que é importante Este atributo fornece a ordem cronológica, necessária para descobrir o fluxo do processo e calcular métricas como tempos de ciclo e de espera. Onde obter Geralmente extraído dos campos 'Data de Criação', 'Última Modificação' ou timestamps das Notas do Sistema no NetSuite. Exemplos 2023-10-26T10:00:00Z2023-10-26T14:35:10Z2023-10-27T09:12:05Z | |||
| ID do Caso de Devolução ReturnCaseId | O identificador único para um único caso de devolução ou reembolso, vinculando todas as atividades relacionadas, do início ao fim. | ||
| Descrição O ID do Caso de Devolução serve como o identificador principal para rastrear a jornada ponta a ponta. Cada ID único corresponde a uma única autorização de devolução, permitindo a análise completa de todos os eventos associados, como recebimento, inspeção e reembolso. No Process Mining, este ID é essencial para reconstruir o fluxo completo do processo para cada caso, permitindo calcular tempos de ciclo e identificar desvios. Por que é importante Atributo fundamental para o Process Mining, pois conecta eventos individuais em instâncias de processo ponta a ponta, permitindo analisar fluxos e desempenho. Onde obter Normalmente é o ID Interno ou ID da Transação da Autorização de Devolução no NetSuite. Exemplos RMA-0012345RMA-0012346RMA-0012347 | |||
| Nome da Atividade ActivityName | O nome do evento ou etapa específica que ocorreu no processo de devolução, como 'Item Inspecionado' ou 'Reembolso Processado'. | ||
| Descrição O Nome da Atividade descreve uma etapa ou marco específico no ciclo de vida de devoluções e reembolsos. Esses eventos são ordenados pelos timestamps para construir o fluxo do processo. Analisar a sequência e frequência das atividades ajuda a identificar os caminhos mais comuns, gargalos entre etapas e retrabalhos. Exemplos incluem 'Autorização de Devolução Criada', 'Item Recebido' e 'Credit Memo Aprovado'. Por que é importante Este atributo define as etapas do processo. É essencial para visualizar o mapa do processo, analisar variações de fluxo e identificar gargalos ou loops de retrabalho. Onde obter Este atributo geralmente vem das mudanças de status em registros como Autorizações de Devolução e Credit Memos, ou de notas do sistema e logs personalizados. Exemplos Autorização de devolução criadaItem recebidoItem inspecionadoReembolso ProcessadoAutorização de Devolução Fechada | |||
| Sistema de Origem SourceSystem | O sistema de onde os dados foram extraídos, usado para rastrear a origem da informação. | ||
| Descrição Este atributo identifica a origem dos dados do processo. Neste contexto, será normalmente 'NetSuite'. Especificar o sistema de origem é importante em ambientes com múltiplos sistemas, garantindo a rastreabilidade dos dados. Por que é importante Identifica a origem dos dados, o que é crucial para governança de dados, resolução de problemas e em cenários onde dados de múltiplos sistemas são combinados para uma visão holística do processo. Onde obter Valor estático ('NetSuite') adicionado durante a extração e transformação dos dados. Exemplos NetSuiteNetSuite ERP | |||
| Última Atualização de Dados LastDataUpdate | O timestamp que indica a última vez que os dados deste processo foram atualizados. | ||
| Descrição Este atributo registra quando os dados foram atualizados pela última vez. É um metadado crítico que informa a atualidade da análise. Exibir isso nos dashboards ajuda a alinhar expectativas e garante decisões baseadas em dados recentes. Por que é importante Oferece transparência sobre a atualização dos dados, o que é essencial para que os usuários confiem na análise e entendam sua relevância para o estado atual das operações. Onde obter Este timestamp é gerado e adicionado durante o processo de extração, transformação e carga (ETL). Exemplos 2024-05-21T02:00:00Z2024-05-22T02:00:00Z | |||
| Agente de Processamento ProcessingAgent | O funcionário ou usuário que realizou uma atividade específica no processo de devolução. | ||
| Descrição O Agente de Processamento identifica o responsável por executar uma tarefa, como aprovar uma devolução ou inspecionar um item. Este atributo é crucial para análise de desempenho em nível de usuário. Ajuda a identificar talentos, áreas que precisam de treinamento e desequilíbrios na distribuição de carga de trabalho. Analisar atividades por agente é fundamental para o dashboard de 'Desempenho por Departamento'. Por que é importante Permite a análise do desempenho individual e da equipe, o equilíbrio da carga de trabalho e a identificação de necessidades de treinamento, impactando diretamente a eficiência operacional. Onde obter Pode vir de campos como 'Criado por', 'Aprovado por' ou das Notas do Sistema nas transações do NetSuite. Exemplos Alice JohnsonBob WilliamsCharlie Brown | |||
| Departamento Department | O departamento ou equipe responsável por tratar o caso de devolução em uma determinada etapa. | ||
| Descrição Este atributo atribui as atividades a um departamento, como 'Atendimento', 'Armazém' ou 'Financeiro'. É essencial para entender as transferências entre equipes e identificar gargalos departamentais. Ao analisar o tempo que os casos passam em cada área, as empresas podem identificar atrasos e otimizar recursos. É a dimensão principal para o dashboard de 'Desempenho por Departamento'. Por que é importante Permite a análise do desempenho do processo por área funcional, destacando atrasos na passagem de bastão entre departamentos e gargalos setoriais. Onde obter Pode ser derivado do registro do funcionário ou do campo 'Departamento' na transação. Geralmente está configurado nos registros de funcionários do NetSuite. Exemplos ArmazémSuporte ao ClienteFinançasGarantia de Qualidade | |||
| Status da Devolução ReturnAuthorizationStatus | O status atual da autorização de devolução, como 'Pendente de Aprovação', 'Aprovado' ou 'Fechado'. | ||
| Descrição Este atributo indica o estado atual do caso de devolução. É fundamental para entender o progresso e segmentar casos. Por exemplo, o tempo no status 'Aguardando Recebimento' pode indicar atrasos no frete, enquanto a demora em 'Pendente de Aprovação' sugere um gargalo interno. Também define o resultado final, como 'Fechado' ou 'Rejeitado'. Por que é importante Oferece um panorama de onde cada devolução está no processo, permitindo a análise da distribuição de casos, durações de status e resultados do processo. Onde obter Corresponde ao campo 'Status' no registro de Autorização de Devolução do NetSuite. Exemplos Pendente de AprovaçãoAguardando recebimentoAprovadoRejeitadoEncerrado | |||
| Tempo de Ciclo CycleTime | O tempo total decorrido desde a criação da solicitação de devolução até o seu fechamento final. | ||
| Descrição O Tempo de Ciclo é um KPI calculado para cada caso de devolução. Ele mede a duração desde o primeiríssimo evento até o último, oferecendo uma visão macro da eficiência do processo. Esta métrica é a base para o dashboard de 'Tempo de Ciclo de Ponta a Ponta' e para o KPI de 'Tempo Médio de Ciclo de Devolução'. O cálculo é feito subtraindo o timestamp da primeira atividade do timestamp da última atividade de cada caso. Por que é importante Medida principal de desempenho. Tempos de ciclo altos indicam ineficiências, gargalos ou excesso de trabalho manual, gerando custos altos e má experiência do cliente. Onde obter Não é um campo do sistema. É uma métrica calculada no Process Mining subtraindo o primeiro timestamp do último para cada caso. Exemplos 10 days 4 hours5 dias e 12 horas21 dias e 2 horas | |||
| Tipo de Devolução ReturnType | A classificação da devolução com base no motivo fornecido pelo cliente. | ||
| Descrição O Tipo de Devolução categoriza as devoluções com base no motivo, como 'Item com Defeito', 'Tamanho Errado', 'Arrependimento' ou 'Diferente do Anúncio'. Essa categorização é vital para a análise de causa raiz. Ao analisar as métricas do processo entre diferentes tipos de devolução, a empresa pode identificar problemas de qualidade, imprecisões na descrição ou erros de logística. Este atributo é fundamental para o dashboard de 'Desempenho de Devoluções por Tipo e Canal'. Por que é importante Ajuda a identificar as causas raiz das devoluções, permitindo melhorias focadas em produtos, descrições de marketing ou no processo de fulfillment para reduzir o volume de devoluções. Onde obter Geralmente um campo personalizado ou de lista na AD onde o motivo da devolução é registrado. Exemplos Produto DefeituosoItem Incorreto EnviadoInsatisfação do ClienteTamanho/Cor Errada | |||
| Valor Real do Reembolso ActualRefundAmount | O valor monetário final que foi efetivamente reembolsado ao cliente. | ||
| Descrição Representa o valor real creditado ao cliente. Pode diferir do valor solicitado devido a taxas de reposição, frete ou reembolsos parciais. É crítico para relatórios financeiros e para o KPI de 'Taxa de Discrepância de Reembolso'. Por que é importante Representa o impacto financeiro real da devolução e é essencial para a reconciliação financeira e análise da precisão do reembolso. Onde obter Extraído do campo 'Total' no Credit Memo gerado a partir da Autorização de Devolução. Exemplos 99.99140.000.00 | |||
| Aderência à Política ReturnPolicyAdherence | Indica se a devolução está em conformidade com as políticas de devolução estabelecidas pela empresa. | ||
| Descrição Sinaliza se a devolução cumpre critérios como prazo e condição do item. É usado para monitorar conformidade e exceções no dashboard, ajudando a mitigar riscos e garantir regras consistentes. Por que é importante Auxilia no monitoramento e aplicação das políticas de devolução, reduzindo o risco financeiro de devoluções fora da norma e garantindo justiça e consistência. Onde obter Quase certamente um campo personalizado, como checkbox ou lista, na AD, gerenciado via workflow. Exemplos Em ConformidadeNão em Conformidade - Fora do PrazoExceção Aprovada | |||
| Canal de Devolução ReturnChannel | O canal pelo qual a compra original foi feita ou a devolução foi iniciada. | ||
| Descrição O Canal de Devolução indica a origem da devolução, como 'Online', 'Loja Física' ou 'Marketplace'. Canais diferentes podem ter processos, custos e expectativas de clientes distintos. Analisar o desempenho por canal ajuda a otimizar cada processo, alocar recursos e entender problemas específicos de cada via de venda. Este é um atributo central para o dashboard de 'Desempenho de Devoluções por Tipo e Canal'. Por que é importante Permite a comparação de desempenho entre diferentes canais de venda, revelando ineficiências ou boas práticas específicas para cada forma de início e tratamento de devoluções. Onde obter Geralmente vem da Sales Order original. Pode estar nos campos de 'Canal' ou 'Localidade'. Exemplos Loja OnlineLoja de VarejoAmazon MarketplacePedido por Telefone | |||
| Condição da Devolução ReturnCondition | A condição avaliada do item devolvido após a inspeção, como 'Novo', 'Danificado' ou 'Usado'. | ||
| Descrição Este atributo captura o resultado da inspeção física do item. A condição determina os próximos passos, como reembolso total, reposição no estoque ou descarte. Analisar a consistência e o tempo desse processo é o foco do dashboard de 'Qualidade da Avaliação de Devolução', sendo crucial para a conciliação financeira e gestão de inventário. Por que é importante Impacta diretamente o resultado financeiro da devolução e as ações de estoque subsequentes. Avaliações inconsistentes podem levar a perdas financeiras e retrabalho de processo. Onde obter Provavelmente um campo personalizado no Item Receipt ou na AD, preenchido pela equipe do armazém durante a inspeção. Exemplos RevendávelDanificado - Na CaixaUsado - Bom EstadoPeças Faltantes | |||
| Data Limite de SLA de Reembolso RefundSlaTargetDate | A data limite em que se espera que o reembolso seja processado de acordo com os acordos de nível de serviço. | ||
| Descrição A Data Limite de SLA de Reembolso é um timestamp calculado que representa o compromisso com o cliente. Geralmente é calculado somando um período predefinido (ex: 5 dias úteis) a um evento-chave como 'Item Recebido'. Este atributo é essencial para o dashboard de 'Monitoramento de Conformidade de SLA' e para o KPI de 'Taxa de Sucesso de SLA', permitindo medir se a empresa cumpre o que promete. Por que é importante Permite a medição quantitativa do desempenho em relação aos compromissos com o cliente, o que é crucial para manter a satisfação e a confiança. Onde obter Geralmente não é um campo padrão. Deve ser calculado somando o prazo de SLA (ex: 5 dias) a um timestamp como a data de 'Item Recebido'. Exemplos 2023-11-01T23:59:59Z2023-11-05T23:59:59Z2023-11-10T23:59:59Z | |||
| Discrepância no Valor do Reembolso RefundAmountDiscrepancy | A diferença calculada entre o valor de reembolso solicitado e o valor efetivamente reembolsado. | ||
| Descrição Calculado subtraindo o valor Real do Solicitado. Um valor diferente de zero indica ajustes (taxas ou danos). Alimenta o KPI de 'Taxa de Discrepância' para sinalizar casos que precisam de revisão. Por que é importante Destaca ajustes financeiros feitos durante o processo de devolução, permitindo analisar por que ocorrem discrepâncias e se elas são consistentes e justificadas. Onde obter Atributo calculado. A fórmula é: Exemplos 0.0010.00-5.00 | |||
| É Automatizado IsAutomated | Um sinalizador booleano indicando se uma atividade foi executada automaticamente pelo sistema. | ||
| Descrição Este atributo indica se a atividade foi executada por um usuário ou por automação (script/workflow). Por exemplo, a criação da AD pode ser automática via portal, enquanto a inspeção é manual. Rastrear a automação ajuda a identificar novas oportunidades de melhoria e medir ganhos de eficiência. Por que é importante Ajuda a distinguir entre tarefas manuais e automatizadas, o que é fundamental para identificar oportunidades de automação e medir o impacto da transformação digital. Onde obter Pode ser inferido pelo usuário do evento. Eventos do sistema no NetSuite costumam estar ligados a um usuário específico ou ID de script. Exemplos verdadeirofalse | |||
| Está em Conformidade com o SLA IsSlaCompliant | Um sinalizador calculado que indica se o reembolso foi processado dentro da meta de SLA definida. | ||
| Descrição Atributo booleano que compara o timestamp de processamento com a meta de SLA. Se for no prazo, é true. Isso simplifica relatórios de conformidade e o cálculo do KPI de 'Taxa de Sucesso de SLA'. Por que é importante Fornece um resultado binário claro para o desempenho do SLA caso a caso, facilitando o rastreio, o relatório e a análise das taxas de conformidade ao longo do tempo. Onde obter Este atributo é calculado na transformação de dados. A lógica é: Exemplos verdadeirofalse | |||
| ID do Cliente CustomerId | O identificador único do cliente que iniciou a devolução. | ||
| Descrição O ID do Cliente vincula uma transação de devolução a um cliente específico. Isso permite análises focadas no cliente, como identificar quem faz devoluções frequentes (o que pode indicar insatisfação ou fraude). Também permite segmentar o desempenho do processo por tipo ou valor do cliente, ajudando a priorizar o atendimento de contas estratégicas. Por que é importante Facilita a análise do comportamento de devolução por cliente e permite a segmentação do processo baseada em atributos como segmento ou lifetime value. Onde obter É o campo 'Cliente' ou 'Entidade' no cabeçalho da Autorização de Devolução no NetSuite. Exemplos CUST-001CUST-002CUST-003 | |||
| Identificador do produto ProductIdentifier | O identificador único do produto devolvido, como o SKU ou número do item. | ||
| Descrição Este atributo identifica o item específico devolvido. Analisar devoluções por produto é crucial para identificar itens com altas taxas de retorno, o que pode indicar defeitos de qualidade ou descrições ruins. Esses dados permitem uma análise profunda do desempenho do produto e orientam decisões de desenvolvimento, compras e marketing. Por que é importante Vincula dados do processo de devolução a produtos específicos, permitindo a análise de causa raiz de problemas nos produtos e ajudando a reduzir as taxas gerais de devolução. Onde obter Encontrado na sublista 'Itens' da Autorização de Devolução. Corresponde ao campo 'Item'. Exemplos SKU-TEE-BL-LPROD-00543ITEM-987123 | |||
| Valor de Reembolso Solicitado RequestedRefundAmount | O valor monetário do reembolso inicialmente solicitado ou esperado para a devolução. | ||
| Descrição Armazena o valor de reembolso esperado no início do processo. Serve como linha de base para comparação com o valor final. O KPI de 'Taxa de Discrepância' compara este valor com o Real para identificar variações por taxas ou ajustes. Por que é importante Fornece uma base para análise financeira, ajudando a rastrear discrepâncias entre os valores de reembolso esperados e reais, além de identificar os motivos dos ajustes. Onde obter Derivado dos campos de 'Valor' ou 'Taxa' nos itens da Autorização de Devolução. Exemplos 99.99150.0025.50 | |||
Atividades de Processamento de Devoluções e Reembolsos
| Atividade | Descrição | ||
|---|---|---|---|
| Autorização de Devolução Aprovada | Esta atividade representa a aprovação formal da solicitação de devolução por um funcionário. Geralmente é capturada por uma mudança no campo de status da Autorização de Devolução, como de 'Pendente de Aprovação' para 'Aguardando Recebimento'. | ||
| Por que é importante Rastrear esta aprovação é crucial para identificar gargalos na fase de revisão inicial. Atrasos aqui impactam o tempo para informar o cliente e receber o item. Onde obter Inferido a partir das notas do sistema ou histórico de workflow para o registro de ReturnAuthorization, especificamente quando o campo 'Status' é atualizado para um estado aprovado (ex: 'Recebimento Pendente'). Captura Detectar mudança de status no registro ReturnAuthorization para o estado 'Aprovado'. Tipo de evento inferred | |||
| Autorização de devolução criada | Esta atividade marca o início do processo quando um cliente solicita a devolução de um item. É capturada explicitamente no NetSuite pela criação de um novo registro de Autorização de Devolução (AD), que serve como o identificador principal do caso. | ||
| Por que é importante Como ponto inicial do processo, esta atividade é essencial para medir o tempo total do ciclo de devolução e analisar o volume de solicitações de devolução recebidas ao longo do tempo. Onde obter Timestamp de criação da Autorização de Devolução no NetSuite. Usuário, data e status inicial (ex: 'Pendente de Aprovação') são capturados aqui. Captura Registra a data de criação da transação de Autorização de Devolução no NetSuite. Tipo de evento explicit | |||
| Autorização de Devolução Fechada | Atividade final, marcando o fechamento administrativo após todo o processamento. Inferida pela mudança de status da AD para 'Fechado'. | ||
| Por que é importante Como ponto final definitivo do processo, esta atividade é essencial para calcular os tempos de ciclo de ponta a ponta e identificar casos que permanecem abertos muito tempo após o reembolso ter sido processado. Onde obter Inferido a partir das notas do sistema ou histórico de workflow para o registro de ReturnAuthorization quando o campo 'Status' é atualizado para seu estado terminal final, como 'Fechado'. Captura Detectar mudança de status no registro ReturnAuthorization para o estado 'Fechado'. Tipo de evento inferred | |||
| Item recebido | Esta atividade marca o recebimento físico do item no armazém. No NetSuite, isso é registrado pela criação de uma transação de Item Receipt vinculada à Autorização de Devolução original. | ||
| Por que é importante Marco crítico que muda o foco da ação do cliente para o processo interno. O tempo entre 'Devolução Aprovada' e 'Item Recebido' mede a agilidade do cliente; o tempo posterior mede a eficiência interna. Onde obter Timestamp de criação do Item Receipt. Este registro está diretamente vinculado à Autorização de Devolução original. Captura Registra a data de criação da transação de Item Receipt do NetSuite vinculada à AD. Tipo de evento explicit | |||
| Nota de Crédito Criada | Esta atividade sinaliza que a parte financeira da devolução foi iniciada com a criação de um Credit Memo. Este documento detalha o valor a ser reembolsado e é gerado a partir da Autorização de Devolução após o item ser recebido e aprovado. | ||
| Por que é importante A criação do Credit Memo é um marco financeiro essencial. O tempo entre o recebimento do item e a criação do memorando revela a eficiência do processo de inspeção ao crédito. Onde obter Este evento é o timestamp de criação do Credit Memo. O campo 'Criado de' vincula o documento à Autorização de Devolução. Captura Registra a data de criação da transação de Credit Memo no NetSuite. Tipo de evento explicit | |||
| Reembolso Processado | Liquidação financeira final. Capturada explicitamente pela criação da transação de Reembolso ao Cliente, gerada a partir do Credit Memo. | ||
| Por que é importante Esta atividade é crítica para medir a conformidade com o SLA e a satisfação do cliente. O tempo entre 'Credit Memo Aprovado' e 'Reembolso Processado' reflete diretamente a agilidade do departamento financeiro ou tesouraria. Onde obter Este evento é o timestamp de criação da transação de Reembolso. O campo 'Criado de' a vincula ao Credit Memo. Captura Registra a data de criação da transação de Reembolso ao Cliente no NetSuite. Tipo de evento explicit | |||
| Autorização de Devolução Rejeitada | Representa a recusa da devolução, geralmente por violação de política. Capturado pela mudança de status da AD para 'Rejeitado' ou 'Fechado' sem continuidade. | ||
| Por que é importante Analisar as rejeições ajuda a identificar motivos comuns para solicitações fora da política, o que pode orientar a comunicação com o cliente e o esclarecimento de normas. É um desvio crucial do caminho ideal. Onde obter Inferido a partir das notas do sistema ou histórico de workflow para o registro de ReturnAuthorization quando o campo 'Status' é atualizado para o estado final 'Rejeitado'. Captura Detectar mudança de status no registro ReturnAuthorization para o estado 'Rejeitado'. Tipo de evento inferred | |||
| Cliente Notificado | Representa o envio de uma notificação ao cliente sobre uma atualização de status importante, como aprovação, recebimento do item ou reembolso processado. Isso geralmente é inferido a partir do timestamp de um e-mail gerado pelo sistema e registrado na aba de comunicação do registro. | ||
| Por que é importante Comunicação ágil é a chave para a satisfação. Medir o atraso entre um marco e a notificação do cliente ajuda a identificar falhas na experiência do usuário. Onde obter Requer análise do sistema. Capturado a partir do timestamp de um e-mail enviado ou nota do usuário na subaba de Comunicação da Autorização de Devolução ou Credit Memo. Captura Timestamp de um e-mail ou entrada de log de comunicação vinculada ao caso. Tipo de evento inferred | |||
| Item inspecionado | Representa a conclusão da inspeção física do item. Como o NetSuite não tem um objeto 'Inspeção', isso é inferido por campos personalizados ou atualizações de status na AD ou no Recebimento de Item. | ||
| Por que é importante A inspeção é frequentemente um grande gargalo. Rastrear seu tempo de conclusão é vital para analisar a performance do agente, a consistência das decisões e o impacto na aprovação do reembolso subsequente. Onde obter Requer análise do sistema. Pode ser inferido a partir da mudança em um campo personalizado de 'Status de Inspeção' no registro de Autorização de Devolução, ou pode ser um processo offline não registrado. Captura Inferido a partir de uma alteração de campo de status personalizado na Return Authorization ou Item Receipt. Tipo de evento inferred | |||
| Nota de Crédito Aplicada | Esta atividade representa uma alternativa ao reembolso em dinheiro, onde o credit memo é aplicado a uma fatura aberta do cliente. É inferida pelo link 'Aplicado a' no Credit Memo, indicando que o crédito foi utilizado. | ||
| Por que é importante Distinguir entre reembolsos em dinheiro e aplicações de crédito é importante para a análise financeira. Este caminho representa um tipo diferente de resolução de processo em comparação a um reembolso direto. Onde obter Inferido a partir das notas do sistema ou registros relacionados do CreditMemo, especificamente quando ele é vinculado a uma transação de Invoice para compensar o saldo de um cliente. Captura Detectar a aplicação de um CreditMemo em uma transação de Invoice. Tipo de evento inferred | |||
| Nota de Crédito Aprovada | Representa a aprovação formal do credit memo, muitas vezes exigida para reembolsos de alto valor ou como parte dos controles financeiros. Isso é inferido por uma mudança de status no registro do Credit Memo, indicando que ele está pronto para aplicação ou pagamento. | ||
| Por que é importante Se aprovações financeiras são exigidas, esta etapa pode ser um gargalo significativo. Analisar sua duração ajuda a agilizar os controles financeiros sem atrasar os reembolsos aos clientes. Onde obter Inferido a partir das notas do sistema (system notes) para o registro de CreditMemo, especificamente quando um campo de status de aprovação é atualizado de 'Aprovação Pendente' para 'Aprovado' ou 'Aberto'. Captura Detectar mudança de status na transação CreditMemo para o estado 'Aprovado'. Tipo de evento inferred | |||
| Pedido de Troca Criado | Esta atividade representa um cenário de troca onde uma nova Sales Order é criada em vez de um reembolso. Este evento é capturado pela criação de um pedido de venda vinculado à Autorização de Devolução original. | ||
| Por que é importante Rastrear trocas como um caminho separado ajuda a analisar as preferências dos clientes e a eficiência da troca versus o reembolso. É uma variante comum e importante. Onde obter Este evento é o timestamp de criação de uma nova Sales Order. O vínculo com a AD pode estar em campos padrão ou personalizados. Captura Registra a data de criação de uma Sales Order vinculada à Autorização de Devolução. Tipo de evento explicit | |||
Guias de Extração
Etapas
- Navegar para a Criação de Saved Search: Faça login no NetSuite. Vá em Relatórios > Nova Busca. Na página de Nova Busca Salva, clique em 'Transação'.
- Definir Critérios Primários: Na página de configuração da busca, na aba 'Critérios' e subaba 'Padrão', defina os seguintes filtros para isolar os registros de autorização de devolução:
TypeéReturn AuthorizationMain LineéYes- Adicione um filtro
Date Createde defina o intervalo de datas desejado, por exemplo, 'nos últimos 3 meses'. Isso é vital para gerenciar o volume de dados.
- Configurar Colunas de Resultados para Atributos: Vá para a aba 'Resultados'. Adicione os campos a seguir, que se tornarão os atributos no seu event log. Use 'Rótulo Personalizado' para renomeá-los conforme necessário para clareza.
- Case ID:
Document NumberouTranID(Rótulo: ReturnCaseId) - Status da Devolução:
Status(Rótulo: ReturnAuthorizationStatus) - Agente de Processamento:
Created Byou um campo personalizado (Rótulo: ProcessingAgent) - Departamento:
Department(Rótulo: Department) - Tipo de Devolução: Um campo personalizado como
[Seu Campo de Motivo de Devolução](Rótulo: ReturnType) - Valor do Reembolso:
Amount(Rótulo: ActualRefundAmount)
- Case ID:
- Adicionar Colunas de Fórmula para Timestamps de Eventos: Este é o passo mais crítico. Para cada uma das 12 atividades, você adicionará uma coluna 'Fórmula (Data/Hora)'. Cada fórmula usa uma instrução CASE para retornar um timestamp apenas se aquele evento específico ocorreu. Veja a seção 'query' para as fórmulas exatas de cada atividade.
- Adicionar Colunas Estáticas: Adicione duas colunas de 'Fórmula (Texto)' aos seus resultados:
- Para
SourceSystem, use a fórmula:'NetSuite'. - Para
LastDataUpdate, use uma fórmula que represente a data de execução, como{today}. Para um timestamp preciso, este será o horário da exportação.
- Para
- Salvar e Exportar a Busca: Dê um nome descritivo à sua busca, como 'Extração de Devoluções ProcessMind'. Clique em 'Salvar e Executar'. Quando os resultados aparecerem, clique no ícone de Exportação e escolha 'CSV'.
- Transformar Dados em um Event Log: O CSV exportado estará em formato 'largo' (wide), com uma linha por caso de devolução e várias colunas para diferentes timestamps de eventos. Você deve transformar isso em um formato 'longo' (long). Use uma ferramenta como o Power Query do Excel (Desfazer Dinamização de Colunas), Python ou outro script para realizar essa transformação.
- Para cada linha no seu CSV, crie múltiplas novas linhas, uma para cada coluna de timestamp de evento que não esteja vazia.
- A nova tabela transformada deve ter colunas como
ReturnCaseId,ActivityNameeEventTimestamp. OActivityNamevem do cabeçalho da coluna original de timestamp (ex: 'Return Authorization Created'), e oEventTimestampé o valor dessa coluna.
- Finalizar para Upload: Garanta que o arquivo CSV final tenha os cabeçalhos obrigatórios:
ReturnCaseId,ActivityName,EventTimestamp,SourceSystem,LastDataUpdate, além de quaisquer atributos recomendados. O arquivo está pronto para upload no ProcessMind.
Configuração
- Tipo de Busca: A Saved Search deve ser do tipo
Transaction. - Intervalo de Datas: É crucial aplicar um filtro de intervalo de datas no campo
Date Createdda Return Authorization. Recomenda-se um período de 3 a 6 meses para equilibrar a integridade dos dados com a performance. - Filtro Primário: A busca deve ser filtrada por
TypecomoReturn AuthorizationeMain LinecomoYespara garantir um registro inicial por caso de devolução. - Campos Personalizados: A precisão desta extração, especialmente para eventos conceituais como 'Item Inspecionado' ou atributos como 'Tipo de Devolução', depende muito do uso de campos personalizados da sua empresa nos registros de transação. As fórmulas fornecidas incluem espaços reservados como
{custbody_...}que devem ser ajustados para corresponder à sua configuração do NetSuite. - Permissões de Usuário: O usuário que executa a busca precisa de permissões de visualização para todos os tipos de transação envolvidos: Return Authorization, Item Receipt, Credit Memo, Customer Refund e Sales Order.
- Performance: Para contas com um volume muito alto de devoluções, esta busca abrangente pode ser lenta. Considere executá-la fora do horário de pico ou agendá-la para exportação automática para o gabinete de arquivos.
a Consulta de Exemplo config
This configuration represents the settings in the NetSuite Saved Search UI. The 'Results' tab should be configured with the following columns and formulas.
**Criteria Tab:**
* `Type` = `Return Authorization`
* `Main Line` = `true`
* `Date Created` = `[Specify Desired Date Range]`
**Results Tab (Columns):**
| Custom Label | Field / Formula Type | Formula / Field ID |
|---|---|---|
| `ReturnCaseId` | Formula (Text) | `{tranid}` |
| `SourceSystem` | Formula (Text) | `'NetSuite'` |
| `LastDataUpdate` | Formula (Date/Time) | `{today}` |
| `ReturnAuthorizationStatus` | Field | `Status` |
| `ProcessingAgent` | Field | `Created By` |
| `Department` | Field | `Department` |
| `ReturnType` | Field | `{custbody_return_reason}` |
| `ActualRefundAmount` | Field | `Amount` |
| `CycleTime` | Formula (Numeric) | `CASE WHEN {status} = 'Closed' THEN {lastmodifieddate} - {datecreated} ELSE NULL END` |
| `Activity_ReturnAuthorizationCreated` | Field | `Date Created` |
| `Activity_ReturnAuthorizationApproved` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Pending Receipt' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` |
| `Activity_ReturnAuthorizationRejected` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Rejected' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` |
| `Activity_ItemReceived` | Formula (Date/Time) | `{applyingtransaction.trandate}` |
| `Activity_ItemInspected` | Formula (Date/Time) | `CASE WHEN {custbody_inspection_status} = 'Complete' THEN {custbody_inspection_date} ELSE NULL END` |
| `Activity_CreditMemoCreated` | Formula (Date/Time) | `{createdfrom.trandate}` |
| `Activity_CreditMemoApproved` | Formula (Date/Time) | `MIN(CASE WHEN {createdfrom.systemnotes.newvalue} = 'Open' AND {createdfrom.systemnotes.field} = 'Status' THEN {createdfrom.systemnotes.date} ELSE NULL END)` |
| `Activity_RefundProcessed` | Formula (Date/Time) | `{createdfrom.appliedtotransaction.trandate}` |
| `Activity_CreditMemoApplied` | Formula (Date/Time) | `CASE WHEN {createdfrom.status} = 'Fully Applied' AND {createdfrom.appliedtotransaction.type} = 'Invoice' THEN {createdfrom.appliedtotransaction.date} ELSE NULL END` |
| `Activity_ExchangeOrderCreated` | Formula (Date/Time) | `{custbody_exchange_order.trandate}` |
| `Activity_CustomerNotified` | Formula (Date/Time) | `MAX({messages.messagedate})` |
| `Activity_ReturnAuthorizationClosed` | Formula (Date/Time) | `MIN(CASE WHEN {systemnotes.newvalue} = 'Closed' AND {systemnotes.field} = 'Status' THEN {systemnotes.date} ELSE NULL END)` | Etapas
- Ativar o SuiteAnalytics Connect: Verifique se você possui uma licença do SuiteAnalytics Connect em sua conta NetSuite. Um administrador deve ativar o recurso em Configuração > Empresa > Ativar Recursos > Analytics.
- Atribuir Permissões de Usuário: Conceda à função do usuário de conexão a permissão 'SuiteAnalytics Connect'. Esse usuário também precisará de permissões de visualização para todos os registros consultados, como Transações, Funcionários e Clientes.
- Instalar o Driver ODBC: Baixe e instale o driver ODBC do NetSuite adequado para seu sistema operacional a partir da página de download do SuiteAnalytics Connect no NetSuite.
- Configurar o DSN: Configure um Nome de Fonte de Dados (DSN) na máquina onde executará a consulta. Insira sua Fonte de Dados de Serviço, Hostname do Servidor, Porta, ID da Função, ID da Conta e credenciais.
- Conectar seu Cliente SQL: Use um cliente SQL, como DBeaver ou Microsoft SQL Server Management Studio, para se conectar ao NetSuite usando o DSN configurado.
- Preparar a Consulta SQL: Copie a consulta SQL fornecida para o seu cliente. Esta consulta foi desenhada para extrair todos os eventos principais no processo de devolução e reembolso.
- Personalizar a Consulta: Modifique os valores de espaço reservado na consulta. No mínimo, você deve atualizar o intervalo de datas na Expressão de Tabela Comum (CTE)
ReturnAuthorizationspara filtrar o período desejado. Você também pode precisar ajustar nomes de campos personalizados, comoCUSTBODY_RETURN_TYPE, ou valores de status específicos para corresponder à sua configuração do NetSuite. - Executar a Consulta: Execute a consulta SQL personalizada contra a réplica do banco de dados NetSuite. O tempo de execução pode variar dependendo do intervalo de datas e do volume de dados.
- Revisar e Exportar Dados: Quando a consulta terminar, revise os resultados para garantir que estejam corretos. Exporte todo o conjunto de resultados para um arquivo CSV.
- Finalizar para Upload: Certifique-se de que os cabeçalhos do arquivo CSV correspondam aos atributos exigidos:
ReturnCaseId,ActivityName,EventTimestamp,SourceSystem,LastDataUpdate, etc. Verifique se a colunaEventTimestampestá em um formato de data/hora consistente. O arquivo está pronto para upload no ProcessMind.
Configuração
- Pré-requisitos: É necessária uma licença do NetSuite com o módulo adicional SuiteAnalytics Connect. O usuário que realiza a conexão deve ter uma função com a permissão 'SuiteAnalytics Connect' e acesso de leitura a registros de transação, entidade e funcionário.
- Configuração da Fonte de Dados: Você deve configurar um DSN (Data Source Name) usando o driver ODBC do NetSuite. Isso requer seu ID de Conta, ID de Função e credenciais. O host do serviço geralmente é
odbcserver.netsuite.compara ambientes de produção. - Filtro de Intervalo de Datas: É crítico aplicar um filtro de intervalo de datas ao CTE inicial que seleciona as Return Authorizations. Sem um filtro, a consulta tentará buscar todos os dados de devoluções e provavelmente será muito lenta ou expirará. Recomenda-se um intervalo de 3 a 6 meses para a análise inicial.
- Tipos de Transação Chave: A consulta visa vários tipos de transação principais: ReturnAuthorization, ItemReceipt, CreditMemo, CustomerRefund e SalesOrd (para trocas). Certifique-se de que seu processo utiliza esses objetos padrão.
- Dependências de Campos Personalizados: Atividades como 'Item Inspecionado' e atributos como 'Tipo de Devolução' são frequentemente capturados em campos personalizados. A consulta fornecida usa espaços reservados como
CUSTBODY_INSPECTION_STATUSeCUSTBODY_RETURN_TYPE. Você deve identificar os IDs de campos personalizados corretos em seu sistema e atualizar a consulta adequadamente. - Considerações de Performance: Esta é uma consulta complexa com vários joins e uma grande estrutura
UNION ALL. Execute-a fora do horário de pico para minimizar o impacto na performance do sistema. Para conjuntos de dados muito grandes, considere executar a consulta em incrementos de tempo menores e anexar os resultados.
a Consulta de Exemplo sql
WITH ReturnAuthorizations AS (
SELECT
T.TRANSACTION_ID AS ReturnCaseId,
T.TRANDATE
FROM
TRANSACTION T
WHERE
T.TYPE = 'ReturnAuthorization'
AND T.TRANDATE BETWEEN TO_DATE('[YYYY-MM-DD]', 'YYYY-MM-DD') AND TO_DATE('[YYYY-MM-DD]', 'YYYY-MM-DD')
)
SELECT
RA.ReturnCaseId AS "ReturnCaseId",
'Return Authorization Created' AS "ActivityName",
T.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION T
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON T.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Approved' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE = 'Pending Receipt'
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Rejected' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE IN ('Rejected', 'Closed')
UNION ALL
SELECT
RA.ReturnCaseId,
'Item Received' AS "ActivityName",
IR.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION IR
INNER JOIN TRANSACTION T_RA ON IR.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON IR.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE IR.TYPE = 'ItemReceipt'
UNION ALL
SELECT
RA.ReturnCaseId,
'Item Inspected' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SN.FIELD = 'TRANSACTION.CUSTBODY_INSPECTION_STATUS' AND SN.NEW_VALUE = 'Completed'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Created' AS "ActivityName",
CM.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION CM
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON CM.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Approved' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION CM ON SN.TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo' AND SN.FIELD = 'TRANSACTION.APPROVAL_STATUS' AND SN.NEW_VALUE = 'Approved'
UNION ALL
SELECT
RA.ReturnCaseId,
'Refund Processed' AS "ActivityName",
REF.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
ABS(REF.TOTAL) AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION REF
INNER JOIN TRANSACTION CM ON REF.APPLIED_TO_TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON REF.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE REF.TYPE = 'CustomerRefund'
UNION ALL
SELECT
RA.ReturnCaseId,
'Credit Memo Applied' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION CM ON SN.TRANSACTION_ID = CM.TRANSACTION_ID
INNER JOIN TRANSACTION T_RA ON CM.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE CM.TYPE = 'CreditMemo' AND SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE = 'Fully Applied'
UNION ALL
SELECT
RA.ReturnCaseId,
'Exchange Order Created' AS "ActivityName",
SO.CREATED_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T_RA.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T_RA.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM TRANSACTION SO
INNER JOIN TRANSACTION T_RA ON SO.CREATED_FROM_ID = T_RA.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T_RA.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SO.CREATED_BY_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE SO.TYPE = 'SalesOrd'
UNION ALL
SELECT
RA.ReturnCaseId,
'Customer Notified' AS "ActivityName",
MSG.MESSAGE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
T.STATUS AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM MESSAGES MSG
INNER JOIN TRANSACTION T ON MSG.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON MSG.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE MSG.INCOMING = 'F'
UNION ALL
SELECT
RA.ReturnCaseId,
'Return Authorization Closed' AS "ActivityName",
SN.NOTE_DATE AS "EventTimestamp",
'NetSuite' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
SN.NEW_VALUE AS "ReturnAuthorizationStatus",
E.full_name AS "ProcessingAgent",
D.full_name AS "Department",
T.CUSTBODY_RETURN_TYPE AS "ReturnType",
NULL AS "ActualRefundAmount",
NULL AS "CycleTime"
FROM SYSTEM_NOTES SN
INNER JOIN TRANSACTION T ON SN.TRANSACTION_ID = T.TRANSACTION_ID
INNER JOIN ReturnAuthorizations RA ON T.TRANSACTION_ID = RA.ReturnCaseId
LEFT JOIN EMPLOYEE E ON SN.AUTHOR_ID = E.EMPLOYEE_ID
LEFT JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE T.TYPE = 'ReturnAuthorization' AND SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE LIKE '%Closed%';