Table add row button event trigger

Hi,

I am trying to trigger an event when adding a new row to a table. From what I understand, I just need to add the following to the Child DocType but I cannot get it to work…

frappe.ui.form.on('Board Test', {
    test_procedures_add: function (frm) {
        console.log('Added Test Procedure...');
    },
})

Here are my settings on the Parent DocType…

When I press the Add New button in the table located in the Parent, a Child is added but nothing in the console. Not sure what I am doing wrong, any help is appreciated!

Change Board Test for the parent Doctype name. And try it.

Thanks but that did not seem to work either. Maybe I set something up incorrectly. I am trying to link a Board Test DocType to a Serial No DocType and populate Board Test with some info from the Serial No. Here is what I did…

  1. Created a new DocType named Board Test and set the Module to Manufacturing (same as Serial No, not sure if that matters or not).

  2. I set up Board Test as follows…

  3. Customized Serial No and added a Table…

    • Label: Test Procedures
    • Type: Table
    • Name: test_procedures
    • Options: Board Test
  4. Created a new js script for Board Test and added the following…

    frappe.ui.form.on('Serial No', {
        test_procedures_add: function(frm) {
            console.log('added!');
        }
    });
    

The DocTypes are linking but I do not know how to pass data from Parent to Child. I figured this would happen when pressing Add Row button on the table and fire an event, but maybe this is incorrect? I guess what I am trying to do is set the serial_no field automatically in the Board Test DocType (Child) when it is created from the Serial No DocType (Parent). Not sure if this is possible or not.

Ok, sorry I took so long. If I understand what’s wrong, Here’s what neeeds changing.

  1. In the Board Test Doctype, check the box is Child Table.
  2. Remove the Serial No link field. (Why? read below).

The reason you remove the Serial No link field is because It’s a child Table, and child table by default have a Field named parent that parent field is taken care by Frappe itself. So when you are In a Document from Serial No Doctype and you have your table field. When you fill it / create a new one, frappe behind your back will set the parent fields on the Board Test Doctype, to the current Serial No document name.

I hope I was clear (I doubt it :D). Feel free to ask me again, in case I’m not clear. You can also get help in.

  1. ERPNext Help Public Telegram Group
  2. ERPNext Discord not very active but hopping it picks up.

No worries. So when I check the is Child Table box I no longer have access to the Board Test List. I would like this still for easy reference. I still could not get this to work so I went a different route.

I ended up just changing it to a combination of a Link & Dynamic Link Fields. Then run a custom script to auto-populate the Serial No field in Board Test when creating a new entry.

image

board_test.js:

frappe.model.on("Serial No", "test_results", function(fieldname, value, doc) {
    cur_frm.set_value("serial_no", doc.name);
});

Not sure if this is the best way or not but it works. Thanks for the help. :slight_smile:

[EDIT] Fixed code block above.