Exemplo n.º 1
0
        private void LoadAssociateLines(string numPedido)
        {
            PortalProContext ctx = new PortalProContext();
            // buscamos la cabecera de pedido relacionada
            Pedido pedido = (from p in ctx.Pedidos
                             where p.NumPedido == numPedido
                             select p).FirstOrDefault<Pedido>();
            string strConnect = ConfigurationManager.ConnectionStrings["PortalProTestConnection"].ConnectionString;
            SqlConnection con = new SqlConnection(strConnect);
            con.Open();
            string sqlb = @"SELECT [PURCHID]
                              ,[LINENUM]
                              ,[ITEMID]
                              ,[NAME]
                              ,[PURCHQTY]
                              ,[PURCHUNIT]
                              ,[PURCHPRICE]
                              ,[LINEAMOUNT]
                              ,[ESTADO]
                              ,[REMAINPURCHPHYSICAL]
                              ,[REMAINPURCHFINANCIAL]
                              ,[FECHARECEPCION]
                              ,[INVENTTRANSID]
                          FROM [dbo].[Cau_PortalPro_VLinPedido]  WHERE [PURCHID] = '{0}';";
            string sql = String.Format(sqlb, numPedido);
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader dr = cmd.ExecuteReader();
            decimal totalPedido = 0;
            decimal totalFacturado = 0;
            while (dr.Read())
            {
                int numLinea = (int)(dr.GetDecimal(1));
                // --
                LinPedido lped = (from lp in ctx.LinPedidos
                                  where lp.NumPedido == numPedido
                                  && lp.NumLinea == numLinea
                                  select lp).FirstOrDefault<LinPedido>();
                if (lped == null)
                {
                    lped = new LinPedido();
                    ctx.Add(lped);
                }
                lped.Pedido = pedido;
                lped.NumPedido = numPedido;
                lped.NumLinea = numLinea;
                lped.InventTransId = dr.GetString(12);
                lped.Descripcion = dr.GetString(3);
                lped.Importe = dr.GetDecimal(7);
                totalPedido += lped.Importe;
                string estado = dr.GetString(8);
                switch (estado)
                {
                    case "Facturado":
                        lped.Estado = "FACTURADO";
                        lped.Facturado = lped.Importe;
                        totalFacturado += lped.Importe;
                        break;
                    case "Recibido":
                        lped.Estado = "RECIBIDO";
                        break;
                    case "Pedido Abierto":
                        lped.Estado = "ABIERTO";
                        break;

                }
                if (!dr.IsDBNull(11)) lped.FechaRecepcion = dr.GetDateTime(11);
            }
            pedido.TotalPedido = totalPedido;
            pedido.TotalFacturado = totalFacturado;
            try
            {
                ctx.SaveChanges();
            }
            catch (Exception ex)
            {
            }
            dr.Close();
            ctx.Dispose();
            con.Close();
            con.Dispose();
        }
Exemplo n.º 2
0
 /// <summary>
 /// Modificar una linea de pedido. En el cuerpo del mensaje se envía en el formato adecuado el objeto con los datos modificados
 /// </summary>
 /// <param name="id"> Identificador único de la linea de pedido</param>
 /// <param name="linea">Linea de pedido con los valores que se desean en sus atributos</param>
 /// <param name="tk"> Tique de autorización (Ver 'Login')</param>
 /// <returns></returns>
 public virtual LinPedido Put(int id, LinPedido linea, string tk)
 {
     using (PortalProContext ctx = new PortalProContext())
     {
         // comprobar el tique
         if (!CntWebApiSeguridad.CheckTicket(tk, ctx))
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (LinPedido)"));
         }
         // comprobar los formatos
         if (linea == null || id != linea.LinPedidoId)
         {
             throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
         // primero buscamos si uan linea con ese id existe
         LinPedido lin = (from l in ctx.LinPedidos
                          where l.LinPedidoId == id
                          select l).FirstOrDefault<LinPedido>();
         // existe?
         if (lin == null)
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No hay una linea con el id proporcionado (LinPedido)"));
         }
         int pedidoId = 0;
         // Controlamos las propiedades que son en realidad objetos.
         if (lin.Pedido != null)
         {
             pedidoId = lin.Pedido.PedidoId;
             linea.Pedido = null;
         }
         // modificar el objeto
         ctx.AttachCopy<LinPedido>(linea);
         // volvemos a leer el objecto para que lo maneje este contexto.
         linea = (from l in ctx.LinPedidos
                  where l.LinPedidoId == id
                  select l).FirstOrDefault<LinPedido>();
         if (pedidoId != 0)
         {
             linea.Pedido = (from f in ctx.Pedidos
                             where f.PedidoId == pedidoId
                             select f).FirstOrDefault<Pedido>();
         }
         ctx.SaveChanges();
         return ctx.CreateDetachedCopy<LinPedido>(linea, x => x.Pedido);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Crear una nueva línea de pedido
 /// </summary>
 /// <param name="LinPedido">Objeto a crear, el atributo LinPedidoId lo genera la aplicación y es devuelto en el objeto incluido en la respuesta.</param>
 /// <param name="tk"> Tique de autorización (se debe obtener con la accion Login)</param>
 /// <returns></returns>
 public virtual LinPedido Post(LinPedido linea, string tk)
 {
     using (PortalProContext ctx = new PortalProContext())
     {
         // comprobar el tique
         if (!CntWebApiSeguridad.CheckTicket(tk, ctx))
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (LinPedido)"));
         }
         // comprobar las precondiciones
         if (linea == null)
         {
             throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
         int pedidoId = 0;
         // Controlamos las propiedades que son en realidad objetos.
         if (linea.Pedido != null)
         {
             pedidoId = linea.Pedido.PedidoId;
             linea.Pedido = null;
         }
         // dar de alta el objeto en la base de datos y devolverlo en el mensaje
         ctx.Add(linea);
         if (pedidoId != 0)
         {
             linea.Pedido = (from f in ctx.Pedidos
                             where f.PedidoId == pedidoId
                             select f).FirstOrDefault<Pedido>();
         }
         ctx.SaveChanges();
         return ctx.CreateDetachedCopy<LinPedido>(linea, x => x.Pedido);
     }
 }
Exemplo n.º 4
0
 public virtual bool Put(int idPed, IEnumerable<LinPedido> lineas, string tk)
 {
     using (PortalProContext ctx = new PortalProContext())
     {
         // comprobar el tique
         if (!CntWebApiSeguridad.CheckTicket(tk, ctx))
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Se necesita tique de autorización (LinPedido)"));
         }
         // comprobamos que las lineas no son nulas
         if (lineas == null)
         {
             throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));
         }
         // comprobamos que la factura a la que se asociarán las líneas existe
         Pedido pedido = (from f in ctx.Pedidos
                           where f.PedidoId == idPed
                           select f).FirstOrDefault<Pedido>();
         if (pedido == null)
         {
             throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No existe una factura con el id proporcionado (LinPedido)"));
         }
         // eliminamos las líneas de fcatura anteriores para solo dar de alta estas
         ctx.Delete(pedido.LinPedidos);
         // ahora damos de alta las nuevas lineas 
         decimal totalPedido = 0;
         foreach (LinPedido linea in lineas)
         {
             LinPedido l = new LinPedido()
             {
                 Descripcion = linea.Descripcion,
                 Importe = linea.Importe,
                 PorcentajeIva = linea.PorcentajeIva,
                 Pedido = pedido
             };
             totalPedido += linea.Importe;
             ctx.Add(l);
         }
         pedido.TotalPedido = totalPedido;
         ctx.SaveChanges();
     }
     return true;
 }