Ejemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("IdFactura,IdCliente,IdVendedor,FechaFactura")] FacturaCabecera facturaCabecera)
        {
            if (id != facturaCabecera.IdFactura)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(facturaCabecera);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FacturaCabeceraExists(facturaCabecera.IdFactura))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdCliente"]  = new SelectList(_context.Persona, "IdPersona", "ApellidoPersona", facturaCabecera.IdCliente);
            ViewData["IdVendedor"] = new SelectList(_context.Persona, "IdPersona", "ApellidoPersona", facturaCabecera.IdVendedor);
            return(View(facturaCabecera));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create([Bind("IdFactura,IdCliente,IdVendedor,FechaFactura")] FacturaCabecera facturaCabecera)
        {
            if (ModelState.IsValid)
            {
                _context.Add(facturaCabecera);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdCliente"]  = new SelectList(_context.Persona, "IdPersona", "ApellidoPersona", facturaCabecera.IdCliente);
            ViewData["IdVendedor"] = new SelectList(_context.Persona, "IdPersona", "ApellidoPersona", facturaCabecera.IdVendedor);
            return(View(facturaCabecera));
        }
Ejemplo n.º 3
0
        public bool insertarCabecera(MySqlCommand cmd, FacturaCabecera factura, int opcion)
        {
            bool resultado = false;

            cmd.Parameters.AddWithValue("?opcion", opcion).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?id_confPosi", factura.IdConfPos).Direction                = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?idClientei", factura.IdCliente).Direction                 = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?id_vendedori", factura.IdVendedor).Direction              = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?autorizacioni", factura.Autorizacion).Direction           = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?id_tipoDocumentoi", factura.Id_tipoDocumento).Direction   = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?numero_documentoi", factura.Numero_actual).Direction      = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?fecha_creacioni", DateTime.Now).Direction                 = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?fecha_vencimientoi", factura.Fecha_vencimiento).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?documentoi", factura.Numero_documento).Direction          = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?descuentoi", factura.Descuento).Direction                 = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?servicioi", factura.Servicio).Direction       = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?tarifa_0i", factura.Tarifa_0).Direction       = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?tarifa_12i", factura.Tarifa_12).Direction     = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?total_icei", factura.Total_ice).Direction     = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?total_ivai", factura.Total_iva).Direction     = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?totali", factura.Total).Direction             = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?descripcioni", factura.Descripcion).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?estadoi", factura.Estado).Direction           = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?empresa_idi", factura.Empresa_id).Direction   = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?establecimiento_idi", factura.Establecimiento_id).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?imprimioi", factura.Imprimo).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?idCajai", factura.IdCaja).Direction    = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?descuento_facturai", factura.DescuentoFactura).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?descuento_clientei", factura.DescuentoCliente).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?tipoDocumentoi", factura.Tipo).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?vueltoi", factura.Vuelto).Direction      = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?idFacturai", factura.Id).Direction       = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?idCajeroi", factura.IdCajero).Direction  = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?adicional1i", (factura.Adicionales == null) ? "" : factura.Adicionales[0].valor).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?adicional2i", (factura.Adicionales == null || factura.Adicionales.Count < 2) ? "" : factura.Adicionales[1].valor).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?propinai", factura.Propina).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?id_usuarioAnulari", factura.IdUsuarioAnular).Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?pagoParciali", factura.PagoParcial).Direction          = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("?idFactura", MySqlDbType.Int32).Direction = ParameterDirection.Output;

            cmd.ExecuteNonQuery();

            if (opcion == 1 && !String.IsNullOrEmpty(cmd.Parameters["?idFactura"].Value.ToString()))
            {
                factura.Id = (int)cmd.Parameters["?idFactura"].Value;
                resultado  = true;
            }

            cmd.Parameters.Clear();
            return(resultado);
        }
Ejemplo n.º 4
0
        public bool guardarFactura(FacturaCabecera cabecera, List <FacturaDetalle> listaDetalles, List <FormaPago> listaPagos)
        {
            string           lineaConexion = Conexion.lineaConexion;
            MySqlConnection  conexion      = null;
            MySqlTransaction tran          = null;
            MySqlCommand     cmd           = null;
            bool             estado        = false;

            try
            {
                conexion = new MySqlConnection(lineaConexion);
                conexion.Open();
                tran            = conexion.BeginTransaction();
                cmd             = new MySqlCommand("factura_insertarCabecera", conexion);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Transaction = tran;
                this.insertarCabecera(cmd, cabecera, 1);

                cmd.CommandText = "factura_adicionales";
                this.insertarAdicionales(cmd, cabecera.Adicionales, cabecera.Id);

                cmd.CommandText = "factura_insertarDetalle";
                this.insertarDetalle(cmd, listaDetalles, cabecera, 0);

                if (listaPagos != null)
                {
                    cmd.CommandText = "insertar_pagos";
                    this.insertarPagos(cmd, listaPagos, cabecera.Id);
                }

                tran.Commit();
                //tran.Rollback();
                conexion.Close();
                estado = true;
            }
            catch (Exception e)
            {
                tran.Rollback();
                throw e;
            }
            finally {
                conexion.Close();
                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }
            return(estado);
        }
Ejemplo n.º 5
0
        protected void buscarGuia(int idGuia)
        {
            GuiaRemision guia = GuiaRemisionTR.consultarXId(idGuia);

            if (guia != null)
            {
                this.limpiar(false);
                this.txt_secuencia.Text            = guia.id.ToString();
                this.dtp_fechaEmision.Value        = guia.fechaEmision;
                this.dtp_fechaInicioTraslado.Value = guia.fechaInicio;
                this.dtp_fechaFinTraslado.Value    = guia.fechaFin;
                this.txt_direccionPartida.Text     = guia.direccionPartida;
                this.txt_numeroDocumento.Text      = guia.numeroDocumento;
                this.txt_autorizacion.Text         = guia.autorizacion;
                this.txt_cedulaTransportista.Text  = guia.transportista.cedula;
                this.txt_nombreTransportista.Text  = guia.transportista.razon_social;
                this.txt_correoTransportista.Text  = guia.transportista.email;
                this.txt_placaTransportista.Text   = guia.placa;
                this.txt_descripcion.Text          = guia.descripcion;
                Destinatario destinatario = guia.destinatarios[0];
                this.txt_cedulaDestinatario.Text    = destinatario.cliente.cedula;
                this.txt_nombreDestinatario.Text    = destinatario.cliente.razon_social;
                this.txt_documento.Text             = (destinatario.documento != null)?destinatario.documento.Numero_documento:"";
                this.txt_motivoDestinatario.Text    = destinatario.motivo;
                this.txt_direccionDestinatario.Text = destinatario.direccion;
                this.txt_codigoDestino.Text         = destinatario.codigoDestino;
                this.txt_ruta.Text = destinatario.ruta;

                if (destinatario.detalle != null)
                {
                    foreach (object[] producto in destinatario.detalle)
                    {
                        this.grw_productos.Rows.Add(producto);
                    }
                }
            }
            else
            {
                Mensaje.informacion("No se encontró la guía ingresada");
            }
            this.guiaRemision  = guia;
            this.transportista = guia.transportista;
            this.documento     = guia.destinatarios[0].documento;
            this.cliente       = guia.destinatarios[0].cliente;
        }
Ejemplo n.º 6
0
        protected void limpiar(bool cargarDatos = true)
        {
            if (cargarDatos)
            {
                int secuencia = GuiaRemisionTR.consultarSecuencia();
                this.txt_secuencia.Text       = secuencia.ToString();
                this.txt_numeroDocumento.Text = this.getNumeroDocumento();
                this.txt_autorizacion.Text    = this.configuracion.Autorizacion;
            }
            if (this.desdeFactura)
            {
                this.desdeFactura = false;
                return;
            }
            this.tsb_guardar.Enabled           = true;
            this.dtp_fechaInicioTraslado.Value = DateTime.Now;
            this.dtp_fechaFinTraslado.Value    = DateTime.Now;
            this.txt_direccionPartida.Clear();
            this.txt_cedulaTransportista.Clear();
            this.txt_nombreTransportista.Clear();
            this.txt_placaTransportista.Clear();
            this.txt_correoTransportista.Clear();
            this.txt_descripcion.Clear();

            this.txt_cedulaDestinatario.Clear();
            this.txt_nombreDestinatario.Clear();
            this.txt_direccionDestinatario.Clear();
            this.txt_codigoDestino.Clear();
            this.txt_ruta.Clear();

            this.txt_documento.Clear();
            this.txt_motivoDestinatario.Clear();

            this.grw_productos.DataSource = null;
            this.grw_productos.Rows.Clear();
            this.guiaRemision  = null;
            this.cliente       = null;
            this.transportista = null;
            this.documento     = null;
            this.setDireccionPartida();
            this.setDescipcionGuia();
            this.txt_descripcion.Focus();
        }
Ejemplo n.º 7
0
        private void buscarDocumento(int idDocumento)
        {
            this.grw_productos.Rows.Clear();
            this.documento          = FacturaCabeceraTR.consultarFactura(idDocumento);
            this.txt_documento.Text = this.documento.Numero_documento;
            List <String[]> detalles = FacturaDetalleTR.consultarFacturaDetalle(this.documento.Id);

            if (detalles != null)
            {
                int i = 0;
                foreach (String[] detalle in detalles)
                {
                    this.grw_productos.Rows.Add();
                    this.grw_productos.Rows[i].Cells["id"].Value       = detalle[8];
                    this.grw_productos.Rows[i].Cells["nombre"].Value   = detalle[1];
                    this.grw_productos.Rows[i].Cells["cantidad"].Value = detalle[2];
                    this.grw_productos.Rows[i].Cells["unidad"].Value   = detalle[3];
                    i += 1;
                }
            }
        }
Ejemplo n.º 8
0
        public static FacturaCabecera consultarFactura(int idFactura)
        {
            FacturaCabecera factura = null;
            MySqlCommand    cmd     = null;
            MySqlDataReader data    = null;
            Conexion        con     = null;

            try
            {
                con             = new Conexion();
                cmd             = con.EjecutarSQL("factura_consultarCabecera");
                cmd.CommandType = System.Data.CommandType.StoredProcedure;

                cmd.Parameters.AddWithValue("?opcion", 1).Direction             = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("?idCabecera", idFactura).Direction = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("?fechaDesde", null).Direction      = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("?fechaHasta", null).Direction      = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("?estadoi", String.Empty).Direction = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("?filtro", null).Direction          = ParameterDirection.Input;

                data = cmd.ExecuteReader();
                if (data.Read())
                {
                    factura                  = new FacturaCabecera();
                    factura.Id               = (!data.IsDBNull(data.GetOrdinal("idfactura_cabecera"))) ? data.GetInt32("idfactura_cabecera") : -1;
                    factura.IdConfPos        = (!data.IsDBNull(data.GetOrdinal("id_confPos"))) ? data.GetInt32("id_confPos") : -1;
                    factura.IdCliente        = (!data.IsDBNull(data.GetOrdinal("idCliente"))) ? data.GetInt32("idCliente") : -1;
                    factura.IdVendedor       = (!data.IsDBNull(data.GetOrdinal("id_vendedor"))) ? data.GetInt32("id_vendedor") : -1;
                    factura.Id_tipoDocumento = (!data.IsDBNull(data.GetOrdinal("id_tipoDocumento"))) ? data.GetInt32("id_tipoDocumento") : -1;
                    factura.Numero_actual    = (!data.IsDBNull(data.GetOrdinal("numero_documento"))) ? data.GetInt32("numero_documento") : 0;
                    factura.Fecha_creacion   = (!data.IsDBNull(data.GetOrdinal("fecha_creacion"))) ? data.GetDateTime("fecha_creacion") : DateTime.Now;

                    factura.Numero_documento   = (!data.IsDBNull(data.GetOrdinal("documento"))) ? data.GetString("documento") : "";
                    factura.Descuento          = (!data.IsDBNull(data.GetOrdinal("descuento"))) ? data.GetDecimal("descuento") : 0;
                    factura.Servicio           = (!data.IsDBNull(data.GetOrdinal("servicio"))) ? data.GetDecimal("servicio") : 0;
                    factura.Tarifa_0           = (!data.IsDBNull(data.GetOrdinal("tarifa_0"))) ? data.GetDecimal("tarifa_0") : 0;
                    factura.Tarifa_12          = (!data.IsDBNull(data.GetOrdinal("tarifa_12"))) ? data.GetDecimal("tarifa_12") : 0;
                    factura.Total_ice          = (!data.IsDBNull(data.GetOrdinal("total_ice"))) ? data.GetDecimal("total_ice") : 0;
                    factura.Total_iva          = (!data.IsDBNull(data.GetOrdinal("total_iva"))) ? data.GetDecimal("total_iva") : 0;
                    factura.Total              = (!data.IsDBNull(data.GetOrdinal("total"))) ? data.GetDecimal("total") : 0;
                    factura.Descripcion        = (!data.IsDBNull(data.GetOrdinal("descripcion"))) ? data.GetString("descripcion") : "";
                    factura.Estado             = (!data.IsDBNull(data.GetOrdinal("estado"))) ? data.GetString("estado") : "";
                    factura.Empresa_id         = (!data.IsDBNull(data.GetOrdinal("empresa_id"))) ? data.GetInt32("empresa_id") : -1;
                    factura.Establecimiento_id = (!data.IsDBNull(data.GetOrdinal("establecimiento_id"))) ? data.GetInt32("establecimiento_id") : -1;
                    //factura.Subio = (!data.IsDBNull(data.GetOrdinal("subio"))) ? data.GetInt32("subio") : 0;
                    factura.Imprimo           = (!data.IsDBNull(data.GetOrdinal("imprimio"))) ? data.GetBoolean("imprimio") : false;
                    factura.Vuelto            = (!data.IsDBNull(data.GetOrdinal("vuelto"))) ? data.GetDecimal("vuelto") : 0;
                    factura.IdCaja            = (!data.IsDBNull(data.GetOrdinal("id_caja"))) ? data.GetInt32("id_caja") : -1;
                    factura.IdCajero          = (!data.IsDBNull(data.GetOrdinal("id_cajero"))) ? data.GetInt32("id_cajero") : -1;
                    factura.Propina           = (!data.IsDBNull(data.GetOrdinal("propina"))) ? data.GetDecimal("propina") : 0;
                    factura.Fecha_vencimiento = (!data.IsDBNull(data.GetOrdinal("fecha_vencimiento"))) ? data.GetDateTime("fecha_vencimiento") : factura.Fecha_creacion;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                if (data != null)
                {
                    data.Dispose();
                }
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (con != null)
                {
                    con.cerrar();
                }
            }

            return(factura);
        }
Ejemplo n.º 9
0
 public FacturaCabeceraTR(FacturaCabecera factura)
 {
     this.conf = new Conexion();
     this.fac  = factura;
 }
Ejemplo n.º 10
0
        public bool actualizarFactura(FacturaCabecera cabecera, List <FacturaDetalle> listaDetalles, List <FormaPago> listaPagos, int idCabecera = -1, List <FormaPago> pagosEliminados = null, string estadoFactura = "P")
        {
            string           lineaConexion = Conexion.lineaConexion;
            MySqlConnection  conexion      = null;
            MySqlTransaction tran          = null;
            MySqlCommand     cmd           = null;
            bool             estado        = false;

            try
            {
                conexion = new MySqlConnection(lineaConexion);
                conexion.Open();
                tran            = conexion.BeginTransaction();
                cmd             = new MySqlCommand();
                cmd.Connection  = conexion;
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Transaction = tran;


                if (cabecera != null && listaDetalles != null)
                {
                    cmd.CommandText = "factura_insertarCabecera";
                    this.insertarCabecera(cmd, cabecera, 2);

                    cmd.CommandText = "factura_adicionales";
                    this.eliminarAdicionales(cmd, cabecera.Id);

                    cmd.CommandText = "factura_adicionales";
                    this.insertarAdicionales(cmd, cabecera.Adicionales, cabecera.Id);

                    cmd.CommandText = "factura_insertarDetalle";
                    this.insertarDetalle(cmd, listaDetalles, cabecera, 1);

                    cmd.CommandText = "factura_eliminarProductos";
                    cmd.Parameters.AddWithValue("?idfactura_cabecerai", cabecera.Id);
                    cmd.Parameters["?idfactura_cabecerai"].Direction = ParameterDirection.Input;
                    cmd.ExecuteNonQuery();

                    if (pagosEliminados != null)
                    {
                        cmd.CommandText = "formapago_eliminar";
                        this.eliminarPagos(cmd, pagosEliminados);
                    }
                }
                if (listaPagos != null)
                {
                    cmd.CommandText = "insertar_pagos";
                    this.insertarPagos(cmd, listaPagos, (cabecera != null)?cabecera.Id:idCabecera);
                }

                if (cabecera == null)
                {
                    cmd.CommandText = "factura_actualizar";
                    cmd.Parameters.AddWithValue("?opcion", 3).Direction = ParameterDirection.Input;
                    cmd.Parameters.AddWithValue("?idFacturai", idCabecera).Direction = ParameterDirection.Input;
                    cmd.Parameters.AddWithValue("?estadoi", estadoFactura).Direction = ParameterDirection.Input;
                    cmd.ExecuteNonQuery();
                }
                //cmd.CommandText = "FormaPago_actualizar";
                //this.insertarPagos(cmd, listaPagos, cabecera.Idfactura_cabecera);

                tran.Commit();
                //tran.Rollback();
                conexion.Close();
                estado = true;
            }
            catch (Exception e)
            {
                tran.Rollback();
                throw e;
            }
            finally
            {
                conexion.Close();
                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }
            return(estado);
        }
Ejemplo n.º 11
0
 public void insertarDetalle(MySqlCommand cmd, List <FacturaDetalle> listaDetalles, FacturaCabecera cabecera, int almacenar)
 {
     foreach (FacturaDetalle detalle in listaDetalles)
     {
         cmd.Parameters.AddWithValue("?idfactura_cabecerai", cabecera.Id).Direction          = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?id_productoi", detalle.Id_producto).Direction         = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?cantidadi", detalle.Cantidad).Direction               = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?porc_descuentoi", detalle.Porc_descuento).Direction   = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?valor_descuentoi", detalle.Valor_descuento).Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?totali", detalle.Total).Direction   = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?precioi", detalle.Precio).Direction = ParameterDirection.Input;
         //cmd.Parameters.AddWithValue("?unidad_idi", detalle.Unidad_id);
         //cmd.Parameters["?unidad_idi"].Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?base_ceroi", detalle.Base_cero).Direction              = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?base_gravablei", detalle.Base_gravable).Direction      = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?base_no_gravablei", detalle.Base_nogravable).Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?icei", detalle.Ice).Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?tipo_rete_idi", detalle.Tipo_reteid).Direction    = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?pvp_ventai", detalle.Pvp_venta).Direction         = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?porcentaje_ivai", detalle.Porc_Iva).Direction     = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?porcentaje_icei", detalle.Porc_Ice).Direction     = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?idDetallei", detalle.Idfactura_detalle).Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?almacenar", almacenar).Direction              = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?id_cajai", cabecera.IdCaja).Direction         = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?descripcioni", detalle.Descripcion).Direction = ParameterDirection.Input;
         cmd.Parameters.AddWithValue("?id_seriei", detalle.Id_Serie).Direction       = ParameterDirection.Input;
         cmd.ExecuteNonQuery();
         cmd.Parameters.Clear();
     }
 }
Ejemplo n.º 12
0
        public async Task <FacturaCabecera> Create(FacturaCabecera facturaCabecera)
        {
            List <FacturaDetalle> lstFacturaDetalle = new List <FacturaDetalle>();
            int id = 0;

            using (SqlConnection sqlConn = new SqlConnection(conn))
            {
                try
                {
                    if (facturaCabecera.FacturaCabeceraID == 0)
                    {
                        using (SqlCommand cmd = new SqlCommand("Usp_FacturaCabecera_Create", sqlConn))
                        {
                            cmd.CommandType = System.Data.CommandType.StoredProcedure;
                            cmd.Parameters.Add(new SqlParameter("@pclienteID", facturaCabecera.ClienteID));
                            cmd.Parameters.Add(new SqlParameter("@pNumeroFactura", facturaCabecera.NumeroFactura));
                            cmd.Parameters.Add(new SqlParameter("@pImporteTotal", facturaCabecera.ImporteTotal));
                            cmd.Parameters.Add(new SqlParameter
                            {
                                ParameterName = "@pFacturaCabeceraID",
                                Value         = facturaCabecera.FacturaCabeceraID,
                                Direction     = System.Data.ParameterDirection.Output
                            });
                            await sqlConn.OpenAsync();

                            await cmd.ExecuteNonQueryAsync();

                            id = (int)cmd.Parameters["@pFacturaCabeceraID"].Value;
                        }
                    }
                    else
                    {
                        using (SqlCommand cmd = new SqlCommand("Usp_FacturaCabecera_Update", sqlConn))
                        {
                            cmd.CommandType = System.Data.CommandType.StoredProcedure;
                            cmd.Parameters.Add(new SqlParameter("@pFacturaCabeceraID", facturaCabecera.FacturaCabeceraID));
                            cmd.Parameters.Add(new SqlParameter("@pclienteID", facturaCabecera.ClienteID));
                            cmd.Parameters.Add(new SqlParameter("@pImporteTotal", facturaCabecera.ImporteTotal));
                            await sqlConn.OpenAsync();

                            await cmd.ExecuteNonQueryAsync();
                        }
                    }

                    foreach (var item in facturaCabecera.itemDetalles)
                    {
                        if (item.FacturaDetalleID == 0 && item.FacturaCabeceraID == 0)
                        {
                            item.FacturaCabeceraID = id;
                            var result = await CreateDetalle(item);

                            lstFacturaDetalle.Add(result);
                        }
                        if (item.FacturaDetalleID == 0 && item.FacturaCabeceraID > 0)
                        {
                            item.FacturaCabeceraID = item.FacturaCabeceraID;
                            var result = await CreateDetalle(item);

                            lstFacturaDetalle.Add(result);
                        }

                        else
                        {
                            await UpdateDetalle(item);
                        }
                    }

                    facturaCabecera.FacturaCabeceraID = id;
                    facturaCabecera.itemDetalles      = lstFacturaDetalle;
                    return(facturaCabecera);
                }
                catch (System.Exception)
                {
                    throw;
                }
            }
        }