public JsonResult JsGetParcelas(int idCondicaoPagamento, decimal vlTotal, DateTime?dtIiniParcela) { var daoConPag = new DAOCondicaoPagamento(); var cond = daoConPag.GetCondicaoPagamento(idCondicaoPagamento); var ListCondicao = cond.ListCondicao.OrderBy(k => k.nrParcela); var ListParcelas = new List <Models.Shared.ParcelasVM>(); var dtInicio = DateTime.Now; if (dtIiniParcela != null) { dtInicio = dtIiniParcela.GetValueOrDefault(); } foreach (var parcela in ListCondicao) { var itemParcela = new Models.Shared.ParcelasVM { nrParcela = parcela.nrParcela, dtVencimento = dtInicio.AddDays((double)parcela.qtDias), idFormaPagamento = parcela.codFormaPagamento, nmFormaPagamento = parcela.nomeFormaPagamento, vlParcela = decimal.Round(((parcela.txPercentual / 100) * vlTotal), 2) }; ListParcelas.Add(itemParcela); } var totalParcelas = ListParcelas.Sum(k => k.vlParcela); if (totalParcelas != vlTotal) { if (totalParcelas < vlTotal) { var dif = vlTotal - totalParcelas; var list = ListParcelas.OrderBy(u => u.nrParcela); list.Last().vlParcela = list.Last().vlParcela + dif; ListParcelas = list.ToList(); } if (totalParcelas > vlTotal) { var dif = totalParcelas - vlTotal; var list = ListParcelas.OrderBy(u => u.nrParcela); list.Last().vlParcela = list.Last().vlParcela - dif; ListParcelas = list.ToList(); } } var result = new { type = "success", message = "Parcelas geradas com sucesso!", parcelas = ListParcelas }; return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult VendaOS(int id, Sistema.Models.VendasOS model) { model.codigo = id; model.codOrdemServico = id; if (model.Funcionario.id == null) { ModelState.AddModelError("Funcionario.id", "Informe o vendedor"); } if (model.Cliente.id == null) { ModelState.AddModelError("Cliente.id", "Informe o cliente"); } if (model.ProdutosVenda != null && model.ProdutosVenda.Any() && model.CondicaoPagamentoDois.id != null && (model.ParcelasVendaProdutos == null || !model.ParcelasVendaProdutos.Any())) { ModelState.AddModelError("CondicaoPagamentoDois.id", "Informe as parcelas dos produtos"); } if (ModelState.IsValid) { try { var DAOVendas = new DAOVendas(); var produtosVenda = new List <Models.Vendas.ProdutosVM>(); var parcelasProdutos = new List <Models.Shared.ParcelasVM>(); //VENDA SERVIÇO DAOVendas.InsertServico(model); //VENDA PRODUTO if (model.ProdutosVenda != null && model.ProdutosVenda.Any()) { var vendaProduto = new Models.Vendas { Funcionario = new Select.Funcionarios.Select { id = model.Funcionario.id, nmFuncionario = model.Funcionario.text, }, Cliente = new Select.Clientes.Select { id = model.Cliente.id, text = model.Cliente.text, }, CondicaoPagamento = new Select.CondicaoPagamento.Select { id = model.CondicaoPagamentoDois.id, text = model.CondicaoPagamentoDois.text, desconto = model.CondicaoPagamentoDois.desconto, multa = model.CondicaoPagamentoDois.multa, txJuros = model.CondicaoPagamentoDois.txJuros }, modelo = "65", codOrdemServico = model.codOrdemServico, }; foreach (var item in model.ProdutosVenda) { var prod = new Models.Vendas.ProdutosVM { codProduto = item.codProduto, nomeProduto = item.nomeProduto, qtProduto = item.qtProduto, txDesconto = item.txDesconto, unidade = item.unidade, vlVenda = item.vlVenda, }; produtosVenda.Add(prod); } vendaProduto.ProdutosVenda = produtosVenda; foreach (var item in model.ParcelasVendaProdutos) { var par = new Models.Shared.ParcelasVM { idFormaPagamento = item.idFormaPagamento, nmFormaPagamento = item.nmFormaPagamento, nrParcela = item.nrParcela, vlParcela = item.vlParcela, dtPagamento = item.dtPagamento, dtVencimento = item.dtVencimento, situacao = item.situacao, }; parcelasProdutos.Add(par); } vendaProduto.ParcelasVenda = parcelasProdutos; DAOVendas.InsertProduto(vendaProduto); } this.AddFlashMessage("Ordem de Serviço finalizada com sucesso"); return(RedirectToAction("Index", "OrdemServico")); } catch (Exception ex) { this.AddFlashMessage(ex.Message, FlashMessage.ERROR); return(View(model)); } } else { return(View(model)); } }