public ActionResult DeleteConfirmed(int id)
        {
            Factura_Detalle factura_Detalle = db.Factura_Detalles.Find(id);

            db.Factura_Detalles.Remove(factura_Detalle);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "FacturaDetalleId,VehiculoId,FacturaId,PrecioUnidad,Cantidad,SubTotal")] Factura_Detalle factura_Detalle)
 {
     if (ModelState.IsValid)
     {
         db.Entry(factura_Detalle).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.FacturaId  = new SelectList(db.Facturas, "FacturaId", "MetodoPago", factura_Detalle.FacturaId);
     ViewBag.VehiculoId = new SelectList(db.Vehiculoes, "VehiculoId", "Color", factura_Detalle.VehiculoId);
     return(View(factura_Detalle));
 }
        // GET: Factura_Detalle/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Factura_Detalle factura_Detalle = db.Factura_Detalles.Find(id);

            if (factura_Detalle == null)
            {
                return(HttpNotFound());
            }
            return(View(factura_Detalle));
        }
        public ActionResult <Factura_Detalle> Put(int id, [FromBody] Factura_Detalle facturaDetalle)
        {
            if (facturaDetalle == null)
            {
                return(NotFound());
            }


            var resultado = _facturaDetalleRepositorio.Actualizar(facturaDetalle);



            return(facturaDetalle);
        }
        // GET: Factura_Detalle/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Factura_Detalle factura_Detalle = db.Factura_Detalles.Find(id);

            if (factura_Detalle == null)
            {
                return(HttpNotFound());
            }
            ViewBag.FacturaId  = new SelectList(db.Facturas, "FacturaId", "MetodoPago", factura_Detalle.FacturaId);
            ViewBag.VehiculoId = new SelectList(db.Vehiculoes, "VehiculoId", "Color", factura_Detalle.VehiculoId);
            return(View(factura_Detalle));
        }
        public ActionResult <Factura_Detalle> Post(Factura_Detalle facturaDetalle)
        {
            try
            {
                var nuevaFacturaDetalle = _facturaDetalleRepositorio.Insertar(facturaDetalle);
                if (nuevaFacturaDetalle == null)
                {
                    return(BadRequest());
                }

                return(CreatedAtAction(nameof(Post), new { idFactura = nuevaFacturaDetalle.IdFactura, idProducto = nuevaFacturaDetalle.IdProducto }, nuevaFacturaDetalle));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error en {nameof(Post)}: {ex.Message}");
                return(BadRequest());
            }
        }
        private void EliminarDeTabla(object sender, RoutedEventArgs e)
        {
            try
            {
                Button btn = sender as Button;
                if (btn == null)
                {
                    return;
                }

                Factura_Detalle item = btn.CommandParameter as Factura_Detalle;
                FacturaDetalle.Remove(item);
                CalcularTotales();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrio un error al eliminar el producto de la lista", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                this.LogError(ex);
            }
        }
예제 #8
0
        //Método para guardar mediante AJAX el detalle de la factura
        public JsonResult CrearFactura(Factura_Detalle model)
        {
            var rm = new ResponseModel();

            if (ModelState.IsValid)
            {
                rm = model.Guardar();

                if (rm.response)
                {
                    rm.href = Url.Content("~/home/NuevaFactura/" + model.Factura_EncabezadoId);
                }
            }
            else
            {
                rm.SetResponse(false, "El mínimo de atículos es: 1");
            }

            return(Json(rm));
        }
예제 #9
0
        public Factura_Detalle Insertar(Factura_Detalle entidad)
        {
            try
            {
                int res;
                using (OleDbConnection connection = new OleDbConnection(_conn))
                {
                    using (OleDbCommand command = new OleDbCommand())
                    {
                        connection.Open();

                        command.CommandText = $"Insertar_Factura_Detalle";

                        command.CommandType = System.Data.CommandType.StoredProcedure;

                        command.Parameters.Add("@IdFactura", OleDbType.Integer).Value     = entidad.IdFactura;
                        command.Parameters.Add("@IdProducto", OleDbType.Integer).Value    = entidad.IdProducto;
                        command.Parameters.Add("@Cantidad", OleDbType.Integer).Value      = entidad.Cantidad;
                        command.Parameters.Add("@Precio_Unidad", OleDbType.Decimal).Value = entidad.Precio_Unidad;

                        command.Connection = connection;


                        res = command.ExecuteNonQuery();
                        connection.Close();
                    }
                }
                if (res > 0)
                {
                    return(entidad);
                }
                return(null);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        private void AnularFactura(object sender, RoutedEventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txt_MotivoAnulacion.Text))
                {
                    MessageBox.Show("Favor ingresar el motivo de la aunlacion antes de continuar", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }

                if (MessageBox.Show("Esta seguro de anular esta factura?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
                {
                    return;
                }

                int      casaMatriz            = 1;
                int      PuntoVenta            = 1;
                DateTime FechaEmicionDocumento = DateTime.Now;


                Factura Anulacion = new Factura()
                {
                    Codigo_Moneda                = "CRC",
                    CondicionVenta               = fac.CondicionVenta,
                    Email_Enviado                = false,
                    CasaMatriz                   = casaMatriz,
                    PuntoVenta                   = PuntoVenta,
                    Emisor_CorreoElectronico     = fac.Emisor_CorreoElectronico,
                    Emisor_Identificacion_Numero = fac.Emisor_Identificacion_Numero,
                    Emisor_Identificacion_Tipo   = fac.Emisor_Identificacion_Tipo,
                    Emisor_Nombre                = fac.Emisor_Nombre,
                    Emisor_NombreComercial       = fac.Emisor_NombreComercial,
                    Emisor_Telefono_Codigo       = fac.Emisor_Telefono_Codigo,
                    Emisor_Telefono_Numero       = fac.Emisor_Telefono_Numero,
                    Emisor_Ubicacion_Barrio      = fac.Emisor_Ubicacion_Barrio,
                    Emisor_Ubicacion_Canton      = fac.Emisor_Ubicacion_Canton,
                    Emisor_Ubicacion_Distrito    = fac.Emisor_Ubicacion_Distrito,
                    Emisor_Ubicacion_Provincia   = fac.Emisor_Ubicacion_Provincia,
                    Emisor_Ubicacion_OtrasSenas  = fac.Emisor_Ubicacion_OtrasSenas,
                    Fecha_Emision_Documento      = FechaEmicionDocumento,
                    Estado                         = (int)EstadoComprobante.Enviado,
                    Id_Contribuyente               = fac.Id_Contribuyente,
                    Id_TipoDocumento               = (int)Tipo_documento.Nota_de_crédito_electrónica,
                    MedioPago                      = fac.MedioPago,
                    Receptor_CorreoElectronico     = fac.Receptor_CorreoElectronico,
                    Receptor_Identificacion_Numero = fac.Receptor_Identificacion_Numero,
                    Receptor_Identificacion_Tipo   = fac.Receptor_Identificacion_Tipo,
                    Receptor_Nombre                = fac.Receptor_Nombre,
                    Receptor_NombreComercial       = fac.Receptor_NombreComercial,
                    Receptor_Telefono_Codigo       = fac.Receptor_Telefono_Codigo,
                    Receptor_Telefono_Numero       = fac.Receptor_Telefono_Numero,
                    Receptor_Ubicacion_Barrio      = fac.Receptor_Ubicacion_Barrio,
                    Receptor_Ubicacion_Canton      = fac.Receptor_Ubicacion_Canton,
                    Receptor_Ubicacion_Distrito    = fac.Receptor_Ubicacion_Distrito,
                    Receptor_Ubicacion_OtrasSenas  = fac.Receptor_Ubicacion_OtrasSenas,
                    Receptor_Ubicacion_Provincia   = fac.Receptor_Ubicacion_Provincia,

                    TotalMercanciasExentas  = fac.TotalMercanciasExentas,
                    TotalMercanciasGravadas = fac.TotalMercanciasGravadas,
                    TotalServExentos        = fac.TotalServExentos,
                    TotalServGravados       = fac.TotalServGravados,
                    TotalImpuesto           = fac.TotalImpuesto,
                    TotalDescuentos         = fac.TotalDescuentos,
                    TotalGravado            = fac.TotalGravado,
                    TotalExento             = fac.TotalExento,
                    TotalVenta       = fac.TotalVenta,
                    TotalVentaNeta   = fac.TotalVentaNeta,
                    TotalComprobante = fac.TotalComprobante,

                    InformacionReferencia_IdFactura    = fac.Id_Factura,
                    InformacionReferencia_Codigo       = 1,
                    InformacionReferencia_FechaEmision = FechaEmicionDocumento,
                    InformacionReferencia_Numero       = fac.Clave,
                    InformacionReferencia_Razon        = txt_MotivoAnulacion.Text
                };


                Contribuyente_Consecutivos Consecutivo;
                using (db_FacturaDigital db = new db_FacturaDigital())
                {
                    List <Factura_Detalle> detalle = new List <Factura_Detalle>();
                    foreach (Factura_Detalle item in fac.Factura_Detalle)
                    {
                        Factura_Detalle newItem = (Factura_Detalle)item.Clone();
                        newItem.Factura = null;
                        List <Factura_Detalle_Impuesto> newimpuestos = new List <Factura_Detalle_Impuesto>();
                        foreach (Factura_Detalle_Impuesto detalleimpuesto in db.Factura_Detalle_Impuesto.AsNoTracking().Where(q => q.Id_Factura_Detalle == newItem.Id_Factura_Detalle))
                        {
                            Factura_Detalle_Impuesto newDetalleimpuesto = (Factura_Detalle_Impuesto)detalleimpuesto.Clone();
                            newDetalleimpuesto.Factura_Detalle = null;
                            newimpuestos.Add(newDetalleimpuesto);
                        }

                        if (newimpuestos.Count > 0)
                        {
                            newItem.Factura_Detalle_Impuesto = newimpuestos;
                        }

                        detalle.Add(newItem);
                    }

                    Anulacion.Factura_Detalle = detalle;

                    Consecutivo = db.Contribuyente_Consecutivos.First(q => q.Id_Contribuyente == RecursosSistema.Contribuyente.Id_Contribuyente);
                    Anulacion.NumeroConsecutivo = Consecutivo.Consecutivo_NotasCredito;

                    string ClaveHacienda = new GeneradorDeClavesHacienda(new GeneradorDeClavesHacienda()
                    {
                        ConsecutivoHacienda = new ConsecutivoHacienda(new ConsecutivoHacienda()
                        {
                            TipoDocumento         = Tipo_documento.Nota_de_crédito_electrónica,
                            NumeracionConsecutiva = Consecutivo.Consecutivo_NotasCredito,
                            CasaMatriz            = casaMatriz,
                            PuntoVenta            = PuntoVenta
                        }),
                        FechaEmicion = FechaEmicionDocumento,
                        Identificacion_Contribuyente = Convert.ToInt64(RecursosSistema.Contribuyente.Identificacion_Numero),
                    }).ToString();

                    Anulacion.Clave = ClaveHacienda;
                    db.Factura.Add(Anulacion);
                    Consecutivo.Consecutivo_NotasCredito++;

                    Factura Original = db.Factura.First(q => q.Id_Factura == fac.Id_Factura);
                    Original.Estado = (int)EstadoComprobante.Anulando;


                    try
                    {
                        FacturaDB_ToNotaCredito Hacienda = new FacturaDB_ToNotaCredito(RecursosSistema.Contribuyente);
                        Hacienda.Convertir(Anulacion, fac.Fecha_Emision_Documento).CrearXml(Tipo_documento.Nota_de_crédito_electrónica).Enviar();
                        Anulacion.XML_Enviado = Hacienda.XML.InnerXml;
                        // new FacturaPDF.FacturaElectronicaPDF().CrearFactura(fac);

                        db.SaveChanges();
                        RecursosSistema.WindosNotification("Factura", "La nota de crédito Clave [" + Anulacion.Clave + "] se envío para su valoración");
                        RecursosSistema.Servicio_AgregarFactura(Anulacion.Clave);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            }catch (Exception ex)
            {
                this.LogError(ex);
                MessageBox.Show("Ocurrio un error al anular la factura", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private void AgregarItem(object sender, RoutedEventArgs e)
        {
            try
            {
                Producto p = cb_Productos.SelectedItem as Producto;
                if (p == null)
                {
                    return;
                }

                Factura_Detalle item = new Factura_Detalle();

                #region Validar Datos
                if (!decimal.TryParse(txt_precioUnitario.Text, out decimal PrecioUnitario) || PrecioUnitario <= 0)
                {
                    MessageBox.Show("Error el precio unitario debe ser numerico mayor a 0", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }
                item.PrecioUnitario = PrecioUnitario;

                if (!int.TryParse(txt_Cantidad.Text, out int Cantidad))
                {
                    MessageBox.Show("Error la cantidad debe de ser de tipo entero", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }

                if (Cantidad == 0)
                {
                    MessageBox.Show("La cantidad no puede ser 0", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }

                item.Cantidad = Cantidad;


                int?DescuentoRealPorcentaje = null;
                if (!string.IsNullOrEmpty(txt_Descuento.Text))
                {
                    int Descuento = 0;
                    if (!int.TryParse(txt_Descuento.Text, out Descuento) && Descuento <= 99 && Descuento > 0)
                    {
                        MessageBox.Show("Error el decuento debe ser un dato numerico positivo de tipo entero no mayor a 99 y mayor a 0", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }

                    if (Descuento != 0)
                    {
                        DescuentoRealPorcentaje = Descuento;
                    }
                }


                if (DescuentoRealPorcentaje.HasValue && string.IsNullOrEmpty(txt_NaturalezaDescuento.Text))
                {
                    MessageBox.Show("Error si ingresa un descuento por normativa de Hacienda debe de indicar la razon del mismo", "Validacion", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }
                else
                {
                    item.Naturaleza_Descuento = txt_NaturalezaDescuento.Text;
                }
                #endregion


                item.Monto_Total = item.Cantidad * item.PrecioUnitario;

                if (DescuentoRealPorcentaje.HasValue)
                {
                    item.Monto_Descuento = (((decimal)DescuentoRealPorcentaje / 100) * item.Monto_Total);
                }
                else
                {
                    item.Monto_Descuento = 0;
                }

                item.ProductoServicio = p.ProductoServicio;
                item.Unidad_Medida    = p.Unidad_Medida;
                item.Tipo             = p.Tipo;
                item.Codigo           = p.Codigo;
                item.Gravado          = false;

                if (p.Producto_Impuesto != null && p.Producto_Impuesto.Count > 0)
                {
                    decimal Impuesto_Monto = 0;
                    List <Factura_Detalle_Impuesto> Factura_Detalle_Impuesto = new List <Factura_Detalle_Impuesto>();
                    foreach (Producto_Impuesto impuesto in p.Producto_Impuesto)
                    {
                        decimal SubImpuesto = ((impuesto.Impuesto_Tarifa / 100) * item.Monto_Total);
                        Factura_Detalle_Impuesto.Add(new Factura_Detalle_Impuesto()
                        {
                            Exento = impuesto.Exento,
                            Exoneracion_FechaEmision      = impuesto.Exoneracion_FechaEmision,
                            Exoneracion_MontoImpuesto     = impuesto.Exoneracion_MontoImpuesto,
                            Exoneracion_NombreInstitucion = impuesto.Exoneracion_NombreInstitucion,
                            Exoneracion_NumeroDocumento   = impuesto.Exoneracion_NumeroDocumento,
                            Exoneracion_PorcentajeCompra  = impuesto.Exoneracion_PorcentajeCompra.ToString(),
                            Exoneracion_TipoDocumento     = impuesto.Exoneracion_TipoDocumento,
                            Impuesto_Codigo = impuesto.Impuesto_Codigo,
                            Impuesto_Tarifa = impuesto.Impuesto_Tarifa,
                            Impuesto_Monto  = SubImpuesto
                        });
                        Impuesto_Monto += SubImpuesto;
                    }
                    item.Gravado                  = true;
                    item.Impuesto_Monto           = Impuesto_Monto;
                    item.Factura_Detalle_Impuesto = Factura_Detalle_Impuesto;
                }
                item.SubTotal          = item.Monto_Total - (item.Monto_Descuento ?? 0);
                item.Monto_Total_Linea = item.SubTotal + (item.Impuesto_Monto ?? 0);

                FacturaDetalle.Add(item);
                LimpiarSelectorProducto();
                CalcularTotales();
            }
            catch (Exception ex)
            {
                this.LogError(ex);
                MessageBox.Show("Ocurrio un error al seleccionar el articulo");
            }
        }