A API V3 JÁ ESTÁ DISPONÍVEL
As integrações API v2 que já estão configuradas, seguirão funcionando temporariamente. |
Insere um pedido de compra
Insere um pedido de compra no sistema.
curl |
curl -X POST "https://bling.com.br/Api/v2/pedidocompra/json/" |
PHP |
$url = 'https://bling.com.br/Api/v2/pedidocompra/json/'; $xml = '...'; $posts = array ( "apikey" => "{apikey}", "xml" => rawurlencode($xml) ); $retorno = executeSendOrder($url, $posts); echo $retorno; function executeSendOrder($url, $data){ $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_POST, count($data)); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($curl_handle); curl_close($curl_handle); return $response; } |
C# |
public static void ExecuteSendOrder() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://bling.com.br/Api/v2/pedidocompra/"); ASCIIEncoding encoding = new ASCIIEncoding(); string postData = "apikey={apiKey}&xml={xml_do_pedido_de_compra}"; byte[] data = encoding.GetBytes(postData); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; using (Stream stream = request.GetRequestStream()) stream.Write(data,0,data.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); Console.Out.WriteLine("Response Body: \r\n {0}", responseString); } |
Parâmetro | Descrição | Tipo |
apikey |
apikey gerada no sistema | string |
xml |
xml contendo o pedido de compra | string |
Para o parâmetro xml
, é necessário seguir um padrão.
Tabela de campos do XML
Grupo | Campo | Informação | Tipo | Padrão | Opcional | Nota |
---|---|---|---|---|---|---|
raiz | pedidocompra | Obrigatório | ||||
pedidocompra | numeropedido | Número do pedido de compra | STRING(10) | 9 | Opcional | |
pedidocompra | datacompra | Data do pedido de compra | DATE | 99/99/9999 | Opcional | 6 |
pedidocompra | dataprevista | Data prevista do pedido de compra | DATE | 99/99/9999 | Opcional | |
pedidocompra | ordemcompra | Número da ordem de compra | STRING(30) | Opcional | ||
pedidocompra | desconto | Desconto do pedido de compra | STRING(20) | 9 ou 9% | 7 | |
pedidocompra | observacoes | Observação do pedido de compra | STRING | Opcional | ||
pedidocompra | observacaointerna | Observações internas do pedido de compra | STRING | Opcional | ||
pedidocompra | idcategoria | Id da categoria de Receitas e Despesas | INTEGER(20) | Opcional | ||
pedidocompra | fornecedor | STRING | Obrigatório | |||
fornecedor | id | id do contato (fornecedor) | INTEGER(20) | Opcional | 1 | |
fornecedor | nome | Nome do fornecedor | STRING(80) | Obrigatório | ||
fornecedor | tipopessoa | Pessoa Física/Jurídica/Estrangeiro | STRING(1) | F ou J ou E | Opcional | 2 |
fornecedor | cpfcnpj | CPF/CNPJ do fornecedor | STRING(18) | 99999999999999 | Opcional | 1 |
fornecedor | ie | Inscrição Estadual do fornecedor | STRING(18) | 9999999999 | Opcional | |
fornecedor | rg | RG do fornecedor | STRING(18) | 9999999999 | Opcional | |
fornecedor | contribuinte | 1 - Contribuinte do ICMS, 2 - Contribuinte isento do ICMS ou 9 - Não contribuinte | STRING(1) | 9 | Opcional | 3 |
fornecedor | endereco | Endereço do fornecedor | STRING(50) | Opcional | ||
fornecedor | endereconro | Número do estabelecimento do fornecedor | STRING(10) | Opcional | ||
fornecedor | complemento | Complemento do endereço do fornecedor | STRING(100) | Opcional | ||
fornecedor | bairro | Bairro do fornecedor | STRING(60) | Opcional | ||
fornecedor | cep | CEP do fornecedor | STRING(10) | 99.999-999 | Opcional | |
fornecedor | cidade | Cidade do fornecedor | STRING(30) | Opcional | ||
fornecedor | uf | Unidade da Federação (sigla do estado) do fornecedor | STRING(2) | Opcional | ||
fornecedor | fone | Telefone do fornecedor | STRING(40) | Opcional | ||
fornecedor | celular | Celular do fornecedor | STRING(40) | Opcional | ||
fornecedor | E-mail do fornecedor | STRING(100) | Opcional | |||
pedidocompra | transporte | Opcional | ||||
transporte | transportador | Nome da transportadora | STRING(100) | Opcional | ||
transporte | freteporconta | Modalidade do frete | STRING(1) | Opcional | 4 | |
transporte | qtdvolumes | Quantidade de volumes | INTEGER(11) | Opcional | ||
transporte | frete | Valor do frete | DECIMAL(11,2) | Opcional | 7 | |
pedidocompra | itens | |||||
itens | item | Opcional | 7 | |||
item | codigo | Código do Item | STRING(60) | Opcional | ||
item | descricao | Nome do item | STRING(120) | Obrigatório | ||
item | un | Tipo de unidade do item | STRING(6) | pc, un, cx | Opcional | |
item | qtde | Quantidade do item no pedido de compra | DECIMAL(11,4) | Obrigatório | 7 | |
item | valor | Valor unitário do item | DECIMAL(17,10) | Obrigatório | 7 | |
pedidocompra | parcelas | Opcional | ||||
parcelas | parcela | Opcional | ||||
parcela | nrodias | Dias de prazo de pagamento da parcela | INTEGER(11) | Obrigatório | 6 | |
parcela | valor | Valor da parcela | DECIMAL(11,2) | Obrigatório | 7 | |
parcela | obs | Observação da parcela | STRING(100) | Opcional | ||
parcela | idformapagamento | id da forma de pagamento | INTEGER(11) | Obrigatório | 5 |
Vínculo do produto com o cadastro do sistema
O produto será vinculado com um produto previamente cadastrado no sistema caso o campo descricao ou codigo sejam idênticos ao do cadastro.
A escolha de qual campo será utilizado para realizar a comparação é definida acessando Preferências > Parâmetros da empresa > Configurações de Lojas Virtuais e alterando a opção Na importação através da API, buscar produtos por código ou descrição.
Mensagens de erros específicos
Código | Mensagem |
---|---|
191 | O fornecedor não foi preenchido (TAG). |
192 | Informe o nome do fornecedor. |
193 | O nome do fornecedor só deve possuir no máximo 120 caracteres. |
194 | Tipo de pessoa do fornecedor inválido. Informe um dos seguintes valores: ['F','J','E']." |
195 | CPF ou CNPJ do fornecedor inválido. |
196 | Fornecedor inválido. Não encontrado. |
197 | A tag contribuinte do fornecedor deve ser preenchida com 1, 2 ou 9. |
199 | UF do fornecedor inválido. |
200 | Cidade não encontrada para o Estado {UF}. |
201 | A tag UF deve ser preenchida quando a tag cidade estiver preenchida. |
202 | CEP inválido. |
203 | RG do fornecedor inválido. |
204 | Telefone do fornecedor inválido. |
205 | Celular do fornecedor inválido. |
206 | Email do fornecedor inválido. |
207 | Contato: Outras mensagens referentes a validação do Fornecedor. |
208 | Informe ao menos 1 item. |
209 | Há itens sem descrição. |
210 | Quantidade do item não pode ser negativo. |
211 | Preço unitário não pode ser negativo. |
213 | O nome do transportador só deve possuir no máximo 100 caracteres. |
214 | Tipo de frete incorreto. Informe um dos seguintes valores: 'R', 'D', 'T', '3', '4', 'S'. |
215 | Data da compra inválida. |
216 | Data prevista inválida. |
217 | Número de dias da data de vencimento inválido. |
218 | Valor da parcela inválido. |
219 | Forma de pagamento inválida. Não encontrada. |
220 | O valor total das parcelas deve ser igual o valor total do pedido. |
221 | Informe o número do pedido de compra a ser lançado. |
222 | Número do pedido inválido. |
223 | Informe o número do pedido de compra para atualizá-lo. |
224 | Já foi lançado um pedido de compra com este número. {NÚMERO} |
225 | Erros referentes a alteração da situação do pedido de compra. |
Exemplo de XML
<?xml version="1.0" encoding="utf-8" ?>
<pedidocompra>
<numeropedido>1</numeropedido>
<datacompra>17/07/2019</datacompra>
<dataprevista>02/08/2019</dataprevista>
<ordemcompra>123456789</ordemcompra>
<desconto>10%</desconto>
<observacoes>Observações normais...</observacoes>
<observacaointerna>Observações internas...</observacaointerna>
<fornecedor>
<id>1234567890</id>
<nome>Fornecedor teste 1</nome>
<tipopessoa>F</tipopessoa>
<cpfcnpj>01234567890</cpfcnpj>
<ie></ie>
<rg>1234567</rg>
<contribuinte>9</contribuinte>
<endereco>Rua Marques de Souza 1024</endereco>
<endereconro></endereconro>
<complemento></complemento>
<bairro>São Francisco</bairro>
<cep>95.703-012</cep>
<cidade>Bento Gonçalves</cidade>
<uf>RS</uf>
<fone>(54) 2222-2222</fone>
<celular>(54) 92222-2222</celular>
<email>emailteste2019@gmail.com</email>
</fornecedor>
<itens>
<item>
<codigo>123456</codigo>
<descricao>Produto teste 1</descricao>
<un/>
<qtde>10</qtde>
<valor>12.50</valor>
</item>
<item>
<codigo>223456</codigo>
<descricao>Produto teste 2</descricao>
<un/>
<qtde>17</qtde>
<valor>10</valor>
</item>
</itens>
<parcelas>
<parcela>
<nrodias>30</nrodias>
<valor>140.75</valor>
<obs>Uma observação qualquer...</obs>
<idformapagamento>123456</idformapagamento>
</parcela>
<parcela>
<nrodias>90</nrodias>
<valor>140.75</valor>
<obs></obs>
<idformapagamento>654321</idformapagamento>
</parcela>
</parcelas>
<transporte>
<transportador>Meu transportador 1</transportador>
<freteporconta>R</freteporconta>
<qtdvolumes>1</qtdvolumes>
<frete>16.0</frete>
</transporte>
</pedidocompra>
Retorno
Em caso de sucesso, retornará o número do pedido de compra inserido, o identificador e em determinadas circunstância uma mensagem informativa sobre o salvamento, no mesmo modelo do exemplo a seguir. Caso contrário, retornará um erro.
A resposta será no formato especificado na URL (XML ou JSON).
Exemplo de retorno
{ "retorno": { "pedidoscompra": [ { "pedidocompra": { "id": 0123456789, "numeropedido": 2, "mensagens": [ { "mensagem": "O número do seu pedido foi modificado para: 2" } ] } } ] } }