You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
770 lines
31 KiB
PHP
770 lines
31 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Models\pecosaBienes;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
use App\Models\inventarioInicial;
|
|
use App\Models\neaBienes;
|
|
|
|
class PecosaBienesController extends Controller
|
|
{
|
|
|
|
|
|
public function listPecosaBienes(Request $request)
|
|
{
|
|
|
|
try {
|
|
|
|
$neaQuery = DB::table('pecosa_bienes as pb')
|
|
->join('pecosa_pedidos as pd', 'pb.id_pecosa_pedido', '=', 'pd.id')
|
|
->join('nea_bienes', 'pb.nea_bien_id', '=', 'nea_bienes.id')
|
|
->join('bienes', 'nea_bienes.bienes_id', '=', 'bienes.id')
|
|
->join('unidad_medidas', 'bienes.id_unidad_medida', '=', 'unidad_medidas.id')
|
|
->select(
|
|
'pd.codigo as codigo_pedido',
|
|
'bienes.descripcion',
|
|
'unidad_medidas.nombre as unidad_medida',
|
|
'bienes.codigo as codigo_bien',
|
|
'nea_bienes.cantidad',
|
|
'nea_bienes.precio',
|
|
DB::raw('(nea_bienes.cantidad * nea_bienes.precio) as valor_total'),
|
|
'pb.observaciones'
|
|
);
|
|
|
|
// Segunda parte: con inventario_inicials
|
|
$inventarioQuery = DB::table('pecosa_bienes as pb')
|
|
->join('pecosa_pedidos as pd', 'pb.id_pecosa_pedido', '=', 'pd.id')
|
|
->join('inventario_inicials', 'pb.id_inventario_inicial', '=', 'inventario_inicials.id')
|
|
->join('bienes', 'inventario_inicials.bienes_id', '=', 'bienes.id')
|
|
->join('unidad_medidas', 'bienes.id_unidad_medida', '=', 'unidad_medidas.id')
|
|
->select(
|
|
'pd.codigo as codigo_pedido',
|
|
'bienes.descripcion',
|
|
'unidad_medidas.nombre as unidad_medida',
|
|
'bienes.codigo as codigo_bien',
|
|
'inventario_inicials.cantidad',
|
|
'inventario_inicials.precio',
|
|
DB::raw('(inventario_inicials.cantidad * inventario_inicials.precio) as valor_total'),
|
|
'pb.observaciones'
|
|
);
|
|
|
|
// Unir ambas
|
|
$data = $neaQuery->unionAll($inventarioQuery)->get();
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Lista de Pecosa Bienes',
|
|
'data' => $data
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage() // Devuelve el mensaje de la excepción
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function store_inventario(Request $request)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas agregar inventario bienes')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$rules = [
|
|
'registros' => 'required|array',
|
|
'registros.*.id_pecosa_pedido' => 'nullable',
|
|
'registros.*.id_inventario_inicial' => 'nullable',
|
|
'registros.*.descripcion' => 'nullable',
|
|
'registros.*.cantidad' => 'required|numeric',
|
|
'registros.*.id_unidad_medida' => 'required',
|
|
'registros.*.observaciones' => 'required',
|
|
'registros.*.fecha' => 'required|date',
|
|
];
|
|
|
|
$messages = [
|
|
'registros.required' => 'El campo registros es obligatorio.',
|
|
'registros.array' => 'El campo registros debe ser un arreglo.',
|
|
'registros.*.nea_bien_id.exists' => 'El nea_bien_id no existe en la base de datos.',
|
|
];
|
|
|
|
// Validación
|
|
$validator = Validator::make($request->all(), $rules, $messages);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Errores de validación',
|
|
'errors' => $validator->errors()
|
|
], 422);
|
|
}
|
|
|
|
$data = $validator->validated();
|
|
|
|
foreach ($data['registros'] as &$registro) {
|
|
$registro['id'] = (string) Str::uuid(); // Generar UUID
|
|
|
|
if (!empty($registro['id_inventario_inicial'])) {
|
|
// Si el ID de inventario inicial existe, actualizar la cantidad
|
|
$inventario = inventarioInicial::find($registro['id_inventario_inicial']);
|
|
|
|
if ($inventario) {
|
|
$inventario->cantidad -= $registro['cantidad'];
|
|
|
|
if ($inventario->cantidad < 0) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => "No hay suficiente stock para el bien."
|
|
], 400);
|
|
}
|
|
|
|
$inventario->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Insertar en PecosaBienes
|
|
PecosaBienes::insert($data['registros']);
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Registros guardados correctamente'
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function store_nea_bienes(Request $request)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas agregar neas bienes')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$rules = [
|
|
'registros' => 'required|array',
|
|
'registros.*.id_pecosa_pedido' => 'nullable',
|
|
'registros.*.nea_bien_id' => 'nullable|exists:nea_bienes,id', // Validar existencia en la tabla
|
|
'registros.*.descripcion' => 'nullable',
|
|
'registros.*.cantidad' => 'required|numeric',
|
|
'registros.*.id_unidad_medida' => 'required',
|
|
'registros.*.observaciones' => 'required',
|
|
'registros.*.fecha' => 'required|date',
|
|
];
|
|
|
|
$messages = [
|
|
'registros.required' => 'El campo registros es obligatorio.',
|
|
'registros.array' => 'El campo registros debe ser un arreglo.',
|
|
'registros.*.nea_bien_id.exists' => 'El nea_bien_id no existe en la base de datos.',
|
|
];
|
|
|
|
// Validación
|
|
$validator = Validator::make($request->all(), $rules, $messages);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Errores de validación',
|
|
'errors' => $validator->errors()
|
|
], 422);
|
|
}
|
|
|
|
$data = $validator->validated();
|
|
|
|
foreach ($data['registros'] as &$registro) {
|
|
$registro['id'] = (string) Str::uuid(); // Generar UUID
|
|
|
|
if (!empty($registro['nea_bien_id'])) {
|
|
// Si el ID de nea bien existe, actualizar la cantidad
|
|
$inventario_neas = neaBienes::find($registro['nea_bien_id']);
|
|
|
|
if ($inventario_neas) {
|
|
$inventario_neas->cantidad -= $registro['cantidad'];
|
|
|
|
if ($inventario_neas->cantidad < 0) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => "No hay suficiente stock."
|
|
], 400);
|
|
}
|
|
|
|
$inventario_neas->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Insertar en PecosaBienes
|
|
PecosaBienes::insert($data['registros']);
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Registros guardados correctamente'
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function listNeasBienes(Request $request, $id)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas vista')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$data = DB::table('pecosa_bienes as p')
|
|
->join('nea_bienes as n', 'n.id', '=', 'p.nea_bien_id')
|
|
->join('bienes as b', 'b.id', '=', 'n.bienes_id')
|
|
->join('unidad_medidas as u', 'u.id', '=', 'b.id_unidad_medida')
|
|
|
|
->select(
|
|
'b.descripcion AS descripcion_bien',
|
|
'n.cantidad as cantidad_stock',
|
|
'u.nombre as nombre_medida',
|
|
'p.*',
|
|
'p.id_unidad_medida AS medida_salida',
|
|
DB::raw("DATE_FORMAT(p.fecha, '%Y-%m-%d') as fecha_registro"),
|
|
'p.descripcion as descripcion_pecosa_bien'
|
|
)
|
|
->where('p.id_pecosa_pedido', $id)
|
|
->get();
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Lista de NEAS de bienes',
|
|
'data' => $data
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage() // Devuelve el mensaje de la excepción
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function listNeasBienesEnable(Request $request, $id)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas vista')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$data = DB::table('pecosa_bienes as p')
|
|
->join('nea_bienes as n', 'n.id', '=', 'p.nea_bien_id')
|
|
->join('bienes as b', 'b.id', '=', 'n.bienes_id')
|
|
->join('unidad_medidas as u', 'u.id', '=', 'b.id_unidad_medida')
|
|
|
|
->select(
|
|
'b.descripcion AS descripcion_bien',
|
|
'n.cantidad as cantidad_stock',
|
|
'u.nombre as nombre_medida',
|
|
'p.*',
|
|
'p.id_unidad_medida AS medida_salida',
|
|
DB::raw("DATE_FORMAT(p.fecha, '%Y-%m-%d') as fecha_registro"),
|
|
'p.descripcion as descripcion_pecosa_bien'
|
|
)
|
|
->where('p.id_pecosa_pedido', $id)
|
|
->where('p.status', 1) // Solo los registros habilitados
|
|
->get();
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Lista de NEAS de bienes',
|
|
'data' => $data
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage() // Devuelve el mensaje de la excepción
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function listInventarioBienes(Request $request, $id)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas vista')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$data = DB::table('pecosa_bienes as p')
|
|
->join('inventario_inicials as n', 'n.id', '=', 'p.id_inventario_inicial')
|
|
->join('bienes as b', 'b.id', '=', 'n.bienes_id')
|
|
->join('unidad_medidas as u', 'u.id', '=', 'b.id_unidad_medida')
|
|
|
|
->select(
|
|
'b.descripcion AS descripcion_bien',
|
|
'n.cantidad as cantidad_stock',
|
|
'u.nombre as nombre_medida',
|
|
'p.*',
|
|
'p.id_unidad_medida AS medida_salida',
|
|
DB::raw("DATE_FORMAT(p.fecha, '%Y-%m-%d') as fecha_registro"),
|
|
'p.descripcion as descripcion_pecosa_bien'
|
|
)
|
|
->where('p.id_pecosa_pedido', $id)
|
|
->get();
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Lista de Inevntario de bienes',
|
|
'data' => $data
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage() // Devuelve el mensaje de la excepción
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function listInventarioBienesEnable(Request $request, $id)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas vista')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$data = DB::table('pecosa_bienes as p')
|
|
->join('inventario_inicials as n', 'n.id', '=', 'p.id_inventario_inicial')
|
|
->join('bienes as b', 'b.id', '=', 'n.bienes_id')
|
|
->join('unidad_medidas as u', 'u.id', '=', 'b.id_unidad_medida')
|
|
|
|
->select(
|
|
'b.descripcion AS descripcion_bien',
|
|
'n.cantidad as cantidad_stock',
|
|
'u.nombre as nombre_medida',
|
|
'p.*',
|
|
'p.id_unidad_medida AS medida_salida',
|
|
DB::raw("DATE_FORMAT(p.fecha, '%Y-%m-%d') as fecha_registro"),
|
|
'p.descripcion as descripcion_pecosa_bien'
|
|
)
|
|
->where('p.id_pecosa_pedido', $id)
|
|
->where('p.status', 1) // Solo los registros habilitados
|
|
->get();
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Lista de Inevntario de bienes',
|
|
'data' => $data
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage() // Devuelve el mensaje de la excepción
|
|
], 500);
|
|
}
|
|
}
|
|
public function update_inventario(Request $request)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas actualizar inventario bienes')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$rules = [
|
|
'registros' => 'required|array',
|
|
'registros.*.id' => 'required|exists:pecosa_bienes,id',
|
|
'registros.*.id_inventario_inicial' => 'required',
|
|
'registros.*.descripcion' => 'string',
|
|
'registros.*.cantidad' => 'required|numeric',
|
|
'registros.*.id_unidad_medida' => 'required',
|
|
'registros.*.observaciones' => 'required',
|
|
'registros.*.fecha' => 'required|date',
|
|
];
|
|
|
|
$messages = [
|
|
'registros.required' => 'El campo registros es obligatorio.',
|
|
'registros.array' => 'El campo registros debe ser un arreglo.',
|
|
'registros.*.id.exists' => 'El ID del bien no existe en la base de datos.',
|
|
];
|
|
|
|
// Validación
|
|
$validator = Validator::make($request->all(), $rules, $messages);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Errores de validación',
|
|
'errors' => $validator->errors()
|
|
], 422);
|
|
}
|
|
|
|
$data = $validator->validated();
|
|
|
|
// Depurar los datos antes de continuar
|
|
\Log::info('Datos recibidos para actualizar:', $data);
|
|
// dd($data); // Descomenta esta línea si quieres ver los datos en la respuesta API
|
|
|
|
foreach ($data['registros'] as $registro) {
|
|
// Buscar el registro en la base de datos
|
|
$pecosaBien = PecosaBienes::find($registro['id']);
|
|
|
|
if (!$pecosaBien) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Registro no encontrado con ID: ' . $registro['id']
|
|
], 404);
|
|
}
|
|
$temp_cantidad = $pecosaBien->cantidad;
|
|
if (!empty($registro['id_inventario_inicial'])) {
|
|
$inventario = InventarioInicial::find($registro['id_inventario_inicial']);
|
|
if ($inventario) {
|
|
// ✅ Primero, restaurar la cantidad anterior en el inventario
|
|
$inventario->cantidad += $temp_cantidad;
|
|
|
|
// ✅ Luego, restar la nueva cantidad
|
|
$inventario->cantidad -= floatval($registro['cantidad']);
|
|
|
|
// ⚠️ Verificar que no haya stock negativo
|
|
if ($inventario->cantidad < 0) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => "No hay suficiente stock para el bien con ID: " . $registro['id']
|
|
], 400);
|
|
}
|
|
|
|
$inventario->save();
|
|
}
|
|
}
|
|
//dd($registro['cantidad']);
|
|
// Actualizar los datos del bien
|
|
$pecosaBien->update([
|
|
'descripcion' => $registro['descripcion'],
|
|
'cantidad' => $registro['cantidad'],
|
|
'id_unidad_medida' => $registro['id_unidad_medida'],
|
|
'observaciones' => $registro['observaciones'],
|
|
'fecha' => $registro['fecha'],
|
|
]);
|
|
|
|
|
|
}
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Registros actualizados correctamente'
|
|
], 201);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function update_nea_bienes(Request $request)
|
|
{
|
|
if (!auth()->user()->hasPermissionTo('pecosas actualizar neas bienes')) { // Corregido nombre del permiso
|
|
return response()->json(['valid' => false, 'error' => 'Lo sentimos, pero no tiene autorización para realizar esta acción.'], 403);
|
|
}
|
|
try {
|
|
$rules = [
|
|
'registros' => 'required|array',
|
|
'registros.*.id' => 'required|exists:pecosa_bienes,id', // Agregar esta línea
|
|
'registros.*.nea_bien_id' => 'required|exists:nea_bienes,id',
|
|
'registros.*.descripcion' => 'string',
|
|
'registros.*.cantidad' => 'required|numeric',
|
|
'registros.*.id_unidad_medida' => 'required',
|
|
'registros.*.observaciones' => 'required',
|
|
'registros.*.fecha' => 'required|date',
|
|
];
|
|
|
|
|
|
$messages = [
|
|
'registros.required' => 'El campo registros es obligatorio.',
|
|
'registros.array' => 'El campo registros debe ser un arreglo.',
|
|
'registros.*.nea_bien_id.exists' => 'El nea_bien_id no existe en la base de datos.',
|
|
];
|
|
|
|
// Validación
|
|
$validator = Validator::make($request->all(), $rules, $messages);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Errores de validación',
|
|
'errors' => $validator->errors()
|
|
], 422);
|
|
}
|
|
$data = $validator->validated();
|
|
|
|
// Depurar los datos antes de continuar
|
|
\Log::info('Datos recibidos para actualizar:', $data);
|
|
|
|
$data = $validator->validated();
|
|
|
|
foreach ($data['registros'] as &$registro) {
|
|
if (!isset($registro['id'])) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'El campo id no está presente en el registro'
|
|
], 400);
|
|
}
|
|
|
|
$pecosaBien = PecosaBienes::find($registro['id']);
|
|
|
|
if (!$pecosaBien) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Registro no encontrado con ID: ' . $registro['id']
|
|
], 404);
|
|
}
|
|
$temp_cantidad = $pecosaBien->cantidad;
|
|
|
|
if (!empty($registro['nea_bien_id'])) {
|
|
// Si el ID de nea bien existe, actualizar la cantidad
|
|
$inventario_neas = neaBienes::find($registro['nea_bien_id']);
|
|
|
|
if ($inventario_neas) {
|
|
|
|
// ✅ Primero, restaurar la cantidad anterior en el inventario
|
|
$inventario_neas->cantidad += $temp_cantidad;
|
|
|
|
// ✅ Luego, restar la nueva cantidad
|
|
$inventario_neas->cantidad -= floatval($registro['cantidad']);
|
|
|
|
// $inventario_neas->cantidad -= $registro['cantidad'];
|
|
|
|
if ($inventario_neas->cantidad < 0) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => "No hay suficiente stock."
|
|
], 400);
|
|
}
|
|
|
|
$inventario_neas->save();
|
|
}
|
|
}
|
|
|
|
// Actualizar los datos del bien
|
|
$pecosaBien->update([
|
|
'descripcion' => $registro['descripcion'],
|
|
'cantidad' => $registro['cantidad'],
|
|
'id_unidad_medida' => $registro['id_unidad_medida'],
|
|
'observaciones' => $registro['observaciones'],
|
|
'fecha' => $registro['fecha'],
|
|
]);
|
|
}
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'message' => 'Registros guardados correctamente'
|
|
], 201);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'success' => $e->getMessage(),
|
|
'message' => 'Error en el servidor',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function disableNeaBien(Request $request)
|
|
{
|
|
$idNeaBien = $request->input('nea_bien_id'); // Obtener el ID del body
|
|
$idPecosaBien = $request->input('pecosa_bien_id');
|
|
|
|
try {
|
|
|
|
$ultimoRegistro = DB::table('pecosa_bienes')->where('id', $idPecosaBien)
|
|
->orderBy('created_at', 'desc')
|
|
->first();
|
|
|
|
if (!$ultimoRegistro) {
|
|
return response()->json(['mensaje' => 'No se encontró ningún registro en pecosa_bienes'], 404);
|
|
}
|
|
|
|
// Obtener el registro de nea_bienes
|
|
$neaBien = DB::table('nea_bienes')->where('id', $idNeaBien)->first();
|
|
|
|
if (!$neaBien) {
|
|
return response()->json(['mensaje' => 'Nea bienes no encontrado'], 404);
|
|
}
|
|
|
|
// Sumar la cantidad del último registro de pecosa_bienes a nea_bienes
|
|
$nuevaCantidad = $neaBien->cantidad + $ultimoRegistro->cantidad;
|
|
|
|
// Actualizar la cantidad y cambiar el estado a inactivo (status = 0)
|
|
$updated = DB::table('nea_bienes')
|
|
->where('id', $idNeaBien)
|
|
->update([
|
|
'cantidad' => $nuevaCantidad,
|
|
]);
|
|
$updatedPecosa = DB::table('pecosa_bienes')
|
|
->where('id', $idPecosaBien)
|
|
->update([
|
|
'status' => 0,
|
|
]);
|
|
if ($updated) {
|
|
return response()->json(['mensaje' => 'Nea bienes actualizado'], 201);
|
|
} else {
|
|
return response()->json(['mensaje' => 'Nea bienes no encontrado'], 404);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function enableNeaBien(Request $request)
|
|
{
|
|
$idNeaBien = $request->input('nea_bien_id'); // Obtener el ID del body
|
|
$idPecosaBien = $request->input('pecosa_bien_id');
|
|
|
|
try {
|
|
|
|
$ultimoRegistro = DB::table('pecosa_bienes')->where('id', $idPecosaBien)
|
|
->orderBy('created_at', 'desc')
|
|
->first();
|
|
|
|
if (!$ultimoRegistro) {
|
|
return response()->json(['mensaje' => 'No se encontró ningún registro en pecosa_bienes'], 404);
|
|
}
|
|
|
|
// Obtener el registro de nea_bienes
|
|
$neaBien = DB::table('nea_bienes')->where('id', $idNeaBien)->first();
|
|
|
|
if (!$neaBien) {
|
|
return response()->json(['mensaje' => 'Nea bienes no encontrado'], 404);
|
|
}
|
|
|
|
if ($ultimoRegistro->cantidad > $neaBien->cantidad || $neaBien->cantidad <= 0) {
|
|
return response()->json(['mensaje' => 'La cantidad excede al stock disponible'], 400);
|
|
}
|
|
|
|
// Sumar la cantidad del último registro de pecosa_bienes a nea_bienes
|
|
$nuevaCantidad = $neaBien->cantidad - $ultimoRegistro->cantidad;
|
|
|
|
// Actualizar la cantidad y cambiar el estado a inactivo (status = 0)
|
|
$updated = DB::table('nea_bienes')
|
|
->where('id', $idNeaBien)
|
|
->update([
|
|
'cantidad' => $nuevaCantidad,
|
|
]);
|
|
$updatedPecosa = DB::table('pecosa_bienes')
|
|
->where('id', $idPecosaBien)
|
|
->update([
|
|
'status' => 1,
|
|
]);
|
|
if ($updated) {
|
|
return response()->json(['mensaje' => 'Nea bienes actualizado'], 201);
|
|
} else {
|
|
return response()->json(['mensaje' => 'Nea bienes no encontrado'], 404);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function disableInevntarioBien(Request $request)
|
|
{
|
|
$idInventarioBien = $request->input('inventario_bien_id'); // Obtener el ID del body
|
|
$idPecosaBien = $request->input('pecosa_bien_id');
|
|
|
|
try {
|
|
|
|
$ultimoRegistro = DB::table('pecosa_bienes')->where('id', $idPecosaBien)
|
|
->orderBy('created_at', 'desc')
|
|
->first();
|
|
|
|
if (!$ultimoRegistro) {
|
|
return response()->json(['mensaje' => 'No se encontró ningún registro en pecosa_bienes'], 404);
|
|
}
|
|
|
|
// Obtener el registro de nea_bienes
|
|
$InventarioBien = DB::table('inventario_inicials')->where('id', $idInventarioBien)->first();
|
|
|
|
if (!$InventarioBien) {
|
|
return response()->json(['mensaje' => 'Inventario bienes no encontrado'], 404);
|
|
}
|
|
|
|
// Sumar la cantidad del último registro de pecosa_bienes a nea_bienes
|
|
$nuevaCantidad = $InventarioBien->cantidad + $ultimoRegistro->cantidad;
|
|
|
|
// Actualizar la cantidad y cambiar el estado a inactivo (status = 0)
|
|
$updated = DB::table('inventario_inicials')
|
|
->where('id', $idInventarioBien)
|
|
->update([
|
|
'cantidad' => $nuevaCantidad,
|
|
]);
|
|
$updatedPecosa = DB::table('pecosa_bienes')
|
|
->where('id', $idPecosaBien)
|
|
->update([
|
|
'status' => 0,
|
|
]);
|
|
if ($updated) {
|
|
return response()->json(['mensaje' => 'Inventario bienes actualizado'], 201);
|
|
} else {
|
|
return response()->json(['mensaje' => 'Inventario bienes no encontrado'], 404);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function enableInventarioBien(Request $request)
|
|
{
|
|
$idInventarioBien = $request->input('inventario_bien_id'); // Obtener el ID del body
|
|
$idPecosaBien = $request->input('pecosa_bien_id');
|
|
|
|
try {
|
|
|
|
$ultimoRegistro = DB::table('pecosa_bienes')->where('id', $idPecosaBien)
|
|
->orderBy('created_at', 'desc')
|
|
->first();
|
|
|
|
if (!$ultimoRegistro) {
|
|
return response()->json(['mensaje' => 'No se encontró ningún registro en pecosa_bienes'], 404);
|
|
}
|
|
|
|
// Obtener el registro de nea_bienes
|
|
$inventarioBien = DB::table('inventario_inicials')->where('id', $idInventarioBien)->first();
|
|
|
|
if (!$inventarioBien) {
|
|
return response()->json(['mensaje' => 'Invenetario bienes no encontrado'], 404);
|
|
}
|
|
|
|
if ($ultimoRegistro->cantidad > $inventarioBien->cantidad || $inventarioBien->cantidad <= 0) {
|
|
return response()->json(['mensaje' => 'La cantidad excede al stock disponible'], 400);
|
|
}
|
|
|
|
// Sumar la cantidad del último registro de pecosa_bienes a nea_bienes
|
|
$nuevaCantidad = $inventarioBien->cantidad - $ultimoRegistro->cantidad;
|
|
|
|
// Actualizar la cantidad y cambiar el estado a inactivo (status = 0)
|
|
$updated = DB::table('inventario_inicials')
|
|
->where('id', $idInventarioBien)
|
|
->update([
|
|
'cantidad' => $nuevaCantidad,
|
|
]);
|
|
$updatedPecosa = DB::table('pecosa_bienes')
|
|
->where('id', $idPecosaBien)
|
|
->update([
|
|
'status' => 1,
|
|
]);
|
|
if ($updated) {
|
|
return response()->json(['mensaje' => 'Inventario bienes actualizado'], 201);
|
|
} else {
|
|
return response()->json(['mensaje' => 'Inventario bienes no encontrado'], 404);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
}
|