phronCare/Models/Models/PhLsmStockReservation.cs
leandro 394c864dfa
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 6m37s
ffeat(expeditions): persist stockitem_id in ExpeditionDetails (traceability base)
- Added stockitem_id column to PhLSM_ExpeditionDetails
- Added FK to PhLSM_StockItem
- Added indexes (StockItem and Expedition_StockItem)
- Updated scaffold models
- Updated UI merge to preserve StockItemId
- CreateFullExpeditionAsync now persists stockitem_id
- Base step to enable logistic states and double-trace prevention

Closes #3
2026-03-02 19:44:49 -03:00

58 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
namespace Models.Models;
/// <summary>
/// Reservas de stock por origen genérico (source_type/source_id). Cada fila bloquea cantidad sobre un StockItem. No duplica lote/serie/vencimiento; se resuelve por JOIN a PhLSM_StockItem.
/// </summary>
public partial class PhLsmStockReservation
{
/// <summary>
/// Identificador autoincremental de la reserva.
/// </summary>
public int Id { get; set; }
/// <summary>
/// Tipo de origen de la reserva. 1=Expedition (extensible a futuros orígenes).
/// </summary>
public byte SourceType { get; set; }
/// <summary>
/// Identificador del origen. Ej.: expedition_id cuando source_type=1.
/// </summary>
public int SourceId { get; set; }
/// <summary>
/// Referencia al StockItem exacto bloqueado (FK a PhLSM_StockItem). Define producto/ubicación/trazabilidad por JOIN.
/// </summary>
public int StockitemId { get; set; }
/// <summary>
/// Cantidad reservada (bloqueada). No disponible mientras status=1 (Reserved).
/// </summary>
public decimal ReservedQuantity { get; set; }
/// <summary>
/// Estado de la reserva: 1=Reserved, 2=Released, 3=Consumed.
/// </summary>
public int Status { get; set; }
/// <summary>
/// Fecha/hora de creación (UTC).
/// </summary>
public DateTime Createdat { get; set; }
/// <summary>
/// Última modificación (UTC). Puede ser NULL si nunca se actualizó.
/// </summary>
public DateTime? Modifiedat { get; set; }
/// <summary>
/// Token de concurrencia optimista (ROWVERSION) para actualizaciones seguras.
/// </summary>
public byte[] Rowversion { get; set; } = null!;
public virtual PhLsmStockItem Stockitem { get; set; } = null!;
}