-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReporte.cs
154 lines (146 loc) · 6.39 KB
/
Reporte.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using Inventario.ViewModels.EntradasSalidas;
using Inventario.Views;
using Kit.Enums;
using Kit.WPF.Controls.RangoFechas;
using Kit.WPF.Reportes;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Kit.Controls.DateRange;
using Kit.Sql.Helpers;
using Kit.WPF.Dialogs.ICustomMessageBox;
namespace Inventario
{
public static class Reporte
{
private static string RutaMrt;
private static string RutaLogo;
static Reporte()
{
Reporte.RutaMrt = Kit.Tools.Instance.LibraryPath + @"\mrt";
Reporte.RutaLogo = Reporte.RutaMrt + @"\inventario.png";
}
private static Rango Fechas()
{
FechasReporte reporte = new FechasReporte();
reporte.ShowDialog();
return reporte.Rango;
}
public static void Existencia()
{
DataTable consulta = Conexion.Sqlite.DataTable(
$@"SELECT
PRODUCTOS.CODIGO,
PRODUCTOS.NOMBRE,
PRODUCTOS.CLASIFICACION,
printf('%.2f',PRODUCTOS.EXISTENCIA) AS EXISTENCIA,
IFNULL(strftime('%d/%m/%Y',(SELECT MAX(JULIANDAY(M.FECHA)) FROM MOVIMIENTOS M WHERE PRODUCTOS.ID = M.ID_PRODUCTO )),'S/M') as 'FECHA'
FROM PRODUCTOS WHERE PRODUCTOS.OCULTO=0", "CONSULTA");
if (consulta.Rows.Count <= 0)
{
SinMovimientos();
return;
}
Reporteador reporteador = new Reporteador(Reporte.RutaLogo, Reporte.RutaMrt);
//función para abrir el diseñador del reporte. - NOSOTROS
//reporteador.NuevoReporte("ReporteExistencia.mrt", true
// , new Variable(consulta)
// , new Variable("FECHA_INICIAL", rango.Inicio)
// , new Variable("FECHA_FINAL", rango.Fin));
////función para abrir el diseñador del reporte - COMPAÑEROS
reporteador.MostrarReporte("ReporteExistencia.mrt", new Variable(consulta));
}
public static void Movimiento(DataTable movimientos, string Observaciones, string Concepto)
{
Reporteador reporteador = new Reporteador(Reporte.RutaLogo, Reporte.RutaMrt);
reporteador.MostrarReporte("ReporteMovimiento.mrt"
, new Variable(movimientos)
, new Variable("Observaciones", Observaciones ?? string.Empty)
, new Variable("Concepto", Concepto)
, new Variable("Usuario", App.Usuario.Nombre)
, new Variable("FECHA", DateTime.Now));
}
public static void Movimientos()
{
Rango rango = Fechas();
if (rango.Cancelado) { return; }
//MOVIMIENTOS.NUMERO, no se si es numero
DataTable consulta = Conexion.Sqlite.DataTable(
$@"SELECT
MOVIMIENTOS.ID,
PRODUCTOS.CODIGO,
PRODUCTOS.NOMBRE,
PRODUCTOS.CLASIFICACION,
MOVIMIENTOS.TIPO,
printf('%.2f',MOVIMIENTOS.CANTIDAD) AS CANTIDAD,
printf('%.2f',MOVIMIENTOS.EXISTENCIA_ACTUAL) AS EXISTENCIA_ACTUAL,
printf('%.2f',MOVIMIENTOS.EXISTENCIA_POSTERIOR) AS EXISTENCIA_POSTERIOR
FROM PRODUCTOS
JOIN MOVIMIENTOS ON PRODUCTOS.ID = MOVIMIENTOS.ID_PRODUCTO WHERE PRODUCTOS.OCULTO=0
{(rango.TodasLasFechas ?
"" : @" AND JulianDay(MOVIMIENTOS.FECHA) >= JulianDay('" +
SQLHelper.FormatTime((DateTime)rango.Inicio) +
"') AND JulianDay(MOVIMIENTOS.FECHA) <=JulianDay('" +
SQLHelper.FormatTime((DateTime)rango.Fin) + "')")}", "CONSULTA");
if (consulta.Rows.Count <= 0)
{
SinMovimientos();
return;
}
Reporteador reporteador = new Reporteador(Reporte.RutaLogo, Reporte.RutaMrt);
reporteador.MostrarReporte("ReporteMovimientos.mrt"
, new Variable(consulta)
, new Variable("FECHA_INICIAL", (DateTime)rango.Inicio)
, new Variable("FECHA_FINAL", (DateTime)rango.Fin));
}
private static void SinMovimientos()
{
CustomMessageBox.Show("No se encontrarón movimientos en el rango de fechas seleccionado", "Alerta", CustomMessageBoxButton.OK, CustomMessageBoxImage.Warning);
}
public static void EntradasSalidas(Tipo Tipo)
{
Rango rango = Fechas();
if (rango.Cancelado) { return; }
DataTable consulta = Conexion.Sqlite.DataTable(
$@"SELECT
MOVIMIENTOS.ID,
PRODUCTOS.CODIGO,
PRODUCTOS.NOMBRE,
PRODUCTOS.CLASIFICACION,
MOVIMIENTOS.ID_USUARIO,
printf('%.2f',MOVIMIENTOS.CANTIDAD) AS CANTIDAD,
printf('%.2f',MOVIMIENTOS.EXISTENCIA_ACTUAL) AS EXISTENCIA_ANTERIOR,
printf('%.2f',MOVIMIENTOS.EXISTENCIA_POSTERIOR) AS EXISTENCIA_POSTERIOR,
USUARIOS.NOMBRE AS USUARIO
FROM PRODUCTOS
JOIN MOVIMIENTOS ON PRODUCTOS.ID = MOVIMIENTOS.ID_PRODUCTO
JOIN USUARIOS ON USUARIOS.ID=MOVIMIENTOS.ID_USUARIO WHERE PRODUCTOS.OCULTO=0 {(rango.TodasLasFechas ? "" : $@" AND TIPO='{(Tipo == Tipo.Entrada ? 'E' : 'S')}' AND JULIANDAY(MOVIMIENTOS.FECHA) >=JULIANDAY('" +
SQLHelper.FormatTime((DateTime)rango.Inicio) +
"') AND JULIANDAY(MOVIMIENTOS.FECHA) <=JULIANDAY('" +
SQLHelper.FormatTime((DateTime)rango.Fin) + "')")}", "CONSULTA");
if (consulta.Rows.Count <= 0)
{
SinMovimientos();
return;
}
Reporteador reporteador = new Reporteador(Reporte.RutaLogo, Reporte.RutaMrt);
reporteador.MostrarReporte("ReporteEntradasSalidas.mrt"
, new Variable(consulta)
, new Variable("TIPO", Tipo.ToString())
, new Variable("FECHA_INICIAL", (DateTime)rango.Inicio)
, new Variable("FECHA_FINAL", (DateTime)rango.Fin));
}
public static void Entradas()
{
EntradasSalidas(Tipo.Entrada);
}
public static void Salidas()
{
EntradasSalidas(Tipo.Salida);
}
}
}