public ProfitReportsController(IAdditionalCostsManager additionalCostsManager,
                                       IEmployeeRateRspManager employeeRateRspManager, IEmployeesManager employeeManager, IOrdersManager orderManager,
                                       IForeignProductsManager foreignProductsManager, IMaterialDeliveryRspManager materialDeliveryRspManager,
                                       ISocialTaxesManager socialTaxesManager, IInstrumentsManager instrumentsManager, IOwnProductsManager ownProductsManager,
                                       ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager,
                                       ITaxesManager taxesManager, IInvoicesManager invoicesManager, IInterestsManager interestsManager, ITermsManager termsManager)
        {
            this.additionalCostsManager     = additionalCostsManager;
            this.employeeRateRspManager     = employeeRateRspManager;
            this.employeeManager            = employeeManager;
            this.orderManager               = orderManager;
            this.foreignProductsManager     = foreignProductsManager;
            this.ownProductsManager         = ownProductsManager;
            this.materialDeliveryRspManager = materialDeliveryRspManager;
            this.socialTaxesManager         = socialTaxesManager;
            this.instrumentsManager         = instrumentsManager;
            this.interestsManager           = interestsManager;

            this.termPositionsManager = termPositionsManager;
            this.positionsManager     = positionsManager;
            this.termCostsManager     = termCostsManager;
            this.taxesManager         = taxesManager;
            this.invoicesManager      = invoicesManager;
            this.termsManager         = termsManager;
        }
        public ProfitReportsController(IAdditionalCostsManager additionalCostsManager, 
            IEmployeeRateRspManager employeeRateRspManager, IEmployeesManager employeeManager, IOrdersManager orderManager,
            IForeignProductsManager foreignProductsManager, IMaterialDeliveryRspManager materialDeliveryRspManager,
            ISocialTaxesManager socialTaxesManager, IInstrumentsManager instrumentsManager, IOwnProductsManager ownProductsManager,
            ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager,
            ITaxesManager taxesManager, IInvoicesManager invoicesManager, IInterestsManager interestsManager, ITermsManager termsManager)
        {
            this.additionalCostsManager = additionalCostsManager;
            this.employeeRateRspManager = employeeRateRspManager;
            this.employeeManager = employeeManager;
            this.orderManager = orderManager;
            this.foreignProductsManager = foreignProductsManager;
            this.ownProductsManager = ownProductsManager;
            this.materialDeliveryRspManager = materialDeliveryRspManager;
            this.socialTaxesManager = socialTaxesManager;
            this.instrumentsManager = instrumentsManager;
            this.interestsManager = interestsManager;

            this.termPositionsManager = termPositionsManager;
            this.positionsManager = positionsManager;
            this.termCostsManager = termCostsManager;
            this.taxesManager = taxesManager;
            this.invoicesManager = invoicesManager;
            this.termsManager = termsManager;
        }
 public GenerateMonthInvoicesController(IInvoicesManager invoicesManager, IOrdersManager ordersManager,
     ITaxesManager taxesManager, IInvoicePositionsManager invoicePositionsManager, IUniqueNumberProvider numberProvider,
     ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager,
     IPrinterManager printerManager) : 
     base(invoicesManager, ordersManager, taxesManager, invoicePositionsManager, numberProvider, termPositionsManager, positionsManager, termCostsManager)
 {
     this.printerManager = printerManager;
 }
 public GenerateMonthInvoicesController(IInvoicesManager invoicesManager, IOrdersManager ordersManager,
                                        ITaxesManager taxesManager, IInvoicePositionsManager invoicePositionsManager, IUniqueNumberProvider numberProvider,
                                        ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager,
                                        IPrinterManager printerManager) :
     base(invoicesManager, ordersManager, taxesManager, invoicePositionsManager, numberProvider, termPositionsManager, positionsManager, termCostsManager)
 {
     this.printerManager = printerManager;
 }
Exemple #5
0
 public ReportOrdersController(IOrdersManager manager,
                               ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager,
                               ITaxesManager taxesManager, IInvoicesManager invoicesManager)
     : base(manager)
 {
     this.termPositionsManager = termPositionsManager;
     this.positionsManager     = positionsManager;
     this.termCostsManager     = termCostsManager;
     this.taxesManager         = taxesManager;
     this.invoicesManager      = invoicesManager;
 }
 public AddInvoicesController(IInvoicesManager invoicesManager, IOrdersManager ordersManager,
     ITaxesManager taxesManager, IInvoicePositionsManager invoicePositionsManager, IUniqueNumberProvider numberProvider,
     ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager)
 {
     this.invoicesManager = invoicesManager;
     this.numberProvider = numberProvider;
     this.ordersManager = ordersManager;
     this.taxesManager = taxesManager;
     this.invoicePositionsManager = invoicePositionsManager;
     this.termPositionsManager = termPositionsManager;
     this.positionsManager = positionsManager;
     this.termCostsManager = termCostsManager;
 }
 public AddInvoicesController(IInvoicesManager invoicesManager, IOrdersManager ordersManager,
                              ITaxesManager taxesManager, IInvoicePositionsManager invoicePositionsManager, IUniqueNumberProvider numberProvider,
                              ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager)
 {
     this.invoicesManager         = invoicesManager;
     this.numberProvider          = numberProvider;
     this.ordersManager           = ordersManager;
     this.taxesManager            = taxesManager;
     this.invoicePositionsManager = invoicePositionsManager;
     this.termPositionsManager    = termPositionsManager;
     this.positionsManager        = positionsManager;
     this.termCostsManager        = termCostsManager;
 }
 public DeleteAllTermPositionsController(ITermsManager manager, ITermPositionsManager positionManager)
 {
     this.manager = manager;
     this.positionManager = positionManager;
 }
        public static double CalculateTotalPrice(Orders order,
                                                 ITermPositionsManager termPositionsManager,
                                                 IPositionsManager positionsManager,
                                                 ITermCostsManager termCostsManager,
                                                 ITaxesManager taxesManager,
                                                 DateTime?fromDate,
                                                 DateTime?toDate,
                                                 ref double profit)
        {
            double result = 0;

            //TODO discuss with customer - take positions where proccessed amount not null (but take with 0)
            var termPositions = termPositionsManager.GetEntities(o => !o.DeleteDate.HasValue && o.Terms.OrderId == order.Id && o.ProccessedAmount.HasValue);

            if (fromDate.HasValue && toDate.HasValue)
            {
                termPositions = termPositions.Where(o => o.Terms.Date >= fromDate.Value && o.Terms.Date <= toDate.Value);
            }

            foreach (var termPosition in termPositions.ToList())
            {
                //positions
                if (termPosition.ProccessedAmount.Value > 0)
                {
                    var positionProfit = CalculatePositionPrice(termPosition.Positions.Price, termPosition.ProccessedAmount.Value,
                                                                termPosition.Positions.Payment);

                    result += positionProfit;

                    //todo calculate profit
                    profit += positionProfit;
                }

                //materials
                foreach (var material in termPosition.TermPositionMaterialRsps.Where(o => !o.DeleteDate.HasValue && o.Amount.HasValue))
                {
                    var amount = material.Amount.Value;
                    if (material.Materials.MaterialAmountTypes == MaterialAmountTypes.Meter)
                    {
                        if (material.Materials.Length != 0)
                        {
                            amount = amount / (double)material.Materials.Length.Value;
                        }
                        else
                        {
                            //todo
                        }
                    }

                    result += CalculatePositionPrice(material.Materials.Price, amount, PaymentTypes.Standard);

                    var materialProfit = material.Materials.Price * amount - material.Materials.BoughtPrice * amount;
                    profit += materialProfit;
                }
            }

            //material positions without terms
            var materialPositionsWithoutTerms = positionsManager.GetEntities(o => o.OrderId == order.Id && !o.DeleteDate.HasValue &&
                                                                             !o.TermId.HasValue && o.MaterialId.HasValue && o.IsMaterialPosition);

            if (fromDate.HasValue && toDate.HasValue)
            {
                materialPositionsWithoutTerms = materialPositionsWithoutTerms.Where(o => o.ChangeDate >= fromDate.Value && o.ChangeDate <= toDate.Value);
            }

            foreach (var position in materialPositionsWithoutTerms.ToList())
            {
                var price = CalculatePositionPrice(position.Price, position.Amount, position.Payment);

                result += price;

                profit += price - position.Materials.BoughtPrice * position.Amount;
            }

            //extra costs
            var termCosts = termCostsManager.GetEntities(o => !o.DeleteDate.HasValue && o.Terms.OrderId == order.Id);

            if (fromDate.HasValue && toDate.HasValue)
            {
                termCosts = termCosts.Where(o => o.Terms.Date >= fromDate.Value && o.Terms.Date <= toDate.Value);
            }

            foreach (var termCost in termCosts.ToList())
            {
                var price = CalculatePositionPrice(termCost.Price, 1, PaymentTypes.Standard);

                result += price;

                profit += price - termCost.Costs;
            }


            //TODO get taxes from invoices and calculate taxes only for open positions
            var taxes = CalculateTaxes(taxesManager);

            var taxValue = (result / (double)100) * taxes;

            if (order.Customers.WithTaxes)
            {
                //with taxes
                result += taxValue;
            }

            return(result);
        }
        public static double CalculateTotalPrice(Orders order,
            ITermPositionsManager termPositionsManager,
            IPositionsManager positionsManager,
            ITermCostsManager termCostsManager,
            ITaxesManager taxesManager,
            DateTime? fromDate,
            DateTime? toDate,
            ref double profit)
        {
            double result = 0;

            //TODO discuss with customer - take positions where proccessed amount not null (but take with 0)
            var termPositions = termPositionsManager.GetEntities(o => !o.DeleteDate.HasValue && o.Terms.OrderId == order.Id && o.ProccessedAmount.HasValue);

            if(fromDate.HasValue && toDate.HasValue)
            {
                termPositions = termPositions.Where(o => o.Terms.Date >= fromDate.Value && o.Terms.Date <= toDate.Value);
            }

            foreach (var termPosition in termPositions.ToList())
            {
                //positions
                if (termPosition.ProccessedAmount.Value > 0)
                {
                    var positionProfit = CalculatePositionPrice(termPosition.Positions.Price, termPosition.ProccessedAmount.Value,
                        termPosition.Positions.Payment);

                    result += positionProfit;

                    //todo calculate profit
                    profit += positionProfit;
                }

                //materials
                foreach (var material in termPosition.TermPositionMaterialRsps.Where(o => !o.DeleteDate.HasValue && o.Amount.HasValue))
                {
                    var amount = material.Amount.Value;
                    if (material.Materials.MaterialAmountTypes == MaterialAmountTypes.Meter)
                    {
                        if (material.Materials.Length != 0)
                        {
                            amount = amount / (double)material.Materials.Length.Value;
                        }
                        else
                        {
                            //todo
                        }
                    }

                    result += CalculatePositionPrice(material.Materials.Price, amount, PaymentTypes.Standard);

                    var materialProfit = material.Materials.Price * amount - material.Materials.BoughtPrice * amount;
                    profit += materialProfit;
                }
            }

            //material positions without terms
            var materialPositionsWithoutTerms = positionsManager.GetEntities(o => o.OrderId == order.Id && !o.DeleteDate.HasValue &&
                !o.TermId.HasValue && o.MaterialId.HasValue && o.IsMaterialPosition);

            if (fromDate.HasValue && toDate.HasValue)
            {
                materialPositionsWithoutTerms = materialPositionsWithoutTerms.Where(o => o.ChangeDate >= fromDate.Value && o.ChangeDate <= toDate.Value);
            }

            foreach (var position in materialPositionsWithoutTerms.ToList())
            {
                var price = CalculatePositionPrice(position.Price, position.Amount, position.Payment);

                result += price;

                profit += price - position.Materials.BoughtPrice * position.Amount;
            }

            //extra costs
            var termCosts = termCostsManager.GetEntities(o => !o.DeleteDate.HasValue && o.Terms.OrderId == order.Id);

            if (fromDate.HasValue && toDate.HasValue)
            {
                termCosts = termCosts.Where(o => o.Terms.Date >= fromDate.Value && o.Terms.Date <= toDate.Value);
            }

            foreach (var termCost in termCosts.ToList())
            {
                var price = CalculatePositionPrice(termCost.Price, 1, PaymentTypes.Standard);

                result += price;

                profit += price - termCost.Costs;
            }


            //TODO get taxes from invoices and calculate taxes only for open positions
            var taxes = CalculateTaxes(taxesManager);

            var taxValue = (result / (double)100) * taxes;
            if (order.Customers.WithTaxes)
            {
                //with taxes
                result += taxValue;
            }

            return result;
        }
 public ReportPositionsController(ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager) 
 {
     this.termPositionsManager = termPositionsManager;
     this.positionsManager = positionsManager;
     this.termCostsManager = termCostsManager;
 }
 public DeleteAllTermPositionsController(ITermsManager manager, ITermPositionsManager positionManager)
 {
     this.manager         = manager;
     this.positionManager = positionManager;
 }
 public ReportPositionsController(ITermPositionsManager termPositionsManager, IPositionsManager positionsManager, ITermCostsManager termCostsManager)
 {
     this.termPositionsManager = termPositionsManager;
     this.positionsManager     = positionsManager;
     this.termCostsManager     = termCostsManager;
 }