Themes moved under "Obsolete Features"

The latest version (22.8.9) is moving Themes under Obsolete Features.

Themes will continue to be working the same for foreseeable future. But if you are not using themes at the moment, you should not start using them from now on.

For those that are using themes, I’m looking into what problems themes have been solving and how to solve them differently (using approach that does not require custom programming). One of those solutions has been recent addition of Footers which eliminated a few use-cases for themes. There are more use-cases that I’m looking into.

Anyway, this doesn’t change much. It’s just a signal that themes are no longer going to be recommended anymore. If there is an issue that can be solved by custom theme, it won’t be the solution. Instead we will be looking how to solve it differently.

2 Likes

A post was split to a new topic: Footers for payments, receipts and inter-account transfers

I setup two themes years ago, to achieve the following:

  1. I wanted my company address, VAT info and email address at bottom as footer. Which I believe is now solved with your new footer. Does your footer fix the problem with the footer not working if you print to a pdf printer. Now that I have moved to using my pdf program as a printer, my footer no longer goes to the bottom of an a4 page like it used to with the obsolete internal pdf creator within Manager.

  2. I wanted the form to have a colour scheme. So the table header row is blue, the item rows are grey etc.Text of some content is mainly blue, rest defaulting to standard black colour. So the new system needs to be able to set font colours for different sections like address, custom fields etc. I also created a large line that separates Invoice on LHS and Logo on RHS from the rest of the form. It creates a nice break. So being able to add page line dividers of any thickness and colour would be required.

  3. I also made the table so that it does not have lines on the LHS and RHS of the table and each column. I just found the form looks better if it doesn’t look so grid like. Not sure if this is supported in your new system.

  4. One huge improvement that I made was to show the references in sets of three. So I have Invoice Date, Due Date and Invoice Number where it shows in normal theme. Then to the left of that (with quite a bit of spacing), I have Quote Number and Order Number. The problem with the default theme is that when you have five or six references one below another, it pushes the invoice table a third of the way down the page and you have a lot of wasted space in the middle between the references on the RHS and the client address on the LHS. So if you want to get rid of themes, I would highly recommend that you implement this feature as it makes much better use of spacing on the page. I can provide the coding if you want.

If memory recalls, I had to create two themes - one for Sales Invoices to implement option 4 and the other theme for all other forms. I think some forms did not work with the coding included in option 4. So that is the only problem with my coding for option four.

2 Likes

In my case i was using Custom themes to get the Balance payable using Variables and generate the Dynamic UPI Payment QR code along with Banking details which was getting displayed in bottom session of Sales Quote and Sales Invoice.
Using new footer option i could only able to display static information, will we have an option to generate and display dynemic data?

2 Likes

I used it so my logo took up the whole of my invoice header in the back ground
and I had my footer set up

        <td colspan="10" style="padding: 0 50px;border-left-width: 1px; border-bottom-width: 1px; border-top-width: 1px; border-right-width: 1px;{% if business.logo != null %}background-image:URL({{ business.logo }});background-repeat:no-repeat;background-size:100% 100%;{% endif %}">
            <table style="margin-bottom: 20px">
              
           
              
            </table>
             <table style="margin-bottom: 20px">
              <tr>
                <td>
                 <td style="font-weight: bold; font-size: 18px; padding-Right:55px; text-align: Right">{{  title| replace: "Invoice", " Tax Invoice" | newline_to_br }}</td> 
                    <tr> 
                    <div><b>{{ recipient.name }}</b> {{ recipient.code }}</div>
                    <div>{{ recipient.address | newline_to_br }}</div>
                    <div>{{ recipient.identifier }}</div>
                    
                </td>
                 
                <td style="border-right-width: 1px; padding-right: 20px; text-align: right">
                   
                    {% for field in fields %}
                    <div style="font-weight: bold">{{ field.label }}</div>
                    <div style="margin-bottom: 10px">{{ field.text }}</div>
                     
                    {% endfor %}
                </td>
                  
                <td style="padding-left: 20px; width: 1px; white-space: nowrap">
                    <div style="font-weight: bold">{{ business.name }}</div>
                    <div>{{ business.address | newline_to_br }}</div>
                    <div>{{ business.identifier }}</div>
                      
                </td>
                 
              </tr>
               </td>
               
                     
                     
            </table>
           <tr><td>&nbsp;</td></tr>
        </td>
    </tr>
    <tr>
        {% for column in table.columns %}            
        <td style="font-weight: bold; padding: 5px10px; text-align: {{ column.align }}; border-left-width: 1px; border-bottom-width: 1px; border-top-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}{% if column.nowrap %}; white-space: nowrap; width: 80px{% endif %}">{{ column.label }}</td>
        {% endfor %}
    </tr>
</thead>
<tbody>
    {% for row in table.rows %}
    <tr>
        {% for cell in row.cells %}
        <td style="padding: 5px 10px; text-align: {{ table.columns[forloop.index0].align }}; border-left-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}{% if table.columns[forloop.index0].nowrap %}; white-space: nowrap; width: 80px{% endif %}">{{ cell.text | newline_to_br }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
    {% for column in table.columns %}            
        <td style="border-bottom-width: 1px; border-left-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}">&nbsp;</td>
    {% endfor %}
    {% for total in table.totals %}
    <tr>
        <td colspan="{{ table.columns | size | minus:1 }}" style="padding: 5px 10px; text-align: right{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ total.label }}</td>
        <td style="border-color: #000; border-left-width: 1px; white-space: nowrap; border-right-width: 1px; border-bottom-width: 1px; padding: 5px 10px; text-align: right{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ total.text }}</td>
    </tr>
    {% endfor %}
    {% for field in custom_fields %}
    <tr>
        <td colspan="99">
           
            <div>{{ field.text | newline_to_br }}</div>
        </td>
    </tr>
    {% endfor %}

    {% if emphasis.text != null and emphasis.positive %}
    <tr><td colspan="99"><div style="text-align: center; margin-top: 40px"><span style="color: #006400; border-width: 5px;border-color: #006400;  padding: 10px; font-size: 20px">{{ emphasis.text | upcase }}</span></div></td></tr>
    {% endif %}

    {% if emphasis.text != null and emphasis.negative %}
    <tr><td colspan="99"><div style="text-align: center; margin-top: 40px"><span style="color: #FF0000; border-width: 5px;border-color: #FF0000;  padding: 10px; font-size: 20px">{{ emphasis.text | upcase }}</span></div></td></tr>
    {% endif %}
        
</tbody>
 <tfoot>
    <tr><td colspan="99">
        <div style="text-align: center;  font-size: 14px; padding: 100px 80px;  color: #000000">
            <div style="font-weight: bold">{{ " My policy is not to file unless invoice is paid" }}</div>
            <div>{{ " Please make payments to" }}</div>
            <div>{{ " XXXX X" }}</div>
            <div>{{ "Account  XXXXXXXXXXXXXX" }}</div>
            <div>{{ " And use your Invoice number as a reff number" }}</div>
          <div>{{ " Once I have filed your  returns I will give you a bound set of year end Reports" }}</div>
            <div>{{ "  THANK YOU FOR YOUR CUSTOM" }}</div>
        </div>
    </td></tr>
</tfoot>
 
1 Like

For us it’s about branding and not looking the same with everyone else that will be using the one theme. Appreciate some form of customisation to remain.

1 Like

I provided a summary at No more built-in themes? - #5 by eko

Branding mostly, as indicated above. But, because I’m not interested in having a logo on docs other than invoices, I have a plain theme with the logo section commented out which I use everywhere else.

I also set the max page/table width to 210mm. This is useful when occasionally descriptions get overly long and make the column too wide and so more difficult to cast one’s eyes across.

Edit: Looking at supplier invoices I receive in the construction industry, a fair number use Pastel/Sage without any branding; those who issue a lot of physical invoices, like hardware stores, have their branding preprinted on their paper; I know Xero is terrible with custom invoices (having used it) and compress the logo images so much that it’s better to go unbranded; many other suppliers have a basic logo, mostly on the left, and follow whatever their accounting software allows. Perhaps branding in invoicing is less important for some industries.

1 Like

I support this idea however I doubt it will give us the same level of customization as custom themes ( unless you bake something like https://nicepage.com into manager).

This is my custom theme. I use if statements to split custom fields into two places

I also have other themes with if statements to hide the item names column and show a custom field (which is the item name in another language) then I replace some of the text that I am not happy with the way it is translated.
Not to mention custom styling and coloring for different types of invoices and statments.

Use of Custom Themes comes from the fact that it is then possible to give the invoice a different title, without having to type in the new title each time at [Custom title].
For example {{ title | replace: “Invoice”, “Cash Invoice” }}
So solution could be to make [Custom title] a drop down list that you can fill in yourself.

I use themes mainly for these reasons:

  1. Completely transform the data layout of documents. Example is the Payslip, which is expected by almost everyone in Bahrain to have a 4 column layout and contribution are separately displayed:

  2. Dynamic content. Example, I use themes to create a payment link/QR code that includes the following dynamic content: Balance due, invoice reference, customer name and code. It also disappears when the invoice or statement is paid:




    Another example is to dynamically transform the layout of custom field into tables, which is not only logical and orderly, but also more readable and saves paper:



    The last example also contained green highlight for dynamic content, the table heading changes from “Delivery details” to “Pickup details” based on a custom field selection.

  3. Just like everyone else, branding.

I hope we don’t lose much of the customizability – which is a key feature in Manager for many.

1 Like

Would Form Defaults not work for this?

As far as I understand how Form Defaults works, it does not yet allow you to create multiple invoices. Which is actually logical because otherwise there is no longer a standard (Default).
And I would like to have the possibility to determine per invoice which title they should get. I am currently using three different titles.

I like what you’re suggesting, multiple form defaults per transaction.

1 Like

Ah, OK. I hadn’t realised you were selecting between several different titles.

I use custom themes for a few reasons:

  1. Branding – using our brand colours, fonts, etc. While not strictly necessary for the functioning of our business, I would be very sorry to lose the ability to use our brand colours and styles for our forms.
  2. Positioning custom fields at the top of the form. I understand this can now be achieved without needing a custom theme, although with a quick test I see that the clustering of all fields together is not satisfactory.
  3. Forcing the column header for Quantity to always display as Qty and never as a unit name, to comply with local fiscal device requirements (discussed here). I could change the naming of our inventory items and non-inventory items so that the units are incorporated into the item name, but I much prefer having the units appear in the Quantity column as they do now.
  4. To create an alert and highlight any row using a certain item code. We have two business entities. Let us call them Business A and Business B. Business B has largely replaced Business A, but we still have some old stock in Business A that we sell through our operations in Business B. These items are invoiced separately in Business A, but when we finish a job our staff members usually forget to check and invoice the customer for items from Business A. We have tried several methods to prevent this, but so far the only one that has worked is to create a non-inventory item in Business B called “Business A invoice” and add this to our sales orders for completed jobs. This way, when the staff member calls the customer to tell them the job is completed and what the costs are, the total cost is in one place and nothing is omitted. Our custom theme is built so that every time a staff member opens a sales order or sales invoice with a “Business A invoice” line item, there is an alert and the row has a flashing highlight to remind them to remove this from the final sales invoice and provide the customer with the corresponding invoice from Business A. I concede that it is somewhat crude, and I would be surprised if the developer would accommodate this particular use case, but it works very well for us and we’d have problems if we were forced to stop using it.
1 Like

we use mainly for branding as a lot of others do. I only customise colours based on the “bold theme”.

Ideally I’d like to be able to apply the header and footer of our stationery to everything we produce through manager. I did try to get a customised theme to do this but I couldn’t get the code to work properly.

Is it possible to have the option for a full width image to be inserted in the new footer?
Also can a similar sort of approach be taken for a header as well? the only problem I foresee with the header option is that each business would have a header with a different height which might cause dramas.

1 Like

@lubos
One reason I need the themes customized is so that I can use them to print invoices on a 4" thermal paper, if this becomes obsolete, will there be a way to set the invoices to support POS printers in the future?
Please advise
Prem

2 Likes

I am just starting to learn Themes because I just started using Manager 4-5 days ago. I can say that it is the most helpful and user centric that I have used so far. That said, Themes is quite important. Some reports in accounting are specific to some countries. Since I cannot get to the API, using the Themes allows me to see which objects I can use to create reports. It just take some getting use to.

interesting,

I am using custom themes with heavy modifications. instead of single page quote. i am using it delicately for 3 page proposal.

1= company intro
2= quote
3= TOCs

after that much modifications, PDF buttons doesn’t work anymore, it creates empty file. i have to “print into pdf” and get 3 page proposal PDF file.

not only that, i hv also removed item price from theme and now my quotes theme shows total price only. for invoices i use different theme which create normal invoices without any modification.


@lubos
In my case it will be perfect if you add an option to to add page before actual quote/invoice and a page after that. (with page break option)
before this modification i was using manual page addition, like 1 page (Quote) from manager software and other 2 page (company intro and TOCs) from MS WORD.