ValidacionStockInicial.cs
1 using sage.ew.db;
2 using sage.ew.global;
3 using System;
4 using System.Data;
5 
6 namespace Sage.ES.S50.NuevoEjercicio.Clases
7 {
11  internal class ValidacionExistenciaStockInicial
12  {
13  #region Variables privadas
14 
15  private readonly string MENSAJE_USUARIO = "Ya existe stock inicial en ejercicio destino del traspaso de datos. Se realizará un nuevo cálculo de stock inicial y " +
16  "se perderán las modificaciones que se hayan podido hacer de forma manual.";
17 
18  private readonly string MENSAJE_EJERCICIO = "Para realizar el cálculo de stock inicial debe situarse en el ejercicio predeterminado. En el caso de continuar " +
19  "no se realizará el proceso de cálculo de stock inicial.";
20 
21 
22  private readonly string _ejercicio = string.Empty;
23 
24  #endregion Variables privadas
25 
26  #region Propiedades públicas
27 
31  public bool Resultado { get; private set; } = false;
35  public string Mensaje { get; private set; } = string.Empty;
36 
37  #endregion Propiedades públicas
38 
39  #region Constructores
40 
44  private ValidacionExistenciaStockInicial() { }
45 
50  public ValidacionExistenciaStockInicial(string ejercicio)
51  {
52  _ejercicio = ejercicio;
53  }
54 
55  #endregion Constructores
56 
57  #region Métodos públicos
58 
62  public void Execute()
63  {
64  Resultado = false;
65  if (ExistenDatosPrevios())
66  {
67  Resultado = true;
68  Mensaje = MENSAJE_USUARIO;
69  }
70  }
71 
75  public void ValidacionEjercicio()
76  {
77  Resultado = ValidacionEjercicioPredet();
78  Mensaje = MENSAJE_EJERCICIO;
79  }
80 
81 
82  #endregion Métodos públicos
83 
84  #region Métodos privados
85 
90  private bool ExistenDatosPrevios()
91  {
92  if (string.IsNullOrWhiteSpace(_ejercicio))
93  return false;
94 
95  var dtDatos = new DataTable();
96  var datosPrevios = false;
97  string lcSql = $"SELECT COUNT(*) AS CONTA " +
98  $"FROM [multiples_ejercicios].dbo.STOCKINI ";
99 
100  try //La invocación sobre ejercicios inexistentes se debe controlar en un nivel superior pero... mejor lo protejo.
101  {
102  if (DB.SQLExecEjer(lcSql, ref dtDatos, new string[] { _ejercicio }) && dtDatos.Rows.Count > 0)
103  {
104  datosPrevios = (Convert.ToInt32(dtDatos.Rows[0]["CONTA"]) > 0);
105  }
106  }
107  catch (Exception loEx)
108  {
109  DB.Registrar_Error(loEx);
110  }
111 
112  return datosPrevios;
113  }
114 
115 
120  private bool ValidacionEjercicioPredet()
121  {
122  string lcAny = string.Empty;
123  DataTable ldtEjercicios = new DataTable();
124 
125  DB.SQLExec("SELECT [any] AS ejer, anterior FROM " + DB.SQLDatabase("COMUNES", "EJERCICI") + " WHERE predet = 1 ", ref ldtEjercicios);
126  if (ldtEjercicios.Rows.Count > 0)
127  {
128  lcAny = Convert.ToString(ldtEjercicios.Rows[0]["ejer"]).Trim();
129 
130  if (lcAny != Convert.ToString(EW_GLOBAL._GetVariable("wc_any")))
131  return true;
132  }
133 
134  return false;
135  }
136 
137  #endregion Métodos privados
138  }
139 }