public async Task ActualizarInvetario(MovimientoDto movimiento)
        {
            Inventario inventarioActualizar = _datosMock.InventarioLista.FirstOrDefault(f => f.BodegaId == movimiento.Bodega.Id && f.ProductoId == movimiento.Producto.Id);

            if (inventarioActualizar == null)
            {
                inventarioActualizar = new Inventario
                {
                    Id                 = Guid.NewGuid(),
                    BodegaId           = movimiento.Bodega.Id,
                    ProductoId         = movimiento.Producto.Id,
                    Cantidad           = movimiento.Cantidad,
                    ValorAcumulado     = movimiento.Valor,
                    Creacion           = DateTime.Now,
                    UltimaModificacion = null
                };
                _datosMock.InventarioLista.Add(inventarioActualizar);
            }
            else
            {
                switch (movimiento.Tipo)
                {
                case TipoMovimiento.Ingreso:
                    inventarioActualizar.Cantidad       += movimiento.Cantidad;
                    inventarioActualizar.ValorAcumulado += movimiento.Valor;
                    break;

                case TipoMovimiento.Salida:
                    inventarioActualizar.Cantidad       -= movimiento.Cantidad;
                    inventarioActualizar.ValorAcumulado -= movimiento.Valor;
                    break;
                }
                inventarioActualizar.UltimaModificacion = DateTime.Now;
            }
        }
Esempio n. 2
0
        public void RealizarMovimiento(MovimientoDto movimiento)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var cajaActualizar = context.Cajas.OfType <AccesoDatos.Caja>()
                                     .FirstOrDefault(x => x.Id == movimiento.CajaId);

                if (cajaActualizar == null)
                {
                    throw new Exception("No se encontro la caja");
                }

                if (movimiento.TipoMovimiento == TipoMovimiento.Ingreso)
                {
                    cajaActualizar.MontoSistema += movimiento.Monto;
                }
                else
                {
                    cajaActualizar.MontoSistema -= movimiento.Monto;
                }

                GenerarDetalleCaja(movimiento);

                context.SaveChanges();
            }
        }
 public async Task Insertar(MovimientoDto dto)
 {
     using (var context = new DataContext())
     {
         var movimiento = _mapper.Map <Dominio.Entidades.Movimiento>(dto);
         await _movimientoRepositorio.Create(movimiento);
     }
 }
        public static MovimientoDto FindMovimiento(string desc)
        {
            var movimiento = ActiveRecordBase<MovimientoDto>
                .FindAllByProperty("Descripccion", desc);

            if (movimiento.Length > 0)
                return movimiento[0];

            var nuevo = new MovimientoDto(desc);
            nuevo.Save();
            return nuevo;
        }
Esempio n. 5
0
 private static Movimientos CrearEntidad(MovimientoDto dto)
 {
     return(new Movimientos
     {
         Id = dto.Id,
         Bodega = BodegaMapeo.Convertir(dto.Bodega),
         Producto = ProductoMapeo.Convertir(dto.Producto),
         FechaMovimiento = dto.FechaMovimiento,
         Cantidad = dto.Cantidad,
         Tipo = dto.Tipo,
         Valor = dto.Valor
     });
 }
        public static MovimientoDto FindMovimiento(string desc)
        {
            var movimiento = ActiveRecordBase <MovimientoDto>
                             .FindAllByProperty("Descripccion", desc);

            if (movimiento.Length > 0)
            {
                return(movimiento[0]);
            }

            var nuevo = new MovimientoDto(desc);

            nuevo.Save();
            return(nuevo);
        }
        public void NuevoMovimiento(MovimientoDto movimientoEgreso)
        {
            var movimiento = new Movimiento
            {
                Descripcion        = movimientoEgreso.Descripcion,
                EmpleadoId         = movimientoEgreso.EmpleadoId,
                FechaActualizacion = movimientoEgreso.FechaActualizacion,
                TipoMovimiento     = movimientoEgreso.TipoMovimiento,
                Monto = movimientoEgreso.Monto
            };

            _movimientoServicio.Agregar(movimiento);

            _movimientoServicio.Guardar();
        }
 public async Task Modificar(MovimientoDto dto)
 {
     using (var context = new DataContext())
     {
         var movimiento = context.Movimientos.FirstOrDefault(x => x.Id == dto.Id);
         movimiento.ComprobanteId   = dto.ComprobanteId;
         movimiento.CajaId          = dto.CajaId;
         movimiento.UsuarioId       = dto.UsuarioId;
         movimiento.FechaMovimiento = dto.FechaMovimiento;
         movimiento.Monto           = dto.Monto;
         movimiento.Descripcion     = dto.Descripcion;
         movimiento.TipoMovimento   = dto.TipoMovimento;
         await _movimientoRepositorio.Update(movimiento);
     }
 }
Esempio n. 9
0
        public void GenerarDetalleCaja(MovimientoDto movimiento)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var nuevoDetalleCaja = new AccesoDatos.DetalleCaja()
                {
                    CajaId   = movimiento.CajaId,
                    Monto    = movimiento.Monto,
                    TipoPago = TipoPago.Efectivo
                };

                context.DetalleCajas.Add(nuevoDetalleCaja);

                context.SaveChanges();
            }
        }
        public void PagoCuota(CuotaDto cuota, FacturaDto factura, ClienteDto cliente)
        {
            var Cuota = new CuotaDto()
            {
                CuotaVigente     = cuota.CuotaVigente,
                CuotaVencimiento = cuota.CuotaVigente.AddMonths(cuota.Cantidad),
                Cantidad         = cuota.Cantidad,
                Estado           = Estado.Vigente,
                ClienteId        = cliente.Id
            };

            var Factura = new FacturaDto()
            {
                FechaOperacion = DateTime.Now,
                SubTotal       = factura.SubTotal,
                Total          = factura.SubTotal
            };

            var cuotaId = _cuotaServicio.CuotaVigente(Cuota);

            var facturaId = _facturaServicio.Agregar(Factura);

            using (var context = new Context())
            {
                context.Pago_Factura.Add(new Pago_Factura()
                {
                    FacturaId  = facturaId.Id,
                    CuotaId    = cuotaId.Id,
                    ClienteId  = SessionActiva.ClienteId,
                    EmpleadoId = SessionActiva.EmpleadoId
                });
                context.SaveChanges();
            }

            var movimiento = new MovimientoDto()
            {
                Descripcion        = "Pago Cuota",
                EmpleadoId         = SessionActiva.EmpleadoId,
                FechaActualizacion = DateTime.Now,
                TipoMovimiento     = TipoMovimiento.Ingreso,
                Monto = factura.SubTotal
            };

            _movimientoServicio.NuevoMovimiento(movimiento);
        }
Esempio n. 11
0
 public void GenerarMovimiento(MovimientoDto movimiento)
 {
     using (var context = new ModeloXCommerceContainer())
     {
         var movi = context.Movimientos.Add(new AccesoDatos.Movimiento
         {
             CajaId        = movimiento.CajaId,
             ComprobanteId = movimiento.ComprobanteId,
             Descripcion   = movimiento.Descripcion,
             Fecha         = movimiento.Fecha,
             Monto         = movimiento.Monto,
             UsuarioId     = movimiento.UsuarioId,
             TipoMovimento = movimiento.TipoMovimento
         });
         context.Movimientos.Add(movi);
         context.SaveChanges();
     }
 }
        public async Task <MovimientoDto> GuardarMovimiento(MovimientoDto movimiento)
        {
            Movimientos movimientoGuardar = new Movimientos
            {
                Id              = movimiento.Id,
                BodegaId        = movimiento.Bodega.Id,
                ProductoId      = movimiento.Producto.Id,
                FechaMovimiento = movimiento.FechaMovimiento,
                Cantidad        = movimiento.Cantidad,
                Tipo            = movimiento.Tipo,
                Valor           = movimiento.Valor
            };

            _datosMock.listaMovimientos.Add(movimientoGuardar);
            Movimientos movimientoCreado = _datosMock.listaMovimientos.FirstOrDefault(f => f.Id == movimiento.Id);

            movimientoCreado.Bodega   = BodegaMapeo.Convertir(movimiento.Bodega);
            movimientoCreado.Producto = ProductoMapeo.Convertir(movimiento.Producto);
            return(await Task.FromResult(MovimientoMapeo.Convertir(movimientoCreado)));
        }
        public async Task <MovimientoDto> GuardarMovimiento(MovimientoDto movimiento)
        {
            Movimientos movimientoGuardar = new Movimientos
            {
                Id              = movimiento.Id,
                BodegaId        = movimiento.Bodega.Id,
                ProductoId      = movimiento.Producto.Id,
                FechaMovimiento = movimiento.FechaMovimiento,
                Cantidad        = movimiento.Cantidad,
                Tipo            = movimiento.Tipo,
                Valor           = movimiento.Valor
            };

            _contexto.Movimientos.Add(movimientoGuardar);
            await _contexto.SaveChangesAsync();

            Movimientos movimientoCreado = await _contexto.Movimientos.FirstOrDefaultAsync(f => f.Id == movimiento.Id);

            return(MovimientoMapeo.Convertir(movimientoCreado));
        }
        public long Insertar(MovimientoDto dto)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var nuevoMoviento = new AccesoDatos.Movimiento
                {
                    CajaId        = dto.CajaId,
                    ComprobanteId = dto.ComprobanteId,
                    TipoMovimento = dto.TipoMovimiento,
                    UsuarioId     = (long)dto.UsuarioId,
                    Monto         = dto.Monto,
                    Fecha         = dto.Fecha,
                    Descripcion   = dto.Descripcion
                };

                context.Movimientos.Add(nuevoMoviento);

                context.SaveChanges();

                return(nuevoMoviento.Id);
            }
        }
        public void Modificar(MovimientoDto dto)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var movimientoModificar = context.Movimientos
                                          .FirstOrDefault(x => x.Id == dto.Id);

                if (movimientoModificar == null)
                {
                    throw new Exception("No se encontro el Movimiento");
                }

                movimientoModificar.CajaId        = CajaAbiertaId;
                movimientoModificar.ComprobanteId = dto.ComprobanteId;
                movimientoModificar.TipoMovimento = dto.TipoMovimiento;
                movimientoModificar.UsuarioId     = (long)dto.UsuarioId;
                movimientoModificar.Monto         = dto.Monto;
                movimientoModificar.Fecha         = dto.Fecha;
                movimientoModificar.Descripcion   = dto.Descripcion;

                context.SaveChanges();
            }
        }
Esempio n. 16
0
 public static Movimientos Convertir(MovimientoDto entidad)
 {
     return(CrearEntidad(entidad));
 }
        private void BtnCobrar_Click(object sender, EventArgs e)
        {
            if (dgvGrilla.DataSource == null)
            {
                MessageBox.Show(@"No hay Productos Cargados.",
                                @"Atención",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                return;
            }

            if ((TipoFormaPago)cmbFormaPago.SelectedItem == TipoFormaPago.Efectivo)
            {
                var ultimoComprobante = _comprobanteKioskoServicio.UltimoComprobanteId();

                var caja = _cajaServicio.Obtener(CajaAbiertaId).Id;

                var ClienteId = _clienteServicio.ObtenerPorDni(txtClienteDni.Text).Id;

                var fecha = dtpFecha.Value;

                var comprobante = new ComprobanteKioskoDto
                {
                    Numero          = (int)ultimoComprobante,
                    Fecha           = fecha,
                    SubTotal        = nudSubTotal.Value,
                    Descuento       = nudDescuento.Value,
                    Total           = nudTotal.Value,
                    UsuarioId       = (long)UsuarioLogueadoId,
                    ClienteId       = ClienteId,
                    TipoComprobante = (TipoComprobante)cmbTipoComprobante.SelectedItem,
                    Items           = _listaDetalles
                };

                _comprobanteKioskoServicio.GenerarComprobante(comprobante, caja);


                var traerComprobante = _comprobanteKioskoServicio.traerComprobantePorNumero(comprobante.Numero);


                var nuevoMovimiento = new MovimientoDto
                {
                    CajaId         = caja,
                    ComprobanteId  = traerComprobante.Id,
                    TipoMovimiento = TipoMovimiento.Ingreso,
                    UsuarioId      = UsuarioLogueadoId,
                    Monto          = nudTotal.Value,
                    Fecha          = dtpFecha.Value,
                    Descripcion    = "FAC_" + cmbTipoComprobante.Text + "_" +
                                     $"{_comprobanteKioskoServicio.UltimoComprobanteId()}" + "_" +
                                     DateTime.Now.ToShortDateString().Replace("/", string.Empty) + "_KIOSCO"
                };

                _movimientoServicio.Insertar(nuevoMovimiento);

                _cajaServicio.RealizarMovimiento(nuevoMovimiento);

                foreach (var items in _comprobanteKioskoDto.Items)
                {
                    //descontar stock
                    _articuloServicio.DescontarStock(items.ProductoId, items.Cantidad);
                }

                MessageBox.Show("Facturacion Realizada Correctamente",
                                "Informacion",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);

                LimpiarFormulario();
            }
        }
        public async Task <Resultado <MovimientoDto> > CargarProducto(MovimientoRequest movimiento)
        {
            List <string> errores = new List <string>();
            Guid          bodegaId;
            Guid          productoId;
            BodegaDto     bodega   = null;
            ProductoDto   producto = null;

            if (Guid.TryParse(movimiento.BodegaId, out bodegaId))
            {
                bodega = await _repositorioBodega.BuscarBodega(bodegaId);

                if (bodega == null)
                {
                    errores.Add($"La bodega con Id {movimiento.BodegaId} no esta en el sistema");
                }
            }
            else
            {
                errores.Add("La Id de la bodega no tiene el formato correcto");
            }
            if (Guid.TryParse(movimiento.ProductoId, out productoId))
            {
                producto = await _repositorioProducto.BuscarProducto(productoId);

                if (producto == null)
                {
                    errores.Add($"El producto con Id {movimiento.ProductoId} no esta en el sistema");
                }
            }
            else
            {
                errores.Add("La Id del producto no tiene el formato correcto");
            }

            if (movimiento.Cantidad <= 0)
            {
                errores.Add("La cantidad debe ser mayor a 0");
            }

            if (movimiento.Valor <= 0)
            {
                errores.Add("El valor debe ser mayor a 0");
            }

            if (errores.Count > 0)
            {
                return(Resultado <MovimientoDto> .Failure(errores));
            }

            InventarioDto inventario = await _repositorioInventario.ObtenerInventario(bodega.Id, producto.Id);

            int capacidadDisponible = 0;

            if (inventario != null)
            {
                capacidadDisponible = bodega.CapacidadMaxima - inventario.Cantidad;
            }
            else
            {
                capacidadDisponible = bodega.CapacidadMaxima;
            }

            if (movimiento.Cantidad > capacidadDisponible)
            {
                return(Resultado <MovimientoDto> .Failure("La cantidad de producto a ingresar supera el maximo de productos totales permitido en la bodega"));
            }

            MovimientoDto movimientoCrear = new MovimientoDto
            {
                Id = Guid.NewGuid(),
                FechaMovimiento = DateTime.Now,
                Bodega          = bodega,
                Producto        = producto,
                Cantidad        = movimiento.Cantidad,
                Valor           = movimiento.Valor,
                Tipo            = TipoMovimiento.Ingreso
            };

            MovimientoDto movimientoCreado = await _repositorioInventario.GuardarMovimiento(movimientoCrear);

            if (movimientoCreado != null)
            {
                await _repositorioInventario.ActualizarInvetario(movimientoCreado);

                return(Resultado <MovimientoDto> .Success(movimientoCreado));
            }
            else
            {
                errores.Add("Se ha presnetado un problema al guardar el movimiento");
                return(Resultado <MovimientoDto> .Failure(errores));
            }
        }
        private void BtnCobrar_Click_1(object sender, EventArgs e)
        {
            var _cliente = _clienteServicio.ObtenerPorDni("99999999");


            //---------------------------------------------------------//

            //---------------------------------------------------------//

            var ObtenerComprobante = _comprobanteSalonServicio.ObtenerComprobantePorId(_comprobanteId);

            var FacturacionMesa = new ComprobanteCierreDto
            {
                Id        = ObtenerComprobante.ComprobanteId,
                MesaId    = ObtenerComprobante.MesaId,
                UsuarioId = UsuarioLogueadoId,
                ClienteId = _cliente.Id,
                Descuento = nudDescuento.Value,

                Fecha             = dtpFechaFactura.Value,
                Numero            = (int)nudNumero.Value,
                TipoDeComprobante = ((TipoComprobante)cmbTipoComprobante.SelectedItem),
                EstadoComprobante = EstadoComprobanteSalon.Enviado,
                Total             = nudTotal.Value,
                SubTotal          = nudTotal.Value,
                MozoId            = ObtenerComprobante.MozoId,
                Comensales        = ObtenerComprobante.Comensales,
            };

            var Cliente = _clienteServicio.ObtenerPorDni(txtDni.Text);

            if (Cliente == null)
            {
                MessageBox.Show("Por favor seleccione un medio de pago o un cliente valido", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            txtApyNom.Text       = Cliente.ApyNom;
            nudMontoActual.Value = Cliente.MontoMaximoCtaCte;

            if (nudTotal.Value > 0)
            {
                if (RadioCuentaCorriente.Checked)
                {
                    Cliente.MontoDeudaCtaCte += nudTotal.Value;
                    nudMontoRestar.Value      = nudTotal.Value;

                    if (Cliente.MontoDeudaCtaCte <= Cliente.MontoMaximoCtaCte)
                    {
                        RestanteCuentaCorriente.Value = Cliente.MontoMaximoCtaCte - nudTotal.Value;

                        var ClienteModificar = new ClienteDto()
                        {
                            Id = Cliente.Id,
                            MontoDeudaCtaCte  = Cliente.MontoDeudaCtaCte,
                            MontoMaximoCtaCte = Cliente.MontoMaximoCtaCte
                        };

                        _clienteServicio.ModificarCuentaCorriente(ClienteModificar);

                        _comprobanteSalonServicio.GenerarComprobanteCierre(FacturacionMesa);

                        var nuevoMovimiento = new MovimientoDto()
                        {
                            CajaId         = CajaAbiertaId,
                            ComprobanteId  = FacturacionMesa.Id,
                            TipoMovimiento = TipoMovimiento.Ingreso,
                            UsuarioId      = FacturacionMesa.UsuarioId,
                            Monto          = FacturacionMesa.Total,
                            Fecha          = FacturacionMesa.Fecha,
                            Descripcion    = "FAC_" + FacturacionMesa.TipoDeComprobante + "_" + FacturacionMesa.Numero + "_" +
                                             FacturacionMesa.Fecha.ToShortDateString().Replace("/", string.Empty) + "_SALON"
                        };
                        _movimientoServicio.Insertar(nuevoMovimiento);
                        _cajaServicio.ActualizarMontoDelSistema(nuevoMovimiento.Monto, nuevoMovimiento.CajaId);

                        var nuevoDetalle = new DetalleCajaDto()
                        {
                            CajaId    = CajaAbiertaId,
                            Monto     = FacturacionMesa.Total,
                            FormaPago = TipoPago.CtaCte
                        };

                        _detalleCajaServicio.InsertarDetalle(nuevoDetalle);

                        MessageBox.Show(@"Operacion realizada con Exito.", @"Atención", MessageBoxButtons.OK,
                                        MessageBoxIcon.Exclamation);


                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show(@"Monto Cuenta Corriente Insuficiente , seleccione otra forma de pago", @"Atención", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);

                        return;
                    }
                }
                else
                {
                    _comprobanteSalonServicio.GenerarComprobanteCierre(FacturacionMesa);

                    var nuevoMovimiento = new MovimientoDto()
                    {
                        CajaId         = CajaAbiertaId,
                        ComprobanteId  = FacturacionMesa.Id,
                        TipoMovimiento = TipoMovimiento.Ingreso,
                        UsuarioId      = FacturacionMesa.UsuarioId,
                        Monto          = FacturacionMesa.Total,
                        Fecha          = FacturacionMesa.Fecha,
                        Descripcion    = "FAC_" + FacturacionMesa.TipoDeComprobante + "_" + FacturacionMesa.Numero + "_" +
                                         FacturacionMesa.Fecha.ToShortDateString().Replace("/", string.Empty) + "_SALON"
                    };
                    _movimientoServicio.Insertar(nuevoMovimiento);
                    _cajaServicio.ActualizarMontoDelSistema(nuevoMovimiento.Monto, nuevoMovimiento.CajaId);


                    var nuevoDetalle = new DetalleCajaDto()
                    {
                        CajaId    = CajaAbiertaId,
                        Monto     = FacturacionMesa.Total,
                        FormaPago = TipoPago.Efectivo
                    };

                    _detalleCajaServicio.InsertarDetalle(nuevoDetalle);

                    MessageBox.Show(@"Operacion realizada con Exito.", @"Atención", MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);

                    _mesaServicio.CambiarEstado(_mesaId, EstadoMesa.Cerrada);

                    this.Close();
                }
            }
            else
            {
                MessageBox.Show("Por favor ingrese un articulo.", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                _mesaServicio.CambiarEstado(_mesaId, EstadoMesa.Abierta);
            }
        }