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çãoRotaO que faz
buscar_paginador_rastreamentoGET /rastreamentoUma página das entregas (expedições), por cursor
buscar_auto_complete_rastreamentoGET /rastreamento/autocompleteTransportadoras ou vendedores das entregas
buscar_informacoes_paginador_rastreamentoGET /rastreamento/paginadorTotal, páginas e contagens por situação das entregas
buscar_sincronizacao_rastreamentoGET /rastreamento/sincronizacaoStatus da sincronização das entregas
iniciar_sincronizacao_rastreamentoPOST /rastreamento/sincronizacaoInicia a sincronização das entregas em segundo plano
cancelar_sincronizacao_rastreamentoDELETE /rastreamento/sincronizacaoCancela a sincronização das entregas em andamento
buscar_pelo_id_rastreamentoGET /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>>
Exemplo
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>>
Exemplo
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>
Exemplo
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>
Exemplo
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>
Exemplo
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>
Exemplo
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>
Exemplo
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;
}

Nesta página