I haven't seen a way. I have manually removed them from the bank account table before and the bank trans

2

(3 replies, posted in Report Bugs here)

Nice catch.

3

(9 replies, posted in Items and Inventory)

The drag is just the bulk importing once you have it setup it will be regular use and front will give you accounting plus inventory for free compared to QuickBooks for 40 USD plus inventory 60 USD a month. There are some others as well I don't know if they have inventory

4

(9 replies, posted in Items and Inventory)

Yes, the plugin is different than the table. The key is to make one record in the app. Look at the items table in phpMyAdmin to see how it looks, also, take note of the table structure so your data matches the limits, like 20 characters or less for a field.

Then, export the CSV and fill it with your data. After that, you can save the table backup in SQL if desired (take note of what record number was last entered), and import your CSV; then, your items should be in the table. I think you don't put a header in phpMyAdmin, just data in your CSV. If you make any mistake, just delete the records and import again.

Once you get the hang of it it is pretty easy and you can use it for any sql app or operations.

5

(9 replies, posted in Items and Inventory)

I’ve taken a look at the source code for import_items located here https://github.com/apmuthu/FA24extensions/blob/master/Extensions/import_items/import_items.php. I can see exactly why your import is failing. This specific script is very rigid about how it expects data to be structured.
Here is the breakdown of the issues and how to fix them.

Note: there could be a variation if you are using a different version of the plugin!

1. The Header and Delimiter Mismatch
You mentioned your header looks like this:
ITEM;ITEMCODE;STOCK_ID;Description;Category;units;;MB_FLAG;Currency;Price;
The key code in the file is this

list($type, $code, $id, $description, $category, $units, $qty, $mb_flag, $currency, $price) = $data;

The Issues:
The Separator: You are using semicolons ( ; ), but the PHP code defaults to a comma ( , ).
The Column Count: Your header has 11 potential slots (counting the double semicolon), but the script uses list() to assign exactly 10 variables.
The Script's Internal Map: In the code, the variables are assigned in this specific order:
type (Must be "ITEM")
code (Item Code)
id (Stock ID)
description
category
units (e.g., 'each')
qty (The script uses this column for Dimensions)
mb_flag (B, M, D, or A)
currency
price

2. The Correct CSV Structure
To get "joy" from this import, your CSV file must follow the logic in line 169 of the code. Do not use semicolons unless you manually change the "Field separator" box in the FA interface to a semicolon before hitting import.
Recommended Header (Standard Comma Separated):
TYPE,ITEM_CODE,STOCK_ID,DESCRIPTION,CATEGORY,UNITS,DIMENSION,MB_FLAG,CURRENCY,PRICE
(Note the script skips the first line so header isn't important for import)
Example Data Row:
ITEM,101,101,Widget Pro,Components,each,,B,USD,15.00
Note on MB_FLAG:
B: Bought (Purchased items)
M: Manufactured (Produced in-house)
D: Service (No stock tracking)

3. Why Export "Is anything but CSV"
The code handles exports in a very "raw" way (Lines 112–134). It tries to force a download by echoing strings directly.
If the export looks like gibberish or a messy webpage, it’s usually because the server is appending HTML or notices to the file. When you export, ensure your browser isn't blocking the download and try opening the file in a plain text editor (like Notepad++ or TextEdit) rather than Excel first to see the raw structure.

Troubleshooting Checklist
Column 7 (The "Dummy" or Dimension): In your header, you had two semicolons together (;;). The script interprets that empty slot as the Dimension. If you don't use dimensions, leave it empty but keep the comma there.
Category Name: The CATEGORY in your CSV must match the "Description" of a category already in FA, or the script will try to create a new one using the default GL accounts you selected on the import screen.
Case Sensitivity: The script runs strtoupper($type). Ensure your first column always says ITEM in all caps.

I know you stated you didn't want to use SQL and that is why I mentioned phpmysql it has a graphical user interface to access the database tables like any spreadsheet editor and supports importing and exporting tables of various formats including CSV. It is a very useful tool since you can import and export from any SQL table not just one specific table through a script and do not have to import any SQL statement to do so.

One final note remember that the data must be compatable format that front and the db expects

Example
stock_id varchar(20) Primary Key. This is the unique identifier (e.g., "WIDGET-01"). No spaces are best. Max 20 characters
category_id int Foreign Key. Note that the CSV script asks for a Name, but the table stores an ID. The script does the lookup for you. But it must exist
mb_flag char(1) 1 character: B (Bought), M (Manufactured), D (Service/Dummy), or A (Assembly).
units varchar(20) 20 character max again and Must match an entry in the item_units table (e.g., "each", "hr", "box")..

6

(9 replies, posted in Items and Inventory)

I think I've used the import plugin with items before and it worked. There are 2 import plugins if I remember one just for items? I'll look into it.

On a side note if you want to use myphpadmin (web based SQL tool) it has various output and input including csv and is fairly easy.

7

(0 replies, posted in Accounts Receivable)

I have gone back to my route deliveries plugin to add some more features I desired but didn't have the time for. I've pretty much finished up the next update. just going through the cleanup and documentation part.

One major feature is recurrent transactions. The old core RTX left much to be desired. I think my UI flow is much more logical, it has support for deliveries and invoices, and support for "by day" (every 2 months on the 4th Thursday / weekly on Mon, Tues, Fri). You don't need to mark a template for RTX, you just select the customer and branch, then a sales order list ordered by date comes up. Select one, and there is a pager link to verify. AJAX handles the form to show correct options based on selections.


I think this is something core should have, but it works on a new table structure. I purposely recreated one to be as compatible with the CalDAV format (stripped down) as possible to allow importing events (possible now) and for cal apps to read events (not available yet).

Anyways, is this something you are interested in? @joe @apmuthu, do you want me to make a branch of core, implement it, and maybe make a conversion/copy script from the old table to the new? Or do you want to wait for the module GitHub push update to try it and give the OK before I bother with it?

8

(6 replies, posted in Report Bugs here)

SOLVED: Customer Dropdown Showing Two Selected Options on Edit

Problem: When editing a record, the customer dropdown (`debtor_no`) was incorrectly showing two selected customers. The correct customer ID for the record was present in the `$_POST` data, but the dropdown also selected the record's primary key ID.

Cause: The issue stemmed from how the `$_POST` array was populated during the edit operation. Instead of explicitly setting each form field value from the fetched database row (`$myrow`) to its corresponding associative key in `$_POST`, the entire `$myrow` array was directly assigned to `$_POST`. This resulted in `$_POST` containing both associative keys (column names) and numerical indexes (based on the order of columns fetched).

The `combo_input` function, used to generate the dropdown, was likely accessing the `$_POST` array and inadvertently picking up the value at index `0` (which was the record's primary key `id`) in addition to the correct `debtor_no`. This led to both IDs being included in the `$selected_id` array processed by `combo_input`, causing both options to be marked as `selected` in the HTML.

Fix: To resolve this, ensure that you explicitly set each relevant form field value in the `$_POST` array using the associative keys from your fetched database row.

Incorrect (Causing the Issue):

$_POST = $myrow;

ie. Don't be lazy like me

Correct (Explicitly Setting Values):

$_POST['debtor_no'] = $myrow['debtor_no'];
$_POST['other_field'] = $myrow['other_field'];
// ... and so on for all your form fields

By explicitly assigning the values, you prevent the numerical indexes from being present in the `$_POST` array and thus avoid the `combo_input` function mistakenly selecting the record's primary key ID.

9

(6 replies, posted in Report Bugs here)

Yeah I was looking over and noticed the 3rd example

Line 195 in sales/manage/recurrent_invoices.php

customer_list_row(_("Customer:"), 'debtor_no', null, " ", true);

I was wondering why the space for 3rd arg. It should become true since it has a space but strange.

I'm going to look it over tomorrow there has to be something I'm missing, maybe I'll try another browser. So strange that the generated source has the correct id as selected. Maybe it's a time / buffer issue.

10

(6 replies, posted in Report Bugs here)

I have an issue with customer list row that is strange I don't think there is an issue in the function. I don't know what is going on.

This is how I'm calling it:

customer_list_row(_("Customer:"), 'debtor_no', isset($_POST['debtor_no']) ? $_POST['debtor_no'] : null, false, true);

I'm having an issue with selected_id for editing a form. I have tried manually entering a client as int 3 and string '3' also null since I'm passing update. But, it is not showing selected in the browser. It is giving me a random one. the strangest thing is it shows selected in the source and chrome inspector. have you seen anything like this before? my branch_list is working correctly below it. I have the form wrapped in a div for ajax for a few buttons and everything is working fine there.

This would be weighted average.  There are 3 that I know of FIFO, LIFO, and HIFO. The Cost Basis is your average of all purchases.

Note the IRS changes in inventory now is by wallet. So simplify your setup pick a standard and stick to it. Also I saw in 2026 FIFO will be required.

‘Per wallet’ method
After January 1, 2025, all US taxpayers will be required to use the ‘per wallet’ or ‘per account’ cost basis method. This means that sales of assets have to be matched with cost basis from buys or acquisitions of assets from the same account or wallet, hence ‘per wallet’.

The only way I can think without a mod FIFO could be tracked in FrontAccounting is as a foreign currency account then It would have allocations. but im not sure how it would work.

I will pull the inventory tables in a bit for you if you haven't already

FA should be able to track it as inventory as is I would imagine
Create the inventory locations for each a location needed
- Bitcoin wallet one
- Bitcoin wallet two
- Bitcoin lightning wallet
- Coinbase exchange
Create assets needed under items
- Bitcoin
- US Tether
Use default accounts or create accounts for crypto for better control proper treatment per US GAAP
Inventory -> Digital Assets
Variance -> Gains/Loss Digital assets
Sales -> Sales
COGS -> COGS

Add supplier and track purchases
-Coinbase
-kraken
Add client to track sales
-Coinbase

It will calc your gains or losses for you
With the new US GAAP rules you can mark to market on your balance sheet. Prior it was only record impairments.

I think you adjust with the cost update or just do a general ledger
Debit - digital assets
Credit - gains / losses
Or vice versa

Do you need the import for prior transactions?
Csv? What headings?

@apmuthu I placed a pull request here

https://github.com/apmuthu/FA24extensions/pull/9

Geocoding searching and update tools, Branch GPS table, removed add fields dependency, shipper logging table (optional) records timestamp and delivery gps location from mobile phone. Optimized route delivery in reports and in driver dashboard.

The updated branch is here
https://github.com/trafficpest/FA24extensions/tree/routing/Extensions/route_deliveries

I attached an image of the delivery dash

14

(28 replies, posted in Modules Add-on's)

apmuthu wrote:

Post it here for a good discussion. Mantis participation is sparse but technical. Github is for accepted code after peer review.

https://github.com/apmuthu/FA24extensions/pull/7
@apmuthu

I did those fixes It might still have other issues. in the end, this extension couldnt do what I wanted so I didnt use it to fully test it.

Sure, you can handle this by importing a CSV file. I would think the CSV import transactions module should be able to do this with little or no changes.

The main challenge is tracking the transactions. When using Bitcoin as a payment method with services like LNbits or BTCPayServer, they can send a webhook to your server with the fiat value and the number of inventory units you received. This makes it easy to track the cost basis. It sits in your books as the value you received it for, and then when you sell, you capture the gain or loss.

A typical method is FIFO (First In, First Out), where the gain is applied to the oldest inventory first. You would need to manually enter the sale transaction, and the system (FA, for example) should calculate the gain for you. I know it does this when Bitcoin is treated as a foreign currency.

If you're just monitoring a wallet address, you need something like Electrum Server. For example, I have one set up on a small home server running Debian with Umbrel (Umbrel). You can configure it to monitor wallet(s), record transactions in and out, and calculate gains or losses based on the spot price at the time of the transaction.

There are also many online tax tools for crypto that allow you to import CSV files, and they will handle the calculations for you and prepare the necessary tax forms.

I would be more than willing to help out on this. Most of these things already exist it is a question of FA integration. as a miner your issue is triggering the payout from pool or subsidy if solo miner (unlikely lol) to monitor wallets without a payment platform you could use electrum to monitor wallets on blockchain (I have not done this before everything I have done is payment integrations).

for a woo payment integration use
btcpayserver supports woo already
https://docs.btcpayserver.org/WooCommerce/

Note: I will only work on projects that are related to Bitcoin not "crypto". If it works on bitcoin as well, that is ok. Certain stable coins (fiat security tokens) as well.

In the united states it should be treated as inventory Cost basis

a basic sale
credit -> sales, service, or accounts receivable
debit -> inventory

then Adjust inventory units

a basic purchase
credit -> appropriate expense account
debit -> inventory

then Adjust inventory units

every company could be a bit different. depends if bitcoin is an important part of the business like COGS etc

This already can be done with my strikeout module. It has many payment options.
Stripe,
Paypal,
Lnbits (bitcoin Lightning),
Strike (bitcoin reg + Lightning as local currency no merchant fee),
BTC Pay server (bitcoin and lightning default but will support crypto sh*t coins with add ons)
set how you want to account it as foreign currency or as inventory in the payment options. in front accounting
to add it to my website I use an iframe but it will make QR codes on frontaccounting invoices as well.

to install add and activate strikeout module to your fa installation, activate permission for your user roles you want to access information, go to new payment methods settings and set up. When possible make read / invoice api keys only. you dont need payment permission

https://github.com/trafficpest/FA24extensions/tree/strikeout

OK just putting this out there
XRP, Ripple, & Brad Garlinghouse are a scam. They hold a premade share of the tokens (like securities) and sell to fund the scam that is, possibly even funding you.

Bitcoin is the only relevant true open digital asset with no company just code.

Also the FrontAccounting payment module already exists only lacking in polish. StrikeOut extension supports
Traditional Fiat payments ( through PayPal or Stripe)
Bitcoin exchange ie. (BTC payment but Fiat received) through Strike
Bitcoin (std and lightning) Through lnbits and btc payserver

Now if anyone would want to add a scam coin they are free to download plugins for btcpayserver to support scam coins. The only useful ones I can think of is  Stable coins (digital securities issued, fiat backed)  Like USDC or UST. But this should only be used where banking does not exist or is difficult. It is just trading a digital IOU for fiat in a bank that can be frozen or blocked at anytime or possibly the issuer might not meet reserves for redemtion just like a bank.

FrontAccounting Invoices in the clients currency of choice and if they chose to pay another way strikeout will present them with a qr invoice valued at that fiat amount in the digital asset.

20

(28 replies, posted in Modules Add-on's)

Plaid is a great API to connect to banking institutions and isn't that complicated. I will probably start on it after I finish working on recurring deliveries + auto route optimization.
You are in US so for sure plaid will work for you. That is the drag about global accounting software without adoption of a global standard banking network. (Bitcoin, Cough cough)

Check out plaid here
https://plaid.com

21

(40 replies, posted in Reporting)

I think mail should be the way to go normally but sometimes servers don't have their mail server setup, have deliverability issues, or people just want to send email from a Google account or something will use phpmailer.

22

(28 replies, posted in Modules Add-on's)

We should make a plaid banking plugin. I was thinking and looking into it but didn't feel like doing the work lol!

you could use my strikeout plugin
It will automatically make payment links in the invoice email, PDF, and make a scanable QR on bottom right of the invoice.
This brings the client to a payment page with their balance and when they pay it will be entered in your front accounting automatic.

It supports
Stripe (credit cards, Cash App, EFT, and other payment methods)
PayPal (credit cards, Venmo, and PayPal)
Strike (Bitcoin as USD no strange accounting 0 merchant fee and fraction of percent to client)
lnBits (bitcoin the asset 0 fee self custody)

You can mix and match payments methods

https://strikeoutpay.com/new-payment-integration-module-for-frontaccounting-strikeout/

you can find it on my git
https://github.com/trafficpest/FA24extensions/tree/strikeout/Extensions/strikeout

this post has the core changes to add the link
https://frontaccounting.com/punbb/viewtopic.php?pid=43088#p43088

24

(1 replies, posted in Setup)

I would copy the database then clear the tables you want cust_trans table bank_trans table etc
or create a new one then import the tables (probably more work)
PHPmysql is good and easy way to edit mysql tables

25

(20 replies, posted in Accounts Receivable)

Maybe it doesn't support date in the transaction reference?
I already had my ref setup without a date. So I didn't get that, I only use numbers.
If you want to do that go here in the app.
Setup->Transaction References

then change sales order to '{00001}'

I would like to look into the date thing but don't have the time right now