PaymentSplit.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. /**
  7. * @property int $id
  8. * @property int $payment_id
  9. * @property int $provider_id
  10. * @property string $gateway_provider
  11. * @property string|null $gateway_entity_reference
  12. * @property string|null $gateway_entity_label
  13. * @property string|null $gateway_operation_reference
  14. * @property string|null $gateway_operation_label
  15. * @property string|null $gateway_parent_reference
  16. * @property string|null $gateway_parent_label
  17. * @property string|null $gateway_transfer_target_reference
  18. * @property string|null $gateway_transfer_target_label
  19. * @property \App\Enums\PaymentSplitStatusEnum $status
  20. * @property numeric $gross_amount Valor bruto destinado ao repasse do provider.
  21. * @property numeric $gateway_fee_amount Custo do gateway associado ao repasse.
  22. * @property numeric $net_amount Valor liquido do repasse: net_amount = gross_amount - gateway_fee_amount.
  23. * @property \Illuminate\Support\Carbon|null $transferred_at
  24. * @property \Illuminate\Support\Carbon|null $failed_at
  25. * @property string|null $failure_code
  26. * @property string|null $failure_message
  27. * @property array<array-key, mixed>|null $gateway_payload
  28. * @property array<array-key, mixed>|null $metadata
  29. * @property \Illuminate\Support\Carbon|null $created_at
  30. * @property \Illuminate\Support\Carbon|null $updated_at
  31. * @property \Illuminate\Support\Carbon|null $deleted_at
  32. * @property int|null $provider_withdrawal_id
  33. * @property-read \App\Models\Payment $payment
  34. * @property-read \App\Models\Provider $provider
  35. * @property-read \App\Models\ProviderWithdrawal|null $providerWithdrawal
  36. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit newModelQuery()
  37. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit newQuery()
  38. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit onlyTrashed()
  39. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit query()
  40. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereCreatedAt($value)
  41. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereDeletedAt($value)
  42. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereFailedAt($value)
  43. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereFailureCode($value)
  44. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereFailureMessage($value)
  45. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayEntityLabel($value)
  46. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayEntityReference($value)
  47. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayFeeAmount($value)
  48. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayOperationLabel($value)
  49. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayOperationReference($value)
  50. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayParentLabel($value)
  51. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayParentReference($value)
  52. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayPayload($value)
  53. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayProvider($value)
  54. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayTransferTargetLabel($value)
  55. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGatewayTransferTargetReference($value)
  56. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereGrossAmount($value)
  57. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereId($value)
  58. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereMetadata($value)
  59. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereNetAmount($value)
  60. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit wherePaymentId($value)
  61. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereProviderId($value)
  62. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereProviderWithdrawalId($value)
  63. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereStatus($value)
  64. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereTransferredAt($value)
  65. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit whereUpdatedAt($value)
  66. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit withTrashed(bool $withTrashed = true)
  67. * @method static \Illuminate\Database\Eloquent\Builder<static>|PaymentSplit withoutTrashed()
  68. * @mixin \Eloquent
  69. */
  70. class PaymentSplit extends Model
  71. {
  72. use HasFactory, SoftDeletes;
  73. protected $table = 'payment_splits';
  74. protected $fillable = [
  75. 'payment_id',
  76. 'provider_id',
  77. 'provider_withdrawal_id',
  78. 'gateway_provider',
  79. 'gateway_entity_reference',
  80. 'gateway_entity_label',
  81. 'gateway_operation_reference',
  82. 'gateway_operation_label',
  83. 'gateway_parent_reference',
  84. 'gateway_parent_label',
  85. 'gateway_transfer_target_reference',
  86. 'gateway_transfer_target_label',
  87. 'status',
  88. 'gross_amount',
  89. 'gateway_fee_amount',
  90. 'net_amount',
  91. 'transferred_at',
  92. 'failed_at',
  93. 'failure_code',
  94. 'failure_message',
  95. 'gateway_payload',
  96. 'metadata',
  97. ];
  98. protected $casts = [
  99. 'gross_amount' => 'decimal:2',
  100. 'gateway_fee_amount' => 'decimal:2',
  101. 'net_amount' => 'decimal:2',
  102. 'status' => \App\Enums\PaymentSplitStatusEnum::class,
  103. 'transferred_at' => 'datetime',
  104. 'failed_at' => 'datetime',
  105. 'gateway_payload' => 'array',
  106. 'metadata' => 'array',
  107. 'created_at' => 'datetime',
  108. 'updated_at' => 'datetime',
  109. 'deleted_at' => 'datetime',
  110. ];
  111. public function payment()
  112. {
  113. return $this->belongsTo(Payment::class);
  114. }
  115. public function provider()
  116. {
  117. return $this->belongsTo(Provider::class);
  118. }
  119. public function providerWithdrawal()
  120. {
  121. return $this->belongsTo(ProviderWithdrawal::class);
  122. }
  123. }