src/Entity/AbstractTransaction.php line 43

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity;
  4. use ApiPlatform\Core\Annotation\ApiFilter;
  5. use Symfony\Component\Serializer\Annotation\Groups;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use ApiPlatform\Core\Annotation\ApiResource;
  9. use App\Entity\Reference\ReferenceFinancingMode;
  10. use App\Entity\Reference\ReferenceTransactionFeesPayment;
  11. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  12. use App\Entity\Reference\ReferenceTransactionPaymentMethod;
  13. use App\Entity\Reference\ReferenceTransactionStatus;
  14. use App\Repository\AbstractTransactionRepository;
  15. use App\Traits\TimeStampTrait;
  16. use App\Domain\MarginCheckList\Adapters\Gateway\Doctrine\MarginCheckListEntity;
  17. use DateTimeInterface;
  18. /**
  19.  * @ApiResource(
  20.  *     normalizationContext={"groups"={"transaction:collection:read","transaction-item:read"}},
  21.  *     denormalizationContext={"groups"={"transaction:write"},"skip_null_values" = true}
  22.  * )
  23.  *
  24.  * @ORM\Entity(repositoryClass=AbstractTransactionRepository::class)
  25.  * @ORM\InheritanceType("JOINED")
  26.  * @ORM\DiscriminatorColumn(name="type", type="string", length=12)
  27.  * @ORM\DiscriminatorMap({
  28.  *     "RE"="Transaction",
  29.  *     "BI"="BusinessIndication"
  30.  * })
  31.  *
  32.  * @ORM\HasLifecycleCallbacks()
  33.  * @ORM\EntityListeners({"App\EventListener\TransactionStatusListener"})
  34.  *
  35.  * @ApiFilter(SearchFilter::class, properties={
  36.  *         "contact.id": "exact"
  37.  *  })
  38.  */
  39. class AbstractTransaction
  40. {
  41.     use TimeStampTrait;
  42.     /**
  43.      * @ORM\Id
  44.      * @ORM\GeneratedValue
  45.      * @ORM\Column(type="integer")
  46.      *
  47.      * @Groups({
  48.      *   "transaction-item:read","transaction:collection:read",
  49.      *   "business-indication:item:read","business-indication:collection:read",
  50.      *   "property-visit:read"
  51.      * })
  52.      */
  53.     protected $id;
  54.     /**
  55.      * @ORM\ManyToOne(targetEntity=Mandate::class, cascade={"persist"})
  56.      * @ORM\JoinColumn(nullable=false)
  57.      *
  58.      * @Groups({
  59.      *     "transaction-item:read","transaction:collection:read","transaction:write",
  60.      *     "business-indication:item:read","business-indication:collection:read","business-indication:write",
  61.      *     "property-visit:read"
  62.      * })
  63.      */
  64.     protected ?Mandate $mandate;
  65.     /**
  66.      * @ORM\Column(type="float", nullable=true)
  67.      *
  68.      * @Groups({
  69.      *     "transaction-item:read","transaction:collection:read","transaction:write","transaction:put",
  70.      *     "business-indication:item:read","business-indication:collection:read","business-indication:write"
  71.      * })
  72.      */
  73.     protected ?float $buyerCommission 0;
  74.     /**
  75.      * @deprecated
  76.      * @ORM\Column(type="float", nullable=true)
  77.      *
  78.      * @Groups({"transaction-item:read","transaction:collection:read"})
  79.      */
  80.     protected ?float $total 0;
  81.     /**
  82.      * @ORM\ManyToOne(targetEntity=ReferenceTransactionStatus::class)
  83.      * @ORM\JoinColumn(nullable=false)
  84.      *
  85.      * @Groups({
  86.      *     "transaction-item:read","transaction:collection:read",
  87.      *     "business-indication:item:read","business-indication:collection:read",
  88.      *     "siege:write","siege:put"
  89.      * })
  90.      */
  91.     protected ?ReferenceTransactionStatus $referenceTransactionStatus;
  92.     /**
  93.      * @ORM\ManyToOne(targetEntity=ReferenceTransactionFeesPayment::class)
  94.      * @Groups({
  95.      *     "transaction-item:read","transaction:write","transaction:put",
  96.      *     "business-indication:item:read","business-indication:collection:read","business-indication:write"
  97.      * })
  98.      */
  99.     protected ?ReferenceTransactionFeesPayment $referenceCommissionPaidBy;
  100.     /**
  101.      * @ORM\ManyToOne(targetEntity=Agent::class)
  102.      * @ORM\JoinColumn(nullable=false)
  103.      * @Groups({
  104.      *     "transaction-item:read","transaction:collection:read",
  105.      *     "business-indication:collection:read","business-indication:item:read",
  106.      *     "siege:put"
  107.      * })
  108.      */
  109.     protected ?Agent $inputAgent;
  110.     /**
  111.      * @ORM\ManyToOne(targetEntity=Agent::class)
  112.      * @ORM\JoinColumn(nullable=true)
  113.      * @Groups({
  114.      *     "transaction-item:read","transaction:collection:read",
  115.      *     "siege:write","siege:put",
  116.      *     "business-indication:collection:read","business-indication:item:read"
  117.      * })
  118.      */
  119.     protected ?Agent $outputAgent;
  120.     /**
  121.      * @ORM\ManyToOne(targetEntity=Vat::class)
  122.      * @Groups({
  123.      *     "transaction-item:read","transaction:write","transaction:put",
  124.      *     "business-indication:item:read","business-indication:write"
  125.      * })
  126.      */
  127.     protected ?Vat $vat;
  128.     /**
  129.      * @ORM\Column(type="float")
  130.      * @Groups({
  131.      *     "transaction-item:read","transaction:collection:read","transaction:put",
  132.      *     "business-indication:collection:read","business-indication:item:read","business-indication:write",
  133.      *     "transaction:write","siege:put"
  134.      * })
  135.      */
  136.     protected ?float $sellPriceWithTax 0;
  137.     /**
  138.      * @ORM\Column(type="float", nullable=true)
  139.      * @Groups({
  140.      *     "transaction:collection:read","transaction-item:read","transaction:write","transaction:put",
  141.      *     "business-indication:collection:read","business-indication:item:read","business-indication:write"
  142.      * })
  143.      */
  144.     protected ?float $feesWithTax 0;
  145.     /**
  146.      * @ORM\Column(type="float", nullable=true)
  147.      * @Groups({
  148.      *     "transaction-item:read","transaction:write",
  149.      *     "business-indication:item:read","business-indication:write"
  150.      * })
  151.      */
  152.     protected ?float $feesWithoutTax 0;
  153.     /**
  154.      * @ORM\Column(type="date")
  155.      * @Groups({"transaction-item:read","business-indication:item:read"})
  156.      */
  157.     protected ?DateTimeInterface $underCompriseAt;
  158.     /**
  159.      * @ORM\Column(type="date", nullable=true)
  160.      * @Groups({"transaction-item:read","business-indication:item:read"})
  161.      */
  162.     protected ?DateTimeInterface $valideAt;
  163.     /**
  164.      * @ORM\Column(type="date", nullable=true)
  165.      * @Groups({"transaction-item:read","business-indication:item:read"})
  166.      */
  167.     protected ?DateTimeInterface $recordedAt;
  168.     /**
  169.      * @ORM\Column(type="date", nullable=true)
  170.      */
  171.     protected ?DateTimeInterface $paidAt;
  172.     /**
  173.      * @ORM\Column(type="date", nullable=true)
  174.      */
  175.     protected ?DateTimeInterface $canceledAt;
  176.     /**
  177.      * @ORM\Column(type="date", nullable=true)
  178.      * @Groups({
  179.      *     "transaction-item:read","transaction:write","transaction:put",
  180.      *     "business-indication:item:read","business-indication:write"
  181.      * })
  182.      */
  183.     protected ?DateTimeInterface $expectedDateOfCompromise;
  184.     /**
  185.      * @ORM\Column(type="string", length=255, nullable=true)
  186.      * @Groups({
  187.      *     "transaction-item:read","transaction:write","transaction:put",
  188.      *     "business-indication:item:read","business-indication:write"
  189.      * })
  190.      */
  191.     protected ?string $invoiceNumber;
  192.     /**
  193.      * @ORM\Column(type="date", nullable=true)
  194.      * @Groups({
  195.      *     "transaction-item:read","transaction:write","transaction:put",
  196.      *      "business-indication:item:read","business-indication:write"
  197.      * })
  198.      */
  199.     protected ?DateTimeInterface $invoiceDate;
  200.     /**
  201.      * @ORM\Column(type="float")
  202.      * @Groups({
  203.      *     "transaction-item:read","transaction:write",
  204.      *     "business-indication:item:read","business-indication:write"
  205.      * })
  206.      */
  207.     protected ?float $propertyValue 0;
  208.     /**
  209.      * @var ArrayCollection
  210.      *
  211.      * @ORM\OneToOne(
  212.      *     targetEntity=MarginCheckListEntity::class,
  213.      *     mappedBy="transaction",
  214.      *     cascade={"persist", "remove"},
  215.      *     orphanRemoval=true
  216.      * )
  217.      * @Groups({
  218.      *     "transaction-item:read", "transaction:collection:read"
  219.      * })
  220.      */
  221.     protected $marginCheckLists;
  222.     /**
  223.      * @ORM\ManyToOne(targetEntity=Contact::class, inversedBy="transactions")
  224.      * @Groups({
  225.      *     "transaction-item:read","transaction:write","transaction:put",
  226.      *      "business-indication:item:read","business-indication:write"
  227.      * })
  228.      */
  229.     protected ?Contact $contact;
  230.     /**
  231.      * @ORM\ManyToOne(targetEntity=ReferenceFinancingMode::class, inversedBy="transactions")
  232.      * @Groups({
  233.      *     "transaction-item:read","transaction:write","transaction:put",
  234.      *     "business-indication:item:read","business-indication:write"
  235.      * })
  236.      */
  237.     protected ?ReferenceFinancingMode $referenceFinancingMode;
  238.     /**
  239.      * @ORM\ManyToOne(targetEntity=ReferenceTransactionPaymentMethod::class)
  240.      * @ORM\JoinColumn(nullable=true)
  241.      *
  242.      * @Groups({
  243.      *     "transaction-item:read","transaction:write","transaction:put",
  244.      *     "business-indication:item:read","business-indication:write"
  245.      * })
  246.      */
  247.     protected ?ReferenceTransactionPaymentMethod $referencePaymentMethod;
  248.     /**
  249.      * @ORM\Column(type="float", nullable=true)
  250.      * @Groups({
  251.      *     "transaction-item:read","transaction:write","transaction:put",
  252.      *      "business-indication:item:read","business-indication:write"
  253.      * })
  254.      */
  255.     protected ?float $advance;
  256.     /**
  257.      * @ORM\Column(type="float", nullable=true)
  258.      * @Groups({
  259.      *     "transaction-item:read","transaction:write","transaction:put",
  260.      *     "business-indication:item:read","business-indication:write"
  261.      * })
  262.      */
  263.     protected ?float $apport;
  264.     public function getMarginCheckLists()
  265.     {
  266.         return $this->marginCheckLists;
  267.     }
  268.     public function setMarginCheckLists($marginCheckLists): self
  269.     {
  270.         $this->marginCheckLists $marginCheckLists;
  271.         return $this;
  272.     }
  273.     public function getId(): ?int
  274.     {
  275.         return $this->id;
  276.     }
  277.     public function getMandate(): ?Mandate
  278.     {
  279.         return $this->mandate;
  280.     }
  281.     public function setMandate(Mandate $mandate): self
  282.     {
  283.         $this->mandate $mandate;
  284.         return $this;
  285.     }
  286.     public function getBuyerCommission(): ?float
  287.     {
  288.         return $this->buyerCommission;
  289.     }
  290.     public function setBuyerCommission(?float $buyerCommission): self
  291.     {
  292.         $this->buyerCommission $buyerCommission;
  293.         return $this;
  294.     }
  295.     public function getTotal(): ?float
  296.     {
  297.         return $this->total;
  298.     }
  299.     public function setTotal(?float $total): self
  300.     {
  301.         $this->total $total;
  302.         return $this;
  303.     }
  304.     public function getReferenceTransactionStatus(): ?ReferenceTransactionStatus
  305.     {
  306.         return $this->referenceTransactionStatus;
  307.     }
  308.     public function setReferenceTransactionStatus(?ReferenceTransactionStatus $referenceTransactionStatus): self
  309.     {
  310.         $this->referenceTransactionStatus $referenceTransactionStatus;
  311.         return $this;
  312.     }
  313.     public function getReferenceCommissionPaidBy(): ?ReferenceTransactionFeesPayment
  314.     {
  315.         return $this->referenceCommissionPaidBy;
  316.     }
  317.     public function setReferenceCommissionPaidBy(?ReferenceTransactionFeesPayment $referenceCommissionPaidBy): self
  318.     {
  319.         $this->referenceCommissionPaidBy $referenceCommissionPaidBy;
  320.         return $this;
  321.     }
  322.     public function getInputAgent(): ?Agent
  323.     {
  324.         return $this->inputAgent;
  325.     }
  326.     public function setInputAgent(?Agent $inputAgent): self
  327.     {
  328.         $this->inputAgent $inputAgent;
  329.         return $this;
  330.     }
  331.     public function getOutputAgent(): ?Agent
  332.     {
  333.         return $this->outputAgent;
  334.     }
  335.     public function setOutputAgent(?Agent $outputAgent): self
  336.     {
  337.         $this->outputAgent $outputAgent;
  338.         return $this;
  339.     }
  340.     public function getVat(): ?Vat
  341.     {
  342.         return $this->vat;
  343.     }
  344.     public function setVat(?Vat $vat): self
  345.     {
  346.         $this->vat $vat;
  347.         return $this;
  348.     }
  349.     public function getSellPriceWithTax(): ?float
  350.     {
  351.         return $this->sellPriceWithTax;
  352.     }
  353.     public function setSellPriceWithTax(float $sellPriceWithTax): self
  354.     {
  355.         $this->sellPriceWithTax $sellPriceWithTax;
  356.         return $this;
  357.     }
  358.     public function getFeesWithTax(): ?float
  359.     {
  360.         return $this->feesWithTax;
  361.     }
  362.     public function setFeesWithTax(?float $feesWithTax): self
  363.     {
  364.         $this->feesWithTax $feesWithTax;
  365.         return $this;
  366.     }
  367.     public function getFeesWithoutTax(): ?float
  368.     {
  369.         return $this->feesWithoutTax;
  370.     }
  371.     public function setFeesWithoutTax(?float $feesWithoutTax): self
  372.     {
  373.         $this->feesWithoutTax $feesWithoutTax;
  374.         return $this;
  375.     }
  376.     public function getUnderCompriseAt(): ?DateTimeInterface
  377.     {
  378.         return $this->underCompriseAt;
  379.     }
  380.     public function setUnderCompriseAt(DateTimeInterface $underCompriseAt): self
  381.     {
  382.         $this->underCompriseAt $underCompriseAt;
  383.         return $this;
  384.     }
  385.     public function getValideAt(): ?DateTimeInterface
  386.     {
  387.         return $this->valideAt;
  388.     }
  389.     public function setValideAt(?DateTimeInterface $valideAt): self
  390.     {
  391.         $this->valideAt $valideAt;
  392.         return $this;
  393.     }
  394.     public function getRecordedAt(): ?DateTimeInterface
  395.     {
  396.         return $this->recordedAt;
  397.     }
  398.     public function setRecordedAt(?DateTimeInterface $recordedAt): self
  399.     {
  400.         $this->recordedAt $recordedAt;
  401.         return $this;
  402.     }
  403.     public function getPaidAt(): ?DateTimeInterface
  404.     {
  405.         return $this->paidAt;
  406.     }
  407.     public function setPaidAt(?DateTimeInterface $paidAt): self
  408.     {
  409.         $this->paidAt $paidAt;
  410.         return $this;
  411.     }
  412.     public function getCanceledAt(): ?DateTimeInterface
  413.     {
  414.         return $this->canceledAt;
  415.     }
  416.     public function setCanceledAt(?DateTimeInterface $canceledAt): self
  417.     {
  418.         $this->canceledAt $canceledAt;
  419.         return $this;
  420.     }
  421.     public function getExpectedDateOfCompromise(): ?DateTimeInterface
  422.     {
  423.         return $this->expectedDateOfCompromise;
  424.     }
  425.     public function setExpectedDateOfCompromise(?DateTimeInterface $expectedDateOfCompromise): self
  426.     {
  427.         $this->expectedDateOfCompromise $expectedDateOfCompromise;
  428.         return $this;
  429.     }
  430.     public function getInvoiceNumber(): ?string
  431.     {
  432.         return $this->invoiceNumber;
  433.     }
  434.     public function setInvoiceNumber(?string $invoiceNumber): self
  435.     {
  436.         $this->invoiceNumber $invoiceNumber;
  437.         return $this;
  438.     }
  439.     public function getInvoiceDate(): ?DateTimeInterface
  440.     {
  441.         return $this->invoiceDate;
  442.     }
  443.     public function setInvoiceDate(?DateTimeInterface $invoiceDate): self
  444.     {
  445.         $this->invoiceDate $invoiceDate;
  446.         return $this;
  447.     }
  448.     public function getPropertyValue(): ?float
  449.     {
  450.         return $this->propertyValue;
  451.     }
  452.     public function setPropertyValue(float $propertyValue): self
  453.     {
  454.         $this->propertyValue $propertyValue;
  455.         return $this;
  456.     }
  457.     public function getReferencePaymentMethod(): ?ReferenceTransactionPaymentMethod
  458.     {
  459.         return $this->referencePaymentMethod;
  460.     }
  461.     public function setReferencePaymentMethod(?ReferenceTransactionPaymentMethod $referencePaymentMethod): self
  462.     {
  463.         $this->referencePaymentMethod $referencePaymentMethod;
  464.         return $this;
  465.     }
  466.     public function getContact(): ?Contact
  467.     {
  468.         return $this->contact;
  469.     }
  470.     public function setContact(?Contact $contact): self
  471.     {
  472.         $this->contact $contact;
  473.         return $this;
  474.     }
  475.     public function getReferenceFinancingMode(): ?ReferenceFinancingMode
  476.     {
  477.         return $this->referenceFinancingMode;
  478.     }
  479.     public function setReferenceFinancingMode(?ReferenceFinancingMode $referenceFinancingMode): self
  480.     {
  481.         $this->referenceFinancingMode $referenceFinancingMode;
  482.         return $this;
  483.     }
  484.     public function getAdvance(): ?float
  485.     {
  486.         return $this->advance;
  487.     }
  488.     public function setAdvance(?float $advance): self
  489.     {
  490.         $this->advance $advance;
  491.         return $this;
  492.     }
  493.     public function getApport(): ?float
  494.     {
  495.         return $this->apport;
  496.     }
  497.     public function setApport(?float $apport): self
  498.     {
  499.         $this->apport $apport;
  500.         return $this;
  501.     }
  502. }