QR Code Generation for Invoice

Manger meets government requirements, I agree.
Manager has the ability to cover most of my business requirements, I agree too.
What I need, ask for and was clear about from the beginning, are some of the non-governmental requirements that I see here in the KSA. You will not find any user from Saudi Arabia who objects to their presence, for example, on the sales invoice (isn’t that a sufficient reason to convince you that they should be implemented), especially as I know It can be implemented and is already exist in Manager, for example (line tax amount in receipts and payments also the sum of the discount).
Of course, I raised this request many times before, you replied in one of them, and you did not show any agree or refuse to implement it. I was and still think that it is just a time and it will certainly be implemented, not because I ask for it, but because all the solutions that can be used to get these requirements are temporary and leads to many violations that we all do not need.

Despite the many possibilities available for us to get customizations as desired by the user such as custom fields, custom themes, extension and other tools, a large part of these auxiliary solutions remain unworkable by a large number of users like me. Finally, I always have this question in my head, “Did I incur an amount of money to get a technical solution to use as an accountant or as a programmer?!”

Dear Mr. @lubos, if we could use extension instead of custom theme could you give us an example of our assistance with the third party whose services we use for a fee and additional costs to obtain special requirements that do not apply to the local market in general?

2 Likes

That coming from you sounded like if Louis Hamilton said flooring a manual Ferrari was a piece of cake. :grin:

I can only speak for myself when I say that I know my limitations and I know I will be going round in circles mostly because of these three problems:

  1. No immediate preview of both the HTML markup or the final document.

  2. The messy environment of using browser debugging. Way too many tabs, panels, minified code, CSS … etc.

  3. Concatenating minified HTML and CSS fragments in JS is a nightmare.

I know for a fact that all but the best of the best of developers will agree that it’s impossible to work this way, let alone accountants and small business owners – myself included.

I’ll be OK with Extensions replacing themes if we can:

  1. Build and edit the bare HTML skeleton of the document without JS.

  2. Be able to immediately see at least the HTML markup render from inside the Extensions edit screen.

  3. Be able to press update without leaving edit mode in order to check the effects on the final document without having to jump around too much so not to get distracted.

  4. Similar to point 1, separate linked and editable CSS style sheets. I know you guys – meaning developers :smirk: – like to separate your files so not to get confused, we want some of that if we are to use JS. This, combined with point 1 will also reduce the need for concatenation, which is a nightmare.

I’m not asking for a full IDE, but some life savers would definitely be nice.

3 Likes

I tried to send the laws issued by the authority and the government as reported by the official media agencies to be implemented by the developers of the manager program, but we are looking at the response. We hope that this solution will be implemented in the near future without delay. We trust the manager’s program and developers that they are doing their best to find solid solutions and not Fragile and unstable solutions in terms of compatibility of solutions with different software, and we thank all the developers who found solutions

@alwakeel I can confirm that Manager matches most of government requirements in KSA, even QR is working correctly with me. also all ZATCA developers instructions submitted to Lubos before and no need to send it again.
In fact I’m talking about non- governmental requirements, it is an individual requirements for my business however I know it is generally required by most of users here in KSA. :rose:

3 Likes

would you be interested to guide me through the application…
i am also from Jeddah, and in ned to use QR coding

Set Country to Saudi Arabia in your business details and QR Code Apperes on your forms.

1 Like

problem is with costume theme…
apparently i can’t have a proper QR code with a costume theme!! please tell me i am wrong…

second… when i create a PDF, its saved without a QR code!!

As discussed earlier in the topic, only the default plain theme supports qr code. Also pdf function is no longer supported.
Please read the the topic completely because all your doubts are probably already answered.

do not use pdf of manager. you just do print then select type of print as PDF, it will give you all what you looking for.

1 Like

dear friends, any one have an idea how to use extension?

Hello @Ibrahim2
You can write extension within the manager.
Go to settings tab- Extensions and wirte the code of extension their ( Use JavaScript to write ).
Currently their is no documentation on extensions.

17 posts were split to a new topic: QR Code Duplicated When Second Language Checked

Extension not avaliable now, with last version 22.3.4, Localization Saudi Arabia.
without Localization of Saudi Arabia it is working well.

Read this topic “last posts” it will help you to know more about the new update for localization and extension using:

Your post is confusing, @Ibrahim2. The QR code capability exists only through the Saudi Arabian localization. Yet you say without the localization it is working well. What do you really mean, not only by “working well” but also by with and without localization?

@Ibrahim2, your screen shots do not explain anything. Localizations are set by selecting a country on the Business Details page in Settings. And you are responsible for performance of custom themes.

you look still not getting my point
ok
when you create new business and select country Saudi Arabia,
go then to Settings, and search for Extensions icon, you will not find it.
this problem happen with last update version 22.3.4
before that it is avaliable,
is it clear now???

@Ibrahim2, this topic is about QR code generation. Why are you writing about the extension icon?

@Ibrahim2 The extension feature is only active if you don’t select any country. It’s not a problem, but the developer decides it like that. So, if you choose a country, the localization (extension script) for that country is activated automatically. We cannot change the localization on our own, but the developer can. If you want to customize localization on your own, don’t select any country and the extension feature will be shown. You can create your custom localization in that extension feature.

you can use this code I have changed

                       <td style="text-align:right; padding-right: 5px; 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>
                    
                    <td style="text-align: center;font-weight: bold; font-size: 18px">{{ title }}
                    <br>
                    {% if business.logo != null %}<div style="text-align: center">
                        <img src="{{ business.logo }}" style="max-height: 225px; max-width: 225px">
                        </div>{% endif %}</td>
                       
                        <td style=" padding-right: 5px; text-align: left">
                        {% for field in fields %}
                        <div style="font-weight: bold">{{ field.label }}</div>
                        <div style="margin-bottom: 10px">{{ field.text }}</div>
                        {% endfor %}
                    </td>
                      
                    
                </tr></table>
                
                <table style="margin-bottom: 20px;text-align: right;"><tr>
                    <td style="padding-left: 20px; padding-top: 10px">
                        <div><b>{{ recipient.name }}</b> {{ recipient.code }}</div>
                        <div>{{ recipient.address | newline_to_br }}</div>
                        <div>{{ recipient.identifier }}</div>
                    </td>
                    
                </tr></table>

                <div style="font-size: 14px; font-weight: bold; margin-bottom: 20px">{{ description }}</div>
            </td>
        </tr>
    
        <tr>
            <td style="font-weight: bold; padding: 5px 10px; text-align: center; border-left-width: 1px; border-bottom-width: 1px; border-top-width: 1px;border-right-width: 1px; width: 1px">#</td>
            {% for column in table.columns %}            
            <td style="font-weight: bold; padding: 5px 10px; 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>
            <td style="padding: 5px 10px; text-align: center; border-left-width: 1px; border-right-width: 1px;width: 1px">{{ forloop.index0 | plus:1 }}</td>
            {% 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 %}
       
        <tr>
        <td style="border-bottom-width: 1px; border-left-width: 1px;border-right-width: 1px;">&nbsp;</td>
        {% 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 %}
        </tr>
        {% for total in table.totals %}
       
        <tr>
            <td colspan="{{ table.columns | size }}" style="padding: 5px 10px; text-align:left{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ total.label }}
            </td>
            <td style="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 style="font-weight: bold; padding-top: 20px">{{ field.label }}
                </div>
                <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>
</table>