public async Task <HttpResponseMessage> PostAsync([FromBody] Proforma proforma)
        {
            var transaccion = db.Database.BeginTransaction();

            try
            {
                EncProforma Consulta = db.EncProforma.Where(a => a.NumProforma == proforma.encProforma.NumProforma).FirstOrDefault();

                if (Consulta == null)
                {
                    proforma.encProforma.FecFactura = DateTime.Now;

                    db.EncProforma.Add(proforma.encProforma);

                    await db.SaveChangesAsync();

                    foreach (var det in proforma.detProforma)
                    {
                        det.NumProforma = proforma.encProforma.NumProforma;
                        det.Nompro      = det.Nompro; //db.Productos.Where(a => a.Codpro == det.Codpro).Select(u => u.Nompro).FirstOrDefault();
                        db.DetProforma.Add(det);
                        db.SaveChanges();
                    }
                    transaccion.Commit();

                    resp = new
                    {
                        Success = true
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, resp));
                }
                else
                {
                    throw new Exception("Producto ya existe");
                }
            }
            catch (Exception ex)
            {
                transaccion.Rollback();
                // EncuestasRegistroController.GuardarBitacoraTxt(ex.Message);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public async Task <HttpResponseMessage> PutAsync([FromBody] Proforma cambio)
        {
            var transaccion = db.Database.BeginTransaction();

            try
            {
                if (cambio.encProforma.NumProforma == null || cambio.encProforma.NumProforma == "")
                {
                    throw new Exception("Proforma no existe");
                }

                EncProforma pc = db.EncProforma.Where(a => a.NumProforma == cambio.encProforma.NumProforma).FirstOrDefault();
                if (pc == null)
                {
                    throw new Exception("Proforma no existe");
                }


                db.Entry(pc).State = EntityState.Modified;

                pc.CodCliente = cambio.encProforma.CodCliente;
                pc.CodUsuario = pc.CodUsuario;
                pc.FecFactura = DateTime.Now;
                pc.SubTotal   = cambio.encProforma.SubTotal;
                pc.Descuento  = cambio.encProforma.Descuento;
                pc.Impuesto   = cambio.encProforma.Impuesto;

                var dt = db.DetProforma.Where(a => a.NumProforma == pc.NumProforma).ToList();


                foreach (var item in dt)
                {
                    db.DetProforma.Remove(item);
                    await db.SaveChangesAsync();
                }


                foreach (var det in cambio.detProforma)
                {
                    det.NumProforma = cambio.encProforma.NumProforma;
                    det.Nompro      = db.Productos.Where(a => a.Codpro == det.Codpro).Select(u => u.Nompro).FirstOrDefault();
                    db.DetProforma.Add(det);
                    db.SaveChanges();
                }
                db.SaveChanges();

                resp = new
                {
                    Success = true
                };
                transaccion.Commit();

                return(Request.CreateResponse(HttpStatusCode.OK, resp));
            }
            catch (Exception ex)
            {
                transaccion.Rollback();
                // EncuestasRegistroController.GuardarBitacoraTxt(ex.Message);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }