Beispiel #1
0
        public async Task <IActionResult> PutFacturaCompras(int id, FacturaCompras facturaCompras)
        {
            if (id != facturaCompras.Id)
            {
                return(BadRequest());
            }

            _context.Entry(facturaCompras).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FacturaComprasExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Beispiel #2
0
        public void GuardarFactura(FacturaCompras factura)
        {
            try
            {
                var xml = Utiles.toXML(factura);


                AccesoDatos.FacturaComprasDato.GuardarFactura(xml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #3
0
        public FacturaCompras ObtenerContadorFacturas()
        {
            FacturaCompras factura = new FacturaCompras();

            DataSet ds = AccesoDatos.FacturaComprasDato.seleccionarContadorFacturas();


            foreach (DataRow row in ds.Tables[0].Rows)
            {
                factura.Id = Convert.ToInt32(row["CONTADOR"].ToString());
            }

            return(factura);
        }
Beispiel #4
0
        public string ObtenerVerificacionNumeroFactura(int numeroFactura, string idProveedor)
        {
            FacturaCompras factura = new FacturaCompras();

            DataSet ds = AccesoDatos.FacturaComprasDato.seleccionarValidarNumeroFactura(numeroFactura, idProveedor);

            string resultado = "";

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                resultado = row["RESULTADO"].ToString();
            }

            return(resultado);
        }
        public async Task <ActionResult <OrdenPago> > DeleteOrdenPago(int id)
        {
            var ordenPago = await _context.ordenPago.Include(x => x.Imputaciones).Include(x => x.movimientosCaja).FirstOrDefaultAsync(x => x.Id == id);

            if (ordenPago == null)
            {
                return(NotFound());
            }

            foreach (MovimientoCaja movimientoCaja in ordenPago.movimientosCaja)
            {
                Caja caja = await _context.caja.FindAsync(movimientoCaja.CajaId);

                caja.saldo += movimientoCaja.totalMovimiento;
                _context.Entry(caja).State           = EntityState.Modified;
                _context.Entry(movimientoCaja).State = EntityState.Deleted;
            }
            foreach (ImputacionComprobantesCompra imputacion in ordenPago.Imputaciones)
            {
                FacturaCompras factura = await _context.facturaCompra.FindAsync(imputacion.FacturaComprasId);

                factura.totalCancelado          -= imputacion.totalImputado;
                factura.EstadoFacturaId          = 1;
                _context.Entry(factura).State    = EntityState.Modified;
                _context.Entry(imputacion).State = EntityState.Deleted;
            }

            Proveedor proveedor = await _context.Proveedor.FindAsync(ordenPago.ProveedorId);

            proveedor.saldoCC -= ordenPago.totalComprobante;
            _context.Entry(proveedor).State = EntityState.Modified;
            _context.ordenPago.Remove(ordenPago);
            await _context.SaveChangesAsync();

            return(ordenPago);
        }
        private void btnFacturar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FacturaCompras       factura = new FacturaCompras();
                FacturaComprasLogica logica  = new FacturaComprasLogica();



                Usuario usuarioGlobal = new Usuario();

                Proveedor proveedor = (Proveedor)cboProveedores.SelectedItem;

                usuarioGlobal = (Usuario)App.Current.Properties["usuarioSesion"];

                if (ValidacionesFacturar() == true)
                {
                    txtTextBlockDialogo.Text = "Debe completar todos los campos solicitados";
                    dialogoMENS.IsOpen       = true;
                    return;
                }
                else
                {
                    var error = logica.ObtenerVerificacionNumeroFactura(Convert.ToInt32(txtNumeroFactura.Text), proveedor.Id);

                    if (error == "ERROR")
                    {
                        txtTextBlockDialogo.Text = "No puedes ingresar el mismo numero de factura";
                        dialogoMENS.IsOpen       = true;
                        return;
                    }

                    var fecha1 = DateTime.Now;

                    var hora     = fecha1.Hour;
                    var minutos  = fecha1.Minute;
                    var segundos = fecha1.Second;

                    var fechaNueva  = fecha.SelectedDate.Value;
                    var fechaNueva1 = new DateTime(fechaNueva.Year, fechaNueva.Month, fechaNueva.Day, hora, minutos, segundos);
                    factura.Id          = Convert.ToInt32(txtNumeroFactura.Text);
                    factura.Usuario     = usuarioGlobal;
                    factura.IdProveedor = proveedor.Id;
                    // factura.Fecha = fecha.SelectedDate.Value.ToLocalTime();
                    factura.Fecha    = fechaNueva1;
                    factura.Total    = Convert.ToDouble(txtSubTotal.Text);
                    factura.TipoPago = cboTipoPago.Text;

                    foreach (var item in dataGridLineaDetalle.ItemsSource as List <LineaDetalleCompras> )
                    {
                        item.IdFactua = factura.Id;
                    }
                    factura.LineasDetalleCompras = dataGridLineaDetalle.ItemsSource as List <LineaDetalleCompras>;

                    logica.GuardarFactura(factura);


                    txtTextBlockDialogo.Text = "Registro Procesado";
                    dialogoMENS.IsOpen       = true;

                    factura         = new FacturaCompras();
                    proveedor       = new Proveedor();
                    listaInventario = new List <Inventario>();
                    listaDetalle    = new List <LineaDetalleCompras>();

                    Limpiar();
                }
            }
            catch (Exception)
            {
                txtTextBlockDialogo.Text = "Ocurrio un error al registrar la factura";
                dialogoMENS.IsOpen       = true;
                return;
            }
        }
Beispiel #7
0
        public async Task <ActionResult <FacturaCompras> > PostFacturaCompras(FacturaCompras facturaCompras)
        {
            try
            {
                //CREAMOS LA FACTURA
                facturaCompras.Proveedor = null;
                facturaCompras.Deposito  = null;
                facturaCompras.detallesFactura.ForEach(x => x.ProductoPresentacion = null);
                facturaCompras.TipoComprobante = null;

                facturaCompras.EstadoFactura   = null;
                facturaCompras.EstadoFacturaId = (await _context.estadoFactura.FirstOrDefaultAsync(x => x.nombre == "PEN")).Id;


                //CREAMOS EL CÓDIGO.
                int cantidadDeFacturas = await _context.facturaCompra.IgnoreQueryFilters()
                                         .Where(x => x.TipoComprobanteId == facturaCompras.TipoComprobanteId && x.DepositoId == facturaCompras.DepositoId)
                                         .CountAsync() + 1;

                int    aux            = 8 - cantidadDeFacturas.ToString().Length;
                string cerosDeRelleno = "";
                for (int i = 0; i < aux; i++)
                {
                    cerosDeRelleno += "0";
                }
                facturaCompras.codigo = $"0000{facturaCompras.DepositoId}-{cerosDeRelleno}{cantidadDeFacturas}";

                _context.facturaCompra.Add(facturaCompras);
                await _context.SaveChangesAsync();

                // BUSCAMOS LA FACTURA EN LA BASE DE DATOS
                FacturaCompras facturaComprasDb = await _context.facturaCompra
                                                  .Include(x => x.TipoComprobante)
                                                  .Include(x => x.detallesFactura)
                                                  .Include(x => x.TipoComprobante)
                                                  .FirstOrDefaultAsync(x => x.Id == facturaCompras.Id);

                // Saldo del cliente.
                Proveedor proveedorDb = await _context.Proveedor.FindAsync(facturaComprasDb.ProveedorId);

                if (facturaComprasDb.TipoComprobante.nombre == "FAC" || facturaComprasDb.TipoComprobante.nombre == "ND")
                {
                    proveedorDb.saldoCC -= facturaComprasDb.totalComprobante;
                }
                else if (facturaComprasDb.TipoComprobante.nombre == "NC")
                {
                    proveedorDb.saldoCC += facturaComprasDb.totalComprobante;
                }
                facturaComprasDb.Proveedor        = null;
                _context.Entry(proveedorDb).State = EntityState.Modified;

                //CREACION DE MOVIMIENTOS DE STOCK.
                foreach (DetalleFacturaCompras detalle in facturaComprasDb.detallesFactura)
                {
                    bool existeInventario = false;

                    Inventario inventarioDb = _context.inventario.Include(x => x.MovimientosInventario).FirstOrDefault(x => x.DepositoId == facturaComprasDb.DepositoId && x.ProductoPresentacionId == detalle.ProductoPresentacionId);
                    if (inventarioDb == null)
                    {
                        inventarioDb = new Inventario {
                            DepositoId = facturaComprasDb.DepositoId, ProductoPresentacionId = detalle.ProductoPresentacionId, MovimientosInventario = new List <MovimientoInventario>()
                        };
                        _context.inventario.Add(inventarioDb);
                        existeInventario = false;
                    }
                    else
                    {
                        existeInventario = true;
                    }
                    //

                    if (facturaComprasDb.TipoComprobante.nombre == "NC")
                    {
                        inventarioDb.cantidadUnidadesEnExistencia -= detalle.cantidad;
                    }
                    else
                    {
                        inventarioDb.cantidadUnidadesEnExistencia += detalle.cantidad;
                    }
                    _context.Entry(inventarioDb).State = EntityState.Modified;
                    inventarioDb.MovimientosInventario.Add(new MovimientoInventario
                    {
                        cantidadUnidadesMovida = detalle.cantidad,
                        entra       = (facturaComprasDb.TipoComprobante.nombre == "NC") ? false : true,
                        sale        = (!(facturaComprasDb.TipoComprobante.nombre == "NC")) ? false : true,
                        descripcion = $"<span>[COMPRA] <a href='/BackOffice/Compras/FacturaCompras/{facturaComprasDb.Id}'>{((facturaComprasDb.TipoComprobante.nombre == "NC") ? "NC" : (facturaComprasDb.TipoComprobante.nombre == "FAC" ? "FAC" : "ND"))} {facturaComprasDb.codigo}</a></span>",
                    });

                    if (existeInventario)
                    {
                        _context.Entry(inventarioDb).State = EntityState.Modified;
                    }
                    else
                    {
                        _context.Entry(inventarioDb).State = EntityState.Added;
                    }
                }

                _context.Entry(facturaCompras).State = EntityState.Unchanged;
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetFactura", new { id = facturaComprasDb.Id }, facturaComprasDb));
            }
            catch (Exception ex)
            {
                throw;
            }
        }