Example #1
0
 public function registrar(Request $request)
 {
     $data = $request->all();
     $usuario = Auth::user()->id;
     $deposito = Auth::user()->deposito;
     $validator = Validator::make($data, ['documento' => 'required|numeric|documento_salida', 'tercero' => 'numeric|tercero:documento', 'insumos' => 'required|insumos_salida'], $this->menssage);
     if ($validator->fails()) {
         return Response()->json(['status' => 'danger', 'menssage' => $validator->errors()->first()]);
     } else {
         if (!isset($data['tercero']) || empty($data['tercero'])) {
             $tipo = Documento::where('id', $data['documento'])->value('tipo');
             if ($tipo == 'interno') {
                 $data['tercero'] = $deposito;
             } else {
                 return Response()->json(['status' => 'danger', 'menssage' => 'Seleccione un tercero']);
             }
         }
         $insumos = $data['insumos'];
         $insumosInvalidos = inventarioController::validaExist($insumos, $deposito);
         if ($insumosInvalidos) {
             return Response()->json(['status' => 'unexist', 'data' => $insumosInvalidos]);
         } else {
             //Codigo para la salida
             $code = $this->generateCode('S', $deposito);
             $salida = Salida::create(['codigo' => $code, 'tercero' => $data['tercero'], 'documento' => $data['documento'], 'usuario' => $usuario, 'deposito' => $deposito])['id'];
             foreach ($insumos as $insumo) {
                 $existencia = inventarioController::reduceInsumo($insumo['id'], $insumo['despachado'], $deposito);
                 Insumos_salida::create(['salida' => $salida, 'insumo' => $insumo['id'], 'solicitado' => $insumo['solicitado'], 'despachado' => $insumo['despachado'], 'deposito' => $deposito, 'existencia' => $existencia]);
             }
             return Response()->json(['status' => 'success', 'menssage' => 'Salida completada satisfactoriamente', 'codigo' => $code]);
         }
     }
 }