Exemplo n.º 1
0
        public static FacturaDTO GenerarFactura(CfdiV33.Comprobante comprobante, string tipo)
        {
            FacturaDTO factura = new FacturaDTO();

            try
            {
                factura = new FacturaDTO()
                {
                    tipo           = tipo,
                    rfcEmisor      = comprobante.Emisor.Rfc,
                    rfcReceptor    = comprobante.Receptor.Rfc,
                    fechaDocto     = comprobante.Fecha,
                    fechaTimbrado  = comprobante.Complemento.Any[0].Attributes[1].Value,
                    noFactura      = comprobante.Folio,
                    UUID           = comprobante.Complemento.Any[0].Attributes[2].Value,
                    importeFactura = comprobante.Total,
                    moneda         = comprobante.Moneda.ToString(),
                    tipoCambio     = comprobante.TipoCambio.ToString()
                };
            }
            catch (Exception ex)
            {
                LogErrores.Write("Ocurrio un error al Generar la factura con la V3.3 con el folio: " + comprobante.Folio, ex);
            }

            return(factura);
        }
Exemplo n.º 2
0
        // Modificar una factura
        public Respuesta UpdateFactura(FacturaDTO facturaDTO)
        {
            using (Contexto db = new Contexto())
            {
                var facturaUpdate = db.Facturas.Find(facturaDTO.FacturasId);
                if (facturaUpdate != null)
                {
                    //facturaUpdate.NumeroFactura = facturaDTO.NumeroFactura;
                    facturaUpdate.ClienteId = facturaDTO.ClienteId;
                    facturaUpdate.Fecha     = facturaDTO.Fecha;
                    //facturaUpdate.FacturasId = facturaDTO.FacturasId;

                    Respuesta respuesta = new Respuesta();
                    respuesta.Mensaje        = "Modificado correctamente";
                    respuesta.Error          = false;
                    respuesta.FilasAfectadas = db.SaveChanges();
                    return(respuesta);
                }
                else
                {
                    Respuesta respuesta = new Respuesta();
                    respuesta.Mensaje        = "No se encontro";
                    respuesta.Error          = false;
                    respuesta.FilasAfectadas = db.SaveChanges();
                    return(respuesta);
                }
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> UpdateInvoice(FacturaDTO facturaDTO)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Factura invoiceFromDb = await _repository.GetInvoiceById(facturaDTO.IdFactura);

                    if (invoiceFromDb == null)
                    {
                        return(BadRequest());
                    }
                    // IdLocatie is a composite primary key and cannot be modified
                    // In order to modify the IdLocatie we have to remove the primary key from it
                    //invoiceFromDb.IdLocatie = facturaDTO.IdLocatie;
                    invoiceFromDb.NumarFactura = facturaDTO.NumarFactura;
                    invoiceFromDb.DataFactura  = facturaDTO.DataFactura;
                    invoiceFromDb.NumeClient   = facturaDTO.NumeClient;
                    await _repository.EditInvoice(invoiceFromDb);

                    return(Ok());
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message.Split('.')[0]));
                }
            }
            return(BadRequest("Invalid Invoice."));
        }
Exemplo n.º 4
0
        // Eliminar una factura
        public Respuesta DeleteFactura(FacturaDTO facturaDTO)
        {
            using (Contexto db = new Contexto())
            {
                var facturaDelete = db.Facturas.Find(facturaDTO.FacturasId);
                if (facturaDelete != null)
                {
                    db.ItemFacturas.RemoveRange(db.ItemFacturas.Where(item => item.FacturaId == facturaDelete.FacturasId));
                    db.Facturas.Remove(facturaDelete);
                    db.SaveChanges();

                    Respuesta respuesta = new Respuesta();
                    respuesta.Mensaje        = "Se ha eliminado la factura con sus items";
                    respuesta.Error          = false;
                    respuesta.FilasAfectadas = db.SaveChanges();
                    return(respuesta);
                }
                else
                {
                    Respuesta respuesta = new Respuesta();
                    respuesta.Mensaje        = "No encontro el registro";
                    respuesta.Error          = false;
                    respuesta.FilasAfectadas = db.SaveChanges();
                    return(respuesta);
                }
            }
        }
Exemplo n.º 5
0
        public async Task <Factura> CreateFactura(FacturaDTO factura)
        {
            Producto producto = await productoRepository.GetProducto(factura.ProductoId);

            if (producto == null)
            {
                return(null);
            }

            Preventa preventa = await preventaRepository.GetPreventa(factura.PreventaId);

            if (preventa == null)
            {
                return(null);
            }

            Factura nuevaFactura = new Factura
            {
                Preventa     = preventa,
                Producto     = producto,
                FacturaFecha = DateTime.UtcNow,
                Cantidad     = factura.CantidadProducto,
                Total        = producto.ValorUnitario * factura.CantidadProducto
            };

            return(await facturaRepository.CreateFactura(nuevaFactura));
        }
        public void AgregarFactura(FacturaDTO miFactura)
        {
            /*Creamos el principio de la factura con los datos que podemos agregar*/
            Factura nuevaFactura = new Factura()
            {
                fecha         = miFactura.Fecha,
                numeroCliente = miFactura.NumeroCliente,
                total         = miFactura.Total,
                nickUsuario   = miFactura.NickUsuario
            };

            using (BaseSistema miBase = new BaseSistema())
            {
                miBase.Factura.Add(nuevaFactura);
                miBase.SaveChanges();

                foreach (var item in miFactura.ListaDetalle)
                {
                    /*Creamos detalle por detalle y lo vamos agregando*/
                    DetallesFactura nuevoDetalle = new DetallesFactura()
                    {
                        cantidad   = item.Cantidad,
                        idProducto = item.IdProducto,
                        subTotal   = item.SubTotal,

                        /*El id de la factura es el mismo y se genero automatico cuando agregue la factura*/
                        factura = nuevaFactura.numeroFactura
                    };
                    miBase.DetallesFactura.Add(nuevoDetalle);
                }

                /*Guardamos los cambios*/
                miBase.SaveChanges();
            }
        }
Exemplo n.º 7
0
        public async Task <IActionResult> UpdateAsync(FacturaDTO model)
        {
            Response <string> response = new Response <string>();

            try
            {
                if (model == null)
                {
                    return(BadRequest());
                }

                response = await _FacturaApplication.UpdateAsync(model);

                if (response.IsSuccess)
                {
                    return(Ok(response));
                }
                else
                {
                    return(BadRequest(response));
                }
            }
            catch (Exception ex)
            {
                response.Data      = null;
                response.IsSuccess = false;
                response.Message   = ex.Message;

                return(BadRequest(response));
            }
        }
Exemplo n.º 8
0
        public async Task <Response <string> > UpdateAsync(FacturaDTO model)
        {
            var response = new Response <string>();

            try
            {
                var resp = _mapper.Map <Factura>(model);
                response.Data = await _FacturasDomain.UpdateAsync(resp);

                if (response.Data == "success")
                {
                    response.IsSuccess = true;
                    response.Message   = "Se ha actualizado la Factura exitosamente.";
                }
                else
                {
                    response.IsSuccess = false;
                    response.Message   = "Ha ocurrido un error inesperado, por favor intente nuevamente";
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                response.Message   = ex.Message;
            }

            return(response);
        }
        /*IMPRIMIR FACTURA*/

        public ActionResult Pdf(int numeroFactura)
        {
            //Buscamos la factura en la base:
            FacturaDTO miFactura = logicaFactura.BuscarFactura(Convert.ToInt32(numeroFactura));

            //Retornamos el pdf de la vista ImprimirFactura con los datos de mifactura
            return(new Rotativa.ActionAsPdf("ImprimirFactura", miFactura));
        }
Exemplo n.º 10
0
        // Guardar una factura
        public Respuesta Insertar(FacturaDTO factura)
        {
            using (db = new Contexto())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        // preparar al item de factura para guardar
                        Facturas f = new Facturas();
                        f.Fecha         = factura.Fecha;
                        f.NumeroFactura = factura.NumeroFactura;
                        f.ClienteId     = factura.ClienteId;


                        //  var response = db.SaveChanges();

                        foreach (ItemFacturaDTO item in factura.ItemFacturas)
                        {
                            ItemFactura itemFactura = new ItemFactura();
                            itemFactura.Descripcion = item.Descripcion;
                            itemFactura.Valor       = item.Valor;
                            itemFactura.Cantidad    = item.Cantidad;
                            itemFactura.Iva         = item.Iva;
                            //itemFactura.FacturaId = f.FacturasId;
                            //itemFactura.Factura = f;
                            f.ItemFacturas.Add(itemFactura);
                        }

                        db.Facturas.Add(f);
                        // preparar la respuesta
                        respuesta.FilasAfectadas = db.SaveChanges();
                        respuesta.Mensaje        = "Se realizó la operación satisfactoriamente";
                        respuesta.Error          = false;

                        transaction.Commit();
                    }
                    catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                    {
                        respuesta.Mensaje        = ex.Message;
                        respuesta.FilasAfectadas = 0;
                        respuesta.Error          = true;
                    }
                    catch (Exception ex)
                    {
                        respuesta.Mensaje        = ex.Message;
                        respuesta.FilasAfectadas = 0;
                        respuesta.Error          = true;
                    }

                    return(respuesta);
                }
            }
        }
        public ActionResult ImprimirFactura(FacturaDTO miFactura)
        {
            //Buscamos la factura en la base:
            FacturaDTO unaFactura = logicaFactura.BuscarFactura(miFactura.numeroFactura);

            //Convertimos la FacturaDTO a Facturamodel con el metodo en HerramientasM
            //Este metodo tambien agregara la descripcion del producto y el nombre del cliente (info importante a la hora de listar)
            FacturaModel unaFacturaModel = HerramientasM.ConvertirAFacturaModel(unaFactura);

            //Retornamos la vista parcial:
            return(View("_ImprimirFactura", unaFacturaModel));
        }
Exemplo n.º 12
0
        public List <FacturaDTO> FacturasUsuario(string usuario)
        {
            //creamos la lista resultante
            List <FacturaDTO> resultado = new List <FacturaDTO>();

            using (BaseSistema miBase = new BaseSistema())
            {
                //Obtenemos la lista de facturas y el detalle al mismo tiempo
                foreach (Factura f in miBase.Factura)
                {
                    //Verificamos que el usuario sea el que nos pasan
                    if (f.nickUsuario.Trim().ToLower() == usuario.Trim().ToLower())
                    {
                        //Creamos la facturaDTO y le asignamos los valores de la Factura de la base
                        FacturaDTO miFactura = new FacturaDTO()
                        {
                            numeroFactura = f.numeroFactura,
                            NumeroCliente = f.numeroCliente,
                            Fecha         = f.fecha,
                            NickUsuario   = f.nickUsuario,
                            Total         = f.total,
                            ListaDetalle  = new List <DetalleFacturaDTO>()
                        };

                        //Ahora que tenemos una factura creada le agregamos su detalle, buscando en la lista de detalles
                        foreach (DetallesFactura d in miBase.DetallesFactura)
                        {
                            //Buscamos los detalles que correspondan a la factura actual
                            if (miFactura.numeroFactura == d.factura)
                            {
                                //Creamos un nuevo detalle con los datos que corresponden
                                DetalleFacturaDTO unDetalle = new DetalleFacturaDTO()
                                {
                                    Cantidad   = d.cantidad,
                                    IdFactura  = d.factura,
                                    IdProducto = d.idProducto,
                                    SubTotal   = d.subTotal
                                };
                                //Agregamos el detalle a la factura:
                                miFactura.ListaDetalle.Add(unDetalle);
                            }
                        }
                        //Agregamos (luego de ya haber agregado los datos y los detalles) la factura a la lista resultado
                        resultado.Add(miFactura);
                    }
                }
            }
            //retornamos la lista resultado que contiene la lista de facturas de la base de datos
            return(resultado);
        }
Exemplo n.º 13
0
        public FacturaDTO BuscarFactura(int numeroFactura)
        {
            //Creamos el resultado como null, luego si encontramos una factura le asignamos su valor
            FacturaDTO resultado = null;

            using (BaseSistema miBase = new BaseSistema())
            {
                //Obtenemos la lista de facturas y el detalle al mismo tiempo
                foreach (Factura f in miBase.Factura)
                {
                    //Buscamos la factura con el mismo id
                    if (f.numeroFactura == numeroFactura)
                    {
                        resultado = new FacturaDTO()
                        {
                            numeroFactura = f.numeroFactura,
                            NumeroCliente = f.numeroCliente,
                            Fecha         = f.fecha,
                            NickUsuario   = f.nickUsuario,
                            Total         = f.total,
                            ListaDetalle  = new List <DetalleFacturaDTO>()
                        };

                        //Ahora que tenemos una factura creada le agregamos su detalle, buscando en la lista de detalles
                        foreach (DetallesFactura d in miBase.DetallesFactura)
                        {
                            //Buscamos los detalles que correspondan a la factura actual
                            if (resultado.numeroFactura == d.factura)
                            {
                                //Creamos un nuevo detalle con los datos que corresponden
                                DetalleFacturaDTO unDetalle = new DetalleFacturaDTO()
                                {
                                    Cantidad   = d.cantidad,
                                    IdFactura  = d.factura,
                                    IdProducto = d.idProducto,
                                    SubTotal   = d.subTotal
                                };
                                //Agregamos el detalle a la factura:
                                resultado.ListaDetalle.Add(unDetalle);
                            }
                        }
                        //Retornamos la faltura terminando el ciclo, porque ya no necesitamos buscar mas
                        return(resultado);
                    }
                }
                //En caso de no encontrar ninguna se retornara null porque asi definimos resultado al principio:
                return(resultado);
            }
        }
Exemplo n.º 14
0
        public IHttpActionResult Create(FacturaDTO facturaDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var factura = Mapper.Map <FacturaDTO, Factura>(facturaDTO);

            _UnityOfWork.Facturas.Add(factura);
            _UnityOfWork.SaveChanges();

            facturaDTO.FacturaId = factura.FacturaId;

            return(Created(new Uri(Request.RequestUri + "/" + factura.FacturaId), facturaDTO));
        }
Exemplo n.º 15
0
        public IHttpActionResult Create(FacturaDTO comprobanteDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var comprobante = Mapper.Map <FacturaDTO, Comprobante>(comprobanteDTO);

            _UnityOfWork.Comprobantes.Add(comprobante);
            _UnityOfWork.SaveChanges();

            comprobanteDTO.ComprobanteId = comprobante.ComprobanteId;

            return(Created(new Uri(Request.RequestUri + "/" + comprobante.ComprobanteId), comprobanteDTO));
        }
Exemplo n.º 16
0
        public async Task <ResponseModel> CreateFactura(FacturaApiModel factura)
        {
            ResponseModel response;

            try
            {
                FacturaDTO facturaCreate = mapper.Map <FacturaDTO>(factura);
                Factura    facturaResult = await facturaService.CreateFactura(facturaCreate);

                if (facturaResult == null)
                {
                    FacturaReponseModel facturaResponse = new FacturaReponseModel
                    {
                        ProcesoVenta = "Fallido"
                    };

                    response = new ResponseModel
                    {
                        HttpResponse = (int)HttpStatusCode.BadRequest,
                        Response     = facturaResponse
                    };
                }
                else
                {
                    FacturaReponseModel facturaResponse = mapper.Map <FacturaReponseModel>(facturaResult);
                    facturaResponse.ProcesoVenta = "Exitoso";

                    response = new ResponseModel
                    {
                        HttpResponse = (int)HttpStatusCode.Created,
                        Response     = facturaResponse
                    };
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);

                response = new ResponseModel
                {
                    HttpResponse  = (int)HttpStatusCode.InternalServerError,
                    ErrorResponse = "Ha ocurrido un error, consulte con el administrador"
                };
            }

            return(response);
        }
Exemplo n.º 17
0
        public async Task <IActionResult> AddInvoice(FacturaDTO facturaDTO)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Factura newInvoice = _mapper.Map <FacturaDTO, Factura>(facturaDTO);
                    await _repository.AddInvoice(newInvoice);

                    return(Ok(newInvoice));
                }
                catch (Exception e)
                {
                    return(BadRequest(e.Message.Split('.')[0]));
                }
            }
            return(BadRequest("Invalid Invoice."));
        }
Exemplo n.º 18
0
 public int UpdateFactura(FacturaDTO factura)
 {
     try
     {
         using (var context = new DataModelDB())
         {
             var std = context.Facturas.Where(fac => fac.Id.Equals(factura.Id)).FirstOrDefault();
             std.ClienteId  = factura.ClienteId;
             std.ValorTotal = factura.ValorTotal;
             std.Estado     = factura.Estado;
             context.SaveChanges();
         }
         return(1);
     }
     catch (Exception ex)
     {
         return(0);
     }
 }
Exemplo n.º 19
0
        public IHttpActionResult Update(int id, FacturaDTO comprobanteDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var comprobanteInPersistence = _UnityOfWork.Comprobantes.Get(id);

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

            Mapper.Map <FacturaDTO, Comprobante>(comprobanteDTO, comprobanteInPersistence);

            _UnityOfWork.SaveChanges();

            return(Ok(comprobanteDTO));
        }
Exemplo n.º 20
0
        public IHttpActionResult Update(int id, FacturaDTO facturaDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var facturaInPersistence = _UnityOfWork.Facturas.Get(id);

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

            Mapper.Map <FacturaDTO, Factura>(facturaDTO, facturaInPersistence);

            _UnityOfWork.SaveChanges();

            return(Ok(facturaDTO));
        }
        public ActionResult MostrarFactura(string numeroFactura)
        {
            //Anticipamos un posible error en la base de datos
            try
            {
                //Buscamos la factura en la base:
                FacturaDTO miFactura = logicaFactura.BuscarFactura(Convert.ToInt32(numeroFactura));

                //Convertimos la factura a FacturaModel y ademas le agregamos el nombre de cliente y la descripcion del producto
                FacturaModel unaFacturaModel = HerramientasM.ConvertirAFacturaModel(miFactura);

                //Retornamos la vista parcial:
                return(View("_MostrarFactura", unaFacturaModel));
            }
            catch (Exception unError)
            {
                //Podriamos guardar el error
                //Devolvemos la vista de error
                return(PartialView("_Error"));
            }
        }
Exemplo n.º 22
0
        /*
         * Estas herramientas seran funciones que controlen datos que la logica no puede controlar
         * Por ejemplo, sessiones, devuelve modelos, Convierte de DTO a MODEL, etc...
         */

        /* ******************************************************
        *            SECCION HERRAMIENTAS DE FACTURA
        * ******************************************************/
        public static FacturaModel ConvertirAFacturaModel(FacturaDTO miFactura)
        {
            //Cargamos nombre y marca del producto y el nombre del cliente
            FacturaModel unaFacturaModel = new FacturaModel()
            {
                Fecha         = miFactura.Fecha,
                NickUsuario   = miFactura.NickUsuario,
                Total         = miFactura.Total,
                NumeroCliente = miFactura.NumeroCliente,
                NumeroFactura = miFactura.numeroFactura,
                NombreCliente = NombreCliente(miFactura.NumeroCliente),
                ListaDetalle  = new List <DetalleFacturaModel>()
            };

            //Creamos la lista de detalles vacia
            List <DetalleFacturaModel> lista = new List <DetalleFacturaModel>();

            //Convertimos cada detalle DTO en detalle model agregandole Marca y nombreCliente para que se vea bien en la vista detalles
            foreach (DetalleFacturaDTO f in miFactura.ListaDetalle)
            {
                //Creamos el detalle model
                DetalleFacturaModel unDetalle = new DetalleFacturaModel()
                {
                    Cantidad   = f.Cantidad,
                    IdProducto = f.IdProducto,
                    SubTotal   = f.SubTotal,
                    //Cargamos nombre y marca para que se muestre en la factura
                    NombreMarca = NombreMarcaProducto(f.IdProducto)
                };
                //Agregamos el detalle a la lista de detalles
                lista.Add(unDetalle);
            }

            //Agregamos la lista a la factura
            unaFacturaModel.ListaDetalle = lista;

            //Retornamos la Factura
            return(unaFacturaModel);
        }
Exemplo n.º 23
0
        public void Edit(FacturaDTO Editedclass)
        {
            var x = Editedclass;

            try
            {
                using (var db = new Data())
                {
                    var pac = (from p in db.Facturas where p.Facturanro == Editedclass.Facturanro select p).FirstOrDefault();
                    if (pac != null)
                    {
                        pac.Caja = x.Caja;

                        pac.Descuento  = x.Descuento;
                        pac.Equipo     = x.Equipo;
                        pac.Facturanro = x.Facturanro;
                        pac.Mesa       = x.Mesa;
                        pac.Montoneto  = x.Montoneto;
                        pac.Montoiva   = x.Montoiva;
                        pac.Nota       = x.Nota;
                        pac.Serial     = x.Serial;
                        pac.Sirve      = x.Sirve;
                        pac.Tasa       = x.Tasa;
                        pac.Total      = x.Total;
                        pac.Userid     = x.Userid;
                        pac.ClienteID  = x.ClienteID;
                        pac.Moneda     = x.Moneda;
                        pac.Cierrex    = x.Cierrex;
                        pac.Cierrez    = x.Cierrez;
                        pac.Fecha      = x.Fecha;
                        db.SaveChanges();
                    }
                }
            }
            catch (DbEntityValidationException e)
            { }
        }
Exemplo n.º 24
0
        public int InsertFactura(FacturaDTO factura)
        {
            try
            {
                using (var context = new DataModelDB())
                {
                    context.Facturas.Add(new Factura
                    {
                        Id         = factura.Id,
                        ClienteId  = factura.ClienteId,
                        FechaVenta = DateTime.Now,
                        ValorTotal = factura.ValorTotal,
                        Estado     = true
                    });

                    context.SaveChanges();
                }
                return(1);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }
Exemplo n.º 25
0
        public void Insert(FacturaDTO NewClase)
        {
            var x   = NewClase;
            var pac = new Factura();

            pac.Caja       = x.Caja;
            pac.Descuento  = x.Descuento;
            pac.Equipo     = x.Equipo;
            pac.Facturanro = x.Facturanro;
            pac.Montoiva   = x.Montoiva;
            pac.Mesa       = x.Mesa;
            pac.Montoneto  = x.Montoneto;
            pac.Nota       = x.Nota;
            pac.Serial     = x.Serial;
            pac.Sirve      = x.Sirve;
            pac.Tasa       = x.Tasa;
            pac.Total      = x.Total;
            pac.Userid     = x.Userid;
            pac.ClienteID  = x.ClienteID;
            pac.Moneda     = x.Moneda;
            pac.Anulada    = x.Anulada;
            pac.Exento     = 0;
            pac.Fecha      = Convert.ToDateTime(DateTime.Now);
            pac.Cierrex    = x.Cierrex;
            pac.Cierrez    = x.Cierrez;
            pac.Id         = 0;



            using (var db = new Data())
            {
                db.Facturas.Add(pac);
                db.Entry(pac).State = System.Data.Entity.EntityState.Added;
                db.SaveChanges();
            }
        }
Exemplo n.º 26
0
        public Respuesta DeleteFactura(FacturaDTO facturaDTO)
        {
            FacturaBLL factura = new FacturaBLL();

            return(factura.DeleteFactura(facturaDTO));
        }
Exemplo n.º 27
0
 /// <summary>
 /// POST: /api/Factura
 /// </summary>
 /// <param name="factura"></param>
 public void Post([FromBody] FacturaDTO factura)
 {
     new FacturaBL().InsertFactura(factura);
 }
Exemplo n.º 28
0
 /// <summary>
 /// PUT: /api/Factura
 /// </summary>
 /// <param name="id"></param>
 /// <param name="factura"></param>
 public void Put([FromBody] FacturaDTO factura)
 {
     new FacturaBL().UpdateFactura(factura);
 }
        public ActionResult GuardarFactura(FacturaModel unaFactura)
        {
            //Controlamos que el usuario este logueado
            if (Session["Logueado"] != null)
            {
                if (ModelState.IsValid)
                {
                    //Nos anticipamos a un posible error en servidor
                    try
                    {
                        //Guardamos el usuario actual para agregarlo a la factura
                        UsuarioModel usuarioActual = (UsuarioModel)Session["Logueado"];

                        //Creamos una facturaDTO la cual pasaremos a la base para que se guarde
                        FacturaDTO miFactura = new FacturaDTO()
                        {
                            Fecha         = DateTime.Now,
                            NickUsuario   = usuarioActual.Usuario,
                            NumeroCliente = unaFactura.NumeroCliente,
                            Total         = CalcularGasto(unaFactura.ListaDetalle)
                        };

                        //Convertimos la lista del tipo List<DetalleFacturaModel> al tipo List<DetalleFacturaDTO> creando una nueva lista y agregandola a nuestra factura
                        //Inicializamos la lista:
                        miFactura.ListaDetalle = new List <DetalleFacturaDTO>();

                        //Vamos agregando uno a uno los detalles
                        foreach (DetalleFacturaModel item in unaFactura.ListaDetalle)
                        {
                            //Creamos el DetalleFacturaDTO
                            DetalleFacturaDTO nuevoDetalle = new DetalleFacturaDTO()
                            {
                                IdProducto = item.IdProducto,
                                Cantidad   = item.Cantidad,
                                SubTotal   = item.SubTotal
                                             //Omitimos id de factura porque se agrega en Capa de Datos
                            };
                            //Agregamos el detalle a la lista
                            miFactura.ListaDetalle.Add(nuevoDetalle);
                        }

                        //Ahora que ya tenemos la factura lista la enviamos a guardar en la base de datos
                        logicaFactura.AgregarFactura(miFactura);

                        //Si todo salio bien redirigimos a crear factura para que pueda agregar mas
                        return(RedirectToAction("CrearFactura", "Factura"));
                    }
                    catch (Exception unError)
                    {
                        //Podemos guardar el error en la base de datos
                        //Redirigimos a la vista de error
                        return(View("Error"));
                    }
                }
                else//Si el modelo no es valido
                {
                    //Redirigimos a crear factura
                    return(RedirectToAction("CrearFactura", "Factura"));
                }
            }
            else//Si el usuario no esta logueado
            {
                //Si el usuario no esta logueado redirigimos a el login
                return(RedirectToAction("Login", "Ingreso"));
            }
        }
 /*Registramos la factura que nos llega como parametro*/
 public void AgregarFactura(FacturaDTO miFactura)
 {
     repositorioFactura.AgregarFactura(miFactura);
 }