01. INTRODUÇÃO

Requisição que realiza a inclusão de uma transação por empresa.

Link para documentação técnica: Inclusão de transação

02. UTILIZAÇÃO

    https://www30.bhan.com.br:9443/api/v1/transacao/inclusao

{  
   "cdEmpresa":9999,										
   "nrCNPJEmpresa": "XXXXXXXXXXXXXX",					
   "cdPessoa": 999999999,								
   "nrCPFCNPJPessoa": "XXXXXXXXXXXXXX",					
   "dtMovimento": "99/99/9999",							
   "cdTransacao": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",	
   "cdOperacao": 999999,								
   "cdVendedor": 999999,								
   "nrCPFVendedor": "XXXXXXXXXXX",						
   "itens": [
        {
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX",		
            "cdEspecie": "XXX",							
            "qtItem": 9999999.999,						
            "vlBruto": 9999999.99,						
            "vlDescontoItem": 9999999.99,				
            "vlDescontoCapa": 9999999.99,				
            "vlLiquido": 9999999.99,					
            "cdVendedor": 999999,						
            "nrCPFVendedor": "XXXXXXXXXXX"				
        },
       {
            "cdProduto": "XXXXXXXXXXXXXXXXXXXX",
            "cdEspecie": "XXX",
            "qtItem": 9999999.999,
            "vlBruto": 9999999.99,
            "vlDescontoItem": 9999999.99,
            "vlDescontoCapa": 9999999.99,
            "vlLiquido": 9999999.99,
            "cdVendedor": 999999,
            "nrCPFVendedor": "XXXXXXXXXXX"
        }
    ] 
}

URL


BODY

{  
   "cdEmpresa":001,										
   "cdPessoa": 217,										
   "dtMovimento": "25/11/2019",							
   "cdTransacao": "63",	
   "cdOperacao":  501,								
   "cdVendedor": 5,										
   "itens": [
        {
            "cdProduto": "50",		
            "cdEspecie": "XXX",							
            "qtItem": 1,						
            "vlBruto": 259.000,						
            "vlDescontoItem":0.0000 ,				
            "vlDescontoCapa": 0.0000,				
            "vlLiquido": 259.00,					
            "cdVendedor": 5,							
        },
       {
            "cdProduto": "208",
            "cdEspecie": "XXX",
            "qtItem": 1,
            "vlBruto": 89.0000,
            "vlDescontoItem": 17.8000,
            "vlDescontoCapa": 0.0000,
            "vlLiquido": 71.200,
            "cdVendedor": 5,
        }
    ] 
}



 IMAGEM 1                                                IMAGEM 2                                               IMAGEM 3 

  


NomeTipoDescriçãoExemplo VA
cdEmpresa Int
Código da empresa **     
"cdEmpresa":001

Imagem 1 - 5

nrCNPJEmpresa  String
CNPJ da empresa **
"nrCNPJEmpresa": "Informar aqui o CNPJ da empresa"--
cdPessoa IntCódigo do cliente **"cdPessoa": 217Imagem 1 - 1
nrCPFCNPJPessoa StringCPF ou CNPJ do cliente **"nrCPFCNPJPessoa": "Informar aqui o CPF ou CNPJ da pessoa"--
dtMovimento String (Date)Data do movimento"dtMovimento": "25/11/2019"Imagem 1 - 4
cdTransacao *StringCódigo da transação"cdTransacao": "63"Imagem 1 - 3
cdOperacao  IntCódigo da operação ***"cdOperacao": 501Imagem 3 - 12 
cdVendedor IntCódigo do vendedor **"cdVendedor": 5Imagem 1 - 2
nrCPFVendedor StringCPF do vendedor **"nrCPFVendedor": "informar aqui o CPF do vendedor",--
itensArrayArray com os itens da transação----
cdProdutoStringCódigo de barras ou reduzido do produto"cdProduto": "208",

Imagem 2 - 6

cdEspecieStringEspécie do produto"cdEspecie": "XXX"
qtItemDoubleQuantidade de itens"qtItem": 1Imagem 2  - 10
vlBrutoDoubleValor bruto da transação"vlBruto": 89.0000 Imagem 2 - 7
vlDescontoItemDoubleValor desconto do item"vlDescontoItem": 17.8000Imagem 2 - 8
vlDescontoCapaDoubleValor desconto de capa "vlDescontoCapa": 0.0000Imagem 2 - 9
vlLiquidoDoubleValor líquido da transação"vlLiquido": 71.200Imagem 2 - 11
cdVendedorIntCódigo do vendedor **"cdVendedor": 5Imagem 1 - 2 ****
nrCPFVendedorStringCPF do vendedor **"nrCPFVendedor": "Informe aqui o CPF do vendedor"--


* GUID

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

*** O código da operação pode ser encontrado no componente GERFM065.

****  No exemplo, foi utilizado o mesmo vendedor da venda para o item. 



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!

{
  "cdEmpresa": 9999,
  "nrTransacao": 999999999
}
{
    "dsErro": "Mensagem informativa do erro"
}



public class ApiTransacao
    {
        static void Main(string[] args)
        {
            var token = Token.ObterToken();
            var dto = PopularDto();
            Transacao.IncluirTransacao(token, dto);
        }

        private static IncluirTransacao.Envio PopularDto()
        {
            var dto = new DtoBuilder()
                .ComCodigoEmpresa(001)
                .ComCodigoPessoa(217)
                .ComDataMovimento("25/11/2019")
                .ComCodigoTransacao("63")
                .ComCodigoOperacao(501)
                .ComCodigoVendedor(50)
                .ComItens(ObterItens())
                .Build();
            return dto;
        }

        private static List<Item> ObterItens()
        {
            var itens = new List<Item>();

            itens.Add(
                new DtoItemBuilder()
                .ComCodigoProduto("50")
                .ComCodigoEspecie("UN")
                .ComQuantidadeItem(1)
                .ComValorBruto(259.000)
                .ComDescontoItem(0.000)
                .ComDescontoCapa(0.000)
                .ComValorLiquido(259.00)
                .ComCodigoVendedorItem(50)
                .Build()
                );

            itens.Add(
                new DtoItemBuilder()
                .ComCodigoProduto("208")
                .ComCodigoEspecie("UN")
                .ComQuantidadeItem(1)
                .ComValorBruto(89.000)
                .ComDescontoItem(17.800)
                .ComDescontoCapa(0.000)
                .ComValorLiquido(71.200)
                .ComCodigoVendedorItem(50)
                .Build()
                );

            return itens;
        }
    }
public class DtoBuilder
    {
        private IncluirTransacaoDTO.Envio _dto;

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

        public DtoBuilder ComCodigoEmpresa(int codigoEmpresa)
        {
            _dto.CodigoEmpresa = codigoEmpresa;
            return this;
        }

        public DtoBuilder ComNumeroCNPJEmpresa(string CNPJEmpresa)
        {
            _dto.NumeroCNPJEmpresa = CNPJEmpresa;
            return this;
        }

        public DtoBuilder ComCodigoPessoa(int codigoPessoa)
        {
            _dto.CodigoPessoa = codigoPessoa;
            return this;
        }

        public DtoBuilder ComDocumentoPessoa(string documentoPessoa)
        {
            _dto.NumeroDocumentoPessoa = documentoPessoa;
            return this;
        }
        
        public DtoBuilder ComDataMovimento(string dataMovimento)
        {
            _dto.DataMovimento = dataMovimento;
            return this;
        }
        
        public DtoBuilder ComCodigoTransacao(string codigoTransacao)
        {
            _dto.CodigoTransacao = codigoTransacao;
            return this;
        }
        
        public DtoBuilder ComCodigoOperacao(int codigoOperacao)
        {
            _dto.CodigoOperacao = codigoOperacao;
            return this;
        }
        
        public DtoBuilder ComCodigoVendedor(int codigoVendedor)
        {
            _dto.CodigoVendedor = codigoVendedor;
            return this;
        }
        
        public DtoBuilder ComCPFVendedor(string CPFVendedor)
        {
            _dto.NumeroCPFVendedor = CPFVendedor;
            return this;
        }
        
        public DtoBuilder ComItens(Item item)
        {
            _dto.Itens.Add(item);
            return this;
        }
         
        public DtoBuilder ComItens(IList<Item> _itens)
        {
            _dto.Itens = _itens;
            return this;
        }
        

        public IncluirTransacaoDTO.Envio Build() => _dto;

    }
 public class DtoItemBuilder
    {
        private Item _item;

        public DtoItemBuilder()
        {
            _item = new Item();
        }

        public DtoItemBuilder ComCodigoProduto(string codigoProduto)
        {
            _item.CodigoProduto = codigoProduto;
            return this;
        }

        public DtoItemBuilder ComCodigoEspecie(string codigoEspecie)
        {
            _item.CodigoEspecie = codigoEspecie;
            return this;
        }

        public DtoItemBuilder ComQuantidadeItem(Double quantidadeItem)
        {
            _item.QuantidadeItem = quantidadeItem;
            return this;
        }

        public DtoItemBuilder ComValorBruto(Double valorBruto)
        {
            _item.ValorBruto = valorBruto;
            return this;
        }

        public DtoItemBuilder ComDescontoItem(Double descontoItem)
        {
            _item.ValorDescontoItem = descontoItem;
            return this;
        }

        public DtoItemBuilder ComDescontoCapa(Double descontoCapa)
        {
            _item.ValorDescontoCapa = descontoCapa;
            return this;
        }

        public DtoItemBuilder ComValorLiquido(Double valorLiquido)
        {
            _item.ValorLiquido = valorLiquido;
            return this;
        }

        public DtoItemBuilder ComCodigoVendedorItem(int codigoVendedor)
        {
            _item.CodigoVendedor = codigoVendedor;
            return this;
        }

        public DtoItemBuilder ComCPFVendedorItem(string CPFVendedor)
        {
            _item.NumeroCPFVendedor = CPFVendedor;
            return this;
        }

        public Item Build() => _item;
    }
public class Item
    {
        [JsonProperty("cdProduto")]
        public string CodigoProduto { get; set; }

        [JsonProperty("cdEspecie")]
        public string CodigoEspecie { get; set; }

        [JsonProperty("qtItem")]
        public Double QuantidadeItem { get; set; }

        [JsonProperty("vlBruto")]
        public Double ValorBruto { get; set; }

        [JsonProperty("vlDescontoItem")]
        public Double ValorDescontoItem { get; set; }

        [JsonProperty("vlDescontoCapa")]
        public Double ValorDescontoCapa { get; set; }

        [JsonProperty("vlLiquido")]
        public Double ValorLiquido { get; set; }

        [JsonProperty("cdVendedor")]
        public int CodigoVendedor { get; set; }

        [JsonProperty("nrCPFVendedor")]
        public string NumeroCPFVendedor { get; set; }
    }



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 = "desen";
        private const string _senha = "123456";


        public static string ObterToken()
        {
            LoginDTO.Envio login = new LoginDTO.Envio(_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.Retorno>(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;
        }
    }
public class LoginDTO
    {
        public class Envio
        {
            [JsonProperty("usuario")]
            public string Usuario { get; set; }

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

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

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

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

            public Retorno(string token, string dataExpitacao)
            {
                Token = token;
                DataExpiracao = dataExpitacao;
            }
        }

    }
public class Transacao 
    {
        private const string _balseUri = @"http://www30.bhan.com.br:9443/api/v1/";
        private const string _applicationJson = "application/json";

        public static IncluirTransacaoDTO.Retorno IncluirTransacao(string token, IncluirTransacaoDTO.Envio dto)
        {
            var uri = @"transacao/inclusao";
            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<IncluirTransacaoDTO.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 IncluirTransacaoDTO
    {
        public class Envio
        {
            [JsonProperty("cdEmpresa")]
            public int CodigoEmpresa { get; set; }

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

            [JsonProperty("cdPessoa")]
            public int CodigoPessoa { get; set; }

            [JsonProperty("nrCPFCNPJPessoa")]
            public string NumeroDocumentoPessoa { get; set; }

            [JsonProperty("dtMovimento")]
            public string DataMovimento { get; set; }

            [JsonProperty("cdTransacao")]
            public string CodigoTransacao { get; set; }

            [JsonProperty("cdOperacao")]
            public int CodigoOperacao { get; set; }

            [JsonProperty("cdVendedor")]
            public int CodigoVendedor { get; set; }

            [JsonProperty("nrCPFVendedor")]
            public string NumeroCPFVendedor { get; set; }

            [JsonProperty("itens")]
            public IList<Item> Itens { get; set; }
        }

        public class Retorno
        {
            [JsonProperty("cdEmpresa")]
            public int CodigoEmpresa { get; set; }

            [JsonProperty("nrTransacao")]
            public int NumeroTransacao { get; set; }
        }
    }

01. INTRODUÇÃO

Requisição que retorna as transações filtrando por dia e ou situação.

Link para documentação técnica: Consulta de transação

02. UTILIZAÇÃO

    https://www30.bhan.com.br:9443/api/v1/transacao/lista

{
        "cdEmpresa": 9999,									
        "nrCNPJEmpresa": "XXXXXXXXXXXX",					
        "cdPessoa": 9999,										
        "nrCPFCNPJPessoa": "XXXXXXXXXXXX",					
        "dtMovimento": "99/99/9999",						
        "situacoes": [9],										
        "cdOperacao": 9999,									
        "cdVendedor": 9999,									
        "nrCPFVendedor": "XXXXXXXXXXXX"
}

URL

    https://www30.bhan.com.br:9443/api/v1/transacao/lista


BODY



 IMAGEM 1                                                                                           IMAGEM 2                                                                                

  


NomeTipoDescriçãoExemplo VA
cdEmpresa *Int
Código da empresa **     
"cdEmpresa":001

Imagem 1 - 5

nrCNPJEmpresa  String
CNPJ da empresa **
"nrCNPJEmpresa": "Informar aqui o CNPJ da empresa"--
cdPessoa IntCódigo do cliente **"cdPessoa": 217Imagem 1 - 1
nrCPFCNPJPessoa StringCPF ou CNPJ do cliente **"nrCPFCNPJPessoa": "Informar aqui o CPF ou CNPJ da pessoa"--
dtMovimento *String (Date)Data do movimento"dtMovimento": "25/11/2019"Imagem 1 - 4
situacoesArraySituação da transação"situações": [1,2,3,4]
cdOperacao  IntCódigo da operação ***"cdOperacao": 501Imagem 2 - 12 
cdVendedor IntCódigo do vendedor **"cdVendedor": 5Imagem 1 - 2
nrCPFVendedor StringCPF do vendedor **"nrCPFVendedor": "informar aqui o CPF do vendedor",--


* Obrigatório

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

*** O código da operação pode ser encontrado no componente GERFM065.

{
        "cdEmpresa": 9999,									
        "nrTransacao": 9999,						
        "dtTransacao": "99/99/9999",
}

EXEMPLO DE UMA REQUISIÇÃO Q DEU PAU


*COLOCAR OS TIPOS DE ERROS QUE PODE DAR

Implementação da API em C#

01. INTRODUÇÃO

Requisição que retorna os dados da transação.

Link para documentação técnica: Consulta dados de transação

02. UTILIZAÇÃO

    https://www30.bhan.com.br:9443/api/v1/transacao/dados

{
        "cdEmpresa": 9999,									
        "nrTransacao": 9999,						
        "dtTransacao": "99/99/9999",
}

URL


BODY



 IMAGEM 1                                                                                                                                                                         

  


NomeTipoDescriçãoExemplo VA
cdEmpresa Int
Código da empresa     
"cdEmpresa":001

Imagem 1 - 1

nrTransacaoIntNumero da transação"nrTransacao": 63Imagem 1 - 2
dtTransacaoString (date)Data da transação"dtTransacao": "25/11/2019"Imagem 1 - 3

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!

{
    "cdEmpresa": 4,											"Código da Empresa"
    "nrTransacao": 578920,									"Número da Transação"
    "dtTransacao": "11/09/2019",							"Data da Transação"
    "cdPessoa": 14098,										"Código do Cliente"
    "cdTransacao": "000000022",								"Código de Transação"
    "cdOperacao": 7,										"Código de Operação"
    "cdVendedor": 50,										"Código do Vendedor"
    "tpSituacao": 4,										"Situação da Transação (Ex.: 1 - Em andamento, 2 - Liberada p/ faturamento; Ex. preenchimento: [1,2,3,4])"
    "itens": [
        {
            "nrItem": 1,									"Número do Item"
            "cdProduto": "82227",							"Código do Produto"
            "dsProduto": "PRODUTO CAMISA 001 AZUL P",		"Descrição do Produto"
            "cdEspecie": "PC",								"Espécie do Produto"
            "qtItem": 1,									"Quantidade Solicitada"
            "vlBruto": 10.54,								"Valor Bruto Total"
            "vlUnitarioBruto": 10.54,						"Valor Unitário Bruto"
            "vlDescontoItem": 10.54,						"Valor de Desconto do Item"
            "vlDescontoCapa": 0,							"Valor de Desconto da Capa"
            "vlLiquido": 0,									"Valor líquido total"
            "vlUnitarioLiquido": 0,							"Valor Unitário Líquido"
            "cdVendedor": 50								"Código do Vendedor para o Item"
        }
    ]
}

EXEMPLO DE UMA REQUISIÇÃO Q DEU PAU


*COLOCAR OS TIPOS DE ERROS QUE PODE DAR

Implementação da API em C#