<?php

namespace App\Entity;

use App\Repository\FactureLigneRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;

/**
 * @ORM\Entity(repositoryClass=FactureLigneRepository::class)
 * @ORM\Table(schema="sav")
 */
class FactureLigne
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=Facture::class, inversedBy="factureLignes")
     * @ORM\JoinColumn(name="idfacture")
     */
    private $facture;

    /**
     * @ORM\ManyToOne(targetEntity=Produit::class, inversedBy="factureLignes")
     * @ORM\JoinColumn(name="idproduit")
     * @Groups({"api"})
     */
    private $produit;

    /**
     * @ORM\Column(type="string", length=15, nullable=true)
     */
    private $code_article;

    /**
     * @ORM\Column(type="string", length=100, nullable=true)
     */
    private $designation;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Groups({"api"})
     */
    private $quantite;

    /**
     * @ORM\Column(type="float", nullable=true)
     */
    private $pu_ht;

    /**
     * @ORM\ManyToOne(targetEntity=TauxTva::class, inversedBy="factureLignes")
     * @ORM\JoinColumn(name="idtaux_tva")
     */
    private $taux_tva;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $remise;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $prix_total_ht;

    /**
     * @ORM\ManyToOne(targetEntity=ProduitFactureAffectation::class, inversedBy="factureLignes")
     * @ORM\JoinColumn(name="idproduit_facture_affectation")
     * @Groups({"api"})
     */
    private $produit_facture_affectation;

    /**
     * @ORM\Column(type="string", length=200, nullable=true)
     * @Groups({"api"})
     */
    private $motif_service;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     * @Groups({"api"})
     */
    private $produit_conserve_client;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Groups({"api"})
     */
    private $quantite_conserve_client;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getFacture(): ?Facture
    {
        return $this->facture;
    }

    public function setFacture(?Facture $facture): self
    {
        $this->facture = $facture;

        return $this;
    }

    public function getProduit(): ?Produit
    {
        return $this->produit;
    }

    public function setProduit(?Produit $produit): self
    {
        $this->produit = $produit;

        return $this;
    }

    public function getCodeArticle(): ?string
    {
        return $this->code_article;
    }

    public function setCodeArticle(?string $code_article): self
    {
        $this->code_article = $code_article;

        return $this;
    }

    public function getDesignation(): ?string
    {
        return $this->designation;
    }

    public function setDesignation(?string $designation): self
    {
        $this->designation = $designation;

        return $this;
    }

    public function getQuantite(): ?int
    {
        return $this->quantite;
    }

    public function setQuantite(?int $quantite): self
    {
        $this->quantite = $quantite;

        return $this;
    }

    public function getPuHt(): ?float
    {
        return $this->pu_ht;
    }

    public function setPuHt(?float $pu_ht): self
    {
        $this->pu_ht = $pu_ht;

        return $this;
    }

    public function getTauxTva(): ?TauxTva
    {
        return $this->taux_tva;
    }

    public function setTauxTva(?TauxTva $taux_tva): self
    {
        $this->taux_tva = $taux_tva;

        return $this;
    }

    public function getRemise(): ?int
    {
        return $this->remise;
    }

    public function setRemise(?int $remise): self
    {
        $this->remise = $remise;

        return $this;
    }

    public function getPrixTotalHt(): ?float
    {
        return $this->prix_total_ht;
    }

    public function setPrixTotalHt(?float $prix_total_ht): self
    {
        $this->prix_total_ht = $prix_total_ht;

        return $this;
    }

    public function getProduitFactureAffectation(): ?ProduitFactureAffectation
    {
        return $this->produit_facture_affectation;
    }

    public function setProduitFactureAffectation(?ProduitFactureAffectation $produit_facture_affectation): self
    {
        $this->produit_facture_affectation = $produit_facture_affectation;

        return $this;
    }

    public function getMotifService(): ?string
    {
        return $this->motif_service;
    }

    public function setMotifService(?string $motif_service): self
    {
        $this->motif_service = $motif_service;

        return $this;
    }

    public function getProduitConserveClient(): ?bool
    {
        return $this->produit_conserve_client;
    }

    public function setProduitConserveClient(?bool $produit_conserve_client): self
    {
        $this->produit_conserve_client = $produit_conserve_client;

        return $this;
    }

    public function getQuantiteConserveClient(): ?int
    {
        return $this->quantite_conserve_client;
    }

    public function setQuantiteConserveClient(?int $quantite_conserve_client): self
    {
        $this->quantite_conserve_client = $quantite_conserve_client;

        return $this;
    }
}
