vendor/crosiersource/crosierlib-radx/src/Entity/Financeiro/RegraImportacaoLinha.php line 57

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\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\Entity\EntityId;
  11. use CrosierSource\CrosierLibBaseBundle\Entity\EntityIdTrait;
  12. use Doctrine\ORM\Mapping as ORM;
  13. use Symfony\Component\Serializer\Annotation\Groups;
  14. /**
  15.  * Entidade Regra de Importação de Linha.
  16.  * Configura uma regra para setar corretamente a Movimentação ao importar uma linha de extrato.
  17.  *
  18.  * @ApiResource(
  19.  *     normalizationContext={"groups"={"regraImportacaoLinha","tipoLancto","carteira","centroCusto","modo","categoria","entityId"},"enable_max_depth"=true},
  20.  *     denormalizationContext={"groups"={"regraImportacaoLinha"},"enable_max_depth"=true},
  21.  *
  22.  *     itemOperations={
  23.  *          "get"={"path"="/fin/regraImportacaoLinha/{id}", "security"="is_granted('ROLE_FINAN')"},
  24.  *          "put"={"path"="/fin/regraImportacaoLinha/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"},
  25.  *          "delete"={"path"="/fin/regraImportacaoLinha/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  26.  *     },
  27.  *     collectionOperations={
  28.  *          "get"={"path"="/fin/regraImportacaoLinha", "security"="is_granted('ROLE_FINAN')"},
  29.  *          "post"={"path"="/fin/regraImportacaoLinha", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  30.  *     },
  31.  *
  32.  *     attributes={
  33.  *          "pagination_items_per_page"=10,
  34.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  35.  *     }
  36.  *
  37.  * )
  38.  * @ApiFilter(PropertyFilter::class)
  39.  *
  40.  * @ApiFilter(SearchFilter::class,
  41.  *     properties={
  42.  *     "id": "exact",
  43.  *     "descricao": "partial"
  44.  * })
  45.  * @ApiFilter(OrderFilter::class, properties={"id", "descricao", "dtVencto", "updated"}, arguments={"orderParameterName"="order"})
  46.  *
  47.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibRadxBundle\EntityHandler\Financeiro\RegraImportacaoLinhaEntityHandler")
  48.  *
  49.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibRadxBundle\Repository\Financeiro\RegraImportacaoLinhaRepository")
  50.  * @ORM\Table(name="fin_regra_import_linha")
  51.  *
  52.  * @author Carlos Eduardo Pauluk
  53.  */
  54. class RegraImportacaoLinha implements EntityId
  55. {
  56.     use EntityIdTrait;
  57.     /**
  58.      * Em casos especiais (como na utilização de named groups) posso usar uma regex em java.
  59.      *
  60.      * @ORM\Column(name="regra_regex_java", type="string")
  61.      * @Groups("regraImportacaoLinha")
  62.      */
  63.     public ?string $regraRegexJava null;
  64.     /**
  65.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\TipoLancto")
  66.      * @ORM\JoinColumn(name="tipo_lancto_id", nullable=true)
  67.      * @Groups("regraImportacaoLinha")
  68.      */
  69.     public ?TipoLancto $tipoLancto null;
  70.     /**
  71.      * @ORM\Column(name="status", type="string")
  72.      * @Groups("regraImportacaoLinha")
  73.      */
  74.     public ?string $status null;
  75.     /**
  76.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Carteira")
  77.      * @ORM\JoinColumn(name="carteira_id", nullable=true)
  78.      * @Groups("regraImportacaoLinha")
  79.      */
  80.     public ?Carteira $carteira null;
  81.     /**
  82.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Carteira")
  83.      * @ORM\JoinColumn(name="carteira_destino_id", nullable=true)
  84.      * @Groups("regraImportacaoLinha")
  85.      */
  86.     public ?Carteira $carteiraDestino null;
  87.     /**
  88.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\CentroCusto")
  89.      * @ORM\JoinColumn(name="centrocusto_id", nullable=true)
  90.      * @Groups("regraImportacaoLinha")
  91.      */
  92.     public ?CentroCusto $centroCusto null;
  93.     /**
  94.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Modo")
  95.      * @ORM\JoinColumn(name="modo_id", nullable=true)
  96.      * @Groups("regraImportacaoLinha")
  97.      */
  98.     public ?Modo $modo null;
  99.     /**
  100.      * @NotUppercase()
  101.      * @ORM\Column(name="padrao_descricao", type="string")
  102.      * @Groups("regraImportacaoLinha")
  103.      */
  104.     public ?string $padraoDescricao null;
  105.     /**
  106.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Categoria")
  107.      * @ORM\JoinColumn(name="categoria_id", nullable=true)
  108.      * @Groups("regraImportacaoLinha")
  109.      */
  110.     public ?Categoria $categoria null;
  111.     /**
  112.      * Para poder aplicar a regra somente se for positivo (1), negativo (-1) ou ambos (0)
  113.      *
  114.      * @ORM\Column(name="sinal_valor", type="integer")
  115.      * @Groups("regraImportacaoLinha")
  116.      */
  117.     public ?int $sinalValor null;
  118.     /**
  119.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Banco")
  120.      * @ORM\JoinColumn(name="cheque_banco_id", nullable=true)
  121.      * @Groups("regraImportacaoLinha")
  122.      */
  123.     public ?Banco $chequeBanco null;
  124.     /**
  125.      * Código da agência (sem o dígito verificador).
  126.      *
  127.      * @ORM\Column(name="cheque_agencia", type="string")
  128.      * @Groups("regraImportacaoLinha")
  129.      */
  130.     public ?string $chequeAgencia null;
  131.     /**
  132.      * Número da conta no banco (não segue um padrão).
  133.      *
  134.      * @ORM\Column(name="cheque_conta", type="string")
  135.      * @Groups("regraImportacaoLinha")
  136.      */
  137.     public ?string $chequeConta null;
  138.     /**
  139.      * Número da conta no banco (não segue um padrão).
  140.      *
  141.      * @ORM\Column(name="cheque_num_cheque", type="string")
  142.      * @Groups("regraImportacaoLinha")
  143.      */
  144.     public ?string $chequeNumCheque null;
  145.     public function getSinalValorLabel(): ?string
  146.     {
  147.         switch ($this->sinalValor) {
  148.             case 0:
  149.                 return 'Ambos';
  150.             case 1:
  151.                 return 'Positivo';
  152.             case -1:
  153.                 return 'Negativo';
  154.             default:
  155.                 return null;
  156.         }
  157.     }
  158. }