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

class CuentasCobrar_model extends CI_Model {

    public function listar($cliente_id = null, $estado_cobro = null, $fecha_desde = null, $fecha_hasta = null) {
        $this->db->select('
            c.*,
            cl.razon_social as cliente,
            cl.nro_documento as cliente_ruc,
            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('vt_cliente cl',         'cl.id = c.cliente_id');
        $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_in('c.estado_id', array(23, 26, 27));
        $this->db->where('c.saldo IS NOT NULL');

        if ($cliente_id)   $this->db->where('c.cliente_id', $cliente_id);
        if ($estado_cobro !== null && $estado_cobro !== '') $this->db->where('c.estado_cobro', $estado_cobro);
        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('cl.razon_social', 'ASC');
        $this->db->order_by('c.fecvencimiento', 'ASC');
        return $this->db->get()->result();
    }

    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();
    }
}
