public async Task <IActionResult> Edit(int id, FaturaViewModel FVM, FaturaCliente faturaCliente) { var fatura = await _context.Faturas .Include(f => f.Fatura) .FirstOrDefaultAsync(m => m.NrFaturaId == id); var pacote = await _context.Pacotes .SingleOrDefaultAsync(p => p.PacoteId == fatura.PacoteId); fatura.DataEmissao = FVM.DataEmissao; fatura.Descricao = FVM.Descricao; fatura.NomeCliente = FVM.NomeCliente; fatura.ContratoId = FVM.ContratoId; fatura.Morada = FVM.Morada; fatura.PrecoContrato = FVM.PrecoContrato; fatura.PacoteId = FVM.PacoteId; FVM.NomePacote = pacote.NomePacote; if (faturaCliente.DataEmissao > DateTime.Today || faturaCliente.DataEmissao < DateTime.Today.AddDays(-90)) { ModelState.AddModelError("DataEmissao", "A data da fatura não pode ultrapassar os 90 dias anteriores"); } if (!ModelState.IsValid) { ModelState.AddModelError("", "Não foi possível adicionar a fatura, tente novamente"); return(View(FVM)); } _context.Update(fatura); await _context.SaveChangesAsync(); ViewBag.Mensagem = "Fatura editada com sucesso"; return(View("Sucesso")); }
// GET: FaturaCliente/Details/5 public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } FaturaViewModel FVM = new FaturaViewModel(); var faturaCliente = await _context.Faturas .Include(f => f.Fatura) .FirstOrDefaultAsync(m => m.NrFaturaId == id); var pacote = await _context.Pacotes .SingleOrDefaultAsync(p => p.PacoteId == faturaCliente.PacoteId); FVM.NrFaturaId = (int)id; FVM.DataEmissao = faturaCliente.DataEmissao; FVM.ContratoId = faturaCliente.ContratoId; FVM.NomeCliente = faturaCliente.NomeCliente; FVM.Morada = faturaCliente.Morada; FVM.PrecoContrato = faturaCliente.PrecoContrato; FVM.NomePacote = pacote.NomePacote; FVM.PacoteId = pacote.PacoteId; FVM.Descricao = faturaCliente.Descricao; if (faturaCliente == null) { return(NotFound()); } return(View(FVM)); }
public FaturaViewModel FaturaAtualizar(FaturaViewModel faturaViewModel) { var fatura = Mapper.Map <Fatura>(faturaViewModel); _faturaService.FaturaAtualizar(fatura); Commit(); return(faturaViewModel); }
public ActionResult Edit(FaturaViewModel faturaViewModel) { if (ModelState.IsValid) { _faturaApplicationService.FaturaAdicionar(faturaViewModel); return(RedirectToAction("Index")); } return(View(faturaViewModel)); }
public string GerarFatura(string postedData) { var js = new JavaScriptSerializer(); var boleto = js.Deserialize <LoteBoleto>(postedData); var fatura = new FaturaViewModel(); var tokenIUGU = new RepositorioParametro().Listar().FirstOrDefault().TokenIUGU; var response = ""; string faturaJSON = ""; try { //Util.EnviarBoletoPorEmail(boleto, "boleto.pdf"); if (boleto.TituloId != null) { fatura = Util.GerarFatura(boleto); } else { fatura = Util.GerarFatura((int)boleto.TituloRecorrenteId, boleto.ModeloBoletoId, boleto.DataVencimento, boleto.Valor); } faturaJSON = js.Serialize(fatura); using (WebClient client = new WebClient()) { client.Encoding = System.Text.Encoding.UTF8; client.Headers.Add("Content-Type", "application/json"); client.Headers.Add("Authorization", "Basic " + tokenIUGU); response = client.UploadString("https://api.iugu.com/v1/invoices", "POST", faturaJSON); } var faturaResponse = js.Deserialize <FaturaResponse>(response); if (faturaResponse != null) { var faturaGerada = new FaturaGerada(); faturaGerada.DataVencimento = DateTime.Parse(faturaResponse.due_date); faturaGerada.IuguId = faturaResponse.id; faturaGerada.TituloId = boleto.TituloId; faturaGerada.TituloRecorrenteId = boleto.TituloRecorrenteId; faturaGerada.UrlFatura = faturaResponse.secure_url; var repoFaturaGerada = new RepositorioFaturaGerada(); repoFaturaGerada.Incluir(faturaGerada); } return("Enviado"); } catch (WebException e) { return(StreamToString(e.Response.GetResponseStream()) + " " + faturaJSON); } }
public ActionResult Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } FaturaViewModel faturaViewModel = _faturaApplicationService.FaturaObterPorId(id.Value); if (faturaViewModel == null) { return(HttpNotFound()); } return(View(faturaViewModel)); }
public ActionResult Edit(int id) { if (id == -1) { var model = new FaturaEditViewModel(); model.Id = -1; model.Total = 0; model.Subtotal = 0; model.RazonSocial = string.Empty; model.Correo = string.Empty; model.Direccion = string.Empty; model.Nit = 0; var ClienteList = new List <SelectListItem>(); var clienmodel = ServiceDeal.GetClientes(); ClienteList.Add(new SelectListItem { Value = "-1", Text = "--Seleccione un Cliente--", Selected = true }); foreach (var il in clienmodel) { ClienteList.Add(new SelectListItem { Value = il.Nit.ToString(), Text = il.RazonSocial + " - " + il.Nit }); } model.Clientes = ClienteList; var ProductList = new List <SelectListItem>(); var Productmodel = ServiceDeal.GetProductos(); ProductList.Add(new SelectListItem { Value = "-1", Text = "--Seleccione un Producto--", Selected = true }); foreach (var il in Productmodel) { ProductList.Add(new SelectListItem { Value = il.Id.ToString(), Text = il.Descripcion }); } model.Productos = ProductList; return(View(model)); } else { var lis = ServiceDeal.GetFactura(id); var produc = ServiceDeal.GetFacturaporproducto(id); var model = new FaturaViewModel(); model.Id = lis.Id; model.Total = lis.Subtotal; model.Subtotal = lis.Subtotal; return(View(model)); } }
public static FaturaViewModel GerarFatura(int tituloRecorrenteId, int modeloBoletoId, DateTime dataVencimento, decimal valor) { FaturaViewModel fatura = new FaturaViewModel(); var db = new Contexto(); var titulo = db.TitulosRecorrentes.Find(tituloRecorrenteId); var conta = titulo.Conta; var pessoa = titulo.Pessoa; var empresa = titulo.Empresa; int numeroBanco = conta.Banco.Codigo; titulo.Valor = valor; var modeloBoleto = db.ModelosBoleto.Find(modeloBoletoId); var emails = pessoa.EmailFinanceiro.Replace(",", ";").Replace(" ", "").Split(';'); fatura.cc_emails = string.Join(";", emails.Skip(1)); fatura.email = emails.First(); fatura.due_date = dataVencimento.ToString("yyyy-MM-dd"); fatura.items.Add(new ItemFatura() { description = modeloBoleto.Instrucao, price_cents = (int)(titulo.Valor * 100), quantity = 1 }); fatura.return_url = ""; fatura.fines = true; fatura.late_payment_fine = (int)modeloBoleto.Multa; fatura.per_day_interest = true; if (modeloBoleto.PercentualDesconto > 0) { fatura.early_payment_discount = true; fatura.early_payment_discounts.Add(new ItemDesconto() { days = modeloBoleto.DiasDesconto, percent = modeloBoleto.PercentualDesconto.ToString().Replace(",", ".") }); } fatura.payable_with = "bank_slip"; fatura.payer.cpf_cnpj = pessoa.Cpf; fatura.payer.name = pessoa.Nome; if (pessoa.Telefones.Count > 0) { fatura.payer.phone_prefix = pessoa.Telefones.First().Telefone.Ddd; fatura.payer.phone = pessoa.Telefones.First().Telefone.Numero; } fatura.payer.address = new Address() { zip_code = pessoa.Endereco.Cep, street = pessoa.Endereco.Logradouro, number = pessoa.Endereco.Numero == "" ? "0" : pessoa.Endereco.Numero, district = pessoa.Endereco.Bairro, city = pessoa.Endereco.Cidade, state = pessoa.Endereco.Uf, country = "Brasil", complement = pessoa.Endereco.Complemento }; return(fatura); }
public HttpResponseMessage GerarBoletoFornecedor(HttpRequestMessage request, FaturaViewModel faturaVm) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; if (!ModelState.IsValid) { response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); } else { var usuario = _usuarioRep.GetSingle(int.Parse(HttpContext.Current.User.Identity.GetUserId())); var fatura = _faturaRep.GetSingle(faturaVm.Id); var param = new List <string> { "MULTA_MORA", "MULTA_ATRASO" }; //Pega parâmetros de multa var parametrosAtrasoPagtoFatura = _parametroSistemaRep.GetAll().Where(x => param.Contains(x.Codigo)).ToList(); var multaDiaria = (decimal)parametrosAtrasoPagtoFatura.FirstOrDefault(c => c.Codigo == "MULTA_MORA")?.Valor.TryParseInt() / 30; var multaAtraso = parametrosAtrasoPagtoFatura.FirstOrDefault(c => c.Codigo == "MULTA_ATRASO")?.Valor.TryParseInt(); var pessoa = fatura.Fornecedor.Pessoa; var telefone = pessoa.Telefones.FirstOrDefault(x => x.Ativo); var endereco = pessoa.Enderecos.FirstOrDefault(); //endereco.Bairro = new Bairro(); //endereco.Estado = new Estado(); var diasAtraso = DateTime.Now.Subtract(fatura.DtVencimento).Days; var valorAtrasoDias = fatura.Comissoes.Sum(x => x.Valor) * (diasAtraso * multaDiaria); var valorMultaAtraso = fatura.Comissoes.Sum(x => x.Valor) * multaAtraso / 100; var valorMulta = valorMultaAtraso + valorAtrasoDias; var gerenciaNet = new GerencianetAPI(); #region Criando Transação List <Item> itens = new List <Item>(); fatura.Comissoes.ForEach(c => itens.Add(new Item { Name = $"Pedido: {c.PedidoId}", Value = (int)Convert.ToDecimal(string.Format("{0:N}", c.Valor).Replace(",", "").Replace(".", "")) })); itens.Add(new Item { Name = "Multa e Juros", Value = (int)Convert.ToDecimal(string.Format("{0:N}", valorMulta).Replace(",", "").Replace(".", "")) }); var metadata = new Metadata { CustomId = fatura.Id.ToString(), NotificationURL = $"{ConfigurationManager.AppSettings[$"{Environment.GetEnvironmentVariable("Amb_EconomizaJa")}_UrlRetorno"]}api/pagamentos/retornoFatura" }; var transacao = new TransactionRequest { Items = itens.ToArray(), Metadata = metadata }; var retornoTransacao = gerenciaNet.CreateTransaction(transacao); #endregion #region Associando Forma de Pagamento Boleto para Transação Payment payment = new Payment(); payment.BankingBillet = new BankingBillet { ExpireAt = DateTime.Now.AddDays(1).ToShortDateString(), //Vencimento para o dia seguinte Customer = new Customer { Name = pessoa.Usuarios.FirstOrDefault()?.UsuarioNome, Birth = (pessoa.PessoaJuridica.DtFundacao ?? DateTime.Now).ToString("yyyy-MM-dd"), Email = pessoa.PessoaJuridica.Email, PhoneNumber = $"{telefone?.DddTelComl}{telefone?.TelefoneComl}", Address = new Address { ZipCode = endereco.Cep, City = endereco.Cidade.DescCidade, Number = endereco.Numero.ToString(), Neighborhood = endereco.Bairro.DescBairro, Complement = endereco.Complemento, State = endereco.Estado.Uf, Street = endereco.DescEndereco }, JuridicalPerson = new JuridicalPerson { CNPJ = pessoa.PessoaJuridica.Cnpj, CorporateName = pessoa.PessoaJuridica.RazaoSocial } }, //Adicionando juros por dia caso venha pagar depois do vencimento Configurations = new ConfigGerenciaNet { Interest = 33 }, Message = "Após vencimento será cobrado multa de 2% sobre o valor boleto e 0,033% ao dia." }; var retornoBoleto = gerenciaNet.CreateBankingBillet(retornoTransacao.ChargerId, payment); #endregion #region Cancelando Boleto Vencido var retornoCancelBoleto = new object(); if (fatura.ChargerId > 0) { retornoCancelBoleto = gerenciaNet.CancelTransaction(fatura.ChargerId); } #endregion #region Atualizando Dados Fatura Banco if (retornoCancelBoleto.TryParseInt() == 200) { fatura.DtAlteracao = DateTime.Now; fatura.ChargerId = retornoBoleto.ChargeId; fatura.UrlBoleto = retornoBoleto.Link; fatura.Status = StatusFatura.AguardandoPagamento; _faturaRep.Edit(fatura); _unitOfWork.Commit(); #region Envia Email Emails emails = new Emails { UsuarioCriacaoId = 1, DtCriacao = DateTime.Now, AssuntoEmail = "Boleto Gerado - 2º via do boleto gerada.", EmailDestinatario = pessoa.PessoaJuridica.Email, CorpoEmail = _templateRep.GetSingle(28).Template.Trim() .Replace("#NomeFantasia#", pessoa.PessoaJuridica.NomeFantasia) .Replace("#UrlBoleto#", fatura.UrlBoleto), Status = Status.NaoEnviado, Origem = Origem.BoletoGerado, Ativo = true }; _emailsRep.Add(emails); _unitOfWork.Commit(); #endregion } #endregion response = request.CreateResponse(HttpStatusCode.OK, new { }); return response; } return response; })); }