2 using System.Collections.Generic;
8 using System.Data.SqlClient;
12 using System.ComponentModel;
13 using System.Text.RegularExpressions;
20 public static class GrupoempTools
22 #region PROPIEDADES PUBLICAS 27 public static string _Euroserv =
"";
32 public static int _LenCuenta = 8;
37 public static int _LenMarca = 2;
42 public static int _LenFamilia = 2;
47 public static int _LenVendedor = 2;
52 public static int _LenAlmacen = 2;
57 public static string _PrefijoDeudor3 =
"440";
62 public static string _PrefijoCli3 =
"430";
67 public static string _PrefijoPro3 =
"400";
72 public static string _PrefijoAcr3 =
"410";
77 public static string _PrefijoBan3 =
"572";
83 public static string _PrefijoCaj3 =
"570";
88 public static string _PrefijoCom3 =
"600";
93 public static string _PrefijoVen3 =
"700";
98 public static string _Error_Message =
"";
103 public static bool _Log =
true;
108 public static string _RutaFicheroLog =
"";
113 public static string _GrupoPrincipal =
"";
118 public static string _GrupoOrigen =
"";
123 public static string _DbComunesGrOrigen =
"";
128 public static string _DbEjerGrOrigen =
"";
133 public static DataTable _dtBdAddonsGrOrigen =
new DataTable();
138 public static string _CarpetaBackupServidorSql =
"";
143 public static string _DbComunesGrNuevo =
"";
148 public static string _DbEjerGrNuevo =
"";
153 public static DataTable _dtBdAddonsGrNuevo =
new DataTable();
158 public static string _UserPropBdGrNuevo =
"Sage50";
163 public static string _EmpresaGrNuevo =
"";
168 public static string _NombreEmpresa =
"";
173 public static string _CifEmpresa =
"";
179 public static bool _CfgEjerPartiGrNuevo =
false;
184 public static string _EjerOrigen =
"";
189 public static string _EjerNuevo=
"";
196 public static bool _EjerNuevoMarcarPredet =
false;
201 public static DateTime? _FechaIniEjerOrigen = null;
206 public static DateTime? _FechaFinEjerOrigen = null;
212 public static DateTime? _FechaIniEjerNuevo = null;
217 public static DateTime? _FechaFinEjerNuevo = null;
222 public static string _SufiBdEjerGrNuevo =
"";
228 public static bool _ConservarClientes =
false;
233 public static bool _LongitudesEstandar =
false;
239 public static bool _ConservarUsuarios =
false;
244 public static string _DbComunesGrBorrar =
"";
249 public static DataTable _dtBdEjerGrBorrar =
new DataTable();
254 public static DataTable _dtBdAddonsGrBorrar =
new DataTable();
264 public static bool _ConservarArticulos =
false;
270 public static bool _ConservarProveedores =
false;
275 public enum TipoOperativaCreacion
280 PorCopiaRestauracionBd,
291 public static TipoOperativaCreacion _TipoOperativaCreacionGrupoEjer = TipoOperativaCreacion.PorCopiaRestauracionBd;
297 public static BackgroundWorker _Worker = null;
302 public static int _TotalPasosProgreso = 0;
307 public static int _PasoProgreso = 0;
312 public static string _CrearGrupoP =
"";
314 #endregion PROPIEDADES PUBLICAS 316 #region PROPIEDADES PRIVADAS 318 private static string[,] _CuentasCd =
new string[,] {
319 {
"12900001",
"PÉRDIDAS Y GANANCIAS",
"N",
"",
"",
""} ,
320 {
"30000001",
"EXISTENCIAS DE MERCADERÍAS",
"N",
"",
"",
""} ,
321 {
"40000001",
"PROVEEDOR",
"N",
"",
"",
""} ,
322 {
"40600001",
"ENVASES A DEVOLVER A PROVEEDORES",
"N",
"",
"",
""} ,
323 {
"40700001",
"ANTICIPOS A PROVEEDORES",
"N",
"",
"",
""} ,
324 {
"41000001",
"ACREEDOR",
"N",
"",
"",
""} ,
325 {
"41400000",
"VALES",
"N",
"",
"",
""},
326 {
"43000001",
"CLIENTE CONTADO",
"",
"",
"",
""} ,
327 {
"43600001",
"CLIENTES DE DUDOSO COBRO",
"",
"",
"",
""} ,
328 {
"43700001",
"ENVASES A DEVOLVER POR CLIENTES",
"",
"000",
"",
""} ,
329 {
"43800001",
"ANTICIPOS CLIENTES",
"",
"000",
"",
""} ,
330 {
"44000001",
"DEUDOR",
"N",
"",
"",
""} ,
331 {
"46000000",
"ANTICIPOS DE REMUNERACIONES",
"N",
"",
"",
""} ,
332 {
"46500001",
"REMUNERACIONES PENDIENTES DE PAGO",
"N",
"",
"",
""} ,
333 {
"47000001",
"HACIENDA PÚBLICA DEUDORA POR CONCEPTOS FISCALES",
"N",
"",
"",
""} ,
334 {
"47200000",
"IVA SOPORTADO 0%",
"N",
"",
"",
""} ,
335 {
"47200001",
"IVA SOPORTADO",
"N",
"",
"",
""} ,
336 {
"47200002",
"RECARGO SOPORTADO",
"N",
"",
"",
""} ,
337 {
"47200004",
"IVA SOPORTADO 4%",
"N",
"",
"",
""} ,
338 {
"47200010",
"IVA SOPORTADO 10%",
"N",
"",
"",
""} ,
339 {
"47200011",
"IVA SOPORTADO 4% CEE",
"N",
"",
"",
""} ,
340 {
"47200012",
"IVA SOPORTADO 10% CEE",
"N",
"",
"",
""} ,
341 {
"47200013",
"IVA SOPORTADO 21% CEE",
"",
"000",
"",
""} ,
342 {
"47200020",
"RECARGO SOPORTADO 0%",
"N",
"",
"",
""} ,
343 {
"47200021",
"IVA SOPORTADO 21%",
"N",
"",
"",
""} ,
344 {
"47200024",
"RECARGO SOPORTADO 0.5%",
"N",
"",
"",
""} ,
345 {
"47200026",
"RECARGO SOPORTADO 5.2%",
"N",
"",
"",
""} ,
346 {
"47200027",
"RECARGO SOPORTADO 1.4%",
"N",
"",
"",
""} ,
347 {
"47200098",
"RECARGO SOPORTADO CRITERIO DE CAJA",
"N",
"",
"",
""} ,
348 {
"47200099",
"IVA SOPORTADO CRITERIO DE CAJA",
"N",
"",
"",
""} ,
349 {
"47200100",
"IVA SOPORTADO NO DEDUCIBLE (PRORRATA)",
"N",
"",
"",
""} ,
350 {
"47200101",
"IVA SOPORTADO NO DEDUCIBLE PENDIENTE DEVENGO (PRORRATA)",
"N",
"",
"",
""} ,
351 {
"47200104",
"04% INVERSIÓN SUJETO PASIVO SOPORTADA",
"N",
"",
"",
""} ,
352 {
"47200110",
"10% INVERSIÓN SUJETO PASIVO SOPORTADA",
"N",
"",
"",
""} ,
353 {
"47200121",
"21% INVERSIÓN SUJETO PASIVO SOPORTADA",
"N",
"",
"",
""} ,
354 {
"47300001",
"HACIENDA PÚBLICA RETENCIONES Y PAGOS A CUENTA",
"N",
"",
"",
""} ,
355 {
"47500001",
"HACIENDA PÚBLICA ACREEDORA POR CONCEPTOS FISCALES",
"N",
"",
"",
""} ,
356 {
"47510001",
"H. PÚBLICA ACREEDOR POR RETENCIONES PRACTICADAS",
"N",
"",
"",
""} ,
357 {
"47700000",
"IVA REPERCUTIDO 0%",
"N",
"",
"",
""} ,
358 {
"47700001",
"IVA REPERCUTIDO",
"N",
"",
"",
""} ,
359 {
"47700002",
"RECARGO REPERCUTIDO",
"N",
"",
"",
""} ,
360 {
"47700004",
"IVA REPERCUTIDO 4%",
"N",
"",
"",
""} ,
361 {
"47700010",
"IVA REPERCUTIDO 10%",
"N",
"",
"",
""} ,
362 {
"47700011",
"IVA REPERCUTIDO 4% CEE",
"N",
"",
"",
""} ,
363 {
"47700012",
"IVA REPERCUTIDO 10% CEE",
"",
"",
"",
""} ,
364 {
"47700013",
"IVA REPERCUTIDO 21% CEE",
"",
"000",
"",
""} ,
365 {
"47700020",
"RECARGO REPERCUTIDO 0%",
"N",
"",
"",
""} ,
366 {
"47700021",
"IVA REPERCUTIDO 21%",
"N",
"",
"",
""} ,
367 {
"47700024",
"RECARGO REPERCUTIDO 0.5%",
"N",
"",
"",
""} ,
368 {
"47700026",
"RECARGO REPERCUTIDO 5.2%",
"N",
"",
"",
""} ,
369 {
"47700027",
"RECARGO REPERCUTIDO 1.4%",
"N",
"",
"",
""} ,
370 {
"47700098",
"RECARGO REPERCUTIDO CRITERIO DE CAJA",
"N",
"",
"",
""} ,
371 {
"47700099",
"IVA REPERCUTIDO CRITERIO DE CAJA",
"N",
"",
"",
""} ,
372 {
"47700104",
"04% INVERSIÓN SUJETO PASIVO REPERCUTIDA",
"N",
"",
"",
""} ,
373 {
"47700110",
"10% INVERSIÓN SUJETO PASIVO REPERCUTIDA",
"N",
"",
"",
""} ,
374 {
"47700121",
"21% INVERSIÓN SUJETO PASIVO REPERCUTIDA",
"N",
"",
"",
""} ,
375 {
"52080001",
"DEUDAS POR EFECTOS DESCONTADOS",
"N",
"000",
"",
""} ,
376 {
"55500000",
"CUENTA PUENTE COBRO",
"N",
"000",
"",
""} ,
377 {
"55500001",
"CUENTA PUENTE PAGO",
"N",
"000",
"",
""} ,
378 {
"55500002",
"CUENTA PUENTE REPOSICION/RETIRADA",
"N",
"000",
"",
""} ,
379 {
"55509999",
"PARTIDAS PENDIENTES DE APLICACIÓN",
"N",
"000",
"",
""} ,
380 {
"56100000",
"DEPÓSITOS RECIBIDOS A CORTO PLAZO",
"N",
"000",
"",
""} ,
381 {
"57000000",
"CONTADO",
"N",
"000",
"",
""} ,
382 {
"57000001",
"CAJA EFECTIVO",
"N",
"000",
"",
""} ,
383 {
"57200000",
"TARJETAS",
"N",
"000",
"",
""} ,
384 {
"57200001",
"BANCOS",
"N",
"000",
"",
""} ,
385 {
"57300001",
"BANCO MONEDA EXTRANJERA",
"N",
"000",
"",
""} ,
386 {
"60000001",
"COMPRAS DE MERCADERÍAS",
"N",
"",
"02",
"G01"} ,
387 {
"60000100",
"DESCUENTOS S/COMPRA POR PRONTO PAGO",
"",
"000",
"02",
"G01"} ,
388 {
"60300001",
"COMPRAS PENDIENTES DE FACTURAR",
"",
"000",
"",
""} ,
389 {
"60500001",
"PORTES COMPRA",
"N",
"",
"",
""} ,
390 {
"60600000",
"DESCUENTO SOBRE COMPRAS POR PRONTO PAGO",
"N",
"000",
"",
""} ,
391 {
"60800000",
"DEVOLUCIONES DE COMPRAS",
"N",
"",
"",
""} ,
392 {
"60900000",
"RAPPELS POR COMPRAS",
"N",
"000",
"",
""} ,
393 {
"61000001",
"VARIACIÓN DE EXISTENCIAS DE MERCADERÍAS",
"N",
"",
"02",
"G02"} ,
394 {
"62600000",
"GASTOS BANCARIOS",
"N",
"",
"08",
"G22"} ,
395 {
"62600001",
"GASTOS IMPAGO",
"N",
"",
"08",
"G22"} ,
396 {
"63100001",
"CANCELACIÓN IVA NO DEDUCIBLE",
"N",
"",
"10",
"G26"} ,
397 {
"63410000",
"AJUSTES NEGATIVOS EN EL IVA DE ACTIVO CORRIENTE (PRORRATA)",
"N",
"",
"",
""} ,
398 {
"63420000",
"AJUSTES NEGATIVOS EN EL IVA DE INVERSIONES (PRORRATA)",
"N",
"",
"",
""} ,
399 {
"63910000",
"AJUSTES POSITIVOS EN EL IVA DE ACTIVO CORRIENTE (PRORRATA)",
"N",
"",
"",
""} ,
400 {
"63920000",
"AJUSTES POSITIVOS EN EL IVA DE INVERSIONES (PRORRATA)",
"N",
"",
"",
""} ,
401 {
"64000000",
"SUELDOS Y SALARIOS",
"N",
"",
"",
""} ,
402 {
"66800001",
"DIFERENCIAS NEGATIVAS DE CAMBIO",
"N",
"",
"",
""} ,
403 {
"70000001",
"VENTAS DE MERCADERÍAS",
"N",
"",
"18",
"I01"} ,
404 {
"70000100",
"DESCUENTO S/VENTAS PRONTO PAGO",
"",
"000",
"18",
"I01"} ,
405 {
"70500001",
"PORTES VENTA",
"N",
"",
"18",
"I01"} ,
406 {
"70600000",
"DESCUENTO SOBRE VENTAS POR PRONTO PAGO",
"N",
"000",
"",
""} ,
407 {
"70800000",
"DEVOLUCIONES DE VENTAS",
"N",
"",
"",
""} ,
408 {
"70900000",
"RAPPELS POR VENTAS",
"N",
"",
"",
""} ,
409 {
"70700001",
"VENTAS PENDIENTES DE FACTURAR/CONTABILIZAR",
"",
"000",
"",
""} ,
410 {
"76800001",
"DIFERENCIAS POSITIVAS DE CAMBIO",
"N",
"",
"",
""} ,
411 {
"76900001",
"RECARGO FINANCIERO",
"N",
"",
"19",
"I07"} ,
412 {
"76900002",
"INGRESOS POR REPERCUSIÓN DE GASTOS DE DEVOLUCIÓN",
"N",
"000",
"19",
"I07"},
413 {
"80000001",
"GASTOS IMPUTADOS A PATRIMONIO NETO",
"N",
"000",
"",
""},
414 {
"90000001",
"INGRESOS IMPUTADOS A PATRIMONIO NETO",
"N",
"000",
"",
""}
421 private static List<string> _AddonsInstal =
new List<string>() {
"TPV",
"LOTES",
"AMORTIZA",
"MAYORIST",
"INFORAUT" };
426 private static StringBuilder _cCadenaLog =
new StringBuilder();
431 private static Dictionary<string, string> _oAliasDBCopia =
new Dictionary<string, string>();
436 public static Dictionary<string, string> _oAliasDBEjerCopia =
new Dictionary<string, string>();
441 public static Dictionary<string, DB._TableInformationSchema> _dicCacheSchemaCopia =
new Dictionary<string, DB._TableInformationSchema>();
446 private static Dictionary<string, bool> _oAddonsOrigen =
new Dictionary<string, bool>();
448 #endregion PROPIEDADES PRIVADAS 450 #region METODOS PÚBLICOS 456 public static DataTable ObtenerTodosLosGrupos()
458 DataTable ldtGrupos =
new DataTable();
459 string lcSql =
"Select codigo, nombre From [EUROWINSYS].[dbo].[gruposemp]";
460 DB.SQLExec(lcSql, ref ldtGrupos);
469 public static DataTable ObtenerTodosLosGrupos(
string grupoprincipal)
471 DataTable ldtGrupos =
new DataTable();
472 string lcSql =
"Select codigo, nombre From [EUROWINSYS].[dbo].[gruposemp] where codpripal = " + DB.SQLString(grupoprincipal);
473 DB.SQLExec(lcSql, ref ldtGrupos);
482 public static string ObtenerGestionEjerciciActualGrupo(
string databaseComunes)
484 string databaseGestion =
"";
486 DataTable datatableEjercici =
new DataTable();
487 string lcSql =
"Select conexion From " + DB.SQLDatabaseReal(databaseComunes,
"ejercici") +
" Where [any] = " + DB.SQLString(DB._GetVariable(
"wc_any").ToString());
489 DB.SQLExec(lcSql, ref datatableEjercici);
490 if (datatableEjercici.Rows.Count > 0)
492 databaseGestion = datatableEjercici.Rows[0][
"conexion"].ToString().Trim();
495 return databaseGestion;
501 public static string ObtenerGestionGrupo(
string databaseComunes)
504 DataTable datatableEjercici =
new DataTable();
506 lcSql =
String.Format(
"SELECT CONEXION, PREDET,[any] FROM {0} WHERE [any] = {1} UNION SELECT CONEXION, PREDET,[any] FROM {0} ORDER BY PREDET DESC ,[any] DESC", DB.SQLDatabaseReal(databaseComunes,
"ejercici"), DB.SQLString(DB._GetVariable(
"wc_any").ToString()));
507 DB.SQLExec(lcSql, ref datatableEjercici);
509 return datatableEjercici.Rows.Count > 0 ? datatableEjercici.Rows[0][
"CONEXION"].ToString().Trim() :
String.Empty;
516 public static bool _BorrarGruposEmpXml()
519 string lcRutaServidor = Convert.ToString(DB._GetVariable(
"wc_iniservidor")).Trim();
522 if (!
string.IsNullOrWhiteSpace(lcRutaServidor))
524 string lcFicheroXmlGrupos = Path.Combine(lcRutaServidor,
"gruposemp.xml");
525 if (
System.IO.File.Exists(lcFicheroXmlGrupos))
527 System.IO.File.Delete(lcFicheroXmlGrupos);
529 if (
System.IO.File.Exists(lcFicheroXmlGrupos))
542 public static string _Obtener_CodGrupoPripal(
string tcGrupo)
544 string lcCodGrupoPripal =
"";
546 lcCodGrupoPripal = Convert.ToString(DB.SQLValor(
"gruposemp",
"codigo", tcGrupo,
"codpripal",
"eurowinsys"));
548 return lcCodGrupoPripal;
554 public static string _Obtener_NombreGrupo(
string tcGrupo)
556 string lcNombreGrupo =
"";
558 lcNombreGrupo = Convert.ToString(DB.SQLValor(
"gruposemp",
"codigo", tcGrupo,
"nombre",
"eurowinsys")).Trim();
560 return lcNombreGrupo;
568 public static string _Obtener_CodigoGrupo_Inexistente()
570 string lcCodGrupo =
"";
571 string lcNewDbComunes =
"";
572 DataTable ldtAuxiliar =
new DataTable();
576 if (
string.IsNullOrWhiteSpace(DB.Conexion) ||
string.IsNullOrWhiteSpace(DB.DbComunes) )
578 _Error_Message =
"No se ha podido obtener un código de nuevo grupo, no se ha detectado conexión al servidor SQL.";
585 lcNewDbComunes = DB._Obtener_NuevaDb_Comunes(
"COMU", 8);
586 if (
string.IsNullOrWhiteSpace(lcNewDbComunes))
588 _Error_Message =
"No se ha podido obtener un código de nuevo grupo, no se pudo obtener el nombre para una nueva base de datos de COMUNES.";
594 if (!
string.IsNullOrWhiteSpace(lcNewDbComunes) && lcNewDbComunes.Length == 8)
595 lcCodGrupo = lcNewDbComunes.Substring(4,4);
596 if (
string.IsNullOrWhiteSpace(lcCodGrupo))
598 _Error_Message =
"No se ha podido obtener un código de nuevo grupo, formato incorrecto para el nombre de la nueva base de datos de COMUENES.";
604 DB.SQLExec(
"select codigo from " + DB.SQLDatabase(
"eurowinsys",
"gruposemp") +
" where codigo='" + lcCodGrupo +
"'", ref ldtAuxiliar);
605 if (ldtAuxiliar.Rows.Count > 0 && Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]) == lcCodGrupo)
606 DB.SQLExec(
"delete from " + DB.SQLDatabase(
"eurowinsys",
"gruposemp") +
" where codigo='" + lcCodGrupo +
"'");
619 public static string _Obtener_RutaLog_Automatica(
string tcCodigo,
int tnTipo)
621 string lcRutaLog = GrupoempTools._Euroserv.Trim();
622 if (
string.IsNullOrWhiteSpace(lcRutaLog))
623 lcRutaLog = Path.GetTempPath();
625 if (!lcRutaLog.EndsWith(
"\\"))
628 string lcFecha = DateTime.Now.Date.ToString(
"yyyyMMdd");
629 string lcHora = DateTime.Now.ToLongTimeString().Replace(
":",
"");
631 lcRutaLog += (tnTipo == 1 ?
"log_creagremp_" : (tnTipo == 2 ?
"log_borragremp_" :
"log_creaejer_")) + tcCodigo +
"_" + lcFecha +
"_" + lcHora +
".txt";
644 public static int _Obtener_Numero_Grupos(out
string tcGrupoActual, out
string tcGrupoPripal, out List<string> tlsGrupos)
646 tlsGrupos =
new List<string>();
652 if (
string.IsNullOrWhiteSpace(DB.Conexion) ||
string.IsNullOrWhiteSpace(DB.DbComunes))
654 _Error_Message =
"No se ha podido obtener el número de grupos existentes, no se ha detectado conexión al servidor SQL.";
661 string lcComunesActual = DB.DbComunes;
662 DataTable ldtAuxiliar =
new DataTable();
666 tcGrupoActual = DB.DbComunes.Trim().Substring(4, 4);
667 DB.SQLExec(
"select codpripal from " + DB.SQLDatabase(
"eurowinsys",
"gruposemp") +
" where codigo='" + tcGrupoActual +
"'", ref ldtAuxiliar);
668 if (ldtAuxiliar.Rows.Count == 0)
670 _Error_Message =
"No se ha podido obtener el número de grupos existentes, no se ha encontrado el grupo actual " + tcGrupoActual +
" en la tabla de grupos.";
674 tcGrupoPripal = Convert.ToString(ldtAuxiliar.Rows[0][
"codpripal"]);
675 if (
string.IsNullOrWhiteSpace(tcGrupoPripal))
677 _Error_Message =
"No se ha podido obtener el número de grupos existentes, no se ha podido averiguar el código de grupo principal correspondiente al grupo actual " + tcGrupoActual +
" en la tabla de grupos.";
683 DB.SQLExec(
"select codigo from " + DB.SQLDatabase(
"eurowinsys",
"gruposemp") +
" where codpripal='" + tcGrupoPripal +
"'", ref ldtAuxiliar);
684 if (ldtAuxiliar.Rows.Count == 0)
686 _Error_Message =
"No se ha podido obtener el número de grupos existentes, se han detectado 0 grupos asociados al grupo origen " + tcGrupoPripal +
" en la tabla de grupos.";
693 foreach (DataRow dtRow
in ldtAuxiliar.Rows)
695 string lcCodigo = Convert.ToString(dtRow[
"codigo"]).Trim().ToUpper();
696 if (DB._SQLExisteBBDD(
"COMU" + lcCodigo))
697 tlsGrupos.Add(lcCodigo);
701 int lnCuantosGrupos = tlsGrupos.Count;
702 if (lnCuantosGrupos == 1)
704 if (tcGrupoActual != tcGrupoPripal)
706 _Error_Message =
"No se ha podido obtener el número de grupos existentes, se han detectado incoherencia en los datos de la tabla de grupos: " +
707 "Se ha detectado un solo grupo en la instalación actual pero con diferente codificación para el grupo actual " + tcGrupoActual +
" " +
708 "y el grupo origen " + tcGrupoPripal;
715 return lnCuantosGrupos;
729 public static bool _Crear_Ejercicio(
string tcGrupoOrigen,
string tcEjerOrigen,
string tcEjerNuevo, DateTime tdFIniEjerNuevo, DateTime tdFFinEjerNuevo,
bool tlMarcarEjerPredet =
false)
735 GrupoempTools._cCadenaLog =
new StringBuilder();
740 if (
string.IsNullOrWhiteSpace(_RutaFicheroLog))
741 _RutaFicheroLog = GrupoempTools._Obtener_RutaLog_Automatica(tcEjerNuevo, 3);
749 Dictionary<string, object> lodDicParam =
new Dictionary<string, object>();
750 lodDicParam.Add(
"tcgrupoorigen", tcGrupoOrigen);
751 lodDicParam.Add(
"tcejerorigen", tcEjerOrigen);
752 lodDicParam.Add(
"tcejernuevo", tcEjerNuevo);
753 lodDicParam.Add(
"tdfiniejernuevo", tdFIniEjerNuevo);
754 lodDicParam.Add(
"tdffinejernuevo", tdFFinEjerNuevo);
755 llOk = GrupoempTools.CrearEjercicio_Comprobar_Parametros(lodDicParam);
760 Guardar_Mensaje(
"Paso incorrecto de parametros al método _Crear_Ejercicio()");
761 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
769 GrupoempTools._ResetearPropiedades();
775 Guardar_Mensaje(
"CREACIÓN DE NUEVO EJERCICIO " + tcEjerNuevo +
" EN GRUPO " + tcGrupoOrigen +
" A PARTIR DE EJERCICIO " + tcEjerOrigen + Environment.NewLine);
778 llOk = GrupoempTools.CrearEjercicio_Comprobaciones_Previas(tcGrupoOrigen, tcEjerOrigen, tcEjerNuevo);
782 CopiarStringLog_Fichero(_RutaFicheroLog);
794 GrupoempTools._EjerOrigen = tcEjerOrigen;
795 GrupoempTools._EjerNuevo = tcEjerNuevo;
796 GrupoempTools._FechaIniEjerNuevo = tdFIniEjerNuevo;
797 GrupoempTools._FechaFinEjerNuevo = tdFFinEjerNuevo;
798 GrupoempTools._EjerNuevoMarcarPredet = tlMarcarEjerPredet;
817 if (GrupoempTools._TipoOperativaCreacionGrupoEjer == GrupoempTools.TipoOperativaCreacion.PorCopiaRestauracionBd)
823 llOk = GrupoempTools.CrearEjercicio_BackupBd();
827 CopiarStringLog_Fichero(_RutaFicheroLog);
836 llOk = GrupoempTools.CrearEjercicio_RestoreBd();
842 CopiarStringLog_Fichero(_RutaFicheroLog);
853 llOk = GrupoempTools.CrearEjercicio_CrearBd();
857 CopiarStringLog_Fichero(_RutaFicheroLog);
867 llOk = GrupoempTools.CrearEjercicio_CrearTablasBd();
871 CopiarStringLog_Fichero(_RutaFicheroLog);
881 llOk = GrupoempTools.CrearEjercicio_AjustarDatosBd();
887 CopiarStringLog_Fichero(_RutaFicheroLog);
896 Guardar_Mensaje(
"PROCESO DE CREACIÓN DE EJERCICIO " + tcEjerNuevo +
" FINALIZADO." + Environment.NewLine);
898 Guardar_Mensaje(
"Se ha creado la siguiente bases de datos:");
899 Guardar_Mensaje(
"GESTION: " + GrupoempTools._DbEjerGrNuevo);
901 CopiarStringLog_Fichero(_RutaFicheroLog);
925 public static bool _Crear_Grupo(
string tcGrupo,
string tcNombreGrupo,
string tcEjercicio,
string tcNombreEmpresa,
string tcCifEmpresa,
string tcGrOrigen=
"",
bool tlConservarClientes=
false,
926 bool tlConservarUsuarios=
false,
bool tlEjerPartido=
false, DateTime? tdEjerPartiFIni = null, DateTime? tdEjerPartiFFin = null,
bool tlLongitudesEstandar=
false)
930 ActualizarBarraProgreso();
933 GrupoempTools._cCadenaLog =
new StringBuilder();
938 if (
string.IsNullOrWhiteSpace(_RutaFicheroLog))
939 _RutaFicheroLog = GrupoempTools._Obtener_RutaLog_Automatica(tcGrupo, 1);
943 Dictionary<string,object> lodDicParam =
new Dictionary<string,object>();
944 lodDicParam.Add(
"tcgrupo",tcGrupo);
945 lodDicParam.Add(
"tcnombregrupo",tcNombreGrupo);
946 lodDicParam.Add(
"tcejercicio",tcEjercicio);
947 lodDicParam.Add(
"tcnombreempresa",tcNombreEmpresa);
948 lodDicParam.Add(
"tccifempresa",tcCifEmpresa);
949 lodDicParam.Add(
"tcgrorigen",tcGrOrigen);
950 lodDicParam.Add(
"tlconservarclientes", tlConservarClientes);
951 lodDicParam.Add(
"tlconservarusuarios", tlConservarUsuarios);
952 lodDicParam.Add(
"tlejerpartido",tlEjerPartido);
953 lodDicParam.Add(
"tdejerpartifini",tdEjerPartiFIni);
954 lodDicParam.Add(
"tdejerpartiffin",tdEjerPartiFFin);
955 lodDicParam.Add(
"tlLongitudesEstandar", tlLongitudesEstandar);
957 llOk = CrearGrupo_Comprobar_Parametros(lodDicParam);
962 Guardar_Mensaje(
"Paso incorrecto de parametros al método _Crear_Grupo()");
963 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
974 GrupoempTools._ResetearPropiedades();
978 Guardar_Mensaje(
"CREACION DE NUEVO GRUPO: " + tcGrupo + Environment.NewLine);
982 GrupoempTools.CrearGrupo_AsignarPropiedades(lodDicParam);
987 llOk = GrupoempTools.CrearGrupo_Comprobaciones_Previas(tcGrupo, tcGrOrigen);
991 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
994 ActualizarBarraProgreso();
1012 if (GrupoempTools._TipoOperativaCreacionGrupoEjer == GrupoempTools.TipoOperativaCreacion.PorCopiaRestauracionBd)
1018 llOk = GrupoempTools.CrearGrupo_BackupsBds();
1022 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1025 ActualizarBarraProgreso();
1031 llOk = GrupoempTools.CrearGrupo_RestoreBds();
1038 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1041 ActualizarBarraProgreso();
1053 llOk = GrupoempTools.CrearGrupo_CrearBds();
1059 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1062 ActualizarBarraProgreso();
1069 llOk = GrupoempTools.CrearGrupo_CrearTablasBds();
1075 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1078 ActualizarBarraProgreso();
1085 llOk = GrupoempTools.CrearGrupo_AjustarDatosBds();
1092 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1095 ActualizarBarraProgreso();
1113 Guardar_Mensaje(
"Actualizacion de tabla de grupos.");
1114 GrupoempTools.CrearGrupo_AnadirGrupo_Gruposemp(tcGrupo, tcNombreGrupo);
1116 Guardar_Mensaje(
"Actualizacion de euroserv\\gruposemp.xml.");
1121 string lcEuroserv = GrupoempTools._Euroserv.Trim();
1122 DB._GrupoEmpresa_Table2Xml(Path.Combine(lcEuroserv,
"gruposemp.xml"));
1128 Guardar_Mensaje(
"Actualizacion de CFGCLISRV.");
1129 llOk = GrupoempTools.CrearGrupo_AnadirGrupo_CfgCliSrv();
1133 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1136 ActualizarBarraProgreso();
1144 Guardar_Mensaje(
"PROCESO DE CREACIÓN DE GRUPO "+tcGrupo+
" FINALIZADO."+Environment.NewLine);
1145 Guardar_Mensaje(
"Se han creado las siguientes bases de datos:");
1146 Guardar_Mensaje(
"COMUNES: " + _DbComunesGrNuevo);
1147 Guardar_Mensaje(
"GESTION: " + _DbEjerGrNuevo);
1148 string lcNombreAddon =
"", lcBdAddon =
"";
1149 foreach (DataRow loRow
in _dtBdAddonsGrNuevo.Rows)
1151 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
1152 lcBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
1153 Guardar_Mensaje(
"ADDON DE " + lcNombreAddon +
": " + lcBdAddon);
1156 GrupoempTools.CopiarStringLog_Fichero(_RutaFicheroLog);
1159 ActualizarBarraProgreso();
1167 public static void _ResetearPropiedades()
1173 Guardar_Mensaje(
"Inicializando propiedades internas.");
1178 GrupoempTools._GrupoPrincipal =
"";
1179 GrupoempTools._GrupoOrigen =
"";
1180 GrupoempTools._DbComunesGrOrigen =
"";
1181 GrupoempTools._DbEjerGrOrigen =
"";
1182 GrupoempTools._dtBdAddonsGrOrigen =
new DataTable();
1183 GrupoempTools._EjerOrigen =
"";
1184 GrupoempTools._FechaIniEjerOrigen = null;
1185 GrupoempTools._FechaFinEjerOrigen = null;
1188 GrupoempTools._DbComunesGrNuevo =
"";
1189 GrupoempTools._DbEjerGrNuevo =
"";
1190 GrupoempTools._dtBdAddonsGrNuevo =
new DataTable();
1191 GrupoempTools._SufiBdEjerGrNuevo =
"";
1192 GrupoempTools._EjerNuevo =
"";
1193 GrupoempTools._FechaIniEjerNuevo = null;
1194 GrupoempTools._FechaFinEjerNuevo = null;
1195 GrupoempTools._EmpresaGrNuevo =
"";
1196 GrupoempTools._CfgEjerPartiGrNuevo =
false;
1197 GrupoempTools._EjerNuevoMarcarPredet =
false;
1199 GrupoempTools._NombreEmpresa =
"";
1200 GrupoempTools._CifEmpresa =
"";
1201 GrupoempTools._ConservarClientes =
false;
1202 GrupoempTools._ConservarUsuarios =
false;
1203 GrupoempTools._ConservarArticulos =
false;
1204 GrupoempTools._ConservarProveedores =
false;
1205 GrupoempTools._LongitudesEstandar =
false;
1207 GrupoempTools._LenCuenta = 8;
1208 GrupoempTools._LenMarca = 2;
1209 GrupoempTools._LenFamilia = 2;
1210 GrupoempTools._LenVendedor = 2;
1211 GrupoempTools._LenAlmacen = 2;
1212 GrupoempTools._PrefijoCli3 =
"430";
1213 GrupoempTools._PrefijoDeudor3 =
"440";
1214 GrupoempTools._PrefijoPro3 =
"400";
1215 GrupoempTools._PrefijoAcr3 =
"410";
1216 GrupoempTools._PrefijoBan3 =
"572";
1217 GrupoempTools._PrefijoCaj3 =
"570";
1218 GrupoempTools._PrefijoCom3 =
"600";
1219 GrupoempTools._PrefijoVen3 =
"700";
1220 GrupoempTools._UserPropBdGrNuevo =
"Sage50";
1221 GrupoempTools._CarpetaBackupServidorSql =
"";
1225 GrupoempTools._DbComunesGrBorrar =
"";
1226 GrupoempTools._dtBdEjerGrBorrar =
new DataTable();
1227 GrupoempTools._dtBdAddonsGrBorrar =
new DataTable();
1230 GrupoempTools._Error_Message =
"";
1238 public static bool _Borrar_Grupo(
string tcGrupo)
1242 string tcCadenaError =
"Hubo un problema con la eliminación de las bases de datos siguientes: ";
1244 ActualizarBarraProgreso();
1253 GrupoempTools._cCadenaLog =
new StringBuilder();
1254 GrupoempTools._ResetearPropiedades();
1260 if (
string.IsNullOrWhiteSpace(_RutaFicheroLog))
1261 _RutaFicheroLog = GrupoempTools._Obtener_RutaLog_Automatica(tcGrupo, 2);
1266 if (
string.IsNullOrWhiteSpace(DB.Conexion) ||
string.IsNullOrWhiteSpace(DB.DbComunes))
1268 _Error_Message =
"No se ha detectado conexión al servidor SQL, no se borrará el grupo.";
1271 Guardar_Mensaje(_Error_Message);
1272 CopiarStringLog_Fichero(_RutaFicheroLog);
1277 if (
string.IsNullOrWhiteSpace(GrupoempTools._Euroserv))
1279 _Error_Message =
"No se ha dado valor a la propiedad _Euroserv de la clase GrupoempTools y es necesaria para la eliminacion del grupo, no se borrará el grupo.";
1282 Guardar_Mensaje(_Error_Message);
1283 CopiarStringLog_Fichero(_RutaFicheroLog);
1291 Guardar_Mensaje(
"GRUPO A ELIMINAR: " + tcGrupo + Environment.NewLine);
1292 Guardar_Mensaje(
"INICIO DE COMPROBACIONES PREVIAS ANTES DE PROCEDER A BORRAR EL GRUPO."+Environment.NewLine);
1295 ActualizarBarraProgreso();
1300 llOk = GrupoempTools.BorrarGrupo_Comprobaciones_Previas(tcGrupo);
1301 ActualizarBarraProgreso();
1311 CopiarStringLog_Fichero(_RutaFicheroLog);
1317 Guardar_Mensaje(
"Comprobaciones previas al borrado de grupo satisfactorias: OK."+Environment.NewLine);
1318 Guardar_Mensaje(
"Fin comprobaciones previas antes de revisar bases de datos." + Environment.NewLine);
1320 ActualizarBarraProgreso();
1326 Guardar_Mensaje(
"Inicio comprobación bases de datos del grupo " + tcGrupo + Environment.NewLine);
1328 ActualizarBarraProgreso();
1332 llOk = GrupoempTools.RevisarBaseDatosEnUso();
1333 ActualizarBarraProgreso();
1338 CopiarStringLog_Fichero(_RutaFicheroLog);
1344 Guardar_Mensaje(
"Comprobaciones bases de datos: OK." + Environment.NewLine);
1345 Guardar_Mensaje(
"FIN DE COMPROBACIONES PREVIAS ANTES DE PROCEDER A BORRAR EL GRUPO." + Environment.NewLine);
1347 ActualizarBarraProgreso();
1359 Guardar_Mensaje(
"INICIO PROCESO DE ELIMINACION DE BASES DE DATOS DEL GRUPO " + tcGrupo + Environment.NewLine);
1360 Guardar_Mensaje(
"BORRADO DE BASES DE DATOS DE ADDONS"+Environment.NewLine);
1362 ActualizarBarraProgreso();
1368 string lcNombreAddon =
"";
1370 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrBorrar.Rows)
1372 lcBd = Convert.ToString(loRow[
"nom_conex"]).Trim();
1373 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
1375 llOk2 = BorrarGrupo_Remove_Bd(lcBd, lcNombreAddon);
1376 llOk = llOk && llOk2;
1379 tcCadenaError += lcNombreAddon+
" ("+lcNombreAddon+
") ";
1381 ActualizarBarraProgreso();
1385 Guardar_Mensaje(Environment.NewLine);
1386 Guardar_Mensaje(
"BORRADO DE BASES DE DATOS DE EJERCICIOS"+Environment.NewLine);
1392 foreach (DataRow loRow
in GrupoempTools._dtBdEjerGrBorrar.Rows)
1394 lcBd = Convert.ToString(loRow[
"conexion"]).Trim();
1395 lcAny = Convert.ToString(loRow[
"any"]).Trim();
1397 llOk2 = BorrarGrupo_Remove_Bd(lcBd,
"EJERCICIO " + lcAny);
1398 llOk = llOk && llOk2;
1401 tcCadenaError +=
"EJERCICIO " + lcAny+
" ("+lcBd+
") ";
1403 ActualizarBarraProgreso();
1408 Guardar_Mensaje(Environment.NewLine);
1409 Guardar_Mensaje(
"BORRADO DE BASE DE DATOS DE COMUNES"+Environment.NewLine);
1414 llOk2 = BorrarGrupo_Remove_Bd(GrupoempTools._DbComunesGrBorrar,
"COMUNES");
1415 llOk = llOk && llOk2;
1417 tcCadenaError +=
"COMUNES (" + GrupoempTools._DbComunesGrBorrar +
") ";
1419 ActualizarBarraProgreso();
1425 Guardar_Mensaje(Environment.NewLine);
1426 Guardar_Mensaje(
"PROCESO DE BORRADO DE GRUPO " + tcGrupo +
" FINALIZADO CORRECTAMENTE.");
1431 Guardar_Mensaje(
"Borrado de grupo de la tabla de grupos.");
1433 DB.SQLExec(
"delete from "+DB.SQLDatabaseReal(
"eurowinsys",
"gruposemp")+
" where codigo='"+tcGrupo+
"'");
1436 Guardar_Mensaje(
"Borrado de grupo de la tabla de control grupos.");
1439 DB.SQLExec(
"delete from " + DB.SQLDatabaseReal(
"eurowinsys",
"ctrlgrupos") +
" where comunes='COMU" + tcGrupo +
"'");
1442 Guardar_Mensaje(
"Actualizacion de gruposemp.xml.");
1444 string lcEuroserv = GrupoempTools._Euroserv.Trim();
1445 DB._GrupoEmpresa_Table2Xml(Path.Combine(lcEuroserv,
"gruposemp.xml"));
1448 Guardar_Mensaje(
"Actualizacion de CFGCLISRV.");
1449 GrupoempTools._BorrarGrupo_QuitarGrupo_CfgCliSrv(tcGrupo);
1452 if (DB._oAliasDB.ContainsKey(
"COMU" + tcGrupo.Trim()))
1454 DB._oAliasDB.Remove(
"COMU" + tcGrupo.Trim());
1458 _Error_Message = tcCadenaError;
1463 ActualizarBarraProgreso();
1466 CopiarStringLog_Fichero(_RutaFicheroLog);
1468 ActualizarBarraProgreso();
1479 public static void CambiarNombreGrupo(
string tcGrupo,
string tcNombre)
1481 string lcSql =
"UPDATE " + DB.SQLDatabaseReal(
"EUROWINSYS",
"GRUPOSEMP") +
" SET nombre = " + DB.SQLString(tcNombre) +
" WHERE codigo = " + DB.SQLString(tcGrupo);
1485 #endregion METODOS PÚBLICOS 1488 #region METODOS PRIVADOS 1495 private static void datosConexionActual(out
string tcUsuario, out
string tcPassword)
1499 SqlConnectionStringBuilder loBuilder =
new SqlConnectionStringBuilder(DB.Conexion);
1501 tcUsuario = loBuilder.UserID;
1502 tcPassword = loBuilder.Password;
1513 private static bool conectarUsuario(
string tcUsuario,
string tcPass)
1519 SqlConnectionStringBuilder loBuilder =
new SqlConnectionStringBuilder(DB.Conexion);
1523 lbOk = DB.SQLConnect(loBuilder.DataSource, tcComunes: DB.DbComunes, tcUser: tcUsuario, tcPassword: tcPass, tbAuthWin:
false);
1537 private static bool restoreUsuario(
string tcDbNombreViejo,
string tcDbNombreNuevo,
string tcUsuarioActual, out
string tcMsgError,
string tcMensalog =
"")
1543 Guardar_Mensaje(
"Conectando con usuario 'sa'");
1547 DB.Error_Message =
"";
1548 llOk = conectarUsuario(
"sa", GrupoempTools._CrearGrupoP);
1554 Guardar_Mensaje(
"Conexión con usuario 'sa': OK");
1555 Guardar_Mensaje(
"Intentando restaurar la base Conexión con usuario 'sa'");
1558 DB.Error_Message =
"";
1559 llOk = DB._DbRestore(tcDbNombreViejo, tcDbNombreNuevo, GrupoempTools._CarpetaBackupServidorSql, tcUsuarioActual);
1563 Guardar_Mensaje(
"La creación de la nueva base de datos de " + tcMensalog +
" " + tcDbNombreNuevo +
" se ha realizado correctamente: OK");
1567 tcMsgError =
"NO se ha podido restaurar la copia de seguridad de la base de datos de " + tcMensalog +
" " +
1568 tcDbNombreViejo +
" como " + tcDbNombreNuevo +
" utilizando conexión con usuario 'sa', "+
1569 "imposible crear grupo. Error: " + DB.Error_Message;
1573 tcMsgError =
"No se ha podido conectar con el usuario 'sa' (" + DB.Error_Message +
").";
1586 private static bool borrarBaseDatos(
string tcBd)
1591 if (DB._SQLExisteBBDD(tcBd))
1592 DB._DBRemove(
new SqlConnection(DB.Conexion), tcBd);
1594 catch (Exception loEx)
1596 _Error_Message =
"Se ha producido un error al eliminar la base de datos " + tcBd
1597 +
" ( " + loEx.Message +
System.Environment.NewLine + DB.Error_Message +
").";
1599 Guardar_Mensaje(_Error_Message);
1610 private static void ActualizarBarraProgreso()
1612 if (_Worker != null && _TotalPasosProgreso > 0)
1616 int lnProgresoRelativo100 = (_PasoProgreso * 100) / _TotalPasosProgreso;
1618 if (lnProgresoRelativo100 > 100)
1619 lnProgresoRelativo100 = 100;
1621 _Worker.ReportProgress(lnProgresoRelativo100);
1622 Application.DoEvents();
1632 private static bool CrearGrupo_Comprobar_Existencia_BdNuevas(
string tcEjerNuevo,
string tcSufijo)
1634 string lcBd = tcEjerNuevo + tcSufijo;
1638 if (DB._SQLExisteBBDD(lcBd))
1640 if (GrupoempTools._Log)
1641 GrupoempTools.Guardar_Mensaje(
"La base de datos " + lcBd +
" para el ejercicio a crear en el grupo ya existe en el servidor SQL.");
1647 int lnEjerNuevo = Convert.ToInt16(tcEjerNuevo);
1648 string lcBdGesIni = Convert.ToString(lnEjerNuevo - 15) + tcSufijo;
1649 string lcBdGesFin = Convert.ToString(lnEjerNuevo + 15) + tcSufijo;
1650 if (GrupoempTools.CrearGrupo_ExistenBdsGestion(lcBdGesIni, lcBdGesFin))
1652 if (GrupoempTools._Log)
1653 GrupoempTools.Guardar_Mensaje(
"La base de datos " + lcBd +
" para el ejercicio a crear en el grupo ya está asignada en otra instalación.");
1661 string lcNombreAddon =
"";
1662 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrOrigen.Rows)
1664 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
1665 lcBd = lcNombreAddon.Trim();
1668 lcBd = lcBd.Substring(0,6);
1670 lcBd = lcBd.PadRight(6,
'0') + tcSufijo;
1672 if (DB._SQLExisteBBDD(lcBd))
1674 if (GrupoempTools._Log)
1675 GrupoempTools.Guardar_Mensaje(
"La base de datos " + lcBd +
" a crear en el grupo correspondiente al Addon de "+lcNombreAddon+
" ya existe en el servidor SQL.");
1693 public static bool CrearGrupo_ExistenBdsGestion(
string tcNombreBBDDMin,
string tcNombreBBDDMax)
1696 string lcSql =
String.Empty;
1697 DataTable ldtResultado =
new DataTable();
1699 tcNombreBBDDMin = tcNombreBBDDMin.Trim();
1700 tcNombreBBDDMax = tcNombreBBDDMax.Trim();
1702 if (
String.IsNullOrWhiteSpace(tcNombreBBDDMin) ||
String.IsNullOrWhiteSpace(tcNombreBBDDMax))
1705 string lcSufijo2Letras =
"";
1707 if (tcNombreBBDDMin.Length == tcNombreBBDDMax.Length)
1709 int lnLenNameBd = tcNombreBBDDMin.Length;
1710 lcSufijo2Letras = tcNombreBBDDMin.Substring(lnLenNameBd - 2, 2);
1713 lcSql =
"IF EXISTS (SELECT 1 FROM [master].sys.databases " +
1714 " WHERE name >= " + DB.SQLString(tcNombreBBDDMin) +
" and name <= " + DB.SQLString(tcNombreBBDDMax) +
1715 " and right(name,2)=" + DB.SQLString(lcSufijo2Letras) +
") " +
1716 " SELECT 1 AS ExisteBBDD ELSE SELECT 0 AS ExisteBBDD ";
1718 llOk = DB.SQLExec(lcSql, ref ldtResultado);
1720 if (llOk && ldtResultado.Rows.Count > 0)
1721 llOk = Convert.ToBoolean(ldtResultado.Rows[0][
"ExisteBBDD"]);
1735 private static void Proc_Adicional_ComunesGrNuevo()
1737 string lcSql=
"UPDATE "+DB.SQLDatabaseReal(GrupoempTools._DbComunesGrNuevo,
"ejercici")+
" SET "+
1738 "RUTA=LEFT(RUTA,4)+'@@', RUTASER=LEFT(RUTASER,4)+'@@', CONEXION=LEFT(CONEXION,4)+'@@'";
1741 lcSql =
"UPDATE " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrNuevo,
"modulos") +
" SET " +
1742 "NOM_CONEX=LEFT(NOM_CONEX,6)+'@@', TABLAS=LEFT(TABLAS,6)+'@@'";
1752 private static bool CrearGrupo_RestoreBds()
1757 Guardar_Mensaje(
"INICIO PROCESO DE RESTAURACIÓN DE BASES DE DATOS."+Environment.NewLine);
1761 llOk = GrupoempTools.Restore_Bd(GrupoempTools._DbComunesGrOrigen, GrupoempTools._DbComunesGrNuevo,
"COMUNES");
1773 GrupoempTools.Proc_Adicional_ComunesGrNuevo();
1777 llOk = GrupoempTools.Restore_Bd(GrupoempTools._DbEjerGrOrigen, GrupoempTools._DbEjerGrNuevo,
"EJERCICIO");
1785 string lcDbAddOnPripal =
"", lcNewBdAddon =
"", lcNombreAddon=
"";
1786 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrOrigen.Rows)
1788 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
1789 lcDbAddOnPripal = Convert.ToString(loRow[
"nom_conex"]).Trim();
1791 lcNewBdAddon = lcDbAddOnPripal.Substring(0, lcDbAddOnPripal.Length - 2);
1792 lcNewBdAddon = lcNewBdAddon + GrupoempTools._SufiBdEjerGrNuevo;
1795 llOk = GrupoempTools.Restore_Bd(lcDbAddOnPripal, lcNewBdAddon,
"el módulo del Add-On de " + lcNombreAddon);
1803 Guardar_Mensaje(
"Proceso de restauración de base de datos finalizado correctamente."+Environment.NewLine);
1804 Guardar_Mensaje(
"FIN PROCESO DE RESTAURACIÓN DE BASES DE DATOS."+Environment.NewLine);
1814 private static bool CrearGrupo_BorrarBdsNuevas()
1823 if (!
string.IsNullOrWhiteSpace(GrupoempTools._DbComunesGrNuevo))
1825 if (DB._SQLExisteBBDD(GrupoempTools._DbComunesGrNuevo))
1829 Guardar_Mensaje(
"Proceso de creación de grupo no se pudo ejecutar correctamente, eliminando base de datos de COMUNES del nuevo grupo que se pretendía crear " + GrupoempTools._DbComunesGrNuevo +
" debido a un fallo en el proceso.");
1831 llOk2 = DB._DBRemove(
new SqlConnection(DB.Conexion), GrupoempTools._DbComunesGrNuevo);
1832 llOk = llOk2 && llOk;
1837 Guardar_Mensaje(
"Base de datos de COMUNES " + GrupoempTools._DbComunesGrNuevo +
" eliminada correctamente.");
1839 Guardar_Mensaje(
"Base de datos de COMUNES " + GrupoempTools._DbComunesGrNuevo +
" no se pudo eliminar correctamente.");
1850 if (!
string.IsNullOrWhiteSpace(GrupoempTools._DbEjerGrNuevo))
1852 if (DB._SQLExisteBBDD(GrupoempTools._DbEjerGrNuevo))
1856 Guardar_Mensaje(
"Proceso de creación de grupo no se pudo ejecutar correctamente, eliminando base de datos de EJERCICIO del nuevo grupo que se pretendía crear " + GrupoempTools._DbEjerGrNuevo +
" debido a un fallo en el proceso.");
1858 llOk2 = DB._DBRemove(
new SqlConnection(DB.Conexion), GrupoempTools._DbEjerGrNuevo);
1859 llOk = llOk2 && llOk;
1864 Guardar_Mensaje(
"Base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo +
" eliminada correctamente.");
1866 Guardar_Mensaje(
"Base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo +
" no se pudo eliminar correctamente.");
1878 if (GrupoempTools._dtBdAddonsGrNuevo is DataTable && GrupoempTools._dtBdAddonsGrNuevo.Rows.Count > 0)
1880 string lcBdAddon =
"", lcNombreAddon=
"";
1881 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrNuevo.Rows)
1883 lcBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
1884 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
1886 if (!
string.IsNullOrWhiteSpace(lcBdAddon))
1888 if (DB._SQLExisteBBDD(lcBdAddon))
1892 Guardar_Mensaje(
"Proceso de creación de grupo no se pudo ejecutar correctamente, eliminando base de datos del ADDON del "+lcNombreAddon+
" " + lcBdAddon +
" debido a un fallo en el proceso.");
1894 llOk2 = DB._DBRemove(
new SqlConnection(DB.Conexion), lcBdAddon);
1895 llOk = llOk2 && llOk;
1900 Guardar_Mensaje(
"Base de datos de AddOn de " + lcNombreAddon +
" " + lcBdAddon +
" eliminada correctamente.");
1902 Guardar_Mensaje(
"Base de datos de Addon de " + lcNombreAddon +
" " + lcBdAddon +
" no se pudo eliminar correctamente.");
1922 private static bool CrearGrupo_BackupsBds()
1926 ActualizarBarraProgreso();
1929 Guardar_Mensaje(
"INICIO PROCESO COPIA DE BASES DE DATOS."+Environment.NewLine);
1932 llOk = GrupoempTools.Backup_Bd(GrupoempTools._DbComunesGrOrigen,
"COMUNES");
1933 ActualizarBarraProgreso();
1939 llOk = GrupoempTools.Backup_Bd(GrupoempTools._DbEjerGrOrigen,
"EJERCICIO");
1940 ActualizarBarraProgreso();
1946 string lcBdAddon =
"", lcNombreAddon =
"";
1947 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrOrigen.Rows)
1949 lcBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
1950 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
1952 llOk = GrupoempTools.Backup_Bd(lcBdAddon,
"Add-On " + lcNombreAddon);
1956 ActualizarBarraProgreso();
1960 Guardar_Mensaje(
"Proceso de copia de bases de datos del grupo origen finalizado correctamente."+Environment.NewLine);
1961 Guardar_Mensaje(
"FIN PROCESO COPIA DE BASES DE DATOS."+Environment.NewLine);
1963 ActualizarBarraProgreso();
1972 private static bool CrearEjercicio_CrearTablasBd()
1977 Guardar_Mensaje(
"INICIO PROCESO CREACION DE TABLAS EN LA BASES DE DATOS DEL NUEVO EJERCICIO." + Environment.NewLine);
1981 llOk = GrupoempTools.CrearGrupoEjer_CrearTablasBd(
"GESTION");
1986 Guardar_Mensaje(
"FIN PROCESO CREACION DE TABLAS EN LA BASES DE DATOS DEL NUEVO EJERCICIO." + Environment.NewLine);
1995 private static bool CrearEjercicio_CrearBd()
2003 Guardar_Mensaje(
"Creando base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo);
2005 if (DB._SQLExisteBBDD(_DbEjerGrNuevo))
2007 _Error_Message =
"La base de datos de EJERCICIO que se pretende crear " + GrupoempTools._DbEjerGrNuevo +
" ya existe, imposible crear base de datos de EJERCICIO.";
2009 Guardar_Mensaje(_Error_Message);
2014 llOk = DB._DBCreate(GrupoempTools._DbEjerGrNuevo.Trim());
2017 _Error_Message =
"Se produjo un error al crear la base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo;
2019 Guardar_Mensaje(_Error_Message);
2023 lcSql =
"ALTER AUTHORIZATION ON DATABASE::[" + GrupoempTools._DbEjerGrNuevo +
"] TO " + GrupoempTools._UserPropBdGrNuevo;
2027 Guardar_Mensaje(
"Base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo+
" creada correctamente.");
2038 private static bool CrearGrupo_CrearBds()
2041 string lcNomBd =
"", lcNombreAddon =
"", lcSql=
"";
2046 Guardar_Mensaje(
"Creando base de datos de COMUNES " + GrupoempTools._DbComunesGrNuevo);
2049 if (DB._SQLExisteBBDD(GrupoempTools._DbComunesGrNuevo.Trim()))
2051 _Error_Message =
"La base de datos de COMUNES " + GrupoempTools._DbComunesGrNuevo +
" ya existe, imposible crear base de datos.";
2053 Guardar_Mensaje(_Error_Message);
2058 llOk = DB._DBCreate(GrupoempTools._DbComunesGrNuevo.Trim());
2061 _Error_Message =
"Se produjo un error al crear la base de datos de COMUNES " + GrupoempTools._DbComunesGrNuevo;
2063 Guardar_Mensaje(_Error_Message);
2067 lcSql =
"ALTER AUTHORIZATION ON DATABASE::[" + GrupoempTools._DbComunesGrNuevo +
"] TO " + GrupoempTools._UserPropBdGrNuevo;
2077 Guardar_Mensaje(
"Creando base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo);
2080 if (DB._SQLExisteBBDD(GrupoempTools._DbEjerGrNuevo.Trim()))
2082 _Error_Message =
"La base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo +
" ya existe, imposible crear base de datos.";
2084 Guardar_Mensaje(_Error_Message);
2089 llOk = DB._DBCreate(GrupoempTools._DbEjerGrNuevo.Trim());
2092 _Error_Message =
"Se produjo un error al crear la base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo;
2094 Guardar_Mensaje(_Error_Message);
2098 lcSql =
"ALTER AUTHORIZATION ON DATABASE::[" + GrupoempTools._DbEjerGrNuevo +
"] TO " + GrupoempTools._UserPropBdGrNuevo;
2109 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrNuevo.Rows)
2111 lcNomBd = Convert.ToString(loRow[
"nom_conex"]).Trim();
2112 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
2115 Guardar_Mensaje(
"Creando base de datos de ADDON " + lcNombreAddon+
" "+lcNomBd);
2118 if (DB._SQLExisteBBDD(lcNomBd))
2120 _Error_Message =
"La base de datos de ADDON " + lcNombreAddon +
" " + lcNomBd +
" ya existe, imposible crear base de datos.";
2122 Guardar_Mensaje(_Error_Message);
2127 llOk = DB._DBCreate(lcNomBd);
2130 _Error_Message =
"Se produjo un error al crear la base de datos del ADDON " + lcNombreAddon +
" " + lcNomBd;
2132 Guardar_Mensaje(_Error_Message);
2136 lcSql =
"ALTER AUTHORIZATION ON DATABASE::[" + lcNomBd +
"] TO " + GrupoempTools._UserPropBdGrNuevo;
2156 private static bool CrearGrupoEjer_CrearIndices_ValsDefecto_Tabla(
string tcBdOrigen,
string tcBdNueva,
string tcTabla, DataTable tdtIndices, DataTable tdtValsDefecto)
2158 bool llOk =
false, llEsPrimario=
false;
2159 string lcSql =
"", lcNombreIndice =
"", lcExpresionIndice=
"", lcNombreConstraintValDef=
"", lcValorDefecto=
"", lcCampoDefecto=
"", lcFiltroTabla=
"", lcTabla=
"";
2161 tcTabla = tcTabla.ToLower().Trim();
2162 tcBdNueva = tcBdNueva.ToLower().Trim();
2163 tcBdOrigen = tcBdOrigen.ToLower().Trim();
2169 lcFiltroTabla = !
string.IsNullOrEmpty(tcTabla.Trim()) ?
"tabla='" + tcTabla +
"'" :
"";
2171 DataRow[] laRows = tdtIndices.Select(lcFiltroTabla,
"tabla, indice asc, indice_orden asc");
2174 while (ln_i<laRows.GetLength(0))
2176 lcNombreIndice = Convert.ToString(laRows[ln_i][
"indice"]).Trim();
2177 llEsPrimario = Convert.ToBoolean(laRows[ln_i][
"indice_primario"]);
2178 lcTabla = Convert.ToString(laRows[ln_i][
"tabla"]).Trim();
2180 lcExpresionIndice =
"";
2181 while (ln_i<laRows.GetLength(0) && Convert.ToString(laRows[ln_i][
"indice"]).Trim() == lcNombreIndice)
2183 lcExpresionIndice +=
" ["+Convert.ToString(laRows[ln_i][
"columna"]).Trim()+
"] ASC, ";
2186 if (!
string.IsNullOrWhiteSpace(lcExpresionIndice))
2188 lcExpresionIndice = lcExpresionIndice.Trim();
2189 lcExpresionIndice = lcExpresionIndice.Substring(0, lcExpresionIndice.Length - 1);
2195 lcNombreIndice = Regex.Replace(lcNombreIndice, tcBdOrigen, tcBdNueva, RegexOptions.IgnoreCase);
2196 lcSql +=
" ALTER TABLE [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"] ADD CONSTRAINT [" + lcNombreIndice +
"] " +
2197 " PRIMARY KEY CLUSTERED ( "+lcExpresionIndice+
") WITH ( STATISTICS_NORECOMPUTE = OFF, "+
2198 " IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [eurowind]; ";
2202 lcSql +=
"CREATE NONCLUSTERED INDEX [" + lcNombreIndice +
"] ON [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"] " +
2203 "("+lcExpresionIndice+
") WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, "+
2204 "IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [eurowini]; ";
2210 if (!
string.IsNullOrWhiteSpace(lcSql))
2212 llOk = DB.SQLExec(lcSql);
2215 if (
string.IsNullOrEmpty(tcTabla))
2216 _Error_Message =
"Error al crear los índices de la base de datos " + tcBdNueva;
2218 _Error_Message =
"Error al crear los índices para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2220 Guardar_Mensaje(_Error_Message);
2228 laRows = tdtValsDefecto.Select(lcFiltroTabla);
2231 foreach (DataRow loRow
in laRows)
2233 lcNombreConstraintValDef = Convert.ToString(loRow[
"constr_nombre"]).Trim();
2234 lcValorDefecto = Convert.ToString(loRow[
"constr_defin"]).Trim();
2235 lcCampoDefecto = Convert.ToString(loRow[
"campo"]).Trim();
2236 lcTabla = Convert.ToString(loRow[
"tabla"]).Trim();
2239 lcNombreConstraintValDef = Regex.Replace(lcNombreConstraintValDef, tcBdOrigen, tcBdNueva, RegexOptions.IgnoreCase);
2241 lcSql +=
" ALTER TABLE [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"] ADD CONSTRAINT [" + lcNombreConstraintValDef +
"] " +
2242 " DEFAULT ("+lcValorDefecto+
") FOR ["+lcCampoDefecto+
"]; ";
2245 if (!
string.IsNullOrWhiteSpace(lcSql))
2248 llOk = DB.SQLExec(lcSql);
2252 if (
string.IsNullOrEmpty(tcTabla))
2253 _Error_Message =
"Error al crear los valores por defecto de la base de datos " + tcBdNueva;
2255 _Error_Message =
"Error al crear los valores por defecto para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2257 Guardar_Mensaje(_Error_Message);
2304 private static bool CrearGrupoEjer_EliminarIndices_ValsDefecto_Tabla(
string tcBdOrigen,
string tcBdNueva,
string tcTabla, DataTable tdtIndices, DataTable tdtValsDefecto)
2306 bool llOk =
false, llEsPrimario =
false;
2307 string lcSql =
"", lcNombreIndice =
"", lcNombreConstraintValDef =
"", lcValorDefecto =
"", lcCampoDefecto =
"", lcTabla =
"", lcFiltroTabla =
"";
2309 tcTabla = tcTabla.ToLower().Trim();
2310 tcBdNueva = tcBdNueva.ToLower().Trim();
2311 tcBdOrigen = tcBdOrigen.ToLower().Trim();
2315 lcFiltroTabla = !
string.IsNullOrEmpty(tcTabla.Trim()) ?
"tabla='" + tcTabla +
"'" :
"";
2318 DataView dtView =
new DataView(tdtIndices);
2319 DataTable dtDistinctValues = dtView.ToTable(
true,
"tabla",
"indice",
"indice_primario");
2320 DataRow[] laRows = dtDistinctValues.Select(lcFiltroTabla,
"tabla, indice asc");
2322 foreach (DataRow loRow
in laRows)
2324 llEsPrimario = Convert.ToBoolean(loRow[
"indice_primario"]);
2325 lcNombreIndice = Convert.ToString(loRow[
"indice"]).Trim();
2326 lcTabla = Convert.ToString(loRow[
"tabla"]).Trim();
2330 lcNombreIndice = lcNombreIndice.Replace(tcBdOrigen, tcBdNueva);
2331 lcSql = lcSql +
"ALTER TABLE [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"] DROP CONSTRAINT [" + lcNombreIndice +
"]; ";
2335 lcSql = lcSql +
"DROP INDEX [" + lcNombreIndice +
"] ON [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"]; ";
2341 if (!
string.IsNullOrWhiteSpace(lcSql))
2343 llOk = DB.SQLExec(lcSql);
2346 if (
string.IsNullOrEmpty(tcTabla))
2347 _Error_Message =
"Error al eliminar los índices de la base de datos " + tcBdNueva;
2349 _Error_Message =
"Error al eliminar los índices para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2351 Guardar_Mensaje(_Error_Message);
2359 laRows = tdtValsDefecto.Select(lcFiltroTabla);
2361 foreach (DataRow loRow
in laRows)
2363 lcNombreConstraintValDef = Convert.ToString(loRow[
"constr_nombre"]).Trim();
2364 lcValorDefecto = Convert.ToString(loRow[
"constr_defin"]).Trim();
2365 lcCampoDefecto = Convert.ToString(loRow[
"campo"]).Trim();
2366 lcTabla = Convert.ToString(loRow[
"tabla"]).Trim();
2368 lcNombreConstraintValDef = lcNombreConstraintValDef.Replace(tcBdOrigen, tcBdNueva);
2370 lcSql +=
" ALTER TABLE [" + tcBdNueva +
"].[dbo].[" + lcTabla +
"] DROP CONSTRAINT [" + lcNombreConstraintValDef +
"] ; ";
2373 if (!
string.IsNullOrWhiteSpace(lcSql))
2376 llOk = DB.SQLExec(lcSql);
2380 if (
string.IsNullOrEmpty(tcTabla))
2381 _Error_Message =
"Error al eliminar los valores por defecto de la base de datos " + tcBdNueva;
2383 _Error_Message =
"Error al eliminar los valores por defecto para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2385 Guardar_Mensaje(_Error_Message);
2402 private static bool CrearGrupoEjer_Actualizar_Indices(
string tcBdOrigen,
string tcBdNueva,
string tcTabla, DataTable tdtIndices)
2405 string lcSql =
"", lcNombreIndice =
"", lcFiltro =
"", lcNombreIndiceNuevo =
"";
2407 tcTabla = tcTabla.ToLower().Trim();
2408 tcBdNueva = tcBdNueva.ToLower().Trim();
2409 tcBdOrigen = tcBdOrigen.ToLower().Trim();
2415 lcFiltro =
"indice_primario " + (!
string.IsNullOrEmpty(tcTabla.Trim()) ?
" and tabla='" + tcTabla +
"'" :
"");
2418 DataView dtView =
new DataView(tdtIndices);
2419 DataTable dtDistinctValues = dtView.ToTable(
true,
"tabla",
"indice",
"indice_primario");
2420 DataRow[] laRows = dtDistinctValues.Select(lcFiltro,
"tabla, indice asc");
2422 foreach (DataRow loRow
in laRows)
2424 lcNombreIndice = Convert.ToString(loRow[
"indice"]).Trim();
2427 lcNombreIndiceNuevo = Regex.Replace(lcNombreIndice, tcBdOrigen, tcBdNueva, RegexOptions.IgnoreCase);
2429 lcSql = lcSql +
" exec sp_rename '" + lcNombreIndice +
"', '" + lcNombreIndiceNuevo +
"', 'object'";
2433 if (!
string.IsNullOrWhiteSpace(lcSql))
2435 lcSql =
"use [" + tcBdNueva +
"]; " + lcSql;
2437 llOk = DB.SQLExec(lcSql);
2440 if (
string.IsNullOrEmpty(tcTabla))
2441 _Error_Message =
"Error al renombrar los índices de la base de datos " + tcBdNueva;
2443 _Error_Message =
"Error al renombrar los índices para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2445 Guardar_Mensaje(_Error_Message);
2463 private static bool CrearGrupoEjer_Actualizar_ValoresDefecto(
string tcBdOrigen,
string tcBdNueva,
string tcTabla, DataTable tdtValsDefecto)
2466 string lcSql =
"", lcNombreConstraintValDef =
"", lcFiltroTabla =
"", lcNombreConstraintNuevo =
"";
2468 tcTabla = tcTabla.ToLower().Trim();
2469 tcBdNueva = tcBdNueva.ToLower().Trim();
2470 tcBdOrigen = tcBdOrigen.ToLower().Trim();
2475 lcFiltroTabla = !
string.IsNullOrEmpty(tcTabla.Trim()) ?
"tabla='" + tcTabla +
"'" :
"";
2477 DataRow[] laRows = tdtValsDefecto.Select(lcFiltroTabla);
2480 foreach (DataRow loRow
in laRows)
2482 lcNombreConstraintValDef = Convert.ToString(loRow[
"constr_nombre"]).Trim();
2486 lcNombreConstraintNuevo = Regex.Replace(lcNombreConstraintValDef, tcBdOrigen, tcBdNueva, RegexOptions.IgnoreCase);
2488 lcSql = lcSql +
" exec sp_rename '" + lcNombreConstraintValDef +
"', '" + lcNombreConstraintNuevo +
"', 'object'";
2493 if (!
string.IsNullOrWhiteSpace(lcSql))
2495 lcSql =
"use [" + tcBdNueva +
"]; " + lcSql;
2497 llOk = DB.SQLExec(lcSql);
2500 if (
string.IsNullOrEmpty(tcTabla))
2501 _Error_Message =
"Error al renombrar los valores por defecto de la base de datos " + tcBdNueva;
2503 _Error_Message =
"Error al renombrar los valores por defecto para la tabla " + tcTabla +
" de la base de datos " + tcBdNueva;
2505 Guardar_Mensaje(_Error_Message);
2523 private static bool CrearGrupoEjer_CrearTablasBd(
string tcTipoBd,
string tcNombreAddon=
"",
string tcBdAddonOri=
"",
string tcBdAddonNuevo=
"")
2527 string lcSql =
"", lcTabla =
"";
2528 string lcBdOrigen=
"", lcBdNueva =
"";
2533 lcBdOrigen = GrupoempTools._DbComunesGrOrigen;
2534 lcBdNueva = GrupoempTools._DbComunesGrNuevo;
2537 lcBdOrigen = GrupoempTools._DbEjerGrOrigen;
2538 lcBdNueva = GrupoempTools._DbEjerGrNuevo;
2541 lcBdOrigen = tcBdAddonOri;
2542 lcBdNueva = tcBdAddonNuevo;
2553 Guardar_Mensaje(
"INICIO PROCESO DE CREACION DE TABLAS EN LA BASE DE DATOS DE " + tcTipoBd +
" [" + lcBdNueva +
"] " + tcNombreAddon + Environment.NewLine);
2559 DataTable ldtTablasNoborr =
new DataTable();
2560 lcSql =
"select tabla from " + DB.SQLDatabaseReal(tcTipoBd ==
"COMUNES" || tcTipoBd ==
"GESTION" ? _DbComunesGrOrigen : tcBdAddonOri,
"tabsys") +
" " +
2561 (tcTipoBd ==
"COMUNES" || tcTipoBd ==
"GESTION" ?
"where basedatos='" + tcTipoBd +
"'" :
"");
2562 DB.SQLExec(lcSql, ref ldtTablasNoborr);
2563 List<string> lstTablasNoBorr = ldtTablasNoborr.AsEnumerable().Select(x => x[0].ToString().Trim().ToUpper()).ToList();
2566 Guardar_Mensaje(
"Detectadas " + lstTablasNoBorr.Count.ToString() +
" tablas de sistema en la base de datos de " + tcTipoBd +
" (" + lcBdOrigen +
")" + tcNombreAddon +
" cuyo contenido no debe borrarse.");
2575 List<string> lstTablasEspeciales = null;
2577 lstTablasEspeciales = GrupoempTools.CrearGrupoEjer_Tablas_Especiales(tcTipoBd, tcNombreAddon);
2585 Guardar_Mensaje(
"Consultando tablas existentes en la base de datos de " + tcTipoBd +
" " + tcNombreAddon +
" " + lcBdOrigen);
2587 DataTable ldtTablasBd =
new DataTable();
2590 lcSql =
"SELECT table_name as tabla " +
2591 "FROM [" + lcBdOrigen +
"].INFORMATION_SCHEMA.TABLES " +
2592 "ORDER BY table_name ";
2593 DB.SQLExec(lcSql, ref ldtTablasBd);
2595 catch (Exception loEx)
2597 _Error_Message =
"No se puedieron obtener las tablas existentes en la base de datos de " + tcTipoBd +
" " + lcBdOrigen;
2600 Guardar_Mensaje(_Error_Message);
2601 Guardar_Mensaje(loEx.Message);
2612 DataTable ldtIndicesBdOri =
new DataTable();
2613 llOk = DB._DbIndicesCampos(lcBdOrigen, ref ldtIndicesBdOri);
2616 _Error_Message =
"No se pudieron obtener los índices de las tablas de la base de datos de " + tcTipoBd +
" " + lcBdOrigen;
2618 Guardar_Mensaje(_Error_Message);
2624 DataTable ldtValsDefecto =
new DataTable();
2625 llOk = DB._DbValoresDefectoCampos(lcBdOrigen, ref ldtValsDefecto);
2628 _Error_Message =
"No se pudieron obtener los valores por defecto de las tablas de la base de datos de " + tcTipoBd +
" " + lcBdOrigen;
2630 Guardar_Mensaje(_Error_Message);
2638 bool llConDatos =
true;
2639 foreach (DataRow loRow
in ldtTablasBd.Rows)
2641 lcTabla = Convert.ToString(loRow[
"tabla"]).Trim().ToUpper();
2643 llConDatos = lstTablasNoBorr.Contains(lcTabla) || (lstTablasEspeciales != null ? lstTablasEspeciales.Contains(lcTabla) :
false);
2646 Guardar_Mensaje(
"Creando tabla " + (llConDatos ?
"con datos" :
"sin datos") + lcBdNueva +
"." + lcTabla);
2651 DB.SQLExec(
"select "+ (llConDatos==
false ?
" top 0 " :
"")+
" * into " + DB.SQLDatabaseReal(lcBdNueva, lcTabla.ToLower()) +
" from " + DB.SQLDatabaseReal(lcBdOrigen, lcTabla));
2653 catch (Exception loEx)
2655 _Error_Message =
"No se pudo crear la tabla "+lcTabla+
" "+ ( llConDatos ?
"con datos " :
"sin datos ")+
" en la base de datos "+ lcBdNueva +
2656 " a partir de la tabla " +lcTabla+
" de la base de datos "+lcBdOrigen;
2659 Guardar_Mensaje(_Error_Message);
2660 Guardar_Mensaje(loEx.Message);
2666 llOk = GrupoempTools.CrearGrupoEjer_CrearIndices_ValsDefecto_Tabla(lcBdOrigen,lcBdNueva, lcTabla, ldtIndicesBdOri, ldtValsDefecto);
2670 _Error_Message =
"No se pudiero crear los índices y asignar los valores por defecto correspondientes en la tabla de la base de datos de " + tcTipoBd +
" " + lcBdNueva +
" " + lcTabla;
2672 Guardar_Mensaje(_Error_Message);
2679 Guardar_Mensaje(Environment.NewLine);
2680 Guardar_Mensaje(
"FIN PROCESO DE CREACION DE TABLAS EN LA BASE DE DATOS DE " + tcTipoBd +
" [" + lcBdNueva +
"] " + tcNombreAddon + Environment.NewLine);
2691 private static bool CrearGrupo_CrearTablasBds()
2695 ActualizarBarraProgreso();
2698 Guardar_Mensaje(
"INICIO PROCESO CREACION DE TABLAS EN LAS BASES DE DATOS DEL NUEVO GRUPO." + Environment.NewLine);
2702 llOk = GrupoempTools.CrearGrupoEjer_CrearTablasBd(
"COMUNES");
2703 ActualizarBarraProgreso();
2709 llOk = llOk && GrupoempTools.CrearGrupoEjer_CrearTablasBd(
"GESTION");
2710 ActualizarBarraProgreso();
2716 string lcNombreAddon =
"", lcNewBdAddon =
"", lcSufijoGrOrigen=
"",lcOriBdAddon=
"";
2717 lcSufijoGrOrigen = GrupoempTools._DbEjerGrOrigen.Trim().Substring(4,2);
2718 foreach (DataRow loRow
in _dtBdAddonsGrNuevo.Rows)
2720 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
2721 lcNewBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
2723 lcOriBdAddon = lcNewBdAddon.Substring(0,6)+lcSufijoGrOrigen;
2726 llOk = GrupoempTools.CrearGrupoEjer_CrearTablasBd(
"ADDON", lcNombreAddon, lcOriBdAddon, lcNewBdAddon);
2730 ActualizarBarraProgreso();
2733 Guardar_Mensaje(
"FIN PROCESO CREACION DE TABLAS EN LAS BASES DE DATOS DEL NUEVO GRUPO." + Environment.NewLine);
2735 ActualizarBarraProgreso();
2745 private static bool CrearGrupo_AjustarDatosBds()
2748 string lcOrigenBdAddon =
string.Empty;
2750 ActualizarBarraProgreso();
2753 Guardar_Mensaje(
"INICIO PROCESO AJUSTE DE DATOS EN LAS BASES DE DATOS DEL NUEVO GRUPO."+Environment.NewLine);
2757 llOk = GrupoempTools.AjustarDatos_Bd(_DbComunesGrNuevo,
"COMUNES");
2758 ActualizarBarraProgreso();
2763 llOk = Restore_Indices_ValoresDefecto(_DbComunesGrOrigen, _DbComunesGrNuevo);
2764 ActualizarBarraProgreso();
2770 llOk = llOk && GrupoempTools.AjustarDatos_Bd(_DbEjerGrNuevo,
"GESTION");
2771 ActualizarBarraProgreso();
2776 llOk = Restore_Indices_ValoresDefecto(_DbEjerGrOrigen, _DbEjerGrNuevo);
2777 ActualizarBarraProgreso();
2783 string lcNombreAddon =
"", lcNewBdAddon =
"";
2784 foreach (DataRow loRow
in _dtBdAddonsGrNuevo.Rows)
2786 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
2787 lcNewBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
2790 llOk = GrupoempTools.AjustarDatos_Bd(lcNewBdAddon,
"ADDON", lcNombreAddon);
2795 DataRow [] loRowViejo = _dtBdAddonsGrOrigen.Select(
"nombre = '" + lcNombreAddon +
"'");
2796 if (loRowViejo.Count() > 0)
2798 lcOrigenBdAddon = Convert.ToString(loRowViejo[0][
"nom_conex"]).Trim();
2800 if (!
string.IsNullOrEmpty(lcOrigenBdAddon))
2803 llOk = Restore_Indices_ValoresDefecto(lcOrigenBdAddon, lcNewBdAddon);
2809 ActualizarBarraProgreso();
2813 if (GrupoempTools._LongitudesEstandar ==
false)
2816 Guardar_Mensaje(
"CREACIÓN DEL NUEVO GRUPO CON LAS MISMAS LONGITUDES DE CAMPO QUE EN EL GRUPO ORIGEN." + Environment.NewLine);
2821 llOk = CrearGrupo_Longitudes();
2825 ActualizarBarraProgreso();
2828 AjustarTablaCuentas_Paso2();
2829 ActualizarBarraProgreso();
2833 Guardar_Mensaje(
"PROCESO DE AJUSTE DE DATOS EN LAS BASES DE DATOS DEL NUEVO GRUPO FINALIZADO CORRECTAMENTE."+Environment.NewLine);
2834 Guardar_Mensaje(
"FIN PROCESO AJUSTE DE DATOS EN LAS BASES DE DATOS DEL NUEVO GRUPO."+Environment.NewLine);
2837 ActualizarBarraProgreso();
2849 private static bool CrearGrupo_AjustarDatos_TablaComunes(
string tcTabla,
string tcNombreBaseDatos)
2852 DataTable ldtAuxiliar =
new DataTable();
2867 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CODCOM") +
" " +
2868 "SET EMAILO365='', IDCALO365='', TOKENO365='', RRIDSO365='', CMPCALO365='', BROWSER=0, PRCLIENT=0, PLANTILLAS=0 ";
2873 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"EJERCICI"));
2875 lcSql =
"INSERT INTO "+ DB.SQLDatabaseReal(tcNombreBaseDatos,
"EJERCICI") +
" ([ANY], RUTA, RUTASER, CONEXION, PERIODOINI, PERIODOFIN, PREDET, ANTERIOR) VALUES (" +
2876 "'" + _EjerNuevo +
"', "+
2877 "'" + _DbEjerGrNuevo +
"', " +
2878 "'" + _DbEjerGrNuevo +
"', " +
2879 "'" + _DbEjerGrNuevo +
"', " +
2880 DB.SQLString(_FechaIniEjerNuevo) +
", "+
2881 DB.SQLString(_FechaFinEjerNuevo) +
", "+
2882 DB.SQLTrue() +
", "+
2895 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"LETRAS"));
2897 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"LETRAS") +
" (CODIGO, NOMBRE) VALUES ('SF','SERIE DEFECTO')";
2898 lcSql +=
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"LETRAS") +
" (CODIGO, NOMBRE) VALUES ('SD','SERIE ALBARANES AUTOMATICOS')";
2909 string lcCadenaWhereAddons =
"";
2910 foreach (
string lcAddon
in GrupoempTools._AddonsInstal)
2911 lcCadenaWhereAddons +=
" NOMBRE != '" + lcAddon.Trim().ToUpper() +
"' AND ";
2913 if (!
string.IsNullOrWhiteSpace(lcCadenaWhereAddons))
2915 lcCadenaWhereAddons = lcCadenaWhereAddons.Substring(0, lcCadenaWhereAddons.Length - 4);
2917 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MODULOS") +
" " +
2918 "WHERE " + lcCadenaWhereAddons;
2924 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MODULOS") +
" " +
2925 "SET CONTROL='', ID=0," +
2926 "VISIBLE=" + DB.SQLFalse() +
"," +
2927 "INSTALADO=" + DB.SQLFalse() +
",TIPO=0 "+
2928 "WHERE (TIPO != 4 OR NOMBRE = 'ECOMMERCE' OR NOMBRE = 'PREVENTA')";
2932 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MODULOS") +
" " +
2933 "SET CONTROL='', ID=0," +
2934 "VISIBLE=" + DB.SQLTrue() +
"," +
2935 "INSTALADO=" + DB.SQLTrue() +
" " +
2936 "WHERE TIPO = 4 AND NOMBRE <> 'ECOMMERCE' AND NOMBRE <> 'PREVENTA'";
2939 string lcNombreAddon =
"";
2940 string lcBdAddon =
"";
2941 string lcComentario =
"";
2943 foreach (DataRow loRow
in _dtBdAddonsGrNuevo.Rows)
2945 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
2946 lcBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim().ToUpper();
2947 lcComentario =
"Instalación del módulo de " + lcNombreAddon +
" Fecha: " + DateTime.Today.Date.ToString(
"dd/MM/yy");
2949 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MODULOS") +
" " +
2950 "SET NOM_CONEX='" + lcBdAddon +
"', "+
2951 "TABLAS='" + lcBdAddon +
"', " +
2952 "COMENTARIO='" + lcComentario +
"' "+
2953 "WHERE NOMBRE='" + lcNombreAddon +
"'";
2960 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPERARIO"));
2962 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPERARIO") +
" (CODIGO, NOMBRE) VALUES ('01','OPERARIO PRINCIPAL')");
2967 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPC_USER"));
2969 string lcBdOpcUser = DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPC_USER");
2970 lcSql =
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('01','01',1); ";
2971 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('02','01',1); ";
2972 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('03','01',0); ";
2973 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('04','01',0); ";
2974 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('05','01',0); ";
2975 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('06','01',1); ";
2976 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('07','01',1); ";
2977 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('08','01',1); ";
2978 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('09','01',0); ";
2979 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('10','01',0); ";
2980 lcSql +=
"insert into " + lcBdOpcUser +
" (opctpv, operario, valor) values ('11','01',0); ";
2988 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE EMPRESA != '"+_EmpresaGrNuevo+
"' ");
2991 if (tcTabla ==
"OPCEMP")
2995 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
2996 "SET ESTADO = " + DB.SQLFalse() +
" " +
2997 "WHERE EMPRESA = '" + _EmpresaGrNuevo +
"' ";
3004 List<int> lstOpcFlagsActivar =
new List<int>() { 9003, 9040, 9100, 9110, 10023, 10035, 10314, 10330, 10339, 10405, 10920,
3005 20008, 20014, 30003, 30015, 30020, 31017, 34003, 40002,
3006 50002, 50003, 14030, 20050, 30010, 30203 };
3007 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
3008 "SET ESTADO = " + DB.SQLTrue() +
" " +
3009 "WHERE EMPRESA = '" + _EmpresaGrNuevo +
"' AND (";
3011 foreach (
int lnOpc
in lstOpcFlagsActivar)
3012 lcSql +=
" TIPO_OPC = " + lnOpc.ToString() +
" OR ";
3014 lcSql = lcSql.Substring(0, lcSql.Length - 3) +
")";
3019 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
3020 "where empresa='" + _EmpresaGrNuevo +
"' and tipo_opc=9008", ref ldtAuxiliar);
3021 if (ldtAuxiliar.Rows.Count == 0)
3024 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" (EMPRESA,TIPO_OPC,ESTADO) " +
3025 "VALUES ('" + _EmpresaGrNuevo +
"',9008,"+ ( GrupoempTools._CfgEjerPartiGrNuevo ? DB.SQLTrue() : DB.SQLFalse() )+
")");
3030 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
3031 "SET ESTADO="+ ( GrupoempTools._CfgEjerPartiGrNuevo ? DB.SQLTrue() : DB.SQLFalse() )+
" "+
3032 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"' AND TIPO_OPC=9008";
3042 bool llValorOpcFlag =
false;
3044 DB.SQLExec(
"select estado from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"OPCEMP") +
" " +
3045 "where empresa='" + _EmpresaGrNuevo +
"' and tipo_opc=50030", ref ldtAuxiliar);
3046 if (ldtAuxiliar.Rows.Count == 1)
3047 llValorOpcFlag = Convert.ToBoolean(ldtAuxiliar.Rows[0][
"estado"]);
3051 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
3052 "where empresa='" + _EmpresaGrNuevo +
"' and tipo_opc=50030", ref ldtAuxiliar);
3053 if (ldtAuxiliar.Rows.Count == 0)
3055 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" (EMPRESA,TIPO_OPC,ESTADO) " +
3056 "VALUES ('" + _EmpresaGrNuevo +
"',50030," + (llValorOpcFlag ? DB.SQLTrue() : DB.SQLFalse()) +
")");
3061 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
3062 "SET ESTADO=" + (llValorOpcFlag ? DB.SQLTrue() : DB.SQLFalse()) +
" " +
3063 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"' AND TIPO_OPC=50030";
3069 if (AddonGrupoOrigen(
"ConceptosFacturables"))
3070 ActivarOpcflag(tcNombreBaseDatos, 10006,
true);
3074 ActivarOpcflag(tcNombreBaseDatos, 30203,
true);
3076 else if (tcTabla ==
"OTROSCFG")
3078 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OTROSCFG") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3079 if (ldtAuxiliar.Rows.Count == 0)
3082 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OTROSCFG") +
" (EMPRESA) VALUES ('" + _EmpresaGrNuevo +
"')");
3094 if (!_ConservarUsuarios)
3096 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE USUARIO!='SUPERVISOR'");
3102 string lcCadenaWhereMods =
"";
3103 foreach (
string lcAddon
in GrupoempTools._AddonsInstal)
3104 lcCadenaWhereMods +=
" MODULO != '" + lcAddon.Trim().ToUpper() +
"' AND ";
3106 if (!
string.IsNullOrWhiteSpace(lcCadenaWhereMods))
3108 lcCadenaWhereMods = lcCadenaWhereMods.Substring(0, lcCadenaWhereMods.Length - 4);
3109 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"PRGS") +
" " +
3110 "WHERE "+lcCadenaWhereMods;
3123 if (!_ConservarUsuarios)
3125 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"USRDESKTOP") +
" WHERE USUARIO!='' AND USUARIO!='SUPERVISOR'");
3131 if (!_ConservarUsuarios)
3133 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"USUARIOS") +
" WHERE CODIGO != 'SUPERVISOR' AND CODIGO != 'SAGESYSTEM' AND IDUSUARIO = '' ");
3136 string lcGrupoActual = tcNombreBaseDatos.Substring(4);
3137 string lcGrupoPripal = _Obtener_CodGrupoPripal(DB.DbComunes.Trim().Substring(4, 4));
3140 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabase(
"EUROWINSYS",
"accesogrup") +
3141 " FROM " + DB.SQLDatabase(
"EUROWINSYS",
"accesogrup") +
" a " +
3143 " SELECT DISTINCT c.IDSAGE50, " + DB.SQLString(lcGrupoActual) +
" as GRUPO, c.MODULO, c.USUARIO " +
3144 " FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"usuarios") +
" a " +
3145 " INNER JOIN " + DB.SQLDatabase(
"EUROWINSYS",
"uniusers") +
" b on a.idusuario = b.IDUSUARIO " +
3146 " INNER JOIN " + DB.SQLDatabase(
"EUROWINSYS",
"accesogrup") +
" c on b.IDSAGE50 = c.IDSAGE50 " +
3147 " WHERE a.idusuario != '' and c.grupo = " + DB.SQLString(lcGrupoPripal) +
3148 " ) b ON a.idsage50 = b.idsage50 AND a.grupo = b.grupo AND a.modulo = b.modulo AND a.usuario = b.usuario ");
3151 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabase(
"EUROWINSYS",
"accesogrup") +
" (IDSAGE50, GRUPO, MODULO, USUARIO, NIVEL, GUID_ID) " +
3152 " SELECT DISTINCT c.IDSAGE50, " + DB.SQLString(lcGrupoActual) +
" as GRUPO, c.MODULO, c.USUARIO, CASE WHEN c.USUARIO = 'SUPERVISOR' THEN c.NIVEL ELSE " + (_ConservarUsuarios ?
" c.NIVEL " : DB.SQLString(0)) +
" END as NIVEL, c.GUID_ID " +
3153 " FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"usuarios") +
" a " +
3154 " INNER JOIN " + DB.SQLDatabase(
"EUROWINSYS",
"uniusers") +
" b on a.idusuario = b.IDUSUARIO " +
3155 " INNER JOIN " + DB.SQLDatabase(
"EUROWINSYS",
"accesogrup") +
" c on b.IDSAGE50 = c.IDSAGE50 " +
3156 " WHERE a.idusuario != '' and c.grupo = " + DB.SQLString(lcGrupoPripal));
3161 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"COMPRCNF") +
" " +
3162 "SET NUMSERIE=100000000000";
3171 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla));
3173 if(GrupoempTools._CfgEjerPartiGrNuevo)
3176 int mesesPorPerido = 12 / 4;
3178 DateTime inicioPeriodo =
new DateTime(Convert.ToInt32(_EjerNuevo), 1, 1);
3180 for (
int periodo = 1; periodo <= 4; periodo++)
3182 DateTime ultimoDiaPeriodo = inicioPeriodo.AddMonths(periodo * mesesPorPerido).AddDays(-1);
3183 string lcFechaFinPeriodo = DB.SQLString(ultimoDiaPeriodo);
3185 lcSql +=
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" (PERIODO, SOPOR, REPER, EMPRESA, EJERCICIO) " +
3186 "VALUES (" + periodo +
", " + lcFechaFinPeriodo +
", " + lcFechaFinPeriodo +
", " + DB.SQLString(_EmpresaGrNuevo) +
"," + _EjerNuevo +
"); ";
3189 inicioPeriodo = inicioPeriodo.AddYears(1);
3191 for (
int periodo = 1; periodo <= 4; periodo++)
3193 DateTime ultimoDiaPeriodo = inicioPeriodo.AddMonths(periodo * mesesPorPerido).AddDays(-1);
3194 string lcFechaFinPeriodo = DB.SQLString(ultimoDiaPeriodo);
3196 lcSql +=
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" (PERIODO, SOPOR, REPER, EMPRESA, EJERCICIO) " +
3197 "VALUES (" + periodo +
", " + lcFechaFinPeriodo +
", " + lcFechaFinPeriodo +
", " + DB.SQLString(_EmpresaGrNuevo) +
"," + (Convert.ToInt32(_EjerNuevo) + 1) +
"); ";
3207 if (!_ConservarClientes)
3209 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FPAG_GIR"));
3218 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"VARIABLE") +
" " +
3219 "WHERE LOWER(VARIABLE)='wc_sbforganization' or " +
3220 "LOWER(VARIABLE)='wc_sbfsigningkey' or " +
3221 "LOWER(VARIABLE)='wc_sbfemailadmin' or " +
3222 "LOWER(VARIABLE)='wc_sbfcompany' or " +
3223 "LOWER(VARIABLE)='wl_sagebankfeeds' or " +
3224 "LOWER(VARIABLE)='wl_sagecapture' or " +
3225 "LOWER(VARIABLE)='wl_dts_lanzado' or " +
3226 "LOWER(VARIABLE)='new_calculopm' or " +
3227 "LOWER(VARIABLE)='wl_gestcomercial' or " +
3228 "LOWER(VARIABLE)='wn_dts_tipo' or " +
3229 "LOWER(VARIABLE)='aviso_ultcost' ";
3233 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"VARIABLE") +
" (variable, tipo, valor) values ('NEW_CALCULOPM','L','.T.')");
3243 AjustarTablasPredefinidos(tcNombreBaseDatos);
3262 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE EMPRESA!='' AND EMPRESA!='" + _EmpresaGrNuevo +
"'");
3288 private static void AjustarTablasPredefinidos(
string tcNombreBaseDatos)
3295 string lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"ASIDEFIN") +
" SET CUENTA = LEFT(LTRIM(CUENTA),3) WHERE LEN(LTRIM(RTRIM(CUENTA))) >= 8 ";
3333 private static bool CrearGrupoEjer_AjustarDatos_TablaGestion(
string tcTabla,
string tcNombreBaseDatos)
3336 DataTable ldtAuxiliar =
new DataTable();
3348 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"ACCESOS") +
" " +
3349 "WHERE EMPRESA != '" + _EmpresaGrNuevo +
"' " + (_ConservarUsuarios ?
"" :
" OR USUARIO != 'SUPERVISOR' ");
3354 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"ALMACEN"));
3355 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"ALMACEN") +
" (CODIGO,NOMBRE) VALUES ('" +
new string(
'0', _LenAlmacen) +
"','SIN ALMACEN')");
3360 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CFGFACT") +
" WHERE EMPRESA != '" + _EmpresaGrNuevo +
"'");
3363 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CFGFACT") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3364 if (ldtAuxiliar.Rows.Count == 0)
3367 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CFGFACT") +
" (EMPRESA) VALUES ('" + _EmpresaGrNuevo +
"')");
3372 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CFGFACT") +
" " +
3373 "SET EF_ENABL=0, EF_PATHVEN='', EF_PATHCOM='',MENSAJE='', EF_EXECRTF='', EF_EXEVAL='', EF_CERT='', EF_EMIS='', EF_XSIG=0, CONTAVE=1, CONTACO=1, CONTACUO=1 " +
3374 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
3381 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CODIGOS") +
" WHERE EMPRESA != '" + _EmpresaGrNuevo +
"'");
3384 String tccPathInicio, tcFileRutaIped;
3385 string tcIntrastat =
@"Documentos\INTRASTAT\";
3387 tccPathInicio = Convert.ToString(DB._GetVariable(
"wc_pathinicio"));
3388 tcFileRutaIped = Path.Combine(tccPathInicio, tcIntrastat);
3391 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CODIGOS") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3392 if (ldtAuxiliar.Rows.Count == 0)
3395 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CODIGOS") +
" (EMPRESA,PAIS,VENDEDOR,MODOTRANS,NA1,NA2,REGESTAT,RUTAIDEP) " +
3396 "VALUES ('" + _EmpresaGrNuevo +
"'," +
3398 "'" +
new string(
'0', _LenVendedor - 1) +
"1', " +
3403 DB.SQLString(tcFileRutaIped) +
")") ;
3407 if (!_ConservarClientes)
3409 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CODIGOS") +
" " +
3410 "SET VENDEDOR='" +
new string(
'0', _LenVendedor - 1) +
"1', " +
3411 "MODOTRANS = '3', NAT1 = 9, NAT2 = 1, REGESTAT = 1, RUTAIDEP = " + DB.SQLString(tcFileRutaIped) +
3412 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
3421 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE EMPRESA != '" + _EmpresaGrNuevo +
"'");
3424 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3425 if (ldtAuxiliar.Rows.Count == 0)
3428 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" (EMPRESA) VALUES ('" + _EmpresaGrNuevo +
"')");
3430 if (tcTabla ==
"CONTACNF")
3432 string lcEuroserv = GrupoempTools._Euroserv.Trim();
3433 string lcDirCartas = Path.Combine(lcEuroserv,
"Reports\\");
3434 string lcDirPagares = Path.Combine(lcEuroserv,
"Reports\\Pagares\\");
3436 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTACNF") +
" " +
3437 "SET DIAS_RIESGO=15, AUTIVARET = 1, " +
3438 "IMPUTAR_AN=1, PLAN1='', PLAN2='', " +
3439 "CARTAS='"+lcDirCartas+
"', "+
3440 "DIRPAGA='" + lcDirPagares +
"', " +
3441 "COBROEFEC='"+_PrefijoBan3+
new String(
'0',_LenCuenta-4)+
"1' " +
3442 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
3447 if (tcTabla ==
"CONTACNF")
3449 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTACNF") +
" " +
3450 "SET IMPUTAR_AN = 1, PLAN1 = '', PLAN2 = '' " +
3451 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
3458 string lcCtaCompra = _PrefijoCom3 +
new string(
'0', _LenCuenta - 4) +
"1";
3459 string lcCtaVenta = _PrefijoVen3 +
new string(
'0', _LenCuenta - 4) +
"1";
3460 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FAMILIAS"));
3462 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FAMILIAS") +
" (CODIGO,NOMBRE,CTA_COMPRA,CTA_VENTA) VALUES ('"+
new string(
'0',_LenFamilia)+
"','SIN FAMILIA','" + lcCtaCompra +
"','" + lcCtaVenta +
"')");
3468 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla));
3470 string lcTablaPeriodos = DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla);
3472 lcSql =
"insert into " + lcTablaPeriodos +
" (empresa, periodo, reper, sopor) values ('" + _EmpresaGrNuevo +
"', 1, '31/03/" + GrupoempTools._EjerNuevo +
"', '31/03/" + GrupoempTools._EjerNuevo +
"'); ";
3473 lcSql +=
"insert into " + lcTablaPeriodos +
" (empresa, periodo, reper, sopor) values ('" + _EmpresaGrNuevo +
"', 2, '30/06/" + GrupoempTools._EjerNuevo +
"', '30/06/" + GrupoempTools._EjerNuevo +
"'); ";
3474 lcSql +=
"insert into " + lcTablaPeriodos +
" (empresa, periodo, reper, sopor) values ('" + _EmpresaGrNuevo +
"', 3, '30/09/" + GrupoempTools._EjerNuevo +
"', '30/09/" + GrupoempTools._EjerNuevo +
"'); ";
3475 lcSql +=
"insert into " + lcTablaPeriodos +
" (empresa, periodo, reper, sopor) values ('" + _EmpresaGrNuevo +
"', 4, '31/12/" + GrupoempTools._EjerNuevo +
"', '31/12/" + GrupoempTools._EjerNuevo +
"'); ";
3483 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR") +
" WHERE EMPRESA != '" + _EmpresaGrNuevo +
"'");
3486 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3487 if (ldtAuxiliar.Rows.Count == 0)
3488 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR") +
" (EMPRESA) VALUES ('" + _EmpresaGrNuevo +
"')");
3492 int lnContador = Convert.ToInt32( Convert.ToDateTime(_FechaIniEjerNuevo).Year.ToString().Substring(2,2)) * 100000;
3498 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR") +
" " +
3499 "SET PRESUVEN=0, CLIENTES=0, TRABAJO=0, PLANTILLAS=0, PRODUCCION=0, TRANSFORM=0, " +
3500 "ETIQUETA=0, MODELO=0, DESCUADRE=0, CONT_ARTI=0, ENTREGAS=0, SERIES=0, TYC=0, CUOTAS=" + lnContador.ToString().Trim() +
3501 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
3507 string lcCadenaWhereAddon =
"";
3508 foreach (
string lcAddon
in GrupoempTools._AddonsInstal)
3509 lcCadenaWhereAddon +=
" (UPPER(COMANDO) NOT LIKE '%"+lcAddon+
"%') AND ";
3511 if (!
string.IsNullOrWhiteSpace(lcCadenaWhereAddon))
3512 lcCadenaWhereAddon = lcCadenaWhereAddon.Substring(0, lcCadenaWhereAddon.Length - 4);
3515 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"PROGRAMS") +
" " +
3516 "WHERE COMANDO != '' AND " +
3517 "(UPPER(COMANDO) NOT LIKE '%CONTABIL%') AND " +
3518 "(UPPER(COMANDO) NOT LIKE '%VENTAS%') AND " +
3519 "(UPPER(COMANDO) NOT LIKE '%COMPRAS%') AND " + lcCadenaWhereAddon;
3530 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MARCAS"));
3532 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MARCAS") +
" (CODIGO,NOMBRE) VALUES ('"+
new string(
'0',_LenMarca)+
"','SIN MARCA')");
3538 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"SERIES"));
3540 string lcTabSer = DB.SQLDatabaseReal(tcNombreBaseDatos,
"SERIES");
3544 List<string> lstSeries =
new List<string> {
"SF",
"SD" };
3545 lcSql =
string.Empty;
3547 foreach (
string lcSerie
in lstSeries)
3549 for (
int i = 1; i < 9; i++)
3551 lcSql +=
"INSERT INTO " + lcTabSer +
" (EMPRESA,SERIE,TIPODOC) VALUES ('" + _EmpresaGrNuevo +
"','"+lcSerie+
"',"+Convert.ToString(i)+
");";
3560 if (!_ConservarClientes)
3563 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"RET_EMP"));
3568 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"RET_EMP") +
" " +
3569 "WHERE EMPRESA != '" + _EmpresaGrNuevo +
"' OR LEFT(CUENTA,3)!='" + GrupoempTools._PrefijoCli3 +
"'");
3575 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"PLTCOMU") +
" " +
3576 "WHERE LEFT(CODIGO,1) != '9'");
3581 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MESES"));
3582 string lcBdMeses = DB.SQLDatabaseReal(tcNombreBaseDatos,
"MESES");
3585 Dictionary<int, string> loDicMeses =
new Dictionary<int, string>() { { 1,
"ENERO" }, { 2,
"FEBRERO" }, { 3,
"MARZO" }, { 4,
"ABRIL" }, { 5,
"MAYO" }, { 6,
"JUNIO" }, { 7,
"JULIO" }, { 8,
"AGOSTO" }, { 9,
"SEPTIEMBRE" }, { 10,
"OCTUBRE" }, { 11,
"NOVIEMBRE" }, { 12,
"DICIEMBRE" } };
3587 if (GrupoempTools._CfgEjerPartiGrNuevo)
3589 int lnMesIni = Convert.ToDateTime(GrupoempTools._FechaIniEjerNuevo).Month;
3590 int lnMesFin = Convert.ToDateTime(GrupoempTools._FechaFinEjerNuevo).Month;
3592 int lnYearIni = Convert.ToDateTime(GrupoempTools._FechaIniEjerNuevo).Year;
3593 int lnYearFin = Convert.ToDateTime(GrupoempTools._FechaFinEjerNuevo).Year;
3595 int lnInterval = (lnYearFin - lnYearIni) * 12 + lnMesFin - lnMesIni;
3599 for (
int ln = lnMesIni; ln <= lnMesIni + lnInterval; ln++)
3601 int lnMes = ln % 12 == 0 ? 12 : ln % 12;
3602 String lcMes = loDicMeses[lnMes];
3604 lcSql +=
String.Format(
"INSERT INTO {0} (EMPRESA, CODIGO, MES, NUMMES, CERRADO) VALUES ('{1}', {2}, '{3}', {4}, {5}); ", lcBdMeses, _EmpresaGrNuevo, lnNumMes, lcMes, Convert.ToString(lnMes).Trim(), DB.SQLFalse());
3611 foreach (KeyValuePair<int, string> loMes
in loDicMeses)
3613 lcSql +=
String.Format(
"INSERT INTO {0} (EMPRESA, CODIGO, MES, NUMMES, CERRADO) VALUES ('{1}', {2}, '{3}', {2}, {4}); ", lcBdMeses, _EmpresaGrNuevo, loMes.Key, loMes.Value, DB.SQLFalse());
3622 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"MENUS") +
" " +
3623 "WHERE EMPRESA!='" + _EmpresaGrNuevo +
"' " + (!_ConservarUsuarios ?
" OR USUARIO!='SUPERVISOR' " :
"");
3631 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla));
3634 string lcTablaLlis = DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla);
3635 lcSql =
"insert into " + lcTablaLlis +
" (empresa, periodo) values ('" + _EmpresaGrNuevo +
"', 1);";
3636 lcSql +=
"insert into " + lcTablaLlis +
" (empresa, periodo) values ('" + _EmpresaGrNuevo +
"', 2);";
3637 lcSql +=
"insert into " + lcTablaLlis +
" (empresa, periodo) values ('" + _EmpresaGrNuevo +
"', 3);";
3638 lcSql +=
"insert into " + lcTablaLlis +
" (empresa, periodo) values ('" + _EmpresaGrNuevo +
"', 4);";
3645 lcSql =
String.Format(
"TRUNCATE TABLE {0} ", DB.SQLDatabaseReal(tcNombreBaseDatos,
"TARIFAS"));
3648 lcSql =
String.Format(
"INSERT INTO {0} (CODIGO, NOMBRE, COSTE, IVA_INC, TIPO_TPC, NUMDEC, MONEDA) VALUES ('TD', 'TARIFA POR DEFECTO', 1, 0, 1, 2, '000' ) ", DB.SQLDatabaseReal(tcNombreBaseDatos,
"TARIFAS"));
3654 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FACTUCNF") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
3657 string lcCtaVDol =
"";
3658 string lcCtaCDol =
"";
3659 DB.SQLExec(
"select empresa,c_cta_dol,v_cta_dol from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FACTUCNF") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3660 if (ldtAuxiliar.Rows.Count == 0)
3662 lcCtaVDol = _PrefijoVen3 +
new string(
'0', _LenCuenta - 4) +
"1";
3663 lcCtaCDol = _PrefijoCom3 +
new string(
'0', _LenCuenta - 4) +
"1";
3664 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"FACTUCNF") +
" (empresa, v_iva_dol, c_iva_dol, v_cta_dol, c_cta_dol) values ('" + _EmpresaGrNuevo +
"','03','03','" + lcCtaCDol +
"','" + lcCtaVDol +
"')");
3668 lcCtaVDol = Convert.ToString(ldtAuxiliar.Rows[0][
"v_cta_dol"]);
3669 lcCtaCDol = Convert.ToString(ldtAuxiliar.Rows[0][
"c_cta_dol"]);
3672 String lcCodigoGrup = _DbComunesGrNuevo.Replace(
"COMU",
"");
3675 string lcVendedorCutoas = AddonGrupoOrigen(
"ConceptosFacturables") ?
"01" :
"";
3677 string lcTarifaPret =
"TD";
3678 if (AddonGrupoOrigen(
"ConceptosFacturables"))
3679 lcTarifaPret = ObtenerTarifaDefecto(lcTarifaPret);
3682 lcSql =
String.Format(
"UPDATE {0} SET EMP_STOCK= '{1}', CONVERSION=1, DIAS_ENTRE=15, UNIDADES='999,999.99', GRANUNIDADES='999,999.99', ALBAVEN='ALBAVEN', FACTUVEN='FACTUVEN', PEDIVEN='PEDIVEN', " +
3683 "DEPOVEN='DEPOVEN', PRESUVEN='PRESUVEN', PEDICOM='PEDICOM', ALBACOM='ALBACOM'," +
3684 "FACTUCOM='FACTUCOM', ENVIO='ENVIO', ENVIO2='ENVIO2', RECIBO='RECIBO', REC_ESPE='REC_ESPE', PRESUVEN2='PRESUVEN', RECCUOTA='RECCUOTA', PAGARE='PAGARE', TICKET='TICKET'," +
3685 "ENTREGA='ENTREGA', VALE='VALE', PRECOM='PRECOM', DEPCOM='DEPOCOM', C_ALBAVEN=0, C_ALBACOM=0, TARIFAPRET= "+DB.SQLString(lcTarifaPret)+
", RUTAEXP='" + Path.Combine(Convert.ToString(DB._GetVariable(
"wc_iniservidor")).Trim(),
"DOCS_SAGE\\" + lcCodigoGrup) +
"', FAMENV='', CALBDTOS=2, VALBDTOS=2, REPARTO='HOJA_REP', " +
3686 "LFPAGCUOTAS = 1, LIMPFACTUCUOTAS = 1, LIMPRECIBOCUOTA = 1, LCONTADORCUOTAS = 1, " +
3687 "OPERARIOCUOTAS='', VENDEDORCUOTAS= " + DB.SQLString(lcVendedorCutoas) +
", FPAGCUOTAS='', LETRACUOTAS='', BANCOCUOTAS='' "+
3688 "WHERE EMPRESA='{1}' ", DB.SQLDatabaseReal(tcNombreBaseDatos,
"FACTUCNF"), _EmpresaGrNuevo);
3692 if (!Directory.Exists(Path.Combine(Convert.ToString(DB._GetVariable(
"wc_iniservidor")).Trim(),
"DOCS_SAGE\\" + lcCodigoGrup)))
3693 Directory.CreateDirectory(Path.Combine(Convert.ToString(DB._GetVariable(
"wc_iniservidor")).Trim(),
"DOCS_SAGE\\" + lcCodigoGrup));
3699 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"EMPRESA") +
" WHERE CODIGO!='" + _EmpresaGrNuevo +
"'");
3702 DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"EMPRESA") +
" where codigo='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
3703 if (ldtAuxiliar.Rows.Count == 0)
3704 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"EMPRESA") +
" (codigo) values ('" + _EmpresaGrNuevo +
"')");
3707 int lnContEmail = Convert.ToInt32(Convert.ToDateTime(_FechaIniEjerNuevo).Year.ToString().Substring(2, 2)) * 100000;
3708 int lnContFracee = lnContEmail + 50000;
3712 string lcLetra =
"SF";
3714 string lcTarifaCF =
"";
3715 if (AddonGrupoOrigen(
"ConceptosFacturables"))
3719 lcTarifaCF = ObtenerTarifaDefecto(lcTarifaCF);
3724 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"EMPRESA") +
" " +
3725 "SET NOMBRE=" + DB.SQLString(_NombreEmpresa) +
", CIF=" + DB.SQLString(_CifEmpresa) +
", NOMBRE2='', DIRECCION='', CODPOS='', TELEFONO='', POBLACION='', PROVINCIA='', " +
3726 "FAX='', MONEDA='000', TIPO='Normal', FRACEE=" + lnContFracee.ToString().Trim() +
", " +
3727 "PEDIVEN=0, DEPVEN=0, PRESUP=0, ALBAVEN=0, FACTUVEN=0, TRASPASO=0, REGULARIZA=0, PEDICOM=0, FACTUCOM=0, ASIENTO=0, IVASOPOR=0," +
3728 "TIPO_IVA='',TXTALBA1='', TXTALBA2='', TXTFACTU1='', TXTFACTU2='', EMAIL='', HTTP='', MOBIL='', REMESA=0, ORDEN=0, PEDICO1=''," +
3729 "PEDICO2='', FACTUCOM1='', FACTUCOM2='', LETRA = " + DB.SQLString(lcLetra) +
", ALMFABRI='" +
new string(
'0', _LenAlmacen) +
"', REMESAPA=0, PASWORD='', PRECOM=0, ALBACOM=0, DEPCOM=0, COMUNICA=0, " +
3730 "TXTEFACTU1='', TXTEFACTU2='', IVA_ISP='', " +
3731 "REFUNDIRP=0, ALMACEN='" +
new string(
'0', _LenAlmacen) +
"', REFUNDIR=0, C_EMAIL=" + lnContEmail.ToString().Trim() +
", " +
3732 "CONTACT=0, CAPTURE=0, USER_ROL=0, PYG_BAL='', DASHBOARD=0 " +
", " +
3733 "PERIODOINI=" + DB.SQLString(_FechaIniEjerNuevo) +
",PERIODOFIN=" + DB.SQLString(_FechaFinEjerNuevo) +
", TPC='999.99', " +
3734 "PRTAPLICAR=0, PRTBAJA=0, PRTPRC=0, PRTFECHA=null, PRTFECHADS=null, ACRONIMO = '', TARIFACF = " + DB.SQLString(lcTarifaCF) +
" " +
3735 "WHERE CODIGO=" + DB.SQLString(_EmpresaGrNuevo);
3741 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
3743 DataTable loDt =
new DataTable();
3744 String lcCodigoGrupo = _DbComunesGrNuevo.Replace(
"COMU",
"");
3746 lcSql =
String.Format(
"SELECT * FROM {0} ", DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla));
3747 DB.SQLExec(lcSql, ref loDt);
3749 lcSql =
"INSERT INTO {0} (ID, IDI_PLAN, EMPRESA, NOMBRE, FICHERO, PREDET, TIPO, OBSERVA, ID_PARENT, GRUPO ) VALUES ";
3750 lcSql +=
"(1, '', '{1}', 'Presupuesto de venta', 'PRESUVEN', 1, 1, 'Plantilla de Presupuesto de venta generada automáticamente', 0, '{2}' ), ";
3751 lcSql +=
"(2, '', '{1}', 'Pedido de venta', 'PEDIVEN', 1, 2, 'Plantilla de Pedido de venta generada automáticamente', 0 , '{2}'), ";
3752 lcSql +=
"(3, '', '{1}', 'Albarán de venta', 'ALBAVEN', 1, 3, 'Plantilla de Albarán de venta generada automáticamente', 0 , '{2}'), ";
3753 lcSql +=
"(4, '', '{1}', 'Factura de venta', 'FACTUVEN', 1, 4, 'Plantilla de Factura de venta generada automáticamente', 0 , '{2}'), ";
3754 lcSql +=
"(5, '', '{1}', 'Depósito de venta', 'DEPOVEN', 1, 5, 'Plantilla de Depósito de venta generada automáticamente', 0 , '{2}'), ";
3755 lcSql +=
"(6, '', '{1}', 'Ticket de venta', 'TICKET', 1, 6, 'Plantilla de Ticket de venta generada automáticamente', 0 , '{2}'), ";
3756 lcSql +=
"(7, '', '{1}', 'Propuesta de compra', 'PRECOM', 1, 7, 'Plantilla de Propuesta de compra generada automáticamente', 0 , '{2}'), ";
3757 lcSql +=
"(8, '', '{1}', 'Pedido de compra', 'PEDICOM', 1, 8, 'Plantilla de Pedido de compra generada automáticamente', 0 , '{2}'), ";
3758 lcSql +=
"(9, '', '{1}', 'Albarán de compra', 'ALBACOM', 1, 9, 'Plantilla de Albarán de venta compra automáticamente', 0 , '{2}'), ";
3759 lcSql +=
"(10, '', '{1}', 'Factura de compra', 'FACTUCOM', 1, 10, 'Plantilla de Factura de compra generada automáticamente', 0 , '{2}'), ";
3760 lcSql +=
"(11, '', '{1}', 'Depósitos de compra', 'DEPOCOM', 1, 11, 'Plantilla de Depósito de compra generada automáticamente', 0 , '{2}'); ";
3762 lcSql =
String.Format(lcSql, DB.SQLDatabaseReal(_DbComunesGrNuevo,
"REPLAN"), _EmpresaGrNuevo, lcCodigoGrupo);
3765 Int32 lnCodigo = 12;
3767 foreach (DataRow ldRow
in loDt.Rows)
3769 lcSql =
String.Format(
"INSERT INTO {0} (ID, EMPRESA, IDI_PLAN, NOMBRE, FICHERO, PREDET, TIPO, OBSERVA, ID_PARENT, GRUPO ) VALUES ", DB.SQLDatabaseReal(_DbComunesGrNuevo,
"REPLAN"));
3770 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Presupuesto de venta', 'PRESUVEN', 1, 1, 'Plantilla de Presupuesto de venta generada automáticamente', 0 , '{3}' ), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3771 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Pedido de venta', 'PEDIVEN', 1, 2, 'Plantilla de Pedido de venta generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3772 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Albarán de venta', 'ALBAVEN', 1, 3, 'Plantilla de Albarán de venta generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3773 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Factura de venta', 'FACTUVEN', 1, 4, 'Plantilla de Factura de venta generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3774 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Depósito de venta', 'DEPOVEN', 1, 5, 'Plantilla de Depósito de venta generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3775 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Ticket de venta', 'TICKET', 1, 6, 'Plantilla de Ticket de venta generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3776 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Propuesta de compra', 'PRECOM', 1, 7, 'Plantilla de Propuesta de compra generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3777 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Pedido de compra', 'PEDICOM', 1, 8, 'Plantilla de Pedido de compra generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3778 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Albarán de compra', 'ALBACOM', 1, 9, 'Plantilla de Albarán de venta compra automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3779 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Factura de compra', 'FACTUCOM', 1, 10, 'Plantilla de Factura de compra generada automáticamente', 0 , '{3}'), ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3780 lcSql +=
String.Format(
"({2}, '{0}', '{1}', 'Depósitos de compra', 'DEPOCOM', 1, 11, 'Plantilla de Depósito de compra generada automáticamente', 0 , '{3}'); ", _EmpresaGrNuevo, ldRow[
"CODIGO"], lnCodigo++, lcCodigoGrupo);
3805 if (!_ConservarClientes)
3807 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla);
3810 if (tcTabla ==
"VENDEDOR")
3812 string lcCodVendedor =
new string(
'0', _LenVendedor - 1) +
"1";
3814 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"VENDEDOR") +
" (CODIGO,NOMBRE) VALUES ('" + lcCodVendedor +
"','VENDEDOR POR DEFECTO')");
3816 else if (tcTabla ==
"CLIENTES")
3819 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CLIENTES") +
" (CODIGO,NOMBRE,COMUNITARI,CONTADO,PAIS,IDIOMA) " +
3820 "VALUES ('"+_PrefijoCli3+
new string(
'0',_LenCuenta-4)+
"1','CLIENTE CONTADO',1,1,'034','000')");
3831 AjustarTablaCuentas_Paso1();
3842 AjustarTablasPredefinidos(tcNombreBaseDatos);
3867 private static void AjustarTablaCuentas_Paso1()
3871 if (_ConservarClientes)
3873 lcSql =
"DELETE FROM " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"CUENTAS") +
" " +
3874 "WHERE LEFT(CODIGO,3) != '" + GrupoempTools._PrefijoCli3 +
"'";
3878 lcSql =
"TRUNCATE TABLE " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"CUENTAS");
3889 private static void AjustarTablaCuentas_Paso2()
3892 string lcZeros =
new string(
'0', (GrupoempTools._LongitudesEstandar ? 8 : GrupoempTools._LenCuenta) - 8);
3893 string lcTablaCuentas = DB.SQLDatabaseReal(_DbEjerGrNuevo,
"CUENTAS");
3894 string lcTablaProveed = DB.SQLDatabaseReal(_DbEjerGrNuevo,
"PROVEED");
3895 string lcTablaClientes = DB.SQLDatabaseReal(_DbEjerGrNuevo,
"CLIENTES");
3896 string lcCodigo=
"",lcNombre=
"", lcSecundar=
"", lcDivisa=
"", lcCongasing=
"", lcConirpf=
"";
3898 for (
int ln_i=0; ln_i<_CuentasCd.GetLength(0); ln_i++)
3901 lcCodigo = _CuentasCd[ln_i,0].Substring(0,4)+lcZeros+_CuentasCd[ln_i,0].Substring(4,4);
3904 if (_ConservarClientes && (lcCodigo.Substring(0, 3) == _PrefijoCli3 || lcCodigo.Substring(0, 3) == _PrefijoDeudor3))
3909 lcNombre = _CuentasCd[ln_i,1];
3910 lcSecundar = _CuentasCd[ln_i,2];
3911 lcDivisa = _CuentasCd[ln_i,3];
3912 lcCongasing = _CuentasCd[ln_i, 4];
3913 lcConirpf = _CuentasCd[ln_i, 5];
3914 lcSql +=
"insert into " + lcTablaCuentas +
" (codigo, nombre, secundaria, divisa, congasing, conirpf) values ('"+lcCodigo+
"' , '"+lcNombre+
"' , '"+lcSecundar+
"' , '"+lcDivisa+
"', '" + lcCongasing +
"', '" + lcConirpf +
"'); ";
3917 if (lcCodigo.Substring(0, 3) == _PrefijoPro3 || lcCodigo.Substring(0, 3) == _PrefijoAcr3)
3919 lcSql +=
"insert into " + lcTablaProveed +
" (codigo, nombre, idioma) values ('" + lcCodigo +
"' , '" + lcNombre +
"', '000'); ";
3923 if (lcCodigo.Substring(0, 3) == _PrefijoDeudor3 )
3925 lcSql +=
"insert into " + lcTablaClientes +
" (codigo, nombre, idioma) values ('" + lcCodigo +
"' , '" + lcNombre +
"', '000'); ";
3931 GrupoempTools.AjustarTablaCuentas_Paso2_TipoIva();
3934 GrupoempTools.AjustarTablaCuentas_Paso2_TipoRet();
3937 GrupoempTools.AjustarTablaCuentas_Paso2_CuentasDolar();
3940 if (GrupoempTools._ConservarClientes)
3941 GrupoempTools.AjustarTablaCuentas_Paso2_Contrapar();
3948 private static void AjustarTablaCuentas_Paso2_TipoIva()
3950 DataTable ldtDatos =
new DataTable();
3952 DB.SQLExec(
"select * from "+DB.SQLDatabaseReal(_DbEjerGrNuevo,
"tipo_iva"), ref ldtDatos);
3954 foreach (DataRow loRow
in ldtDatos.Rows)
3956 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_IV_SOP"]));
3957 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_IV_REP"]));
3958 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_RE_SOP"]));
3959 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_RE_REP"]));
3961 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"PENDEVREP"]));
3962 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"PENDEDSOP"]));
3963 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"RECSOPCDEV"]));
3964 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"RECREPCDEV"]));
3966 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"PRTIVSOPND"]));
3967 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"PRTIVSNDPD"]));
3976 private static void AjustarTablaCuentas_Paso2_TipoRet()
3978 DataTable ldtDatos =
new DataTable();
3980 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"tipo_ret"), ref ldtDatos);
3982 foreach (DataRow loRow
in ldtDatos.Rows)
3984 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_RE_SOP"]));
3985 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"CTA_RE_REP"]));
3994 private static void AjustarTablaCuentas_Paso2_CuentasDolar()
3996 DataTable ldtDatos =
new DataTable();
3998 DB.SQLExec(
"select C_CTA_DOL, V_CTA_DOL from " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"factucnf") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtDatos);
4000 if (ldtDatos.Rows.Count > 0)
4002 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(ldtDatos.Rows[0][
"C_CTA_DOL"]));
4003 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(ldtDatos.Rows[0][
"V_CTA_DOL"]));
4013 private static void AjustarTablaCuentas_Paso2_Contrapar()
4015 DataTable ldtDatos =
new DataTable();
4017 DB.SQLExec(
"select distinct contrapar from " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"clientes") +
" where contrapar!=' '", ref ldtDatos);
4019 foreach (DataRow loRow
in ldtDatos.Rows)
4021 GrupoempTools.AjustarTablaCuentas_Paso2_ActualizarCuenta(Convert.ToString(loRow[
"contrapar"]));
4028 private static void AjustarTablaCuentas_Paso2_ActualizarCuenta(
string tcCuenta)
4030 if (
string.IsNullOrWhiteSpace(tcCuenta))
4033 string lcZeros =
new string(
'0', GrupoempTools._LenCuenta - 8);
4036 string tcCuentaOrigen = tcCuenta.Substring(0,4)+lcZeros+tcCuenta.Substring(4,4);
4039 DataTable ldtDatos =
new DataTable();
4041 bool llOk = DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"cuentas") +
" where codigo='" + tcCuenta +
"'", ref ldtDatos);
4043 if (ldtDatos.Rows.Count == 0)
4045 llOk = DB.SQLExec(
"select codigo,nombre from " + DB.SQLDatabaseReal(_DbEjerGrOrigen,
"cuentas") +
" where codigo='" + tcCuentaOrigen +
"'", ref ldtDatos);
4046 if (ldtDatos.Rows.Count>0)
4047 lcNombre = Convert.ToString(ldtDatos.Rows[0][
"nombre"]);
4049 lcNombre =
"CUENTA CONTABLE "+tcCuenta;
4051 llOk = DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"cuentas") +
" (codigo, nombre, secundaria) values ("+
4069 private static bool CrearGrupo_AjustarDatos_TablaAddon(
string tcTabla,
string tcNombreBaseDatos,
string tcNombreAddon)
4071 string lcSql =
"", lcVarAuxi =
"";
4072 DataTable ldtAuxiliar =
new DataTable();
4075 switch (tcNombreAddon)
4086 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJAS"));
4088 string lcCuentaCobro =
"555" +
new string(
'0', _LenCuenta - 3);
4089 string lcCuentaPago =
"555" +
new string(
'0', _LenCuenta - 4) +
"1";
4090 string lcCuentaReposicion =
"555" +
new string(
'0', _LenCuenta - 4) +
"2";
4091 string lcCuentaRetirado =
"555" +
new string(
'0', _LenCuenta - 4) +
"2";
4092 string lcCuentaCliente = GrupoempTools._PrefijoCli3 +
new string(
'0', _LenCuenta - 4) +
"1";
4095 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJAS") +
" " +
4096 "(CODIGO,NOMBRE, COBRO, PAGO, REPOSICION, RETIRADO, OPERARIO, VENDEDOR, CLIENTE, TIPO_DOC) VALUES " +
4097 "('0001','CAJA 0001','" + lcCuentaCobro +
"','" + lcCuentaPago +
"','" + lcCuentaReposicion +
"','" + lcCuentaRetirado +
"','01','01'," +
4098 "'" + lcCuentaCliente +
"',1)";
4106 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJ_FCOB"));
4109 lcVarAuxi = _PrefijoCaj3 +
new string(
'0', GrupoempTools._LenCuenta - 3);
4110 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJ_FCOB") +
" " +
4111 "(EMPRESA,CAJA, FORMA_COB, CUENTA) VALUES " +
4112 "('" + _EmpresaGrNuevo +
"','0001','01','" + lcVarAuxi +
"')";
4115 lcVarAuxi = _PrefijoBan3 +
new string(
'0', GrupoempTools._LenCuenta - 3);
4116 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJ_FCOB") +
" " +
4117 "(EMPRESA,CAJA, FORMA_COB, CUENTA) VALUES " +
4118 "('" + _EmpresaGrNuevo +
"','0001','02','" + lcVarAuxi +
"')";
4121 lcVarAuxi =
"414" +
new string(
'0', GrupoempTools._LenCuenta - 3);
4122 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CAJ_FCOB") +
" " +
4123 "(EMPRESA,CAJA, FORMA_COB, CUENTA) VALUES " +
4124 "('" + _EmpresaGrNuevo +
"','0001','03','" + lcVarAuxi +
"')";
4132 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTICK") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4135 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTICK") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4136 if (ldtAuxiliar.Rows.Count == 0)
4137 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTICK") +
" (empresa,cobro) values ('" + _EmpresaGrNuevo +
"',"+DB.SQLTrue()+
")");
4140 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTICK") +
" " +
4141 "SET TICKETS=0, ARQUEO=0, FACTICK=0, PEDINT=0 " +
4142 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
4148 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTPV") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4150 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTPV") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4151 if (ldtAuxiliar.Rows.Count == 0)
4153 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTPV") +
" " +
4154 "(empresa, cobcaja, abcaja, tickalb, vendedor, almacen, cantidad, precio, vale, hora_ini, hora_fin, credito, dev_efect) " +
4155 "values ('" + _EmpresaGrNuevo +
"', " + DB.SQLTrue() +
", " + DB.SQLTrue() +
",'TRASPASO HACIA ALBARAN', " +
4156 DB.SQLTrue() +
", " + DB.SQLTrue() +
", " + DB.SQLTrue() +
", " + DB.SQLTrue() +
", '03', '09:00', '20:00', " +
4157 DB.SQLTrue() +
", " + DB.SQLTrue() +
")");
4161 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFTPV") +
" " +
4162 "SET ART_MENU='', ART_RESERVA='', FAM_POST='', TARIFASUP='', PL_SERVER='' " +
4163 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
4169 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFVAL") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4171 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFVAL") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4172 if (ldtAuxiliar.Rows.Count == 0)
4173 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFVAL") +
" (empresa) values ('" + _EmpresaGrNuevo +
"')");
4176 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFVAL") +
" " +
4177 "SET MENSAJE='', CADUCIDAD=0 " +
4178 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
4185 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"F_COBROS"));
4188 lcVarAuxi = _PrefijoCaj3 +
new string(
'0', GrupoempTools._LenCuenta - 3);
4189 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"F_COBROS") +
" " +
4190 "(CODIGO, NOMBRE, MONEDA, CUENTA, EFECTIVO ) VALUES " +
4191 "('01' , 'CONTADO' , '000' , '" + lcVarAuxi +
"'," + DB.SQLTrue() +
")";
4194 lcVarAuxi = _PrefijoBan3 +
new string(
'0', GrupoempTools._LenCuenta - 3);
4195 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"F_COBROS") +
" " +
4196 "(CODIGO, NOMBRE, MONEDA, CUENTA, EFECTIVO) VALUES " +
4197 "('02' , 'TARJETAS' , '000' , '" + lcVarAuxi +
"'," + DB.SQLFalse() +
")";
4200 lcVarAuxi =
"414" +
new string(
'0', GrupoempTools._LenCuenta - 3);
4201 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"F_COBROS") +
" " +
4202 "(CODIGO, NOMBRE, MONEDA, CUENTA, EFECTIVO ) VALUES " +
4203 "('03', 'VALES' , '000' , '" + lcVarAuxi +
"' ," + DB.SQLFalse() +
")";
4209 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4228 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IAOPCEMP") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4230 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IAOPCEMP") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4231 if (ldtAuxiliar.Rows.Count == 0)
4232 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IAOPCEMP") +
" (empresa) values ('" + _EmpresaGrNuevo +
"')");
4240 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"LICENCIA") +
" " +
4241 "SET INSTAL=" + DB.SQLString(DateTime.Today.Date);
4247 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IACONFIG") +
" WHERE EMPRESA!='" + _EmpresaGrNuevo +
"'");
4249 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IACONFIG") +
" where empresa='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4250 if (ldtAuxiliar.Rows.Count == 0)
4251 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IACONFIG") +
" (empresa) values ('" + _EmpresaGrNuevo +
"')");
4253 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"IACONFIG") +
" " +
4254 "SET NOMBREMAIL='', MAIL='', SMTP='', USERMAIL='', CLAVEMAIL='', IMPRESORA='', PUERTO='', TIEMPOLIS=15, TIEMPOPRO=240, SERVERPORT=0, CIFRADOSSL=" + DB.SQLFalse() +
", ESCRYPT=" + DB.SQLFalse() +
" " +
4255 "WHERE EMPRESA='" + _EmpresaGrNuevo +
"'";
4269 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFIGURA"));
4271 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFIGURA") +
" " +
4272 " (empresa) values ('" + _EmpresaGrNuevo +
"')");
4275 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONFIGURA") +
" " +
4276 "SET CONTADOR=0, TIPO_REG='', PRE_CONT='', CONSUMIR=" + DB.SQLTrue()+
", " +
4277 "STOCKS2=" + DB.SQLTrue() +
", SINCAD=" + DB.SQLTrue();
4283 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR"));
4285 string lcTabCont = DB.SQLDatabaseReal(tcNombreBaseDatos,
"CONTADOR");
4287 lcSql =
"INSERT INTO " + lcTabCont +
" (EMPRESA,SERIE,TIPODOC) VALUES ('" + _EmpresaGrNuevo +
"','SF',1);";
4288 lcSql +=
"INSERT INTO " + lcTabCont +
" (EMPRESA,SERIE,TIPODOC) VALUES ('" + _EmpresaGrNuevo +
"','SF',2);";
4295 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"REVCONF"));
4297 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"REVCONF") +
" " +
4298 "(empresa, revpeso, revzona) values ('" + _EmpresaGrNuevo +
"', " +
4299 DB.SQLTrue()+
","+DB.SQLFalse()+
")");
4305 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"TIPOALM") +
" WHERE CODIGO!='" + _EmpresaGrNuevo +
"'");
4307 DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"TIPOALM") +
" where codigo='" + _EmpresaGrNuevo +
"'", ref ldtAuxiliar);
4308 if (ldtAuxiliar.Rows.Count == 0)
4309 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"TIPOALM") +
" (codigo) values ('" + _EmpresaGrNuevo +
"')");
4322 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE REGBASE50 = " + DB.SQLFalse() +
"");
4326 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE REGBASE50 = " + DB.SQLFalse() +
"");
4330 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE REGBASE50 = " + DB.SQLFalse() +
"");
4334 DB.SQLExec(
"DELETE FROM " + DB.SQLDatabaseReal(tcNombreBaseDatos, tcTabla) +
" WHERE REGBASE50 = " + DB.SQLFalse() +
"");
4352 private static List<string> CrearGrupoEjer_Tablas_Especiales(
string tcTipoBd,
string tcNombreAddon =
"")
4354 List<string> lstTablasEspeciales = null;
4363 lstTablasEspeciales =
new List<string>() {
"ACCESOLIC",
"CODCOM",
"EJERCICI",
"FORMULS",
"LETRAS",
"LICENCIA",
"MODULOS",
"OPERARIO",
"OPC_USER",
"OPCEMP",
"OPCESPUS",
4364 "PERF_USERS",
"PRGS",
"OPCINDICA",
"USRDESKTOP",
"USRBROWSER",
"USRWIDGET",
"USUARIOS",
4365 "ACCE_MON",
"COMPRCNF",
"DATA_IV2",
"DATA_RE2",
"OTROSCFG",
"FPAG_GIR",
"VARIABLE",
"ASINOM",
"ASIDEFIN",
"PLSEPA_C",
"PLSEPA_D"};
4369 lstTablasEspeciales =
new List<string>() {
"ACCESOS",
"ALMACEN",
"CFGFACT",
"CODIGOS",
"CONTACNF",
"CONTADOR",
"COTIZA",
"DATA_IVA",
"DATA_RET",
"EMPRESA",
"FACTUCNF",
"FAMILIAS",
"FLAGS",
4370 "LLIS_PER",
"LLIS_RET",
"MARCAS",
"MENUS",
"MESES",
"PLTCOMU",
"PROGRAMS",
"SERIES",
"TIPO_RET",
4371 "ACTI_CLI",
"ACTIVI",
"AGENCIA",
"BANC_CLI",
"CIA_CRED",
"CLIENTES",
"CONTLF_CLI",
"CONT_CLI",
"CUENTAS",
"ENV_CLI",
"FPAG",
"GIRO_CLI",
"IDIOMA",
"RUTAS",
4372 "TELF_CLI",
"TIPO_FAC",
"VACA_CLI",
"VENDEDOR",
"RET_EMP",
"TARIFAS",
"ASINOM",
"ASIDEFIN"};
4377 switch (tcNombreAddon)
4380 lstTablasEspeciales =
new List<string>() {
"CAJAS",
"CAJ_FCOB",
"CONFIGERP",
"CONFTICK",
"CONFTPV",
"CONFVAL",
"CONT_TPV",
4381 "F_COBROS",
"OPCEMP"};
4385 lstTablasEspeciales =
new List<string>() {
"IAOPCEMP",
"LICENCIA",
"IACONFIG" };
4388 lstTablasEspeciales =
new List<string>() { };
4391 lstTablasEspeciales =
new List<string>() {
"CONFIGURA",
"CONTADOR",
"REVCONF",
"TIPOALM" };
4395 lstTablasEspeciales =
new List<string>() {
"PLINTER_C",
"PLINTER_D",
"PLINTER_D1",
"PLINTER_D2" };
4399 lstTablasEspeciales =
new List<string>() { };
4405 return lstTablasEspeciales;
4415 private static bool AjustarDatos_Bd(
string tcNombreBaseDatos,
string tcTipoBaseDatos,
string tcNombreAddon=
"")
4417 string lcSql =
"", lcTabla=
"";
4426 Guardar_Mensaje(
"INICIO PROCESO DE AJUSTE DE DATOS EN LA BASE DE DATOS DE " + tcTipoBaseDatos +
" [" + tcNombreBaseDatos+
"] "+tcNombreAddon+Environment.NewLine);
4432 DataTable ldtTablasNoborr =
new DataTable();
4433 lcSql =
"select tabla from " + DB.SQLDatabaseReal( tcTipoBaseDatos ==
"COMUNES" || tcTipoBaseDatos ==
"GESTION" ? _DbComunesGrNuevo : tcNombreBaseDatos,
"tabsys")+
" "+
4434 (tcTipoBaseDatos ==
"COMUNES" || tcTipoBaseDatos ==
"GESTION" ?
"where basedatos='" + tcTipoBaseDatos +
"'" :
"");
4435 DB.SQLExec(lcSql, ref ldtTablasNoborr);
4436 List<string> lstTablasNoBorr = ldtTablasNoborr.AsEnumerable().Select(x => x[0].ToString().Trim().ToUpper()).ToList();
4439 Guardar_Mensaje(
"Detectadas " + lstTablasNoBorr.Count.ToString() +
" tablas de sistema en la base de datos de " + tcTipoBaseDatos +
" (" + tcNombreBaseDatos +
")" + tcNombreAddon +
" cuyo contenido no debe borrarse.");
4448 List<string> lstTablasEspeciales = null;
4450 lstTablasEspeciales = GrupoempTools.CrearGrupoEjer_Tablas_Especiales(tcTipoBaseDatos, tcNombreAddon);
4456 Guardar_Mensaje(
"Consultando tablas existentes en la base de datos de "+tcTipoBaseDatos+
" "+tcNombreAddon+
" "+tcNombreBaseDatos);
4458 DataTable ldtTablasBd =
new DataTable();
4461 lcSql =
"SELECT table_name as tabla " +
4462 "FROM [" + tcNombreBaseDatos +
"].INFORMATION_SCHEMA.TABLES " +
4463 "ORDER BY table_name ";
4464 DB.SQLExec(lcSql, ref ldtTablasBd);
4466 catch (Exception loEx)
4470 Guardar_Mensaje(
"No se puedieron obtener las tablas existentes en la base de datos de " + tcTipoBaseDatos +
" " + tcNombreBaseDatos);
4471 Guardar_Mensaje(loEx.Message);
4479 foreach (DataRow loRow
in ldtTablasBd.Rows)
4481 lcTabla = Convert.ToString(loRow[
"tabla"]).Trim().ToUpper();
4483 if (!
string.IsNullOrWhiteSpace(lcTabla) && !lstTablasNoBorr.Contains(lcTabla) && lstTablasEspeciales != null && !lstTablasEspeciales.Contains(lcTabla))
4488 Guardar_Mensaje(
"Eliminando contenido de la tabla " + tcNombreBaseDatos+
"."+lcTabla);
4489 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(tcNombreBaseDatos, lcTabla));
4494 if (lstTablasEspeciales.Contains(lcTabla))
4497 Guardar_Mensaje(
"Ajustando datos en la tabla de " + tcTipoBaseDatos +
" " + tcNombreAddon +
" " + tcNombreBaseDatos +
"." + lcTabla);
4501 switch (tcTipoBaseDatos)
4504 GrupoempTools.CrearGrupo_AjustarDatos_TablaComunes(lcTabla, tcNombreBaseDatos);
4507 GrupoempTools.CrearGrupoEjer_AjustarDatos_TablaGestion(lcTabla, tcNombreBaseDatos);
4510 GrupoempTools.CrearGrupo_AjustarDatos_TablaAddon(lcTabla, tcNombreBaseDatos, tcNombreAddon);
4514 catch (Exception loEx)
4518 Guardar_Mensaje(
"No se puedieron realizar los ajustes en la tabla de la base de datos de " + tcTipoBaseDatos +
" " + tcNombreAddon+
" "+tcNombreBaseDatos+
"."+lcTabla);
4519 Guardar_Mensaje(loEx.Message);
4526 GrupoempTools.Actualizar_CamposGuidId(tcNombreBaseDatos, lcTabla);
4532 Guardar_Mensaje(Environment.NewLine);
4533 Guardar_Mensaje(
"FIN PROCESO DE AJUSTE DE DATOS EN LA BASE DE DATOS DE " + tcTipoBaseDatos +
" [" + tcNombreBaseDatos +
"] " + tcNombreAddon + Environment.NewLine);
4545 private static bool Actualizar_CamposGuidId(
string tcNombreBdReal,
string tcTabla)
4547 string lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBdReal, tcTabla) +
" " +
4548 "SET GUID_ID=NEWID(), CREATED=GETDATE(), MODIFIED=GETDATE() ";
4549 bool llOk = DB.SQLExec(lcSql);
4559 private static bool BorrarGrupo_Comprobaciones_Previas(
string tcGrupo)
4564 Guardar_Mensaje(
"Conexión activa antes de borrar el grupo: " + DB.DbComunes);
4567 if (
string.IsNullOrWhiteSpace(tcGrupo))
4569 _Error_Message =
"No se ha recibido el parámetro código de grupo a borrar.";
4571 Guardar_Mensaje(_Error_Message);
4576 if (DB._SQLExisteTablaBBDD(
"EUROWINSYS",
"GRUPOSEMP") ==
false)
4578 _Error_Message =
"No se ha detectado la tabla gruposemp, no se borrará el grupo " + tcGrupo;
4580 Guardar_Mensaje(_Error_Message);
4584 Guardar_Mensaje(
"Tabla GruposEmp: OK.");
4588 DataTable ldtGrupos =
new DataTable();
4589 lcSql =
"SELECT * FROM [EUROWINSYS].[dbo].[gruposemp] where codigo=" + DB.SQLString(tcGrupo);
4590 DB.SQLExec(lcSql, ref ldtGrupos);
4591 if (ldtGrupos.Rows.Count == 0)
4593 _Error_Message =
"No se ha detectado el grupo a eliminar en la tabla eurowinsys.gruposemp, no se eliminará el grupo.";
4595 Guardar_Mensaje(_Error_Message);
4601 Guardar_Mensaje(
"El grupo a eliminar " + tcGrupo +
" existe en la tabla de grupos GruposEmp: OK.");
4609 if (ldtGrupos.Rows.Count > 0)
4611 bool llPripal = Convert.ToBoolean(ldtGrupos.Rows[0][
"pripal"]);
4614 _Error_Message =
"El grupo que se pretende eliminar está marcado como grupo principal en la tabla de grupos GRUPOSEMP y no puede eliminarse.";
4616 Guardar_Mensaje(_Error_Message);
4620 Guardar_Mensaje(
"El grupo a eliminar " + tcGrupo +
" no es grupo principal: OK.");
4625 GrupoempTools._DbComunesGrBorrar =
"COMU" + tcGrupo;
4627 Guardar_Mensaje(
"Base de datos de COMUNES del grupo a eliminar: "+_DbComunesGrBorrar);
4629 if (DB.DbComunes.ToUpper().Trim() == _DbComunesGrBorrar.ToUpper().Trim())
4631 _Error_Message =
"Para eliminar el grupo " + tcGrupo +
" éste no debe ser el grupo activo de la conexión al servidor SQL, debe estar conectado a otro grupo.";
4633 Guardar_Mensaje(_Error_Message);
4637 Guardar_Mensaje(
"El grupo a eliminar " + tcGrupo +
" no es el grupo activo: OK.");
4642 Guardar_Mensaje(
"Verificando existencia de base de datos " + GrupoempTools._DbComunesGrBorrar);
4643 if (DB._SQLExisteBBDD(_DbComunesGrBorrar))
4646 Guardar_Mensaje(
"Base de datos COMUNES " + GrupoempTools._DbComunesGrBorrar +
" existe en el servidor: OK");
4650 _Error_Message =
"Base de datos COMUNES " + GrupoempTools._DbComunesGrBorrar +
" no existe en el servidor.";
4652 Guardar_Mensaje(_Error_Message);
4658 GrupoempTools._dtBdEjerGrBorrar =
new DataTable();
4660 Guardar_Mensaje(
"Obteniendo bases de datos de ejercicios de " + GrupoempTools._DbComunesGrBorrar);
4661 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrBorrar,
"ejercici"), ref _dtBdEjerGrBorrar);
4664 Guardar_Mensaje(
"Detectados " + _dtBdEjerGrBorrar.Rows.Count.ToString() +
" ejercicios.");
4665 if (_dtBdEjerGrBorrar.Rows.Count > 0)
4667 foreach (DataRow loRow
in _dtBdEjerGrBorrar.Rows)
4668 Guardar_Mensaje(Convert.ToString(loRow[
"conexion"]));
4674 GrupoempTools._dtBdAddonsGrBorrar =
new DataTable();
4676 Guardar_Mensaje(
"Obteniendo bases de datos de Add-ons " + GrupoempTools._DbComunesGrBorrar);
4677 DB.SQLExec(
"select nom_conex,nombre from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrBorrar,
"modulos"), ref GrupoempTools._dtBdAddonsGrBorrar);
4680 Guardar_Mensaje(
"Detectados " + GrupoempTools._dtBdAddonsGrBorrar.Rows.Count.ToString() +
" Add-ons.");
4681 if (_dtBdAddonsGrBorrar.Rows.Count>0)
4683 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrBorrar.Rows)
4684 Guardar_Mensaje(Convert.ToString(loRow[
"nom_conex"]));
4699 private static bool CrearGrupo_Comprobar_TabSys(
string tcTipoBd,
string tcNombreBd,
string tcComentario =
"")
4701 DataTable ldtAuxi =
new DataTable();
4704 if (!DB._SQLExisteTablaBBDD(tcNombreBd,
"tabsys"))
4706 _Error_Message =
"No se ha detectado la existencia de la tabla TABSYS en la base de datos de "+tcTipoBd+
" "+tcComentario.Trim() +
4707 " ("+tcNombreBd+
") del grupo origen "+_GrupoOrigen;
4709 Guardar_Mensaje(_Error_Message);
4714 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(tcNombreBd,
"tabsys") +
" where tabla!='' order by basedatos,tabla", ref ldtAuxi);
4715 if (ldtAuxi.Rows.Count == 0)
4717 _Error_Message =
"Se ha detectado la existencia de la tabla TABSYS en la base de datos " + tcTipoBd +
" " + tcComentario.Trim() +
4718 " (" + tcNombreBd +
") del grupo origen " + _GrupoOrigen +
", pero ésta no tiene ningún registro y debería tener datos.";
4720 Guardar_Mensaje(_Error_Message);
4736 private static int CrearGrupo_Obtener_LenCampo(
string tcBd,
string tcTabla,
string tcComentLog,
int tnAnchoMinimo)
4738 DataTable ldtAuxiliar =
new DataTable();
4741 DB.SQLExec(
"select top 1 codigo from " + DB.SQLDatabaseReal(tcBd, tcTabla) +
" order by codigo desc", ref ldtAuxiliar);
4742 if (ldtAuxiliar.Rows.Count == 1)
4744 lnAncho = Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]).Length;
4745 if (lnAncho < tnAnchoMinimo )
4747 lnAncho = tnAnchoMinimo;
4749 Guardar_Mensaje(
"Núm. dígitos " + tcComentLog +
" = " + lnAncho.ToString().Trim() +
" obtenido de forma anómala.");
4755 Guardar_Mensaje(
"Núm. dígitos " + tcComentLog +
" = " + lnAncho.ToString().Trim());
4760 lnAncho = tnAnchoMinimo;
4762 Guardar_Mensaje(
"Núm. dígitos " + tcComentLog +
" = " + lnAncho.ToString().Trim() +
" obtenido de forma anómala (2).");
4776 private static bool CrearEjercicio_Comprobaciones_Previas(
string tcGrupoOrigen,
string tcEjerOrigen,
string tcEjerNuevo)
4778 DataTable ldtAuxiliar =
new DataTable();
4781 Guardar_Mensaje(
"INICIO PROCESO COMPROBACIONES PREVIAS ANTES DE PROCEDER A LA CREACION DEL NUEVO EJERCICIO" + Environment.NewLine);
4787 GrupoempTools._GrupoOrigen = tcGrupoOrigen;
4788 GrupoempTools._DbComunesGrOrigen =
"COMU" + tcGrupoOrigen.Trim();
4789 GrupoempTools._DbComunesGrNuevo = GrupoempTools._DbComunesGrOrigen;
4790 if (!DB._SQLExisteBBDD(_DbComunesGrOrigen))
4792 _Error_Message =
"No se ha detectado en el servidor SQL la base de datos de COMUNES (" + _DbComunesGrOrigen +
") asociada al grupo origen (" + _GrupoOrigen +
"), no se creará el ejercicio " + tcEjerNuevo;
4794 Guardar_Mensaje(_Error_Message);
4799 Guardar_Mensaje(
"Base de datos de COMUNES del grupo origen: " + _DbComunesGrOrigen);
4800 Guardar_Mensaje(
"Base de datos de COMUNES del grupo origen existe en el servidor SQL.");
4808 Guardar_Mensaje(
"Obteniendo bases de datos de Add-ons de grupo origen " + GrupoempTools._GrupoOrigen +
" (COMU" + _GrupoOrigen +
")");
4809 DB.SQLExec(
"select nom_conex,nombre from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"modulos"), ref _dtBdAddonsGrOrigen);
4812 Guardar_Mensaje(
"Detectados " + _dtBdAddonsGrOrigen.Rows.Count.ToString() +
" Add-ons.");
4813 foreach (DataRow loRow
in _dtBdAddonsGrOrigen.Rows)
4814 Guardar_Mensaje(Convert.ToString(loRow[
"nom_conex"]));
4821 DataTable ldtBdEjer =
new DataTable();
4822 GrupoempTools._DbEjerGrOrigen =
"";
4824 Guardar_Mensaje(
"Obteniendo base de datos de ejercicio "+tcEjerOrigen+
" de " + _DbComunesGrOrigen+
".EJERCICI");
4825 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"ejercici") +
" where [any]='" + tcEjerOrigen.Trim()+
"'", ref ldtBdEjer);
4826 if (ldtBdEjer.Rows.Count == 1)
4828 GrupoempTools._DbEjerGrOrigen = Convert.ToString(ldtBdEjer.Rows[0][
"conexion"]).Trim();
4830 Guardar_Mensaje(
"Base de datos de EJERCICIO origen: " + GrupoempTools._DbEjerGrOrigen);
4834 _Error_Message =
"No se ha podido averiguar el nombre de la base de datos de ejercicio " + tcEjerOrigen +
" en el grupo " + GrupoempTools._GrupoOrigen +
", imposible crear ejercicio " + tcEjerNuevo;
4836 Guardar_Mensaje(_Error_Message);
4844 if (!DB._SQLExisteBBDD(GrupoempTools._DbEjerGrOrigen))
4846 _Error_Message =
"La base de datos de EJERCICIO " + GrupoempTools._DbEjerGrOrigen +
" que se utilizará como origen de la creación de ejercicio no existe en el servidor, imposible crear ejercicio.";
4848 Guardar_Mensaje(_Error_Message);
4852 Guardar_Mensaje(
"La base de datos de ejercicio "+ GrupoempTools._DbEjerGrOrigen+
" que se utilizará como origen para la creación del ejercicio existe en el servidor SQL: OK");
4860 Guardar_Mensaje(
"Verificando la inexistencia del ejercicio " + tcEjerNuevo +
" que se pretende crear "+tcEjerNuevo);
4861 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"ejercici") +
" where [any]='" + tcEjerNuevo.Trim()+
"'", ref ldtBdEjer);
4862 if (ldtBdEjer.Rows.Count >= 1)
4864 _Error_Message =
"El ejercicio que se pretende crear " + tcEjerNuevo +
" ya existe en la tabla de ejercicios del grupo "+_GrupoOrigen+
", imposible crear ejercicio " + tcEjerNuevo;
4866 Guardar_Mensaje(_Error_Message);
4875 GrupoempTools._SufiBdEjerGrNuevo = GrupoempTools._DbEjerGrOrigen.Substring(4, 2);
4877 if (GrupoempTools._SufiBdEjerGrNuevo.Trim().Length != 2)
4879 _Error_Message =
"El sufijo del nombre de la base de datos del ejercicio origen "+_DbEjerGrOrigen+
" no tiene el formato, debería tener 2 carácteres: "+GrupoempTools._SufiBdEjerGrNuevo;
4881 Guardar_Mensaje(_Error_Message);
4888 GrupoempTools._DbEjerGrNuevo = tcEjerNuevo.Trim() + _SufiBdEjerGrNuevo.Trim();
4889 if (
string.IsNullOrWhiteSpace(GrupoempTools._DbEjerGrNuevo))
4891 _Error_Message =
"No se ha podido obtener el nombre de la base de datos de ejercicio a crear, imposible crear ejercicio " + tcEjerNuevo;
4893 Guardar_Mensaje(_Error_Message);
4897 Guardar_Mensaje(
"Asignado nombre a base de datos de EJERCICIO a crear: " + GrupoempTools._DbEjerGrNuevo);
4903 if (DB._SQLExisteBBDD(GrupoempTools._DbEjerGrNuevo))
4905 _Error_Message =
"La base de datos " + _DbEjerGrNuevo +
" correspondiente al ejercicio nuevo a crear en el grupo (" + tcGrupoOrigen +
") ya existe en el servidor, imposible crear ejercicio.";
4907 Guardar_Mensaje(_Error_Message);
4911 Guardar_Mensaje(
"La base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo +
" que se creará para el nuevo ejercicio no existe en el servidor SQL: OK");
4916 GrupoempTools._CarpetaBackupServidorSql = DB._SQLRutaBackup();
4917 if (
string.IsNullOrWhiteSpace(_CarpetaBackupServidorSql))
4919 _Error_Message =
"No se ha podido averiguar la carpeta de Backup del servidor SQL.";
4921 Guardar_Mensaje(_Error_Message);
4926 Guardar_Mensaje(
"Obtenida ruta de Backup en el servidor SQL " + _CarpetaBackupServidorSql +
": OK");
4933 Guardar_Mensaje(
"Obteniendo nº de dígitos anchura de campos CUENTA, MARCA, FAMILIA, VENDEDOR, ALMACEN según base de datos de ejercicio origen.");
4935 GrupoempTools._LenCuenta = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"cuentas",
"cuenta contable", 8);
4936 GrupoempTools._LenMarca = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"marcas",
"marca", 2);
4937 GrupoempTools._LenFamilia = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"familias",
"familia", 2);
4938 GrupoempTools._LenVendedor = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"vendedor",
"vendedor", 2);
4939 GrupoempTools._LenAlmacen = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"almacen",
"almacén", 2);
4944 Guardar_Mensaje(
"Detectando ejercicio predeterminado en grupo origen.");
4946 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"ejercici") +
" where [any]='"+tcEjerOrigen+
"'", ref ldtAuxiliar);
4947 if (ldtAuxiliar.Rows.Count == 0)
4949 _Error_Message =
"No se ha detectado ejercicio origen en la tabla de ejercicios del grupo " + _GrupoOrigen;
4951 Guardar_Mensaje(_Error_Message);
4956 GrupoempTools._FechaIniEjerOrigen = Convert.ToDateTime(ldtAuxiliar.Rows[0][
"periodoini"]);
4957 GrupoempTools._FechaFinEjerOrigen = Convert.ToDateTime(ldtAuxiliar.Rows[0][
"periodofin"]);
4964 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"codcom"), ref ldtAuxiliar);
4965 if (ldtAuxiliar.Rows.Count > 0)
4967 GrupoempTools._PrefijoCli3 = Convert.ToString(ldtAuxiliar.Rows[0][
"cliente"]).Substring(0, 3);
4968 GrupoempTools._PrefijoPro3 = Convert.ToString(ldtAuxiliar.Rows[0][
"proveed"]).Substring(0, 3);
4969 GrupoempTools._PrefijoAcr3 = Convert.ToString(ldtAuxiliar.Rows[0][
"acreed"]).Substring(0, 3);
4970 GrupoempTools._PrefijoBan3 = Convert.ToString(ldtAuxiliar.Rows[0][
"banco"]).Substring(0, 3);
4971 GrupoempTools._PrefijoCaj3 = Convert.ToString(ldtAuxiliar.Rows[0][
"caja"]).Substring(0, 3);
4972 GrupoempTools._PrefijoCom3 = Convert.ToString(ldtAuxiliar.Rows[0][
"compra"]).Substring(0, 3);
4973 GrupoempTools._PrefijoVen3 = Convert.ToString(ldtAuxiliar.Rows[0][
"venta"]).Substring(0, 3);
4974 GrupoempTools._PrefijoDeudor3 = Convert.ToString(ldtAuxiliar.Rows[0][
"deudor"]).Substring(0, 3);
4976 if (
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCli3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoPro3) ||
4977 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoAcr3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoBan3) ||
4978 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCom3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoVen3) ||
4979 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCaj3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoDeudor3))
4981 _Error_Message =
"No se ha podido detectar los prefijos de 3 dígitos para alguna de las cuentas contables de clientes, deudores, proveedores, acreedores, bancos, compras o ventas en el grupo origen " + _GrupoOrigen +
", alguno de ellos está vacío.";
4983 Guardar_Mensaje(_Error_Message);
4989 _Error_Message =
"No se ha podido detectar los prefijos de 3 dígitos para alguna de las cuentas contables de clientes, deudores, proveedores, acreedores, bancos, compras o ventas. No hay registros en COMUNES.CODCOM en el grupo origen " + _GrupoOrigen;
4991 Guardar_Mensaje(_Error_Message);
4998 DB.SQLExec(
"select codigo, nombre, cif from " + DB.SQLDatabaseReal(_DbEjerGrOrigen,
"empresa") +
" where codigo='01'", ref ldtAuxiliar);
4999 if (ldtAuxiliar.Rows.Count == 1 && Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]) ==
"01")
5000 GrupoempTools._EmpresaGrNuevo =
"01";
5003 DB.SQLExec(
"select codigo,nombre,cif from " + DB.SQLDatabaseReal(_DbEjerGrOrigen,
"empresa") +
" order by codigo", ref ldtAuxiliar);
5004 if (ldtAuxiliar.Rows.Count == 0)
5006 _Error_Message =
"No se ha detectado ningún registro en la tabla EMPRESA de la base de datos de ejercicio " + _DbEjerGrOrigen +
" del grupo origen " + _GrupoOrigen +
", no se creará el ejercicio.";
5008 Guardar_Mensaje(_Error_Message);
5013 GrupoempTools._EmpresaGrNuevo = Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]);
5017 GrupoempTools._NombreEmpresa = Convert.ToString(ldtAuxiliar.Rows[0][
"nombre"]);
5018 GrupoempTools._CifEmpresa = Convert.ToString(ldtAuxiliar.Rows[0][
"cif"]);
5022 if (
string.IsNullOrWhiteSpace(GrupoempTools._UserPropBdGrNuevo))
5023 GrupoempTools._UserPropBdGrNuevo =
"Sage50";
5027 string lcPropiedadNoInfo =
"";
5028 if (
string.IsNullOrWhiteSpace(_GrupoOrigen))
5029 lcPropiedadNoInfo +=
"_GrupoOrigen ";
5030 if (
string.IsNullOrWhiteSpace(_DbComunesGrOrigen))
5031 lcPropiedadNoInfo +=
"_DbComunesGrOrigen ";
5032 if (
string.IsNullOrWhiteSpace(_DbComunesGrNuevo))
5033 lcPropiedadNoInfo +=
"_DbComunesGrNuevo ";
5034 if (
string.IsNullOrWhiteSpace(_DbEjerGrOrigen))
5035 lcPropiedadNoInfo +=
"_DbEjerGrOrigen ";
5036 if (
string.IsNullOrWhiteSpace(_DbEjerGrNuevo))
5037 lcPropiedadNoInfo +=
"_DbEjerGrNuevo ";
5038 if (
string.IsNullOrWhiteSpace(_CarpetaBackupServidorSql))
5039 lcPropiedadNoInfo +=
"_CarpetaBackupServidorSql ";
5040 if (
string.IsNullOrWhiteSpace(_EmpresaGrNuevo))
5041 lcPropiedadNoInfo +=
"_EmpresaGrNuevo ";
5042 if (
string.IsNullOrWhiteSpace(_SufiBdEjerGrNuevo))
5043 lcPropiedadNoInfo +=
"_SufiBdEjerGrNuevo ";
5045 if (!
string.IsNullOrWhiteSpace(lcPropiedadNoInfo))
5047 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del ejercicio se han detectado propiedades internas sin valor: " + lcPropiedadNoInfo;
5049 Guardar_Mensaje(_Error_Message);
5053 if (_DbComunesGrOrigen != _DbComunesGrNuevo)
5055 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del ejercicio se ha detectado diferente valor para los nombres de la base de datos de COMUNES de grupo origen y destino que para la creación de un nuevo ejercicio deberían coincidir: " + _DbComunesGrOrigen +
" " + _DbComunesGrNuevo;
5057 Guardar_Mensaje(_Error_Message);
5062 if (_DbEjerGrOrigen == _DbEjerGrNuevo)
5064 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del ejercicio se ha detectado identico valor en los nombres de bases de datos de EJERCICIO del ejercicio origen y del ejercicio nuevo a crear: " + _DbEjerGrNuevo;
5066 Guardar_Mensaje(_Error_Message);
5074 Guardar_Mensaje(
"Verificando la existencia de la tabla TABSYS en las bases de datos COMUNES y ADDOns del grupo origen.");
5076 bool llOK = GrupoempTools.CrearGrupo_Comprobar_TabSys(
"COMUNES", _DbComunesGrOrigen);
5081 Guardar_Mensaje(
"Existe la tabla TABSYS en la bases de datos COMUNES (" + _DbComunesGrOrigen.Trim()+
") del grupo origen para la creación de nuevo ejercicio: OK.");
5085 Guardar_Mensaje(
"Comprobaciones previas a la creación del ejercicio satisfactorias: OK."+Environment.NewLine);
5086 Guardar_Mensaje(
"FIN PROCESO COMPROBACIONES PREVIAS ANTES DE PROCEDER A LA CREACION DEL NUEVO EJERCICIO" + Environment.NewLine);
5098 private static bool CrearGrupo_Comprobaciones_Previas(
string tcGrupo,
string tcGrOrigen)
5101 DataTable ldtAuxiliar =
new DataTable();
5106 Guardar_Mensaje(
"INICIO COMPROBACIONES PREVIAS"+Environment.NewLine);
5111 if (
string.IsNullOrWhiteSpace(tcGrupo))
5113 _Error_Message =
"No se ha recibido el parámetro código de grupo a crear.";
5115 Guardar_Mensaje(_Error_Message);
5122 if (DB._SQLExisteTablaBBDD(
"EUROWINSYS",
"GRUPOSEMP") ==
false)
5124 _Error_Message =
"No se ha detectado la tabla eurowinsys.gruposemp, no se creará el grupo " + tcGrupo;
5126 Guardar_Mensaje(_Error_Message);
5130 Guardar_Mensaje(
"Existe la tabla GruposEmp: OK.");
5138 DataTable ldtGrupos =
new DataTable();
5155 string lcCodGrupoActual = DB.DbComunes.Trim().Substring(4, 4);
5157 Guardar_Mensaje(
"Conexión origen: grupo "+lcCodGrupoActual+
" con base de datos de COMUNES ("+DB.DbComunes+
")");
5160 string lcCodGrupoPripal = GrupoempTools._Obtener_CodGrupoPripal(lcCodGrupoActual);
5163 lcSql =
"SELECT * FROM [EUROWINSYS].[dbo].[gruposemp] where codigo=" + DB.SQLString(lcCodGrupoPripal) +
" and pripal=" + DB.SQLTrue();
5164 DB.SQLExec(lcSql, ref ldtGrupos);
5165 if (ldtGrupos.Rows.Count != 1)
5167 _Error_Message =
"No se ha detectado el grupo principal de la instalación en la tabla eurowinsys.gruposemp para el grupo activo " + lcCodGrupoActual +
", no se creará el grupo " + tcGrupo;
5169 Guardar_Mensaje(_Error_Message);
5173 Guardar_Mensaje(
"Grupo principal asociado al grupo actual: " + Convert.ToString((ldtGrupos.Rows[0][
"codigo"])) );
5174 GrupoempTools._GrupoPrincipal = Convert.ToString(ldtGrupos.Rows[0][
"codigo"]);
5178 if (!
string.IsNullOrWhiteSpace(tcGrOrigen))
5181 lcSql =
"SELECT * FROM [EUROWINSYS].[dbo].[gruposemp] where codigo=" + DB.SQLString(tcGrOrigen);
5182 DB.SQLExec(lcSql, ref ldtGrupos);
5183 if (ldtGrupos.Rows.Count != 1)
5185 _Error_Message =
"No se ha detectado el grupo origen " + tcGrOrigen +
" en la tabla de grupos, no se creará el grupo " + tcGrupo;
5187 Guardar_Mensaje(_Error_Message);
5191 Guardar_Mensaje(
"Grupo origen de la creación de grupo: " + tcGrOrigen);
5193 GrupoempTools._GrupoOrigen = tcGrOrigen;
5196 GrupoempTools._GrupoOrigen = _GrupoPrincipal;
5200 Guardar_Mensaje(
"Grupo origen que se utilizará para la creación del nuevo grupo: " + GrupoempTools._GrupoOrigen);
5201 Guardar_Mensaje(
"Grupo a crear: " + tcGrupo);
5205 GrupoempTools._DbComunesGrOrigen =
"COMU" + _GrupoOrigen.Trim();
5206 if (!DB._SQLExisteBBDD(_DbComunesGrOrigen))
5208 _Error_Message =
"No se ha detectado en el servidor SQL la base de datos de COMUNES (" + _DbComunesGrOrigen +
") asociada al grupo (" + _GrupoOrigen +
") " +
5209 "que se pretende utilizar para la creación del nuevo grupo, no se creará el grupo " + tcGrupo;
5211 Guardar_Mensaje(_Error_Message);
5216 Guardar_Mensaje(
"Base de datos de COMUNES del grupo origen: " + _DbComunesGrOrigen);
5217 Guardar_Mensaje(
"Base de datos de COMUNES del grupo origen existe en el servidor SQL.");
5223 GrupoempTools._DbComunesGrNuevo =
"COMU" + tcGrupo.Trim();
5224 if (DB._SQLExisteBBDD(GrupoempTools._DbComunesGrNuevo))
5226 _Error_Message =
"La base de datos " + _DbComunesGrNuevo +
" correspondiente al nuevo grupo a crear (" + tcGrupo +
") ya existe en el servidor. Imposible crear grupo.";
5228 Guardar_Mensaje(_Error_Message);
5233 Guardar_Mensaje(
"Base de datos de COMUNES del grupo a crear " + tcGrupo +
": " + GrupoempTools._DbComunesGrNuevo);
5234 Guardar_Mensaje(
"Base de datos de COMUNES del grupo a crear no existe en el servidor SQL.");
5239 Guardar_Mensaje(
"Obteniendo los Add-ons base");
5240 GrupoempTools.ObtenerAddonsBase();
5245 Guardar_Mensaje(
"Obteniendo bases de datos de Add-ons de grupo origen " + GrupoempTools._GrupoOrigen +
" (COMU" + _GrupoOrigen +
")");
5247 DB.SQLExec(
"select nom_conex,nombre from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"modulos"), ref _dtBdAddonsGrOrigen);
5250 Guardar_Mensaje(
"Detectados " + _dtBdAddonsGrOrigen.Rows.Count.ToString() +
" Add-ons.");
5251 foreach (DataRow loRow
in _dtBdAddonsGrOrigen.Rows)
5252 Guardar_Mensaje(Convert.ToString(loRow[
"nom_conex"]));
5256 GrupoempTools._DbEjerGrOrigen =
"";
5258 Guardar_Mensaje(
"Obteniendo base de datos de ejercicio predeterminado de " + _DbComunesGrOrigen);
5259 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"ejercici") +
" where predet=" + DB.SQLTrue(), ref ldtAuxiliar);
5260 if (ldtAuxiliar.Rows.Count == 1)
5262 GrupoempTools._DbEjerGrOrigen = Convert.ToString(ldtAuxiliar.Rows[0][
"conexion"]).Trim();
5263 GrupoempTools._EjerOrigen = Convert.ToString(ldtAuxiliar.Rows[0][
"any"]).Trim();
5264 GrupoempTools._FechaIniEjerOrigen = Convert.ToDateTime(ldtAuxiliar.Rows[0][
"periodoini"]);
5265 GrupoempTools._FechaFinEjerOrigen = Convert.ToDateTime(ldtAuxiliar.Rows[0][
"periodofin"]);
5268 Guardar_Mensaje(
"Base de datos de EJERCICIO predeterminado de grupo origen: " + GrupoempTools._DbEjerGrOrigen);
5269 Guardar_Mensaje(
"Ejercicio predeterminado en grupo origen: " + GrupoempTools._EjerOrigen);
5274 _Error_Message =
"No se ha detectado la base de datos de ejercicio predeterminado en el grupo origen " + GrupoempTools._GrupoOrigen +
", imposible crear grupo " + tcGrupo;
5276 Guardar_Mensaje(_Error_Message);
5281 if (!DB._SQLExisteBBDD(GrupoempTools._DbEjerGrOrigen))
5283 _Error_Message =
"La base de datos de EJERCICIO " + GrupoempTools._DbEjerGrOrigen +
" correspondiente al nuevo grupo a crear (" + tcGrupo +
") no existe en el servidor, imposible crear grupo.";
5285 Guardar_Mensaje(_Error_Message);
5289 Guardar_Mensaje(
"La base de datos de ejercicio predeterminado del grupo origen " + GrupoempTools._GrupoOrigen +
" " + GrupoempTools._DbEjerGrOrigen +
" existe en el servidor SQL: OK");
5295 bool llExisteAlgunaBdNew =
false;
5297 DataTable ldtBdsExcluir =
new DataTable();
5298 ldtBdsExcluir.Columns.Add(
new DataColumn(
"name", typeof(
string)));
5306 GrupoempTools._DbEjerGrNuevo = DB._Obtener_NuevaDb_Gestion(_EjerNuevo, 6, ldtBdsExcluir);
5307 if (
string.IsNullOrWhiteSpace(GrupoempTools._DbEjerGrNuevo))
5309 _Error_Message =
"No se ha podido obtener el nombre de la base de datos de ejercicio a crear para el nuevo grupo, imposible crear grupo " + tcGrupo;
5311 Guardar_Mensaje(_Error_Message);
5315 Guardar_Mensaje(
"Asignado nombre a base de datos de EJERCICIO de nuevo grupo: " + GrupoempTools._DbEjerGrNuevo);
5317 GrupoempTools._SufiBdEjerGrNuevo = GrupoempTools._DbEjerGrNuevo.Substring(4, 2);
5320 if (GrupoempTools._SufiBdEjerGrNuevo.Trim().Length != 2)
5322 _Error_Message =
"El sufijo del nombre de la base de datos de EJERCICIO origen " + _DbEjerGrOrigen +
" no tiene el formato correcto, debería tener 2 carácteres: " + GrupoempTools._SufiBdEjerGrNuevo;
5324 Guardar_Mensaje(_Error_Message);
5330 Guardar_Mensaje(
"Sufijo para las bases de datos del nuevo grupo: " + GrupoempTools._SufiBdEjerGrNuevo);
5336 llExisteAlgunaBdNew = GrupoempTools.CrearGrupo_Comprobar_Existencia_BdNuevas(GrupoempTools._EjerNuevo, GrupoempTools._SufiBdEjerGrNuevo);
5337 if (llExisteAlgunaBdNew)
5340 Guardar_Mensaje(
"Alguna de las nuevas bases de datos a crear en el nuevo grupo con el sufijo " + _SufiBdEjerGrNuevo+
" ya existe, se reintenta la generación de nombres de bds. con nuevo sufijo.");
5347 DataRow loRow = ldtBdsExcluir.NewRow();
5348 loRow[
"name"] = GrupoempTools._DbEjerGrNuevo.Trim();
5349 ldtBdsExcluir.Rows.Add(loRow);
5352 while (llExisteAlgunaBdNew);
5356 if (DB._SQLExisteBBDD(GrupoempTools._DbEjerGrNuevo))
5358 _Error_Message =
"La base de datos " + _DbEjerGrNuevo +
" correspondiente al ejercicio del nuevo grupo a crear (" + tcGrupo +
") ya existe en el servidor, imposible crear grupo.";
5360 Guardar_Mensaje(_Error_Message);
5364 Guardar_Mensaje(
"La base de datos de EJERCICIO " + GrupoempTools._DbEjerGrNuevo +
" que se creará para el nuevo grupo no existe en el servidor SQL: OK");
5371 bool llHayCambios =
false;
5372 string lcNombreAddon =
"";
5373 for (
int i = GrupoempTools._dtBdAddonsGrOrigen.Rows.Count - 1; i >= 0; i--)
5375 lcNombreAddon = Convert.ToString(GrupoempTools._dtBdAddonsGrOrigen.Rows[i][
"nombre"]).Trim().ToUpper();
5376 if (!GrupoempTools._AddonsInstal.Contains(lcNombreAddon))
5378 llHayCambios =
true;
5379 DataRow dr = GrupoempTools._dtBdAddonsGrOrigen.Rows[i];
5384 GrupoempTools._dtBdAddonsGrOrigen.AcceptChanges();
5388 string lcNewBdAddon =
"";
5391 GrupoempTools._dtBdAddonsGrNuevo = GrupoempTools._dtBdAddonsGrOrigen.Clone();
5392 GrupoempTools._dtBdAddonsGrNuevo.Clear();
5395 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrOrigen.Rows)
5397 lcNewBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim();
5398 lcNewBdAddon = lcNewBdAddon.Substring(0, lcNewBdAddon.Length - 2);
5399 lcNewBdAddon = lcNewBdAddon + GrupoempTools._SufiBdEjerGrNuevo;
5401 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim().ToUpper();
5404 if (DB._SQLExisteBBDD(lcNewBdAddon))
5406 _Error_Message =
"La base de datos " + lcNewBdAddon +
" correspondiente al nuevo grupo a crear (" + tcGrupo +
") ya existe en el servidor, imposible crear grupo.";
5408 Guardar_Mensaje(_Error_Message);
5414 DataRow loRow2 = GrupoempTools._dtBdAddonsGrNuevo.NewRow();
5415 loRow2[
"nombre"] = loRow[
"nombre"];
5416 loRow2[
"nom_conex"] = lcNewBdAddon;
5417 GrupoempTools._dtBdAddonsGrNuevo.Rows.Add(loRow2);
5420 Guardar_Mensaje(
"La base de datos del Add-On " + lcNombreAddon +
" " + lcNewBdAddon +
" correspondiente al nuevo grupo a crear (" + tcGrupo +
") no existe en el servidor: OK");
5426 GrupoempTools._CarpetaBackupServidorSql = DB._SQLRutaBackup();
5427 if (
string.IsNullOrWhiteSpace(_CarpetaBackupServidorSql))
5429 _Error_Message =
"No se ha podido averiguar la carpeta de Backup del servidor SQL.";
5431 Guardar_Mensaje(_Error_Message);
5436 Guardar_Mensaje(
"Obtenida ruta de Backup en el servidor SQL " + _CarpetaBackupServidorSql +
": OK");
5443 Guardar_Mensaje(
"Obteniendo nº de dígitos anchura de campos CUENTA, MARCA, FAMILIA, VENDEDOR según base de datos de ejercicio en grupo origen.");
5446 if (!GrupoempTools._LongitudesEstandar)
5448 GrupoempTools._LenCuenta = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"cuentas",
"cuenta contable", 8);
5449 GrupoempTools._LenMarca = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"marcas",
"marca", 2);
5450 GrupoempTools._LenFamilia = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"familias",
"familia", 2);
5451 GrupoempTools._LenVendedor = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"vendedor",
"vendedor", 2);
5452 GrupoempTools._LenAlmacen = GrupoempTools.CrearGrupo_Obtener_LenCampo(_DbEjerGrOrigen,
"almacen",
"almacén", 2);
5457 GrupoempTools._LenCuenta = 8;
5458 GrupoempTools._LenMarca = 2;
5459 GrupoempTools._LenFamilia = 2;
5460 GrupoempTools._LenVendedor = 2;
5461 GrupoempTools._LenAlmacen = 2;
5465 DB.SQLExec(
"select * from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"codcom"), ref ldtAuxiliar);
5466 if (ldtAuxiliar.Rows.Count > 0)
5468 GrupoempTools._PrefijoCli3 = Convert.ToString(ldtAuxiliar.Rows[0][
"cliente"]).Substring(0, 3);
5469 GrupoempTools._PrefijoPro3 = Convert.ToString(ldtAuxiliar.Rows[0][
"proveed"]).Substring(0, 3);
5470 GrupoempTools._PrefijoAcr3 = Convert.ToString(ldtAuxiliar.Rows[0][
"acreed"]).Substring(0, 3);
5471 GrupoempTools._PrefijoBan3 = Convert.ToString(ldtAuxiliar.Rows[0][
"banco"]).Substring(0, 3);
5472 GrupoempTools._PrefijoCaj3 = Convert.ToString(ldtAuxiliar.Rows[0][
"caja"]).Substring(0, 3);
5473 GrupoempTools._PrefijoCom3 = Convert.ToString(ldtAuxiliar.Rows[0][
"compra"]).Substring(0, 3);
5474 GrupoempTools._PrefijoVen3 = Convert.ToString(ldtAuxiliar.Rows[0][
"venta"]).Substring(0, 3);
5475 GrupoempTools._PrefijoDeudor3 = Convert.ToString(ldtAuxiliar.Rows[0][
"deudor"]).Substring(0, 3);
5477 if (
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCli3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoPro3) ||
5478 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoAcr3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoBan3) ||
5479 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCom3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoVen3) ||
5480 string.IsNullOrWhiteSpace(GrupoempTools._PrefijoCaj3) ||
string.IsNullOrWhiteSpace(GrupoempTools._PrefijoDeudor3) )
5482 _Error_Message =
"No se ha podido detectar los prefijos de 3 dígitos para alguna de las cuentas contables de clientes, deudores, proveedores, acreedores, bancos, compras o ventas en el grupo origen " + _GrupoOrigen+
", alguno de ellos está vacío.";
5484 Guardar_Mensaje(_Error_Message);
5490 _Error_Message =
"No se ha podido detectar los prefijos de 3 dígitos para alguna de las cuentas contables de clientes, deudores, proveedores, acreedores, bancos, compras o ventas. No hay registros en COMUNES.CODCOM en el grupo origen " + _GrupoOrigen;
5492 Guardar_Mensaje(_Error_Message);
5499 DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(_DbEjerGrOrigen,
"empresa") +
" where codigo='01'", ref ldtAuxiliar);
5500 if (ldtAuxiliar.Rows.Count == 1 && Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]) ==
"01")
5501 GrupoempTools._EmpresaGrNuevo =
"01";
5504 DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(_DbEjerGrOrigen,
"empresa") +
" order by codigo", ref ldtAuxiliar);
5505 if (ldtAuxiliar.Rows.Count == 0)
5507 _Error_Message =
"No se ha detectado ningún registro en la tabla EMPRESA de la base de datos de ejercicio "+_DbEjerGrOrigen+
" del grupo origen " + _GrupoOrigen+
", no se creará el grupo.";
5509 Guardar_Mensaje(_Error_Message);
5514 GrupoempTools._EmpresaGrNuevo = Convert.ToString(ldtAuxiliar.Rows[0][
"codigo"]);
5520 string lcPropiedadNoInfo =
"";
5521 if (
string.IsNullOrWhiteSpace(_GrupoPrincipal))
5522 lcPropiedadNoInfo +=
"_GrupoPrincipal ";
5523 if (
string.IsNullOrWhiteSpace(_GrupoOrigen))
5524 lcPropiedadNoInfo +=
"_GrupoOrigen ";
5525 if (
string.IsNullOrWhiteSpace(_DbComunesGrOrigen))
5526 lcPropiedadNoInfo +=
"_DbComunesGrOrigen ";
5527 if (
string.IsNullOrWhiteSpace(_DbEjerGrOrigen))
5528 lcPropiedadNoInfo +=
"_DbEjerGrOrigen ";
5529 if (
string.IsNullOrWhiteSpace(_DbComunesGrNuevo))
5530 lcPropiedadNoInfo +=
"_DbComunesGrNuevo ";
5531 if (
string.IsNullOrWhiteSpace(_DbEjerGrNuevo))
5532 lcPropiedadNoInfo +=
"_DbEjerGrNuevo ";
5533 if (
string.IsNullOrWhiteSpace(_CarpetaBackupServidorSql))
5534 lcPropiedadNoInfo +=
"_CarpetaBackupServidorSql ";
5535 if (
string.IsNullOrWhiteSpace(_EmpresaGrNuevo))
5536 lcPropiedadNoInfo +=
"_EmpresaGrNuevo ";
5537 if (
string.IsNullOrWhiteSpace(_SufiBdEjerGrNuevo))
5538 lcPropiedadNoInfo +=
"_SufiBdEjerGrNuevo ";
5539 if (
string.IsNullOrWhiteSpace(_EjerOrigen))
5540 lcPropiedadNoInfo +=
"_EjerOrigen ";
5541 if (_FechaIniEjerOrigen == null)
5542 lcPropiedadNoInfo +=
"_FechaIniEjerOrigen ";
5543 if (_FechaFinEjerOrigen == null)
5544 lcPropiedadNoInfo +=
"_FechaFinEjerOrigen ";
5547 if (!
string.IsNullOrWhiteSpace(lcPropiedadNoInfo))
5549 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del grupo se han detectado propiedades internas sin valor: "+lcPropiedadNoInfo;
5551 Guardar_Mensaje(_Error_Message);
5555 if (_DbComunesGrOrigen == _DbComunesGrNuevo)
5557 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del nuevo grupo se han detectado identico valor en los nombres de bases de datos de COMUNES del grupo origen y del grupo nuevo a crear: "+_DbComunesGrOrigen;
5559 Guardar_Mensaje(_Error_Message);
5563 if ( _DbEjerGrOrigen == _DbEjerGrNuevo)
5565 _Error_Message =
"Al finalizar las comprobaciones previas a la creación del nuevo grupo se han detectado identico valor en los nombres de bases de datos de EJERCICIO del grupo origen y del grupo nuevo a crear: "+_DbEjerGrOrigen;
5567 Guardar_Mensaje(_Error_Message);
5575 Guardar_Mensaje(
"Verificando la existencia de la tabla TABSYS en las bases de datos COMUNES y ADDOns del grupo origen.");
5577 bool llOK = GrupoempTools.CrearGrupo_Comprobar_TabSys(
"COMUNES",_DbComunesGrOrigen);
5582 Guardar_Mensaje(
"Existe la tabla TABSYS en todas las bases de datos COMUNES y ADDONS del grupo origen: OK.");
5584 string lcBdAddon=
"";
5585 foreach (DataRow loRow
in _dtBdAddonsGrOrigen.Rows)
5587 lcNombreAddon = Convert.ToString(loRow[
"nombre"]).Trim();
5588 lcBdAddon = Convert.ToString(loRow[
"nom_conex"]).Trim().ToUpper();
5589 llOK = GrupoempTools.CrearGrupo_Comprobar_TabSys(
"ADDON", lcBdAddon, lcNombreAddon);
5597 Guardar_Mensaje(
"Comprobaciones previas a la creación del grupo satisfactorias: OK."+Environment.NewLine);
5598 Guardar_Mensaje(
"FIN COMPROBACIONES PREVIAS"+Environment.NewLine);
5610 private static bool Backup_Bd(
string tcDb,
string tcMensajeLog =
"")
5614 if (GrupoempTools._Log)
5615 Guardar_Mensaje(
"Realizando copia base de datos " + tcDb);
5617 llOk = DB._DbBackup(tcDb, GrupoempTools._CarpetaBackupServidorSql);
5622 if (GrupoempTools._Log)
5623 Guardar_Mensaje(
"La copia de seguridad de la base de datos de " + tcMensajeLog +
" " + tcDb +
" se ha realizado correctamente: OK");
5627 _Error_Message =
"La copia de seguridad de la base de datos de " + tcMensajeLog +
" " + tcDb +
" NO se ha realizado correctamente.";
5628 if (GrupoempTools._Log)
5629 Guardar_Mensaje(_Error_Message);
5644 private static bool Restore_Bd(
string tcDbNombreViejo,
string tcDbNombreNuevo,
string tcMensalog =
"")
5649 Guardar_Mensaje(
"Realizando restauración de la copia de la base de datos de " + tcMensalog +
" del grupo origen " + tcDbNombreViejo +
" con nuevo nombre " + tcDbNombreNuevo);
5650 DB.Error_Message =
"";
5651 llOk = DB._DbRestore(tcDbNombreViejo, tcDbNombreNuevo, GrupoempTools._CarpetaBackupServidorSql, GrupoempTools._UserPropBdGrNuevo);
5655 Guardar_Mensaje(
"La creación de la nueva base de datos de " + tcMensalog +
" " + tcDbNombreNuevo +
" se ha realizado correctamente: OK");
5670 if (
string.IsNullOrWhiteSpace(GrupoempTools._CrearGrupoP))
5672 _Error_Message =
"NO se ha podido restaurar la copia de seguridad de la base de datos de " + tcMensalog +
" " + tcDbNombreViejo +
" como " + tcDbNombreNuevo +
", imposible crear grupo. Error: " + DB.Error_Message;
5674 Guardar_Mensaje(_Error_Message);
5682 borrarBaseDatos(tcDbNombreNuevo);
5686 Guardar_Mensaje(
"NO se ha podido restaurar la copia de seguridad de la base de datos de " + tcMensalog +
" " + tcDbNombreViejo +
" como " + tcDbNombreNuevo +
". Error: " + DB.Error_Message);
5687 Guardar_Mensaje(
"Intentando restaurar la base de datos con el usuario 'sa'");
5694 string lcUsuarioActual =
string.Empty;
5695 string lcPassActual =
string.Empty;
5696 datosConexionActual(out lcUsuarioActual, out lcPassActual);
5699 string lcMsgError =
string.Empty;
5700 llOk = restoreUsuario(tcDbNombreViejo, tcDbNombreNuevo, lcUsuarioActual, out lcMsgError, tcMensalog);
5703 conectarUsuario(lcUsuarioActual, lcPassActual);
5707 _Error_Message = lcMsgError;
5709 Guardar_Mensaje(_Error_Message);
5725 private static bool Restore_Indices_ValoresDefecto(
string tcDbNombreViejo,
string tcDbNombreNuevo)
5728 if (GrupoempTools._TipoOperativaCreacionGrupoEjer != GrupoempTools.TipoOperativaCreacion.PorCopiaRestauracionBd)
5732 Guardar_Mensaje(
"Revisando índices y valores por defecto de la base de datos " + tcDbNombreNuevo);
5735 DataTable ldtIndices =
new DataTable();
5736 if (ObtenerIndicesDb(tcDbNombreNuevo, ref ldtIndices))
5739 if (!CrearGrupoEjer_Actualizar_Indices(tcDbNombreViejo, tcDbNombreNuevo,
"", ldtIndices))
5744 DataTable ldtValsDefecto =
new DataTable();
5745 if (ObtenerValoresDefectoDb(tcDbNombreNuevo, ref ldtValsDefecto))
5748 if (!CrearGrupoEjer_Actualizar_ValoresDefecto(tcDbNombreViejo, tcDbNombreNuevo,
"", ldtValsDefecto))
5753 Guardar_Mensaje(
"Se han revisado los índices y valores por defecto de la base de datos " + tcDbNombreNuevo);
5766 private static bool ObtenerIndicesDb(
string tcDb, ref DataTable dtIndices)
5771 dtIndices =
new DataTable();
5772 llOk = DB._DbIndicesCampos(tcDb, ref dtIndices);
5775 _Error_Message =
"No se pudieron obtener los índices de las tablas de la base de datos " + tcDb;
5777 Guardar_Mensaje(_Error_Message);
5790 private static bool ObtenerValoresDefectoDb(
string tcDb, ref DataTable dtValoresDefecto)
5795 dtValoresDefecto =
new DataTable();
5796 llOk = DB._DbValoresDefectoCampos(tcDb, ref dtValoresDefecto);
5799 _Error_Message =
"No se pudieron obtener los valores por defecto de las tablas de la base de datos " + tcDb;
5801 Guardar_Mensaje(_Error_Message);
5814 private static bool BorrarGrupo_Remove_Bd(
string tcDb,
string tcMensajeLog =
"")
5817 string lcComando =
"";
5819 if (!DB._SQLExisteBBDD(tcDb))
5822 Guardar_Mensaje(
"Se pretendía eliminar la base de datos " + tcMensajeLog +
" " + tcDb +
" pero no se ha detectado su existencia en el servidor de datos SQL.");
5826 lcComando =
"DROP DATABASE [" + tcDb +
"]";
5828 Guardar_Mensaje(
"Eliminación de la base " + tcMensajeLog +
" " + tcDb);
5830 llOk = DB.SQLExec(lcComando);
5834 Guardar_Mensaje(
"Resultado de " + lcComando +
": " + (llOk ?
"OK" :
"KO"));
5835 if (!llOk && !
string.IsNullOrWhiteSpace(DB.Error_Message))
5836 Guardar_Mensaje(
"Motivo : " + DB.Error_Message);
5837 Guardar_Mensaje(
"Verificando existencia da la base de datos " + tcDb +
" tras borrado.");
5840 if (DB._SQLExisteBBDD(tcDb))
5844 Guardar_Mensaje(
"La base de datos " + tcDb +
" aún existe en el servidor SQL, no quedó eliminada.");
5849 Guardar_Mensaje(
"La base de datos " + tcDb +
" fue correctamente eliminada y ya no existe en el servidor SQL: OK");
5860 private static bool RevisarBaseDatosEnUso()
5862 string lcMensaje =
string.Empty;
5864 Dictionary<String, String> dicBds =
new Dictionary<string, string> { };
5865 string lcBds =
string.Empty;
5868 foreach (DataRow loRow
in GrupoempTools._dtBdAddonsGrBorrar.Rows)
5869 dicBds.Add(Convert.ToString(loRow[
"nom_conex"]).Trim(), Convert.ToString(loRow[
"nombre"]).Trim());
5872 foreach (DataRow loRow
in GrupoempTools._dtBdEjerGrBorrar.Rows)
5873 dicBds.Add(Convert.ToString(loRow[
"conexion"]).Trim(), Convert.ToString(loRow[
"any"]).Trim());
5876 dicBds.Add(GrupoempTools._DbComunesGrBorrar,
"COMUNES");
5879 foreach (KeyValuePair<String, String> loBd
in dicBds)
5882 if (!RevisarEnuso(loBd.Key, ref lcMensaje))
5884 lcBds = lcBds + (!
string.IsNullOrWhiteSpace(lcBds) ?
", " :
" ") + loBd.Key;
5887 Guardar_Mensaje(lcMensaje);
5892 Guardar_Mensaje(
"La base de datos "+ loBd+
" se han cerrado todas las conexiones pendientes.");
5897 _Error_Message =
"Las siguientes bases de datos se encuentran en uso: " + lcBds;
5910 private static bool RevisarEnuso(
string tcDb, ref
string tcMensajeLog)
5912 string lcSql =
string.Empty;
5916 if (!DB._SQLExisteBBDD(tcDb))
5919 lcSql =
"USE master; ";
5920 llOk = DB.SQLExec(lcSql);
5922 lcSql =
"ALTER DATABASE [" + tcDb +
"] " +
5923 "SET SINGLE_USER " +
5924 "WITH ROLLBACK IMMEDIATE; " +
5925 "ALTER DATABASE [" + tcDb +
"] " +
5927 llOk = DB.SQLExec(lcSql);
5930 tcMensajeLog =
string.IsNullOrWhiteSpace(DB.Error_Message) ?
"En la base de datos " + tcDb +
" no se han podido cerrar las conexiones." : DB.Error_Message;
5940 private static void Guardar_Mensaje(
string tcTexto=
"")
5943 lcTime = Convert.ToString(DateTime.Now);
5945 _cCadenaLog.Append((tcTexto != Environment.NewLine ? lcTime +
" " + tcTexto :
"") + Environment.NewLine);
5952 private static void CopiarStringLog_Fichero(
string tcFichero)
5954 File.WriteAllText(tcFichero, Convert.ToString(_cCadenaLog), Encoding.UTF8);
5964 private static void CrearGrupo_AnadirGrupo_Gruposemp(
string tcGrupo,
string tcNombreGrupo)
5966 DataTable ldtAuxiliar =
new DataTable();
5967 string lcIdSage50 =
"";
5969 tcNombreGrupo = !
string.IsNullOrWhiteSpace(tcNombreGrupo) ? tcNombreGrupo :
"NOMBRE GRUPO";
5971 DB.SQLExec(
"select idsage50 from " + DB.SQLDatabaseReal(
"eurowinsys",
"gruposemp") +
" " +
5972 "where codigo = " + DB.SQLString(GrupoempTools._GrupoPrincipal), ref ldtAuxiliar);
5973 if (ldtAuxiliar != null && ldtAuxiliar.Rows.Count > 0)
5974 lcIdSage50 = Convert.ToString(ldtAuxiliar.Rows[0][
"idsage50"]);
5976 ldtAuxiliar =
new DataTable();
5977 DB.SQLExec(
"select codigo from " + DB.SQLDatabaseReal(
"eurowinsys",
"gruposemp") +
" " +
5978 "where codigo=" + DB.SQLString(tcGrupo), ref ldtAuxiliar);
5979 if (ldtAuxiliar.Rows.Count == 0)
5982 Guardar_Mensaje(
"Creando registro de grupo en la tabla de grupos.");
5984 DB.SQLExec(
"insert into " + DB.SQLDatabaseReal(
"eurowinsys",
"gruposemp") +
" (codigo,nombre,codpripal,idsage50) " +
5985 "values (" + DB.SQLString(tcGrupo) +
", " + DB.SQLString(tcNombreGrupo) +
", " + DB.SQLString(GrupoempTools._GrupoPrincipal) +
", " + DB.SQLString(lcIdSage50) +
")");
5989 DB.SQLExec(
"update " + DB.SQLDatabaseReal(
"eurowinsys",
"gruposemp") +
" set nombre = " + DB.SQLString(tcNombreGrupo) +
", idsage50 = " + DB.SQLString(lcIdSage50) +
5990 " where codigo=" + DB.SQLString(tcGrupo));
6000 private static bool CrearGrupo_AnadirGrupo_CfgCliSrv()
6003 string lcEuroserv = GrupoempTools._Euroserv.Trim();
6004 if (
string.IsNullOrWhiteSpace(lcEuroserv))
6006 _Error_Message =
"No se ha podido añadir la conexión a COMUNES del nuevo grupo al fichero cfgclisrv.xml, no se ha detectado la ruta hacia el servidor (euroserv).";
6008 Guardar_Mensaje(_Error_Message);
6013 string lcCfgCliSrvXml = Path.Combine(lcEuroserv,
"cfgclisrv.xml");
6014 if (!File.Exists(lcCfgCliSrvXml))
6016 _Error_Message =
"No se ha podido añadir la conexión a COMUNES del nuevo grupo al fichero " + lcCfgCliSrvXml +
", no existe el fichero en dicha ruta.";
6018 Guardar_Mensaje(_Error_Message);
6029 XmlDocument xmlCfgCliSrv =
new XmlDocument();
6030 xmlCfgCliSrv.Load(lcCfgCliSrvXml);
6035 XmlNode VFPDataNode = xmlCfgCliSrv[
"VFPData"];
6036 string lcUser=
"", lcPassword=
"", lcIp=
"";
6037 bool llConexionFound=
false;
6039 foreach (XmlNode cfgclisrvNode
in VFPDataNode.ChildNodes)
6041 if (cfgclisrvNode.Name.ToLower().Trim() ==
"cfgclisrv")
6043 if (cfgclisrvNode[
"comunes"].InnerText.Trim().ToLower() == _DbComunesGrOrigen.Trim().ToLower())
6046 lcUser = cfgclisrvNode[
"user"].InnerText;
6047 lcPassword = cfgclisrvNode[
"password"].InnerText;
6048 lcIp = cfgclisrvNode[
"ip"].InnerText;
6049 llConexionFound =
true;
6056 if (!llConexionFound)
6058 _Error_Message =
"No se ha detectado el registro correspondiente a la base de datos de COMUNES "+ _DbComunesGrOrigen+
" en "+lcCfgCliSrvXml;
6060 Guardar_Mensaje(_Error_Message);
6069 XmlNode loNodeCfgCliSrv = xmlCfgCliSrv.CreateElement(
"cfgclisrv");
6071 XmlNode loNodeUser = xmlCfgCliSrv.CreateElement(
"user");
6072 loNodeUser.InnerText = lcUser.Trim();
6073 loNodeCfgCliSrv.AppendChild(loNodeUser);
6075 XmlNode loNodePassword = xmlCfgCliSrv.CreateElement(
"password");
6076 loNodePassword.InnerText = lcPassword;
6077 loNodeCfgCliSrv.AppendChild(loNodePassword);
6079 XmlNode loNodeIp = xmlCfgCliSrv.CreateElement(
"ip");
6080 loNodeIp.InnerText = lcIp.Trim();
6081 loNodeCfgCliSrv.AppendChild(loNodeIp);
6083 XmlNode loNodePort = xmlCfgCliSrv.CreateElement(
"port");
6084 loNodePort.InnerText =
"0";
6085 loNodeCfgCliSrv.AppendChild(loNodePort);
6087 XmlNode loNodeComunes = xmlCfgCliSrv.CreateElement(
"comunes");
6088 loNodeComunes.InnerText = _DbComunesGrNuevo.Trim(); ;
6089 loNodeCfgCliSrv.AppendChild(loNodeComunes);
6091 XmlNode loNodeServer = xmlCfgCliSrv.CreateElement(
"server");
6092 loNodeServer.InnerText =
"SQLSERVER";
6093 loNodeCfgCliSrv.AppendChild(loNodeServer);
6095 XmlNode loNodeAutWin = xmlCfgCliSrv.CreateElement(
"autwin");
6096 loNodeAutWin.InnerText =
"false";
6097 loNodeCfgCliSrv.AppendChild(loNodeAutWin);
6099 XmlNode loNodeOdbc = xmlCfgCliSrv.CreateElement(
"odbc");
6100 loNodeOdbc.InnerText =
"SQL Server Native Client 11.0";
6101 loNodeCfgCliSrv.AppendChild(loNodeOdbc);
6103 VFPDataNode.AppendChild(loNodeCfgCliSrv);
6105 xmlCfgCliSrv.Save(lcCfgCliSrvXml);
6107 catch (Exception loEx)
6109 _Error_Message =
"Ha habido un problema al añadir la base de datos de COMUNES del nuevo grupo " + _DbComunesGrNuevo +
" al fichero cfgclisrv.xml en euroserv. Mensaje de error: " + loEx.Message;
6111 Guardar_Mensaje(_Error_Message);
6121 string lcCfgCliSrvDbf = Path.Combine(lcEuroserv,
"cfgclisrv.dbf");
6125 if (File.Exists(lcCfgCliSrvDbf))
6127 DataTable dtDbf =
new DataTable();
6128 OdbcConnection loConn =
new OdbcConnection();
6129 OdbcCommand loCmd = loConn.CreateCommand();
6131 loConn.ConnectionString =
@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + lcEuroserv +
";";
6133 if (!lcEuroserv.Trim().EndsWith(
"\\"))
6134 lcEuroserv = lcEuroserv.Trim() +
"\\";
6138 loCmd.CommandText =
@"SELECT * FROM " + lcEuroserv +
"CFGCLISRV.DBF WHERE !deleted() and comunes = '" + _DbComunesGrNuevo.Trim() +
"' and ip='"+ lcIp.Trim()+
"'";
6139 dtDbf.Load(loCmd.ExecuteReader());
6144 bool llColumnaAutWin = dtDbf.Columns.Contains(
"autwin");
6145 string lcNombreColumnas =
"", lcValoresColumnas =
"";
6146 if (llColumnaAutWin)
6148 lcNombreColumnas =
" , autwin";
6149 lcValoresColumnas =
" , "+DB.SQLFalse();
6152 bool llColumnaOdbc = dtDbf.Columns.Contains(
"odbc");
6155 lcNombreColumnas +=
", odbc";
6156 lcValoresColumnas +=
", "+DB.SQLString(
"SQL Server Native Client 11.0");
6160 if (dtDbf.Rows.Count == 0)
6162 loCmd.CommandText =
"INSERT INTO cfgclisrv (user, password, ip, port, comunes, server "+ lcNombreColumnas +
") "+
6163 "VALUES ('" + lcUser.Trim() +
"','" + lcPassword.Trim() +
"','" + lcIp.Trim() +
"',0,'" + _DbComunesGrNuevo +
"','SQLSERVER'"+lcValoresColumnas+
")";
6164 loCmd.ExecuteNonQuery();
6172 catch (Exception loEx)
6176 Guardar_Mensaje(
"Ha habido un problema al añadir la base de datos de COMUNES del nuevo grupo " + _DbComunesGrNuevo +
" al fichero cfgclisrv.dbf en euroserv. Mensaje de error: " + loEx.Message);
6194 public static bool _BorrarGrupo_QuitarGrupo_CfgCliSrv(
string tcGrupo)
6198 string lcEuroserv = GrupoempTools._Euroserv.Trim();
6200 if (
string.IsNullOrWhiteSpace(lcEuroserv))
6202 _Error_Message =
"No se ha podido borrar la conexión a COMUNES del grupo del fichero cfgclisrv.xml y dbf, no se ha detectado la ruta hacia el servidor (euroserv).";
6204 Guardar_Mensaje(_Error_Message);
6209 string lcCfgCliSrvXml = Path.Combine(lcEuroserv,
"cfgclisrv.xml");
6210 if (!File.Exists(lcCfgCliSrvXml))
6212 _Error_Message =
"No se ha podido borrar la conexión a COMUNES del grupo del fichero " + lcCfgCliSrvXml +
", no existe el fichero en dicha ruta.";
6214 Guardar_Mensaje(_Error_Message);
6224 XmlDocument xmlCfgCliSrv =
new XmlDocument();
6225 xmlCfgCliSrv.Load(lcCfgCliSrvXml);
6229 XmlNode VFPDataNode = xmlCfgCliSrv[
"VFPData"];
6230 bool llConexionFound =
false;
6233 string lcDbComunes =
"COMU" + tcGrupo;
6235 XmlNode loNodoConex = null;
6237 foreach (XmlNode cfgclisrvNode
in VFPDataNode.ChildNodes)
6239 if (cfgclisrvNode.Name.ToLower().Trim() ==
"cfgclisrv")
6241 if (cfgclisrvNode[
"comunes"].InnerText.Trim().ToLower() == lcDbComunes.Trim().ToLower())
6243 loNodoConex = cfgclisrvNode;
6245 llConexionFound =
true;
6252 if (!llConexionFound)
6254 _Error_Message =
"No se ha detectado el registro correspondiente a la base de datos de COMUNES " + lcDbComunes +
" en " + lcCfgCliSrvXml;
6256 Guardar_Mensaje(_Error_Message);
6264 VFPDataNode.RemoveChild(loNodoConex);
6266 xmlCfgCliSrv.Save(lcCfgCliSrvXml);
6268 catch (Exception loEx)
6270 _Error_Message =
"Ha habido un problema al borrar la base de datos de COMUNES del grupo " + tcGrupo +
" del fichero cfgclisrv.xml en euroserv. Mensaje de error: " + loEx.Message;
6272 Guardar_Mensaje(_Error_Message);
6281 DataTable dtDbf =
new DataTable();
6282 OdbcConnection loConn =
new OdbcConnection();
6283 OdbcCommand loCmd = loConn.CreateCommand();
6286 string lcCfgCliSrvDbf = Path.Combine(lcEuroserv,
"cfgclisrv.dbf");
6287 if (!File.Exists(lcCfgCliSrvDbf))
6289 _Error_Message =
"No se ha podido actualizar el fichero " + lcCfgCliSrvDbf +
", no existe el fichero en dicha ruta.";
6291 Guardar_Mensaje(_Error_Message);
6296 loConn.ConnectionString =
@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + lcEuroserv +
";";
6298 if (!lcEuroserv.Trim().EndsWith(
"\\"))
6299 lcEuroserv = lcEuroserv.Trim() +
"\\";
6303 loCmd.CommandText =
@"SELECT * FROM " + lcEuroserv +
"CFGCLISRV.DBF WHERE !deleted() and comunes = '" + lcDbComunes.Trim().ToUpper() +
"' ";
6304 dtDbf.Load(loCmd.ExecuteReader());
6306 if (dtDbf.Rows.Count > 0)
6308 loCmd.CommandText =
"DELETE FROM cfgclisrv WHERE !deleted() and comunes = '" + lcDbComunes.Trim().ToUpper() +
"'";
6309 loCmd.ExecuteNonQuery();
6316 catch (Exception loEx)
6319 Guardar_Mensaje(
"Ha habido un problema al eliminar el registro del grupo " + lcDbComunes +
" del fichero cfgclisrv.dbf en euroserv. Mensaje de error: " + loEx.Message);
6334 private static void CrearGrupo_AsignarPropiedades(Dictionary<string, object> loDicParametros)
6338 if (
string.IsNullOrWhiteSpace(_UserPropBdGrNuevo))
6339 GrupoempTools._UserPropBdGrNuevo =
"Sage50";
6341 string tcEjercicio = Convert.ToString(loDicParametros[
"tcejercicio"]);
6342 bool tlEjerPartido = Convert.ToBoolean(loDicParametros[
"tlejerpartido"]);
6344 DateTime? tdEjerPartiFIni=null, tdEjerPartiFFin=null;
6345 if (loDicParametros[
"tdejerpartifini"] != null)
6346 tdEjerPartiFIni = Convert.ToDateTime(loDicParametros[
"tdejerpartifini"]);
6347 if (loDicParametros[
"tdejerpartiffin"] != null)
6348 tdEjerPartiFFin = Convert.ToDateTime(loDicParametros[
"tdejerpartiffin"]);
6350 bool tlConservarClientes = Convert.ToBoolean(loDicParametros[
"tlconservarclientes"]);
6351 bool tlConservarUsuarios = Convert.ToBoolean(loDicParametros[
"tlconservarusuarios"]);
6352 string tcNombreEmpresa = Convert.ToString(loDicParametros[
"tcnombreempresa"]);
6353 string tcCifEmpresa = Convert.ToString(loDicParametros[
"tccifempresa"]);
6357 GrupoempTools._EjerNuevo = tcEjercicio;
6358 GrupoempTools._CfgEjerPartiGrNuevo = tlEjerPartido;
6362 GrupoempTools._FechaIniEjerNuevo = tdEjerPartiFIni;
6363 GrupoempTools._FechaFinEjerNuevo = tdEjerPartiFFin;
6368 GrupoempTools._FechaIniEjerNuevo = Convert.ToDateTime(
"01/01/" + tcEjercicio);
6369 GrupoempTools._FechaFinEjerNuevo = Convert.ToDateTime(
"31/12/" + tcEjercicio);
6371 GrupoempTools._ConservarClientes = tlConservarClientes;
6372 GrupoempTools._ConservarUsuarios = tlConservarUsuarios;
6373 GrupoempTools._NombreEmpresa = !
string.IsNullOrWhiteSpace(tcNombreEmpresa) ? tcNombreEmpresa :
"NOMBRE EMPRESA";
6374 GrupoempTools._CifEmpresa = tcCifEmpresa;
6377 GrupoempTools._EjerNuevoMarcarPredet =
true;
6380 GrupoempTools._LongitudesEstandar = Convert.ToBoolean(loDicParametros[
"tlLongitudesEstandar"]);
6390 private static bool CrearEjercicio_Comprobar_Parametros(Dictionary<string, object> loDicParametros)
6394 _Error_Message =
"";
6395 if (
string.IsNullOrWhiteSpace(DB.Conexion) ||
string.IsNullOrWhiteSpace(DB.DbComunes))
6397 _Error_Message =
"No se ha detectado conexión al servidor SQL, no se creará el grupo.";
6399 Guardar_Mensaje(_Error_Message);
6405 string tcGrupoOrigen = Convert.ToString(loDicParametros[
"tcgrupoorigen"]);
6406 if (
string.IsNullOrWhiteSpace(tcGrupoOrigen))
6408 _Error_Message =
"Error en los parámetros de entrada. No se ha especificado el parámetro 'Código de grupo origen' (tcGrupoOrigen)";
6410 Guardar_Mensaje(_Error_Message);
6416 if (tcGrupoOrigen.Trim().Length != 4)
6418 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Código de grupo origen' (tcGrupoOrigen) debe tener 4 dígitos.";
6420 Guardar_Mensaje(_Error_Message);
6428 string tcEjerOrigen = Convert.ToString(loDicParametros[
"tcejerorigen"]);
6429 if (
string.IsNullOrWhiteSpace(tcEjerOrigen))
6431 _Error_Message =
"Error en los parámetros de entrada. No se ha especificado el parámetro 'Ejercicio origen' (tcEjerOrigen).";
6433 Guardar_Mensaje(_Error_Message);
6439 if (tcEjerOrigen.Trim().Length != 4)
6441 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Código de ejercicio origen' (tcEjerOrigen) debe tener 4 dígitos.";
6443 Guardar_Mensaje(_Error_Message);
6448 int lnEjerOrigen = Convert.ToInt32(tcEjerOrigen);
6449 if (lnEjerOrigen == 0 || lnEjerOrigen < 1980)
6451 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Código de ejercicio origen' (tcEjerOrigen) no tiene el formato correcto, debe tener 4 dígitos: "+tcEjerOrigen;
6453 Guardar_Mensaje(_Error_Message);
6463 string tcEjerNuevo = Convert.ToString(loDicParametros[
"tcejernuevo"]);
6464 if (
string.IsNullOrWhiteSpace(tcEjerNuevo))
6466 _Error_Message =
"Error en los parámetros de entrada. No se ha especificado el parámetro 'Ejercicio a crear' (tcEjerNuevo).";
6468 Guardar_Mensaje(_Error_Message);
6474 if (tcEjerNuevo.Trim().Length != 4)
6476 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Código de ejercicio a creear' (tcEjerNuevo) debe tener 4 dígitos.";
6478 Guardar_Mensaje(_Error_Message);
6483 int lnEjerNuevo = Convert.ToInt32(tcEjerNuevo);
6484 if (lnEjerNuevo == 0 || lnEjerNuevo < 1980)
6486 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Código de ejercicio a crear' (tcEjerNuevo) no tiene el formato correcto, debe tener 4 dígitos: " + tcEjerNuevo;
6488 Guardar_Mensaje(_Error_Message);
6496 if (!
string.IsNullOrWhiteSpace(tcEjerOrigen) && !
string.IsNullOrWhiteSpace(tcEjerNuevo) && tcEjerNuevo == tcEjerOrigen)
6498 _Error_Message =
"Error en los parámetros de entrada. Ejercicio origen (tcEjerOrigen) y ejercicio a crear (tcEjerNuevo) no pueden ser iguales.";
6500 Guardar_Mensaje(_Error_Message);
6505 DateTime tdFIniEjerNuevo = Convert.ToDateTime(loDicParametros[
"tdfiniejernuevo"]);
6506 DateTime tdFFinEjerNuevo = Convert.ToDateTime(loDicParametros[
"tdffinejernuevo"]);
6508 if (tdFIniEjerNuevo == null || tdFFinEjerNuevo == null)
6510 _Error_Message =
"Error en los parámetros de entrada. No se ha declarado alguna de las fechas del ejercicio.";
6512 Guardar_Mensaje(_Error_Message);
6516 if (tdFIniEjerNuevo.Year < 1980 || tdFFinEjerNuevo.Year < 1980)
6518 _Error_Message =
"Error en los parámetros de entrada. La fecha de inicio de ejercicio o la fecha fin de ejercicio no parecen ser correctas.";
6520 Guardar_Mensaje(_Error_Message);
6524 if (tdFIniEjerNuevo >= tdFFinEjerNuevo)
6526 _Error_Message =
"Error en los parámetros de entrada. La fecha final del nuevo ejercicio no puede ser inferior a la fecha inicial.";
6528 Guardar_Mensaje(_Error_Message);
6540 private static bool CrearGrupo_Comprobar_Parametros(Dictionary<string,object> loDicParametros)
6543 _Error_Message =
"";
6544 if (
string.IsNullOrWhiteSpace(DB.Conexion) ||
string.IsNullOrWhiteSpace(DB.DbComunes))
6546 _Error_Message =
"No se ha detectado conexión al servidor SQL, no se creará el grupo.";
6548 Guardar_Mensaje(_Error_Message);
6553 if (
string.IsNullOrWhiteSpace(GrupoempTools._Euroserv))
6555 _Error_Message =
"No se ha dado valor a la propiedad _Euroserv de la clase GrupoempTools y es necesaria para la creación del grupo, no se creará el grupo.";
6557 Guardar_Mensaje(_Error_Message);
6566 string tcGrupo = Convert.ToString(loDicParametros[
"tcgrupo"]);
6567 if (
string.IsNullOrWhiteSpace(tcGrupo))
6569 _Error_Message =
"Error en los parámetros de entrada. No se ha especificado el parámetro 'Código de grupo a crear'.";
6571 Guardar_Mensaje(_Error_Message);
6578 string tcGrOrigen = Convert.ToString(loDicParametros[
"tcgrorigen"]);
6579 if (!
string.IsNullOrWhiteSpace(tcGrOrigen))
6582 if (tcGrOrigen.Trim().Length != 4)
6584 _Error_Message =
"Error en los parámetros de entrada. El parámetro tcGrOrigen (grupo origen es opcional pero caso de pasarse debe tener 4 dígitos";
6586 Guardar_Mensaje(_Error_Message);
6589 else if (tcGrupo == tcGrOrigen)
6592 _Error_Message =
"Error en los parámetros de entrada. El parámetro tcGrOrigen (grupo origen) es opcional pero caso de pasarse debe ser diferente al código de grupo a crear.";
6594 Guardar_Mensaje(_Error_Message);
6600 string tcEjercicio = Convert.ToString(loDicParametros[
"tcejercicio"]);
6601 if (
string.IsNullOrWhiteSpace(tcEjercicio))
6603 _Error_Message =
"Error en los parámetros de entrada. No se ha especificado el parámetro 'Ejercicio' en el nuevo grupo.";
6605 Guardar_Mensaje(_Error_Message);
6611 if (tcEjercicio.Trim().Length != 4)
6613 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Ejercicio' debe tener 4 dígitos: " + tcEjercicio;
6615 Guardar_Mensaje(_Error_Message);
6620 int lnEjercicio = Convert.ToInt32(tcEjercicio);
6621 if (lnEjercicio == 0 || lnEjercicio < 1980)
6623 _Error_Message =
"Error en los parámetros de entrada. El parámetro 'Ejercicio' no tiene el formato correcto, debe tener 4 dígitos: " + tcEjercicio;
6625 Guardar_Mensaje(_Error_Message);
6633 bool tlEjerPartido = Convert.ToBoolean(loDicParametros[
"tlejerpartido"]);
6636 DateTime? tdEjerPartiFIni = null, tdEjerPartiFFin = null;
6637 if (loDicParametros[
"tdejerpartifini"] != null)
6638 tdEjerPartiFIni = Convert.ToDateTime(loDicParametros[
"tdejerpartifini"]);
6639 if (loDicParametros[
"tdejerpartiffin"] != null)
6640 tdEjerPartiFFin = Convert.ToDateTime(loDicParametros[
"tdejerpartiffin"]);
6642 if (tdEjerPartiFIni == null || tdEjerPartiFFin == null)
6644 _Error_Message =
"Error en los parámetros de entrada. Se ha recibido el parámetro para la configuración de modo de trabajo " +
6645 "con ejercicio partido en el nuevo grupo, pero no se han especificado los parámetros de fecha inicial y final del ejercicio.";
6647 Guardar_Mensaje(_Error_Message);
6660 private static bool CrearEjercicio_BackupBd()
6665 Guardar_Mensaje(
"INICIO PROCESO DE COPIA DE BASE DE DATOS DE EJERCICIO"+Environment.NewLine);
6669 llOk = GrupoempTools.Backup_Bd(GrupoempTools._DbEjerGrOrigen,
"EJERCICIO");
6675 Guardar_Mensaje(Environment.NewLine);
6676 Guardar_Mensaje(
"PROCESO DE COPIA DE BASE DE DATOS DE EJERCICIO FINALIZADO CORRECTAMENTE." + Environment.NewLine);
6687 private static bool CrearEjercicio_RestoreBd()
6692 Guardar_Mensaje(
"INICIO PROCESO DE RESTAURACIÓN DE BASE DE DATOS DE EJERCICIO." + Environment.NewLine);
6695 llOk = GrupoempTools.Restore_Bd(GrupoempTools._DbEjerGrOrigen, GrupoempTools._DbEjerGrNuevo,
"EJERCICIO");
6701 Guardar_Mensaje(Environment.NewLine);
6702 Guardar_Mensaje(
"PROCESO DE RESTAURACIÓN DE BASE DE DATOS FINALIZADO CORRECTAMENTE." + Environment.NewLine);
6713 private static bool CrearEjercicio_AjustarDatosBd()
6717 string lcAnyoAnterior =
"";
6720 llOk = GrupoempTools.AjustarDatos_Bd(_DbEjerGrNuevo,
"GESTION");
6725 DataTable ldtAuxiliar =
new DataTable();
6726 DB.SQLExec(
"select top 1 * from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"EJERCICI") +
" where [any]<" + _EjerNuevo +
" order by [any] desc", ref ldtAuxiliar);
6727 if (ldtAuxiliar.Rows.Count > 1)
6728 lcAnyoAnterior = Convert.ToString(ldtAuxiliar.Rows[0][
"any"]);
6732 lcSql =
"INSERT INTO " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"EJERCICI") +
" ([ANY], RUTA, RUTASER, CONEXION, PERIODOINI, PERIODOFIN, PREDET, ANTERIOR) VALUES (" +
6733 "'" + _EjerNuevo +
"', " +
6734 "'" + _DbEjerGrNuevo +
"', " +
6735 "'" + _DbEjerGrNuevo +
"', " +
6736 "'" + _DbEjerGrNuevo +
"', " +
6737 DB.SQLString(_FechaIniEjerNuevo) +
", " +
6738 DB.SQLString(_FechaFinEjerNuevo) +
", " +
6739 (GrupoempTools._EjerNuevoMarcarPredet ? DB.SQLTrue() : DB.SQLFalse()) +
" , " +
6740 "'" + lcAnyoAnterior +
"')";
6744 if (GrupoempTools._EjerNuevoMarcarPredet)
6746 lcSql =
"UPDATE " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"EJERCICI") +
" SET PREDET=" + DB.SQLFalse() +
6747 "WHERE [ANY] != '" + _EjerNuevo +
"'";
6752 AjustarTablaCuentas_Paso2();
6763 private static bool CrearGrupo_Longitudes()
6766 CopiaDiccionarios(
true);
6769 DB._Cargar_Alias_DB(_DbComunesGrNuevo);
6772 CargarBDs_modulos();
6774 bool llOk = CrearGrupo_Longitudes_Grupo();
6777 CopiaDiccionarios(
false);
6787 private static bool CrearGrupo_Longitudes_Grupo()
6790 string lcClave =
String.Empty;
6793 string lcRelleno =
String.Empty;
6797 Guardar_Mensaje(
"INICIO PROCESO AJUSTE LONGITUDES ESTÁNDAR EN EL NUEVO GRUPO." + Environment.NewLine);
6800 Dictionary<string, int> dicCamposAmplia =
new Dictionary<string, int>();
6803 llOk = DB._ObtenerCamposAmpliados(ref dicCamposAmplia);
6808 if (dicCamposAmplia.Count() == 0)
6811 Guardar_Mensaje(
"NO SE HAN DETECTADO CAMPOS AMPLIADOS." + Environment.NewLine);
6818 CrearGrupo_Longitudes_Antes(dicCamposAmplia);
6821 foreach (KeyValuePair<string, int> campo
in dicCamposAmplia)
6823 lcClave = campo.Key;
6824 lnLong = campo.Value;
6826 if (lcClave.Trim().ToUpper() ==
"CUENTAS")
6830 Guardar_Mensaje(
"CAMBIAR LA LONGITUD CLAVE " + lcClave +
" A " + lnLong +
" DÍGITOS.");
6833 llOk = DB._CambiarLongitudCampo(lcClave, lnLong, lcRelleno, lnPos, 1);
6837 Guardar_Mensaje(
"Error al cambiar longitud de la clave " + lcClave +
": " + DB.Error_Message + Environment.NewLine);
6843 Guardar_Mensaje(
"CAMBIADA CORRECTAMENTE LA LONGITUD CLAVE " + lcClave +
" A " + lnLong +
" DÍGITOS." + Environment.NewLine);
6848 Guardar_Mensaje(
"FIN PROCESO AJUSTE AJUSTE LONGITUDES ESTÁNDAR EN EL NUEVO GRUPO." + Environment.NewLine);
6857 public static void CargarBDs_modulos()
6859 DataTable loBds =
new DataTable();
6860 String lcNombre =
string.Empty;
6861 String lcConex =
string.Empty;
6863 DB.SQLExec(
"SELECT nombre, nombre2, nom_conex, activo, visible, instalado " +
6864 " FROM " + DB.SQLDatabase(
"COMUNES",
"MODULOS") +
6865 " WHERE nombre != 'EWTOOLS' " +
6866 " Order by nombre ", ref loBds);
6868 foreach (DataRow loRow
in loBds.Rows)
6870 lcNombre = loRow[
"nombre"].ToString().ToUpper().Trim();
6871 lcConex = loRow[
"nom_conex"].ToString().ToLower().Trim();
6873 if (!
string.IsNullOrEmpty(lcConex))
6875 lcConex =
"[" + lcConex +
"].dbo.";
6876 DB._oAliasDB.Add(lcNombre, lcConex);
6887 private static void CopiaDiccionarios(Boolean tlCopia)
6891 _oAliasDBCopia =
new Dictionary<string, string>(DB._oAliasDB);
6892 _oAliasDBEjerCopia =
new Dictionary<string, string>(DB._oAliasDBEjer);
6893 _dicCacheSchemaCopia =
new Dictionary<string, DB._TableInformationSchema>(DB._dicCacheSchema);
6897 DB._oAliasDB.Clear();
6898 DB._oAliasDBEjer.Clear();
6899 DB._dicCacheSchema.Clear();
6901 DB._oAliasDB =
new Dictionary<string, string>(_oAliasDBCopia);
6902 DB._oAliasDBEjer =
new Dictionary<string, string>(_oAliasDBEjerCopia);
6903 DB._dicCacheSchema =
new Dictionary<string, DB._TableInformationSchema>(_dicCacheSchemaCopia);
6912 private static void CrearGrupo_Longitudes_Antes(Dictionary<string, int> _dicCamposAmplia)
6914 if (_dicCamposAmplia.ContainsKey(
"CUENTAS"))
6915 DB.SQLExec(
"TRUNCATE TABLE " + DB.SQLDatabaseReal(_DbEjerGrNuevo,
"CUENTAS"));
6922 private static void ObtenerAddonsBase()
6925 if (!DB.SQLExisteCampo(
"COMUNES",
"MODULOS",
"BASE"))
6928 DataTable loBds =
new DataTable();
6930 DB.SQLExec(
"SELECT nombre " +
6931 " FROM " + DB.SQLDatabaseReal(GrupoempTools._DbComunesGrOrigen,
"modulos") +
6932 " WHERE nombre != 'EWTOOLS' and (base = " + DB.SQLTrue() +
" or (visible = " + DB.SQLTrue() +
" and instalado = "+DB.SQLTrue()+
")) " +
6933 " Order by nombre ", ref loBds);
6935 if (loBds == null || loBds.Rows.Count == 0)
6939 _AddonsInstal = loBds.Rows.OfType<DataRow>()
6940 .Select(dr => dr.Field<
string>(
"nombre").Trim()).ToList();
6943 if (_AddonsInstal.Count == 0)
6944 _AddonsInstal =
new List<string>() {
"TPV",
"LOTES",
"AMORTIZA",
"MAYORIST",
"INFORAUT" };
6954 private static bool AddonGrupoOrigen(
string tcAddon)
6957 if (_oAddonsOrigen.ContainsKey(tcAddon))
6958 return _oAddonsOrigen[tcAddon];
6960 switch (tcAddon.ToLower())
6962 case "conceptosfacturables":
6963 DataTable ldtAuxiliar =
new DataTable();
6964 DB.SQLExec(
"select valor from " + DB.SQLDatabaseReal(_DbComunesGrOrigen,
"VARIABLE") +
" " +
6965 "where variable = " + DB.SQLString(
"wl_ConceptosFacturables") +
"", ref ldtAuxiliar);
6967 bool llActivo = ldtAuxiliar != null && ldtAuxiliar.Rows.Count == 1 && Convert.ToString(ldtAuxiliar.Rows[0][
"valor"]).Trim().ToUpper() ==
".T.";
6968 _oAddonsOrigen.Add(tcAddon, llActivo);
6982 private static void ActivarOpcflag(
string tcNombreBaseDatos,
int tnOpcflag,
bool tlValor)
6984 DataTable ldtAuxiliar =
new DataTable();
6985 String lcSql =
string.Empty;
6988 DB.SQLExec(
"select empresa from " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
6989 "where empresa=" + DB.SQLString(_EmpresaGrNuevo) +
" and tipo_opc="+tnOpcflag+
"", ref ldtAuxiliar);
6990 if (ldtAuxiliar.Rows.Count == 0)
6992 DB.SQLExec(
"INSERT INTO " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" (EMPRESA,TIPO_OPC,ESTADO) " +
6993 "VALUES (" + DB.SQLString(_EmpresaGrNuevo) +
", "+ tnOpcflag+
", " + (tlValor ? DB.SQLTrue() : DB.SQLFalse()) +
")");
6998 lcSql =
"UPDATE " + DB.SQLDatabaseReal(tcNombreBaseDatos,
"OPCEMP") +
" " +
6999 "SET ESTADO = " + (tlValor ? DB.SQLTrue() : DB.SQLFalse()) +
" " +
7000 "WHERE EMPRESA = " + DB.SQLString(_EmpresaGrNuevo) +
" AND TIPO_OPC=" + tnOpcflag +
"";
7011 private static string ObtenerTarifaDefecto(
string tcTarifaDef)
7013 DataTable ldTarifas =
new DataTable();
7014 DB.SQLExec(
"select * from " + DB.SQLDatabase(
"GESTION",
"TARIFAS") +
" order by codigo", ref ldTarifas);
7015 if (ldTarifas != null && ldTarifas.Rows.Count > 0)
7017 int lnTarifas = ldTarifas.Select(
"codigo = '" + tcTarifaDef +
"'").Length;
7019 tcTarifaDef = Convert.ToString(ldTarifas.Rows[0][
"codigo"]);
7025 #endregion METODOS PRIVADOS