<?php

class Compra extends CI_Controller {

  public function __construct() {
    parent::__construct();
    $this->load->model(modelo(), 'Controlador_model');
    $this->controlador = controlador();
    $this->titulo_controlador = humanize($this->controlador);
    $this->url = base_url().$this->controlador;
    $this->vista = $this->controlador;
    $this->perfil = $this->session->userdata('perfil') ? $this->session->userdata('perfil') : FALSE;
    $this->usuario = $this->session->userdata('usuario') ? $this->session->userdata('usuario') : FALSE;
    $this->empresa = $this->session->userdata('empresa') ? $this->session->userdata('empresa') : FALSE;
    $this->compra = $this->session->userdata('compra') ? $this->session->userdata('compra') : FALSE;
  }

  public function index() {
    $data = array(
      'titulo' => $this->titulo_controlador,
      'contenido' => $this->vista,
      'breads' => array(array('ruta' => 'javascript:;', 'titulo' => $this->titulo_controlador))
    );
    $this->load->view(THEME.TEMPLATE, $data);
  }

  public function ajax_generado($finicio, $factual) {
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));
    $this->db->where("created BETWEEN '".$finicio."' AND '".$factual."'");
    $query = $this->db->where('estado <>', '0')->get($this->controlador)->result();
    $data = [];
    foreach($query as $key => $value) {
      $usuario = $this->Controlador_model->get($value->usuario, 'usuario');
      $proveedor = $this->Controlador_model->get($value->proveedor, 'proveedor');
      if($value->estado == '1') { $estado = '<span class="label label-success">APROBADO</span>'; }
      if($value->estado == '2') { $estado = '<span class="label label-info">GENERADO</span>'; }
      if($value->estado == '3') { $estado = '<span class="label label-danger">ANULADO</span>'; }
      //add variables for action
      $boton = '';
      //add html fodr action
      $boton .= '<a onclick="visualizar('.$value->id.')" class="btn btn-default btn-sm" title="Visualizar"><i class="fa fa-eye"></i></a> ';
      $boton .= '<a onclick="imprimir('.$value->id.')" class="btn btn-danger btn-sm" title="Imprimir"><i class="fa fa-print"></i></a> ';
      $data[] = array(
        $key + 1,
        $value->codigo,
        $value->movimiento,
        $value->serie.' '.$value->numero,
        $proveedor ? $proveedor->nombre : '',
        $estado,
        $value->montototal,
        $value->created,
        $boton
      );
    }
    $result = array(
      "draw" => $draw,
      "recordsTotal" => $start,
      "recordsFiltered" => $length,
      "data" => $data
    );
    echo json_encode($result);
  }

  public function ajax_pendiente() {
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));
    $query = $this->db->where('estado', '0')->get($this->controlador)->result();
    $data = [];
    foreach($query as $key => $value) {
      $usuario = $this->Controlador_model->get($value->usuario, 'usuario');
      $proveedor = $this->Controlador_model->get($value->proveedor, 'proveedor');
      //add variables for action
      $boton = '';
      //add html fodr action
      $boton .= '<a class="btn btn-info btn-sm" href="'.$this->url.'/actualizar/'.$value->id.'" title="Modificar"><i class="fa fa-pencil"></i></a> ';
      $boton .= '<a class="btn btn-danger btn-sm" onclick="borrar('.$value->id.')" title="Borrar"><i class="fa fa-trash"></i></a> ';
      $data[] = array(
        $key + 1,
        $value->codigo,
        $value->movimiento,
        $value->serie.' '.$value->numero,
        $proveedor ? $proveedor->nombre : '',
        '<span class="label label-warning">PENDIENTE</span>',
        $value->montototal,
        $value->created,
        $boton
      );
    }
    $result = array(
      "draw" => $draw,
      "recordsTotal" => $start,
      "recordsFiltered" => $length,
      "data" => $data
    );
    echo json_encode($result);
  }

  public function crear() {
    $numero = $this->Controlador_model->codigos($this->controlador);
		$numeros = $numero ? $numero->correlativo + 1 : 1;
		$cadena = "";
		for($i = 0 ; $i < 4 - strlen($numeros); $i++ ) {
			$cadena = $cadena.'0';
		}
		$data['empresa'] = $this->empresa;
		$data['usuario'] = $this->usuario;
		$data['codigo'] = "C".$cadena.$numeros;
		$data['correlativo'] = $numeros;
		$data['created'] = date('Y-m-d');
    $insert = $this->Controlador_model->save($this->controlador, $data);
    $CI = & get_instance();
    $CI->session->set_userdata('compra', $insert);
    redirect($this->url);
  }

  public function volver() {
    $CI = & get_instance();
    $CI->session->set_userdata('compra', NULL);
    redirect($this->url);
  }

  public function actualizar($id) {
    $CI = & get_instance();
    $CI->session->set_userdata('compra', $id);
    redirect($this->url);
  }

  public function botonpedido() {
    $data = $this->Controlador_model->get($this->compra, $this->controlador);
    $row = '';
    if($data) {
      if($data->estado == '0') {
        $row .= '<a onclick="grabar('.$data->id.')" class="btn btn-success" data-toggle="tooltip" title="GENERAR"><i class="fa fa-meetup"></i></a> ';
      } else {
        $row .= '<a href="'.$this->url.'/crear" class="btn btn-warning" data-toggle="tooltip" title="NUEVO"><i class="fa fa-leaf"></i></a> ';
        $row .= '<a onclick="imprimir('.$data->id.')" class="btn btn-danger" data-toggle="tooltip" title="IMPRIMIR"><i class="fa fa-print"></i></a> ';
      }
    }
    $row .= '<a onclick="location.reload()" class="btn btn-openid" data-toggle="tooltip" title="RECARGAR"><i class="fa fa-repeat"></i></a> ';
    $row .= '<a href="'.$this->url.'/volver" class="btn btn-default" data-toggle="tooltip" title="VOLVER"><i class="fa fa-arrow-left"></i></a> ';
    echo $row;
  }

  public function ajax_delete($id) {
    $this->Controlador_model->delete_by_id($id, $this->controlador);
    echo json_encode(array("status" => TRUE));
  }

  public function visualizar($id = FALSE) {
    $data = $this->Controlador_model->get($id, $this->controlador);
    $empresa = $this->Controlador_model->get($data->empresa, 'empresa');
    $cliente = $this->Controlador_model->get($data->usuario, 'usuario');
    $compradetalle = $this->Controlador_model->getDetalle($id, 'compradetalle');
    $ticket = '';
    $ticket .= '<div class="clearfix"><div class="pull-left"><h4 class="text-left"><span>'.$empresa->razonsocial.'</span></h4>
    <span><b>RUC:</b> '.$empresa->ruc.'</br><b>Direccion:</b> '.$empresa->direccion.'</span></br>
    <span><b>Telefono:</b> '.$empresa->telefono.' <b>Celular:</b> '.$empresa->celular.'</span></div><div class="pull-right">
    <h4>'.$data->movimiento.'<br># '.$data->serie.'-'.$data->numero.'<br></h4></div></div><hr><div class="row"><div class="col-md-12">
    <div class="pull-left m-t-30"><span><h4>SOLICITANTE</h4><span><span><b>Nombre: </b>'.$cliente->nombre.' '.$cliente->apellido.'</span><br/>
    <span><b>DNI/RUC: </b>'.($cliente ? $cliente->dni : '').'</span><br/><span><b>DIRECCION: </b>'.$cliente->direccion.'</span><br/>
    <span><b>TELEFONO: </b>'.$cliente->telefono.'</span></div><div class="pull-right m-t-30"></div></div></div><div class="m-h-50"></div>
    <div class="row"><div class="col-md-12"><div class="table-responsive"><table class="table table-bordered table-condensed"><thead>
    <tr><th>#</th><th>Codigo</th><th>Producto</th><th>Precio</th><th>Cantidad</th><th>Sub-total</th></tr></thead><tbody>';
    $total = 0;
    $i = 0;
    foreach ($compradetalle as $value) {
      $i++;
      $producto = $this->Controlador_model->get($value->producto, 'producto');
      $marca = $this->Controlador_model->get($producto->marca, 'marca');
      $nombre = $marca ? $marca->nombre : '';
      $total += $value->subtotal;
      $ticket .= '<tr><td>'.$i.'</td><td>'.$producto->codigo.'</td><td>'.$producto->nombre.' '.$nombre.'</td>
      <td>'.$value->precioneto.'</td><td>'.$value->cantidad.'</td><td class="right">'.number_format($value->subtotal, 2).'</td></tr>';
    }
    $ticket .= '<tr><td colspan="5" align="right"><strong>Total:</strong></td><td align="right">
    <strong>'.number_format($total, 2).'</strong></td></tr></tbody></table></div></div></div>';
    echo $ticket;
  }

  public function completarproducto() {
    if (isset($_GET['term'])) {
      $q = strtoupper($_GET['term']);
      $this->Controlador_model->completarproducto($q);
    }
  }

  public function completarproveedor() {
    if (isset($_GET['term'])) {
      $q = strtoupper($_GET['term']);
      $this->Controlador_model->completarproveedor($q);
    }
  }

  public function completarempresa() {
    if (isset($_GET['term'])) {
      $q = strtoupper($_GET['term']);
      $this->Controlador_model->completarempresa($q);
    }
  }

  public function completarusuario() {
    if (isset($_GET['term'])) {
      $q = strtoupper($_GET['term']);
      $this->Controlador_model->completarusuario($q);
    }
  }

  private function _validate() {
    $data = array();
    $data['error_string'] = array();
    $data['inputerror'] = array();
    $data['status'] = TRUE;

    if($this->input->post('empresa') == '') {
      $data['inputerror'][] = 'empresas';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('usuario') == '') {
      $data['inputerror'][] = 'usuarios';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('proveedor') == '') {
      $data['inputerror'][] = 'proveedores';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($data['status'] === FALSE) {
      echo json_encode($data);
      exit();
    }
  }

  public function ajax_update() {
    $this->_validate();
    $data['proveedor'] = $this->input->post('proveedor');
    $data['usuario'] = $this->input->post('usuario');
    $data['empresa'] = $this->input->post('empresa');
    $data['igv'] = $this->input->post('igv');
    if($this->Controlador_model->update(array('id' => $this->compra), $data, $this->controlador)) {
      echo json_encode(array("status" => TRUE));
    }
  }

  public function imprimir($id) {
    $ticket = '<embed src="'.$this->url.'/comprapdf/'.$id.'" type="application/pdf" width="100%" height="400"></embed>';
    echo $ticket;
  }

  public function comprapdf($id) {
    $orden = $this->Controlador_model->get($id, $this->controlador);
    $ordendetalle = $this->Controlador_model->getDetalle($id, 'compradetalle');
    $data = array(
      'data' => $orden,
      'letras' => num_to_letras($orden->montototal),
      'datas' => $ordendetalle,
    );
    $this->load->view('/pdf'.$this->controlador, $data);
    $html = $this->output->get_output();
    $this->dompdf->loadHtml($html);
    $this->dompdf->setPaper('A4', 'portrait');
    $this->dompdf->render();
    $this->dompdf->stream("compra.pdf", array("Attachment"=>0));
  }

  public function ajax_list_detalle() {
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));
    $query = $this->db->order_by('id', 'desc')->where('compra', $this->compra)->get('compradetalle')->result();
    $compra = $this->Controlador_model->get($this->compra, $this->controlador);
    $data = [];
    foreach($query as $key => $value) {
      $no = $key + 1;
      $producto = $this->Controlador_model->get($value->producto, 'producto');
      $marca = $this->Controlador_model->get($producto->categoria, 'productocategoria');
      $campohidden = '<input type="hidden" id="detalle'.$no.'" name="detalle" value="'.$value->id.'">';
      //add variables for action
      $boton1 = '';
      $campo1 = '';
      //add html fodr action
      if($compra->estado == '0') {
        $boton1 = '<a class="btn btn-sm btn-danger" title="Borrar" onclick="borrardetalle('.$value->id.')"><i class="fa fa-trash"></i></a>';
        $campo1 = '<input type="text" size="2" class="form-control text-center money" id="cantidad'.$no.'" name="cantidad"
        onkeydown="if(event.keyCode == 13) { cambiarcantidad('.$no.') }" value="'.$value->cantidad.'" autocomplete="off">';
      } else {
        $campo1 = $value->cantidad;
      }
      $data[] = array(
        $no.$campohidden,
        $producto->nombre.' '.($marca ? $marca->nombre : ''),
        $value->precioneto,
        $value->preciounitario,
        $campo1,
        $boton1,
        $value->subtotal
      );
    }
    $result = array(
      "draw" => $draw,
      "recordsTotal" => $start,
      "recordsFiltered" => $length,
      "data" => $data
    );
    echo json_encode($result);
  }

  private function _validatedetalle() {
    $data = array();
    $data['error_string'] = array();
    $data['inputerror'] = array();
    $data['status'] = TRUE;
    $detallelist = $this->Controlador_model->detalleduplicado($this->input->post('id'), $this->input->post('producto'));

    if($this->input->post('producto') == '') {
      $data['inputerror'][] = 'productos';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('cantidad') == '') {
      $data['inputerror'][] = 'cantidad';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($detallelist) {
      $data['inputerror'][] = 'productos';
      $data['error_string'][] = 'Este campo ya existe en la base de datos.';
      $data['status'] = FALSE;
    }

    if($data['status'] === FALSE) {
      echo json_encode($data);
      exit();
    }
  }

  public function ajax_adddetalle() {
    $this->_validatedetalle();
    $producto = $this->Controlador_model->get($this->input->post('producto'), 'producto');
    $compras = $this->Controlador_model->get($this->compra, $this->controlador);
    $data['producto'] = $this->input->post('producto');
    $data['compra'] = $this->compra;
    $data['nombre'] = $producto->nombre;
    $data['precioneto'] = $this->input->post('preciocompra');
    $data['preciounitario'] = $this->input->post('preciocompra') / (1 + ($compras->igv / 100));
    $data['cantidad'] = $this->input->post('cantidad');
    $data['subtotal'] = $this->input->post('preciocompra') * $this->input->post('cantidad');
    if($this->Controlador_model->save('compradetalle', $data)) {
      $compra['montototal'] = $compras->montototal + ($this->input->post('preciocompra') * $this->input->post('cantidad'));
      $compra['montoactual'] = $compras->montototal + ($this->input->post('preciocompra') * $this->input->post('cantidad'));
      $this->Controlador_model->update(array('id' => $this->compra), $compra, 'compra');
      echo json_encode(array("status" => TRUE));
    }
  }

  public function ajax_deletedetalle($id) {
    $compra = $this->Controlador_model->get($this->compra, $this->controlador);
    $detalle = $this->Controlador_model->get($id, 'compradetalle');
    if ($this->Controlador_model->delete_by_id($id, 'compradetalle')) {
      $data['montototal'] = $compra->montototal - $detalle->subtotal;
      $data['montoactual'] = $compra->montototal - $detalle->subtotal;
      $this->Controlador_model->update(array('id' => $detalle->compra), $data, $this->controlador);
      echo json_encode(array("status" => TRUE));
    }
  }

  public function ajax_updateventa() {
    $compra = $this->Controlador_model->get($this->compra, $this->controlador);
    $empresa = $this->Controlador_model->get($compra->empresa, 'empresa');
    $usuario = $this->Controlador_model->get($compra->usuario, 'usuario');
    $proveedor = $this->Controlador_model->get($compra->proveedor, 'proveedor');
    $contador = $this->Controlador_model->contador($this->compra);
    $data['empresa'] = $compra->empresa;
    $data['igv'] = $compra->igv;
    $nombreempresa = $empresa->tipo == '0' ? $empresa->nombre : $empresa->razonsocial;
    $data['nombreempresa'] = $empresa->ruc.' | '.$nombreempresa;
    $data['usuario'] = $compra->usuario;
    $data['estado'] = $compra->estado;
    $data['contador'] = $contador;
    $data['nombreusuario'] = $usuario->documento.' | '.$usuario->nombre.' '.$usuario->apellido;
    $data['proveedor'] = $proveedor ? $compra->proveedor : '';
    $data['nombreproveedor'] = $proveedor ? $proveedor->ruc.' | '.$proveedor->nombre : '';
    $data['codigo'] = $compra->codigo;
    $data['montototal'] = $compra->montototal;
    echo json_encode($data);
  }

  public function ajax_updatecantidad() {
    $detalle = $this->Controlador_model->get($this->input->post('detalle'), 'compradetalle');
    $data['cantidad'] = $this->input->post('cantidad');
    $data['subtotal'] = $this->input->post('cantidad') * $detalle->precioneto;
    if($this->Controlador_model->update(array('id' => $this->input->post('detalle')), $data, 'compradetalle')) {
      $ventas = $this->Controlador_model->get($detalle->compra, $this->controlador);
      $venta['montototal'] = $ventas->montototal - $detalle->subtotal + ($this->input->post('cantidad') * $detalle->precioneto);
      $venta['montoactual'] = $ventas->montototal - $detalle->subtotal + ($this->input->post('cantidad') * $detalle->precioneto);
      $this->Controlador_model->update(array('id' => $detalle->compra), $venta, $this->controlador);
      echo json_encode(array("status" => TRUE));
    }
  }

  private function _validatprocesar() {
    $data = array();
    $data['error_string'] = array();
    $data['inputerror'] = array();
    $data['status'] = TRUE;

    if($this->input->post('serie') == '') {
      $data['inputerror'][] = 'serie';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('numero') == '') {
      $data['inputerror'][] = 'numero';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('nombrepro') == '') {
      $data['inputerror'][] = 'nombrepro';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($data['status'] === FALSE) {
      echo json_encode($data);
      exit();
    }
  }

  public function ajax_addprocesar() {
    $this->_validatprocesar();
    $compra = $this->Controlador_model->get($this->compra, $this->controlador);
		$numero = $this->Controlador_model->ultimo('notaingreso');
    $numeros = $numero ? $numero->id + 1 : 1;
    $cadena = "";
    for($i = 0 ; $i < 6 - strlen($numeros); $i++ ) {
      $cadena = $cadena.'0';
    }
		$notaingreso['codigo'] = "NI".$cadena.$numeros;
		$notaingreso['usuario'] = $compra->usuario;
		$notaingreso['empresa'] = $compra->empresa;
		$notaingreso['tipoingreso'] = 'COMPRA';
		$notaingreso['compra'] = $this->compra;
		$notaingreso['estado'] = '1';
    $notaingreso['montototal'] = $compra->montototal;
		$notaingreso['comentario'] = 'INGRESO POR COMPRA '.$this->input->post('serie').'-'.$this->input->post('numero');
		$notaingreso['created'] = date('Y-m-d');
		if($this->Controlador_model->save('notaingreso', $notaingreso)) {
			$ultimo = $this->Controlador_model->ultimo('notaingreso');
  		$detalle = $this->Controlador_model->getDetalle($this->compra, 'compradetalle');
			foreach ($detalle as $value) {
				$cantidad = $this->Controlador_model->getStock($value->producto);
				$movimiento['empresa'] = $compra->empresa;
				$movimiento['notaingreso'] = $ultimo->id;
				$movimiento['tipo'] = 'ENTRADA';
				$movimiento['producto'] = $value->producto;
				$movimiento['cantidad'] = $value->cantidad;
				$movimiento['stockanterior'] = $cantidad ? $cantidad->cantidad : 0;
				$movimiento['stockactual'] = ($cantidad ? $cantidad->cantidad : 0) + $value->cantidad;
				$primero = $cantidad ? $cantidad->cantidad * $cantidad->costopromedio : 0;
				$costopromedio = ($primero + ($value->cantidad * $value->precioneto)) / (($cantidad ? $cantidad->cantidad : 0) + $value->cantidad);
				$movimiento['costopromedio'] = $costopromedio;
				$movimiento['created'] = date('Y-m-d');
        $this->Controlador_model->save('movimiento', $movimiento);
				$NID['notaingreso'] = $ultimo->id;
				$NID['producto'] = $value->producto;
				$NID['nombre'] = $value->nombre;
				$NID['precio'] = $value->precioneto;
				$NID['cantidad'] = $value->cantidad;
				$NID['subtotal'] = $value->precioneto * $value->cantidad;
        $this->Controlador_model->save('notaingresodetalle', $NID);
				$productos['preciocompra'] = $value->precioneto;
        $this->Controlador_model->update(array('id' => $value->producto), $productos, 'producto');
				if($cantidad) {
					$stock['cantidad'] = $cantidad->cantidad + $value->cantidad;
					$stock['costopromedio'] = $costopromedio;
          $this->Controlador_model->update(array('id' => $cantidad->id), $stock, 'stock');
				} else {
					$stock['producto'] = $value->producto;
					$stock['empresa'] = $compra->empresa;
					$stock['cantidad'] = $value->cantidad;
					$stock['costopromedio'] = $costopromedio;
          $this->Controlador_model->save('stock', $stock);
				}
			}
		}
		if ($this->input->post('formapago') == 'CONTADO' && $this->input->post('metodopago') == 'EFECTIVO') {
			$data['montoactual'] = 0;
			$egreso['concepto'] = '4';
			$egreso['usuario'] = $compra->usuario;
			$egreso['empresa'] = $compra->empresa;
			$egreso['compra'] = $this->compra;
			$egreso['monto'] = $compra->montototal;
			$egreso['observacion'] = 'CANCELAR COMPRA DE '.$compra->codigo;
			$egreso['created'] = date('Y-m-d');
      $this->Controlador_model->save('egreso', $egreso);
		}
		$data['formapago'] = $this->input->post('formapago');
		$data['movimiento'] = $this->input->post('movimiento');
		$data['estado'] = '1';
		$data['serie'] = $this->input->post('serie');
		$data['numero'] = $this->input->post('numero');
		$data['created'] = date('Y-m-d');
    if($this->db->where('id', $this->compra)->update($this->controlador, $data)) {
      echo json_encode(array("status" => TRUE));
    }
  }

  private function _validateproveedor() {
    $data = array();
    $data['error_string'] = array();
    $data['inputerror'] = array();
    $data['status'] = TRUE;
    $detallelist = $this->Controlador_model->check($this->input->post('ruc'));

    if($this->input->post('ruc') == '') {
      $data['inputerror'][] = 'ruc';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($this->input->post('nombre') == '') {
      $data['inputerror'][] = 'nombre';
      $data['error_string'][] = 'Este campo es obligatorio.';
      $data['status'] = FALSE;
    }

    if($detallelist) {
      $data['inputerror'][] = 'ruc';
      $data['error_string'][] = 'Este campo ya existe en la base de datos.';
      $data['status'] = FALSE;
    }

    if($data['status'] === FALSE) {
      echo json_encode($data);
      exit();
    }
  }

  public function ajax_addproveedor() {
    $this->_validateproveedor();
    $data['ruc'] = $this->input->post('ruc');
		$data['nombre'] = $this->input->post('nombre');
		$data['direccion'] = $this->input->post('direccion');
		$data['referencia'] = $this->input->post('referencia');
		$data['celular'] = $this->input->post('celular');
    $insert = $this->Controlador_model->save('proveedor', $data);
    $compra['proveedor'] = $insert;
    $this->Controlador_model->update(array('id' => $this->compra), $compra, $this->controlador);
    echo json_encode(array("status" => TRUE));
  }

  public function excel() {
    $finicio = $this->uri->segment(3);
    $factual = $this->uri->segment(4);
    $usuario = $this->perfil == 1 ? FALSE : $this->usuario;
    $pedidos = $this->Controlador_model->listar($finicio, $factual, $usuario, $this->controlador);
    // Propiedades del archivo excel
    $this->phpexcel->getProperties()->setTitle("Lista de OC")->setDescription("Lista de OC por Proveedor");
    // Setiar la solapa que queda actia al abrir el excel
    $this->phpexcel->setActiveSheetIndex(0);
    // Solapa excel para trabajar con PHP
    $sheet = $this->phpexcel->getActiveSheet();
    $sheet->setTitle("Lista de OC - Proveedor");
    $sheet->getColumnDimension('A')->setAutoSize(true);
    $sheet->getColumnDimension('B')->setAutoSize(true);
    $sheet->getColumnDimension('C')->setAutoSize(true);
    $sheet->getColumnDimension('D')->setAutoSize(true);
    $sheet->getColumnDimension('E')->setAutoSize(true);
    $sheet->getColumnDimension('F')->setAutoSize(true);
    $sheet->getColumnDimension('G')->setAutoSize(true);
    $sheet->getColumnDimension('H')->setAutoSize(true);
    $style_header = array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN)), 'fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID,'color' => array('rgb'=>'E1E0F7')));
    $style = array('alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER));
    $sheet->getStyle('A1:H1')->applyFromArray($style_header);
    $sheet->getStyle("A1:H1")->applyFromArray($style);
    $sheet->setCellValue('A1', 'ORDEN');
    $sheet->setCellValue('B1', 'O.C.');
    $sheet->setCellValue('C1', 'TIPO');
    $sheet->setCellValue('D1', 'Nº DOC.');
    $sheet->setCellValue('E1', 'RAZON SOCIAL');
    $sheet->setCellValue('F1', 'FECHA EMI.');
    $sheet->setCellValue('G1', 'ESTADO');
    $sheet->setCellValue('H1', 'MONTO');
    $i = 1;
    foreach ($pedidos as $value) {
      $i++;
      $proveedor = $this->Controlador_model->get($value->proveedor, 'proveedor');
      $sheet->setCellValue('A'.$i, $i - 1);
      $sheet->setCellValue('B'.$i, $value->codigo);
      $sheet->setCellValue('C'.$i, $value->movimiento);
      $sheet->setCellValue('D'.$i, $value->serie.'-'.$value->numero);
      $sheet->setCellValue('E'.$i, $proveedor->nombre);
      $sheet->setCellValue('F'.$i, $value->created);
      $sheet->setCellValue('G'.$i, $value->estado);
      $sheet->setCellValue('H'.$i, $value->montototal);
    }
    // Salida
    header("Content-Type: application/vnd.ms-excel");
    $nombreArchivo = 'compra_'.date('YmdHis');
    header("Content-Disposition: attachment; filename=\"$nombreArchivo.xls\"");
    header("Cache-Control: max-age=0");
    // Genera Excel
    $writer = PHPExcel_IOFactory::createWriter($this->phpexcel, "Excel5");
    // Escribir
    $writer->save('php://output');
    exit;
  }

}
