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

class EstadoCuenta_model extends CI_Model {

    public function obtener_comprobantes($proveedor_id, $fecha_desde = null, $fecha_hasta = null) {
        $this->db->select('
            cp.*,
            m.abreviado as moneda,
            fp.nombre as forma_pago,
            DATEDIFF(cp.fecha_vencimiento, CURDATE()) as dias_para_vencer
        ');
        $this->db->from('cp_comprobante_proveedor cp');
        $this->db->join('mt_moneda m',      'm.id = cp.moneda_id',  'left');
        $this->db->join('mt_forma_pago fp', 'fp.id = cp.fp_id',     'left');
        $this->db->where('cp.proveedor_id', $proveedor_id);
        $this->db->where_in('cp.estado', array(1, 2));

        if ($fecha_desde) {
            $this->db->where('cp.fecha_emision >=', $fecha_desde);
        }
        if ($fecha_hasta) {
            $this->db->where('cp.fecha_emision <=', $fecha_hasta . ' 23:59:59');
        }

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

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

    public function obtener_proveedor($id) {
        return $this->db
            ->select('p.*, td.abreviado as tipo_doc')
            ->from('lt_proveedor p')
            ->join('mt_documento_identidad td', 'td.id = p.documento_identidad_id', 'left')
            ->where('p.id', $id)
            ->get()->row();
    }

    public function listar_proveedores() {
        return $this->db
            ->select('p.id, p.razon_social, p.nro_documento')
            ->from('cp_comprobante_proveedor cp')
            ->join('lt_proveedor p', 'p.id = cp.proveedor_id')
            ->where_in('cp.estado', array(1, 2))
            ->group_by('p.id')
            ->order_by('p.razon_social', 'ASC')
            ->get()->result();
    }
}
