Produto Termotubos

5 funções do TermoPortal para produto termotubos.

// npm install termo_core --save-exact
import * as portal from "termo_core/portal";
// ou: import { portal } from "termo_core";
FunçãoRotaO que faz
criar_produto_termotubosPOST /produto_termotubosImporta ou sincroniza produtos do Tiny pelo SKU
buscar_pelo_filtro_produto_termotubosGET /produto_termotubos/filtroBusca produtos no catálogo da Termotubos (Tiny)
buscar_sincronizacao_produto_termotubosGET /produto_termotubos/sincronizacaoStatus da sincronização do catálogo com o Tiny
iniciar_sincronizacao_produto_termotubosPOST /produto_termotubos/sincronizacaoInicia a sincronização do catálogo com o Tiny em segundo plano
cancelar_sincronizacao_produto_termotubosDELETE /produto_termotubos/sincronizacaoCancela a sincronização do catálogo em andamento

criar_produto_termotubos

POST/produto_termotubos Exige credencial

Importa ou sincroniza produtos do Tiny pelo SKU

Exige a permissão criar no módulo Configuracoes do perfil de quem chama (administrador e master têm tudo). Importa no portal os produtos do Tiny pelos skus (1 a 100 por vez; vazios e repetidos são descartados). Produto novo é criado; produto que já existe é atualizado, e diferença de preço ou estoque em produto com preço definido no portal vira conflito de sincronização. Responde 200 com o resultado de cada SKU (criado, atualizado, conflito ou falha) e os totais. Até 10 chamadas por minuto por pessoa.

function criar_produto_termotubos(
  credencial_de_acesso: CredencialDeAcesso,
  corpo_da_requisicao: tipos.ProdutoTermotubosCriar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ImportacaoProdutos>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { criar_produto_termotubos } from "termo_core/portal";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await criar_produto_termotubos(credencial_de_acesso, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ImportacaoProdutos> · Rust: Result<tipos::ImportacaoProdutos, ErroAoChamarServico> · veja ImportacaoProdutos.

buscar_pelo_filtro_produto_termotubos

GET/produto_termotubos/filtro Exige credencial

Busca produtos no catálogo da Termotubos (Tiny)

Exige a permissão ver no módulo Configuracoes do perfil de quem chama (administrador e master têm tudo). Consulta o catálogo do Tiny pela API da Termotubos para importar produtos no portal. busca aceita SKUs separados por vírgula, ponto e vírgula ou espaço; termo terminado em * busca pelo prefixo (ex.: B68*). apenas_ativos filtra; pagina começa em 1 e por_pagina tem padrão 20 e vai de 1 a 50 (vale também para a busca por termos, paginada no servidor com tem_mais, total_paginas e total_registros). Cada item diz se já existe no portal (ja_existe). Termos inválidos voltam em termos_invalidos; truncado: true indica que a busca por prefixo foi cortada. Até 30 chamadas por minuto por pessoa.

function buscar_pelo_filtro_produto_termotubos(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPeloFiltroProdutoTermotubos = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.BuscaTermotubos>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_filtro_produto_termotubos } from "termo_core/portal";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_filtro_produto_termotubos(credencial_de_acesso, { busca: "..." });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.BuscaTermotubos> · Rust: Result<tipos::BuscaTermotubos, ErroAoChamarServico> · veja BuscaTermotubos.

buscar_sincronizacao_produto_termotubos

GET/produto_termotubos/sincronizacao Exige credencial

Status da sincronização do catálogo com o Tiny

Exige a permissão ver no módulo Configuracoes. Devolve a sincronização em andamento ou a última que terminou: etapa (lendo ou gravando), gravados de total, cancelada, erro e o resumo (conferidos, criados, atualizados, conflitos e falhas).

function buscar_sincronizacao_produto_termotubos(
  credencial_de_acesso: CredencialDeAcesso,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.StatusSincronizacaoCatalogo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_sincronizacao_produto_termotubos } from "termo_core/portal";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_sincronizacao_produto_termotubos(credencial_de_acesso);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.StatusSincronizacaoCatalogo> · Rust: Result<tipos::StatusSincronizacaoCatalogo, ErroAoChamarServico> · veja StatusSincronizacaoCatalogo.

iniciar_sincronizacao_produto_termotubos

POST/produto_termotubos/sincronizacao Exige credencial

Inicia a sincronização do catálogo com o Tiny em segundo plano

Exige a permissão criar no módulo Configuracoes. Lê o catálogo do Tiny e grava no portal o que é novo ou mudou, em segundo plano no servidor: a tela pode ser fechada. apenas_ativos lê só os produtos ativos. Responde 202 com o status inicial; acompanhe por GET /produto_termotubos/sincronizacao. O status fica em memória e se perde se o servidor reiniciar.

function iniciar_sincronizacao_produto_termotubos(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeIniciarSincronizacaoProdutoTermotubos = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.StatusSincronizacaoCatalogo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { iniciar_sincronizacao_produto_termotubos } from "termo_core/portal";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await iniciar_sincronizacao_produto_termotubos(credencial_de_acesso, { apenas_ativos: true });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.StatusSincronizacaoCatalogo> · Rust: Result<tipos::StatusSincronizacaoCatalogo, ErroAoChamarServico> · veja StatusSincronizacaoCatalogo.

cancelar_sincronizacao_produto_termotubos

DELETE/produto_termotubos/sincronizacao Exige credencial

Cancela a sincronização do catálogo em andamento

Exige a permissão excluir no módulo Configuracoes. Para depois do lote em gravação; o que já foi gravado fica.

function cancelar_sincronizacao_produto_termotubos(
  credencial_de_acesso: CredencialDeAcesso,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { cancelar_sincronizacao_produto_termotubos } from "termo_core/portal";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await cancelar_sincronizacao_produto_termotubos(credencial_de_acesso);

Argumentos

Nome

Tipo

Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.

Tipos

Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.

BuscaTermotubos

import type { BuscaTermotubos } from "termo_core/portal";

export interface BuscaTermotubos {
  itens: Array<ItemCatalogoTermotubos>;
  pagina: number;
  tem_mais: boolean;
  termos_invalidos: Array<TermoInvalido>;
  total_paginas?: number | null;
  total_registros?: number | null;
  truncado: boolean;
}

ImportacaoProdutos

import type { ImportacaoProdutos } from "termo_core/portal";

export interface ImportacaoProdutos {
  atualizados: number;
  conflitos: number;
  criados: number;
  falhas: number;
  itens: Array<ItemSincronizado>;
}

ItemCatalogoTermotubos

import type { ItemCatalogoTermotubos } from "termo_core/portal";

export interface ItemCatalogoTermotubos {
  ativo?: boolean | null;
  estoque?: number | null;
  imagem_url?: string | null;
  ja_existe: boolean;
  ncm?: string | null;
  nome: string;
  preco: number;
  preco_a_vista?: number | null;
  sku: string;
  tem_imagem: boolean;
  unidade?: string | null;
}

ItemSincronizado

import type { ItemSincronizado } from "termo_core/portal";

export interface ItemSincronizado {
  detalhe?: string | null;
  motivo?: string | null;
  nome?: string | null;
  produto_id?: string | null;
  resultado: string;
  sku: string;
}

ProdutoTermotubosCriar

import type { ProdutoTermotubosCriar } from "termo_core/portal";

export interface ProdutoTermotubosCriar {
  skus: Array<string>;
}
import type { ResumoSincronizacaoCatalogo } from "termo_core/portal";

export interface ResumoSincronizacaoCatalogo {
  atualizados: number;
  conferidos: number;
  conflitos: number;
  criados: number;
  falhas: number;
}
import type { StatusSincronizacaoCatalogo } from "termo_core/portal";

export interface StatusSincronizacaoCatalogo {
  cancelada: boolean;
  erro?: string | null;
  etapa?: string | null;
  gravados: number;
  iniciada_em?: string | null;
  resumo: ResumoSincronizacaoCatalogo;
  rodando: boolean;
  terminada_em?: string | null;
  total?: number | null;
}

TermoInvalido

import type { TermoInvalido } from "termo_core/portal";

export interface TermoInvalido {
  motivo: string;
  valor: string;
}

Nesta página