v3/src/Model/ArMonthlyBillDTO.php
<?php
/**
 * ArMonthlyBillDTO
 *
 * PHP version 7.4
 *
 * @category Class
 * @package  Alipay\OpenAPISDK
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 */

/**
 * 支付宝开放平台API
 *
 * 支付宝开放平台v3协议文档
 *
 * The version of the OpenAPI document: 2025-08-26
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 6.2.1
 */

/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

namespace Alipay\OpenAPISDK\Model;

use \ArrayAccess;
use \Alipay\OpenAPISDK\ObjectSerializer;

/**
 * ArMonthlyBillDTO Class Doc Comment
 *
 * @category Class
 * @package  Alipay\OpenAPISDK
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 * @implements \ArrayAccess<TKey, TValue>
 * @template TKey int|null
 * @template TValue mixed|null
 */
class ArMonthlyBillDTO implements ModelInterface, ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $openAPIModelName = 'ArMonthlyBillDTO';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $openAPITypes = [
        'accountDay' => 'string',
        'accruedDate' => 'string',
        'adjustAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'analysisDmsn1' => 'string',
        'analysisDmsn2' => 'string',
        'analysisDmsn3' => 'string',
        'analysisDmsn4' => 'string',
        'arrangementNo' => 'string',
        'billAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'billEndDate' => 'string',
        'billMonth' => 'string',
        'billNo' => 'string',
        'billStartDate' => 'string',
        'billType' => 'string',
        'chargeItemCode' => 'string',
        'chargeType' => 'string',
        'checkStatus' => 'string',
        'checkedAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'checkingAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'clcnBasicAmt' => 'int',
        'clcnBasicType' => 'string',
        'clcnMethod' => 'string',
        'freezeAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'gmtCreate' => 'string',
        'gmtModified' => 'string',
        'gmtPay' => 'string',
        'instId' => 'string',
        'invoiceAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'invoicedAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'ipId' => 'string',
        'ipName' => 'string',
        'ipRoleId' => 'string',
        'lastModer' => 'string',
        'linkInvoiceAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'payOriginal' => 'string',
        'payStatus' => 'string',
        'payWay' => 'string',
        'payeeAccount' => 'string',
        'payerAccount' => 'string',
        'payerIpRoleId' => 'string',
        'prodCode' => 'string',
        'receivedAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'recordId' => 'string',
        'serviceAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'settleType' => 'string',
        'signIpId' => 'string',
        'signIpRoleId' => 'string',
        'stlIpRoleId' => 'string',
        'taxAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi',
        'taxRate' => 'int',
        'taxType' => 'string',
        'toWriteoffDetailCount' => 'int',
        'type' => 'string',
        'writeoffDetailDount' => 'int',
        'writingoffAmt' => '\Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      * @phpstan-var array<string, string|null>
      * @psalm-var array<string, string|null>
      */
    protected static $openAPIFormats = [
        'accountDay' => null,
        'accruedDate' => null,
        'adjustAmt' => null,
        'analysisDmsn1' => null,
        'analysisDmsn2' => null,
        'analysisDmsn3' => null,
        'analysisDmsn4' => null,
        'arrangementNo' => null,
        'billAmt' => null,
        'billEndDate' => null,
        'billMonth' => null,
        'billNo' => null,
        'billStartDate' => null,
        'billType' => null,
        'chargeItemCode' => null,
        'chargeType' => null,
        'checkStatus' => null,
        'checkedAmt' => null,
        'checkingAmt' => null,
        'clcnBasicAmt' => null,
        'clcnBasicType' => null,
        'clcnMethod' => null,
        'freezeAmt' => null,
        'gmtCreate' => null,
        'gmtModified' => null,
        'gmtPay' => null,
        'instId' => null,
        'invoiceAmt' => null,
        'invoicedAmt' => null,
        'ipId' => null,
        'ipName' => null,
        'ipRoleId' => null,
        'lastModer' => null,
        'linkInvoiceAmt' => null,
        'payOriginal' => null,
        'payStatus' => null,
        'payWay' => null,
        'payeeAccount' => null,
        'payerAccount' => null,
        'payerIpRoleId' => null,
        'prodCode' => null,
        'receivedAmt' => null,
        'recordId' => null,
        'serviceAmt' => null,
        'settleType' => null,
        'signIpId' => null,
        'signIpRoleId' => null,
        'stlIpRoleId' => null,
        'taxAmt' => null,
        'taxRate' => null,
        'taxType' => null,
        'toWriteoffDetailCount' => null,
        'type' => null,
        'writeoffDetailDount' => null,
        'writingoffAmt' => null
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPITypes()
    {
        return self::$openAPITypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPIFormats()
    {
        return self::$openAPIFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'accountDay' => 'account_day',
        'accruedDate' => 'accrued_date',
        'adjustAmt' => 'adjust_amt',
        'analysisDmsn1' => 'analysis_dmsn_1',
        'analysisDmsn2' => 'analysis_dmsn_2',
        'analysisDmsn3' => 'analysis_dmsn_3',
        'analysisDmsn4' => 'analysis_dmsn_4',
        'arrangementNo' => 'arrangement_no',
        'billAmt' => 'bill_amt',
        'billEndDate' => 'bill_end_date',
        'billMonth' => 'bill_month',
        'billNo' => 'bill_no',
        'billStartDate' => 'bill_start_date',
        'billType' => 'bill_type',
        'chargeItemCode' => 'charge_item_code',
        'chargeType' => 'charge_type',
        'checkStatus' => 'check_status',
        'checkedAmt' => 'checked_amt',
        'checkingAmt' => 'checking_amt',
        'clcnBasicAmt' => 'clcn_basic_amt',
        'clcnBasicType' => 'clcn_basic_type',
        'clcnMethod' => 'clcn_method',
        'freezeAmt' => 'freeze_amt',
        'gmtCreate' => 'gmt_create',
        'gmtModified' => 'gmt_modified',
        'gmtPay' => 'gmt_pay',
        'instId' => 'inst_id',
        'invoiceAmt' => 'invoice_amt',
        'invoicedAmt' => 'invoiced_amt',
        'ipId' => 'ip_id',
        'ipName' => 'ip_name',
        'ipRoleId' => 'ip_role_id',
        'lastModer' => 'last_moder',
        'linkInvoiceAmt' => 'link_invoice_amt',
        'payOriginal' => 'pay_original',
        'payStatus' => 'pay_status',
        'payWay' => 'pay_way',
        'payeeAccount' => 'payee_account',
        'payerAccount' => 'payer_account',
        'payerIpRoleId' => 'payer_ip_role_id',
        'prodCode' => 'prod_code',
        'receivedAmt' => 'received_amt',
        'recordId' => 'record_id',
        'serviceAmt' => 'service_amt',
        'settleType' => 'settle_type',
        'signIpId' => 'sign_ip_id',
        'signIpRoleId' => 'sign_ip_role_id',
        'stlIpRoleId' => 'stl_ip_role_id',
        'taxAmt' => 'tax_amt',
        'taxRate' => 'tax_rate',
        'taxType' => 'tax_type',
        'toWriteoffDetailCount' => 'to_writeoff_detail_count',
        'type' => 'type',
        'writeoffDetailDount' => 'writeoff_detail_dount',
        'writingoffAmt' => 'writingoff_amt'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'accountDay' => 'setAccountDay',
        'accruedDate' => 'setAccruedDate',
        'adjustAmt' => 'setAdjustAmt',
        'analysisDmsn1' => 'setAnalysisDmsn1',
        'analysisDmsn2' => 'setAnalysisDmsn2',
        'analysisDmsn3' => 'setAnalysisDmsn3',
        'analysisDmsn4' => 'setAnalysisDmsn4',
        'arrangementNo' => 'setArrangementNo',
        'billAmt' => 'setBillAmt',
        'billEndDate' => 'setBillEndDate',
        'billMonth' => 'setBillMonth',
        'billNo' => 'setBillNo',
        'billStartDate' => 'setBillStartDate',
        'billType' => 'setBillType',
        'chargeItemCode' => 'setChargeItemCode',
        'chargeType' => 'setChargeType',
        'checkStatus' => 'setCheckStatus',
        'checkedAmt' => 'setCheckedAmt',
        'checkingAmt' => 'setCheckingAmt',
        'clcnBasicAmt' => 'setClcnBasicAmt',
        'clcnBasicType' => 'setClcnBasicType',
        'clcnMethod' => 'setClcnMethod',
        'freezeAmt' => 'setFreezeAmt',
        'gmtCreate' => 'setGmtCreate',
        'gmtModified' => 'setGmtModified',
        'gmtPay' => 'setGmtPay',
        'instId' => 'setInstId',
        'invoiceAmt' => 'setInvoiceAmt',
        'invoicedAmt' => 'setInvoicedAmt',
        'ipId' => 'setIpId',
        'ipName' => 'setIpName',
        'ipRoleId' => 'setIpRoleId',
        'lastModer' => 'setLastModer',
        'linkInvoiceAmt' => 'setLinkInvoiceAmt',
        'payOriginal' => 'setPayOriginal',
        'payStatus' => 'setPayStatus',
        'payWay' => 'setPayWay',
        'payeeAccount' => 'setPayeeAccount',
        'payerAccount' => 'setPayerAccount',
        'payerIpRoleId' => 'setPayerIpRoleId',
        'prodCode' => 'setProdCode',
        'receivedAmt' => 'setReceivedAmt',
        'recordId' => 'setRecordId',
        'serviceAmt' => 'setServiceAmt',
        'settleType' => 'setSettleType',
        'signIpId' => 'setSignIpId',
        'signIpRoleId' => 'setSignIpRoleId',
        'stlIpRoleId' => 'setStlIpRoleId',
        'taxAmt' => 'setTaxAmt',
        'taxRate' => 'setTaxRate',
        'taxType' => 'setTaxType',
        'toWriteoffDetailCount' => 'setToWriteoffDetailCount',
        'type' => 'setType',
        'writeoffDetailDount' => 'setWriteoffDetailDount',
        'writingoffAmt' => 'setWritingoffAmt'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'accountDay' => 'getAccountDay',
        'accruedDate' => 'getAccruedDate',
        'adjustAmt' => 'getAdjustAmt',
        'analysisDmsn1' => 'getAnalysisDmsn1',
        'analysisDmsn2' => 'getAnalysisDmsn2',
        'analysisDmsn3' => 'getAnalysisDmsn3',
        'analysisDmsn4' => 'getAnalysisDmsn4',
        'arrangementNo' => 'getArrangementNo',
        'billAmt' => 'getBillAmt',
        'billEndDate' => 'getBillEndDate',
        'billMonth' => 'getBillMonth',
        'billNo' => 'getBillNo',
        'billStartDate' => 'getBillStartDate',
        'billType' => 'getBillType',
        'chargeItemCode' => 'getChargeItemCode',
        'chargeType' => 'getChargeType',
        'checkStatus' => 'getCheckStatus',
        'checkedAmt' => 'getCheckedAmt',
        'checkingAmt' => 'getCheckingAmt',
        'clcnBasicAmt' => 'getClcnBasicAmt',
        'clcnBasicType' => 'getClcnBasicType',
        'clcnMethod' => 'getClcnMethod',
        'freezeAmt' => 'getFreezeAmt',
        'gmtCreate' => 'getGmtCreate',
        'gmtModified' => 'getGmtModified',
        'gmtPay' => 'getGmtPay',
        'instId' => 'getInstId',
        'invoiceAmt' => 'getInvoiceAmt',
        'invoicedAmt' => 'getInvoicedAmt',
        'ipId' => 'getIpId',
        'ipName' => 'getIpName',
        'ipRoleId' => 'getIpRoleId',
        'lastModer' => 'getLastModer',
        'linkInvoiceAmt' => 'getLinkInvoiceAmt',
        'payOriginal' => 'getPayOriginal',
        'payStatus' => 'getPayStatus',
        'payWay' => 'getPayWay',
        'payeeAccount' => 'getPayeeAccount',
        'payerAccount' => 'getPayerAccount',
        'payerIpRoleId' => 'getPayerIpRoleId',
        'prodCode' => 'getProdCode',
        'receivedAmt' => 'getReceivedAmt',
        'recordId' => 'getRecordId',
        'serviceAmt' => 'getServiceAmt',
        'settleType' => 'getSettleType',
        'signIpId' => 'getSignIpId',
        'signIpRoleId' => 'getSignIpRoleId',
        'stlIpRoleId' => 'getStlIpRoleId',
        'taxAmt' => 'getTaxAmt',
        'taxRate' => 'getTaxRate',
        'taxType' => 'getTaxType',
        'toWriteoffDetailCount' => 'getToWriteoffDetailCount',
        'type' => 'getType',
        'writeoffDetailDount' => 'getWriteoffDetailDount',
        'writingoffAmt' => 'getWritingoffAmt'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$openAPIModelName;
    }


    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['accountDay'] = $data['accountDay'] ?? null;
        $this->container['accruedDate'] = $data['accruedDate'] ?? null;
        $this->container['adjustAmt'] = $data['adjustAmt'] ?? null;
        $this->container['analysisDmsn1'] = $data['analysisDmsn1'] ?? null;
        $this->container['analysisDmsn2'] = $data['analysisDmsn2'] ?? null;
        $this->container['analysisDmsn3'] = $data['analysisDmsn3'] ?? null;
        $this->container['analysisDmsn4'] = $data['analysisDmsn4'] ?? null;
        $this->container['arrangementNo'] = $data['arrangementNo'] ?? null;
        $this->container['billAmt'] = $data['billAmt'] ?? null;
        $this->container['billEndDate'] = $data['billEndDate'] ?? null;
        $this->container['billMonth'] = $data['billMonth'] ?? null;
        $this->container['billNo'] = $data['billNo'] ?? null;
        $this->container['billStartDate'] = $data['billStartDate'] ?? null;
        $this->container['billType'] = $data['billType'] ?? null;
        $this->container['chargeItemCode'] = $data['chargeItemCode'] ?? null;
        $this->container['chargeType'] = $data['chargeType'] ?? null;
        $this->container['checkStatus'] = $data['checkStatus'] ?? null;
        $this->container['checkedAmt'] = $data['checkedAmt'] ?? null;
        $this->container['checkingAmt'] = $data['checkingAmt'] ?? null;
        $this->container['clcnBasicAmt'] = $data['clcnBasicAmt'] ?? null;
        $this->container['clcnBasicType'] = $data['clcnBasicType'] ?? null;
        $this->container['clcnMethod'] = $data['clcnMethod'] ?? null;
        $this->container['freezeAmt'] = $data['freezeAmt'] ?? null;
        $this->container['gmtCreate'] = $data['gmtCreate'] ?? null;
        $this->container['gmtModified'] = $data['gmtModified'] ?? null;
        $this->container['gmtPay'] = $data['gmtPay'] ?? null;
        $this->container['instId'] = $data['instId'] ?? null;
        $this->container['invoiceAmt'] = $data['invoiceAmt'] ?? null;
        $this->container['invoicedAmt'] = $data['invoicedAmt'] ?? null;
        $this->container['ipId'] = $data['ipId'] ?? null;
        $this->container['ipName'] = $data['ipName'] ?? null;
        $this->container['ipRoleId'] = $data['ipRoleId'] ?? null;
        $this->container['lastModer'] = $data['lastModer'] ?? null;
        $this->container['linkInvoiceAmt'] = $data['linkInvoiceAmt'] ?? null;
        $this->container['payOriginal'] = $data['payOriginal'] ?? null;
        $this->container['payStatus'] = $data['payStatus'] ?? null;
        $this->container['payWay'] = $data['payWay'] ?? null;
        $this->container['payeeAccount'] = $data['payeeAccount'] ?? null;
        $this->container['payerAccount'] = $data['payerAccount'] ?? null;
        $this->container['payerIpRoleId'] = $data['payerIpRoleId'] ?? null;
        $this->container['prodCode'] = $data['prodCode'] ?? null;
        $this->container['receivedAmt'] = $data['receivedAmt'] ?? null;
        $this->container['recordId'] = $data['recordId'] ?? null;
        $this->container['serviceAmt'] = $data['serviceAmt'] ?? null;
        $this->container['settleType'] = $data['settleType'] ?? null;
        $this->container['signIpId'] = $data['signIpId'] ?? null;
        $this->container['signIpRoleId'] = $data['signIpRoleId'] ?? null;
        $this->container['stlIpRoleId'] = $data['stlIpRoleId'] ?? null;
        $this->container['taxAmt'] = $data['taxAmt'] ?? null;
        $this->container['taxRate'] = $data['taxRate'] ?? null;
        $this->container['taxType'] = $data['taxType'] ?? null;
        $this->container['toWriteoffDetailCount'] = $data['toWriteoffDetailCount'] ?? null;
        $this->container['type'] = $data['type'] ?? null;
        $this->container['writeoffDetailDount'] = $data['writeoffDetailDount'] ?? null;
        $this->container['writingoffAmt'] = $data['writingoffAmt'] ?? null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets accountDay
     *
     * @return string|null
     */
    public function getAccountDay()
    {
        return $this->container['accountDay'];
    }

    /**
     * Sets accountDay
     *
     * @param string|null $accountDay 出账日
     *
     * @return self
     */
    public function setAccountDay($accountDay)
    {
        $this->container['accountDay'] = $accountDay;

        return $this;
    }

    /**
     * Gets accruedDate
     *
     * @return string|null
     */
    public function getAccruedDate()
    {
        return $this->container['accruedDate'];
    }

    /**
     * Sets accruedDate
     *
     * @param string|null $accruedDate 应收日期(yyyyMMdd)
     *
     * @return self
     */
    public function setAccruedDate($accruedDate)
    {
        $this->container['accruedDate'] = $accruedDate;

        return $this;
    }

    /**
     * Gets adjustAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getAdjustAmt()
    {
        return $this->container['adjustAmt'];
    }

    /**
     * Sets adjustAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $adjustAmt adjustAmt
     *
     * @return self
     */
    public function setAdjustAmt($adjustAmt)
    {
        $this->container['adjustAmt'] = $adjustAmt;

        return $this;
    }

    /**
     * Gets analysisDmsn1
     *
     * @return string|null
     */
    public function getAnalysisDmsn1()
    {
        return $this->container['analysisDmsn1'];
    }

    /**
     * Sets analysisDmsn1
     *
     * @param string|null $analysisDmsn1 分析维度1
     *
     * @return self
     */
    public function setAnalysisDmsn1($analysisDmsn1)
    {
        $this->container['analysisDmsn1'] = $analysisDmsn1;

        return $this;
    }

    /**
     * Gets analysisDmsn2
     *
     * @return string|null
     */
    public function getAnalysisDmsn2()
    {
        return $this->container['analysisDmsn2'];
    }

    /**
     * Sets analysisDmsn2
     *
     * @param string|null $analysisDmsn2 分析维度2
     *
     * @return self
     */
    public function setAnalysisDmsn2($analysisDmsn2)
    {
        $this->container['analysisDmsn2'] = $analysisDmsn2;

        return $this;
    }

    /**
     * Gets analysisDmsn3
     *
     * @return string|null
     */
    public function getAnalysisDmsn3()
    {
        return $this->container['analysisDmsn3'];
    }

    /**
     * Sets analysisDmsn3
     *
     * @param string|null $analysisDmsn3 分析维度3
     *
     * @return self
     */
    public function setAnalysisDmsn3($analysisDmsn3)
    {
        $this->container['analysisDmsn3'] = $analysisDmsn3;

        return $this;
    }

    /**
     * Gets analysisDmsn4
     *
     * @return string|null
     */
    public function getAnalysisDmsn4()
    {
        return $this->container['analysisDmsn4'];
    }

    /**
     * Sets analysisDmsn4
     *
     * @param string|null $analysisDmsn4 分析维度4
     *
     * @return self
     */
    public function setAnalysisDmsn4($analysisDmsn4)
    {
        $this->container['analysisDmsn4'] = $analysisDmsn4;

        return $this;
    }

    /**
     * Gets arrangementNo
     *
     * @return string|null
     */
    public function getArrangementNo()
    {
        return $this->container['arrangementNo'];
    }

    /**
     * Sets arrangementNo
     *
     * @param string|null $arrangementNo 合约号，商户签约产品对应的合约号
     *
     * @return self
     */
    public function setArrangementNo($arrangementNo)
    {
        $this->container['arrangementNo'] = $arrangementNo;

        return $this;
    }

    /**
     * Gets billAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getBillAmt()
    {
        return $this->container['billAmt'];
    }

    /**
     * Sets billAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $billAmt billAmt
     *
     * @return self
     */
    public function setBillAmt($billAmt)
    {
        $this->container['billAmt'] = $billAmt;

        return $this;
    }

    /**
     * Gets billEndDate
     *
     * @return string|null
     */
    public function getBillEndDate()
    {
        return $this->container['billEndDate'];
    }

    /**
     * Sets billEndDate
     *
     * @param string|null $billEndDate 账单结束日期
     *
     * @return self
     */
    public function setBillEndDate($billEndDate)
    {
        $this->container['billEndDate'] = $billEndDate;

        return $this;
    }

    /**
     * Gets billMonth
     *
     * @return string|null
     */
    public function getBillMonth()
    {
        return $this->container['billMonth'];
    }

    /**
     * Sets billMonth
     *
     * @param string|null $billMonth 账单月
     *
     * @return self
     */
    public function setBillMonth($billMonth)
    {
        $this->container['billMonth'] = $billMonth;

        return $this;
    }

    /**
     * Gets billNo
     *
     * @return string|null
     */
    public function getBillNo()
    {
        return $this->container['billNo'];
    }

    /**
     * Sets billNo
     *
     * @param string|null $billNo 月账单号,唯一标识月账单的ID
     *
     * @return self
     */
    public function setBillNo($billNo)
    {
        $this->container['billNo'] = $billNo;

        return $this;
    }

    /**
     * Gets billStartDate
     *
     * @return string|null
     */
    public function getBillStartDate()
    {
        return $this->container['billStartDate'];
    }

    /**
     * Sets billStartDate
     *
     * @param string|null $billStartDate 账单开始日期
     *
     * @return self
     */
    public function setBillStartDate($billStartDate)
    {
        $this->container['billStartDate'] = $billStartDate;

        return $this;
    }

    /**
     * Gets billType
     *
     * @return string|null
     */
    public function getBillType()
    {
        return $this->container['billType'];
    }

    /**
     * Sets billType
     *
     * @param string|null $billType 账单类型  21：应收月账单  目前仅支持该类型的账单类型
     *
     * @return self
     */
    public function setBillType($billType)
    {
        $this->container['billType'] = $billType;

        return $this;
    }

    /**
     * Gets chargeItemCode
     *
     * @return string|null
     */
    public function getChargeItemCode()
    {
        return $this->container['chargeItemCode'];
    }

    /**
     * Sets chargeItemCode
     *
     * @param string|null $chargeItemCode 收费项编码
     *
     * @return self
     */
    public function setChargeItemCode($chargeItemCode)
    {
        $this->container['chargeItemCode'] = $chargeItemCode;

        return $this;
    }

    /**
     * Gets chargeType
     *
     * @return string|null
     */
    public function getChargeType()
    {
        return $this->container['chargeType'];
    }

    /**
     * Sets chargeType
     *
     * @param string|null $chargeType 计费类型  01：云在线计费，02：离线计费，03：老主站计收费，04：芝麻在线计收费
     *
     * @return self
     */
    public function setChargeType($chargeType)
    {
        $this->container['chargeType'] = $chargeType;

        return $this;
    }

    /**
     * Gets checkStatus
     *
     * @return string|null
     */
    public function getCheckStatus()
    {
        return $this->container['checkStatus'];
    }

    /**
     * Sets checkStatus
     *
     * @param string|null $checkStatus 出账状态  01：账单生成，02：待确认出账，03：已出账，04：客户已对账，05：对账差异，06：部分出账
     *
     * @return self
     */
    public function setCheckStatus($checkStatus)
    {
        $this->container['checkStatus'] = $checkStatus;

        return $this;
    }

    /**
     * Gets checkedAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getCheckedAmt()
    {
        return $this->container['checkedAmt'];
    }

    /**
     * Sets checkedAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $checkedAmt checkedAmt
     *
     * @return self
     */
    public function setCheckedAmt($checkedAmt)
    {
        $this->container['checkedAmt'] = $checkedAmt;

        return $this;
    }

    /**
     * Gets checkingAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getCheckingAmt()
    {
        return $this->container['checkingAmt'];
    }

    /**
     * Sets checkingAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $checkingAmt checkingAmt
     *
     * @return self
     */
    public function setCheckingAmt($checkingAmt)
    {
        $this->container['checkingAmt'] = $checkingAmt;

        return $this;
    }

    /**
     * Gets clcnBasicAmt
     *
     * @return int|null
     */
    public function getClcnBasicAmt()
    {
        return $this->container['clcnBasicAmt'];
    }

    /**
     * Sets clcnBasicAmt
     *
     * @param int|null $clcnBasicAmt 计算依据
     *
     * @return self
     */
    public function setClcnBasicAmt($clcnBasicAmt)
    {
        $this->container['clcnBasicAmt'] = $clcnBasicAmt;

        return $this;
    }

    /**
     * Gets clcnBasicType
     *
     * @return string|null
     */
    public function getClcnBasicType()
    {
        return $this->container['clcnBasicType'];
    }

    /**
     * Sets clcnBasicType
     *
     * @param string|null $clcnBasicType 计算依据类型  01：交易金额，02：交易笔数，03：交易张数，04：资费依据扩展，05：其他
     *
     * @return self
     */
    public function setClcnBasicType($clcnBasicType)
    {
        $this->container['clcnBasicType'] = $clcnBasicType;

        return $this;
    }

    /**
     * Gets clcnMethod
     *
     * @return string|null
     */
    public function getClcnMethod()
    {
        return $this->container['clcnMethod'];
    }

    /**
     * Sets clcnMethod
     *
     * @param string|null $clcnMethod 计算方法  01：差额累进，02：全额累进，03：按传入金额收费，04：价格包量，05：包时间周期，06：按时间全额累进，07：包时间周期差额累进，08：期间差额累进，09：期间全额累进，10：包时间周期单笔，11：标准单笔计费，12：包时间周期单笔-按照传入金额计费，13：期间靠档差额累进，靠档计息使用，14：自定义
     *
     * @return self
     */
    public function setClcnMethod($clcnMethod)
    {
        $this->container['clcnMethod'] = $clcnMethod;

        return $this;
    }

    /**
     * Gets freezeAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getFreezeAmt()
    {
        return $this->container['freezeAmt'];
    }

    /**
     * Sets freezeAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $freezeAmt freezeAmt
     *
     * @return self
     */
    public function setFreezeAmt($freezeAmt)
    {
        $this->container['freezeAmt'] = $freezeAmt;

        return $this;
    }

    /**
     * Gets gmtCreate
     *
     * @return string|null
     */
    public function getGmtCreate()
    {
        return $this->container['gmtCreate'];
    }

    /**
     * Sets gmtCreate
     *
     * @param string|null $gmtCreate 创建时间（创建备份时需要）
     *
     * @return self
     */
    public function setGmtCreate($gmtCreate)
    {
        $this->container['gmtCreate'] = $gmtCreate;

        return $this;
    }

    /**
     * Gets gmtModified
     *
     * @return string|null
     */
    public function getGmtModified()
    {
        return $this->container['gmtModified'];
    }

    /**
     * Sets gmtModified
     *
     * @param string|null $gmtModified 修改时间（创建备份时需要）
     *
     * @return self
     */
    public function setGmtModified($gmtModified)
    {
        $this->container['gmtModified'] = $gmtModified;

        return $this;
    }

    /**
     * Gets gmtPay
     *
     * @return string|null
     */
    public function getGmtPay()
    {
        return $this->container['gmtPay'];
    }

    /**
     * Sets gmtPay
     *
     * @param string|null $gmtPay 付款时间
     *
     * @return self
     */
    public function setGmtPay($gmtPay)
    {
        $this->container['gmtPay'] = $gmtPay;

        return $this;
    }

    /**
     * Gets instId
     *
     * @return string|null
     */
    public function getInstId()
    {
        return $this->container['instId'];
    }

    /**
     * Sets instId
     *
     * @param string|null $instId 分支机构号
     *
     * @return self
     */
    public function setInstId($instId)
    {
        $this->container['instId'] = $instId;

        return $this;
    }

    /**
     * Gets invoiceAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getInvoiceAmt()
    {
        return $this->container['invoiceAmt'];
    }

    /**
     * Sets invoiceAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $invoiceAmt invoiceAmt
     *
     * @return self
     */
    public function setInvoiceAmt($invoiceAmt)
    {
        $this->container['invoiceAmt'] = $invoiceAmt;

        return $this;
    }

    /**
     * Gets invoicedAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getInvoicedAmt()
    {
        return $this->container['invoicedAmt'];
    }

    /**
     * Sets invoicedAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $invoicedAmt invoicedAmt
     *
     * @return self
     */
    public function setInvoicedAmt($invoicedAmt)
    {
        $this->container['invoicedAmt'] = $invoicedAmt;

        return $this;
    }

    /**
     * Gets ipId
     *
     * @return string|null
     */
    public function getIpId()
    {
        return $this->container['ipId'];
    }

    /**
     * Sets ipId
     *
     * @param string|null $ipId 结算对象参与者标识
     *
     * @return self
     */
    public function setIpId($ipId)
    {
        $this->container['ipId'] = $ipId;

        return $this;
    }

    /**
     * Gets ipName
     *
     * @return string|null
     */
    public function getIpName()
    {
        return $this->container['ipName'];
    }

    /**
     * Sets ipName
     *
     * @param string|null $ipName 参与者名字
     *
     * @return self
     */
    public function setIpName($ipName)
    {
        $this->container['ipName'] = $ipName;

        return $this;
    }

    /**
     * Gets ipRoleId
     *
     * @return string|null
     */
    public function getIpRoleId()
    {
        return $this->container['ipRoleId'];
    }

    /**
     * Sets ipRoleId
     *
     * @param string|null $ipRoleId 结算对象参与者角色标识
     *
     * @return self
     */
    public function setIpRoleId($ipRoleId)
    {
        $this->container['ipRoleId'] = $ipRoleId;

        return $this;
    }

    /**
     * Gets lastModer
     *
     * @return string|null
     */
    public function getLastModer()
    {
        return $this->container['lastModer'];
    }

    /**
     * Sets lastModer
     *
     * @param string|null $lastModer 最后修改人
     *
     * @return self
     */
    public function setLastModer($lastModer)
    {
        $this->container['lastModer'] = $lastModer;

        return $this;
    }

    /**
     * Gets linkInvoiceAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getLinkInvoiceAmt()
    {
        return $this->container['linkInvoiceAmt'];
    }

    /**
     * Sets linkInvoiceAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $linkInvoiceAmt linkInvoiceAmt
     *
     * @return self
     */
    public function setLinkInvoiceAmt($linkInvoiceAmt)
    {
        $this->container['linkInvoiceAmt'] = $linkInvoiceAmt;

        return $this;
    }

    /**
     * Gets payOriginal
     *
     * @return string|null
     */
    public function getPayOriginal()
    {
        return $this->container['payOriginal'];
    }

    /**
     * Sets payOriginal
     *
     * @param string|null $payOriginal 付款来源  1：主账务，2：包量，3：预收，4：预存，5：银行，6：积分，7：统一支付，8：支付受理
     *
     * @return self
     */
    public function setPayOriginal($payOriginal)
    {
        $this->container['payOriginal'] = $payOriginal;

        return $this;
    }

    /**
     * Gets payStatus
     *
     * @return string|null
     */
    public function getPayStatus()
    {
        return $this->container['payStatus'];
    }

    /**
     * Sets payStatus
     *
     * @param string|null $payStatus 付款状态  01：待结算；02：部分结算；03：结算完成
     *
     * @return self
     */
    public function setPayStatus($payStatus)
    {
        $this->container['payStatus'] = $payStatus;

        return $this;
    }

    /**
     * Gets payWay
     *
     * @return string|null
     */
    public function getPayWay()
    {
        return $this->container['payWay'];
    }

    /**
     * Sets payWay
     *
     * @param string|null $payWay 付款方式  1：资金；2：包量
     *
     * @return self
     */
    public function setPayWay($payWay)
    {
        $this->container['payWay'] = $payWay;

        return $this;
    }

    /**
     * Gets payeeAccount
     *
     * @return string|null
     */
    public function getPayeeAccount()
    {
        return $this->container['payeeAccount'];
    }

    /**
     * Sets payeeAccount
     *
     * @param string|null $payeeAccount 收款方账号
     *
     * @return self
     */
    public function setPayeeAccount($payeeAccount)
    {
        $this->container['payeeAccount'] = $payeeAccount;

        return $this;
    }

    /**
     * Gets payerAccount
     *
     * @return string|null
     */
    public function getPayerAccount()
    {
        return $this->container['payerAccount'];
    }

    /**
     * Sets payerAccount
     *
     * @param string|null $payerAccount 付款方账号
     *
     * @return self
     */
    public function setPayerAccount($payerAccount)
    {
        $this->container['payerAccount'] = $payerAccount;

        return $this;
    }

    /**
     * Gets payerIpRoleId
     *
     * @return string|null
     */
    public function getPayerIpRoleId()
    {
        return $this->container['payerIpRoleId'];
    }

    /**
     * Sets payerIpRoleId
     *
     * @param string|null $payerIpRoleId 扣款对象pid
     *
     * @return self
     */
    public function setPayerIpRoleId($payerIpRoleId)
    {
        $this->container['payerIpRoleId'] = $payerIpRoleId;

        return $this;
    }

    /**
     * Gets prodCode
     *
     * @return string|null
     */
    public function getProdCode()
    {
        return $this->container['prodCode'];
    }

    /**
     * Sets prodCode
     *
     * @param string|null $prodCode 产品码
     *
     * @return self
     */
    public function setProdCode($prodCode)
    {
        $this->container['prodCode'] = $prodCode;

        return $this;
    }

    /**
     * Gets receivedAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getReceivedAmt()
    {
        return $this->container['receivedAmt'];
    }

    /**
     * Sets receivedAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $receivedAmt receivedAmt
     *
     * @return self
     */
    public function setReceivedAmt($receivedAmt)
    {
        $this->container['receivedAmt'] = $receivedAmt;

        return $this;
    }

    /**
     * Gets recordId
     *
     * @return string|null
     */
    public function getRecordId()
    {
        return $this->container['recordId'];
    }

    /**
     * Sets recordId
     *
     * @param string|null $recordId 记录id，账单全局唯一号
     *
     * @return self
     */
    public function setRecordId($recordId)
    {
        $this->container['recordId'] = $recordId;

        return $this;
    }

    /**
     * Gets serviceAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getServiceAmt()
    {
        return $this->container['serviceAmt'];
    }

    /**
     * Sets serviceAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $serviceAmt serviceAmt
     *
     * @return self
     */
    public function setServiceAmt($serviceAmt)
    {
        $this->container['serviceAmt'] = $serviceAmt;

        return $this;
    }

    /**
     * Gets settleType
     *
     * @return string|null
     */
    public function getSettleType()
    {
        return $this->container['settleType'];
    }

    /**
     * Sets settleType
     *
     * @param string|null $settleType 结算类型  01：实时；02：预收；03：后收；04：周期结算；05：按日汇总结算；09：延期结算
     *
     * @return self
     */
    public function setSettleType($settleType)
    {
        $this->container['settleType'] = $settleType;

        return $this;
    }

    /**
     * Gets signIpId
     *
     * @return string|null
     */
    public function getSignIpId()
    {
        return $this->container['signIpId'];
    }

    /**
     * Sets signIpId
     *
     * @param string|null $signIpId 签约对象参与者标识
     *
     * @return self
     */
    public function setSignIpId($signIpId)
    {
        $this->container['signIpId'] = $signIpId;

        return $this;
    }

    /**
     * Gets signIpRoleId
     *
     * @return string|null
     */
    public function getSignIpRoleId()
    {
        return $this->container['signIpRoleId'];
    }

    /**
     * Sets signIpRoleId
     *
     * @param string|null $signIpRoleId 签约对象参与者角色标识
     *
     * @return self
     */
    public function setSignIpRoleId($signIpRoleId)
    {
        $this->container['signIpRoleId'] = $signIpRoleId;

        return $this;
    }

    /**
     * Gets stlIpRoleId
     *
     * @return string|null
     */
    public function getStlIpRoleId()
    {
        return $this->container['stlIpRoleId'];
    }

    /**
     * Sets stlIpRoleId
     *
     * @param string|null $stlIpRoleId 结算对象PID
     *
     * @return self
     */
    public function setStlIpRoleId($stlIpRoleId)
    {
        $this->container['stlIpRoleId'] = $stlIpRoleId;

        return $this;
    }

    /**
     * Gets taxAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getTaxAmt()
    {
        return $this->container['taxAmt'];
    }

    /**
     * Sets taxAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $taxAmt taxAmt
     *
     * @return self
     */
    public function setTaxAmt($taxAmt)
    {
        $this->container['taxAmt'] = $taxAmt;

        return $this;
    }

    /**
     * Gets taxRate
     *
     * @return int|null
     */
    public function getTaxRate()
    {
        return $this->container['taxRate'];
    }

    /**
     * Sets taxRate
     *
     * @param int|null $taxRate 税率
     *
     * @return self
     */
    public function setTaxRate($taxRate)
    {
        $this->container['taxRate'] = $taxRate;

        return $this;
    }

    /**
     * Gets taxType
     *
     * @return string|null
     */
    public function getTaxType()
    {
        return $this->container['taxType'];
    }

    /**
     * Sets taxType
     *
     * @param string|null $taxType 税收类型，01：增值税，02：营业税  营业税已经在大部分行业废弃，要传入需咨询后再确认
     *
     * @return self
     */
    public function setTaxType($taxType)
    {
        $this->container['taxType'] = $taxType;

        return $this;
    }

    /**
     * Gets toWriteoffDetailCount
     *
     * @return int|null
     */
    public function getToWriteoffDetailCount()
    {
        return $this->container['toWriteoffDetailCount'];
    }

    /**
     * Sets toWriteoffDetailCount
     *
     * @param int|null $toWriteoffDetailCount 待核销明细数量
     *
     * @return self
     */
    public function setToWriteoffDetailCount($toWriteoffDetailCount)
    {
        $this->container['toWriteoffDetailCount'] = $toWriteoffDetailCount;

        return $this;
    }

    /**
     * Gets type
     *
     * @return string|null
     */
    public function getType()
    {
        return $this->container['type'];
    }

    /**
     * Sets type
     *
     * @param string|null $type 账单分类 1应收，2返点
     *
     * @return self
     */
    public function setType($type)
    {
        $this->container['type'] = $type;

        return $this;
    }

    /**
     * Gets writeoffDetailDount
     *
     * @return int|null
     */
    public function getWriteoffDetailDount()
    {
        return $this->container['writeoffDetailDount'];
    }

    /**
     * Sets writeoffDetailDount
     *
     * @param int|null $writeoffDetailDount 核销明细数量
     *
     * @return self
     */
    public function setWriteoffDetailDount($writeoffDetailDount)
    {
        $this->container['writeoffDetailDount'] = $writeoffDetailDount;

        return $this;
    }

    /**
     * Gets writingoffAmt
     *
     * @return \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null
     */
    public function getWritingoffAmt()
    {
        return $this->container['writingoffAmt'];
    }

    /**
     * Sets writingoffAmt
     *
     * @param \Alipay\OpenAPISDK\Model\MultiCurrencyMoneyOpenApi|null $writingoffAmt writingoffAmt
     *
     * @return self
     */
    public function setWritingoffAmt($writingoffAmt)
    {
        $this->container['writingoffAmt'] = $writingoffAmt;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    public function offsetExists($offset): bool
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed|null
     */
    #[\ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return $this->container[$offset] ?? null;
    }

    /**
     * Sets value based on offset.
     *
     * @param int|null $offset Offset
     * @param mixed    $value  Value to be set
     *
     * @return void
     */
    public function offsetSet($offset, $value): void
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    public function offsetUnset($offset): void
    {
        unset($this->container[$offset]);
    }

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php
     *
     * @return mixed Returns data which can be serialized by json_encode(), which is a value
     * of any type other than a resource.
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
       return ObjectSerializer::sanitizeForSerialization($this);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        return json_encode(
            ObjectSerializer::sanitizeForSerialization($this),
            JSON_PRETTY_PRINT
        );
    }

    /**
     * Gets a header-safe presentation of the object
     *
     * @return string
     */
    public function toHeaderValue()
    {
        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}


