You are on page 1of 13

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using COMPONENTS.Data;
using COMPONENTS.Configuration;
using COMPONENTS;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using System.Web.UI;

/// <summary>
/// Summary description for SigwebLib
/// </summary>
public static class SigwebLib
{
public enum TipoValorExtenso
{
Monetario,
Porcentagem,
Decimal
}

private static DataAccessObject _Dao;


public static DataAccessObject Dao
{
get
{
//recupera as informacoes do primeiro banco de dados.
return _Dao ?? (_Dao =
Settings.GetDataAccessObject(((Databases)HttpContext.Current.Application["Databases
"]).DataBaseList.Values.First()));
}
}

public static bool IsMobile()


{
HttpContext currentcontext = HttpContext.Current;
if (currentcontext.Session["AllowMobile"] == null ||
(bool)currentcontext.Session["AllowMobile"])
{
string user_agent =
currentcontext.Request.ServerVariables["HTTP_USER_AGENT"];
string popularUserAgent = "|acs-|alav|alca|amoi|audi|aste|avan|benq|
bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|
keji|leno|lg-c|lg-d|lg-g|lge-|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|
newt|noki|opwv|palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|
sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|
tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3c |wap-|wapa|wapi|wapp|datalogic scorpio|wapr|
webc|winw|winw|xda|xda-|";
return (popularUserAgent.Contains("|" + user_agent.Substring(0, 4) +
"|"));
}
else
{
return false;
}
}

public static DataSet buscaceps(string cep)


{
DataSet ds = Dao.RunSql("select * from V_Ceps where cep='" + cep + "'");

return ds;
}

public static string buscaceps(string cep, string campo)


{
DataSet ds = Dao.RunSql("select * from V_Ceps where cep='" + cep + "'");
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0][campo].ToString();
}
return "";
}

public static string NumeroParcela(int vgNparc, int codvenda)


{
return "";
}

public static DateTime BuscaDataVencimento(DateTime data, int codFaturamento,


int vgnparc)
{

DataTable faturamento = Dao.RunSql("Select * from tipofaturamento where


codtipofaturamento = " + codFaturamento.ToString()).Tables[0];

// 30+((1-1)*30)
double dias = (double.Parse(faturamento.Rows[0]
["primeiraparcela"].ToString())) + ((vgnparc - 1) *
double.Parse(faturamento.Rows[0]["dias"].ToString()));

return data.AddDays(dias);

public static DateTime ParcelaDataVencimento(DateTime data, int parcela, int


vgnparc)
{

double dias = 30 + ((vgnparc - 1) * 30);

return data.AddDays(dias);

public static string Filtro_rel_grupo(string ParamGrupo, string ParamEmpresa)


{
if (string.IsNullOrEmpty(ParamGrupo.ToString()) &&
string.IsNullOrEmpty(ParamEmpresa.ToString()))
return "1=1";

if (!string.IsNullOrEmpty(ParamGrupo.ToString()) && !
string.IsNullOrEmpty(ParamEmpresa.ToString()))
return Dao.PoeColAspas("codgrupo") + " = " +
Dao.ToSql(ParamGrupo.ToString(), FieldType.Text) + " AND " +
Dao.PoeColAspas("codempresa") + " = " + Dao.ToSql(ParamEmpresa.ToString(),
FieldType.Text);

if (!string.IsNullOrEmpty(ParamGrupo.ToString()) &&
string.IsNullOrEmpty(ParamEmpresa.ToString()))
return Dao.PoeColAspas("codgrupo") + " = " +
Dao.ToSql(ParamGrupo.ToString(), FieldType.Text);

if (string.IsNullOrEmpty(ParamGrupo.ToString()) && !
string.IsNullOrEmpty(ParamEmpresa.ToString()))
return Dao.PoeColAspas("codempresa") + " = " +
Dao.ToSql(ParamEmpresa.ToString(), FieldType.Text);

return "1=1";
}

public static void CalcValorMultaMora(decimal Valor, string Empresa, DateTime


DataVencimento, DateTime DataPagamento, out decimal ValorRet, out decimal MultaRet,
out decimal MoraRet)
{
ValorRet = 0;
MultaRet = 0;
MoraRet = 0;
try
{

DataSet DS = Dao.RunSql("SELECT [multa],[mora] FROM [empresa] WHERE


codempresa = " + Empresa);

if (DS.Tables[0].Rows.Count > 0)
{
decimal Multa = 0;
decimal Mora = 0;

decimal.TryParse(DS.Tables[0].Rows[0]["multa"].ToString(), out
Multa);
decimal.TryParse(DS.Tables[0].Rows[0]["mora"].ToString(), out
Mora);

//Calcula Multa
if (DataPagamento > DataVencimento)
{
Multa = Valor * (Multa / 100);
MultaRet = Multa;

//Calcula Mora
TimeSpan TS = (DataPagamento).Subtract(DataVencimento);
Mora = ((Valor * (Mora / 100)) * TS.Days);

ValorRet = Convert.ToDecimal(Valor + Multa + Mora);

}
}
catch (Exception)
{
}
}

// O método toExtenso recebe um valor do tipo decimal


public static string toExtenso(decimal valor, TipoValorExtenso
tipoValorExtenso)
{
if (valor <= 0 | valor >= 1000000000000000)
throw new ArgumentOutOfRangeException("Valor não suportado pelo
sistema. Valor: " + valor);

string strValor = String.Empty;


strValor = valor.ToString("000000000000000.00#");
//strValor = valor.ToString("{0:0.00#}");
string valor_por_extenso = string.Empty;
int qtdCasasDecimais =
strValor.Substring(strValor.IndexOf(',') + 1, strValor.Length -
(strValor.IndexOf(',') + 1)).Length;
bool existemValoresAposDecimal = Convert.ToInt32(strValor.Substring(16,
qtdCasasDecimais)) > 0;

for (int i = 0; i <= 15; i += 3)


{
var parte = strValor.Substring(i, 3);
// se parte contém vírgula, pega a substring com base na quantidade de
casas decimais.
if (parte.Contains(','))
{
parte = strValor.Substring(i + 1, qtdCasasDecimais);
}
valor_por_extenso += escreva_parte(Convert.ToDecimal(parte));
if (i == 0 & valor_por_extenso != string.Empty)
{
if (Convert.ToInt32(strValor.Substring(0, 3)) == 1)
valor_por_extenso += " TRILHÃO" +
((Convert.ToDecimal(strValor.Substring(3,
12)) > 0)
? " "
: string.Empty);
else if (Convert.ToInt32(strValor.Substring(0, 3)) > 1)
valor_por_extenso += " TRILHÕES" +
((Convert.ToDecimal(strValor.Substring(3,
12)) > 0)
? " "
: string.Empty);
}
else if (i == 3 & valor_por_extenso != string.Empty)
{
if (Convert.ToInt32(strValor.Substring(3, 3)) == 1)
valor_por_extenso += " BILHÃO" +
((Convert.ToDecimal(strValor.Substring(6,
9)) > 0)
? " "
: string.Empty);
else if (Convert.ToInt32(strValor.Substring(3, 3)) > 1)
valor_por_extenso += " BILHÕES" +
((Convert.ToDecimal(strValor.Substring(6,
9)) > 0)
? " "
: string.Empty);
}
else if (i == 6 & valor_por_extenso != string.Empty)
{
if (Convert.ToInt32(strValor.Substring(6, 3)) == 1)
valor_por_extenso += " MILHÃO" +
((Convert.ToDecimal(strValor.Substring(9,
6)) > 0)
? " "
: string.Empty);
else if (Convert.ToInt32(strValor.Substring(6, 3)) > 1)
valor_por_extenso += " MILHÕES" +
((Convert.ToDecimal(strValor.Substring(9,
6)) > 0)
? " "
: string.Empty);
}
else if (i == 9 & valor_por_extenso != string.Empty)
if (Convert.ToInt32(strValor.Substring(9, 3)) > 0)
valor_por_extenso += " MIL" +
((Convert.ToDecimal(strValor.Substring(12,
3)) > 0)
? " "
: string.Empty);

if (i == 12)
{
if (valor_por_extenso.Length > 8)
if (valor_por_extenso.Substring(valor_por_extenso.Length - 6,
6) == "BILHÃO" |
valor_por_extenso.Substring(valor_por_extenso.Length - 6,
6) == "MILHÃO")
valor_por_extenso += " DE";
else if (valor_por_extenso.Substring(valor_por_extenso.Length -
7, 7) == "BILHÕES" |
valor_por_extenso.Substring(valor_por_extenso.Length -
7, 7) == "MILHÕES" |
valor_por_extenso.Substring(valor_por_extenso.Length -
8, 7) == "TRILHÕES")
valor_por_extenso += " DE";
else if (valor_por_extenso.Substring(valor_por_extenso.Length -
8, 8) == "TRILHÕES")
valor_por_extenso += " DE";

if (Convert.ToInt64(strValor.Substring(0, 15)) == 1)
{
switch (tipoValorExtenso)
{
case TipoValorExtenso.Monetario:
valor_por_extenso += " REAL";
break;
case TipoValorExtenso.Porcentagem:
if (existemValoresAposDecimal == false)
valor_por_extenso += " PORCENTO";
break;
case TipoValorExtenso.Decimal:
break;
default:
throw new
ArgumentOutOfRangeException("tipoValorExtenso");
}
}

else if (Convert.ToInt64(strValor.Substring(0, 15)) > 1)


{
switch (tipoValorExtenso)
{
case TipoValorExtenso.Monetario:
valor_por_extenso += " REAIS";
break;
case TipoValorExtenso.Porcentagem:
if (existemValoresAposDecimal == false)
valor_por_extenso += " PORCENTO";
break;
case TipoValorExtenso.Decimal:
break;
default:
throw new
ArgumentOutOfRangeException("tipoValorExtenso");
}
}

if (Convert.ToInt32(strValor.Substring(16, 2)) > 0 &&


valor_por_extenso != string.Empty)
{
switch (tipoValorExtenso)
{
case TipoValorExtenso.Monetario:
valor_por_extenso += " E ";
break;
case TipoValorExtenso.Porcentagem:
valor_por_extenso += " VÍRGULA ";
break;
case TipoValorExtenso.Decimal:
break;
default:
throw new
ArgumentOutOfRangeException("tipoValorExtenso");
}
}
}

if (i == 15)
if (Convert.ToInt32(strValor.Substring(16, qtdCasasDecimais)) == 1)
{
switch (tipoValorExtenso)
{
case TipoValorExtenso.Monetario:
valor_por_extenso += " CENTAVO";
break;
case TipoValorExtenso.Porcentagem:
valor_por_extenso += " CENTAVO";
break;
case TipoValorExtenso.Decimal:
break;
default:
throw new
ArgumentOutOfRangeException("tipoValorExtenso");
}
}

else if (Convert.ToInt32(strValor.Substring(16, qtdCasasDecimais))


> 1)
{
switch (tipoValorExtenso)
{
case TipoValorExtenso.Monetario:
valor_por_extenso += " CENTAVOS";
break;
case TipoValorExtenso.Porcentagem:
valor_por_extenso += " PORCENTO";
break;
case TipoValorExtenso.Decimal:
break;
default:
throw new
ArgumentOutOfRangeException("tipoValorExtenso");
}
}
}
return valor_por_extenso;
}

private static string escreva_parte(decimal valor)


{
if (valor <= 0)
return string.Empty;
else
{
string montagem = string.Empty;
if (valor > 0 & valor < 1)
{
valor *= 100;
}
string strValor = valor.ToString("000");
int a = Convert.ToInt32(strValor.Substring(0, 1));
int b = Convert.ToInt32(strValor.Substring(1, 1));
int c = Convert.ToInt32(strValor.Substring(2, 1));

if (a == 1) montagem += (b + c == 0) ? "CEM" : "CENTO";


else if (a == 2) montagem += "DUZENTOS";
else if (a == 3) montagem += "TREZENTOS";
else if (a == 4) montagem += "QUATROCENTOS";
else if (a == 5) montagem += "QUINHENTOS";
else if (a == 6) montagem += "SEISCENTOS";
else if (a == 7) montagem += "SETECENTOS";
else if (a == 8) montagem += "OITOCENTOS";
else if (a == 9) montagem += "NOVECENTOS";

if (b == 1)
{
if (c == 0) montagem += ((a > 0) ? " E " : string.Empty) + "DEZ";
else if (c == 1) montagem += ((a > 0) ? " E " : string.Empty) +
"ONZE";
else if (c == 2) montagem += ((a > 0) ? " E " : string.Empty) +
"DOZE";
else if (c == 3) montagem += ((a > 0) ? " E " : string.Empty) +
"TREZE";
else if (c == 4) montagem += ((a > 0) ? " E " : string.Empty) +
"QUATORZE";
else if (c == 5) montagem += ((a > 0) ? " E " : string.Empty) +
"QUINZE";
else if (c == 6) montagem += ((a > 0) ? " E " : string.Empty) +
"DEZESSEIS";
else if (c == 7) montagem += ((a > 0) ? " E " : string.Empty) +
"DEZESSETE";
else if (c == 8) montagem += ((a > 0) ? " E " : string.Empty) +
"DEZOITO";
else if (c == 9) montagem += ((a > 0) ? " E " : string.Empty) +
"DEZENOVE";
}
else if (b == 2) montagem += ((a > 0) ? " E " : string.Empty) +
"VINTE";
else if (b == 3) montagem += ((a > 0) ? " E " : string.Empty) +
"TRINTA";
else if (b == 4) montagem += ((a > 0) ? " E " : string.Empty) +
"QUARENTA";
else if (b == 5) montagem += ((a > 0) ? " E " : string.Empty) +
"CINQUENTA";
else if (b == 6) montagem += ((a > 0) ? " E " : string.Empty) +
"SESSENTA";
else if (b == 7) montagem += ((a > 0) ? " E " : string.Empty) +
"SETENTA";
else if (b == 8) montagem += ((a > 0) ? " E " : string.Empty) +
"OITENTA";
else if (b == 9) montagem += ((a > 0) ? " E " : string.Empty) +
"NOVENTA";

if (strValor.Substring(1, 1) != "1" & c != 0 & montagem !=


string.Empty) montagem += " E ";

if (strValor.Substring(1, 1) != "1")
if (c == 1) montagem += "UM";
else if (c == 2) montagem += "DOIS";
else if (c == 3) montagem += "TRÊS";
else if (c == 4) montagem += "QUATRO";
else if (c == 5) montagem += "CINCO";
else if (c == 6) montagem += "SEIS";
else if (c == 7) montagem += "SETE";
else if (c == 8) montagem += "OITO";
else if (c == 9) montagem += "NOVE";

return montagem;
}

public static string NumberToReal(decimal number)


{
int cent = 0;
try
{
// se for =0 retorna 0 eros
if (number == 0)
{
return "Zero Reais";
}
// Verifica a parte decimal, ou seja, os Centavos
cent = Convert.ToInt32(decimal.Round((number - (int)number) * 100,
MidpointRounding.ToEven));
// Verifica apenas a parte inteira
number = (int)number;
// Caso existam Centavos
if (cent > 0)
{
// Caso seja 1 não coloca "Reais" mas sim "Real"
if (number == 1)
{
return "Um Real e " + getDecimal(Convert.ToByte(cent)) +
"Centavos";
}
// Caso o valor seja inferior a 1 Real
else if (number == 0)
{
return getDecimal(Convert.ToByte(cent)) + "Centavos";
}
else
{
return getInteger(number) + "Reais e " +
getDecimal(Convert.ToByte(cent)) + "Centavos";
}
}
else
{
// Caso seja 1 não coloca "Reais" mas sim "Real"
if (number == 1)
{
return "Um Real";
}
else
{
return getInteger(number) + "Reais";
}
}
}
catch (Exception ex)
{
return "";
}
}

public static string getDecimal(byte number)


{
try
{
Convert.ToInt32(number);

if (number == 0)
{
return "";
}
if (number >= 1 && number <= 19)
{
string[] strArray = {"Um", "Dois", "Três", "Quatro", "Cinco",
"Seis", "Sete", "Oito", "Nove", "Dez",
"Onze", "Doze", "Treze", "Quatorze", "Quinze", "Dezasseis",
"Dezassete", "Dezoito", "Dezanove"};

return strArray[number - 1] + " ";


}

if (number >= 20 && number <= 99)


{
string[] strArray = { "Vinte", "Trinta", "Quarenta", "Cinquenta",
"Sessenta", "Setenta", "Oitenta", "Noventa" };

if ((number % 10) == 0)
{
return strArray[number / 10 - 2] + " ";
}
else
{
return strArray[number / 10 - 2] + " e " +
getDecimal(Convert.ToByte(number % 10)) + " ";
}
}

else
{
return "";
}
}

catch (Exception ex)


{
return "";
}
}

// Contribuição Clodoaldo
public static DataView ProcuraSql(string StrQuery)
{
SqlDataSource sql = new SqlDataSource();
sql.ConnectionString = StrConect;
sql.SelectCommand = StrQuery;
DataView dv = (DataView)sql.Select(DataSourceSelectArguments.Empty);
return dv;
}
// Contribuição Clodoaldo
public static string PegaCampo(string StrQuery)
{
SqlDataSource sql = new SqlDataSource();
sql.ConnectionString = StrConect;
sql.SelectCommand = StrQuery;
DataView dv = (DataView)sql.Select(DataSourceSelectArguments.Empty);
if (dv.Table.Rows.Count == 0 || dv.Table.Rows[0][0].ToString() == "")
return "";
else
return dv.Table.Rows[0][0].ToString();
}
// Contribuição Clodoaldo
public static string StrConect = @" Server=BANCOSHOMOLOG\
ESTUDO,3522;Database=DBERPGVINCI;User
ID=sa;Password=Est2016;Trusted_Connection=false ";

//Rodrigo

public static DataTable OpenDataTable(string sql)


{
DataTable table = null;
COMPONENTS.Data.DataAccessObject dao = null;
try
{
dao =
COMPONENTS.Configuration.Settings.GetDataAccessObject(((COMPONENTS.Databases)HttpCo
ntext.Current.Application["Databases"])["DBSGEDUCA"]);
table = dao.RunSql(sql).Tables[0];
}
catch (Exception ex)
{
}
finally
{
if (dao != null) dao.CloseConnection();
}
return table;
}

public static T ExecuteScalar<T>(string sql)


{
T result = default(T);
COMPONENTS.Data.DataAccessObject dao = null;
try
{
dao =
COMPONENTS.Configuration.Settings.GetDataAccessObject(((COMPONENTS.Databases)HttpCo
ntext.Current.Application["Databases"])["DBSGEDUCA"]);
result = (T)dao.ExecuteScalar(sql);
}
catch (Exception ex)
{
}
finally
{
if (dao != null) dao.CloseConnection();
}
return result;
}

#region SQLExecutaRetornoF9 - Pega primeiro campo da sql informa no banco de


dados

//Padrão retornando um array


public static List<object> SQLExecutaRetornoF9(string SQL, int
RetornarComoList, string Banco)
{
List<object> retorno = new List<object>();
if (Banco == "")
{
foreach (DatabaseInfo vgDbi in
((Databases)HttpContext.Current.Application["Databases"]).DataBaseList.Values)
{
Banco = vgDbi.DataBaseAlias;
}
}

COMPONENTS.Data.DataAccessObject Dao =
COMPONENTS.Configuration.Settings.GetDataAccessObject(((Databases)HttpContext.Curre
nt.Application["Databases"])[Banco]);

DataSet dss = Dao.RunSql(String.Format(SQL));


System.Data.DataTableReader dtr = dss.CreateDataReader();
while (dtr.Read())
{
for (int i = 0; i < dtr.FieldCount; i++)
{
retorno.Add(dtr[i]);
}
}
Dao.CloseConnection();
Dao.Dispose();

return retorno;
}

//Classica, retornando a primeira coluna como string


public static string SQLExecutaRetornoF9(string SQL2, string Banco)
{
List<object> retorno = SQLExecutaRetornoF9(SQL2, 0, Banco);
if (retorno.Count > 0)
{
return retorno[0].ToString();
}
else
{
return "";
}

public static bool SQLExecutaF9(string SQL, string Banco)


{
bool exec;

if (Banco == "")
{
foreach (DatabaseInfo vgDbi in
((Databases)HttpContext.Current.Application["Databases"]).DataBaseList.Values)
{
Banco = vgDbi.DataBaseAlias;
}
}

COMPONENTS.Data.DataAccessObject Dao =
COMPONENTS.Configuration.Settings.GetDataAccessObject(((Databases)HttpContext.Curre
nt.Application["Databases"])[Banco]);
try
{
DataSet dss = Dao.RunSql(String.Format(SQL));
exec = true;
}
catch
{
exec = false;
}
Dao.CloseConnection();
Dao.Dispose();
return exec;
}

#endregion

You might also like