<?php
require_once("DBManager.class.php");

class Gasto {

    private $idgasto;
    private $iddesembolso;
    private $idtipogasto;
    private $fecha;
    private $proveedor;
    private $idtipodoc;
    private $num_doc;
    private $concepto;
    private $monto;
    private $creado_en;
    private $archivo;

    // =====================================================
    //  CREAR
    // =====================================================
    public function Crear($iddesembolso, $idtipogasto, $fecha, $proveedor, $idtipodoc, $num_doc, $concepto, $monto,$archivo)
    {
        $resp = false;
        $db = new DBManager();

        $sql = "INSERT INTO gastos(idgasto, iddesembolso, idtipogasto, fecha, proveedor, idtipodoc, num_doc, concepto, monto,archivo)
                VALUES(null, '$iddesembolso', '$idtipogasto', '$fecha', '$proveedor', '$idtipodoc', '$num_doc', '$concepto', '$monto','$archivo')";

        if ($db->_execute($sql)){
            $resp = true;
        }
        return $resp;
    }

    // =====================================================
    //  ACTUALIZAR
    // =====================================================
    public function Actualizar($idgasto, $iddesembolso, $idtipogasto, $fecha, $proveedor, $idtipodoc, $num_doc, $concepto, $monto,$archivo)
    {
        $resp = false;
        $db = new DBManager();

        $sql = "UPDATE gastos 
                SET iddesembolso = '$iddesembolso',
                    idtipogasto = '$idtipogasto',
                    fecha = '$fecha',
                    proveedor = '$proveedor',
                    idtipodoc = '$idtipodoc',
                    num_doc = '$num_doc',
                    concepto = '$concepto',
                    monto = '$monto',
                     archivo = '$archivo'
                WHERE idgasto = $idgasto";

        if ($db->_execute($sql)){
            $resp = true;
        }
        return $resp;
    }

    // =====================================================
    //  LISTAR
    // =====================================================
    // Filtra por proveedor o concepto
    public function Listar($valor)
    {
        $vector = null;
        $db = new DBManager();

        $sql = "SELECT * FROM gastos
                WHERE proveedor LIKE CONCAT('%', '$valor', '%')
                   OR concepto LIKE CONCAT('%', '$valor', '%')
                ORDER BY fecha DESC";

        $rs = $db->execute($sql);
        $num_rows = $rs->getNumOfRows();

        if ($num_rows > 0){
            $row = 0;
            $rs->firstRow();
            while(!$rs->EOF){

                $vector[$row] = array(
                    "idgasto"        => $rs->fields['idgasto'],
                    "iddesembolso"   => $rs->fields['iddesembolso'],
                    "idtipogasto"    => $rs->fields['idtipogasto'],
                    "fecha"          => $rs->fields['fecha'],
                    "proveedor"      => $rs->fields['proveedor'],
                    "idtipodoc"      => $rs->fields['idtipodoc'],
                    "num_doc"        => $rs->fields['num_doc'],
                    "concepto"       => $rs->fields['concepto'],
                    "monto"          => $rs->fields['monto'],
                    "creado_en"      => $rs->fields['creado_en'],
                    "archivo"      => $rs->fields['archivo']
                );

                $row++;
                $rs->nextRow();
            }
            return $vector;
        }

        return null;
    }

    // =====================================================
    //  BUSCAR POR ID
    // =====================================================
    public function BuscarPorCodigo($idgasto)
    {
        $resp = false;
        $db = new DBManager();

        $sql = "SELECT * FROM gastos WHERE idgasto = $idgasto";
        $rs = $db->execute($sql);

        if ($rs->getNumOfRows() > 0){
            $resp = true;
            $rs->firstRow();

            while(!$rs->EOF){
                $this->idgasto       = $rs->fields["idgasto"];
                $this->iddesembolso  = $rs->fields["iddesembolso"];
                $this->idtipogasto   = $rs->fields["idtipogasto"];
                $this->fecha         = $rs->fields["fecha"];
                $this->proveedor     = $rs->fields["proveedor"];
                $this->idtipodoc     = $rs->fields["idtipodoc"];
                $this->num_doc       = $rs->fields["num_doc"];
                $this->concepto      = $rs->fields["concepto"];
                $this->monto         = $rs->fields["monto"];
                $this->creado_en     = $rs->fields["creado_en"];
                $this->archivo     = $rs->fields["archivo"];

                $rs->nextRow();
            }
        }

        return $resp;
    }


public function ListarPorDesembolso($iddesembolso){
    $vector = null;
    $db = new DBManager();
    $sql = "SELECT g.idgasto,g.iddesembolso,g.idtipogasto,g.fecha,g.proveedor,g.idtipodoc,g.num_doc,g.concepto,g.monto,g.creado_en,g.archivo,d.nombre FROM gastos g, comprobante_tipo d WHERE g.idtipodoc=d.id and g.iddesembolso = $iddesembolso ORDER BY fecha DESC";
    $rs = $db->execute($sql);
    if($rs->getNumOfRows()>0){
        $row = 0;
        $rs->firstRow();
        while(!$rs->EOF){
             $vector[$row] = array(
                    "idgasto"        => $rs->fields['idgasto'],
                    "iddesembolso"   => $rs->fields['iddesembolso'],
                    "idtipogasto"    => $rs->fields['idtipogasto'],
                    "fecha"          => $rs->fields['fecha'],
                    "proveedor"      => $rs->fields['proveedor'],
                    "idtipodoc"      => $rs->fields['idtipodoc'],
                    "num_doc"        => $rs->fields['num_doc'],
                    "concepto"       => $rs->fields['concepto'],
                    "monto"          => $rs->fields['monto'],
                    "creado_en"      => $rs->fields['creado_en'],
                    "archivo"      => $rs->fields['archivo'],
                    "nombre"      => $rs->fields['nombre']
                );
            $row++;
            $rs->nextRow();
        }
        return $vector;
    }
    return null;
}

    // =====================================================
    //  ELIMINAR
    // =====================================================
    public function Eliminar($idgasto)
    {
        $resp = false;
        $db = new DBManager();

        if ($db->_execute("DELETE FROM gastos WHERE idgasto = $idgasto")){
            $resp = true;
        }
        return $resp;
    }

    // =====================================================
    // GETTERS
    // =====================================================
    public function getIdgasto(){ return $this->idgasto; }
    public function getIddesembolso(){ return $this->iddesembolso; }
    public function getIdtipogasto(){ return $this->idtipogasto; }
    public function getFecha(){ return $this->fecha; }
    public function getProveedor(){ return $this->proveedor; }
    public function getIdtipodoc(){ return $this->idtipodoc; }
    public function getNumDoc(){ return $this->num_doc; }
    public function getConcepto(){ return $this->concepto; }
    public function getMonto(){ return $this->monto; }
    public function getCreadoEn(){ return $this->creado_en; }
    public function getArchivo(){ return $this->archivo; }
}
?>
