agregar cambios importantes
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAdminFinanceRCA_002EViewModels_002EMantenimiento_005FDepartTrabajoViewModel_002Eg_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef78e682e56c19e39b0e3efe9d5c77fc453833_003FAdminFinanceRCA_002EViewModels_002EMantenimiento_005FDepartTrabajoViewModel_002Eg_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAdminFinanceRCA_002EViewModels_002EMantenimiento_005FDepartTrabajoViewModel_002Eg_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef78e682e56c19e39b0e3efe9d5c77fc453833_003FAdminFinanceRCA_002EViewModels_002EMantenimiento_005FDepartTrabajoViewModel_002Eg_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AApplication_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9a5cc8ddf36e8c8f422071f068cc8edb16e814991aa851aa131f3fa14425ed_003FApplication_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AApplication_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9a5cc8ddf36e8c8f422071f068cc8edb16e814991aa851aa131f3fa14425ed_003FApplication_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fbf9021a960b74107a7e141aa06bc9d8a0a53c929178c2fb95b1597be8af8dc_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fbf9021a960b74107a7e141aa06bc9d8a0a53c929178c2fb95b1597be8af8dc_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInteractive_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fb23cb847f33b753542a42b3f20ac9361fcabd14fd166ec471fe468e3597a9b_003FInteractive_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARelayCommand_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F20c0f49b8854743afaecc2f359655fdbfc6c5264f49e9eb333686e85a87bf_003FRelayCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARelayCommand_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F20c0f49b8854743afaecc2f359655fdbfc6c5264f49e9eb333686e85a87bf_003FRelayCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteException_002Ecs_002Fl_003AC_0021_003FUsers_003FBonifacia_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F154220569126135ad5d7314bf2bc694d3cf7c95840d481d44f0336f4f1f8e9c_003FSqliteException_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteException_002Ecs_002Fl_003AC_0021_003FUsers_003FBonifacia_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F154220569126135ad5d7314bf2bc694d3cf7c95840d481d44f0336f4f1f8e9c_003FSqliteException_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fb90d6b47d6330753e855af18818b97d4207f32c6ee4b793faffc029f069f4_003FString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fb90d6b47d6330753e855af18818b97d4207f32c6ee4b793faffc029f069f4_003FString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Avalonia.Media;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
|
||||||
namespace AdminFinanceRCA.Models;
|
namespace AdminFinanceRCA.Models;
|
||||||
@@ -63,6 +64,7 @@ public class Movimiento : ObservableObject
|
|||||||
public DateTime FechaRegistro { get; set; }
|
public DateTime FechaRegistro { get; set; }
|
||||||
public int Concepto { get; set; }
|
public int Concepto { get; set; }
|
||||||
public string Descripcion { get; set; } = string.Empty;
|
public string Descripcion { get; set; } = string.Empty;
|
||||||
|
public string Nota { get; set; } = string.Empty;
|
||||||
|
|
||||||
// Propiedades de navegación para las relaciones (opcionales pero útiles)
|
// Propiedades de navegación para las relaciones (opcionales pero útiles)
|
||||||
public TipoMovimiento TipoMovimientoNav { get; set; } = new TipoMovimiento();
|
public TipoMovimiento TipoMovimientoNav { get; set; } = new TipoMovimiento();
|
||||||
@@ -72,7 +74,7 @@ public class Movimiento : ObservableObject
|
|||||||
public Movimiento() { }
|
public Movimiento() { }
|
||||||
|
|
||||||
public Movimiento(decimal monto, int tipoMov, int deptoTrabajo,
|
public Movimiento(decimal monto, int tipoMov, int deptoTrabajo,
|
||||||
DateTime fechaMovimiento, int concepto, string descripcion = "")
|
DateTime fechaMovimiento, int concepto, string descripcion = "", string nota ="")
|
||||||
{
|
{
|
||||||
Monto = monto;
|
Monto = monto;
|
||||||
TipoMov = tipoMov;
|
TipoMov = tipoMov;
|
||||||
@@ -81,6 +83,20 @@ public class Movimiento : ObservableObject
|
|||||||
FechaRegistro = DateTime.Now;
|
FechaRegistro = DateTime.Now;
|
||||||
Concepto = concepto;
|
Concepto = concepto;
|
||||||
Descripcion = descripcion;
|
Descripcion = descripcion;
|
||||||
|
Nota = nota;
|
||||||
|
}
|
||||||
|
public Movimiento(int id, decimal monto, int tipoMov, int deptoTrabajo,
|
||||||
|
DateTime fechaMovimiento, int concepto, string descripcion = "", string nota = "")
|
||||||
|
{
|
||||||
|
ID = id;
|
||||||
|
Monto = monto;
|
||||||
|
TipoMov = tipoMov;
|
||||||
|
DeptoTrabajo = deptoTrabajo;
|
||||||
|
FechaMovimiento = fechaMovimiento;
|
||||||
|
FechaRegistro = DateTime.Now;
|
||||||
|
Concepto = concepto;
|
||||||
|
Descripcion = descripcion;
|
||||||
|
Nota = nota;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,4 +120,7 @@ public class MovimientoCompleto : ObservableObject
|
|||||||
// Datos de Concepto
|
// Datos de Concepto
|
||||||
public int ConceptoID { get; set; }
|
public int ConceptoID { get; set; }
|
||||||
public string ConceptoNombre { get; set; } = string.Empty;
|
public string ConceptoNombre { get; set; } = string.Empty;
|
||||||
|
public string Nota { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public IBrush ForegroundColor => TipoMovNombre == "Egreso" ? Brushes.Red : Brushes.Black;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,8 +83,8 @@ public class FinanzasRepository
|
|||||||
using (var connection = GetConnection())
|
using (var connection = GetConnection())
|
||||||
{
|
{
|
||||||
var sql = @"INSERT INTO Movimientos
|
var sql = @"INSERT INTO Movimientos
|
||||||
(Monto, TipoMov, DeptoTrabajo, FechaMovimiento, FechaRegistro, Concepto, Descripcion)
|
(Monto, TipoMov, DeptoTrabajo, FechaMovimiento, FechaRegistro, Concepto, Descripcion, Nota)
|
||||||
VALUES (@Monto, @TipoMov, @DeptoTrabajo, @FechaMovimiento, @FechaRegistro, @Concepto, @Descripcion);
|
VALUES (@Monto, @TipoMov, @DeptoTrabajo, @FechaMovimiento, @FechaRegistro, @Concepto, @Descripcion, @Nota);
|
||||||
SELECT last_insert_rowid();";
|
SELECT last_insert_rowid();";
|
||||||
|
|
||||||
var id = await connection.ExecuteScalarAsync<int>(sql, movimiento);
|
var id = await connection.ExecuteScalarAsync<int>(sql, movimiento);
|
||||||
@@ -110,7 +110,8 @@ public class FinanzasRepository
|
|||||||
m.ID, m.Monto, m.FechaMovimiento, m.FechaRegistro, m.Descripcion,
|
m.ID, m.Monto, m.FechaMovimiento, m.FechaRegistro, m.Descripcion,
|
||||||
tm.ID as TipoMovID, tm.Nombre as TipoMovNombre,
|
tm.ID as TipoMovID, tm.Nombre as TipoMovNombre,
|
||||||
dt.Id as DeptoTrabajoID, dt.Nombre as DeptoTrabajoNombre,
|
dt.Id as DeptoTrabajoID, dt.Nombre as DeptoTrabajoNombre,
|
||||||
c.ID as ConceptoID, c.Nombre as ConceptoNombre
|
c.ID as ConceptoID, c.Nombre as ConceptoNombre,
|
||||||
|
m.Nota as Nota
|
||||||
FROM Movimientos m
|
FROM Movimientos m
|
||||||
INNER JOIN TipoMovimiento tm ON m.TipoMov = tm.ID
|
INNER JOIN TipoMovimiento tm ON m.TipoMov = tm.ID
|
||||||
INNER JOIN DepartTrabajo dt ON m.DeptoTrabajo = dt.Id
|
INNER JOIN DepartTrabajo dt ON m.DeptoTrabajo = dt.Id
|
||||||
@@ -140,7 +141,8 @@ public class FinanzasRepository
|
|||||||
DeptoTrabajo = @DeptoTrabajo,
|
DeptoTrabajo = @DeptoTrabajo,
|
||||||
FechaMovimiento = @FechaMovimiento,
|
FechaMovimiento = @FechaMovimiento,
|
||||||
Concepto = @Concepto,
|
Concepto = @Concepto,
|
||||||
Descripcion = @Descripcion
|
Descripcion = @Descripcion,
|
||||||
|
Nota = @Nota
|
||||||
WHERE ID = @ID";
|
WHERE ID = @ID";
|
||||||
|
|
||||||
var affectedRows = await connection.ExecuteAsync(sql, movimiento);
|
var affectedRows = await connection.ExecuteAsync(sql, movimiento);
|
||||||
@@ -193,9 +195,27 @@ public class FinanzasRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Concepto?> GetConceptoByIdAsync(int id)
|
||||||
|
{
|
||||||
|
using (var connection = GetConnection())
|
||||||
|
{
|
||||||
|
var sql = "SELECT * FROM Concepto WHERE ID = @Id";
|
||||||
|
return await connection.QueryFirstOrDefaultAsync<Concepto>(sql, new { Id = id });
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Operaciones para DepartTrabajo
|
#region Operaciones para DepartTrabajo
|
||||||
|
|
||||||
|
public async Task<DepartTrabajo?> GetDepartamentoTrabajoByIdAsync(int id)
|
||||||
|
{
|
||||||
|
using (var connection = GetConnection())
|
||||||
|
{
|
||||||
|
var sql = "SELECT * FROM DepartTrabajo WHERE ID = @Id";
|
||||||
|
return await connection.QueryFirstOrDefaultAsync<DepartTrabajo>(sql, new { Id = id });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<DepartTrabajo>> GetAllDepartamentosAsync()
|
public async Task<IEnumerable<DepartTrabajo>> GetAllDepartamentosAsync()
|
||||||
{
|
{
|
||||||
using (var connection = GetConnection())
|
using (var connection = GetConnection())
|
||||||
@@ -238,16 +258,6 @@ public class FinanzasRepository
|
|||||||
return await connection.QueryAsync<TipoMovimiento>(sql);
|
return await connection.QueryAsync<TipoMovimiento>(sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> CreateTipoMovimientoAsync(TipoMovimiento tipoMovimiento)
|
|
||||||
{
|
|
||||||
using (var connection = GetConnection())
|
|
||||||
{
|
|
||||||
var sql = "INSERT INTO TipoMovimiento (Nombre) VALUES (@Nombre); SELECT last_insert_rowid();";
|
|
||||||
return await connection.ExecuteScalarAsync<int>(sql, tipoMovimiento);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> UpdateTipoMovimientoAsync(TipoMovimiento tipomov)
|
public async Task<bool> UpdateTipoMovimientoAsync(TipoMovimiento tipomov)
|
||||||
{
|
{
|
||||||
using (var connection = GetConnection())
|
using (var connection = GetConnection())
|
||||||
@@ -261,6 +271,23 @@ public class FinanzasRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<int> CreateTipoMovimientoAsync(TipoMovimiento tipoMovimiento)
|
||||||
|
{
|
||||||
|
using (var connection = GetConnection())
|
||||||
|
{
|
||||||
|
var sql = "INSERT INTO TipoMovimiento (Nombre) VALUES (@Nombre); SELECT last_insert_rowid();";
|
||||||
|
return await connection.ExecuteScalarAsync<int>(sql, tipoMovimiento);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<TipoMovimiento?> GetTipoMovimientoByIdAsync(int id)
|
||||||
|
{
|
||||||
|
using (var connection = GetConnection())
|
||||||
|
{
|
||||||
|
var sql = "SELECT * FROM TipoMovimiento WHERE ID = @Id";
|
||||||
|
return await connection.QueryFirstOrDefaultAsync<TipoMovimiento>(sql, new { Id = id });
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Métodos de exportación
|
#region Métodos de exportación
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
|||||||
using AdminFinanceRCA.Models;
|
using AdminFinanceRCA.Models;
|
||||||
using AdminFinanceRCA.Views;
|
using AdminFinanceRCA.Views;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Media;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
|
|
||||||
@@ -14,20 +15,18 @@ namespace AdminFinanceRCA.ViewModels;
|
|||||||
public partial class MainWindowViewModel : ViewModelBase
|
public partial class MainWindowViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
private readonly FinanzasRepository _repository;
|
private readonly FinanzasRepository _repository;
|
||||||
[ObservableProperty]
|
[ObservableProperty] private ObservableCollection<MovimientoCompleto> _movimientos;
|
||||||
private ObservableCollection<MovimientoCompleto> _movimientos;
|
[ObservableProperty] private ObservableCollection<Concepto> _conceptos;
|
||||||
[ObservableProperty]
|
[ObservableProperty] private ObservableCollection<DepartTrabajo> _departamentos;
|
||||||
private ObservableCollection<Concepto> _conceptos;
|
[ObservableProperty] private ObservableCollection<TipoMovimiento> _tiposMovimiento;
|
||||||
[ObservableProperty]
|
[ObservableProperty] private MovimientoCompleto _movimientoSeleccionado;
|
||||||
private ObservableCollection<DepartTrabajo> _departamentos;
|
|
||||||
[ObservableProperty]
|
|
||||||
private ObservableCollection<TipoMovimiento> _tiposMovimiento;
|
|
||||||
|
|
||||||
public MainWindowViewModel()
|
public MainWindowViewModel()
|
||||||
{
|
{
|
||||||
_repository = new FinanzasRepository();
|
_repository = new FinanzasRepository();
|
||||||
CargarDatos();
|
CargarDatos();
|
||||||
}
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
public void AgregarDepartamento()
|
public void AgregarDepartamento()
|
||||||
{
|
{
|
||||||
@@ -61,6 +60,21 @@ public partial class MainWindowViewModel : ViewModelBase
|
|||||||
conceptoWindow.ShowDialog(GetCurrentWindow<MainWindow>());
|
conceptoWindow.ShowDialog(GetCurrentWindow<MainWindow>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RelayCommand]
|
||||||
|
public async Task UpdateMovimiento(MovimientoCompleto _mvMovimientoCompleto)
|
||||||
|
{
|
||||||
|
MovimientoWindowViewModel mwvm = new MovimientoWindowViewModel();
|
||||||
|
mwvm.ReloadEvent+= MwvmOnReloadEvent;
|
||||||
|
MovimientoWindow mw = new MovimientoWindow()
|
||||||
|
{
|
||||||
|
Width = 600,
|
||||||
|
Height = 500,
|
||||||
|
};
|
||||||
|
mw.DataContext = mwvm;
|
||||||
|
mw.ShowDialog(GetCurrentWindow<MainWindow>());
|
||||||
|
mw.Loaded += async (sender, args) => { await mwvm.ActualizarMovimientoAsync(_mvMovimientoCompleto); };
|
||||||
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
public void AgregarMovimiento()
|
public void AgregarMovimiento()
|
||||||
{
|
{
|
||||||
@@ -69,13 +83,12 @@ public partial class MainWindowViewModel : ViewModelBase
|
|||||||
MovimientoWindow mw = new MovimientoWindow()
|
MovimientoWindow mw = new MovimientoWindow()
|
||||||
{
|
{
|
||||||
Width = 600,
|
Width = 600,
|
||||||
Height = 450,
|
Height = 500,
|
||||||
};
|
};
|
||||||
mw.DataContext = mwvm;
|
mw.DataContext = mwvm;
|
||||||
mw.ShowDialog(GetCurrentWindow<MainWindow>());
|
mw.ShowDialog(GetCurrentWindow<MainWindow>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async void MwvmOnReloadEvent(object? sender, EventArgs e)
|
private async void MwvmOnReloadEvent(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var movimientosTask = _repository.GetAllMovimientosCompletosAsync();
|
var movimientosTask = _repository.GetAllMovimientosCompletosAsync();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using AdminFinanceRCA.Models;
|
using AdminFinanceRCA.Models;
|
||||||
using AdminFinanceRCA.Views;
|
using AdminFinanceRCA.Views;
|
||||||
@@ -24,6 +25,9 @@ public partial class MovimientoWindowViewModel : ViewModelBase
|
|||||||
[ObservableProperty] private TipoMovimiento _tipoMovimientoSelecionado;
|
[ObservableProperty] private TipoMovimiento _tipoMovimientoSelecionado;
|
||||||
[ObservableProperty] private DepartTrabajo _departaDepartTrabajoSeleccionado;
|
[ObservableProperty] private DepartTrabajo _departaDepartTrabajoSeleccionado;
|
||||||
[ObservableProperty] private Concepto _conceptoSeleccionado;
|
[ObservableProperty] private Concepto _conceptoSeleccionado;
|
||||||
|
[ObservableProperty] private string _nota;
|
||||||
|
private int IdMovimiento { get; set; }
|
||||||
|
private bool modificando = false;
|
||||||
|
|
||||||
public MovimientoWindowViewModel()
|
public MovimientoWindowViewModel()
|
||||||
{
|
{
|
||||||
@@ -45,6 +49,26 @@ public partial class MovimientoWindowViewModel : ViewModelBase
|
|||||||
ConceptoSeleccionado = Conceptos[0];
|
ConceptoSeleccionado = Conceptos[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task ActualizarMovimientoAsync(MovimientoCompleto mc)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IdMovimiento = mc.ID;
|
||||||
|
FechaMov = mc.FechaMovimiento;
|
||||||
|
MontoDecimal = mc.Monto;
|
||||||
|
TipoMovimientoSelecionado = TipoMovimientos.Where(e => e.ID == mc.TipoMovID).FirstOrDefault(); //await _finanzasRepository.GetTipoMovimientoByIdAsync(mc.TipoMovID) ?? new TipoMovimiento();
|
||||||
|
ConceptoSeleccionado = Conceptos.Where(e => e.ID == mc.ConceptoID).FirstOrDefault(); // await _finanzasRepository.GetConceptoByIdAsync(mc.ConceptoID) ?? new Concepto();
|
||||||
|
DepartaDepartTrabajoSeleccionado = DepartTrabajos.Where(e => e.Id == mc.DeptoTrabajoID).FirstOrDefault(); //await _finanzasRepository.GetDepartamentoTrabajoByIdAsync(mc.DeptoTrabajoID) ?? new DepartTrabajo();
|
||||||
|
Descripcion = mc.Descripcion;
|
||||||
|
Nota = mc.Nota;
|
||||||
|
modificando = true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine(e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
public async void GuardarDatosAsync()
|
public async void GuardarDatosAsync()
|
||||||
{
|
{
|
||||||
@@ -55,8 +79,11 @@ public partial class MovimientoWindowViewModel : ViewModelBase
|
|||||||
{
|
{
|
||||||
return; // Detener ejecución si hay campos inválidos
|
return; // Detener ejecución si hay campos inválidos
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!modificando)
|
||||||
|
{
|
||||||
Movimiento mv = new Movimiento(MontoDecimal, TipoMovimientoSelecionado.ID, DepartaDepartTrabajoSeleccionado.Id,
|
Movimiento mv = new Movimiento(MontoDecimal, TipoMovimientoSelecionado.ID, DepartaDepartTrabajoSeleccionado.Id,
|
||||||
DateTime.Parse(FechaMov.ToString("yyyy-MM-dd")), ConceptoSeleccionado.ID, Descripcion);
|
DateTime.Parse(FechaMov.ToString("yyyy-MM-dd")), ConceptoSeleccionado.ID, Descripcion, Nota);
|
||||||
await _finanzasRepository.CreateMovimientoAsync(mv);
|
await _finanzasRepository.CreateMovimientoAsync(mv);
|
||||||
var dt = MessageBoxManager.GetMessageBoxStandard("", "Se guardo con exito", ButtonEnum.Ok);
|
var dt = MessageBoxManager.GetMessageBoxStandard("", "Se guardo con exito", ButtonEnum.Ok);
|
||||||
await dt.ShowAsPopupAsync(GetCurrentWindow<MovimientoWindow>());
|
await dt.ShowAsPopupAsync(GetCurrentWindow<MovimientoWindow>());
|
||||||
@@ -64,6 +91,18 @@ public partial class MovimientoWindowViewModel : ViewModelBase
|
|||||||
MontoDecimal = 0;
|
MontoDecimal = 0;
|
||||||
Descripcion = "";
|
Descripcion = "";
|
||||||
OnReloadEvent();
|
OnReloadEvent();
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
Movimiento mv = new Movimiento(IdMovimiento, MontoDecimal, TipoMovimientoSelecionado.ID, DepartaDepartTrabajoSeleccionado.Id,
|
||||||
|
DateTime.Parse(FechaMov.ToString("yyyy-MM-dd")), ConceptoSeleccionado.ID, Descripcion, Nota);
|
||||||
|
await _finanzasRepository.UpdateMovimientoAsync(mv);
|
||||||
|
var dt = MessageBoxManager.GetMessageBoxStandard("", "Se actualizo con exito", ButtonEnum.Ok);
|
||||||
|
await dt.ShowAsPopupAsync(GetCurrentWindow<MovimientoWindow>());
|
||||||
|
|
||||||
|
MontoDecimal = 0;
|
||||||
|
Descripcion = "";
|
||||||
|
OnReloadEvent();
|
||||||
|
}
|
||||||
}catch(Exception ex){
|
}catch(Exception ex){
|
||||||
var errorMsg = MessageBoxManager.GetMessageBoxStandard("Error", $"Ocurrió un error: {ex.Message}", ButtonEnum.Ok);
|
var errorMsg = MessageBoxManager.GetMessageBoxStandard("Error", $"Ocurrió un error: {ex.Message}", ButtonEnum.Ok);
|
||||||
await errorMsg.ShowAsPopupAsync(GetCurrentWindow<MovimientoWindow>());
|
await errorMsg.ShowAsPopupAsync(GetCurrentWindow<MovimientoWindow>());
|
||||||
|
|||||||
@@ -16,6 +16,13 @@
|
|||||||
<vm:MainWindowViewModel/>
|
<vm:MainWindowViewModel/>
|
||||||
</Design.DataContext>
|
</Design.DataContext>
|
||||||
|
|
||||||
|
<Window.Styles>
|
||||||
|
<Style Selector="DataGridColumnHeader">
|
||||||
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||||
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</Window.Styles>
|
||||||
|
|
||||||
<DockPanel LastChildFill="True" Background="#F5F5F5">
|
<DockPanel LastChildFill="True" Background="#F5F5F5">
|
||||||
|
|
||||||
<!-- Menú superior estilo moderno -->
|
<!-- Menú superior estilo moderno -->
|
||||||
@@ -49,13 +56,14 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- DataGrid con estilo moderno -->
|
<!-- DataGrid con estilo moderno -->
|
||||||
<DataGrid Margin="15" HorizontalAlignment="Stretch" BorderThickness="1" CornerRadius="3" ItemsSource="{Binding Movimientos}">
|
<DataGrid Margin="15" HorizontalAlignment="Stretch" BorderThickness="1" CornerRadius="3" ItemsSource="{Binding Movimientos}" DoubleTapped="InputElement_OnDoubleTapped" >
|
||||||
|
<!-- Estilo para los encabezados -->
|
||||||
|
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTemplateColumn Header="ID" Width="80">
|
<DataGridTemplateColumn Header="ID" Width="80" IsVisible="False">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding ID}" Foreground="Black" />
|
<TextBlock Text="{Binding ID}" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
@@ -63,15 +71,15 @@
|
|||||||
<DataGridTemplateColumn Header="Fecha Mov" Width="120">
|
<DataGridTemplateColumn Header="Fecha Mov" Width="120">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding FechaMovimiento}" Foreground="Black" />
|
<TextBlock Text="{Binding FechaMovimiento, StringFormat='{}{0:dd/MM/yyyy}'}" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header="Grupo de Trabajo" Width="150">
|
<DataGridTemplateColumn Header="Grupo de Trabajo" Width="250">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding DeptoTrabajoNombre}" Foreground="Black" />
|
<TextBlock Text="{Binding DeptoTrabajoNombre}" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
@@ -79,7 +87,7 @@
|
|||||||
<DataGridTemplateColumn Header="Monto" Width="120">
|
<DataGridTemplateColumn Header="Monto" Width="120">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Monto}" Foreground="Black" />
|
<TextBlock Text="{Binding Monto, StringFormat='{}{0:C}'}" Margin="0 0 25 0" TextAlignment="Right" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
@@ -87,23 +95,31 @@
|
|||||||
<DataGridTemplateColumn Header="Tipo Movimiento" Width="150">
|
<DataGridTemplateColumn Header="Tipo Movimiento" Width="150">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding TipoMovNombre}" Foreground="Black" />
|
<TextBlock Text="{Binding TipoMovNombre}" Foreground="{Binding ForegroundColor}" Margin="20 0 0 0" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header="Concepto" Width="150">
|
<DataGridTemplateColumn Header="Concepto" Width="225">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding ConceptoNombre}" Foreground="Black" />
|
<TextBlock Text="{Binding ConceptoNombre}" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header="Descripcion" Width="250">
|
<DataGridTemplateColumn Header="Descripcion" Width="300">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding Descripcion}" Foreground="Black" />
|
<TextBlock Text="{Binding Descripcion}" Foreground="{Binding ForegroundColor}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
|
<DataGridTemplateColumn Header="Notas" Width="300">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Nota}" Foreground="{Binding ForegroundColor}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
using AdminFinanceRCA.Models;
|
||||||
|
using AdminFinanceRCA.ViewModels;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Input;
|
||||||
|
|
||||||
namespace AdminFinanceRCA.Views;
|
namespace AdminFinanceRCA.Views;
|
||||||
|
|
||||||
@@ -8,4 +11,16 @@ public partial class MainWindow : Window
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InputElement_OnDoubleTapped(object? sender, TappedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DataContext is MainWindowViewModel vm)
|
||||||
|
{
|
||||||
|
if (((DataGrid)sender).SelectedItem is MovimientoCompleto)
|
||||||
|
{
|
||||||
|
var row = ((DataGrid)sender).SelectedItem as MovimientoCompleto;
|
||||||
|
vm.UpdateMovimientoCommand.Execute(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="500" Width="600" Height="500"
|
mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="500" Width="600" Height="520"
|
||||||
CanResize="False"
|
CanResize="False"
|
||||||
x:Class="AdminFinanceRCA.Views.MovimientoWindow"
|
x:Class="AdminFinanceRCA.Views.MovimientoWindow"
|
||||||
xmlns:vm="using:AdminFinanceRCA.ViewModels"
|
xmlns:vm="using:AdminFinanceRCA.ViewModels"
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="150"/>
|
<ColumnDefinition Width="150"/>
|
||||||
@@ -69,20 +70,25 @@
|
|||||||
</ComboBox.ItemTemplate>
|
</ComboBox.ItemTemplate>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
|
|
||||||
<!-- Monto -->
|
|
||||||
<TextBlock Grid.Row="4" Grid.Column="0" Text="Monto:" VerticalAlignment="Center" Margin="0 5" FontSize="14"/>
|
|
||||||
<TextBox Grid.Row="4" Grid.Column="1" Margin="0 5" Width="70" HorizontalAlignment="Left" Height="35" Watermark="Ingrese el monto" Text="{Binding MontoDecimal, StringFormat='{}{0:0.00}'}" FontSize="14"/>
|
|
||||||
|
|
||||||
<!-- Fecha de Movimiento -->
|
<!-- Fecha de Movimiento -->
|
||||||
<TextBlock Grid.Row="5" Grid.Column="0" Text="Fecha Movimiento:" VerticalAlignment="Center" Margin="0 5"/>
|
<TextBlock Grid.Row="4" Grid.Column="0" Text="Fecha Movimiento:" VerticalAlignment="Center" Margin="0 5"/>
|
||||||
<DatePicker Grid.Row="5" Grid.Column="1" Margin="0 5" Height="35" SelectedDate="{Binding FechaMov}"/>
|
<DatePicker Grid.Row="4" Grid.Column="1" Margin="0 5" Height="35" SelectedDate="{Binding FechaMov}"/>
|
||||||
|
|
||||||
|
<!-- Monto -->
|
||||||
|
<TextBlock Grid.Row="5" Grid.Column="0" Text="Monto:" VerticalAlignment="Center" Margin="0 5" FontSize="14"/>
|
||||||
|
<TextBox Grid.Row="5" Grid.Column="1" Margin="0 5" Width="70" HorizontalAlignment="Left" Height="35" Watermark="Ingrese el monto" Text="{Binding MontoDecimal, StringFormat='{}{0:0.00}'}" FontSize="14"/>
|
||||||
|
|
||||||
<!-- Descripción -->
|
<!-- Descripción -->
|
||||||
<TextBlock Grid.Row="6" Grid.Column="0" Text="Descripción:" VerticalAlignment="Top" Margin="0 10 0 5"/>
|
<TextBlock Grid.Row="6" Grid.Column="0" Text="Descripción:" VerticalAlignment="Top" Margin="0 10 0 5"/>
|
||||||
<TextBox Grid.Row="6" Grid.Column="1" Margin="0 5" Height="80" AcceptsReturn="True" TextWrapping="Wrap" Watermark="Ingrese una descripción opcional" Text="{Binding Descripcion}"/>
|
<TextBox Grid.Row="6" Grid.Column="1" Margin="0 5" Height="40" AcceptsReturn="True" TextWrapping="Wrap" Watermark="Ingrese una descripción opcional" Text="{Binding Descripcion}"/>
|
||||||
|
|
||||||
|
<!-- Nota -->
|
||||||
|
<TextBlock Grid.Row="7" Grid.Column="0" Text="Nota:" VerticalAlignment="Top" Margin="0 10 0 5"/>
|
||||||
|
<TextBox Grid.Row="7" Grid.Column="1" Margin="0 5" Height="80" AcceptsReturn="True" TextWrapping="Wrap" Watermark="Ingrese una nota opcional" Text="{Binding Nota}"/>
|
||||||
|
|
||||||
|
|
||||||
<!-- Botones -->
|
<!-- Botones -->
|
||||||
<StackPanel Grid.Row="7" Grid.ColumnSpan="2" Orientation="Horizontal"
|
<StackPanel Grid.Row="8" Grid.ColumnSpan="2" Orientation="Horizontal"
|
||||||
HorizontalAlignment="Right" Margin="0 20 0 0">
|
HorizontalAlignment="Right" Margin="0 20 0 0">
|
||||||
<Button Content="Cancelar" Width="100" Height="35" Margin="0 0 10 0"
|
<Button Content="Cancelar" Width="100" Height="35" Margin="0 0 10 0"
|
||||||
Background="#E74C3C" Foreground="White" Command="{Binding SalirCommand}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
Background="#E74C3C" Foreground="White" Command="{Binding SalirCommand}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user