This commit is contained in:
2021-10-18 21:40:27 +00:00
parent 46e85bf928
commit 915f50a2ec

View File

@@ -445,7 +445,7 @@ namespace AyaNova.Util
await SeedPartAsync(log, 10000, 6000);
await SeedPartAssemblyAsync(log, 500);
await SeedPurchaseOrderAsync(log, 1000);
await SeedQuoteAsync(log, 1000);
await SeedQuoteAsync(log, 10);
await SeedPMAsync(log, 3);//DO NOT want too many of these as they affect performance
await SeedWorkOrderAsync(log, 3600, slevel);
@@ -2853,8 +2853,7 @@ namespace AyaNova.Util
}
//SCHEDULED USERS
//not realistic, just to fill schedule forms with a nice even distribution
//four random techs plus a few others of known type
for (int a = 0; a < woItemCount; a++)//woItemCount works here
{
var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4);
@@ -2870,94 +2869,94 @@ namespace AyaNova.Util
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
{
var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
// {
// var randomStart = Fake.Random.Int(0, 5);
// var randomHours = Fake.Random.Int(1, 4);
// var randomDays = Fake.Random.Int(0, 3);
// var randomStop = randomStart + randomHours;
// var woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = RandomServiceTechUserId(),
// EstimatedQuantity = randomHours,
// StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
// StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
// }
{
var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
// {
// var randomStart = Fake.Random.Int(0, 5);
// var randomHours = Fake.Random.Int(1, 4);
// var randomDays = Fake.Random.Int(0, 3);
// var randomStop = randomStart + randomHours;
// var woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = RandomServiceTechUserId(),
// EstimatedQuantity = randomHours,
// StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
// StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
// }
{
var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
// {
// var randomStart = Fake.Random.Int(0, 5);
// var randomHours = Fake.Random.Int(1, 4);
// var randomDays = Fake.Random.Int(0, 3);
// var randomStop = randomStart + randomHours;
// var woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = RandomServiceTechUserId(),
// EstimatedQuantity = randomHours,
// StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
// StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
// }
if (y == 1)
{
//known tech and subcontractor on every item
var woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = KnownUserTechId,
EstimatedQuantity = 2,
StartDate = woDate,
StopDate = woDate.AddHours(2)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
// if (y == 1)
// {
// //known tech and subcontractor on every item
// var woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = KnownUserTechId,
// EstimatedQuantity = 2,
// StartDate = woDate,
// StopDate = woDate.AddHours(2)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = KnownUserSubContractorId,
EstimatedQuantity = 2,
StartDate = woDate,
StopDate = woDate.AddHours(2)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
// woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = KnownUserSubContractorId,
// EstimatedQuantity = 2,
// StartDate = woDate,
// StopDate = woDate.AddHours(2)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
// }
if (y == 3)
{
//known restricted tech and subcontractor on some items
var woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = KnownUserTechRestrictedId,
EstimatedQuantity = 2,
StartDate = woDate,
StopDate = woDate.AddHours(2)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
// if (y == 3)
// {
// //known restricted tech and subcontractor on some items
// var woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = KnownUserTechRestrictedId,
// EstimatedQuantity = 2,
// StartDate = woDate,
// StopDate = woDate.AddHours(2)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
woItemScheduledUser = new WorkOrderItemScheduledUser()
{
UserId = KnownUserSubContractorRestrictedId,
EstimatedQuantity = 2,
StartDate = woDate,
StopDate = woDate.AddHours(2)
};
woItem.ScheduledUsers.Add(woItemScheduledUser);
}
// woItemScheduledUser = new WorkOrderItemScheduledUser()
// {
// UserId = KnownUserSubContractorRestrictedId,
// EstimatedQuantity = 2,
// StartDate = woDate,
// StopDate = woDate.AddHours(2)
// };
// woItem.ScheduledUsers.Add(woItemScheduledUser);
// }
/////////////////////////////////////////
//PARTS
@@ -2979,47 +2978,35 @@ namespace AyaNova.Util
};
woItem.Parts.Add(woItemPart);
//PARTREQUESTS
var woItemPartRequest = new WorkOrderItemPartRequest()
//PARTREQUESTS
if (Fake.Random.Bool())//50%
{
var woItemPartRequest = new WorkOrderItemPartRequest()
{
Quantity = 1,
PartId = Fake.Random.Long(1, TotalSeededParts),
PartWarehouseId = 1,
PurchaseOrderItemId = Fake.Random.Long(1, TotalSeededPurchaseOrders)//yes it's POITEM vs po but each po has at least one item so this will work
};
woItem.PartRequests.Add(woItemPartRequest);
Quantity = 1,
PartId = Fake.Random.Long(1, TotalSeededParts),
PartWarehouseId = 1,
PurchaseOrderItemId = Fake.Random.Long(1, TotalSeededPurchaseOrders)//yes it's POITEM vs po but each po has at least one item so this will work
};
woItem.PartRequests.Add(woItemPartRequest);
}
woItemPartRequest = new WorkOrderItemPartRequest()
//LOANERS
if (Fake.Random.Bool())//50%
{
var woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(1),
DueDate = woDate.AddHours(4),
Quantity = 4,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
}
Quantity = 1,
PartId = Fake.Random.Long(1, TotalSeededParts),
PartWarehouseId = 1
};
woItem.PartRequests.Add(woItemPartRequest);
//LOANERS
var woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(1),
DueDate = woDate.AddHours(4),
Quantity = 4,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(2),
DueDate = woDate.AddHours(3),
Quantity = 1,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
//LABOR
@@ -3034,217 +3021,229 @@ namespace AyaNova.Util
ServiceDetails = Fake.Lorem.Sentence()
};
woItem.Labors.Add(woItemLabor);
woItemLabor = new WorkOrderItemLabor()
if (Fake.Random.Bool())//50%
{
UserId = RandomServiceTechUserId(),
ServiceRateQuantity = 2,
ServiceStartDate = woDate,
ServiceStopDate = woDate.AddHours(1),
ServiceRateId = Fake.Random.Long(1, TotalSeededServiceRates),
ServiceDetails = Fake.Lorem.Sentence()
};
woItem.Labors.Add(woItemLabor);
woItemLabor = new WorkOrderItemLabor()
{
UserId = RandomServiceTechUserId(),
ServiceRateQuantity = 2,
ServiceStartDate = woDate,
ServiceStopDate = woDate.AddHours(1),
ServiceRateId = Fake.Random.Long(1, TotalSeededServiceRates),
ServiceDetails = Fake.Lorem.Sentence()
};
woItem.Labors.Add(woItemLabor);
}
//TRAVEL
var woItemTravel = new WorkOrderItemTravel()
if (Fake.Random.Bool())//50%
{
UserId = techId,
TravelRateQuantity = 1,
TravelStartDate = woDate,
TravelStopDate = woDate.AddHours(1),
TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates),
TravelDetails = Fake.Lorem.Sentence(),
Distance = Fake.Random.Int(1, 20)
};
woItem.Travels.Add(woItemTravel);
woItemTravel = new WorkOrderItemTravel()
{
UserId = RandomServiceTechUserId(),
TravelRateQuantity = 2,
TravelStartDate = woDate,
TravelStopDate = woDate.AddHours(1),
TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates),
TravelDetails = Fake.Lorem.Sentence(),
Distance = Fake.Random.Int(1, 20)
};
woItem.Travels.Add(woItemTravel);
var woItemTravel = new WorkOrderItemTravel()
{
UserId = techId,
TravelRateQuantity = 1,
TravelStartDate = woDate,
TravelStopDate = woDate.AddHours(1),
TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates),
TravelDetails = Fake.Lorem.Sentence(),
Distance = Fake.Random.Int(1, 20)
};
woItem.Travels.Add(woItemTravel);
}
//TASKS
var woItemTask = new WorkOrderItemTask()
if (Fake.Random.Int(1, 4) == 2)//25% chance of task
{
CompletedByUserId = techId,
Task = "Dis-assemble",
Sequence = 1,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
var woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Dis-assemble",
Sequence = 1,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Lubricate",
Sequence = 2,
Status = WorkOrderItemTaskCompletionType.NotApplicable,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Lubricate",
Sequence = 2,
Status = WorkOrderItemTaskCompletionType.NotApplicable,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Repair",
Sequence = 3,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1.5)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Repair",
Sequence = 3,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1.5)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Re-assemble",
Sequence = 4,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Test and confirm repair",
Sequence = 5,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Re-assemble",
Sequence = 4,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Test and confirm repair",
Sequence = 5,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
}
//EXPENSES
var cost = Fake.Random.Decimal(1, 10);
var woItemExpense = new WorkOrderItemExpense()
if (Fake.Random.Int(1, 4) == 2)//25% chance
{
UserId = RandomServiceTechUserId(),
//TotalCost = cost,
ChargeAmount = cost * 1.2m,
ChargeToCustomer = true,
ReimburseUser = true,
ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName()
var cost = Fake.Random.Decimal(1, 10);
var woItemExpense = new WorkOrderItemExpense()
{
UserId = RandomServiceTechUserId(),
//TotalCost = cost,
ChargeAmount = cost * 1.2m,
ChargeToCustomer = true,
ReimburseUser = true,
ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName()
};
woItem.Expenses.Add(woItemExpense);
};
woItem.Expenses.Add(woItemExpense);
woItemExpense = new WorkOrderItemExpense()
{
UserId = RandomServiceTechUserId(),
// TotalCost = cost * 2m,
ChargeAmount = cost * 2.2m,
ChargeToCustomer = true,
ReimburseUser = true,
ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName()
woItemExpense = new WorkOrderItemExpense()
{
UserId = RandomServiceTechUserId(),
// TotalCost = cost * 2m,
ChargeAmount = cost * 2.2m,
ChargeToCustomer = true,
ReimburseUser = true,
ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName()
};
woItem.Expenses.Add(woItemExpense);
};
woItem.Expenses.Add(woItemExpense);
}
//OUTSIDE SERVICES
var ShippingCost = Fake.Random.Decimal(5, 20);
var RepairCost = Fake.Random.Decimal(50, 1000);
var woItemOutsideService = new WorkOrderItemOutsideService()
if (Fake.Random.Int(1, 10) == 2)//10% chance
{
UnitId = GetRandomUnitForCustomer(o.CustomerId),
Notes = Fake.Lorem.Sentence(),
VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
RMANumber = "RMA" + Fake.Finance.Account(6),
TrackingNumber = "TR" + Fake.Finance.Account(8),
RepairCost = RepairCost,
RepairPrice = RepairCost * 1.5m,
ShippingCost = ShippingCost,
ShippingPrice = ShippingCost * 1.5m,
SentDate = woDate,
ETADate = woDate.AddDays(7),
ReturnDate = woDate.AddDays(8),
TaxCodeId = 1
};
woItem.OutsideServices.Add(woItemOutsideService);
ShippingCost = Fake.Random.Decimal(5, 20);
RepairCost = Fake.Random.Decimal(50, 1000);
woItemOutsideService = new WorkOrderItemOutsideService()
{
UnitId = GetRandomUnitForCustomer(o.CustomerId),
Notes = Fake.Lorem.Sentence(),
VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
RMANumber = "RMA" + Fake.Finance.Account(6),
TrackingNumber = "TR" + Fake.Finance.Account(8),
RepairCost = RepairCost,
RepairPrice = RepairCost * 1.5m,
ShippingCost = ShippingCost,
ShippingPrice = ShippingCost * 1.5m,
SentDate = woDate,
ETADate = woDate.AddDays(7),
ReturnDate = woDate.AddDays(8),
TaxCodeId = 1
};
woItem.OutsideServices.Add(woItemOutsideService);
var ShippingCost = Fake.Random.Decimal(5, 20);
var RepairCost = Fake.Random.Decimal(50, 1000);
var woItemOutsideService = new WorkOrderItemOutsideService()
{
UnitId = GetRandomUnitForCustomer(o.CustomerId),
Notes = Fake.Lorem.Sentence(),
VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
RMANumber = "RMA" + Fake.Finance.Account(6),
TrackingNumber = "TR" + Fake.Finance.Account(8),
RepairCost = RepairCost,
RepairPrice = RepairCost * 1.5m,
ShippingCost = ShippingCost,
ShippingPrice = ShippingCost * 1.5m,
SentDate = woDate,
ETADate = woDate.AddDays(7),
ReturnDate = woDate.AddDays(8),
TaxCodeId = 1
};
woItem.OutsideServices.Add(woItemOutsideService);
}
// ShippingCost = Fake.Random.Decimal(5, 20);
// RepairCost = Fake.Random.Decimal(50, 1000);
// woItemOutsideService = new WorkOrderItemOutsideService()
// {
// UnitId = GetRandomUnitForCustomer(o.CustomerId),
// Notes = Fake.Lorem.Sentence(),
// VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
// VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
// RMANumber = "RMA" + Fake.Finance.Account(6),
// TrackingNumber = "TR" + Fake.Finance.Account(8),
// RepairCost = RepairCost,
// RepairPrice = RepairCost * 1.5m,
// ShippingCost = ShippingCost,
// ShippingPrice = ShippingCost * 1.5m,
// SentDate = woDate,
// ETADate = woDate.AddDays(7),
// ReturnDate = woDate.AddDays(8),
// TaxCodeId = 1
// };
// woItem.OutsideServices.Add(woItemOutsideService);
o.Items.Add(woItem);
}
//sample status changes
if (Fake.Random.Int(1, 4) == 2)//25% chance
{
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.NeedsToBeAssigned,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddMinutes(5)
};
o.States.Add(WoState);
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.NeedsToBeAssigned,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddMinutes(5)
};
o.States.Add(WoState);
}
}
if (Fake.Random.Int(1, 4) == 2)//25% chance
{
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(1)
};
o.States.Add(WoState);
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(1)
};
o.States.Add(WoState);
}
}
if (Fake.Random.Int(1, 4) == 2)//25% chance
{
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.ManagerApprovalRequired,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(1).AddMinutes(5)
};
o.States.Add(WoState);
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.ManagerApprovalRequired,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(1).AddMinutes(5)
};
o.States.Add(WoState);
}
}
if (Fake.Random.Int(1, 4) == 2)//25% chance
{
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(2)
};
o.States.Add(WoState);
o.LastStatusId = WoState.WorkOrderStatusId;
var WoState = new WorkOrderState()
{
WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
UserId = RandomServiceTechUserId(),
Created = ((DateTime)o.ServiceDate).AddHours(2)
};
o.States.Add(WoState);
o.LastStatusId = WoState.WorkOrderStatusId;
}
}
//All wo ending status
//if it's in the past tag it with a completed type status
if (isPast)
{