<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class EstadoCuentaCliente_model extends CI_Model {

    public function obtener_comprobantes($cliente_id, $fecha_desde = null, $fecha_hasta = null) {
        $this->db->select('
            c.*,
            tc.nombre as tipo_comprobante,
            m.abreviado as moneda,
            fp.nombre as forma_pago,
            DATEDIFF(c.fecvencimiento, CURDATE()) as dias_para_vencer
        ');
        $this->db->from('vt_comprobante c');
        $this->db->join('mt_tipo_comprobante tc', 'tc.id = c.comprobante_id', 'left');
        $this->db->join('mt_moneda m',            'm.id = c.moneda_id',        'left');
        $this->db->join('mt_forma_pago fp',        'fp.id = c.fp_id',          'left');
        $this->db->where('c.cliente_id', $cliente_id);
        $this->db->where_in('c.estado_id', array(23, 26, 27));
        $this->db->where('c.saldo IS NOT NULL');

        if ($fecha_desde) $this->db->where('c.fecha >=', $fecha_desde);
        if ($fecha_hasta) $this->db->where('c.fecha <=', $fecha_hasta . ' 23:59:59');

        $this->db->order_by('c.fecha', 'ASC');
        return $this->db->get()->result();
    }

    public function obtener_cobros($comprob_id) {
        return $this->db
            ->select('
                co.*,
                mp.nombre as medio_pago,
                CONCAT(b.nombre, " - ", bc.descripcion) as cuenta_bancaria
            ')
            ->from('co_pago_cliente co')
            ->join('mt_medio_pago mp',  'mp.id = co.medio_pago_id')
            ->join('mt_banco_cuenta bc','bc.id = co.banco_cuenta_id', 'left')
            ->join('mt_banco b',        'b.id = bc.banco_id',         'left')
            ->where('co.comprob_id', $comprob_id)
            ->order_by('co.fecha_pago', 'ASC')
            ->get()->result();
    }

    public function obtener_cliente($id) {
        return $this->db
            ->select('
                cl.*,
                (SELECT cc.celular FROM vt_cliente_contacto cc
                 WHERE cc.cliente_id = cl.id AND cc.estado = 1
                 ORDER BY cc.id ASC LIMIT 1) as celular
            ')
            ->from('vt_cliente cl')
            ->where('cl.id', $id)
            ->get()->row();
    }

    public function listar_clientes() {
        return $this->db
            ->select('cl.id, cl.razon_social, cl.nro_documento')
            ->from('vt_comprobante c')
            ->join('vt_cliente cl', 'cl.id = c.cliente_id')
            ->where_in('c.estado_id', array(23, 26, 27))
            ->where('c.saldo IS NOT NULL')
            ->group_by('cl.id')
            ->order_by('cl.razon_social', 'ASC')
            ->get()->result();
    }
}
