src/Entity/CotationMultisite.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. /**
  6. * CotationMultisite
  7. *
  8. * @ORM\Table(name="cotation_multisite")
  9. * @ORM\Entity(repositoryClass="App\Repository\CotationMultisiteRepository")
  10. */
  11. class CotationMultisite
  12. {
  13. /**
  14. * @var int
  15. *
  16. * @ORM\Column(name="id", type="integer", nullable=false)
  17. * @ORM\Id
  18. * @ORM\GeneratedValue(strategy="IDENTITY")
  19. */
  20. private $id;
  21. /**
  22. * @var string|null
  23. *
  24. * @ORM\Column(name="name", type="string", length=255, nullable=true)
  25. */
  26. private $name;
  27. /**
  28. * @var bool|null
  29. *
  30. * @ORM\Column(name="electricity", type="boolean", nullable=true)
  31. */
  32. private $electricity = false;
  33. /**
  34. * @var bool|null
  35. *
  36. * @ORM\Column(name="gas", type="boolean", nullable=true)
  37. */
  38. private $gas = false;
  39. /**
  40. * @var string|null
  41. *
  42. * @ORM\Column(name="siret", type="string", length=255, nullable=true)
  43. */
  44. private $siret;
  45. /**
  46. * @var string|null
  47. *
  48. * @ORM\Column(name="company_name", type="string", length=255, nullable=true)
  49. */
  50. private $companyName;
  51. /**
  52. * @var string|null
  53. *
  54. * @ORM\Column(name="ape_code", type="string", length=255, nullable=true)
  55. */
  56. private $apeCode;
  57. /**
  58. * @var string|null
  59. *
  60. * @ORM\Column(name="sector", type="string", length=255, nullable=true)
  61. */
  62. private $sector;
  63. /**
  64. * @var string|null
  65. *
  66. * @ORM\Column(name="first_name", type="string", length=255, nullable=true)
  67. */
  68. private $firstName;
  69. /**
  70. * @var string|null
  71. *
  72. * @ORM\Column(name="last_name", type="string", length=255, nullable=true)
  73. */
  74. private $lastName;
  75. /**
  76. * @var string|null
  77. *
  78. * @ORM\Column(name="position", type="string", length=255, nullable=true)
  79. */
  80. private $position;
  81. /**
  82. * @var string|null
  83. *
  84. * @ORM\Column(name="phone", type="string", length=255, nullable=true)
  85. */
  86. private $phone;
  87. /**
  88. * @var string|null
  89. *
  90. * @ORM\Column(name="email", type="string", length=255, nullable=true)
  91. */
  92. private $email;
  93. /**
  94. * @var int|null
  95. *
  96. * @ORM\Column(name="elipro_note", type="integer", nullable=true)
  97. */
  98. private $eliproNote = 0;
  99. /**
  100. * @var \DateTime|null
  101. *
  102. * @ORM\Column(name="creation_date", type="datetime", nullable=true)
  103. */
  104. private $creationDate;
  105. /**
  106. * @var \DateTime|null
  107. *
  108. * @ORM\Column(name="edit_date", type="datetime", nullable=true)
  109. */
  110. private $editDate;
  111. /**
  112. * @var \DateTime|null
  113. *
  114. * @ORM\Column(name="appointment_date", type="datetime", nullable=true)
  115. */
  116. private $appointmentDate;
  117. /**
  118. * @var string|null
  119. *
  120. * @ORM\Column(name="tenue_offre", type="string", length=255, nullable=true)
  121. */
  122. private $tenueOffre;
  123. /**
  124. * @var string|null
  125. *
  126. * @ORM\Column(name="tarif_type", type="string", length=255, nullable=true)
  127. */
  128. private $tarifType;
  129. /**
  130. * @var string|null
  131. *
  132. * @ORM\Column(name="desired_margin", type="string", length=255, nullable=true)
  133. */
  134. private $desiredMargin;
  135. /**
  136. * @var string|null
  137. *
  138. * @ORM\Column(name="liasse_fiscale", type="string", length=255, nullable=true)
  139. */
  140. private $liasseFiscale;
  141. /**
  142. * @var string|null
  143. *
  144. * @ORM\Column(name="sge_elec", type="string", length=255, nullable=true)
  145. */
  146. private $sgeElec;
  147. /**
  148. * @var string|null
  149. *
  150. * @ORM\Column(name="omega_gas", type="string", length=255, nullable=true)
  151. */
  152. private $omegaGas;
  153. /**
  154. * @var string|null
  155. *
  156. * @ORM\Column(name="old_invoice", type="string", length=255, nullable=true)
  157. */
  158. private $oldInvoice;
  159. /**
  160. * @var string|null
  161. *
  162. * @ORM\Column(name="acd_file", type="string", length=255, nullable=true)
  163. */
  164. private $acdFile;
  165. /**
  166. * @var \DateTime|null
  167. *
  168. * @ORM\Column(name="acd_sign_date", type="datetime", length=255, nullable=true)
  169. */
  170. private $acdSignDate;
  171. /**
  172. * @var \DateTime|null
  173. *
  174. * @ORM\Column(name="pricing_sent_date", type="datetime", nullable=true)
  175. */
  176. private $pricingSentDate;
  177. /**
  178. * @var Company
  179. *
  180. * @ORM\ManyToOne(targetEntity="Company")
  181. * @ORM\JoinColumns({
  182. * @ORM\JoinColumn(name="company_id", referencedColumnName="id")
  183. * })
  184. */
  185. private $company;
  186. /**
  187. * @var User
  188. *
  189. * @ORM\ManyToOne(targetEntity="User")
  190. * @ORM\JoinColumns({
  191. * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
  192. * })
  193. */
  194. private $user;
  195. /**
  196. * @var Manager
  197. *
  198. * @ORM\ManyToOne(targetEntity="Manager")
  199. * @ORM\JoinColumns({
  200. * @ORM\JoinColumn(name="manager_id", referencedColumnName="id")
  201. * })
  202. */
  203. private $manager;
  204. /**
  205. * @var CotationState
  206. *
  207. * @ORM\ManyToOne(targetEntity="CotationState")
  208. * @ORM\JoinColumns({
  209. * @ORM\JoinColumn(name="state_id", referencedColumnName="id")
  210. * })
  211. */
  212. private $state;
  213. /**
  214. * @var int|null
  215. *
  216. * @ORM\Column(name="etude_solution_elec", type="integer", nullable=false)
  217. */
  218. private $etudeSolutionElec;
  219. /**
  220. * @var int|null
  221. *
  222. * @ORM\Column(name="etude_solution_gaz", type="integer", nullable=false)
  223. */
  224. private $etudeSolutionGaz;
  225. /**
  226. * @var string|null
  227. *
  228. * @ORM\Column(name="etude_commentaire_elec", type="string", nullable=true)
  229. */
  230. private $etudeCommentaireElec;
  231. /**
  232. * @var string|null
  233. *
  234. * @ORM\Column(name="etude_commentaire_gaz", type="string", nullable=true)
  235. */
  236. private $etudeCommentaireGaz;
  237. /**
  238. * @ORM\OneToMany(targetEntity="Cotation", mappedBy="cotationMultisite", cascade={"persist", "remove"}, orphanRemoval=true)
  239. */
  240. private $cotations;
  241. public function __construct()
  242. {
  243. $this->cotations = new ArrayCollection();
  244. }
  245. public function getId(): ?int
  246. {
  247. return $this->id;
  248. }
  249. public function setId(?int $id): void
  250. {
  251. $this->id = $id;
  252. }
  253. public function getName(): ?string
  254. {
  255. return $this->name;
  256. }
  257. public function setName(?string $name): void
  258. {
  259. $this->name = $name;
  260. }
  261. public function getElectricity(): ?bool
  262. {
  263. return $this->electricity;
  264. }
  265. public function setElectricity(?bool $electricity): void
  266. {
  267. $this->electricity = $electricity;
  268. }
  269. public function getGas(): ?bool
  270. {
  271. return $this->gas;
  272. }
  273. public function setGas(?bool $gas): void
  274. {
  275. $this->gas = $gas;
  276. }
  277. public function getSiret(): ?string
  278. {
  279. return $this->siret;
  280. }
  281. public function setSiret(?string $siret): void
  282. {
  283. $this->siret = $siret;
  284. }
  285. public function getCompanyName(): ?string
  286. {
  287. return $this->companyName;
  288. }
  289. public function setCompanyName(?string $companyName): void
  290. {
  291. $this->companyName = $companyName;
  292. }
  293. public function getApeCode(): ?string
  294. {
  295. return $this->apeCode;
  296. }
  297. public function setApeCode(?string $apeCode): void
  298. {
  299. $this->apeCode = $apeCode;
  300. }
  301. public function getSector(): ?string
  302. {
  303. return $this->sector;
  304. }
  305. public function setSector(?string $sector): void
  306. {
  307. $this->sector = $sector;
  308. }
  309. public function getFirstName(): ?string
  310. {
  311. return $this->firstName;
  312. }
  313. public function setFirstName(?string $firstName): void
  314. {
  315. $this->firstName = $firstName;
  316. }
  317. public function getLastName(): ?string
  318. {
  319. return $this->lastName;
  320. }
  321. public function setLastName(?string $lastName): void
  322. {
  323. $this->lastName = $lastName;
  324. }
  325. public function getPosition(): ?string
  326. {
  327. return $this->position;
  328. }
  329. public function setPosition(?string $position): void
  330. {
  331. $this->position = $position;
  332. }
  333. public function getPhone(): ?string
  334. {
  335. return $this->phone;
  336. }
  337. public function setPhone(?string $phone): void
  338. {
  339. $this->phone = $phone;
  340. }
  341. public function getEmail(): ?string
  342. {
  343. return $this->email;
  344. }
  345. public function setEmail(?string $email): void
  346. {
  347. $this->email = $email;
  348. }
  349. public function getEliproNote(): ?int
  350. {
  351. return $this->eliproNote;
  352. }
  353. public function setEliproNote(?int $eliproNote): void
  354. {
  355. $this->eliproNote = $eliproNote;
  356. }
  357. public function getCreationDate(): ?\DateTime
  358. {
  359. return $this->creationDate;
  360. }
  361. public function setCreationDate(?\DateTime $creationDate): void
  362. {
  363. $this->creationDate = $creationDate;
  364. }
  365. public function getEditDate(): ?\DateTime
  366. {
  367. return $this->editDate;
  368. }
  369. public function setEditDate(?\DateTime $editDate): void
  370. {
  371. $this->editDate = $editDate;
  372. }
  373. public function getAppointmentDate(): ?\DateTime
  374. {
  375. return $this->appointmentDate;
  376. }
  377. public function setAppointmentDate(?\DateTime $appointmentDate): void
  378. {
  379. $this->appointmentDate = $appointmentDate;
  380. }
  381. public function getTenueOffre(): ?string
  382. {
  383. return $this->tenueOffre;
  384. }
  385. public function setTenueOffre(?string $tenueOffre): void
  386. {
  387. $this->tenueOffre = $tenueOffre;
  388. }
  389. public function getTarifType(): ?string
  390. {
  391. return $this->tarifType;
  392. }
  393. public function setTarifType(?string $tarifType): void
  394. {
  395. $this->tarifType = $tarifType;
  396. }
  397. public function getDesiredMargin(): ?string
  398. {
  399. return $this->desiredMargin;
  400. }
  401. public function setDesiredMargin(?string $desiredMargin): void
  402. {
  403. $this->desiredMargin = $desiredMargin;
  404. }
  405. public function getLiasseFiscale(): ?string
  406. {
  407. return $this->liasseFiscale;
  408. }
  409. public function setLiasseFiscale(?string $liasseFiscale): void
  410. {
  411. $this->liasseFiscale = $liasseFiscale;
  412. }
  413. public function getSgeElec(): ?string
  414. {
  415. return $this->sgeElec;
  416. }
  417. public function setSgeElec(?string $sgeElec): void
  418. {
  419. $this->sgeElec = $sgeElec;
  420. }
  421. public function getOmegaGas(): ?string
  422. {
  423. return $this->omegaGas;
  424. }
  425. public function setOmegaGas(?string $omegaGas): void
  426. {
  427. $this->omegaGas = $omegaGas;
  428. }
  429. public function getOldInvoice(): ?string
  430. {
  431. return $this->oldInvoice;
  432. }
  433. public function setOldInvoice(?string $oldInvoice): void
  434. {
  435. $this->oldInvoice = $oldInvoice;
  436. }
  437. public function getAcdFile(): ?string
  438. {
  439. return $this->acdFile;
  440. }
  441. public function setAcdFile(?string $acdFile): void
  442. {
  443. $this->acdFile = $acdFile;
  444. }
  445. public function getAcdSignDate(): ?\DateTime
  446. {
  447. return $this->acdSignDate;
  448. }
  449. public function setAcdSignDate(?\DateTime $acdSignDate): void
  450. {
  451. $this->acdSignDate = $acdSignDate;
  452. }
  453. public function getPricingSentDate(): ?\DateTime
  454. {
  455. return $this->pricingSentDate;
  456. }
  457. public function setPricingSentDate(?\DateTime $pricingSentDate): void
  458. {
  459. $this->pricingSentDate = $pricingSentDate;
  460. }
  461. public function getCompany(): Company
  462. {
  463. return $this->company;
  464. }
  465. public function setCompany(Company $company): void
  466. {
  467. $this->company = $company;
  468. }
  469. public function getUser(): User
  470. {
  471. return $this->user;
  472. }
  473. public function setUser(User $user): void
  474. {
  475. $this->user = $user;
  476. }
  477. public function getManager(): Manager
  478. {
  479. return $this->manager;
  480. }
  481. public function setManager(Manager $manager): void
  482. {
  483. $this->manager = $manager;
  484. }
  485. public function getState(): CotationState
  486. {
  487. return $this->state;
  488. }
  489. public function setState(CotationState $state): void
  490. {
  491. $this->state = $state;
  492. }
  493. public function getEtudeSolutionElec(): ?int
  494. {
  495. return $this->etudeSolutionElec;
  496. }
  497. public function setEtudeSolutionElec(?int $etudeSolutionElec): void
  498. {
  499. $this->etudeSolutionElec = $etudeSolutionElec;
  500. }
  501. public function getEtudeSolutionGaz(): ?int
  502. {
  503. return $this->etudeSolutionGaz;
  504. }
  505. public function setEtudeSolutionGaz(?int $etudeSolutionGaz): void
  506. {
  507. $this->etudeSolutionGaz = $etudeSolutionGaz;
  508. }
  509. public function getEtudeCommentaireElec(): ?string
  510. {
  511. return $this->etudeCommentaireElec;
  512. }
  513. public function setEtudeCommentaireElec(?string $etudeCommentaireElec): void
  514. {
  515. $this->etudeCommentaireElec = $etudeCommentaireElec;
  516. }
  517. public function getEtudeCommentaireGaz(): ?string
  518. {
  519. return $this->etudeCommentaireGaz;
  520. }
  521. public function setEtudeCommentaireGaz(?string $etudeCommentaireGaz): void
  522. {
  523. $this->etudeCommentaireGaz = $etudeCommentaireGaz;
  524. }
  525. public function getCotations()
  526. {
  527. return $this->cotations;
  528. }
  529. public function addCotation(Cotation $cotation)
  530. {
  531. if (!$this->cotations->contains($cotation)) {
  532. $this->cotations[] = $cotation;
  533. $cotation->setCotationMultisite($this);
  534. }
  535. }
  536. public function removeCotation(Cotation $cotation)
  537. {
  538. if ($this->cotations->removeElement($cotation)) {
  539. $cotation->setCotationMultisite(null);
  540. }
  541. }
  542. public function isAcdValid(): bool
  543. {
  544. if (!$this->getAcdFile()) {
  545. return false;
  546. }
  547. $signDate = $this->getAcdSignDate();
  548. if (!$signDate) {
  549. // On prends arbitrairement la date de création de la cotation + 6 mois
  550. $signDate = clone $this->getCreationDate();
  551. $signDate->modify("+6 months");
  552. $this->setAcdSignDate($signDate);
  553. }
  554. $expiredDate = clone $signDate;
  555. // 10 mois moins 1 jour
  556. $expiredDate->modify("+10 months");
  557. $expiredDate->modify("-1 day");
  558. return $expiredDate > new \DateTime('now');
  559. }
  560. }