Atualizar ExcelController para suportar novo modelo de dados e ajustar caminhos de arquivo; alterar target framework para net8.0; adicionar suporte para template.xlsx; implementar processamento de argumentos de linha de comando.
This commit is contained in:
parent
a87e84d165
commit
b6f9cad6a6
13
.config/dotnet-tools.json
Normal file
13
.config/dotnet-tools.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {
|
||||||
|
"dotnet-ef": {
|
||||||
|
"version": "9.0.0",
|
||||||
|
"commands": [
|
||||||
|
"dotnet-ef"
|
||||||
|
],
|
||||||
|
"rollForward": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,12 +28,16 @@ namespace ImpressãoFaturamento.Controllers
|
|||||||
return StatusCode(500, "An error occurred while processing the file.");
|
return StatusCode(500, "An error occurred while processing the file.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private string WriteDataToExcel(FaturamentoModel data)
|
internal string WriteDataToExcel(FaturamentoModel data)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
string templatePath = Path.Combine(Directory.GetCurrentDirectory(), "template.xlsx");
|
string templatePath = Path.Combine(Directory.GetCurrentDirectory(), "template.xlsx");
|
||||||
string pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), data.DadosCadastrais.NomeUnidade + ".pdf");
|
string pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), data.DadosCadastrais.NomeUnidade + ".pdf");
|
||||||
|
#else
|
||||||
Application excelApp = new Application();
|
string templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "template.xlsx");
|
||||||
|
string pdfOutputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, data.DadosCadastrais.NomeUnidade + ".pdf");
|
||||||
|
#endif
|
||||||
|
Application excelApp = new();
|
||||||
Workbooks workbooks = excelApp.Workbooks;
|
Workbooks workbooks = excelApp.Workbooks;
|
||||||
Workbook workbook = workbooks.Open(templatePath);
|
Workbook workbook = workbooks.Open(templatePath);
|
||||||
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
|
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
|
||||||
@ -49,6 +53,7 @@ namespace ImpressãoFaturamento.Controllers
|
|||||||
worksheet.Cells[6, "G"].Value = data.DadosCadastrais.DescontoTUSD;
|
worksheet.Cells[6, "G"].Value = data.DadosCadastrais.DescontoTUSD;
|
||||||
worksheet.Cells[5, "L"].Value = data.DadosCadastrais.PercentualUnidade;
|
worksheet.Cells[5, "L"].Value = data.DadosCadastrais.PercentualUnidade;
|
||||||
worksheet.Cells[4, "R"].Value = data.DadosCadastrais.CustoTotalCCEE;
|
worksheet.Cells[4, "R"].Value = data.DadosCadastrais.CustoTotalCCEE;
|
||||||
|
worksheet.Cells[9, "M"].Value = data.DadosCadastrais.TipoFaturamento;
|
||||||
|
|
||||||
//dados de faturamento - Cativo
|
//dados de faturamento - Cativo
|
||||||
int linha = 11;
|
int linha = 11;
|
||||||
@ -78,7 +83,7 @@ namespace ImpressãoFaturamento.Controllers
|
|||||||
linha++;
|
linha++;
|
||||||
}
|
}
|
||||||
|
|
||||||
faturamento(workbook, worksheet);
|
//faturamento(workbook, worksheet);
|
||||||
|
|
||||||
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
||||||
workbook.Close(false);
|
workbook.Close(false);
|
||||||
@ -91,92 +96,92 @@ namespace ImpressãoFaturamento.Controllers
|
|||||||
return pdfOutputPath;
|
return pdfOutputPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void faturamento(Workbook workbook, Worksheet worksheet)
|
//public void faturamento(Workbook workbook, Worksheet worksheet)
|
||||||
{
|
//{
|
||||||
float idUnidade = worksheet.Cells[70, "A"].Value;
|
// float idUnidade = worksheet.Cells[70, "A"].Value;
|
||||||
float mesRef = worksheet.Cells[70, "D"].Value;
|
// float mesRef = worksheet.Cells[70, "D"].Value;
|
||||||
float tipoFaturamento = worksheet.Cells[70, "I"].Value;
|
// float tipoFaturamento = worksheet.Cells[70, "I"].Value;
|
||||||
float cod_fatura = idUnidade + mesRef + tipoFaturamento;
|
// float cod_fatura = idUnidade + mesRef + tipoFaturamento;
|
||||||
string empresa = worksheet.Cells[70, "B"].Value;
|
// string empresa = worksheet.Cells[70, "B"].Value;
|
||||||
string unidade = worksheet.Cells[70, "C"].Value;
|
// string unidade = worksheet.Cells[70, "C"].Value;
|
||||||
decimal custoCativo = worksheet.Cells[70, "E"].Value;
|
// decimal custoCativo = worksheet.Cells[70, "E"].Value;
|
||||||
decimal custoLivre = worksheet.Cells[70, "F"].Value;
|
// decimal custoLivre = worksheet.Cells[70, "F"].Value;
|
||||||
decimal economia = worksheet.Cells[70, "G"].Value;
|
// decimal economia = worksheet.Cells[70, "G"].Value;
|
||||||
decimal remuneracao = worksheet.Cells[70, "H"].Value;
|
// decimal remuneracao = worksheet.Cells[70, "H"].Value;
|
||||||
decimal remuneracaoFixo = worksheet.Cells[70, "J"].Value;
|
// decimal remuneracaoFixo = worksheet.Cells[70, "J"].Value;
|
||||||
decimal remuneracaoPiso = worksheet.Cells[70, "K"].Value;
|
// decimal remuneracaoPiso = worksheet.Cells[70, "K"].Value;
|
||||||
decimal remuneracaoTeto = worksheet.Cells[70, "L"].Value;
|
// decimal remuneracaoTeto = worksheet.Cells[70, "L"].Value;
|
||||||
decimal remuneracaoPercentual = worksheet.Cells[70, "M"].Value;
|
// decimal remuneracaoPercentual = worksheet.Cells[70, "M"].Value;
|
||||||
|
|
||||||
int numeroUnidades = Convert.ToInt32(unidade);
|
// int numeroUnidades = Convert.ToInt32(unidade);
|
||||||
|
|
||||||
var pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), idUnidade + ".pdf");
|
// var pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), idUnidade + ".pdf");
|
||||||
|
|
||||||
if (remuneracaoFixo != 0 || numeroUnidades == 1)
|
// if (remuneracaoFixo != 0 || numeroUnidades == 1)
|
||||||
{
|
// {
|
||||||
//imprimir remuneracao fixa
|
// //imprimir remuneracao fixa
|
||||||
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
// workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (remuneracaoFixo == 0 || numeroUnidades != 1)
|
// if (remuneracaoFixo == 0 || numeroUnidades != 1)
|
||||||
{
|
// {
|
||||||
//imprimir remuneracao piso/teto/percentual
|
// //imprimir remuneracao piso/teto/percentual
|
||||||
worksheet.Cells[61, "F"].Value = remuneracaoPiso;
|
// worksheet.Cells[61, "F"].Value = remuneracaoPiso;
|
||||||
//TODO: imprimir
|
// //TODO: imprimir
|
||||||
worksheet.Cells[61, "F"].Value = remuneracaoTeto;
|
// worksheet.Cells[61, "F"].Value = remuneracaoTeto;
|
||||||
//TODO: imprimir
|
// //TODO: imprimir
|
||||||
worksheet.Cells[61, "F"].Value = remuneracaoPercentual;
|
// worksheet.Cells[61, "F"].Value = remuneracaoPercentual;
|
||||||
//TODO: imprimir
|
// //TODO: imprimir
|
||||||
|
|
||||||
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
// workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
|
||||||
}
|
// }
|
||||||
|
|
||||||
//Conexão com o banco de dados Access
|
// //Conexão com o banco de dados Access
|
||||||
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CaminhoParaSeuBancoDeDados.accdb;Jet OLEDB:Database Password=SuaSenha;";
|
// string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=CaminhoParaSeuBancoDeDados.accdb;Jet OLEDB:Database Password=SuaSenha;";
|
||||||
using (OleDbConnection connection = new OleDbConnection(connectionString))
|
// using (OleDbConnection connection = new OleDbConnection(connectionString))
|
||||||
{
|
// {
|
||||||
connection.Open();
|
// connection.Open();
|
||||||
|
|
||||||
// Atualizar o registro se ele já existir
|
// // Atualizar o registro se ele já existir
|
||||||
string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
|
// string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
|
||||||
using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
|
// using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
|
||||||
{
|
// {
|
||||||
updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
// updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
||||||
updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
// updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
||||||
int rowsUpdated = updateCommand.ExecuteNonQuery();
|
// int rowsUpdated = updateCommand.ExecuteNonQuery();
|
||||||
|
|
||||||
// Se nenhum registro foi atualizado, inserir um novo registro
|
// // Se nenhum registro foi atualizado, inserir um novo registro
|
||||||
if (rowsUpdated == 0)
|
// if (rowsUpdated == 0)
|
||||||
{
|
// {
|
||||||
string insertQuery = "INSERT INTO TabelaResumoFaturamento (IdUnidade, MesRef, TipoFaturamento, ValorTotal) VALUES (@IdUnidade, @MesRef, @TipoFaturamento, @ValorTotal)";
|
// string insertQuery = "INSERT INTO TabelaResumoFaturamento (IdUnidade, MesRef, TipoFaturamento, ValorTotal) VALUES (@IdUnidade, @MesRef, @TipoFaturamento, @ValorTotal)";
|
||||||
using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection))
|
// using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection))
|
||||||
{
|
// {
|
||||||
insertCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
// insertCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
||||||
insertCommand.Parameters.AddWithValue("@MesRef", mesRef);
|
// insertCommand.Parameters.AddWithValue("@MesRef", mesRef);
|
||||||
insertCommand.Parameters.AddWithValue("@TipoFaturamento", tipoFaturamento);
|
// insertCommand.Parameters.AddWithValue("@TipoFaturamento", tipoFaturamento);
|
||||||
insertCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
// insertCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
||||||
insertCommand.ExecuteNonQuery();
|
// insertCommand.ExecuteNonQuery();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Verificar se é a última unidade faturada
|
// // Verificar se é a última unidade faturada
|
||||||
if (unidadesFaturadas == numeroUnidades)
|
// if (unidadesFaturadas == numeroUnidades)
|
||||||
{
|
// {
|
||||||
//TODO: comparar faturamento global e atualizar faturamento final
|
// //TODO: comparar faturamento global e atualizar faturamento final
|
||||||
//TODO: manter somente o faturamento correto
|
// //TODO: manter somente o faturamento correto
|
||||||
// Atualizar o resumo de faturamento
|
// // Atualizar o resumo de faturamento
|
||||||
string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
|
// string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
|
||||||
using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
|
// using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
|
||||||
{
|
// {
|
||||||
updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
// updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
|
||||||
updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
// updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
|
||||||
updateCommand.ExecuteNonQuery();
|
// updateCommand.ExecuteNonQuery();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net8.0-windows8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@ -24,4 +24,10 @@
|
|||||||
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
|
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="template.xlsx">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -33,6 +33,9 @@ namespace ImpressãoFaturamento.Models
|
|||||||
|
|
||||||
[JsonPropertyName("custo_total_CCEE")]
|
[JsonPropertyName("custo_total_CCEE")]
|
||||||
public decimal CustoTotalCCEE { get; set; }
|
public decimal CustoTotalCCEE { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("tipo_faturamento")]
|
||||||
|
public string TipoFaturamento { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ItemFaturamento
|
public class ItemFaturamento
|
||||||
|
|||||||
53
Program.cs
53
Program.cs
@ -1,3 +1,14 @@
|
|||||||
|
using ImpressãoFaturamento.Controllers;
|
||||||
|
using ImpressãoFaturamento.Models;
|
||||||
|
|
||||||
|
//args = [@"C:\Users\contratos\AppData\Local\Temp\json_input.json"];
|
||||||
|
|
||||||
|
if (args.Length > 0)
|
||||||
|
{
|
||||||
|
ProcessCommandLineArguments(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
@ -23,3 +34,45 @@ app.UseAuthorization();
|
|||||||
app.MapControllers();
|
app.MapControllers();
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
|
|
||||||
|
static void ProcessCommandLineArguments(string[] arguments)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Recebendo JSON via linha de comando...");
|
||||||
|
|
||||||
|
if (arguments.Length != 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Erro: Um único argumento contendo o JSON é esperado.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string jsonInput = arguments[0];
|
||||||
|
|
||||||
|
if (!File.Exists(jsonInput))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Erro: O arquivo '{jsonInput}' não foi encontrado.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string jsonContent = File.ReadAllText(jsonInput);
|
||||||
|
|
||||||
|
var data = System.Text.Json.JsonSerializer.Deserialize<FaturamentoModel>(jsonContent);
|
||||||
|
|
||||||
|
if (data != null)
|
||||||
|
{
|
||||||
|
ExcelController controller = new();
|
||||||
|
|
||||||
|
string pdfPath = controller.WriteDataToExcel(data);
|
||||||
|
Console.WriteLine($"PDF gerado com sucesso: {pdfPath}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Faturamento", "Dados inválidos.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Erro ao processar o JSON: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user