public static SaleAndContextBuilder ASaleAndContextWithNoItems()
 {
     var outlet = AnOutlet();
     var order = new Sale(Guid.NewGuid(), outlet) {OrderType = OrderType.DistributorPOS};
     var bank = MockOrderBuilder.Bank;
     return new SaleAndContextBuilder(AnOutlet(), ADistributorSalesman(), AUser(), order, bank, bank.Branches.First());
 }
 protected OrderSaleContextBuilder(Outlet outlet, CostCentre costCentre, User user, Sale sale, Bank bank, BankBranch bankBranch)
 {
     Outlet = outlet;
     CostCentre = costCentre;
     User = user;
     Sale = sale;
     Bank = bank;
     BankBranch = bankBranch;
 }
Beispiel #3
0
        public Result<object> Process(Sale sale, IEnvelopeContext context)
        {
            var envelopeBuilder = new DeliveryEnvelopeBuilder(sale,
                new PaymentNoteEnvelopeBuilder(context,
                new ReceiptEnvelopeBuilder(context,
                new OutletVisitNoteEnvelopeBuilder(context))));

            return new Transactor(database).Transact(() =>
            {
                envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e));
                sale.ConfirmNewPayments();
                saleRepository.Save(sale);
            });
        }
Beispiel #4
0
        public Result<object> Process(Sale sale, IEnvelopeContext context)
        {
            var envelopeBuilder = new OrderEnvelopeBuilder(sale,
                new MainOrderEnvelopeBuilder(context,
                new ExternalDocRefEnvelopeBuilder(context,
                new PaymentNoteEnvelopeBuilder(context,
                new OutletVisitNoteEnvelopeBuilder(context)))));

            return new Transactor(database).Transact(() =>
            {
                envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e));
                sale.OrderReference = context.OrderSaleReference();
                sale.ConfirmNewPayments();
                sale.ProcessingStatus = ProcessingStatus.Submitted;
                saleRepository.Save(sale);
            });
        }
        public Result<object> Process(Sale sale, IEnvelopeContext context)
        {
            var envelopeBuilder = new DeliveryEnvelopeBuilder(sale,
                new CloseOrderEnvelopeBuilder(context,
                new DispatchNoteEnvelopeBuilder(context,
                new PaymentNoteEnvelopeBuilder(context,
                new ReceiptEnvelopeBuilder(context,
                new CreditNoteEnvelopeBuilder(context,
                new InventoryAdjustmentNoteEnvelopeBuilder(context, inventoryRepository,
                new OutletVisitNoteEnvelopeBuilder(context))))))));

            return new Transactor(database).Transact(() =>
            {
                envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e));
                sale.ConfirmNewPayments();

                sale.ProcessingStatus = sale.HasNoBackorderItems ? ProcessingStatus.Confirmed : ProcessingStatus.PartiallyFulfilled;
                saleRepository.Save(sale);
            });
        }
        public void Handle(CreateMainOrderCommand command)
        {
            var order = GetOrder();
            if (order != null)
            {
                // We ignore the CreateMainOrderCommand when the order already exists. 
                // The Hub sends a CreateMainOrderCommand when it can not fulfil the complete order (i.e. back order)
                return;
            }

            currentSale = new Sale(command.PDCommandId, outletRepository.GetById(command.IssuedOnBehalfOfCostCentreId))
            {
                ShipToAddress = command.ShipToAddress,
                SaleDiscount = command.SaleDiscount,
                Note = command.Note,
                OrderReference = command.DocumentReference,
                ProcessingStatus = ProcessingStatus.Submitted,
                _DateCreated = command.DocumentDateIssued,
            };
        }
Beispiel #7
0
        public Result<object> Process(Sale sale, IEnvelopeContext context)
        {

            var envelopeBuilder = new SaleEnvelopeBuilder(sale,
                new MainOrderEnvelopeBuilder(context,
                new CloseOrderEnvelopeBuilder(context,
                new ExternalDocRefEnvelopeBuilder(context,
                new DispatchNoteEnvelopeBuilder(context,
                new InvoiceEnvelopeBuilder(context,
                new PaymentNoteEnvelopeBuilder(context,
                new ReceiptEnvelopeBuilder(context,
                new InventoryAdjustmentNoteEnvelopeBuilder(context, inventoryRepository,
                new OutletVisitNoteEnvelopeBuilder(context))))))))));

            return new Transactor(database).Transact(() =>
            {
                envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e));
                inventoryRepository.AdjustInventoryForSale(sale);
                sale.OrderReference = context.OrderSaleReference();
                sale.ConfirmNewPayments();
                sale.ProcessingStatus = ProcessingStatus.Confirmed;
                saleRepository.Save(sale);
            });
        }
 public SaleAndContextBuilder(Outlet outlet, CostCentre costCentre, User user, Sale sale, Bank bank, BankBranch bankBranch)
     : base(outlet, costCentre, user, sale, bank, bankBranch)
 {
 }
 public OrderAndContext(Sale order, IEnvelopeContext context)
 {
     Sale = order;
     Context = context;
 }
Beispiel #10
0
 public void ApplyDiscounts(Sale sale)
 {
     
 }
 public OrderSaleContextBuilder AnSaleAndContextBuilder()
 {
     var outlet = AnOutlet();
     var sale = new Sale(Guid.NewGuid(), outlet);
     var bank = ABank();
     return new SaleAndContextBuilder(outlet, AUsersCostCentre(), AUser(), sale, bank, bank.Branches.First());
 }
 public void Init(Guid parentDoucmentGuid)
 {
     currentParentGuid = parentDoucmentGuid;
     currentDispatchNoteType = -1;
     currentSale = null;
 }
 public Order GetOrder()
 {
     return currentSale ?? (currentSale = saleRepository.FindById(currentParentGuid.GetValueOrDefault()));
 }