public InvoiceCommand(InvoiceTypes invoiceType, string invoiceNumber, Company owner, DateTime invoiceDate, DivisionMethods divisionMethod, AccountingTypes accountType, Invoice invoiceRefrence, List<long> orderRefrences, Currency currency, Company transporter, Company supplier, string description, List<InvoiceItemCommand> list) { // TODO: Complete member initialization InvoiceType = invoiceType; InvoiceNumber = invoiceNumber; Owner = owner; InvoiceDate = invoiceDate; DivisionMethod = divisionMethod; AccountingType = accountType; InvoiceRefrence = invoiceRefrence; OrdersRefrenceId = orderRefrences; Currency = currency; Transporter = transporter; Supplier = supplier; Description = description; InvoiceItems = list; }
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 Invoice CreateInvoiceObject(InvoiceCommand invoiceCommand, IEnumerable<Good> goods, Company owner, Company transporter, Company supplier, Invoice invoiceRefrence, List<Order> orderRefrences, Currency currency, List<InvoiceItem> invoiceItems, List<InvoiceAdditionalPrice> invoiceAdditionalPriceList, bool forCalculate) { var invoice = new Invoice ( invoiceCommand.InvoiceType, invoiceCommand.InvoiceNumber, owner, invoiceCommand.InvoiceDate, invoiceCommand.DivisionMethod, invoiceCommand.AccountingType, invoiceRefrence, orderRefrences,currency,invoiceCommand.IsCreditor, transporter, supplier, invoiceCommand.Description, invoiceItems, invoiceAdditionalPriceList, invoiceConfigurator, invoiceDomainService, invoiceItemDomainService,goodUnitConvertorDomainService,invoiceAdditionalPriceDomainService,balanceDomainService); if (!forCalculate) { var init = workflowRepository.Single (c => c.WorkflowEntity == WorkflowEntities.Invoice && c.CurrentWorkflowStage == WorkflowStages.Initial); var invoiceWorkflow = new InvoiceWorkflowLog (invoice.Id, WorkflowEntities.Invoice, DateTime.Now, WorkflowActions.Init, //TODO: Fake ActorId 1101, "", init.Id, true); invoice.ApproveWorkFlows.Add(invoiceWorkflow); } return invoice; }
//public List<InvoiceItem> Process(Invoice invoice, List<InvoiceItem> invoiceItems, List<Order> orderRefrences) //{ // foreach (var item in invoice.InvoiceItems.ToList()) // { // balanceDomainService.DeleteInvoiceItemRefrencesFromBalance(item.Id); // invoiceItemDomainService.DeleteInvoiceItem(item); // } // foreach (var invoiceItem in invoiceItems) // { // balanceDomainService.CreateBalanceRecordForInvoiceItem(invoiceItem, orderRefrences); // } // return invoiceItems; //} public List<OrderItemBalance> Process(Invoice invoice, List<InvoiceItem> invoiceItems, List<Order> orderRefrences) { var result = new List<OrderItemBalance>(); foreach (var invoiceItem in invoiceItems) { result.AddRange(balanceDomainService.CreateBalanceRecordForInvoiceItem(invoiceItem, orderRefrences)); } return result; }
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 List<InventoryOperation> NotifySubmittingInvoice(Invoice source) { var invoiceDto = invoiceToDtoMapper.MapToModel(source); return new List<InventoryOperation>(new InventoryOperation[] { new InventoryOperation( 312, "INV# - " +DateTime.Now.Ticks, DateTime.Now, InventoryActionType.Issue, (long? )null, (long? )null)}); }
//================================================================================ public List<InventoryOperation> ManageInvoice(Invoice invoice, int userId) { using (var dbContext = new InventoryDbContext()) { using (var transaction = new TransactionScope()) { foreach (var orderItemBalance in invoice.OrderRefrences.SelectMany(o => o.OrderItems.SelectMany(oi => oi.OrderItemBalances))) { //Finding relevant Receipt Item var receiptReference = findInventoryOperationReference( dbContext, InventoryOperationType.Receipt, FUEL_REPORT_DETAIL_RECEIVE, orderItemBalance.FuelReportDetailId.ToString()); var receiptReferenceTransactionItem = dbContext.TransactionItems.Where( tip => tip.TransactionId == (int)receiptReference.OperationId && tip.GoodId == (int)orderItemBalance.FuelReportDetail.Good.SharedGoodId); var receiptRegisteredPrices = dbContext.TransactionItemPrices.Where( tip => tip.TransactionItem.TransactionId == (int)receiptReference.OperationId && tip.TransactionItem.GoodId == (int)orderItemBalance.FuelReportDetail.Good.SharedGoodId); var receiptPriceReferenceNumber = generateOrderItemBalancePricingReferenceNumber(orderItemBalance); var receiptRegisteredPriceReference = findInventoryOperationReference(dbContext, InventoryOperationType.Receipt, FUEL_REPORT_DETAIL_RECEIPT_INVOICE, receiptPriceReferenceNumber); receiptRegisteredPrices.FirstOrDefault(p => p.Id == receiptRegisteredPriceReference.OperationId); var referenceNumber = orderItemBalance.FuelReportDetailId; } var reference = findInventoryOperationReference(dbContext, InventoryOperationType.Issue, FUEL_REPORT_DETAIL_RECEIPT_INVOICE, invoice.Id.ToString()); //if (reference.OperationId == INVALID_ID) if (reference == null) { } else { var transactionItems = dbContext.TransactionItems.Where(ti => ti.TransactionId == reference.OperationId); } } } return null; }
public Invoice CalculateAdditionalPrice(InvoiceCommand invoiceCommand) { var invoice = new Invoice(); if (invoiceCommand.Id != 0) { invoice = invoiceRepository.GetConfiguredInvoice(invoiceCommand.Id, new SingleResultFetchStrategy<Invoice>() .Include(c => c.InvoiceItems) .Include(c=>c.OrderRefrences) .Include(c => c.AdditionalPrices) .Include(c=>c.OrderRefrences.Select(d=>d.OrderItems)),invoiceConfigurator); if (invoice == null) throw new ObjectNotFound("Invoice", invoiceCommand.Id); } var orderRefrences = GetOrderRefrences(invoiceCommand.OrdersRefrenceId); var invoiceRefrence = GetInvoiceRefrence(invoiceCommand.InvoiceRefrenceId); var transporter = invoiceCommand.TransporterId == null ? null : companyRepository.Single(c => c.Id == invoiceCommand.TransporterId); var supplier = invoiceCommand.SupplierId == null ? null : companyRepository.Single(c => c.Id == invoiceCommand.SupplierId); var owner = companyRepository.Single(c => c.Id == invoiceCommand.OwnerId); if (owner == null) throw new ObjectNotFound("Company", invoiceCommand.OwnerId); var currency = currencyDomainService.Get(invoiceCommand.CurrencyId); if (currency == null) throw new ObjectNotFound("Currency", invoiceCommand.CurrencyId); var goods = goodDomainService.GetCompanyGoodsWithUnits(invoiceCommand.OwnerId).ToList(); if (invoiceCommand.Id != 0 && invoiceCommand.InvoiceType != invoice.InvoiceType) throw new InvalidOperation("Update", "Can not Update Invoice Type"); var invoiceItems = GetInvoiceItems(invoiceCommand, goods).ToList(); var invoiceAdditionalPriceList = GetAdditionalPrice(invoiceCommand); if (invoice.Id == 0) invoice = invoiceFactory.CreateInvoiceObject ( invoiceCommand, goods, owner, transporter, supplier, invoiceRefrence, orderRefrences, currency, invoiceItems, invoiceAdditionalPriceList, true); else invoice.Update ( invoiceCommand.InvoiceNumber, invoiceCommand.InvoiceDate, invoiceCommand.DivisionMethod, invoiceRefrence, orderRefrences, currency, invoiceCommand.IsCreditor, transporter, supplier, invoiceCommand.Description, invoiceItems, invoiceAdditionalPriceList, invoiceDomainService, invoiceItemDomainService, goodUnitConvertorDomainService, invoiceAdditionalPriceDomainService, balanceDomainService); var invoice2 = invoiceAdditionalPriceDomainService.CalculateAdditionalPrice(invoice); return invoice2; }
public List<InventoryOperation> NotifySubmittingInvoice(Invoice source) { var invoiceDto = invoiceToDtoMapper.MapToModel(source); //var inventoryOperationDtosResult = svc.NotifySubmittingInvoice(invoiceDto).ToList(); //var result = inventoryOperationDtosResult.Select(mapInventoryOperationDtoToInventoryOperation); //return result.ToList(); var syncEvent = new AutoResetEvent(false); List<InventoryOperation> callResult = null; Exception callException = null; ClientHelper.Post<List<FuelReportInventoryOperationDto>, InvoiceDto> //(new Uri("http://localhost:65234/api/fuelevents", UriKind.Absolute), //(new Uri("http://evaluation-srv:9090/api/fuelevents", UriKind.Absolute), (MessageBrokerApiUri, (result, exp) => { callException = exp; if (result != null) callResult = result.Select(mapInventoryOperationDtoToInventoryOperation).ToList(); syncEvent.Set(); }, invoiceDto, ClientHelper.MessageFormat.Json, new Dictionary<string, string>(), "InvoiceDto"); syncEvent.WaitOne(); if (callException != null) throw callException; return callResult; }
public List<InventoryOperation> NotifySubmittingInvoice(Invoice source) { //var invoiceDto = invoiceToDtoMapper.MapToModel(source); //var inventoryOperationDtosResult = svc.NotifySubmittingInvoice(invoiceDto).ToList(); //var result = inventoryOperationDtosResult.Select(mapInventoryOperationDtoToInventoryOperation); //return result.ToList(); return null; }
public void UpdateOrderItemsFromInvoiceItem(Invoice invoice) { }