Páginas filhas
  • DR VA Integração API Produto - Requisições de Produto




01. INTRODUÇÃO

Obter classificação de produto 

  • Requisição que retorna a classificação de um produto.
URL
https://www30.bhan.com.br:9443/api/v1/produto/classificacaoproduto
MÉTODO
POST
CABEÇALHO
Token: "XXXXXXXXXXXXXX"
EXEMPLO REQUISIÇÃO
{
    "cdProduto": 999999999,
    "cdBarra": "XXXXXXXXXXXXX"
}
EXEMPLO RESPOSTA
[
    {
        "cdProduto": 10,						//Código do produto
        "cdBarra": "5809600000107",				//Código de barras do produto
        "dsProduto": "BASICA AMARELO DV",		//Descrição do produto
        "cdTpClassificacao": 22,				//Código do tipo de classificação
        "dsTpClassificacao": "MARCA",			//Descrição do tipo de classificação
        "cdClassificacao": "3",					//Código da classificação
        "dsClassificacao": "CLAS 3",			//Descrição classificação
        "cdGrupo": "2",							//Código do grupo
        "dsGrupo": "BASICA",					//Descrição do grupo
        "cdNivel": "300 2",						//Código do nível
        "dsNivel": "BASICA",					//Descrição do nível
        "cdCor": "1",							//Código da cor
        "dsCor": "UN",							//Descrição da cor
        "cdTamanho": 1,							//Código do tamanho
        "dsTamanho": "34",						//Descrição do tamanho
        "cdEspecie": "SVC"						//Código da espécie
    }
]

01. INTRODUÇÃO

Requisição que tem a finalidade de retornar os preços de um ou mais produtos, incluindo os valores promocionais.

Observação: Se a grade possuir um produto padrão configurado, todos os produtos receberão o mesmo valor do produto padrão.

02. UTILIZAÇÃO


 https://www30.bhan.com.br:9443/api/v1/produto/precoproduto

Body
{
    "produtos": [
        {
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX"
        }
    ],
    "cdPreco": 9999,
    "inPromocao": 9,
    "empresas": [
        {
            "cdEmpresa": 9999,
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX"
        }
    ]
}

URL

 https://www30.bhan.com.br:9443/api/v1/produto/precoproduto


HEADER

AuthorizationBearer {{token}}


BODY


Body
{
    "produtos": [
        {
            "cdProduto": "100"
        }
    ],
    "cdPreco": 1,
    "inPromocao": 1,
    "empresas": [
        {
            "cdEmpresa": 1
        }
    ]
}


NomeTipoDescriçãoExemploVA
cdProdutostringCódigo do produto *"cdProduto": "100"Referência 1
cdPrecointCódigo do Preço"cdPreco": 1Referência 2
inPromocaointValor de Promoção **"inPromocao": 1--
cdEmpresaintCódigo da Empresa ***"cdEmpresa": 1Referência 3
nrCNPJEmpresastringCNPJ da Empresa ***"nrCNPJEmpresa": "12345678901234"--



*Neste campo podemos informar o código sku do produto ou o código de barras do produto.

**Neste campo podemos informar 1 (um) para retornar os valores promocionais ou 0 (zero) para NÃO retornar os valores promocionais.

***Neste campo quando Código da Empresa for informado, não existe a necessidade de informar o CNPJ. Porém, caso o Código não for informado, o documento se torna obrigatório!

Todos os campos são obrigatórios. Caso possua a opção de informar  código e/ou documento, pelo menos um dos campos deve ser informado!

Status 200 OK
{
    "precos": [
        {
            "cdSKU": 9999999,
            "cdProduto": "XXXXXXXXXX",
            "dsProduto": "XXXXXXXXXX",
            "cdReferencia": "XXXXXXXXXX",
            "cdCor": "XXXXXXXXX",
            "dsTamanho": "XXXXXXXXXX",
            "cdEmpresa": 999999999,
            "nrCNPJEmpresa": "XXXXXXXXXXX",
            "vlPreco": 999999999.99,
            "vlPrecoPromocao": 999999999.99
        }
    ]
}
Status 400 Bad Request
{
    "dsErro": "Mensagem informativa do erro"
}
Main
public class ApiPrecoProduto
    {
        static void Main(string[] args)
        {
            var token = Token.ObterToken();
            var dto = PopularDto();
            RequisicaoPrecoProduto.PrecoProdutoConsulta(token, dto);
        }

        private static PrecoProdutoDTO.Envio PopularDto()
        {
            var dto = new DtoBuilder()
                .ComProdutos(ObterProduto())
                .ComCodigoPreco(1)
                .ComIncluiPromocao(1)
                .ComEmpresas(ObterEmpresa())                
                .Build();
            return dto;
        }

        private static List<Empresa> ObterEmpresa()
        {
            var empresas = new List<Empresa>();

            empresas.Add(
                new DtoEnvioEmpresaBuilder()
                .ComCodigoEmpresa(1)
                .ComNumeroCNPJEmpresa("12345678901234")
                .Build()
                );
            return empresas;
        }

        private static List<Produto> ObterProduto()
        {
            var produtos = new List<Produto>();

            produtos.Add(
                new DtoEnvioProdutoBuilder()
                .ComCodigoProduto("100")
                .Build()
                );
            return produtos;
        }
    }
public class DtoBuilder
    {
        private readonly PrecoProdutoDTO.Envio _dto;

        public DtoBuilder()
        {
            _dto = new PrecoProdutoDTO.Envio();
        }

        public DtoBuilder ComProdutos(Produto _produto)
        {
            _dto.Produtos.Add(_produto);
            return this;
        }

        public DtoBuilder ComProdutos(List<Produto> _produtos)
        {
            _dto.Produtos = _produtos;
            return this;
        }

        public DtoBuilder ComCodigoPreco(int codigoPreco)
        {
            _dto.CodigoPreco = codigoPreco;
            return this;
        }

        public DtoBuilder ComIncluiPromocao(int incluiPromocao)
        {
            _dto.IncluiPromocao = incluiPromocao;
            return this;
        }

        public DtoBuilder ComEmpresas(Empresa _empresa)
        {
            _dto.Empresas.Add(_empresa);
            return this;
        }

        public DtoBuilder ComEmpresas(List<Empresa> _empresas)
        {
            _dto.Empresas = _empresas;
            return this;
        }

        public PrecoProdutoDTO.Envio Build() => _dto;
    }    
    public class DtoEnvioProdutoBuilder
    {
        private readonly Produto _produto;

        public DtoEnvioProdutoBuilder()
        {
            _produto = new Produto();
        }

        public DtoEnvioProdutoBuilder ComCodigoProduto(string codigoProduto)
        {
            _produto.CodigoProduto = codigoProduto;
            return this;
        }

        public Produto Build() => _produto;
    }
 public class DtoEnvioEmpresaBuilder
    {
        private readonly Empresa _empresa;

        public DtoEnvioEmpresaBuilder()
        {
            _empresa = new Empresa();
        }

        public DtoEnvioEmpresaBuilder ComCodigoEmpresa(int codigoEmpresa)
        {
            _empresa.CodigoEmpresa = codigoEmpresa;
            return this;
        }

        public DtoEnvioEmpresaBuilder ComNumeroCNPJEmpresa(string numeroCNPJEmpresa)
        {
            _empresa.NumeroCNPJEmpresa = numeroCNPJEmpresa;
            return this;
        }

        public Empresa Build() => _empresa;
    }    
Token
public class Token
    {
        private const string _applicationJson = "application/json";
        private const string _baseUri = @"http://www30.bhan.com.br:9443/api/v1/";
        private const string _usuario = "usuario";
        private const string _senha = "senha";


        public static string ObterToken()
        {
            LoginDTO.EnvioToken login = new LoginDTO.EnvioToken(_usuario, _senha);

            var cliente = PopularCliente();


            var uri = @"autorizacao/token";
            var conteudo = new StringContent(_applicationJson);
            var response = cliente.PostAsync(uri, conteudo).Result;

            if (!response.IsSuccessStatusCode)
                throw new Exception();

            var retorno = JsonConvert.DeserializeObject<LoginDTO.RetornoToken>(response.Content.ReadAsStringAsync().Result);
            return retorno.Token.Replace("Bearer", "").Trim();

        }


        private static HttpClient PopularCliente()
        {
            HttpClient cliente = new HttpClient();
            cliente.BaseAddress = new Uri($"{_baseUri}");
            cliente.DefaultRequestHeaders.Accept.Clear();
            cliente.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_applicationJson));
            cliente.DefaultRequestHeaders.Add("usuario", _usuario);
            cliente.DefaultRequestHeaders.Add("senha", _senha);
            cliente.Timeout = TimeSpan.FromDays(1);

            return cliente;
        }
    }
Login
public class LoginDTO
    {
        public class EnvioToken
        {
            [JsonProperty("usuario")]
            public string Usuario { get; set; }

            [JsonProperty("senha")]
            public string Senha { get; set; }

            public EnvioToken(string usuario, string senha)
            {
                Usuario = usuario;
                Senha = senha;
            }
        }

        public class RetornoToken
        {
            [JsonProperty("cdToken")]
            public string Token { get; set; }

            [JsonProperty("dtExpiracao")]
            public string DataExpiracao { get; set; }

            public RetornoToken(string token, string dataExpitacao)
            {
                Token = token;
                DataExpiracao = dataExpitacao;
            }
        }
    }
public class RequisicaoPrecoProduto
    {
        private const string _balseUri = @"http://www30.bhan.com.br:9443/api/v1/";
        private const string _applicationJson = "application/json";

        public static PrecoProdutoDTO.Retorno PrecoProdutoConsulta(string token, PrecoProdutoDTO.Envio dto)
        {
            var uri = @"produto/precoproduto";
            var json = JsonConvert.SerializeObject(dto);
            var cliente = PopularCliente(token);
            var conteudo = new StringContent(json, Encoding.UTF8, _applicationJson);
            var response = cliente.PostAsync(uri, conteudo).Result;

            if (!response.IsSuccessStatusCode)
                throw new Exception();

            return JsonConvert.DeserializeObject<PrecoProdutoDTO.Retorno>(response.Content.ReadAsStringAsync().Result);
        }

        private static HttpClient PopularCliente(string token)
        {
            HttpClient cliente = new HttpClient();
            cliente.BaseAddress = new Uri($"{_balseUri}");
            cliente.DefaultRequestHeaders.Accept.Clear();
            cliente.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_applicationJson));
            cliente.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            return cliente;
        }
    }
public class PrecoProdutoDTO
    {
        public class Envio
        {
            public List<Produto> Produtos { get; set; }
            public List<Empresa> Empresas { get; set; }

            public Envio()
            {
                Produtos = new List<Produto>();
                Empresas = new List<Empresa>();
            }

            [JsonProperty("cdPreco")]
            public int CodigoPreco { get; set; }

            [JsonProperty("inPromocao")]
            public int IncluiPromocao { get; set; }
        }

        public class Retorno
        {
            public List<RetornoPrecoProduto> precos { get; set; }

            public Retorno()
            {
                precos = new List<RetornoPrecoProduto>();
            }
        } 
    }
    public class Produto
    {
        [JsonProperty("cdProduto")]
        public string CodigoProduto { get; set; }
    }
    public class Empresa
    {
        [JsonProperty("cdEmpresa")]
        public int CodigoEmpresa { get; set; }

        [JsonProperty("nrCNPJEmpresa")]
        public string NumeroCNPJEmpresa { get; set; }
    }

01. INTRODUÇÃO

Obter saldo dos produtos de um grupo por empresa

  • Requisição que retorna saldo de um grupo de produtos por empresa.
URL
https://www30.bhan.com.br:9443/api/v1/produto/saldogrupo
MÉTODO
POST
CABEÇALHO
Token: "XXXXXXXXXXXXXX"
EXEMPLO REQUISIÇÃO
{
    "cdReferencia": "XXXXXXXXXXXXXXXXXXXX",
    "cdGrupo": "XXXXXXXXXX",
    "cdCor": "XXXXXXXXXX",
    "dsTamanho": "XXXXXXXXXX",
    "cdSaldo": 9999,
    "inEstoque": 9,
    "inPedidoVenda": 9,
    "empresas": [
        {
            "cdEmpresa": 9999,
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX"
        }
    ]
}
EXEMPLO RESPOSTA
{
   "saldos": [
        {
            "cdSKU": 999999999,									"Código reduzido do produto"
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX",				"Código de barras do produto"
            "cdReferencia": "XXXXXXXXXXXXXXXXXXXX",				"Código da Referência"
            "cdCor": "XXXXXXXXXX",								"Código da Cor"
            "dsTamanho": "XXXXXXXXXX",							"Descrição do Tamanho"
            "cdEmpresa": 9999,									"Código da Empresa"
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX",					"CNPJ da Empresa"
            "qtEstoque":9999999.999,							"Quantidade em estoque"
            "qtPedidoVenda":9999999.999							"Quantidade em Pedido de Venda"
        }
    ]
}  

01. INTRODUÇÃO

Obter saldo em lote produto por empresa

  • Requisição que retorna o saldo de lote de um ou mais produtos por empresa
URL
https://www30.bhan.com.br:9443/api/v1/produto/saldoloteproduto
MÉTODO
POST
CABEÇALHO
Token: "XXXXXXXXXXXXXX"
EXEMPLO REQUISIÇÃO
{  
   "produtos": [
        {
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX"
        }
    ],
   "cdSaldo": 9999,
   "inEstoque":  9,
   "inPedidoVenda":  9,
   "inTransacao":  9,
   "empresas": [
        {
            "cdEmpresa": 9999,
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX"
        }
    ]
}
EXEMPLO RESPOSTA
{
   "lotes": [
        {
            "cdSKU": 999999999,												"Código reduzido do produto"
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX",							"Código de barras do produto"
            "cdEmpresa": 9999,												"Código da Empresa"
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX",								"CNPJ da Empresa"
            "nrLote": 999999999,											"Número do Lote"
            "nrItem": 999999999,											"Número do Item do Lote"
            "cdLote": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",				"Código do Lote"
            "qtEstoque":9999999.999,										"Quantidade em estoque"
            "qtPedidoVenda":9999999.999,									"Quantidade em Pedido de Venda"
            "qtTransacao":9999999.999										"Quantidade em Transação"
        }
    ]
} 

01. INTRODUÇÃO

Obter saldo de produto por empresa

  • Requisição que retorna saldo de um ou mais produtos por empresa.
URL
https://www30.bhan.com.br:9443/api/v1/produto/saldoproduto
MÉTODO
POST
CABEÇALHO
Token: "XXXXXXXXXXXXXX"
EXEMPLO REQUISIÇÃO
{
    "produtos": [
        {
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX"
        }
    ],
    "cdSaldo": 9999,                           // informar o código do saldo desejado
    "inEstoque": 9,                            // informar igual a 1 para retornar o saldo em estoque
    "inPedidoVenda": 9,                        // informar igual a 1 para retornar o saldo em pedido de venda
    "empresas": [
        {
            "cdEmpresa": 9999,
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX"
        }
    ]
}
EXEMPLO RESPOSTA
{
   "saldos": [
        {
        	"cdSKU": 999999999,								"Código reduzido do produto"
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX",			"Código de barras do produto"
            "cdReferencia": "XXXXXXXXXXXXXXXXXXXX",			"Código da Referência"
            "cdCor": "XXXXXXXXXX",							"Código da Cor"
            "dsTamanho": "XXXXXXXXXX",						"Descrição do Tamanho"
            "cdEmpresa": 9999,								"Código da Empresa"
            "nrCNPJEmpresa": "XXXXXXXXXXXXXX",				"CNPJ da Empresa"
            "qtEstoque":9999999.999,						"Quatidade em Estoque"
            "qtPedidoVenda":9999999.999						"Quantidade em Pedido de Venda"
        }
    ]
} 



  • Sem rótulos