Exemplo n.º 1
0
 public InvoiceAppService(
     ISubscriptionPaymentRepository subscriptionPaymentRepository,
     IInvoiceNumberGenerator invoiceNumberGenerator,
     EditionManager editionManager,
     IRepository <Invoice> invoiceRepository)
 {
     _subscriptionPaymentRepository = subscriptionPaymentRepository;
     _invoiceNumberGenerator        = invoiceNumberGenerator;
     _editionManager    = editionManager;
     _invoiceRepository = invoiceRepository;
 }
Exemplo n.º 2
0
    public Invoice Invoice(IInvoiceNumberGenerator generator, string vendorInvoiceNumber, DateTime date, decimal amount)
    {
        // These guards maintain business integrity of the PO.
        if (this.IsFullyInvoiced)
        {
            throw new Exception("The PO is fully invoiced.");
        }
        if (ContainsInvoice(vendorInvoiceNumber))
        {
            throw new Exception("Duplicate invoice!");
        }

        var invoiceNumber = generator.GenerateInvoiceNumber(this.VendorId, vendorInvoiceNumber, date);

        var invoice = new Invoice(invoiceNumber, vendorInvoiceNumber, date, amount);

        this.Invoices.Add(invoice);
        DomainEvents.Raise(new PurchaseOrderInvoicedEvent(this.Id, invoice.InvoiceNumber));
        return(invoice);
    }
 public DefaultInvoiceNumberGenerator_Tests()
 {
     _invoiceNumberGenerator = Resolve <IInvoiceNumberGenerator>();
     _invoiceRepository      = Resolve <IRepository <Invoice> >();
 }
Exemplo n.º 4
0
 public InvoiceFactory(IDomainEventPublisher eventPublisher, IInvoiceNumberGenerator numberGenerator, IDependencyInjector dependencyInjector)
 {
     _eventPublisher     = eventPublisher;
     _numberGenerator    = numberGenerator;
     _dependencyInjector = dependencyInjector;
 }
Exemplo n.º 5
0
 public PurchaseOrderService(IPurchaseOrderRepository repository, IInvoiceNumberGenerator invoiceNumberGenerator)
 {
     this.repository             = repository;
     this.invoiceNumberGenerator = invoiceNumberGenerator;
 }