diff --git a/Download Faturas/Download Faturas.csproj b/Download Faturas/Download Faturas.csproj
index 83121ac..57bbe38 100644
--- a/Download Faturas/Download Faturas.csproj
+++ b/Download Faturas/Download Faturas.csproj
@@ -9,6 +9,10 @@
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/Download Faturas/GlobalSuppressions.cs b/Download Faturas/GlobalSuppressions.cs
new file mode 100644
index 0000000..9969062
--- /dev/null
+++ b/Download Faturas/GlobalSuppressions.cs
@@ -0,0 +1,9 @@
+// This file is used by Code Analysis to maintain SuppressMessage
+// attributes that are applied to this project.
+// Project-level suppressions either have no target or are given
+// a specific target and scoped to a namespace, type, member, etc.
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented", Justification = "Reviewed.")]
+[assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1633:File should have header", Justification = "")]
diff --git a/Download Faturas/Program.cs b/Download Faturas/Program.cs
index d3b8f04..7b6dc47 100644
--- a/Download Faturas/Program.cs
+++ b/Download Faturas/Program.cs
@@ -1,83 +1,85 @@
-using System.Text;
-using System.Net.Http.Headers;
-using System.Text.Json;
-using System.Web;
-using System.Text.RegularExpressions;
-using System.IO;
-using System.Data.OleDb;
-using System.Globalization;
-
-namespace Download_Faturas
+namespace Download_Faturas
{
+ using System.Data.OleDb;
+ using System.Globalization;
+ using System.Net.Http.Headers;
+ using System.Text;
+ using System.Text.Json;
+ using System.Text.RegularExpressions;
+
public class Program
{
#if DEBUG
- public const String log_faturas = @"X:\Back\Carteira x.x\4Docs\import.txt";
- public const String log_faturas2 = @"X:\Back\Carteira x.x\4Docs\import2.txt";
+ public const string LogFaturas = @"X:\Back\Carteira x.x\4Docs\import.txt";
+ public const string LogFaturas2 = @"X:\Back\Carteira x.x\4Docs\import2.txt";
#else
- public const String log_faturas = "import.txt";
- public const String log_faturas2 = "import2.txt";
+ public const String LogFaturas = "import.txt";
+ public const String LogFaturas2 = "import2.txt";
#endif
- public const string caminho_DB = "X:/Middle/Informativo Setorial/Modelo Word/BD1_dados cadastrais e faturas.accdb";
+ public const string CaminhoDB = "X:/Middle/Informativo Setorial/Modelo Word/BD1_dados cadastrais e faturas.accdb";
private static HttpClient httpClient = new HttpClient();
- private static OleDbConnection conn = new(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + caminho_DB + ";Jet OLEDB:Database Password=gds21");
- private static OleDbCommand cmd = new();
- private static StreamReader sr = new StreamReader(log_faturas);
- private static StreamWriter sw = new StreamWriter(log_faturas2);
+ private static OleDbConnection conn = new (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + CaminhoDB + ";Jet OLEDB:Database Password=gds21");
+ private static OleDbCommand cmd = new ();
+ private static StreamReader sr = new StreamReader(LogFaturas);
+ private static StreamWriter sw = new StreamWriter(LogFaturas2);
private static string? fatura;
- public static async Task Main()
+ public static void Main()
{
- //Abre a conexao com o banco de dados
+ // Abre a conexao com o banco de dados
conn.Open();
cmd.Connection = conn;
- //Loop entre as faturas pendentes
+ // Loop entre as faturas pendentes
while ((fatura = sr.ReadLine()) != null)
{
string fatura_ID = fatura.Split(",")[0];
string fatura_status = fatura.Split(",")[1];
string fatura_arquivo = fatura.Split(",")[2];
- //Verifica se a fatura foi processada e atualiza os valores para banco de dados
- if (fatura_status == "DELAYED" | fatura_status == "ACTIONABLE" | fatura_status == "" | fatura_status == "UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD")
+ // Verifica se a fatura foi processada e atualiza os valores para banco de dados
+ if (fatura_status == "DELAYED" | fatura_status == "ACTIONABLE" | fatura_status == string.Empty | fatura_status == "UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD")
{
- string token = "UFY4VWzqcHYcGNd0gkBOMFL9G5ZThV6gXBQIJ79F5HSqITzavz4Fe7iXvAbJLvZJ";
- //token = await req_token();
- HttpResponseMessage response = await status(token, fatura_ID);
- JsonElement result = JsonDocument.Parse(response.Content.ReadAsStringAsync().Result).RootElement;
+ // Verifica se a fatura foi processada e atualiza os valores para o banco de dados
+ Fatura fatura = new Fatura(fatura_ID, fatura_arquivo, httpClient);
- //Verifica se a fatura foi processada e atualiza os valores para o banco de dados
- bool multiple = result.TryGetProperty("multiple", out var _);
- if (result.GetProperty("status").GetString() == "SUCCESS" & !multiple)
+ // bool agrupada = fatura.Agrupada;
+ // string status = fatura.Status;
+ if (fatura.Status == "SUCCESS" & !fatura.Agrupada)
{
- fatura_status = processar_fatura(result, fatura_ID, fatura_arquivo).status;
+ // (string? status, string? pasta_middle, string? uc, int mes) fatura_processamento = processar_fatura(result, fatura_ID, fatura_arquivo);
+ // fatura_status = fatura_processamento.status;
+ fatura.Processar(cmd);
sw.WriteLine(fatura_ID + "," + fatura_status + "," + fatura_arquivo);
- using () ;
+
+ // mover_fatura(fatura_processamento, fatura_arquivo);
}
- else if (result.GetProperty("status").GetString() == "SUCCESS" & multiple)
+ else if (fatura.Status == "SUCCESS" & fatura.Agrupada)
{
- var agrupadas_ID = result.GetProperty("children");
-
- foreach (JsonElement individual_ID in agrupadas_ID.EnumerateArray())
+ foreach (JsonElement individual_ID in fatura.Agrupada_children)
{
- HttpResponseMessage response_individual = await status(token, individual_ID.ToString());
- JsonElement result_individual = JsonDocument.Parse(response_individual.Content.ReadAsStringAsync().Result).RootElement;
+ Fatura faturaIndividual = new Fatura(individual_ID.ToString(), fatura_arquivo, httpClient);
- if (result_individual.GetProperty("status").GetString() == "SUCCESS")
+ if (faturaIndividual.Status == "SUCCESS")
{
- fatura_status = processar_fatura(result_individual, fatura_ID, fatura_arquivo).status;
+ faturaIndividual.Processar(cmd);
sw.WriteLine(individual_ID.ToString() + "," + fatura_status + "," + fatura_arquivo);
+
+ // mover fatura
}
else
{
sw.WriteLine(individual_ID.ToString() + "," + result_individual.GetProperty("status").GetString() + "," + fatura_arquivo);
+
+ // mover fatura
}
}
}
else
{
sw.WriteLine(fatura_ID + "," + result.GetProperty("status").GetString() + "," + fatura_arquivo);
+
+ // mover fatura
}
}
else
@@ -85,26 +87,26 @@ namespace Download_Faturas
sw.WriteLine(fatura);
}
}
+
conn.Close();
sr.Close();
sw.Close();
- File.Move(log_faturas2, log_faturas, true);
+ File.Move(LogFaturas2, LogFaturas, true);
}
- public static (string status, string fatura_arquivo) processar_fatura(JsonElement result, string fatura_ID, string fatura_arquivo)
- {
-
- //Variavel para armazenar os dados a serem lancados para a TUSD no BD
- recordSet dadosTusd = new();
- //Resultado da fatura processada
+ /*public static (string? status, string? pasta_middle, string? uc, int mes) processar_fatura(JsonElement result, string fatura_ID, string fatura_arquivo)
+ {
+ // Variavel para armazenar os dados a serem lancados para a TUSD no BD
+ recordSet dadosTusd = new ();
+
+ // Resultado da fatura processada
Rootobject parsedResult = JsonSerializer.Deserialize(result.GetProperty("result"));
dadosTusd.Mes = int.Parse(parsedResult.dates.reading.periodUntil.AddDays(-15).ToString("yMM"));
- string uc = new Regex("^0+").Replace(parsedResult.locationNumber, "");
-
- //Vinculo da fatura com os dados cadastrais
+ string uc = new Regex("^0+").Replace(parsedResult.locationNumber, string.Empty);
+ // Vinculo da fatura com os dados cadastrais
string selectSQL = $"SELECT COUNT (Cod_Smart_unidade) FROM Dados_cadastrais WHERE Codigo_Instalacao = '{uc}'";
cmd.CommandText = selectSQL;
@@ -113,20 +115,22 @@ namespace Download_Faturas
if (unidades == 1)
{
- selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP FROM Dados_cadastrais WHERE Codigo_Instalacao = '{uc}'";
+ selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP, Caminho_NFs FROM Dados_cadastrais WHERE Codigo_Instalacao = '{uc}'";
}
else
{
- selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP FROM Dados_cadastrais WHERE (CNPJ_CPF LIKE '{parsedResult.customer.cnpj?.Substring(0, 8) ?? "NAN"}%' AND Codigo_Instalacao = '{uc}') OR (Razao_Social LIKE '{parsedResult.customer.name}' AND Codigo_Instalacao = '{uc}')";
+ selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP, Caminho_NFs FROM Dados_cadastrais WHERE (CNPJ_CPF LIKE '{parsedResult.customer.cnpj?.Substring(0, 8) ?? "NAN"}%' AND Codigo_Instalacao = '{uc}') OR (Razao_Social LIKE '{parsedResult.customer.name}' AND Codigo_Instalacao = '{uc}')";
}
cmd.CommandText = selectSQL;
OleDbDataReader reader = cmd.ExecuteReader();
+ string pasta_faturas = "";
+
while (reader.Read())
{
- //Dados cadastrais
+ // Dados cadastrais
dadosTusd.Cod_Smart_unidade = long.Parse(reader["Cod_Smart_unidade"].ToString());
dadosTusd.Perfil_CliqCCEE = reader["PerfilCCEE"].ToString();
dadosTusd.Submercado = reader["Submercado"].ToString();
@@ -136,10 +140,12 @@ namespace Download_Faturas
dadosTusd.ICMS = float.Parse(reader["ICMS_TUSD"].ToString());
dadosTusd.Dem_Cont_P = float.Parse(reader["Demanda_P"].ToString());
dadosTusd.Dem_Cont_FP = float.Parse(reader["Demanda_FP"].ToString());
+ pasta_faturas = reader["Caminho_NFs"].ToString();
}
+
reader.Close();
- //Verifica se a fatura ja foi lançada
+ // Verifica se a fatura ja foi lançada
selectSQL = $"SELECT Cod_TUSD FROM Dados_TUSD WHERE Cod_TUSD = {long.Parse(dadosTusd.Cod_Smart_unidade.ToString() + dadosTusd.Mes.ToString())}";
cmd.CommandText = selectSQL;
reader = cmd.ExecuteReader();
@@ -147,11 +153,11 @@ namespace Download_Faturas
reader.Close();
if (dadosTusd.Cod_Smart_unidade == 0)
{
- return ("UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD","");
+ return ("UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD", pasta_faturas, uc, dadosTusd.Mes);
}
else if (tusdLanc)
{
- return ("FATURA DUPLICADA NO BD","");
+ return ("FATURA DUPLICADA NO BD", pasta_faturas, uc, dadosTusd.Mes);
}
else
{
@@ -361,35 +367,380 @@ namespace Download_Faturas
cmd.CommandText = insertSQL.ToString();
cmd.ExecuteNonQuery();
}
- return ("FATURA INCLUIDA NO BD","");
+ return ("FATURA INCLUIDA NO BD", pasta_faturas, uc, dadosTusd.Mes);
+ }
+ }*/
+ /*public static void mover_fatura((string? status, string? pasta_middle, string? uc, int mes) fatura, string fatura_arquivo, bool multiple = false)
+ {
+ switch (fatura.status)
+ {
+ case "":
+
+ break;
+ case "a":
+
+ break;
+ case "b":
+
+ break;
}
}
- public static async Task req_token()
+ */
+ }
+
+ class Fatura
+ {
+ /* A fatura deve ter alguma propriedades públicas: Local de origem, local de destino, Status do processamento
+ * Outras propriedas privadas: ID, Mes, agrupada, token, UC
+ *
+ *
+ *
+ */
+
+ private string token = "UFY4VWzqcHYcGNd0gkBOMFL9G5ZThV6gXBQIJ79F5HSqITzavz4Fe7iXvAbJLvZJ";
+
+ private JsonElement faturaParsed;
+
+ public Fatura(string id, string fatura_path, HttpClient httpClient)
+ {
+ // Utilizado para gerar novo token
+ // this.token = Req_token(httpClient).ToString();
+ HttpResponseMessage fatura_response = this.GetStatus(httpClient, this.token, id);
+ if (fatura_response.IsSuccessStatusCode)
+ {
+ this.faturaParsed = JsonDocument.Parse(fatura_response.Content.ReadAsStringAsync().Result).RootElement;
+ this.Agrupada = this.faturaParsed.TryGetProperty("multiple", out var _);
+ this.Status = this.faturaParsed.GetProperty("status").GetString() !;
+ if (this.Agrupada)
+ {
+ this.Agrupada_children = this.faturaParsed.GetProperty("children").EnumerateArray();
+ }
+ }
+ }
+
+ public string? Status { get; private set; }
+
+ public string? Pasta_middle { get; private set; }
+
+ public string? UC { get; private set; }
+
+ public int Mes { get; private set; }
+
+ public bool Agrupada { get; private set; }
+
+ public JsonElement.ArrayEnumerator Agrupada_children { get; private set; }
+
+ public void Processar(OleDbCommand cmd)
+ {
+ // Variavel para armazenar os dados a serem lancados para a TUSD no BD
+ RecordSet dadosTusd = new ();
+
+ // Resultado da fatura processada
+ Rootobject parsedResult = JsonSerializer.Deserialize(this.faturaParsed.GetProperty("result")) !;
+
+ dadosTusd.Mes = int.Parse(parsedResult.dates.reading.periodUntil.AddDays(-15).ToString("yMM"));
+
+ string uc = new Regex("^0+").Replace(parsedResult.locationNumber, string.Empty);
+
+ // Vinculo da fatura com os dados cadastrais
+ string selectSQL = $"SELECT COUNT (Cod_Smart_unidade) FROM Dados_cadastrais WHERE Codigo_Instalacao = '{uc}'";
+
+ cmd.CommandText = selectSQL;
+
+ var unidades = (int)cmd.ExecuteScalar();
+
+ if (unidades == 1)
+ {
+ selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP, Caminho_NFs FROM Dados_cadastrais WHERE Codigo_Instalacao = '{uc}'";
+ }
+ else
+ {
+ selectSQL = $"SELECT Cod_Smart_unidade, PerfilCCEE, Submercado, Status_unidade, Grupo, Distribuidora, ICMS_TUSD, Demanda_P, Demanda_FP, Caminho_NFs FROM Dados_cadastrais WHERE (CNPJ_CPF LIKE '{parsedResult.customer.cnpj?.Substring(0, 8) ?? "NAN"}%' AND Codigo_Instalacao = '{uc}') OR (Razao_Social LIKE '{parsedResult.customer.name}' AND Codigo_Instalacao = '{uc}')";
+ }
+
+ cmd.CommandText = selectSQL;
+
+ OleDbDataReader reader = cmd.ExecuteReader();
+
+ while (reader.Read())
+ {
+ // Dados cadastrais
+ dadosTusd.Cod_Smart_unidade = long.Parse(reader["Cod_Smart_unidade"].ToString());
+ dadosTusd.Perfil_CliqCCEE = reader["PerfilCCEE"].ToString();
+ dadosTusd.Submercado = reader["Submercado"].ToString();
+ dadosTusd.Ambiente = reader["Status_unidade"].ToString();
+ dadosTusd.Grupo = reader["Grupo"].ToString();
+ dadosTusd.Distribuidora = reader["Distribuidora"].ToString();
+ dadosTusd.ICMS = float.Parse(reader["ICMS_TUSD"].ToString());
+ dadosTusd.Dem_Cont_P = float.Parse(reader["Demanda_P"].ToString());
+ dadosTusd.Dem_Cont_FP = float.Parse(reader["Demanda_FP"].ToString());
+ this.Pasta_middle = reader["Caminho_NFs"].ToString();
+ }
+
+ reader.Close();
+
+ // Verifica se a fatura ja foi lançada
+ selectSQL = $"SELECT Cod_TUSD FROM Dados_TUSD WHERE Cod_TUSD = {long.Parse(dadosTusd.Cod_Smart_unidade.ToString() + dadosTusd.Mes.ToString())}";
+ cmd.CommandText = selectSQL;
+ reader = cmd.ExecuteReader();
+ bool tusdLanc = reader.HasRows;
+ reader.Close();
+ if (dadosTusd.Cod_Smart_unidade == 0)
+ {
+ this.Status = "UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD";
+ this.UC = uc;
+ this.Mes = dadosTusd.Mes;
+ }
+ else if (tusdLanc)
+ {
+ this.Status = "FATURA DUPLICADA NO BD";
+ this.UC = uc;
+ this.Mes = dadosTusd.Mes;
+ }
+ else
+ {
+ // PIS e Cofins
+ string pisSQL = $"SELECT Distribuidoras_PIS.PIS, Distribuidoras_PIS.COFINS FROM Distribuidoras_geral INNER JOIN Distribuidoras_PIS ON Distribuidoras_geral.ID_dist = Distribuidoras_PIS.ID_dist WHERE Distribuidoras_PIS.Mes='{dadosTusd.Mes}' AND Distribuidoras_geral.Distribuidora='{dadosTusd.Distribuidora}'";
+
+ cmd.CommandText = pisSQL;
+
+ reader = cmd.ExecuteReader();
+
+ while (reader.Read())
+ {
+ // PIS e Cofins
+ dadosTusd.PIS = float.Parse(reader["PIS"].ToString());
+ dadosTusd.COFINS = float.Parse(reader["COFINS"].ToString());
+ }
+
+ reader.Close();
+
+ // Dados da fatura processada
+ dadosTusd.Cod_TUSD = long.Parse(dadosTusd.Cod_Smart_unidade.ToString() + dadosTusd.Mes.ToString());
+ dadosTusd.Perfil = parsedResult.tariffModality == "blue" ? "AZUL" : "VERDE";
+ dadosTusd.Valor = parsedResult.totalCharges;
+ dadosTusd.Inicio_Leitura = parsedResult.dates.reading.periodFrom;
+ dadosTusd.Fim_leitura = parsedResult.dates.reading.periodUntil;
+ dadosTusd.Hora_TUSD = DateTime.Now;
+ dadosTusd.Dem_Reativa_kvar = 0;
+ dadosTusd.Multa = 0;
+ dadosTusd.Credito = 0;
+ dadosTusd.Bandeira_RS_MWh = 0;
+ dadosTusd.FIC_DIC = 0;
+ dadosTusd.Enc_conexao = 0;
+ dadosTusd.Liminar_ICMS = 0;
+ dadosTusd.Outros = 0;
+ dadosTusd.Cred_livre = 0;
+ dadosTusd.Tempo_TUSD = 0;
+ dadosTusd.Lanc_aut = true;
+ dadosTusd.Rev_atual = true;
+ dadosTusd.Revisao = 0;
+
+ // Loop entre os dados faturados na fatura
+ int j = 0;
+ foreach (Item item in parsedResult.items)
+ {
+ switch (item.type, item.period)
+ {
+ // Energia Ponta
+ case ("energy", "peak"):
+ dadosTusd.Consumo_P = item.billed / 1000;
+ break;
+
+ // Energia Fora de Ponta
+ case ("energy", "off-peak"):
+ dadosTusd.Consumo_FP = item.billed / 1000;
+ break;
+
+ // Demanda Ponta
+ case ("demand", "peak"):
+ dadosTusd.Dem_Cont_P = item.contract == 0 ? dadosTusd.Dem_Cont_P : item.contract;
+ break;
+
+ // Demanda Fora de Ponta
+ case ("demand", "off-peak"):
+ dadosTusd.Dem_Cont_FP = item.contract == 0 ? dadosTusd.Dem_Cont_FP : item.contract;
+ break;
+
+ // Ilum. publica
+ case ("publicLighting", _):
+ dadosTusd.Ilum_Publica = item.charge;
+ break;
+
+ // Energia Reativa
+ case ("excessReactiveEnergy", _):
+ dadosTusd.En_Reativa_Mvarh = (item.billed / 1000) + dadosTusd.En_Reativa_Mvarh;
+ break;
+
+ // Demanda Reativa
+ case ("excessReactiveDemand", _):
+ dadosTusd.Dem_Reativa_kvar = item.billed;
+ break;
+
+ // Bandeira Tarifaria
+ case ("flagSurcharge", _):
+ dadosTusd.Bandeira_RS_MWh = item.charge;
+ break;
+
+ // Items não classificados
+ case ("other", _):
+ j++;
+
+ // Exclui os items lançados anteriormente para a fatura
+ if (j == 1)
+ {
+ string deleteOthers = $"DELETE FROM Dados_TUSD_aux WHERE Cod_TUSD = {dadosTusd.Cod_TUSD}";
+ cmd.CommandText = deleteOthers;
+ cmd.ExecuteNonQuery();
+ }
+
+ // Insere os novos items
+ string insertOthers = "INSERT INTO Dados_TUSD_aux (Cod_TUSD,Id,Nome,Valor,Cod_lanc) VALUES (" + dadosTusd.Cod_TUSD + "," + j + ",'" + item.name + "'," + item.charge.ToString(new CultureInfo("en-US")) + "," + 0 + ")";
+ cmd.CommandText = insertOthers;
+ cmd.ExecuteNonQuery();
+ break;
+ }
+ }
+
+ // Busca a demanda registrada nos itens medidos
+ foreach (Measureditem measuredItem in parsedResult.measuredItems)
+ {
+ switch (measuredItem.type, measuredItem.period)
+ {
+ case ("demand", "peak"):
+ dadosTusd.Dem_Reg_P = measuredItem.measured;
+ break;
+ case ("demand", "off-peak"):
+ dadosTusd.Dem_Reg_FP = measuredItem.measured;
+ break;
+ }
+ }
+
+ var dados = dadosTusd.GetType().GetProperties();
+ StringBuilder fields = new StringBuilder();
+ StringBuilder values = new StringBuilder();
+
+ // Verifica se já existe a fatura lançada | atualizar fatura ou nova fatura
+ string selectTUSD = $"SELECT Cod_TUSD FROM Dados_TUSD WHERE Cod_TUSD = {dadosTusd.Cod_TUSD}";
+
+ cmd.CommandText = selectTUSD.ToString();
+
+ reader = cmd.ExecuteReader();
+
+ if (reader.Read())
+ {
+ // Cria o comando para atualização da fatura
+ reader.Close();
+ StringBuilder updateSQL = new StringBuilder("UPDATE Dados_TUSD SET ");
+
+ // Loop por todos os dados ja obtidos
+ for (var i = 0; i < dados.Count(); i++)
+ {
+ // Adiciona o nome do campo
+ string field = dados[i].Name + "=";
+
+ // Valor para o campo selecionado
+ var value = dados[i].GetValue(dadosTusd) ?? string.Empty;
+
+ // Adiciona '(aspas) para textos e datas
+ if (dados[i].PropertyType.Name == "String" ^ dados[i].PropertyType.Name == "DateTime")
+ {
+ value = "'" + (dados[i].GetValue(dadosTusd)?.ToString() ?? string.Empty) + "'";
+ }
+
+ // Substitui ,(virgula) por .(ponto)
+ else if (dados[i].PropertyType.Name == "Single")
+ {
+ float valueFloat = (float)value;
+ value = valueFloat.ToString(new CultureInfo("en-US"));
+ }
+
+ if (i > 0)
+ {
+ updateSQL.Append(",");
+ }
+
+ updateSQL.Append(field + value);
+ }
+
+ updateSQL.Append($" WHERE Cod_TUSD = {dadosTusd.Cod_TUSD}");
+ cmd.CommandText = updateSQL.ToString();
+ cmd.ExecuteNonQuery();
+ }
+ else
+ {
+ // Cria o comando para lançar da fatura
+ reader.Close();
+ StringBuilder insertSQL = new StringBuilder("INSERT INTO Dados_TUSD (");
+
+ // Loop pelo nome dos campos
+ for (var i = 0; i < dados.Count(); i++)
+ {
+ // Adiciona o nome do campo
+ string field = dados[i].Name;
+
+ // Valor para o campo selecionado
+ var value = dados[i].GetValue(dadosTusd) ?? string.Empty;
+
+ // Adiciona '(aspas) para textos e datas
+ if (dados[i].PropertyType.Name == "String" ^ dados[i].PropertyType.Name == "DateTime")
+ {
+ value = "'" + (dados[i].GetValue(dadosTusd)?.ToString() ?? string.Empty) + "'";
+ }
+
+ // Substitui ,(virgula) por .(ponto)
+ else if (dados[i].PropertyType.Name == "Single")
+ {
+ float valueFloat = (float)value;
+ value = valueFloat.ToString(new CultureInfo("en-US"));
+ }
+
+ if (i > 0)
+ {
+ fields.Append(",");
+ values.Append(",");
+ }
+
+ fields.Append(field);
+ values.Append(value);
+ }
+
+ insertSQL.Append(fields)
+ .Append(") VALUES (")
+ .Append(values)
+ .Append(")");
+
+ cmd.CommandText = insertSQL.ToString();
+ cmd.ExecuteNonQuery();
+ }
+
+ this.Status = "FATURA INCLUIDA NO BD";
+ this.UC = uc;
+ this.Mes = dadosTusd.Mes;
+ }
+ }
+
+ public void Mover()
+ {
+ }
+
+ private HttpResponseMessage GetStatus(HttpClient httpClient, string token, string id)
+ {
+ var request = new HttpRequestMessage(new HttpMethod("GET"), $"https://api.4docs.cloud/v2/request/status?id={id}");
+ request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {token}");
+ var response = httpClient.Send(request);
+ return response;
+ }
+
+ private string Req_token(HttpClient httpClient)
{
var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.4docs.cloud/v2/oauth2/token");
-
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("smart:vnqtvmesikjzyipc"));
request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");
-
request.Content = new StringContent("grant_type=client_credentials");
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
-
- var response = await httpClient.SendAsync(request);
-
- return JsonDocument.Parse(response.Content.ReadAsStringAsync().Result).RootElement.GetProperty("access_token").GetString();
- }
- public static async Task status(string token, string id)
- {
-
- var request = new HttpRequestMessage(new HttpMethod("GET"), $"https://api.4docs.cloud/v2/request/status?id={id}");
-
- request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {token}");
-
- var response = await httpClient.SendAsync(request);
-
- return response;
-
+ var response = httpClient.Send(request);
+ return JsonDocument.Parse(response.Content.ReadAsStringAsync().Result).RootElement.GetProperty("access_token").GetString() !;
}
}
-}
-
+}
\ No newline at end of file
diff --git a/Download Faturas/Class2.cs b/Download Faturas/RecordSet.cs
similarity index 74%
rename from Download Faturas/Class2.cs
rename to Download Faturas/RecordSet.cs
index 548c7b3..0b11a8d 100644
--- a/Download Faturas/Class2.cs
+++ b/Download Faturas/RecordSet.cs
@@ -1,62 +1,100 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Download_Faturas
+namespace Download_Faturas
{
- public class recordSet
+ public class RecordSet
{
public long Cod_TUSD { get; set; }
- public long Cod_Smart_unidade { get; set; }
- public int Mes { get; set; }
- public float Revisao { get; set; }
- public bool Rev_atual { get; set; }
- public DateTime Hora_TUSD { get; set; }
- public float Tempo_TUSD { get; set; }
- public string Perfil_CliqCCEE { get; set; }
- public string Submercado { get; set; }
- public string Ambiente { get; set; }
- public string Distribuidora { get; set; }
- public string Grupo { get; set; }
- public string Perfil { get; set; }
- public DateTime Inicio_Leitura { get; set; }
- public DateTime Fim_leitura { get; set; }
- public float Valor { get; set; }
- public float Consumo_P { get; set; }
- public float Consumo_FP { get; set; }
- public float Dem_Reg_P { get; set; }
- public float Dem_Reg_FP { get; set; }
- public float Dem_Cont_P { get; set; }
- public float Dem_Cont_FP { get; set; }
- public float PIS { get; set; }
- public float COFINS { get; set; }
- public float ICMS { get; set; }
- public float Ilum_Publica { get; set; }
- public float Multa { get; set; }
- public float Credito { get; set; }
- public float Outros { get; set; }
- public float En_Reativa_Mvarh { get; set; }
- public float Dem_Reativa_kvar { get; set; }
- public float Bandeira_RS_MWh { get; set; }
- public float Liminar_ICMS { get; set; }
- public float Enc_conexao { get; set; }
- public float FIC_DIC { get; set; }
- //public string Hora_compliance { get; set; }
- public float Dem_Fat_P { get; set; }
- public float Dem_Fat_FP { get; set; }
- public float Reativos_reais { get; set; }
- public float Ultrapassagem_reais { get; set; }
- public float Bandeira_reais { get; set; }
- public float Compliance_calc { get; set; }
- public bool Compliance_Correto { get; set; }
- public bool Decl_DEVEC { get; set; }
- public float Cred_livre { get; set; }
- public string Coment_int { get; set; }
- public string Coment_cli { get; set; }
- public bool Lanc_aut { get; set; }
+ public long Cod_Smart_unidade { get; set; }
+
+ public int Mes { get; set; }
+
+ public float Revisao { get; set; }
+
+ public bool Rev_atual { get; set; }
+
+ public DateTime Hora_TUSD { get; set; }
+
+ public float Tempo_TUSD { get; set; }
+
+ public string? Perfil_CliqCCEE { get; set; }
+
+ public string? Submercado { get; set; }
+
+ public string? Ambiente { get; set; }
+
+ public string? Distribuidora { get; set; }
+
+ public string? Grupo { get; set; }
+
+ public string? Perfil { get; set; }
+
+ public DateTime Inicio_Leitura { get; set; }
+
+ public DateTime Fim_leitura { get; set; }
+
+ public float Valor { get; set; }
+
+ public float Consumo_P { get; set; }
+
+ public float Consumo_FP { get; set; }
+
+ public float Dem_Reg_P { get; set; }
+
+ public float Dem_Reg_FP { get; set; }
+
+ public float Dem_Cont_P { get; set; }
+
+ public float Dem_Cont_FP { get; set; }
+
+ public float PIS { get; set; }
+
+ public float COFINS { get; set; }
+
+ public float ICMS { get; set; }
+
+ public float Ilum_Publica { get; set; }
+
+ public float Multa { get; set; }
+
+ public float Credito { get; set; }
+
+ public float Outros { get; set; }
+
+ public float En_Reativa_Mvarh { get; set; }
+
+ public float Dem_Reativa_kvar { get; set; }
+
+ public float Bandeira_RS_MWh { get; set; }
+
+ public float Liminar_ICMS { get; set; }
+
+ public float Enc_conexao { get; set; }
+
+ public float FIC_DIC { get; set; }
+
+ // public string Hora_compliance { get; set; }
+ public float Dem_Fat_P { get; set; }
+
+ public float Dem_Fat_FP { get; set; }
+
+ public float Reativos_reais { get; set; }
+
+ public float Ultrapassagem_reais { get; set; }
+
+ public float Bandeira_reais { get; set; }
+
+ public float Compliance_calc { get; set; }
+
+ public bool Compliance_Correto { get; set; }
+
+ public bool Decl_DEVEC { get; set; }
+
+ public float Cred_livre { get; set; }
+
+ public string? Coment_int { get; set; }
+
+ public string? Coment_cli { get; set; }
+
+ public bool Lanc_aut { get; set; }
}
-}
-
+}
\ No newline at end of file
diff --git a/Download Faturas/Class1.cs b/Download Faturas/Rootobject.cs
similarity index 94%
rename from Download Faturas/Class1.cs
rename to Download Faturas/Rootobject.cs
index 220941f..0161c91 100644
--- a/Download Faturas/Class1.cs
+++ b/Download Faturas/Rootobject.cs
@@ -1,100 +1,134 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Download_Faturas
+namespace Download_Faturas
{
public class Rootobject
{
public string version { get; set; }
+
public string md5 { get; set; }
+
public string provider { get; set; }
+
public Providerdata providerData { get; set; }
+
public string locationNumber { get; set; }
+
public string subclass { get; set; }
+
public string subgroup { get; set; }
+
public Customer customer { get; set; }
+
public float losses { get; set; }
+
public float totalCharges { get; set; }
+
public string tariffModality { get; set; }
+
public Dates dates { get; set; }
+
public Measureditem[] measuredItems { get; set; }
+
public Item[] items { get; set; }
}
public class Providerdata
{
public Name name { get; set; }
+
public Cnpj cnpj { get; set; }
}
public class Name
{
public string value { get; set; }
+
public string confidence { get; set; }
}
public class Cnpj
{
public string value { get; set; }
+
public string confidence { get; set; }
}
public class Customer
{
public string cnpj { get; set; }
+
public string name { get; set; }
+
public Address address { get; set; }
}
public class Address
{
public string streetAndNumber { get; set; }
+
public string city { get; set; }
+
public string state { get; set; }
+
public string zipCode { get; set; }
+
public string district { get; set; }
}
public class Dates
{
public DateTime due { get; set; }
+
public DateTime month { get; set; }
+
public Reading reading { get; set; }
}
public class Reading
{
public DateTime periodFrom { get; set; }
+
public DateTime periodUntil { get; set; }
}
public class Measureditem
{
public string type { get; set; }
+
public string kind { get; set; }
+
public string period { get; set; }
+
public string[] texts { get; set; }
+
public float measured { get; set; }
}
public class Item
{
public string type { get; set; }
+
public string kind { get; set; }
+
public string period { get; set; }
+
public float billed { get; set; }
+
public float rate { get; set; }
+
public float charge { get; set; }
+
public float tusdRate { get; set; }
+
public float teRate { get; set; }
+
public string[] texts { get; set; }
+
public float contract { get; set; }
+
public string name { get; set; }
+
public float taxable { get; set; }
+
public bool summable { get; set; }
}
-}
-
+}
\ No newline at end of file
diff --git a/Upload Faturas/Upload Faturas.csproj b/Upload Faturas/Upload Faturas.csproj
index 0895b30..192cfda 100644
--- a/Upload Faturas/Upload Faturas.csproj
+++ b/Upload Faturas/Upload Faturas.csproj
@@ -9,6 +9,11 @@
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+