Adicionar arquivos de projeto.

This commit is contained in:
Adriano Serighelli 2024-12-18 16:19:47 -03:00
parent c76b6b7b5e
commit a87e84d165
10 changed files with 393 additions and 0 deletions

View File

@ -0,0 +1,182 @@
using Microsoft.AspNetCore.Mvc;
using ImpressãoFaturamento.Models;
using Microsoft.Office.Interop.Excel;
using System.Data.OleDb;
namespace ImpressãoFaturamento.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
[HttpPost]
public IActionResult Post([FromBody] FaturamentoModel data)
{
if (data == null)
{
return BadRequest("Invalid data.");
}
var filePath = WriteDataToExcel(data);
if (!string.IsNullOrEmpty(filePath))
{
return Ok("File created and printed successfully.");
}
return StatusCode(500, "An error occurred while processing the file.");
}
private string WriteDataToExcel(FaturamentoModel data)
{
string templatePath = Path.Combine(Directory.GetCurrentDirectory(), "template.xlsx");
string pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), data.DadosCadastrais.NomeUnidade + ".pdf");
Application excelApp = new Application();
Workbooks workbooks = excelApp.Workbooks;
Workbook workbook = workbooks.Open(templatePath);
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
//dados cadastrais
worksheet.Cells[3, "C"].Value = data.DadosCadastrais.NomeCliente;
worksheet.Cells[4, "C"].Value = data.DadosCadastrais.NomeUnidade;
worksheet.Cells[5, "C"].Value = data.DadosCadastrais.MesConsumo;
worksheet.Cells[6, "C"].Value = data.DadosCadastrais.BandeiraCativo;
worksheet.Cells[3, "G"].Value = data.DadosCadastrais.ICMS;
worksheet.Cells[4, "G"].Value = data.DadosCadastrais.PIS_COFINS;
worksheet.Cells[5, "G"].Value = data.DadosCadastrais.FatorTributo;
worksheet.Cells[6, "G"].Value = data.DadosCadastrais.DescontoTUSD;
worksheet.Cells[5, "L"].Value = data.DadosCadastrais.PercentualUnidade;
worksheet.Cells[4, "R"].Value = data.DadosCadastrais.CustoTotalCCEE;
//dados de faturamento - Cativo
int linha = 11;
foreach (var item in data.Faturamento.Cativo)
{
worksheet.Cells[linha, "B"].Value = item.Nome;
worksheet.Cells[linha, "C"] = item.Quantidade;
worksheet.Cells[linha, "E"] = item.Tarifa;
worksheet.Cells[linha, "G"] = item.Subtotal;
worksheet.Cells[linha, "H"] = item.TipoImposto;
worksheet.Cells[linha, "I"].Value = item.ValorFinal;
linha++;
}
//dados de faturamento - Livre
linha = 33;
foreach (var item in data.Faturamento.Livre)
{
worksheet.Cells[linha, "B"].Value = item.Nome;
worksheet.Cells[linha, "C"] = item.Quantidade;
worksheet.Cells[linha, "E"] = item.Tarifa;
worksheet.Cells[linha, "G"] = item.Subtotal;
worksheet.Cells[linha, "H"] = item.TipoImposto;
worksheet.Cells[linha, "I"].Value = item.ValorFinal;
linha++;
}
faturamento(workbook, worksheet);
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
workbook.Close(false);
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
return pdfOutputPath;
}
public void faturamento(Workbook workbook, Worksheet worksheet)
{
float idUnidade = worksheet.Cells[70, "A"].Value;
float mesRef = worksheet.Cells[70, "D"].Value;
float tipoFaturamento = worksheet.Cells[70, "I"].Value;
float cod_fatura = idUnidade + mesRef + tipoFaturamento;
string empresa = worksheet.Cells[70, "B"].Value;
string unidade = worksheet.Cells[70, "C"].Value;
decimal custoCativo = worksheet.Cells[70, "E"].Value;
decimal custoLivre = worksheet.Cells[70, "F"].Value;
decimal economia = worksheet.Cells[70, "G"].Value;
decimal remuneracao = worksheet.Cells[70, "H"].Value;
decimal remuneracaoFixo = worksheet.Cells[70, "J"].Value;
decimal remuneracaoPiso = worksheet.Cells[70, "K"].Value;
decimal remuneracaoTeto = worksheet.Cells[70, "L"].Value;
decimal remuneracaoPercentual = worksheet.Cells[70, "M"].Value;
int numeroUnidades = Convert.ToInt32(unidade);
var pdfOutputPath = Path.Combine(Directory.GetCurrentDirectory(), idUnidade + ".pdf");
if (remuneracaoFixo != 0 || numeroUnidades == 1)
{
//imprimir remuneracao fixa
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
}
if (remuneracaoFixo == 0 || numeroUnidades != 1)
{
//imprimir remuneracao piso/teto/percentual
worksheet.Cells[61, "F"].Value = remuneracaoPiso;
//TODO: imprimir
worksheet.Cells[61, "F"].Value = remuneracaoTeto;
//TODO: imprimir
worksheet.Cells[61, "F"].Value = remuneracaoPercentual;
//TODO: imprimir
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfOutputPath);
}
//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;";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
// Atualizar o registro se ele já existir
string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
{
updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
int rowsUpdated = updateCommand.ExecuteNonQuery();
// Se nenhum registro foi atualizado, inserir um novo registro
if (rowsUpdated == 0)
{
string insertQuery = "INSERT INTO TabelaResumoFaturamento (IdUnidade, MesRef, TipoFaturamento, ValorTotal) VALUES (@IdUnidade, @MesRef, @TipoFaturamento, @ValorTotal)";
using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection))
{
insertCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
insertCommand.Parameters.AddWithValue("@MesRef", mesRef);
insertCommand.Parameters.AddWithValue("@TipoFaturamento", tipoFaturamento);
insertCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
insertCommand.ExecuteNonQuery();
}
}
}
// Verificar se é a última unidade faturada
if (unidadesFaturadas == numeroUnidades)
{
//TODO: comparar faturamento global e atualizar faturamento final
//TODO: manter somente o faturamento correto
// Atualizar o resumo de faturamento
string updateQuery = "UPDATE TabelaResumoFaturamento SET ValorTotal = @ValorTotal WHERE IdUnidade = @IdUnidade";
using (OleDbCommand updateCommand = new OleDbCommand(updateQuery, connection))
{
updateCommand.Parameters.AddWithValue("@ValorTotal", remuneracao);
updateCommand.Parameters.AddWithValue("@IdUnidade", idUnidade);
updateCommand.ExecuteNonQuery();
}
}
}
}
}
}

107
IBIS COPACABANA POSTO 2.pdf Normal file
View File

@ -0,0 +1,107 @@
RELATÓRIO MENSAL DE ECONOMIA
Consumidor: HOTÉIS UP ASSET - VAREJISTA ICMS: 24,00%
Unidade: IBIS COPACABANA POSTO 2 PIS/COFINS: 6,70%
Mês de Consumo: 2405 Fator Tributo: 29,09%
Bandeira Cativo: Verde: R$/MWh 0 Desc. TUSD: 50,00%
CUSTO SIMULADO CATIVO
Descrição Grandezas Tarifas Subtotal Impostos Valor Final
Consumo Ponta 6,222 MWh 533,91 R$/MWh R$ 3.321,89 29,09% R$ 4.684,79
349,00 R$/MWh 29,09%
Consumo F. Ponta 64,553 MWh R$/MWh R$ 22.528,99 29,09% R$ 31.772,14
0,00 R$/MWh 29,09%
Bandeira Tarifária 70,775 MWh 2.892,41 R$/MWh R$ - 29,09% R$ -
R$/kW 29,09%
Encargos Ponta 6,222 MWh 254,76 R$/kW R$ 17.996,05 6,70% R$ 25.379,44
0,00 R$/kW 29,09%
Encargos F. Ponta 64,553 MWh 0,00 R$/kW R$ 16.445,52 29,09% R$ 23.192,75
R$/kVArh 29,09%
Demanda Ponta 0,000 kW 24,70 R$/kVAr R$ - 29,09% R$ -
49,40
Demanda Isenta Ponta 0,000 kW 364,41 R$ - R$ -
24,70
Demanda F. Ponta 155,520 kW R$ 3.841,34 R$ 5.417,36
Ultrapassagem Demanda F. Ponta 155,520 kW R$ 7.682,69 R$ 10.834,73
Energia Reativa 0,023 kVArh R$ 8,53 R$ 12,03
Demanda Reativa 0,000 kVAr R$ - R$ -
Iluminação Pública (COSIP) R$ 995,92
Reembolso FIC/DIC R$ -
Multas e Juros R$ -
Créditos R$ -
Liminar ICMS R$ -
Outros R$ -
Fatura Cativo Grandezas x Tarifas = Subtotal ÷ Impostos = R$ 102.289,16
CUSTO LIVRE
Descrição Grandezas Tarifas Subtotal Impostos Valor Final
Fatura Energia ACL* 70,775 MWh 211,28 R$/MWh R$ 14.953,34 DEVEC R$ 14.953,34
MWh 1.573,59 R$/MWh 29,09%
Encargos Ponta 6,222 MWh R$/MWh R$ 9.790,56 29,09% R$ 13.807,42
kW 254,76 R$/kW 29,09%
Encargos F. Ponta 64,553 kW 0,00 R$/kW R$ 16.445,52 6,70% R$ 23.192,75
kW 0,00 R$/kW 29,09%
Demanda Ponta 0,000 kW R$/kW R$ - 29,09% R$ -
kVArh 12,35 R$/kVArh 29,09%
Demanda Isenta Ponta 0,000 kVAr 49,40 R$/kVAr R$ - 29,09% R$ -
364,41
Demanda F. Ponta 155,520 MWh 24,70 R$ 1.920,67 R$ 2.708,68
Ultrapassagem Demanda F. Ponta 155,520 R$ 7.682,69 R$ 10.834,73
Energia Reativa 0,023 R$ 8,53 R$ 12,03
Demanda Reativa 0,000 R$ - R$ -
Iluminação Pública (COSIP) R$ 995,92
Reembolso FIC/DIC R$ -
Multas e Juros R$ -
Créditos R$ -
Créditos Consumidor Livre R$ -
Encargos de Conexão R$ -
DEVEC 70,775 211,28 R$/MWh R$ 14.953,30 24,00% R$ 4.722,09
Ajuste Desconto TUSD TUSD R$ -
ENERGIA
Subvenção Tarifária TOTAL R$ 727,17
Liminar ICMS R$ -
Conta Covid + Esc. Hidrica R$ 1.459,25
Outros R$ 450,78
Total R$ 58.910,82
* Preço Ponderado de Compra (Longo Prazo + Curto Prazo - se houver) R$ 14.953,34
R$ 73.864,16
Custo Cativo: R$ 102.289,16
73.864,16
Custo Livre: R$
28.425,00 28%
Economia: R$
1.705,50
Remuneração Smart: R$

View File

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Interop.Excel">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>9</VersionMinor>
<VersionMajor>1</VersionMajor>
<Guid>00020813-0000-0000-c000-000000000046</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.9" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
</ItemGroup>
</Project>

25
ImpressãoFaturamento.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImpressãoFaturamento", "ImpressãoFaturamento.csproj", "{9E5A08E3-018B-4124-AD11-9625D5AD4E80}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9E5A08E3-018B-4124-AD11-9625D5AD4E80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E5A08E3-018B-4124-AD11-9625D5AD4E80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E5A08E3-018B-4124-AD11-9625D5AD4E80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E5A08E3-018B-4124-AD11-9625D5AD4E80}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F3467393-9A41-4963-84ED-8BA5669EC89A}
EndGlobalSection
EndGlobal

76
Models/DataModel.cs Normal file
View File

@ -0,0 +1,76 @@
using System.Text.Json.Serialization;
namespace ImpressãoFaturamento.Models
{
public class DadosCadastrais
{
[JsonPropertyName("nome_cliente")]
public string NomeCliente { get; set; }
[JsonPropertyName("nome_unidade")]
public string NomeUnidade { get; set; }
[JsonPropertyName("mes_consumo")]
public string MesConsumo { get; set; }
[JsonPropertyName("bandeira_cativo")]
public string BandeiraCativo { get; set; }
[JsonPropertyName("icms")]
public string ICMS { get; set; }
[JsonPropertyName("pis_cofins")]
public string PIS_COFINS { get; set; }
[JsonPropertyName("fator_tributo")]
public string FatorTributo { get; set; }
[JsonPropertyName("desconto_tusd")]
public string DescontoTUSD { get; set; }
[JsonPropertyName("percentual_unidade")]
public decimal PercentualUnidade { get; set; }
[JsonPropertyName("custo_total_CCEE")]
public decimal CustoTotalCCEE { get; set; }
}
public class ItemFaturamento
{
[JsonPropertyName("nome")]
public string Nome { get; set; }
[JsonPropertyName("quantidade")]
public decimal? Quantidade { get; set; }
[JsonPropertyName("tarifa")]
public decimal? Tarifa { get; set; }
[JsonPropertyName("subtotal")]
public decimal? Subtotal { get; set; }
[JsonPropertyName("tipo_imposto")]
public string? TipoImposto { get; set; }
[JsonPropertyName("valor_final")]
public decimal ValorFinal { get; set; }
}
public class Faturamento
{
[JsonPropertyName("cativo")]
public List<ItemFaturamento> Cativo { get; set; }
[JsonPropertyName("livre")]
public List<ItemFaturamento> Livre { get; set; }
}
public class FaturamentoModel
{
[JsonPropertyName("dados_cadastrais")]
public DadosCadastrais DadosCadastrais { get; set; }
[JsonPropertyName("faturamento")]
public Faturamento Faturamento { get; set; }
}
}

25
Program.cs Normal file
View File

@ -0,0 +1,25 @@
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

View File

@ -0,0 +1,41 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:47908",
"sslPort": 44332
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5147",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7099;http://localhost:5147",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

9
appsettings.json Normal file
View File

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

BIN
template.xlsx Normal file

Binary file not shown.