src/Entity/Order.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\OrderRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. use Symfony\Component\Serializer\Annotation\Groups;
  9. /**
  10.  * @ORM\Entity(repositoryClass=OrderRepository::class)
  11.  * @ORM\Table(name="`order`")
  12.  */
  13. class Order
  14. {
  15.     const INIT '0';
  16.     const BUDGETED '1';
  17.     const IN_BASKET '2';
  18.     const IN_PREPARATION '3';
  19.     const ON_DELIVERY '4';
  20.     const COMPLETED '5';
  21.     const DECLINED '6';
  22.     const REQUESTED '7';
  23.     /**
  24.      * @ORM\Id
  25.      * @ORM\GeneratedValue
  26.      * @ORM\Column(type="integer")
  27.      * @Groups({"order"})
  28.      */
  29.     private $id;
  30.     /**
  31.      * @ORM\Column(type="integer")
  32.      * @Assert\NotBlank
  33.      * @Groups({"order"})
  34.      */
  35.     private $units;
  36.     /**
  37.      * @ORM\Column(type="text", nullable=true)
  38.      * @Groups({"order"})
  39.      */
  40.     private $observations;
  41.     /**
  42.      * 0: Iniciada : El usuario ha solicitado un presupuesto al proveedor
  43.      * 1: Presupuestada : El proveedor acepta las condiciones del cliente y formula el presupuesto
  44.      * 2: En cesta : El usuario acepta el presupuesto (también el administrador puede hacerlo)
  45.      * 3: En preparación : El administrador acepta el presupuesto (o el usuario si no requiere confirmación del administrador)
  46.      * 4: En entrega : El proveedor ha fabricado y enviado las piezas
  47.      * 5: Completada : El usaurio ha recibido y comprobado las piezas y la documentación solicitada
  48.      * 6: Rechazada : Rechazada por usuario proveedor, usuario o administrador
  49.      * 7: Solicitada : El Cliente ha solicitado una orden
  50.      *
  51.      * @ORM\Column(type="integer")
  52.      * @Groups({"order"})
  53.      */
  54.     private $state false;
  55.     /**
  56.      * @ORM\ManyToOne(targetEntity=Company::class)
  57.      * @ORM\JoinColumn(nullable=false)
  58.      */
  59.     private $company;
  60.     /**
  61.      * @ORM\ManyToOne(targetEntity=Supplier::class)
  62.      * @ORM\JoinColumn(nullable=false)
  63.      */
  64.     private $supplier;
  65.     /**
  66.      * @ORM\ManyToOne(targetEntity=User::class)
  67.      * @ORM\JoinColumn(nullable=false)
  68.      */
  69.     private $user;
  70.     /**
  71.      * @ORM\Column(type="datetime")
  72.      * @Groups({"order"})
  73.      */
  74.     private $created_at;
  75.     /**
  76.      * @ORM\Column(type="datetime")
  77.      * @Groups({"order"})
  78.      */
  79.     private $updated_at;
  80.     /**
  81.      * @ORM\ManyToOne(targetEntity=Part::class, inversedBy="orders", cascade={"persist"})
  82.      * @ORM\JoinColumn(nullable=true)
  83.      * @Groups({"part"})
  84.      */
  85.     private $part;
  86.     /**
  87.      * @ORM\Column(type="datetime", nullable=true)
  88.      * @Groups({"order"})
  89.      */
  90.     private $completed_at;
  91.     /**
  92.      * @ORM\Column(type="string", length=100)
  93.      * @Groups({"order"})
  94.      */
  95.     private $type;
  96.     /**
  97.      * @ORM\Column(type="string", length=15)
  98.      * @Groups({"order"})
  99.      */
  100.     private $ref;
  101.     /**
  102.      * @ORM\Column(type="string", length=100, nullable=true)
  103.      * @Groups({"order"})
  104.      */
  105.     private $code;
  106.     /**
  107.      * @ORM\Column(type="text", nullable=true)
  108.      * @Groups({"order"})
  109.      */
  110.     private $observations_supplier;
  111.     /**
  112.      * @ORM\Column(type="text", nullable=true)
  113.      * @Groups({"order"})
  114.      */
  115.     private $files_supplier;
  116.     /**
  117.      * @ORM\OneToMany(targetEntity=OrderMachineData::class, mappedBy="orderId")
  118.      */
  119.     private $orderMachineData;
  120.     /**
  121.      * @ORM\ManyToOne(targetEntity=User::class)
  122.      */
  123.     private $reject_user;
  124.     /**
  125.      * @ORM\Column(type="datetime", nullable=true)
  126.      */
  127.     private $reject_date;
  128.     /**
  129.      * @ORM\Column(type="float", nullable=true)
  130.      */
  131.     private $budget;
  132.     /**
  133.      * @ORM\Column(type="string", length=255, nullable=true)
  134.      */
  135.     private $payment_terms;
  136.     /**
  137.      * @ORM\Column(type="string", length=100, nullable=true)
  138.      */
  139.     private $budget_valid_until;
  140.     /**
  141.      * @ORM\Column(type="string", length=100, nullable=true)
  142.      */
  143.     private $delivery_in;
  144.     /**
  145.      * @ORM\Column(type="text", nullable=true)
  146.      */
  147.     private $files_budget;
  148.     /**
  149.      * @ORM\ManyToOne(targetEntity=User::class)
  150.      */
  151.     private $approve_user_user;
  152.     /**
  153.      * @ORM\ManyToOne(targetEntity=User::class)
  154.      */
  155.     private $approve_chief_user;
  156.     /**
  157.      * @ORM\Column(type="datetime", nullable=true)
  158.      */
  159.     private $approve_user_date;
  160.     /**
  161.      * @ORM\Column(type="datetime", nullable=true)
  162.      */
  163.     private $approve_chief_date;
  164.     /**
  165.      * @ORM\ManyToOne(targetEntity=User::class)
  166.      */
  167.     private $send_user;
  168.     /**
  169.      * @ORM\Column(type="datetime", nullable=true)
  170.      */
  171.     private $send_date;
  172.     /**
  173.      * @ORM\ManyToOne(targetEntity=User::class)
  174.      */
  175.     private $complete_user;
  176.     /**
  177.      * @ORM\Column(type="datetime", nullable=true)
  178.      */
  179.     private $complete_date;
  180.     /**
  181.      * @ORM\Column(type="string", length=15, nullable=true)
  182.      */
  183.     private $accept_ref;
  184.     /**
  185.      * @ORM\OneToMany(targetEntity=OrderMessage::class, mappedBy="order_")
  186.      */
  187.     private $orderMessages;
  188.     /**
  189.      * @ORM\ManyToOne(targetEntity=User::class)
  190.      */
  191.     private $approve_supplier_user;
  192.     /**
  193.      * @ORM\Column(type="datetime", nullable=true)
  194.      */
  195.     private $approve_supplier_date;
  196.     /**
  197.      * Requiere doble confirmación (confirmación del administrador (ROLE_CHIEF))
  198.      *
  199.      *
  200.      * @ORM\Column(type="boolean")
  201.      */
  202.     private $chief_confirm;
  203.     /**
  204.      * @ORM\Column(type="integer", nullable=true)
  205.      */
  206.     private $payment_terms_id;
  207.     /**
  208.      * @ORM\Column(type="datetime", nullable=true)
  209.      */
  210.     private $budget_date;
  211.     /**
  212.      * @ORM\Column(type="datetime", nullable=true)
  213.      */
  214.     private $approve_date;
  215.     /**
  216.      * @ORM\ManyToOne(targetEntity=CompanyAddress::class)
  217.      * @ORM\JoinColumn(onDelete="SET NULL")
  218.      */
  219.     private $shipping_address;
  220.     /**
  221.      * @ORM\Column(type="boolean", nullable=true)
  222.      */
  223.     private $budget_required;
  224.     /**
  225.      * @ORM\Column(type="integer", nullable=true)
  226.      */
  227.     private $units_decrypted;
  228.     /**
  229.      * @ORM\Column(type="datetime", nullable=true)
  230.      */
  231.     private $units_decrypted_date;
  232.     /**
  233.      * @ORM\Column(type="text", length=255, nullable=true)
  234.      */
  235.     private $prototypeName;
  236.     /**
  237.      * @ORM\Column(type="text", nullable=true)
  238.      */
  239.     private $files_order;
  240.     public function __construct()
  241.     {
  242.         $this->created_at = new \DateTime();
  243.         $this->markAsAproved();
  244.         $this->orderMachineData = new ArrayCollection();
  245.         $this->orderMessages = new ArrayCollection();
  246.     }
  247.     public function getId(): ?int
  248.     {
  249.         return $this->id;
  250.     }
  251.     public function getUnits(): ?int
  252.     {
  253.         return $this->units;
  254.     }
  255.     public function setUnits(int $units): self
  256.     {
  257.         $this->units $units;
  258.         return $this;
  259.     }
  260.     public function getObservations(): ?string
  261.     {
  262.         return $this->observations;
  263.     }
  264.     public function setObservations(?string $observations): self
  265.     {
  266.         $this->observations $observations;
  267.         return $this;
  268.     }
  269.     public function getState(): ?int
  270.     {
  271.         return $this->state;
  272.     }
  273.     public function setState(int $state): self
  274.     {
  275.         $this->state $state;
  276.         return $this;
  277.     }
  278.     public function getCompany(): ?Company
  279.     {
  280.         return $this->company;
  281.     }
  282.     public function setCompany(?Company $company): self
  283.     {
  284.         $this->company $company;
  285.         return $this;
  286.     }
  287.     public function getSupplier(): ?Supplier
  288.     {
  289.         return $this->supplier;
  290.     }
  291.     public function setSupplier(?Supplier $supplier): self
  292.     {
  293.         $this->supplier $supplier;
  294.         return $this;
  295.     }
  296.     public function getUser(): ?User
  297.     {
  298.         return $this->user;
  299.     }
  300.     public function setUser(?User $user): self
  301.     {
  302.         $this->user $user;
  303.         return $this;
  304.     }
  305.     public function getCreatedAt(): ?\DateTimeInterface
  306.     {
  307.         return $this->created_at;
  308.     }
  309.     public function getUpdatedAt(): ?\DateTimeInterface
  310.     {
  311.         return $this->updated_at;
  312.     }
  313.     /**
  314.      * Set the value of updatedAt
  315.      *
  316.      * @param \DateTime $updatedAt
  317.      */
  318.     public function markAsAproved() : void
  319.     {
  320.         $this->updated_at = new \DateTime();
  321.     }
  322.     /**
  323.      * Set the value of completedAt
  324.      *
  325.      * @param \DateTime $completedAt
  326.      */
  327.     public function markAsCompleted() : void
  328.     {
  329.         $this->completed_at = new \DateTime();
  330.     }
  331.     public function getPart(): ?Part
  332.     {
  333.         return $this->part;
  334.     }
  335.     public function setPart(?Part $part): self
  336.     {
  337.         $this->part $part;
  338.         return $this;
  339.     }
  340.     public function getCompletedAt(): ?\DateTimeInterface
  341.     {
  342.         return $this->completed_at;
  343.     }
  344.     public function setCompletedAt(?\DateTimeInterface $completed_at): self
  345.     {
  346.         $this->completed_at $completed_at;
  347.         return $this;
  348.     }
  349.     public function getRef(): ?string
  350.     {
  351.         return $this->ref;
  352.     }
  353.     public function setRef(string $ref): self
  354.     {
  355.         $splits explode("-"$ref);
  356.         $today date("ymd");
  357.         if ($splits[1] == $today)
  358.         {
  359.             $splits[2]++;
  360.             $splits[2] = str_pad$splits[2], 3"0"STR_PAD_LEFT);
  361.             $ref implode("-"$splits);
  362.         }else
  363.         {
  364.             $ref $splits[0] . "-" date("ymd") . "-001";
  365.         }
  366.         $this->ref $ref;
  367.         return $this;
  368.     }
  369.     public function getCode(): ?string
  370.     {
  371.         return $this->code;
  372.     }
  373.     public function setCode(?string $code): self
  374.     {
  375.         $this->code $code;
  376.         return $this;
  377.     }
  378.     public function getObservationsSupplier(): ?string
  379.     {
  380.         return $this->observations_supplier;
  381.     }
  382.     public function setObservationsSupplier(?string $observations_supplier): self
  383.     {
  384.         $this->observations_supplier $observations_supplier;
  385.         return $this;
  386.     }
  387.     public function getFilesSupplier(): ?string
  388.     {
  389.         return $this->files_supplier;
  390.     }
  391.     public function setFilesSupplier(?string $files_supplier): self
  392.     {
  393.         $this->files_supplier $files_supplier;
  394.         return $this;
  395.     }
  396.     /**
  397.      * @return Collection<int, OrderMachineData>
  398.      */
  399.     public function getOrderMachineData(): Collection
  400.     {
  401.         return $this->orderMachineData;
  402.     }
  403.     public function addOrderMachineData(OrderMachineData $orderMachineData): self
  404.     {
  405.         if (!$this->orderMachineData->contains($orderMachineData)) {
  406.             $this->orderMachineData[] = $orderMachineData;
  407.             $orderMachineData->setOrderId($this);
  408.         }
  409.         return $this;
  410.     }
  411.     public function removeOrderMachineData(OrderMachineData $orderMachineData): self
  412.     {
  413.         if ($this->orderMachineData->removeElement($orderMachineData)) {
  414.             // set the owning side to null (unless already changed)
  415.             if ($orderMachineData->getOrderId() === $this) {
  416.                 $orderMachineData->setOrderId(null);
  417.             }
  418.         }
  419.         return $this;
  420.     }
  421.     public function getRejectUser(): ?User
  422.     {
  423.         return $this->reject_user;
  424.     }
  425.     public function setRejectUser(?User $reject_user): self
  426.     {
  427.         $this->reject_user $reject_user;
  428.         return $this;
  429.     }
  430.     public function getRejectDate(): ?\DateTimeInterface
  431.     {
  432.         return $this->reject_date;
  433.     }
  434.     public function setRejectDate(?\DateTimeInterface $reject_date): self
  435.     {
  436.         $this->reject_date $reject_date;
  437.         return $this;
  438.     }
  439.     public function getBudget(): ?float
  440.     {
  441.         return $this->budget;
  442.     }
  443.     public function setBudget(?float $budget): self
  444.     {
  445.         $this->budget $budget;
  446.         return $this;
  447.     }
  448.     public function getPaymentTerms(): ?string
  449.     {
  450.         return $this->payment_terms;
  451.     }
  452.     public function setPaymentTerms(?string $payment_terms): self
  453.     {
  454.         $this->payment_terms $payment_terms;
  455.         return $this;
  456.     }
  457.     public function getBudgetValidUntil(): ?string
  458.     {
  459.         return $this->budget_valid_until;
  460.     }
  461.     public function setBudgetValidUntil(?string $budget_valid_until): self
  462.     {
  463.         $this->budget_valid_until $budget_valid_until;
  464.         return $this;
  465.     }
  466.     public function getDeliveryIn(): ?string
  467.     {
  468.         return $this->delivery_in;
  469.     }
  470.     public function setDeliveryIn(?string $delivery_in): self
  471.     {
  472.         $this->delivery_in $delivery_in;
  473.         return $this;
  474.     }
  475.     public function getFilesBudget(): ?string
  476.     {
  477.         return $this->files_budget;
  478.     }
  479.     public function setFilesBudget(?string $files_budget): self
  480.     {
  481.         $this->files_budget $files_budget;
  482.         return $this;
  483.     }
  484.     public function getApproveUserUser(): ?User
  485.     {
  486.         return $this->approve_user_user;
  487.     }
  488.     public function setApproveUserUser(?User $approve_user_user): self
  489.     {
  490.         $this->approve_user_user $approve_user_user;
  491.         return $this;
  492.     }
  493.     public function getApproveChiefUser(): ?User
  494.     {
  495.         return $this->approve_chief_user;
  496.     }
  497.     public function setApproveChiefUser(?User $approve_chief_user): self
  498.     {
  499.         $this->approve_chief_user $approve_chief_user;
  500.         return $this;
  501.     }
  502.     public function getApproveUserDate(): ?\DateTimeInterface
  503.     {
  504.         return $this->approve_user_date;
  505.     }
  506.     public function setApproveUserDate(?\DateTimeInterface $approve_user_date): self
  507.     {
  508.         $this->approve_user_date $approve_user_date;
  509.         return $this;
  510.     }
  511.     public function getApproveChiefDate(): ?\DateTimeInterface
  512.     {
  513.         return $this->approve_chief_date;
  514.     }
  515.     public function setApproveChiefDate(?\DateTimeInterface $approve_chief_date): self
  516.     {
  517.         $this->approve_chief_date $approve_chief_date;
  518.         return $this;
  519.     }
  520.     public function getSendUser(): ?User
  521.     {
  522.         return $this->send_user;
  523.     }
  524.     public function setSendUser(?User $send_user): self
  525.     {
  526.         $this->send_user $send_user;
  527.         return $this;
  528.     }
  529.     public function getSendDate(): ?\DateTimeInterface
  530.     {
  531.         return $this->send_date;
  532.     }
  533.     public function setSendDate(?\DateTimeInterface $send_date): self
  534.     {
  535.         $this->send_date $send_date;
  536.         return $this;
  537.     }
  538.     public function getCompleteUser(): ?User
  539.     {
  540.         return $this->complete_user;
  541.     }
  542.     public function setCompleteUser(?User $complete_user): self
  543.     {
  544.         $this->complete_user $complete_user;
  545.         return $this;
  546.     }
  547.     public function getCompleteDate(): ?\DateTimeInterface
  548.     {
  549.         return $this->complete_date;
  550.     }
  551.     public function setCompleteDate(?\DateTimeInterface $complete_date): self
  552.     {
  553.         $this->complete_date $complete_date;
  554.         return $this;
  555.     }
  556.     public function getAcceptRef(): ?string
  557.     {
  558.         return $this->accept_ref;
  559.     }
  560.     public function setAcceptRef(?string $accept_ref): self
  561.     {
  562.         $this->accept_ref $accept_ref;
  563.         return $this;
  564.     }
  565.     /**
  566.      * @return Collection<int, OrderMessage>
  567.      */
  568.     public function getOrderMessages(): Collection
  569.     {
  570.         return $this->orderMessages;
  571.     }
  572.     public function addOrderMessage(OrderMessage $orderMessage): self
  573.     {
  574.         if (!$this->orderMessages->contains($orderMessage)) {
  575.             $this->orderMessages[] = $orderMessage;
  576.             $orderMessage->setOrder($this);
  577.         }
  578.         return $this;
  579.     }
  580.     public function removeOrderMessage(OrderMessage $orderMessage): self
  581.     {
  582.         if ($this->orderMessages->removeElement($orderMessage)) {
  583.             // set the owning side to null (unless already changed)
  584.             if ($orderMessage->getOrder() === $this) {
  585.                 $orderMessage->setOrder(null);
  586.             }
  587.         }
  588.         return $this;
  589.     }
  590.     public function getApproveSupplierUser(): ?User
  591.     {
  592.         return $this->approve_supplier_user;
  593.     }
  594.     public function setApproveSupplierUser(?User $approve_supplier_user): self
  595.     {
  596.         $this->approve_supplier_user $approve_supplier_user;
  597.         return $this;
  598.     }
  599.     public function getApproveSupplierDate(): ?\DateTimeInterface
  600.     {
  601.         return $this->approve_supplier_date;
  602.     }
  603.     public function setApproveSupplierDate(?\DateTimeInterface $approve_supplier_date): self
  604.     {
  605.         $this->approve_supplier_date $approve_supplier_date;
  606.         return $this;
  607.     }
  608.     public function getChiefConfirm(): ?bool
  609.     {
  610.         return $this->chief_confirm;
  611.     }
  612.     public function setChiefConfirm(bool $chief_confirm): self
  613.     {
  614.         $this->chief_confirm $chief_confirm;
  615.         return $this;
  616.     }
  617.     public function getPaymentTermsId(): ?int
  618.     {
  619.         return $this->payment_terms_id;
  620.     }
  621.     public function setPaymentTermsId(?int $payment_terms_id): self
  622.     {
  623.         $this->payment_terms_id $payment_terms_id;
  624.         return $this;
  625.     }
  626.     public function getBudgetDate(): ?\DateTimeInterface
  627.     {
  628.         return $this->budget_date;
  629.     }
  630.     public function setBudgetDate(?\DateTimeInterface $budget_date): self
  631.     {
  632.         $this->budget_date $budget_date;
  633.         return $this;
  634.     }
  635.     public function getApproveDate(): ?\DateTimeInterface
  636.     {
  637.         return $this->approve_date;
  638.     }
  639.     public function setApproveDate(?\DateTimeInterface $approve_date): self
  640.     {
  641.         $this->approve_date $approve_date;
  642.         return $this;
  643.     }
  644.     public function getShippingAddress(): ?CompanyAddress
  645.     {
  646.         return $this->shipping_address;
  647.     }
  648.     public function setShippingAddress(?CompanyAddress $shipping_address): self
  649.     {
  650.         $this->shipping_address $shipping_address;
  651.         return $this;
  652.     }
  653.     public function getBudgetRequired(): ?bool
  654.     {
  655.         return $this->budget_required;
  656.     }
  657.     public function setBudgetRequired(?bool $budget_required): self
  658.     {
  659.         $this->budget_required $budget_required;
  660.         return $this;
  661.     }
  662.     public function getUnitsDecrypted(): ?int
  663.     {
  664.         return $this->units_decrypted;
  665.     }
  666.     public function setUnitsDecrypted(?int $units_decrypted): self
  667.     {
  668.         $this->units_decrypted $units_decrypted;
  669.         return $this;
  670.     }
  671.     public function getUnitsDecryptedDate(): ?\DateTimeInterface
  672.     {
  673.         return $this->units_decrypted_date;
  674.     }
  675.     public function setUnitsDecryptedDate(?\DateTimeInterface $units_decrypted_date): self
  676.     {
  677.         $this->units_decrypted_date $units_decrypted_date;
  678.         return $this;
  679.     }
  680.     /**
  681.      * @return mixed
  682.      */
  683.     public function getType()
  684.     {
  685.         return $this->type;
  686.     }
  687.     /**
  688.      * @param mixed $type
  689.      */
  690.     public function setType($type): void
  691.     {
  692.         $this->type $type;
  693.     }
  694.     /**
  695.      * @return mixed
  696.      */
  697.     public function getFilesOrder(): ?string
  698.     {
  699.         return $this->files_order;
  700.     }
  701.     /**
  702.      * @param mixed $files_order
  703.      */
  704.     public function setFilesOrder(?string $files_order): self
  705.     {
  706.         $this->files_order $files_order;
  707.         return $this;
  708.     }
  709.     /**
  710.      * @return mixed
  711.      */
  712.     public function getPrototypeName()
  713.     {
  714.         return $this->prototypeName;
  715.     }
  716.     /**
  717.      * @param mixed $prototypeName
  718.      */
  719.     public function setPrototypeName($prototypeName): void
  720.     {
  721.         $this->prototypeName $prototypeName;
  722.     }
  723. }