<?php

namespace CfcalSasieSDK\Entity;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for LienPersonnePhysiqueEtPersonneMorale Entity
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:LienPersonnePhysiqueEtPersonneMorale
 * @subpackage Structs
 */
class LienPersonnePhysiqueEtPersonneMorale extends ObjetPublicSaisieEnLigneBase
{
    /**
     * The CodeLienPersonnePhysiqueEtPersonneMorale
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $CodeLienPersonnePhysiqueEtPersonneMorale;
    /**
     * The CodePersonneMorale
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $CodePersonneMorale;
    /**
     * The CodePersonnePhysique
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $CodePersonnePhysique;
    /**
     * The CodeTypeStatutSocialeBeneficiaire
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodeTypeStatutSocialeBeneficiaire;
    /**
     * The Part
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $Part;
    /**
     * Constructor method for LienPersonnePhysiqueEtPersonneMorale
     * @uses LienPersonnePhysiqueEtPersonneMorale::setCodeLienPersonnePhysiqueEtPersonneMorale()
     * @uses LienPersonnePhysiqueEtPersonneMorale::setCodePersonneMorale()
     * @uses LienPersonnePhysiqueEtPersonneMorale::setCodePersonnePhysique()
     * @uses LienPersonnePhysiqueEtPersonneMorale::setCodeTypeStatutSocialeBeneficiaire()
     * @uses LienPersonnePhysiqueEtPersonneMorale::setPart()
     * @param int $codeLienPersonnePhysiqueEtPersonneMorale
     * @param int $codePersonneMorale
     * @param int $codePersonnePhysique
     * @param string $codeTypeStatutSocialeBeneficiaire
     * @param float $part
     */
    public function __construct($codeLienPersonnePhysiqueEtPersonneMorale = null, $codePersonneMorale = null, $codePersonnePhysique = null, $codeTypeStatutSocialeBeneficiaire = null, $part = null)
    {
        $this
            ->setCodeLienPersonnePhysiqueEtPersonneMorale($codeLienPersonnePhysiqueEtPersonneMorale)
            ->setCodePersonneMorale($codePersonneMorale)
            ->setCodePersonnePhysique($codePersonnePhysique)
            ->setCodeTypeStatutSocialeBeneficiaire($codeTypeStatutSocialeBeneficiaire)
            ->setPart($part);
    }
    /**
     * Get CodeLienPersonnePhysiqueEtPersonneMorale value
     * @return int|null
     */
    public function getCodeLienPersonnePhysiqueEtPersonneMorale()
    {
        return $this->CodeLienPersonnePhysiqueEtPersonneMorale;
    }
    /**
     * Set CodeLienPersonnePhysiqueEtPersonneMorale value
     * @param int $codeLienPersonnePhysiqueEtPersonneMorale
     * @return \CfcalSasieSDK\Entity\LienPersonnePhysiqueEtPersonneMorale
     */
    public function setCodeLienPersonnePhysiqueEtPersonneMorale($codeLienPersonnePhysiqueEtPersonneMorale = null)
    {
        // validation for constraint: int
        if (!is_null($codeLienPersonnePhysiqueEtPersonneMorale) && !(is_int($codeLienPersonnePhysiqueEtPersonneMorale) || ctype_digit($codeLienPersonnePhysiqueEtPersonneMorale))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($codeLienPersonnePhysiqueEtPersonneMorale, true), gettype($codeLienPersonnePhysiqueEtPersonneMorale)), __LINE__);
        }
        $this->CodeLienPersonnePhysiqueEtPersonneMorale = $codeLienPersonnePhysiqueEtPersonneMorale;
        return $this;
    }
    /**
     * Get CodePersonneMorale value
     * @return int|null
     */
    public function getCodePersonneMorale()
    {
        return $this->CodePersonneMorale;
    }
    /**
     * Set CodePersonneMorale value
     * @param int $codePersonneMorale
     * @return \CfcalSasieSDK\Entity\LienPersonnePhysiqueEtPersonneMorale
     */
    public function setCodePersonneMorale($codePersonneMorale = null)
    {
        // validation for constraint: int
        if (!is_null($codePersonneMorale) && !(is_int($codePersonneMorale) || ctype_digit($codePersonneMorale))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($codePersonneMorale, true), gettype($codePersonneMorale)), __LINE__);
        }
        $this->CodePersonneMorale = $codePersonneMorale;
        return $this;
    }
    /**
     * Get CodePersonnePhysique value
     * @return int|null
     */
    public function getCodePersonnePhysique()
    {
        return $this->CodePersonnePhysique;
    }
    /**
     * Set CodePersonnePhysique value
     * @param int $codePersonnePhysique
     * @return \CfcalSasieSDK\Entity\LienPersonnePhysiqueEtPersonneMorale
     */
    public function setCodePersonnePhysique($codePersonnePhysique = null)
    {
        // validation for constraint: int
        if (!is_null($codePersonnePhysique) && !(is_int($codePersonnePhysique) || ctype_digit($codePersonnePhysique))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($codePersonnePhysique, true), gettype($codePersonnePhysique)), __LINE__);
        }
        $this->CodePersonnePhysique = $codePersonnePhysique;
        return $this;
    }
    /**
     * Get CodeTypeStatutSocialeBeneficiaire value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getCodeTypeStatutSocialeBeneficiaire()
    {
        return isset($this->CodeTypeStatutSocialeBeneficiaire) ? $this->CodeTypeStatutSocialeBeneficiaire : null;
    }
    /**
     * Set CodeTypeStatutSocialeBeneficiaire value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $codeTypeStatutSocialeBeneficiaire
     * @return \CfcalSasieSDK\Entity\LienPersonnePhysiqueEtPersonneMorale
     */
    public function setCodeTypeStatutSocialeBeneficiaire($codeTypeStatutSocialeBeneficiaire = null)
    {
        // validation for constraint: string
        if (!is_null($codeTypeStatutSocialeBeneficiaire) && !is_string($codeTypeStatutSocialeBeneficiaire)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($codeTypeStatutSocialeBeneficiaire, true), gettype($codeTypeStatutSocialeBeneficiaire)), __LINE__);
        }
        if (is_null($codeTypeStatutSocialeBeneficiaire) || (is_array($codeTypeStatutSocialeBeneficiaire) && empty($codeTypeStatutSocialeBeneficiaire))) {
            unset($this->CodeTypeStatutSocialeBeneficiaire);
        } else {
            $this->CodeTypeStatutSocialeBeneficiaire = $codeTypeStatutSocialeBeneficiaire;
        }
        return $this;
    }
    /**
     * Get Part value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return float|null
     */
    public function getPart()
    {
        return isset($this->Part) ? $this->Part : null;
    }
    /**
     * Set Part value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param float $part
     * @return \CfcalSasieSDK\Entity\LienPersonnePhysiqueEtPersonneMorale
     */
    public function setPart($part = null)
    {
        // validation for constraint: float
        if (!is_null($part) && !(is_float($part) || is_numeric($part))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($part, true), gettype($part)), __LINE__);
        }
        if (is_null($part) || (is_array($part) && empty($part))) {
            unset($this->Part);
        } else {
            $this->Part = $part;
        }
        return $this;
    }
}
