Looks like others too have faced this predicament including HackedTeam and others.

One way people have got their account profile hidden thus is because others have deliberately forked their repos repeatedly in a short while. This is one of the methods that corporates and the unscrupulous use to scuttle Open Source and for some devs to prevent others from reaping the benefit of development, participation and / or community splits.

My FA GitHub repo has been hidden from the public by their robot for reasons in the attachment.

Incidentally this happened today and I did not receive any email notification of it.

This is important for the FA repo on GitHub as well and for every GitHub user to rethink on alternatives.

Google Code closes shop to the free public on 2016-01-16 and they currently have a button to migrate to GitHub!

You can post your PHPMailer integration code herein.

First off, the current callback method of deactivating the extensions is simply not working as far as the dropping of the extension's tables are concerned - wonder when was the last time it worked, if ever.

Lines 213 to 225 of the current admin/inst_module.php file are:

    foreach($exts as $i => $ext) {
        if ($ext['package'] && ($ext['active'] ^ check_value('Active'.$i))) {
            if (!$ext['active'])
                $activated = activate_hooks($ext['package'], $comp);
            else
                $activated = hook_invoke($ext['package'], check_value('Active'.$i) ?
                 'activate_extension':'deactivate_extension', $comp, false);
            if ($activated !== null)
                $result &= $activated;
            if ($activated || ($activated === null))
                $exts[$i]['active'] = check_value('Active'.$i);
        }
    }

The second line (first if) above has an XOR (^) which means that the code fragment is executed only if either

  1. the extension was already active or

  2. the activate extension checkbox has just been ticked and submitted

but not both.

The second "if" activates the extension using the direct function activate _hooks() if it was inactive which because of the XOR condition above would mean that the activate extension checkbox had just been ticked. This works correctly and the module gets installed. However, this does not happen through the callback portion of the hook_invoke() function through which it is never called. The use of the direct function activate _hooks() was necessary since the value of the $Hooks global array variable is empty when it enters the activate_extension() method by callback if the hook_invoke() was used.

The "else" of the second "if" triggers the callback only for the deactivate_extension() method when the activate extension checkbox has just been unticked whilst the extension was active. Here, the value of the $Hooks global array variable is empty when it enters the said deactivate_extension() method which exits without executing the deactivation sql if any. It is for this reason that the new direct function deactivate_hooks() was used to do the job.

The esoteric callback method in hook_invoke() seems to make the code quite a bit of a challenge for the average user to comprehend and I was initially blinded to conclude that the said deactivate_extension() method was never called. We should try to use simple and easy to understand constructs for ease of debugging / troubleshooting by the average user for mass trusted adoption.

Steps to reproduce:
1.  Install and activate for one company any extension (currently, only dashboard extension has a drop sql separately) that creates tables and has a means to drop them as well. Alternatively create an extension that only creates one table and then on deactivation drops that table and then install and activate it for one company.
2. Now choose to deactivate it for the company for which it is currently active.
3. Check and find that the newly created table(s) have not been dropped despite deactivation.
4. Use my new function method and then repeat the steps above and you will find successful deactivation with the newly created table(s) dropped.

On going thru the official GitHub FA repo's 8 current forks (2015-07-11), one from Guwahati, India called NanoInformatics seems to be developing a Quality Assured version called Final-Account. User experiences and time are expected provide symbiotic benefits to the FA community.

Good Luck!

3,831

(6 replies, posted in Setup)

If verification is the reason, then an Ajaxable local label display on dropdown selection change should suffice.

3,832

(6 replies, posted in Setup)

It will be difficult to remember everyone's GST number besides they are generally quite long and the drop down select box will become too wide. Better still would be make a short alphabetical code for customers and implement by concatenation.

Ordinarily, you cannot add such transactional attachments in your mail out from FA. Check the link for the attachment and add that in your message template and password protect the folder containing it so that it is clickable to download it in an authorised way.

Check the raw content of any html email successfully received by gmail or yahoo mail and compare it with the mail you send out from FA and see what headers if any are missing and add them in.

I removed the indirect calling using hook_invoke method as the global $Hooks array is empty when it reaches inside the $hooks->deactivate_extension() function just as it does when it reaches inside the $hooks->activate_extension() function which was why the latter was used to overcome it. Unless we get to where and when the global $Hooks array gets populated (or re-initialised / overwritten), we will need this workaround.

Try to use PHPMailer and submit to FA for inclusion when done.

FA uses mail() to send mail and is on the Wiki.

Line 1026 in reporting/includes/pdf_reports.inc:

                        $mail->text($msg . $sender);

can be replaced with:

                        $mail->html($msg . $sender);

if the $msg has html content.

Similar replacement can be done on line 77 in inventory/includes/inventory_db.inc.

3,837

(2 replies, posted in FA Modifications)

Yes: https://jqueryui.com/datepicker/#min-max

  <script>
  $(function() {
    $( "#datepicker" ).datepicker({ minDate: -20, maxDate: "+1M +10D" });
  });
  </script>

Describe what you mean by "look f input parameters". They are listed in reporting/reports_main.php and the reporting/rep708.php does the job.

A Packing List is the closest you would get in a default FA install.
A window envelope with the Invoice / Packing List suitably folded and inserted can suffice too.
Taking it off the FA tables using external scripting is possible and the ERD would assist in this regard.

Add an Attachment is for adding it to the transaction in FA and not to add an attachment to be emailed!

@joe: you can update FA repo with the patch in the 5th post in this thread.

3,842

(16 replies, posted in Reporting)

You might want to use SimpleInvoices to manage each project as a client and then get the summary each month into your FA. You might want to try out my fork of it as well.

3,843

(13 replies, posted in Reporting)

@carmelr: Superb! Thanks.

Wiki-ed it.

1. Constants are defined in includes/types.inc
2. config.php has the Global settings
3. #_sys_prefs table has the company specific variables.
4. Form Inputs are accessed by GET and POST variables and may have names similar to table/field names.
5. Functions are present all over the place in various files and can be differently defined in different files.
6. File inclusions can be nested as well.

Don't worry, it is common to get befuddled at first but as you gain experience in inspecting variables at each point in the codebase for each event you will become more familiar. The community is quite helpful but it is better to search the Wiki / Forum for info before defraying scarce voluntary time resources.

3,845

(0 replies, posted in FA Modifications)

The default.css file in the standard FA themes have their tableheader2 class aligned left which if changed to right would provide for label proximity to input field / display value. Attached is the before and after screenshots.  f a separate tableheader3 class is scripted for the right alignment, it will require a huge set of search and replace. Anyone using this mod please report where it breaks.

3,846

(13 replies, posted in Reporting)

Unfortunately, the values are stored in the tables in a disjoint manner. The full values of amount and tax are stored in #_debtor_trans_details. The "net of discount" values are stored in #_debtor_trans - the last line in the Print Invoice takes it's value for INVOICE TOTAL from here.

You will need a completely different SQL linking the tables appropriately to get what you want. Otherwise, it will need to find a place in the Comments field manually entered which is what I assume you are doing now.!

3,847

(13 replies, posted in Reporting)

Check the transactions (#_debtor_trans) table to see if it shows up there.

rep107.php (Print Invoice) does not show the rate and discounts
rep112.php (Print Receipts) shows the vales as 0 for left to allocate.
ViewGL Transactions shows the values contra-ed as being amounts before tax!
The View Sales Invoice page shows the amount after tax!

3,848

(16 replies, posted in Reporting)

The balances come from a different function. You could however, iterate within the loop using a variable to hold the sum (and the logic of date differences) to achieve what you want.

You have literally opened a can of worms here. Hope FA 2.4 addresses it better. Thanks for stirring up the proverbial hornet's nest and lets see what good comes of it.

You could test out the rep101.php with dimensions and report your findings. I do not see the use of any Dimensions in it.

3,849

(16 replies, posted in Reporting)

A Customer's due is on the whole and not just for a specific dimension. That is why the function get_customer_details() (defined in sales/includes/db/customers_db.inc) is used to get the balances and it does not bother about the dimensions. If you want it to filter by dimension, copy over the function to another name in the rep108.php and put in your dimension filter and call this new function in the rep108.php  instead of the old one.

The attachment is from the demo CoA and it does not illustrate your case and is here only for there report format.

This is probably why the dimensions were not included in this report!

3,850

(13 replies, posted in Reporting)

Use the full original value of the ABC Service Item in the invoice with the cost you would normally charge but use 100% as discount.