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 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 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 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); } }