<?php

namespace App\Entity;

use App\Repository\DevisLigneRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;

/**
 * @ORM\Entity(repositoryClass=DevisLigneRepository::class)
 * @ORM\Table(schema="sav")
 */
class DevisLigne
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity=Devis::class, inversedBy="devisLignes")
     * @ORM\JoinColumn(name="iddevis")
     */
    private $devis;

    /**
     * @ORM\ManyToOne(targetEntity=Produit::class, inversedBy="devisLignes")
     * @ORM\JoinColumn(name="idproduit")
     * @Groups({"api"})
     */
    private $produit;

    /**
     * @ORM\Column(type="string", length=15, nullable=true)
     * @Groups({"api"})
     */
    private $code_article;

    /**
     * @ORM\Column(type="string", length=100, nullable=true)
     * @Groups({"api"})
     */
    private $designation;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Groups({"api"})
     */
    private $quantite;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $pu_ht;

    /**
     * @ORM\ManyToOne(targetEntity=TauxTva::class, inversedBy="devisLignes")
     * @ORM\JoinColumn(name="idtaux_tva")
     * @Groups({"api"})
     */
    private $taux_tva;

    /**
     * @ORM\Column(type="integer", nullable=true)
     * @Groups({"api"})
     */
    private $remise;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $pu_ttc;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $prix_total_tva;

    /**
     * @ORM\Column(type="float", nullable=true)
     * @Groups({"api"})
     */
    private $prix_total_ttc;

    /**
     * @ORM\ManyToOne(targetEntity=ProduitFactureAffectation::class, inversedBy="devisLignes")
     * @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;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getDevis(): ?Devis
    {
        return $this->devis;
    }

    public function setDevis(?Devis $devis): self
    {
        $this->devis = $devis;

        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 getPuTtc(): ?float
    {
        return $this->pu_ttc;
    }

    public function setPuTtc(?float $pu_ttc): self
    {
        $this->pu_ttc = $pu_ttc;

        return $this;
    }

    public function getPrixTotalTva(): ?float
    {
        return $this->prix_total_tva;
    }

    public function setPrixTotalTva(?float $prix_total_tva): self
    {
        $this->prix_total_tva = $prix_total_tva;

        return $this;
    }

    public function getPrixTotalTtc(): ?float
    {
        return $this->prix_total_ttc;
    }

    public function setPrixTotalTtc(?float $prix_total_ttc): self
    {
        $this->prix_total_ttc = $prix_total_ttc;

        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;
    }
}
