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; }
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); }); }
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, }; }
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; }
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())); }