Example #1
0
 /// <summary>
 /// Erstellen eines neuen Rechnungsentwurfs.
 /// </summary>
 public ApiResponse <InvoiceCreateResponse> Create(InvoiceCreateRequest request)
 {
     return(this.Send <InvoiceCreateResponse>(new ApiRequest
     {
         Service = "invoice.create",
         Data = request
     }));
 }
Example #2
0
 /// <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,
     });
 }
Example #3
0
        /// <summary>Запрос на создание случайного счета</summary>
        public static InvoiceCreateRequest CreateRandomInvoiceCreateRequest()
        {
            var request = new InvoiceCreateRequest()
            {
                ContractId = Guid.NewGuid(),
                DateStart  = DateTime.MinValue,
                DateEnd    = DateTime.Now,
            };

            return(request);
        }
Example #4
0
        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));
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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);
        }