public async Task UpdateInvoiceEdi(InvoiceEdi invoiceEdiToBeUpdated, InvoiceEdi invoiceEdi) { invoiceEdiToBeUpdated.EdiString = invoiceEdi.EdiString; invoiceEdiToBeUpdated.XmlString = invoiceEdi.XmlString; invoiceEdiToBeUpdated.Username = invoiceEdi.Username; await unitOfWork.CommitAsync(); }
public async Task <InvoiceEdi> CreateInvoiceEdi(InvoiceEdi invoiceEdi) { await unitOfWork.InvoicesEdi.AddAsync(invoiceEdi); await unitOfWork.CommitAsync(); return(invoiceEdi); }
public async Task <ActionResult <Order> > PostOrder([FromBody] PostOrderDTO order) { var orderToAdd = new Order { SellDate = DateTime.Now, ShallDisplay = true, OrderState = OrderState.New, InvoiceId = null, OrderValue = 0.0M, Username = order.Invoice.Username }; List <Product> products = new List <Product>(); foreach (var item in order.PostOrders) { var product = await productService.GetByIdAsync(item.ProductId); products.Add(product); orderToAdd.OrderValue += (product.NettoPrice + decimal.Divide(product.VAT, 100) * product.NettoPrice) * item.QuantityOfProducts; } var placedOrder = await orderService.CreateOrder(orderToAdd); var orderItems = new List <OrderItem>(); foreach (var product in products) { var orderItem = new OrderItem { OrderId = placedOrder.OrderId, ProductId = product.ProductId }; foreach (var item in order.PostOrders) { if (item.ProductId == product.ProductId) { orderItem.Amount = item.QuantityOfProducts; orderItem.NettoPrice = product.NettoPrice * item.QuantityOfProducts; orderItem.BruttoPrice += (product.NettoPrice + decimal.Divide(product.VAT, 100) * product.NettoPrice) * item.QuantityOfProducts; } } await orderItemService.CreateOrderItem(orderItem); orderItems.Add(orderItem); } EdiParser ediParser = new EdiParser(); var mappedOrderItems = mapper.Map <List <OrderItem>, List <GetOrderItemForXml> >(orderItems); var invoice = await CreateInvoice(placedOrder.OrderId, order.Invoice); var invoiceXml = new XmlInvoice(invoice.InvoiceId, invoice.IssueDate, invoice.DeliveryDate, SynthPolInfo.supplierName, SynthPolInfo.supplierStreet, SynthPolInfo.supplierCity, SynthPolInfo.supplierZipCode, SynthPolInfo.supplierNIP, invoice.Name, invoice.Street, invoice.ZipCode, invoice.City, invoice.NIP, mappedOrderItems); YAXSerializer serializer = new YAXSerializer(typeof(XmlInvoice)); string xmlString = serializer.Serialize(invoiceXml); var invoiceEdiToAdd = new InvoiceEdi { Username = invoice.Username, InvoiceId = invoice.InvoiceId, EdiString = ediParser.Save(invoice.InvoiceId.ToString(), invoice.IssueDate.ToString(), invoice.DeliveryDate.ToString(), SynthPolInfo.supplierName, SynthPolInfo.supplierStreet, SynthPolInfo.supplierZipCode, SynthPolInfo.supplierCity, SynthPolInfo.supplierNIP, invoice.Name, invoice.Street, invoice.ZipCode, invoice.City, invoice.NIP, orderItems), XmlString = xmlString }; var invoiceEdi = await invoiceEdiService.CreateInvoiceEdi(invoiceEdiToAdd); var newOrder = placedOrder; newOrder.InvoiceId = invoice.InvoiceId; await orderService.UpdateOrder(placedOrder, newOrder); var newInvoice = invoice; newInvoice.InvoiceEdiId = invoiceEdi.InvoiceEdiId; await invoiceService.UpdateInvoice(invoice, newInvoice); return(Ok()); }