示例#1
0
        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());
        }
示例#2
0
        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&iacute;tulos vencidos deste cliente. <br />Total Vencido = ",
                                                                                    "<span style='color: red;'>", totalVencidos.ToString("c"), "</span>"));
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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&oacute;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);
            }
        }
示例#5
0
        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);
        }
示例#6
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);
        }
示例#7
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&oacute;rio de T&iacute;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&ccedil;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;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</td>
                                        <td style='BORDER-TOP: 1px solid; text-align: right; border-color:#C0C0C0;'>&nbsp;</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;'>&nbsp;</td>
                                      </tr></table>", "Total..:", ((decimal)Total).ToString("c"));

                    r.InsereConteudo(_conteudo);

                    retorno = r.SalvaDocumento("Doran_Titulos_Receber_Vencidos");
                }

                return(retorno);
            }
        }
示例#8
0
        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);
            }
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
            }
        }
示例#12
0
        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);
            }
        }