Ejemplo de función de retorno en combo con botón de permitir nuevo

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 02:05 PM por David Miralpeix


A la hora de configurar una combo en la que queremos permitir al usuario añadir nuevos elementos, por defecto configuraremos el objeto a crear y el campo de vuelta que se asignará en la combo tras la creación del nuevo elemento.

En algunos casos necesitaremos por ejemplo asignar valores por defecto al objeto de forma que al abrir la ventana del nuevo objeto ya tenga esos valores asignados. En estos casos podremos programar una función que realice esas asignaciones y además en su vuelta añada el valor a la combo.


Esta función conviene guardarla en un fichero con extensión .js en la carpeta custom y subirlo como plugin. De modo que se cargará como una función más de la aplicación y estará disponible en cualquier momento.


Una vez programada y añadida la función deberemos especificar esa función en la sección "Allow New Return Function".


Adjuntamos un ejemplo en la que desde la ficha de un cliente damos la opción de crear y asignarle una domiciliación, por tanto al abrir la domiciliación ya heredará el id del cliente


La llamada a la función sería tal que así (*):

newCustomerDirectDebit({{CustomerId}});


(*) En el caso de que el valor sea un texto, hay que ponerlo entre comillas

newCustomerDirectDebit('{{CustomerId}}');


/**función de retorno para crear nuevas domiciliaciones de pagadores en la customControls dbcombo_CustomersDirectDebits **/
function newCustomerDirectDebit(CustomerId){
    
    flexygo.events.on(this, "entity", "inserted", (e) => {
                            if (e.masterIdentity === "SCH_CustomersDirectDebit") {
                                flexygo.events.off(this, "entity", "inserted");

                                let entity = e.sender;


                                let value;
                                if ("DirectDebitId" && "DirectDebitId" != '') {
                                    value = entity.data["DirectDebitId"].Value;
                                }
                                else {
                                    let config = entity.getConfig();
                                    value = entity.data[config.KeyFields[0]].Value;
                                }
                            
                                $('flx-dbcombo[property="DirectDebitId"]')[0].loadValues(0, false, true, value);
                                $('flx-dbcombo[property="DirectDebitId"]')[0].setValue(value);                               
                                $(document).find('flx-edit[objectname="SCH_CustomersDirectDebit"]').closest(".ui-dialog").remove();
                                
                            }
                        });
                    
    flexygo.nav.openPage('edit','SCH_CustomersDirectDebit',null,'{"CustomerId":"' + CustomerId + '"}','popup800x600',false,$(this));    

    
}

¿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