public void Eliminar(ApplicationDbContext Context) { if (!IsNew) { RecepcionDetalle model = this.ToModel(); Context.Entry(model).State = EntityState.Deleted; } }
public RecepcionDetalleViewModel(RecepcionDetalle model) { _RecepcionDetalleId = model.RecepcionDetalleId; _RecepcionId = model.RecepcionId; _InventarioInicialDetalleId = model.InventarioInicialDetalleId; _AjusteInventarioDetalleId = model.AjusteInventarioDetalleId; _OrdenProduccionInsumoId = model.OrdenProduccionInsumoId; _CompraDetalleId = model.CompraDetalleId; _MercaderiaId = model.MercaderiaId; _UnidadMedidaId = model.UnidadMedidaId; _Cantidad = model.Cantidad; _CodigoMercaderia = model.Mercaderia.Codigo; _NombreMercaderia = model.Mercaderia.Nombre; _UnidadMedida = model.UnidadMedida.Nombre; }
public void Grabar(ApplicationDbContext Context) { RecepcionDetalle model = this.ToModel(); if (IsNew) { Context.RecepcionDetalles.Add(model); } else { if (IsOld) { Context.Entry(model).State = EntityState.Modified; } } }
public RecepcionDetalle ToModel() { RecepcionDetalle model = new RecepcionDetalle { RecepcionDetalleId = _RecepcionDetalleId, RecepcionId = _RecepcionId, InventarioInicialDetalleId = _InventarioInicialDetalleId, AjusteInventarioDetalleId = _AjusteInventarioDetalleId, OrdenProduccionInsumoId = _OrdenProduccionInsumoId, CompraDetalleId = _CompraDetalleId, MercaderiaId = _MercaderiaId, UnidadMedidaId = _UnidadMedidaId, Cantidad = _Cantidad }; return(model); }
private void ClickAgregar(object sender, EventArgs e) { try { if (DatosValidos(0)) { int cantidad = int.Parse(((TextBox)controles.Find(x => x.Name == "txtCantidad")).Text);; int idArticulo = int.Parse(((ComboBox)controles.Find(x => x.Name == "comboArticulo")).SelectedValue.ToString()); var articuloAgregado = recepcionDetalle.Find(x => x.IdArticulo == idArticulo); cantidad += articuloAgregado != null ? articuloAgregado.Cantidad : 0; if (articuloAgregado == null) { var nuevoDetalle = new RecepcionDetalle(); nuevoDetalle.Articulo = articuloBLL.Obtener(idArticulo); nuevoDetalle.CantidadARecibir = 0; nuevoDetalle.Cantidad = cantidad; var nuevoDetalleVista = recepcionBLL.ConvertirDetalleAVista(new List <RecepcionDetalle>() { nuevoDetalle }).FirstOrDefault(); recepcionDetalle.Add(nuevoDetalleVista); } else { articuloAgregado.Cantidad = cantidad; } ServicioConfiguracionDeControles.LimpiarControles(this.controles); this.CargarGrilla(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public override void Process() { var repository = _farmacia.Recepciones as RecepcionRespository; var pedidos = (_lastPedido == null) ? repository.GetAllByYearAsDTO(_anioInicio) : repository.GetAllByDateAsDTO(_lastPedido.fechaPedido ?? DateTime.MinValue); if (!pedidos.Any()) { if (_anioInicio < DateTime.Now.Year) { _anioInicio++; _lastPedido = null; } return; } var pedidosAgrupados = pedidos.GroupBy(k => new { k.Fecha.Year, k.Empresa, k.Pedido }) .ToDictionary( k => new RecepcionCompositeKey { Anio = k.Key.Year, Empresa = k.Key.Empresa, Pedido = k.Key.Pedido }, v => v.ToList()); var batchLineasPedidos = new List <LineaPedido>(); var batchPedidos = new List <SF.Pedido>(); foreach (var pedido in pedidosAgrupados) { var fecha = pedido.Value.First().Fecha; // a la vuelta preguntamos por > fecha var proveedorPedido = pedido.Value.First().Proveedor.HasValue ? _farmacia.Proveedores.GetOneOrDefaultById(pedido.Value.First().Proveedor.Value) : null; var numeroPedido = pedido.Key.Pedido; var numeroPedidoSerial = numeroPedido.ToString().PadLeft(6, '0'); var empresa = pedido.Key.Empresa; var empresaSerial = empresa == _empresaUno ? "00001" : "00002"; var anio = pedido.Key.Anio; var identity = long.Parse($"{anio}{numeroPedidoSerial}{empresaSerial}"); var totales = repository.GetTotalesByPedidoAsDTO(anio, numeroPedido, empresa); var recepcion = new FAR.Recepcion { Id = identity, Pedido = numeroPedido, Fecha = fecha, Lineas = totales.Lineas, ImportePVP = totales.PVP, ImportePUC = totales.PUC, Proveedor = proveedorPedido }; var detalle = new List <RecepcionDetalle>(); foreach (var item in pedido.Value) { var farmaco = (_farmacia.Farmacos as FarmacoRespository).GetOneOrDefaultById(item.Farmaco); if (farmaco != null) { var recepcionDetalle = new RecepcionDetalle() { Linea = item.Linea, RecepcionId = identity, Cantidad = item.Recibido, Recepcion = recepcion }; var pvp = item.ImportePvp; var puc = item.ImportePuc != 0 ? item.ImportePuc : farmaco.PUC; var proveedor = _farmacia.Proveedores.GetOneOrDefaultByCodigoNacional(farmaco.Codigo) ?? (item.Proveedor.HasValue ? _farmacia.Proveedores.GetOneOrDefaultById(item.Proveedor.Value) : null); var categoria = _categoriaRepository.GetOneOrDefaultById(farmaco.Codigo); FAR.Familia familia = null; FAR.Familia superFamilia = null; if (string.IsNullOrWhiteSpace(farmaco.SubFamilia)) { familia = new FAR.Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new FAR.Familia { Nombre = string.Empty }; } else { familia = _familiaRepository.GetSubFamiliaOneOrDefault(farmaco.Familia, farmaco.SubFamilia) ?? new FAR.Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new FAR.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>" }; recepcionDetalle.Farmaco = new Farmaco { Id = farmaco.Id, Codigo = item.Farmaco, PrecioCoste = puc, Proveedor = proveedor, Categoria = categoria, Familia = familia, SuperFamilia = superFamilia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Precio = pvp }; detalle.Add(recepcionDetalle); batchLineasPedidos.Add(GenerarLineaDePedido(recepcionDetalle)); } } if (detalle.Any()) { var pedidoCabecera = GenerarPedido(recepcion); batchPedidos.Add(pedidoCabecera); _lastPedido = pedidoCabecera; } } if (batchLineasPedidos.Any()) { _sisfarma.Pedidos.Sincronizar(batchLineasPedidos); } if (batchPedidos.Any()) { _sisfarma.Pedidos.Sincronizar(batchPedidos); } }
public override void Process() { var repository = _farmacia.Recepciones as RecepcionRespository; var recepciones = (_lastPedido == null) ? repository.GetAllByYearAsDTO(_anioInicio) : repository.GetAllByDateAsDTO(_lastPedido.fechaPedido ?? DateTime.MinValue); if (!recepciones.Any()) { _anioInicio++; _lastPedido = null; return; } var groups = recepciones.GroupBy(k => new { k.Fecha.Value.Year, k.Albaran.Value }) .ToDictionary( k => new RecepcionCompositeKey { Anio = k.Key.Year, Albaran = k.Key.Value }, v => v.ToList()); var batchLineasPedidos = new List <LineaPedido>(); var batchPedidos = new List <SF.Pedido>(); foreach (var group in groups) { Task.Delay(5).Wait(); _cancellationToken.ThrowIfCancellationRequested(); _anioInicio = group.Key.Anio; var linea = 0; var fecha = group.Value.First().Fecha; // a la vuelta preguntamos por > fecha var proveedorPedido = group.Value.First().Proveedor.HasValue ? _farmacia.Proveedores.GetOneOrDefaultById(group.Value.First().Proveedor.Value) : null; var albaran = group.Key.Albaran > 0 ? group.Key.Albaran : 0; var identity = int.Parse($"{group.Key.Anio}{albaran}"); var recepcion = new FAR.Recepcion { Id = identity, Fecha = fecha.Value, ImportePVP = group.Value.Sum(x => x.PVP * x.Recibido * _factorCentecimal), ImportePUC = group.Value.Sum(x => x.PCTotal * _factorCentecimal), Proveedor = proveedorPedido }; var detalle = new List <RecepcionDetalle>(); foreach (var item in group.Value) { var farmaco = (_farmacia.Farmacos as FarmacoRespository).GetOneOrDefaultById(item.Farmaco); if (farmaco != null) { var recepcionDetalle = new RecepcionDetalle() { Linea = ++linea, RecepcionId = identity, Cantidad = item.Recibido - item.Devuelto, CantidadBonificada = item.Bonificado, Recepcion = recepcion }; 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 = _farmacia.Proveedores.GetOneOrDefaultByCodigoNacional(farmaco.Id) ?? _farmacia.Proveedores.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 = _farmacia.Familias.GetOneOrDefaultById(farmaco.Familia); var laboratorio = _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio); var codigoBarra = _barraRepository.GetOneByFarmacoId(farmaco.Id); 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; } recepcionDetalle.Farmaco = new 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, CodigoBarras = codigoBarra, 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, Iva = iva, StockMinimo = farmaco.Stock ?? 0, Baja = farmaco.FechaBaja > 0, FechaCaducidad = farmaco.FechaCaducidad.HasValue && farmaco.FechaCaducidad.Value > 0 ? (DateTime?)$"{farmaco.FechaCaducidad.Value}".ToDateTimeOrDefault("yyyyMM") : null }; detalle.Add(recepcionDetalle); batchLineasPedidos.Add(GenerarLineaDePedido(recepcionDetalle)); } } if (detalle.Any()) { recepcion.Lineas = detalle.Count(); var pedido = GenerarPedido(recepcion); batchPedidos.Add(pedido); _lastPedido = pedido; } else { recepcion.Lineas = 0; var pedido = GenerarPedido(recepcion); _lastPedido = pedido; } } if (batchLineasPedidos.Any()) { _sisfarma.Pedidos.Sincronizar(batchLineasPedidos); } if (batchPedidos.Any()) { _sisfarma.Pedidos.Sincronizar(batchPedidos); } }
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); }