private string ClientesInadimplentes(DataTable dt, int rowCount, decimal ID_EMPRESA) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { dt.Columns.Add("TOTAL_VENCIDO", typeof(decimal)); dt.Columns.Add("CONTATOS", typeof(string)); foreach (DataRow dr in dt.Rows) { dr["TOTAL_VENCIDO"] = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, Convert.ToDecimal(dr["CODIGO_CLIENTE"]), ID_EMPRESA); } } using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext()) { foreach (DataRow dr in dt.Rows) { var query = from linha in ctx1.TB_CLIENTE_CONTATOs where linha.ID_CLIENTE == Convert.ToDecimal(dr["CODIGO_CLIENTE"]) select linha; string retorno = string.Format("<div><br /><b>Contatos</b><br /><hr /><table style='width: 85%;'><tr><td><b>{0}</b></td><td><b>{1}</b></td><td><b>{2}</b></td><td><b>{3}</b></td></tr>", "Nome", "Telefone", "e-mail", "fax"); foreach (var item in query) { retorno += string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td></tr>", item.NOME_CONTATO_CLIENTE, item.TELEFONE_CONTATO_CLIENTE, item.EMAIL_CONTATO_CLIENTE, item.FAX_CONTATO_CLIENTE); } retorno += "</table><br /></div>"; dr["CONTATOS"] = retorno; } } DataSet ds = new DataSet("Query"); ds.Tables.Add(dt); DataTable totalCount = new DataTable("Totais"); totalCount.Columns.Add("totalCount"); DataRow nova = totalCount.NewRow(); nova[0] = rowCount; totalCount.Rows.Add(nova); ds.Tables.Add(totalCount); System.IO.StringWriter tr = new System.IO.StringWriter(); ds.WriteXml(tr); return(tr.ToString()); }
private void Inadimplencia(DataContext ctx, decimal ID_EMPRESA) { decimal totalVencidos = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, CODIGO_CLIENTE, ctx, ID_EMPRESA); if (totalVencidos > (decimal)0.00) { AdicionaRestricao(CRITERIOS_DE_ANALISE.Inadimplencia, string.Concat("Existem títulos vencidos deste cliente. <br />Total Vencido = ", "<span style='color: red;'>", totalVencidos.ToString("c"), "</span>")); } }
public static decimal Dia_Util(decimal DIAS) { DateTime _vencimento = DateTime.Today.AddDays((double)DIAS); decimal retorno = DIAS; while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento)) { _vencimento = _vencimento.AddDays(1); retorno += 1; } return(retorno); }
public string Lista_Relatorio() { string retorno = ""; Preenche_Vendedor(); using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait)) { r.ID_EMPRESA = ID_EMPRESA; r.DefineCabecalho("Relatório de Clientes Inativos<br /><span style='font-size: 8pt;'>" + NOME_VENDEDOR + "</span>", 60); using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { ctx.Connection.Open(); ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); var query = from linha in ctx.TB_CLIENTEs orderby linha.DATA_ULTIMA_FATURA descending, linha.VALOR_ULTIMA_FATURA descending where linha.DATA_ULTIMA_FATURA < _dataRef && linha.CLIENTE_BLOQUEADO != 1 && (linha.NOME_CLIENTE.Contains(CLIENTE) || linha.NOMEFANTASIA_CLIENTE.Contains(CLIENTE)) select new { linha.ID_CLIENTE, linha.NOMEFANTASIA_CLIENTE, linha.CODIGO_VENDEDOR_CLIENTE, linha.TB_VENDEDORE.NOME_VENDEDOR, linha.DATA_ULTIMA_FATURA, linha.VALOR_ULTIMA_FATURA, linha.TB_MUNICIPIO.TB_UF.SIGLA_UF, NOME_CONTATO_CLIENTE = (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1).Any() ? (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1.NOME_CONTATO_CLIENTE).First() : "", EMAIL_CONTATO_CLIENTE = (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1).Any() ? (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1.EMAIL_CONTATO_CLIENTE).First() : "", TELEFONE_CONTATO_CLIENTE = (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1).Any() ? (from linha1 in ctx.GetTable <TB_CLIENTE_CONTATO>() where linha1.ID_CLIENTE == linha.ID_CLIENTE select linha1.TELEFONE_CONTATO_CLIENTE).First() : "" }; if (CODIGO_VENDEDOR > 0) { query = query.Where(v => v.CODIGO_VENDEDOR_CLIENTE == CODIGO_VENDEDOR); } var query1 = query.ToList(); StringBuilder _conteudo = new StringBuilder(); _conteudo.Append("<table style='width: 75%; font-family: tahoma; font-size: 8pt;'>"); _conteudo.Append(@"<tr> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>Cliente</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>Contato</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>Vendedor(a):</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>Telefone</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>UF</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>Ultima Compra</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold; text-align: right;'>Valor Ultima Compra</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold; text-align: right;'>Total Vencido</td> </tr>"); foreach (var item in query1) { decimal vencido = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, item.ID_CLIENTE, ID_EMPRESA); _conteudo.Append(@"<tr> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + item.NOMEFANTASIA_CLIENTE.Trim() + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + item.NOME_CONTATO_CLIENTE.Trim() + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + item.NOME_VENDEDOR.Trim() + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + item.TELEFONE_CONTATO_CLIENTE.Trim() + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + item.SIGLA_UF + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + ApoioXML.TrataData2(item.DATA_ULTIMA_FATURA) + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold;'>" + ((decimal)item.VALOR_ULTIMA_FATURA).ToString("c") + @"</td> <td style='BORDER-BOTTOM: 1px solid; font-weight: bold; text-align: right;'>" + ((decimal)vencido).ToString("c") + @"</td> </tr>"); } _conteudo.Append("</table>"); r.InsereConteudo(_conteudo.ToString()); retorno = r.SalvaDocumento("Clientes_Inativos"); } return(retorno); } }
public static decimal TotalVencidos(Vencidos recepberPagar, decimal CODIGO_CLIENTE_FORNECEDOR, DataContext ctx, decimal ID_EMPRESA) { DateTime dataLimite = Doran_TitulosVencidos.DataLimiteParaVencimento(ctx); decimal?retorno = 0; if (recepberPagar == Vencidos.RECEBER) { var query = from linha in ctx.GetTable <TB_FINANCEIRO>() where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.DATA_VENCIMENTO < dataLimite && linha.CREDITO_DEBITO == 0 && linha.CODIGO_EMITENTE == ID_EMPRESA && (linha.CODIGO_CLIENTE == CODIGO_CLIENTE_FORNECEDOR || CODIGO_CLIENTE_FORNECEDOR == 0) select new TABELA_DATA_VENCIMENTO() { NUMERO_FINANCEIRO = linha.NUMERO_FINANCEIRO, DATA_VENCIMENTO = linha.DATA_VENCIMENTO, VALOR_TOTAL = (linha.VALOR + linha.VALOR_ACRESCIMO + linha.VALOR_MULTA) - linha.VALOR_DESCONTO }; foreach (var item in query) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento, ctx)) { _vencimento = _vencimento.AddDays(1); } if (_vencimento < DateTime.Now) { retorno += item.VALOR_TOTAL; } } DataTable dt = ApoioXML.ToTable <TABELA_DATA_VENCIMENTO>(query); foreach (DataRow dr in dt.Rows) { retorno -= Doran_TitulosVencidos.PagoParcialmente(Convert.ToDecimal(dr["NUMERO_FINANCEIRO"]), ctx); if (retorno < (decimal)0.00) { retorno = 0; } } } else { var query = (from linha in ctx.GetTable <TB_FINANCEIRO>() where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.DATA_VENCIMENTO < dataLimite && linha.CREDITO_DEBITO == 1 && linha.CODIGO_EMITENTE == ID_EMPRESA && (linha.CODIGO_FORNECEDOR == CODIGO_CLIENTE_FORNECEDOR || CODIGO_CLIENTE_FORNECEDOR == 0) select new TABELA_DATA_VENCIMENTO() { NUMERO_FINANCEIRO = linha.NUMERO_FINANCEIRO, DATA_VENCIMENTO = linha.DATA_VENCIMENTO, VALOR_TOTAL = (linha.VALOR + linha.VALOR_ACRESCIMO + linha.VALOR_MULTA) - linha.VALOR_DESCONTO }).ToList(); foreach (var item in query) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento, ctx)) { _vencimento = _vencimento.AddDays(1); } if (_vencimento < DateTime.Now) { retorno += (decimal)item.VALOR_TOTAL; } } DataTable dt = ApoioXML.ToTable <TABELA_DATA_VENCIMENTO>(query); foreach (DataRow dr in dt.Rows) { retorno -= Doran_TitulosVencidos.PagoParcialmente(Convert.ToDecimal(dr["NUMERO_FINANCEIRO"]), ctx); } } return(retorno.HasValue ? (decimal)retorno : 0); }
public static decimal TotalVencidos(Vencidos recepberPagar, decimal CODIGO_CLIENTE_FORNECEDOR, decimal ID_EMPRESA) { DateTime dataLimite = Doran_TitulosVencidos.DataLimiteParaVencimento(); decimal? retorno = 0; if (recepberPagar == Vencidos.RECEBER) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { ctx.Connection.Open(); ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); var query = from linha in ctx.TB_FINANCEIROs where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.DATA_VENCIMENTO < dataLimite && linha.CREDITO_DEBITO == 0 && linha.CODIGO_EMITENTE == ID_EMPRESA select linha; if (CODIGO_CLIENTE_FORNECEDOR > 0) { query = query.Where(c => c.CODIGO_CLIENTE == CODIGO_CLIENTE_FORNECEDOR); } else { query = query.Where(c => c.CODIGO_CLIENTE > 0); } foreach (var item in query) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento)) { _vencimento = _vencimento.AddDays(1); } if (_vencimento < DateTime.Now) { retorno += (item.VALOR + item.VALOR_ACRESCIMO + item.VALOR_MULTA) - item.VALOR_DESCONTO; } } DataTable dt = ApoioXML.ToDataTable(ctx, query); foreach (DataRow dr in dt.Rows) { retorno -= Doran_TitulosVencidos.PagoParcialmente(Convert.ToDecimal(dr["NUMERO_FINANCEIRO"])); if (retorno < (decimal)0.00) { retorno = 0; } } } } else { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { ctx.Connection.Open(); ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); var query = from linha in ctx.TB_FINANCEIROs where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.DATA_VENCIMENTO < dataLimite && linha.CREDITO_DEBITO == 1 && linha.CODIGO_EMITENTE == ID_EMPRESA && (linha.CODIGO_FORNECEDOR == CODIGO_CLIENTE_FORNECEDOR || CODIGO_CLIENTE_FORNECEDOR == 0) select linha; foreach (var item in query) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento)) { _vencimento = _vencimento.AddDays(1); } if (_vencimento < DateTime.Now) { retorno += (item.VALOR + item.VALOR_ACRESCIMO + item.VALOR_MULTA) - item.VALOR_DESCONTO; } } DataTable dt = ApoioXML.ToDataTable(ctx, query); foreach (DataRow dr in dt.Rows) { retorno -= Doran_TitulosVencidos.PagoParcialmente(Convert.ToDecimal(dr["NUMERO_FINANCEIRO"])); } } } return(retorno.HasValue ? (decimal)retorno : 0); }
public string MontaRelatorioAReceber() { string retorno = ""; using (Th2_Report r = new Th2_Report(ExpertPdf.HtmlToPdf.PdfPageSize.A4, ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait)) { r.ID_EMPRESA = ID_EMPRESA; r.DefineCabecalho("Relatório de Títulos a Receber Vencidos", 60); DateTime dataLimite = Doran_TitulosVencidos.DataLimiteParaVencimento(); using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { ctx.Connection.Open(); ctx.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); var query = from linha in ctx.TB_FINANCEIROs where linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.DATA_VENCIMENTO < dataLimite && linha.CREDITO_DEBITO == 0 // && linha.CODIGO_CLIENTE > 0 && linha.HISTORICO.Contains(cliente_fornecedor) && linha.CODIGO_EMITENTE == ID_EMPRESA select new { linha.NUMERO_FINANCEIRO, linha.NUMERO_SEQ_NF_SAIDA, linha.NUMERO_NF_SAIDA, linha.NUMERO_SEQ_NF_ENTRADA, linha.HISTORICO, linha.DATA_LANCAMENTO, linha.DATA_VENCIMENTO, CLIENTE = linha.TB_NOTA_SAIDA == null ? "" : linha.TB_NOTA_SAIDA.TB_CLIENTE.NOMEFANTASIA_CLIENTE, VENDEDOR = linha.TB_NOTA_SAIDA == null ? "" : linha.TB_NOTA_SAIDA.NOME_VENDEDOR_NF, CODIGO_VENDEDOR = linha.TB_NOTA_SAIDA == null ? 0 : linha.TB_NOTA_SAIDA.CODIGO_VENDEDOR_NF, VALOR_TOTAL = (linha.VALOR + linha.VALOR_ACRESCIMO + linha.VALOR_MULTA) - linha.VALOR_DESCONTO, linha.VALOR_APROXIMADO }; if (VENDEDOR > 0) { query = query.Where(_ => _.CODIGO_VENDEDOR == VENDEDOR); } string _conteudo = "<table style='width: 70%; font-family: tahoma; font-size: 8pt;'>"; _conteudo += @"<tr> <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>NF / Duplicata</td> <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Lançamento</td> <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vencimento</td> <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Cliente</td> <td style='BORDER-BOTTOM: 1px solid; border-color:#C0C0C0;'>Vendedor</td> <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor</td> <td style='BORDER-BOTTOM: 1px solid; text-align: right; border-color:#C0C0C0;'>Valor Aproximado?</td> </tr>"; decimal Total = 0; foreach (var item in query) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Feriado_FimDeSemana(_vencimento)) { _vencimento = _vencimento.AddDays(1); } DateTime _limite = DateTime.Now; if (_limite.DayOfWeek == DayOfWeek.Saturday) { _limite = _limite.AddDays(-2); } if (_limite.DayOfWeek == DayOfWeek.Sunday) { _limite = _limite.AddDays(-3); } decimal valor = (decimal)item.VALOR_TOTAL - Doran_TitulosVencidos.PagoParcialmente(item.NUMERO_FINANCEIRO); if (_vencimento < _limite) { _conteudo += string.Format(@"<tr> <td style='BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{0}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{1}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{2}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{3}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{4}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0; text-align: right;'>{5}</td> <td style='BORDER-RIGHT: 1px solid; border-color:#C0C0C0;'>{6}</td> </tr>", item.NUMERO_NF_SAIDA.ToString() + "/" + ApoioXML.LetrasDuplicatas_ERP_Servicos(item.NUMERO_SEQ_NF_SAIDA, item.NUMERO_SEQ_NF_ENTRADA, item.DATA_VENCIMENTO), ApoioXML.Data((DateTime)item.DATA_LANCAMENTO), ApoioXML.Data((DateTime)item.DATA_VENCIMENTO), string.IsNullOrEmpty(item.CLIENTE) ? item.HISTORICO : item.CLIENTE.Trim(), string.IsNullOrEmpty(item.VENDEDOR) ? "" : item.VENDEDOR.Trim(), ((decimal)valor).ToString("c"), item.VALOR_APROXIMADO == 1 ? "S" : ""); Total += valor; } } _conteudo += string.Format(@"<tr> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'> </td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'> </td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'> </td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'> </td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>{0}</td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>{1}</td> <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'> </td> </tr></table>", "Total..:", ((decimal)Total).ToString("c")); r.InsereConteudo(_conteudo); retorno = r.SalvaDocumento("Doran_Titulos_Receber_Vencidos"); } return(retorno); } }
public static Dictionary <string, string> Creditos_do_Cliente(decimal CODIGO_CLIENTE, string DataInicial, string DataFinal, decimal ID_EMPRESA) { DateTime dt1 = Convert.ToDateTime(DataInicial); DateTime dt2 = Convert.ToDateTime(DataFinal); dt2 = dt2.AddDays(1); Dictionary <string, string> retorno = new Dictionary <string, string>(); using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { var faturamento = (from linha in ctx.TB_NOTA_SAIDAs where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE && (linha.DATA_EMISSAO_NF >= dt1 && linha.DATA_EMISSAO_NF < dt2) && (linha.STATUS_NF == 2 || linha.STATUS_NF == 4) select linha).Sum(fat => fat.TOTAL_NF); if (faturamento.HasValue) { retorno.Add("Faturamento", ((decimal)faturamento).ToString("c", CultureInfo.CurrentCulture)); } else { retorno.Add("Faturamento", 0.ToString("c", CultureInfo.CurrentCulture)); } DateTime amanha = DateTime.Today; amanha = amanha.AddDays(1); var aReceber = (from linha in ctx.TB_FINANCEIROs where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.DATA_VENCIMENTO >= amanha && linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.CREDITO_DEBITO == 0 select linha).Sum(ar => ar.VALOR_TOTAL); if (aReceber.HasValue) { retorno.Add("aReceber", ((decimal)aReceber).ToString("c", CultureInfo.CurrentCulture)); } else { retorno.Add("aReceber", 0.ToString("c", CultureInfo.CurrentCulture)); } var Recebido = (from linha in ctx.TB_FINANCEIROs where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && (linha.DATA_PAGAMENTO >= dt1 && linha.DATA_PAGAMENTO < dt2) && linha.CREDITO_DEBITO == 0 select linha).Sum(pa => pa.VALOR_TOTAL); if (Recebido.HasValue) { retorno.Add("Recebido", ((decimal)Recebido).ToString("c", CultureInfo.CurrentCulture)); } else { retorno.Add("Recebido", 0.ToString("c", CultureInfo.CurrentCulture)); } decimal Inadimplente = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, CODIGO_CLIENTE, ID_EMPRESA); if (Inadimplente > (decimal)0.00) { retorno.Add("Inadimplente", "<span style='color: red;'>" + Inadimplente.ToString("c", CultureInfo.CurrentCulture) + "</span>"); } else { retorno.Add("Inadimplente", "<span>" + Inadimplente.ToString("c", CultureInfo.CurrentCulture) + "</span>"); } var limiteCliente = (from linha in ctx.TB_CLIENTEs where linha.ID_CLIENTE == CODIGO_CLIENTE select new { linha.TB_LIMITE.VALOR_LIMITE }).ToList(); decimal _limiteCliente = 0; foreach (var item in limiteCliente) { _limiteCliente = (decimal)item.VALOR_LIMITE; } var EmAberto = (from linha in ctx.TB_FINANCEIROs where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.CREDITO_DEBITO == 0 select linha).Sum(ab => ab.VALOR_TOTAL); if (EmAberto > _limiteCliente) { EmAberto = EmAberto - _limiteCliente; } else { EmAberto = 0; } EmAberto += Doran_Limite_Credito_Cliente.Limite_Excedido_Cliente(CODIGO_CLIENTE); if (EmAberto > (decimal)0.00) { retorno.Add("Excedido", "<span style='color: red;'>" + ((decimal)EmAberto).ToString("c", CultureInfo.CurrentCulture) + "</span>"); } else { retorno.Add("Excedido", ((decimal)EmAberto).ToString("c", CultureInfo.CurrentCulture)); } var Abatimentos = (from linha in ctx.GetTable <TB_SALDO_CLIENTE_FORNECEDOR>() orderby linha.CODIGO_CLIENTE, linha.SALDO_RESTANTE where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.SALDO_RESTANTE > (decimal)0.00 select linha).Sum(a => a.SALDO_RESTANTE); if (Abatimentos.HasValue) { retorno.Add("Abatimentos", "<span style='color: navy;'>" + ((decimal)Abatimentos).ToString("c", CultureInfo.CurrentCulture) + "</span>"); } else { retorno.Add("Abatimentos", ((decimal)0.00).ToString("c", CultureInfo.CurrentCulture)); } // Data e Valor da Ultima Compra var ultimaCompra = (from linha in ctx.TB_NOTA_SAIDAs orderby linha.CODIGO_CLIENTE_NF, linha.DATA_EMISSAO_NF descending where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE && linha.STATUS_NF == 4 select new { linha.DATA_EMISSAO_NF, linha.TOTAL_SERVICOS_NF }).Take(1).ToList(); if (ultimaCompra.Any()) { foreach (var item in ultimaCompra) { retorno.Add("data_ultima_compra", ApoioXML.TrataData2(item.DATA_EMISSAO_NF)); retorno.Add("valor_ultima_compra", ((decimal)item.TOTAL_SERVICOS_NF).ToString("c")); } } else { retorno.Add("data_ultima_compra", ""); retorno.Add("valor_ultima_compra", ((decimal)0.00).ToString("c")); } // Maior compra var maiorCompra = (from linha in ctx.TB_NOTA_SAIDAs orderby linha.CODIGO_CLIENTE_NF, linha.DATA_EMISSAO_NF where linha.CODIGO_CLIENTE_NF == CODIGO_CLIENTE && linha.STATUS_NF == 4 select linha).Max(m => m.TOTAL_SERVICOS_NF); retorno.Add("maior_compra", maiorCompra.HasValue ? ((decimal)maiorCompra).ToString("c") : ((decimal)0.00).ToString("c")); return(retorno); } }
public Dictionary <string, object> Copia_Orcamento(decimal ID_USUARIO, double DIAS_PRAZO_ORCAMENTO) { Dictionary <string, object> retorno = new Dictionary <string, object>(); DateTime entrega = DateTime.Today; while (Doran_TitulosVencidos.Feriado_FimDeSemana(entrega)) { entrega = entrega.AddDays(1); } using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { var query = (from linha in ctx.TB_ORCAMENTO_VENDAs where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO select linha).ToList(); foreach (var item in query) { System.Data.Linq.Table <TB_ORCAMENTO_VENDA> Entidade = ctx.GetTable <TB_ORCAMENTO_VENDA>(); TB_ORCAMENTO_VENDA novo = new TB_ORCAMENTO_VENDA(); using (Doran_Comercial_Orcamentos oc = new Doran_Comercial_Orcamentos(NUMERO_ORCAMENTO, ID_USUARIO)) { CHAVE_ORCAMENTO = oc.CRIA_CHAVE_ORCAMENTO(); } if (CHAVE_ORCAMENTO.Length > 100) { CHAVE_ORCAMENTO = CHAVE_ORCAMENTO.Substring(0, 100); } novo.DATA_ORCAMENTO = DateTime.Now; novo.CODIGO_COND_PAGTO = item.CODIGO_COND_PAGTO; novo.CODIGO_CLIENTE_ORCAMENTO = item.CODIGO_CLIENTE_ORCAMENTO; novo.CODIGO_VENDEDOR = item.CODIGO_VENDEDOR; novo.CONTATO_ORCAMENTO = item.CONTATO_ORCAMENTO; novo.EMAIL_CONTATO = item.EMAIL_CONTATO; novo.NUMERO_REVISAO = 1; novo.TELEFONE_CONTATO = item.TELEFONE_CONTATO; novo.TEXTO_PROPOSTA = item.TEXTO_PROPOSTA; novo.CHAVE_ORCAMENTO = CHAVE_ORCAMENTO; novo.ID_UF_ORCAMENTO = item.ID_UF_ORCAMENTO; novo.OBS_ORCAMENTO = item.OBS_ORCAMENTO; novo.VALIDADE_ORCAMENTO = DateTime.Today.AddDays(DIAS_PRAZO_ORCAMENTO); novo.NUMERO_REVISAO = 0; novo.OBS_NF_ORCAMENTO = item.OBS_NF_ORCAMENTO; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx, novo, Entidade.ToString(), ID_USUARIO); retorno.Add("DATA_ORCAMENTO", ApoioXML.TrataData2(DateTime.Today)); retorno.Add("NOMEFANTASIA_CLIENTE", item.TB_CLIENTE.NOMEFANTASIA_CLIENTE.Trim()); retorno.Add("CONTATO_ORCAMENTO", item.CONTATO_ORCAMENTO.Trim()); retorno.Add("TELEFONE_CONTATO", item.TELEFONE_CONTATO.Trim()); retorno.Add("EMAIL_CONTATO", item.EMAIL_CONTATO.Trim()); retorno.Add("VALIDADE_ORCAMENTO", ApoioXML.TrataData2(DateTime.Today.AddDays(DIAS_PRAZO_ORCAMENTO))); retorno.Add("CODIGO_CLIENTE_ORCAMENTO", item.CODIGO_CLIENTE_ORCAMENTO); retorno.Add("STATUS", "<span style='background-color: #FF3300; color: #FFFFFF;'>Pendente</span>"); retorno.Add("ID_STATUS", "3"); retorno.Add("OBS_NF_ORCAMENTO", item.OBS_NF_ORCAMENTO); retorno.Add("NOME_VENDEDOR", item.TB_VENDEDORE.NOME_VENDEDOR.Trim()); ctx.SubmitChanges(); } } using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { var _NUMERO_ORCAMENTO = (from linha in ctx.TB_ORCAMENTO_VENDAs orderby linha.CHAVE_ORCAMENTO where linha.CHAVE_ORCAMENTO == CHAVE_ORCAMENTO select linha.NUMERO_ORCAMENTO).First(); NOVO_NUMERO_ORCAMENTO = _NUMERO_ORCAMENTO; retorno.Add("NUMERO_ORCAMENTO", NOVO_NUMERO_ORCAMENTO); var query = (from linha in ctx.TB_ITEM_ORCAMENTO_VENDAs orderby linha.NUMERO_ORCAMENTO, linha.NUMERO_ITEM where linha.NUMERO_ORCAMENTO == NUMERO_ORCAMENTO select linha).ToList(); int i = 0; foreach (var item in query) { using (Doran_ERP_Servicos_DadosDataContext ctx1 = new Doran_ERP_Servicos_DadosDataContext()) { System.Data.Linq.Table <TB_ITEM_ORCAMENTO_VENDA> Entidade = ctx1.GetTable <TB_ITEM_ORCAMENTO_VENDA>(); TB_ITEM_ORCAMENTO_VENDA novo = new TB_ITEM_ORCAMENTO_VENDA(); novo.NUMERO_ORCAMENTO = NOVO_NUMERO_ORCAMENTO; novo.ID_PRODUTO = item.ID_PRODUTO; novo.CODIGO_PRODUTO = item.CODIGO_PRODUTO; novo.QTDE_PRODUTO = item.QTDE_PRODUTO; novo.PRECO_PRODUTO = item.PRECO_PRODUTO; novo.UNIDADE_PRODUTO = item.UNIDADE_PRODUTO; novo.VALOR_TOTAL = item.VALOR_TOTAL; novo.TIPO_DESCONTO = item.TIPO_DESCONTO; novo.VALOR_DESCONTO = item.VALOR_DESCONTO; novo.ALIQ_ISS = item.ALIQ_ISS; novo.DATA_ENTREGA = entrega; novo.OBS_ITEM_ORCAMENTO = item.OBS_ITEM_ORCAMENTO; novo.NUMERO_PEDIDO_VENDA = 0; novo.NAO_GERAR_PEDIDO = 0; novo.PROGRAMACAO_ITEM_ORCAMENTO = 0; novo.DESCRICAO_PRODUTO_ITEM_ORCAMENTO = item.DESCRICAO_PRODUTO_ITEM_ORCAMENTO.Trim(); novo.ITEM_APROVADO = item.ITEM_APROVADO; Entidade.InsertOnSubmit(novo); Doran_Base.Auditoria_ERP_Servicos.Doran_Auditoria.Audita_Insert(ctx1, novo, Entidade.ToString(), ID_USUARIO); ctx1.SubmitChanges(); GravaCustos(i, item.NUMERO_ITEM, entrega, ID_USUARIO); i++; } } } retorno.Add("TOTAL_ORCAMENTO", Doran_Comercial_Orcamentos.Calcula_Total_Orcamento(NOVO_NUMERO_ORCAMENTO)); return(retorno); }
public List <RECEBIMENTOS_ASSOCIADOS_A_VENDA> Recebimentos_com_venda_associada() { List <decimal> STATUS = (from linha in ctx.TB_STATUS_PEDIDO_COMPRAs where (linha.STATUS_ESPECIFICO_ITEM_COMPRA == 2 || linha.STATUS_ESPECIFICO_ITEM_COMPRA == 3 || linha.STATUS_ESPECIFICO_ITEM_COMPRA == 6) select linha.CODIGO_STATUS_COMPRA).ToList(); var itens_compra = (from linha in ctx.TB_PEDIDO_COMPRAs where STATUS.Contains(linha.STATUS_ITEM_COMPRA.Value) && ((from linha1 in ctx.TB_RECEBIMENTO_PEDIDO_COMPRAs where linha1.NUMERO_PEDIDO_COMPRA == linha.NUMERO_PEDIDO_COMPRA && linha1.NUMERO_ITEM_COMPRA == linha.NUMERO_ITEM_COMPRA select linha1.QTDE_RECEBIDA).Sum() < linha.QTDE_ITEM_COMPRA || !(from linha1 in ctx.TB_RECEBIMENTO_PEDIDO_COMPRAs where linha1.NUMERO_PEDIDO_COMPRA == linha.NUMERO_PEDIDO_COMPRA && linha1.NUMERO_ITEM_COMPRA == linha.NUMERO_ITEM_COMPRA select linha1).Any()) && (from linha1 in ctx.TB_ASSOCIACAO_COMPRA_VENDAs where linha1.NUMERO_PEDIDO_COMPRA == linha.NUMERO_PEDIDO_COMPRA && linha1.NUMERO_ITEM_COMPRA == linha.NUMERO_ITEM_COMPRA && linha1.TB_PEDIDO_VENDA.ENTREGA_PEDIDO < dataFinal.AddDays(1) select linha1).Any() select new { linha.NUMERO_PEDIDO_COMPRA, linha.NUMERO_ITEM_COMPRA }).ToList(); List <decimal> NUMEROS_PEDIDO_COMPRA = new List <decimal>(); List <decimal> NUMEROS_ITENS_COMPRA = new List <decimal>(); foreach (var item in itens_compra) { NUMEROS_PEDIDO_COMPRA.Add(item.NUMERO_PEDIDO_COMPRA); NUMEROS_ITENS_COMPRA.Add(item.NUMERO_ITEM_COMPRA); } List <decimal?> STATUS_NF = new List <decimal?>(); STATUS_NF.Add(2); STATUS_NF.Add(3); var query = (from linha in ctx.TB_ASSOCIACAO_COMPRA_VENDAs where NUMEROS_PEDIDO_COMPRA.Contains(linha.NUMERO_PEDIDO_COMPRA) && NUMEROS_ITENS_COMPRA.Contains(linha.NUMERO_ITEM_COMPRA) select new RECEBIMENTOS_ASSOCIADOS_A_VENDA() { NUMERO_PEDIDO_COMPRA = linha.NUMERO_PEDIDO_COMPRA, NUMERO_ITEM_COMPRA = linha.NUMERO_ITEM_COMPRA, NUMERO_PEDIDO_VENDA = linha.NUMERO_PEDIDO_VENDA, NUMERO_ITEM_VENDA = linha.NUMERO_ITEM_VENDA, ID_CLIENTE = linha.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO, VALOR_PEDIDO_VENDA = (from linha1 in ctx.TB_PEDIDO_VENDAs where linha1.NUMERO_PEDIDO == linha.NUMERO_PEDIDO_VENDA && linha1.TB_STATUS_PEDIDO.STATUS_ESPECIFICO != 4 select linha1.VALOR_TOTAL_ITEM_PEDIDO).Sum(), CLIENTE_INADIMPLENTE = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, linha.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO.Value, ctx, ID_EMPRESA), FREQUENCIA_DE_COMPRA = (from linha1 in ctx.TB_PEDIDO_VENDAs where linha1.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO == linha.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO && (linha1.ENTREGA_PEDIDO >= DateTime.Today.AddMonths(-6) && linha1.ENTREGA_PEDIDO < DateTime.Today) && STATUS_NF.Contains(linha1.TB_STATUS_PEDIDO.STATUS_ESPECIFICO) select linha1.NUMERO_PEDIDO).Distinct().Count(), VALOR_6_MESES = (from linha1 in ctx.TB_NOTA_SAIDAs where linha1.CODIGO_CLIENTE_NF == linha.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.CODIGO_CLIENTE_ORCAMENTO && (linha1.DATA_EMISSAO_NF >= DateTime.Today.AddMonths(-6) && linha1.DATA_EMISSAO_NF < DateTime.Today) && STATUS_NF.Contains(linha1.STATUS_NF) select linha1.TOTAL_SERVICOS_NF).Sum(), CLIENTE = linha.TB_PEDIDO_VENDA.TB_ITEM_ORCAMENTO_VENDA.TB_ORCAMENTO_VENDA.TB_CLIENTE.NOMEFANTASIA_CLIENTE.Trim(), FORNECEDOR = linha.TB_PEDIDO_COMPRA.TB_FORNECEDOR.NOME_FANTASIA_FORNECEDOR.Trim(), CODIGO_PRODUTO = linha.TB_PEDIDO_VENDA.CODIGO_PRODUTO_PEDIDO.Trim(), DATA_ENTREGA = linha.TB_PEDIDO_VENDA.ENTREGA_PEDIDO }).Where(v => v.VALOR_PEDIDO_VENDA > (decimal)0.00).ToList(); foreach (var item in query) { item.PESO_DE_IMPORTANCIA = item.VALOR_PEDIDO_VENDA.HasValue ? item.VALOR_PEDIDO_VENDA.Value : 0; item.PESO_DE_IMPORTANCIA += item.VALOR_6_MESES.HasValue ? item.VALOR_6_MESES.Value : 0; item.PESO_DE_IMPORTANCIA += item.MARGEM_MEDIA.HasValue ? item.MARGEM_MEDIA.Value : 0; item.PESO_DE_IMPORTANCIA += item.FREQUENCIA_DE_COMPRA.HasValue ? item.FREQUENCIA_DE_COMPRA.Value : 0; } var retorno = (from linha in query orderby linha.DATA_ENTREGA, linha.CLIENTE_INADIMPLENTE, linha.PESO_DE_IMPORTANCIA descending select linha).ToList(); return(retorno); }
public List <string> GraficoCreditoCliente(decimal CODIGO_CLIENTE) { using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { DateTime amanha = DateTime.Today; amanha = amanha.AddDays(1); var aReceber = (from linha in ctx.TB_FINANCEIROs where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.DATA_VENCIMENTO >= amanha && linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.CREDITO_DEBITO == 0 select linha).Sum(ar => ar.VALOR_TOTAL); if (!aReceber.HasValue) { aReceber = 0; } decimal Inadimplente = Doran_TitulosVencidos.TotalVencidos(Vencidos.RECEBER, CODIGO_CLIENTE, ID_EMPRESA); var limiteCliente = (from linha in ctx.TB_CLIENTEs where linha.ID_CLIENTE == CODIGO_CLIENTE select new { linha.TB_LIMITE.VALOR_LIMITE }).ToList(); decimal _limiteCliente = 0; foreach (var item in limiteCliente) { _limiteCliente = (decimal)item.VALOR_LIMITE; } var EmAberto = (from linha in ctx.TB_FINANCEIROs where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.CREDITO_DEBITO == 0 select linha).Sum(ab => ab.VALOR_TOTAL); EmAberto += Doran_Limite_Credito_Cliente.Limite_Excedido_Cliente(CODIGO_CLIENTE); if (EmAberto > _limiteCliente) { EmAberto = EmAberto - _limiteCliente; } else { EmAberto = 0; } var Abatimentos = (from linha in ctx.GetTable <TB_SALDO_CLIENTE_FORNECEDOR>() orderby linha.CODIGO_CLIENTE, linha.SALDO_RESTANTE where linha.CODIGO_CLIENTE == CODIGO_CLIENTE && linha.SALDO_RESTANTE > (decimal)0.00 select linha).Sum(a => a.SALDO_RESTANTE); string _aReceber = aReceber.ToString(); _aReceber = _aReceber.Replace(",", "."); string _Inadimplente = Inadimplente.ToString(); _Inadimplente = _Inadimplente.Replace(",", "."); string _emAberto = EmAberto.ToString(); _emAberto = _emAberto.Replace(",", "."); string _Abatimentos = Abatimentos.HasValue ? Abatimentos.ToString() : ""; _Abatimentos = _Abatimentos.Replace(",", "."); List <string> retorno = new List <string>(); retorno.Add("['Total a Receber', " + _aReceber + "]"); retorno.Add("['Total Inadimplente', " + _Inadimplente + "]"); retorno.Add("['Limite de Crédito Excedido', " + _emAberto + " ]"); retorno.Add("['Abatimento(s)', " + _Abatimentos + " ]"); return(retorno); } }
public string Faturamento_Inadimplencia(DateTime dt1, DateTime dt2, decimal _ID_EMPRESA) { ID_EMPRESA = _ID_EMPRESA; using (Doran_ERP_Servicos_DadosDataContext ctx = new Doran_ERP_Servicos_DadosDataContext()) { int monthsApart = 12 * (dt1.Year - dt2.Year) + dt1.Month - dt2.Month; monthsApart = Math.Abs(monthsApart); dt2 = dt2.AddDays(1); dt2 = dt2.AddMonths(-monthsApart); List <decimal?> TotalFaturamento = new List <decimal?>(); List <decimal?> TotalVencido = new List <decimal?>(); List <string> Periodo = new List <string>(); decimal? _totalVencido = 0; for (int i = 0; i <= monthsApart; i++) { var query = from linha in ctx.TB_FINANCEIROs where (linha.DATA_VENCIMENTO >= dt1 && linha.DATA_VENCIMENTO < dt2) && linha.CREDITO_DEBITO == 0 && linha.CODIGO_EMITENTE == ID_EMPRESA select linha; decimal?_total = query.Sum(tf => tf.VALOR_TOTAL); if (!_total.HasValue) { TotalFaturamento.Add(0); } else { TotalFaturamento.Add(_total); } DateTime _vencido = dt1.Month == DateTime.Now.Month ? Doran_TitulosVencidos.DataLimiteParaVencimento() : dt2; var query1 = from linha in ctx.TB_FINANCEIROs where (linha.DATA_VENCIMENTO >= dt1 && linha.DATA_VENCIMENTO < _vencido) && linha.DATA_PAGAMENTO == new DateTime(1901, 01, 01) && linha.CREDITO_DEBITO == 0 && linha.CODIGO_EMITENTE == ID_EMPRESA select linha; decimal tv = 0; foreach (var item in query1) { DateTime _vencimento = Convert.ToDateTime(item.DATA_VENCIMENTO); while (Doran_TitulosVencidos.Feriado_FimDeSemana(_vencimento)) { _vencimento = _vencimento.AddDays(1); } if (_vencimento < DateTime.Now) { tv += (decimal)item.VALOR_TOTAL; } } DataTable dt = ApoioXML.ToDataTable(ctx, query1); foreach (DataRow dr in dt.Rows) { tv -= Doran_TitulosVencidos.PagoParcialmente(Convert.ToDecimal(dr["NUMERO_FINANCEIRO"])); } _totalVencido += tv; TotalVencido.Add(_totalVencido); Periodo.Add(dt1.Month.ToString().PadLeft(2, '0') + "/" + dt1.Year.ToString()); dt1 = dt1.AddMonths(1); dt2 = dt1; dt2 = dt2.AddMonths(1); dt2 = dt2.AddSeconds(-1); } string retorno = "["; for (int i = 0; i < TotalFaturamento.Count; i++) { string _totalFaturamento = TotalFaturamento[i].ToString(); _totalFaturamento = _totalFaturamento.Replace(",", "."); string totalVencido = TotalVencido[i].ToString(); totalVencido = totalVencido.Replace(",", "."); retorno += "{ periodo: '" + Periodo[i] + "', total_faturamento: " + _totalFaturamento + ", total_vencido: " + totalVencido + " },"; } retorno = retorno.Substring(0, retorno.Length - 1) + "]"; return(retorno); } }