vendor/crosiersource/crosierlib-radx/src/Entity/Estoque/Romaneio.php line 54

Open in your IDE?
  1. <?php
  2. namespace CrosierSource\CrosierLibRadxBundle\Entity\Estoque;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
  8. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\EntityHandler;
  9. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\NotUppercase;
  10. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\TrackedEntity;
  11. use CrosierSource\CrosierLibBaseBundle\Entity\EntityId;
  12. use CrosierSource\CrosierLibBaseBundle\Entity\EntityIdTrait;
  13. use CrosierSource\CrosierLibRadxBundle\Entity\Fiscal\NotaFiscal;
  14. use DateTime;
  15. use Doctrine\Common\Collections\ArrayCollection;
  16. use Doctrine\ORM\Mapping as ORM;
  17. use Symfony\Component\Serializer\Annotation\Groups;
  18. /**
  19.  * @ApiResource(
  20.  *     normalizationContext={"groups"={"romaneio","entityId"},"enable_max_depth"=true},
  21.  *     denormalizationContext={"groups"={"romaneio"},"enable_max_depth"=true},
  22.  *
  23.  *     itemOperations={
  24.  *          "get"={"path"="/est/romaneio/{id}", "security"="is_granted('ROLE_ESTOQUE')"},
  25.  *          "put"={"path"="/est/romaneio/{id}", "security"="is_granted('ROLE_ESTOQUE')"},
  26.  *          "delete"={"path"="/est/romaneio/{id}", "security"="is_granted('ROLE_ADMIN')"}
  27.  *     },
  28.  *     collectionOperations={
  29.  *          "get"={"path"="/est/romaneio", "security"="is_granted('ROLE_ESTOQUE')"},
  30.  *          "post"={"path"="/est/romaneio", "security"="is_granted('ROLE_ESTOQUE')"}
  31.  *     },
  32.  *
  33.  *     attributes={
  34.  *          "pagination_items_per_page"=10,
  35.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  36.  *     }
  37.  * )
  38.  * @ApiFilter(PropertyFilter::class)
  39.  *
  40.  * @ApiFilter(SearchFilter::class, properties={"nome": "partial", "documento": "exact", "id": "exact"})
  41.  * @ApiFilter(OrderFilter::class, properties={"id", "documento", "nome", "updated"}, arguments={"orderParameterName"="order"})
  42.  *
  43.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibRadxBundle\EntityHandler\Estoque\RomaneioEntityHandler")
  44.  *
  45.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibRadxBundle\Repository\Estoque\RomaneioRepository")
  46.  * @ORM\Table(name="est_romaneio")
  47.  * @TrackedEntity
  48.  *
  49.  * @author Carlos Eduardo Pauluk
  50.  */
  51. class Romaneio implements EntityId
  52. {
  53.     use EntityIdTrait;
  54.     /**
  55.      *
  56.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Estoque\Fornecedor")
  57.      * @ORM\JoinColumn(name="fornecedor_id")
  58.      * @Groups("romaneio")
  59.      *
  60.      * @var null|Fornecedor
  61.      */
  62.     public ?Fornecedor $fornecedor null;
  63.     /**
  64.      *
  65.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Fiscal\NotaFiscal")
  66.      * @ORM\JoinColumn(name="notafiscal_id", nullable=true)
  67.      *
  68.      * @var $notaFiscal null|NotaFiscal
  69.      */
  70.     public ?NotaFiscal $notaFiscal null;
  71.     /**
  72.      * 'INICIADO'
  73.      * 'ENTREGUE PARCIAL'
  74.      * 'FINALIZADO'
  75.      * 'CANCELADO'
  76.      *
  77.      * @ORM\Column(name="status", type="string")
  78.      * @Groups("romaneio")
  79.      *
  80.      * @var null|string
  81.      */
  82.     public ?string $status 'INICIADO';
  83.     /**
  84.      *
  85.      * @ORM\Column(name="dt_emissao", type="datetime")
  86.      * @Groups("romaneio")
  87.      *
  88.      * @var null|DateTime
  89.      */
  90.     public ?DateTime $dtEmissao null;
  91.     /**
  92.      *
  93.      * @ORM\Column(name="dt_prev_entrega", type="datetime")
  94.      * @Groups("romaneio")
  95.      *
  96.      * @var null|DateTime
  97.      */
  98.     public ?DateTime $dtPrevEntrega null;
  99.     /**
  100.      *
  101.      * @ORM\Column(name="dt_entrega", type="datetime")
  102.      * @Groups("romaneio")
  103.      *
  104.      * @var null|DateTime
  105.      */
  106.     public ?DateTime $dtEntrega null;
  107.     /**
  108.      *
  109.      * @ORM\Column(name="prazos_pagto", type="string")
  110.      * @Groups("romaneio")
  111.      *
  112.      * @var null|string
  113.      */
  114.     public ?string $prazosPagto null;
  115.     /**
  116.      *
  117.      * @ORM\Column(name="valor_total", type="decimal", precision=15, scale=2)
  118.      * @Groups("romaneio")
  119.      *
  120.      * @var null|float
  121.      */
  122.     public ?float $valorTotal null;
  123.     /**
  124.      *
  125.      * @ORM\Column(name="json_data", type="json")
  126.      * @var null|array
  127.      * @NotUppercase()
  128.      * @Groups("romaneio")
  129.      */
  130.     public ?array $jsonData null;
  131.     /**
  132.      *
  133.      * @var null|RomaneioItem[]|ArrayCollection
  134.      *
  135.      * @ORM\OneToMany(
  136.      *      targetEntity="RomaneioItem",
  137.      *      cascade={"persist"},
  138.      *      mappedBy="romaneio",
  139.      *      orphanRemoval=true)
  140.      * @ORM\OrderBy({"ordem" = "ASC"})
  141.      * @Groups("romaneio")
  142.      */
  143.     public $itens;
  144.     public function __construct()
  145.     {
  146.         $this->itens = new ArrayCollection();
  147.     }
  148.     /**
  149.      * @param RomaneioItem|null $item
  150.      */
  151.     public function addItem(?RomaneioItem $item): void
  152.     {
  153.         if (!$this->itens->contains($item)) {
  154.             $item->romaneio $this;
  155.             $this->itens->add($item);
  156.         }
  157.     }
  158. }
  159.