/// <summary> /// Erstellen eines neuen Rechnungsentwurfs. /// </summary> public ApiResponse <InvoiceCreateResponse> Create(InvoiceCreateRequest request) { return(this.Send <InvoiceCreateResponse>(new ApiRequest { Service = "invoice.create", Data = request })); }
/// <summary>Создание счета</summary> /// <param name="request">Запрос на создание счета</param> /// <returns>Новый счет</returns> public static InvoiceAggregate CreateFromRequest(InvoiceCreateRequest request) { return(new InvoiceAggregate() { Id = Guid.NewGuid(), ContractId = request.ContractId, DateStart = request.DateStart, DateEnd = request.DateEnd, IsDeleted = false, }); }
/// <summary>Запрос на создание случайного счета</summary> public static InvoiceCreateRequest CreateRandomInvoiceCreateRequest() { var request = new InvoiceCreateRequest() { ContractId = Guid.NewGuid(), DateStart = DateTime.MinValue, DateEnd = DateTime.Now, }; return(request); }
public async Task <IActionResult> Create([FromBody] InvoiceCreateRequest request) { var isAllowedToCreate = await _contractManager.CheckContractIsActive(request.ContractId); if (isAllowedToCreate != null && !(bool)isAllowedToCreate) { return(BadRequest($"Contract {request.ContractId} is not active or not found.")); } var id = await _invoiceManager.Create(request); return(Ok(id)); }
public async Task <Guid> Create(InvoiceCreateRequest request) { //Создаем новую сущность счета var invoice = InvoiceAggregate.CreateFromRequest(request); //Устанавливаем список карточек связанных со счетом и рассчитываем сумму var sheets = await _invoiceRepo.GetSheets( request.ContractId, request.DateStart, request.DateEnd); //Добавляем карточки к счету и рассчитываем сумму оплаты invoice.IncludeSheets(sheets); //Закидываем новый счет в базу await _invoiceRepo.Add(invoice); return(invoice.Id); }
/// <summary> /// Tạo mới hóa đơn. /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult Create(Authentication authentication, InvoiceCreateModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoices/create-batch"; InvoiceCreateRequest request = new InvoiceCreateRequest(model); List <InvoiceDetail> invoiceDetails = new List <InvoiceDetail>(); if (model.Details != null) { invoiceDetails.AddRange(model.Details.Select(c => new InvoiceDetail(c))); } request.Details = invoiceDetails; List <InvoiceTaxBreakdown> taxBreakdowns = new List <InvoiceTaxBreakdown>(); if (model.InvoiceTaxBreakdowns != null) { taxBreakdowns.AddRange(model.InvoiceTaxBreakdowns.Select(c => new InvoiceTaxBreakdown(c))); } request.InvoiceTaxBreakdowns = taxBreakdowns; request.TotalAmount = request.Details.Sum(c => c.Amount); request.TotalVatAmount = request.Details.Sum(c => c.VatAmount); request.TotalDiscountAmountBeforeTax = request.Details.Sum(c => c.DiscountAmountBeforeTax); if (request.TotalDiscountAmountAfterTax == 0) { if (request.TotalDiscountPercentAfterTax > 0) { request.TotalDiscountAmountAfterTax = request.TotalAmount * request.TotalDiscountPercentAfterTax / 100; } } request.TotalPaymentAmount = request.TotalAmount + request.TotalVatAmount - request.TotalDiscountAmountAfterTax; var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token); var response = rawResponse.ToObject <BaseResponse <InvoiceCreateResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }