Ejemplo n.º 1
0
        private void TestAsta(int daysElapsed, double originalAsta, int expectedAsta)
        {
            var result = AstaCalculator.CalculateAsta(originalAsta, startingDate, startingDate, startingDate.AddDays(daysElapsed));

            if (result != expectedAsta)
            {
                Assert.Fail("Expected '{0}' but received '{1}' on originalAsta of '{2}' after '{3}' daysElapsed.", expectedAsta, result, originalAsta, daysElapsed);
            }
        }
Ejemplo n.º 2
0
        private void TestRatio(int daysElapsed, double expectedValue)
        {
            var result             = AstaCalculator.CalculateRatio(startingDate, startingDate.AddDays(daysElapsed));
            var absoluteDifference = Math.Abs(expectedValue - result);

            if (absoluteDifference > EPSILON)
            {
                Assert.Fail("Expected '{0}' but received '{1}' on '{2}' days elapsed. Difference of '{3}' is greater than tolerance of '{4}'.", expectedValue, result, daysElapsed, absoluteDifference, EPSILON);
            }
        }
Ejemplo n.º 3
0
        private IEnumerable<tblBatchItem> CreateBatchItems(ProductionBatch batch, IDictionary<int, tblBOM> daBOMs)
        {
            var lotNumber = LotNumberParser.BuildLotNumber(batch);
            foreach(var pickedItem in batch.Production.PickedInventory.Items)
            {
                var availableQuantity = pickedItem.Quantity;
                var inventory = _unitOfWork.InventoryRepository.FindByKey(new InventoryKey(pickedItem));
                if(inventory != null)
                {
                    availableQuantity += inventory.Quantity;
                }
                var weight = pickedItem.PackagingProduct.Weight;
                var avaiableWeight = availableQuantity * weight;

                int? astaCalc = null;
                var asta = pickedItem.Lot.Attributes.FirstOrDefault(a => a.AttributeShortName == StaticAttributeNames.Asta.ShortName);
                if(asta != null)
                {
                    var productionDate = asta.AttributeDate;
                    if(batch.Production.Results != null)
                    {
                        productionDate = batch.Production.Results.ProductionEnd;
                    }
                    astaCalc = AstaCalculator.CalculateAsta(asta.AttributeValue, asta.AttributeDate, productionDate, DateTime.UtcNow);
                }

                yield return new tblBatchItem
                    {
                        EntryDate = pickedItem.PickedInventory.TimeStamp.ConvertUTCToLocal(),
                        Lot = LotNumberParser.BuildLotNumber(pickedItem),
                        TTypeID = (int?)TransType.Batching,
                        PkgID = int.Parse(pickedItem.Lot.LotTypeEnum == LotTypeEnum.Packaging ? pickedItem.Lot.PackagingLot.PackagingProduct.Product.ProductCode : pickedItem.PackagingProduct.Product.ProductCode),
                        Tote = pickedItem.ToteKey,
                        Quantity = pickedItem.Quantity,
                        NetWgt = (decimal?)weight,
                        TtlWgt = (decimal?)(pickedItem.Quantity * weight),
                        LocID = pickedItem.FromLocation.LocID.Value,
                        TrtmtID = pickedItem.TreatmentId,
                        EmployeeID = pickedItem.PickedInventory.EmployeeId,
                        NewLot = lotNumber,
                        BatchLot = lotNumber,
                        AstaCalc = astaCalc,
                        AvgAsta = asta == null ? null : (decimal?)asta.AttributeValue,
                        //ODetail = 
                        PackSchID = batch.PackSchedule.PackSchID,
                        AQ = availableQuantity,
                        AW = (decimal?)avaiableWeight,
                        LoBac = batch.Production.ResultingChileLot.AllAttributesAreLoBac,
                    
                        tblBOM = GetDaBOM(daBOMs, pickedItem)
                    };
            }
        }
Ejemplo n.º 4
0
        public void CalculateAsta_value_is_as_expected_when_value_would_have_been_entered_several_days_after_production()
        {
            var productionDate = new DateTime(2012, 3, 29);

            const int testedAsta = 73;
            var       testedDate = productionDate.AddDays(1000);

            const int expectedCurrentAsta = 10;
            var       currentDate         = productionDate.AddDays(5000);

            Assert.AreEqual(expectedCurrentAsta, AstaCalculator.CalculateAsta(testedAsta, testedDate, productionDate, currentDate));
        }
Ejemplo n.º 5
0
        public void Returns_PickedInventoryItems_with_AstaCalc_properties_as_expected_on_success()
        {
            //Arrange
            StartStopwatch();

            const double originalAsta     = 120.0;
            var          now              = DateTime.UtcNow;
            var          productionEnd    = now.AddDays(-200);
            var          expectedAstaCalc = AstaCalculator.CalculateAsta(originalAsta, productionEnd, productionEnd, now);
            var          asta             = StaticAttributeNames.Asta;

            var lot          = TestHelper.CreateObjectGraphAndInsertIntoDatabase <Lot>(l => l.EmptyLot());
            var chileLot     = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileLot>(c => c.Lot.EmptyLot());
            var astaChileLot = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileLot>(c => c.Lot.EmptyLot(), c => c.Production.Results.EmptyItems().ProductionEnd = productionEnd);

            TestHelper.CreateObjectGraphAndInsertIntoDatabase <LotAttribute>(a => a.SetValues(astaChileLot, asta, originalAsta).AttributeDate = productionEnd);

            var parentRecord    = CreateParentRecord();
            var pickedInventory = GetPickedInventoryRecordFromParent(parentRecord);
            var picked0         = TestHelper.CreateObjectGraphAndInsertIntoDatabase <PickedInventoryItem>(i => i.ConstrainByKeys(pickedInventory, lot));
            var picked1         = TestHelper.CreateObjectGraphAndInsertIntoDatabase <PickedInventoryItem>(i => i.ConstrainByKeys(pickedInventory, chileLot));
            var picked2         = TestHelper.CreateObjectGraphAndInsertIntoDatabase <PickedInventoryItem>(i => i.ConstrainByKeys(pickedInventory, astaChileLot));

            TestHelper.ResetContext();
            StopWatchAndWriteTime("Arrange");

            //Act
            var result = TimedExecution(() => MethodUnderTest(parentRecord));

            //Assert
            result.AssertSuccess();
            var items      = GetPickedInventoryItemsFromResult(result.ResultingObject);
            var pickedKey0 = new PickedInventoryItemKey(picked0);
            var pickedKey1 = new PickedInventoryItemKey(picked1);
            var pickedKey2 = new PickedInventoryItemKey(picked2);

            Assert.IsNull(items.Single(i => i.PickedInventoryItemKey == pickedKey0.KeyValue).AstaCalc);
            Assert.IsNull(items.Single(i => i.PickedInventoryItemKey == pickedKey1.KeyValue).AstaCalc);
            Assert.AreEqual(expectedAstaCalc, items.Single(i => i.PickedInventoryItemKey == pickedKey2.KeyValue).AstaCalc);
        }
Ejemplo n.º 6
0
        private static Expression <Func <LotAttribute, DateTime?, int?> > CalculateAsta(DateTime currentDate)
        {
            var astaCalc = AstaCalculator.CalculateAsta();

            return((a, d) => astaCalc.Invoke(a.AttributeValue, a.AttributeDate, d ?? a.AttributeDate, currentDate));
        }
Ejemplo n.º 7
0
        private void SyncPickedItems(tblOrder tblOrder, SalesOrderItem orderItem, ref DateTime lastEntryDate, tblOrderDetail detail)
        {
            var stagedToDelete = detail.tblStagedFGs.ToDictionary(s => s.EntryDate);

            foreach (var picked in orderItem.PickedItems ?? new List <SalesOrderPickedItem>())
            {
                tblStagedFG staged;
                if (picked.PickedInventoryItem.DetailID != null && stagedToDelete.TryGetValue(picked.PickedInventoryItem.DetailID.Value, out staged))
                {
                    stagedToDelete.Remove(staged.EntryDate);
                }
                else
                {
                    lastEntryDate = lastEntryDate.AddSeconds(1);
                    staged        = new tblStagedFG
                    {
                        EntryDate = lastEntryDate,
                        s_GUID    = Guid.NewGuid()
                    };
                    detail.tblStagedFGs.Add(staged);
                    picked.PickedInventoryItem.DetailID = staged.EntryDate;
                    _commitNewContext = true;
                }

                var packaging = OldContextHelper.GetPackaging(picked.PickedInventoryItem.PackagingProduct);
                var treatment = OldContextHelper.GetTreatment(picked.PickedInventoryItem);

                staged.OrderNum        = tblOrder.OrderNum;
                staged.ODetail         = detail.ODetail;
                staged.Lot             = LotNumberParser.BuildLotNumber(picked.PickedInventoryItem);
                staged.TTypeID         = (int?)TransType.Batching; //To match logic found in Access (apnd_PickProdTemp) - RI 2016-3-15
                staged.PkgID           = packaging.PkgID;
                staged.Quantity        = picked.PickedInventoryItem.Quantity;
                staged.NetWgt          = packaging.NetWgt;
                staged.TtlWgt          = picked.PickedInventoryItem.Quantity * packaging.NetWgt;
                staged.LocID           = picked.PickedInventoryItem.CurrentLocation.LocID.Value;
                staged.TrtmtID         = treatment.TrtmtID;
                staged.EmployeeID      = picked.PickedInventoryItem.PickedInventory.EmployeeId;
                staged.CustProductCode = picked.PickedInventoryItem.CustomerProductCode;
                staged.CustLot         = picked.PickedInventoryItem.CustomerLotCode;

                staged.AstaCalc = null;
                var asta = picked.PickedInventoryItem.Lot.Attributes.FirstOrDefault(a => a.AttributeShortName == GlobalKeyHelpers.AstaAttributeNameKey.AttributeNameKey_ShortName);
                if (asta != null)
                {
                    var productionEnd = asta.AttributeDate;
                    if (picked.PickedInventoryItem.Lot.ChileLot != null && picked.PickedInventoryItem.Lot.ChileLot.Production != null && picked.PickedInventoryItem.Lot.ChileLot.Production.Results != null)
                    {
                        productionEnd = picked.PickedInventoryItem.Lot.ChileLot.Production.Results.ProductionEnd;
                    }
                    staged.AstaCalc = AstaCalculator.CalculateAsta(asta.AttributeValue, asta.AttributeDate, productionEnd, DateTime.UtcNow);
                }

                staged.LoBac = false;
                if (picked.PickedInventoryItem.Lot.ChileLot != null)
                {
                    staged.LoBac = picked.PickedInventoryItem.Lot.ChileLot.AllAttributesAreLoBac;
                }
            }

            foreach (var staged in stagedToDelete.Values)
            {
                OldContext.tblStagedFGs.DeleteObject(staged);
            }
        }