<?php
class CuentaAcreedor
{
    public $codempresa;
    public $cuenta;
    public $tipo_impuesto;
    public $monto;
    public $saldo;
    public $fecha_ultimo_pago;
    public $observaciones;
    public $nombre_acreedor;
    public $cantidadcuotas;
    public $valorcuota;
    public $saldointeres;
    public $tasanormal;
    public $montointeresmensual;

    function __construct()
    {
        !empty($this->monto) && $this->monto = '$' . number_format($this->monto, 2, '.', ',');
        !empty($this->saldo) && $this->saldo = '$' . number_format($this->saldo, 2, '.', ',');
        !empty($this->valorcuota) && $this->valorcuota = '$' . number_format($this->valorcuota, 2, '.', ',');
        !empty($this->saldointeres) && $this->saldointeres = '$' . number_format($this->saldointeres, 2, '.', ',');
        !empty($this->tasanormal) && $this->tasanormal = number_format($this->tasanormal, 2, '.', ',') . '%';
        !empty($this->montointeresmensual) && $this->montointeresmensual = '$' . number_format($this->montointeresmensual, 2, '.', ',');

        !empty($this->fecha_ultimo_pago) && $this->fecha_ultimo_pago = date('d-m-Y', strtotime($this->fecha_ultimo_pago));
    }

    public static function obtenerCXPPendientes(): object
    {
        $db = obtenerConexion();

        $query = "select cuentas.codempresa,
            cuentas.ctaacreedorvario cuenta,
            tipos.nomtipoimpuesto tipo_impuesto,
            cuentas.monto,
            cuentas.saldo,
            cuentas.fechaultpago fecha_ultimo_pago,
            cuentas.observaciones,
            cuentas.nomacreedor nombre_acreedor,
            cuentas.cantidadcuotas,
            cuentas.valorcuota,
            cuentas.saldointeres,
            cuentas.tasanormal,
            cuentas.montointeresmensual
        from [" . DB_NET . "].dbo.bnc_ctaacreedoresvarios cuentas
        inner join [" . DB_NET . "].dbo.bnc_tipo_acreedor tipos on cuentas.codempresa = tipos.codempresa and cuentas.codtipoacreedor = tipos.codtipoacreedor
        WHERE cuentas.saldo > 0;";
        $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED]);

        try {
            $stmt->execute();

            $datos = $stmt->fetchAll(PDO::FETCH_CLASS, __CLASS__);

            return (object)[
                'status' => 200,
                'data' => $datos
            ];
        } catch (PDOException $e) {
            return (object)[
                'status' => 500,
                'message' => $e->getMessage()
            ];
        }
    }
}
