12 using System.Collections.Generic;
13 using System.ComponentModel;
16 using System.Threading.Tasks;
20 internal class AsistenteOfflineBizRule
32 private static AsistenteOfflineBizRule _instance = null;
37 public static AsistenteOfflineBizRule Instance
41 if (_instance == null)
43 _instance =
new AsistenteOfflineBizRule();
52 public BindingList<MultiConfDto> source =
new BindingList<MultiConfDto>();
59 public int IdConf {
get;
set; } = 0;
61 clsOffLine toolsOffline =
new clsOffLine();
62 public string CuentaOneDrive {
get;
set; } =
"";
63 public string RutaOneDrive {
get;
set; } =
"";
65 public FtpUserData ftp_user_data;
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; } =
"";
74 public string BackupPath {
get;
set; } =
"";
75 public int BackupNumArchivos {
get;
set; } = 0;
85 [DescriptionAttribute(
"1 Mes")]
90 [DescriptionAttribute(
"3 Meses")]
95 [DescriptionAttribute(
"6 Meses")]
100 [DescriptionAttribute(
"12 Meses")]
107 public UltimoLog Ultimo_Log
111 return (UltimoLog)Enum.Parse(typeof(UltimoLog), Convert.ToString(UltimoLogCentral));
115 UltimoLogCentral = Convert.ToInt32(value);
122 public int UltimoLogCentral
133 private int _nUltimoLog = 6;
138 public bool ArticuloSucursal
142 return _ArticuloSucursal;
146 _ArticuloSucursal = value;
150 private bool _ArticuloSucursal =
false;
155 public bool EliminarMantesSucursal
159 return _EliminarMantesSucursal;
163 _EliminarMantesSucursal = value;
167 private bool _EliminarMantesSucursal =
false;
172 public bool EliminarDocsSucursal
176 return _EliminarDocsSucursal;
180 _EliminarDocsSucursal = value;
184 private bool _EliminarDocsSucursal =
false;
187 public bool IsCentral
189 get {
return TipoOffline == 1; }
198 public bool IsSucursal
200 get {
return TipoOffline == 2; }
224 private int _Conexion = 0;
241 private string _Servidor =
"";
246 public string Usuario
257 private string _Usuario =
"";
262 public string Password
273 private string _Password =
"";
289 private Int32 _Puerto = 0;
305 private string _Proxy =
"";
307 public bool Use_SSL_TLS
315 _Use_SSL_TLS = value;
318 private bool _Use_SSL_TLS =
false;
320 public bool Validate_Server_Cert
324 return _Validate_Server_Cert;
328 _Validate_Server_Cert = value;
331 private bool _Validate_Server_Cert =
false;
333 public bool FTP_Activo
344 private bool _FTP_Activo =
true;
346 public string CarpetaSrv
357 private string _CarpetaSrv =
"";
359 public string ConfiguracionFtp
363 return _ConfiguracionFtp;
367 _ConfiguracionFtp = value;
370 private string _ConfiguracionFtp =
"";
373 private string _CodigoSucursal =
"";
374 public string CodigoSucursal
378 return _CodigoSucursal;
382 _CodigoSucursal = value;
384 if (!
string.IsNullOrEmpty(value))
386 Serie_Sucursal = GetSerieDefectoCurrentSucursal();
387 Almacen_Sucursal = GetAlmacenDefectoCurrentSucursal();
392 public string Serie_Sucursal {
get;
set; } =
"";
393 public string Almacen_Sucursal {
get;
set; } =
"";
394 public bool FiltroPorAlmacen {
get;
set; } =
false;
396 private int TipoComunicacion = 2;
399 get {
return TipoComunicacion == 2; }
403 TipoComunicacion = 2;
405 TipoComunicacion = 1;
408 public bool IsOneDrive
410 get {
return TipoComunicacion == 1; }
414 TipoComunicacion = 1;
416 TipoComunicacion = 2;
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;
428 public int Delete_Cen_Mant {
get;
set; } = 1;
429 public int Delete_Cen_Doc {
get;
set; } = 1;
431 public BindingList<Sucursales> _Sucursales =
new BindingList<Sucursales>();
435 public bool NoRecalculoStockTrasRecibir {
get;
set; } =
false;
437 internal ConfigComunicaBizRule _negocioConfigComunica =
new ConfigComunicaBizRule();
444 _asistenteOfflineDA = asistenteOfflineDA;
452 public AsistenteOfflineBizRule()
457 #endregion Constructors 459 #region Metodos publicos 462 public bool ComprobacionesPrevias(Action<string> callback)
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.");
474 string ejercicioSeleccionado = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_any"));
476 if ( ejercicioPredeterminado.TrimEnd() != ejercicioSeleccionado.TrimEnd())
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.");
483 DataTable tablaDatos = _asistenteOfflineDA.GetVariables(IdConf.ToString());
485 DataRow[] loTipoOffline = tablaDatos.Select(
"variable = 'TIPOOFFLINE'");
486 if (loTipoOffline != null && loTipoOffline.Count() > 0)
488 switch (Convert.ToString(loTipoOffline[0][
"valor"]).Trim())
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.");
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.");
506 public void Cargar_Variables(Action<string> callback)
508 DataTable tablaDatos = _asistenteOfflineDA.GetVariables(IdConf.ToString());
510 foreach (DataRow variable
in tablaDatos.Rows)
512 switch(variable[
"VARIABLE"].ToString().Trim().ToUpper())
514 case "TIPOCOMUNICACION":
523 if (variable[
"VALOR"].ToString().Trim().ToUpper() ==
"CENTRAL")
533 case "CODIGOSUCURSAL":
534 CodigoSucursal = variable[
"VALOR"].ToString().Trim();
538 string cadenaEncriptada = variable[
"VALOR"].ToString().Trim();
540 string cadenaDesencriptada = toolsOffline.Cadena_Desencriptar(cadenaEncriptada);
542 var trozos = cadenaDesencriptada.Split(
'~');
544 if (trozos.Length == 7)
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";
555 else if (trozos.Length == 9)
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";
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());
573 callback?.Invoke(
"Configuración incorrecta. Los datos de la cuenta FTP no estan correctamente declarados.");
580 var trozos = variable[
"VALOR"].ToString().Split(
'|');
582 if (trozos.Length == 3)
584 BackupSel = trozos[0].Trim().ToUpper() ==
".T.";
585 BackupPath = trozos[1].Trim();
586 BackupNumArchivos = Convert.ToInt32(trozos[2]);
590 callback?.Invoke(
"Configuración incorrecta. Los datos del Backup no estan correctamente declarados.");
594 case "ENVIARIMAGENES":
595 EnviarImagenes = variable[
"VALOR"].ToString().Trim() ==
".T.";
597 case "FILTROPORALMACEN":
598 FiltroPorAlmacen = variable[
"VALOR"].ToString().Trim() ==
".T.";
600 case "TERMINALSEGURIDAD":
601 TerminalSeguridad = variable[
"VALOR"].ToString().Trim() ==
".T.";
604 Hora_Envio = variable[
"VALOR"].ToString().Trim();
606 case "HORA_RECEPCION":
607 Hora_Recepcion = variable[
"VALOR"].ToString().Trim();
609 case "HORA_CARGAINI":
610 Hora_CargaIni = variable[
"VALOR"].ToString().Trim();
612 case "DELETE_CEN_MANT":
613 Delete_Cen_Mant = variable[
"VALOR"].ToString().Trim() ==
".T." ? 1 : 2;
615 case "DELETE_CEN_DOC":
616 Delete_Cen_Doc = variable[
"VALOR"].ToString().Trim() ==
".T." ? 1 : 2;
619 Serie_Central = variable[
"VALOR"].ToString().Trim();
621 case "NORECALCULOSTOCKIMP":
622 NoRecalculoStockTrasRecibir= variable[
"VALOR"].ToString().Trim() ==
".T.";
625 UltimoLogCentral = (variable[
"VALOR"].ToString().Trim() ==
"" ? 6 : Convert.ToInt32(variable[
"VALOR"].ToString().Trim()));
630 if (TipoOffline == 1)
634 tablaDatos = _asistenteOfflineDA.GetSucursales();
636 foreach (DataRow ldrFila
in tablaDatos.Rows)
638 Sucursales suc =
new Sucursales(ldrFila);
639 _Sucursales.Add(suc);
644 sucursal = _asistenteOfflineDA.GetSucursal(CodigoSucursal);
648 public bool Save_Variables(Action<string> callback)
651 ActualizarVariable(
EnumVariables.TIPOCOMUNICACION, (TipoComunicacion == 1 ?
"SKYDRIVE" :
"FTP"), IdConf);
652 ActualizarVariable(
EnumVariables.TIPOOFFLINE, (TipoOffline == 1 ?
"CENTRAL" :
"SUCURSAL"), IdConf);
653 ActualizarVariable(
EnumVariables.CODIGOSUCURSAL, CodigoSucursal, IdConf);
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);
667 string BackupString = BackupSel ?
".T." :
".F." +
'|';
668 BackupString += BackupPath.Trim() +
'|';
669 BackupString += BackupNumArchivos.ToString();
670 ActualizarVariable(
EnumVariables.BACKUP_RECEP, BackupString, IdConf);
672 ActualizarVariable(
EnumVariables.ENVIARIMAGENES, (EnviarImagenes ?
".T." :
".F."), IdConf);
673 ActualizarVariable(
EnumVariables.FILTROPORALMACEN, (FiltroPorAlmacen ?
".T." :
".F."), IdConf);
674 ActualizarVariable(
EnumVariables.TERMINALSEGURIDAD, (TerminalSeguridad ?
".T." :
".F."), IdConf);
676 ActualizarVariable(
EnumVariables.HORA_ENVIO, Hora_Envio, IdConf);
677 ActualizarVariable(
EnumVariables.HORA_RECEPCION, Hora_Recepcion, IdConf);
678 ActualizarVariable(
EnumVariables.HORA_CARGAINI, Hora_CargaIni, IdConf);
680 ActualizarVariable(
EnumVariables.DELETE_CEN_MANT, (Delete_Cen_Mant == 1 ?
".T." :
".F."), IdConf);
682 ActualizarVariable(
EnumVariables.DELETE_CEN_DOC, (Delete_Cen_Doc == 1 ?
".T." :
".F."), IdConf);
684 ActualizarVariable(
EnumVariables.SERIECENTRAL, Serie_Central, IdConf);
686 ActualizarVariable(
EnumVariables.NORECALCULOSTOCKIMP, (NoRecalculoStockTrasRecibir?
".T." :
".F."), IdConf);
688 ActualizarVariable(
EnumVariables.ULTIMOLOG, UltimoLogCentral.ToString(), IdConf);
693 private bool ActualizarVariable(
EnumVariables eVariable,
object valor,
int IdConf)
695 return _asistenteOfflineDA.ActualizarVariable(eVariable, valor, IdConf);
698 public bool Save_Sucursales(Action<string> callback)
700 foreach (var suc
in _Sucursales)
708 public void Save_Modo_Operacion()
719 public void Save_Config_Grupo()
723 offlineEmpExcluBizRule.Instance._Save();
746 string NombreSucursal = Nombre_SucursalAsignada(CodigoSucursal);
752 _negocioConfigComunica._Save();
755 public void CalcularRiesgoClienteOffline()
758 Task loRunDatos =
new Task(() =>
770 public void CrearEjercicio()
772 _asistenteOfflineDA.CrearEjercicio(IsCentral);
775 public void Save_Config_Comunica()
777 List<DataTable> lstDatatable = ConvertirFicheroXML();
778 Save_TablasConfComunica(lstDatatable, CodigoSucursal);
781 public DataTable Get_Sucursales(Action<string> callback)
783 return OfflineDownloader.Download_Control_Files_And_Get_Sucursales(IdConf,
"");
786 public bool Upload_Control_Files(Action<string> callback)
788 return OfflineUploader.Upload_Control_Files(0, IsCentral, IdConf);
791 public bool Upload_Offline_Files(clsOfflineUtils.ReportProgress progressReporter, Action<string> callback,
string tcSucursal,
bool tlAnterior)
793 return OfflineUploader.Upload_Offline_Files(progressReporter, DateTime.MinValue, DateTime.MinValue, DateTime.MaxValue, tcSucursal, EnviarImagenes, tlAnterior, IsCentral, IdConf);
798 #region Metodos privados 799 private string GetSerieDefectoCurrentSucursal()
812 return _asistenteOfflineDA.GetSerieDefectoCurrentSucursal(CodigoSucursal);
815 private string GetAlmacenDefectoCurrentSucursal()
828 return _asistenteOfflineDA.GetAlmacenDefectoCurrentSucursal(CodigoSucursal);
832 public bool ComprobarConfiguracionPrincipal()
834 return _asistenteOfflineDA.ComprobarConfiguracionPrincipal();
842 public void GetCadenaEncriptada(
string cadenaEncriptada)
844 clsOffLine toolsOffline =
new clsOffLine();
846 var trozos = toolsOffline.Cadena_Desencriptar(cadenaEncriptada).Split(
'~');
848 if (trozos.Length == 7)
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();
857 else if (trozos.Length == 9)
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";
879 Validate_Server_Cert =
false;
883 public void AddConexion_MultConf()
885 if (TipoComunicacion.Equals(1))
888 EditComunicaciones_MultConf(
"00", 0);
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);
903 int conexion = Conexion;
905 AddComunicaciones_MultConf(
"00", 0, conexion, cadenaEncriptada);
913 public bool Download_UnZip_File(clsOfflineUtils.ReportProgress progressReporter,
bool tlAnterior, Action<string> callback)
916 return OfflineDownloader.Download_UnZip_File(progressReporter, callback);
923 public List<DataTable> ConvertirFicheroXML()
925 return OfflineUpAndDown.ConvertirFicheroXML();
932 public bool _Delete(Int32 index = -1)
935 string codConfig =
string.Empty;
939 codConfig = source[index].CODIGO;
940 if (codConfig ==
"00")
946 source.RemoveAt(index);
953 public void AddComunicaciones_MultConf(
string newcodigo,
int newidconf,
int conexion,
string cadenaEncriptada)
955 _asistenteOfflineDA.AddComunicaciones_MultConf(newcodigo, newidconf, conexion, cadenaEncriptada);
958 public void EditComunicaciones_MultConf(
string newcodigo,
int newidconf)
960 _asistenteOfflineDA.EditComunicaciones_MultConf(newcodigo, newidconf);
963 public void AddOneDrive_MultConf(
int idconf, Dictionary<string, object> tablaMultconf)
965 _asistenteOfflineDA.AddOneDrive_MultConf(idconf, tablaMultconf);
968 public void AddComunicaciones_SucurConf(
string sucursal,
int newidconf)
970 _asistenteOfflineDA.AddComunicaciones_SucurConf(sucursal, newidconf);
973 public string Nombre_SerieDocumento(
string lcSerie)
975 return _asistenteOfflineDA.Nombre_SerieDocumento(lcSerie);
978 public string Nombre_SucursalAsignada(
string lcSucursal)
980 return _asistenteOfflineDA.Nombre_SucursalAsignada(lcSucursal);
983 public List<string> ObtenerRegistrosExistentes(
string lcBBDD,
string lcTabla,
string lcCampo)
985 return _asistenteOfflineDA.ObtenerRegistrosExistentes(lcBBDD, lcTabla, lcCampo);
988 public void Cancel_MultConf()
990 _asistenteOfflineDA.Cancel_MultConf();
993 public void VaciarTablas(List<string> lstTablas)
995 _asistenteOfflineDA.VaciarTablas(lstTablas);
998 public void DeleteRegistroConfComunica(
string lcCodigo)
1000 _asistenteOfflineDA.DeleteRegistroConfComunica(lcCodigo);
1003 public void Save_TablasSucursales(List<DataTable> lstDatatable)
1005 _asistenteOfflineDA.Save_TablasSucursales(lstDatatable);
1008 public void Save_TablasConfComunica(List<DataTable> lstDatatable,
string codigoSucursal)
1010 _asistenteOfflineDA.Save_TablasConfComunica(lstDatatable, CodigoSucursal);
1016 public void CancelarAsistente(List<string> configuracionesPreexistentes, List<string> sucursalesPreexistentes)
1029 List<string> lstConfig = ObtenerRegistrosExistentes(
"OFFLINE",
"MULTCONF",
"idconf");
1035 foreach (
string conf
in lstConfig)
1037 if (!configuracionesPreexistentes.Exists(x => x == conf))
1039 var registro = configuraciones.Where(s => s.IDCONF == Convert.ToInt32(conf)).ToList();
1041 DeleteRegistroConfComunica(registro[0].CODIGO);
1055 List<string> lstTablas =
new List<string>() {
"TABRELNET",
"SUCURCONF" };
1056 VaciarTablas(lstTablas);
1060 List<string> lstSucursales = ObtenerRegistrosExistentes(
"OFFLINE",
"SUCURSALES",
"codigo");
1062 foreach (
string suc
in lstSucursales)
1064 if (!sucursalesPreexistentes.Exists(x => x == suc))
1066 Sucursales loSuc =
new Sucursales(suc);
1085 public List<string> EmpresasExcluidas()
1087 List<string> excluidas =
new List<string>();
1092 if (registros.Any())
1094 foreach (var item
in registros)
1096 excluidas.Add(item.EMPRESA);
1104 public Dictionary<string, object> GetMultconf(
string lcCodigo)
1106 return _asistenteOfflineDA.GetMulticonf(lcCodigo);
string GetAnyEjercicioPredeterminado()
Obtiene el año del ejercicio prederterminado
object Retrieve(Type T)
Resuelve objeto de tipo T
IEmpexcluRepository EmpexcluRepository
empexclu repositorio
void SaveChanges()
Guardar cambios
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
EnumVariables
Enumerado de variables
Clase EW_GLOBAL para gestionar las variables públicas de Eurowin, variables de empresa, variables de anchuras de campo, variables de mascaras, etc.
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
Prueba de Val. Servidor Sage 50
Interfaz de acceso a datos para asistente
static DependencyInjector Instance
Instancia
Interfaz de acceso a datos para Offline
void InsertOrUpdateVariable(EnumVariables EVariable, string valor, string tipo, int idconf=0)
Inserta o actualiza variable
Procesos : tabla listados filtrando el tipo a 3
Interfaz UnitOfWor Offline
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