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 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 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; }