public function getFilterByArticleComments()
 {
     $title = 'Daños';
     $input = Input::all();
     $idsDamage = '0';
     $article = Article::find($input['article']);
     if (!empty($article)) {
         foreach ($article->damageItems as $ditems) {
             $idsDamage .= $ditems->damage->id . ',';
         }
     }
     $idsDamage = trim($idsDamage, ',');
     $damages = Damage::whereRaw('id in (' . $idsDamage . ')')->whereRaw('comments like "%' . $input['comments'] . '%"')->orderBy('id', 'desc')->paginate(6);
     $filterDamage = 'Daños que contienen el artículo <strong>' . $input['article'] . '</strong> y en los comentarios del remisionero <strong>' . $input['comments'] . '</strong>.';
     return View::make('damages.index')->with(compact('title', 'damages', 'filterDamage', 'input'));
 }
Exemple #2
0
 /**
  * Devuelve un arreglo con todos los movimientos de un artículo ordenados por fecha ascendente.
  * Mezcla compras, ventas, daños y entregas inmediatas.
  * Se excluyen las rotaciones porque se asume que todos los establecimientos están bajo el mismo nit.
  * Se creó esta función para tener un log del artículo sin importar la sucursal.
  */
 public function movimientos($fecha1, $fecha2)
 {
     //Arreglo que tendrá todos los movimientos
     $movimientos = [];
     //Inicio con las compras
     $ids = '0';
     $amounts = array();
     //Obtiene las compras que tienen el artículo actual dentro de sus items
     foreach ($this->purchaseItems as $item) {
         $ids .= $item->purchase->id . ',';
         $amounts[$item->purchase->id] = $item->amount;
     }
     //Convierte el string en un array
     $ids = trim($ids, ',');
     //Obtiene las compras del artículo actual
     $purchases = Purchase::whereRaw('id in (' . $ids . ')')->whereRaw('created_at BETWEEN "' . $fecha1 . '" AND "' . $fecha2 . '"')->orderBy('created_at', 'asc')->get();
     foreach ($purchases as $purchase) {
         $movimientos[] = array('fecha' => $purchase->created_at, 'tipo' => 'compra', 'id' => $purchase->id, 'sucursal' => $purchase->branch()->first()->name, 'cantidad' => $amounts[$purchase->id], 'estado' => $purchase->status, 'comentario' => $purchase->comments, 'nota' => isset($purchase->purchaseStore()->orderBy('created_at', 'desc')->first()->comments) ? $purchase->purchaseStore()->orderBy('created_at', 'desc')->first()->comments : '');
     }
     //Inicio con las ventas
     $ids = '0';
     $amounts = array();
     //Obtengo las ventas que tienen el artículo actual dentro de sus items
     foreach ($this->saleItems as $item) {
         $ids .= $item->sale->id . ',';
         $amounts[$item->sale->id] = $item->amount;
     }
     //Convierte el string en un array
     $ids = trim($ids, ',');
     //Obtiene las ventas del artículo actual
     $sales = Sale::whereRaw('id in (' . $ids . ')')->whereRaw('created_at BETWEEN "' . $fecha1 . '" AND "' . $fecha2 . '"')->orderBy('created_at', 'asc')->get();
     foreach ($sales as $sale) {
         $movimientos[] = array('fecha' => $sale->created_at, 'tipo' => 'venta', 'id' => $sale->id, 'sucursal' => $sale->branch()->first()->name, 'cantidad' => $amounts[$sale->id], 'estado' => $sale->status, 'comentario' => $sale->comments, 'nota' => isset($sale->saleStore()->orderBy('created_at', 'desc')->first()->comments) ? $sale->saleStore()->orderBy('created_at', 'desc')->first()->comments : '');
     }
     //Inicio con los daños
     $ids = '0';
     $amounts = array();
     //Obtengo los daños que tienen el artículo actual dentro de sus items
     foreach ($this->damageItems as $item) {
         $ids .= $item->damage->id . ',';
         $amounts[$item->damage->id] = $item->amount;
     }
     //Convierte el string en un array
     $ids = trim($ids, ',');
     //Obtiene los daños del artículo actual
     $damages = Damage::whereRaw('id in (' . $ids . ')')->whereRaw('created_at BETWEEN "' . $fecha1 . '" AND "' . $fecha2 . '"')->orderBy('created_at', 'asc')->get();
     foreach ($damages as $damage) {
         $movimientos[] = array('fecha' => $damage->created_at, 'tipo' => 'daño', 'id' => $damage->id, 'sucursal' => $damage->branch()->first()->name, 'cantidad' => $amounts[$damage->id], 'estado' => $damage->status, 'comentario' => $damage->comments, 'nota' => isset($damage->damageStore()->orderBy('created_at', 'desc')->first()->comments) ? $damage->damageStore()->orderBy('created_at', 'desc')->first()->comments : '');
     }
     //Inicio con las entregas inmediatas
     $ids = '0';
     $amounts = array();
     //Obtengo las entregas inmediatas que tienen el artículo actual dentro de sus items
     foreach ($this->instantItems as $item) {
         $ids .= $item->instant->id . ',';
         $amounts[$item->instant->id] = $item->amount;
     }
     //Convierte el string en un array
     $ids = trim($ids, ',');
     //Obtiene las entregas inmediatas del artículo actual
     $instants = Instant::whereRaw('id in (' . $ids . ')')->whereRaw('created_at BETWEEN "' . $fecha1 . '" AND "' . $fecha2 . '"')->orderBy('created_at', 'asc')->get();
     foreach ($instants as $instant) {
         $movimientos[] = array('fecha' => $instant->created_at, 'tipo' => 'entrega inmediata', 'id' => $instant->id, 'sucursal' => $instant->branch()->first()->name, 'cantidad' => $amounts[$instant->id], 'estado' => $instant->status, 'comentario' => $instant->comments, 'nota' => isset($instant->instantStore()->orderBy('created_at', 'desc')->first()->comments) ? $instant->instantStore()->orderBy('created_at', 'desc')->first()->comments : '');
     }
     //Ordena el arreglo por el primer elemento de los arreglos internos fecha
     asort($movimientos);
     return $movimientos;
 }