Customer Statement | Due Invoices

It is requested to please add option for ‘Due Invoices’ in Customer report tab.

Screen Shot 2021-05-24 at 5.27.58 PM

Unpaid Invoices is an effective tool for following oustanding receivables but it includes all due and not yet due. Manager records both, therefore it was requested to add Due Invoices report so one can make strong follow-up for Due invoices.

That is the purpose of the Aged Receivables report. Or you can look at the Sales Invoice tab. It can be copied to a spreadsheet. Also, there is no such thing as a “Due” invoice in Manager. Read the Guide: Monitor sales invoice status | Manager.

Thank you for correction, I mean ‘Overdue’. We are using Aged Receivables for different purposes. Aged Receivables shows the details of all customers.

We need same report like Unpaid Invoice but that should include only overdue invoice. I think, Manager needs to change some paraments/filer for our request and it can easily be generated.

But what you ask is exactly what the Aged Receivables report is designed to provide. You can also sort and search the Sales Invoice tab listing by customer and status for this information. Why do you need another report for information the program already provides in multiple ways?

As discussed in other disucssions that we need to follow each customer seperately along with arrears and it was guided to use unpaid invoices which we opt and use effectively yet.

We have monthly billing system along with certain annaul fee. In order to spread the burden and address customer cash flows issue annaul bill is break into four equal installments. There are few customer who request for deferment in annaul installments. We understand, this can be managed, if one extends the due date in Sales Invoice tab but Customer Statement - Unpaid Invoices does not exclude these invoices as Unpaid Invoices is programmed to include all unpaid invoice.

In order to manage said circumstance, increase effeciency and productivig in the process and client relationship; we request Customer Statement Overdue Invoice which only shows overdue invoices and we can send statment along with arears to each customer seperately.

in the sales invoices tab you can easily search the terms overdue and the customer name which will give you a list of overdue sales invoices of that particular customer. just print the list directly from the screen (use Ctrl+P in Windows OS).

1 Like

What is wrong with the existing drill-down on the Customer Statement (Unpaid Invoices) report? It clearly lists invoices that are current, as well as aging of overdue invoices:

Why does this not meet your needs?

1 Like

There is no problem with this report. Our requirement changes considering operational dynamics, as I mentioned above, we need to exclude those invoices from the statement for which Customer has seek deferment in time to pay at any future date for which we planned to extend the Due Date in Sales Invoice tab. Therefore, a Statement will include Only Overdue invoices.

Becuase, this includes details of all customers in a single statement. Custom Theme is also not supported.

Considering the guidelines on these and other topics, we opted for Customer Statement - Unpaid Invoices to issue the invoice with arrears. In addition, we used Custom Theme to issue statement (triplicate vouchers) in a single page on landscape.

On as mentioned earlier, operational requirements grows to exclude the deferral payments for these statements (vouchers) and we don’t see any such option in Manager therefore seek your assistance!! and suggested as per our understanding of Manager if ‘Due in x days’ are removed then it would suffice the purpose.

Please let me know, if I need to any further clarification on the requirement.

Then change the due date and the sales invoice will show as current.

No it does not. I specifically referred to the drill-down. Click on the customer’s name on the main report to see a customer-specific report like I showed in my screen shot.

That’s what think for, but we need to exclude future due / not yet due from the statement we are sending to customer.

I just learn that individual statement is also availible. But, as I mentioned earlier we are using custom theme for tripicate copies which not supported here and we designed custom theme in line with Unpaid invoices. Our purpose is not fulfill yet!!

Therefore, we just requested to add another report and I am sure it will also assist other users too.

please understand that this is a unique requirement from you alone and no other users have requested it.
Manager already provides necessary reports suitable for most business. for unique requirements users modify the report outside Manager. the Copy to clipboard function is provided for this reason.

i wonder how many times you yourself would be using such a report.

Your solution is a custom theme.

I modified the plain theme real quick but you can adapt it for you liking:

<table style="padding: 30px; width: 100%">
    <thead>
        <tr>
            <td colspan="99">
                <table style="margin-bottom: 20px; width: 100%"><tr>
                    <td style="font-weight: bold; font-size: 32px; vertical-align: top">{{ title }}</td>
                    {% if business.logo != null %}<td style="text-align: end"><img src="{{ business.logo }}" style="max-height: 150px; max-width: 300px" /></td>{% endif %}
                </tr></table>
                
                <table style="margin-bottom: 20px; width: 100%"><tr>
                    <td style="vertical-align: top">
                        <div style="font-weight: bold">{{ recipient.name }}</div>
                        <div>{{ recipient.address | newline_to_br }}</div>
                        <div>{{ recipient.identifier }}</div>
                    </td>
                    <td style="text-align: end; vertical-align: top">
                        {% for field in fields %}
                        <div style="font-weight: bold">{{ field.label }}</div>
                        <div style="margin-bottom: 10px">{{ field.text }}</div>
                        {% endfor %}
                    </td>
                    {% if business.address != null %}
                    <td style="width: 20px"></td>
                    <td style="width: 1px; border-left-width: 1px; border-left-color: #000; border-left-style: solid"></td>
                    <td style="width: 20px"></td>
                    <td style="width: 1px; white-space: nowrap; vertical-align: top">
                        <div style="font-weight: bold">{{ business.name }}</div>
                        <div>{{ business.address | newline_to_br }}</div>
                        {% for field in business.custom_fields %}
                        <div>{{ field.label }} {{ field.text }}</div>
                        {% endfor %}
                    </td>
                    {% endif %}
                </tr></table>

                <div style="font-size: 14px; font-weight: bold; margin-bottom: 20px">{{ description }}</div>
            </td>
        </tr>
        <tr>
            {% for column in table.columns %}
            <td style="writing-mode: horizontal-tb; border-inline-start-width: 1px; border-inline-start-style: solid; border-inline-start-color: #000; {% if forloop.last == true %} border-inline-end-width: 1px; border-inline-end-style: solid; border-inline-end-color: #000{% endif %}; text-align: {{ column.align }}; font-weight: bold; padding: 5px 10px; border-bottom-width: 1px; border-bottom-color: #000; border-top-width: 1px; border-top-color: #000; border-top-style: solid; border-bottom-style: solid{% if column.nowrap %}; width: 80px{% endif %}">{{ column.label }}</td>
                {% if column.label == 'Overdue' %}{% assign i = forloop.index0 %}{% endif %}
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for row in table.rows %}
            {% unless row.cells[i].text == '-' %}
            <tr>
                {% for cell in row.cells %}
                <td style="writing-mode: horizontal-tb; border-inline-start-width: 1px; border-inline-start-style: solid; border-inline-start-color: #000; {% if forloop.last == true %} border-inline-end-width: 1px; border-inline-end-style: solid; border-inline-end-color: #000{% endif %}; padding: 5px 10px; text-align: {{ table.columns[forloop.index0].align }}; {% if table.columns[forloop.index0].nowrap %}; white-space: nowrap; width: 80px{% endif %}">{{ cell.text | newline_to_br }}</td>
                {% endfor %}
            {% endunless %}
            </tr>
        {% endfor %}
        <tr>
        {% for column in table.columns %}
            <td style="writing-mode: horizontal-tb; border-inline-start-width: 1px; border-inline-start-style: solid; border-inline-start-color: #000; {% if forloop.last == true %} border-inline-end-width: 1px; border-inline-end-style: solid; border-inline-end-color: #000{% endif %}; border-bottom-width: 1px; border-bottom-color: #000000; border-bottom-style: solid">&nbsp;</td>
        {% endfor %}
        </tr>
        {% assign OverdueTot = 0 %}
        {% for total in table.totals %}
            {% unless total.label == 'Current' or  total.label == 'Total' %}
                {% assign OverdueTot = OverdueTot | plus: total.number %}
            {% endunless %}
        {% endfor %}
        <tr>
            <td colspan="{{ table.columns | size | minus:1 }}" style="text-align: end; padding: 5px 10px{% if total.emphasis == true %}; font-weight: bold{% endif %}">Total overdue</td>
            <td style="border-left-width: 1px; border-left-style: solid; border-left-color: #000; border-right-width: 1px; border-right-style: solid; border-right-color: #000; text-align: right; white-space: nowrap; border-bottom-width: 1px; border-bottom-color: #000000; border-bottom-style: solid; padding: 5px 10px{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ OverdueTot }}</td>
        </tr>
        
        {% for field in custom_fields %}
        <tr>
            <td colspan="99">
                <div style="font-weight: bold; padding-top: 20px">{{ field.label }}</div>
                <div>{{ field.text | newline_to_br }}</div>
            </td>
        </tr>
        {% endfor %}

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

                {% if emphasis.text != null and emphasis.negative %}
                <div style="text-align: center; margin-top: 40px"><span style="color: #FF0000; border-width: 5px; border-color: #FF0000; border-style: solid; padding: 10px; font-size: 20px">{{ emphasis.text | upcase }}</span></div>
                {% endif %}
            </td>
        </tr>
    </tbody>
</table>
1 Like

please edit your above post to explain what you have changed in the theme and what it actually does. this would be helpful for other users including me.

We have left other softwares behind and fully integrated all modules in Manager to have ONE system in plance and Manager is fulfulling most of our requirements therefore we are working Live on Cloud Edition with multiple user. With times, requirements changes. I wonder, Manager is suggesting to look for a solution outside the system whereas system has the capacity to perform such task effectively and efficiently.

I have mentioned in other topics, we have more than 2000 students (customers) and this report is used daily by different branches/location with regular intervals. Shortly, more than 100 times in a day!!

We understand the pain and this is the reason we come here to seek Manager’s assistance as now it has gone beyond our control and consumes a lot of time of team members just to address one query as requested from customer end.

sorry but you cannot make progress if you are expecting a one-click solution for everything. it is impossible to fulfil the needs of every individual. take a look at the #ideas category where you can find nearly 200 suggestions most of which would pre-date even the membership of some of the oldest forum members here.

as explained to you many times earlier by a valuable member, Manager already provides the report you need. no matter how many times in a day you require such a report, the details of the same are already available to you from Manager. you are simply expecting a one-click solution with a fancy presentation.

also, the developer has made Custom Reports feature available where users can create their own unique reports. you can search many topics on the forum for ideas on creating custom reports.

This line was inserted to capture the position of overdue column

These two lines were inserted to filter out the current rows

This section replaces the entire old totals section. It filters out “Current” and “Total” totals and calculates the new total.

Unfortunately, I couldn’t access the currency symbol maybe because it isn’t exposed or maybe I just don’t know how. In any case, the currency symbol have to be coded in or removed entirely from theme in case you have foreign currency accounts. It’s also possible to capture it from the “Balance due” column and append it to OverdueTot.

2 Likes

There are many ways to do things, and working outside of Manager isn’t particularly a bad thing. You could connect your spreadsheet program to Manager and from there you could work wonders all without introducing bloat to the software.

And while most user requests are valid, you cannot make Manager the solution to each and every problem because it’s definitely going to make it bloated pretty quickly. I admire the vision of Lubos in that regard – while many other systems would give in to the immense pressure to include each and every niche request, Manager has been razor-focused on performance and simplicity which are the two biggest selling points of Manager if you ask me.

However, I fully agree with you on finding a solution from within Manager itself is far better than manual processing which is why I believe we should thank @lubos for the powerful features put in our hands like themes, custom fields, custom actions and the API.

1 Like

Thank you so much for such clarification.

We understand Manager has the capacity and we are trying to use the same in very effective, efficient and productive way. We have learnt that we belong to service industry with monthly billing to 1000’s of customer which is a serious challange for Manager! but somehow we tried to manage and realized after migrating to Manager.

That’s not true. However, Manager has given the fexibility to transform the user requirement with the support of Custom fields and Theme! and it was managed in that way otherwise it was a Show Stopper for us, as we have to issue invoices along with arears!

We would appreciate, if Manager team can share the parameters of Unpaid Invoices in order to prepare statement from Custom Report; as we tried but could not reach to same results.

One of the limitation is that we cann’t give the access of Custom Reports to Limited User. It was already in Dec, 2020.

Besides, it is also requested to please add Custom Theme support in Custom Report.

Just to avoid these many complexity and understanding Manager’s team effective utilitization of time in bringing effeciencies in other functions; it was requested to just provide a facility extactly with same functions just change the parameters from unpaid to overdue invoice. That’s was the simple solution, I could have think off respecting everyone time and understanding Manager functions so far.

Still, I have no solution have definitely have to follow Manager therefore seek your assistance in any of the aspects to overcome the challanges we are facing.

Themes—whether built-in or custom—are not used to display reports. Themes only format transaction forms, displaying data passed to them according to the type of transaction being displayed. What might look like an exception to this rule is the customer and supplier statements. But while they are listed in the Reports tab, those are actually transaction forms in Manager’s design.

Themes change the appearance and display data in a transaction form. Reports retrieve, process, format, and display data according to hard coding. That is why themes cannot be used for reports.

That’s a serious challenge to every accounting software. The solution is usually to have a separate billing system and batch process the outcomes. But this is where Manager’s rest API shines. You can easily integrate Manager with anything or even design your own.

If I understood your problem, your situation involves issuing monthly invoices in advance each semester or year, but your payments fall at smaller regular intervals of, say, one week or one month.

One solution is to use a custom theme for your statements to adapt them to display exactly what you need. This will work for all customer all the time.

The second solution is to create post dated invoices, or recurring invoices that are due immediately, this way you avoid the entire custom report/situation altogether.

For renegotiated due dates you can copy the delayed invoice once to a current dated credit note and a second time to a new current dated invoice with the revised payment terms. This will have no effect on your sales since both the new invoice and credit note cancel out in the period of revision.

I would personally go with option #2 but I am starting to think that I there might be something that we are all missing something here.

1 Like