private void EnviarEmail(ResultadoOperacaoFechamento resultado) { var dataInicial = DateTime.Now.GetFirstDateTimeOfMonth(); var datafinal = DateTime.Now.GetLastDateTimeOfMonth(); var totalVendido = RecuperarTotalVendido(dataInicial, datafinal); var senderEmail = _parametros.SmtpSenderEmail; var senderName = _parametros.SmtpSenderName; var fromEmail = _parametros.SmtpSenderEmail; var fromName = _parametros.SmtpSenderName; var subject = "Resultado do Fechamento"; var htmlBody = ""; var emailsTo = new List <MailAddress>(); _parametros.EmailsParaEnviar.Split(';').ToList().ForEach(email => emailsTo.Add(new MailAddress(email))); htmlBody = $@"<h1>Resultado fechamento dia: {DateTime.Now:dd/MM/yyy HH:mm} - <span style='color: red;'>{resultado.ValorTotalPagamento.ToString("c", CultureInfo.GetCultureInfo("pt-BR"))}</span></h1> <table style='width: 400px; border-collapse: collapse;'> <tr><td style='width: 250px; border: 1px solid black;'>Nome Do PDV:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{"NomeDoCaixa".GetConfigValue().ToUpper()}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Valor de Abertura:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado.ValorAbertura:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Dinheiro no Caixa p/ Operador:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorContabilizadoNoFechamento:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Pagamentos em Dinheiro:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorTotalPagamentoDinheiro:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Pagamentos em Debito:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorTotalPagamentoDebito:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Pagamentos em Credito:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorTotalPagamentoCredito:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Pagamentos em Ticket:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorTotalPagamentoTicket:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Dinheiro no Caixa p/ Sistema:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .ValorTotalEstimadoEmEspecie:c}</td></tr> <tr><td style='width: 250px; border: 1px solid black;'>Diferença:</td> <td align='right' style='width: 150px; border: 1px solid black;'>{resultado .DiferencaNoCaixa:c}</td></tr> </table> <h3>Total Venda em {DateTime.Now.GetMonthName()}: <span style='color: red;'>{totalVendido.ValorTotal.ToString("c", CultureInfo.GetCultureInfo("pt-BR"))}</span></br> Quantidade Vendida: <span style='color: red;'>{totalVendido.Quantidade}</span></h3>"; _email.Enviar(senderEmail, senderName, fromEmail, fromName, subject, htmlBody, emailsTo); }
private void RegistrarResultadoFechamento(OperacaoCaixa operacaoCaixaFechamento, decimal valorContabilizadoNoFechamento) { var vendas = _vendaRepositorio.RecuperarListaDasVendasDaOperacaoDeAbertura(CaixaCorrente.CodigoOperacaoDeAbertura); if (vendas != null && vendas.Count > 0) { var operacoesCaixa = _repositorio.RecuperarOperacoesCaixaPorCodigoDeAbertura(CaixaCorrente.CodigoOperacaoDeAbertura); var operacaoCaixaAbertura = operacoesCaixa.SingleOrDefault(x => x.TipoOperacao == EnumCaixaTipoOperacao.Abertura.ToString()); if (operacaoCaixaAbertura != null) { var resultadoFechamento = new ResultadoOperacaoFechamento(); resultadoFechamento.CodigoResultado = GerarCodigoUnico(); resultadoFechamento.OperacaoCaixa_CodigoOperacaoCaixa = operacaoCaixaFechamento.CodigoOperacaoCaixa; resultadoFechamento.ValorAbertura = operacaoCaixaAbertura.ValorOperacao; resultadoFechamento.ValorContabilizadoNoFechamento = valorContabilizadoNoFechamento; resultadoFechamento.ValorTotalReforco = operacoesCaixa.Where(x => x.TipoOperacao == EnumCaixaTipoOperacao.Reforco.ToString()).Sum(x => x.ValorOperacao); resultadoFechamento.ValorTotalSangria = operacoesCaixa.Where(x => x.TipoOperacao == EnumCaixaTipoOperacao.Sangria.ToString()).Sum(x => x.ValorOperacao); vendas.ForEach(venda => { var vendaPagamentos = _vendaRepositorio.RecuperarListaDosPagamentosDaVenda(venda.CodigoVenda); resultadoFechamento.ValorTotalDescontoVenda += venda.ValorTotalDescontoVenda; TipoDoPagamento.ListaDeTiposDePagamento.Where(x => x.Nome.Contains("Dinheiro")).ToList().ForEach(item => { resultadoFechamento.ValorTotalPagamentoDinheiro += vendaPagamentos.Where( x => x.TipoPagamento_CodigoTipoPagamento == item.CodigoTipoPagamento).Sum(x => x.ValorPagamento) - venda.ValorTroco; }); TipoDoPagamento.ListaDeTiposDePagamento.Where(x => x.Nome.Contains("Crédito")).ToList().ForEach(item => { resultadoFechamento.ValorTotalPagamentoCredito += vendaPagamentos.Where(x => x.TipoPagamento_CodigoTipoPagamento == item.CodigoTipoPagamento).Sum(x => x.ValorPagamento); resultadoFechamento.ValorRecebimentoCretito = resultadoFechamento.ValorTotalPagamentoCredito - (item.PercentualDesconto / 100 * resultadoFechamento.ValorTotalPagamentoCredito); }); TipoDoPagamento.ListaDeTiposDePagamento.Where(x => x.Nome.Contains("Débito")).ToList().ForEach(item => { resultadoFechamento.ValorTotalPagamentoDebito += vendaPagamentos.Where(x => x.TipoPagamento_CodigoTipoPagamento == item.CodigoTipoPagamento).Sum(x => x.ValorPagamento); resultadoFechamento.ValorRecebimentoDebito = resultadoFechamento.ValorTotalPagamentoDebito - (item.PercentualDesconto / 100 * resultadoFechamento.ValorTotalPagamentoDebito); }); TipoDoPagamento.ListaDeTiposDePagamento.Where(x => x.Nome.Contains("Tiket")).ToList().ForEach(item => { resultadoFechamento.ValorTotalPagamentoTicket += vendaPagamentos.Where(x => x.TipoPagamento_CodigoTipoPagamento == item.CodigoTipoPagamento).Sum(x => x.ValorPagamento); resultadoFechamento.ValorRecebimentoTicket += resultadoFechamento.ValorTotalPagamentoTicket - (item.PercentualDesconto / 100 * resultadoFechamento.ValorTotalPagamentoTicket); }); }); resultadoFechamento.ValorTotalPagamento = resultadoFechamento.ValorTotalPagamentoDinheiro + resultadoFechamento.ValorTotalPagamentoCredito + resultadoFechamento.ValorTotalPagamentoDebito + resultadoFechamento.ValorTotalPagamentoTicket; resultadoFechamento.ValorTotalEstimadoEmEspecie = resultadoFechamento.ValorAbertura + resultadoFechamento.ValorTotalReforco + resultadoFechamento.ValorTotalPagamentoDinheiro - resultadoFechamento.ValorTotalSangria; resultadoFechamento.DiferencaNoCaixa = resultadoFechamento.ValorContabilizadoNoFechamento - resultadoFechamento.ValorTotalEstimadoEmEspecie; _repositorio.Inserir <ResultadoOperacaoFechamento>(resultadoFechamento); Task.Factory.StartNew(() => { EnviarEmail(resultadoFechamento); }); } } }