AsistenteOfflineBizRule.cs
1 #define LOG_TIEMPOS
2 
8 using sage.ew.global;
10 using sage.ew.interficies;
11 using System;
12 using System.Collections.Generic;
13 using System.ComponentModel;
14 using System.Data;
15 using System.Linq;
16 using System.Threading.Tasks;
17 
18 namespace sage.addons.offline.Negocio.Clases
19 {
20  internal class AsistenteOfflineBizRule
21  {
22  #region Members
23  private IAsistenteOfflineDA _asistenteOfflineDA;
24  private IOfflineDA _offlineDA;
25 
26  #endregion
27 
28  #region Propiedades
29 
30  private readonly IOfflineUnitOfWork _offlineUnitOfWork;
31 
32  private static AsistenteOfflineBizRule _instance = null;
33 
37  public static AsistenteOfflineBizRule Instance
38  {
39  get
40  {
41  if (_instance == null)
42  {
43  _instance = new AsistenteOfflineBizRule();
44  }
45  return _instance;
46  }
47  }
48 
52  public BindingList<MultiConfDto> source = new BindingList<MultiConfDto>();
53 
57  private bool _llSerFact = Convert.ToBoolean(sage.ew.global.EW_GLOBAL._GetVariable("wl_serfact"));
58 
59  public int IdConf { get; set; } = 0; //Guardaremos la configuración múltiple activa, por defecto la zero
60 
61  clsOffLine toolsOffline = new clsOffLine();
62  public string CuentaOneDrive { get; set; } = "";
63  public string RutaOneDrive { get; set; } = "";
64 
65  public FtpUserData ftp_user_data;
66 
67  public string Nombre { get; set; } = "Comunicaciones Offline";
68  public bool Procesos { get; set; } = false;
69  public bool Enviar { get; set; } = false;
70  public bool Recibir { get; set; } = false;
71  public bool BackupSel { get; set; } = false;
72  public string Serie_Central { get; set; } = "";
73 
74  public string BackupPath { get; set; } = "";
75  public int BackupNumArchivos { get; set; } = 0;
76 
80  public enum UltimoLog
81  {
85  [DescriptionAttribute("1 Mes")]
86  Mes = 1,
90  [DescriptionAttribute("3 Meses")]
91  Trimestre = 3,
95  [DescriptionAttribute("6 Meses")]
96  Semestre = 6,
100  [DescriptionAttribute("12 Meses")]
101  Anyo = 12
102  }
103 
107  public UltimoLog Ultimo_Log
108  {
109  get
110  {
111  return (UltimoLog)Enum.Parse(typeof(UltimoLog), Convert.ToString(UltimoLogCentral));
112  }
113  set
114  {
115  UltimoLogCentral = Convert.ToInt32(value);
116  }
117  }
118 
122  public int UltimoLogCentral
123  {
124  get
125  {
126  return _nUltimoLog;
127  }
128  set
129  {
130  _nUltimoLog = value;
131  }
132  }
133  private int _nUltimoLog = 6;
134 
138  public bool ArticuloSucursal
139  {
140  get
141  {
142  return _ArticuloSucursal;
143  }
144  set
145  {
146  _ArticuloSucursal = value;
147 
148  }
149  }
150  private bool _ArticuloSucursal = false;
151 
155  public bool EliminarMantesSucursal
156  {
157  get
158  {
159  return _EliminarMantesSucursal;
160  }
161  set
162  {
163  _EliminarMantesSucursal = value;
164 
165  }
166  }
167  private bool _EliminarMantesSucursal = false;
168 
172  public bool EliminarDocsSucursal
173  {
174  get
175  {
176  return _EliminarDocsSucursal;
177  }
178  set
179  {
180  _EliminarDocsSucursal = value;
181 
182  }
183  }
184  private bool _EliminarDocsSucursal = false;
185 
186  int TipoOffline = 1;
187  public bool IsCentral
188  {
189  get { return TipoOffline == 1; }
190  set
191  {
192  if (value)
193  TipoOffline = 1;
194  else
195  TipoOffline = 2;
196  }
197  }
198  public bool IsSucursal
199  {
200  get { return TipoOffline == 2; }
201  set
202  {
203  if (value)
204  TipoOffline = 2;
205  else
206  TipoOffline = 1;
207  }
208  }
209 
213  public int Conexion
214  {
215  get
216  {
217  return _Conexion;
218  }
219  set
220  {
221  _Conexion = value;
222  }
223  }
224  private int _Conexion = 0;
225 
226 
230  public string Servidor
231  {
232  get
233  {
234  return _Servidor;
235  }
236  set
237  {
238  _Servidor = value;
239  }
240  }
241  private string _Servidor = "";
242 
246  public string Usuario
247  {
248  get
249  {
250  return _Usuario;
251  }
252  set
253  {
254  _Usuario = value;
255  }
256  }
257  private string _Usuario = "";
258 
262  public string Password
263  {
264  get
265  {
266  return _Password;
267  }
268  set
269  {
270  _Password = value;
271  }
272  }
273  private string _Password = "";
274 
278  public Int32 Puerto
279  {
280  get
281  {
282  return _Puerto;
283  }
284  set
285  {
286  _Puerto = value;
287  }
288  }
289  private Int32 _Puerto = 0;
290 
294  public string Proxy
295  {
296  get
297  {
298  return _Proxy;
299  }
300  set
301  {
302  _Proxy = value;
303  }
304  }
305  private string _Proxy = "";
306 
307  public bool Use_SSL_TLS
308  {
309  get
310  {
311  return _Use_SSL_TLS;
312  }
313  set
314  {
315  _Use_SSL_TLS = value;
316  }
317  }
318  private bool _Use_SSL_TLS = false;
319 
320  public bool Validate_Server_Cert
321  {
322  get
323  {
324  return _Validate_Server_Cert;
325  }
326  set
327  {
328  _Validate_Server_Cert = value;
329  }
330  }
331  private bool _Validate_Server_Cert = false;
332 
333  public bool FTP_Activo
334  {
335  get
336  {
337  return _FTP_Activo;
338  }
339  set
340  {
341  _FTP_Activo = value;
342  }
343  }
344  private bool _FTP_Activo = true;
345 
346  public string CarpetaSrv
347  {
348  get
349  {
350  return _CarpetaSrv;
351  }
352  set
353  {
354  _CarpetaSrv = value;
355  }
356  }
357  private string _CarpetaSrv = "";
358 
359  public string ConfiguracionFtp
360  {
361  get
362  {
363  return _ConfiguracionFtp;
364  }
365  set
366  {
367  _ConfiguracionFtp = value;
368  }
369  }
370  private string _ConfiguracionFtp = "";
371 
372 
373  private string _CodigoSucursal = "";
374  public string CodigoSucursal
375  {
376  get
377  {
378  return _CodigoSucursal;
379  }
380  set
381  {
382  _CodigoSucursal = value;
383 
384  if (!string.IsNullOrEmpty(value))
385  {
386  Serie_Sucursal = GetSerieDefectoCurrentSucursal();
387  Almacen_Sucursal = GetAlmacenDefectoCurrentSucursal();
388  }
389  }
390  }
391 
392  public string Serie_Sucursal { get; set; } = "";
393  public string Almacen_Sucursal { get; set; } = "";
394  public bool FiltroPorAlmacen { get; set; } = false;
395 
396  private int TipoComunicacion = 2; // 1 -> comunicación via SKYDRIVE/OneDrive, 2 -> comunicación via FTP, per defecto FTP
397  public bool IsFTP
398  {
399  get { return TipoComunicacion == 2; }
400  set
401  {
402  if (value)
403  TipoComunicacion = 2;
404  else
405  TipoComunicacion = 1;
406  }
407  }
408  public bool IsOneDrive
409  {
410  get { return TipoComunicacion == 1; }
411  set
412  {
413  if (value)
414  TipoComunicacion = 1;
415  else
416  TipoComunicacion = 2;
417  }
418  }
419 
420  public string Hora_Envio { get; set; } = "";
421  public string Hora_Recepcion { get; set; } = "";
422  public string Hora_CargaIni { get; set; } = "";
423  public bool EnviarImagenes { get; set; } = false;
424  public bool TerminalSeguridad { get; set; } = false;
425 
426  DataRow sucursal;
427 
428  public int Delete_Cen_Mant { get; set; } = 1;
429  public int Delete_Cen_Doc { get; set; } = 1;
430 
431  public BindingList<Sucursales> _Sucursales = new BindingList<Sucursales>();
432 
433 
434 
435  public bool NoRecalculoStockTrasRecibir { get; set; } = false;
436 
437  internal ConfigComunicaBizRule _negocioConfigComunica = new ConfigComunicaBizRule();
438 
439  #endregion
440 
441  #region Constructors
442  public AsistenteOfflineBizRule(IAsistenteOfflineDA asistenteOfflineDA)
443  {
444  _asistenteOfflineDA = asistenteOfflineDA;
445  _offlineUnitOfWork = DependencyInjector.Instance.Retrieve<IOfflineUnitOfWork>();
447  }
448 
452  public AsistenteOfflineBizRule()
453  {
454 
455  }
456 
457  #endregion Constructors
458 
459  #region Metodos publicos
460 
461 
462  public bool ComprobacionesPrevias(Action<string> callback)
463  {
464  if (!_llSerFact)
465  {
466  callback?.Invoke("Para trabajar con el Add-on Comunicaciones Offline se debe activar la opción de empresa ‘Trabajar con series de facturas’ ya que es necesario que la central y las sucursales trabajen con su propia serie de documentos.");
467 
468  return false;
469  }
470 
472 
473  string ejercicioPredeterminado = _diccionariosLoaderDA.GetAnyEjercicioPredeterminado();
474  string ejercicioSeleccionado = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
475 
476  if ( ejercicioPredeterminado.TrimEnd() != ejercicioSeleccionado.TrimEnd())
477  {
478  callback?.Invoke("No se puede ejecutar el Asistente de configuración porque no está situado en el ejercicio predeterminado. Cambie de ejercicio para poder ejecutar el asistente.");
479 
480  return false;
481  }
482 
483  DataTable tablaDatos = _asistenteOfflineDA.GetVariables(IdConf.ToString());
484 
485  DataRow[] loTipoOffline = tablaDatos.Select("variable = 'TIPOOFFLINE'");
486  if (loTipoOffline != null && loTipoOffline.Count() > 0)
487  {
488  switch (Convert.ToString(loTipoOffline[0]["valor"]).Trim())
489  {
490  case "CENTRAL":
491  callback?.Invoke("El grupo de empresa ya está configurado como Central, si desea modificar alguna configuración deberá hacerlo desde mantenimiento de grupos de empresa, mantenimiento de sucursales o mantenimiento de configuración de comunicaciones según el dato que quiera modificar.");
492 
493  return false;
494 
495  case "SUCURSAL":
496  callback?.Invoke("El grupo de empresa ya está configurado como Sucursal, si desea modificar alguna configuración deberá hacerlo desde mantenimiento de grupos de empresa o mantenimiento de configuración de comunicaciones. Según el dato que quiera modificar será necesario realizar el cambio en la Central.");
497 
498  return false;
499 
500  }
501  }
502 
503  return true;
504  }
505 
506  public void Cargar_Variables(Action<string> callback)
507  {
508  DataTable tablaDatos = _asistenteOfflineDA.GetVariables(IdConf.ToString());
509 
510  foreach (DataRow variable in tablaDatos.Rows)
511  {
512  switch(variable["VARIABLE"].ToString().Trim().ToUpper())
513  {
514  case "TIPOCOMUNICACION":
515  //if (variable["VALOR"].ToString().Trim().ToUpper() == "SKYDRIVE" || variable["VALOR"].ToString().Trim().ToUpper() == "ONEDRIVE") //Aceptamos nomenclatura nueva
516  // TipoComunicacion = 1;
517  //else
518  // TipoComunicacion = 2;
519  //break;
520  case "TIPOOFFLINE":
521 
522 
523  if (variable["VALOR"].ToString().Trim().ToUpper() == "CENTRAL")
524  TipoOffline = 1;
525  else
526  TipoOffline= 2;
527  break;
528 
529 
530  // La variable SKYDRIVE_USER la ignoramos porque usaremos la configuración de OneDrive configurada en Grupos de Empresa
531  //case "SKYDRIVE_USER":
532  // break;
533  case "CODIGOSUCURSAL":
534  CodigoSucursal = variable["VALOR"].ToString().Trim();
535  break;
536  case "FTP_USER":
537  {
538  string cadenaEncriptada = variable["VALOR"].ToString().Trim();
539 
540  string cadenaDesencriptada = toolsOffline.Cadena_Desencriptar(cadenaEncriptada);
541 
542  var trozos = cadenaDesencriptada.Split('~');
543 
544  if (trozos.Length == 7)
545  {
546  ftp_user_data = new FtpUserData();
547  ftp_user_data.server = trozos[0].Trim();
548  ftp_user_data.user = trozos[1].Trim();
549  ftp_user_data.password = trozos[2].Trim();
550  ftp_user_data.port = Convert.ToDecimal(trozos[3]);
551  ftp_user_data.proxy = trozos[4].Trim();
552  ftp_user_data.rutaserv = trozos[5].Trim();
553  ftp_user_data.ftp_activo = trozos[6].Trim().ToUpper() == "SI";
554  }
555  else if (trozos.Length == 9)
556  {
557  ftp_user_data = new FtpUserData();
558  ftp_user_data.server = trozos[0].Trim();
559  ftp_user_data.user = trozos[1].Trim();
560  ftp_user_data.password = trozos[2].Trim();
561  ftp_user_data.port = Convert.ToDecimal(trozos[3]);
562  ftp_user_data.proxy = trozos[4].Trim();
563  ftp_user_data.rutaserv = trozos[5].Trim();
564  ftp_user_data.ftp_activo = trozos[6].Trim().ToUpper() == "SI";
565  ftp_user_data.use_ssl_tls = trozos[7].Trim().ToUpper() == "SI";
566  ftp_user_data.validate_server_cert = trozos[8].Trim().ToUpper() == "SI";
567  }
568  else
569  {
570 #if DEBUG
571  callback?.Invoke("Configuración incorrecta. Los datos de la cuenta FTP no estan correctamente declarados en Cargar Variables. Configuraciones leídas: " + trozos.Length.ToString());
572 #else
573  callback?.Invoke("Configuración incorrecta. Los datos de la cuenta FTP no estan correctamente declarados.");
574 #endif
575  }
576  break;
577  }
578  case "BACKUP_RECEP":
579  {
580  var trozos = variable["VALOR"].ToString().Split('|');
581 
582  if (trozos.Length == 3)
583  {
584  BackupSel = trozos[0].Trim().ToUpper() == ".T.";
585  BackupPath = trozos[1].Trim();
586  BackupNumArchivos = Convert.ToInt32(trozos[2]);
587  }
588  else
589  {
590  callback?.Invoke("Configuración incorrecta. Los datos del Backup no estan correctamente declarados.");
591  }
592  break;
593  }
594  case "ENVIARIMAGENES":
595  EnviarImagenes = variable["VALOR"].ToString().Trim() == ".T.";
596  break;
597  case "FILTROPORALMACEN":
598  FiltroPorAlmacen = variable["VALOR"].ToString().Trim() == ".T.";
599  break;
600  case "TERMINALSEGURIDAD":
601  TerminalSeguridad = variable["VALOR"].ToString().Trim() == ".T.";
602  break;
603  case "HORA_ENVIO":
604  Hora_Envio = variable["VALOR"].ToString().Trim();
605  break;
606  case "HORA_RECEPCION":
607  Hora_Recepcion = variable["VALOR"].ToString().Trim();
608  break;
609  case "HORA_CARGAINI":
610  Hora_CargaIni = variable["VALOR"].ToString().Trim();
611  break;
612  case "DELETE_CEN_MANT":
613  Delete_Cen_Mant = variable["VALOR"].ToString().Trim() == ".T." ? 1 : 2;
614  break;
615  case "DELETE_CEN_DOC":
616  Delete_Cen_Doc = variable["VALOR"].ToString().Trim() == ".T." ? 1 : 2;
617  break;
618  case "SERIECENTRAL":
619  Serie_Central = variable["VALOR"].ToString().Trim();
620  break;
621  case "NORECALCULOSTOCKIMP":
622  NoRecalculoStockTrasRecibir= variable["VALOR"].ToString().Trim() == ".T.";
623  break;
624  case "ULTIMOLOG":
625  UltimoLogCentral = (variable["VALOR"].ToString().Trim() == "" ? 6 : Convert.ToInt32(variable["VALOR"].ToString().Trim()));
626  break;
627  }
628  }
629 
630  if (TipoOffline == 1)
631  {
632  sucursal = null;
633 
634  tablaDatos = _asistenteOfflineDA.GetSucursales();
635  _Sucursales.Clear();
636  foreach (DataRow ldrFila in tablaDatos.Rows)
637  {
638  Sucursales suc = new Sucursales(ldrFila);
639  _Sucursales.Add(suc);
640  }
641  }
642  else
643  {
644  sucursal = _asistenteOfflineDA.GetSucursal(CodigoSucursal);
645  }
646  }
647 
648  public bool Save_Variables(Action<string> callback)
649  {
650  //Vamos actualizando las variables:
651  ActualizarVariable(EnumVariables.TIPOCOMUNICACION, (TipoComunicacion == 1 ? "SKYDRIVE" : "FTP"), IdConf);
652  ActualizarVariable(EnumVariables.TIPOOFFLINE, (TipoOffline == 1 ? "CENTRAL" : "SUCURSAL"), IdConf);
653  ActualizarVariable(EnumVariables.CODIGOSUCURSAL, CodigoSucursal, IdConf);
654 
655  string ftpUserDataString = ftp_user_data.server.Trim() + '~';
656  ftpUserDataString += ftp_user_data.user.Trim() + '~';
657  ftpUserDataString += ftp_user_data.password.Trim() + '~';
658  ftpUserDataString += ftp_user_data.port.ToString().Trim() + '~';
659  ftpUserDataString += ftp_user_data.proxy.Trim() + '~';
660  ftpUserDataString += ftp_user_data.rutaserv.Trim() + '~';
661  ftpUserDataString += (ftp_user_data.ftp_activo ? "SI" : "NO") + '~';
662  ftpUserDataString += (ftp_user_data.use_ssl_tls ? "SI" : "NO") + '~';
663  ftpUserDataString += (ftp_user_data.validate_server_cert ? "SI" : "NO");
664  string cadenaEncriptada = toolsOffline.Cadena_Encriptar(ftpUserDataString);
665  ActualizarVariable(EnumVariables.FTP_USER, cadenaEncriptada, IdConf);
666 
667  string BackupString = BackupSel ? ".T." : ".F." + '|';
668  BackupString += BackupPath.Trim() + '|';
669  BackupString += BackupNumArchivos.ToString();
670  ActualizarVariable(EnumVariables.BACKUP_RECEP, BackupString, IdConf);
671 
672  ActualizarVariable(EnumVariables.ENVIARIMAGENES, (EnviarImagenes ? ".T." : ".F."), IdConf);
673  ActualizarVariable(EnumVariables.FILTROPORALMACEN, (FiltroPorAlmacen ? ".T." : ".F."), IdConf);
674  ActualizarVariable(EnumVariables.TERMINALSEGURIDAD, (TerminalSeguridad ? ".T." : ".F."), IdConf);
675 
676  ActualizarVariable(EnumVariables.HORA_ENVIO, Hora_Envio, IdConf);
677  ActualizarVariable(EnumVariables.HORA_RECEPCION, Hora_Recepcion, IdConf);
678  ActualizarVariable(EnumVariables.HORA_CARGAINI, Hora_CargaIni, IdConf);
679 
680  ActualizarVariable(EnumVariables.DELETE_CEN_MANT, (Delete_Cen_Mant == 1 ? ".T." : ".F."), IdConf);
681 
682  ActualizarVariable(EnumVariables.DELETE_CEN_DOC, (Delete_Cen_Doc == 1 ? ".T." : ".F."), IdConf);
683 
684  ActualizarVariable(EnumVariables.SERIECENTRAL, Serie_Central, IdConf);
685 
686  ActualizarVariable(EnumVariables.NORECALCULOSTOCKIMP, (NoRecalculoStockTrasRecibir? ".T." : ".F."), IdConf);
687 
688  ActualizarVariable(EnumVariables.ULTIMOLOG, UltimoLogCentral.ToString(), IdConf);
689 
690  return true;
691  }
692 
693  private bool ActualizarVariable(EnumVariables eVariable, object valor, int IdConf)
694  {
695  return _asistenteOfflineDA.ActualizarVariable(eVariable, valor, IdConf);
696  }
697 
698  public bool Save_Sucursales(Action<string> callback)
699  {
700  foreach (var suc in _Sucursales)
701  {
702  suc._Save(IdConf);
703  }
704 
705  return true;
706  }
707 
708  public void Save_Modo_Operacion()
709  {
711  {
712  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.TIPOOFFLINE, (IsCentral ? "CENTRAL" : "SUCURSAL"), "C");
713  _offlineUnitOfWork.SaveChanges();
714  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.COMUNICAOFFLINE, "NET", "C");
715  _offlineUnitOfWork.SaveChanges();
716  }
717  }
718 
719  public void Save_Config_Grupo()
720  {
721  if (IsCentral)
722  {
723  offlineEmpExcluBizRule.Instance._Save();
724 
726  {
727  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.SERIECENTRAL, Serie_Central, "C");
728  _offlineUnitOfWork.SaveChanges();
729  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.ENVIOARTICULOS, (ArticuloSucursal ? ".T." : ".F."), "C");
730  _offlineUnitOfWork.SaveChanges();
731  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.DELETE_CEN_MANT, (EliminarMantesSucursal ? ".T." : ".F."), "C");
732  _offlineUnitOfWork.SaveChanges();
733  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.DELETE_CEN_DOC, (EliminarDocsSucursal ? ".T." : ".F."), "C");
734  _offlineUnitOfWork.SaveChanges();
735 
736  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.ULTIMOLOG, UltimoLogCentral.ToString(), "C");
737  _offlineUnitOfWork.SaveChanges();
738  }
739  }
740  else
741  {
743  {
744  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.CODIGOSUCURSAL, CodigoSucursal, "C");
745  _offlineUnitOfWork.SaveChanges();
746  string NombreSucursal = Nombre_SucursalAsignada(CodigoSucursal);
747  _offlineUnitOfWork.VariablesRepository.InsertOrUpdateVariable(EnumVariables.NOMBRESUCURSAL, NombreSucursal, "C");
748  _offlineUnitOfWork.SaveChanges();
749  }
750  }
751 
752  _negocioConfigComunica._Save(); //Task 202630
753  }
754 
755  public void CalcularRiesgoClienteOffline()
756  {
757  //Hacer la llamada asíncrona
758  Task loRunDatos = new Task(() =>
759  {
760  // Calcular límite de crédito
761  _offlineDA.CalcularRiesgoClienteOffline();
762  });
763  loRunDatos.Start();
764  }
765 
770  public void CrearEjercicio()
771  {
772  _asistenteOfflineDA.CrearEjercicio(IsCentral);
773  }
774 
775  public void Save_Config_Comunica()
776  {
777  List<DataTable> lstDatatable = ConvertirFicheroXML();
778  Save_TablasConfComunica(lstDatatable, CodigoSucursal);
779  }
780 
781  public DataTable Get_Sucursales(Action<string> callback)
782  {
783  return OfflineDownloader.Download_Control_Files_And_Get_Sucursales(IdConf, "");
784  }
785 
786  public bool Upload_Control_Files(Action<string> callback)
787  {
788  return OfflineUploader.Upload_Control_Files(0, IsCentral, IdConf);
789  }
790 
791  public bool Upload_Offline_Files(clsOfflineUtils.ReportProgress progressReporter, Action<string> callback, string tcSucursal, bool tlAnterior)
792  {
793  return OfflineUploader.Upload_Offline_Files(progressReporter, DateTime.MinValue, DateTime.MinValue, DateTime.MaxValue, tcSucursal, EnviarImagenes, tlAnterior, IsCentral, IdConf);
794  }
795 
796 #endregion
797 
798 #region Metodos privados
799  private string GetSerieDefectoCurrentSucursal()
800  {
801  //DataTable dtSeries = new DataTable();
802 
803  //string tcSql = string.Format("SELECT * FROM {0} ", DB.SQLDatabase("OFFLINE", "SUCURLET"));
804  //DB.SQLExec(tcSql, ref dtSeries);
805 
806  //var res = dtSeries.AsEnumerable().Where(S => S["SUCURSAL"].ToString() == this.CodigoSucursal).FirstOrDefault();
807 
808  //if (res != null)
809  // return res["LETRA"].ToString();
810 
811  //return "";
812  return _asistenteOfflineDA.GetSerieDefectoCurrentSucursal(CodigoSucursal);
813  }
814 
815  private string GetAlmacenDefectoCurrentSucursal()
816  {
817  //DataTable dtAlm = new DataTable();
818 
819  //string tcSql = string.Format("SELECT * FROM {0} ", DB.SQLDatabase("OFFLINE", "SUCURALM"));
820  //DB.SQLExec(tcSql, ref dtAlm);
821 
822  //var res = dtAlm.AsEnumerable().Where(S => S["SUCURSAL"].ToString() == this.CodigoSucursal).FirstOrDefault();
823 
824  //if (res != null)
825  // return res["ALMACEN"].ToString();
826 
827  //return "";
828  return _asistenteOfflineDA.GetAlmacenDefectoCurrentSucursal(CodigoSucursal);
829  }
830 
831 
832  public bool ComprobarConfiguracionPrincipal()
833  {
834  return _asistenteOfflineDA.ComprobarConfiguracionPrincipal();
835  }
836 
837 
842  public void GetCadenaEncriptada(string cadenaEncriptada)
843  {
844  clsOffLine toolsOffline = new clsOffLine();
845 
846  var trozos = toolsOffline.Cadena_Desencriptar(cadenaEncriptada).Split('~');
847 
848  if (trozos.Length == 7)
849  {
850  Servidor = trozos[0].Trim();
851  Usuario = trozos[1].Trim();
852  Password = trozos[2].Trim();
853  Puerto = Convert.ToInt32(trozos[3]);
854  Proxy = trozos[4].Trim();
855  CarpetaSrv = trozos[5].Trim();
856  }
857  else if (trozos.Length == 9)
858  {
859  Servidor = trozos[0].Trim();
860  Usuario = trozos[1].Trim();
861  Password = trozos[2].Trim();
862  Puerto = Convert.ToInt32(trozos[3]);
863  Proxy = trozos[4].Trim();
864  CarpetaSrv = trozos[5].Trim();
865  FTP_Activo = trozos[6].Trim() == "SI";
866  Use_SSL_TLS = trozos[7].Trim() == "SI";
867  Validate_Server_Cert = trozos[8].Trim() == "SI";
868  }
869  else
870  {
871  Servidor = "";
872  Usuario = "";
873  Password = "";
874  Puerto = 0;
875  Proxy = "";
876  CarpetaSrv = "";
877  FTP_Activo = true;
878  Use_SSL_TLS = false;
879  Validate_Server_Cert = false;
880  }
881  }
882 
883  public void AddConexion_MultConf()
884  {
885  if (TipoComunicacion.Equals(1))
886  {
887  //Al asociar la cuenta ya graba en la tabla MULTCONF, IDConf 0
888  EditComunicaciones_MultConf("00", 0);
889  }
890  else
891  {
892  string ftpUserDataString = Servidor.Trim() + '~';
893  ftpUserDataString += Usuario.Trim() + '~';
894  ftpUserDataString += Password.Trim() + '~';
895  ftpUserDataString += Puerto.ToString().Trim() + '~';
896  ftpUserDataString += Proxy.Trim() + '~';
897  ftpUserDataString += CarpetaSrv.Trim() + '~';
898  ftpUserDataString += (FTP_Activo ? "SI" : "NO") + '~';
899  ftpUserDataString += (Use_SSL_TLS ? "SI" : "NO") + '~';
900  ftpUserDataString += (Validate_Server_Cert ? "SI" : "NO");
901  string cadenaEncriptada = toolsOffline.Cadena_Encriptar(ftpUserDataString);
902 
903  int conexion = Conexion;
904 
905  AddComunicaciones_MultConf("00", 0, conexion, cadenaEncriptada);
906  }
907  }
908 
913  public bool Download_UnZip_File(clsOfflineUtils.ReportProgress progressReporter, bool tlAnterior, Action<string> callback)
914  {
915  // return OfflineDownloader.Download_UnZip_File(progressReporter);
916  return OfflineDownloader.Download_UnZip_File(progressReporter, callback);
917  }
918 
923  public List<DataTable> ConvertirFicheroXML()
924  {
925  return OfflineUpAndDown.ConvertirFicheroXML();
926  }
927 
932  public bool _Delete(Int32 index = -1)
933  {
934  bool ret = true;
935  string codConfig = string.Empty;
936 
937  if (index >= 0)
938  {
939  codConfig = source[index].CODIGO;
940  if (codConfig == "00")
941  {
942  ret = false;
943  }
944  else
945  {
946  source.RemoveAt(index);
947  }
948  }
949 
950  return ret;
951  }
952 
953  public void AddComunicaciones_MultConf(string newcodigo, int newidconf, int conexion, string cadenaEncriptada)
954  {
955  _asistenteOfflineDA.AddComunicaciones_MultConf(newcodigo, newidconf, conexion, cadenaEncriptada);
956  }
957 
958  public void EditComunicaciones_MultConf(string newcodigo, int newidconf)
959  {
960  _asistenteOfflineDA.EditComunicaciones_MultConf(newcodigo, newidconf);
961  }
962 
963  public void AddOneDrive_MultConf(int idconf, Dictionary<string, object> tablaMultconf)
964  {
965  _asistenteOfflineDA.AddOneDrive_MultConf(idconf, tablaMultconf);
966  }
967 
968  public void AddComunicaciones_SucurConf(string sucursal, int newidconf)
969  {
970  _asistenteOfflineDA.AddComunicaciones_SucurConf(sucursal, newidconf);
971  }
972 
973  public string Nombre_SerieDocumento(string lcSerie)
974  {
975  return _asistenteOfflineDA.Nombre_SerieDocumento(lcSerie);
976  }
977 
978  public string Nombre_SucursalAsignada(string lcSucursal)
979  {
980  return _asistenteOfflineDA.Nombre_SucursalAsignada(lcSucursal);
981  }
982 
983  public List<string> ObtenerRegistrosExistentes(string lcBBDD, string lcTabla, string lcCampo)
984  {
985  return _asistenteOfflineDA.ObtenerRegistrosExistentes(lcBBDD, lcTabla, lcCampo);
986  }
987 
988  public void Cancel_MultConf()
989  {
990  _asistenteOfflineDA.Cancel_MultConf();
991  }
992 
993  public void VaciarTablas(List<string> lstTablas)
994  {
995  _asistenteOfflineDA.VaciarTablas(lstTablas);
996  }
997 
998  public void DeleteRegistroConfComunica(string lcCodigo)
999  {
1000  _asistenteOfflineDA.DeleteRegistroConfComunica(lcCodigo);
1001  }
1002 
1003  public void Save_TablasSucursales(List<DataTable> lstDatatable)
1004  {
1005  _asistenteOfflineDA.Save_TablasSucursales(lstDatatable);
1006  }
1007 
1008  public void Save_TablasConfComunica(List<DataTable> lstDatatable, string codigoSucursal)
1009  {
1010  _asistenteOfflineDA.Save_TablasConfComunica(lstDatatable, CodigoSucursal);
1011  }
1012 
1016  public void CancelarAsistente(List<string> configuracionesPreexistentes, List<string> sucursalesPreexistentes)
1017  {
1019  {
1020 
1021  // Borramos las variables creadas para poder configurar comunicaciones
1022  uow.VariablesRepository.Delete(t => t.IDCONF == 0);
1023  uow.SaveChanges();
1024 
1025  uow.VariablesRepository.InsertOrUpdateVariable(EnumVariables.COMUNICAOFFLINE, "NET", "C");
1026  uow.SaveChanges();
1027 
1028  // Borramos comunicaciones si hemos creado en el proceso de configuración
1029  List<string> lstConfig = ObtenerRegistrosExistentes("OFFLINE", "MULTCONF", "idconf");
1030 
1031  Cancel_MultConf();
1032 
1033  var configuraciones = _offlineUnitOfWork.MultconfRepository.Get();
1034 
1035  foreach (string conf in lstConfig)
1036  {
1037  if (!configuracionesPreexistentes.Exists(x => x == conf))
1038  {
1039  var registro = configuraciones.Where(s => s.IDCONF == Convert.ToInt32(conf)).ToList();
1040 
1041  DeleteRegistroConfComunica(registro[0].CODIGO);
1042 
1043  // No lo hacemos a través de negocio porque tarda mucho
1044  //ConfComOffline loMult = new ConfComOffline(registro[0].CODIGO);
1045  //loMult._IdConf = Convert.ToInt32(conf);
1046  //loMult._Load();
1047  //loMult._AsistConfig = true;
1048  //loMult._Delete();
1049  }
1050  }
1051 
1052  // si estamos configurando la sucursal debemos de eliminar registros de tabla TABRELNET y SUCURCONF
1053  if (IsSucursal)
1054  {
1055  List<string> lstTablas = new List<string>() {"TABRELNET", "SUCURCONF" };
1056  VaciarTablas(lstTablas);
1057  }
1058 
1059  // Borramos sucursales si hemos creado en el proceso de configuración
1060  List<string> lstSucursales = ObtenerRegistrosExistentes("OFFLINE", "SUCURSALES", "codigo");
1061 
1062  foreach (string suc in lstSucursales)
1063  {
1064  if (!sucursalesPreexistentes.Exists(x => x == suc))
1065  {
1066  Sucursales loSuc = new Sucursales(suc);
1067  loSuc._Delete(); //Incluye tablas relacionadas SUCURALM, SUCURLET, SUCURCONF
1068  }
1069  }
1070 
1071  //SUCURART
1072  uow.SucurartRepository.Delete(x => true);
1073  uow.SaveChanges();
1074 
1075  //USERCONF
1076  uow.UserconfRepository.Delete(x => true);
1077  uow.SaveChanges();
1078 
1079  //EMPEXCLU
1080  uow.EmpexcluRepository.Delete(x => true);
1081  uow.SaveChanges();
1082  }
1083  }
1084 
1085  public List<string> EmpresasExcluidas()
1086  {
1087  List<string> excluidas = new List<string>();
1088 
1090  {
1091  var registros = uow.EmpexcluRepository.Get(x => true);
1092  if (registros.Any())
1093  {
1094  foreach (var item in registros)
1095  {
1096  excluidas.Add(item.EMPRESA);
1097  }
1098  }
1099  }
1100 
1101  return excluidas;
1102  }
1103 
1104  public Dictionary<string, object> GetMultconf(string lcCodigo)
1105  {
1106  return _asistenteOfflineDA.GetMulticonf(lcCodigo);
1107  }
1108 
1109 #endregion
1110  }
1111 }
string GetAnyEjercicioPredeterminado()
Obtiene el año del ejercicio prederterminado
object Retrieve(Type T)
Resuelve objeto de tipo T
IEmpexcluRepository EmpexcluRepository
empexclu repositorio
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
ISucurartRepository SucurartRepository
Repositorio Sucurart
IRepository< userconf > UserconfRepository
Repositorio de userconf
Clase EW_GLOBAL para gestionar las variables públicas de Eurowin, variables de empresa, variables de anchuras de campo, variables de mascaras, etc.
Definition: EW_GLOBAL.cs:46
void Delete(params object[] pk)
Elimina por pk
IMultconfRepository MultconfRepository
Repositorio de Multconf
void CalcularRiesgoClienteOffline()
Calcular riesgo de clientes
Interfaz de acceso a datos para la carga de los diccionarios
Interfaz de acceso a datos para Offline
Definition: IOfflineDA.cs:8
void InsertOrUpdateVariable(EnumVariables EVariable, string valor, string tipo, int idconf=0)
Inserta o actualiza variable
Procesos : tabla listados filtrando el tipo a 3
IVariablesRepository VariablesRepository
Repositorio de variables
Clase Inyector de dependencias para resolver las dependencias
IEnumerable< TEntity > Get(Expression< Func< TEntity, bool >> filter=null, Func< IQueryable< TEntity >, IOrderedQueryable< TEntity >> orderBy=null, string includeProperties="")
Obtine un IEnumerable de tipo entidad