/// <summary> /// Carga los detalles de la receta /// </summary> private void CargaReceta(string sFolio) { ////TODO: GT Paso 2: Cuando se recibe una receta para facturar //objeto que contiene la receta string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml"); MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas(); MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion(); MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion(); odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig); /**************** Registrar la partida de la factura *****************/ //Llenar los datos de la partida de la remisión oblReceta = new MedNeg.Recetas.BlRecetas(); //Recuperar datos de la receta mediante el folio enviado oReceta = oblReceta.BuscarRecetaFolio(sFolio); //Recuperar la partida del pedido var oQuery = oblReceta.RecuperarPartidaRecetas(oReceta.idReceta); int iIndiceElemento; decimal dGastoAdministracion=0; //Recorrer el resultado y meterlo al datagridview foreach (MedDAL.DAL.recetas_partida oDetalle in oQuery) { //Buscar si ya existe el producto en la lista, si es así entonces solo se modifica la cantidad surtida, //de lo contrario entonces se crea un renglon nuevo y se incrementa el contador iIndiceElemento = lstDetalleReceta.FindIndex(det => det.iIdProducto == oDetalle.idProducto); if (iIndiceElemento > -1) { lstDetalleReceta[iIndiceElemento].dCantidad += Convert.ToDecimal(oDetalle.CantidaSurtida); } else { //Identificar que precio o monto se debe de enviar acorde a los filtros //si es por gasto de admon relacionado al producto se toma el campo 9 if (chkGtoAdmon.Checked == true && rblGenerarFacturaTipo.SelectedValue=="1") dGastoAdministracion = Convert.ToDecimal(oDetalle.productos.Campo9); if (chkMonto.Checked == true && rblGenerarFacturaTipo.SelectedValue == "1") dGastoAdministracion = Convert.ToDecimal(txbMonto.Text); if (chkPorcentaje.Checked == true && rblGenerarFacturaTipo.SelectedValue == "1") dGastoAdministracion = Convert.ToDecimal(oDetalle.Precio * (Convert.ToDecimal(txbPorcentaje.Text) / 100)); MedNeg.Facturas.BlDetalleFacturaReceta oblDetallePartida = new MedNeg.Facturas.BlDetalleFacturaReceta( Convert.ToInt32(oDetalle.idProducto), oDetalle.productos.Clave1, oDetalle.productos.Nombre, Convert.ToDecimal(oDetalle.CantidaSurtida), Convert.ToDecimal(oDetalle.productos.TasaIeps), Convert.ToDecimal(oDetalle.productos.tipo_iva.Iva), dGastoAdministracion, Convert.ToDecimal(oDetalle.Precio), "", Convert.ToDecimal(0), oDetalle.idLineaCredito, oReceta.idReceta); lstDetalleReceta.Add(oblDetallePartida); iContadorRenglones++; } //Saber si ya se va a mandar a facturar if (iContadorRenglones == odalConfiguracion.iNoMaxRenglonesFactura && cmbModoFactura.SelectedValue == "1") { CrearFactura(lstDetalleReceta, 1); //Re iniciar contadores y listas iContadorRenglones = 0; lstDetalleReceta.Clear(); } } //Si al terminar el foreach el contador de renglones es menor a odalConfiguracion.iNoMaxRenglonesFactura //quiere decir que quedan reglones por facturar es por eso que se requiere nuevamente esta validación if (iContadorRenglones < odalConfiguracion.iNoMaxRenglonesFactura && cmbModoFactura.SelectedValue == "1") { CrearFactura(lstDetalleReceta, 1); //Re iniciar contadores y listas iContadorRenglones = 0; lstDetalleReceta.Clear(); } //JID Si el modo de factura es electronico, hace el proceso con la lista completa if (cmbModoFactura.SelectedValue == "2") { CrearFactura(lstDetalleReceta, 2); //Re iniciar contadores y listas iContadorRenglones = 0; lstDetalleReceta.Clear(); } }
/// <summary> /// Carga los detalles de la receta /// </summary> private void CargaReceta(string sFolio) { //objeto que contiene la receta MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas(); MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas(); oReceta = oblReceta.BuscarRecetaFolio(sFolio); //Recuperar el id de la receta y del usuario Session["sIdReceta"] = oReceta.idReceta; //Llenar los campos del cliente try { txbCliente.Text = oReceta.clientes.Nombre + " " + oReceta.clientes.Apellidos; txbDireccion.Text = oReceta.clientes.Calle + " " + oReceta.clientes.NumeroExt; if (oReceta.clientes.NumeroInt != null) { txbDireccion.Text += "Int: " + oReceta.clientes.NumeroInt; } txbPoblacion.Text = oReceta.clientes.poblaciones.Nombre.ToString() + ", " + oReceta.clientes.municipios.Nombre.ToString() + ", " + oReceta.clientes.estados.Nombre.ToString(); Session["sIdCliente"] = oReceta.idCliente; } catch { //En caso de que no tenga un cliente registrado txbCliente.Text = ""; txbDireccion.Text = ""; txbPoblacion.Text = ""; } //Llenar los datos de la partida de la remisión oblReceta = new MedNeg.Recetas.BlRecetas(); //Recuperar la partida del pedido var oQuery = oblReceta.RecuperarPartidaRecetas(oReceta.idReceta); if (((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Count() > 0) { ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Clear(); } Session["sTotalFactura"] = 0; //Recorrer el resultado y meterlo al datagridview foreach (MedDAL.DAL.recetas_partida oDetalle in oQuery) { oblDetallePartida = new MedNeg.Facturas.BlDetallePartida( Convert.ToInt32(oDetalle.idProducto), oDetalle.productos.Clave1, oDetalle.productos.Nombre, Convert.ToDecimal(oDetalle.CantidaSurtida), Convert.ToDecimal(oDetalle.productos.TasaIeps), Convert.ToDecimal(oDetalle.productos.tipo_iva.Iva), Convert.ToDecimal(oDetalle.Precio), "", Convert.ToDecimal((oDetalle.Precio * oDetalle.CantidaSurtida) + oDetalle.productos.tipo_iva.Iva)); ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Add(oblDetallePartida); Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + Convert.ToDecimal((oDetalle.Precio * oDetalle.CantidaSurtida) + oDetalle.productos.tipo_iva.Iva); } //Hacer el binding de la data al dgvDatos lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString(); dgvPartidaDetalle.DataBind(); }