|
@@ -54,15 +54,17 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
var locationid = entity.StockLocation.ID;
|
|
|
var locationValid = entity.StockLocation.IsValid();
|
|
|
|
|
|
- var jobRequisitionItemTask = Task<Guid>.Run(() =>
|
|
|
+ var jriTask = Task<Guid>.Run(() =>
|
|
|
{
|
|
|
return Provider.Query(
|
|
|
new Filter<JobRequisitionItem>(x => x.ID).InQuery(
|
|
|
new Filter<JobRequisitionItemPurchaseOrderItem>(x => x.PurchaseOrderItem.ID).IsEqualTo(entity.ID),
|
|
|
x => x.JobRequisitionItem.ID),
|
|
|
new Columns<JobRequisitionItem>(x => x.ID)
|
|
|
- .Add(x => x.Status))
|
|
|
- .ToObjects<JobRequisitionItem>().FirstOrDefault();
|
|
|
+ .Add(x => x.Status)
|
|
|
+ .Add(x=>x.Qty)
|
|
|
+ )
|
|
|
+ .ToObjects<JobRequisitionItem>();
|
|
|
});
|
|
|
|
|
|
var instancetask = new Task<CoreRow?>(() =>
|
|
@@ -142,12 +144,12 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
});
|
|
|
locationtask.Start();
|
|
|
|
|
|
- Task.WaitAll(producttask, locationtask, instancetask, jobRequisitionItemTask);
|
|
|
+ Task.WaitAll(producttask, locationtask, instancetask, jriTask);
|
|
|
|
|
|
var instancerow = instancetask.Result;
|
|
|
var productrow = producttask.Result;
|
|
|
var defaultlocations = locationtask.Result;
|
|
|
- var jri = jobRequisitionItemTask.Result;
|
|
|
+ var jris = jriTask.Result.ToArray();
|
|
|
|
|
|
if (productrow is null)
|
|
|
{
|
|
@@ -266,6 +268,26 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
};
|
|
|
var movements = new List<StockMovement>();
|
|
|
|
|
|
+ var _pototal = entity.Qty;
|
|
|
+ foreach (var jri in jris)
|
|
|
+ {
|
|
|
+ CreateMovement(entity, locationid, movements, jri, jri.Qty);
|
|
|
+ _pototal -= jri.Qty;
|
|
|
+ }
|
|
|
+ if (!_pototal.IsEffectivelyEqual(0.0F))
|
|
|
+ CreateMovement(entity, locationid, movements, null, _pototal);
|
|
|
+
|
|
|
+ FindSubStore<StockMovementBatch>().Save(batch, "Received on PO");
|
|
|
+ foreach(var mvt in movements)
|
|
|
+ {
|
|
|
+ mvt.Batch.ID = batch.ID;
|
|
|
+ }
|
|
|
+
|
|
|
+ FindSubStore<StockMovement>().Save(movements, "Updated by Purchase Order Modification");
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void CreateMovement(PurchaseOrderItem entity, Guid locationid, List<StockMovement> movements, JobRequisitionItem jri, double qty)
|
|
|
+ {
|
|
|
var movement = new StockMovement();
|
|
|
movement.Product.ID = entity.Product.ID;
|
|
|
movement.Job.ID = entity.Job.ID;
|
|
@@ -274,15 +296,15 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
movement.Dimensions.CopyFrom(entity.Dimensions);
|
|
|
|
|
|
movement.Date = entity.ReceivedDate;
|
|
|
- movement.Received = entity.Qty;
|
|
|
+ movement.Received = qty;
|
|
|
movement.Employee.ID = Guid.Empty;
|
|
|
movement.OrderItem.ID = entity.ID;
|
|
|
movement.Notes = string.Format("Received on PO {0}", entity.PurchaseOrderLink.PONumber);
|
|
|
movement.Cost = entity.Cost;
|
|
|
movement.Type = StockMovementType.Receive;
|
|
|
movements.Add(movement);
|
|
|
-
|
|
|
- if(jri is not null)
|
|
|
+
|
|
|
+ if (jri is not null)
|
|
|
{
|
|
|
movement.JobRequisitionItem.ID = jri.ID;
|
|
|
if (!jri.Cancelled.IsEmpty())
|
|
@@ -292,7 +314,7 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
var tOut = movement.CreateMovement();
|
|
|
tOut.JobRequisitionItem.ID = jri.ID;
|
|
|
tOut.Date = entity.ReceivedDate;
|
|
|
- tOut.Issued = entity.Qty;
|
|
|
+ tOut.Issued = jri.Qty;
|
|
|
tOut.OrderItem.ID = entity.ID;
|
|
|
tOut.Notes = "Internal transfer from cancelled requisition";
|
|
|
tOut.System = true;
|
|
@@ -302,7 +324,7 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
var tIn = movement.CreateMovement();
|
|
|
tIn.Transaction = tOut.Transaction;
|
|
|
tIn.Date = entity.ReceivedDate;
|
|
|
- tIn.Received = entity.Qty;
|
|
|
+ tIn.Received = jri.Qty;
|
|
|
tIn.OrderItem.ID = entity.ID;
|
|
|
tOut.Notes = "Internal transfer from cancelled requisition";
|
|
|
tOut.System = true;
|
|
@@ -313,14 +335,6 @@ internal class PurchaseOrderItemStore : BaseStore<PurchaseOrderItem>
|
|
|
movements.Add(tIn);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- FindSubStore<StockMovementBatch>().Save(batch, "Received on PO");
|
|
|
- foreach(var mvt in movements)
|
|
|
- {
|
|
|
- mvt.Batch.ID = batch.ID;
|
|
|
- }
|
|
|
-
|
|
|
- FindSubStore<StockMovement>().Save(movements, "Updated by Purchase Order Modification");
|
|
|
}
|
|
|
|
|
|
|