Question about templates for PDF output

SimpleInvoices Group Forum Forums Fearless359 SimpleInvoices Discussion Group Question about templates for PDF output

Viewing 7 posts - 16 through 22 (of 22 total)
  • Author
    Posts
  • #2250
    marcnyc
    Participant

    Thank you for responding and for your suggestion.

    I’ve tried doing what you suggest and I’ve added the line:

    ‘custom_field1’ => $row[‘custom_field1’],`

    around line 215 in the Inc/Claz/Invoice.php file that I’ve copied into my extensions folder, like so:

                $tableRows[] = [
                    'action' => $action,
                    'index_id' => $row['index_id'],
                    'custom_field1' => $row['custom_field1'],
                    'customer' => $row['customer'],
                    'preference' => $row['preference'],
                    'date' => $row['date'],
                    'total' => $row['total'],
                    'owing' => isset($row['status']) ? $row['owing'] : '',
                    'aging' => $row['aging'] ?? '',
                    'currency_code' => $row['currency_code'],
                    'locale' => preg_replace($pattern,'$1-$2', $row['locale'])
                ];

    …but I am still getting the same error…
    do I need to add a custom_field1 line anywhere else in this file?

    #2251
    marcnyc
    Participant

    I did a bit more digging…
    …your solution works but copying the Inc/Claz/Invoice.php to the extensions directory does NOT work… maybe it’s a bug in the code but the php file is not included…
    I know this because if I made the changes on root/Inc/Claz/Invoice.php file then your soltuion works but if I leave that file un-edited and I put my modified version in root/extensions/MYextension/Inc/Claz/Invoice.php it does not work…
    I’ve also tried putting it in:
    root/extensions/MYextension/templates/Inc/Claz/Invoice.php
    and in:
    root/extensions/MYextension/modules/Inc/Claz/Invoice.php

    None of the locations call the new file in Inc/Claz

    #2252
    fearless359
    Keymaster

    I’m a bit flummoxed with the complication that using namespaces appears to have introduced.

    Given this, the simplest approach might be to add logic in the extension modules\invoices\manage.php file to take the $invoices array and add a loop to run through it, taking the index_id, accessing the Invoice::getOne() method to read the invoice record, pull the custom fields and add them to the row being processed. Effectively updating what Invoice::manageTable() returns with the additional fields. This is kind of ugly, in that it means reading the invoice records twice to display once. But given how namespaces work with autoloading, I can’t think of a more elegant resolution off hand.

    Note that if you to this, you are working with the index_id field to get the invoice. So you need to set the $useIndexId parameter to true.

    • This reply was modified 1 month, 1 week ago by fearless359.
    • This reply was modified 1 month, 1 week ago by fearless359.
    #2255
    marcnyc
    Participant

    Thanks for continuing to provide ideas.
    This method is a bit too complex for my knowledge of PHP, however I was able to find a solution… I don’t know if you read my #2251 reply, but your previous suggestion DOES work, except the inclusion of the Inc/Clazz file DOES NOT work, so there might be a bug in the code whereas it doesn’t look for an Inc/Clazz file in the Extensions dir… you know what I mean?

    #2256
    marcnyc
    Participant

    Just checking in to see whether you had a chance to test this on your end…
    wondering if this is a bug in the code or I’m making a mistake

    #2257
    fearless359
    Keymaster

    I haven’t begun working on the issue of namespaces for extensions (which is what the Inc\Claz path effectively is). I’m currently addressing screen formatting for mobile device presentation which I introduced in the last update with mobile device menu support. I need to complete my work on this before working on extension development issues.

    #2267
    fearless359
    Keymaster

    I’ve developed a solution for this that allows you to use custom field 1 (or could be 2,3 or 4) on the invoice management table screen in place of the preference field. The extension I developed is contained in the attached zip file. I will be supplementing the help information on extension development with this example to assist future users. Note that you need to download the current version of SI (version 2026.00.04) to load a change I made to the change of Invoice class private methods to be protected so the attached solution can simply replace the methods that need to be changed thus minimizing what you have to possibly change when loading future updates. Hope this helps.

    Attachments:
Viewing 7 posts - 16 through 22 (of 22 total)
  • You must be logged in to reply to this topic.