src/AtechNet/CoreBundle/Entity/DocumentGroup.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\AtechNet\CoreBundle\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping\Column;
  5. use Doctrine\ORM\Mapping\Entity;
  6. use Doctrine\ORM\Mapping\JoinColumn;
  7. use Doctrine\ORM\Mapping\ManyToOne;
  8. use Doctrine\ORM\Mapping\OneToMany;
  9. use Doctrine\ORM\Mapping\OrderBy;
  10. use Doctrine\ORM\Mapping\Table as Table;
  11. /**
  12.  * DocumentGroup
  13.  *
  14.  * @Table(name="document_groups")
  15.  * @Entity
  16.  */
  17. class DocumentGroup extends AbstractSignedEntity
  18. {
  19.     public const int TYPE_INVOICE_PRE = 1;
  20.     public const int TYPE_INVOICE_IN = 2;
  21.     public const int TYPE_INVOICE_OUT = 3;
  22.     public const int TYPE_INVOICE_CREDIT_NOTE = 4;
  23.     public const int TYPE_BILL_OF_DELIVERY = 5;
  24.     public const int TYPE_PRICE_OFFER = 6;
  25.     public const TYPES = [
  26.         self::TYPE_INVOICE_PRE         => 'Pre invoice',
  27.         self::TYPE_INVOICE_IN          => 'In invoice',
  28.         self::TYPE_INVOICE_OUT         => 'Out invoice',
  29.         self::TYPE_INVOICE_CREDIT_NOTE => 'Credit note',
  30.         self::TYPE_BILL_OF_DELIVERY    => 'Bill of delivery',
  31.         self::TYPE_PRICE_OFFER         => 'Price offer',
  32.     ];
  33.     /**
  34.      * @var DocumentYear
  35.      *
  36.      * @ManyToOne(targetEntity="DocumentYear", inversedBy="groups")
  37.      * @JoinColumn(name="year_id", referencedColumnName="id", nullable=false)
  38.      */
  39.     private $year;
  40.     /**
  41.      * @var Domain
  42.      *
  43.      * @ManyToOne(targetEntity="Domain", inversedBy="documentGroups")
  44.      * @JoinColumn(name="domain_id", referencedColumnName="id", nullable=true)
  45.      */
  46.     private $domain;
  47.     /**
  48.      * @var string
  49.      *
  50.      * @Column(name="title", type="string", length=32)
  51.      */
  52.     private $title;
  53.     /**
  54.      * @var string
  55.      *
  56.      * @Column(name="prefix", type="string", length=8)
  57.      */
  58.     private $prefix;
  59.     /**
  60.      * @return array
  61.      */
  62.     public static function getTypeChoices()
  63.     {
  64.         return self::TYPES;
  65.     }
  66.     /**
  67.      * @var int
  68.      * @Column(name="type", type="integer")
  69.      */
  70.     private $type;
  71.     /**
  72.      * @var int
  73.      *
  74.      * @Column(name="next_id", type="integer")
  75.      */
  76.     private $nextId = 0;
  77.     /**
  78.      * @var int
  79.      *
  80.      * @Column(name="id_length", type="integer")
  81.      */
  82.     private $idLength;
  83.     /**
  84.      * @var int
  85.      *
  86.      * @Column(name="default_due_days", type="integer")
  87.      */
  88.     private $defaultDueDays;
  89.     /**
  90.      * @var string
  91.      *
  92.      * @Column(name="default_bank", type="string", length=50)
  93.      */
  94.     private $defaultBank;
  95.     /**
  96.      * @var string
  97.      *
  98.      * @Column(name="default_bank_account", type="string", length=32, nullable=true)
  99.      */
  100.     private $defaultBankAccount;
  101.     /**
  102.      * @var string
  103.      *
  104.      * @Column(name="default_iban", type="string", length=34)
  105.      */
  106.     private $defaultIban;
  107.     /**
  108.      * @var string
  109.      *
  110.      * @Column(name="default_swift", type="string", length=24)
  111.      */
  112.     private $defaultSwift;
  113.     /**
  114.      * @var string
  115.      *
  116.      * @Column(name="default_note", type="text")
  117.      */
  118.     private $defaultNote;
  119.     /**
  120.      * @var string
  121.      *
  122.      * @Column(name="footer", type="string", length=255)
  123.      */
  124.     private $footer;
  125.     /**
  126.      * @var string
  127.      *
  128.      * @Column(name="email", type="string", length=255)
  129.      */
  130.     private $email;
  131.     /**
  132.      * @var string
  133.      *
  134.      * @Column(name="email_name", type="string", length=255)
  135.      */
  136.     private $emailName;
  137.     /**
  138.      * @var string
  139.      *
  140.      * @Column(name="email_subject", type="string", length=255)
  141.      */
  142.     private $emailSubject;
  143.     /**
  144.      * @var string
  145.      *
  146.      * @Column(name="email_body", type="text")
  147.      */
  148.     private $emailBody;
  149.     /**
  150.      * @var string
  151.      *
  152.      * @Column(name="logo", type="string", length=255)
  153.      */
  154.     private $logo;
  155.     /**
  156.      * @var float
  157.      *
  158.      * @Column(name="vat", type="decimal", precision=10, scale=2)
  159.      */
  160.     private $vat;
  161.     /**
  162.      * @var string
  163.      *
  164.      * @Column(name="language", type="string", length=2)
  165.      */
  166.     private $language;
  167.     /**
  168.      * @var ArrayCollection
  169.      *
  170.      * @OneToMany(targetEntity="Document", mappedBy="group", orphanRemoval=true)
  171.      * @OrderBy({"created" = "DESC"})
  172.      **/
  173.     private $documents;
  174.     /**
  175.      * @var string
  176.      *
  177.      * @Column(name="country", type="string", length=2, nullable=true)
  178.      */
  179.     private string $country;
  180.     /**
  181.      * @return DocumentYear
  182.      */
  183.     public function getYear()
  184.     {
  185.         return $this->year;
  186.     }
  187.     /**
  188.      * @param DocumentYear $year
  189.      */
  190.     public function setYear($year)
  191.     {
  192.         $this->year = $year;
  193.     }
  194.     /**
  195.      * @return Domain
  196.      */
  197.     public function getDomain()
  198.     {
  199.         return $this->domain;
  200.     }
  201.     /**
  202.      * @param Domain $domain
  203.      */
  204.     public function setDomain($domain)
  205.     {
  206.         $this->domain = $domain;
  207.     }
  208.     /**
  209.      * @return string
  210.      */
  211.     public function getTitle()
  212.     {
  213.         return $this->title;
  214.     }
  215.     /**
  216.      * @param string $title
  217.      */
  218.     public function setTitle($title)
  219.     {
  220.         $this->title = $title;
  221.     }
  222.     /**
  223.      * @return string
  224.      */
  225.     public function getPrefix()
  226.     {
  227.         return $this->prefix;
  228.     }
  229.     /**
  230.      * @param string $prefix
  231.      */
  232.     public function setPrefix($prefix)
  233.     {
  234.         $this->prefix = $prefix;
  235.     }
  236.     /**
  237.      * @return int
  238.      */
  239.     public function getType()
  240.     {
  241.         return $this->type;
  242.     }
  243.     /**
  244.      * @param int $type
  245.      */
  246.     public function setType($type)
  247.     {
  248.         $this->type = $type;
  249.     }
  250.     /**
  251.      * @return int
  252.      */
  253.     public function getNextId()
  254.     {
  255.         return $this->nextId;
  256.     }
  257.     /**
  258.      * @param int $nextId
  259.      */
  260.     public function setNextId($nextId)
  261.     {
  262.         $this->nextId = $nextId;
  263.     }
  264.     /**
  265.      * @return int
  266.      */
  267.     public function getIdLength()
  268.     {
  269.         return $this->idLength;
  270.     }
  271.     /**
  272.      * @param int $idLength
  273.      */
  274.     public function setIdLength($idLength)
  275.     {
  276.         $this->idLength = $idLength;
  277.     }
  278.     /**
  279.      * @return int
  280.      */
  281.     public function getDefaultDueDays()
  282.     {
  283.         return $this->defaultDueDays;
  284.     }
  285.     /**
  286.      * @param int $defaultDueDays
  287.      */
  288.     public function setDefaultDueDays($defaultDueDays)
  289.     {
  290.         $this->defaultDueDays = $defaultDueDays;
  291.     }
  292.     /**
  293.      * @return string
  294.      */
  295.     public function getDefaultBank()
  296.     {
  297.         return $this->defaultBank;
  298.     }
  299.     /**
  300.      * @param string $defaultBank
  301.      */
  302.     public function setDefaultBank($defaultBank)
  303.     {
  304.         $this->defaultBank = $defaultBank;
  305.     }
  306.     /**
  307.      * @return string
  308.      */
  309.     public function getDefaultBankAccount()
  310.     {
  311.         return $this->defaultBankAccount;
  312.     }
  313.     /**
  314.      * @param string $defaultBankAccount
  315.      */
  316.     public function setDefaultBankAccount($defaultBankAccount)
  317.     {
  318.         $this->defaultBankAccount = $defaultBankAccount;
  319.     }
  320.     /**
  321.      * @return string
  322.      */
  323.     public function getDefaultIban()
  324.     {
  325.         return $this->defaultIban;
  326.     }
  327.     /**
  328.      * @param string $defaultIban
  329.      */
  330.     public function setDefaultIban($defaultIban)
  331.     {
  332.         $this->defaultIban = $defaultIban;
  333.     }
  334.     /**
  335.      * @return string
  336.      */
  337.     public function getDefaultSwift()
  338.     {
  339.         return $this->defaultSwift;
  340.     }
  341.     /**
  342.      * @param string $defaultSwift
  343.      */
  344.     public function setDefaultSwift($defaultSwift)
  345.     {
  346.         $this->defaultSwift = $defaultSwift;
  347.     }
  348.     /**
  349.      * @return string
  350.      */
  351.     public function getDefaultNote()
  352.     {
  353.         return $this->defaultNote;
  354.     }
  355.     /**
  356.      * @param string $defaultNote
  357.      */
  358.     public function setDefaultNote($defaultNote)
  359.     {
  360.         $this->defaultNote = $defaultNote;
  361.     }
  362.     /**
  363.      * @return string
  364.      */
  365.     public function getFooter()
  366.     {
  367.         return $this->footer;
  368.     }
  369.     /**
  370.      * @param string $footer
  371.      */
  372.     public function setFooter($footer)
  373.     {
  374.         $this->footer = $footer;
  375.         return $this;
  376.     }
  377.     /**
  378.      * @return string
  379.      */
  380.     public function getEmailName()
  381.     {
  382.         return $this->emailName;
  383.     }
  384.     /**
  385.      * @param string $emailName
  386.      */
  387.     public function setEmailName($emailName)
  388.     {
  389.         $this->emailName = $emailName;
  390.         return $this;
  391.     }
  392.     /**
  393.      * @return string
  394.      */
  395.     public function getEmail()
  396.     {
  397.         return $this->email;
  398.     }
  399.     /**
  400.      * @param string $email
  401.      */
  402.     public function setEmail($email)
  403.     {
  404.         $this->email = $email;
  405.         return $this;
  406.     }
  407.     /**
  408.      * @return string
  409.      */
  410.     public function getEmailSubject()
  411.     {
  412.         return $this->emailSubject;
  413.     }
  414.     /**
  415.      * @param string $emailSubject
  416.      */
  417.     public function setEmailSubject($emailSubject)
  418.     {
  419.         $this->emailSubject = $emailSubject;
  420.         return $this;
  421.     }
  422.     /**
  423.      * @return string
  424.      */
  425.     public function getEmailBody()
  426.     {
  427.         return $this->emailBody;
  428.     }
  429.     /**
  430.      * @param string $emailBody
  431.      */
  432.     public function setEmailBody($emailBody)
  433.     {
  434.         $this->emailBody = $emailBody;
  435.         return $this;
  436.     }
  437.     /**
  438.      * @return string
  439.      */
  440.     public function getLogo()
  441.     {
  442.         return $this->logo;
  443.     }
  444.     /**
  445.      * @param string $logo
  446.      */
  447.     public function setLogo($logo)
  448.     {
  449.         $this->logo = $logo;
  450.     }
  451.     /**
  452.      * @return ArrayCollection
  453.      */
  454.     public function getDocuments()
  455.     {
  456.         return $this->documents;
  457.     }
  458.     /**
  459.      * @return Company
  460.      */
  461.     public function getCompany()
  462.     {
  463.         return $this->getYear()->getCompany();
  464.     }
  465.     /**
  466.      * @return int
  467.      */
  468.     public function increaseNextId()
  469.     {
  470.         return $this->getNextId() + 1;
  471.     }
  472.     /**
  473.      * @return float
  474.      */
  475.     public function getVat()
  476.     {
  477.         return $this->vat;
  478.     }
  479.     /**
  480.      * @param float $vat
  481.      */
  482.     public function setVat($vat)
  483.     {
  484.         $this->vat = $vat;
  485.     }
  486.     /**
  487.      * @return string
  488.      */
  489.     public function getLanguage()
  490.     {
  491.         return $this->language;
  492.     }
  493.     /**
  494.      * @param string $language
  495.      */
  496.     public function setLanguage($language)
  497.     {
  498.         $this->language = $language;
  499.     }
  500.     public function getTypeTitle()
  501.     {
  502.         return self::getTypeChoices()[$this->getType()];
  503.     }
  504.     public function getCountry(): ?string
  505.     {
  506.         return $this->country ?? null;
  507.     }
  508.     public function setCountry(string $country): void
  509.     {
  510.         $this->country = $country;
  511.     }
  512. }