// SALVAR NOTA public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var palavra = ""; lista_item = new List <string>(); /* Manipulando lista de itens pedido */ for (int i = 0; i < item.Length; i++) { if (item[i] != ',') { while (i != item.Length && item[i] != ',') { palavra += item[i]; i++; } } lista_item.Add(palavra); palavra = null; } //SALVAR NOTA var DATAEMISSAO = DateTime.Now; int NUMERONOTA = 0; NotaFiscal.DATA_EMISSAO = DATAEMISSAO; NotaFiscal.SUBTOTAL = Convert.ToDecimal(subtotal.Replace(".", ",")); NotaFiscal.TOTAL = Convert.ToDecimal(total.Replace(".", ",")); NotaFiscal.DESCONTO = Convert.ToDecimal(desconto.Replace(".", ",")); _context.NotaFiscais.Add(NotaFiscal); await _context.SaveChangesAsync(); //SALVAR ITEM NOTA NUMERONOTA = _context.NotaFiscais.FirstOrDefault(p => p.DATA_EMISSAO.Equals(DATAEMISSAO)).NUM_NOTA; for (var i = 0; i < lista_item.Count; i += 5) { ItemNota ITEMNOTA = new ItemNota(); ITEMNOTA.COD_NOTA = NUMERONOTA; ITEMNOTA.COD_PRODUTO = Convert.ToInt32(lista_item[i]); ITEMNOTA.PRECO_UNITARIO = Convert.ToDecimal(lista_item[i + 2].Replace(".", ",")); ITEMNOTA.QUANTIDADE = Convert.ToInt32(lista_item[i + 3]); ITEMNOTA.TOTAL = Convert.ToDecimal(lista_item[i + 4].Replace(".", ",")); _context.ItemNotas.Add(ITEMNOTA); _context.SaveChanges(); } return(RedirectToPage("./Index")); }
//MÉTODO IMPORTAR PEDIDO CSV public IActionResult OnGetImportar_Pedido(string file) { var result = ""; var caminho = "C:\\VENDAS\\Pedido_CSV\\"; string filePath = ""; string csv = ""; string palavra = ""; lista_pedido = new List <string>(); lista_item = new List <string>(); /* Variáveis auxiliares */ int CODIGOPEDIDO = 0; var DATAEMISSAO = DateTime.Now; int CODIGOCLIENTE = 0; int CODIGOUSUARIO = Convert.ToInt32(HttpContext.Session.GetString("_ID")); int CODIGOPRODUTO = 0; decimal PRECOPRODUTO = 0; int QUANTIDADEESTOQUE = 0; float desconto = 0; float subtotal = 0; int qtdProdutos = 0; int estoque; int qtd_vendida = 0; decimal total_vendido = 0; double num; try { filePath = caminho + file; csv = System.IO.File.ReadAllText(filePath); /* Adicionando campos csv em lista_pedido. * Obs.: 10 - new line; 13 - carriage return*/ for (int i = 0; i < csv.Length; i++) { while (i != csv.Length && csv[i] != ';' && csv[i] != 10 && csv[i] != 13) { palavra += csv[i]; i++; } if (!String.IsNullOrEmpty(palavra)) { lista_pedido.Add(palavra); } palavra = null; } /* Pesquisando código do cliente */ if (lista_pedido[5] == "Fisico") { CODIGOCLIENTE = _context.Fisicos.FirstOrDefault(c => c.CPF.Equals(lista_pedido[1])).COD_CLIENTE; } else { CODIGOCLIENTE = _context.Juridicos.FirstOrDefault(c => c.CNPJ.Equals(lista_pedido[1])).COD_CLIENTE; } /* Código cliente encontrado */ if (CODIGOCLIENTE > 0) { /* Adicionando campos lista_pedido em lista_item*/ for (int i = 15; i < (lista_pedido.Count - 2); i++) { if (i % 2 == 0 && double.TryParse(lista_pedido[i], out num)) { CODIGOPRODUTO = _context.Produtos.FirstOrDefault(c => c.COD_PRODUTO == Convert.ToInt32(lista_pedido[i])).COD_PRODUTO; PRECOPRODUTO = _context.Produtos.FirstOrDefault(c => c.COD_PRODUTO == Convert.ToInt32(lista_pedido[i])).VALOR_UNITARIO; QUANTIDADEESTOQUE = _context.Produtos.FirstOrDefault(c => c.COD_PRODUTO == Convert.ToInt32(lista_pedido[i])).QTD_ESTOQUE; /* Código produto encontrado */ if (CODIGOPRODUTO > 0) { /*codigo produto*/ lista_item.Add(lista_pedido[i]); /*quantidade solicitada*/ if (QUANTIDADEESTOQUE > Convert.ToInt32(lista_pedido[i + 2])) { lista_item.Add(lista_pedido[i + 2]); } else { result = "NULL"; break; } /*preco unitario*/ lista_item.Add(Convert.ToString(PRECOPRODUTO)); /*quantidade estoque*/ lista_item.Add(Convert.ToString(QUANTIDADEESTOQUE)); /*total produto*/ lista_item.Add(Convert.ToString(PRECOPRODUTO * Convert.ToInt32(lista_pedido[i + 2]))); qtdProdutos += 1; i += 2; } else { result = "FALSE"; break; } } } /* Calcular subtotal * * Regra de Negócio: * Atacado e mais que 50 un. totais => desc. 3% no valor unit. de cada produto * Atacado e menos que 50 un. totais => preco unit. de varejo * Varejo => preco unit. cadastrado em sistema */ if (result != "NULL" && result != "FALSE") { if (lista_pedido[7] == "Atacado" && qtdProdutos > 50) { for (int i = 0; i < (lista_item.Count - 4); i++) { lista_item[i + 4] = Convert.ToString(float.Parse(lista_item[i + 4]) * float.Parse("0,97")); subtotal += float.Parse(lista_item[i + 4]); i += 4; } } else { for (int i = 0; i < (lista_item.Count - 4); i++) { subtotal += float.Parse(lista_item[i + 4]); i += 4; } } //SALVAR PEDIDO Pedido PEDIDO = new Pedido(); PEDIDO.COD_CLIENTE = CODIGOCLIENTE; PEDIDO.COD_USUARIO = CODIGOUSUARIO; PEDIDO.DATA_EMISSAO = DATAEMISSAO; PEDIDO.TIPO_CLIENTE = lista_pedido[5]; PEDIDO.FORMA_ENTREGA = lista_pedido[9]; PEDIDO.FORMA_PAGAMENTO = lista_pedido[11]; PEDIDO.FRETE = lista_pedido[13]; PEDIDO.NATUREZA_OPERACAO = "Venda"; PEDIDO.QTD_PARCELAS = 1; PEDIDO.TABELA_PRECO = lista_pedido[7]; PEDIDO.OBSERVACAO = lista_pedido[15]; desconto = 0; PEDIDO.DESCONTO = Convert.ToDecimal(desconto); PEDIDO.SUB_TOTAL = Convert.ToDecimal(subtotal); PEDIDO.TOTAL = Convert.ToDecimal(Math.Round(subtotal, 2) - Math.Round(desconto, 2)); PEDIDO.STATUS = "Importado"; PEDIDO.flag_item = "S"; _context.Pedidos.Add(PEDIDO); _context.SaveChanges(); //SALVAR ITEM PEDIDOS E ESTOQUE CODIGOPEDIDO = _context.Pedidos.FirstOrDefault(p => p.DATA_EMISSAO.Equals(DATAEMISSAO)).COD_PEDIDO; for (int cont = 0; cont < lista_item.Count; cont++) { /* Item Pedido */ ItemPedido ITEMPEDIDO = new ItemPedido(); ITEMPEDIDO.COD_PEDIDO = CODIGOPEDIDO; ITEMPEDIDO.COD_PRODUTO = Convert.ToInt32(lista_item[cont]); ITEMPEDIDO.QUANTIDADE = Convert.ToInt32(lista_item[cont + 1]); ITEMPEDIDO.PRECO_UNITARIO = Convert.ToDecimal(lista_item[cont + 2]); ITEMPEDIDO.TOTAL = Convert.ToDecimal(lista_item[cont + 4]); _context.ItemPedidos.Add(ITEMPEDIDO); _context.SaveChanges(); /* Estoque */ var produtos = _context.Produtos.Find(Convert.ToInt32(lista_item[cont])); estoque = Convert.ToInt32(lista_item[cont + 3]) - Convert.ToInt32(lista_item[cont + 1]); produtos.QTD_ESTOQUE = estoque; /* Relatório Produto */ qtd_vendida = _context.Produtos.FirstOrDefault(p => p.COD_PRODUTO == Convert.ToInt32(lista_item[cont])).QTD_VENDIDA; total_vendido = _context.Produtos.FirstOrDefault(p => p.COD_PRODUTO == Convert.ToInt32(lista_item[cont])).TOTAL_VENDIDO; produtos.QTD_VENDIDA = qtd_vendida + Convert.ToInt32(lista_item[cont + 1]); produtos.TOTAL_VENDIDO = total_vendido + Convert.ToDecimal(lista_item[cont + 4].Replace(".", ",")); _context.Produtos.Update(produtos); _context.SaveChanges(); cont += 4; } result = Convert.ToString(CODIGOPEDIDO); } } else { result = "FALSE"; } } catch { result = "FALSE"; } return(new JsonResult(result)); }