Skip to content

Commit

Permalink
Merge pull request #40 from pablosanches/feat/estoques
Browse files Browse the repository at this point in the history
Feat/estoques
  • Loading branch information
pablosanches authored May 28, 2024
2 parents 349279b + 681842e commit 520fd24
Show file tree
Hide file tree
Showing 22 changed files with 1,136 additions and 2 deletions.
163 changes: 161 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,22 @@ Pule para:
* [Buscando uma categoria de produtos pelo seu ID](#Buscando-uma-categoria-de-produtos-pelo-seu-ID)
* [Buscando todos as categorias de produtos](#Buscando-todos-as-categorias-de-produtos)
* [Removendo uma categoria de produto](#Removendo-uma-categoria-de-produto8)
* [Categorias Lojas (Multilojas)](#Categorias-lojas)
* [Categorias Lojas](#Categorias-lojas)
* [Criando um vínculo de uma categoria de produto](#Criando-um-vínculo-de-uma-categoria-de-produto)
* [Atualizando um vínculo de uma categoria de produto](#Atualizando-um-vínculo-de-uma-categoria-de-produto)
* [Buscando um vínculo de categoria de produto pelo seu ID](#Buscando-um-vínculo-de-categoria-de-produto-pelo-seu-ID)
* [Buscando todos os vínculos de categorias de produtos](#Buscando-todos-os-vínculos-de-categorias-de-produtos)
* [Removendo um vínculo de uma categoria de produto](#Removendo-um-vínculo-de-uma-categoria-de-produto)
* [Depósitos](#Depósitos)
* [Criando um depósito](#Criando-um-depósito)
* [Alterando um depósito](#Alterando-um-depósito)
* [Obtendo um depósito pelo ID](#Obtendo-um-depósito-pelo-ID)
* [Obtendo todos os depósitos](#Obtendo-todos-os-depósitos)
* [Estoques](#Estoques)
* [Criando um registro de estoque](#Criando-um-registro-de-estoque)
* [Atualizando um registro de estoque](#Atualizando-um-registro-de-estoque)
* [Obtém o saldo em estoque de produtos em todos os depósitos](#Obtém-o-saldo-em-estoque-de-produtos-em-todos-os-depósitos)
* [Obtém o saldo em estoque de produtos pelo ID do depósito](#Obtém-o-saldo-em-estoque-de-produtos-pelo-ID-do-depósito)

## Introdução
A API V3 do [Bling!](https://developer.bling.com.br/bling-api#introdu%C3%A7%C3%A3o) utiliza do modelo de autenticação OAuth 2.0, sendo assim, antes de qualquer coisa você precisará registrar um aplicativo em sua conta do Bling! para conseguir realizar todas as etapas de autenticação, você pode saber mais [aqui!](https://developer.bling.com.br/aplicativos#introdu%C3%A7%C3%A3o)
Expand Down Expand Up @@ -274,7 +284,6 @@ use PabloSanches\Bling\Client;
} catch (\Exception $e) {
// $e->getMessage();
}

```

### Atualizando uma categoria de produtos:
Expand Down Expand Up @@ -426,4 +435,154 @@ $blingClient = Client::factory('<seu-token-aqui>', ['multilojas' => '<id-integra
} catch (\Exception $e) {
// $e->getMessage();
}
```

## Depósitos
[Ver documentação](https://developer.bling.com.br/referencia#/Dep%C3%B3sitos)

### Criando um depósito
[Ver documentação](https://developer.bling.com.br/referencia#/Dep%C3%B3sitos/post_depositos)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Depósito Geral',
'situacao' => 1,
'padrao' => false,
'desconsiderarSaldo' => false
];
$response = $bling->depositos()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Alterando um depósito
[Ver documentação](https://developer.bling.com.br/referencia#/Dep%C3%B3sitos/put_depositos__idDeposito_)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Depósito Geral',
'situacao' => 1,
'padrao' => false,
'desconsiderarSaldo' => false
];
$idDeposito = 123456789;
$response = $bling->depositos()->atualizar($idDeposito, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Obtendo um depósito pelo ID
[Ver documentação](https://developer.bling.com.br/referencia#/Dep%C3%B3sitos/get_depositos__idDeposito_)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$idDeposito = 123456789;
$response = $bling->depositos()->buscar($idDeposito);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Obtendo todos os depósitos
[Ver documentação](https://developer.bling.com.br/referencia#/Dep%C3%B3sitos/get_depositos)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->depositos()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
```

## Estoques
[Ver documentação](https://developer.bling.com.br/referencia#/Estoques)

### Criando um registro de estoque
[Ver documentação](https://developer.bling.com.br/referencia#/Estoques/post_estoques)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
"produto" => ['id' => 123456789],
"deposito" => ['id' => 123456789],
"operacao" => "B",
"preco" => 1500.75,
"custo" => 1500.75,
"quantidade" => 50.75,
"observacoes" => "Observações de estoque"
];
$response = $bling->estoques()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Atualizando um registro de estoque
[Ver documentação](https://developer.bling.com.br/referencia#/Estoques/put_estoques__idEstoque_)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
"produto" => ['id' => 123456789],
"deposito" => ['id' => 123456789],
"operacao" => "B",
"preco" => 1500.75,
"custo" => 1500.75,
"quantidade" => 50.75,
"observacoes" => "Observações de estoque"
];
$idDoEstoque = 123456789;
$response = $bling->estoques()->atualizar($idDoEstoque, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Obtém o saldo em estoque de produtos em todos os depósitos
[Ver documentação](https://developer.bling.com.br/referencia#/Estoques/get_estoques_saldos)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
"idsProdutos" => ['id' => 123456789]
];
$response = $bling->estoques()->buscarTodos($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
```

### Obtém o saldo em estoque de produtos pelo ID do depósito
[Ver documentação](https://developer.bling.com.br/referencia#/Estoques/get_estoques_saldos__idDeposito_)
```php
use PabloSanches\Bling\Client;

try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
"idDeposito" => 123456789,
"idsProdutos" => ['id' => 123456789]
];
$response = $bling->estoques()->buscarPorDeposito($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
```
4 changes: 4 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
bootstrap="./vendor/autoload.php"
colors="true"
testdox="true"
displayDetailsOnTestsThatTriggerDeprecations="true"
displayDetailsOnTestsThatTriggerErrors="true"
displayDetailsOnTestsThatTriggerNotices="true"
displayDetailsOnTestsThatTriggerWarnings="true"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.4/phpunit.xsd"
>
<coverage/>
Expand Down
56 changes: 56 additions & 0 deletions src/Resource/Depositos/Depositos.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace PabloSanches\Bling\Resource\Depositos;

use PabloSanches\Bling\Http\BlingResponse;
use PabloSanches\Bling\Http\HttpMethods;
use PabloSanches\Bling\Http\Uri;
use PabloSanches\Bling\Resource\AbstractResource;
use PabloSanches\Bling\Resource\Depositos\Dto\BuscarTodosDepositosRequestDto;
use PabloSanches\Bling\Resource\Depositos\Dto\PersistirDepositoRequestDto;

class Depositos extends AbstractResource
{
public function criar(array $payload): BlingResponse
{
$requestDto = PersistirDepositoRequestDto::factory($payload);
return $this->request(
HttpMethods::POST,
Uri::fromPath('/depositos'),
$requestDto
);
}

public function atualizar(int $id, array $payload): BlingResponse
{
$requestDto = PersistirDepositoRequestDto::factory($payload);
return $this->request(
HttpMethods::PUT,
Uri::fromPath("/depositos/{$id}"),
$requestDto
);
}

public function remover(int $id): BlingResponse
{
throw new \DomainException('Operação indisponível para este resource.');
}

public function buscar(int $id): BlingResponse
{
return $this->request(
HttpMethods::GET,
Uri::fromPath("/depositos/{$id}")
);
}

public function buscarTodos(array $options = []): BlingResponse
{
$queryDto = BuscarTodosDepositosRequestDto::factory($options);
return $this->request(
HttpMethods::GET,
Uri::fromPath('/depositos'),
$queryDto
);
}
}
12 changes: 12 additions & 0 deletions src/Resource/Depositos/Dto/BuscarTodosDepositosRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace PabloSanches\Bling\Resource\Depositos\Dto;

use PabloSanches\Bling\Resource\Dto\FiltersDto;

class BuscarTodosDepositosRequestDto extends FiltersDto
{
public ?string $descricao = null;

public ?int $situacao = null;
}
13 changes: 13 additions & 0 deletions src/Resource/Depositos/Dto/PersistirDepositoRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace PabloSanches\Bling\Resource\Depositos\Dto;

use PabloSanches\Bling\Resource\Dto\AbstractDto;

class PersistirDepositoRequestDto extends AbstractDto
{
public string $descricao;
public int $situacao;
public bool $padrao;
public bool $desconsiderarSaldo;
}
15 changes: 15 additions & 0 deletions src/Resource/Estoques/Dto/AtualizarEstoqueRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace PabloSanches\Bling\Resource\Estoques\Dto;

use PabloSanches\Bling\Resource\Dto\AbstractDto;

class AtualizarEstoqueRequestDto extends AbstractDto
{
public string $operacao;
public ?float $preco = null;
public ?float $custo = null;
public float $quantidade;
public ?string $observacoes = null;
public string $data;
}
12 changes: 12 additions & 0 deletions src/Resource/Estoques/Dto/BuscarSaldoDepositoRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace PabloSanches\Bling\Resource\Estoques\Dto;

use PabloSanches\Bling\Resource\Dto\FiltersDto;

class BuscarSaldoDepositoRequestDto extends FiltersDto
{
public int $idDeposito;
public array $idsProdutos;
public ?string $codigo = null;
}
12 changes: 12 additions & 0 deletions src/Resource/Estoques/Dto/BuscarSaldosRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace PabloSanches\Bling\Resource\Estoques\Dto;

use PabloSanches\Bling\Resource\Dto\FiltersDto;

class BuscarSaldosRequestDto extends FiltersDto
{
public array $idsProdutos = [];

public ?string $codigo = null;
}
16 changes: 16 additions & 0 deletions src/Resource/Estoques/Dto/CriarEstoqueRequestDto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace PabloSanches\Bling\Resource\Estoques\Dto;

use PabloSanches\Bling\Resource\Dto\AbstractDto;

class CriarEstoqueRequestDto extends AbstractDto
{
public array $produto;
public array $deposito;
public string $operacao;
public ?float $preco = null;
public ?float $custo = null;
public float $quantidade;
public ?string $observacoes = null;
}
Loading

0 comments on commit 520fd24

Please sign in to comment.