예제 #1
0
        internal static void AssertEqual(this SalesOrder expected, ISalesOrderDetailReturn result)
        {
            if (expected == null)
            {
                throw new ArgumentNullException("expected");
            }
            if (result == null)
            {
                throw new ArgumentNullException("result");
            }

            Assert.AreEqual(expected.ToSalesOrderKey().KeyValue, result.MovementKey);
            Assert.AreEqual(expected.InventoryShipmentOrder.MoveNum, result.MoveNum);
            Assert.AreEqual(expected.Broker.ToCompanyKey().KeyValue, result.Broker.CompanyKey);
            Assert.AreEqual(expected.InventoryShipmentOrder.SourceFacility.ToFacilityKey().KeyValue, result.OriginFacility.FacilityKey);
            Assert.AreEqual(expected.InventoryShipmentOrder.ToShipmentInformationKey().KeyValue, result.Shipment.ShipmentKey);
            Assert.AreEqual(InventoryOrderEnum.CustomerOrder, result.Shipment.InventoryOrderEnum);
            Assert.AreEqual(expected.OrderStatus, result.SalesOrderStatus);
            Assert.AreEqual(expected.InventoryShipmentOrder.TakenBy, result.OrderTakenBy);
            Assert.AreEqual(expected.InventoryShipmentOrder.DateReceived, result.DateOrderReceived);
            Assert.AreEqual(expected.PaymentTerms, result.PaymentTerms);
            Assert.AreEqual(expected.CreditMemo, result.CreditMemo);
            Assert.AreEqual(expected.InvoiceDate, result.InvoiceDate);
            Assert.AreEqual(expected.InvoiceNotes, result.InvoiceNotes);
            Assert.AreEqual(expected.FreightCharge, result.FreightCharge);
            Assert.AreEqual(expected.InventoryShipmentOrder.PurchaseOrderNumber, result.PurchaseOrderNumber);
            Assert.AreEqual(expected.InventoryShipmentOrder.ShipmentInformation.ShipmentMethod, result.Shipment.TransitInformation.ShipmentMethod);
            expected.SoldTo.AssertEqual(result.ShipFromReplace);
        }
예제 #2
0
        public IResult <ISalesOrderDetailReturn> GetSalesOrder(string salesOrderKey)
        {
            if (salesOrderKey == null)
            {
                throw new ArgumentNullException("salesOrderKey");
            }

            ISalesOrderDetailReturn salesOrder = null;
            var select = SalesOrderProjectors.SplitSelectDetail(_inventoryShipmentOrderUnitOfWork, _timeStamper.CurrentTimeStamp);

            var orderKeyResult = KeyParserHelper.ParseResult <ISalesOrderKey>(salesOrderKey);

            if (orderKeyResult.Success)
            {
                var orderKey = orderKeyResult.ResultingObject.ToSalesOrderKey();
                salesOrder = _inventoryShipmentOrderUnitOfWork.SalesOrderRepository.Filter(orderKey.FindByPredicate).SplitSelect(select).FirstOrDefault();
            }

            if (salesOrder == null)
            {
                int moveNum;
                if (int.TryParse(salesOrderKey, out moveNum))
                {
                    salesOrder = _inventoryShipmentOrderUnitOfWork.SalesOrderRepository.Filter(o => o.InventoryShipmentOrder.MoveNum == moveNum).SplitSelect(select).FirstOrDefault();
                }

                if (salesOrder == null)
                {
                    return(orderKeyResult.Success ? new InvalidResult <ISalesOrderDetailReturn>(null, string.Format(UserMessages.SalesOrderNotFound, salesOrderKey)) : orderKeyResult.ConvertTo <ISalesOrderDetailReturn>());
                }
            }

            return(new SuccessResult <ISalesOrderDetailReturn>(salesOrder));
        }