src/Entity/System/Customer.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Entity\System;
  3. use App\Factory\ControlPanel\Wishlist\WishListFactory;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Doctrine\ORM\PersistentCollection;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. /**
  11.  * Customer
  12.  *
  13.  * @ORM\Table(name="ps_customer")
  14.  *
  15.  * @ORM\Entity(repositoryClass="App\Repository\System\CustomerRepository")
  16.  */
  17. class Customer implements UserInterfacePasswordAuthenticatedUserInterface
  18. {
  19.     public const DEFAULT_SYS_USER_ID 1523;
  20.     public const IDS_USERS_SYS = [self::DEFAULT_SYS_USER_ID131588131590245190];
  21.     public const PARTIAL_CREATION_STEP_0 2;
  22.     public const PARTIAL_CREATION 1;
  23.     public const ACCOUNT_COMPLETE 0;
  24.     public const WITHOUT_PACK_GROUP 1;
  25.     public const WHOLESALE_GROUP 2;
  26.     public const EMPLOYEE_GROUP 3;
  27.     public const ID_CUSTOMER_NOT_BILLING_AGREEMENT '0';
  28.     public const WORKHUMAN_CUSTOMER_IDS = [232487235957235968235969235972235973235974235976235977235978235980235986235989235993235994235996277077425892425896454066454504454508454511454513454515635273669050];
  29.     public const WORKHUMAN_PRICE_FACTOR 1.01;
  30.     public const PROFIT_GROUPS_WHOLESALER = [self::WHOLESALE_GROUPself::EMPLOYEE_GROUP];
  31.     public const NINE_CUSTOMER_ID 132688;
  32.     public const CUSTOMER_DISABLE_CONTROL_FLAG '_baja';
  33.     public const SESSION_ACCOUNT_SUCCESS 'ACCOUNT_SUCCESS';
  34.     /**
  35.      * @ORM\Id()
  36.      *
  37.      * @ORM\GeneratedValue()
  38.      *
  39.      * @ORM\Column(type="integer", name="id_customer")
  40.      */
  41.     private $id;
  42.     /**
  43.      * @var Group|null
  44.      *
  45.      * @ORM\ManyToOne(targetEntity="App\Entity\System\Group", inversedBy="customers")
  46.      *
  47.      * @ORM\JoinColumn(name="id_group", referencedColumnName="id_group",referencedColumnName="id_group")
  48.      */
  49.     private $group;
  50.     /**
  51.      * @var Language|null
  52.      *
  53.      * @ORM\ManyToOne(targetEntity="App\Entity\System\Language")
  54.      *
  55.      * @ORM\JoinColumn(name="id_lang", referencedColumnName="id_lang",referencedColumnName="id_lang")
  56.      */
  57.     private $language;
  58.     /**
  59.      * @var string|null
  60.      *
  61.      * @ORM\Column(type="string", length=14, nullable=true)
  62.      */
  63.     private $prefixe;
  64.     /**
  65.      * @var string|null
  66.      *
  67.      * @ORM\Column(type="string", length=100, nullable=true)
  68.      */
  69.     private $name;
  70.     /**
  71.      * @var string|null
  72.      *
  73.      * @ORM\Column(type="string", length=32, nullable=true)
  74.      */
  75.     private $surnames;
  76.     /**
  77.      * @var string
  78.      *
  79.      * @ORM\Column(type="string", length=128)
  80.      */
  81.     private $email;
  82.     /**
  83.      * @var string
  84.      *
  85.      * @ORM\Column(type="string", length=100)
  86.      */
  87.     private $passwd;
  88.     /**
  89.      * @var string|null
  90.      *
  91.      * @ORM\Column(type="string", length=32, nullable=true)
  92.      */
  93.     private $taxNumber;
  94.     /**
  95.      * @var int|null
  96.      *
  97.      * @ORM\Column(type="integer", length=11, nullable=true)
  98.      */
  99.     private $idPack;
  100.     /**
  101.      * @var float
  102.      *
  103.      * @ORM\Column(type="decimal", precision=10, scale=2)
  104.      */
  105.     private $purse;
  106.     /**
  107.      * @var \DateTime
  108.      *
  109.      * @ORM\Column(type="datetime", options={"default" : "CURRENT_TIMESTAMP"})
  110.      */
  111.     private $lastPasswdGen;
  112.     /**
  113.      * @var \DateTime|null
  114.      *
  115.      * @ORM\Column(type="date", nullable=true)
  116.      */
  117.     private $birthday;
  118.     /**
  119.      * @var bool
  120.      *
  121.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  122.      */
  123.     private $newsletter;
  124.     /**
  125.      * @var string|null
  126.      *
  127.      * @ORM\Column(type="string", length=15, nullable=true)
  128.      */
  129.     private $ipRegistrationNewsletter;
  130.     /**
  131.      * @var \DateTime
  132.      *
  133.      * @ORM\Column(type="datetime", nullable=true)
  134.      */
  135.     private $block;
  136.     /**
  137.      * @var bool
  138.      *
  139.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  140.      */
  141.     private $withdrawalWarehouse;
  142.     /**
  143.      * @var bool
  144.      *
  145.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  146.      */
  147.     private $multifactorAuthEnabled;
  148.     /**
  149.      * @var bool
  150.      *
  151.      * @ORM\Column(type="boolean", columnDefinition="tinyint(4)", options={"default" : 0})
  152.      */
  153.     private $subscription;
  154.     /**
  155.      * @var int|null
  156.      *
  157.      * @ORM\Column(type="integer", length=10, nullable=true)
  158.      */
  159.     private $idService;
  160.     /**
  161.      * @var bool
  162.      *
  163.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  164.      */
  165.     private $reserve;
  166.     /**
  167.      * @var bool
  168.      *
  169.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  170.      */
  171.     private $active;
  172.     /**
  173.      * @var bool
  174.      *
  175.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  176.      */
  177.     private $isGuest;
  178.     /**
  179.      * @var bool
  180.      *
  181.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  182.      */
  183.     private $isValidVat;
  184.     /**
  185.      * @var bool
  186.      *
  187.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  188.      */
  189.     private $dropshipping;
  190.     /**
  191.      * @var \DateTime
  192.      *
  193.      * @ORM\Column(type="datetime")
  194.      */
  195.     private $dateAdd;
  196.     /**
  197.      * @var \DateTime
  198.      *
  199.      * @ORM\Column(type="datetime")
  200.      */
  201.     private $dateUpd;
  202.     /**
  203.      * @var string|null
  204.      *
  205.      * @ORM\Column(type="text", nullable=true)
  206.      */
  207.     private $comment;
  208.     /**
  209.      * @var string|null
  210.      *
  211.      * @ORM\Column(type="string", length=10, nullable=true)
  212.      */
  213.     private $commissionAgent;
  214.     /**
  215.      * @ORM\Column(type="datetime", nullable=true)
  216.      */
  217.     private $dateCsv;
  218.     /**
  219.      * @var \DateTime|null
  220.      *
  221.      * @ORM\Column(type="datetime", nullable=true)
  222.      */
  223.     private $dateBlock;
  224.     /**
  225.      * @var string|null
  226.      *
  227.      * @ORM\Column(type="string", length=30, nullable=true, options={"default" : "0"})
  228.      */
  229.     private $paypalBillingAgreement;
  230.     /**
  231.      * @var \DateTime|null
  232.      *
  233.      * @ORM\Column(type="datetime", nullable=true)
  234.      */
  235.     private $datePack;
  236.     /**
  237.      * @var string|null
  238.      *
  239.      * @ORM\Column(type="string", length=2, nullable=true)
  240.      */
  241.     private $csvLang;
  242.     /**
  243.      * @var string|null
  244.      *
  245.      * @ORM\Column(type="string", length=50, nullable=true)
  246.      */
  247.     private $dropshippingName;
  248.     /**
  249.      * @var string|null
  250.      *
  251.      * @ORM\Column(type="string", length=100, nullable=true)
  252.      */
  253.     private $emailPaypal;
  254.     /**
  255.      * @var bool|null
  256.      *
  257.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
  258.      */
  259.     private $sincronizedErp;
  260.     /**
  261.      * @var bool|null
  262.      *
  263.      * @ORM\Column(type="boolean", columnDefinition="tinyint(4)", options={"default" : 0}, nullable=true)
  264.      */
  265.     private $promotions;
  266.     /**
  267.      * @var bool|null
  268.      *
  269.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0}, nullable=true)
  270.      */
  271.     private $moroso;
  272.     /**
  273.      * @var bool|null
  274.      *
  275.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0}, nullable=true)
  276.      */
  277.     private $avatar;
  278.     /**
  279.      * @var bool|null
  280.      *
  281.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0}, nullable=true)
  282.      */
  283.     private $avisoContabilidad;
  284.     /**
  285.      * @var string|null
  286.      *
  287.      * @ORM\Column(type="string", length=25, nullable=true)
  288.      */
  289.     private $payerIdPaypal;
  290.     /**
  291.      * @var bool
  292.      *
  293.      * @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 1})
  294.      */
  295.     private $orderCsv;
  296.     /**
  297.      * @var \DateTime|null
  298.      *
  299.      * @ORM\Column(type="datetime", nullable=true)
  300.      */
  301.     private $dateBasicFree;
  302.     /**
  303.      * @var bool|null
  304.      *
  305.      * @ORM\Column(type="boolean", columnDefinition="tinyint(4)" ,nullable=true)
  306.      */
  307.     private $excluirVies;
  308.     /**
  309.      * @var bool|null
  310.      *
  311.      * @ORM\Column(type="boolean", columnDefinition="tinyint(4)", options={"default" : 0}, nullable=true)
  312.      */
  313.     private $blocked;
  314.     /**
  315.      * @var \DateTime|null
  316.      *
  317.      * @ORM\Column(type="datetime", nullable=true)
  318.      */
  319.     private $dateExcluirIva;
  320.     /**
  321.      * @var float|null
  322.      *
  323.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  324.      */
  325.     private $dtoPersonal1;
  326.     /**
  327.      * @var float|null
  328.      *
  329.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  330.      */
  331.     private $dtoPersonal2;
  332.     /**
  333.      * @var float|null
  334.      *
  335.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  336.      */
  337.     private $dtoPersonal3;
  338.     /**
  339.      * @var float|null
  340.      *
  341.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  342.      */
  343.     private $importePersonal1;
  344.     /**
  345.      * @var float|null
  346.      *
  347.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  348.      */
  349.     private $importePersonal2;
  350.     /**
  351.      * @var float|null
  352.      *
  353.      * @ORM\Column(type="float", precision=10, scale=2, options={"default" : 0.00}, nullable=true)
  354.      */
  355.     private $importePersonal3;
  356.     /**
  357.      * @var int|null
  358.      *
  359.      * @ORM\Column(type="integer", length=11, options={"default" : 0}, nullable=true)
  360.      */
  361.     private $creditType;
  362.     /**
  363.      * @var int|null
  364.      *
  365.      * @ORM\Column(type="integer", length=11, nullable=true)
  366.      */
  367.     private $multichannelUserId;
  368.     /**
  369.      * @var int|null
  370.      *
  371.      * @ORM\Column(type="integer", length=11, options={"default" : 0}, nullable=true)
  372.      */
  373.     private $controlpanelMipEnabled;
  374.     /**
  375.      * @var int|null
  376.      *
  377.      * @ORM\Column(type="integer", length=1)
  378.      */
  379.     private $forcePasswordUpdate;
  380.     /**
  381.      * @var int|null
  382.      *
  383.      * @ORM\Column(type="integer", length=2, nullable=true)
  384.      */
  385.     private $top;
  386.     /**
  387.      * @var string|null
  388.      *
  389.      * @ORM\Column(type="string", name="KAM", length=50, nullable=true)
  390.      */
  391.     private $kam;
  392.     /**
  393.      * @var \DateTime|null
  394.      *
  395.      * @ORM\Column(type="datetime", nullable=true)
  396.      */
  397.     private $readPolicyCookies;
  398.     /**
  399.      * @var string|null
  400.      *
  401.      * @ORM\Column(type="string", length=32, nullable=true)
  402.      */
  403.     private $sector;
  404.     /**
  405.      * @var string|null
  406.      *
  407.      * @ORM\Column(type="string", length=32, nullable=true)
  408.      */
  409.     private $catchment;
  410.     /**
  411.      * @var string|null
  412.      *
  413.      * @ORM\Column(type="string", length=64, nullable=true)
  414.      */
  415.     private $type;
  416.     /**
  417.      * @var int|null
  418.      *
  419.      * @ORM\Column(type="integer", length=1, options={"default" : 0}, nullable=true)
  420.      */
  421.     private $packByPurse;
  422.     /**
  423.      * @var int|null
  424.      *
  425.      * @ORM\Column(type="integer", length=1)
  426.      */
  427.     private $partialCreation;
  428.     /**
  429.      * @var bool|null
  430.      *
  431.      * @ORM\Column(type="boolean", length=1, options={"default" : 0})
  432.      */
  433.     private $purchaseNotAllowed;
  434.     /**
  435.      * @var \DateTime|null
  436.      *
  437.      * @ORM\Column(type="datetime", nullable=true)
  438.      */
  439.     private $dateEnding;
  440.     /**
  441.      * @var string|null
  442.      *
  443.      * @ORM\Column(type="string", length=150, nullable=true)
  444.      */
  445.     private $userIdPaycomet;
  446.     /**
  447.      * @var string|null
  448.      *
  449.      * @ORM\Column(type="string", length=255, nullable=true)
  450.      */
  451.     private $userTokenPaycomet;
  452.     /**
  453.      * @var int|null
  454.      *
  455.      * @ORM\Column(type="string", nullable=true)
  456.      */
  457.     private $paycometMit;
  458.     /**
  459.      * @var bool|null
  460.      *
  461.      * @ORM\Column(type="boolean", nullable=true)
  462.      */
  463.     private $packBankwirePayment;
  464.     /**
  465.      * @ORM\OneToMany(targetEntity="App\Entity\System\Order", mappedBy="customer")
  466.      */
  467.     private $orders;
  468.     /**
  469.      * @ORM\OneToMany(targetEntity="App\Entity\System\Address", mappedBy="customer",  cascade={"persist"})
  470.      */
  471.     private $addresses;
  472.     /**
  473.      * @var ArrayCollection|FuturePack[]
  474.      *
  475.      * @ORM\OneToMany(targetEntity="App\Entity\System\FuturePack", mappedBy="customer")
  476.      */
  477.     private $futurePacks;
  478.     /**
  479.      * @var ArrayCollection|SubscriptionLine[]
  480.      *
  481.      * @ORM\OneToMany(targetEntity="SubscriptionLine", mappedBy="customer")
  482.      */
  483.     private $subscriptionLines;
  484.     /**
  485.      * @var PersistentCollection|ServiceCustomer[]
  486.      *
  487.      * @ORM\OneToMany(targetEntity="ServiceCustomer", mappedBy="customer", cascade={"persist"})
  488.      */
  489.     private $serviceCustomer;
  490.     /**
  491.      * @ORM\OneToMany(targetEntity="CustomerApi", mappedBy="customer", cascade={"persist"})
  492.      */
  493.     private $customerApi;
  494.     /**
  495.      * @ORM\OneToMany(targetEntity="CustomerLog", mappedBy="customer", cascade={"persist"})
  496.      */
  497.     private $customerLog;
  498.     /**
  499.      * @ORM\OneToMany(targetEntity="App\Entity\System\Ftp", mappedBy="customer")
  500.      */
  501.     private $ftp;
  502.     /**
  503.      * @ORM\OneToMany(targetEntity="App\Entity\System\SynchronisedShopConfiguration", mappedBy="customer")
  504.      */
  505.     private $syncronisedShopConfiguration;
  506.     /**
  507.      * @ORM\OneToMany(targetEntity="App\Entity\System\CustomerMigration", mappedBy="customer")
  508.      */
  509.     private $customerMigration;
  510.     /**
  511.      * @var Role[]|ArrayCollection
  512.      *
  513.      * @ORM\ManyToMany(targetEntity="App\Entity\System\Role", inversedBy="customers")
  514.      *
  515.      * @ORM\JoinTable(name="customer_role",
  516.      *  joinColumns={@ORM\JoinColumn(name="id_customer", referencedColumnName="id_customer")},
  517.      *     inverseJoinColumns={@ORM\JoinColumn(name="id_role", referencedColumnName="id_role")}
  518.      * )
  519.      */
  520.     private $roles;
  521.     /**
  522.      * @ORM\OneToMany(targetEntity="App\Entity\System\CustomerCatalog", mappedBy="customer", cascade={"persist"}, indexBy="catalog_id")
  523.      */
  524.     private $customerCatalogs;
  525.     /**
  526.      * @var AdditionalInfoAnswer[]|ArrayCollection
  527.      *
  528.      * @ORM\ManyToMany(targetEntity="App\Entity\System\AdditionalInfoAnswer", inversedBy="customers")
  529.      *
  530.      *  @ORM\JoinTable(
  531.      *   name="customer_additional_info_answer",
  532.      *   inverseJoinColumns={@ORM\JoinColumn(name="answer_id", referencedColumnName="id")},
  533.      *   joinColumns={@ORM\JoinColumn(name="customer_id", referencedColumnName="id_customer")}
  534.      * )
  535.      */
  536.     private $additionalInfoAnswers;
  537.     /**
  538.      * @var string|null
  539.      *
  540.      * @ORM\Column(type="string", length=64, nullable=true)
  541.      */
  542.     private $adyenPaymentId;
  543.     /**
  544.      * @var Wishlist[]|ArrayCollection
  545.      *
  546.      * @ORM\OneToMany(targetEntity="Wishlist", mappedBy="customer", cascade={"persist"})
  547.      */
  548.     private $wishlists;
  549.     /**
  550.      * @var string
  551.      *
  552.      * @ORM\Column(type="string", length=50, nullable= true)
  553.      */
  554.     private $thePowerMbaUserId;
  555.     /**
  556.      * @var string|null
  557.      *
  558.      * @ORM\Column(type="string", nullable=true)
  559.      */
  560.     private $googleAccountId;
  561.     /**
  562.      * @var string|null
  563.      *
  564.      * @ORM\Column(type="string", nullable=true)
  565.      */
  566.     private $linkedinAccountId;
  567.     /**
  568.      * Customer constructor.
  569.      *
  570.      * @throws \Exception
  571.      */
  572.     public function __construct()
  573.     {
  574.         $this->group 1;
  575.         $this->lastPasswdGen = new \DateTime();
  576.         $this->newsletter 0;
  577.         $this->withdrawalWarehouse 0;
  578.         $this->subscription 0;
  579.         $this->reserve 0;
  580.         $this->active 0;
  581.         $this->isGuest 0;
  582.         $this->isValidVat 0;
  583.         $this->dropshipping 0;
  584.         $this->paypalBillingAgreement '0';
  585.         $this->sincronizedErp 0;
  586.         $this->promotions 0;
  587.         $this->moroso 0;
  588.         $this->avatar 0;
  589.         $this->avisoContabilidad 0;
  590.         $this->orderCsv 1;
  591.         $this->blocked 0;
  592.         $this->dtoPersonal1 0.00;
  593.         $this->dtoPersonal2 0.00;
  594.         $this->dtoPersonal3 0.00;
  595.         $this->importePersonal1 0.00;
  596.         $this->importePersonal2 0.00;
  597.         $this->importePersonal3 0.00;
  598.         $this->creditType 0;
  599.         $this->orders = new ArrayCollection();
  600.         $this->addresses = new ArrayCollection();
  601.         $this->futurePacks = new ArrayCollection();
  602.         $this->subscriptionLines = new ArrayCollection();
  603.         $this->serviceCustomer = new ArrayCollection();
  604.         $this->customerApi = new ArrayCollection();
  605.         $this->customerLog = new ArrayCollection();
  606.         $this->customerMigration = new ArrayCollection();
  607.         $this->syncronisedShopConfiguration = new ArrayCollection();
  608.         $this->ftp = new ArrayCollection();
  609.         $this->roles = new ArrayCollection();
  610.         $this->customerCatalogs = new ArrayCollection();
  611.         $this->additionalInfoAnswers = new ArrayCollection();
  612.         $this->wishlists = new ArrayCollection();
  613.         $this->controlpanelMipEnabled 0;
  614.     }
  615.     public static function createEmptyCustomer(string $emailstring $passwordGroup $groupRole $roleLanguage $language, \DateTime $currentDateTime, \DateTime $zeroDate): Customer
  616.     {
  617.         $customer = new self();
  618.         $customer->email $email;
  619.         $customer->passwd $password;
  620.         $customer->language $language;
  621.         $customer->active true;
  622.         $customer->purse 0;
  623.         $customer->dateAdd $currentDateTime;
  624.         $customer->dateUpd $currentDateTime;
  625.         $customer->dateCsv $zeroDate;
  626.         $customer->dateExcluirIva $zeroDate;
  627.         $customer->orderCsv false;
  628.         $customer->idPack 0;
  629.         $customer->multichannelUserId 0;
  630.         $customer->packByPurse 0;
  631.         $customer->group $group;
  632.         $customer->name '';
  633.         $customer->partialCreation self::PARTIAL_CREATION_STEP_0;
  634.         $customer->multifactorAuthEnabled true;
  635.         $customer->roles = [$role];
  636.         $customer->wishlists = new ArrayCollection([WishListFactory::createDefault($customer$customer->getLanguage()->getId())]);
  637.         $customer->controlpanelMipEnabled 1;
  638.         return $customer;
  639.     }
  640.     public function getPassword(): string
  641.     {
  642.         return $this->getPasswd();
  643.     }
  644.     public function getSalt(): ?string
  645.     {
  646.         return null;
  647.     }
  648.     public function getUsername(): string
  649.     {
  650.         return $this->email;
  651.     }
  652.     public function eraseCredentials()
  653.     {
  654.     }
  655.     public function getEncoderName(): ?string
  656.     {
  657.         return 'customer_encoder';
  658.     }
  659.     /**
  660.      * @return mixed
  661.      */
  662.     public function getId()
  663.     {
  664.         return $this->id;
  665.     }
  666.     public function getUserIdentifier(): string
  667.     {
  668.         return (string)$this->id;
  669.     }
  670.     /**
  671.      * @param mixed $id
  672.      *
  673.      * @return Customer
  674.      */
  675.     public function setId($id): Customer
  676.     {
  677.         $this->id $id;
  678.         return $this;
  679.     }
  680.     /**
  681.      * @return Group|null
  682.      */
  683.     public function getGroup(): ?Group
  684.     {
  685.         return $this->group;
  686.     }
  687.     /**
  688.      * @param Group|null $group
  689.      *
  690.      * @return Customer
  691.      */
  692.     public function setGroup(?Group $group): Customer
  693.     {
  694.         $this->group $group;
  695.         return $this;
  696.     }
  697.     /**
  698.      * @return Language|null
  699.      */
  700.     public function getLanguage(): ?Language
  701.     {
  702.         return $this->language;
  703.     }
  704.     /**
  705.      * @param Language|null $language
  706.      *
  707.      * @return Customer
  708.      */
  709.     public function setLanguage(?Language $language): Customer
  710.     {
  711.         $this->language $language;
  712.         return $this;
  713.     }
  714.     /**
  715.      * @return string|null
  716.      */
  717.     public function getPrefixe(): ?string
  718.     {
  719.         return $this->prefixe;
  720.     }
  721.     /**
  722.      * @param string|null $prefixe
  723.      *
  724.      * @return Customer
  725.      */
  726.     public function setPrefixe(?string $prefixe): Customer
  727.     {
  728.         $this->prefixe $prefixe;
  729.         return $this;
  730.     }
  731.     /**
  732.      * @return string|null
  733.      */
  734.     public function getName(): ?string
  735.     {
  736.         return $this->name;
  737.     }
  738.     /**
  739.      * @param string|null $name
  740.      *
  741.      * @return Customer
  742.      */
  743.     public function setName(?string $name): Customer
  744.     {
  745.         $this->name $name;
  746.         return $this;
  747.     }
  748.     /**
  749.      * @return string|null
  750.      */
  751.     public function getSurnames(): ?string
  752.     {
  753.         return $this->surnames;
  754.     }
  755.     /**
  756.      * @param string|null $surnames
  757.      *
  758.      * @return Customer
  759.      */
  760.     public function setSurnames(?string $surnames): Customer
  761.     {
  762.         $this->surnames $surnames;
  763.         return $this;
  764.     }
  765.     /**
  766.      * @return string
  767.      */
  768.     public function getEmail(): string
  769.     {
  770.         return $this->email;
  771.     }
  772.     /**
  773.      * @param string $email
  774.      *
  775.      * @return Customer
  776.      */
  777.     public function setEmail(string $email): Customer
  778.     {
  779.         $this->email $email;
  780.         return $this;
  781.     }
  782.     /**
  783.      * @return string
  784.      */
  785.     public function getPasswd(): string
  786.     {
  787.         return $this->passwd;
  788.     }
  789.     /**
  790.      * @param string $passwd
  791.      *
  792.      * @return Customer
  793.      */
  794.     public function setPasswd(string $passwd): Customer
  795.     {
  796.         $this->passwd $passwd;
  797.         return $this;
  798.     }
  799.     /**
  800.      * @return string|null
  801.      */
  802.     public function getTaxNumber(): ?string
  803.     {
  804.         return $this->taxNumber;
  805.     }
  806.     /**
  807.      * @param string|null $taxNumber
  808.      *
  809.      * @return Customer
  810.      */
  811.     public function setTaxNumber(?string $taxNumber): Customer
  812.     {
  813.         $this->taxNumber $taxNumber;
  814.         return $this;
  815.     }
  816.     /**
  817.      * @return int|null
  818.      */
  819.     public function getIdPack(): ?int
  820.     {
  821.         return $this->idPack;
  822.     }
  823.     /**
  824.      * @param int|null $idPack
  825.      *
  826.      * @return Customer
  827.      */
  828.     public function setIdPack(?int $idPack): Customer
  829.     {
  830.         $this->idPack $idPack;
  831.         return $this;
  832.     }
  833.     /**
  834.      * @return float
  835.      */
  836.     public function getPurse(): float
  837.     {
  838.         return $this->purse;
  839.     }
  840.     /**
  841.      * @param float $purse
  842.      *
  843.      * @return Customer
  844.      */
  845.     public function setPurse(float $purse): Customer
  846.     {
  847.         $this->purse $purse;
  848.         return $this;
  849.     }
  850.     /**
  851.      * @return \DateTime
  852.      */
  853.     public function getLastPasswdGen(): \DateTime
  854.     {
  855.         return $this->lastPasswdGen;
  856.     }
  857.     /**
  858.      * @param \DateTime $lastPasswdGen
  859.      *
  860.      * @return Customer
  861.      */
  862.     public function setLastPasswdGen(\DateTime $lastPasswdGen): Customer
  863.     {
  864.         $this->lastPasswdGen $lastPasswdGen;
  865.         return $this;
  866.     }
  867.     /**
  868.      * @return \DateTime|null
  869.      */
  870.     public function getBirthday(): ?\DateTime
  871.     {
  872.         return $this->birthday;
  873.     }
  874.     /**
  875.      * @param \DateTime|null $birthday
  876.      *
  877.      * @return Customer
  878.      */
  879.     public function setBirthday(?\DateTime $birthday): Customer
  880.     {
  881.         $this->birthday $birthday;
  882.         return $this;
  883.     }
  884.     /**
  885.      * @return bool
  886.      */
  887.     public function isNewsletter(): bool
  888.     {
  889.         return $this->newsletter;
  890.     }
  891.     /**
  892.      * @param bool $newsletter
  893.      *
  894.      * @return Customer
  895.      */
  896.     public function setNewsletter(bool $newsletter): Customer
  897.     {
  898.         $this->newsletter $newsletter;
  899.         return $this;
  900.     }
  901.     /**
  902.      * @return string|null
  903.      */
  904.     public function getIpRegistrationNewsletter(): ?string
  905.     {
  906.         return $this->ipRegistrationNewsletter;
  907.     }
  908.     /**
  909.      * @param string|null $ipRegistrationNewsletter
  910.      *
  911.      * @return Customer
  912.      */
  913.     public function setIpRegistrationNewsletter(?string $ipRegistrationNewsletter): Customer
  914.     {
  915.         $this->ipRegistrationNewsletter $ipRegistrationNewsletter;
  916.         return $this;
  917.     }
  918.     /**
  919.      * @return \DateTime
  920.      */
  921.     public function getBlock(): \DateTime
  922.     {
  923.         return $this->block;
  924.     }
  925.     /**
  926.      * @param \DateTime $block
  927.      *
  928.      * @return Customer
  929.      */
  930.     public function setBlock(\DateTime $block): Customer
  931.     {
  932.         $this->block $block;
  933.         return $this;
  934.     }
  935.     /**
  936.      * @return bool
  937.      */
  938.     public function isWithdrawalWarehouse(): bool
  939.     {
  940.         return $this->withdrawalWarehouse;
  941.     }
  942.     /**
  943.      * @param bool $withdrawalWarehouse
  944.      *
  945.      * @return Customer
  946.      */
  947.     public function setWithdrawalWarehouse(bool $withdrawalWarehouse): Customer
  948.     {
  949.         $this->withdrawalWarehouse $withdrawalWarehouse;
  950.         return $this;
  951.     }
  952.     /**
  953.      * @return bool
  954.      */
  955.     public function isSubscription(): bool
  956.     {
  957.         return $this->subscription;
  958.     }
  959.     /**
  960.      * @param bool $subscription
  961.      *
  962.      * @return Customer
  963.      */
  964.     public function setSubscription(bool $subscription): Customer
  965.     {
  966.         $this->subscription $subscription;
  967.         return $this;
  968.     }
  969.     /**
  970.      * @return int|null
  971.      */
  972.     public function getIdService(): ?int
  973.     {
  974.         return $this->idService;
  975.     }
  976.     /**
  977.      * @param int|null $idService
  978.      *
  979.      * @return Customer
  980.      */
  981.     public function setIdService(?int $idService): Customer
  982.     {
  983.         $this->idService $idService;
  984.         return $this;
  985.     }
  986.     /**
  987.      * @return bool
  988.      */
  989.     public function isReserve(): bool
  990.     {
  991.         return $this->reserve;
  992.     }
  993.     /**
  994.      * @param bool $reserve
  995.      *
  996.      * @return Customer
  997.      */
  998.     public function setReserve(bool $reserve): Customer
  999.     {
  1000.         $this->reserve $reserve;
  1001.         return $this;
  1002.     }
  1003.     /**
  1004.      * @return bool
  1005.      */
  1006.     public function isActive(): bool
  1007.     {
  1008.         return $this->active;
  1009.     }
  1010.     /**
  1011.      * @param bool $active
  1012.      *
  1013.      * @return Customer
  1014.      */
  1015.     public function setActive(bool $active): Customer
  1016.     {
  1017.         $this->active $active;
  1018.         return $this;
  1019.     }
  1020.     /**
  1021.      * @return bool
  1022.      */
  1023.     public function isGuest(): bool
  1024.     {
  1025.         return $this->isGuest;
  1026.     }
  1027.     /**
  1028.      * @param bool $isGuest
  1029.      *
  1030.      * @return Customer
  1031.      */
  1032.     public function setIsGuest(bool $isGuest): Customer
  1033.     {
  1034.         $this->isGuest $isGuest;
  1035.         return $this;
  1036.     }
  1037.     /**
  1038.      * @return bool
  1039.      */
  1040.     public function isValidVat(): bool
  1041.     {
  1042.         return $this->isValidVat;
  1043.     }
  1044.     /**
  1045.      * @param bool $isValidVat
  1046.      *
  1047.      * @return Customer
  1048.      */
  1049.     public function setIsValidVat(bool $isValidVat): Customer
  1050.     {
  1051.         $this->isValidVat $isValidVat;
  1052.         return $this;
  1053.     }
  1054.     /**
  1055.      * @return bool
  1056.      */
  1057.     public function isDropshipping(): bool
  1058.     {
  1059.         return $this->dropshipping;
  1060.     }
  1061.     /**
  1062.      * @param bool $dropshipping
  1063.      *
  1064.      * @return Customer
  1065.      */
  1066.     public function setDropshipping(bool $dropshipping): Customer
  1067.     {
  1068.         $this->dropshipping $dropshipping;
  1069.         return $this;
  1070.     }
  1071.     /**
  1072.      * @return \DateTime
  1073.      */
  1074.     public function getDateAdd(): \DateTime
  1075.     {
  1076.         return $this->dateAdd;
  1077.     }
  1078.     /**
  1079.      * @param \DateTime $dateAdd
  1080.      *
  1081.      * @return Customer
  1082.      */
  1083.     public function setDateAdd(\DateTime $dateAdd): Customer
  1084.     {
  1085.         $this->dateAdd $dateAdd;
  1086.         return $this;
  1087.     }
  1088.     /**
  1089.      * @return \DateTime
  1090.      */
  1091.     public function getDateUpd(): \DateTime
  1092.     {
  1093.         return $this->dateUpd;
  1094.     }
  1095.     /**
  1096.      * @param \DateTime $dateUpd
  1097.      *
  1098.      * @return Customer
  1099.      */
  1100.     public function setDateUpd(\DateTime $dateUpd): Customer
  1101.     {
  1102.         $this->dateUpd $dateUpd;
  1103.         return $this;
  1104.     }
  1105.     /**
  1106.      * @return string|null
  1107.      */
  1108.     public function getComment(): ?string
  1109.     {
  1110.         return $this->comment;
  1111.     }
  1112.     /**
  1113.      * @param string|null $comment
  1114.      *
  1115.      * @return Customer
  1116.      */
  1117.     public function setComment(?string $comment): Customer
  1118.     {
  1119.         $this->comment $comment;
  1120.         return $this;
  1121.     }
  1122.     /**
  1123.      * @return string|null
  1124.      */
  1125.     public function getCommissionAgent(): ?string
  1126.     {
  1127.         return $this->commissionAgent;
  1128.     }
  1129.     /**
  1130.      * @param string|null $commissionAgent
  1131.      *
  1132.      * @return Customer
  1133.      */
  1134.     public function setCommissionAgent(?string $commissionAgent): Customer
  1135.     {
  1136.         $this->commissionAgent $commissionAgent;
  1137.         return $this;
  1138.     }
  1139.     public function getDateCsv()
  1140.     {
  1141.         return $this->dateCsv;
  1142.     }
  1143.     public function setDateCsv($dateCsv)
  1144.     {
  1145.         $this->dateCsv $dateCsv;
  1146.         return $this;
  1147.     }
  1148.     /**
  1149.      * @return \DateTime|null
  1150.      */
  1151.     public function getDateBlock(): ?\DateTime
  1152.     {
  1153.         return $this->dateBlock;
  1154.     }
  1155.     /**
  1156.      * @param \DateTime|null $dateBlock
  1157.      *
  1158.      * @return Customer
  1159.      */
  1160.     public function setDateBlock(?\DateTime $dateBlock): Customer
  1161.     {
  1162.         $this->dateBlock $dateBlock;
  1163.         return $this;
  1164.     }
  1165.     /**
  1166.      * @return string|null
  1167.      */
  1168.     public function getPaypalBillingAgreement(): ?string
  1169.     {
  1170.         return $this->paypalBillingAgreement;
  1171.     }
  1172.     /**
  1173.      * @param string|null $paypalBillingAgreement
  1174.      *
  1175.      * @return Customer
  1176.      */
  1177.     public function setPaypalBillingAgreement(?string $paypalBillingAgreement): Customer
  1178.     {
  1179.         $this->paypalBillingAgreement $paypalBillingAgreement;
  1180.         return $this;
  1181.     }
  1182.     /**
  1183.      * @return \DateTime|null
  1184.      */
  1185.     public function getDatePack(): ?\DateTime
  1186.     {
  1187.         return $this->datePack;
  1188.     }
  1189.     /**
  1190.      * @param \DateTime|null $datePack
  1191.      *
  1192.      * @return Customer
  1193.      */
  1194.     public function setDatePack(?\DateTime $datePack): Customer
  1195.     {
  1196.         $this->datePack $datePack;
  1197.         return $this;
  1198.     }
  1199.     /**
  1200.      * @return string|null
  1201.      */
  1202.     public function getCsvLang(): ?string
  1203.     {
  1204.         return $this->csvLang;
  1205.     }
  1206.     /**
  1207.      * @param string|null $csvLang
  1208.      *
  1209.      * @return Customer
  1210.      */
  1211.     public function setCsvLang(?string $csvLang): Customer
  1212.     {
  1213.         $this->csvLang $csvLang;
  1214.         return $this;
  1215.     }
  1216.     /**
  1217.      * @return string|null
  1218.      */
  1219.     public function getDropshippingName(): ?string
  1220.     {
  1221.         return $this->dropshippingName;
  1222.     }
  1223.     /**
  1224.      * @param string|null $dropshippingName
  1225.      *
  1226.      * @return Customer
  1227.      */
  1228.     public function setDropshippingName(?string $dropshippingName): Customer
  1229.     {
  1230.         $this->dropshippingName $dropshippingName;
  1231.         return $this;
  1232.     }
  1233.     /**
  1234.      * @return string|null
  1235.      */
  1236.     public function getEmailPaypal(): ?string
  1237.     {
  1238.         return $this->emailPaypal;
  1239.     }
  1240.     /**
  1241.      * @param string|null $emailPaypal
  1242.      *
  1243.      * @return Customer
  1244.      */
  1245.     public function setEmailPaypal(?string $emailPaypal): Customer
  1246.     {
  1247.         $this->emailPaypal $emailPaypal;
  1248.         return $this;
  1249.     }
  1250.     /**
  1251.      * @return bool|null
  1252.      */
  1253.     public function getSincronizedErp(): ?bool
  1254.     {
  1255.         return $this->sincronizedErp;
  1256.     }
  1257.     /**
  1258.      * @param bool|null $sincronizedErp
  1259.      *
  1260.      * @return Customer
  1261.      */
  1262.     public function setSincronizedErp(?bool $sincronizedErp): Customer
  1263.     {
  1264.         $this->sincronizedErp $sincronizedErp;
  1265.         return $this;
  1266.     }
  1267.     /**
  1268.      * @return bool|null
  1269.      */
  1270.     public function getPromotions(): ?bool
  1271.     {
  1272.         return $this->promotions;
  1273.     }
  1274.     /**
  1275.      * @param bool|null $promotions
  1276.      *
  1277.      * @return Customer
  1278.      */
  1279.     public function setPromotions(?bool $promotions): Customer
  1280.     {
  1281.         $this->promotions $promotions;
  1282.         return $this;
  1283.     }
  1284.     /**
  1285.      * @return bool|null
  1286.      */
  1287.     public function getMoroso(): ?bool
  1288.     {
  1289.         return $this->moroso;
  1290.     }
  1291.     /**
  1292.      * @param bool|null $moroso
  1293.      *
  1294.      * @return Customer
  1295.      */
  1296.     public function setMoroso(?bool $moroso): Customer
  1297.     {
  1298.         $this->moroso $moroso;
  1299.         return $this;
  1300.     }
  1301.     /**
  1302.      * @return bool|null
  1303.      */
  1304.     public function getAvatar(): ?bool
  1305.     {
  1306.         return $this->avatar;
  1307.     }
  1308.     /**
  1309.      * @param bool|null $avatar
  1310.      *
  1311.      * @return Customer
  1312.      */
  1313.     public function setAvatar(?bool $avatar): Customer
  1314.     {
  1315.         $this->avatar $avatar;
  1316.         return $this;
  1317.     }
  1318.     /**
  1319.      * @return bool|null
  1320.      */
  1321.     public function getAvisoContabilidad(): ?bool
  1322.     {
  1323.         return $this->avisoContabilidad;
  1324.     }
  1325.     /**
  1326.      * @param bool|null $avisoContabilidad
  1327.      *
  1328.      * @return Customer
  1329.      */
  1330.     public function setAvisoContabilidad(?bool $avisoContabilidad): Customer
  1331.     {
  1332.         $this->avisoContabilidad $avisoContabilidad;
  1333.         return $this;
  1334.     }
  1335.     /**
  1336.      * @return string|null
  1337.      */
  1338.     public function getPayerIdPaypal(): ?string
  1339.     {
  1340.         return $this->payerIdPaypal;
  1341.     }
  1342.     /**
  1343.      * @param string|null $payerIdPaypal
  1344.      *
  1345.      * @return Customer
  1346.      */
  1347.     public function setPayerIdPaypal(?string $payerIdPaypal): Customer
  1348.     {
  1349.         $this->payerIdPaypal $payerIdPaypal;
  1350.         return $this;
  1351.     }
  1352.     /**
  1353.      * @return bool
  1354.      */
  1355.     public function isOrderCsv(): bool
  1356.     {
  1357.         return $this->orderCsv;
  1358.     }
  1359.     /**
  1360.      * @param bool $orderCsv
  1361.      *
  1362.      * @return Customer
  1363.      */
  1364.     public function setOrderCsv(bool $orderCsv): Customer
  1365.     {
  1366.         $this->orderCsv $orderCsv;
  1367.         return $this;
  1368.     }
  1369.     /**
  1370.      * @return \DateTime|null
  1371.      */
  1372.     public function getDateBasicFree(): ?\DateTime
  1373.     {
  1374.         return $this->dateBasicFree;
  1375.     }
  1376.     /**
  1377.      * @param \DateTime|null $dateBasicFree
  1378.      *
  1379.      * @return Customer
  1380.      */
  1381.     public function setDateBasicFree(?\DateTime $dateBasicFree): Customer
  1382.     {
  1383.         $this->dateBasicFree $dateBasicFree;
  1384.         return $this;
  1385.     }
  1386.     /**
  1387.      * @return bool|null
  1388.      */
  1389.     public function getExcluirVies(): ?bool
  1390.     {
  1391.         return $this->excluirVies;
  1392.     }
  1393.     /**
  1394.      * @param bool|null $excluirVies
  1395.      *
  1396.      * @return Customer
  1397.      */
  1398.     public function setExcluirVies(?bool $excluirVies): Customer
  1399.     {
  1400.         $this->excluirVies $excluirVies;
  1401.         return $this;
  1402.     }
  1403.     /**
  1404.      * @return bool|null
  1405.      */
  1406.     public function getBlocked(): ?bool
  1407.     {
  1408.         return $this->blocked;
  1409.     }
  1410.     /**
  1411.      * @param bool|null $blocked
  1412.      *
  1413.      * @return Customer
  1414.      */
  1415.     public function setBlocked(?bool $blocked): Customer
  1416.     {
  1417.         $this->blocked $blocked;
  1418.         return $this;
  1419.     }
  1420.     /**
  1421.      * @return \DateTime|null
  1422.      */
  1423.     public function getDateExcluirIva(): ?\DateTime
  1424.     {
  1425.         return $this->dateExcluirIva;
  1426.     }
  1427.     /**
  1428.      * @param \DateTime|null $dateExcluirIva
  1429.      *
  1430.      * @return Customer
  1431.      */
  1432.     public function setDateExcluirIva(?\DateTime $dateExcluirIva): Customer
  1433.     {
  1434.         $this->dateExcluirIva $dateExcluirIva;
  1435.         return $this;
  1436.     }
  1437.     /**
  1438.      * @return float|null
  1439.      */
  1440.     public function getDtoPersonal1(): ?float
  1441.     {
  1442.         return $this->dtoPersonal1;
  1443.     }
  1444.     /**
  1445.      * @param float|null $dtoPersonal1
  1446.      *
  1447.      * @return Customer
  1448.      */
  1449.     public function setDtoPersonal1(?float $dtoPersonal1): Customer
  1450.     {
  1451.         $this->dtoPersonal1 $dtoPersonal1;
  1452.         return $this;
  1453.     }
  1454.     /**
  1455.      * @return float|null
  1456.      */
  1457.     public function getDtoPersonal2(): ?float
  1458.     {
  1459.         return $this->dtoPersonal2;
  1460.     }
  1461.     /**
  1462.      * @param float|null $dtoPersonal2
  1463.      *
  1464.      * @return Customer
  1465.      */
  1466.     public function setDtoPersonal2(?float $dtoPersonal2): Customer
  1467.     {
  1468.         $this->dtoPersonal2 $dtoPersonal2;
  1469.         return $this;
  1470.     }
  1471.     /**
  1472.      * @return float|null
  1473.      */
  1474.     public function getDtoPersonal3(): ?float
  1475.     {
  1476.         return $this->dtoPersonal3;
  1477.     }
  1478.     /**
  1479.      * @param float|null $dtoPersonal3
  1480.      *
  1481.      * @return Customer
  1482.      */
  1483.     public function setDtoPersonal3(?float $dtoPersonal3): Customer
  1484.     {
  1485.         $this->dtoPersonal3 $dtoPersonal3;
  1486.         return $this;
  1487.     }
  1488.     /**
  1489.      * @return float|null
  1490.      */
  1491.     public function getImportePersonal1(): ?float
  1492.     {
  1493.         return $this->importePersonal1;
  1494.     }
  1495.     /**
  1496.      * @param float|null $importePersonal1
  1497.      *
  1498.      * @return Customer
  1499.      */
  1500.     public function setImportePersonal1(?float $importePersonal1): Customer
  1501.     {
  1502.         $this->importePersonal1 $importePersonal1;
  1503.         return $this;
  1504.     }
  1505.     /**
  1506.      * @return float|null
  1507.      */
  1508.     public function getImportePersonal2(): ?float
  1509.     {
  1510.         return $this->importePersonal2;
  1511.     }
  1512.     /**
  1513.      * @param float|null $importePersonal2
  1514.      *
  1515.      * @return Customer
  1516.      */
  1517.     public function setImportePersonal2(?float $importePersonal2): Customer
  1518.     {
  1519.         $this->importePersonal2 $importePersonal2;
  1520.         return $this;
  1521.     }
  1522.     /**
  1523.      * @return float|null
  1524.      */
  1525.     public function getImportePersonal3(): ?float
  1526.     {
  1527.         return $this->importePersonal3;
  1528.     }
  1529.     /**
  1530.      * @param float|null $importePersonal3
  1531.      *
  1532.      * @return Customer
  1533.      */
  1534.     public function setImportePersonal3(?float $importePersonal3): Customer
  1535.     {
  1536.         $this->importePersonal3 $importePersonal3;
  1537.         return $this;
  1538.     }
  1539.     /**
  1540.      * @return int|null
  1541.      */
  1542.     public function getCreditType(): ?int
  1543.     {
  1544.         return $this->creditType;
  1545.     }
  1546.     /**
  1547.      * @param int|null $creditType
  1548.      *
  1549.      * @return Customer
  1550.      */
  1551.     public function setCreditType(?int $creditType): Customer
  1552.     {
  1553.         $this->creditType $creditType;
  1554.         return $this;
  1555.     }
  1556.     /**
  1557.      * @return int|null
  1558.      */
  1559.     public function getMultichannelUserId(): ?int
  1560.     {
  1561.         return $this->multichannelUserId;
  1562.     }
  1563.     /**
  1564.      * @param int|null $multichannelUserId
  1565.      *
  1566.      * @return Customer
  1567.      */
  1568.     public function setMultichannelUserId(?int $multichannelUserId): Customer
  1569.     {
  1570.         $this->multichannelUserId $multichannelUserId;
  1571.         return $this;
  1572.     }
  1573.     /**
  1574.      * @return int|null
  1575.      */
  1576.     public function getTop(): ?int
  1577.     {
  1578.         return $this->top;
  1579.     }
  1580.     /**
  1581.      * @param int|null $top
  1582.      *
  1583.      * @return Customer
  1584.      */
  1585.     public function setTop(?int $top): Customer
  1586.     {
  1587.         $this->top $top;
  1588.         return $this;
  1589.     }
  1590.     /**
  1591.      * @return string|null
  1592.      */
  1593.     public function getKam(): ?string
  1594.     {
  1595.         return $this->kam;
  1596.     }
  1597.     /**
  1598.      * @param string|null $kam
  1599.      *
  1600.      * @return Customer
  1601.      */
  1602.     public function setKam(?string $kam): Customer
  1603.     {
  1604.         $this->kam $kam;
  1605.         return $this;
  1606.     }
  1607.     /**
  1608.      * @return \DateTime|null
  1609.      */
  1610.     public function getReadPolicyCookies(): ?\DateTime
  1611.     {
  1612.         return $this->readPolicyCookies;
  1613.     }
  1614.     /**
  1615.      * @param \DateTime|null $readPolicyCookies
  1616.      *
  1617.      * @return Customer
  1618.      */
  1619.     public function setReadPolicyCookies(?\DateTime $readPolicyCookies): Customer
  1620.     {
  1621.         $this->readPolicyCookies $readPolicyCookies;
  1622.         return $this;
  1623.     }
  1624.     /**
  1625.      * @return string|null
  1626.      */
  1627.     public function getSector(): ?string
  1628.     {
  1629.         return $this->sector;
  1630.     }
  1631.     /**
  1632.      * @param string|null $sector
  1633.      *
  1634.      * @return Customer
  1635.      */
  1636.     public function setSector(?string $sector): Customer
  1637.     {
  1638.         $this->sector $sector;
  1639.         return $this;
  1640.     }
  1641.     /**
  1642.      * @return string|null
  1643.      */
  1644.     public function getCatchment(): ?string
  1645.     {
  1646.         return $this->catchment;
  1647.     }
  1648.     /**
  1649.      * @param string|null $catchment
  1650.      *
  1651.      * @return Customer
  1652.      */
  1653.     public function setCatchment(?string $catchment): Customer
  1654.     {
  1655.         $this->catchment $catchment;
  1656.         return $this;
  1657.     }
  1658.     /**
  1659.      * @return string|null
  1660.      */
  1661.     public function getType(): ?string
  1662.     {
  1663.         return $this->type;
  1664.     }
  1665.     /**
  1666.      * @param string|null $type
  1667.      *
  1668.      * @return Customer
  1669.      */
  1670.     public function setType(?string $type): Customer
  1671.     {
  1672.         $this->type $type;
  1673.         return $this;
  1674.     }
  1675.     /**
  1676.      * @return int|null
  1677.      */
  1678.     public function getPackByPurse(): ?int
  1679.     {
  1680.         return $this->packByPurse;
  1681.     }
  1682.     /**
  1683.      * @param int|null $packByPurse
  1684.      *
  1685.      * @return Customer
  1686.      */
  1687.     public function setPackByPurse(?int $packByPurse): Customer
  1688.     {
  1689.         $this->packByPurse $packByPurse;
  1690.         return $this;
  1691.     }
  1692.     /**
  1693.      * @return int
  1694.      */
  1695.     public function getPartialCreation(): int
  1696.     {
  1697.         return $this->partialCreation;
  1698.     }
  1699.     /**
  1700.      * @param int $partialCreation
  1701.      *
  1702.      * @return Customer
  1703.      */
  1704.     public function setPartialCreation(int $partialCreation): Customer
  1705.     {
  1706.         $this->partialCreation $partialCreation;
  1707.         return $this;
  1708.     }
  1709.     /**
  1710.      * @return Collection|Order[]
  1711.      */
  1712.     public function getOrders(): Collection
  1713.     {
  1714.         return $this->orders;
  1715.     }
  1716.     public function addOrder(Order $order): self
  1717.     {
  1718.         if (!$this->orders->contains($order)) {
  1719.             $this->orders[] = $order;
  1720.             $order->setCustomer($this);
  1721.         }
  1722.         return $this;
  1723.     }
  1724.     public function removeOrder(Order $order): self
  1725.     {
  1726.         if ($this->orders->contains($order)) {
  1727.             $this->orders->removeElement($order);
  1728.             // set the owning side to null (unless already changed)
  1729.             if ($order->getCustomer() === $this) {
  1730.                 $order->setCustomer(null);
  1731.             }
  1732.         }
  1733.         return $this;
  1734.     }
  1735.     /**
  1736.      * @return Collection|Address[]
  1737.      */
  1738.     public function getAddresses(): Collection
  1739.     {
  1740.         return $this->addresses;
  1741.     }
  1742.     public function addAddress(Address $address): self
  1743.     {
  1744.         if (!$this->addresses->contains($address)) {
  1745.             $this->addresses[] = $address;
  1746.             $address->setCustomer($this);
  1747.         }
  1748.         return $this;
  1749.     }
  1750.     public function removeAddress(Address $address): self
  1751.     {
  1752.         if ($this->addresses->contains($address)) {
  1753.             $this->addresses->removeElement($address);
  1754.             // set the owning side to null (unless already changed)
  1755.             if ($address->getCustomer() === $this) {
  1756.                 $address->setCustomer(null);
  1757.             }
  1758.         }
  1759.         return $this;
  1760.     }
  1761.     /**
  1762.      * @return bool|null
  1763.      */
  1764.     public function getPurchaseNotAllowed(): ?bool
  1765.     {
  1766.         return $this->purchaseNotAllowed;
  1767.     }
  1768.     /**
  1769.      * @param bool|null $purchaseNotAllowed
  1770.      *
  1771.      * @return Customer
  1772.      */
  1773.     public function setPurchaseNotAllowed(?bool $purchaseNotAllowed): self
  1774.     {
  1775.         $this->purchaseNotAllowed $purchaseNotAllowed;
  1776.         return $this;
  1777.     }
  1778.     /**
  1779.      * @return \DateTime|null
  1780.      */
  1781.     public function getDateEnding(): ?\DateTime
  1782.     {
  1783.         return $this->dateEnding;
  1784.     }
  1785.     /**
  1786.      * @param \DateTime|null $dateEnding
  1787.      *
  1788.      * @return Customer
  1789.      */
  1790.     public function setDateEnding(?\DateTime $dateEnding): self
  1791.     {
  1792.         $this->dateEnding $dateEnding;
  1793.         return $this;
  1794.     }
  1795.     /**
  1796.      * @return string|null
  1797.      */
  1798.     public function getUserIdPaycomet(): ?string
  1799.     {
  1800.         return $this->userIdPaycomet;
  1801.     }
  1802.     /**
  1803.      * @param string|null $userIdPaycomet
  1804.      *
  1805.      * @return Customer
  1806.      */
  1807.     public function setUserIdPaycomet(?string $userIdPaycomet): self
  1808.     {
  1809.         $this->userIdPaycomet $userIdPaycomet;
  1810.         return $this;
  1811.     }
  1812.     /**
  1813.      * @return string|null
  1814.      */
  1815.     public function getUserTokenPaycomet(): ?string
  1816.     {
  1817.         return $this->userTokenPaycomet;
  1818.     }
  1819.     /**
  1820.      * @param string|null $userTokenPaycomet
  1821.      *
  1822.      * @return Customer
  1823.      */
  1824.     public function setUserTokenPaycomet(?string $userTokenPaycomet): self
  1825.     {
  1826.         $this->userTokenPaycomet $userTokenPaycomet;
  1827.         return $this;
  1828.     }
  1829.     /**
  1830.      * @return FuturePack[]|ArrayCollection
  1831.      */
  1832.     public function getFuturePacks()
  1833.     {
  1834.         return $this->futurePacks;
  1835.     }
  1836.     /**
  1837.      * @param FuturePack[]|ArrayCollection $futurePacks
  1838.      *
  1839.      * @return Customer
  1840.      */
  1841.     public function setFuturePacks($futurePacks)
  1842.     {
  1843.         $this->futurePacks $futurePacks;
  1844.         return $this;
  1845.     }
  1846.     /**
  1847.      * @return SubscriptionLine[]|ArrayCollection
  1848.      */
  1849.     public function getSubscriptionLines()
  1850.     {
  1851.         return $this->subscriptionLines;
  1852.     }
  1853.     /**
  1854.      * @param SubscriptionLine[]|ArrayCollection $subscriptionLines
  1855.      *
  1856.      * @return Customer
  1857.      */
  1858.     public function setSubscriptionLines($subscriptionLines)
  1859.     {
  1860.         $this->subscriptionLines $subscriptionLines;
  1861.         return $this;
  1862.     }
  1863.     /**
  1864.      * @return ServiceCustomer[]|PersistentCollection
  1865.      */
  1866.     public function getServiceCustomer(): PersistentCollection
  1867.     {
  1868.         return $this->serviceCustomer;
  1869.     }
  1870.     /**
  1871.      * @param array $serviceCustomer
  1872.      */
  1873.     public function setServiceCustomer(array $serviceCustomer): Customer
  1874.     {
  1875.         $this->serviceCustomer $serviceCustomer;
  1876.         return $this;
  1877.     }
  1878.     /**
  1879.      * @return array
  1880.      */
  1881.     public function getCustomerApi(): array
  1882.     {
  1883.         return $this->customerApi;
  1884.     }
  1885.     /**
  1886.      * @param array $customerApi
  1887.      *
  1888.      * @return Customer
  1889.      */
  1890.     public function setCustomerApi(array $customerApi): Customer
  1891.     {
  1892.         $this->customerApi $customerApi;
  1893.         return $this;
  1894.     }
  1895.     /**
  1896.      * @return array
  1897.      */
  1898.     public function getCustomerLog(): array
  1899.     {
  1900.         return $this->customerLog;
  1901.     }
  1902.     /**
  1903.      * @param array $customerLog
  1904.      *
  1905.      * @return Customer
  1906.      */
  1907.     public function setCustomerLog(array $customerLog): Customer
  1908.     {
  1909.         $this->customerLog $customerLog;
  1910.         return $this;
  1911.     }
  1912.     /**
  1913.      * @return array
  1914.      */
  1915.     public function getFtp(): array
  1916.     {
  1917.         return $this->ftp;
  1918.     }
  1919.     /**
  1920.      * @param array $ftp
  1921.      *
  1922.      * @return Customer
  1923.      */
  1924.     public function setFtp(array $ftp): Customer
  1925.     {
  1926.         $this->ftp $ftp;
  1927.         return $this;
  1928.     }
  1929.     /**
  1930.      * @return array
  1931.      */
  1932.     public function getSyncronisedShopConfiguration(): array
  1933.     {
  1934.         return $this->syncronisedShopConfiguration;
  1935.     }
  1936.     /**
  1937.      * @param array $syncronisedShopConfiguration
  1938.      *
  1939.      * @return Customer
  1940.      */
  1941.     public function setSyncronisedShopConfiguration(array $syncronisedShopConfiguration): Customer
  1942.     {
  1943.         $this->syncronisedShopConfiguration $syncronisedShopConfiguration;
  1944.         return $this;
  1945.     }
  1946.     /**
  1947.      * @return array
  1948.      */
  1949.     public function getCustomerMigration(): array
  1950.     {
  1951.         return $this->customerMigration;
  1952.     }
  1953.     /**
  1954.      * @param array $customerMigration
  1955.      *
  1956.      * @return Customer
  1957.      */
  1958.     public function setCustomerMigration(array $customerMigration): Customer
  1959.     {
  1960.         $this->customerMigration $customerMigration;
  1961.         return $this;
  1962.     }
  1963.     /**
  1964.      * @return int|null
  1965.      */
  1966.     public function getPaycometMit(): ?int
  1967.     {
  1968.         return $this->paycometMit;
  1969.     }
  1970.     /**
  1971.      * @param int|null $paycometMit
  1972.      *
  1973.      * @return Customer
  1974.      */
  1975.     public function setPaycometMit(?int $paycometMit): Customer
  1976.     {
  1977.         $this->paycometMit $paycometMit;
  1978.         return $this;
  1979.     }
  1980.     /**
  1981.      * @return array
  1982.      */
  1983.     public function getRoles(): array
  1984.     {
  1985.         $roleCollection $this->roles;
  1986.         $roles = [];
  1987.         if ($roleCollection) {
  1988.             foreach ($roleCollection as $role) {
  1989.                 $roleName $role->getName();
  1990.                 if (!in_array($roleName$rolestrue)) {
  1991.                     $roles[$role->getId()] = $role->getName();
  1992.                 }
  1993.             }
  1994.         }
  1995.         return $roles;
  1996.     }
  1997.     public function hasRole(string $queryRole): bool
  1998.     {
  1999.         $roleCollection $this->roles;
  2000.         $roles = [];
  2001.         if ($roleCollection) {
  2002.             foreach ($roleCollection as $role) {
  2003.                 $roleName $role->getName();
  2004.                 if (!in_array($roleName$rolestrue)) {
  2005.                     $roles[] = $role->getName();
  2006.                 }
  2007.             }
  2008.         }
  2009.         return in_array(strtoupper($queryRole), $rolestrue);
  2010.     }
  2011.     /**
  2012.      * @return Role[]|ArrayCollection
  2013.      */
  2014.     public function getRoleCollection()
  2015.     {
  2016.         return $this->roles;
  2017.     }
  2018.     /**
  2019.      * @param Role[]|ArrayCollection $roles
  2020.      */
  2021.     public function setRoleCollection($roles): Customer
  2022.     {
  2023.         $this->roles $roles;
  2024.         return $this;
  2025.     }
  2026.     /**
  2027.      * @return bool
  2028.      */
  2029.     public function hasMultifactorAuthEnabled(): bool
  2030.     {
  2031.         return $this->multifactorAuthEnabled;
  2032.     }
  2033.     /**
  2034.      * Resets paypal-related fields
  2035.      */
  2036.     public function resetBillingAgreement(): void
  2037.     {
  2038.         $this->setPaypalBillingAgreement(self::ID_CUSTOMER_NOT_BILLING_AGREEMENT);
  2039.         $this->setEmailPaypal('');
  2040.         $this->setPayerIdPaypal('');
  2041.     }
  2042.     /**
  2043.      * @param Customer $oldCustomer
  2044.      */
  2045.     public function setPackValuesFromOldCustomer(Customer $oldCustomer): void
  2046.     {
  2047.         $this->group $oldCustomer->getGroup();
  2048.         $this->idPack $oldCustomer->getIdPack();
  2049.         $this->dateCsv $oldCustomer->getDateCsv();
  2050.         $this->datePack $oldCustomer->getDatePack();
  2051.         $this->payerIdPaypal $oldCustomer->getPayerIdPaypal();
  2052.         $this->emailPaypal $oldCustomer->getEmailPaypal();
  2053.         $this->reserve $oldCustomer->isReserve();
  2054.         $this->orderCsv $oldCustomer->isOrderCsv();
  2055.         $this->multichannelUserId $oldCustomer->getMultichannelUserId();
  2056.     }
  2057.     /**
  2058.      * @param Group $groupReference
  2059.      */
  2060.     public function setValuesAfterMigration(Group $groupReference): void
  2061.     {
  2062.         $this->group $groupReference;
  2063.         $this->idPack 0;
  2064.         $this->dateCsv null;
  2065.         $this->datePack null;
  2066.         $this->idService 0;
  2067.         $this->multichannelUserId 0;
  2068.     }
  2069.     public function resetPackAndGroup(Group $group): void
  2070.     {
  2071.         $this->group $group;
  2072.         $this->idPack Pack::PACK_WITHOUT_PACK;
  2073.         $this->dateCsv null;
  2074.     }
  2075.     /**
  2076.      * @return ArrayCollection|CustomerCatalog[]
  2077.      */
  2078.     public function getCustomerCatalogs()
  2079.     {
  2080.         return $this->customerCatalogs;
  2081.     }
  2082.     /**
  2083.      * @param ArrayCollection $customerCatalogs
  2084.      *
  2085.      * @return Customer
  2086.      */
  2087.     public function setCustomerCatalogs($customerCatalogs): self
  2088.     {
  2089.         $this->customerCatalogs $customerCatalogs;
  2090.         return $this;
  2091.     }
  2092.     public function getFullName(): string
  2093.     {
  2094.         return $this->name.' '.$this->surnames;
  2095.     }
  2096.     public function setMultifactorAuthEnabled(bool $multifactorAuthEnabled): void
  2097.     {
  2098.         $this->multifactorAuthEnabled $multifactorAuthEnabled;
  2099.     }
  2100.     public function removeAllAnswers()
  2101.     {
  2102.         $this->additionalInfoAnswers->clear();
  2103.     }
  2104.     public function addAnswers(array $answers): void
  2105.     {
  2106.         /** @var AdditionalInfoAnswer $answer */
  2107.         foreach ($answers as $answer) {
  2108.             if ($answer && !$this->additionalInfoAnswers->contains($answer)) {
  2109.                 $this->additionalInfoAnswers->add($answer);
  2110.             }
  2111.         }
  2112.     }
  2113.     public function getDefaultAddress()
  2114.     {
  2115.         foreach ($this->getAddresses() as $address) {
  2116.             if ($address->isDefaultInvoiceAddress()) {
  2117.                 return $address;
  2118.             }
  2119.         }
  2120.         foreach ($this->getAddresses() as $address) {
  2121.             if ($address->isInvoiceAddress()) {
  2122.                 return $address;
  2123.             }
  2124.         }
  2125.         return current($this->getAddresses());
  2126.     }
  2127.     public function getAdyenPaymentId(): ?string
  2128.     {
  2129.         return $this->adyenPaymentId;
  2130.     }
  2131.     public function setAdyenPaymentId(?string $adyenPaymentId): self
  2132.     {
  2133.         $this->adyenPaymentId $adyenPaymentId;
  2134.         return $this;
  2135.     }
  2136.     /**
  2137.      * @return Wishlist[]|ArrayCollection
  2138.      */
  2139.     public function getWishlists()
  2140.     {
  2141.         return $this->wishlists;
  2142.     }
  2143.     public function getThePowerMbaUserId(): ?string
  2144.     {
  2145.         return $this->thePowerMbaUserId;
  2146.     }
  2147.     public function setThePowerMbaUserId(?string $thePowerMbaUserId): self
  2148.     {
  2149.         $this->thePowerMbaUserId $thePowerMbaUserId;
  2150.         return $this;
  2151.     }
  2152.     public function getGoogleAccountId(): ?string
  2153.     {
  2154.         return $this->googleAccountId;
  2155.     }
  2156.     public function setGoogleAccountId(?string $googleAccountId): Customer
  2157.     {
  2158.         $this->googleAccountId $googleAccountId;
  2159.         return $this;
  2160.     }
  2161.     public function getLinkedinAccountId(): ?string
  2162.     {
  2163.         return $this->linkedinAccountId;
  2164.     }
  2165.     public function setLinkedinAccountId(?string $linkedinAccountId): Customer
  2166.     {
  2167.         $this->linkedinAccountId $linkedinAccountId;
  2168.         return $this;
  2169.     }
  2170.     public function getPackBankwirePayment(): ?bool
  2171.     {
  2172.         return $this->packBankwirePayment;
  2173.     }
  2174.     public function setPackBankwirePayment(bool $packBankwirePayment): Customer
  2175.     {
  2176.         $this->packBankwirePayment $packBankwirePayment;
  2177.         return $this;
  2178.     }
  2179.     public function getControlpanelMipEnabled(): ?int
  2180.     {
  2181.         return $this->controlpanelMipEnabled;
  2182.     }
  2183.     public function setControlpanelMipEnabled(?int $controlpanelMipEnabled): void
  2184.     {
  2185.         $this->controlpanelMipEnabled $controlpanelMipEnabled;
  2186.     }
  2187.     public function getForcePasswordUpdate(): ?int
  2188.     {
  2189.         return $this->forcePasswordUpdate;
  2190.     }
  2191.     public function setForcePasswordUpdate(?int $forcePasswordUpdate): void
  2192.     {
  2193.         $this->forcePasswordUpdate $forcePasswordUpdate;
  2194.     }
  2195. }