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(); }