<?php

namespace AppBundle\Entity\Billing;

use AppBundle\Entity\Organization\Organization;
use Doctrine\ORM\Mapping as ORM;
use Dunglas\ApiBundle\Annotation\Iri;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use AppBundle\Entity\Traits\TimestampableEntity;
use AppBundle\Entity\Traits\CreatorUpdaterEntity;
use AppBundle\Annotation\DefaultField;

/**
 *
 * (Plus utilisée, à confirmer)
 *
 * @Iri("http://schema.org/PesSettings")
 */
#[ORM\Entity]
class PesSetting
{
    use TimestampableEntity;
    use CreatorUpdaterEntity;
    /**
     * @var int
     */
    #[ORM\Column(type: 'integer')]
    #[ORM\Id]
    #[ORM\GeneratedValue(strategy: 'AUTO')]
    #[Groups(['pessetting'])]
    private $id;
    /**
     * @var Organization
     *
     * @DefaultField
     */
    #[ORM\OneToOne(targetEntity: 'AppBundle\Entity\Organization\Organization', inversedBy: 'pesSetting', fetch: 'EAGER')]
    #[ORM\JoinColumn(nullable: false)]
    #[Assert\NotNull]
    #[Groups(['pessetting'])]
    private $organization;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', length: 14, nullable: true)]
    #[Assert\Length(max: 14, maxMessage: 'invalid-max-length')]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $idPost;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $idColl;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $idCollTipi;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $codColl;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $codBud;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $codProd;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $libelleColBud;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $gestionnaire;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $nameComptable;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorIban;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorBic;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorIcs;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorName;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorLineOneAddress;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorLineTwoAddress;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorPublicInstitution;
    /**
     * @var string
     */
    #[ORM\Column(type: 'string', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['pessetting'])]
    private $creditorType;
    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set organization
     *
     * @param \AppBundle\Entity\Organization\Organization $organization
     *
     * @return PesSetting
     */
    public function setOrganization(\AppBundle\Entity\Organization\Organization $organization)
    {
        $this->organization = $organization;

        return $this;
    }
    /**
     * Get organization
     *
     * @return \AppBundle\Entity\Organization\Organization
     */
    public function getOrganization()
    {
        return $this->organization;
    }
    /**
     * Set idPost
     *
     * @param string $idPost
     *
     * @return PesSetting
     */
    public function setIdPost($idPost)
    {
        $this->idPost = $idPost;

        return $this;
    }
    /**
     * Get idPost
     *
     * @return string
     */
    public function getIdPost()
    {
        return $this->idPost;
    }
    /**
     * Set idColl
     *
     * @param string $idColl
     *
     * @return PesSetting
     */
    public function setIdColl($idColl)
    {
        $this->idColl = $idColl;

        return $this;
    }
    /**
     * Get idColl
     *
     * @return string
     */
    public function getIdColl()
    {
        return $this->idColl;
    }
    /**
     * Set idCollTipi
     *
     * @param string $idCollTipi
     *
     * @return PesSetting
     */
    public function setIdCollTipi($idCollTipi)
    {
        $this->idCollTipi = $idCollTipi;

        return $this;
    }
    /**
     * Get idCollTipi
     *
     * @return string
     */
    public function getIdCollTipi()
    {
        return $this->idCollTipi;
    }
    /**
     * Set codColl
     *
     * @param string $codColl
     *
     * @return PesSetting
     */
    public function setCodColl($codColl)
    {
        $this->codColl = $codColl;

        return $this;
    }
    /**
     * Get codColl
     *
     * @return string
     */
    public function getCodColl()
    {
        return $this->codColl;
    }
    /**
     * Set codBud
     *
     * @param string $codBud
     *
     * @return PesSetting
     */
    public function setCodBud($codBud)
    {
        $this->codBud = $codBud;

        return $this;
    }
    /**
     * Get codBud
     *
     * @return string
     */
    public function getCodBud()
    {
        return $this->codBud;
    }
    /**
     * Set codProd
     *
     * @param string $codProd
     *
     * @return PesSetting
     */
    public function setCodProd($codProd)
    {
        $this->codProd = $codProd;

        return $this;
    }
    /**
     * Get codProd
     *
     * @return string
     */
    public function getCodProd()
    {
        return $this->codProd;
    }
    /**
     * Get codProdPayFip
     *
     * @return string
     */
    public function getCodProdPayFip()
    {
        return mb_substr($this->codProd, 0, 2);
    }
    /**
     * Set libelleColBud
     *
     * @param string $libelleColBud
     *
     * @return PesSetting
     */
    public function setLibelleColBud($libelleColBud)
    {
        $this->libelleColBud = $libelleColBud;

        return $this;
    }
    /**
     * Get libelleColBud
     *
     * @return string
     */
    public function getLibelleColBud()
    {
        return $this->libelleColBud;
    }
    /**
     * Set gestionnaire
     *
     * @param string $gestionnaire
     *
     * @return PesSetting
     */
    public function setGestionnaire($gestionnaire)
    {
        $this->gestionnaire = $gestionnaire;

        return $this;
    }
    /**
     * Get gestionnaire
     *
     * @return string
     */
    public function getGestionnaire()
    {
        return $this->gestionnaire;
    }
    /**
     * Set nameComptable
     *
     * @param string $nameComptable
     *
     * @return PesSetting
     */
    public function setNameComptable($nameComptable)
    {
        $this->nameComptable = $nameComptable;

        return $this;
    }
    /**
     * Get nameComptable
     *
     * @return string
     */
    public function getNameComptable()
    {
        return $this->nameComptable;
    }
    /**
     * Set creditorIban
     *
     * @param string $creditorIban
     *
     * @return PesSetting
     */
    public function setCreditorIban($creditorIban)
    {
        $this->creditorIban = $creditorIban;

        return $this;
    }
    /**
     * Get creditorIban
     *
     * @return string
     */
    public function getCreditorIban()
    {
        return $this->creditorIban;
    }
    /**
     * Set creditorBic
     *
     * @param string $creditorBic
     *
     * @return PesSetting
     */
    public function setCreditorBic($creditorBic)
    {
        $this->creditorBic = $creditorBic;

        return $this;
    }
    /**
     * Get creditorBic
     *
     * @return string
     */
    public function getCreditorBic()
    {
        return $this->creditorBic;
    }
    /**
     * Set creditorIcs
     *
     * @param string $creditorIcs
     *
     * @return PesSetting
     */
    public function setCreditorIcs($creditorIcs)
    {
        $this->creditorIcs = $creditorIcs;

        return $this;
    }
    /**
     * Get creditorIcs
     *
     * @return string
     */
    public function getCreditorIcs()
    {
        return $this->creditorIcs;
    }
    /**
     * Set creditorLineOneAddress
     *
     * @param string $creditorLineOneAddress
     *
     * @return PesSetting
     */
    public function setCreditorLineOneAddress($creditorLineOneAddress)
    {
        $this->creditorLineOneAddress = $creditorLineOneAddress;

        return $this;
    }
    /**
     * Get creditorLineOneAddress
     *
     * @return string
     */
    public function getCreditorLineOneAddress()
    {
        return $this->creditorLineOneAddress;
    }
    /**
     * Set creditorLineTwoAddress
     *
     * @param string $creditorLineTwoAddress
     *
     * @return PesSetting
     */
    public function setCreditorLineTwoAddress($creditorLineTwoAddress)
    {
        $this->creditorLineTwoAddress = $creditorLineTwoAddress;

        return $this;
    }
    /**
     * Get creditorLineTwoAddress
     *
     * @return string
     */
    public function getCreditorLineTwoAddress()
    {
        return $this->creditorLineTwoAddress;
    }
    /**
     * Set creditorPublicInstitution
     *
     * @param string $creditorPublicInstitution
     *
     * @return PesSetting
     */
    public function setCreditorPublicInstitution($creditorPublicInstitution)
    {
        $this->creditorPublicInstitution = $creditorPublicInstitution;

        return $this;
    }
    /**
     * Get creditorPublicInstitution
     *
     * @return string
     */
    public function getCreditorPublicInstitution()
    {
        return $this->creditorPublicInstitution;
    }
    /**
     * Set creditorType
     *
     * @param string $creditorType
     *
     * @return PesSetting
     */
    public function setCreditorType($creditorType)
    {
        $this->creditorType = $creditorType;

        return $this;
    }
    /**
     * Get creditorType
     *
     * @return string
     */
    public function getCreditorType()
    {
        return $this->creditorType;
    }
    /**
     * Set creditorName
     *
     * @param string $creditorName
     *
     * @return PesSetting
     */
    public function setCreditorName($creditorName)
    {
        $this->creditorName = $creditorName;

        return $this;
    }
    /**
     * Get creditorName
     *
     * @return string
     */
    public function getCreditorName()
    {
        return $this->creditorName;
    }
}
