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ção | Rota | O que faz |
|---|---|---|
criar_produto_termotubos | POST /produto_termotubos | Importa ou sincroniza produtos do Tiny pelo SKU |
buscar_pelo_filtro_produto_termotubos | GET /produto_termotubos/filtro | Busca produtos no catálogo da Termotubos (Tiny) |
buscar_sincronizacao_produto_termotubos | GET /produto_termotubos/sincronizacao | Status da sincronização do catálogo com o Tiny |
iniciar_sincronizacao_produto_termotubos | POST /produto_termotubos/sincronizacao | Inicia a sincronização do catálogo com o Tiny em segundo plano |
cancelar_sincronizacao_produto_termotubos | DELETE /produto_termotubos/sincronizacao | Cancela 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>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>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>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>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>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>;
}ResumoSincronizacaoCatalogo
import type { ResumoSincronizacaoCatalogo } from "termo_core/portal";
export interface ResumoSincronizacaoCatalogo {
atualizados: number;
conferidos: number;
conflitos: number;
criados: number;
falhas: number;
}StatusSincronizacaoCatalogo
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;
}