<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class OrderPaymentPlatformFeeDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'order_payment_platform_fee';
    final public const PLURAL_NAME = 'order_payment_platform_fees';
    final public const ID = 'id';
    final public const ORDER_ID = 'order_id';
    final public const PAYMENT_PLATFORM = 'payment_platform';
    final public const FEE_ROLLUP = 'fee_rollup';
    final public const PAYMENT_PLATFORM_FEE_AMOUNT = 'payment_platform_fee_amount';
    final public const APPLICATION_FEE_GROSS_AMOUNT = 'application_fee_gross_amount';
    final public const CURRENCY = 'currency';
    final public const TRANSACTION_ID = 'transaction_id';
    final public const PAID_AT = 'paid_at';
    final public const DELETED_AT = 'deleted_at';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';
    final public const APPLICATION_FEE_NET_AMOUNT = 'application_fee_net_amount';
    final public const APPLICATION_FEE_VAT_AMOUNT = 'application_fee_vat_amount';
    final public const CHARGE_ID = 'charge_id';
    final public const APPLICATION_FEE_VAT_RATE = 'application_fee_vat_rate';

    protected int $id;
    protected int $order_id;
    protected string $payment_platform;
    protected array|string|null $fee_rollup = null;
    protected float $payment_platform_fee_amount;
    protected float $application_fee_gross_amount = 0.0;
    protected string $currency = 'USD';
    protected ?string $transaction_id = null;
    protected ?string $paid_at = null;
    protected ?string $deleted_at = null;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;
    protected ?float $application_fee_net_amount = null;
    protected ?float $application_fee_vat_amount = null;
    protected ?string $charge_id = null;
    protected ?float $application_fee_vat_rate = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'order_id' => $this->order_id ?? null,
                    'payment_platform' => $this->payment_platform ?? null,
                    'fee_rollup' => $this->fee_rollup ?? null,
                    'payment_platform_fee_amount' => $this->payment_platform_fee_amount ?? null,
                    'application_fee_gross_amount' => $this->application_fee_gross_amount ?? null,
                    'currency' => $this->currency ?? null,
                    'transaction_id' => $this->transaction_id ?? null,
                    'paid_at' => $this->paid_at ?? null,
                    'deleted_at' => $this->deleted_at ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                    'application_fee_net_amount' => $this->application_fee_net_amount ?? null,
                    'application_fee_vat_amount' => $this->application_fee_vat_amount ?? null,
                    'charge_id' => $this->charge_id ?? null,
                    'application_fee_vat_rate' => $this->application_fee_vat_rate ?? null,
                ];
    }

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

    public function getId(): int
    {
        return $this->id;
    }

    public function setOrderId(int $order_id): self
    {
        $this->order_id = $order_id;
        return $this;
    }

    public function getOrderId(): int
    {
        return $this->order_id;
    }

    public function setPaymentPlatform(string $payment_platform): self
    {
        $this->payment_platform = $payment_platform;
        return $this;
    }

    public function getPaymentPlatform(): string
    {
        return $this->payment_platform;
    }

    public function setFeeRollup(array|string|null $fee_rollup): self
    {
        $this->fee_rollup = $fee_rollup;
        return $this;
    }

    public function getFeeRollup(): array|string|null
    {
        return $this->fee_rollup;
    }

    public function setPaymentPlatformFeeAmount(float $payment_platform_fee_amount): self
    {
        $this->payment_platform_fee_amount = $payment_platform_fee_amount;
        return $this;
    }

    public function getPaymentPlatformFeeAmount(): float
    {
        return $this->payment_platform_fee_amount;
    }

    public function setApplicationFeeGrossAmount(float $application_fee_gross_amount): self
    {
        $this->application_fee_gross_amount = $application_fee_gross_amount;
        return $this;
    }

    public function getApplicationFeeGrossAmount(): float
    {
        return $this->application_fee_gross_amount;
    }

    public function setCurrency(string $currency): self
    {
        $this->currency = $currency;
        return $this;
    }

    public function getCurrency(): string
    {
        return $this->currency;
    }

    public function setTransactionId(?string $transaction_id): self
    {
        $this->transaction_id = $transaction_id;
        return $this;
    }

    public function getTransactionId(): ?string
    {
        return $this->transaction_id;
    }

    public function setPaidAt(?string $paid_at): self
    {
        $this->paid_at = $paid_at;
        return $this;
    }

    public function getPaidAt(): ?string
    {
        return $this->paid_at;
    }

    public function setDeletedAt(?string $deleted_at): self
    {
        $this->deleted_at = $deleted_at;
        return $this;
    }

    public function getDeletedAt(): ?string
    {
        return $this->deleted_at;
    }

    public function setCreatedAt(?string $created_at): self
    {
        $this->created_at = $created_at;
        return $this;
    }

    public function getCreatedAt(): ?string
    {
        return $this->created_at;
    }

    public function setUpdatedAt(?string $updated_at): self
    {
        $this->updated_at = $updated_at;
        return $this;
    }

    public function getUpdatedAt(): ?string
    {
        return $this->updated_at;
    }

    public function setApplicationFeeNetAmount(?float $application_fee_net_amount): self
    {
        $this->application_fee_net_amount = $application_fee_net_amount;
        return $this;
    }

    public function getApplicationFeeNetAmount(): ?float
    {
        return $this->application_fee_net_amount;
    }

    public function setApplicationFeeVatAmount(?float $application_fee_vat_amount): self
    {
        $this->application_fee_vat_amount = $application_fee_vat_amount;
        return $this;
    }

    public function getApplicationFeeVatAmount(): ?float
    {
        return $this->application_fee_vat_amount;
    }

    public function setChargeId(?string $charge_id): self
    {
        $this->charge_id = $charge_id;
        return $this;
    }

    public function getChargeId(): ?string
    {
        return $this->charge_id;
    }

    public function setApplicationFeeVatRate(?float $application_fee_vat_rate): self
    {
        $this->application_fee_vat_rate = $application_fee_vat_rate;
        return $this;
    }

    public function getApplicationFeeVatRate(): ?float
    {
        return $this->application_fee_vat_rate;
    }
}
