|
@@ -17,8 +17,6 @@ namespace Comal.Stores
|
|
|
{
|
|
|
base.AfterSave(entity);
|
|
|
|
|
|
- Guid purchaseOrderID = Guid.Empty;
|
|
|
-
|
|
|
//consignment has to be newly completed (usually done via receivals module) - checks further down as well to ensure no repeated saving of documents / batches
|
|
|
if (entity.ActualWarehouseArrival == DateTime.MinValue)
|
|
|
return;
|
|
@@ -26,22 +24,20 @@ namespace Comal.Stores
|
|
|
return;
|
|
|
|
|
|
//find previously saved PO Items attached to this consignment
|
|
|
- CoreTable purchaseOrderItemTable = Provider.Query<PurchaseOrderItem>(
|
|
|
+ var purchaseOrderItemTable = Provider.Query<PurchaseOrderItem>(
|
|
|
new Filter<PurchaseOrderItem>(x => x.Consignment.ID).IsEqualTo(entity.ID),
|
|
|
new Columns<PurchaseOrderItem>(x => x.ID, x => x.PurchaseOrderLink.ID)
|
|
|
);
|
|
|
|
|
|
- if (!purchaseOrderItemTable.Rows.Any())
|
|
|
+ var firstPOItem = purchaseOrderItemTable.Rows.FirstOrDefault();
|
|
|
+ if (firstPOItem is null) // i.e., there are no PO Items, return
|
|
|
return;
|
|
|
|
|
|
- List<Guid> consignmentDocIDs = new List<Guid>();
|
|
|
+ var consignmentDocIDs = new List<Guid>();
|
|
|
|
|
|
- if (purchaseOrderItemTable.Rows.FirstOrDefault().Values[1] == null)
|
|
|
- purchaseOrderID = Guid.Empty;
|
|
|
- else
|
|
|
- purchaseOrderID = Guid.Parse(purchaseOrderItemTable.Rows.FirstOrDefault().Values[1].ToString());
|
|
|
+ var purchaseOrderID = firstPOItem.Get<PurchaseOrderItem, Guid>(x => x.PurchaseOrderLink.ID);
|
|
|
|
|
|
- CoreTable table = Provider.Query<ConsignmentDocument>
|
|
|
+ var table = Provider.Query<ConsignmentDocument>
|
|
|
(
|
|
|
new Filter<ConsignmentDocument>(x => x.EntityLink.ID).IsEqualTo(entity.ID),
|
|
|
new Columns<ConsignmentDocument>(x => x.DocumentLink.ID)
|
|
@@ -52,17 +48,10 @@ namespace Comal.Stores
|
|
|
}
|
|
|
|
|
|
//build filter for querying stock movements attached to PO Items on this consignment
|
|
|
- Filter<StockMovement> filter =
|
|
|
- new Filter<StockMovement>(x => x.OrderItem.ID).IsEqualTo(Guid.Parse(purchaseOrderItemTable.Rows.FirstOrDefault().Values[0].ToString()));
|
|
|
- foreach (CoreRow row in purchaseOrderItemTable.Rows)
|
|
|
- {
|
|
|
- if (row != purchaseOrderItemTable.Rows.FirstOrDefault())
|
|
|
- {
|
|
|
- List<object> list = row.Values;
|
|
|
- filter = filter.Or(x => x.OrderItem.ID).IsEqualTo(Guid.Parse(list[0].ToString()));
|
|
|
- }
|
|
|
- }
|
|
|
- CoreTable stockMovementTable = Provider.Query<StockMovement>(
|
|
|
+ var filter =
|
|
|
+ new Filter<StockMovement>(x => x.OrderItem.ID).InList(purchaseOrderItemTable.Rows.Select(x => x.Get<PurchaseOrderItem, Guid>(x => x.ID)).ToArray());
|
|
|
+
|
|
|
+ var stockMovementTable = Provider.Query<StockMovement>(
|
|
|
filter,
|
|
|
new Columns<StockMovement>(
|
|
|
x => x.ID,
|
|
@@ -73,24 +62,19 @@ namespace Comal.Stores
|
|
|
if (stockMovementTable.Rows.Any())
|
|
|
{
|
|
|
//check if movements already have a batch.id - means photos would have already been saved
|
|
|
- if (Guid.Parse(stockMovementTable.Rows.FirstOrDefault().Values[2].ToString()) != Guid.Empty)
|
|
|
+ var batchID = stockMovementTable.Rows.First().Get<StockMovement, Guid>(x => x.Batch.ID);
|
|
|
+ if (batchID != Guid.Empty)
|
|
|
return;
|
|
|
|
|
|
//create new stockmovementbatch to attach new stockmovements to (movements created by server)
|
|
|
- StockMovementBatch batch = new StockMovementBatch();
|
|
|
+ var batch = new StockMovementBatch();
|
|
|
batch.Type = StockMovementBatchType.Receipt;
|
|
|
Provider.Save(batch);
|
|
|
|
|
|
//add found stockmovements to batch, add stockmovements to save
|
|
|
- List<StockMovement> movements = new List<StockMovement>();
|
|
|
- foreach (CoreRow row in stockMovementTable.Rows)
|
|
|
+ var movements = new List<StockMovement>();
|
|
|
+ foreach (var movement in stockMovementTable.ToObjects<StockMovement>())
|
|
|
{
|
|
|
- List<object> list1 = row.Values;
|
|
|
- StockMovement movement = new StockMovement
|
|
|
- {
|
|
|
- ID = Guid.Parse(list1[0].ToString()),
|
|
|
- Notes = list1[1].ToString()
|
|
|
- };
|
|
|
movement.Batch.ID = batch.ID;
|
|
|
movement.Employee.ID = entity.Employee.ID;
|
|
|
movement.Notes = movement.Notes + " / Consignment " + entity.Number;
|
|
@@ -98,8 +82,8 @@ namespace Comal.Stores
|
|
|
}
|
|
|
Provider.Save(movements);
|
|
|
|
|
|
- List<StockMovementBatchDocument> stockMovementBatchDocuments = new List<StockMovementBatchDocument>();
|
|
|
- foreach (Guid id in consignmentDocIDs)
|
|
|
+ var stockMovementBatchDocuments = new List<StockMovementBatchDocument>();
|
|
|
+ foreach (var id in consignmentDocIDs)
|
|
|
{
|
|
|
var smd = new StockMovementBatchDocument();
|
|
|
smd.EntityLink.ID = batch.ID;
|
|
@@ -112,17 +96,16 @@ namespace Comal.Stores
|
|
|
|
|
|
private List<Guid> SavePurchaseOrderDocuments(CoreTable table, Guid purchaseOrderID)
|
|
|
{
|
|
|
- List<Guid> consignmentDocIDs = new List<Guid>();
|
|
|
- List<PurchaseOrderDocument> purchaseOrderDocuments = new List<PurchaseOrderDocument>();
|
|
|
- foreach (CoreRow row in table.Rows)
|
|
|
+ var consignmentDocIDs = new List<Guid>();
|
|
|
+ var purchaseOrderDocuments = new List<PurchaseOrderDocument>();
|
|
|
+ foreach (var row in table.Rows)
|
|
|
{
|
|
|
- List<object> list = row.Values;
|
|
|
- Guid docID = Guid.Parse(list[0].ToString());
|
|
|
+ var docID = row.Get<ConsignmentDocument, Guid>(x => x.DocumentLink.ID);
|
|
|
consignmentDocIDs.Add(docID);
|
|
|
- PurchaseOrderDocument PODocument = new PurchaseOrderDocument();
|
|
|
+ var PODocument = new PurchaseOrderDocument();
|
|
|
PODocument.DocumentLink.ID = docID;
|
|
|
PODocument.EntityLink.ID = purchaseOrderID;
|
|
|
- CoreTable existingPODocs = Provider.Query<PurchaseOrderDocument>(
|
|
|
+ var existingPODocs = Provider.Query<PurchaseOrderDocument>(
|
|
|
new Filter<PurchaseOrderDocument>(x => x.DocumentLink.ID).IsEqualTo(docID), //check that PO document doesn't already exist
|
|
|
new Columns<PurchaseOrderDocument>(x => x.ID));
|
|
|
if (existingPODocs.Rows.Count == 0)
|