예제 #1
0
        public static void GuardarFactura(string Conection, eFactura pFactura)
        {
            try
            {
                FacturasBO lFacturas = new FacturasBO();
                lFacturas.id         = Guid.NewGuid().ToString();
                lFacturas.num        = FacturasBO.GetNum(Conection, pFactura.serie);
                lFacturas.serie      = pFactura.serie;
                lFacturas.fecha      = DateTime.Now;
                lFacturas.id_cliente = pFactura.id_cliente;

                List <DetallesFacturaBO> detalles  = new List <DetallesFacturaBO>();
                List <ProductosBO>       productos = new List <ProductosBO>();

                foreach (var oDetalle in pFactura.Detalles)
                {
                    DetallesFacturaBO lDetalle  = new DetallesFacturaBO();
                    ProductosBO       lProducto = new ProductosBO(Conection, oDetalle.id_productos);
                    if (lProducto.cantidad < oDetalle.cantidad_productos)
                    {
                        throw new Exception("No hay existencia del producto " + lProducto.nombre);
                    }
                    lProducto.cantidad = lProducto.cantidad - oDetalle.cantidad_productos;
                    productos.Add(lProducto);
                    lDetalle.total = oDetalle.cantidad_productos * lProducto.precio;
                    lDetalle.cantidad_productos = oDetalle.cantidad_productos;
                    lDetalle.id_productos       = oDetalle.id_productos;
                    lDetalle.id_factura         = Guid.Parse((string)lFacturas.id);
                    detalles.Add(lDetalle);
                }
                SqlConnection  lConnection = new SqlConnection(Conection);
                SqlTransaction lTransaction;

                lConnection.Open();
                lTransaction = lConnection.BeginTransaction();

                try
                {
                    lFacturas.SaveTransaction(lConnection, lTransaction);
                    foreach (var iDetalle in detalles)
                    {
                        iDetalle.SaveTransaction(lConnection, lTransaction);
                    }
                    foreach (var iProductos in productos)
                    {
                        iProductos.SaveTransaction(lConnection, lTransaction);
                    }

                    lTransaction.Commit();
                }
                catch
                {
                    lTransaction.Rollback();
                    throw;
                }
                finally
                {
                    lConnection.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #2
0
        public void DelelteCliente(string id)
        {
            FacturasBO lFactura = new FacturasBO(pConnection, id);

            lFactura.Delete(pConnection);
        }
예제 #3
0
        public FacturasBO GetById(string id)
        {
            FacturasBO lFactura = new FacturasBO(pConnection, id);

            return(lFactura);
        }
예제 #4
0
        public FacturasBO GetNum(string serie)
        {
            FacturasBO lFactura = new FacturasBO(pConnection, serie);

            return(lFactura);
        }
예제 #5
0
        public List <eFactura> GetAll()
        {
            List <eFactura> lClientes = FacturasBO.getClienteById(pConnection);

            return(lClientes);
        }