src/Entity/Billing.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use App\Entity\BillingItem;
  7. use App\Entity\Client;
  8. use App\Repository\BillingRepository;
  9. use PhpOffice\PhpSpreadsheet\Shared\Date;
  10. use Gedmo\Mapping\Annotation as Gedmo;
  11. /**
  12.  * Billing
  13.  *
  14.  * @ORM\Table(name="billing")
  15.  * @ORM\Entity(repositoryClass=BillingRepository::class)
  16.  */
  17. class Billing
  18. {
  19.     const MODE_FFDP 'MODE_FFDP';
  20.     const MODE_FRDV 'MODE_FRDV';
  21.     const STATUS_A_REGLE 'a_regle';
  22.     const STATUS_EN_COURS 'en cours';
  23.     const STATUS_VALIDE 'validée';
  24.     const STATUS_SENT 'envoyée';
  25.     const STATUS_SOLDE 'soldée';
  26.     const STATUS_SOLDE_AVOIR 'soldée (avoir)';
  27.     const STATUS_REGLEE 'reglée';
  28.     const STATUS_CONTENTIEUX 'contentieux';
  29.     const TYPE_FACTURE 'facture';
  30.     const TYPE_AVOIR 'avoir';
  31.     /**
  32.      * @var int
  33.      *
  34.      * @ORM\Column(name="id", type="integer", nullable=false)
  35.      * @ORM\Id
  36.      * @ORM\GeneratedValue(strategy="IDENTITY")
  37.      */
  38.     private $id;
  39.     /**
  40.      * @var \DateTime|null
  41.      *
  42.      * @ORM\Column(name="dateBilling", type="date", nullable=true)
  43.      */
  44.     private $dateBilling;
  45.     /**
  46.      * @var \DateTime|null
  47.      *
  48.      * @ORM\Column(name="sendingDate", type="datetime", nullable=true)
  49.      */
  50.     private $sendingDate;
  51.     /**
  52.      * @var string|null
  53.      *
  54.      * @ORM\Column(name="modeFacturation", type="string", nullable=true)
  55.      */
  56.     private $modeFacturation;
  57.     /**
  58.      * @var string|null
  59.      *
  60.      * @ORM\Column(name="code", type="string", nullable=true)
  61.      */
  62.     private $code;
  63.     /**
  64.      * @var string|null
  65.      *
  66.      * @ORM\Column(name="comment", type="text", nullable=true)
  67.      */
  68.     private $comment;
  69.     /**
  70.      * @var string|null
  71.      *
  72.      * @ORM\Column(name="paidPaytweak", type="boolean", nullable=true)
  73.      */
  74.     private $paidPaytweak false;
  75.     /**
  76.      * @var float|null
  77.      *
  78.      * @ORM\Column(name="ht", type="float", nullable=true)
  79.      */
  80.     private $ht;
  81.     /**
  82.      * @var float|null
  83.      *
  84.      * @ORM\Column(name="ttc", type="float", nullable=true)
  85.      */
  86.     private $ttc;
  87.     /**
  88.      * @var float|null
  89.      *
  90.      * @ORM\Column(name="solde", type="float", nullable=true)
  91.      */
  92.     private $solde;
  93.     /**
  94.      * @var string|null
  95.      *
  96.      * @ORM\Column(name="status", type="string", nullable=true)
  97.      */
  98.     private $status self::STATUS_EN_COURS;
  99.     /**
  100.      * @var string|null
  101.      *
  102.      * @ORM\Column(name="accompte", type="string", nullable=true)
  103.      */
  104.     private $accompte;
  105.     /**
  106.      * @var string|null
  107.      *
  108.      * @ORM\Column(name="linkPaytweak", type="string", nullable=true)
  109.      */
  110.     private $linkPaytweak;
  111.     /**
  112.      * @var string|null
  113.      *
  114.      * @ORM\Column(name="linkPaytweakExpire", type="boolean", nullable=true)
  115.      */
  116.     private $linkPaytweakExpire false;
  117.     /**
  118.      * @var string|null
  119.      *
  120.      * @ORM\Column(name="type", type="string", nullable=true)
  121.      */
  122.     private $type Billing::TYPE_FACTURE;
  123.     /**
  124.      * @var ArrayCollection
  125.      * @ORM\OneToMany(targetEntity=BillingItem::class, mappedBy="billing", cascade={"remove","persist"})
  126.      */
  127.     protected $billingItems;
  128.     /**
  129.      * @var Client
  130.      *
  131.      * @ORM\ManyToOne(targetEntity=Client::class, cascade={"persist"}, inversedBy="billings")
  132.      * @ORM\JoinColumn(name="client_id", referencedColumnName="id")
  133.      */
  134.     private $client;
  135.     /**
  136.      * @var Site
  137.      *
  138.      * @ORM\ManyToOne(targetEntity=Site::class, cascade={"persist"})
  139.      * @ORM\JoinColumn(name="site_id", referencedColumnName="id")
  140.      */
  141.     private $site;
  142.     /**
  143.      * @var Company
  144.      * Société emetrice
  145.      * @ORM\ManyToOne(targetEntity=Company::class, cascade={"persist"})
  146.      * @ORM\JoinColumn(name="company_id", referencedColumnName="id")
  147.      */
  148.     private $company;
  149.     /**
  150.      * @ORM\ManyToOne(targetEntity="App\Entity\Reglement", inversedBy="billings", cascade={"persist"})
  151.      * @ORM\JoinColumn(name="reglement_id", referencedColumnName="id")
  152.      */
  153.     private $reglement;
  154.     /**
  155.      * @ORM\ManyToOne(targetEntity="App\Entity\RDV", inversedBy="RDVBillings")
  156.      */
  157.     private $RDV;
  158.     /**
  159.      * @ORM\OneToMany(targetEntity="App\Entity\RDVBilling", mappedBy="Billing")
  160.      */
  161.     private $RDVBillings;
  162.     /**
  163.      * @var \DateTime $created
  164.      *
  165.      * @Gedmo\Timestampable(on="create")
  166.      * @ORM\Column(type="datetime", options={"default"="CURRENT_TIMESTAMP"})
  167.      */
  168.     private $created;
  169.     /**
  170.      * @var \DateTime $updated
  171.      *
  172.      * @Gedmo\Timestampable(on="update")
  173.      * @ORM\Column(type="datetime", options={"default"="CURRENT_TIMESTAMP"})
  174.      */
  175.     private $updated;
  176.     /**
  177.      * @ORM\ManyToOne(targetEntity=User::class, cascade={"persist"})
  178.      * @ORM\JoinColumn(name="creator_id", referencedColumnName="id")
  179.      */
  180.     protected $creator;
  181.     /**
  182.      * @ORM\ManyToOne(targetEntity=User::class, cascade={"persist"})
  183.      * @ORM\JoinColumn(name="maj_id", referencedColumnName="id")
  184.      */
  185.     protected $maj;
  186.     public function __toString(){
  187.         return (string) $this->code;
  188.     }
  189.     public function __construct()
  190.     {
  191.         $this->billingItems = new ArrayCollection();
  192.         $this->RDVBillings = new ArrayCollection();
  193.     }
  194.     public function getId(): ?int
  195.     {
  196.         return $this->id;
  197.     }
  198.     /**
  199.      */
  200.     public function getDateBilling()
  201.     {
  202.         return $this->dateBilling;
  203.     }
  204.     /**
  205.      * @param string|null $dateBilling
  206.      */
  207.     public function setDateBilling($dateBilling): void
  208.     {
  209.         $this->dateBilling $dateBilling;
  210.     }
  211.     /**
  212.      * @return string|null
  213.      */
  214.     public function getModeFacturation(): ?string
  215.     {
  216.         return $this->modeFacturation;
  217.     }
  218.     /**
  219.      * @param string|null $modeFacturation
  220.      */
  221.     public function setModeFacturation(?string $modeFacturation): void
  222.     {
  223.         $this->modeFacturation $modeFacturation;
  224.     }
  225.     /**
  226.      * @return string|null
  227.      */
  228.     public function getStatus(): ?string
  229.     {
  230.         return $this->status;
  231.     }
  232.     /**
  233.      * @return string|null
  234.      */
  235.     public function getStatusLabel(): ?string
  236.     {
  237.         return $this->status;
  238.     }
  239.     /**
  240.      * @param string|null $status
  241.      */
  242.     public function setStatus(?string $status): void
  243.     {
  244.         $this->status $status;
  245.     }
  246.     /**
  247.      * @return string|null
  248.      */
  249.     public function getAccompte(): ?string
  250.     {
  251.         return $this->accompte;
  252.     }
  253.     /**
  254.      * @param string|null $accompte
  255.      */
  256.     public function setAccompte(?string $accompte): void
  257.     {
  258.         $this->accompte $accompte;
  259.     }
  260.     /**
  261.      * @return ArrayCollection
  262.      */
  263.     public function getBillingItems()
  264.     {
  265.         return $this->billingItems;
  266.     }
  267.     /**
  268.      * @param ArrayCollection $billingItems
  269.      */
  270.     public function setBillingItems(ArrayCollection $billingItems): void
  271.     {
  272.         $this->billingItems $billingItems;
  273.     }
  274.     /**
  275.      * @return Client
  276.      */
  277.     public function getClient(): ?Client
  278.     {
  279.         return $this->client;
  280.     }
  281.     /**
  282.      * @param Client $client
  283.      */
  284.     public function setClient(Client $client): void
  285.     {
  286.         $this->client $client;
  287.     }
  288.     /**
  289.      * @return float|null
  290.      */
  291.     public function getTtc(): ?float
  292.     {
  293.         return $this->ttc;
  294.     }
  295.     /**
  296.      * @param float|null $ttc
  297.      */
  298.     public function setTtc(?float $ttc): void
  299.     {
  300.         $this->ttc $ttc;
  301.     }
  302.     /**
  303.      * @return string|null
  304.      */
  305.     public function getType(): ?string
  306.     {
  307.         return $this->type;
  308.     }
  309.     /**
  310.      * @param string|null $type
  311.      */
  312.     public function setType(?string $type): void
  313.     {
  314.         $this->type $type;
  315.     }
  316.     /**
  317.      * @return Company
  318.      */
  319.     public function getCompany(): ?Company
  320.     {
  321.         return $this->company;
  322.     }
  323.     /**
  324.      * @param Company $company
  325.      */
  326.     public function setCompany($company): void
  327.     {
  328.         $this->company $company;
  329.     }
  330.     /**
  331.      * @return Site
  332.      */
  333.     public function getSite(): ?Site
  334.     {
  335.         return $this->site;
  336.     }
  337.     /**
  338.      * @param Site $site
  339.      */
  340.     public function setSite(Site $site): void
  341.     {
  342.         $this->site $site;
  343.     }
  344.     /**
  345.      * @return string|null
  346.      */
  347.     public function getComment()
  348.     {
  349.         return $this->comment;
  350.     }
  351.     /**
  352.      * @param string|null $comment
  353.      */
  354.     public function setComment($comment): void
  355.     {
  356.         $this->comment $comment;
  357.     }
  358.     /**
  359.      * @return string|null
  360.      */
  361.     public function getCode(): ?string
  362.     {
  363.         return $this->code;
  364.     }
  365.     /**
  366.      * @param string|null $code
  367.      */
  368.     public function setCode(?string $code): void
  369.     {
  370.         $this->code $code;
  371.     }
  372.     /**
  373.      * @return RDV
  374.      */
  375.     public function getRDV()
  376.     {
  377.         return $this->RDV;
  378.     }
  379.     /**
  380.      * @param mixed $RDV
  381.      */
  382.     public function setRDV($RDV): void
  383.     {
  384.         $this->RDV $RDV;
  385.     }
  386.     /*********/
  387.     /*  ADD */
  388.     /********/
  389.     public function addBillingItem(BillingItem $item)
  390.     {
  391.         $this->billingItems->add($item);
  392.         $item->setBilling($this);
  393.     }
  394.     /*********/
  395.     /*  REMVOE */
  396.     /********/
  397.     public function removeBillingItem(BillingItem $item)
  398.     {
  399.         $this->billingItems->remove($item);
  400.     }
  401.     public function getReglement(): ?Reglement
  402.     {
  403.         return $this->reglement;
  404.     }
  405.     public function setReglement(?Reglement $reglement): self
  406.     {
  407.         $this->reglement $reglement;
  408.         return $this;
  409.     }
  410.     /**
  411.      * @return Collection|RDVBilling[]
  412.      */
  413.     public function getRDVBillings()
  414.     {
  415.         return $this->RDVBillings;
  416.     }
  417.     public function addRDVBilling(RDVBilling $rDVBilling): self
  418.     {
  419.         if (!$this->RDVBillings->contains($rDVBilling)) {
  420.             $this->RDVBillings[] = $rDVBilling;
  421.             $rDVBilling->setBilling($this);
  422.         }
  423.         return $this;
  424.     }
  425.     public function removeRDVBilling(RDVBilling $rDVBilling): self
  426.     {
  427.         if ($this->RDVBillings->contains($rDVBilling)) {
  428.             $this->RDVBillings->removeElement($rDVBilling);
  429.             // set the owning side to null (unless already changed)
  430.             if ($rDVBilling->getBilling() === $this) {
  431.                 $rDVBilling->setBilling(null);
  432.             }
  433.         }
  434.         return $this;
  435.     }
  436.     /**
  437.      * @return float|null
  438.      */
  439.     public function getSolde(): ?float
  440.     {
  441.         return $this->solde;
  442.     }
  443.     /**
  444.      * @param float|null $solde
  445.      */
  446.     public function setSolde(?float $solde): void
  447.     {
  448.         $this->solde $solde;
  449.     }
  450.     /**
  451.      * @return string|null
  452.      */
  453.     public function getPaidPaytweak(): ?bool
  454.     {
  455.         return $this->paidPaytweak;
  456.     }
  457.     /**
  458.      * @param string|null $paidPaytweak
  459.      */
  460.     public function setPaidPaytweak(?bool $paidPaytweak): void
  461.     {
  462.         $this->paidPaytweak $paidPaytweak;
  463.     }
  464.     /**
  465.      * @return \DateTime
  466.      */
  467.     public function getCreated(): ?\DateTime
  468.     {
  469.         return $this->created;
  470.     }
  471.     /**
  472.      * @param \DateTime $created
  473.      */
  474.     public function setCreated(\DateTime $created): void
  475.     {
  476.         $this->created $created;
  477.     }
  478.     /**
  479.      * @return \DateTime
  480.      */
  481.     public function getUpdated(): ?\DateTime
  482.     {
  483.         return $this->updated;
  484.     }
  485.     /**
  486.      * @param \DateTime $updated
  487.      */
  488.     public function setUpdated(\DateTime $updated): void
  489.     {
  490.         $this->updated $updated;
  491.     }
  492.     /**
  493.      * @return mixed
  494.      */
  495.     public function getCreator()
  496.     {
  497.         return $this->creator;
  498.     }
  499.     /**
  500.      * @param mixed $creator
  501.      */
  502.     public function setCreator($creator): void
  503.     {
  504.         $this->creator $creator;
  505.     }
  506.     /**
  507.      * @return \DateTime|null
  508.      */
  509.     public function getSendingDate(): ?\DateTime
  510.     {
  511.         return $this->sendingDate;
  512.     }
  513.     /**
  514.      * @param \DateTime|null $sendingDate
  515.      */
  516.     public function setSendingDate(?\DateTime $sendingDate): void
  517.     {
  518.         $this->sendingDate $sendingDate;
  519.     }
  520.     /**
  521.      * @return mixed
  522.      */
  523.     public function getMaj()
  524.     {
  525.         return $this->maj;
  526.     }
  527.     /**
  528.      * @param mixed $maj
  529.      */
  530.     public function setMaj($maj): void
  531.     {
  532.         $this->maj $maj;
  533.     }
  534.     /**
  535.      * @return float|null
  536.      */
  537.     public function getHt(): ?float
  538.     {
  539.         return $this->ht;
  540.     }
  541.     /**
  542.      * @param float|null $ht
  543.      */
  544.     public function setHt(?float $ht): void
  545.     {
  546.         $this->ht $ht;
  547.     }
  548.     /**
  549.      * @return string|null
  550.      */
  551.     public function getLinkPaytweak(): ?string
  552.     {
  553.         return $this->linkPaytweak;
  554.     }
  555.     /**
  556.      * @param string|null $linkPaytweak
  557.      */
  558.     public function setLinkPaytweak($linkPaytweak)
  559.     {
  560.         $this->linkPaytweak $linkPaytweak;
  561.     }
  562.     /**
  563.      * @return string|null
  564.      */
  565.     public function getLinkPaytweakExpire()
  566.     {
  567.         return $this->linkPaytweakExpire;
  568.     }
  569.     /**
  570.      * @param string|null $linkPaytweakExpire
  571.      */
  572.     public function setLinkPaytweakExpire(?string $linkPaytweakExpire): void
  573.     {
  574.         $this->linkPaytweakExpire $linkPaytweakExpire;
  575.     }
  576. }