/** * Show the form for creating a new resource. * * @return Response */ public function create(Request $request) { $cuenta = Cuenta::lists('nombre', 'codigo')->all(); $cuenta = array('' => 'Seleccionar...') + $cuenta; if ($request->ajax()) { $subcuenta = $this->listaSubcuenta($request->codigo); return response()->json($subcuenta); } $subcuenta = ""; //$subcuenta = SubCuenta::lists('nombre', 'id')->all(); // //$subcuenta = array('' => 'Seleccionar...') + $subcuenta; $proveedor = Proveedor::lists('nombre', 'id')->all(); // $proveedor = array('' => 'Seleccionar...') + $proveedor; $deposito = Deposito::lists('nombre', 'id')->all(); // $deposito = array('' => 'Seleccionar...') + $deposito; $marca = Marca::lists('nombre', 'id')->all(); // $marca = array('' => 'Seleccionar...') + $marca; $modelo = Modelo::lists('nombre', 'id')->all(); // $modelo = array('' => 'Seleccionar...') + $modelo; return view('carga.create', compact('proveedor', 'cuenta', 'subcuenta', 'marca', 'modelo', 'deposito')); }
/** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { $producto = Producto::findOrFail($id); if ($producto->tip_destino == 1) { $ubicacion = Deposito::findOrFail($producto->cod_destino); } if ($producto->tip_destino == 2) { $ubicacion = Dependencia::findOrFail($producto->cod_destino); } if ($producto->tip_destino == 3) { $ubicacion = Agente::findOrFail($producto->cod_destino); } if ($producto->tip_destino == 4) { $ubicacion = Producto::findOrFail($producto->cod_destino); } return view('producto.show', compact('producto', 'ubicacion')); }
/** * Bootstrap any application services. * * @return void */ public function boot() { /** * Custom validation rules */ Validator::extend('alpha_spaces', function ($attribute, $value) { return preg_match('/^[\\pL\\s]+$/u', $value); }); Validator::extend('cedula', function ($attribute, $value) { return preg_match('/^([0-9]{6,8})$/', $value); }); Validator::extend('rif', function ($attribute, $value) { return preg_match('/^([J,G,N]-([0-9]{8,12}))$/', $value); }); Validator::extend('equal_provedor', function ($attribute, $value, $parameters) { $orden = Input::get($parameters[0]); $entrada = Entrada::where('orden', $orden)->value('provedor'); if (!$entrada) { return true; } else { if ($value != $entrada) { return false; } return true; } }); Validator::extend('diff_provedor', function ($attribute, $value, $parameters) { if (empty($value)) { return true; } else { $id = Input::get($parameters[0]); $entrada = Entrada::where('id', $id)->value('provedor'); if ($value == $entrada) { return false; } return true; } }); Validator::extend('diff_orden', function ($attribute, $value, $parameters) { if (empty($value)) { return true; } else { $id = Input::get($parameters[0]); $entrada = Entrada::where('id', $id)->value('orden'); if ($value == $entrada) { return false; } return true; } }); Validator::extend('diff_departamento', function ($attribute, $value, $parameters) { $id = Input::get($parameters[0]); $salida = Salida::where('id', $id)->value('departamento'); if ($value == $salida) { return false; } return true; }); Validator::extend('insumos', function ($attribute, $value) { if (empty($value) || !is_array($value)) { return false; } else { foreach ($value as $insumo) { if (!isset($insumo['cantidad']) || !isset($insumo['id']) || $insumo['cantidad'] <= 0 || !Insumo::where('id', $insumo['id'])->first()) { return false; } } } return true; }); Validator::extend('insumos_salida', function ($attribute, $value) { if (empty($value) || !is_array($value)) { return false; } else { foreach ($value as $insumo) { if (!isset($insumo['solicitado']) || !isset($insumo['despachado']) || !isset($insumo['id']) || $insumo['solicitado'] <= 0 || $insumo['despachado'] <= 0 || $insumo['solicitado'] < $insumo['despachado'] || !Insumo::withTrashed()->where('id', $insumo['id'])->first()) { return false; } } } return true; }); Validator::extend('insumos_alarmas', function ($attribute, $value) { if (empty($value) || !is_array($value)) { return false; } else { foreach ($value as $insumo) { if (!isset($insumo['id']) || !isset($insumo['min']) || !isset($insumo['med'])) { return false; } if ($insumo['min'] <= 0 || $insumo['med'] <= 0 || $insumo['min'] >= $insumo['med']) { return false; } } } return true; }); Validator::extend('insumos_validate_e', function ($attribute, $value) { foreach ($value as $insumo) { if (!isset($insumo['cantidad'])) { continue; } $originalI = Insumos_entrada::where('id', $insumo['id'])->first(); if (!isset($insumo['id']) || !$originalI || $originalI['cantidad'] == $insumo['cantidad'] || $insumo['cantidad'] < 0) { return false; } } return true; }); Validator::extend('insumos_validate_s', function ($attribute, $value) { foreach ($value as $insumo) { if (!isset($insumo['despachado'])) { continue; } $originalI = insumos_salida::where('id', $insumo['id'])->first(); if (!isset($insumo['id']) || !$originalI || $insumo['despachado'] == $originalI['despachado'] || $insumo['despachado'] < 0) { return false; } if (!isset($insumo['solicitado'])) { if ($originalI['solicitado'] < $insumo['despachado']) { return false; } } else { if (!is_int($insumo['solicitado']) || $insumo['solicitado'] < 0 || $insumo['solicitado'] == $originalI['solicitado']) { return false; } } } return true; }); Validator::extend('one_insumo_entrada', function ($attribute, $value, $parameters) { $entrada = Input::get($parameters[0]); $insumos = Insumos_entrada::where('entrada', $entrada)->get(); if ($insumos->count() == 1 && isset($value[0]['cantidad']) && $value[0]['cantidad'] == 0) { return false; } return true; }); Validator::extend('one_insumo_salida', function ($attribute, $value, $parameters) { $salida = Input::get($parameters[0]); $insumos = Insumos_salida::where('salida', $salida)->get(); if ($insumos->count() == 1 && isset($value[0]['despachado']) && $value[0]['despachado'] == 0) { return false; } return true; }); Validator::extend('insumo', function ($attribute, $value) { if (!Insumo::where('id', $value)->first()) { return false; } return true; }); Validator::extend('insumo_with_daleted', function ($attribute, $value) { if (!insumo::withTrashed()->where('id', $value)->first()) { return false; } return true; }); Validator::extend('deposito', function ($attribute, $value) { if (!Deposito::where('id', $value)->first()) { return false; } return true; }); Validator::extend('date_limit_current', function ($attribute, $value) { $value = str_replace('/', '-', $value); if (strtotime($value) > strtotime(date("Y-m-d"))) { return false; } return true; }); Validator::extend('insumos_ids_array', function ($attribute, $value) { if (!is_array($value)) { return false; } foreach ($value as $v) { if (!insumos_salida::where('id', $v)->first()) { return false; } } return true; }); Validator::extend('documento_salida', function ($attribute, $value) { $documento = Documento::where('id', $value)->first(); if (!$documento) { return false; } return $documento->naturaleza == 'salida'; }); Validator::extend('documento_entrada', function ($attribute, $value) { $documento = Documento::where('id', $value)->first(); if (!$documento) { return false; } return $documento->naturaleza == 'entrada'; }); Validator::extend('tercero', function ($attribute, $value, $parameters) { $documento = Input::get($parameters[0]); $tipo = Documento::where('id', $documento)->value('tipo'); if ($tipo == 'interno') { return true; } if ($tipo == 'proveedor') { return Provedore::where('id', $value)->first(); } if ($tipo == 'servicio') { return Departamento::where('id', $value)->first(); } if ($tipo == 'deposito') { $deposito = Auth::user()->deposito; return Deposito::where('id', $value)->where('id', '!=', $deposito)->first(); } }); Validator::extend('permissions', function ($attribute, $value) { if (!is_array($value)) { return false; } else { foreach ($value as $permiso) { if (!Permission::where('id', $permiso)->first()) { return false; } } } return true; }); Validator::extend('rol', function ($attribute, $value) { return Role::where('id', $value)->first(); }); Validator::extend('movimiento', function ($attribute, $value, $parameters) { $documento = Input::get($parameters[0]); $documento = Documento::where('id', $documento)->value('id'); $deposito = Auth::user()->deposito; if (Entrada::where('id', $value)->where('documento', $documento)->where('deposito', $deposito)->first()) { return true; } else { if (Salida::where('id', $value)->where('documento', $documento)->where('deposito', $deposito)->first()) { return true; } else { return false; } } }); Validator::extend('documento', function ($attribute, $value) { return Documento::where('id', $value)->first(); }); Validator::extend('documento_same_nature', function ($attribute, $value, $parameters) { $id = Input::get($parameters[0]); $ori_naturaleza = Documento::where('id', $id)->value('naturaleza'); $up_naturaleza = Documento::where('id', $value)->value('naturaleza'); return $ori_naturaleza == $up_naturaleza; }); Validator::extend('document_not_equal', function ($attribute, $value, $parameters) { $id = Input::get($parameters[0]); $ori_documento = Documento::where('id', $id)->value('id'); $up_documento = Documento::where('id', $value)->value('id'); return !($ori_documento == $up_documento); }); }
private function generateCode($prefix, $deposito) { //Obtiene Codigo del deposito $depCode = Deposito::where('id', $deposito)->value('codigo'); return strtoupper($depCode . '-' . $prefix . str_random(7)); }
public function datatables() { $data = Deposito::Datatables()->get(); return Datatables::of(collect($data))->editColumn('nombre', function ($data) { return '<a href="deposito/' . $data->id . '" >' . $data->nombre . '</a>'; })->addColumn('action', function ($data) { return '<a href="deposito/' . $data->id . '/edit" class="btn btn-xs btn-primary">Edit</a>' . ' / <form method="POST" action="http://localhost/inventario/deposito/ ' . $data->id . '" accept-charset="UTF-8" style="display:inline"><input name="_method" type="hidden" value="DELETE"><input name="_token" type="hidden" value="' . csrf_token() . '"><button type="submit" class="btn btn-danger btn-xs">Borrar</button></form>'; })->make(true); }
private function listProduc($datas) { $data = []; $ubicacion = null; foreach ($datas as $value) { if ($value->tip_destino == 1) { $deposito = Deposito::findOrFail($value->cod_destino); $ubicacion = $deposito->nombre; } else { if ($value->tip_destino == 2) { $dependencia = Dependencia::findOrFail($value->cod_destino); $ubicacion = $dependencia->nombre; } else { if ($value->tip_destino == 3) { $agente = Agente::findOrFail($value->cod_destino); $ubicacion = $agente->apellido . ' ' . $agente->nombre; } else { $producto = Producto::findOrFail($value->cod_destino); $ubicacion = $producto->nombre; } } } array_push($data, array('id' => $value->id, 'nombre' => $value->nombre, 'nro_serie' => $value->nro_serie, 'id_patrimonial' => $value->id_patrimonial, 'ubicacion' => $ubicacion, 'detalle' => $value->detalle)); } return $data; }
public function getKardex(Request $request) { $data = $request->all(); $validator = Validator::make($data, ['insumo' => 'required|integer|insumo_with_daleted', 'dateI' => 'required|date_format:d/m/Y', 'dateF' => 'required|date_format:d/m/Y']); if ($validator->fails()) { abort("404"); } $deposito = Auth::user()->deposito; $insumo = $data['insumo']; /** *Si se ha pasado una fecha inicial a consultar *se convirte en el formato de fecha a utilizar, *de lo contrario se toma como fecha inicial *la fecha del primer mes del año en curso. */ if (isset($data['dateI']) && !empty($data['dateI'])) { $dateConvert = str_replace('/', '-', $data['dateI']); $dateI = Date("Y-m-d", strtotime($dateConvert)); } else { $dateI = date("Y-01-01"); } /** *Si se ha pasado una fecha final a consultar *se convirte en el formato de fecha a utilizar, *de lo contrario se toma como fecha final *la fecha del ultimo mes del año en curso. */ if (isset($data['dateF']) && !empty($data['dateF'])) { $dateConvert = str_replace('/', '-', $data['dateF']); $dateF = Date("Y-m-d", strtotime($dateConvert)); } else { $dateF = date("Y-12-31"); } //Campos comunes a seleccionar en las salidas. $select_salida = ['insumos_salidas.despachado as movido', 'insumos_salidas.created_at as fulldate', 'documentos.naturaleza as type', 'documentos.nombre as concepto', DB::raw('DATE_FORMAT(insumos_salidas.created_at, "%d/%m/%Y") as fecha')]; //Campos comunes a seleccionar en las entradas. $select_entrada = ['insumos_entradas.cantidad as movido', 'insumos_entradas.created_at as fulldate', 'documentos.naturaleza as type', 'documentos.nombre as concepto', DB::raw('DATE_FORMAT(insumos_entradas.created_at, "%d/%m/%Y") as fecha')]; /** *Almacena las consultas base para obtener los datos de las salidas, *NOTA: debido a la imposibilidad para usar una solo query para traer *todos los registros en las querys espesificas, se almacena la misma *query un arreglo. */ for ($i = 0; $i < 4; $i++) { $query_s[$i] = DB::table('insumos_salidas')->where('insumo', $insumo)->where('insumos_salidas.deposito', $deposito)->join('salidas', 'insumos_salidas.salida', '=', 'salidas.id')->join('documentos', 'salidas.documento', '=', 'documentos.id')->whereBetween(DB::raw('DATE_FORMAT(insumos_salidas.created_at, "%Y-%m-%d")'), [$dateI, $dateF])->select($select_salida); } /** *Almacena las consultas base para obtener los datos de las entradas, *NOTA: debido a la imposibilidad para usar una solo query para traer *todos los registros en las querys espesificas, se almacena la misma *query un arreglo. */ for ($i = 0; $i < 4; $i++) { $query_e[$i] = DB::table('insumos_entradas')->where('insumo', $insumo)->where('insumos_entradas.deposito', $deposito)->join('entradas', 'insumos_entradas.entrada', '=', 'entradas.id')->join('documentos', 'entradas.documento', '=', 'documentos.id')->whereBetween(DB::raw('DATE_FORMAT(insumos_entradas.created_at, "%Y-%m-%d")'), [$dateI, $dateF])->select($select_entrada); } //Querys espesificas para cada tipo de salida. $salida_servicios = $query_s[0]->join('departamentos', 'salidas.tercero', '=', 'departamentos.id')->where('documentos.tipo', 'servicio')->where('documentos.naturaleza', 'salida')->addSelect('departamentos.nombre as pod', 'insumos_salidas.existencia'); $salida_provedores = $query_s[1]->join('provedores', 'salidas.tercero', '=', 'provedores.id')->where('documentos.tipo', 'proveedor')->where('documentos.naturaleza', 'salida')->addSelect('provedores.nombre as pod', 'insumos_salidas.existencia'); $salida_depositos = $query_s[2]->join('depositos', 'salidas.tercero', '=', 'depositos.id')->where('documentos.tipo', 'deposito')->where('documentos.naturaleza', 'salida')->addSelect('depositos.nombre as pod', 'insumos_salidas.existencia'); $salida_internos = $query_s[3]->join('depositos', 'salidas.tercero', '=', 'depositos.id')->where('documentos.tipo', 'interno')->where('documentos.naturaleza', 'salida')->addSelect('depositos.nombre as pod', 'insumos_salidas.existencia'); //Querys espesificas para cada tipo de entrada. $entradas_servicios = $query_e[0]->join('departamentos', 'entradas.tercero', '=', 'departamentos.id')->where('documentos.tipo', 'servicio')->where('documentos.naturaleza', 'entrada')->addSelect('departamentos.nombre as pod', 'insumos_entradas.existencia'); $entradas_provedores = $query_e[1]->join('provedores', 'entradas.tercero', '=', 'provedores.id')->where('documentos.tipo', 'proveedor')->where('documentos.naturaleza', 'entrada')->addSelect('provedores.nombre as pod', 'insumos_entradas.existencia'); $entradas_depositos = $query_e[2]->join('depositos', 'entradas.tercero', '=', 'depositos.id')->where('documentos.tipo', 'deposito')->where('documentos.naturaleza', 'entrada')->addSelect('depositos.nombre as pod', 'insumos_entradas.existencia'); $entradas_internos = $query_e[3]->join('depositos', 'entradas.tercero', '=', 'depositos.id')->where('documentos.tipo', 'interno')->where('documentos.naturaleza', 'entrada')->addSelect('depositos.nombre as pod', 'insumos_entradas.existencia'); //Une todas las consultas de entradas y salidas. $uniones = $salida_servicios->unionAll($salida_provedores)->unionAll($salida_depositos)->unionAll($salida_internos)->unionAll($entradas_servicios)->unionAll($entradas_provedores)->unionAll($entradas_depositos)->unionAll($entradas_internos); //Realiza todas las consultas y establece el orden en los resultados. $movimientos = $uniones->orderBy('fulldate', 'asc')->get(); //Obtiene la informacion del insumo $insumoData = DB::table('insumos')->where('id', $data['insumo'])->first(['codigo', 'descripcion']); //Obtiene nombre del deposito $deposito = Deposito::where('id', $deposito)->value('nombre'); //Obtiene usuario $usuario = Auth::user()->email; $view = \View::make('reportes.pdfs.kardex', compact('insumoData', 'deposito', 'usuario', 'movimientos'), ['dateI' => $data['dateI'], 'dateF' => $data['dateF']])->render(); $pdf = \App::make('dompdf.wrapper'); $pdf->loadHTML($view); return $pdf->stream('Kardex'); }
public function getDeposito() { $deposito = Auth::user()->deposito; return Deposito::where('id', $deposito)->value('nombre'); }
public function allTerceros($tipo = null) { switch ($tipo) { case 'proveedor': return Provedore::get(['id', 'nombre', DB::raw('("proveedor") as type')]); break; case 'servicio': return Departamento::get(['id', 'nombre', DB::raw('("servicio") as type')]); break; case 'deposito': $deposito = Auth::user()->deposito; return Deposito::where('id', '!=', $deposito)->get(['id', 'nombre', DB::raw('("deposito") as type')]); default: $deposito = Auth::user()->deposito; $provedores = DB::table('provedores')->where('deleted_at', null)->select('id', 'nombre', DB::raw('("proveedor") as type')); $servicios = DB::table('departamentos')->where('deleted_at', null)->select('id', 'nombre', DB::raw('("servicio") as type')); $depositos = DB::table('depositos')->where('id', '!=', $deposito)->where('deleted_at', null)->select('id', 'nombre', DB::raw('("deposito") as type')); $interno = DB::table('depositos')->where('id', $deposito)->select('id', 'nombre', DB::raw('("interno") as type')); return $provedores->unionAll($servicios)->unionAll($depositos)->unionAll($interno)->orderBy('id', 'desc')->get(); break; } }
public function registrar(Request $request) { $data = $request->all(); $validator = Validator::make($data, ['documento' => 'required|numeric|documento', 'movimiento' => 'required|numeric|movimiento:documento', 'update_documento' => 'numeric|documento|document_not_equal:documento|documento_same_nature:documento', 'update_tercero' => 'numeric'], $this->menssage); if ($validator->fails()) { return Response()->json(['status' => 'danger', 'message' => $validator->errors()->first()]); } else { $deposito = Auth::user()->deposito; //Valida si no se han realizado modificaciones. if (empty($data['update_documento']) && empty($data['update_tercero'])) { return Response()->json(['status' => 'danger', 'message' => 'No se han hecho modificaciones']); } //Obtiene el documento actual asignado al movimiento. $ori_documento = Documento::where('id', $data['documento'])->firstOrFail(); if (!empty($data['update_documento'])) { //Obtiene el documento a modificar. $up_documento = Documento::where('id', $data['update_documento'])->firstOrFail(); } //Valida si el documento original y el documento a modificar tiene el mismo tipo. if ($data['update_documento'] && empty($data['update_tercero'])) { if ($up_documento['tipo'] == 'interno') { if ($ori_documento['tipo'] != 'interno') { $data['update_tercero'] = $deposito; } } else { if ($ori_documento['tipo'] != $up_documento['tipo']) { return Response()->json(['status' => 'danger', 'message' => 'Seleccione un tercero para realizar la modificación.']); } } } //Valida que el tercero a modificar existe en el tipo del documento. if (!empty($data['update_tercero']) && !empty($data['update_documento']) && $up_documento['tipo'] != 'interno') { if ($up_documento) { $tipo = $up_documento['tipo']; } else { $tipo = $ori_documento['tipo']; } switch ($tipo) { case 'proveedor': if (!Provedore::where('id', $data['update_tercero'])->first()) { return Response()->json(['status' => 'danger', 'message' => 'Tercero no existe']); } break; case 'servicio': if (!Departamento::where('id', $data['update_tercero'])->first()) { return Response()->json(['status' => 'danger', 'message' => 'Tercero no existe']); } break; case 'deposito': if (!Deposito::where('id', $data['update_tercero'])->where('id', '!=', $deposito)->first()) { return Response()->json(['status' => 'danger', 'message' => 'Tercero no existe']); } break; } } //Localiza el movimiento. if ($ori_documento['naturaleza'] == 'entrada') { $movimiento = Entrada::where('id', $data['movimiento'])->where('deposito', $deposito)->first(); } else { $movimiento = Salida::where('id', $data['movimiento'])->where('deposito', $deposito)->first(); } //Si el tercero a modificar es el mismo del movimiento original se regresa un mensaje de error. if (!empty($data['update_tercero'])) { if (!empty($data['update_documento'])) { if ($ori_documento['tipo'] == $up_documento['tipo'] && $movimiento['tercero'] == $data['update_tercero']) { return Response()->json(['status' => 'danger', 'message' => 'Seleccione un tercero diferente para realizar la modificacion']); } } else { if ($movimiento['tercero'] == $data['update_tercero']) { return Response()->json(['status' => 'danger', 'message' => 'Seleccione un tercero diferente para realizar la modificacion']); } } } //Se preparan los datos que se llenaran por defecto en cada registro. $register = ['movimiento' => $data['movimiento'], 'naturaleza' => $ori_documento['naturaleza'], 'original_documento' => $data['documento'], 'original_tercero' => $movimiento['tercero'], 'deposito' => $deposito]; //Si el documento asignado sera modificado se prepara en los datos a registrar. if (!empty($data['update_documento'])) { $register['updated_documento'] = $data['update_documento']; } //Si el tercero asignado sera modificado se prepara en los datos a registar if (!empty($data['update_tercero'])) { $register['updated_tercero'] = $data['update_tercero']; } //Almacena el registro. Modification::create($register); //Se realiza la operacion de modificacion del movimiento. $register = []; //Modifica el documento si se a establecido modificacion if ($data['update_documento']) { $register['documento'] = $up_documento['id']; } //Modifica el tercero si se a establecido modificacion if ($data['update_tercero']) { $register['tercero'] = $data['update_tercero']; } if ($ori_documento['naturaleza'] == 'entrada') { Entrada::where('id', $movimiento['id'])->update($register); } else { Salida::where('id', $movimiento['id'])->update($register); } return Response()->json(['status' => 'success', 'message' => 'Modificacion registrada']); } }
public function getDepositoName() { return Deposito::where('id', $this->deposito)->value('nombre'); }