DisenoBalances_TablaAnuales_IS.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_Anuales_IS> _Sociedades
31  {
32  get
33  {
34  if (_SociedadesAnuales == null)
35  {
36  _SociedadesAnuales = Load();
37  }
38  return _SociedadesAnuales;
39  }
40  set
41  {
42  _SociedadesAnuales = value;
43  }
44  }
45  private IEnumerable<DisenoBalances_Anuales_IS> _SociedadesAnuales = null;
46 
47 
48  #endregion Propiedades
49 
50  #region Constructores
51 
55  private DisenoBalances_TablaAnuales_IS() { }
56 
60  public DisenoBalances_TablaAnuales_IS(string fitxer, string pb)
61  {
62  _Fitxer = fitxer;
63  _Pb = pb;
64  }
65 
66  #endregion Constructores
67 
72  public IEnumerable<DisenoBalances_Anuales_IS> Load()
73  {
74  string lcSql = string.Empty;
75  DataTable resultados = new DataTable();
76  List<DisenoBalances_Anuales_IS> listaAnualesItems = new List<DisenoBalances_Anuales_IS>();
77 
78  lcSql += " SELECT * FROM " + DB.SQLDatabase("GESTION", "ANUALES_IS");
79  lcSql += " WHERE FITXER = " + 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_Anuales_IS(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 (_Sociedades.Count() > 0)
103  {
104  StringBuilder sbItems = new StringBuilder();
105  foreach (DisenoBalances_Anuales_IS item in _Sociedades)
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  internal void BorrarNotas(IEnumerable<DisenoBalances_Anuales> anualesConNotas)
122  {
123  StringBuilder sb = new StringBuilder();
124 
125  foreach (DisenoBalances_Anuales item in anualesConNotas)
126  {
127  //Limpio la nota del item
128  item._Notas = "";
129 
130  //Obtengo el delete del item
131  sb.AppendLine(item.GetDeleteQuery());
132 
133  //Obtengo el query para hacer el insert con los nuvos valores
134  sb.AppendLine(item.GetInsertQuery());
135  }
136 
137  bool resultado = DB.SQLExec(sb.ToString());
138  }
139 
140  internal void BorrarDiseno()
141  {
142  _SociedadesAnuales = new List<DisenoBalances_Anuales_IS>();
143  }
144 
149  public bool _Delete()
150  {
151  string lcSql = string.Empty;
152 
153  lcSql += " DELETE FROM " + DB.SQLDatabase("GESTION", "ANUALES_IS");
154  lcSql += " WHERE FITXER = " + DB.SQLString(_Fitxer);
155  lcSql += " AND PB = " + DB.SQLString(_Pb);
156 
157  return DB.SQLExec(lcSql);
158  }
159 
165  internal bool Duplicar(string nuevoCodigo)
166  {
167  bool llOk = true;
168 
169  StringBuilder sbItems = new StringBuilder();
170  foreach (DisenoBalances_Anuales_IS item in _Sociedades)
171  {
172  //Obtengo el query para hacer el insert
173  sbItems.AppendLine(item.GetDuplicarQuery(CodigoReemplazo: nuevoCodigo));
174  }
175  llOk = DB.SQLExec(sbItems.ToString());
176 
177 
178  return llOk;
179  }
180 
181  internal DisenoBalances_Anuales_IS SociedadesCrear(string tcCodigo, string tcFila)
182  {
183  DisenoBalances_Anuales_IS nuevoItem = new DisenoBalances_Anuales_IS(this)
184  {
185  _Columna = tcCodigo,
186  _Clau = tcFila
187  };
188 
189  List<DisenoBalances_Anuales_IS> lista = _Sociedades.ToList();
190  lista.Add(nuevoItem);
191  _Sociedades = lista;
192 
193  return nuevoItem;
194  }
195 
201  internal bool SociedadesBorrarColumna(string tcColumna)
202  {
203  bool resultado = true;
204  List<DisenoBalances_Anuales_IS> newList = new List<DisenoBalances_Anuales_IS>();
205 
206  foreach (DisenoBalances_Anuales_IS item in _Sociedades)
207  {
208  if (item._Columna != tcColumna)
209  {
210  newList.Add(item);
211  }
212  }
213 
214  _Sociedades = newList;
215 
216  return resultado;
217  }
218 
224  internal bool SociedadesBorrarFila(string tcFila)
225  {
226  bool resultado = true;
227  List<DisenoBalances_Anuales_IS> newList = new List<DisenoBalances_Anuales_IS>();
228 
229  foreach (DisenoBalances_Anuales_IS item in _Sociedades)
230  {
231  if (item._Clau != tcFila)
232  {
233  newList.Add(item);
234  }
235  }
236 
237  _Sociedades = newList;
238 
239  return resultado;
240  }
241 
242 
248  private string ObtenerNuevoCodigoDeNodo(string tcValorInicial = "AA")
249  {
250  string nuevoCodigo = string.Empty;
251 
252  //Asigno el código de partida
253  nuevoCodigo = tcValorInicial.ToUpper();
254 
255  int intentos = 0;
256  while (true)
257  {
258  //TODO => mejorar a función para códigos únicamente alfabéticos
259  nuevoCodigo = functions.FUNCTIONS._SumarCarRecursivo(nuevoCodigo);
260 
261  if (_SociedadesAnuales.All(i => i._Clau.CompareTo(nuevoCodigo) != 0)) //Si nadie usa esa clave acabo
262  break;
263 
264  if (intentos > 1000) //mil intentos... para mi que no lo va a conseguir
265  {
266  nuevoCodigo = string.Empty;
267  break;
268  }
269  }
270 
271  return nuevoCodigo;
272  }
273  }
274 }
Registro unitario de la tabla ANUALES_IS
DisenoBalances_TablaAnuales_IS(string fitxer, string pb)
Constructor privado
IEnumerable< DisenoBalances_Anuales_IS > Load()
Obtiene los items de anuales
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 GetDeleteQuery()
Obtiene un query para realizar una intrucción insert de los datos actuales
string GetInsertQuery()
Obtiene un query para realizar una intrucción insert de los datos actuales
Registro unitario de la tabla ANUALES
string GetDuplicarQuery(string CodigoReemplazo)
Obtiene un query para realizar una intrucción insert de los datos actuales con otro código de fichero...
Clase para gestionar conjuntos de registros de la tabla ANUALES_IS
bool _Delete()
Borra los registros de ANUALES para el FITXER y PB actual