Hola a todos
Necesito hacer lo siguiente tengo un metodo en un clase que se llama enviar pedidos que se invoca a traves de un menu donde esta la ocpion de enviar un pedido.
public void enviarPedidos(string strIdPedidos)
{
if (strIdPedidos == "")
{
tblMensajes.Visible = true;
lblMensaje.Visible = true;
lblMensaje.Text = "Debe seleccionar al menos un pedido.";
return;
}
DataSet dsDevoluciones = new DataSet();
IPedidos objPedidos = Factory.CreatePedidos();
Pedidos Pedidos_VO = new Pedidos();
Pedidos_VO.idCliente = mpage.Cliente;
Hashtable htUsuario = (Hashtable)Session["parametros"];
string varnit = htUsuario["VarNitCliente"].ToString();
string varnombrecliente = htUsuario["varNombreCliente"].ToString();
string varNombreUsuario = htUsuario["varNombreUsuario"].ToString();
idUsuarioLogeado = int.Parse(htUsuario["lngIdUsuario"].ToString());
Pedidos_VO.idUsuarioOperacion = idUsuarioLogeado;
Pedidos_VO.idEstado = ConfigurationManager.AppSettings["enviado"];
hddPedido.Value = strIdPedidos;
int pedidosOk = 0;
string pedidosError = "";
string strPedidosOK = "";
string[] arrayPedidos = strIdPedidos.Split(',');
for(int I=0;I< arrayPedidos.Length;I++){
Pedidos_VO.idPedido = arrayPedidos[I].ToString();
switch (objPedidos.modificarEstadoPedidos(Pedidos_VO)) {
case 1:
pedidosOk = pedidosOk + 1;
strPedidosOK = strPedidosOK + arrayPedidos[I].ToString() +",";
break;
default :
pedidosError = arrayPedidos[I].ToString() + " ";
break;
}
}
if (strPedidosOK != "")
strPedidosOK = strPedidosOK.Substring(0, strPedidosOK.Length - 1);
tblMensajes.Visible = true;
lblMensaje.Visible = true;
lblMensaje.Text = "Se enviaron " + pedidosOk + " pedido(s) satisfactoriamente.";
if (pedidosError.Length > 0)
{
lblMensaje.Text = " Los pedidos " + pedidosError + ", No pudieron ser enviados. ";
}
CuPed.LimpiarConsulta();
CuPed.Visible = false;
//envio de correos a las vendedoras
string servidorSmtp = ConfigurationManager.AppSettings["SmtpServer"];
string strRuta = "../" + ConfigurationManager.AppSettings["dirPedidos"];
strRuta = strRuta + "/NS" + DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "-" + mpage.Cliente + ".txt";
Pedidos_VO.idPedido = strPedidosOK;
DataTable dt = new DataTable();
//Requerimiento 6: PEDIDOS POR LINEA DE PRODUCTO - Archivos creados, la siguiente lista generica almacena los archivos creados
List<string> Archivos_Creados = new List<string>();
Archivos_Creados = objPedidos.crearArchivo(Pedidos_VO, Server.MapPath(strRuta), Convert.ToInt32(mpage.Planos_XLinea_Producto)); //Genera planos por línea de producto
MailMessage MiCorreo = new MailMessage();
MailAddress from = new MailAddress(ConfigurationManager.AppSettings["correoSIP"]);
MiCorreo.From = from;
MiCorreo.To.Add(mpage.correoVendedor);
MiCorreo.To.Add(ConfigurationManager.AppSettings["correoASSUL"]);
MiCorreo.Subject = "Pedidos enviados desde nuevoSIP";
try
{
foreach (string Archivo in Archivos_Creados)
{
string strRuta_Inicial = "../" + ConfigurationManager.AppSettings["dirPedidos"] + "/";
int iNS = Archivo.IndexOf("NS");
string strRuta_Final = strRuta_Inicial + Archivo.Substring(iNS,Archivo.Length-iNS);
MiCorreo.Attachments.Add(new Attachment(Server.MapPath(strRuta_Final)));
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
//MiCorreo.IsBodyHtml = true;
MiCorreo.Body = "El cliente " + varnit.ToString() + "-" + varnombrecliente.ToString() + " usuario - "+ varNombreUsuario + " ha enviado " + pedidosOk.ToString() + " pedidos : " + strPedidosOK;
SmtpClient smtp = new SmtpClient();
smtp.Host = servidorSmtp;
smtp.Send(MiCorreo);
string[] arreglo_pedidos = strPedidosOK.Split(',');
foreach (string i in arreglo_pedidos)
{
//CuActa.generarActa(int.Parse((i)), "EN", dsDevoluciones, "");
CuActa_IE.generarActa_IE(int.Parse((i)), "EN", dsDevoluciones, "");
}
}
Pero tengo otra clase que se llama guardar pedido; necesito que cuando el usuario le de clic en guardar le muestre un mensaje donde le diga que si desea enviar su pedido y lo direccione al metodo de la clase enviar con el parametro del numero del pedido.
Adjunto el codigo de la clase guardar
protected void guardarPedido()
{
//veritem= 1;
//txtSubtotal.Text = hddSubtotal;
//txtIVA.Text = hddTotalIVA.Value;
//txtTotal.Text = hddTotal.Value;
DataSet dsDevoluciones = new DataSet();
DataSet dsPedido = new DataSet("Pedido");
DataTable dtProducto = new DataTable("Productos");
dtProducto.Columns.Add("IdProducto", typeof(string));
dtProducto.Columns.Add("Cantidad", typeof(int));
dtProducto.Columns.Add("lngPromProducto", typeof(int));
dsPedido.Tables.Add(dtProducto);
for (int ireg = 0; ireg <= rpLinea.Items.Count - 1; ireg++)
{
Repeater tmp = (Repeater)rpLinea.Items[ireg].FindControl("rpProductos");
for (int i = 0; i <= tmp.Items.Count - 1; i++)
{
if (((HtmlInputText)tmp.Items[i].FindControl("txtDigitado")).Value.Trim() != "")
{
//if (veritem == 1)
//{
// ((HtmlInputText)tmp.Items[i].FindControl("txtDigitado")).Disabled = true;
//}
//else
//{
// ((HtmlInputText)tmp.Items[i].FindControl("txtDigitado")).Disabled = false;
//}
DataRow drdatos = dtProducto.NewRow();
drdatos["IdProducto"] = ((HtmlTableCell)tmp.Items[i].FindControl("IdCod")).InnerText;
drdatos["Cantidad"] = int.Parse(((HtmlInputText)tmp.Items[i].FindControl("txtDigitado")).Value);
drdatos["lngPromProducto"] = ((HtmlTableCell)tmp.Items[i].FindControl("Td1")).InnerText;
dtProducto.Rows.Add(drdatos);
}
}
}
Pedidos Pedidos_VO = new Pedidos();
Hashtable htUsuario = (Hashtable)Session["parametros"];
idUsuarioLogeado = int.Parse(htUsuario["lngIdUsuario"].ToString());
Pedidos_VO.idUsuarioOperacion = idUsuarioLogeado;
if (mpage.pptoValor || mpage.pptoCantidad || mpage.pptoValorL)
{
/*Capturo el perido ppto*/
DateTimeFormatInfo myDTFI = new CultureInfo("es-ES", false).DateTimeFormat;
myDTFI.ShortDatePattern = "dd/MM/yyyy";
myDTFI.DateSeparator = "/";
DataSet dsDetallePeriodoPresupuesto;
if (hddOperacion.Value == "I")
dsDetallePeriodoPresupuesto = DetallePeriodoPresupuesto(System.DateTime.Now.Date);
else
dsDetallePeriodoPresupuesto = DetallePeriodoPresupuesto(Convert.ToDateTime(hddFechaPedido.Value, myDTFI));
if (dsDetallePeriodoPresupuesto.Tables[0].Rows.Count <= 0)
{
lblMensaje.Text = "No hay presupuesto asignado. Consulte al administrador del sistema.";
lblMensaje.Visible = true;
tblMensajes.Visible = true;
tblBuscar.Visible = false;
tblLista.Visible = false;
}
else
{
Pedidos_VO.IdDetallePeriodoPpto = int.Parse(dsDetallePeriodoPresupuesto.Tables[0].Rows[0]["lngIdDetallePeriodo"].ToString());
Pedidos_VO.IdPeriodoPpto = int.Parse(dsDetallePeriodoPresupuesto.Tables[0].Rows[0]["lngIdPeriodo"].ToString());
}
}
string[] idJerarquia ={ "", "" };
Pedidos_VO.fechaPedidoIni = System.DateTime.Now.Date;
Pedidos_VO.pptoAcumula = mpage.pptoAcumula ? "1" : "0";
if (mpage.pptoValor)
{
Pedidos_VO.manejaPpto = "V";
}
else
{
Pedidos_VO.manejaPpto = "N";
}
if (mpage.pptoValorL)
{
Pedidos_VO.manejaPpto = "L";
}
if (mpage.pptoCantidad)
{
Pedidos_VO.manejaPpto = "C";
}
if (mpage.pptoIVA)
Pedidos_VO.PptoIVA = "1";
else
Pedidos_VO.PptoIVA = "0";
Pedidos_VO.idTipoJerarquia = mpage.nivelControlPpto;
switch (mpage.nivelControlPpto)
{
case 1:
if (hddOperacion.Value == "I")
{
idJerarquia = mpage.ccostos.SelectedItem.Value.Split('|');
Pedidos_VO.idJerarquia = int.Parse(idJerarquia[1].ToString());
}
else
{
Pedidos_VO.idJerarquia = int.Parse(hddCcostos.Value);
}
break;
case 2:
if (hddOperacion.Value == "I")
{
idJerarquia = mpage.division.SelectedItem.Value.Split('|');
Pedidos_VO.idJerarquia = int.Parse(idJerarquia[1].ToString());
}
else
{
Pedidos_VO.idJerarquia = int.Parse(hddDivision.Value);
}
break;
case 3:
if (hddOperacion.Value == "I")
{
idJerarquia = mpage.regional.SelectedItem.Value.Split('|');
Pedidos_VO.idJerarquia = int.Parse(idJerarquia[1].ToString());
Pedidos_VO.idUsuarioOperacion = idUsuarioLogeado;
}
else
{
Pedidos_VO.idJerarquia = int.Parse(hddRegional.Value);
Pedidos_VO.idUsuarioOperacion = idUsuarioLogeado;
}
break;
case 4://el presupuesto es por empresa
Pedidos_VO.idJerarquia = mpage.Cliente;
Pedidos_VO.idUsuarioOperacion = idUsuarioLogeado;
break;
}
Pedidos_VO.idCliente = mpage.Cliente;
IPedidos objPedidos = Factory.CreatePedidos();
if (mpage.excederPpto)
Pedidos_VO.ExcederPpto = "1";
else
Pedidos_VO.ExcederPpto = "0";
if (mpage.autorizarPpto)
Pedidos_VO.AutorizarPpto = "1";
else
Pedidos_VO.AutorizarPpto = "0";
if (chkPedTerminado.Checked)
Pedidos_VO.PedidoTerminado = "1";
Pedidos_VO.pedidoExtemporaneo = chkPedExtemporaneo.Checked ? "1" : "0";
Pedidos_VO.PedidoUrgente = chkPedUrgente.Checked ? "1" : "0";
Pedidos_VO.GravadoIva = hddCcGravadoIVA.Value;
Pedidos_VO.observaciones = txtObservacion.Text;
Pedidos_VO.ordencompra = txtordencompra.Text;
bool bolGuardado = true;
string[] Resultado_guardarlinea;
IPptoValorLinea objPptoValorLinea = Factory.CreatePptoValorL();
PptpValorLinea PptoValorLinea_VO = new PptpValorLinea();
bool bolguardarlinea = true;
if (mpage.pptoValorL)
{
foreach (GridViewRow rowItem_g in gvppto.Rows)
{
int valor_ = rowItem_g.RowIndex;
PptoValorLinea_VO.idCliente = mpage.Cliente;
PptoValorLinea_VO.idlinea = Convert.ToInt32(gvppto.Rows[valor_].Cells[0].Text);
PptoValorLinea_VO.pptoAsignado = int.Parse(gvppto.Rows[valor_].Cells[2].Text);
PptoValorLinea_VO.pptoejecutado = int.Parse(gvppto.Rows[valor_].Cells[3].Text);
PptoValorLinea_VO.subtotal = int.Parse(gvppto.Rows[valor_].Cells[4].Text);
PptoValorLinea_VO.total = int.Parse(gvppto.Rows[valor_].Cells[6].Text);
PptoValorLinea_VO.periodo = Convert.ToInt32(gvppto.Rows[valor_].Cells[7].Text);
PptoValorLinea_VO.tperiodo = int.Parse(gvppto.Rows[valor_].Cells[8].Text);
PptoValorLinea_VO.centro = int.Parse(gvppto.Rows[valor_].Cells[9].Text);
if (mpage.pptoValorL)
PptoValorLinea_VO.chrManejaPpt = "L";
else
PptoValorLinea_VO.chrManejaPpt = "N";
if (mpage.excederPpto)
PptoValorLinea_VO.ExcederPpt = "1";
else
PptoValorLinea_VO.ExcederPpt = "0";
if (PptoValorLinea_VO.subtotal > 0)
{
if (PptoValorLinea_VO.pptoAsignado <= PptoValorLinea_VO.subtotal && PptoValorLinea_VO.pptoAsignado >= PptoValorLinea_VO.pptoejecutado)
{
bolGuardado = false;
lblMensaje.Text = "El pedido no fue creado, debido a que sobrepasa el presupuest; favor revise los valores totales de cada linea.";
bolguardarlinea = false;
}
lblMensaje.Visible = true;
tblMensajes.Visible = true;
}
}
if (bolguardarlinea)
{
}
}
string[] Resultado;
if (bolGuardado)
{
if (dsPedido.Tables[0].Rows.Count > 0)
{
if (hddOperacion.Value == "I")
{
string[] idCcostos = mpage.ccostos.SelectedItem.Value.Split('|');
Pedidos_VO.idCCostos = int.Parse(idCcostos[1].ToString());
Resultado = objPedidos.guardarPedidos(Pedidos_VO, dsPedido, "I");
if (mpage.pptoValorL)
{
Resultado_guardarlinea = objPedidos.guardarPedidolinea(PptoValorLinea_VO, dsPedido, "I");
}
//Resultado[0] numero del pedido; Resultado[1] si necesita autoraizacion o si no pudo ser creado
if (Resultado[0] != "0" && Resultado[1] == "0")
{
lblMensaje.Text = "El pedido fue creado con el número " + Resultado[0].ToString();
//Requerimiento 2.0
hddPedido.Value = Resultado[0];
if (chkPedUrgente.Checked)
{
sPedidoUrgente = "1";
}
else
{
sPedidoUrgente = "0";
}
CuActa_IE.generarActa_IE(int.Parse(hddPedido.Value), "EM", dsDevoluciones, sPedidoUrgente);
CuActa_nueva.generarActa_nueva(int.Parse(hddPedido.Value), "PROMEDIO", dsDevoluciones, sPedidoUrgente);
CuActa.Visible = false;
}
else
if (Resultado[1] == "1")
lblMensaje.Text = "El pedido fue creado con el número " + Resultado[0].ToString() + ", pero requiere autorización de presupuesto.";
else
if (Resultado[1] == "2")
{
bolGuardado = false;
lblMensaje.Text = "El pedido no fue creado, debido a que sobrepasa el presupuesto.";
}
lblMensaje.Visible = true;
tblMensajes.Visible = true;
}
else
{
Pedidos_VO.idCCostos = int.Parse(hddCcostos.Value);
Pedidos_VO.IdPerfilUsuario = mpage.idPerfil;
Pedidos_VO.idPedido = lblNumPedido.Text;
switch (objPedidos.modificarPedido(Pedidos_VO, dsPedido))
{
case 0:
hddPedido.Value = lblNumPedido.Text;
lblMensaje.Text = "El pedido fue modificado correctamente.";
CuActa_IE.generarActa_IE(int.Parse(hddPedido.Value), "MO", dsDevoluciones, sPedidoUrgente);
break;
case 1:
lblMensaje.Text = "El pedido fue modificado, pero requiere autoraización de presupuesto.";
break;
case 2:
bolGuardado = false;
lblMensaje.Text = "El pedido no fue modificado, debido a que sobrepasa el presupuesto.";
break;
}
lblMensaje.Visible = true;
tblMensajes.Visible = true;
}
}
else
{
bolGuardado = false;
lblMensaje.Text = "El pedido no fue guardado, debido a que no hay detalle válido";
lblMensaje.Visible = true;
tblMensajes.Visible = true;
}
}
else
{
mpage.filtro.Visible = false;
tblFiltroPed.Visible = true;
btnAdicionar.Visible = false;
btnGuardar.Visible = true;
tblBuscar.Visible = true;
}
if (bolGuardado)
{
/*limpia los campos*/
tblLista.Visible = false;
rpLinea.DataSource = null;
tblBuscar.Visible = false;
tblFiltroPed.Visible = false;
ViewState["htLista"] = null;
}
else
{
mpage.filtro.Visible = false;
tblFiltroPed.Visible = true;
btnAdicionar.Visible = false;
btnGuardar.Visible = true;
tblBuscar.Visible = true;
}
hddClicGuardar.Value = "";
}
Agradezco me ayuden con una pronta respuesta.