예제 #1
0
        private void facturarPublicaciones()
        {
            //de acuerdo a la cantidad de publicaciones que el usuario quiere rendir, se llena una lista auxiliar con las mismas
            for (var a = 0; a <= (Convert.ToInt32(txtCantidad.Text) - 1); a++)
            {
                listaDePublicacionesARendir.Add(listaDePublicacionesAFacturar[a]);
            }

            foreach (Publicacion unaPublicacion in listaDePublicacionesARendir)
            {
                //por cada publicacion de la lista, se obtienen las compras que se realizaron de las mismas
                // y se las convierte en objeto y se las guarda en una lista
                DataSet ds = Compra.obtenerComprasPorCodPublicacion(unaPublicacion.Codigo);

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    Compra unaCompra = new Compra();
                    unaCompra.DataRowToObject(dr);
                    listaDeComprasPorCodPublicacion.Add(unaCompra);
                }


                foreach (Compra unaCompra in listaDeComprasPorCodPublicacion)
                {
                    //cada compra que se realizo de esa publicacion va a ser un nuevo item en la factura
                    Item_Factura itFact = new Item_Factura();
                    itFact.Publicacion = unaPublicacion;
                    itFact.Cantidad    = unaCompra.Cantidad;
                    //el monto del item (comisión) corresponde al precio de esa publicación por el porcentaje
                    //visibilidad por la cantidad de compras que se hicieron
                    itFact.Monto = (unaPublicacion.Precio * unaPublicacion.Visibilidad.Porcentaje) * unaCompra.Cantidad;

                    listaDeItemsPorFactura.Add(itFact);
                }

                DataSet dsOferta = Oferta.obtenerOfertasPorCodPublicacion(unaPublicacion.Codigo);

                foreach (DataRow dr in dsOferta.Tables[0].Rows)
                {
                    Oferta unaOferta = new Oferta();
                    unaOferta.DataRowToObject(dr);
                    listaDeOfertasPorCodPublicacion.Add(unaOferta);
                }

                foreach (Oferta unaOferta in listaDeOfertasPorCodPublicacion)
                {
                    //cada oferta que se realizó de esa publicacion y gano la subasta
                    //va a ser un nuevo item en la factura
                    Item_Factura itFact = new Item_Factura();
                    itFact.Publicacion = unaPublicacion;
                    itFact.Cantidad    = 1;
                    //el monto del item (comisión) corresponde al monto de esa subasta ganada por el porcentaje de visibilidad
                    itFact.Monto = (unaOferta.Monto * unaPublicacion.Visibilidad.Porcentaje);

                    listaDeItemsPorFactura.Add(itFact);
                }

                //el último item factura es el de la publicación en si misma según su costo de visibilidad
                Item_Factura itemPublicacion = new Item_Factura();
                itemPublicacion.Publicacion = unaPublicacion;
                itemPublicacion.Monto       = unaPublicacion.Visibilidad.Precio;
                itemPublicacion.Cantidad    = 1;

                listaDeItemsPorFactura.Add(itemPublicacion);

                listaDeComprasPorCodPublicacion.Clear();
                listaDeOfertasPorCodPublicacion.Clear();
            }

            armarFactura();
        }