DisenoBalances_TablaBalObsv.cs
1 using sage.ew.db;
2 using System;
3 using System.Collections.Generic;
4 using System.Data;
5 using System.Linq;
6 using System.Text;
7 
8 namespace sage.ew.contabilidad
9 {
14  {
15  #region Propiedades
16 
20  public string _Fitxer { get; set; } = string.Empty;
21 
25  public string _Pb { get; set; } = string.Empty;
26 
30  public IEnumerable<DisenoBalances_Observaciones> _Observaciones
31  {
32  get
33  {
34  if (_ObservacionesAnuales == null)
35  {
36  _ObservacionesAnuales = Load();
37  }
38  return _ObservacionesAnuales;
39  }
40  set
41  {
42  _ObservacionesAnuales = value;
43  }
44  }
45  private IEnumerable<DisenoBalances_Observaciones> _ObservacionesAnuales = null;
46 
47 
48  #endregion Propiedades
49 
50  #region Constructores
51 
55  private DisenoBalances_TablaBalObsv() { }
56 
60  public DisenoBalances_TablaBalObsv(string fitxer, string pb)
61  {
62  _Fitxer = fitxer;
63  _Pb = pb;
64  }
65 
66  #endregion Constructores
67 
72  public IEnumerable<DisenoBalances_Observaciones> Load()
73  {
74  string lcSql = string.Empty;
75  DataTable resultados = new DataTable();
76  List<DisenoBalances_Observaciones> listaAnualesItems = new List<DisenoBalances_Observaciones>();
77 
78  lcSql += " SELECT * FROM " + DB.SQLDatabase("GESTION", "BALOBSV");
79  lcSql += " WHERE FICHERO = " + DB.SQLString(_Fitxer);
80  lcSql += " AND PB = " + DB.SQLString(_Pb);
81 
82  if (DB.SQLExec(lcSql, ref resultados) && resultados.Rows.Count > 0)
83  {
84  var rows = resultados.AsEnumerable().Cast<DataRow>().ToList();
85  rows.ForEach(r => listaAnualesItems.Add(new DisenoBalances_Observaciones(this, r)));
86  }
87 
88  return listaAnualesItems;
89  }
90 
95  public bool _Save()
96  {
97  bool llOk = true;
98 
99  //Borrar lo que pudiera haber en la tabla
100  _Delete();
101 
102  if (_Observaciones.Count() > 0)
103  {
104  StringBuilder sbItems = new StringBuilder();
105  foreach (DisenoBalances_Observaciones item in _Observaciones)
106  {
107  //Obtengo el query para hacer el insert
108  sbItems.AppendLine(item.GetInsertQuery());
109  }
110 
111  llOk = DB.SQLExec(sbItems.ToString());
112  }
113 
114  return llOk;
115  }
116 
121  public bool _Delete()
122  {
123  string lcSql = string.Empty;
124 
125  lcSql += " DELETE FROM " + DB.SQLDatabase("GESTION", "BALOBSV");
126  lcSql += " WHERE FICHERO = " + DB.SQLString(_Fitxer);
127  lcSql += " AND PB = " + DB.SQLString(_Pb);
128 
129  return DB.SQLExec(lcSql);
130  }
131 
137  internal bool Duplicar(string nuevoCodigo)
138  {
139  bool llOk = true;
140 
141  StringBuilder sbItems = new StringBuilder();
142  foreach (DisenoBalances_Observaciones item in _Observaciones)
143  {
144  //Obtengo el query para hacer el insert
145  sbItems.AppendLine(item.GetDuplicarQuery(CodigoReemplazo: nuevoCodigo));
146  }
147  llOk = DB.SQLExec(sbItems.ToString());
148 
149 
150  return llOk;
151  }
152 
153  internal DisenoBalances_Observaciones ObservacionesCrear(string tcClau)
154  {
155  DisenoBalances_Observaciones nuevoItem = new DisenoBalances_Observaciones(this)
156  {
157  _Clau = tcClau,
158  _Aviso = string.Empty,
159  _Observaciones = string.Empty
160  };
161 
162 
163  List<DisenoBalances_Observaciones> lista = _Observaciones.ToList();
164  lista.Add(nuevoItem);
165  _Observaciones = lista;
166 
167  return nuevoItem;
168  }
169 
170 
176  private string ObtenerNuevoCodigoDeNodo(string tcValorInicial = "AA")
177  {
178  string nuevoCodigo = string.Empty;
179 
180  //Asigno el código de partida
181  nuevoCodigo = tcValorInicial.ToUpper();
182 
183  int intentos = 0;
184  while (true)
185  {
186  //TODO => mejorar a función para códigos únicamente alfabéticos
187  nuevoCodigo = functions.FUNCTIONS._SumarCarRecursivo(nuevoCodigo);
188 
189  if (_ObservacionesAnuales.All(i => i._Clau.CompareTo(nuevoCodigo) != 0)) //Si nadie usa esa clave acabo
190  break;
191 
192  if (intentos > 1000) //mil intentos... para mi que no lo va a conseguir
193  {
194  nuevoCodigo = string.Empty;
195  break;
196  }
197  }
198 
199  return nuevoCodigo;
200  }
201  }
202 }
Clase para gestionar conjuntos de registros de la tabla BALOBSV
IEnumerable< DisenoBalances_Observaciones > Load()
Obtiene los items de anuales
bool _Delete()
Borra los registros de ANUALES para el FITXER y PB actual
bool _Save()
Graba la colección de registros de Anuales
Consulta de una declaración existente
string GetInsertQuery()
Obtiene un query para realizar una intrucción insert de los datos actuales
string GetDuplicarQuery(string CodigoReemplazo)
Obtiene un query para realizar una intrucción insert de los datos actuales con otro código de fichero...
DisenoBalances_TablaBalObsv(string fitxer, string pb)
Constructor privado