Script - Asistente de selección de artículos F2.

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

Utilizar el asistente de artículos para complementar procesos personalizados. 


Código VB6:

NOTA: En versiones inferiores a la 4.1.700. El formulario propietario debe tener cargado un objeto en un control de tipo EnlaceObjetos, llamado EObjeto. Ya que el asistente utiliza esa información extrayéndola de Propietario.EObjeto.ObjGlobal. Busca el tipo de objeto (Articulo, Pedido, etc) y en sus propiedades busca el IdDoc.
Solo puede ser llamado desde un formulario de objeto.
A PARTIR DE LA VERSIÓN 4.1.700 PUEDE SER UTILIZADO DESDE CUALQUIER CONTEXTO.

'Este asistente añade líneas de oferta, de acuerdo a la selección de artículos realizada en un grid.
'Llamar al formulario asistente F2 para selección de artículos y cantidades. Llamada al AHORAPROCESO: AsistenteArticulos
'El ejemplo está programado en el formulario de artículo

Sub Initialize()
  gform.Botonera.BotonAdd "Asistente", "pers_botAsistente", , 0, True, 123
  gform.Botonera.activarscripts=True
End Sub

Sub Botonera_AfterExecute(aBotonera, aBoton)
  Select Case aboton.name
    Case "pers_botAsistente"
      AsistentePersonalizado
  End Select
End Sub

Sub AsistentePersonalizado()
    Dim lIdarticulo ' El valor actual del campo
    Dim lPropietario ' El formulario desde donde se abre el asistente
    Dim lArray ' El xArraydb con los Articulos y Cantidades.
    Dim i 'As Integer
    lIdarticulo = "0"
    Set lPropietario = gForm
    Set lArray = gCn.AhoraProceso("AsistenteArticulos",False, CStr(lIdarticulo), lPropietario , "") ' El último parámetro es una sql de selección de artículos
   If Not lArray Is Nothing Then
     If lArray.UpperBound(1) >= lArray.LowerBound(1) Then
       For i = lArray.LowerBound(1) To lArray.UpperBound(1)
         'obtener los resultados de selección:
        MsgBox "IdArticulo: " & lArray(i, 0) & ", Cantidad: " & lArray(i, 1)
      Next
    End If
  End If
End Sub


Código C#:

using AhoraCore;
using AhoraOCX;
using AhoraSistema;
using static AhoraCore.VBA.Interaction;

namespace AhoraScriptsPantalla
{
	public class AhoraCl_frmArticulos : AhoraOCX.AhoraBaseScript
	{

		public void Initialize()
		{
			ICntBotonera botonera = (ICntBotonera)gForm.Controls["Botonera"];
			botonera.BotonAdd("Asistente", "pers_bot_Asistente", "", ETipo_Menu.eTipo_Menu_Boton, true, 123);
			botonera.ActivarScripts = true;
		}


		public void Botonera_AfterExecute(ICntBotonera aBotonera, IAhoraTool aBoton)
		{
			switch (aBoton.Name)
			{
				case "pers_bot_Asistente":
					{
						AsistentePersonalizado();
                        break;
                    }
			}
		}

		private void AsistentePersonalizado()
		{
			string lIdArticulo = "0";
			IForm lPropietario = gForm;
			IXArrayDB lArray = (IXArrayDB)gCn.AhoraProceso("AsistenteArticulos", out _, lIdArticulo, lPropietario, ""); // El último parámetro es una SQL de selección de artículos
			if (lArray != null)
			{
				if (lArray.UpperBound(1) >= lArray.LowerBound(1))
				{
					for(int i = 0;i<= lArray.UpperBound(1);i++)
					{
						MsgBox("IdArticulo: " + lArray[i, 0] + ", Cantidad: " + lArray[i, 1]);
					}
				}
			}
		}

	}
}

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo