src/Entity/Product.php line 972

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\Product\ProductType;
  7. use App\Entity\Product\Famille;
  8. use App\Entity\Product\SousFamille;
  9. use App\Repository\ProductRepository;
  10. use Symfony\Component\Serializer\Annotation\Groups;
  11. /**
  12.  * Product
  13.  *
  14.  * @ORM\Table(name="product")
  15.  * @ORM\Entity(repositoryClass=ProductRepository::class)
  16.  */
  17. class Product implements \JsonSerializable
  18. {
  19.     const TYPE_TVA_ENCAISSEMENT 0;
  20.     const TYPE_TVA_DEBIT 1;
  21.     const TYPE_COIFFURE 'coiffure';
  22.     const TYPE_ESTHETHIQUE 'esthetique';
  23.     const FACTURATION_SITE 'site';
  24.     const FACTURATION_CLIENT 'client';
  25.     const TYPE_TAUX_TVA_STANDARD 0;
  26.     const TYPE_TAUX_TVA_REDUIT 1;
  27.     /**
  28.      * @var int
  29.      * @Groups({"planning"})
  30.      * @ORM\Column(name="id", type="integer", nullable=false)
  31.      * @ORM\Id
  32.      * @ORM\GeneratedValue(strategy="IDENTITY")
  33.      */
  34.     private $id;
  35.     /**
  36.      * @var string
  37.      * @Groups({"planning"})
  38.      * @ORM\Column(name="name", type="string", length=255, nullable=false)
  39.      */
  40.     private $name;
  41.     /**
  42.      * @var string
  43.      *
  44.      * @ORM\Column(name="marque", type="string", length=1000, nullable=true)
  45.      */
  46.     private $marque;
  47.     /**
  48.      * @var string
  49.      *
  50.      * @ORM\Column(name="gamme", type="string", length=1000, nullable=true)
  51.      */
  52.     private $gamme;
  53.     /**
  54.      * @var string
  55.      *
  56.      * @ORM\Column(name="compte", type="string", length=1000, nullable=false)
  57.      */
  58.     private $compte;
  59.     /**
  60.      * @var string
  61.      *
  62.      * @ORM\Column(name="facturation", type="string", length=1000, nullable=false)
  63.      */
  64.     private $facturation Product::FACTURATION_SITE;
  65.     /**
  66.      * @var string
  67.      *
  68.      * @ORM\Column(name="type_taux_tva", type="integer", nullable=true)
  69.      */
  70.     private $typeTauxTva Product::TYPE_TAUX_TVA_STANDARD;
  71.     /**
  72.      *
  73.      * @ORM\Column(name="ui", type="string", nullable=true)
  74.      */
  75.     private $ui;
  76.     /**
  77.      * @var string
  78.      *
  79.      * @ORM\Column(name="mesure", type="string", nullable=true)
  80.      */
  81.     private $mesure;
  82.     /**
  83.      * @var string
  84.      *
  85.      * @ORM\Column(name="type", type="string", nullable=true)
  86.      */
  87.     private $type;
  88.     /**
  89.      * @var string
  90.      *
  91.      * @ORM\Column(name="fournisseur", type="string", nullable=true)
  92.      */
  93.     private $fournisseur;
  94.     /**
  95.      * @var string
  96.      *
  97.      * @ORM\Column(name="remiseGenerale", type="float", nullable=true)
  98.      */
  99.     private $remiseGenerale;
  100.     /**
  101.      * @var string
  102.      *
  103.      * @ORM\Column(name="tempsNormatif", type="float", nullable=true)
  104.      */
  105.     private $tempsNormatif;
  106.     /**
  107.      * @var string
  108.      *
  109.      * @ORM\Column(name="forfaitIllimite", type="boolean", nullable=true)
  110.      */
  111.     private $forfaitIllimite false;
  112.     /**
  113.      * @var string|null
  114.      *
  115.      * @ORM\Column(name="reference", type="string", length=255, nullable=true)
  116.      */
  117.     private $reference;
  118.     /**
  119.      * @var string|null
  120.      *
  121.      * @ORM\Column(name="price_sell_ht_a", type="string", length=255, nullable=true)
  122.      */
  123.     private $priceHtA;
  124.     /**
  125.      * @var string|null
  126.      *
  127.      * @ORM\Column(name="price_ht_b", type="float", nullable=true)
  128.      */
  129.     private $priceHtB;
  130.     /**
  131.      * @var string|null
  132.      *
  133.      * @ORM\Column(name="price_ht_c", type="float", nullable=true)
  134.      */
  135.     private $priceHtC;
  136.     /**
  137.      * @var string|null
  138.      *
  139.      * @ORM\Column(name="price_ht_c_d", type="float", nullable=true)
  140.      */
  141.     private $priceHtD;
  142.     /**
  143.      * Prix dachat en fait
  144.      * @var string|null
  145.      *
  146.      * @ORM\Column(name="price_ht", type="string", length=255, nullable=true)
  147.      */
  148.     private $priceHt;
  149.     /**
  150.      * @var string|null
  151.      *
  152.      * @ORM\Column(name="marge", type="string", length=255, nullable=true)
  153.      */
  154.     private $marge;
  155.     /**
  156.      * @var string|null
  157.      *
  158.      * @ORM\Column(name="tva", type="string", length=255, nullable=true)
  159.      */
  160.     private $tva;
  161.     /**
  162.      * @var string|null
  163.      *
  164.      * @ORM\Column(name="type_tva", type="string", nullable=true)
  165.      */
  166.     private $typeTva;
  167.     /**
  168.      * @var string|null
  169.      *
  170.      * @ORM\Column(name="stock_quantity", type="integer", nullable=true)
  171.      */
  172.     private $stockQuantity;
  173.     /**
  174.      * @var string|null
  175.      *
  176.      * @ORM\Column(name="gestion_stock", type="boolean", nullable=true)
  177.      */
  178.     private $gestionStock false;
  179.     /**
  180.      * @var string|null
  181.      *
  182.      * @ORM\Column(name="order_multiple", type="float", nullable=true)
  183.      */
  184.     private $orderMultiple;
  185.     /**
  186.      * @var string|null
  187.      *
  188.      * @ORM\Column(name="indisponible_vente", type="boolean", nullable=true)
  189.      */
  190.     private $indisponibleVente false;
  191.     /**
  192.      * @var string|null
  193.      *
  194.      * @ORM\Column(name="unitVente", type="float", nullable=true)
  195.      */
  196.     private $unitVente;
  197.     /**
  198.      * @var Salon ArrayCollection
  199.      * @ORM\OneToMany(targetEntity=RDVProduct::class, mappedBy="product", cascade={"remove"})
  200.      */
  201.     protected $rdvProducts;
  202.     /**
  203.      * @ORM\OneToMany(targetEntity=RecurrenceProduct::class, mappedBy="product")
  204.      */
  205.     private $recurrenceProducts;
  206.     /**
  207.      * @var ProductType
  208.      *
  209.      * @ORM\ManyToOne(targetEntity=ProductType::class)
  210.      * @ORM\JoinColumn(name="product_type", referencedColumnName="id")
  211.      */
  212.     private $productType;
  213.     /**
  214.      * @var ProductType
  215.      *
  216.      * @ORM\ManyToOne(targetEntity=Famille::class)
  217.      * @ORM\JoinColumn(name="famille", referencedColumnName="id")
  218.      */
  219.     private $famille;
  220.     /**
  221.      * @var ProductType
  222.      *
  223.      * @ORM\ManyToOne(targetEntity=SousFamille::class)
  224.      * @ORM\JoinColumn(name="sous_famille", referencedColumnName="id")
  225.      */
  226.     private $sousFamille;
  227.     /**
  228.      * @ORM\OneToMany(targetEntity=ProductService::class, mappedBy="product", orphanRemoval=true, cascade={"persist", "remove"})
  229.      */
  230.     private $productServices;
  231.     /**
  232.      * @ORM\Column(type="boolean", nullable=true)
  233.      */
  234.     private $mandatory false;
  235.     /**
  236.      * @ORM\Column(type="boolean", nullable=true)
  237.      */
  238.     private $noReservation false;
  239.     /**
  240.      * @ORM\Column(type="string", length=255, nullable=true)
  241.      */
  242.     private $commercialName;
  243.     /**
  244.      * @ORM\Column(type="boolean", nullable=true)
  245.      */
  246.     private $checked false;
  247.     /**
  248.      * @var int|null
  249.      *
  250.      * @ORM\Column(name="ordering", type="integer", nullable=true)
  251.      */
  252.     private $ordering;
  253.     /**
  254.      * Product constructor.
  255.      */
  256.     public function __construct()
  257.     {
  258.         $this->rdvProducts = new ArrayCollection();
  259.         $this->productServices = new ArrayCollection();
  260.     }
  261.     public function __toString()
  262.     {
  263.         return $this->name;
  264.     }
  265.     public function getId(): ?int
  266.     {
  267.         return $this->id;
  268.     }
  269.     public function getName(): ?string
  270.     {
  271.         return $this->name;
  272.     }
  273.     public function setName(string $name): self
  274.     {
  275.         $this->name $name;
  276.         return $this;
  277.     }
  278.     public function getReference(): ?string
  279.     {
  280.         return $this->reference;
  281.     }
  282.     public function setReference(?string $reference): self
  283.     {
  284.         $this->reference $reference;
  285.         return $this;
  286.     }
  287.     public function getPriceHt(): ?string
  288.     {
  289.         return $this->priceHt;
  290.     }
  291.     public function setPriceHt(?string $priceHt): self
  292.     {
  293.         $this->priceHt $priceHt;
  294.         return $this;
  295.     }
  296.     public function getMarge(): ?string
  297.     {
  298.         return $this->marge;
  299.     }
  300.     public function setMarge(?string $marge): self
  301.     {
  302.         $this->marge $marge;
  303.         return $this;
  304.     }
  305.     public function getTva(): ?string
  306.     {
  307.         return $this->tva;
  308.     }
  309.     public function setTva(?string $tva): self
  310.     {
  311.         $this->tva $tva;
  312.         return $this;
  313.     }
  314.     /**
  315.      * @return string
  316.      */
  317.     public function getMesure(): ?string
  318.     {
  319.         return $this->mesure;
  320.     }
  321.     /**
  322.      * @param string $mesure
  323.      */
  324.     public function setMesure(?string $mesure): void
  325.     {
  326.         $this->mesure $mesure;
  327.     }
  328.     /**
  329.      * @return string|null
  330.      */
  331.     public function getUnitVente(): ?string
  332.     {
  333.         return $this->unitVente;
  334.     }
  335.     /**
  336.      * @param string|null $unitVente
  337.      */
  338.     public function setUnitVente(?string $unitVente): void
  339.     {
  340.         $this->unitVente $unitVente;
  341.     }
  342.     /**
  343.      * @return string|null
  344.      */
  345.     public function getTypeTva(): ?string
  346.     {
  347.         return $this->typeTva;
  348.     }
  349.     /**
  350.      * @param string|null $typeTva
  351.      */
  352.     public function setTypeTva(?string $typeTva): void
  353.     {
  354.         $this->typeTva $typeTva;
  355.     }
  356.     /**
  357.      * @return string|null
  358.      */
  359.     public function getGestionStock(): ?string
  360.     {
  361.         return $this->gestionStock;
  362.     }
  363.     /**
  364.      * @param string|null $gestionStock
  365.      */
  366.     public function setGestionStock(?string $gestionStock): void
  367.     {
  368.         $this->gestionStock $gestionStock;
  369.     }
  370.     /**
  371.      * @return string|null
  372.      */
  373.     public function getIndisponibleVente(): ?string
  374.     {
  375.         return $this->indisponibleVente;
  376.     }
  377.     /**
  378.      * @param string|null $indisponibleVente
  379.      */
  380.     public function setIndisponibleVente(?string $indisponibleVente): void
  381.     {
  382.         $this->indisponibleVente $indisponibleVente;
  383.     }
  384.     /**
  385.      * @return string
  386.      */
  387.     public function getRemiseGenerale(): ?string
  388.     {
  389.         return $this->remiseGenerale;
  390.     }
  391.     /**
  392.      * @param string $remiseGenerale
  393.      */
  394.     public function setRemiseGenerale(string $remiseGenerale): void
  395.     {
  396.         $this->remiseGenerale $remiseGenerale;
  397.     }
  398.     /**
  399.      * @return string
  400.      */
  401.     public function getTempsNormatif(): ?string
  402.     {
  403.         return $this->tempsNormatif;
  404.     }
  405.     /**
  406.      * @param string $tempsNormatif
  407.      */
  408.     public function setTempsNormatif(?string $tempsNormatif): void
  409.     {
  410.         $this->tempsNormatif $tempsNormatif;
  411.     }
  412.     /**
  413.      * @return string
  414.      */
  415.     public function getFournisseur(): ?string
  416.     {
  417.         return $this->fournisseur;
  418.     }
  419.     /**
  420.      * @param string $fournisseur
  421.      */
  422.     public function setFournisseur(?string $fournisseur): void
  423.     {
  424.         $this->fournisseur $fournisseur;
  425.     }
  426.     /**
  427.      * @return ProductType
  428.      */
  429.     public function getProductType(): ?ProductType
  430.     {
  431.         return $this->productType;
  432.     }
  433.     /**
  434.      * @param ProductType $productType
  435.      */
  436.     public function setProductType(ProductType $productType): void
  437.     {
  438.         $this->productType $productType;
  439.     }
  440.     /**
  441.      * @return mixed
  442.      */
  443.     public function getUi()
  444.     {
  445.         return $this->ui;
  446.     }
  447.     /**
  448.      * @param mixed $ui
  449.      */
  450.     public function setUi($ui): void
  451.     {
  452.         $this->ui $ui;
  453.     }
  454.     public function getPriceSellTTC()
  455.     {
  456.         $calcul $this->floatvalue($this->priceHt) * (intval($this->getTva())  / 100);
  457.         return round($calcul2);
  458.     }
  459.     public function getPriceSellTTCA()
  460.     {
  461.         $calcul round($this->floatvalue($this->priceHtA), 2) * (intval($this->getTva())  / 100);
  462.         return round($calcul2);
  463.     }
  464.     function floatvalue($val)
  465.     {
  466.         $val str_replace(",""."$val);
  467.         $val preg_replace('/\.(?=.*\.)/'''$val);
  468.         return floatval($val);
  469.     }
  470.     public function getPriceSellTTCByGrid($grid)
  471.     {
  472.         $price 0;
  473.         switch ($grid) {
  474.             case 1:
  475.                 $price $this->getPriceHtA();
  476.                 break;
  477.             case 2:
  478.                 $price $this->getPriceHtB();
  479.                 break;
  480.             case 3:
  481.                 $price $this->getPriceHtC();
  482.                 break;
  483.             case 4:
  484.                 $price $this->getPriceHtD();
  485.                 break;
  486.         }
  487.         $calcul $this->floatvalue($price) * (intval($this->getTva())  / 100);
  488.         return round($calcul2);
  489.     }
  490.     /**
  491.      * @return Famille
  492.      */
  493.     public function getFamille(): ?Famille
  494.     {
  495.         return $this->famille;
  496.     }
  497.     /**
  498.      * @param Famille $famille
  499.      */
  500.     public function setFamille(Famille $famille): void
  501.     {
  502.         $this->famille $famille;
  503.     }
  504.     /**
  505.      * @return SousFamille
  506.      */
  507.     public function getSousFamille(): ?SousFamille
  508.     {
  509.         return $this->sousFamille;
  510.     }
  511.     /**
  512.      * @param SousFamille $sousFamille
  513.      */
  514.     public function setSousFamille(SousFamille $sousFamille): void
  515.     {
  516.         $this->sousFamille $sousFamille;
  517.     }
  518.     /**
  519.      * @return string
  520.      */
  521.     public function getType(): ?string
  522.     {
  523.         return $this->type;
  524.     }
  525.     /**
  526.      * @param string $type
  527.      */
  528.     public function setType(string $type): void
  529.     {
  530.         $this->type $type;
  531.     }
  532.     /**
  533.      * @return Salon
  534.      */
  535.     public function getRdvProducts()
  536.     {
  537.         return $this->rdvProducts;
  538.     }
  539.     /**
  540.      * @param RDVProduct $rdvProducts
  541.      */
  542.     public function setRdvProducts(RDVProduct $rdvProducts): void
  543.     {
  544.         $this->rdvProducts $rdvProducts;
  545.     }
  546.     /**
  547.      * @return string|null
  548.      */
  549.     public function getOrderMultiple(): ?string
  550.     {
  551.         return $this->orderMultiple;
  552.     }
  553.     /**
  554.      * @param string|null $orderMultiple
  555.      */
  556.     public function setOrderMultiple(?string $orderMultiple): void
  557.     {
  558.         $this->orderMultiple $orderMultiple;
  559.     }
  560.     /**
  561.      * @return string|null
  562.      */
  563.     public function getStockQuantity(): ?string
  564.     {
  565.         return $this->stockQuantity;
  566.     }
  567.     /**
  568.      * @param string|null $stockQuantity
  569.      */
  570.     public function setStockQuantity(?string $stockQuantity): void
  571.     {
  572.         $this->stockQuantity $stockQuantity;
  573.     }
  574.     /**
  575.      * @return string
  576.      */
  577.     public function getMarque(): ?string
  578.     {
  579.         return $this->marque;
  580.     }
  581.     /**
  582.      * @param string $marque
  583.      */
  584.     public function setMarque(?string $marque): void
  585.     {
  586.         $this->marque $marque;
  587.     }
  588.     /**
  589.      * @return string
  590.      */
  591.     public function getGamme(): ?string
  592.     {
  593.         return $this->gamme;
  594.     }
  595.     /**
  596.      * @param string $gamme
  597.      */
  598.     public function setGamme(?string $gamme): void
  599.     {
  600.         $this->gamme $gamme;
  601.     }
  602.     /**
  603.      * @return string
  604.      */
  605.     public function getCompte(): ?string
  606.     {
  607.         return $this->compte;
  608.     }
  609.     /**
  610.      * @param string $compte
  611.      */
  612.     public function setCompte(?string $compte): void
  613.     {
  614.         $this->compte $compte;
  615.     }
  616.     /**
  617.      * @return string
  618.      */
  619.     public function getFacturation(): ?string
  620.     {
  621.         return $this->facturation;
  622.     }
  623.     /**
  624.      * @param string $facturation
  625.      */
  626.     public function setFacturation(string $facturation): void
  627.     {
  628.         $this->facturation $facturation;
  629.     }
  630.     /**
  631.      * @return string|null
  632.      */
  633.     public function getPriceHtB(): ?string
  634.     {
  635.         return $this->priceHtB;
  636.     }
  637.     /**
  638.      * @param string|null $priceHtB
  639.      */
  640.     public function setPriceHtB(?string $priceHtB): void
  641.     {
  642.         $this->priceHtB $priceHtB;
  643.     }
  644.     /**
  645.      * @return string|null
  646.      */
  647.     public function getPriceHtC(): ?string
  648.     {
  649.         return $this->priceHtC;
  650.     }
  651.     /**
  652.      * @param string|null $priceHtC
  653.      */
  654.     public function setPriceHtC(?string $priceHtC): void
  655.     {
  656.         $this->priceHtC $priceHtC;
  657.     }
  658.     /**
  659.      * @return string|null
  660.      */
  661.     public function getPriceHtD(): ?string
  662.     {
  663.         return $this->priceHtD;
  664.     }
  665.     /**
  666.      * @param string|null $priceHtD
  667.      */
  668.     public function setPriceHtD(?string $priceHtD): void
  669.     {
  670.         $this->priceHtD $priceHtD;
  671.     }
  672.     /**
  673.      * @return string|null
  674.      */
  675.     public function getPriceHtA(): ?string
  676.     {
  677.         return $this->priceHtA;
  678.     }
  679.     /**
  680.      * @param string|null $priceHtA
  681.      */
  682.     public function setPriceHtA(?string $priceHtA): void
  683.     {
  684.         $this->priceHtA $priceHtA;
  685.     }
  686.     /**
  687.      * @return string
  688.      */
  689.     public function getForfaitIllimite(): ?bool
  690.     {
  691.         return $this->forfaitIllimite;
  692.     }
  693.     /**
  694.      * @param string $forfaitIllimite
  695.      */
  696.     public function setForfaitIllimite(bool $forfaitIllimite): void
  697.     {
  698.         $this->forfaitIllimite $forfaitIllimite;
  699.     }
  700.     /**
  701.      * @return string
  702.      */
  703.     public function getTypeTauxTva(): ?string
  704.     {
  705.         return $this->typeTauxTva;
  706.     }
  707.     /**
  708.      * @param string $typeTauxTva
  709.      */
  710.     public function setTypeTauxTva(string $typeTauxTva): void
  711.     {
  712.         $this->typeTauxTva $typeTauxTva;
  713.     }
  714.     /**
  715.      * @return Collection<int, ProductService>
  716.      */
  717.     public function getProductServices(): Collection
  718.     {
  719.         return $this->productServices;
  720.     }
  721.     public function addProductService(ProductService $productService): self
  722.     {
  723.         if (!$this->productServices->contains($productService)) {
  724.             $this->productServices[] = $productService;
  725.             $productService->setProduct($this);
  726.         }
  727.         return $this;
  728.     }
  729.     public function removeProductService(ProductService $productService): self
  730.     {
  731.         if ($this->productServices->removeElement($productService)) {
  732.             // set the owning side to null (unless already changed)
  733.             if ($productService->getProduct() === $this) {
  734.                 $productService->setProduct(null);
  735.             }
  736.         }
  737.         return $this;
  738.     }
  739.     public function isMandatory(): ?bool
  740.     {
  741.         return $this->mandatory;
  742.     }
  743.     public function setMandatory(bool $mandatory): self
  744.     {
  745.         $this->mandatory $mandatory;
  746.         return $this;
  747.     }
  748.     public function displayName()
  749.     {
  750.         return $this->getPriceSellTTC() ? $this->getName() . ' ' $this->getPriceSellTTC() . '€' $this->getName();
  751.     }
  752.     public function isNoReservation(): ?bool
  753.     {
  754.         return $this->noReservation;
  755.     }
  756.     public function setNoReservation(?bool $noReservation): self
  757.     {
  758.         $this->noReservation $noReservation;
  759.         return $this;
  760.     }
  761.     public function getCommercialName(): ?string
  762.     {
  763.         return $this->commercialName;
  764.     }
  765.     public function setCommercialName(?string $commercialName): self
  766.     {
  767.         $this->commercialName $commercialName;
  768.         return $this;
  769.     }
  770.     public function isChecked(): ?bool
  771.     {
  772.         return $this->checked;
  773.     }
  774.     public function setChecked(?bool $checked): self
  775.     {
  776.         $this->checked $checked;
  777.         return $this;
  778.     }
  779.     /**
  780.      * @return Collection<int, RecurrenceProduct>
  781.      */
  782.     public function getRecurrenceProducts(): Collection
  783.     {
  784.         return $this->recurrenceProducts;
  785.     }
  786.     public function addRecurrenceProduct(RecurrenceProduct $recurrenceProduct): self
  787.     {
  788.         if (!$this->recurrenceProducts->contains($recurrenceProduct)) {
  789.             $this->recurrenceProducts[] = $recurrenceProduct;
  790.             $recurrenceProduct->setProduct($this);
  791.         }
  792.         return $this;
  793.     }
  794.     public function removeRecurrenceProduct(RecurrenceProduct $recurrenceProduct): self
  795.     {
  796.         if ($this->recurrenceProducts->removeElement($recurrenceProduct)) {
  797.             // Set the owning side to null (unless already changed)
  798.             if ($recurrenceProduct->getProduct() === $this) {
  799.                 $recurrenceProduct->setProduct(null);
  800.             }
  801.         }
  802.         return $this;
  803.     }
  804.     /**
  805.      * @return int
  806.      */
  807.     public function getOrdering(): ?int
  808.     {
  809.         return $this->ordering;
  810.     }
  811.     /**
  812.      * @param int $ordering
  813.      */
  814.     public function setOrdering(?int $ordering): void
  815.     {
  816.         $this->ordering $ordering;
  817.     }
  818.     public function jsonSerialize()
  819.     {
  820.         return [
  821.             'id' => $this->id,
  822.             'name' => $this->name,
  823.         ];
  824.     }
  825. }