31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
using Indotalent.Data.Entities;
|
|
using Indotalent.Infrastructure.Database;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Indotalent.Shared.Utils;
|
|
|
|
public static class PurchaseRequisitionHelper
|
|
{
|
|
public static void Recalculate(AppDbContext context, string requisitionId)
|
|
{
|
|
var requisition = context.PurchaseRequisition
|
|
.Include(x => x.Tax)
|
|
.SingleOrDefault(x => x.Id == requisitionId);
|
|
|
|
if (requisition == null) return;
|
|
|
|
var items = context.PurchaseRequisitionItem
|
|
.Where(x => x.PurchaseRequisitionId == requisitionId)
|
|
.ToList();
|
|
|
|
requisition.BeforeTaxAmount = items.Sum(x => (x.UnitPrice ?? 0m) * (decimal)(x.Quantity ?? 0.0));
|
|
|
|
var taxPercentage = requisition.Tax?.PercentageValue ?? 0;
|
|
requisition.TaxAmount = (requisition.BeforeTaxAmount ?? 0m) * (decimal)taxPercentage / 100m;
|
|
|
|
requisition.AfterTaxAmount = (requisition.BeforeTaxAmount ?? 0m) + (requisition.TaxAmount ?? 0m);
|
|
|
|
context.PurchaseRequisition.Update(requisition);
|
|
context.SaveChanges();
|
|
}
|
|
} |