asked on February 4
The code is mostly functional, but I have encountered an issue where date values are not being retrieved correctly until end of function. The dates are stored properly up to the point in code where:
let tableADate = ensureArray(LFForm.getFieldValues({ fieldId: 10 })); let tableBDate = ensureArray(LFForm.getFieldValues({ fieldId: 11 }));
The next part of the code where the dates are supposed to be stored is encountering an issue, as all the values are empty.
const matchingDates = [];
I am not sure where exactly the issue occurs in the code. Since I am new to coding in Laserfiche, I would appreciate any guidance on identifying and fixing this problem.
// Declare arrays to store matching indexes for various tables let matchingTableAIndexes = []; // Table A = Table Less/Plus Amounts not on Ledger let matchingTableBIndexes = []; // Table B = Table Less/Plus Amounts not on Supplier Statement let matchingTableAAIndexes = []; let matchingTableDIndexes = []; // Table D = Table Documents Processed on ERP // Disable fields LFForm.disableFields({fieldId: 8}); LFForm.hideFields({fieldId: 91}); LFForm.disableFields({fieldId: 33}); // Function to compare Table A and Table B function tableAandB() { LFForm.hideFields({ fieldId: 95 }); // Get values from Table A and Table B let tableAInvoice = ensureArray(LFForm.getFieldValues({ fieldId: 14 })).map(value => value.toUpperCase()); // Convert to Uppercase let tableBInvoice = ensureArray(LFForm.getFieldValues({ fieldId: 15 })).map(value => value.toUpperCase()); // Convert to Uppercase let tableAAmount = ensureArray(LFForm.getFieldValues({ fieldId: 18 })); let tableBAmount = ensureArray(LFForm.getFieldValues({ fieldId: 19 })); let tableAStatus = ensureArray(LFForm.getFieldValues({ fieldId: 22 })); let tableBStatus = ensureArray(LFForm.getFieldValues({ fieldId: 23 })); let tableADate = ensureArray(LFForm.getFieldValues({ fieldId: 10 })); let tableBDate = ensureArray(LFForm.getFieldValues({ fieldId: 11 })); LFForm.hideFields({ fieldId: 33 }); // Log initial data from Table A and Table B console.log('Initial Table A Invoices:', tableAInvoice); console.log('Initial Table B Invoices:', tableBInvoice); console.log('Table A Amounts:', tableAAmount); console.log('Table B Amounts:', tableBAmount); console.log('Table A Status:', tableAStatus); console.log('Table B Status:', tableBStatus); console.log('Table A Dates:', tableADate); console.log('Table B Dates:', tableBDate); // Arrays that store different types of values const matchingData = []; const authorizedIndexes = []; const matchingDates = []; const mismatchedAmounts = []; // Reset matching indexes matchingTableAIndexes = []; matchingTableBIndexes = []; // Remove "green" and "orange" CSS Class from all fields in each row in Table A and Table B tableAInvoice.forEach((_, i) => { LFForm.removeCSSClasses({ fieldId: 10, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 14, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 18, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 22, index: i }, "green orange"); }); tableBInvoice.forEach((_, i) => { LFForm.removeCSSClasses({ fieldId: 11, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 15, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 19, index: i }, "green orange"); LFForm.removeCSSClasses({ fieldId: 23, index: i }, "green orange"); }); console.log('Processing Table A...'); // Compare each invoice in Table A with Table B tableAInvoice.forEach((invoiceA, i) => { const amountA = tableAAmount[i]; const statusA = tableAStatus[i]; const dateA = tableADate[i]; // Skip if data is missing if (!invoiceA || !amountA || !statusA) { return; } const bIndex = tableBInvoice.findIndex((invoiceB, j) => invoiceA === invoiceB && tableBStatus[j] ); // If a matching invoice is found in Table B if (bIndex !== -1) { const statusB = tableBStatus[bIndex]; const dateB = tableBDate[bIndex]; const amountB = tableBAmount[bIndex]; // Log matched invoice details console.log(`Matching Invoice Found: ${invoiceA}`); console.log(`Amount A: ${amountA}, Amount B: ${amountB}`); console.log(`Status A: ${statusA}, Status B: ${statusB}`); console.log(`Date A: ${tableADate[i]}, Date B: ${dateB}`); // If both Table A and Table B have 'AUTHORISED' status, mark as authorized if (statusA === 'AUTHORISED' && statusB === 'AUTHORISED') { if (amountA === amountB) { authorizedIndexes.push(i); matchingData.push({ invoice: invoiceA, amount: amountA, status: 'AUTHORISED', date: dateB }); matchingDates.push(dateB); // Apply Green CSS classes to highlight matches LFForm.addCSSClasses({ fieldId: 10, index: i }, "green"); LFForm.addCSSClasses({ fieldId: 14, index: i }, "green"); LFForm.addCSSClasses({ fieldId: 18, index: i }, "green"); LFForm.addCSSClasses({ fieldId: 22, index: i }, "green"); LFForm.addCSSClasses({ fieldId: 11, index: bIndex }, "green"); LFForm.addCSSClasses({ fieldId: 15, index: bIndex }, "green"); LFForm.addCSSClasses({ fieldId: 19, index: bIndex }, "green"); LFForm.addCSSClasses({ fieldId: 23, index: bIndex }, "green"); matchingTableAIndexes.push(i); matchingTableBIndexes.push(bIndex); } else { mismatchedAmounts.push(i); // Apply Orange CSS classes to highlight mismatched amounts LFForm.addCSSClasses({ fieldId: 10, index: i }, "orange"); LFForm.addCSSClasses({ fieldId: 14, index: i }, "orange"); LFForm.addCSSClasses({ fieldId: 18, index: i }, "orange"); LFForm.addCSSClasses({ fieldId: 22, index: i }, "orange"); LFForm.addCSSClasses({ fieldId: 11, index: bIndex }, "orange"); LFForm.addCSSClasses({ fieldId: 15, index: bIndex }, "orange"); LFForm.addCSSClasses({ fieldId: 19, index: bIndex }, "orange"); LFForm.addCSSClasses({ fieldId: 23, index: bIndex }, "orange"); } } // Clear the matching values in Table B tableBInvoice[bIndex] = null; tableBAmount[bIndex] = null; tableBStatus[bIndex] = null; tableBDate[bIndex] = null; } }); // Log final results console.log('Authorized Indexes:', authorizedIndexes); console.log('Matching Data:', matchingData); console.log('Matching Dates:', matchingDates); console.log('Mismatched Amounts:', mismatchedAmounts); console.log('Final Matching Table A Indexes:', matchingTableAIndexes); console.log('Final Matching Table B Indexes:', matchingTableBIndexes); LFForm.showFields({ fieldId: 91 }); LFForm.hideFields({ fieldId: 8 }); populateOtherTable(authorizedIndexes, tableAAmount, tableAStatus, matchingDates); // Populate data in another table }
0
0