Faturas duplicadas não são mais salvas.

Criado endpoint para teste.
This commit is contained in:
Adriano Serighelli 2025-06-10 10:03:45 -03:00
parent 9197d900ff
commit 13c7356d9e
2 changed files with 324 additions and 311 deletions

View File

@ -189,164 +189,153 @@
return; return;
} }
// PIS e Cofins // PIS e Cofins
sqlQuery = $"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 = ? AND Distribuidoras_geral.Distribuidora = ?"; sqlQuery = $"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 = ? AND Distribuidoras_geral.Distribuidora = ?";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn)) using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("?", dadosTusd.Mes.ToString());
cmd.Parameters.AddWithValue("?", dadosTusd.Distribuidora);
using (OleDbDataReader reader = cmd.ExecuteReader())
{ {
cmd.Parameters.AddWithValue("?", dadosTusd.Mes.ToString()); while (reader.Read())
cmd.Parameters.AddWithValue("?", dadosTusd.Distribuidora);
using (OleDbDataReader reader = cmd.ExecuteReader())
{ {
while (reader.Read()) // PIS e Cofins
{
// PIS e Cofins
dadosTusd.PIS = float.Parse(reader["PIS"].ToString() !); dadosTusd.PIS = float.Parse(reader["PIS"].ToString() !);
dadosTusd.COFINS = float.Parse(reader["COFINS"].ToString() !); dadosTusd.COFINS = float.Parse(reader["COFINS"].ToString() !);
}
} }
} }
}
// Dados da fatura processada // Dados da fatura processada
dadosTusd.Cod_TUSD = long.Parse(dadosTusd.Cod_Smart_unidade.ToString() + dadosTusd.Mes.ToString()); dadosTusd.Cod_TUSD = long.Parse(dadosTusd.Cod_Smart_unidade.ToString() + dadosTusd.Mes.ToString());
switch (parsedResult.tariffModality, parsedResult.subgroup) switch (parsedResult.tariffModality, parsedResult.subgroup)
{
case ("blue", _):
dadosTusd.Perfil = "AZUL";
break;
case ("green", _):
dadosTusd.Perfil = "VERDE";
break;
case ("standart", _):
dadosTusd.Perfil = "CONVENCIONAL";
break;
case (_, "B3"):
dadosTusd.Perfil = "CONVENCIONAL";
break;
default:
break;
}
dadosTusd.Valor = parsedResult.totalCharges;
dadosTusd.Inicio_Leitura = parsedResult.dates.reading.periodFrom;
dadosTusd.Fim_leitura = parsedResult.dates.reading.periodUntil;
DateTime d = DateTime.Now;
dadosTusd.Hora_TUSD = new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
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;
float? dem_Reg_P = null;
float? dem_Reg_FP = null;
float? consumo_Reg_FP = 0;
string? kind_P = string.Empty;
string? kind_FP = string.Empty;
if (this.id == "2356193")
{
int i = 0;
i++;
}
List<(string, float)> insertOthers = new List<(string, float)>();
foreach (Item item in parsedResult.items)
{
switch (item.type, item.period)
{ {
case ("blue", _): // Energia Ponta
dadosTusd.Perfil = "AZUL"; case ("energy", "peak"):
if (kind_P == string.Empty)
{
kind_P = item.kind;
}
if (item.kind == kind_P)
{
dadosTusd.Consumo_P = dadosTusd.Consumo_P + (item.billed / 1000);
}
break; break;
case ("green", _): // Energia Fora de Ponta
dadosTusd.Perfil = "VERDE"; case ("energy", _):
break; if (item.period == "off-peak" || item.period == "off-peak inductive" || item.period == "off-peak capacitive" || item.period == "reserved")
{
case ("standart", _): if (kind_FP == string.Empty)
dadosTusd.Perfil = "CONVENCIONAL";
break;
case (_, "B3"):
dadosTusd.Perfil = "CONVENCIONAL";
break;
default:
break;
}
dadosTusd.Valor = parsedResult.totalCharges;
dadosTusd.Inicio_Leitura = parsedResult.dates.reading.periodFrom;
dadosTusd.Fim_leitura = parsedResult.dates.reading.periodUntil;
DateTime d = DateTime.Now;
dadosTusd.Hora_TUSD = new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
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;
float? dem_Reg_P = null;
float? dem_Reg_FP = null;
float? consumo_Reg_FP = 0;
string? kind_P = string.Empty;
string? kind_FP = string.Empty;
if (this.id == "2356193")
{
int i = 0;
i++;
}
List<(string, float)> insertOthers = new List<(string, float)>();
foreach (Item item in parsedResult.items)
{
switch (item.type, item.period)
{
// Energia Ponta
case ("energy", "peak"):
if (kind_P == string.Empty)
{ {
kind_P = item.kind; kind_FP = item.kind;
} }
if (item.kind == kind_P) if (item.kind == kind_FP)
{ {
dadosTusd.Consumo_P = dadosTusd.Consumo_P + (item.billed / 1000); dadosTusd.Consumo_FP = dadosTusd.Consumo_FP + (item.billed / 1000);
}
}
else
{
insertOthers.Add((item.texts[0], item.charge));
}
break;
// Demanda
case ("demand", _):
if (item.contract != 0)
{
if (item.period == "peak")
{
dadosTusd.Dem_Reg_P = item.billed;
dadosTusd.Dem_Cont_P = item.contract;
}
else if (item.period == "off-peak")
{
dadosTusd.Dem_Reg_FP = item.billed;
dadosTusd.Dem_Cont_FP = item.contract;
} }
break; if (dadosTusd.Perfil == "AZUL")
// Energia Fora de Ponta
case ("energy", _):
if (item.period == "off-peak" || item.period == "off-peak inductive" || item.period == "off-peak capacitive" || item.period == "reserved")
{
if (kind_FP == string.Empty)
{
kind_FP = item.kind;
}
if (item.kind == kind_FP)
{
dadosTusd.Consumo_FP = dadosTusd.Consumo_FP + (item.billed / 1000);
}
}
else
{
insertOthers.Add((item.texts[0], item.charge));
}
break;
// Demanda
case ("demand", _):
if (item.contract != 0)
{ {
if (item.period == "peak") if (item.period == "peak")
{ {
dadosTusd.Dem_Reg_P = item.billed; sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_P = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
dadosTusd.Dem_Cont_P = item.contract; using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@demanda", item.contract);
cmd.Parameters.AddWithValue("@cod_smart_unidade", dadosTusd.Cod_Smart_unidade);
cmd.ExecuteNonQuery();
}
} }
else if (item.period == "off-peak") else if (item.period == "off-peak")
{ {
dadosTusd.Dem_Reg_FP = item.billed; sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_FP = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
dadosTusd.Dem_Cont_FP = item.contract;
}
if (dadosTusd.Perfil == "AZUL")
{
if (item.period == "peak")
{
sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_P = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@demanda", item.contract);
cmd.Parameters.AddWithValue("@cod_smart_unidade", dadosTusd.Cod_Smart_unidade);
cmd.ExecuteNonQuery();
}
}
else if (item.period == "off-peak")
{
sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_FP = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@demanda", item.contract);
cmd.Parameters.AddWithValue("@cod_smart_unidade", dadosTusd.Cod_Smart_unidade);
cmd.ExecuteNonQuery();
}
}
}
else if (dadosTusd.Perfil == "VERDE")
{
sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_P = @demanda, Demanda_FP = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn)) using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{ {
cmd.Parameters.AddWithValue("@demanda", item.contract); cmd.Parameters.AddWithValue("@demanda", item.contract);
@ -355,212 +344,223 @@
} }
} }
} }
else if (dadosTusd.Perfil == "VERDE")
break;
// Ilum. publica
case ("publicLighting", _):
dadosTusd.Ilum_Publica = item.charge;
break;
// Energia Reativa
case ("excessReactiveEnergy", _):
dadosTusd.En_Reativa_Mvarh += item.billed / 1000;
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 e cria a instrução SQL para inserir os novos items
if (j == 1)
{ {
sqlQuery = $"DELETE FROM Dados_TUSD_aux WHERE Cod_TUSD = @cod_tusd"; sqlQuery = $"UPDATE Dados_cadastrais SET Demanda_P = @demanda, Demanda_FP = @demanda WHERE Cod_Smart_unidade = @cod_smart_unidade";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn)) using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{ {
cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD); cmd.Parameters.AddWithValue("@demanda", item.contract);
cmd.Parameters.AddWithValue("@cod_smart_unidade", dadosTusd.Cod_Smart_unidade);
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
} }
}
insertOthers.Add((item.name, item.charge)); break;
break;
} // Ilum. publica
case ("publicLighting", _):
dadosTusd.Ilum_Publica = item.charge;
break;
// Energia Reativa
case ("excessReactiveEnergy", _):
dadosTusd.En_Reativa_Mvarh += item.billed / 1000;
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 e cria a instrução SQL para inserir os novos items
if (j == 1)
{
sqlQuery = $"DELETE FROM Dados_TUSD_aux WHERE Cod_TUSD = @cod_tusd";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
cmd.ExecuteNonQuery();
}
}
insertOthers.Add((item.name, item.charge));
break;
} }
}
// Busca a demanda registrada nos itens medidos // Busca a demanda registrada nos itens medidos
foreach (Measureditem measuredItem in parsedResult.measuredItems) foreach (Measureditem measuredItem in parsedResult.measuredItems)
{
switch (measuredItem.type, measuredItem.period)
{ {
switch (measuredItem.type, measuredItem.period) case ("demand", "peak"):
{ dem_Reg_P = measuredItem.measured.Max();
case ("demand", "peak"): break;
dem_Reg_P = measuredItem.measured.Max(); case ("demand", "off-peak"):
break; dem_Reg_FP = measuredItem.measured.Max();
case ("demand", "off-peak"): break;
dem_Reg_FP = measuredItem.measured.Max(); case ("energy", "off-peak"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "off-peak"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum(); case ("energy", "off-peak inductive"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "off-peak inductive"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum(); case ("energy", "off-peak capacitive"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "off-peak capacitive"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum(); case ("energy", "off-peak capacitive green flag"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "off-peak capacitive green flag"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum(); case ("energy", "off-peak inductive green flag"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "off-peak inductive green flag"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum(); case ("energy", "reserved"):
break; consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
case ("energy", "reserved"): break;
consumo_Reg_FP = consumo_Reg_FP.GetValueOrDefault() + measuredItem.measured.Sum();
break;
}
} }
}
if (dem_Reg_P != null && (Math.Round((decimal)dadosTusd.Consumo_FP, 2) == Math.Round((decimal)(consumo_Reg_FP * 1.025 / 1000) !, 2))) if (dem_Reg_P != null && (Math.Round((decimal)dadosTusd.Consumo_FP, 2) == Math.Round((decimal)(consumo_Reg_FP * 1.025 / 1000) !, 2)))
{ {
dadosTusd.Dem_Reg_P = (float)(dem_Reg_P * 1.025); dadosTusd.Dem_Reg_P = (float)(dem_Reg_P * 1.025);
} }
else if (dem_Reg_P != null) else if (dem_Reg_P != null)
{ {
dadosTusd.Dem_Reg_P = (float)dem_Reg_P; dadosTusd.Dem_Reg_P = (float)dem_Reg_P;
} }
if (dem_Reg_FP != null && (Math.Round((decimal)dadosTusd.Consumo_FP, 2) == Math.Round((decimal)(consumo_Reg_FP * 1.025 / 1000) !, 2))) if (dem_Reg_FP != null && (Math.Round((decimal)dadosTusd.Consumo_FP, 2) == Math.Round((decimal)(consumo_Reg_FP * 1.025 / 1000) !, 2)))
{
dadosTusd.Dem_Reg_FP = (float)(dem_Reg_FP * 1.025);
}
else if (dem_Reg_FP != null)
{
dadosTusd.Dem_Reg_FP = dem_Reg_FP ?? 0;
}
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
if (tusdLanc)
{
// Cria o comando para atualização da fatura
sqlQuery = "UPDATE Dados_TUSD SET ";
// Loop por todos os dados ja obtidos
PropertyInfo[] propriedades = typeof(RecordSet).GetProperties();
foreach (PropertyInfo propriedade in propriedades)
{ {
dadosTusd.Dem_Reg_FP = (float)(dem_Reg_FP * 1.025); string nomeColuna = propriedade.Name;
}
else if (dem_Reg_FP != null) // Adicione a coluna à instrução SQL
{ sqlQuery += $"{nomeColuna} = @{nomeColuna}, ";
dadosTusd.Dem_Reg_FP = dem_Reg_FP ?? 0;
} }
var dados = dadosTusd.GetType().GetProperties(); // Remova a última vírgula e adicione a cláusula WHERE
StringBuilder fields = new StringBuilder(); sqlQuery = sqlQuery.TrimEnd(',', ' ') + $" WHERE Cod_TUSD = @cod_tusd";
StringBuilder values = new StringBuilder();
// Verifica se já existe a fatura lançada | atualizar fatura ou nova fatura using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
if (tusdLanc)
{ {
// Cria o comando para atualização da fatura
sqlQuery = "UPDATE Dados_TUSD SET ";
// Loop por todos os dados ja obtidos
PropertyInfo[] propriedades = typeof(RecordSet).GetProperties();
foreach (PropertyInfo propriedade in propriedades) foreach (PropertyInfo propriedade in propriedades)
{ {
string nomeColuna = propriedade.Name; string nomeColuna = propriedade.Name;
object valorColuna = propriedade.GetValue(dadosTusd) ?? string.Empty;
// Adicione a coluna à instrução SQL cmd.Parameters.AddWithValue($"@{nomeColuna}", valorColuna);
sqlQuery += $"{nomeColuna} = @{nomeColuna}, ";
} }
// Remova a última vírgula e adicione a cláusula WHERE // Valor do código TUSD na cláusula WHERE
sqlQuery = sqlQuery.TrimEnd(',', ' ') + $" WHERE Cod_TUSD = @cod_tusd"; cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
cmd.ExecuteNonQuery();
}
// Inseri os itens classificados como "othes" após criar o registro da TUSD devido as relação entre as tabelas
foreach ((string name, float valor) in insertOthers)
{
j++;
sqlQuery = "INSERT INTO Dados_TUSD_aux (Cod_TUSD,Id,Nome,Valor,Cod_lanc) VALUES (@cod_tusd, @j, @name, @valor,0)";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn)) using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{ {
foreach (PropertyInfo propriedade in propriedades)
{
string nomeColuna = propriedade.Name;
object valorColuna = propriedade.GetValue(dadosTusd) ?? string.Empty;
cmd.Parameters.AddWithValue($"@{nomeColuna}", valorColuna);
}
// Valor do código TUSD na cláusula WHERE
cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD); cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
cmd.Parameters.AddWithValue("@j", j);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@valor", valor);
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
// Inseri os itens classificados como "othes" após criar o registro da TUSD devido as relação entre as tabelas
foreach ((string name, float valor) in insertOthers)
{
j++;
sqlQuery = "INSERT INTO Dados_TUSD_aux (Cod_TUSD,Id,Nome,Valor,Cod_lanc) VALUES (@cod_tusd, @j, @name, @valor,0)";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
cmd.Parameters.AddWithValue("@j", j);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@valor", valor);
cmd.ExecuteNonQuery();
}
}
} }
else }
else
{
// Cria o comando para lançar da fatura
sqlQuery = "INSERT INTO Dados_TUSD (";
PropertyInfo[] propriedades = typeof(RecordSet).GetProperties();
/*int i = 0;*/
foreach (PropertyInfo propriedade in propriedades)
{ {
// Cria o comando para lançar da fatura string nomeColuna = propriedade.Name;
sqlQuery = "INSERT INTO Dados_TUSD (";
PropertyInfo[] propriedades = typeof(RecordSet).GetProperties(); // Adicione a coluna à instrução SQL
/*int i = 0;*/ sqlQuery += $"{nomeColuna}, ";
}
// Remova a última vírgula e adicione a cláusula VALUES
sqlQuery = sqlQuery.TrimEnd(',', ' ') + ") VALUES (";
foreach (PropertyInfo propriedade in propriedades)
{
// Adicione os parâmetros à instrução SQL
string nomeColuna = propriedade.Name;
sqlQuery += $"@{nomeColuna}, ";
}
// Remova a última vírgula e feche a instrução SQL
sqlQuery = sqlQuery.TrimEnd(',', ' ') + ")";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
foreach (PropertyInfo propriedade in propriedades) foreach (PropertyInfo propriedade in propriedades)
{ {
string nomeColuna = propriedade.Name; string nomeColuna = propriedade.Name;
object valorColuna = propriedade.GetValue(dadosTusd) ?? string.Empty;
// Adicione a coluna à instrução SQL cmd.Parameters.AddWithValue($"@{nomeColuna}", valorColuna);
sqlQuery += $"{nomeColuna}, ";
} }
// Remova a última vírgula e adicione a cláusula VALUES cmd.ExecuteNonQuery();
sqlQuery = sqlQuery.TrimEnd(',', ' ') + ") VALUES ("; }
foreach (PropertyInfo propriedade in propriedades)
{
// Adicione os parâmetros à instrução SQL
string nomeColuna = propriedade.Name;
sqlQuery += $"@{nomeColuna}, ";
}
// Remova a última vírgula e feche a instrução SQL
sqlQuery = sqlQuery.TrimEnd(',', ' ') + ")";
// Inseri os itens classificados como "othes" após criar o registro da TUSD devido as relação entre as tabelas
j = 0;
foreach ((string name, float valor) in insertOthers)
{
j++;
sqlQuery = "INSERT INTO Dados_TUSD_aux (Cod_TUSD,Id,Nome,Valor,Cod_lanc) VALUES (@cod_tusd, @j, @name, @valor, 0)";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn)) using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{ {
foreach (PropertyInfo propriedade in propriedades) cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
{ cmd.Parameters.AddWithValue("@j", j);
string nomeColuna = propriedade.Name; cmd.Parameters.AddWithValue("@name", name);
object valorColuna = propriedade.GetValue(dadosTusd) ?? string.Empty; cmd.Parameters.AddWithValue("@valor", valor);
cmd.Parameters.AddWithValue($"@{nomeColuna}", valorColuna);
}
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
// Inseri os itens classificados como "othes" após criar o registro da TUSD devido as relação entre as tabelas
j = 0;
foreach ((string name, float valor) in insertOthers)
{
j++;
sqlQuery = "INSERT INTO Dados_TUSD_aux (Cod_TUSD,Id,Nome,Valor,Cod_lanc) VALUES (@cod_tusd, @j, @name, @valor, 0)";
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, conn))
{
cmd.Parameters.AddWithValue("@cod_tusd", dadosTusd.Cod_TUSD);
cmd.Parameters.AddWithValue("@j", j);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@valor", valor);
cmd.ExecuteNonQuery();
}
}
} }
}
this.Status = "FATURA INCLUIDA NO BD"; this.Status = "FATURA INCLUIDA NO BD";
this.uc = uc; this.uc = uc;
this.Mes = dadosTusd.Mes; this.Mes = dadosTusd.Mes;
} }

View File

@ -188,33 +188,42 @@ namespace Webhook_4docs
{ {
path = fatura.PastaTUSD!.FullName; path = fatura.PastaTUSD!.FullName;
} }
fatura_arquivo = IndexedFilename($@"{path}\ID {fatura_ID!} - Mês {fatura.Mes} - Empresa {fatura.Empresa} - Unidade {fatura.Unidade}", "pdf");
CriarArquivo(fatura_arquivo, JsonBody.GetProperty("pdfFile").ToString());
var DatabaseModel = new ProcessedInvoices if (status_id != 4)
{ {
InvoiceId = Int32.Parse(fatura_ID), fatura_arquivo = IndexedFilename($@"{path}\ID {fatura_ID!} - Mês {fatura.Mes} - Empresa {fatura.Empresa} - Unidade {fatura.Unidade}", "pdf");
DateTimeProcessed = DateTime.UtcNow, CriarArquivo(fatura_arquivo, JsonBody.GetProperty("pdfFile").ToString());
Status = status,
InvoicePath = fatura_arquivo
};
logger.LogInformation("Fatura incluída no BD"); var DatabaseModel = new ProcessedInvoices
{
InvoiceId = Int32.Parse(fatura_ID),
DateTimeProcessed = DateTime.UtcNow,
Status = status,
InvoicePath = fatura_arquivo
};
using (var scope = app.Services.CreateScope()) logger.LogInformation("Fatura incluída no BD");
{
var dbContext = scope.ServiceProvider.GetRequiredService<WebhookDbContext>(); logger.LogInformation("Fatura salva na pasta " + fatura_arquivo);
dbContext.ProcessedInvoices.Add(DatabaseModel);
await dbContext.SaveChangesAsync(); using (var scope = app.Services.CreateScope())
{
var dbContext = scope.ServiceProvider.GetRequiredService<WebhookDbContext>();
dbContext.ProcessedInvoices.Add(DatabaseModel);
await dbContext.SaveChangesAsync();
}
} }
else
{
logger.LogInformation("Fatura duplicada no BD");
logger.LogInformation("Fatura salva na pasta " + fatura_arquivo); logger.LogInformation("Fatura descartada");
}
} }
catch catch
{ {
logger.LogError("Erro no processamento da fatura"); logger.LogError("Erro no processamento da fatura");
} }
} }
else if (JsonBody.TryGetProperty("healthy", out _) && JsonBody.TryGetProperty("blame", out _) && JsonBody.TryGetProperty("locationID", out _)) else if (JsonBody.TryGetProperty("healthy", out _) && JsonBody.TryGetProperty("blame", out _) && JsonBody.TryGetProperty("locationID", out _))
{ {
@ -247,6 +256,10 @@ namespace Webhook_4docs
} }
} }
}); });
endpoints.MapPut("/api", async context =>
{
var a = 10;
});
}); });
app.Run(); app.Run();
} }