Custom fields in partial_invoice_table.php

Hi to all,

I’m from Italy, and I have a special tax system. For the Italian law, I’ve to add a number called “marca da bollo” to each invoice, so I created a custom field and in the pdf template I print the number when I need it.

To make easy for me to detect which invoice has a specific number (“marca da bollo”), I edited the file partial_invoice_table.php, and with the previous custom field system (until version 1.4.10), this part of code worked well:

<th><?php echo lang('client_name'); ?></th>
<th><?php echo "Marca da bollo"; ?></th>
<th style="text-align: right;"><?php echo lang('amount'); ?></th>

...

<td>
  <a href="<?php echo site_url('clients/view/' . $invoice->client_id); ?>" title="<?php echo lang('view_client'); ?>">
     <?php echo $invoice->client_name; ?>
  </a>
</td>
<td>
  <?php echo nl2br($invoice->invoice_custom_id_marca_da_bollo); ?>
</td>
<td class="amount <?php if ($invoice->invoice_sign == '-1') { echo 'text-danger'; }; ?>">
  <?php echo format_currency($invoice->invoice_total); ?>
</td>

Now, obviously, if I try to print the custom field with the new syntax $custom_fields['invoice']['ID marca da bollo'], I get an error telling me that $custom_fields it’s not declared.

My question is: how can I get the custom field provided above and print it in the partial_invoice_table.php file?

Thanks in advance for the collaboration.

Please take a look at https://github.com/InvoicePlane/InvoicePlane/blob/master/application/helpers/pdf_helper.php#L62

Hi, thank you so much!

Adding this fixed the problem for me:

<?php $CI = &get_instance();
$CI->load->model('custom_fields/mdl_custom_fields');
$custom_fields = array(
  'invoice' => $CI->mdl_custom_fields->get_values_for_fields('mdl_invoice_custom', $invoice->invoice_id),
); ?>
<td>
  echo nl2br($custom_fields['invoice']['ID marca da bollo']);
</td>
1 Like

Using code from Custom fields in partial_invoice_table.php, I added columns with custom or looked-up values to either quote and invoice which worked well but when I went to the client form, it crashed complaining about the partial_invoice_table.php or partial_quote_table.php changes I did.

I had to revert all changes to get the client page to work again.

Luckily, the same edits to the dashboard are supported!

I guess this is because the invoice, quote and payments views are ‘linked’ to the client view but do not succeed to fix this dependency.

I’ve found a workaround to fix this issue, you can find the workaround here.

With this fix, I’ve disabled the custom fields in table view when InvoicePlane is displaying the client view and not the invoice view.

I hope it can help.

Brilliant!
With your variable flag method I could add to quotes and invoice partial tables without messing up the corresponding views in the clients pages.

grazie Valentino :wink:

1 Like

Hello,
Thank you for this solution, I was able to add my customs fields in quotes and delete the error in client view, but what if I want this custom field to be shown in client quotes also ?? anybody had another solution ?
PS: I have an old version 1.5.3 that I can’t upgrade because I did a lot of changes.

thank you

Hi. Like valentinocossar, I had a field for invoice notes. I displayed this note (‘Project’) next to ‘Client Name’. This was useful because I could use the ‘Filter Invoices’ search box on Client Name to find a particular Project. Using this thread a few years ago, I was able to view the invoice notes AND client details, but if I did so, the invoice filter didn’t display the Project field (so I would have to choose between filtering Projects or Viewing Client Addresses).

What I need is an ‘if’ statement based on something like whether you are on the clients view or the invoice view. Does anyone know how I might do this?

I think you need to solve this bug to help yourself

^^ can you explain with an example why you need that?

Thanks UnderDog! At first I thought you were being obtuse, but you got me thinking about how the filter form works. Then it was a matter of adding an element to the returned array in the filter/controller/ajax.php file. Just the presence of this element allowed me to conditionally included the custom_field array in the partial_invoice_table.php file. Job done.

1 Like

Ok great job.
InvoicePlane by itself also has projects

I’m trying to figure out why that wasn’t used.
And is it usable to show the projects from that table in your invoices or just rather those custom fields