private void button1_Click_1(object sender, EventArgs e) { double num = 0; if (comboBoxPorduto.SelectedItem != null) { Produto produt = (Produto)comboBoxPorduto.SelectedItem; ItemEntrada itemEnt = new ItemEntrada(); itemEnt.Produto = (Produto)comboBoxPorduto.SelectedItem; if (numericVenPorduto.Value > 0) { num = (double)numericVenPorduto.Value; this.ADDgrid(produt, itemEnt, num); labelVLFINAL.Text = (numericValorPorduto.Value * numericVenPorduto.Value).ToString(); } else { MessageBox.Show("A quantidade de itens deve ser maior que zero!"); } } else { MessageBox.Show("Selecione um produto!"); } }
public bool preencherCompra(List <double> valor, List <int> ids, Fornecedor forne, Funcionario fun) { try { ProdutoDao pro = new ProdutoDao(); Entrada entrada = new Entrada(); entrada.Fornecedor = forne; Funcionario funcio = new Funcionario(); funcio.Email = StaticUser.Email; funcio.Senha = StaticUser.Senha; entrada.Funcionario = new FuncionarioDao().GetUsuarioPorLoginSenha(funcio); entrada.Data = DateTime.Now; for (int i = 0; i < valor.Count; i++) { ItemEntrada item = new ItemEntrada(); item.Produto = pro.GetById(ids[i]); item.Quantidade = (int)valor[i]; entrada.ItemEntrada.Add(item); item.Produto.Quantidade += item.Quantidade; pro.Update(item.Produto); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Erro ao gerar a compra: " + ex.Message); return(false); } return(true); }
private void button2_Click(object sender, EventArgs e) { ItemEntrada item = new ItemEntrada(); item.IDProduto = Convert.ToInt32(txtIDProduto.Text); item.Preco = Convert.ToDouble(txtPreco.Text.Replace(".", ",")); item.Qtd = Convert.ToInt32(txtQuantidade.Text); this.items.Add(item); dataGridView1.DataSource = null; dataGridView1.DataSource = items; }
public bool ADDgrid(Produto prod, ItemEntrada itemEnt, Double numro) { try { dataGridView1.Rows.Add(prod.Id, prod.Nome, prod.Laboratorio, itemEnt.ValorCompra, numro); } catch (Exception ex) { MessageBox.Show("Erro ao adicionar:" + ex.Message, "Erro!", MessageBoxButtons.OK); } return(false); }
public override ICommandResult Handle(GravarItemEntradaCommand command) { //Fail Fast Validations if (!command.Validador()) { return(new CommandResult(false, "Mensagem inválida", command.Mensagem)); } //Gerar Item Entrada var itemEntrada = new ItemEntrada(command.CodigoEmpresa, command.CodigoFilial, command.CodigoEntrada, command.CodigoProduto, command.Sequencia); itemEntrada.TimeStamp = command.TimeStamp; itemEntrada.Lote = command.Lote; itemEntrada.Quantidade = command.Quantidade; itemEntrada.Frete = command.Frete; //Validar Item Entrada ItemEntradaValidacao validador = new ItemEntradaValidacao(); var resultado = validador.Validate(itemEntrada); if (!resultado.IsValid) { var erros = retornoMensagemErro(resultado.Errors); return(new CommandResult(false, erros, command.Mensagem)); } //Salvar informações try { _itemEntradaRepositorio.InseririOuAtualizar(itemEntrada); return(new CommandResult(true, "Mensagem persistida com sucesso")); } catch { return(new CommandResult(false, "Ocorreu um erro interno no sistema", command.Mensagem)); } }
public string Inserir(Entrada_Produtos entradaProdutos) { if (entradaProdutos.DATAENTRADA < DateTime.Now.Date) { erros.Add("O produto deve ser cadastrado em uma data válida."); } if (entradaProdutos.IDFORNECEDOR < 1) { erros.Add("Fornecedor não existe."); } else { Fornecedor f = fornecedorbll.LerPorID(entradaProdutos.IDFORNECEDOR); if (f == null) { erros.Add("Fornecedor não existe."); } } if (entradaProdutos.IDFUNCIONARIO < 1) { erros.Add("Funcionário não existe."); } else { Funcionario f = funcionariobll.LerPorID(entradaProdutos.IDFUNCIONARIO); if (f == null) { erros.Add("Funcionário não existe."); } } if (erros.Count != 0) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < erros.Count; i++) { builder.AppendLine(erros[i]); } erros.Clear(); return(builder.ToString()); } using (TransactionScope scope = new TransactionScope()) { try { entradadal.Inserir(entradaProdutos); entradaProdutos.ID = entradadal.LerIdGerado(); entradadal.InserirItems(entradaProdutos); for (int i = 0; i < entradaProdutos.Itens.Count; i++) { ItemEntrada item = entradaProdutos.Itens[i]; Produto p = produtobll.LerPorID(item.IDProduto); p.Quantidade += item.Qtd; double novoPreco = (p.Quantidade * p.Preco) + (item.Preco * item.Qtd); p.Preco = novoPreco / (p.Quantidade + item.Qtd); produtobll.Alterar(p); } scope.Complete(); return("Entrada realizada com sucesso."); } catch { return("Erro na entrada de produtos."); } } }
public static void DefineType(Object obj, string command) { try { if (obj != null) { string nome = obj.GetType().FullName.ToLower(); if (nome.Trim().ToLower().Contains("cliente")) { Cliente cliente = new Cliente(); cliente = (Cliente)obj; ClienteBLL clienteBLL = new ClienteBLL(); switch (command.ToUpper()[0]) { case 'A': clienteBLL.Update(cliente); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': clienteBLL.Delete(cliente); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': clienteBLL.Insert(cliente); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("fornecedor")) { Fornecedor fornecedor = new Fornecedor(); fornecedor = (Fornecedor)obj; FornecedorBLL fornecedorBLL = new FornecedorBLL(); switch (command.ToUpper()[0]) { case 'A': fornecedorBLL.Update(fornecedor); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': fornecedorBLL.Delete(fornecedor); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': fornecedorBLL.Insert(fornecedor); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("funcionario")) { Funcionario funcionario = new Funcionario(); funcionario = (Funcionario)obj; FuncionarioBLL funcionarioBLL = new FuncionarioBLL(); switch (command.ToUpper()[0]) { case 'A': funcionarioBLL.Update(funcionario); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': funcionarioBLL.Delete(funcionario); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': funcionarioBLL.Insert(funcionario); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("produto")) { Produto produto = new Produto(); produto = (Produto)obj; ProdutoBLL produtoBLL = new ProdutoBLL(); switch (command.ToUpper()[0]) { case 'A': produtoBLL.Update(produto); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': produtoBLL.Delete(produto); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': produtoBLL.Insert(produto); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("itemVenda")) { ItemVenda itemVenda = new ItemVenda(); itemVenda = (ItemVenda)obj; ItemVendaBLL itemVendaBLL = new ItemVendaBLL(); switch (command.ToUpper()[0]) { case 'A': itemVendaBLL.Update(itemVenda); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': itemVendaBLL.Delete(itemVenda); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': itemVendaBLL.Insert(itemVenda); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("itemEntrada")) { ItemEntrada itemEntrada = new ItemEntrada(); itemEntrada = (ItemEntrada)obj; ItemEntradaBLL itemEntradaBLL = new ItemEntradaBLL(); switch (command.ToUpper()[0]) { case 'A': itemEntradaBLL.Update(itemEntrada); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': itemEntradaBLL.Delete(itemEntrada); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': itemEntradaBLL.Insert(itemEntrada); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("entrada")) { Entrada entrada = new Entrada(); entrada = (Entrada)obj; EntradaBLL entradaBLL = new EntradaBLL(); switch (command.ToUpper()[0]) { case 'A': entradaBLL.Update(entrada); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': entradaBLL.Delete(entrada); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': entradaBLL.Insert(entrada); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } else if (nome.Trim().ToLower().Contains("venda")) { Venda venda = new Venda(); venda = (Venda)obj; VendaBLL vendaBLL = new VendaBLL(); switch (command.ToUpper()[0]) { case 'A': vendaBLL.Update(venda); System.Windows.Forms.MessageBox.Show("O registro foi atualizado com sucesso!"); break; case 'D': vendaBLL.Delete(venda); System.Windows.Forms.MessageBox.Show("O registro foi deletado com sucesso!"); break; case 'I': vendaBLL.Insert(venda); System.Windows.Forms.MessageBox.Show("O registro foi inserido com sucesso!"); break; default: break; } } } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message);; } }
protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam, HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos) { uint idLoja = 1; // Verifica qual relatório será chamado switch (Request["rel"]) { case "NfTerceiros": report.ReportPath = "Relatorios/NFe/rptNFTerceiros.rdlc"; NotaFiscal nfTerc = NotaFiscalDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(Request["idNf"])); ProdutosNf[] lstProd = ProdutosNfDAO.Instance.GetByNf(nfTerc.IdNf); foreach (ProdutosNf pnf in lstProd) { pnf.Qtde = ProdutosNfDAO.Instance.ObtemQtdDanfe(pnf); } idLoja = nfTerc.IdLoja.Value; report.DataSources.Add(new ReportDataSource("NotaFiscal", new NotaFiscal[] { nfTerc })); report.DataSources.Add(new ReportDataSource("ProdutosNf", lstProd)); lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome))); lstParam.Add(new ReportParameter("CorRodape", "DimGray")); break; case "LivroRegistro": string loja = Request["loja"]; string dataInicial = Request["dataInicial"]; string dataFinal = Request["dataFinal"]; string ultimoLancamento = Request["ultimoLancamento"]; string termo = Request["termo"]; string numeroOrdem = Request["numeroOrdem"]; string localData = Request["localData"]; string contador = Request["contador"]; string funcionario = Request["funcionario"]; string tipo = Request["tipo"]; string exibeST = Request["exibeST"]; string exibeIPI = Request["exibeIPI"]; string mes = Request["mes"]; string ano = Request["ano"]; Contabilista cont = ContabilistaDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(contador)); Funcionario func = FuncionarioDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(funcionario)); int totalPaginas = int.MinValue; uint idNota = 0; #region Entrada if (tipo == "1") { var livro = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja)); livro.Periodo = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString(); livro.UltimoLancamento = ultimoLancamento; livro.LocalData = localData; livro.NumeroOrdem = numeroOrdem; livro.Termo = termo; livro.Responsavel = func.Nome; livro.CPFResponsavel = func.Cpf; livro.CargoResponsavel = func.Funcao; livro.Contador = cont.Nome; livro.CPFContador = cont.CpfCnpj; livro.CRCContador = cont.Crc; List <ItemEntrada> Itens = ItemEntradaDAO.Instance.ObterItensEntrada(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano), bool.Parse(exibeST), bool.Parse(exibeIPI), login); #region CST 20 Redução de Base de Cálculo List <ItemEntrada> ItensCST20 = Itens.FindAll(delegate(ItemEntrada i) { return(i.CST == "20" && i.TipoImposto == "ICMS"); }); foreach (ItemEntrada i in ItensCST20) { float reducao = ProdutosNfDAO.Instance.ObtemPercentualReducaoBaseCalculo(i.IdProdNF); ItemEntrada novo = new ItemEntrada(); novo.Aliquota = 0; novo.BaseCalculo = (i.ValorContabil * Convert.ToDecimal(reducao)) / 100; novo.CFOP = i.CFOP; novo.CNPJEmitente = i.CNPJEmitente; novo.CodigoContabil = i.CodigoContabil; novo.CodigoEmitente = i.CodigoEmitente; novo.CodValorFiscal = 2; novo.CorLinha = i.CorLinha; novo.CST = i.CST; novo.DataDocumento = i.DataDocumento; novo.DataEntrada = i.DataEntrada; novo.Especie = i.Especie; novo.ExibirDadosFornecedor = i.ExibirDadosFornecedor; novo.IdNF = i.IdNF; novo.IdProdNF = i.IdProdNF; novo.ImpostoCreditado = 0; novo.InscEstEmitente = i.InscEstEmitente; novo.NomeEmitente = i.NomeEmitente; novo.NumeroNota = i.NumeroNota; novo.NumeroPagina = i.NumeroPagina; novo.Observacao = i.Observacao; novo.SerieSubSerie = i.SerieSubSerie; novo.TipoImposto = i.TipoImposto; novo.UFOrigem = i.UFOrigem; novo.ValorContabil = 0; Itens.Add(novo); } Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2) { int ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString()); if (ret == 0) { ret = p1.NumeroNota.CompareTo(p2.NumeroNota); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal); } if (ret == 0) { ret = String.Compare(p1.CFOP, p2.CFOP); } return(ret); }); #endregion #region CST 70 Redução de Base de Cálculo List <ItemEntrada> ItensCST70 = Itens.FindAll(delegate(ItemEntrada i) { return(i.CST == "70" && i.TipoImposto == "ICMS" && i.CodValorFiscal == 1); }); foreach (ItemEntrada i in ItensCST70) { ProdutosNf prod = ProdutosNfDAO.Instance.GetElement(i.IdProdNF); ItemEntrada novo = new ItemEntrada(); novo.Aliquota = 0; novo.BaseCalculo = prod != null ? prod.BcIcms : i.BaseCalculo; // (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100; novo.BaseCalculoST = prod != null ? prod.BcIcmsSt : i.BaseCalculoST; //(i.ValorContabil + (i.ValorContabil * (Convert.ToDecimal(prod.Mva) / 100))) * (Convert.ToDecimal(prod.PercRedBcIcmsSt) / 100); novo.SubTributaria = prod != null ? prod.ValorIcmsSt : i.SubTributaria; //Math.Round((prod.BcIcmsSt * (decimal)(prod.AliqIcmsSt / 100)) - (prod.ValorIcms > 0 ? prod.ValorIcms : ((prod.Total - prod.ValorDesconto) * (decimal)(prod.AliqIcms / 100))), 2); novo.CFOP = i.CFOP; novo.CNPJEmitente = i.CNPJEmitente; novo.CodigoContabil = i.CodigoContabil; novo.CodigoEmitente = i.CodigoEmitente; novo.CodValorFiscal = 2; novo.CorLinha = i.CorLinha; novo.CST = i.CST; novo.DataDocumento = i.DataDocumento; novo.DataEntrada = i.DataEntrada; novo.Especie = i.Especie; novo.ExibirDadosFornecedor = i.ExibirDadosFornecedor; novo.IdNF = i.IdNF; novo.IdProdNF = i.IdProdNF; novo.ImpostoCreditado = 0; novo.InscEstEmitente = i.InscEstEmitente; novo.NomeEmitente = i.NomeEmitente; novo.NumeroNota = i.NumeroNota; novo.NumeroPagina = i.NumeroPagina; novo.Observacao = i.Observacao; novo.SerieSubSerie = i.SerieSubSerie; novo.TipoImposto = i.TipoImposto; novo.UFOrigem = i.UFOrigem; novo.ValorContabil = 0; Itens.Add(novo); } Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2) { int ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString()); if (ret == 0) { ret = p1.NumeroNota.CompareTo(p2.NumeroNota); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal); } if (ret == 0) { ret = String.Compare(p1.CFOP, p2.CFOP); } return(ret); }); #endregion decimal v = 0; foreach (ItemEntrada item in Itens) { v += item.ValorContabil; List <ItemEntrada> itens = Itens.FindAll(delegate(ItemEntrada i) { return(i.NumeroNota == item.NumeroNota && i.CFOP == item.CFOP); }); if (itens.Count > 0) { for (int i = 1; i < itens.Count; i++) { itens[i].CorLinha = "White"; if (itens.FindAll(delegate(ItemEntrada itemEntrada) { return(item.TipoImposto == "ICMS"); }).Count > 0) { if (itens[i].TipoImposto == "IPI") { itens[i].ValorContabil = 0; } } } } } uint idNf = 0; bool exibirFornecedor = false; decimal valorSt = 0; // Ordena os itens de acordo com a ordenação que será feita no relatório, para não dar problema na iteração abaixo, // que esconde campos de acordo com as notas e ordenação Itens.Sort(delegate(ItemEntrada p1, ItemEntrada p2) { int ret = p1.NumeroPagina.CompareTo(p2.NumeroPagina); if (ret == 0) { ret = p1.DataEntrada.ToShortDateString().CompareTo(p2.DataEntrada.ToShortDateString()); } if (ret == 0) { ret = p1.NumeroNota.CompareTo(p2.NumeroNota); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = p1.CodValorFiscal.CompareTo(p2.CodValorFiscal); } if (ret == 0) { ret = String.Compare(p1.CFOP, p2.CFOP); } return(ret); }); // Nesta iteração, será definido quando o nome do emitente e a descrição "SUBSTITUIÇÃO TRIBUTÁRIA" deverão ser exibidos for (int i = 0; i < Itens.Count; i++) { if (idNf != Itens[i].IdNF) { if (i > 0) { Itens[i - 1].ExibirDadosFornecedor = exibirFornecedor; Itens[i - 1].ExibirDadosST = valorSt > 0; Itens[i - 1].SubTributaria = valorSt; } idNf = Itens[i].IdNF; exibirFornecedor = false; valorSt = 0; } exibirFornecedor = true; if (Itens[i].SubTributaria > 0) { valorSt = Itens[i].SubTributaria; } if (Itens[i].NumeroPagina > totalPaginas) { totalPaginas = (int)Itens[i].NumeroPagina; } } if (Itens.Count > 0) { Itens[Itens.Count - 1].ExibirDadosFornecedor = exibirFornecedor; Itens[Itens.Count - 1].ExibirDadosST = valorSt > 0; Itens[Itens.Count - 1].SubTributaria = valorSt; } livro.TotalPaginas = totalPaginas; report.ReportPath = "Relatorios/NFe/LivroRegistro/Entrada/rptLivroRegistroEntrada.rdlc"; report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livro })); report.DataSources.Add(new ReportDataSource("ItemEntrada", Itens.ToArray())); lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome))); lstParam.Add(new ReportParameter("CorRodape", "DimGray")); lstParam.Add(new ReportParameter("NumeroOrdem", livro.NumeroOrdem)); lstParam.Add(new ReportParameter("Periodo", dataInicial + " a " + dataFinal)); lstParam.Add(new ReportParameter("TotalPaginas", totalPaginas.ToString())); lstParam.Add(new ReportParameter("NaoExibirBaseCalculoImpostoZerado", "false")); } #endregion #region Saida else if (tipo == "2") { var livroSaida = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja)); livroSaida.Periodo = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString(); livroSaida.UltimoLancamento = ultimoLancamento; livroSaida.LocalData = localData; livroSaida.NumeroOrdem = numeroOrdem; livroSaida.Termo = termo; livroSaida.Responsavel = func.Nome; livroSaida.CPFResponsavel = func.Cpf; livroSaida.CargoResponsavel = func.DescrTipoFunc; livroSaida.Contador = cont.Nome; livroSaida.CPFContador = cont.CpfCnpj; livroSaida.CRCContador = cont.Crc; List <ItemSaida> Itens = ItemSaidaDAO.Instance.ObterItensSaida(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano)); #region CST 20 Redução de Base de Cálculo List <ItemSaida> ItensCST20 = Itens.FindAll(delegate(ItemSaida i) { return(i.CST == "20" && i.TipoImposto == "ICMS"); }); foreach (ItemSaida i in ItensCST20) { float reducao = ProdutosNfDAO.Instance.ObtemPercentualReducaoBaseCalculo(i.IdProdNF); ItemSaida isento = new ItemSaida(); isento.Aliquota = 0; isento.BaseCalculo = 0; isento.BaseCalculoST = 0; isento.Borda = i.Borda; isento.CodigoContabil = i.CodigoContabil; isento.CodigoFiscal = i.CodigoFiscal; isento.CorLinha = i.CorLinha; isento.CST = i.CST; isento.Dia = i.Dia; isento.Especie = i.Especie; isento.ExibirDadosST = i.ExibirDadosST; isento.IdNF = i.IdNF; isento.IdProdNF = i.IdProdNF; isento.ImpostoDebitado = 0; isento.IsentasNaoTributadas = (i.ValorContabil * Convert.ToDecimal(reducao)) / 100; isento.NumeroNota = i.NumeroNota; isento.NumeroPagina = i.NumeroPagina; isento.Observacao = i.Observacao; isento.Outras = 0; isento.SerieSubSerie = i.SerieSubSerie; isento.SubTributaria = 0; isento.TipoImposto = i.TipoImposto; isento.UFDestinatario = i.UFDestinatario; isento.ValorContabil = 0; Itens.Add(isento); } Itens.Sort(delegate(ItemSaida p1, ItemSaida p2) { int ret = p1.NumeroNota.CompareTo(p2.NumeroNota); if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = String.Compare(p1.Dia, p2.Dia); } return(ret); }); #endregion #region CST 70 Redução de Base de Cálculo List <ItemSaida> ItensCST70 = Itens.FindAll(delegate(ItemSaida i) { return(i.CST == "70" && i.TipoImposto == "ICMS"); }); foreach (ItemSaida i in ItensCST70) { ProdutosNf prod = ProdutosNfDAO.Instance.GetElement(i.IdProdNF); ItemSaida isento = new ItemSaida(); isento.Aliquota = 0; isento.BaseCalculo = prod.BcIcms;; // (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100; isento.BaseCalculoST = prod.BcIcmsSt; //(i.ValorContabil + (i.ValorContabil * (Convert.ToDecimal(prod.Mva) / 100))) * (Convert.ToDecimal(prod.PercRedBcIcmsSt) / 100); isento.SubTributaria = prod.ValorIcmsSt; //Math.Round((prod.BcIcmsSt * (decimal)(prod.AliqIcmsSt / 100)) - (prod.ValorIcms > 0 ? prod.ValorIcms : ((prod.Total - prod.ValorDesconto) * (decimal)(prod.AliqIcms / 100))), 2); isento.Borda = i.Borda; isento.CodigoContabil = i.CodigoContabil; isento.CodigoFiscal = i.CodigoFiscal; isento.CorLinha = i.CorLinha; isento.CST = i.CST; isento.Dia = i.Dia; isento.Especie = i.Especie; isento.ExibirDadosST = i.ExibirDadosST; isento.IdNF = i.IdNF; isento.IdProdNF = i.IdProdNF; isento.ImpostoDebitado = 0; isento.IsentasNaoTributadas = (i.ValorContabil * Convert.ToDecimal(prod.PercRedBcIcms)) / 100; isento.NumeroNota = i.NumeroNota; isento.NumeroPagina = i.NumeroPagina; isento.Observacao = i.Observacao; isento.Outras = 0; isento.SerieSubSerie = i.SerieSubSerie; isento.SubTributaria = 0; isento.TipoImposto = i.TipoImposto; isento.UFDestinatario = i.UFDestinatario; isento.ValorContabil = 0; Itens.Add(isento); } Itens.Sort(delegate(ItemSaida p1, ItemSaida p2) { int ret = p1.NumeroNota.CompareTo(p2.NumeroNota); if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = String.Compare(p1.Dia, p2.Dia); } return(ret); }); #endregion foreach (ItemSaida item in Itens) { List <ItemSaida> itens = Itens.FindAll(delegate(ItemSaida i) { return(i.NumeroNota == item.NumeroNota); }); if (itens.Count > 0) { for (int i = 1; i < itens.Count; i++) { itens[i].CorLinha = "White"; if (itens.FindAll(delegate(ItemSaida itemSaida) { return(item.TipoImposto == "ICMS"); }).Count > 0) { if (itens[i].TipoImposto == "IPI") { itens[i].ValorContabil = 0; } } } } } totalPaginas = int.MinValue; idNota = 0; // Ordena os itens de acordo com a ordenação que será feita no relatório, para não dar problema na iteração abaixo, // que esconde campos de acordo com as notas e ordenação Itens.Sort(delegate(ItemSaida p1, ItemSaida p2) { int ret = p1.NumeroPagina.CompareTo(p2.NumeroPagina); if (ret == 0) { ret = p1.NumeroNota.CompareTo(p2.NumeroNota); } if (ret == 0) { ret = p1.CodigoFiscal.CompareTo(p2.CodigoFiscal); } if (ret == 0) { ret = String.Compare(p1.TipoImposto, p2.TipoImposto); } if (ret == 0) { ret = String.Compare(p1.Dia, p2.Dia); } return(ret); }); // Nesta iteração, será definido quando os dados do ICMS ST deverão ser exibidos for (int i = 0; i < Itens.Count; i++) { if (idNota != Itens[i].IdNF) { idNota = Itens[i].IdNF; if (i > 0) { Itens[i - 1].ExibirDadosST = true; } } if (Itens[i].NumeroPagina > totalPaginas) { totalPaginas = (int)Itens[i].NumeroPagina; } } if (Itens.Count > 0) { Itens[Itens.Count - 1].ExibirDadosST = true; } livroSaida.TotalPaginas = totalPaginas; report.ReportPath = "Relatorios/NFe/LivroRegistro/Saida/rptLivroRegistroSaida.rdlc"; report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livroSaida })); report.DataSources.Add(new ReportDataSource("ItemSaida", Itens.ToArray())); lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome))); lstParam.Add(new ReportParameter("CorRodape", "DimGray")); lstParam.Add(new ReportParameter("NumeroOrdem", livroSaida.NumeroOrdem)); } #endregion #region Apuração ICMS/IPI else if (tipo == "3" || tipo == "4") { #region Dados digitados pelo usuário string outrosDebitosDesc = Request["outrosDebitosDesc"]; decimal outrosDebitosValor = Request["outrosDebitosValor"] == "" ? 0 : Convert.ToDecimal(Request["outrosDebitosValor"]); string estornoCreditoDesc = Request["estornoCreditoDesc"]; decimal estornoCreditoValor = Request["estornoCreditoValor"] == "" ? 0 : Convert.ToDecimal(Request["estornoCreditoValor"]); string outrosCreditosDesc = Request["outrosCreditosDesc"]; decimal outrosCreditosValor = Request["outrosCreditosValor"] == "" ? 0 : Convert.ToDecimal(Request["outrosCreditosValor"]); string estornoDebitoDesc = Request["estornoDebitoDesc"]; decimal estornoDebitoValor = Request["estornoDebitoValor"] == "" ? 0 : Convert.ToDecimal(Request["estornoDebitoValor"]); string deducaoDesc = Request["deducaoDesc"]; decimal deducaoValor = Request["deducaoValor"] == "" ? 0 : Convert.ToDecimal(Request["deducaoValor"]); #endregion var livroApuracao = LivroRegistroDAO.Instance.ObterDadosLivroRegistro(Glass.Conversoes.StrParaInt(loja)); livroApuracao.Periodo = new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToShortDateString() + " a " + new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), DateTime.DaysInMonth(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes)), 23, 59, 059).ToShortDateString(); livroApuracao.UltimoLancamento = ultimoLancamento; livroApuracao.LocalData = localData; livroApuracao.NumeroOrdem = numeroOrdem; livroApuracao.Termo = termo; livroApuracao.Responsavel = func.Nome; livroApuracao.CPFResponsavel = func.Cpf; livroApuracao.CargoResponsavel = func.DescrTipoFunc; livroApuracao.Contador = cont.Nome; livroApuracao.CPFContador = cont.CpfCnpj; livroApuracao.CRCContador = cont.Crc; livroApuracao.EstornoCreditosDescicao = estornoCreditoDesc; livroApuracao.EstornoCreditosValor = Convert.ToDecimal(estornoCreditoValor); livroApuracao.EstornoDebitosDescicao = estornoDebitoDesc; livroApuracao.EstornoDebitosValor = Convert.ToDecimal(estornoDebitoValor); livroApuracao.OutrosCreditosDescicao = outrosCreditosDesc; livroApuracao.OutrosCreditosValor = Convert.ToDecimal(outrosCreditosValor); livroApuracao.OutrosDebitosDescicao = outrosDebitosDesc; livroApuracao.OutrosDebitosValor = Convert.ToDecimal(outrosDebitosValor); livroApuracao.DeducaoDescricao = deducaoDesc; livroApuracao.DeducaoValor = Convert.ToDecimal(deducaoValor); List <ItemApuracao> Itens = tipo == "3" ? ItemApuracaoDAO.Instance.ObterApuracaoICMS(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano), login) : ItemApuracaoDAO.Instance.ObterApuracaoIPI(Glass.Conversoes.StrParaUint(loja), Glass.Conversoes.StrParaInt(mes), Glass.Conversoes.StrParaInt(ano), login); totalPaginas = int.MinValue; idNota = 0; for (int i = 0; i < Itens.Count; i++) { if (Itens[i].Operacao == 1) { livroApuracao.TotalCredito += Itens[i].Imposto; if (tipo == "3") { livroApuracao.TotalCreditoST += Itens[i].ImpostoST; } } else { livroApuracao.TotalDebito += Itens[i].Imposto; if (tipo == "3") { livroApuracao.TotalDebitoST += Itens[i].ImpostoST; } } if (Itens[i].Folha > totalPaginas) { totalPaginas = (int)Itens[i].Folha; } } #region ICMS/IPI livroApuracao.TotalDebitoApuracao = livroApuracao.TotalDebito + livroApuracao.OutrosDebitosValor + livroApuracao.EstornoCreditosValor; livroApuracao.SubTotalCreditoApuracao = livroApuracao.TotalCredito + livroApuracao.OutrosCreditosValor + livroApuracao.EstornoDebitosValor; ControleCreditoApuracao credito = ControleCreditoApuracaoDAO.Instance.ObterCreditoMesAnterior(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).AddMonths(-1).ToString("yyyy-MM"), tipo == "3" ? Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Icms : Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Ipi); if (credito == null) { livroApuracao.SaldoCredorMesAnterior = 0; } else { livroApuracao.SaldoCredorMesAnterior = credito.ValorGerado; } livroApuracao.TotalCreditoApuracao = livroApuracao.SubTotalCreditoApuracao + livroApuracao.SaldoCredorMesAnterior; //SE CAMPO 11 RETORNAR COM VALOR NEGATIVO, NAO MOSTAR NO LIVRO E PASSAR ESTE SALDO PARA O CAMPO 14 if ((livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao) < 0) { livroApuracao.SaldoCredor = -(livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao); livroApuracao.SaldoDevedor = 0; } else { livroApuracao.SaldoDevedor = livroApuracao.TotalDebitoApuracao - livroApuracao.TotalCreditoApuracao; } ControleCreditoApuracaoDAO.Instance.InserirCredito(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToString("yyyy-MM"), tipo == "3" ? Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Icms : Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.Ipi, livroApuracao.SaldoCredor); livroApuracao.ImpostoRecolher = livroApuracao.SaldoDevedor + livroApuracao.DeducaoValor; #endregion if (tipo == "3") { #region ICMSST livroApuracao.TotalDebitoApuracaoST = livroApuracao.TotalDebitoST + livroApuracao.OutrosDebitosValor + livroApuracao.EstornoCreditosValor; livroApuracao.SubTotalCreditoApuracaoST = livroApuracao.TotalCreditoST + livroApuracao.OutrosCreditosValor + livroApuracao.EstornoDebitosValor; ControleCreditoApuracao creditoICMSST = ControleCreditoApuracaoDAO.Instance.ObterCreditoMesAnterior(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).AddMonths(-1).ToString("yyyy-MM"), Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.IcmsST); if (creditoICMSST == null) { livroApuracao.SaldoCredorMesAnteriorST = 0; } else { livroApuracao.SaldoCredorMesAnteriorST = creditoICMSST.ValorGerado; } livroApuracao.TotalCreditoApuracaoST = livroApuracao.SubTotalCreditoApuracaoST + livroApuracao.SaldoCredorMesAnteriorST; //SE CAMPO 11 RETORNAR COM VALOR NEGATIVO, NAO MOSTAR NO LIVRO E PASSAR ESTE SALDO PARA O CAMPO 14 if ((livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST) < 0) { livroApuracao.SaldoCredorST = -(livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST); livroApuracao.SaldoDevedorST = 0; } else { livroApuracao.SaldoDevedorST = livroApuracao.TotalDebitoApuracaoST - livroApuracao.TotalCreditoApuracaoST; } ControleCreditoApuracaoDAO.Instance.InserirCredito(new DateTime(Glass.Conversoes.StrParaInt(ano), Glass.Conversoes.StrParaInt(mes), 1, 0, 0, 0).ToString("yyyy-MM"), Glass.Data.EFD.DataSourcesEFD.TipoImpostoEnum.IcmsST, livroApuracao.SaldoCredorST); livroApuracao.ImpostoRecolherST = livroApuracao.SaldoDevedorST + livroApuracao.DeducaoValor; #endregion } livroApuracao.TotalPaginas = totalPaginas; string rep = tipo == "3" ? "ICMS/rptApuracaoICMS.rdlc" : "IPI/rptApuracaoIPI.rdlc"; report.ReportPath = "Relatorios/NFe/LivroRegistro/Apuracao/" + rep; report.DataSources.Add(new ReportDataSource("LivroRegistro", new Data.RelModel.LivroRegistro[] { livroApuracao })); report.DataSources.Add(new ReportDataSource("ItemApuracao", Itens.ToArray())); lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome))); lstParam.Add(new ReportParameter("CorRodape", "DimGray")); lstParam.Add(new ReportParameter("EstadoLoja", livroApuracao.Estado)); } #endregion break; } // Atribui parâmetros ao relatório lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogoColor(PageRequest, idLoja))); return(null); }