<?php

class RecuperadoPorConciliacion
{
    protected $nomina;
    protected $datos = null;

    public function __construct(DatosTxtIntegrado $nomina)
    {
        $this->nomina = $nomina;
    }

    public function datos($key = null, $format = false)
    {
        if ($this->datos === null) {
            $this->datos = Yii::app()->getDb()->createCommand('
                select sum(capital) as capital,
                       sum(interes) as interes,
                       sum(capital) + sum(interes) as total
                from (
                    select case when coalesce(cdc.id::boolean, false) is true  then coalesce(cdc.capital_pagado,0)
                                when coalesce(cdc.id::boolean, false) is false then coalesce(cta.monto_capital,0)
                           end as capital,
                           case when coalesce(cdc.id::boolean, false) is true  then coalesce(cdc.interes_pagado,0)
                                when coalesce(cdc.id::boolean, false) is false then coalesce(cta.monto_interes,0)
                           end as interes
                    from prestamos.datos_txt_tabla_amortizacion dtta
                    inner join retenciones.datos_txt_integrado dti on dti.id=dtta.id_txt
                    inner join prestamos.credito_tabla_amortizacion cta on cta.id=dtta.id_tabla_amortizacion
                    left join prestamos.cobro_diferencial_cuota cdc on cdc.id_proceso=dtta.id
                        and cdc.blnborrado is false
                    where dtta.id_txt=:nomina
                        -- remueve cuotas afectadas por subprocesos
                        and dtta.id_tabla_amortizacion not in (
                            select id_tabla_amortizacion
                            from prestamos.pre_nomina_tabla_amortizacion
                            where id_pre_nomina_credito=:prenomina
                                and blnborrado is true
                        )
                ) as tabla
            ')->bindValues([
                'nomina' => $this->nomina->id,
                'prenomina' => $this->nomina->id_prenomina_credito,
            ])->queryRow();
        }

        if ($format) {
            return Yii::app()->format->number(
                (new Warp($this->datos))->get($key, 0)
            );
        }

        return (new Warp($this->datos))->get($key, 0);
    }
}
