private void ProcessUpdateEntregasClientes(FarmaticService farmatic, FisiotesService fisiotes)
        {
            var valor = fisiotes.Configuraciones.GetByCampo(FIELD_POR_DONDE_VOY_ENTREGAS_CLIENTES);
            var venta = Convert.ToInt32(!string.IsNullOrEmpty(valor)
                ? valor
                : "0");

            var ventasVirtuales = farmatic.Ventas.GetVirtualesLessThanId(venta);

            foreach (var @virtual in ventasVirtuales)
            {
                _cancellationToken.ThrowIfCancellationRequested();

                var lineas = farmatic.Ventas.GetLineasVirtualesByVenta(@virtual.IdVenta);
                foreach (var linea in lineas)
                {
                    if (!fisiotes.Entregas.Exists(linea.IdVenta, linea.IdNLinea))
                    {
                        fisiotes.Entregas.Insert(
                            GenerarEntregaCliente(farmatic, @virtual, linea));

                        fisiotes.Configuraciones.Update(FIELD_POR_DONDE_VOY_ENTREGAS_CLIENTES, @virtual.IdVenta.ToString());
                    }
                }
            }
        }
Exemple #2
0
        private void ProcessCategorias(FarmaticService farmatic, FisiotesService fisiotes)
        {
            var familias = farmatic.Familias.GetByDescripcion();

            foreach (var familia in familias)
            {
                Task.Delay(5);

                _cancellationToken.ThrowIfCancellationRequested();

                var padre = farmatic.Familias.GetSuperFamiliaDescripcionByFamilia($"{familia.Descripcion}")
                            ?? PADRE_DEFAULT;

                /*if (!fisiotes.Categorias.Exists(familia.Descripcion.Strip(), padre.Strip()))
                 * {
                 *  var categoria = fisiotes.Categorias.GetByPadreOrDefault(padre.Strip());
                 *  var padreId = categoria?.prestashopPadreId;*/
                fisiotes.Categorias.Insert(new Fisiotes.Models.Categoria
                {
                    categoria         = familia.Descripcion.Strip(),
                    padre             = padre.Strip(),
                    prestashopPadreId = null
                });
                //}
            }
        }
 public VentaMensualActualizacionSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo, int listaDeArticulo)
     : base(farmatic, fisiotes)
 {
     _consejo         = consejo ?? throw new ArgumentNullException(nameof(consejo));
     _listaDeArticulo = listaDeArticulo;
     _hasSexo         = farmatic.Clientes.HasSexoField();
 }
Exemple #4
0
        private void ProcessFamilia(FarmaticService farmatic, FisiotesService fisiotes)
        {
            var familias = farmatic.Familias.Get();

            foreach (var familia in familias)
            {
                Task.Delay(5);

                _cancellationToken.ThrowIfCancellationRequested();

                //if (!fisiotes.Familias.Exists(familia.Descripcion))
                fisiotes.Familias.Insert(GenerarFamilia(familia.Descripcion.Strip()));
            }
        }
Exemple #5
0
 protected void SincronizarMedicamento(FisiotesService fisiotes, Fisiotes.Models.Medicamento remoto, Fisiotes.Models.Medicamento generado)
 {
     if (remoto == null)
     {
         fisiotes.Medicamentos.Insert(generado);
     }
     else if (HayDiferencias(remoto, generado))
     {
         fisiotes.Medicamentos.Update(generado, withSqlExtra: true);
     }
     else
     {
         fisiotes.Medicamentos.Update(generado);
     }
 }
        private void ProcessListas(FarmaticService farmatic, FisiotesService fisiotes)
        {
            var listas = farmatic.ListasArticulos.GetByIdGreaterThan(_codActual);

            foreach (var lista in listas)
            {
                Task.Delay(5);

                _cancellationToken.ThrowIfCancellationRequested();

                //fisiotes.Listas.ResetPorDondeVoy();
                fisiotes.Listas.InsertOrUpdate(new Fisiotes.Models.Lista
                {
                    cod   = lista.IdLista,
                    lista = lista.Descripcion.Strip()
                });

                _codActual = lista.IdLista;

                var articulos = farmatic.ListasArticulos.GetArticulosByLista(lista.IdLista);
                if (articulos.Any())
                {
                    fisiotes.Listas.DeArticulos.Delete(lista.IdLista);

                    for (int i = 0; i < articulos.Count; i += BATCH_SIZE)
                    {
                        Task.Delay(1);

                        var items = articulos
                                    .Skip(i)
                                    .Take(BATCH_SIZE)
                                    .Select(x => new Fisiotes.Models.ListaArticulo
                        {
                            cod_lista    = x.XItem_IdLista,
                            cod_articulo = x.XItem_IdArticu.ToIntegerOrDefault(-1)
                        }).ToList();

                        fisiotes.Listas.DeArticulos.Insert(items);
                    }
                }
            }

            _codActual = -1;
            //fisiotes.Listas.ResetPorDondeVoy();
        }
Exemple #7
0
        private void ProcessListaTienda(FarmaciaService farmatic, FisiotesService fisiotes, ConsejoService consejo, int listaDeArticulo)
        {
            if (listaDeArticulo <= 0)
            {
                return;
            }

            var lista = farmatic.ListasArticulos.GetOneOrDefault(listaDeArticulo);

            if (lista != null)
            {
                fisiotes.Listas.InsertOrUpdate(new Fisiotes.Models.Lista
                {
                    cod   = lista.IdLista,
                    lista = lista.Descripcion.Strip()
                });

                fisiotes.Listas.DeArticulos.Delete(lista.IdLista);
                var articulos = farmatic.ListasArticulos.GetArticulosByLista(lista.IdLista);
                foreach (var articulo in articulos)
                {
                    _cancellationToken.ThrowIfCancellationRequested();

                    fisiotes.Listas.DeArticulos.Insert(new Fisiotes.Models.ListaArticulo
                    {
                        cod_lista    = articulo.XItem_IdLista,
                        cod_articulo = Convert.ToInt32(articulo.XItem_IdArticu)
                    });

                    var awi = farmatic.ListasArticulos.GetArticuloWithIva(listaDeArticulo, articulo.XItem_IdArticu);

                    var medicamentoGenerado = Generator.GenerarMedicamento(farmatic, consejo, awi);
                    var medicamento         = fisiotes.Medicamentos.GetOneOrDefaultByCodNacional(awi.IdArticu);

                    SincronizarMedicamento(fisiotes, medicamento, medicamentoGenerado);
                }

                farmatic.ListasArticulos.Update(listaDeArticulo);
            }
        }
        public void ProcessListasFechas(FarmaticService farmatic, FisiotesService fisiotes, int listaDeArticulo)
        {
            var listas = farmatic.ListasArticulos.GetByFechaExceptList(listaDeArticulo);

            foreach (var lista in listas)
            {
                _cancellationToken.ThrowIfCancellationRequested();

                var listaRemote = fisiotes.Listas.GetOneOrDefault(lista.IdLista);
                fisiotes.Listas.InsertOrUpdate(new Fisiotes.Models.Lista
                {
                    cod   = lista.IdLista,
                    lista = lista.Descripcion.Strip()
                });

                fisiotes.Listas.DeArticulos.Delete(lista.IdLista);
                var articulos = farmatic.ListasArticulos.GetArticulosByLista(lista.IdLista);
                if (articulos.Any())
                {
                    for (int i = 0; i < articulos.Count; i += BATCH_SIZE)
                    {
                        _cancellationToken.ThrowIfCancellationRequested();

                        var items = articulos
                                    .Skip(i)
                                    .Take(BATCH_SIZE)
                                    .Select(x => new Fisiotes.Models.ListaArticulo
                        {
                            cod_lista    = x.XItem_IdLista,
                            cod_articulo = Convert.ToInt32(x.XItem_IdArticu)
                        }).ToList();

                        fisiotes.Listas.DeArticulos.Insert(items);
                    }
                }
            }
        }
        private void ProcessUpdatePuntosPendientes(FarmaticService farmatic, FisiotesService fisiotes)
        {
            var puntos = fisiotes.PuntosPendientes.GetWithoutRedencion();

            foreach (var pto in puntos)
            {
                _cancellationToken.ThrowIfCancellationRequested();

                var venta = farmatic.Ventas.GetOneOrDefaultById(pto.idventa);
                if (venta != null)
                {
                    var lineas = farmatic.Ventas.GetLineasVentaByVenta(venta.IdVenta);
                    foreach (var linea in lineas)
                    {
                        var lineaRedencion =
                            farmatic.Ventas.GetOneOrDefaultLineaRedencionByKey(linea.IdVenta, linea.IdNLinea);

                        var redencion = lineaRedencion?.Redencion ?? 0;

                        var articulo = farmatic.Articulos.GetOneOrDefaultById(linea.Codigo);

                        var proveedor = (articulo != null)
                            ? farmatic.Proveedores.GetOneOrDefaultByCodigoNacional(articulo.IdArticu)?.FIS_NOMBRE ?? string.Empty
                            : string.Empty;

                        fisiotes.PuntosPendientes.Update(venta.TipoVenta, proveedor,
                                                         Convert.ToSingle(linea.DescuentoLinea), Convert.ToSingle(venta.DescuentoOpera),
                                                         Convert.ToSingle(redencion), linea.IdVenta, linea.IdNLinea);
                    }
                }
                else
                {
                    fisiotes.PuntosPendientes.Update(pto.idventa);
                }
            }
        }
        public void ProcessSinonimos(FarmaticService farmaticService, FisiotesService fisiotesService)
        {
            if (!_isEmpty && _horariosDeVaciamiento.Any(x => x.Equals(DateTime.Now.ToString("HHmm"))))
            {
                fisiotesService.Sinonimos.Empty();
                _isEmpty = _fisiotes.Sinonimos.IsEmpty();
            }

            if (_isEmpty)
            {
                var sinonimos = farmaticService.Sinonimos.GetAll();

                for (int i = 0; i < sinonimos.Count; i += _batchSize)
                {
                    Task.Delay(1);

                    _cancellationToken.ThrowIfCancellationRequested();

                    var items = sinonimos
                                .Skip(i)
                                .Take(_batchSize)
                                .Select(x => new Sinonimo
                    {
                        cod_barras   = x.Sinonimo.Strip(),
                        cod_nacional = x.IdArticu.Strip()
                    }).ToList();

                    fisiotesService.Sinonimos.Insert(items);
                    // 1er lote pregunta
                    if (_isEmpty)
                    {
                        _isEmpty = _fisiotes.Sinonimos.IsEmpty();
                    }
                }
            }
        }
 public ProveedorSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
Exemple #12
0
 public PowerSwitchProgramado(FisiotesService fisiotes)
     : base(fisiotes)
 {
 }
Exemple #13
0
 public ListaTiendaSincronizador(FarmaciaService farmatic, FisiotesService fisiotes, ConsejoService consejo, int listaDeArticulo)
     : base(farmatic, fisiotes, consejo)
 {
     _listaDeArticulo = listaDeArticulo;
 }
Exemple #14
0
 public PowerSwitchManual(FisiotesService fisiotes)
     : base(fisiotes)
 {
 }
Exemple #15
0
 public EncargoSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes)
 {
     _consejo = consejo ?? throw new ArgumentNullException(nameof(consejo));
 }
 public ClienteSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
     _horariosDeVaciamiento = new[] { "1400", "2100" };
     _hasSexo = farmatic.Clientes.HasSexoField();
 }
 public ListaFechaSincronizador(FarmaticService farmatic, FisiotesService fisiotes, int listaDeArticulo)
     : base(farmatic, fisiotes)
 {
     _listaDeArticulo = listaDeArticulo;
 }
Exemple #18
0
 public RecetaPendienteActualizacionSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
 public ControlStockFechaSalidaSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes, consejo)
 {
 }
 public ProductoBorradoActualizacionSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
 public EncargoActualizacionSincronizador(FarmaciaService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
Exemple #22
0
 public CategoriaSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
 public EntregaClienteActualizacionSincronizador(FarmaticService farmatic, FisiotesService fisiotes) :
     base(farmatic, fisiotes)
 {
 }
 public PuntoPendienteSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes)
 {
     _consejo = consejo ?? throw new ArgumentNullException(nameof(consejo));
     _hasSexo = farmatic.Clientes.HasSexoField();
 }
Exemple #25
0
 public HuecoSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
     _hasSexo = farmatic.Clientes.HasSexoField();
 }
 public ListaSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
 }
Exemple #27
0
 public ProveedorHistorialSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
     _batchSize = 1000;
 }
 public SinonimoSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(farmatic, fisiotes)
 {
     _horariosDeVaciamiento = new[] { "1230", "1730", "1930" };
     _batchSize             = 1000;
 }
Exemple #29
0
 public TaskSincronizador(FarmaticService farmatic, FisiotesService fisiotes)
     : base(fisiotes)
 {
     _farmatic = farmatic ?? throw new ArgumentNullException(nameof(farmatic));
 }
 public BaseSincronizador(FisiotesService fisiotes)
 => _fisiotes = fisiotes ?? throw new ArgumentNullException(nameof(fisiotes));