Rastreamento
7 funções do TermoPortal para rastreamento.
// npm install termo_core --save-exact
import * as portal from "termo_core/portal";
// ou: import { portal } from "termo_core";| Função | Rota | O que faz |
|---|---|---|
buscar_paginador_rastreamento | GET /rastreamento | Uma página das entregas (expedições), por cursor |
buscar_auto_complete_rastreamento | GET /rastreamento/autocomplete | Transportadoras ou vendedores das entregas |
buscar_informacoes_paginador_rastreamento | GET /rastreamento/paginador | Total, páginas e contagens por situação das entregas |
buscar_sincronizacao_rastreamento | GET /rastreamento/sincronizacao | Status da sincronização das entregas |
iniciar_sincronizacao_rastreamento | POST /rastreamento/sincronizacao | Inicia a sincronização das entregas em segundo plano |
cancelar_sincronizacao_rastreamento | DELETE /rastreamento/sincronizacao | Cancela a sincronização das entregas em andamento |
buscar_pelo_id_rastreamento | GET /rastreamento/{id} | Busca uma entrega pelo id da logística |
buscar_paginador_rastreamento
GET/rastreamento Exige credencial
Uma página das entregas (expedições), por cursor
Exige a permissão ver no módulo Pedidos do perfil de quem chama (administrador e master têm tudo). Lê a tabela rastreamento, a cópia das entregas da API de logística da Termotubos mantida pela sincronização do backend (rodada rápida a cada 15 min com os últimos 30 dias e completa a cada 6 h com os últimos 120 dias). Ordem: emissão mais recente primeiro (empate pelo id). Devolve só o array das 50 entregas da página; a seguinte manda em cursor o id da última entrega recebida. Quem não é colaborador interno precisa informar unidade_id de uma unidade da sessão e só vê as entregas do CNPJ dela, sem dados do vendedor. Filtros: situacao (todas, aguardando, transito, entregue, atrasada; padrão todas), busca (CPF/CNPJ do cliente, número da nota fiscal ou nome do cliente, sem acento), inicio e fim (AAAA-MM-DD, data de emissão), transportadora (nome) e vendedor (id do vendedor no Tiny). Total, páginas e contagens vêm de GET /rastreamento/paginador, com os mesmos filtros.
function buscar_paginador_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarPaginadorRastreamento = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.Rastreamento>>import { CredencialDeAcesso } from "termo_core";
import { buscar_paginador_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_paginador_rastreamento(credencial_de_acesso, { situacao: "..." });Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.Rastreamento>> · Rust: Result<Vec<tipos::Rastreamento>, ErroAoChamarServico>
buscar_auto_complete_rastreamento
GET/rastreamento/autocomplete Exige credencial
Transportadoras ou vendedores das entregas
Exige a permissão ver no módulo Pedidos. Opções para os filtros da tela de rastreamento, tiradas da tabela rastreamento (entregas dos últimos 30 dias no painel, 12 meses para um cliente), da mais usada para a menos usada, no máximo 50: tipo transportadora (valor = nome) ou vendedor (valor = id no Tiny; só colaborador interno). Cada opção traz valor, rotulo e a quantidade de entregas. Quem não é colaborador interno precisa informar unidade_id de uma unidade da sessão. Lista inteira, sem paginação.
function buscar_auto_complete_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarAutoCompleteRastreamento,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.OpcaoDeFiltro>>import { CredencialDeAcesso } from "termo_core";
import { buscar_auto_complete_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_auto_complete_rastreamento(credencial_de_acesso, { tipo });Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.OpcaoDeFiltro>> · Rust: Result<Vec<tipos::OpcaoDeFiltro>, ErroAoChamarServico>
buscar_informacoes_paginador_rastreamento
GET/rastreamento/paginador Exige credencial
Total, páginas e contagens por situação das entregas
Mesma permissão e mesmos parâmetros de GET /rastreamento (cursor não muda a conta). Devolve total (entregas com os filtros e a situação), paginas (total dividido por tamanho, arredondado para cima, no mínimo 1), tamanho (sempre 50), sincronizado_em (a última sincronização; nulo se nunca houve) e contagens por situação (todas, aguardando, transito, entregues, atrasadas), que usam os outros filtros e ignoram a situacao.
function buscar_informacoes_paginador_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarInformacoesPaginadorRastreamento = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.RastreamentoPaginador>import { CredencialDeAcesso } from "termo_core";
import { buscar_informacoes_paginador_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_informacoes_paginador_rastreamento(credencial_de_acesso, { situacao: "..." });Argumentos
Nome
Tipo
Retorno: Promise<tipos.RastreamentoPaginador> · Rust: Result<tipos::RastreamentoPaginador, ErroAoChamarServico> · veja RastreamentoPaginador.
buscar_sincronizacao_rastreamento
GET/rastreamento/sincronizacao Exige credencial
Status da sincronização das entregas
Só colaborador interno com ver no módulo Pedidos. Devolve a sincronização em andamento ou a última que terminou: rodando, pagina de total_paginas (páginas da API), progresso (percentual), gravados, cancelada, concluida, erro, iniciada_em e terminada_em.
function buscar_sincronizacao_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.StatusSincronizacaoRastreamento>import { CredencialDeAcesso } from "termo_core";
import { buscar_sincronizacao_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_sincronizacao_rastreamento(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.StatusSincronizacaoRastreamento> · Rust: Result<tipos::StatusSincronizacaoRastreamento, ErroAoChamarServico> · veja StatusSincronizacaoRastreamento.
iniciar_sincronizacao_rastreamento
POST/rastreamento/sincronizacao Exige credencial
Inicia a sincronização das entregas em segundo plano
Só colaborador interno com ver no módulo Pedidos. Traz as entregas (expedições) da API de logística da Termotubos para a tabela rastreamento, sem filtro de data (histórico inteiro), lote por lote, em segundo plano no servidor: a tela pode ser fechada. Responde 202 com o status inicial; acompanhe por GET /rastreamento/sincronizacao. O status fica em memória e se perde se o servidor reiniciar.
function iniciar_sincronizacao_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.StatusSincronizacaoRastreamento>import { CredencialDeAcesso } from "termo_core";
import { iniciar_sincronizacao_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await iniciar_sincronizacao_rastreamento(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<tipos.StatusSincronizacaoRastreamento> · Rust: Result<tipos::StatusSincronizacaoRastreamento, ErroAoChamarServico> · veja StatusSincronizacaoRastreamento.
cancelar_sincronizacao_rastreamento
DELETE/rastreamento/sincronizacao Exige credencial
Cancela a sincronização das entregas em andamento
Só colaborador interno com ver no módulo Pedidos. Para antes do próximo lote; o que já foi gravado fica.
function cancelar_sincronizacao_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>import { CredencialDeAcesso } from "termo_core";
import { cancelar_sincronizacao_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await cancelar_sincronizacao_rastreamento(credencial_de_acesso);Argumentos
Nome
Tipo
Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.
buscar_pelo_id_rastreamento
GET/rastreamento/{id} Exige credencial
Busca uma entrega pelo id da logística
Exige a permissão ver no módulo Pedidos. Lê a entrega da tabela rastreamento (nota, transportadora, previsão, rastreio, ocorrência). Quem não é colaborador interno só abre entregas do CNPJ das próprias unidades (as outras respondem 404) e não recebe os dados do vendedor.
function buscar_pelo_id_rastreamento(
credencial_de_acesso: CredencialDeAcesso,
id: number,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Rastreamento>import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_rastreamento } from "termo_core/portal";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_rastreamento(credencial_de_acesso, id);Argumentos
Nome
Tipo
Retorno: Promise<tipos.Rastreamento> · Rust: Result<tipos::Rastreamento, ErroAoChamarServico> · veja Rastreamento.
Tipos
Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.
ContagemRastreamento
import type { ContagemRastreamento } from "termo_core/portal";
export interface ContagemRastreamento {
aguardando: number;
atrasadas: number;
entregues: number;
todas: number;
transito: number;
}OpcaoDeFiltro
import type { OpcaoDeFiltro } from "termo_core/portal";
export interface OpcaoDeFiltro {
entregas: number;
rotulo: string;
valor: string;
}Rastreamento
import type { Rastreamento } from "termo_core/portal";
export interface Rastreamento {
atualizado_em?: string | null;
cep?: string | null;
cidade?: string | null;
cliente?: string | null;
cliente_documento?: string | null;
codigo_rastreio?: string | null;
emissao?: string | null;
entrega?: string | null;
envio?: string | null;
frete?: number | null;
id: number;
link_rastreio?: string | null;
nota_fiscal?: number | null;
nota_tiny_id?: number | null;
ocorrencia?: string | null;
peso_kg?: number | null;
previsao?: string | null;
sincronizado_em: string;
situacao?: string | null;
situacao_id?: number | null;
transportadora?: string | null;
transportadora_documento?: string | null;
uf?: string | null;
valor_mercadorias?: number | null;
valor_nota?: number | null;
vendedor?: string | null;
vendedor_tiny_id?: number | null;
volumes?: number | null;
}RastreamentoPaginador
import type { RastreamentoPaginador } from "termo_core/portal";
export interface RastreamentoPaginador {
contagens: ContagemRastreamento;
paginas: number;
sincronizado_em?: string | null;
tamanho: number;
total: number;
}StatusSincronizacaoRastreamento
import type { StatusSincronizacaoRastreamento } from "termo_core/portal";
export interface StatusSincronizacaoRastreamento {
cancelada: boolean;
concluida: boolean;
erro?: string | null;
gravados: number;
iniciada_em?: string | null;
pagina: number;
progresso: number;
rodando: boolean;
terminada_em?: string | null;
total_paginas: number;
}