public function obtenerDepositos(DepositoConsultaRequest $request) { if ($request->plaza == '' && $request->fecha == '' && $request->monto == '' && $request->referencia == '') { $depositos = Deposito::all(); } else { $query = Deposito::select('contabilidad_depositos.*'); if ($request->plaza) { $plazaF = Place::where('Clave', $request->plaza)->first(); $plaza = $plazaF->Oficina; $query->join('contabilidad_deposito_aplicacion', 'contabilidad_depositos.id', '=', 'contabilidad_deposito_aplicacion.deposito_id')->join('contabilidad_sales', 'contabilidad_sales.id', '=', 'contabilidad_deposito_aplicacion.venta_id')->where(function ($query) use($plaza) { $query->where('cl_location', $plaza)->where('op_location', $plaza); }); } if ($request->fecha) { $fecha = Carbon::createFromFormat('m/d/Y', $request->fecha); $query->orWhere(function ($query) use($fecha) { $query->whereDate('fecha', '=', $fecha->toDateString()); }); } if ($request->monto) { $query->orWhere('monto', $request->monto); } if ($request->referencia) { $referencia = $request->referencia; if ($request->plaza) { $query->where(function ($query) use($referencia) { $query->where('reference', $referencia); }); } else { $query->join('contabilidad_deposito_aplicacion', 'contabilidad_depositos.id', '=', 'contabilidad_deposito_aplicacion.deposito_id')->join('contabilidad_sales', 'contabilidad_sales.id', '=', 'contabilidad_deposito_aplicacion.venta_id')->orWhere(function ($query) use($referencia) { $query->where('reference', $referencia); }); } } $depositos = $query->distinct()->get(); } if (count($depositos) > 0) { foreach ($depositos as $deposito) { $deposito->load('depositosaplicados', 'depositosaplicados.venta', 'usuariocancelacion'); } } return response()->json($depositos); }