Diferencia entre revisiones de «Como buscar y filtrar por fecha»

De KumbiaPHP Framework Wiki
 
(No se muestran 9 ediciones intermedias de 5 usuarios)
Línea 12: Línea 12:
 
<?php
 
<?php
 
class Ventas extends ActiveRecord{
 
class Ventas extends ActiveRecord{
     public function getVentas($page, $ppage=20){
+
     public function getVentas($page,$desde,$hasta,$cliente, $ppage=20){
        return $this->paginate("page: $page", "per_page: $ppage", 'order: id desc');
+
         return $this->paginate("page: $page", "per_page: $ppage", "clientes_id = $cliente AND DATE(fecha_at) between '$desde' and '$hasta'");
    }
 
    // @param: $desde,$hasta,$cliente  donde $desde y $hasta estan en formato y-m-d, $cliente es un id que hacer referencia a una empresa cliente
 
    public function getVentasPorClienteyFecha($page,$desde,$hasta,$cliente,$ppage=20){
 
         return $this->paginate("page: $page", "per_page: $ppage", "plantas_id = $cliente and fecha between '$desde' and '$hasta'");
 
 
     }
 
     }
 
}?>
 
}?>
Línea 30: Línea 26:
 
public function reporte_despachos_por_cliente($page=1){
 
public function reporte_despachos_por_cliente($page=1){
 
     $venta = new Ventas();
 
     $venta = new Ventas();
     if($ventas = Input::request("ventas")){ // favor de revisar esta pregunta, creo que esta mal !!
+
     $cliente = 0; // cliente por defecto
$cliente = $ventas['plantas_id']; //guardo en $cliente, la selección del combobox de la vista
+
    $desde = date("Y-m-d"); //fecha de hoy
 +
    $hasta = date("Y-m-d"); //fecha de hoy
 +
    $ventas = Input::request("ventas"); // guardo todo lo que se envió desde el formulario de la vista
 +
    if($ventas){ // si se han enviado los datos del formulario de la vista
 +
$cliente = $ventas['clientes_id']; //guardo en $cliente, la selección del combobox de la vista
 
$desde = date("Y-m-d", strtotime($ventas['desde'])); //strtotime debido a que lee de un elemento jquery date_picker que entrega un valor en este formato ejemplo: '28 May 12'
 
$desde = date("Y-m-d", strtotime($ventas['desde'])); //strtotime debido a que lee de un elemento jquery date_picker que entrega un valor en este formato ejemplo: '28 May 12'
 
$hasta = date("Y-m-d", strtotime($ventas['hasta']));
 
$hasta = date("Y-m-d", strtotime($ventas['hasta']));
$this->listVentasPorCliente = $venta->getVentasPorClienteFiltrada($page,$desde,$hasta,$cliente);
 
    }else{ //en caso de no enviar datos (como pasa al cargar la vista) muestro la lista sin filtrar
 
        $this->listVentasPorCliente = $venta->getVentasPorCliente($page);
 
 
     }
 
     }
 +
    $this->listVentas = $venta->getVentas($page,$desde,$hasta,$cliente);
 
}
 
}
 
</source>
 
</source>
Línea 56: Línea 54:
  
 
<table>  
 
<table>  
<?php foreach ($listVentasPorCliente->items as $item) : ?>
+
<?php foreach ($listVentas->items as $item) : ?>
 
     <tr>
 
     <tr>
 
         <td><?php echo $item->fecha ?></td>
 
         <td><?php echo $item->fecha ?></td>
Línea 66: Línea 64:
 
</source>
 
</source>
  
[[Categoría:Tutoriales KumbiaPHP Beta2]]
+
[[Categoría:Tutoriales KumbiaPHP]]

Revisión actual del 16:42 16 mar 2015

{{#if: |}}

{{#if:

|}}


Introducción[editar]

Lo que se pretende es realizar consultas filtradas a nuestra base de datos, ya sea por fechas y/o por algún otro campo

Modelo[editar]

Crear el Modelo

[app]/models/ventas.php:

<?php
class Ventas extends ActiveRecord{
    public function getVentas($page,$desde,$hasta,$cliente, $ppage=20){
        return $this->paginate("page: $page", "per_page: $ppage", "clientes_id = $cliente AND DATE(fecha_at) between '$desde' and '$hasta'");
    }
}?>

Controller[editar]

[app]/controllers/ventas_controller.php:

public function reporte_despachos_por_cliente($page=1){
     $venta = new Ventas();
     $cliente = 0; // cliente por defecto
     $desde = date("Y-m-d"); //fecha de hoy
     $hasta = date("Y-m-d"); //fecha de hoy
     $ventas = Input::request("ventas"); // guardo todo lo que se envió desde el formulario de la vista
     if($ventas){ // si se han enviado los datos del formulario de la vista
	$cliente = $ventas['clientes_id']; //guardo en $cliente, la selección del combobox de la vista
	$desde = date("Y-m-d", strtotime($ventas['desde'])); //strtotime debido a que lee de un elemento jquery date_picker que entrega un valor en este formato ejemplo: '28 May 12'
	$hasta = date("Y-m-d", strtotime($ventas['hasta']));
     }
     $this->listVentas = $venta->getVentas($page,$desde,$hasta,$cliente);
}

Vista[editar]

[apps]/views/ventas/index.phtml

<?php echo Form::open(); // por defecto llama a la misma url ?>
    <?php echo Form::label('Cliente :','ventas.cliente'); ?>
    <?php echo Form::dbSelect('ventas.clientes_id','nombre'); ?>
    <?php echo Form::label('Fecha Desde :','ventas.desde'); ?>
    <?php echo Form::text('ventas.desde',"class='text date_picker'"); ?> <!-- suponiendo que hay una class css llamada 'text date_picker' -->
    <?php echo Form::label('Fecha Hasta :','ventas.hasta'); ?>
    <?php echo Form::text('ventas.hasta',"class='text date_picker'"); ?>
    <?php echo Form::submit('Filtrar'); ?>
<?php echo Form::close() ?>

<table> 
<?php foreach ($listVentas->items as $item) : ?>
    <tr>
        <td><?php echo $item->fecha ?></td>
	<td><?php echo $item->etc ?></td>
	<td><?php echo $item->etc ?></td>
    </tr>
<?php endforeach; ?>
</table>