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();
 }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
0
 public ListaTiendaSincronizador(FarmaciaService farmatic, FisiotesService fisiotes, ConsejoService consejo, int listaDeArticulo)
     : base(farmatic, fisiotes, consejo)
 {
     _listaDeArticulo = listaDeArticulo;
 }
Exemplo n.º 4
0
        public static string GetNombreLaboratorioFromLocalOrDefault(FarmaticService farmaticService, ConsejoService consejoService, string codigo, string byDefault = "")
        {
            var nombreLaboratorio = byDefault;

            if (!string.IsNullOrEmpty(codigo?.Trim()) && !string.IsNullOrWhiteSpace(codigo))
            {
                var laboratorioDb = default(Consejo.Models.Labor); //consejoService.Laboratorios.Get(codigo);
                if (laboratorioDb == null)
                {
                    var laboratorioLocal =
                        farmaticService.Laboratorios.GetById(codigo);
                    nombreLaboratorio = laboratorioLocal?.Nombre ?? byDefault;
                }
                else
                {
                    nombreLaboratorio = laboratorioDb.NOMBRE;
                }
            }
            else
            {
                nombreLaboratorio = byDefault;
            }
            return(nombreLaboratorio);
        }
Exemplo n.º 5
0
        public static Fisiotes.Models.Medicamento GenerarMedicamento(FarmaticService farmatic, ConsejoService consejo, ArticuloWithIva articulo)
        {
            var familia = farmatic.Familias.GetById(articulo.XFam_IdFamilia)?.Descripcion
                          ?? string.Empty;

            var superFamilia = !string.IsNullOrEmpty(familia)
                    ? farmatic.Familias.GetSuperFamiliaDescripcionByFamilia(familia) ?? string.Empty
                    : string.Empty;

            var fechaUltimaCompra = articulo.FechaUltimaEntrada;
            var fechaUltimaVenta  = articulo.FechaUltimaSalida;
            var precio            = articulo.Pvp;
            var pcoste            = articulo.Puc;
            var pvpsIva           = Math.Round(articulo.Pvp * 100 / (articulo.Iva + 100), 2);
            var stock             = articulo.StockActual;
            var stockMinimo       = articulo.StockMinimo;
            var stockMaximo       = articulo.StockMaximo;
            var descripcion       = articulo.Descripcion.Strip();
            var baja           = articulo.Baja;
            var activo         = !baja;
            var fechaCaducidad = articulo.FechaCaducidad;

            var codigoBarra = farmatic.Sinonimos.GetOneOrDefaultByArticulo(articulo.IdArticu)?.Sinonimo
                              ?? COD_BARRAS_DEFAULT;

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

            var nombreLaboratorio = GetNombreLaboratorioFromLocalOrDefault(
                farmatic, consejo, articulo.Laboratorio, LABORATORIO_DEAFULT);

            var esperara     = default(Consejo.Models.Esperara); // consejoService.Esperas.Get(articulo.IdArticu);
            var presentacion = esperara?.PRESENTACION ?? string.Empty;

            var descripcionHtml = string.Empty;
            var textos          = new List <string>(); //consejoService.Esperas.GetTextos(articulo.IdArticu);

            foreach (var texto in textos)
            {
                if (string.IsNullOrEmpty(descripcionHtml))
                {
                    descripcionHtml = texto;
                }
                descripcionHtml += $@" <br> {texto}";
            }
            descripcionHtml = descripcionHtml.Length < 30000
                ? descripcionHtml.Replace(Environment.NewLine, "<br>").Replace("\0", string.Empty).Strip()
                : string.Empty;

            return(new Fisiotes.Models.Medicamento
            {
                cod_barras = codigoBarra.Strip(),
                cod_nacional = articulo.IdArticu.Strip(),
                familia = familia.Strip(),
                superFamilia = superFamilia.Strip(),
                nombre = descripcion.Strip(),
                precio = Convert.ToSingle(precio),
                nombre_laboratorio = nombreLaboratorio.Strip(),
                laboratorio = articulo.Laboratorio.Strip(),
                proveedor = proveedor.Strip(),
                pvpSinIva = Convert.ToSingle(pvpsIva),
                iva = Convert.ToInt32(articulo.Iva),
                stock = stock,
                puc = Convert.ToSingle(pcoste),
                stockMinimo = stockMinimo,
                stockMaximo = stockMaximo,
                presentacion = presentacion.Strip(),
                descripcion = descripcion.Strip(),
                descripcionTienda = descripcionHtml.Strip(),
                activoPrestashop = activo,
                fechaCaducidad = fechaCaducidad,
                fechaUltimaCompra = fechaUltimaCompra,
                fechaUltimaVenta = fechaUltimaVenta,
                baja = baja
            });
        }
Exemplo n.º 6
0
        private Fisiotes.Models.Encargo GenerarEncargo(FarmaticService farmatic, Farmatic.Models.Encargo encargo, ConsejoService consejo)
        {
            var nombre         = string.Empty;
            var familia        = FAMILIA_DEFAULT;
            var superFamilia   = FAMILIA_DEFAULT;
            var codLaboratorio = string.Empty;
            var laboratorio    = LABORATORIO_DEFAULT;
            var proveedor      = string.Empty;
            var pcoste         = 0d;
            var precioMed      = 0d;

            var dni = !string.IsNullOrEmpty(encargo.XCli_IdCliente)
                ? encargo.XCli_IdCliente.Trim()
                : "0";

            var trabajador = farmatic.Vendedores.GetOneOrDefaultById(Convert.ToInt16(encargo.Vendedor))?.NOMBRE
                             ?? string.Empty;

            var codNacional = encargo.XArt_IdArticu?.Trim();

            if (string.IsNullOrWhiteSpace(codNacional))
            {
                codNacional = "0";
            }

            var articulo = farmatic.Articulos.GetOneOrDefaultById(encargo.XArt_IdArticu);

            if (articulo != null)
            {
                nombre    = articulo.Descripcion.Strip();
                pcoste    = articulo.Puc;
                precioMed = articulo.Pvp;

                familia = farmatic.Familias.GetById(articulo.XFam_IdFamilia)?.Descripcion;
                if (string.IsNullOrEmpty(familia))
                {
                    familia = FAMILIA_DEFAULT;
                }

                superFamilia = !familia.Equals(FAMILIA_DEFAULT)
                    ? farmatic.Familias.GetSuperFamiliaDescripcionByFamilia(familia) ?? FAMILIA_DEFAULT
                    : familia;

                proveedor = farmatic.Proveedores.GetOneOrDefaultByCodigoNacional(articulo.IdArticu)?.FIS_NOMBRE.Strip() ?? string.Empty;

                codLaboratorio = articulo.Laboratorio.Strip() ?? string.Empty;
                laboratorio    = GetNombreLaboratorioFromLocalOrDefault(farmatic, consejo, codLaboratorio, LABORATORIO_DEFAULT).Strip();
            }

            return(new Fisiotes.Models.Encargo
            {
                idEncargo = encargo.IdContador,
                cod_nacional = codNacional,
                nombre = nombre,
                familia = familia,
                superFamilia = superFamilia,
                cod_laboratorio = codLaboratorio,
                laboratorio = laboratorio,
                proveedor = proveedor,
                pvp = Convert.ToSingle(precioMed),
                puc = Convert.ToSingle(pcoste),
                dni = dni,
                fecha = encargo.IdFecha,
                trabajador = trabajador,
                unidades = encargo.Unidades,
                fechaEntrega = encargo.FechaEntrega,
                observaciones = encargo.Observaciones.Strip()
            });
        }
Exemplo n.º 7
0
 public EncargoSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes)
 {
     _consejo = consejo ?? throw new ArgumentNullException(nameof(consejo));
 }
        private Fisiotes.Models.Falta GenerarFaltante(FarmaticService farmatic, Pedido pedido, LineaPedido linea, Articulo articulo, ConsejoService consejo)
        {
            var fechaPedido = pedido.Hora;
            var fechaActual = DateTime.Now;

            var pcoste    = articulo.Puc;
            var precioMed = articulo.Pvp;

            var familia = farmatic.Familias.GetById(articulo.XFam_IdFamilia)?.Descripcion;

            if (string.IsNullOrWhiteSpace(familia))
            {
                familia = FAMILIA_DEFAULT;
            }

            var superFamilia = !familia.Equals(FAMILIA_DEFAULT)
                ? farmatic.Familias.GetSuperFamiliaDescripcionByFamilia(familia) ?? FAMILIA_DEFAULT
                : familia;

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

            var codLaboratorio    = articulo.Laboratorio ?? string.Empty;
            var nombreLaboratorio = GetNombreLaboratorioFromLocalOrDefault(farmatic, consejo, codLaboratorio, LABORATORIO_DEFAULT);

            return(new Fisiotes.Models.Falta
            {
                idPedido = linea.IdPedido,
                idLinea = linea.IdLinea,
                cod_nacional = articulo.IdArticu.Strip(),
                descripcion = articulo.Descripcion,
                familia = familia.Strip(),
                superFamilia = superFamilia.Strip(),
                cantidadPedida = linea.Unidades,
                fechaFalta = fechaActual,
                cod_laboratorio = codLaboratorio.Strip(),
                laboratorio = nombreLaboratorio.Strip(),
                proveedor = proveedor.Strip(),
                fechaPedido = fechaPedido,
                pvp = Convert.ToSingle(precioMed),
                puc = Convert.ToSingle(pcoste)
            });
        }
 public ControlStockFechaSalidaSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes, consejo)
 {
 }
 public PuntoPendienteSincronizador(FarmaticService farmatic, FisiotesService fisiotes, ConsejoService consejo)
     : base(farmatic, fisiotes)
 {
     _consejo = consejo ?? throw new ArgumentNullException(nameof(consejo));
     _hasSexo = farmatic.Clientes.HasSexoField();
 }
        private PuntosPendientes GenerarPuntoPendiente(string puntosDeSisfarma, string cargarPuntos, int dni, string tarjetaDelCliente, double descuentoVenta, Venta venta, LineaVenta linea, string vendedor, FarmaticService farmatic, ConsejoService consejo)
        {
            var redencion = (farmatic.Ventas.GetOneOrDefaultLineaRedencionByKey(venta.IdVenta, linea.IdNLinea)?
                             .Redencion) ?? 0;

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

            pp.idventa    = venta.IdVenta;
            pp.idnlinea   = linea.IdNLinea;
            pp.puntos     = 0;
            pp.puesto     = venta.Maquina;
            pp.tipoPago   = linea.TipoLinea;
            pp.fechaVenta = venta.FechaHora;

            if (string.IsNullOrEmpty(venta.XClie_IdCliente.Strip()?.Trim()) || string.IsNullOrWhiteSpace(venta.XClie_IdCliente.Strip()))
            {
                pp.dni = "0";
            }
            else
            {
                pp.dni = venta.XClie_IdCliente.Strip();
            }

            pp.trabajador      = vendedor;
            pp.fecha           = Convert.ToInt32(venta.FechaHora.ToString("yyyyMMdd"));
            pp.recetaPendiente = linea.RecetaPendiente;
            pp.receta          = linea.TipoAportacion;
            pp.redencion       = Convert.ToSingle(redencion);
            pp.cod_nacional    = linea.Codigo;
            pp.cod_barras      = GetCodidoBarrasFromLocalOrDefault(farmatic, linea.Codigo);
            pp.descripcion     = linea.Descripcion.Strip();
            pp.pvp             = Convert.ToSingle(linea.PVP);
            pp.dtoVenta        = Convert.ToSingle(descuentoVenta);
            pp.dtoLinea        = Convert.ToSingle(linea.DescuentoLinea ?? 0d);
            pp.precio          = Convert.ToDecimal(linea.ImporteNeto);
            pp.cantidad        = linea.Cantidad;
            pp.cargado         = cargarPuntos.ToLower().Equals("si") ? "no" : "si";

            if (articulo == null)
            {
                pp.laboratorio     = "<Sin Laboratorio>";
                pp.cod_laboratorio = string.Empty;
                pp.familia         = FAMILIA_DEFAULT;
                pp.superFamilia    = FAMILIA_DEFAULT;
                pp.proveedor       = string.Empty;
                pp.puc             = 0;
            }
            else
            {
                pp.cod_laboratorio = articulo.Laboratorio.Strip() ?? string.Empty;
                pp.laboratorio     = GetNombreLaboratorioFromLocalOrDefault(farmatic, consejo, pp.cod_laboratorio, "<Sin Laboratorio>");
                pp.puc             = Convert.ToSingle(articulo.Puc);
                pp.familia         = GetFamiliaFromLocalOrDefault(farmatic, articulo.XFam_IdFamilia, "<Sin Clasificar>");
                pp.superFamilia    = !pp.familia.Equals("<Sin Clasificar>")
                    ? GetSuperFamiliaFromLocalOrDefault(farmatic, pp.familia, "<Sin Clasificar>").Strip()
                    : pp.familia.Strip();

                pp.familia = pp.familia.Strip();

                pp.proveedor = GetProveedorFromLocalOrDefault(farmatic, articulo.IdArticu).Strip();
            }

            //var sonpuntosdesisfarma = puntosdesisfarma.tolower().equals("si");
            //var fechadeventa = venta.fechahora.date;
            //var cargado = cargarpuntos.tolower().equals("si");

            //if (dni != 0 &&
            //    sonpuntosdesisfarma && !cargado &&
            //    !string.isnullorwhitespace(_fechadepuntos) &&
            //    _fechadepuntos.tolower() != "no" &&
            //    fechadeventa >= _fechadepuntos.todatetimeordefault("yyyymmdd"))
            //{
            //    var tipofamilia = pp.familia != familia_default ? pp.familia : pp.superfamilia;
            //    var importe = linea.importeneto;
            //    var articulodescripcion = articulo?.descripcion ?? string.empty;
            //    var articulocantidad = linea.cantidad;

            //    pp.puntos = (float)calcularpuntos(tarjetadelcliente, tipofamilia, importe, articulodescripcion, articulocantidad);
            //}
            //else if (dni != 0 && _fechadepuntos.tolower() != "no")
            //    pp.cargado = "no";

            return(pp);
        }
Exemplo n.º 12
0
        private Fisiotes.Models.LineaPedido GenerarLineaDePedido(FarmaticService farmatic, Recepcion recepcion, LineaRecepcion linea, Articulo articulo, ConsejoService consejo)
        {
            var puc = linea.ImportePuc;
            var pvp = linea.ImportePvp;

            var familia = farmatic.Familias.GetById(articulo.XFam_IdFamilia)?.Descripcion;

            if (string.IsNullOrWhiteSpace(familia))
            {
                familia = FAMILIA_DEFAULT;
            }

            var superFamilia = !familia.Equals(FAMILIA_DEFAULT)
                ? farmatic.Familias.GetSuperFamiliaDescripcionByFamilia(familia) ?? FAMILIA_DEFAULT
                : familia;

            var codLaboratorio    = articulo.Laboratorio ?? string.Empty;
            var nombreLaboratorio = GetNombreLaboratorioFromLocalOrDefault(farmatic, consejo, codLaboratorio, LABORATORIO_DEFAULT);

            return(new Fisiotes.Models.LineaPedido
            {
                idPedido = linea.IdRecepcion,
                idLinea = linea.IdNLinea,
                fechaPedido = recepcion.Hora,
                cod_nacional = Convert.ToInt64(articulo.IdArticu.Strip()),
                descripcion = articulo.Descripcion.Strip(),
                familia = familia.Strip(),
                superFamilia = superFamilia.Strip(),
                cantidad = linea.Recibidas - linea.UDevolver,
                pvp = Convert.ToSingle(pvp),
                puc = Convert.ToSingle(puc),
                cod_laboratorio = codLaboratorio.Strip(),
                laboratorio = nombreLaboratorio.Strip()
            });
        }