//public InvoiceFacadeService() //{ // try // { // ServiceLocator.Current.GetInstance<IInvoiceDomainService>(); // ServiceLocator.Current.GetInstance<IInvoiceApplicationService>(); // ServiceLocator.Current.GetInstance<IInvoiceToDtoMapper>(); // ServiceLocator.Current.GetInstance<IInvoiceItemToDtoMapper>(); // ServiceLocator.Current.GetInstance<IInvoiceRepository>(); // ServiceLocator.Current.GetInstance<IGoodUnitConvertorDomainService>(); // ServiceLocator.Current.GetInstance<IMainUnitVlaueTomainUnitVlaueDtoMapper>(); // ServiceLocator.Current.GetInstance<IUnitOfWorkScope>(); // ServiceLocator.Current.GetInstance<IInvoiceItemDomainService>(); // ServiceLocator.Current.GetInstance<IEffectiveFactorMapper>(); // ServiceLocator.Current.GetInstance<IInvoiceAdditionalPriceDomainService>(); // } // catch (Exception ex) // { // throw; // } //} public InvoiceFacadeService(IInvoiceDomainService invoiceDomainService, IInvoiceApplicationService invoiceAppService, IInvoiceToDtoMapper invoiceDtoMapper, IInvoiceItemToDtoMapper itemToDtoMapper, IInvoiceRepository invoiceRepository, IGoodUnitConvertorDomainService goodUnitConvertorDomainService, IMainUnitVlaueTomainUnitVlaueDtoMapper mainUnitVlaueTomainUnitVlaueDtoMapper, IInvoiceItemDomainService invoiceItemDomainService, IEffectiveFactorMapper effectiveFactorMapper, IInvoiceAdditionalPriceDomainService invoiceAdditionalPriceDomainService, IBalanceDomainService balanceDomainService ) { this.invoiceDomainService = invoiceDomainService; this.invoiceRepository = invoiceRepository; this.goodUnitConvertorDomainService = goodUnitConvertorDomainService; this.mainUnitVlaueTomainUnitVlaueDtoMapper = mainUnitVlaueTomainUnitVlaueDtoMapper; this.invoiceItemDomainService = invoiceItemDomainService; this.effectiveFactorMapper = effectiveFactorMapper; this.invoiceAdditionalPriceDomainService = invoiceAdditionalPriceDomainService; this.balanceDomainService = balanceDomainService; this.invoiceAppService = invoiceAppService; this.invoiceDtoMapper = invoiceDtoMapper; this.itemToDtoMapper = itemToDtoMapper; }
public Invoice(InvoiceTypes invoiceType, string invoiceNumber, Company owner, DateTime invoiceDate, DivisionMethods divisionMethod, AccountingTypes accountType, Invoice invoiceRefrence, List<Order> orderRefrences, Currency currency, bool isCreditor, Company transporter, Company supplier, string description, List<InvoiceItem> list, List<InvoiceAdditionalPrice> invoiceAdditionalPriceList, IEntityConfigurator<Invoice> invoiceConfigurator, IInvoiceDomainService invoiceDomainService, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService, IInvoiceAdditionalPriceDomainService invoiceAdditionalPriceDomainService, IBalanceDomainService balanceDomainService) : this() { // TODO: Complete member initialization InvoiceType = invoiceType; InvoiceNumber = invoiceNumber; Owner = owner; InvoiceDate = invoiceDate; DivisionMethod = divisionMethod; AccountingType = accountType; InvoiceRefrence = invoiceRefrence; OrderRefrences = orderRefrences; Currency = currency; IsCreditor = isCreditor; Transporter = transporter; Supplier = supplier; TransporterId = Transporter == null ? (long?)null : Transporter.Id; SupplierId = Supplier == null ? (long?)null : Supplier.Id; InvoiceRefrenceId = InvoiceRefrence == null ? (long?)null : InvoiceRefrence.Id; Description = description; UpdateInvoiceItems(list, null, balanceDomainService); UpdateInvoiceAdditionalPrice(invoiceAdditionalPriceList, null); this.invoiceConfigurator = invoiceConfigurator; this.invoiceAdditionalPriceDomainService = invoiceAdditionalPriceDomainService; invoiceConfigurator.Configure(this); invoiceBaseType.ValidateType(this); checkInvoiceNumberToBeUnique(invoiceDomainService); CheckInvoiceHaveInvoiceItem(); invoiceBaseType.CheckInvoiceItemValidateQuantityAndRefrence(this, invoiceItemDomainService, goodUnitConvertorDomainService); invoiceAdditionalPriceDomainService.CalculateAdditionalPrice(this); }
public OpenState( IInvoiceItemDomainService invoiceItemDomainService, IBalanceDomainService balanceDomainService, IInventoryOperationNotifier inventoryOperationNotifier, IInvoiceStateFactory invoiceStateFactory) { this.invoiceItemDomainService = invoiceItemDomainService; this.balanceDomainService = balanceDomainService; this.inventoryOperationNotifier = inventoryOperationNotifier; this.invoiceStateFactory = invoiceStateFactory; }
public InvoiceFactory( IEntityConfigurator<Invoice> invoiceConfigurator, IWorkflowRepository workflowRepository, IInvoiceDomainService invoiceDomainService, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService, IInvoiceAdditionalPriceDomainService invoiceAdditionalPriceDomainService, IBalanceDomainService balanceDomainService) { this.invoiceConfigurator = invoiceConfigurator; this.workflowRepository = workflowRepository; this.invoiceDomainService = invoiceDomainService; this.invoiceItemDomainService = invoiceItemDomainService; this.goodUnitConvertorDomainService = goodUnitConvertorDomainService; this.invoiceAdditionalPriceDomainService = invoiceAdditionalPriceDomainService; this.balanceDomainService = balanceDomainService; }
public InvoiceApplicationService(IInvoiceRepository invoiceRepository, IUnitOfWorkScope unitOfWorkScope, // IGoodPartyAssignmentDomainService goodPartyAssignmentDomainService, //IUserRepository userRepository, IVesselInCompanyDomainService vesselDomainService, IGoodDomainService goodDomainService, IInvoiceFactory invoiceFactory, ICompanyDomainService companyDomainService, IInvoiceDomainService invoiceDomainService, IInvoiceItemDomainService invoiceItemDomainService, IEffectiveFactorDomainService effectiveFactorDomainService, ICompanyRepository companyRepository //,IApprovableDomainService approvableDomainService , IOrderRepository orderRepository, IGoodRepository goodRepository, ICurrencyDomainService currencyDomainService, IInvoiceAdditionalPriceDomainService invoiceAdditionalPriceDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService, IBalanceDomainService balanceDomainService, IEntityConfigurator<Invoice> invoiceConfigurator) { this.invoiceRepository = invoiceRepository; this.vesselDomainService = vesselDomainService; this.goodDomainService = goodDomainService; this.invoiceFactory = invoiceFactory; this.unitOfWorkScope = unitOfWorkScope; this.companyDomainService = companyDomainService; this.invoiceDomainService = invoiceDomainService; this.invoiceItemDomainService = invoiceItemDomainService; this.effectiveFactorDomainService = effectiveFactorDomainService; this.companyRepository = companyRepository; this.orderRepository = orderRepository; this.goodRepository = goodRepository; this.currencyDomainService = currencyDomainService; this.invoiceAdditionalPriceDomainService = invoiceAdditionalPriceDomainService; this.goodUnitConvertorDomainService = goodUnitConvertorDomainService; this.balanceDomainService = balanceDomainService; this.invoiceConfigurator = invoiceConfigurator; // _approvableDomainService = approvableDomainService; // _goodPartyAssignmentDomainService = goodPartyAssignmentDomainService; }
public override void CheckInvoiceItemValidateQuantityAndRefrence(Invoice invoice, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService) { CheckInvoiceItemValidateQuantityAndRefrenceWithOrder(invoice, invoiceItemDomainService,goodUnitConvertorDomainService); }
public CalculateChangeInOrderBlance(IInvoiceItemDomainService invoiceItemDomainService, IBalanceDomainService balanceDomainService) { this.invoiceItemDomainService = invoiceItemDomainService; this.balanceDomainService = balanceDomainService; }
private void UpdateInvoiceItems(List<InvoiceItem> invoiceItems, IInvoiceItemDomainService invoiceItemDomainService, IBalanceDomainService balanceDomainService) { if (InvoiceType == InvoiceTypes.Attach) { if (InvoiceRefrence == null) throw new BusinessRuleException("", "Reference not Set"); //<A.H> Moved to the outside of if block. //foreach (var invoiceItem in InvoiceItems.ToList()) //{ // invoiceItemDomainService.DeleteInvoiceItem(invoiceItem); //} //<A.H> Moved to the outside of if block. //InvoiceItems = invoiceItems; } for (int index = 0; index < InvoiceItems.Count; index++) { invoiceItemDomainService.DeleteInvoiceItem(InvoiceItems[index]); } InvoiceItems = invoiceItems; //<A.H> : The implementation has been moved to Submit method. //else //{ // if (OrderRefrences == null) // throw new BusinessRuleException("", "Reference not Set"); // var c = new CalculateChangeInOrderBlance(invoiceItemDomainService, balanceDomainService); // InvoiceItems = c.Process(this, invoiceItems, OrderRefrences); //} }
public void Update(string invoiceNumber, DateTime invoiceDate, DivisionMethods divisionMethod, Invoice invoiceRefrence, List<Order> orderRefrences, Currency currency, bool isCreditor, Company transporter, Company supplier, string description, List<InvoiceItem> invoiceItems, List<InvoiceAdditionalPrice> invoiceAdditionalPriceList, IInvoiceDomainService invoiceDomainService, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService, IInvoiceAdditionalPriceDomainService invoiceAdditionalPriceDomainService, IBalanceDomainService balanceDomainService) { InvoiceNumber = invoiceNumber; InvoiceDate = invoiceDate; DivisionMethod = divisionMethod; InvoiceRefrence = invoiceRefrence; OrderRefrences = orderRefrences; Currency = currency; Transporter = transporter; Supplier = supplier; Description = description; IsCreditor = isCreditor; UpdateInvoiceItems(invoiceItems, invoiceItemDomainService, balanceDomainService); UpdateInvoiceAdditionalPrice(invoiceAdditionalPriceList, invoiceAdditionalPriceDomainService); TransporterId = Transporter == null ? (long?)null : Transporter.Id; SupplierId = Supplier == null ? (long?)null : Supplier.Id; InvoiceRefrenceId = InvoiceRefrence == null ? (long?)null : InvoiceRefrence.Id; // this.invoiceConfigurator = invoiceConfigurator; // invoiceConfigurator.Configure(this); checkInvoiceNumberToBeUnique(invoiceDomainService); CheckInvoiceHaveInvoiceItem(); invoiceBaseType.CheckInvoiceItemValidateQuantityAndRefrence(this, invoiceItemDomainService, goodUnitConvertorDomainService); invoiceBaseType.ValidateType(this); invoiceAdditionalPriceDomainService.CalculateAdditionalPrice(this); ApproveWorkFlows = new List<InvoiceWorkflowLog>(); }
public void SubmitInvoice( IInvoiceItemDomainService invoiceItemDomainService, IBalanceDomainService balanceDomainService, IInventoryOperationNotifier inventoryOperationNotifier) { // CheckInvoiceAnyInvoiceItem(); if (OrderRefrences == null) throw new BusinessRuleException("", "Reference not Set"); var c = new CalculateChangeInOrderBlance(invoiceItemDomainService, balanceDomainService); var orderItemsBalances = c.Process(this, this.InvoiceItems, this.OrderRefrences); foreach (var orderItemsBalance in orderItemsBalances) { var inventoryResult = inventoryOperationNotifier.NotifySubmittingOrderItemBalance(orderItemsBalance); if (inventoryResult == null) throw new InvalidOperation("SubmitInvoiceOrderItemBalance", "Submit the OrderItemBalance of Invoice to Inventory resulted to an error."); orderItemsBalance.InventoryOperation = inventoryResult; } State = States.Submitted; }
// public void DeleteAllItems(IInvoiceItemDomainService invoiceItemDomainService) // { // for (int index = 0; index < InvoiceItems.Count; index++) // { // // } // } public void CheckDeleteRules(IBalanceDomainService balanceDomainService, IInvoiceItemDomainService invoiceItemDomainService) { if (!(State == States.Open || State == States.SubmitRejected)) throw new BusinessRuleException("BR_IN7", "Invoice Is Open"); foreach (var invoiceItem in InvoiceItems.ToList()) { balanceDomainService.DeleteInvoiceItemRefrencesFromBalance(invoiceItem.Id); invoiceItemDomainService.DeleteInvoiceItem(invoiceItem); } }
protected void CheckInvoiceItemValidateQuantityAndRefrenceWithOrder(Invoice invoice, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService) { var refrencedOrder = invoiceItemDomainService.GetRefrencedOrders(invoice.OrderRefrences.Select(c => c.Id).ToList()).ToList(); // foreach (var invoiceItem in invoice.InvoiceItems) // { // if (invoiceItem.Fee == 0) // throw new BusinessRuleException("Br_In13", "Fee can Not be Zero"); // // InvoiceItem item = invoiceItem; // var allOrderItemsWithThisGoodId = refrencedOrder.SelectMany(c => c.OrderItems).Where(c => c.GoodId == item.GoodId).ToList(); // if (!allOrderItemsWithThisGoodId.Any()) // throw new BusinessRuleException("Br_In10", "Invalid Invoice Item"); // // decimal totalOrder; // decimal totalRecipt; // decimal totalinvoice; // // if (allOrderItemsWithThisGoodId.GroupBy(c => c.MeasuringUnitId).Count() > 1) // { // totalOrder = allOrderItemsWithThisGoodId.Sum // (c => goodUnitConvertorDomainService.GetUnitValueInMainUnit(c.GoodId, c.MeasuringUnitId, c.Quantity).Value); // totalRecipt = allOrderItemsWithThisGoodId.SelectMany(c => c.OrderItemBalances).Sum // ( // c => // goodUnitConvertorDomainService.GetUnitValueInMainUnit // (c.OrderItem.GoodId, c.FuelReportDetail.MeasuringUnitId, c.FuelReportCount).Value); // // totalinvoice = allOrderItemsWithThisGoodId.SelectMany(c => c.OrderItemBalances).Sum // ( // c => // goodUnitConvertorDomainService.GetUnitValueInMainUnit // (c.OrderItem.GoodId, c.InvoiceItem.MeasuringUnitId, c.InvoiceItemCount).Value); // // } // else // { // totalOrder = allOrderItemsWithThisGoodId.Sum(c => c.Quantity); // totalRecipt = allOrderItemsWithThisGoodId.SelectMany(c => c.OrderItemBalances).Sum(c => c.FuelReportCount); // totalinvoice = allOrderItemsWithThisGoodId.SelectMany(c => c.OrderItemBalances).Sum(c => c.InvoiceItemCount); // } // // QuantityIsValidBalanceForInvoice(invoiceItem.Quantity, totalOrder, totalRecipt, totalinvoice); // } }
public virtual void CheckInvoiceItemValidateQuantityAndRefrence(Invoice invoice, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService) { throw new NotImplementedException(); }