예제 #1
0
        private void ProcesarStock(TransferenciaProducto transferenciaProd, bool sumar, int maxikioscoId)
        {
            var stockTransaccion = new StockTransaccion
            {
                Identifier              = Guid.NewGuid(),
                Cantidad                = sumar ? transferenciaProd.Cantidad : -transferenciaProd.Cantidad,
                StockTransaccionTipoId  = 4, //Transferencia
                FechaUltimaModificacion = DateTime.Now
            };

            //Obtengo la instancia de stock para la transferencia del producto
            Stock stock = Uow.Stocks.Obtener(s => s.MaxiKioscoId == maxikioscoId && s.ProductoId == transferenciaProd.ProductoId);

            if (stock == null)
            {
                stock = new Stock
                {
                    Identifier        = Guid.NewGuid(),
                    MaxiKioscoId      = maxikioscoId,
                    ProductoId        = transferenciaProd.ProductoId,
                    OperacionCreacion = "Aprobar transferencia desde web",
                    FechaCreacion     = DateTime.Now
                };
                Uow.Stocks.Agregar(stock);
            }

            stockTransaccion.Stock = stock;
            Uow.StockTransacciones.Agregar(stockTransaccion);
        }
예제 #2
0
        public ActionResult CargarProducto(int productoId, int origenId, int destinoId)
        {
            var productoCompleto = Uow.Productos.ObtenerParaTransferencia(productoId, origenId, destinoId);

            var transferenciaProducto = new TransferenciaProducto
            {
                ProductoId = productoId,
                Cantidad   = 1,
                Producto   = new Producto {
                    Descripcion = productoCompleto.Descripcion
                },
                PrecioVenta          = productoCompleto.PrecioConIVA,
                Identifier           = Guid.NewGuid(),
                PrimerCodigoProducto = productoCompleto.Codigo,
                ProductoMarca        = productoCompleto.Marca,
                StockOrigen          = productoCompleto.StockOrigen,
                StockDestino         = productoCompleto.StockDestino,
                Costo = productoCompleto.CostoConIVA
            };

            return(PartialView(transferenciaProducto));
        }
예제 #3
0
        private void Aceptar()
        {
            if (PopupAbierto)
            {
                PopupAbierto = false;
            }
            else if (MensajeErrorAbierto)
            {
                MensajeErrorAbierto = false;
            }
            else if (ConfirmacionAbierta)
            {
                ConfirmacionAbierta = false;
            }
            else
            {
                if (dgvListado.Rows.Count > 0)
                {
                    ConfirmacionAbierta = true;
                    var frmConfirmar = new ConfirmationForm("Está seguro que desea guardar la transferencia?", "Si", "No");
                    if (frmConfirmar.ShowDialog() == DialogResult.OK)
                    {
                        var lineas = new List <TransferenciaProducto>();
                        for (int i = 0; i <= dgvListado.Rows.Count - 1; i++)
                        {
                            var linea = new TransferenciaProducto();

                            linea.Cantidad    = int.Parse(dgvListado.Rows[i].Cells["Cantidad"].Value.ToString());
                            linea.Eliminado   = false;
                            linea.Identifier  = Guid.NewGuid();
                            linea.PrecioVenta = Convert.ToDecimal(dgvListado.Rows[i].Cells["Unitario"].Value.ToString().Replace("$", ""));
                            linea.ProductoId  = (int)dgvListado.Rows[i].Cells["productoId"].Value;
                            linea.Costo       = dgvListado.Rows[i].Cells["Costo"].Value == null
                                                    ? 0
                                                    : Convert.ToDecimal(dgvListado.Rows[i].Cells["Costo"].Value.ToString().Replace("$", ""));
                            linea.FechaUltimaModificacion = DateTime.Now;
                            linea.Orden                   = i + 1;
                            linea.Desincronizado          = true;
                            linea.StockDestino            = Convert.ToDecimal(dgvListado.Rows[i].Cells["StockActual"].Value.ToString());
                            linea.Identifier              = Guid.Parse(dgvListado.Rows[i].Cells["Identifier"].Value.ToString());
                            linea.TransferenciaProductoId = Convert.ToInt32(dgvListado.Rows[i].Cells["TransferenciaProductoId"].Value.ToString());

                            lineas.Add(linea);
                        }

                        if (_operacion == "Crear")
                        {
                            var transferencia = new Transferencia
                            {
                                FechaCreacion          = DateTime.Now,
                                Identifier             = Guid.NewGuid(),
                                Eliminado              = false,
                                TransferenciaProductos = lineas,
                                AutoNumero             = _autoNumero,
                                Desincronizado         = true,
                                DestinoId              = AppSettings.MaxiKioscoId,
                                FechaAprobacion        = null,
                                OrigenId  = Origen.MaxiKioscoId,
                                UsuarioId = UsuarioActual.UsuarioId
                            };

                            Repository.Agregar(transferencia);
                        }
                        else
                        {
                            //Transferencia.TransferenciaProductos = lineas;
                            var trans = Repository.Obtener(t => t.TransferenciaId == Transferencia.TransferenciaId,
                                                           t => t.TransferenciaProductos);
                            var originales = trans.TransferenciaProductos.Where(tp => !tp.Eliminado);

                            var paraEliminar = originales.Select(o => o.TransferenciaProductoId).ToList();

                            var i = 1;
                            foreach (var tp in lineas)
                            {
                                tp.Orden = i;
                                if (tp.TransferenciaProductoId == 0)
                                {
                                    tp.TransferenciaId = Transferencia.TransferenciaId;
                                    TransferenciaProductoRepository.Agregar(tp);
                                }
                                else
                                {
                                    var original = originales.FirstOrDefault(o => tp.TransferenciaProductoId == o.TransferenciaProductoId);
                                    if (original != null)
                                    {
                                        original.Cantidad     = tp.Cantidad;
                                        original.PrecioVenta  = tp.PrecioVenta;
                                        original.ProductoId   = tp.ProductoId;
                                        original.StockDestino = tp.StockDestino;
                                        original.StockOrigen  = tp.StockOrigen;
                                        TransferenciaProductoRepository.Modificar(original);
                                        paraEliminar.Remove(original.TransferenciaProductoId);
                                    }
                                }
                                i++;
                            }

                            foreach (var id in paraEliminar)
                            {
                                TransferenciaProductoRepository.Eliminar(id);
                            }

                            trans.OrigenId  = Transferencia.OrigenId;
                            trans.DestinoId = Transferencia.DestinoId;


                            trans.FechaUltimaModificacion = DateTime.Now;
                            trans.Desincronizado          = true;
                        }
                        Repository.Commit();

                        this.Close();
                    }
                }
            }
        }