Aceptar sin cerrar en formulario

Buenas tardes estamos desarrollando un formulario para un TPV queremos que al darle aceptar el formulario quede nuevamente en alta. le estamos colocando el comando aceptar sin cerrar y se cierra el formulario como podemos solucionar eso gracias.

Hola worldenterprisevnzl1:

Yo haría lo siguiente:

  1. En la carpeta de interfaz crear una acción:
    Interfaz Acción Ficha Formulario de Alta —> (direccionando a tu formulario de alta; tiene que estar dentro la misma Tabla asociada)
  2. Dentro el formulario de alta:
    2.1 Crear manejador de evento “ACE”. Dentro este manejador de evento crear:
    Interfaz: Aceptar.
    2.2 Crear manejador de evento “BTN_ACE”. Dentro este manejador:
    Interfaz: Ejecutar manejador de evento (ACE);
    Interfaz: Ejecutar acción (formulario de alta)
  3. Vincular el botón de Aceptar del formulario de alta; al manejador de evento BTN_ACE

Saludos cordiales.
Fernando

Muchas gracias ya solucione utilizando este código Java Script

var nuevoRegistro = new VRegister(theRoot);
nuevoRegistro.setTable(theRegisterIn.tableInfo().idRef());
// Se asigna el registro vacío al formulario
var formulario = theRoot.dataView();
formulario.setRegister( nuevoRegistro );
// Situamos el cursor en el primer campo editable
formulario.setFocusToFirst();

También probé lo que me indicaste y trabaja muy bien gracias por el apoyo.

Ahora tengo otro inconveniente en un manejador de evento cambio un campo booleano aparcado a verdadero y con un casillero muestro las facturas aparcadas.

al darle doble click a alguna que este aparcada la me debería tengo que traerme esa factura para poder cobrarla.

Este es el código que estoy usando y no me funciona.

If ( #TOT_FAC > 0 )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, ID, #ID, , , )
Recorrer lista lectura/escritura
Modificar campo ( FAC_G, 4 )
Else
Mensaje ( “No se pueden aparcar facturas en blanco”, Información, 3, )
Crear manejador de objeto ( ret_fac, Casillero LIS_FAC_APA@WenSoft_app, Diálogo, )
// Rem ( Cargar la lista por el indice de partes resolviendo por el input busqueda )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, APA, , , , )
Añadir lista al objeto ( ret_fac )
If ( sysListSize < 1 )
Mensaje ( “No Existen Facturas Aparcadas”, Información, , )
Set retorno proceso = NO
Finalizar proceso
Disparar objeto ( ret_fac, No aplicable, OK )
// Libre
// Rem ( Return ID de la factura )
Get variable local de objeto ( ret_fac, ID_FAC, ID_FAC )
Cargar lista ( VTA_FAC_G@vERP_2_dat, ID, ID_FAC, , , )
Seleccionar ficha por posición ( 1 )
Modificar ficha seleccionada
Modificar campo ( CLT, #CLT )
Modificar campo ( ALM, ALM_SEL_POS )
Modificar campo ( VTA_TAR_G, TAR_SEL_POS )
Modificar campo ( CMR, CMR_SEL_POS )
Modificar campo ( FPG, FPG_SEL_POS )
Modificar campo ( FAC_CAM, #VTA_TAR_G.FAC_DIV )
Interfaz: Guardar la ficha en alta o modificación
Interfaz: Recalcular ( VIS_CAB_VTA_FAC_POS )
Set ( ID_FAC, #ID )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, ID, ID_FAC, , , )
Seleccionar ficha por posición ( 1 )
Modificar ficha seleccionada
Modificar campo ( CJA_BCO_T, CJA_SEL_POS )
Modificar campo ( FAC_G, 1 )
Interfaz: Guardar la ficha en alta o modificación

Si puedes ayudarme te lo agradezco gracias.

Consulta 1, ¿que hace el manejador de evento ret_fac?, no tengo esa data

Consulta 2, No se si estoy en lo correcto, pero en el if inicial escribiría:
If (#TOT_FAC < 0)
Mensaje (“No se pueden aparcar facturas en blanco, …”)
Set retorno proceso = NO
Finalizar proceso
Else…etc (Supongo que estamos en un contexto de ficha, puede aplicar directamente modificar campo, sin cargar lista)

Saludos
Fernando

Saludo Amigo con el manejador de evento ret_fac primero valido antes de aparcar la factura que si no tiene productos no la aparco y la elimino.

luego valido que si tiene el monto de la factura es mayor a 0
en la ficha de extensión busco la factura y la cambio a aparcada.

If ( #TOT_FAC = 0 )
Interfaz: Ejecutar manejador de evento ( BTN_SUP, )
// Rem ( Aparcado directo )
If ( #TOT_FAC > 0 )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, ID, #ID, , , ) ACA APARCO LA QUE ESTA ABIERTA PARA NO PERDERLA MIENTRAS DESAPARCO UNA DE LA LISTA
Recorrer lista lectura/escritura
Modificar campo ( FAC_G, 4 ) *** APARCADA

Crear manejador de objeto ( ret_fac, Casillero LIS_FAC_APA@WenSoft_app, Diálogo, ) ES UN CASILLERO CON LAS FACTURAS APARCADAS

// Rem ( Cargar la lista por el indice de partes resolviendo por el input busqueda )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, APA, , , , )
Añadir lista al objeto ( ret_fac )
If ( sysListSize < 1 )
Mensaje ( “No Existen Facturas Aparcadas”, Información, , )
Set retorno proceso = NO
Finalizar proceso
Disparar objeto ( ret_fac, No aplicable, OK )
// Libre
// Rem ( Return ID de la factura )
Get variable local de objeto ( ret_fac, ID_FAC, ID_FAC )
Cargar lista ( EXT_VTA_FAC_G@WenSoft_dat, ID, ID_FAC, , , )
Seleccionar ficha por posición ( 1 )
Modificar ficha seleccionada
Modificar campo ( CJA_BCO_T, CJA_SEL_POS ) *** CARGO LA CAJA A LA QUE PERTENECE
Modificar campo ( FAC_G, 1 ) *** CAMBIO SU ESTATUS A FACTURADA
Interfaz: Guardar la ficha en alta o modificación

Lo que quiero lograr es que cuando cuando le de clic a una factura de casillero se cierre el mismo y en el formulario del POS se muestre la factura que le di Clic en el casillero.

Al dar clic alguna factura el casillero se queda abierto

en el casillero en un manejador de evento edito los datos con formulario con este código

Leer ficha seleccionada
Set ( ID_FAC, #ID )
Cargar lista ( VTA_FAC_G@vERP_2_dat, ID, ID_FAC, , , )
Seleccionar ficha por posición ( 1 )
Modificar ficha seleccionada con formulario ( VTA_FAC_G_POS@WenSoft_app, )

en el formulario POS que abre se muestran los datos de la factura que le di clic, pero queda el casillero abierto y al momento de cobrar la factura es como si no me actualizara el monto que va quedando por cobrar porque al agregar un nuevo método de pago me muestra siempre el total de la factura.

Casillero con facturas aparcadas

Allí retome la factura 3 para cobrarla

allí esta el casillero detrás no se cerro

Al momento de cobrar coloco 5 en efectivo la factura es de 10 debería estar por cobrar 5

Si agrego otro método de pago me sigue diciendo 10 cuando debería ser 5

eso solo ocurre si desaparco alguna factura.

cuando genero una factura directa si aparcarla trabaja bien.
Mira el ejemplo si desaparcar la factura es de 155 coloque 55 en efectivo y quedo por cobrar 100

Cualquier ayuda te agradezco de ante manos.

Hola worldenterprisevnzla1
Por lo que pude ver el motivo por el que te pasa lo que describes es que estas disparando el nuevo formulario desde el anterior que deseas cerrar y por eso tienes 2 abiertos, debes cambiar la logica.

  • desde un formulario padre, digamos desde donde lanzas el formulario de venta, programa un lanzador de formulario de venta (el de la factura) que espere una variable.

  • desde el formulario hijo (el de la venta que quieres cerrar), cierralo dejando en la variable a devolver un 1 si quieres que se abra otro o un 0 si no quieres que se abra nada.

  • cuando cierres el hijo, el padre comprobará si la variable que devuelve el hijo es 1 o 0 y así este lanzara un nuevo formulario de venta totalmente fresco y el anterior se abrá cerrado.

Eso a grandes rasgos sin entrar en detalles de código

Saludos
Matias de Rimatcom | Desarrollador Certificado 2022