Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ protected override async Task InnerPost()
Copy(recurringTransaction, transaction);
transaction.Date = recurringTransaction.NextIssueDate.Value;

// Copy() only matches members by name, but each recurring transaction type exposes its own
// uniquely-named custom theme fields (e.g. HasPurchaseInvoiceCustomTheme), so this must be
// bridged explicitly via the shared IHasCustomTheme interface.
if (recurringTransaction is ManagerServer.Model.IHasCustomTheme recurringCustomTheme && transaction is ManagerServer.Model.IHasCustomTheme transactionCustomTheme)
{
transactionCustomTheme.CustomTheme = recurringCustomTheme.CustomTheme;
transactionCustomTheme.CustomThemeId = recurringCustomTheme.CustomThemeId;
}

((ManagerServer.Model.Object)transaction).Key = Guid.CreateVersion7();
list.Add((ManagerServer.Model.Object)transaction);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ protected override void OnSource(RecurringPurchaseInvoice form, ManagerServer.Mo
if (source is PurchaseInvoice purchaseInvoice)
{
Copy(purchaseInvoice, form);

// Copy() only matches members by name; PurchaseInvoice exposes CustomTheme/CustomThemeId
// while this form exposes its own uniquely-named fields, so bridge via IHasCustomTheme.
if (purchaseInvoice is IHasCustomTheme sourceCustomTheme)
{
form.HasPurchaseInvoiceCustomTheme = sourceCustomTheme.CustomTheme;
form.PurchaseInvoiceCustomTheme = sourceCustomTheme.CustomThemeId;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ protected override void OnSource(ManagerServer.Model.RecurringPurchaseOrder form
if (source is ManagerServer.Model.PurchaseOrder purchaseOrder)
{
Copy(purchaseOrder, form);

// Copy() only matches members by name; PurchaseOrder exposes CustomTheme/CustomThemeId
// while this form exposes its own uniquely-named fields, so bridge via IHasCustomTheme.
if (purchaseOrder is ManagerServer.Model.IHasCustomTheme sourceCustomTheme)
{
form.HasPurchaseOrderCustomTheme = sourceCustomTheme.CustomTheme;
form.PurchaseOrderCustomTheme = sourceCustomTheme.CustomThemeId;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ protected override void OnSource(RecurringSalesInvoice form, ManagerServer.Model
if (source is SalesInvoice salesInvoice)
{
Copy(salesInvoice, form);

// Copy() only matches members by name; SalesInvoice exposes CustomTheme/CustomThemeId
// while this form exposes its own uniquely-named fields, so bridge via IHasCustomTheme.
if (salesInvoice is IHasCustomTheme sourceCustomTheme)
{
form.HasSalesInvoiceCustomTheme = sourceCustomTheme.CustomTheme;
form.SalesInvoiceCustomTheme = sourceCustomTheme.CustomThemeId;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ protected override void OnSource(ManagerServer.Model.RecurringSalesOrder form, M
if (source is ManagerServer.Model.SalesOrder salesOrder)
{
Copy(salesOrder, form);

// Copy() only matches members by name; SalesOrder exposes CustomTheme/CustomThemeId
// while this form exposes its own uniquely-named fields, so bridge via IHasCustomTheme.
if (salesOrder is ManagerServer.Model.IHasCustomTheme sourceCustomTheme)
{
form.HasSalesOrderCustomTheme = sourceCustomTheme.CustomTheme;
form.SalesOrderCustomTheme = sourceCustomTheme.CustomThemeId;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ protected override void OnSource(ManagerServer.Model.RecurringSalesQuote form, M
if (source is ManagerServer.Model.SalesQuote salesQuote)
{
Copy(salesQuote, form);

// Copy() only matches members by name; SalesQuote exposes CustomTheme/CustomThemeId
// while this form exposes its own uniquely-named fields, so bridge via IHasCustomTheme.
if (salesQuote is ManagerServer.Model.IHasCustomTheme sourceCustomTheme)
{
form.HasSalesQuoteCustomTheme = sourceCustomTheme.CustomTheme;
form.SalesQuoteCustomTheme = sourceCustomTheme.CustomThemeId;
}
}
}
}
Expand Down
5 changes: 4 additions & 1 deletion ManagerServer/Model/RecurringPurchaseInvoice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace ManagerServer.Model
[ProtoContract]
[Guid("11de04ac-c448-4665-b206-8aa631e63532")]
[Currency(nameof(Supplier))]
public sealed class RecurringPurchaseInvoice : Object, IRecurringTransactionFor<PurchaseInvoice>, ICustomFields
public sealed class RecurringPurchaseInvoice : Object, IRecurringTransactionFor<PurchaseInvoice>, ICustomFields, IHasCustomTheme
{
[Guide("The date when the next purchase invoice will be automatically created. This date advances automatically based on your frequency settings.")]
[Guide("Set this to match when you expect to receive the supplier's invoice. The system checks daily for invoices due to be created.")]
Expand Down Expand Up @@ -80,6 +80,9 @@ public sealed class RecurringPurchaseInvoice : Object, IRecurringTransactionFor<

MonthDay IRecurringTransaction.MonthDay => MonthDay;

bool IHasCustomTheme.CustomTheme { get => HasPurchaseInvoiceCustomTheme; set => HasPurchaseInvoiceCustomTheme = value; }
Guid? IHasCustomTheme.CustomThemeId { get => PurchaseInvoiceCustomTheme; set => PurchaseInvoiceCustomTheme = value; }

/*
[ProtoContract]
public sealed class Line
Expand Down
5 changes: 4 additions & 1 deletion ManagerServer/Model/RecurringPurchaseOrder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace ManagerServer.Model
[ProtoContract]
[Guid("3be38758-7bf2-46f1-84a5-34e8748cade0")]
[Currency(nameof(Supplier))]
public sealed class RecurringPurchaseOrder : Object, IRecurringTransactionFor<PurchaseOrder>, ICustomFields
public sealed class RecurringPurchaseOrder : Object, IRecurringTransactionFor<PurchaseOrder>, ICustomFields, IHasCustomTheme
{
[Guide("The date when the next purchase order will be automatically created. This date advances automatically based on the interval and period type after each order is generated.")]
[ProtoMember(1), NoWrap] public DateTime? NextIssueDate { get; set; }
Expand Down Expand Up @@ -66,5 +66,8 @@ public sealed class RecurringPurchaseOrder : Object, IRecurringTransactionFor<Pu
CustomFields ICustomFields.CustomFields => CustomFields2;

MonthDay IRecurringTransaction.MonthDay => MonthDay;

bool IHasCustomTheme.CustomTheme { get => HasPurchaseOrderCustomTheme; set => HasPurchaseOrderCustomTheme = value; }
Guid? IHasCustomTheme.CustomThemeId { get => PurchaseOrderCustomTheme; set => PurchaseOrderCustomTheme = value; }
}
}
5 changes: 4 additions & 1 deletion ManagerServer/Model/RecurringSalesInvoice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace ManagerServer.Model
[ProtoContract]
[Guid("81385989-81e5-48c7-a819-c344324c1c01")]
[Currency(nameof(Customer))]
public sealed class RecurringSalesInvoice : Object, IRecurringTransactionFor<SalesInvoice>, ICustomFields
public sealed class RecurringSalesInvoice : Object, IRecurringTransactionFor<SalesInvoice>, ICustomFields, IHasCustomTheme
{
[Guide("The date when the next sales invoice will be automatically created. This date advances automatically based on your frequency settings.")]
[Guide("The system checks daily for recurring transactions due to be created. Set this to today or earlier to create the first invoice immediately.")]
Expand Down Expand Up @@ -96,6 +96,9 @@ public sealed class RecurringSalesInvoice : Object, IRecurringTransactionFor<Sal

MonthDay IRecurringTransaction.MonthDay => MonthDay;

bool IHasCustomTheme.CustomTheme { get => HasSalesInvoiceCustomTheme; set => HasSalesInvoiceCustomTheme = value; }
Guid? IHasCustomTheme.CustomThemeId { get => SalesInvoiceCustomTheme; set => SalesInvoiceCustomTheme = value; }

/*
[ProtoContract]
public sealed class Line
Expand Down
5 changes: 4 additions & 1 deletion ManagerServer/Model/RecurringSalesOrder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace ManagerServer.Model
[ProtoContract]
[Guid("dd7d5b17-c4be-4369-b0f5-79361525f3c2")]
[Currency(nameof(Customer))]
public sealed class RecurringSalesOrder : ManagerServer.Model.Object, IRecurringTransactionFor<SalesOrder>, ICustomFields
public sealed class RecurringSalesOrder : ManagerServer.Model.Object, IRecurringTransactionFor<SalesOrder>, ICustomFields, IHasCustomTheme
{
[Guide("The date when the next sales order will be automatically created. This date advances automatically based on the interval and period type after each order is generated.")]
[ProtoMember(1), NoWrap] public DateTime? NextIssueDate { get; set; }
Expand Down Expand Up @@ -70,5 +70,8 @@ public sealed class RecurringSalesOrder : ManagerServer.Model.Object, IRecurring
CustomFields ICustomFields.CustomFields => CustomFields2;

MonthDay IRecurringTransaction.MonthDay => MonthDay;

bool IHasCustomTheme.CustomTheme { get => HasSalesOrderCustomTheme; set => HasSalesOrderCustomTheme = value; }
Guid? IHasCustomTheme.CustomThemeId { get => SalesOrderCustomTheme; set => SalesOrderCustomTheme = value; }
}
}
5 changes: 4 additions & 1 deletion ManagerServer/Model/RecurringSalesQuote.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace ManagerServer.Model
[ProtoContract]
[Guid("1ca6ee3a-3583-41d8-83b1-74ac9129e1c1")]
[Currency(nameof(Customer))]
public sealed class RecurringSalesQuote : ManagerServer.Model.Object, IRecurringTransactionFor<SalesQuote>, ICustomFields
public sealed class RecurringSalesQuote : ManagerServer.Model.Object, IRecurringTransactionFor<SalesQuote>, ICustomFields, IHasCustomTheme
{
[Guide("The date when the next sales quote will be automatically created. This date advances automatically based on the interval and period type after each quote is generated.")]
[ProtoMember(1), NoWrap] public DateTime? NextIssueDate { get; set; }
Expand Down Expand Up @@ -72,5 +72,8 @@ public sealed class RecurringSalesQuote : ManagerServer.Model.Object, IRecurring
CustomFields ICustomFields.CustomFields => CustomFields2;

MonthDay IRecurringTransaction.MonthDay => MonthDay;

bool IHasCustomTheme.CustomTheme { get => HasSalesQuoteCustomTheme; set => HasSalesQuoteCustomTheme = value; }
Guid? IHasCustomTheme.CustomThemeId { get => SalesQuoteCustomTheme; set => SalesQuoteCustomTheme = value; }
}
}