32 lines
1.0 KiB
C#
32 lines
1.0 KiB
C#
using Indotalent.Data.Entities;
|
|
using Indotalent.Infrastructure.Database;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Indotalent.Shared.Utils;
|
|
|
|
public static class SalesOrderHelper
|
|
{
|
|
public static void Recalculate(AppDbContext context, string salesOrderId)
|
|
{
|
|
var salesOrder = context.SalesOrder
|
|
.Include(x => x.Tax)
|
|
.SingleOrDefault(x => x.Id == salesOrderId);
|
|
|
|
if (salesOrder == null)
|
|
return;
|
|
|
|
var salesOrderItems = context.SalesOrderItem
|
|
.Where(x => x.SalesOrderId == salesOrderId)
|
|
.ToList();
|
|
|
|
salesOrder.BeforeTaxAmount = salesOrderItems.Sum(x => x.Total ?? 0m);
|
|
|
|
var taxPercentage = salesOrder.Tax?.PercentageValue ?? 0;
|
|
salesOrder.TaxAmount = (salesOrder.BeforeTaxAmount ?? 0m) * (decimal)taxPercentage / 100m;
|
|
|
|
salesOrder.AfterTaxAmount = (salesOrder.BeforeTaxAmount ?? 0m) + (salesOrder.TaxAmount ?? 0m);
|
|
|
|
context.SalesOrder.Update(salesOrder);
|
|
context.SaveChanges();
|
|
}
|
|
} |