private bool HayDiferencias(int dni, string vendedor, PuntosPendientes remoto, LineaVenta local)
 {
     return
         (local.Cantidad != remoto.cantidad ||
          dni != remoto.dni.ToIntegerOrDefault() ||
          Math.Round(local.ImporteNeto, 2) != (double)Math.Round(remoto.precio, 2) ||
          Math.Round(local.DescuentoLinea.GetValueOrDefault(), 2) != Math.Round(remoto.dtoLinea.GetValueOrDefault(), 2) ||
          Math.Round(local.DescuentoOpera.GetValueOrDefault(), 2) != Math.Round(remoto.dtoVenta.GetValueOrDefault(), 2) ||
          vendedor.Trim().ToUpper() != remoto.trabajador.Trim().ToUpper() ||
          local.TipoAportacion.Trim().ToUpper() != remoto.receta.Trim().ToUpper());
 }
        public void Insert(PuntosPendientes pp)
        {
            var set = new
            {
                idventa         = pp.idventa,
                idnlinea        = pp.idnlinea,
                cod_barras      = pp.cod_barras,
                cod_nacional    = pp.cod_nacional,
                descripcion     = pp.descripcion,
                familia         = pp.familia,
                cantidad        = pp.cantidad,
                precio          = pp.precio,
                tipoPago        = pp.tipoPago,
                fecha           = pp.fecha,
                dni             = pp.dni,
                cargado         = pp.cargado,
                puesto          = pp.puesto,
                trabajador      = pp.trabajador,
                cod_laboratorio = pp.cod_laboratorio,
                laboratorio     = pp.laboratorio,
                proveedor       = pp.proveedor,
                receta          = pp.receta,
                fechaVenta      = pp.fechaVenta.ToIsoString(),
                superFamilia    = pp.superFamilia,
                pvp             = pp.pvp,
                puc             = pp.puc,
                dtoLinea        = pp.dtoLinea,
                dtoVenta        = pp.dtoVenta,
                redencion       = pp.redencion,
                recetaPendiente = pp.recetaPendiente
            };

            var where = new { idventa = pp.idventa, idnlinea = pp.idnlinea };

            _restClient
            .Resource(_config.Puntos.Insert)
            .SendPost(new
            {
                puntos = new[] { new { set, where } }
            });
        }
Example #3
0
        public void Insert(PuntosPendientes pp)
        {
            var set = new
            {
                idventa         = pp.VentaId,
                idnlinea        = pp.LineaNumero,
                cod_barras      = pp.CodigoBarra,
                cod_nacional    = pp.CodigoNacional,
                descripcion     = pp.Descripcion.Strip(),
                familia         = pp.Familia,
                cantidad        = pp.Cantidad,
                precio          = pp.Precio,
                tipoPago        = pp.TipoPago,
                fecha           = pp.Fecha,
                dni             = pp.DNI,
                cargado         = pp.Cargado,
                puesto          = pp.Puesto,
                trabajador      = pp.Trabajador,
                cod_laboratorio = pp.LaboratorioCodigo,
                laboratorio     = pp.Laboratorio,
                proveedor       = pp.Proveedor,
                receta          = pp.Receta,
                fechaVenta      = pp.FechaVenta.ToIsoString(),
                superFamilia    = pp.SuperFamilia,
                pvp             = pp.PVP,
                puc             = pp.PUC,
                dtoLinea        = pp.LineaDescuento,
                dtoVenta        = pp.VentaDescuento,
                redencion       = pp.redencion,
                recetaPendiente = pp.recetaPendiente
            };

            var where = new { idventa = pp.VentaId, idnlinea = pp.LineaNumero };

            _restClient
            .Resource(_config.Puntos.Insert)
            .SendPost(new
            {
                puntos = new[] { new { set, where } }
            });
        }
Example #4
0
        private IEnumerable <PuntosPendientes> GenerarPuntosPendientes(FAR.Venta venta)
        {
            if (!venta.HasCliente() && venta.Tipo != "1")
            {
                return(new PuntosPendientes[0]);
            }

            if (!venta.HasDetalle())
            {
                return(new PuntosPendientes[0]);
            }

            var puntosPendientes = new List <PuntosPendientes>();

            foreach (var item in venta.Detalle)
            {
                var familia        = item.Farmaco.Familia?.Nombre ?? FAMILIA_DEFAULT;
                var puntoPendiente = new PuntosPendientes
                {
                    VentaId        = $"{venta.FechaHora.Year}{venta.Id}".ToLongOrDefault(),
                    LineaNumero    = item.Linea,
                    CodigoBarra    = item.Farmaco.CodigoBarras ?? "847000" + item.Farmaco.Codigo.PadLeft(6, '0'),
                    CodigoNacional = item.Farmaco.Codigo,
                    Descripcion    = item.Farmaco.Denominacion,

                    Familia = _clasificacion == TIPO_CLASIFICACION_CATEGORIA
                        ? item.Farmaco.Subcategoria?.Nombre ?? FAMILIA_DEFAULT
                        : familia,
                    SuperFamilia = _clasificacion == TIPO_CLASIFICACION_CATEGORIA
                        ? item.Farmaco.Categoria?.Nombre ?? FAMILIA_DEFAULT
                        : string.Empty,
                    SuperFamiliaAux     = string.Empty,
                    FamiliaAux          = _clasificacion == TIPO_CLASIFICACION_CATEGORIA ? familia : string.Empty,
                    CambioClasificacion = _clasificacion == TIPO_CLASIFICACION_CATEGORIA ? 1 : 0,

                    Cantidad          = item.Cantidad,
                    Precio            = item.Importe,
                    Pago              = item.Equals(venta.Detalle.First()) ? venta.TotalBruto : 0,
                    TipoPago          = venta.Tipo,
                    Fecha             = venta.FechaHora.Date.ToDateInteger(),
                    DNI               = venta.Cliente?.Id.ToString() ?? "0",
                    Cargado           = _cargarPuntos.ToLower().Equals("si") ? "no" : "si",
                    Puesto            = $"{venta.Puesto}",
                    Trabajador        = venta.VendedorNombre,
                    LaboratorioCodigo = item.Farmaco.Laboratorio?.Codigo ?? string.Empty,
                    Laboratorio       = item.Farmaco.Laboratorio?.Nombre ?? LABORATORIO_DEFAULT,
                    Proveedor         = item.Farmaco.Proveedor?.Nombre ?? string.Empty,
                    Receta            = item.Receta,
                    FechaVenta        = venta.FechaHora,
                    PVP               = item.PVP,
                    PUC               = item.Farmaco?.PrecioCoste ?? 0,
                    Categoria         = item.Farmaco.Categoria?.Nombre ?? string.Empty,
                    Subcategoria      = item.Farmaco.Subcategoria?.Nombre ?? string.Empty,
                    VentaDescuento    = item.Equals(venta.Detalle.First()) ? venta.TotalDescuento : 0,
                    LineaDescuento    = item.Descuento,
                    TicketNumero      = venta.Ticket?.Numero,
                    Serie             = venta.Ticket?.Serie ?? string.Empty,
                    Sistema           = SISTEMA_UNYCOP
                };

                puntosPendientes.Add(puntoPendiente);
            }

            return(puntosPendientes);
        }
Example #5
0
        private IEnumerable <PuntosPendientes> GenerarPuntosPendientes(FAR.Venta venta, string empresa)
        {
            if (!venta.HasDetalle())
            {
                return venta.TipoOperacion == "P"
                ? new PuntosPendientes[] { GenerarPuntoPendienteVentaSinDetalle(venta, empresa) }
            }
            : new PuntosPendientes[0];

            var puntosPendientes = new List <PuntosPendientes>();

            foreach (var item in venta.Detalle.Where(d => d.HasFarmaco()))
            {
                var familia = !string.IsNullOrWhiteSpace(item.Farmaco.Familia?.Nombre) ? item.Farmaco.Familia.Nombre : FAMILIA_DEFAULT;

                var superFamilia = !string.IsNullOrWhiteSpace(item.Farmaco.SuperFamilia?.Nombre) ? item.Farmaco.SuperFamilia.Nombre : FAMILIA_DEFAULT;

                var categoria = item.Farmaco.Categoria?.Nombre;
                if (_verCategorias == "si" && !string.IsNullOrWhiteSpace(categoria) && categoria.ToLower() != "sin categoria" && categoria.ToLower() != "sin categoría")
                {
                    if (string.IsNullOrEmpty(superFamilia) || superFamilia == FAMILIA_DEFAULT)
                    {
                        superFamilia = categoria;
                    }
                    else
                    {
                        superFamilia = $"{superFamilia} ~~~~~~~~ {categoria}";
                    }
                }

                var puntoPendiente = new PuntosPendientes
                {
                    VentaId        = $"{venta.Operacion}{empresa}".ToLongOrDefault(),
                    LineaNumero    = item.Linea,
                    CodigoBarra    = item.Farmaco.CodigoBarras ?? "847000" + item.Farmaco.Codigo.PadLeft(6, '0'),
                    CodigoNacional = item.Farmaco.Codigo,
                    Descripcion    = item.Farmaco.Denominacion,

                    Familia             = familia,
                    SuperFamilia        = superFamilia,
                    SuperFamiliaAux     = string.Empty,
                    FamiliaAux          = string.Empty,
                    CambioClasificacion = _clasificacion == TIPO_CLASIFICACION_CATEGORIA ? 1 : 0,

                    Cantidad          = item.Cantidad,
                    Precio            = item.Precio,
                    Pago              = item.Equals(venta.Detalle.First()) ? venta.TotalBruto : 0,
                    TipoPago          = venta.TipoOperacion,
                    Fecha             = venta.FechaHora.Date.ToDateInteger(),
                    DNI               = venta.Cliente?.Id.ToString() ?? "0",
                    Cargado           = _cargarPuntos.ToLower().Equals("si") ? "no" : "si",
                    Puesto            = $"{venta.Puesto}",
                    Trabajador        = !string.IsNullOrWhiteSpace(venta.VendedorCodigo) ? venta.VendedorCodigo.Trim() : string.Empty,
                    LaboratorioCodigo = item.Farmaco.Laboratorio?.Codigo ?? string.Empty,
                    Laboratorio       = item.Farmaco.Laboratorio?.Nombre ?? LABORATORIO_DEFAULT,
                    Proveedor         = item.Farmaco.Proveedor?.Nombre ?? string.Empty,
                    Receta            = item.Receta,
                    FechaVenta        = venta.FechaHora,
                    PVP               = item.PVP,
                    PUC               = item.Farmaco?.PrecioCoste ?? 0,
                    Categoria         = item.Farmaco.Categoria?.Nombre ?? string.Empty,
                    Subcategoria      = item.Farmaco.Subcategoria?.Nombre ?? string.Empty,
                    VentaDescuento    = item.Equals(venta.Detalle.First()) ? venta.TotalDescuento : 0,
                    LineaDescuento    = item.Descuento,
                    TicketNumero      = venta.Ticket?.Numero,
                    Serie             = venta.Ticket?.Serie ?? string.Empty,
                    Sistema           = SISTEMA_NIXFARMA,
                    Ubicacion         = item.Farmaco?.Ubicacion
                };

                puntosPendientes.Add(puntoPendiente);
            }

            return(puntosPendientes);
        }
        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);
        }
Example #7
0
 public void Insert(PuntosPendientes pp)
 {
     throw new NotImplementedException();
 }
        private IEnumerable <PuntosPendientes> GenerarPuntosPendientes(Venta venta)
        {
            //Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + " " + $"Generando puntos pendientes {venta.Id}", FILE_LOG);

            //if (!venta.HasCliente() && venta.Tipo != "1")
            //    return new PuntosPendientes[0];

            if (!venta.HasDetalle())
            {
                return(new PuntosPendientes[0]);
            }

            //Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + " " + $"Generando puntos pendientes despues de if {venta.Id}", FILE_LOG);

            var puntosPendientes = new List <PuntosPendientes>();

            foreach (var item in venta.Detalle)
            {
                var repository = _farmacia.Farmacos as FarmacoRespository;

                var familia        = item.Farmaco.Familia?.Nombre ?? FAMILIA_DEFAULT;
                var puntoPendiente = new PuntosPendientes
                {
                    VentaId        = $"{venta.FechaHora.Year}{venta.Id}".ToLongOrDefault(),
                    LineaNumero    = item.Linea,
                    CodigoBarra    = item.Farmaco.CodigoBarras ?? "847000" + item.Farmaco.Codigo.PadLeft(6, '0'),
                    CodigoNacional = item.Farmaco.Codigo,
                    Descripcion    = item.Farmaco.Denominacion,

                    Familia = _clasificacion == TIPO_CLASIFICACION_CATEGORIA
                        ? item.Farmaco.Subcategoria?.Nombre ?? FAMILIA_DEFAULT
                        : familia,
                    SuperFamilia = _clasificacion == TIPO_CLASIFICACION_CATEGORIA
                        ? item.Farmaco.Categoria?.Nombre ?? FAMILIA_DEFAULT
                        : string.Empty,
                    SuperFamiliaAux     = string.Empty,
                    FamiliaAux          = _clasificacion == TIPO_CLASIFICACION_CATEGORIA ? familia : string.Empty,
                    CambioClasificacion = _clasificacion == TIPO_CLASIFICACION_CATEGORIA ? 1 : 0,

                    Cantidad          = item.Cantidad,
                    Precio            = item.Importe,
                    Pago              = item.Equals(venta.Detalle.First()) ? venta.TotalBruto : 0,
                    TipoPago          = venta.Tipo,
                    Fecha             = venta.FechaHora.Date.ToDateInteger(),
                    DNI               = venta.Cliente?.Id.ToString() ?? "0",
                    Cargado           = _cargarPuntos.ToLower().Equals("si") ? "no" : "si",
                    Puesto            = $"{venta.Puesto}",
                    Trabajador        = venta.VendedorNombre,
                    LaboratorioCodigo = item.Farmaco.Laboratorio?.Codigo ?? string.Empty,
                    Laboratorio       = item.Farmaco.Laboratorio?.Nombre ?? LABORATORIO_DEFAULT,
                    Proveedor         = item.Farmaco.Proveedor?.Nombre ?? string.Empty,
                    Receta            = item.Receta,
                    FechaVenta        = venta.FechaHora,
                    PVP               = item.PVP,
                    PUC               = item.Farmaco?.PrecioCoste ?? 0,
                    Categoria         = item.Farmaco.Categoria?.Nombre ?? string.Empty,
                    Subcategoria      = item.Farmaco.Subcategoria?.Nombre ?? string.Empty,
                    VentaDescuento    = item.Equals(venta.Detalle.First()) ? venta.TotalDescuento : 0,
                    LineaDescuento    = item.Descuento,
                    TicketNumero      = venta.Ticket?.Numero,
                    Serie             = venta.Ticket?.Serie ?? string.Empty,
                    Sistema           = SISTEMA_UNYCOP,
                    articulo          = GenerarMedicamentoP(item.Farmaco)
                };

                //Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + " " + $"Añadiendo puntos pendientes {venta.Id}", FILE_LOG);

                puntosPendientes.Add(puntoPendiente);
            }

            //Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + " " + $"Puntos pendientes generado {venta.Id} | total = {puntosPendientes.Count}", FILE_LOG);

            return(puntosPendientes);
        }