Seu Template de dados para processamento de devoluções e reembolsos
Seu Template de dados para processamento de devoluções e reembolsos
- Campos de dados recomendados para coleta
- Principais etapas do processo para acompanhar
- Orientações para extração de dados
Atributos de processamento de devoluções e reembolsos
| Nome | Descrição | ||
|---|---|---|---|
| Hora do evento EventTime | O carimbo de data e hora que indica quando uma atividade ou um evento específico ocorreu. | ||
| Descrição A hora do evento, ou o carimbo de data e hora, registra a data e a hora exatas em que uma atividade ocorreu. Cada atividade no Event Log tem um carimbo de data e hora correspondente, que fornece a ordem cronológica dos eventos. Este atributo é essencial para todas as análises de Process Mining baseadas em tempo. Ele é usado para calcular os tempos de ciclo entre atividades, identificar tempos de espera e gargalos, medir a duração total do caso e verificar a conformidade com acordos de nível de serviço (SLAs). A precisão dos carimbos de data e hora afeta diretamente a confiabilidade de qualquer análise de performance. Por que isso importa Este carimbo de data e hora é essencial para calcular todas as métricas baseadas em duração, como tempos de ciclo e de espera, que são fundamentais para a análise de performance. Onde obter Corresponde aos campos de data de criação ou modificação em várias tabelas, como 'SalesTable.createdDateTime' para a criação do pedido ou 'WMSJournalTrans.createdDateTime' para os diários do armazém. Exemplos 2023-10-26T10:00:00Z2023-10-26T14:30:15Z2023-10-27T09:05:42Z | |||
| ID do caso de devolução ReturnCaseId | O identificador exclusivo do caso de devolução e reembolso de um cliente, vinculando todas as atividades relacionadas. | ||
| Descrição O ID do caso de devolução é o identificador principal de cada instância exclusiva do processo de devolução. Ele vincula todas as atividades associadas a uma devolução ou solicitação de reembolso específica do cliente, desde a criação inicial do pedido de devolução até o encerramento final. Na análise de processos, esse ID é fundamental para reconstruir a jornada completa de cada devolução. Ele permite acompanhar todo o ciclo de vida, medir os tempos totais de ciclo e analisar as variações entre diferentes casos. Todos os eventos, dados e indicadores são agregados e correlacionados usando esse identificador. Por que isso importa Este é o identificador essencial do caso que conecta todas as etapas do processo, permitindo rastrear e analisar cada devolução do início ao fim. Onde obter Normalmente, este é o número da Return Material Authorization (RMA) ou o número do pedido de venda do tipo 'Returned Order' no módulo 'Sales and marketing'. Ele é encontrado em tabelas como 'SalesTable', nas quais 'SalesType' é 'Returned Order'. Exemplos RMA-001234RMA-001235RMA-001236 | |||
| Nome da atividade ActivityName | O nome do evento de negócio ou da tarefa específica que ocorreu no processo de devolução e reembolso. | ||
| Descrição Este atributo descreve uma etapa ou um evento específico no ciclo de vida da devolução e do reembolso, como 'Pedido de devolução criado', 'Item recebido' ou 'Nota de crédito lançada'. Cada atividade representa um ponto distinto do processo registrado no sistema. Analisar a sequência e a frequência dessas atividades é a base do Process Mining. Isso permite visualizar mapas de processo, identificar gargalos entre as etapas e descobrir variantes comuns e incomuns do processo. O conjunto de atividades define o escopo do processo analisado. Por que isso importa Ele define as etapas do processo, permitindo visualizar o fluxo do processo e identificar gargalos, retrabalho e desvios. Onde obter Este é um atributo conceitual derivado de eventos do sistema. Ele pode ser gerado mapeando alterações de status em tabelas como 'SalesTable' e 'WMSJournalTable' ou registros de eventos específicos para nomes fáceis de entender. Exemplos Pedido de devolução criadoItem recebidoCódigo de disposição aplicadoNota de crédito lançada | |||
| Canal de devolução ReturnChannel | O método ou canal pelo qual o cliente iniciou a devolução. | ||
| Descrição Este atributo especifica o canal usado pelo cliente para iniciar o processo de devolução, por exemplo, 'Portal online', 'Loja física', 'Ligação para o atendimento ao cliente' ou 'Correio'. Segmentar a análise do processo por canal de devolução ajuda a avaliar a performance e a eficiência de cada canal. A empresa pode comparar tempos de ciclo, custos e satisfação do cliente entre os canais para identificar boas práticas e áreas que precisam de investimento ou melhoria. Isso é fundamental para o Dashboard 'Performance de utilização do canal de devolução'. Por que isso importa Ele permite comparar a performance entre diferentes canais de devolução, ajudando a otimizar os canais mais eficientes e econômicos. Onde obter Essas informações podem ser armazenadas no cabeçalho do pedido de devolução ('SalesTable') ou derivadas do usuário que criou o pedido. Talvez seja necessário usar uma lógica personalizada ou um campo dedicado. Exemplos Portal WebQuiosque na lojaAtendimento ao cliente | |||
| Código de disposição DispositionCode | Um código que indica o resultado da inspeção do item e a próxima ação a ser realizada. | ||
| Descrição O código de disposição é atribuído durante a inspeção de qualidade de um item devolvido. Ele determina a etapa seguinte do processo, como 'Crédito', 'Substituição', 'Descarte' ou 'Devolução ao cliente'. Este atributo é um ponto de decisão fundamental no processo de devoluções. Analisar por código de disposição permite que as empresas entendam os resultados das devoluções, acompanhem o impacto financeiro do descarte de itens e avaliem a eficiência de diferentes caminhos de resolução, como substituição em comparação com reembolso. Por que isso importa Este código determina o caminho que o caso de devolução seguirá após a inspeção, sendo essencial para analisar as variantes do processo e seus resultados de negócio. Onde obter Este é um campo importante do módulo de gestão da qualidade. Ele está associado ao processamento do Quality Order ou Inspection Order. Exemplos CRDTREPL-DSCRAPRTV | |||
| Código do motivo da devolução ReturnReasonCode | O motivo informado pelo cliente para devolver o item. | ||
| Descrição O código do motivo da devolução registra o motivo informado pelo cliente, como 'Item com defeito', 'Tamanho incorreto', 'Diferente da descrição' ou 'Não é mais necessário'. Essas informações normalmente são coletadas quando a devolução é iniciada. Analisar os motivos das devoluções é essencial para a análise de causa raiz. Isso ajuda as empresas a identificar problemas de qualidade do produto, falhas nas descrições ou erros logísticos. Os insights obtidos desses dados podem orientar melhorias no design do produto, no marketing e nas operações da cadeia de suprimentos para reduzir futuras devoluções. Por que isso importa Gera um insight essencial sobre os motivos das devoluções, permitindo analisar a causa raiz para reduzir as taxas de devolução e melhorar a satisfação do cliente. Onde obter Normalmente, isso é armazenado no nível da linha do pedido de devolução. Procure campos de código de motivo na tabela 'SalesLine' dos pedidos de devolução. Exemplos DEFECTWRONG_ITEMNO_LONGER_WANTEDDAMAGED_IN_TRANSIT | |||
| ID do produto ProductId | O identificador exclusivo do produto que está sendo devolvido. | ||
| Descrição O ID do produto, geralmente a unidade de manutenção de estoque (SKU), identifica o item específico que está sendo devolvido pelo cliente. Cada linha do pedido de devolução está associada a um ID do produto. Analisar as devoluções por produto é essencial para identificar itens com altas taxas de devolução. Isso pode indicar problemas de controle de qualidade, descrições imprecisas ou defeitos de fabricação. Essa análise ajuda a priorizar investigações e melhorias relacionadas aos produtos. Por que isso importa Permite analisar as devoluções por produto, ajudando a identificar itens com problemas de qualidade ou alto volume de devoluções. Onde obter Corresponde ao campo 'ItemId' na tabela 'SalesLine' do pedido de devolução. Exemplos SKU-A-123SKU-B-456SKU-C-789 | |||
| Usuário responsável ResponsibleUser | O usuário ou funcionário que executou ou é responsável por uma atividade específica. | ||
| Descrição Este atributo identifica o usuário responsável por executar uma etapa do processo. Pode ser o funcionário do armazém que recebeu o item, o inspetor de qualidade ou o funcionário financeiro que lançou a nota de crédito. Analisar o processo por usuário ajuda a entender a distribuição da carga de trabalho, identificar os profissionais de melhor performance e detectar possíveis necessidades de treinamento. Também pode ser usado para investigar casos tratados por pessoas ou times específicos e garantir a segregação adequada de funções. Por que isso importa Ele permite analisar a distribuição da carga de trabalho, a performance individual ou do time e oportunidades de treinamento ou alocação de recursos. Onde obter Encontrado nos campos 'created by' ou 'modified by' dos registros de transações, como 'SalesTable.createdBy' ou IDs de usuários vinculados em tabelas de diários. Exemplos Alice.WBob.JChris.P | |||
| Data-alvo do SLA de reembolso RefundSlaTargetDate | A data-alvo até a qual o caso de devolução e reembolso deve ser totalmente resolvido. | ||
| Descrição Este atributo define o prazo do Acordo de Nível de Serviço (SLA) para resolver um caso de devolução. É a data até a qual o cliente deve receber uma resolução final, como um reembolso lançado ou uma substituição enviada. Essa data-alvo é essencial para monitorar a performance em relação aos compromissos de serviço. Ela é usada para calcular o KPI 'Taxa de cumprimento do SLA de resolução' e alimentar o Dashboard 'Performance do SLA de resolução de reembolsos'. Comparar essa data com a data real de conclusão do processo permite identificar violações de SLA e gerenciar proativamente os casos em aberto há mais tempo. Por que isso importa É a referência usada para medir a performance do processo, permitindo acompanhar a conformidade com o SLA e identificar casos atrasados. Onde obter Este pode não ser um campo padrão. Muitas vezes, ele é calculado com base na data de criação da devolução mais um período de SLA predefinido, por exemplo, 14 dias. Talvez seja armazenado em um campo personalizado. Exemplos 2023-11-10T23:59:59Z2023-11-15T23:59:59Z | |||
| Está em conformidade com a política IsPolicyAdherent | Um indicador que mostra se a aprovação da devolução está em conformidade com as políticas de devolução estabelecidas. | ||
| Descrição Este é um atributo booleano calculado que indica se uma devolução atende a todos os critérios definidos na política de devoluções da empresa. Isso pode se basear em fatores como o prazo de devolução, a condição do item ou o motivo da devolução. Este atributo dá suporte direto ao Dashboard 'Visão geral da conformidade das aprovações de devolução' e ao KPI 'Taxa de aprovação de devoluções em conformidade'. Ele permite quantificar a conformidade com a política, identificar casos aprovados como exceções e analisar os motivos e a frequência dessas exceções. Isso é essencial para a governança e o controle de custos. Por que isso importa Ele mede diretamente a conformidade com as regras de negócio, ajudando a identificar e reduzir aprovações de devoluções fora da política que podem causar perda de receita. Onde obter Este é um atributo derivado. A lógica precisaria ser criada comparando os atributos da devolução, como data da devolução em relação à data da compra e motivo da devolução, com regras de negócio predefinidas. Exemplos truefalse | |||
| Hora de término EndTime | O carimbo de data e hora que indica quando uma atividade específica foi concluída. | ||
| Descrição A hora de término representa o carimbo de data e hora de conclusão de uma atividade. Enquanto StartTime marca o início, EndTime marca a conclusão, permitindo calcular o tempo de processamento dessa tarefa específica. Este atributo é fundamental para uma análise detalhada de performance, especialmente em tarefas com duração mensurável, como 'Inspeção do item'. Ao comparar StartTime e EndTime, os analistas conseguem medir com precisão o tempo de processamento ativo das tarefas, diferenciando-o do tempo de espera entre elas. Isso ajuda a localizar ineficiências dentro de atividades específicas, e não apenas entre elas. Por que isso importa Ele permite calcular o tempo de processamento ativo de atividades individuais, ajudando a diferenciar o tempo de espera do tempo efetivamente dedicado ao trabalho. Onde obter Isso geralmente precisa ser derivado. Por exemplo, pode ser o 'modifiedDateTime' de uma alteração de status que conclui uma atividade ou o StartTime da atividade seguinte. Exemplos 2023-10-26T10:15:00Z2023-10-26T14:45:20Z2023-10-27T09:55:12Z | |||
| ID da nota de crédito CreditNoteId | O identificador exclusivo do documento de nota de crédito criado para um reembolso. | ||
| Descrição Quando um reembolso é processado, é gerado um documento financeiro conhecido como nota de crédito ou memorando de crédito. Este atributo armazena o ID exclusivo desse documento. Esse ID fornece um vínculo direto entre o processo operacional de devolução e os registros financeiros do sistema contábil. Ele é útil para auditorias e análises detalhadas de divergências financeiras, permitindo que o analista rastreie um caso de devolução até a transação financeira específica que o liquidou. Por que isso importa Ele vincula o processo operacional de devolução à transação financeira correspondente, o que é fundamental para auditoria e conciliação financeira. Onde obter O número da nota de crédito normalmente é encontrado no campo 'InvoiceId' da tabela 'CustInvoiceJour', na qual o tipo de transação é 'Credit note'. Ele pode ser vinculado novamente ao pedido de devolução. Exemplos CN-10056CN-10057CN-10058 | |||
| ID do armazém WarehouseId | O identificador do armazém ou local onde o item devolvido é recebido. | ||
| Descrição Este atributo identifica o armazém físico ou centro de devoluções específico que processa o item devolvido. Diferentes locais podem ter processos, recursos ou níveis de performance distintos. Analisar o processo por armazém permite comparar a performance entre os locais. Isso pode ajudar a identificar quais instalações processam devoluções com mais eficiência, destacar gargalos regionais e orientar decisões sobre alocação de recursos e padronização de processos em toda a rede logística. Por que isso importa Permite comparar a performance entre diferentes armazéns ou centros de devolução, ajudando a identificar gargalos regionais ou boas práticas. Onde obter Essas informações são armazenadas no campo 'InventLocationId' das transações relacionadas ao estoque, como o Diário de chegada ('WMSJournalTable') ou a 'SalesLine'. Exemplos WH-EASTWH-WESTCENTRAL-DC | |||
| ID do cliente CustomerId | O identificador exclusivo do cliente que iniciou a devolução. | ||
| Descrição O ID do cliente é o identificador exclusivo da conta de cliente associada à devolução. Ele vincula a transação de devolução a um cliente específico no CRM ou no banco de dados de clientes. Analisar as devoluções por cliente permite identificar clientes com uma atividade de devolução incomumente alta, o que pode indicar comportamento fraudulento ou insatisfação recorrente. Também pode ser usado para segmentar clientes, por exemplo, oferecendo serviços premium de devolução a clientes de alto valor. Por que isso importa Ele vincula o processo de devolução a um cliente específico, permitindo análises no nível do cliente e a identificação de padrões de devolução ou possíveis fraudes. Onde obter Este é o campo 'CustAccount' na tabela 'SalesTable' do pedido de devolução. Exemplos CUST-00045CUST-00192CUST-00315 | |||
| Sistema de origem SourceSystem | O sistema de informação do qual os dados do evento foram extraídos. | ||
| Descrição Este atributo identifica o sistema de informação de origem dos dados. Neste contexto, ele será principalmente 'Microsoft Dynamics 365'. Em organizações maiores, um processo pode abranger vários sistemas. Especificar o sistema de origem de cada evento é fundamental para a governança de dados, a solução de problemas de extração e a compreensão do cenário tecnológico do processo. Isso confirma a origem dos dados analisados. Por que isso importa Ele fornece um contexto essencial sobre a origem dos dados, necessário para a governança e a validação dos dados e para entender o cenário de sistemas do processo. Onde obter Normalmente, este é um valor estático adicionado durante o processo de extração, transformação e carregamento (ETL) dos dados para identificar a origem do conjunto de dados. Exemplos Microsoft Dynamics 365 F&OD365-PROD | |||
| Status do pedido de devolução ReturnOrderStatus | O status geral do pedido de devolução no momento do evento. | ||
| Descrição Este atributo indica o status atual do cabeçalho do pedido de devolução, como 'Aberto', 'Faturado' ou 'Cancelado'. Ele fornece uma visão geral da etapa em que o caso se encontra no ciclo de vida. Enquanto as atividades mostram as etapas detalhadas do processo, o status geral é útil para filtrar e segmentar casos. Por exemplo, um analista pode querer se concentrar apenas nos casos 'Abertos' para entender a carga de trabalho atual ou analisar o fluxo de processos dos casos que acabam sendo 'Cancelados'. Por que isso importa Fornece um resumo geral do estado do caso, útil para filtrar casos e entender resultados como cancelamentos. Onde obter Essas informações estão no campo 'SalesStatus' ou 'DocumentStatus' da tabela 'SalesTable'. Exemplos Pedido em abertoEntregueFaturadoCancelado | |||
| Status do SLA SlaStatus | Indica se o caso foi resolvido dentro da meta do Acordo de Nível de Serviço. | ||
| Descrição Este atributo calculado fornece um status simples de conformidade com o SLA, normalmente 'No prazo' ou 'Atrasado'. Ele é determinado comparando o carimbo de data e hora da atividade final, por exemplo, 'Pedido de devolução encerrado', com 'RefundSlaTargetDate'. Este atributo simplifica os relatórios de performance em Dashboards como 'Performance do SLA de resolução de reembolsos'. Em vez de exigir que os usuários comparem datas, ele fornece um status direto e fácil de entender. Isso permite filtrar e agregar rapidamente os dados para calcular a 'Taxa de cumprimento do SLA de resolução'. Por que isso importa Fornece um indicador simples e imediato de conformidade com o SLA, facilitando a filtragem de casos atrasados e a análise das causas raiz dos atrasos. Onde obter Este é um atributo derivado, calculado comparando o carimbo de data e hora da atividade de resolução final com o atributo 'RefundSlaTargetDate'. Exemplos No prazoAtrasado | |||
| Tipo de devolução ReturnType | Classifica a devolução com base no resultado esperado, como Reembolso ou Substituição. | ||
| Descrição Este atributo classifica o caso de devolução com base no tipo de resolução buscado pelo cliente ou oferecido pela empresa. Os tipos comuns incluem um 'Reembolso' em dinheiro, uma troca por um item de 'Substituição' ou um 'Reparo'. Essa categorização é útil para analisar diferentes caminhos do processo. O processo de emissão de um reembolso é significativamente diferente do processo de envio de um item de substituição. Segmentar por tipo de devolução permite uma análise mais precisa dos tempos de ciclo e dos gargalos específicos de cada caminho de resolução. Por que isso importa Ele permite segmentar a análise com base no resultado pretendido, já que os processos de reembolso e substituição têm etapas e tempos de ciclo diferentes. Onde obter Este pode ser um campo personalizado no cabeçalho do pedido de devolução ou ser derivado com base no código de disposição ou em transações posteriores, como a criação de um pedido de venda de substituição. Exemplos ReembolsoSubstituiçãoCrédito na loja | |||
| Última atualização dos dados LastDataUpdate | O carimbo de data e hora que indica a última vez que os dados do processo foram atualizados. | ||
| Descrição Este atributo registra a data e a hora em que os dados foram extraídos pela última vez do sistema de origem e atualizados na ferramenta de Process Mining. Ele fornece uma referência para a atualidade dos dados analisados. Saber quando os dados foram atualizados pela última vez é importante para entender a atualidade da análise. Isso ajuda você a interpretar corretamente os Dashboards e KPIs, sabendo se está analisando dados em tempo real ou uma fotografia de um momento específico. Esse ponto é fundamental para o monitoramento operacional. Por que isso importa Indica a atualidade dos dados, garantindo que os analistas saibam quão atuais são seus insights sobre o processo. Onde obter Este é um atributo de metadados gerado e armazenado durante o pipeline de ingestão de dados, normalmente representando o carimbo de data e hora da conclusão do job de ETL. Exemplos 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Valor do reembolso solicitado RequestedRefundAmount | O valor monetário total do reembolso solicitado pelo cliente. | ||
| Descrição Este atributo representa o valor inicial do reembolso solicitado ou esperado no início do processo de devolução. Normalmente, ele se baseia no preço de compra original dos itens devolvidos. Esse valor serve como referência para a 'Análise de divergência do valor do reembolso'. Ao comparar o valor solicitado com o valor efetivamente reembolsado, a empresa pode identificar divergências causadas por taxas de reposição de estoque, reembolsos parciais de produtos danificados ou outros ajustes. Isso ajuda a monitorar a precisão financeira e a adesão às políticas. Por que isso importa Ele serve como referência para medir a precisão financeira, comparando-o com o valor efetivamente processado do reembolso. Onde obter Normalmente, este é o valor da linha ou o valor total da linha do pedido de venda original que está sendo devolvida, encontrado em 'SalesLine.LineAmount'. Exemplos 99.99150.0024.50 | |||
| Valor efetivo do reembolso ActualRefundAmount | O valor monetário final do reembolso concedido ao cliente. | ||
| Descrição Este atributo representa o valor final confirmado que foi reembolsado ao cliente. Esse valor é registrado quando a nota de crédito é criada e lançada. Este é um atributo fundamental para a análise financeira e é usado diretamente no Dashboard 'Análise de divergência do valor do reembolso' e no KPI 'Taxa de precisão do valor do reembolso'. Analisar esses dados ajuda a entender o impacto financeiro das devoluções e quaisquer ajustes feitos durante o processo. Por que isso importa Ele representa o impacto financeiro efetivo da devolução e é essencial para calcular a precisão do reembolso e entender os resultados financeiros. Onde obter Este valor pode ser encontrado nos detalhes da transação da nota de crédito lançada. Ele está relacionado às tabelas 'CustTrans' e 'CustInvoiceJour' da nota de crédito. Exemplos 99.99135.000.00 | |||
Atividades de processamento de devoluções e reembolsos
| Atividade | Descrição | ||
|---|---|---|---|
| Código de disposição aplicado | Esta atividade representa a conclusão da inspeção e a decisão sobre o que fazer com o item devolvido. Um código de disposição, como 'Credit', 'Scrap' ou 'Replace', é atribuído à linha da devolução. | ||
| Por que isso importa Este é um ponto decisório essencial que determina o caminho seguinte do processo, seja reembolso, troca ou rejeição. Atrasos nessa etapa podem afetar significativamente o tempo total de resolução. Onde obter Este evento é capturado quando o campo DispositionCode é preenchido na transação de estoque da linha do pedido de devolução ou no diário relacionado. Captura Evento de atualização quando um DispositionCode é definido para a linha do pedido de devolução. Tipo de evento explicit | |||
| Item recebido | Marca o recebimento físico do item devolvido no armazém ou no centro de devoluções designado. Isso é capturado quando o diário de chegada associado ao pedido de devolução é lançado. | ||
| Por que isso importa Este é um marco essencial que transfere o processo da ação do cliente para o processamento interno. É o ponto de partida para calcular todos os tempos de tratamento interno, como inspeção e disposição. Onde obter Registro de data e hora do lançamento do WMS Journal ou do Item Arrival Journal associado à linha ReturnOrder. Isso atualiza as transações de estoque para o status 'Registered' ou 'Received'. Captura Evento de lançamento do Item Arrival Journal vinculado à linha do pedido de devolução. Tipo de evento explicit | |||
| Nota de crédito lançada | A nota de crédito é lançada oficialmente nos livros contábeis, tornando o crédito disponível para o cliente. Isso representa a conclusão da ação de reembolso do ponto de vista da empresa. | ||
| Por que isso importa Este é um marco financeiro essencial, confirmando que o reembolso foi processado no sistema. Muitas vezes, é uma atividade importante para medir a Conformidade com o SLA de reembolso. Onde obter Registro de data e hora do lançamento do diário de fatura do pedido de devolução, que finaliza a nota de crédito. O status do pedido de devolução muda para 'Invoiced'. Captura Lançamento do diário de fatura do pedido de devolução. Tipo de evento explicit | |||
| Pedido de devolução criado | Esta atividade marca o início do processo de devolução, quando uma Autorização de Devolução de Material (RMA) ou um pedido de devolução é criado no sistema. Trata-se de um evento explícito capturado no momento da criação de um novo registro ReturnOrder no Dynamics 365. | ||
| Por que isso importa Este é o principal evento de início de todo o processo de devoluções. Analisar o tempo entre esta atividade e as demais revela o lead time geral do processo e ajuda a identificar gargalos nas etapas iniciais. Onde obter Este evento é capturado a partir do registro de data e hora de criação do cabeçalho ReturnOrder. Normalmente, ele é encontrado na SalesTable, onde SalesType é 'Returned Order'. Captura Evento de criação do registro SalesTable com SalesType = 'Returned Order'. Tipo de evento explicit | |||
| Pedido de devolução encerrado | O pedido de devolução chegou ao estado final, o que significa que todas as transações físicas e financeiras foram concluídas. Isso normalmente ocorre depois que a nota de crédito é lançada ou o item de substituição é enviado. | ||
| Por que isso importa Este é o evento final principal de um processo de devolução concluído com sucesso. A duração entre a criação e este ponto representa o tempo total de ciclo do caso. Onde obter Inferido a partir da alteração do campo de status de ReturnOrder para um valor terminal, como 'Faturado' ou 'Encerrado'. Isso indica que não são esperados novos processamentos. Captura Alteração do campo SalesTable.Status ou SalesTable.DocumentStatus para um estado final. Tipo de evento inferred | |||
| Diário de chegada criado | Esta atividade indica que o armazém está aguardando a chegada do item devolvido. Trata-se da criação de um diário de chegada, que prepara o sistema para o recebimento físico das mercadorias. | ||
| Por que isso importa Esta etapa separa a preparação logística do recebimento físico efetivo. Ela ajuda a analisar a prontidão do armazém e o planejamento das devoluções recebidas. Onde obter Criação de um registro na WMSJournalTable com JournalType 'Arrival'. O diário está vinculado à linha do pedido de devolução. Captura Registro de data e hora de criação do registro WMSJournalTable da devolução. Tipo de evento explicit | |||
| Item de substituição enviado | A guia de remessa do item de substituição é lançada, indicando que ele foi enviado ao cliente. Isso marca a conclusão do processo de atendimento da troca. | ||
| Por que isso importa Este é um marco importante na variante de troca, representando o cumprimento da obrigação da empresa com o cliente. Ele é fundamental para acompanhar os tempos de ciclo das trocas. Onde obter A data de lançamento do diário da guia de remessa do pedido de venda de substituição. Isso atualiza o status do pedido para 'Entregue'. Captura Lançamento da guia de remessa do pedido de venda de substituição. Tipo de evento explicit | |||
| Nota de crédito criada | Uma nota de crédito é gerada com base em uma disposição 'Credit', autorizando um reembolso ao cliente. Este é o início formal da etapa de liquidação financeira do processo. | ||
| Por que isso importa Esta atividade marca a aprovação do reembolso financeiro. O tempo entre a disposição e a criação da nota de crédito evidencia atrasos administrativos no início do reembolso. Onde obter Isso pode ser inferido pela criação de um novo registro SalesTable com valor negativo, vinculado ao pedido de devolução original, ou pela execução do job em lote 'Create credit note'. Captura Criação de uma nota de crédito, geralmente por meio do lançamento da fatura do pedido de devolução. Tipo de evento explicit | |||
| Ordem de qualidade gerada | Uma ordem de qualidade formal é criada, indicando que o item devolvido deve passar por um processo estruturado de inspeção. Isso é comum em situações em que as devoluções exigem testes detalhados ou verificações em relação aos padrões de qualidade. | ||
| Por que isso importa Esta atividade marca o início de um processo formal de inspeção. Acompanhar o tempo a partir deste ponto ajuda a medir a eficiência e a duração do Workflow de garantia da qualidade. Onde obter Registro de data e hora de criação de um registro na InventQualityOrderTable vinculado ao pedido de devolução. Captura Criação de um registro InventQualityOrderTable. Tipo de evento explicit | |||
| Pedido de devolução cancelado | O pedido de devolução é cancelado antes da conclusão. Isso pode ocorrer por solicitação do cliente ou porque o item nunca foi devolvido. | ||
| Por que isso importa Isso representa um encerramento alternativo e malsucedido do processo. Analisar por que as devoluções são canceladas pode gerar insights sobre o comportamento do cliente ou falhas no processo. Onde obter Inferido a partir da alteração do campo de status de ReturnOrder para 'Cancelado'. Este é um estado terminal distinto de um pedido encerrado com sucesso. Captura Alteração do campo SalesTable.Status para 'Cancelado'. Tipo de evento inferred | |||
| Pedido de devolução confirmado | Representa a confirmação formal do pedido de devolução no sistema, geralmente acionando a lógica das etapas seguintes. Normalmente, é capturado como uma ação explícita ou uma mudança de status no cabeçalho ReturnOrder. | ||
| Por que isso importa A confirmação é uma etapa essencial antes do início da logística. Atrasos entre a criação e a confirmação podem indicar acúmulos administrativos ou relacionados ao sistema. Onde obter Isso pode ser identificado pelo lançamento do diário de 'Confirmation' do pedido de devolução ou por uma alteração no campo DocumentStatus da SalesTable. Captura Execução da função 'Confirm sales order' para o pedido de devolução. Tipo de evento explicit | |||
| Pedido de substituição criado | Um novo pedido de venda é criado para enviar um item de substituição ao cliente. Esta atividade ocorre quando a ação de disposição é 'Replace and Credit' ou 'Replace and Scrap'. | ||
| Por que isso importa Esta atividade inicia a variante do processo de troca. Acompanhar esse caminho separadamente do caminho de reembolso é essencial para entender as complexidades e os custos das trocas. Onde obter Criação de um novo registro SalesTable para o item de substituição, geralmente gerado automaticamente e vinculado ao pedido de devolução original. Captura Criação de um novo pedido de venda vinculado ao pedido de devolução por meio da ação de disposição. Tipo de evento explicit | |||
Guias de extração
Etapas
- Pré-requisito: registre um aplicativo no Azure Active Directory. Antes de conectar à API do Dynamics 365, você precisa registrar um aplicativo no seu tenant do Azure AD. Conceda a esse aplicativo permissões delegadas para acessar o Dynamics 365 Finance & Operations, como
Financials.ReadWrite.Allou uma permissão personalizada. - Configure o ID do aplicativo no Dynamics 365. No Dynamics 365, acesse Administração do sistema > Configuração > Aplicativos do Azure Active Directory. Adicione o ID do aplicativo (cliente) do registro do aplicativo no Azure AD e associe-o a uma conta de usuário que tenha as funções de segurança necessárias para ler as entidades de dados exigidas.
- Obtenha um token de acesso OAuth 2.0. Escreva um script, por exemplo em PowerShell ou Python, para autenticar no endpoint da plataforma de identidade da Microsoft. Use as credenciais do aplicativo, como ID e segredo do cliente, para solicitar um token de acesso para a URL do recurso do Dynamics 365.
- Identifique a URL do seu ambiente do Dynamics 365. Localize a URL base do seu ambiente do Dynamics 365. O endpoint da Web API normalmente terá este formato:
https://[YourD365FinanceAndOpsURL].dynamics.com/data. - Crie e execute solicitações à API OData. Para cada uma das 12 atividades necessárias, crie uma URL específica de solicitação OData GET. Use
$selectpara recuperar apenas as colunas necessárias e$filterpara especificar o intervalo de datas e quaisquer condições de status. O token de autenticação obtido na etapa 3 deve ser incluído como token Bearer no cabeçalho de autorização de cada solicitação. - Desenvolva um script de extração. Crie um script que percorra a lista de solicitações OData. Esse script deve cuidar da autenticação, executar cada solicitação GET e armazenar os dados JSON resultantes. Fique atento aos limites da API e implemente pausas quando necessário.
- Trate a paginação da API. O Dynamics 365 divide resultados grandes em páginas. Seu script deve verificar a existência da propriedade
@odata.nextLinkna resposta. Se ela existir, o script precisará fazer uma nova solicitação para essa URL e recuperar a próxima página de dados, continuando até que nenhumnextLinkseja fornecido. - Transforme e una os dados. Processe a resposta JSON de cada uma das 12 chamadas à API. Para cada atividade, crie um registro padronizado contendo
ReturnCaseId,ActivityName,EventTimee outros atributos. Por exemplo, no evento 'Return Order Created', mapeieReturnOrderNumberparaReturnCaseId, definaActivityNamecomo 'Return Order Created' e mapeiecreatedDateTimeparaEventTime. Combine os registros transformados de todas as chamadas em uma única lista ou tabela. - Limpe e padronize os registros de data e hora. Garanta que todos os valores de
EventTimeestejam em um formato consistente, de preferência UTC, usando um formato comoYYYY-MM-DDTHH:MM:SSZ. Trate os registros com registros de data e hora ausentes ou inválidos conforme necessário. - Exporte o Event Log final. Depois que todos os dados forem coletados e transformados em um conjunto de dados único e unificado, exporte-o para um arquivo CSV. Garanta que os cabeçalhos das colunas atendam aos requisitos do ProcessMind:
ReturnCaseId,ActivityName,EventTime,ResponsibleUser,DispositionCodeetc. O arquivo estará pronto para upload.
Configuração
- URL do endpoint da API: a URL base da sua instância do Dynamics 365 Finance & Operations. Ela segue o formato
https://[YourEnvironmentName].dynamics.com/data. - Aplicativo do Azure AD: um aplicativo deve ser registrado no Azure AD com um ID e um segredo do cliente. Ele precisa de permissões de API para acessar as entidades de dados do Dynamics 365.
- Filtro por intervalo de datas: é fundamental aplicar um filtro de intervalo de datas em cada chamada à API usando o parâmetro OData
$filterem um campo de data relevante, comocreatedDateTimeoumodifiedDateTime. Um intervalo inicial comum é considerar os últimos 3 a 6 meses de dados para manter a extração sob controle. - Filtro por empresa: para extrair dados de uma entidade legal específica, inclua o parâmetro de consulta
cross-company=truee use$filterno campodataAreaId. Por exemplo:?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]'. - Preferência de paginação: use o cabeçalho
Prefer: odata.maxpagesize=[value]nas solicitações para controlar o número de registros retornados por página. Um valor entre1000e5000é comum. Isso ajuda a evitar timeouts da API em entidades grandes. - Limitação da API: fique atento aos limites de proteção do serviço da API do Dynamics 365. O script de extração deve incluir uma lógica para tratar respostas
429 (Too Many Requests), normalmente implementando um backoff exponencial ou um mecanismo simples de pausar e tentar novamente.
a Consulta de exemplo graphql
/*
This is a conceptual guide representing multiple, distinct OData API calls.
You will need a script (e.g., Python, PowerShell) to execute these calls sequentially,
authenticate with a bearer token, handle pagination, and union the results into a single file.
Replace [YourD365URL], [StartDate], [EndDate], and [YourCompanyCode] with your specific values.
*/
// Base URL for all requests
const string BaseUrl = "https://[YourD365URL].dynamics.com/data";
const string CompanyFilter = "?cross-company=true&$filter=dataAreaId eq '[YourCompanyCode]' and ";
const string DateFilterCreated = "createdDateTime ge [StartDate]T00:00:00Z and createdDateTime le [EndDate]T23:59:59Z";
const string DateFilterModified = "modifiedDateTime ge [StartDate]T00:00:00Z and modifiedDateTime le [EndDate]T23:59:59Z";
// 1. Return Order Created
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}{DateFilterCreated}&$select=ReturnOrderNumber,createdDateTime,createdby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser, ReturnReasonCodeId -> ReturnReasonCode
// 2. Return Order Confirmed
// This often updates the header status. We look for a modification time on confirmed orders.
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Confirmed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnReasonCodeId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Confirmed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 3. Arrival Journal Created
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}{DateFilterCreated}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,createdDateTime,createdby
// Note: This requires post-processing to link JournalNumber to a ReturnCaseId via InventTransactionId.
// Mapping: Link via InventTrans -> ReturnCaseId, 'Arrival Journal Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 4. Item Received (Arrival Journal Posted)
GET {BaseUrl}/WarehouseArrivalJournalHeaders{CompanyFilter}JournalPosted eq 'Yes' and {DateFilterModified}&$expand=WarehouseArrivalJournalLines($select=InventTransactionId)&$select=JournalNumber,modifiedDateTime,modifiedby
// Mapping: Link via InventTrans -> ReturnCaseId, 'Item Received' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 5. Quality Order Generated
GET {BaseUrl}/InventQualityOrders{CompanyFilter}{DateFilterCreated}&$select=QualityOrderId,InventTransId,createdDateTime,CreatedByUserId,ItemId
// Mapping: Link via InventTransId -> ReturnCaseId, 'Quality Order Generated' -> ActivityName, createdDateTime -> EventTime, CreatedByUserId -> ResponsibleUser, ItemId -> ProductId
// 6. Disposition Code Applied
// This is a status change on the return line.
GET {BaseUrl}/ReturnOrderLines{CompanyFilter}ReturnDispositionCodeId ne '' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby,ReturnDispositionCodeId,ItemId
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Disposition Code Applied' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser, ReturnDispositionCodeId -> DispositionCode, ItemId -> ProductId
// 7. Credit Note Created
// Look for sales orders with type 'Returned Order' that are not yet invoiced.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderProcessingStatus eq 'Open' and SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 8. Credit Note Posted
// Look for posted invoice journals linked to a return order.
GET {BaseUrl}/SalesInvoiceJournalHeaders{CompanyFilter}SalesOrderType eq 'ReturnedOrder' and {DateFilterCreated}&$select=SalesOrderNumber,InvoiceDate,createdby
// Mapping: SalesOrderNumber -> ReturnCaseId, 'Credit Note Posted' -> ActivityName, InvoiceDate -> EventTime, createdby -> ResponsibleUser
// 9. Replacement Order Created
// Disposition code on the return line triggers a replacement order.
GET {BaseUrl}/SalesOrderHeadersV2{CompanyFilter}SalesOrderOriginType eq 'ReturnOrder' and {DateFilterCreated}&$select=SalesOrderNumber,createdDateTime,createdby,ReturnOrderNumber
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Replacement Order Created' -> ActivityName, createdDateTime -> EventTime, createdby -> ResponsibleUser
// 10. Replacement Item Shipped
// Check for posted packing slips related to the replacement sales order.
GET {BaseUrl}/SalesPackingSlipJournals{CompanyFilter}{DateFilterCreated}&$select=SalesOrderNumber,DeliveryDate,createdby
// Note: This requires linking SalesOrderNumber back to the original ReturnOrderNumber for the ReturnCaseId.
// Mapping: Link SalesOrderNumber -> ReturnCaseId, 'Replacement Item Shipped' -> ActivityName, DeliveryDate -> EventTime, createdby -> ResponsibleUser
// 11. Return Order Closed
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Closed' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Closed' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser
// 12. Return Order Cancelled
GET {BaseUrl}/ReturnOrderHeaders{CompanyFilter}ReturnOrderStatus eq 'Canceled' and {DateFilterModified}&$select=ReturnOrderNumber,modifiedDateTime,modifiedby
// Mapping: ReturnOrderNumber -> ReturnCaseId, 'Return Order Cancelled' -> ActivityName, modifiedDateTime -> EventTime, modifiedby -> ResponsibleUser Etapas
- Ative o endpoint TDS: confirme se o endpoint Tabular Data Stream (TDS) está ativado no ambiente Dataverse do Dynamics 365. Um administrador do sistema pode ativá-lo no centro de administração do Power Platform, em Environment > Settings > Features.
- Identifique a URL do ambiente: localize a URL do ambiente. Normalmente, ela tem o formato
yourorg.crm.dynamics.com. O nome do servidor do endpoint TDS será essa URL com a porta 5558, por exemplo,yourorg.crm.dynamics.com,5558. - Conecte-se com um cliente SQL: use um cliente SQL compatível com TDS, como o SQL Server Management Studio (SSMS) ou o Azure Data Studio.
- Autentique-se: conecte-se ao servidor usando sua conta do Azure Active Directory, com as permissões adequadas no ambiente Dataverse, normalmente System Administrator ou System Customizer.
- Prepare a consulta: copie a consulta SQL completa fornecida na seção
querydeste documento para uma nova janela de consulta no cliente SQL. - Defina os parâmetros: localize os placeholders na consulta. Substitua
'{StartDate}'e'{EndDate}'pelo período desejado para a extração, por exemplo,'2023-01-01'e'2023-12-31'. Atualize também os valores de placeholder dos códigos de status ou de disposição para que correspondam à sua configuração específica do Dynamics 365. - Execute a consulta: execute a consulta modificada no banco de dados Dataverse. O tempo de execução varia conforme o volume de dados e o período selecionado.
- Revise os resultados: quando a consulta for concluída, revise o conjunto de dados retornado para confirmar que ele contém as colunas esperadas:
ReturnCaseId,ActivityName,EventTimee os atributos recomendados. - Exporte o Event Log: exporte os resultados da consulta para um arquivo CSV. A maioria dos clientes SQL tem uma função integrada para salvar os resultados diretamente em um arquivo. Confirme se o arquivo foi salvo com codificação UTF-8.
- Carregue no ProcessMind: o arquivo CSV exportado está pronto para ser carregado no ProcessMind como um novo Event Log para análise de Process Mining.
Configuração
- Pré-requisitos: você precisa ter uma conta de usuário com pelo menos acesso de leitura às tabelas relevantes do Dataverse, como SalesTable, SalesLine e CustInvoiceJour. As permissões normalmente são gerenciadas por funções de segurança, como System Administrator, ou por uma função personalizada com permissões suficientes nas tabelas.
- Endpoint TDS: o endpoint TDS do Dataverse deve estar habilitado para o ambiente. Esse recurso permite executar consultas SQL diretas e somente leitura no banco de dados do Dataverse.
- Intervalo de datas: a consulta inclui os placeholders
'{StartDate}'e'{EndDate}'. Para a análise inicial, recomenda-se um intervalo de 3 a 6 meses, que fornece um conjunto de dados representativo sem causar problemas de performance. - Filtro por empresa: da forma como foi escrita, a consulta será executada em todas as entidades legais, ou empresas, às quais o usuário tem acesso. Para analisar uma única empresa, remova o comentário e adicione uma cláusula
WHEREfiltrando pelo campoDATAAREAIDem cada parte da instruçãoUNION ALL, por exemplo,AND st.DATAAREAID = '[YourCompanyID]'. - Placeholders de lógica personalizada: a consulta contém placeholders como
[YourReplaceCode1]para códigos de disposição e observações sobre a vinculação de pedidos de substituição. Eles devem ser configurados de acordo com seu processo de negócio específico e sua configuração do Dynamics 365. - Performance: consultas diretas no endpoint TDS para grandes conjuntos de dados podem ser lentas. A conexão é otimizada para consultas analíticas, mas joins complexos em milhões de linhas podem atingir o tempo limite. Recomenda-se aplicar filtros de data rigorosos.
a Consulta de exemplo sql
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Created' AS ActivityName,
st.CREATEDDATETIME AS EventTime,
st.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Confirmed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.DOCUMENTSTATUS = 1 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Arrival Journal Created' AS ActivityName,
wjt.CREATEDDATETIME AS EventTime,
wjt.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Item Received' AS ActivityName,
wjt.POSTEDDATETIME AS EventTime,
wjt.POSTEDUSERID AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN WMSJOURNALTABLE wjt ON st.SALESID = wjt.ORDERID AND st.DATAAREAID = wjt.DATAAREAID
WHERE st.SALESTYPE = 3 AND wjt.JOURNALTYPE = 4 AND wjt.POSTEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Quality Order Generated' AS ActivityName,
iqot.CREATEDDATETIME AS EventTime,
iqot.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Disposition Code Applied' AS ActivityName,
iqot.VALIDATEDDATETIME AS EventTime,
iqot.VALIDATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
iqot.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN INVENTQUALITYORDERTABLE iqot ON sl.INVENTTRANSID = iqot.INVENTTRANSID AND sl.DATAAREAID = iqot.DATAAREAID
WHERE st.SALESTYPE = 3 AND iqot.VALIDATEDDATETIME IS NOT NULL AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Created' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Credit Note Posted' AS ActivityName,
cij.CREATEDDATETIME AS EventTime,
cij.CREATEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
JOIN CUSTINVOICEJOUR cij ON st.SALESID = cij.SALESID AND st.DATAAREAID = cij.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Order Created' AS ActivityName,
replacement_so.CREATEDDATETIME AS EventTime,
replacement_so.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
replacement_sl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN SALESLINE replacement_sl ON replacement_so.SALESID = replacement_sl.SALESID AND replacement_so.DATAAREAID = replacement_sl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
ro.RETURNITEMNUM AS ReturnCaseId,
'Replacement Item Shipped' AS ActivityName,
cpsj.CREATEDDATETIME AS EventTime,
cpsj.CREATEDBY AS ResponsibleUser,
NULL AS DispositionCode,
NULL AS ReturnReasonCode,
replacement_so.SALESORIGINID AS ReturnChannel,
cpsl.ITEMID AS ProductId
FROM SALESTABLE ro
JOIN SALESLINE rol ON ro.SALESID = rol.SALESID AND ro.DATAAREAID = rol.DATAAREAID
JOIN SALESTABLE replacement_so ON ro.CUSTACCOUNT = replacement_so.CUSTACCOUNT AND ro.DATAAREAID = replacement_so.DATAAREAID
JOIN CUSTPACKINGSLIPJOUR cpsj ON replacement_so.SALESID = cpsj.SALESID AND replacement_so.DATAAREAID = cpsj.DATAAREAID
JOIN CUSTPACKINGSLIPTRANS cpsl ON cpsj.PACKINGSLIPID = cpsl.PACKINGSLIPID AND cpsj.SALESID = cpsl.SALESID AND cpsj.DATAAREAID = cpsl.DATAAREAID
WHERE ro.SALESTYPE = 3
AND rol.RETURNDISPOSITIONCODEID IN ('[YourReplaceCode1]', '[YourReplaceCode2]')
AND replacement_so.SALESTYPE = 1
AND replacement_so.CREATEDDATETIME > ro.CREATEDDATETIME
-- The join above is a basic example and must be replaced with your system's specific logic for linking returns to replacements.
AND ro.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Closed' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 3 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'
UNION ALL
SELECT
st.RETURNITEMNUM AS ReturnCaseId,
'Return Order Cancelled' AS ActivityName,
st.MODIFIEDDATETIME AS EventTime,
st.MODIFIEDBY AS ResponsibleUser,
sl.RETURNDISPOSITIONCODEID AS DispositionCode,
sl.RETURNREASONCODEID AS ReturnReasonCode,
st.SALESORIGINID AS ReturnChannel,
sl.ITEMID AS ProductId
FROM SALESTABLE st
JOIN SALESLINE sl ON st.SALESID = sl.SALESID AND st.DATAAREAID = sl.DATAAREAID
WHERE st.SALESTYPE = 3 AND st.SALESSTATUS = 4 AND st.CREATEDDATETIME BETWEEN '{StartDate}' AND '{EndDate}'; Pronto para começar?
Use este Template para simplificar a coleta de dados e começar a descobrir insights que ajudam a melhorar seu processo de devoluções e reembolsos. Comece hoje sua jornada rumo a um processamento mais rápido e a uma maior satisfação dos clientes.
Acabe com os atrasos em devoluções e reembolsos: otimize seu processo hoje
Reduza o tempo de ciclo em 30% e aumente a satisfação dos clientes.
Não é necessário cartão de crédito. A configuração leva poucos minutos.