feat: Add Free Issue Lines to ShopPOItems and InvoiceItems
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Distribution.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddFreeIssueLines : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "FK_SchemeId",
|
||||||
|
table: "ShopPOItems",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsFree",
|
||||||
|
table: "ShopPOItems",
|
||||||
|
type: "tinyint(1)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "SchemeName",
|
||||||
|
table: "ShopPOItems",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<Guid>(
|
||||||
|
name: "FK_SchemeId",
|
||||||
|
table: "InvoiceItems",
|
||||||
|
type: "char(36)",
|
||||||
|
nullable: true,
|
||||||
|
collation: "ascii_general_ci");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsFree",
|
||||||
|
table: "InvoiceItems",
|
||||||
|
type: "tinyint(1)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "SchemeName",
|
||||||
|
table: "InvoiceItems",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
// Existing free-issue lines were plain zero-priced lines; flag them from their scheme redemption.
|
||||||
|
migrationBuilder.Sql(@"
|
||||||
|
UPDATE ShopPOItems i
|
||||||
|
JOIN SchemeRedemptions r ON r.FK_ShopPOId = i.FK_ShopPOId AND r.FK_FreeItemId = i.FK_ItemId
|
||||||
|
JOIN Schemes s ON s.Id = r.FK_SchemeId
|
||||||
|
SET i.IsFree = 1, i.FK_SchemeId = r.FK_SchemeId, i.SchemeName = s.Name
|
||||||
|
WHERE i.UnitPrice = 0 AND i.IsActive = 1;");
|
||||||
|
|
||||||
|
migrationBuilder.Sql(@"
|
||||||
|
UPDATE InvoiceItems ii
|
||||||
|
JOIN ShopPOItems pi ON ii.FK_ShopPOItemId = pi.Id
|
||||||
|
SET ii.IsFree = pi.IsFree, ii.FK_SchemeId = pi.FK_SchemeId, ii.SchemeName = pi.SchemeName
|
||||||
|
WHERE pi.IsFree = 1;");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "FK_SchemeId",
|
||||||
|
table: "ShopPOItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsFree",
|
||||||
|
table: "ShopPOItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "SchemeName",
|
||||||
|
table: "ShopPOItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "FK_SchemeId",
|
||||||
|
table: "InvoiceItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsFree",
|
||||||
|
table: "InvoiceItems");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "SchemeName",
|
||||||
|
table: "InvoiceItems");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -932,18 +932,27 @@ namespace Distribution.Migrations
|
|||||||
b.Property<Guid>("FK_ItemId")
|
b.Property<Guid>("FK_ItemId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
b.Property<Guid?>("FK_SchemeId")
|
||||||
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<Guid?>("FK_ShopPOItemId")
|
b.Property<Guid?>("FK_ShopPOItemId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
b.Property<bool>("IsActive")
|
||||||
.HasColumnType("tinyint(1)");
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsFree")
|
||||||
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
b.Property<bool>("IsRemoved")
|
b.Property<bool>("IsRemoved")
|
||||||
.HasColumnType("tinyint(1)");
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
b.Property<int>("Quantity")
|
b.Property<int>("Quantity")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("SchemeName")
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
b.Property<decimal>("UnitPrice")
|
b.Property<decimal>("UnitPrice")
|
||||||
.HasColumnType("decimal(65,30)");
|
.HasColumnType("decimal(65,30)");
|
||||||
|
|
||||||
@@ -3717,18 +3726,27 @@ namespace Distribution.Migrations
|
|||||||
b.Property<Guid>("FK_ItemId")
|
b.Property<Guid>("FK_ItemId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
|
b.Property<Guid?>("FK_SchemeId")
|
||||||
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<Guid>("FK_ShopPOId")
|
b.Property<Guid>("FK_ShopPOId")
|
||||||
.HasColumnType("char(36)");
|
.HasColumnType("char(36)");
|
||||||
|
|
||||||
b.Property<bool>("IsActive")
|
b.Property<bool>("IsActive")
|
||||||
.HasColumnType("tinyint(1)");
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsFree")
|
||||||
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
b.Property<int>("Quantity")
|
b.Property<int>("Quantity")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("QuantityFulfilled")
|
b.Property<int>("QuantityFulfilled")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<string>("SchemeName")
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
b.Property<decimal>("UnitPrice")
|
b.Property<decimal>("UnitPrice")
|
||||||
.HasColumnType("decimal(65,30)");
|
.HasColumnType("decimal(65,30)");
|
||||||
|
|
||||||
@@ -3748,6 +3766,7 @@ namespace Distribution.Migrations
|
|||||||
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000001"),
|
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000001"),
|
||||||
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000001"),
|
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000001"),
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
|
IsFree = false,
|
||||||
Quantity = 30,
|
Quantity = 30,
|
||||||
QuantityFulfilled = 30,
|
QuantityFulfilled = 30,
|
||||||
UnitPrice = 60m
|
UnitPrice = 60m
|
||||||
@@ -3759,6 +3778,7 @@ namespace Distribution.Migrations
|
|||||||
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000003"),
|
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000003"),
|
||||||
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000001"),
|
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000001"),
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
|
IsFree = false,
|
||||||
Quantity = 24,
|
Quantity = 24,
|
||||||
QuantityFulfilled = 24,
|
QuantityFulfilled = 24,
|
||||||
UnitPrice = 50m
|
UnitPrice = 50m
|
||||||
@@ -3770,6 +3790,7 @@ namespace Distribution.Migrations
|
|||||||
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000002"),
|
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000002"),
|
||||||
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000002"),
|
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000002"),
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
|
IsFree = false,
|
||||||
Quantity = 10,
|
Quantity = 10,
|
||||||
QuantityFulfilled = 0,
|
QuantityFulfilled = 0,
|
||||||
UnitPrice = 120m
|
UnitPrice = 120m
|
||||||
@@ -3781,6 +3802,7 @@ namespace Distribution.Migrations
|
|||||||
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000002"),
|
FK_ItemId = new Guid("23000000-0000-0000-0000-000000000002"),
|
||||||
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000003"),
|
FK_ShopPOId = new Guid("33000000-0000-0000-0000-000000000003"),
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
|
IsFree = false,
|
||||||
Quantity = 20,
|
Quantity = 20,
|
||||||
QuantityFulfilled = 20,
|
QuantityFulfilled = 20,
|
||||||
UnitPrice = 120m
|
UnitPrice = 120m
|
||||||
|
|||||||
@@ -19,5 +19,10 @@ namespace Distribution.Models
|
|||||||
public int Quantity { get; set; }
|
public int Quantity { get; set; }
|
||||||
public decimal UnitPrice { get; set; }
|
public decimal UnitPrice { get; set; }
|
||||||
public bool IsRemoved { get; set; }
|
public bool IsRemoved { get; set; }
|
||||||
|
|
||||||
|
/// <summary>Free issue copied from the Shop PO line (UnitPrice 0).</summary>
|
||||||
|
public bool IsFree { get; set; }
|
||||||
|
public Guid? FK_SchemeId { get; set; }
|
||||||
|
public string? SchemeName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user