StudentContractInstallment.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. /**
  8. * @property int $id
  9. * @property int $student_contract_id
  10. * @property int $unit_id
  11. * @property int $student_id
  12. * @property string $type
  13. * @property string $history
  14. * @property int $installment_number
  15. * @property int $total_installments
  16. * @property float $value
  17. * @property float $paid_value
  18. * @property float $discount
  19. * @property float $fine
  20. * @property \Illuminate\Support\Carbon $due_date
  21. * @property \Illuminate\Support\Carbon|null $payment_date
  22. * @property \Illuminate\Support\Carbon|null $cancelled_at
  23. * @property string|null $cancellation_reason
  24. * @property string|null $asaas_id
  25. * @property string $status
  26. * @property \Illuminate\Support\Carbon|null $created_at
  27. * @property \Illuminate\Support\Carbon|null $updated_at
  28. * @property \Illuminate\Support\Carbon|null $deleted_at
  29. * @property string|null $billing_type PIX, BOLETO, CREDIT_CARD
  30. * @property string|null $asaas_status
  31. * @property string|null $invoice_url
  32. * @property string|null $asaas_customer_id
  33. * @property-read string $order
  34. * @property-read \App\Models\Student $student
  35. * @property-read \App\Models\StudentContract $studentContract
  36. * @property-read \App\Models\Unit $unit
  37. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment newModelQuery()
  38. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment newQuery()
  39. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment onlyTrashed()
  40. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment query()
  41. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereAsaasCustomerId($value)
  42. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereAsaasId($value)
  43. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereAsaasStatus($value)
  44. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereBillingType($value)
  45. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereCancellationReason($value)
  46. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereCancelledAt($value)
  47. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereCreatedAt($value)
  48. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereDeletedAt($value)
  49. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereDiscount($value)
  50. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereDueDate($value)
  51. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereFine($value)
  52. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereHistory($value)
  53. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereId($value)
  54. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereInstallmentNumber($value)
  55. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereInvoiceUrl($value)
  56. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment wherePaidValue($value)
  57. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment wherePaymentDate($value)
  58. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereStatus($value)
  59. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereStudentContractId($value)
  60. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereStudentId($value)
  61. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereTotalInstallments($value)
  62. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereType($value)
  63. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereUnitId($value)
  64. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereUpdatedAt($value)
  65. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment whereValue($value)
  66. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment withTrashed(bool $withTrashed = true)
  67. * @method static \Illuminate\Database\Eloquent\Builder<static>|StudentContractInstallment withoutTrashed()
  68. * @mixin \Eloquent
  69. */
  70. class StudentContractInstallment extends Model
  71. {
  72. use HasFactory, SoftDeletes;
  73. protected $table = 'student_contract_installments';
  74. protected $guarded = ['id'];
  75. protected $casts = [
  76. 'value' => 'float',
  77. 'paid_value' => 'float',
  78. 'discount' => 'float',
  79. 'fine' => 'float',
  80. 'due_date' => 'date:Y-m-d',
  81. 'payment_date' => 'date:Y-m-d',
  82. 'cancelled_at' => 'datetime',
  83. 'created_at' => 'datetime',
  84. 'updated_at' => 'datetime',
  85. ];
  86. /** Retorna a ordem formatada, ex: "1/12" */
  87. public function getOrderAttribute(): string
  88. {
  89. return "{$this->installment_number}/{$this->total_installments}";
  90. }
  91. public function studentContract(): BelongsTo
  92. {
  93. return $this->belongsTo(StudentContract::class);
  94. }
  95. public function unit(): BelongsTo
  96. {
  97. return $this->belongsTo(Unit::class);
  98. }
  99. public function student(): BelongsTo
  100. {
  101. return $this->belongsTo(Student::class);
  102. }
  103. }