Feat: Solicitudes Contaduría
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m57s
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m57s
- Siglas Días en Reporte Dist. General - Mostrar Publicaciones Deshabilitadas en Selectores de Reportes
This commit is contained in:
@@ -42,7 +42,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(IEnumerable<PublicacionDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||
public async Task<IActionResult> GetAllPublicaciones([FromQuery] string? nombre, [FromQuery] int? idEmpresa, [FromQuery] bool? soloHabilitadas = true)
|
||||
public async Task<IActionResult> GetAllPublicaciones([FromQuery] string? nombre, [FromQuery] int? idEmpresa, [FromQuery] bool? soloHabilitadas)
|
||||
{
|
||||
if (!TienePermiso(PermisoVer)) return Forbid();
|
||||
var publicaciones = await _publicacionService.ObtenerTodasAsync(nombre, idEmpresa, soloHabilitadas);
|
||||
@@ -54,7 +54,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
|
||||
[ProducesResponseType(typeof(IEnumerable<PublicacionDropdownDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
// No se verifica permiso DP001, solo requiere autenticación general ([Authorize] del controlador)
|
||||
public async Task<IActionResult> GetPublicacionesForDropdown([FromQuery] bool soloHabilitadas = true)
|
||||
public async Task<IActionResult> GetPublicacionesForDropdown([FromQuery] bool? soloHabilitadas)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace GestionIntegral.Api.Controllers.Reportes.PdfTemplates
|
||||
{
|
||||
table.ColumnsDefinition(columns =>
|
||||
{
|
||||
columns.ConstantColumn(40);
|
||||
columns.ConstantColumn(60);
|
||||
columns.RelativeColumn();
|
||||
columns.RelativeColumn();
|
||||
columns.RelativeColumn();
|
||||
@@ -89,9 +89,20 @@ namespace GestionIntegral.Api.Controllers.Reportes.PdfTemplates
|
||||
header.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(4).AlignRight().Text("Vendidos");
|
||||
});
|
||||
|
||||
var dayAbbreviations = new Dictionary<System.DayOfWeek, string>
|
||||
{
|
||||
{ System.DayOfWeek.Sunday, "Dom" },
|
||||
{ System.DayOfWeek.Monday, "Lun" },
|
||||
{ System.DayOfWeek.Tuesday, "Mar" },
|
||||
{ System.DayOfWeek.Wednesday, "Mie" },
|
||||
{ System.DayOfWeek.Thursday, "Jue" },
|
||||
{ System.DayOfWeek.Friday, "Vie" },
|
||||
{ System.DayOfWeek.Saturday, "Sab" }
|
||||
};
|
||||
|
||||
foreach (var item in Model.ResumenMensual.OrderBy(x => x.Fecha))
|
||||
{
|
||||
table.Cell().Border(1).Padding(3).Text(item.Fecha.Day.ToString());
|
||||
table.Cell().Border(1).Padding(3).Text($"{dayAbbreviations[item.Fecha.DayOfWeek]} {item.Fecha.Day}");
|
||||
table.Cell().Border(1).Padding(3).AlignRight().Text(item.CantidadTirada.ToString("N0"));
|
||||
table.Cell().Border(1).Padding(3).AlignRight().Text(item.SinCargo.ToString("N0"));
|
||||
table.Cell().Border(1).Padding(3).AlignRight().Text(item.Perdidos.ToString("N0"));
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace GestionIntegral.Api.Services.Distribucion
|
||||
Task<IEnumerable<PublicacionDiaSemanaDto>> ObtenerConfiguracionDiasAsync(int idPublicacion);
|
||||
Task<IEnumerable<PublicacionDto>> ObtenerPublicacionesPorDiaSemanaAsync(byte diaSemana); // Devolvemos el DTO completo
|
||||
Task<(bool Exito, string? Error)> ActualizarConfiguracionDiasAsync(int idPublicacion, UpdatePublicacionDiasSemanaRequestDto requestDto, int idUsuario);
|
||||
Task<IEnumerable<PublicacionDropdownDto>> ObtenerParaDropdownAsync(bool soloHabilitadas);
|
||||
Task<IEnumerable<PublicacionDropdownDto>> ObtenerParaDropdownAsync(bool? soloHabilitadas);
|
||||
Task<IEnumerable<PublicacionHistorialDto>> ObtenerHistorialAsync(
|
||||
DateTime? fechaDesde, DateTime? fechaHasta,
|
||||
int? idUsuarioModifico, string? tipoModificacion,
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace GestionIntegral.Api.Services.Distribucion
|
||||
return MapToDto(data);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<PublicacionDropdownDto>> ObtenerParaDropdownAsync(bool soloHabilitadas)
|
||||
public async Task<IEnumerable<PublicacionDropdownDto>> ObtenerParaDropdownAsync(bool? soloHabilitadas)
|
||||
{
|
||||
var data = await _publicacionRepository.GetAllAsync(null, null, soloHabilitadas);
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ const SeleccionaReporteListadoDistribucion: React.FC<SeleccionaReporteListadoDis
|
||||
try {
|
||||
const [distData, pubData] = await Promise.all([
|
||||
distribuidorService.getAllDistribuidoresDropdown(),
|
||||
publicacionService.getPublicacionesForDropdown(true) // Solo habilitadas
|
||||
publicacionService.getPublicacionesForDropdown()
|
||||
]);
|
||||
setDistribuidores(distData.map(d => d));
|
||||
setPublicaciones(pubData.map(p => p));
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
ToggleButtonGroup,
|
||||
ToggleButton
|
||||
} from '@mui/material';
|
||||
import type { PublicacionDto } from '../../models/dtos/Distribucion/PublicacionDto';
|
||||
import type { PublicacionDropdownDto } from '../../models/dtos/Distribucion/PublicacionDropdownDto';
|
||||
import publicacionService from '../../services/Distribucion/publicacionService';
|
||||
|
||||
interface SeleccionaReporteListadoDistribucionCanillasImporteProps {
|
||||
@@ -30,7 +30,7 @@ const SeleccionaReporteListadoDistribucionCanillasImporte: React.FC<SeleccionaRe
|
||||
const [fechaHasta, setFechaHasta] = useState<string>(new Date().toISOString().split('T')[0]);
|
||||
const [esAccionista, setEsAccionista] = useState<boolean>(false);
|
||||
|
||||
const [publicaciones, setPublicaciones] = useState<PublicacionDto[]>([]);
|
||||
const [publicaciones, setPublicaciones] = useState<PublicacionDropdownDto[]>([]);
|
||||
const [loadingDropdowns, setLoadingDropdowns] = useState(false);
|
||||
const [localErrors, setLocalErrors] = useState<{ [key: string]: string | null }>({});
|
||||
|
||||
@@ -38,7 +38,7 @@ const SeleccionaReporteListadoDistribucionCanillasImporte: React.FC<SeleccionaRe
|
||||
const fetchPublicaciones = async () => {
|
||||
setLoadingDropdowns(true);
|
||||
try {
|
||||
const data = await publicacionService.getAllPublicaciones(undefined, undefined);
|
||||
const data = await publicacionService.getPublicacionesForDropdown();
|
||||
setPublicaciones(data.map(p => p));
|
||||
} catch (error) {
|
||||
console.error("Error al cargar publicaciones:", error);
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
Box, Typography, Button, CircularProgress, Alert,
|
||||
FormControl, InputLabel, Select, MenuItem, TextField
|
||||
} from '@mui/material';
|
||||
import type { PublicacionDto } from '../../models/dtos/Distribucion/PublicacionDto';
|
||||
import type { PublicacionDropdownDto } from '../../models/dtos/Distribucion/PublicacionDropdownDto';
|
||||
import publicacionService from '../../services/Distribucion/publicacionService';
|
||||
|
||||
interface SeleccionaReporteListadoDistribucionGeneralProps {
|
||||
@@ -26,7 +26,7 @@ const SeleccionaReporteListadoDistribucionGeneral: React.FC<SeleccionaReporteLis
|
||||
// Para el selector de mes/año, usamos un input type="month"
|
||||
const [mesAnio, setMesAnio] = useState<string>(new Date().toISOString().substring(0, 7)); // Formato "YYYY-MM"
|
||||
|
||||
const [publicaciones, setPublicaciones] = useState<PublicacionDto[]>([]);
|
||||
const [publicaciones, setPublicaciones] = useState<PublicacionDropdownDto[]>([]);
|
||||
const [loadingDropdowns, setLoadingDropdowns] = useState(false);
|
||||
const [localErrors, setLocalErrors] = useState<{ [key: string]: string | null }>({});
|
||||
|
||||
@@ -35,7 +35,7 @@ const SeleccionaReporteListadoDistribucionGeneral: React.FC<SeleccionaReporteLis
|
||||
setLoadingDropdowns(true);
|
||||
try {
|
||||
// Asumiendo que quieres solo publicaciones habilitadas
|
||||
const data = await publicacionService.getAllPublicaciones(undefined, undefined, true);
|
||||
const data = await publicacionService.getPublicacionesForDropdown();
|
||||
setPublicaciones(data.map(p => p)); // El servicio devuelve tupla
|
||||
} catch (error) {
|
||||
console.error("Error al cargar publicaciones:", error);
|
||||
|
||||
@@ -41,7 +41,7 @@ const SeleccionaReporteTiradasPublicacionesSecciones: React.FC<SeleccionaReporte
|
||||
setLoadingDropdowns(true);
|
||||
try {
|
||||
const [pubData, plantaData] = await Promise.all([
|
||||
publicacionService.getPublicacionesForDropdown(true),
|
||||
publicacionService.getPublicacionesForDropdown(),
|
||||
plantaService.getPlantasForDropdown()
|
||||
]);
|
||||
setPublicaciones(pubData.map(p => p));
|
||||
|
||||
@@ -52,7 +52,7 @@ const getPublicacionesPorDiaSemana = async (diaSemana: number): Promise<Publicac
|
||||
return response.data;
|
||||
};
|
||||
|
||||
const getPublicacionesForDropdown = async (soloHabilitadas: boolean): Promise<PublicacionDropdownDto[]> => {
|
||||
const getPublicacionesForDropdown = async (soloHabilitadas?: boolean): Promise<PublicacionDropdownDto[]> => {
|
||||
const response = await apiClient.get<PublicacionDropdownDto[]>('/publicaciones/dropdown', { params: { soloHabilitadas } });
|
||||
return response.data;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user