This commit is contained in:
@@ -10,7 +10,66 @@ using Newtonsoft.Json.Linq;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AyaNova.Biz
|
namespace AyaNova.Biz
|
||||||
{
|
{/*
|
||||||
|
|
||||||
|
Contract general notes / changes
|
||||||
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
Overview
|
||||||
|
V7 contracts did this:
|
||||||
|
Limit rates that can be selected to only those selected in contract and which are set to "Contract rate" in themselves
|
||||||
|
or just offer those contract rates in addition to regular rates
|
||||||
|
apply a discount to all parts selected for that contract in effect
|
||||||
|
|
||||||
|
V8 contracts need to do this:
|
||||||
|
Markup OR Discount option (mutually exclusive)
|
||||||
|
Rates in addition to parts
|
||||||
|
Tag selectable to apply discount or markup
|
||||||
|
Can have multiple by tag but can have only one by non tag (all parts, all rates)
|
||||||
|
wo applies discount / markup if part or rate is tagged if tag is chosen
|
||||||
|
Keep in mind individual Units will be contractable as well
|
||||||
|
Special notes field kind of like popup notes but it doesn't popup, instead displays on workorder statically somewhere as a reminder.
|
||||||
|
perhaps a contract in effect section with a ui affordance to open for more details or perhaps not.
|
||||||
|
I can imagine the first time people would need to read it but after the thousandth it's just taking up space.
|
||||||
|
Response time duration control for notification purposes, overrides default response time globally set
|
||||||
|
if a unit has one and customer has one the shortest one applies as this is an entire workorder issue
|
||||||
|
User can make seperate workorders to work around this if it's an issue
|
||||||
|
|
||||||
|
|
||||||
|
Contracts are never tied directly to an object they affect other than the Customer or Headoffice with a foreign key link
|
||||||
|
workorders should never be reliant on the existance of a contract but rather just have a contract applied to them for example
|
||||||
|
|
||||||
|
Contracts *are* tied to objects that use them like Client, HeadOffice, Unit
|
||||||
|
|
||||||
|
Which contract to apply
|
||||||
|
In order of least to most specific: Headoffice, Customer, Unit
|
||||||
|
so Unit contract overrides any above contract
|
||||||
|
|
||||||
|
|
||||||
|
Contract applied field
|
||||||
|
objects with contract that affects then should seperately have a contract name field for contract applied
|
||||||
|
this supports not directly linking the contract but rather seeing it as an object that is applied to another object,
|
||||||
|
not linked to it. Can apply, unapply, delete contract and no affect on primary wo or other object
|
||||||
|
|
||||||
|
TAGS
|
||||||
|
in v7 contracts could be set to apply to all parts or none
|
||||||
|
in v8 need finer control so:
|
||||||
|
Contract needs selectable tags for any aspect to apply
|
||||||
|
Discount / markup etc parts / rates
|
||||||
|
So, in practice like in v7 you set a discount for all parts but then you can also on the same line restrict it to specific part tags and select tags right there
|
||||||
|
If any items have tags then there can be no "all Items" item? Or do they contradict each other in some way
|
||||||
|
i.e. a discount for all but a special discount if it's tagged this (could be zero percent so no change if tagged that way as a way to Exclude certain items)
|
||||||
|
The server then applies the discount based on whether the parts are tagged or not if that's the case in it's bizactions
|
||||||
|
then the picklist can be supplied the variant for contract id which pulls the contract, finds the tags and then populates the picklist with the extra tag search
|
||||||
|
|
||||||
|
MULTIPLE discount / markup ITEMS
|
||||||
|
Can have ONE default for all box
|
||||||
|
Can have multiple tagged ones (tag is REQUIRED)
|
||||||
|
Not two can have same tags in them, that's a biz rule / error
|
||||||
|
Algorithm:
|
||||||
|
Default item applied normally UNLESS tagged item which is more specific overrides it
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
internal class ContractBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject, IExportAbleObject, INotifiableObject
|
internal class ContractBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject, IExportAbleObject, INotifiableObject
|
||||||
{
|
{
|
||||||
internal ContractBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
|
internal ContractBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
|
||||||
|
|||||||
Reference in New Issue
Block a user