feat: Introduce dynamic tab management, sidebar, and search bar components, update backend database schema, and remove old SQL schema.
This commit is contained in:
@@ -1,421 +0,0 @@
|
||||
-- =====================================================
|
||||
-- APOLLINARE WAREHOUSE MODULE - DATABASE TABLES
|
||||
-- SQLite
|
||||
-- =====================================================
|
||||
|
||||
-- Magazzini
|
||||
CREATE TABLE IF NOT EXISTS WarehouseLocations (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Code TEXT NOT NULL UNIQUE,
|
||||
Name TEXT NOT NULL,
|
||||
Description TEXT,
|
||||
Address TEXT,
|
||||
City TEXT,
|
||||
Province TEXT,
|
||||
PostalCode TEXT,
|
||||
Country TEXT DEFAULT 'Italia',
|
||||
Type INTEGER NOT NULL DEFAULT 0,
|
||||
IsDefault INTEGER NOT NULL DEFAULT 0,
|
||||
IsActive INTEGER NOT NULL DEFAULT 1,
|
||||
SortOrder INTEGER NOT NULL DEFAULT 0,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseLocations_Code ON WarehouseLocations(Code);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseLocations_IsDefault ON WarehouseLocations(IsDefault);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseLocations_IsActive ON WarehouseLocations(IsActive);
|
||||
|
||||
-- Categorie Articoli
|
||||
CREATE TABLE IF NOT EXISTS WarehouseArticleCategories (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Code TEXT NOT NULL UNIQUE,
|
||||
Name TEXT NOT NULL,
|
||||
Description TEXT,
|
||||
ParentCategoryId INTEGER,
|
||||
Level INTEGER NOT NULL DEFAULT 0,
|
||||
FullPath TEXT,
|
||||
Icon TEXT,
|
||||
Color TEXT,
|
||||
DefaultValuationMethod INTEGER,
|
||||
SortOrder INTEGER NOT NULL DEFAULT 0,
|
||||
IsActive INTEGER NOT NULL DEFAULT 1,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ParentCategoryId) REFERENCES WarehouseArticleCategories(Id) ON DELETE RESTRICT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticleCategories_Code ON WarehouseArticleCategories(Code);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticleCategories_ParentCategoryId ON WarehouseArticleCategories(ParentCategoryId);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticleCategories_FullPath ON WarehouseArticleCategories(FullPath);
|
||||
|
||||
-- Articoli Magazzino
|
||||
CREATE TABLE IF NOT EXISTS WarehouseArticles (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Code TEXT NOT NULL UNIQUE,
|
||||
Description TEXT NOT NULL,
|
||||
ShortDescription TEXT,
|
||||
Barcode TEXT,
|
||||
ManufacturerCode TEXT,
|
||||
CategoryId INTEGER,
|
||||
UnitOfMeasure TEXT NOT NULL DEFAULT 'PZ',
|
||||
SecondaryUnitOfMeasure TEXT,
|
||||
UnitConversionFactor REAL,
|
||||
StockManagement INTEGER NOT NULL DEFAULT 0,
|
||||
IsBatchManaged INTEGER NOT NULL DEFAULT 0,
|
||||
IsSerialManaged INTEGER NOT NULL DEFAULT 0,
|
||||
HasExpiry INTEGER NOT NULL DEFAULT 0,
|
||||
ExpiryWarningDays INTEGER,
|
||||
MinimumStock REAL,
|
||||
MaximumStock REAL,
|
||||
ReorderPoint REAL,
|
||||
ReorderQuantity REAL,
|
||||
LeadTimeDays INTEGER,
|
||||
ValuationMethod INTEGER,
|
||||
StandardCost REAL,
|
||||
LastPurchaseCost REAL,
|
||||
WeightedAverageCost REAL,
|
||||
BaseSellingPrice REAL,
|
||||
Weight REAL,
|
||||
Volume REAL,
|
||||
Width REAL,
|
||||
Height REAL,
|
||||
Depth REAL,
|
||||
Image BLOB,
|
||||
ImageMimeType TEXT,
|
||||
IsActive INTEGER NOT NULL DEFAULT 1,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (CategoryId) REFERENCES WarehouseArticleCategories(Id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticles_Code ON WarehouseArticles(Code);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticles_Barcode ON WarehouseArticles(Barcode);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticles_CategoryId ON WarehouseArticles(CategoryId);
|
||||
CREATE INDEX IF NOT EXISTS IX_WarehouseArticles_IsActive ON WarehouseArticles(IsActive);
|
||||
|
||||
-- Partite/Lotti
|
||||
CREATE TABLE IF NOT EXISTS ArticleBatches (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
BatchNumber TEXT NOT NULL,
|
||||
ProductionDate TEXT,
|
||||
ExpiryDate TEXT,
|
||||
SupplierBatch TEXT,
|
||||
SupplierId INTEGER,
|
||||
UnitCost REAL,
|
||||
InitialQuantity REAL NOT NULL DEFAULT 0,
|
||||
CurrentQuantity REAL NOT NULL DEFAULT 0,
|
||||
ReservedQuantity REAL NOT NULL DEFAULT 0,
|
||||
Status INTEGER NOT NULL DEFAULT 0,
|
||||
QualityStatus INTEGER,
|
||||
LastQualityCheckDate TEXT,
|
||||
Certifications TEXT,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE,
|
||||
UNIQUE(ArticleId, BatchNumber)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleBatches_ArticleId_BatchNumber ON ArticleBatches(ArticleId, BatchNumber);
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleBatches_ExpiryDate ON ArticleBatches(ExpiryDate);
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleBatches_Status ON ArticleBatches(Status);
|
||||
|
||||
-- Seriali/Matricole
|
||||
CREATE TABLE IF NOT EXISTS ArticleSerials (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
BatchId INTEGER,
|
||||
SerialNumber TEXT NOT NULL,
|
||||
ManufacturerSerial TEXT,
|
||||
ProductionDate TEXT,
|
||||
WarrantyExpiryDate TEXT,
|
||||
CurrentWarehouseId INTEGER,
|
||||
Status INTEGER NOT NULL DEFAULT 0,
|
||||
UnitCost REAL,
|
||||
SupplierId INTEGER,
|
||||
CustomerId INTEGER,
|
||||
SoldDate TEXT,
|
||||
SalesReference TEXT,
|
||||
Attributes TEXT,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (BatchId) REFERENCES ArticleBatches(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (CurrentWarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE SET NULL,
|
||||
UNIQUE(ArticleId, SerialNumber)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleSerials_ArticleId_SerialNumber ON ArticleSerials(ArticleId, SerialNumber);
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleSerials_Status ON ArticleSerials(Status);
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleSerials_CurrentWarehouseId ON ArticleSerials(CurrentWarehouseId);
|
||||
|
||||
-- Barcode aggiuntivi
|
||||
CREATE TABLE IF NOT EXISTS ArticleBarcodes (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
Barcode TEXT NOT NULL UNIQUE,
|
||||
Type INTEGER NOT NULL DEFAULT 0,
|
||||
Description TEXT,
|
||||
Quantity REAL NOT NULL DEFAULT 1,
|
||||
IsPrimary INTEGER NOT NULL DEFAULT 0,
|
||||
IsActive INTEGER NOT NULL DEFAULT 1,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleBarcodes_Barcode ON ArticleBarcodes(Barcode);
|
||||
CREATE INDEX IF NOT EXISTS IX_ArticleBarcodes_ArticleId ON ArticleBarcodes(ArticleId);
|
||||
|
||||
-- Giacenze
|
||||
CREATE TABLE IF NOT EXISTS StockLevels (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
WarehouseId INTEGER NOT NULL,
|
||||
BatchId INTEGER,
|
||||
Quantity REAL NOT NULL DEFAULT 0,
|
||||
ReservedQuantity REAL NOT NULL DEFAULT 0,
|
||||
OnOrderQuantity REAL NOT NULL DEFAULT 0,
|
||||
StockValue REAL,
|
||||
UnitCost REAL,
|
||||
LastMovementDate TEXT,
|
||||
LastInventoryDate TEXT,
|
||||
LocationCode TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (WarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (BatchId) REFERENCES ArticleBatches(Id) ON DELETE SET NULL,
|
||||
UNIQUE(ArticleId, WarehouseId, BatchId)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_StockLevels_ArticleId_WarehouseId_BatchId ON StockLevels(ArticleId, WarehouseId, BatchId);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockLevels_WarehouseId ON StockLevels(WarehouseId);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockLevels_LocationCode ON StockLevels(LocationCode);
|
||||
|
||||
-- Causali Movimento
|
||||
CREATE TABLE IF NOT EXISTS MovementReasons (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Code TEXT NOT NULL UNIQUE,
|
||||
Description TEXT NOT NULL,
|
||||
MovementType INTEGER NOT NULL,
|
||||
StockSign INTEGER NOT NULL,
|
||||
RequiresExternalReference INTEGER NOT NULL DEFAULT 0,
|
||||
RequiresValuation INTEGER NOT NULL DEFAULT 1,
|
||||
UpdatesAverageCost INTEGER NOT NULL DEFAULT 1,
|
||||
IsSystem INTEGER NOT NULL DEFAULT 0,
|
||||
IsActive INTEGER NOT NULL DEFAULT 1,
|
||||
SortOrder INTEGER NOT NULL DEFAULT 0,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_MovementReasons_Code ON MovementReasons(Code);
|
||||
CREATE INDEX IF NOT EXISTS IX_MovementReasons_MovementType ON MovementReasons(MovementType);
|
||||
CREATE INDEX IF NOT EXISTS IX_MovementReasons_IsActive ON MovementReasons(IsActive);
|
||||
|
||||
-- Movimenti di Magazzino (Testata)
|
||||
CREATE TABLE IF NOT EXISTS StockMovements (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
DocumentNumber TEXT NOT NULL UNIQUE,
|
||||
MovementDate TEXT NOT NULL,
|
||||
Type INTEGER NOT NULL,
|
||||
ReasonId INTEGER,
|
||||
SourceWarehouseId INTEGER,
|
||||
DestinationWarehouseId INTEGER,
|
||||
ExternalReference TEXT,
|
||||
ExternalDocumentType INTEGER,
|
||||
SupplierId INTEGER,
|
||||
CustomerId INTEGER,
|
||||
Status INTEGER NOT NULL DEFAULT 0,
|
||||
ConfirmedDate TEXT,
|
||||
ConfirmedBy TEXT,
|
||||
TotalValue REAL,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ReasonId) REFERENCES MovementReasons(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (SourceWarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (DestinationWarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE RESTRICT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovements_DocumentNumber ON StockMovements(DocumentNumber);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovements_MovementDate ON StockMovements(MovementDate);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovements_Type ON StockMovements(Type);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovements_Status ON StockMovements(Status);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovements_ExternalReference ON StockMovements(ExternalReference);
|
||||
|
||||
-- Movimenti di Magazzino (Righe)
|
||||
CREATE TABLE IF NOT EXISTS StockMovementLines (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
MovementId INTEGER NOT NULL,
|
||||
LineNumber INTEGER NOT NULL,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
BatchId INTEGER,
|
||||
SerialId INTEGER,
|
||||
Quantity REAL NOT NULL,
|
||||
UnitOfMeasure TEXT NOT NULL DEFAULT 'PZ',
|
||||
UnitCost REAL,
|
||||
LineValue REAL,
|
||||
SourceLocationCode TEXT,
|
||||
DestinationLocationCode TEXT,
|
||||
ExternalLineReference TEXT,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (MovementId) REFERENCES StockMovements(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (BatchId) REFERENCES ArticleBatches(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (SerialId) REFERENCES ArticleSerials(Id) ON DELETE SET NULL,
|
||||
UNIQUE(MovementId, LineNumber)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovementLines_MovementId_LineNumber ON StockMovementLines(MovementId, LineNumber);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovementLines_ArticleId ON StockMovementLines(ArticleId);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovementLines_BatchId ON StockMovementLines(BatchId);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockMovementLines_SerialId ON StockMovementLines(SerialId);
|
||||
|
||||
-- Valorizzazione Magazzino per Periodo
|
||||
CREATE TABLE IF NOT EXISTS StockValuations (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ValuationDate TEXT NOT NULL,
|
||||
Period INTEGER NOT NULL,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
WarehouseId INTEGER,
|
||||
Quantity REAL NOT NULL DEFAULT 0,
|
||||
Method INTEGER NOT NULL DEFAULT 0,
|
||||
UnitCost REAL NOT NULL DEFAULT 0,
|
||||
TotalValue REAL NOT NULL DEFAULT 0,
|
||||
InboundQuantity REAL NOT NULL DEFAULT 0,
|
||||
InboundValue REAL NOT NULL DEFAULT 0,
|
||||
OutboundQuantity REAL NOT NULL DEFAULT 0,
|
||||
OutboundValue REAL NOT NULL DEFAULT 0,
|
||||
IsClosed INTEGER NOT NULL DEFAULT 0,
|
||||
ClosedDate TEXT,
|
||||
ClosedBy TEXT,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (WarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE SET NULL,
|
||||
UNIQUE(Period, ArticleId, WarehouseId)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_StockValuations_Period_ArticleId_WarehouseId ON StockValuations(Period, ArticleId, WarehouseId);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockValuations_ValuationDate ON StockValuations(ValuationDate);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockValuations_IsClosed ON StockValuations(IsClosed);
|
||||
|
||||
-- Layer Valorizzazione FIFO/LIFO
|
||||
CREATE TABLE IF NOT EXISTS StockValuationLayers (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
WarehouseId INTEGER NOT NULL,
|
||||
BatchId INTEGER,
|
||||
LayerDate TEXT NOT NULL,
|
||||
SourceMovementId INTEGER,
|
||||
OriginalQuantity REAL NOT NULL DEFAULT 0,
|
||||
RemainingQuantity REAL NOT NULL DEFAULT 0,
|
||||
UnitCost REAL NOT NULL DEFAULT 0,
|
||||
IsExhausted INTEGER NOT NULL DEFAULT 0,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (WarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (BatchId) REFERENCES ArticleBatches(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (SourceMovementId) REFERENCES StockMovements(Id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_StockValuationLayers_ArticleId_WarehouseId_LayerDate ON StockValuationLayers(ArticleId, WarehouseId, LayerDate);
|
||||
CREATE INDEX IF NOT EXISTS IX_StockValuationLayers_IsExhausted ON StockValuationLayers(IsExhausted);
|
||||
|
||||
-- Inventari Fisici (Testata)
|
||||
CREATE TABLE IF NOT EXISTS InventoryCounts (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Code TEXT NOT NULL UNIQUE,
|
||||
Description TEXT NOT NULL,
|
||||
InventoryDate TEXT NOT NULL,
|
||||
WarehouseId INTEGER,
|
||||
CategoryId INTEGER,
|
||||
Type INTEGER NOT NULL DEFAULT 0,
|
||||
Status INTEGER NOT NULL DEFAULT 0,
|
||||
StartDate TEXT,
|
||||
EndDate TEXT,
|
||||
ConfirmedDate TEXT,
|
||||
ConfirmedBy TEXT,
|
||||
AdjustmentMovementId INTEGER,
|
||||
PositiveDifferenceValue REAL,
|
||||
NegativeDifferenceValue REAL,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (WarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (CategoryId) REFERENCES WarehouseArticleCategories(Id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (AdjustmentMovementId) REFERENCES StockMovements(Id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_InventoryCounts_Code ON InventoryCounts(Code);
|
||||
CREATE INDEX IF NOT EXISTS IX_InventoryCounts_InventoryDate ON InventoryCounts(InventoryDate);
|
||||
CREATE INDEX IF NOT EXISTS IX_InventoryCounts_Status ON InventoryCounts(Status);
|
||||
|
||||
-- Inventari Fisici (Righe)
|
||||
CREATE TABLE IF NOT EXISTS InventoryCountLines (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
InventoryCountId INTEGER NOT NULL,
|
||||
ArticleId INTEGER NOT NULL,
|
||||
WarehouseId INTEGER NOT NULL,
|
||||
BatchId INTEGER,
|
||||
LocationCode TEXT,
|
||||
TheoreticalQuantity REAL NOT NULL DEFAULT 0,
|
||||
CountedQuantity REAL,
|
||||
UnitCost REAL,
|
||||
CountedAt TEXT,
|
||||
CountedBy TEXT,
|
||||
SecondCountQuantity REAL,
|
||||
SecondCountBy TEXT,
|
||||
Notes TEXT,
|
||||
CreatedAt TEXT,
|
||||
CreatedBy TEXT,
|
||||
UpdatedAt TEXT,
|
||||
UpdatedBy TEXT,
|
||||
FOREIGN KEY (InventoryCountId) REFERENCES InventoryCounts(Id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (ArticleId) REFERENCES WarehouseArticles(Id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (WarehouseId) REFERENCES WarehouseLocations(Id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (BatchId) REFERENCES ArticleBatches(Id) ON DELETE SET NULL,
|
||||
UNIQUE(InventoryCountId, ArticleId, WarehouseId, BatchId)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS IX_InventoryCountLines_InventoryCountId_ArticleId ON InventoryCountLines(InventoryCountId, ArticleId, WarehouseId, BatchId);
|
||||
CREATE INDEX IF NOT EXISTS IX_InventoryCountLines_ArticleId ON InventoryCountLines(ArticleId);
|
||||
4354
src/backend/Zentral.Infrastructure/Migrations/20251202233615_SyncModelChanges.Designer.cs
generated
Normal file
4354
src/backend/Zentral.Infrastructure/Migrations/20251202233615_SyncModelChanges.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,48 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Zentral.Infrastructure.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class SyncModelChanges : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "ParentProductionOrderId",
|
||||
table: "ProductionOrders",
|
||||
type: "INTEGER",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_ProductionOrders_ParentProductionOrderId",
|
||||
table: "ProductionOrders",
|
||||
column: "ParentProductionOrderId");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ProductionOrders_ProductionOrders_ParentProductionOrderId",
|
||||
table: "ProductionOrders",
|
||||
column: "ParentProductionOrderId",
|
||||
principalTable: "ProductionOrders",
|
||||
principalColumn: "Id");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ProductionOrders_ProductionOrders_ParentProductionOrderId",
|
||||
table: "ProductionOrders");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_ProductionOrders_ParentProductionOrderId",
|
||||
table: "ProductionOrders");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ParentProductionOrderId",
|
||||
table: "ProductionOrders");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Zentral.Infrastructure.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Zentral.Infrastructure.Data;
|
||||
|
||||
#nullable disable
|
||||
|
||||
@@ -1335,6 +1335,9 @@ namespace Zentral.Infrastructure.Migrations
|
||||
b.Property<string>("Notes")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("ParentProductionOrderId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<decimal>("Quantity")
|
||||
.HasPrecision(18, 4)
|
||||
.HasColumnType("TEXT");
|
||||
@@ -1358,6 +1361,8 @@ namespace Zentral.Infrastructure.Migrations
|
||||
b.HasIndex("Code")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("ParentProductionOrderId");
|
||||
|
||||
b.HasIndex("StartDate");
|
||||
|
||||
b.HasIndex("Status");
|
||||
@@ -3782,7 +3787,13 @@ namespace Zentral.Infrastructure.Migrations
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Zentral.Domain.Entities.Production.ProductionOrder", "ParentProductionOrder")
|
||||
.WithMany("ChildProductionOrders")
|
||||
.HasForeignKey("ParentProductionOrderId");
|
||||
|
||||
b.Navigation("Article");
|
||||
|
||||
b.Navigation("ParentProductionOrder");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Zentral.Domain.Entities.Production.ProductionOrderComponent", b =>
|
||||
@@ -4225,6 +4236,8 @@ namespace Zentral.Infrastructure.Migrations
|
||||
|
||||
modelBuilder.Entity("Zentral.Domain.Entities.Production.ProductionOrder", b =>
|
||||
{
|
||||
b.Navigation("ChildProductionOrders");
|
||||
|
||||
b.Navigation("Components");
|
||||
|
||||
b.Navigation("Phases");
|
||||
|
||||
Reference in New Issue
Block a user