<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass="App\Repository\BillingRepository")
*/
class Billing
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups("billing")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("billing")
*/
private $number;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Statut", inversedBy="billings")
* @Groups("billing")
*/
private $idStatut;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateBilling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $filenameBilling;
/**
* @ORM\OneToOne(targetEntity=Estimate::class, inversedBy="billing", cascade={"persist", "remove"})
*/
private $numberEstimate;
/**
* @ORM\ManyToOne(targetEntity=ShoppingCart::class, inversedBy="billing")
*/
private $idCart;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="billings")
*/
private $idClient;
/**
* @ORM\ManyToOne(targetEntity=CompagnyInfo::class, inversedBy="billings")
*/
private $idProvider;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $numberDeposit;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateDepositBilling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $filenameDepositBilling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("billing")
*/
private $numberOutstanding;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateOutstandingBilling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $filenameOutstandingBilling;
/**
* @ORM\OneToOne(targetEntity=MangopayPayin::class, cascade={"persist", "remove"})
*/
private $payin;
/**
* @ORM\OneToMany(targetEntity=Refund::class, mappedBy="billing")
*/
private $refunds;
public function __construct()
{
$this->refunds = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNumber(): ?string
{
return $this->number;
}
public function setNumber(?string $number): self
{
$this->number = $number;
return $this;
}
public function getIdStatut(): ?Statut
{
return $this->idStatut;
}
public function setIdStatut(?Statut $idStatut): self
{
$this->idStatut = $idStatut;
return $this;
}
public function getDateBilling(): ?\DateTimeInterface
{
return $this->dateBilling;
}
public function setDateBilling(\DateTimeInterface $dateBilling): self
{
$this->dateBilling = $dateBilling;
return $this;
}
public function getFilenameBilling(): ?string
{
return $this->filenameBilling;
}
public function setFilenameBilling(string $filenameBilling): self
{
$this->filenameBilling = $filenameBilling;
return $this;
}
public function getNumberEstimate(): ?Estimate
{
return $this->numberEstimate;
}
public function setNumberEstimate(?Estimate $numberEstimate): self
{
$this->numberEstimate = $numberEstimate;
return $this;
}
public function getIdCart(): ?ShoppingCart
{
return $this->idCart;
}
public function setIdCart(?ShoppingCart $idCart): self
{
$this->idCart = $idCart;
return $this;
}
public function getIdClient(): ?User
{
return $this->idClient;
}
public function setIdClient(?User $idClient): self
{
$this->idClient = $idClient;
return $this;
}
public function getIdProvider(): ?CompagnyInfo
{
return $this->idProvider;
}
public function setIdProvider(?CompagnyInfo $idProvider): self
{
$this->idProvider = $idProvider;
return $this;
}
public function getNumberDeposit(): ?string
{
return $this->numberDeposit;
}
public function setNumberDeposit(?string $numberDeposit): self
{
$this->numberDeposit = $numberDeposit;
return $this;
}
public function getDateDepositBilling(): ?\DateTimeInterface
{
return $this->dateDepositBilling;
}
public function setDateDepositBilling(?\DateTimeInterface $dateDepositBilling): self
{
$this->dateDepositBilling = $dateDepositBilling;
return $this;
}
public function getFilenameDepositBilling(): ?string
{
return $this->filenameDepositBilling;
}
public function setFilenameDepositBilling(?string $filenameDepositBilling): self
{
$this->filenameDepositBilling = $filenameDepositBilling;
return $this;
}
public function getNumberOutstanding(): ?string
{
return $this->numberOutstanding;
}
public function setNumberOutstanding(?string $numberOutstanding): self
{
$this->numberOutstanding = $numberOutstanding;
return $this;
}
public function getDateOutstandingBilling(): ?\DateTimeInterface
{
return $this->dateOutstandingBilling;
}
public function setDateOutstandingBilling(?\DateTimeInterface $dateOutstandingBilling): self
{
$this->dateOutstandingBilling = $dateOutstandingBilling;
return $this;
}
public function getFilenameOutstandingBilling(): ?string
{
return $this->filenameOutstandingBilling;
}
public function setFilenameOutstandingBilling(?string $filenameOutstandingBilling): self
{
$this->filenameOutstandingBilling = $filenameOutstandingBilling;
return $this;
}
public function getPayin(): ?MangopayPayin
{
return $this->payin;
}
public function setPayin(?MangopayPayin $payin): self
{
$this->payin = $payin;
return $this;
}
/**
* @return Collection|Refund[]
*/
public function getRefunds(): Collection
{
return $this->refunds;
}
public function addRefund(Refund $refund): self
{
if (!$this->refunds->contains($refund)) {
$this->refunds[] = $refund;
$refund->setBilling($this);
}
return $this;
}
public function removeRefund(Refund $refund): self
{
if ($this->refunds->removeElement($refund)) {
// set the owning side to null (unless already changed)
if ($refund->getBilling() === $this) {
$refund->setBilling(null);
}
}
return $this;
}
public function setShoppingCart(?ShoppingCart $cart): self
{
$this->idCart = $cart;
return $this;
}
public function getShoppingCart(): ?ShoppingCart
{
return $this->idCart;
}
}