vendor/crosiersource/crosierlib-radx/src/Entity/Financeiro/Grupo.php line 70

Open in your IDE?
  1. <?php
  2. namespace CrosierSource\CrosierLibRadxBundle\Entity\Financeiro;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  7. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  8. use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
  9. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\EntityHandler;
  10. use CrosierSource\CrosierLibBaseBundle\Entity\EntityId;
  11. use CrosierSource\CrosierLibBaseBundle\Entity\EntityIdTrait;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Symfony\Component\Serializer\Annotation\Groups;
  15. /**
  16.  * Entidade 'Grupo de Movimentações'.
  17.  *
  18.  * Para movimentações que são agrupadas e pagas através de outra movimentação (como Cartão de Crédito, conta em postos, etc).
  19.  *
  20.  * @ApiResource(
  21.  *     normalizationContext={"groups"={"grupo", "grupoItem", "carteira", "entityId"},"enable_max_depth"=true},
  22.  *     denormalizationContext={"groups"={"grupo"},"enable_max_depth"=true},
  23.  *
  24.  *     itemOperations={
  25.  *          "get"={"path"="/fin/grupo/{id}", "security"="is_granted('ROLE_FINAN')"},
  26.  *          "put"={"path"="/fin/grupo/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"},
  27.  *          "delete"={"path"="/fin/grupo/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  28.  *     },
  29.  *     collectionOperations={
  30.  *          "get"={"path"="/fin/grupo", "security"="is_granted('ROLE_FINAN')"},
  31.  *          "post"={"path"="/fin/grupo", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  32.  *     },
  33.  *
  34.  *     attributes={
  35.  *          "pagination_items_per_page"=10,
  36.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  37.  *     }
  38.  *
  39.  * )
  40.  * @ApiFilter(PropertyFilter::class)
  41.  *
  42.  * @ApiFilter(SearchFilter::class, properties={
  43.  *     "codigo": "exact",
  44.  *     "descricao": "partial",
  45.  *     "id": "exact"
  46.  * })
  47.  *
  48.  * @ApiFilter(BooleanFilter::class, properties={
  49.  *     "ativo"
  50.  * })
  51.  *
  52.  * @ApiFilter(OrderFilter::class, properties={
  53.  *     "id",
  54.  *     "descricao",
  55.  *     "diaVencto",
  56.  *     "ativo",
  57.  *     "updated"
  58.  * }, arguments={"orderParameterName"="order"})
  59.  *
  60.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibRadxBundle\EntityHandler\Financeiro\GrupoEntityHandler")
  61.  *
  62.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibRadxBundle\Repository\Financeiro\GrupoRepository")
  63.  * @ORM\Table(name="fin_grupo")
  64.  *
  65.  * @author Carlos Eduardo Pauluk
  66.  */
  67. class Grupo implements EntityId
  68. {
  69.     use EntityIdTrait;
  70.     /**
  71.      * @ORM\Column(name="descricao", type="string")
  72.      * @Groups("grupo")
  73.      */
  74.     public ?string $descricao null;
  75.     /**
  76.      * Dia de vencimento no mês.
  77.      *
  78.      * 32 para sempre último (FIXME: meio burro isso).
  79.      *
  80.      * @ORM\Column(name="dia_vencto", type="integer")
  81.      * @Groups("grupo")
  82.      */
  83.     public ?int $diaVencto null;
  84.     /**
  85.      * Dia a partir do qual as movimentações são consideradas com vencimento
  86.      * para próximo mês.
  87.      *
  88.      * @ORM\Column(name="dia_inicio", type="integer")
  89.      * @Groups("grupo")
  90.      */
  91.     public ?int $diaInicioAprox 1;
  92.     /**
  93.      * Informa se esta carteira pode conter movimentações com status ABERTA.
  94.      * útil principalmente para o relatório de contas a pagar/receber, para não considerar movimentações de outras carteiras.
  95.      *
  96.      * @ORM\Column(name="ativo", type="boolean", nullable=false)
  97.      * @Groups("grupo")
  98.      */
  99.     public ?bool $ativo true;
  100.     /**
  101.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Carteira")
  102.      * @ORM\JoinColumn(name="carteira_pagante_id", nullable=true)
  103.      * @Groups("grupo")
  104.      */
  105.     public ?Carteira $carteiraPagantePadrao null;
  106.     /**
  107.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Categoria")
  108.      * @ORM\JoinColumn(name="categoria_padrao_id", nullable=true)
  109.      * @Groups("grupo")
  110.      */
  111.     public ?Categoria $categoriaPadrao null;
  112.     /**
  113.      * @ORM\OneToMany(
  114.      *      targetEntity="GrupoItem",
  115.      *      mappedBy="pai",
  116.      *      orphanRemoval=true
  117.      * )
  118.      * @Groups("grupo")
  119.      * @var GrupoItem[]|ArrayCollection|null
  120.      */
  121.     public $itens null;
  122.     public function __construct()
  123.     {
  124.         $this->itens = new ArrayCollection();
  125.     }
  126.     /**
  127.      * @return GrupoItem[]|ArrayCollection|null
  128.      */
  129.     public function getItens()
  130.     {
  131.         return $this->itens;
  132.     }
  133.     /**
  134.      * @param GrupoItem[]|ArrayCollection|null $itens
  135.      * @return Grupo
  136.      */
  137.     public function setItens($itens): Grupo
  138.     {
  139.         $this->itens $itens;
  140.         return $this;
  141.     }
  142. }