Exemplo n.º 1
0
        //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;
        }
Exemplo n.º 2
0
 public BalanceDomainService(IOrderRepository orderRepository,
                             IGoodUnitConvertorDomainService goodUnitConvertorDomainService,
                             IRepository<OrderItemBalance> balanceRepository,
     IRepository<FuelReportDetail> fuelReportDetailRepository)
 {
     this.orderRepository = orderRepository;
     this.goodUnitConvertorDomainService = goodUnitConvertorDomainService;
     this.balanceRepository = balanceRepository;
     this.fuelReportDetailRepository = fuelReportDetailRepository;
 }
 public InvoiceItemDomainService(IInvoiceRepository invoiceRepository,
     IRepository<InvoiceItem> invoiceItemRepository,
     IOrderRepository orderRepository, IGoodDomainService goodDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService)
 {
     this.invoiceRepository = invoiceRepository;
     this.orderRepository = orderRepository;
     this.goodDomainService = goodDomainService;
     this.goodUnitConvertorDomainService = goodUnitConvertorDomainService;
     this.invoiceItemRepository = invoiceItemRepository;
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
        public OrderFacadeService(IOrderApplicationService orderAppService,
                                  ICompanyDomainService companyDomainService,
                                  IOrderToDtoMapper orderDtoMapper,
                                  IOrderItemToDtoMapper itemToDtoMapper,
                                  IOrderRepository orderRepository,
            IGoodUnitConvertorDomainService goodUnitConvertorDomainService,
            IMainUnitVlaueTomainUnitVlaueDtoMapper mainUnitVlaueTomainUnitVlaueDtoMapper
            , IUnitOfWorkScope unitOfWorkScope
)
        {
            _orderRepository = orderRepository;
            _goodUnitConvertorDomainService = goodUnitConvertorDomainService;
            _mainUnitVlaueTomainUnitVlaueDtoMapper = mainUnitVlaueTomainUnitVlaueDtoMapper;
            _unitOfWorkScope = unitOfWorkScope;
            _orderAppService = orderAppService;
            _companyDomainService = companyDomainService;
            _orderDtoMapper = orderDtoMapper;
            _itemToDtoMapper = itemToDtoMapper;
        }
        public void TestInitialize()
        {
            _scope = new UnitOfWorkScope(new EFUnitOfWorkFactory(() => new DataContainer()));

            basicInfoDomainServiceObjects = new BasicInfoDomainServiceObjectsContainer(_scope);

            _target = new GoodUnitConvertorDomainService(
                new GoodDomainService(
                    new GoodAntiCorruptionAdapter(
                        new GoodAntiCorruptionServiceWrapper(new WebClientHelper(new HttpClient()),
                                                             new ExternalHostAddressHelper()),
                        new GoodAntiCorruptionMapper()), new EFRepository<Good>(_scope),
                        basicInfoDomainServiceObjects.CompanyDomainService, new EFRepository<GoodUnit>(_scope)),
                        new GoodUnitDomainService(new BaseAntiCorruptionAdapter<GoodUnit, GoodUnitDto>(new BaseAntiCorruptionServiceWrapper<GoodUnitDto>
                            (new WebClientHelper(new HttpClient())), new BaseAntiCorruptionMapper<GoodUnit, GoodUnitDto>()),
                            new EFRepository<GoodUnit>(_scope)

                            ));
        }
        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;
        }
Exemplo n.º 9
0
 public override void CheckInvoiceItemValidateQuantityAndRefrence(Invoice invoice, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService)
 {
     CheckInvoiceItemValidateQuantityAndRefrenceWithOrder(invoice, invoiceItemDomainService,goodUnitConvertorDomainService);
 }
Exemplo n.º 10
0
        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>();
        }
Exemplo n.º 11
0
        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);
            //            }
        }
Exemplo n.º 12
0
 public virtual void CheckInvoiceItemValidateQuantityAndRefrence(Invoice invoice, IInvoiceItemDomainService invoiceItemDomainService, IGoodUnitConvertorDomainService goodUnitConvertorDomainService)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 13
0
        public void UpdateReceived(decimal receivedQuantityInMainUnit, IGoodUnitConvertorDomainService goodUnitConvertorDomainService)
        {
            var orderItemQuantityInMainUnit = goodUnitConvertorDomainService.ConvertUnitValueToMainUnitValue(this.MeasuringUnit, this.Quantity);
            if (ReceivedInMainUnit + receivedQuantityInMainUnit > orderItemQuantityInMainUnit)
                throw new BusinessRuleException("", "Received quantity could not become greater then available ordered quantity.");

            ReceivedInMainUnit += receivedQuantityInMainUnit;
        }