public IEnumerable <PedidoDetalle> GetAllDetalleByPedido(long numero, string empresa, int anio) { var detalle = new List <PedidoDetalle>(); var conn = FarmaciaContext.GetConnection(); try { var sqlExtra = string.Empty; var sql = $@" select * from appul.ad_linped where pedido='{numero}' AND emp_codigo ='{empresa}' and ejercicio = {anio}"; var sql1 = $@" select ar.codigo, NVL(stk.stock, 0) as stock, lp.* from appul.ad_linped lp inner join appul.ab_articulos ar on ar.codigo = lp.art_codigo AND ar.emp_codigo = lp.emp_codigo left join (select art_codigo, max(actuales) as stock from appul.ac_existencias group by art_codigo) stk on STK.ART_CODIGO = ar.codigo where lp.pedido='{numero}' AND lp.emp_codigo ='{empresa}' AND lp.ejercicio = {anio} and (stock is null or stock = 0)"; conn.Open(); var cmd = conn.CreateCommand(); cmd.CommandText = sql1; var reader = cmd.ExecuteReader(); while (reader.Read()) { var rArtCodigo = Convert.ToString(reader["ART_CODIGO"]); var rLinea = Convert.ToInt32(reader["LINEA"]); var rCantPedida = !Convert.IsDBNull(reader["CANT_PEDIDA"]) ? Convert.ToInt64(reader["CANT_PEDIDA"]) : 0L; var rPedido = Convert.ToInt64(reader["PEDIDO"]); var rEmpCodigo = Convert.ToString(reader["EMP_CODIGO"]); var rPvpIvaEuros = !Convert.IsDBNull(reader["PVP_IVA_EUROS"]) ? (decimal?)Convert.ToDecimal(reader["PVP_IVA_EUROS"]) : null; var rPcIvaEuros = !Convert.IsDBNull(reader["PC_IVA_EUROS"]) ? (decimal?)Convert.ToDecimal(reader["PC_IVA_EUROS"]) : null; var farmaco = _farmacoRepository.GetOneOrDefaultById(rArtCodigo); Farmaco farmacoPedido = null; if (farmaco != null) { //sql = $@"select max(actuales) as stock from appul.ac_existencias where art_codigo = '{rArtCodigo}' group by art_codigo"; //cmd.CommandText = sql; //var readerStock = cmd.ExecuteReader(); var stock = Convert.ToInt64(reader["stock"]); farmaco.Stock = stock; var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(rArtCodigo); var categoria = _categoriaRepository.GetOneOrDefaultById(rArtCodigo); Familia familia = null; Familia superFamilia = null; if (string.IsNullOrWhiteSpace(farmaco.SubFamilia)) { familia = new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } else { familia = _familiaRepository.GetSubFamiliaOneOrDefault(farmaco.Familia, farmaco.SubFamilia) ?? new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } var laboratorio = !farmaco.Laboratorio.HasValue ? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" } : _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio.Value, farmaco.Clase, farmaco.ClaseBot) ?? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" }; farmacoPedido = new Farmaco { Id = farmaco.Id, Codigo = farmaco.Codigo, PrecioCoste = farmaco.PUC, Proveedor = proveedor, Categoria = categoria, Familia = familia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Precio = farmaco.PrecioMedio, Stock = farmaco.Stock }; } var item = new PedidoDetalle { Linea = rLinea, CantidadPedida = rCantPedida, FarmacoCodigo = rArtCodigo, EmpresaCodigo = rEmpCodigo, PedidoCodigo = rPedido, Farmaco = farmacoPedido }; detalle.Add(item); } reader.Close(); reader.Dispose(); return(detalle); } catch (Exception ex) { throw; } finally { conn.Close(); conn.Dispose(); } }
public List <VentaDetalle> GetDetalleDeVentaByVentaId(long venta, string empresa) { var conn = FarmaciaContext.GetConnection(); try { conn.Open(); var sql = $@"SELECT VTA_OPERACION, LINEA_VENTA, ENT_CODIGO, ENTTP_TIPO, PVP_ORIGINAL_E, PVP_APORTACION_E, IMP_DTO_E, ART_CODIGO, DESCRIPCION, UNIDADES FROM appul.ah_venta_lineas WHERE emp_codigo = '{empresa}' AND situacion = 'N' AND vta_operacion='{venta}'"; var cmd = conn.CreateCommand(); cmd.CommandText = sql; var reader = cmd.ExecuteReader(); var detalle = new List <VentaDetalle>(); while (reader.Read()) { var vtaOperacion = Convert.ToInt64(reader["VTA_OPERACION"]); var lineaVenta = Convert.ToInt32(reader["LINEA_VENTA"]); var entCodigo = !Convert.IsDBNull(reader["ENT_CODIGO"]) ? (int?)Convert.ToInt32(reader["ENT_CODIGO"]) : null; var enttpTipo = !Convert.IsDBNull(reader["ENTTP_TIPO"]) ? (int?)Convert.ToInt32(reader["ENTTP_TIPO"]) : null;; var pvpOriginalE = !Convert.IsDBNull(reader["PVP_ORIGINAL_E"]) ? Convert.ToDecimal(reader["PVP_ORIGINAL_E"]) : 0; var pvpAportacionE = !Convert.IsDBNull(reader["PVP_APORTACION_E"]) ? Convert.ToDecimal(reader["PVP_APORTACION_E"]) : 0; var impDtoE = !Convert.IsDBNull(reader["IMP_DTO_E"]) ? Convert.ToDecimal(reader["IMP_DTO_E"]) : 0; var artCodigo = Convert.ToString(reader["ART_CODIGO"]); var unidades = Convert.ToInt32(reader["UNIDADES"]); var descripcion = reader["DESCRIPCION"]; var ventaDetalle = new VentaDetalle { VentaId = vtaOperacion, Linea = lineaVenta, Receta = !entCodigo.HasValue ? string.Empty : !enttpTipo.HasValue ? entCodigo.Value.ToString() : $"{entCodigo.Value} {enttpTipo.Value}", PVP = pvpOriginalE, Precio = pvpAportacionE, Descuento = impDtoE, Cantidad = unidades //Importe = item.Importe * _factorCentecimal, }; var farmaco = _farmacoRepository.GetOneOrDefaultById(artCodigo); if (farmaco != null) { var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(artCodigo); var categoria = _categoriaRepository.GetOneOrDefaultById(artCodigo); Familia familia = null; Familia superFamilia = null; if (string.IsNullOrWhiteSpace(farmaco.SubFamilia)) { familia = new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } else { familia = _familiaRepository.GetSubFamiliaOneOrDefault(farmaco.Familia, farmaco.SubFamilia) ?? new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } var laboratorio = !farmaco.Laboratorio.HasValue ? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" } : _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio.Value, farmaco.Clase, farmaco.ClaseBot) ?? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" }; ventaDetalle.Farmaco = new Farmaco { Codigo = artCodigo, PrecioCoste = farmaco.PUC, CodigoBarras = farmaco.CodigoBarras, Proveedor = proveedor, Categoria = categoria, Familia = familia, SuperFamilia = superFamilia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Ubicacion = farmaco.Ubicacion }; } detalle.Add(ventaDetalle); } reader.Close(); reader.Dispose(); return(detalle); } catch (Exception ex) { throw; } finally { conn.Close(); conn.Dispose(); } }
private Encargo GenerarEncargo(DTO.Encargo encargo) { var cliente = new Cliente { Id = encargo.Cliente }; var vendedor = new Vendedor { Nombre = encargo.Vendedor.Trim() }; var farmacoEncargado = default(Farmaco); var farmaco = _farmacoRepository.GetOneOrDefaultById(encargo.Farmaco); if (farmaco != null) { var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(encargo.Farmaco); var categoria = _categoriaRepository.GetOneOrDefaultById(encargo.Farmaco); Familia familia = null; Familia superFamilia = null; if (string.IsNullOrWhiteSpace(farmaco.SubFamilia)) { familia = new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } else { familia = _familiaRepository.GetSubFamiliaOneOrDefault(farmaco.Familia, farmaco.SubFamilia) ?? new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } var laboratorio = !farmaco.Laboratorio.HasValue ? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" } : _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio.Value, farmaco.Clase, farmaco.ClaseBot) ?? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" }; farmacoEncargado = new Farmaco { Id = farmaco.Id, Codigo = encargo.Farmaco.ToString(), PrecioCoste = farmaco.PUC, Proveedor = proveedor, Categoria = categoria, Familia = familia, SuperFamilia = superFamilia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Precio = farmaco.PrecioMedio, }; } return(new Encargo { Id = encargo.Id, Fecha = encargo.FechaHora, FechaEntrega = encargo.FechaHoraEntrega, Farmaco = farmacoEncargado, Cantidad = encargo.Cantidad, Cliente = cliente, Vendedor = vendedor, Observaciones = encargo.Observaciones, Empresa = encargo.Empresa, Almacen = encargo.Almacen, Linea = encargo.Linea }); }
public List <VentaDetalle> GetDetalleDeVentaByVentaId(int year, long venta) { try { var ventaInteger = (int)venta; try { using (var db = FarmaciaContext.VentasByYear(year)) { var sql = @"SELECT ID_Farmaco as Farmaco, Organismo, Cantidad, PVP, DescLin as Descuento, Importe FROM lineas_venta WHERE ID_venta= @venta"; var lineas = db.Database.SqlQuery <DTO.LineaVenta>(sql, new OleDbParameter("venta", ventaInteger)) .ToList(); //if (!lineas.Any()) // Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + $"Detalle venta {year} {venta} NO tiene detalle.", FILE_LOG); //else //{ // Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + $"Detalle venta {year} {venta} SI tiene detalle. | Total = {lineas.Count}", FILE_LOG); //} var linea = 0; var detalle = new List <VentaDetalle>(); foreach (var item in lineas) { var ventaDetalle = new VentaDetalle { Linea = ++linea, Importe = item.Importe * _factorCentecimal, PVP = item.PVP * _factorCentecimal, Descuento = item.Descuento * _factorCentecimal, Receta = item.Organismo, Cantidad = item.Cantidad }; var farmaco = _farmacoRepository.GetOneOrDefaultById(item.Farmaco); if (farmaco != null) { var pcoste = farmaco.PrecioUnicoEntrada.HasValue && farmaco.PrecioUnicoEntrada != 0 ? (decimal)farmaco.PrecioUnicoEntrada.Value * _factorCentecimal : ((decimal?)farmaco.PrecioMedio ?? 0m) * _factorCentecimal; var codigoBarra = _barraRepository.GetOneByFarmacoId(farmaco.Id); var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(farmaco.Id); var categoria = farmaco.CategoriaId.HasValue ? _categoriaRepository.GetOneOrDefaultById(farmaco.CategoriaId.Value) : null; var subcategoria = farmaco.CategoriaId.HasValue && farmaco.SubcategoriaId.HasValue ? _categoriaRepository.GetSubcategoriaOneOrDefaultByKey( farmaco.CategoriaId.Value, farmaco.SubcategoriaId.Value) : null; var familia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia); var laboratorio = _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio) ?? new Laboratorio { Codigo = farmaco.Laboratorio }; var iva = default(decimal); switch (farmaco.IVA) { case 1: iva = 4; break; case 2: iva = 10; break; case 3: iva = 21; break; default: iva = 0; break; } ventaDetalle.Farmaco = new Farmaco { Id = farmaco.Id, Codigo = item.Farmaco.ToString(), PrecioCoste = pcoste, CodigoBarras = codigoBarra, Proveedor = proveedor, Categoria = categoria, Subcategoria = subcategoria, Familia = familia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, FechaUltimaCompra = farmaco.FechaUltimaEntrada.HasValue && farmaco.FechaUltimaEntrada.Value > 0 ? (DateTime?)$"{farmaco.FechaUltimaEntrada.Value}".ToDateTimeOrDefault("yyyyMMdd") : null, FechaUltimaVenta = farmaco.FechaUltimaSalida.HasValue && farmaco.FechaUltimaSalida.Value > 0 ? (DateTime?)$"{farmaco.FechaUltimaSalida.Value}".ToDateTimeOrDefault("yyyyMMdd") : null, Ubicacion = farmaco.Ubicacion ?? string.Empty, Web = farmaco.BolsaPlastico, Precio = farmaco.PVP * _factorCentecimal, Iva = iva, Stock = farmaco.ExistenciasAux ?? 0, StockMinimo = farmaco.Stock ?? 0, Baja = farmaco.FechaBaja > 0, FechaCaducidad = farmaco.FechaCaducidad.HasValue && farmaco.FechaCaducidad.Value > 0 ? (DateTime?)$"{farmaco.FechaCaducidad.Value}".ToDateTimeOrDefault("yyyyMM") : null }; } else { ventaDetalle.Farmaco = new Farmaco { Id = item.Farmaco, Codigo = item.Farmaco.ToString() } }; detalle.Add(ventaDetalle); } //Logging.WriteToFileThreadSafe(DateTime.Now.ToString("o") + $"Detalle generado venta {year} {venta} | total = {detalle.Count}", FILE_LOG); return(detalle); } } catch (FarmaciaContextException) { return(new List <VentaDetalle>()); } } catch (Exception ex) when(ex.Message.Contains(FarmaciaContext.MessageUnderlyngProviderFailed)) { return(GetDetalleDeVentaByVentaId(year, venta)); } }
private IEnumerable <DE.Recepcion> GenerarRecepciones(Dictionary <RecepcionCompositeKey, List <DTO.Recepcion> > groups) { var recepciones = new List <DE.Recepcion>(); foreach (var group in groups) { var linea = 0; var fecha = group.Value.Last().Fecha; // a la vuelta preguntamos por > fecha var proveedorPedido = group.Value.First().Proveedor.HasValue ? _proveedorRepository.GetOneOrDefaultById(group.Value.First().Proveedor.Value) : null; var detalle = new List <RecepcionDetalle>(); foreach (var item in group.Value) { var recepcionDetalle = new RecepcionDetalle() { Linea = ++linea, RecepcionId = int.Parse($"{group.Key.Anio}{group.Key.Albaran}"), Cantidad = item.Recibido - item.Devuelto, CantidadBonificada = item.Bonificado }; var farmaco = _farmacoRepository.GetOneOrDefaultById(item.Farmaco); if (farmaco != null) { var pcoste = 0m; if (item.PVAlbaran > 0) { pcoste = item.PVAlbaran * _factorCentecimal; } else if (item.PC > 0) { pcoste = item.PC * _factorCentecimal; } else { pcoste = farmaco.PrecioUnicoEntrada.HasValue && farmaco.PrecioUnicoEntrada != 0 ? (decimal)farmaco.PrecioUnicoEntrada.Value * _factorCentecimal : ((decimal?)farmaco.PrecioMedio ?? 0m) * _factorCentecimal; } var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(farmaco.Id) ?? _proveedorRepository.GetOneOrDefaultById(farmaco.Id); var categoria = farmaco.CategoriaId.HasValue ? _categoriaRepository.GetOneOrDefaultById(farmaco.CategoriaId.Value) : null; var subcategoria = farmaco.CategoriaId.HasValue && farmaco.SubcategoriaId.HasValue ? _categoriaRepository.GetSubcategoriaOneOrDefaultByKey( farmaco.CategoriaId.Value, farmaco.SubcategoriaId.Value) : null; var familia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia); var laboratorio = _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio); recepcionDetalle.Farmaco = new DE.Farmaco { Id = farmaco.Id, Codigo = item.Farmaco.ToString(), PrecioCoste = pcoste, Proveedor = proveedor, Categoria = categoria, Subcategoria = subcategoria, Familia = familia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Precio = item.PVP * _factorCentecimal, Stock = farmaco.ExistenciasAux ?? 0 }; } detalle.Add(recepcionDetalle); } recepciones.Add(new DE.Recepcion { Id = int.Parse($"{group.Key.Anio}{group.Key.Albaran}"), Fecha = fecha.Value, Lineas = detalle.Count, ImportePVP = group.Value.Sum(x => x.PVP * x.Recibido * _factorCentecimal), ImportePUC = group.Value.Sum(x => x.PCTotal * _factorCentecimal), Proveedor = proveedorPedido }.AddRangeDetalle(detalle)); } return(recepciones); }