1

(16 replies, posted in Report Bugs here)

So its working out now? It is a pretty old plugin, and looks like php has changed to be quite a bit more strict recently.
downgrade php or upgrade FA are best bets

2

(1 replies, posted in Accounts Receivable)

Sounds like FA does exactly what you want.
make a template for the client from a sales order / invoice. Then Template delivery or invoice depending on your sales flow.

Do it like this
make a sales order, direct delivery, or direct invoice then--> open 'sales order inquiry' and set 'tmpl' checkbox

After that anytime you want to recreate it do Template Delivery or Template Invoice

You can also make it recurrent and it will remind you to create it at a years time but I dont like how the UI Select only has the order number in the drop down list and not the customer or branch so I usually don't do this since it takes time to reference.

3

(36 replies, posted in Reporting)

I tested it and it works in my install (though it worked for me prior to the fix)
I have created a mail branch in my extensions repo again with the fix.


https://github.com/trafficpest/FA24ex … tree/mail


@apmuthu I didn't forget to hash the files for init this time if you want to pull such a trivial fix. lol

4

(36 replies, posted in Reporting)

OK, I checked it out for you. (mind you this is not my plugin. So Im just looking through code.)

Looks like there is a typo in class.mail.inc line 131 must be some versions of php will allow defining outside of the class while others do not. (like your 3rd server) I works on mine running PHP 8.0.30

the line should read

$this->phpmailer->CharSet = $this->charset;

Im guessing that should fix it. Let me know

5

(4 replies, posted in Reporting)

I have added delivery note with shipper info on the ticket on the bottom left of the note
Find it in the route_deliveries branch below

https://github.com/trafficpest/FA24exte … Extensions

copy rep_route_deliveries_no_ship to your modules and activate it.

I haven't tested it let me know if it needs anything

6

(4 replies, posted in Reporting)

Is she asking about adding the Shipping Company name(Delivery Person)? I was thinking about adding this to the route delivery report extension.

Currently you can filter by shipping company and print it out but was thinking to put the shipping company/ Person as well. This would be good for service company clients to be aware of who performed the service. In some industries it is required by law even.

I think I will add the clients number on the note as well for the delivery driver.

7

(36 replies, posted in Reporting)

Ok I pushed it to my fork in the mail branch of my repo and made a pull request for @apmuthu repo
you can find it here

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

8

(36 replies, posted in Reporting)

oh good catch! I didn't even notice that.

In the new file in the function pass the $filename then add the check if it is passed like the old version then pass it to 2nd argument in phpmailer addAttachement function. In the end the function should be this

public function attachment($file, $filename=null) {
  if (!isset($filename))
    $filename = basename($file);
  $this->phpmailer->addAttachment($file, $filename);
}

9

(36 replies, posted in Reporting)

Have you tried the FA PHPMailer extension labeled "mail"? it works really good

here it is
https://github.com/apmuthu/FA24extensio … sions/mail

only drag is you have to replace "class.mail.inc" in core with the provided one to make it work. So it will break with updates. This is why I think it should become core even if as an option.

10

(36 replies, posted in Reporting)

FA email is officially broken in PHP 8+ without mods, Gmail  and other mail server accounts are getting way stricter about delivery from mail(). We were getting client complaints. I think it's time to drop mail() and use phpmailer. The SMTP mail extension using phpmailer still works like a charm even in 8+ why not just include it in core? It is GNU LGPL 2.1

OK, It is all set to go there are two branches of route_deliveries

https://github.com/trafficpest/FA24extensions/tree/route_deliveries_no_ship
This works with current version of FA it has no shipper(driver) filter option available

https://github.com/trafficpest/FA24extensions/tree/route_deliveries
This version has a shipper filter by using adding an argument to a core FA function. The core change is below

https://github.com/trafficpest/FA/tree/shippers_branch
This is FA with the small function addition to filter shippers

Thank you hope this will be of use for others especially service industries

Sorry about the end if I was going to make a if statement if the table exists not to drop but to alter. But didn't get around to it.

Don't merge the route delivery plug in from my git yet.yesterday I corrected one bug and added a feature. I'll post here when it is pushed.

@Poncho I didn't know branches were optional that's a good heads up. Thank you for the plug-in it got my routing software going really easy. I needed branches to be able to support customers with multiple delivery locations. It now is routing and putting in order a hundred slips in an instant. This will save considerable time daily!

I just noticed in the include customer reporting Excel report the join has to be with branch code now to prevent branch duplicates in the query.

The Customer Additional Information screen requires a customer and branch to be set to add, update, or delete additional fields.

***Warning read the readme*** Prior to using id you already have an addfields_cust table in your database

repo is here git branch is additional_fields_w/branches
https://github.com/trafficpest/FA24extensions/tree/additional_fields_w/branches
https://github.com/trafficpest/FA24extensions/tree/master/Extensions/additional_fields

A new column `cust_branch_no` as 2nd primary key, was added to addfields_cust . I created new functions maintaining the old. I wasn't sure how the author @poncho wanted to go with it.

you could allow null in branch_no but I dont see why since FA creates a branch when you create a customer automatically.
You could use the `all branches` option. copy the add_field info to all branches in the customer you are working on.

I needed branches for the route_delivery extension I made. I have a few clients that have multiple delivery locations, under one account (branches)

14

(2 replies, posted in Wish List)

You should consider something else for point of sale and  connect it to your front accounting for full featured accounting. You could consider woocommerce or open cart for open and just have it on a tablet connected to wifi.

# README.md

## Dependencies
This plugin relies on the Additional Fields module to function. Please ensure 
it is installed before use.

## Installation
1. Unzip the files into your FrontAccounting modules directory, or
   Install it directly from the repository on FrontAccounting (if available).
2. In FrontAccounting, activate it in `Install/Active Extensions` under the 
   `Setup` tab.
3. If needed change the `access setup` to use reports.


## Usage
To use this plugin:
1. Add geocodes for clients as an additional field. 
- These geocodes should be set as long,lat (default) or lat,long format. 
  Example: -118.265376,34.376487
- For minimum accuracy, use GPS coordinates with at least 4 decimal places. 
  The industry standard is 6 decimal places, allowing accuracy within 4 square 
  inches on Earth. Avoid using more than 6 places to accommodate location 
  variations when the API calls OSRM. 
2. Run the new report `Route Deliveries` under `Customer` class in `reports`  
- By default, this plugin utilizes the public instance of OSRM, which may have 
data limitations. You can use your own instance if desired.

## Configuration (Config File)
You can adjust more permanent plugin options in the `route_config.php` file 
located in the root of the `rep_route_deliveries` directory. 
The Available options there are:

### field_label
Your custom label name in the FrontAccounting additional_fields extention where 
the GPS data is stored. The Default is 'Geocoding'.

### swap_cords
By default, OSRM expects GPS data in Long,Lat format. Set this to true if your 
data is in Lat,Long format, and the software will swap it accordingly. Ensure 
there are no spaces in your coordinates.

### home_point
GPS location to add to the start of your route. This location MUST be in 
Long,Lat order.

### osrm_url
The API URL of the OSRM instance used for routing data. Replace it with another 
URL if desired. Self hosted has no limits on request size and options.

### km
Set this to true to get kilometers. The default is miles

## Configuration (In App)

### Route Deliveries
With this it turns the routing function on, adds a route log to your report, 
and sorts the delivery slips in route order for you. This report does allow 
print by date that front accounting lacks by default.

### Remove Home Location
Remove the home_point location from the routing. Useful for starting at first 
delivery location.

### Route Linear, Not Roundtrip
By default, the route will be a round trip starting from the home_point or the 
first delivery stop. Set this to generate a route from the first stop 
(oldest delivery) to the last stop (newest).

## Known Limitations
- `additional fields` does not have branch support, So Only one geocode per 
client. If you have clients with more than one branch ie location they should be 
seperated.
- Only one trip is supported, the locations have to connect by roadway. You 
couldnt route deliveries in france and england at the same time.
- Doesn't support Shippers ie. Drivers. FrontAcconting core needs a small change 
I have submitted to the github mirror repo
- Doesn't support more than one shipping location (home point) This would be 
nice to add.

Ok, Sounds good. I wanted to make something that uses your own client geocode data (for accuracy) rather than trying to geocode from an address (rarely works, few free data sources,multiple regions, etc)

For the USA there is a Government data that is good found here
https://geocoding.geo.census.gov/geocoder/

The route delivery extension could have the option of sorting by delivery driver (shipper branch) if this core commit is added (it adds shipper_filter and add get_shipper function args)
https://github.com/trafficpest/FA/tree/shippers_branch

Ill post the readme here it has all the info need to get going and what it can do / options
I have the instance going for you to test. but I can not post the credentials publicly. It has clients data.
let me know if you would like me to email you.

Trying to make FA a little more delivery friendly. Fork is below, branch is shipper_branch. I created a pull request on the github mirror repo. I wanted to add routing for the report with Open street maps project but it needs geocoding of the addresses ie. customer custom field so, I will make that part a module.

https://github.com/trafficpest/FA

18

(57 replies, posted in Installation)

Looks like the repo is down, I cant access it in the web browser either.

StrikeOut has since been worked on and now has a modular payment system. New Payment Methods have been added.

PayPal (includes Venmo, credit cards when applicable)
LNbits Method to receive bitcoin lightning directly.

I have now included a very slightly modified version of frontaccounting that generates Static QR codes on the invoices if you chose StrikeOut as payment link. unfortunately the wiki is a little behind

there is a demo running with a sandboxed paypal and strike module running at

https://btspec.org

note: take care when using LNbits with the frontaccounting module since you invoice in your home currency but the receiving currency is actual bitcoin. You will have to make a bank acct in bitcoin sats. It is not appropriate accounting in most jurisdictions since it is usually treated as property not currency. I will update the front accounting plugin to treat it as inventory and enter the cost basis at the time of payment (the invoice amount).

If anyone has interest in receiving Bitcoin Payments as USD with zero fee to the merchant (you never touch BTC asset). I just created a open source web app written in php under the MIT Lic.

It has a FrontAccounting plugin with automated accounting support. Everything is  completely documented in the git wiki.

It is compatible with payments from any (custodial or non custodial) bitcoin lighting wallet (Cash App, Strike, Blue Wallet etc.) from anywhere in the world.

The git is here:
https://github.com/trafficpest/strikeout

Wiki is here:
https://github.com/trafficpest/strikeout/wiki

Screenshots here:
https://github.com/trafficpest/strikeou … Sceenshots

21

(1 replies, posted in Wish List)

I think it would be useful to add string text field or drop drown box w/options and use strtotime() to add more function to recurrent invoices. If you had the field you could put days in not just dates. ie first monday or last wednesday. This would be really usefull for service based industries that have a regular work week and schedule clients regularly based on day of the week. ie therapists or home service companies.

keep the rest the same month and day with optional field that would calculate the next date after month and day is calculated.

I have integrated Btc pay server for bitcoin payments into frontaccounting. It has web hooks and does the accounting on the backend through sql. if you are interested let me know. I was going to release it as a one click install with frontaccounting as a  docker container for umbrel. so people can easily self host payments and bitcoin node and accounting


https://docs.btcpayserver.org/Deployment/

https://umbrel.com/

Frontaccounting is accounting software not a payment integration. Development should be on accounting issues

Ok so I copied all the persons for each branch and it still fails. There is something else going on here.

/sales/manage/customer_branches.php

will fail and hang on large numbers of branches for clients ( 745 branches)
fetch time for any client increases if more branches are made even for other clients. I think the issue might be is our same crm persons are listed on the other customer branches in crm contacts.

Example
Debtor (MHN Health Net Insurance)
Branch (MHN Patient Jim) -> Crm Person (Patient Jim)

Debtor (Anthem Blue Cross)
Branch (Anthem Patient Jim) -> Crm Person (Patient Jim)

Person is the same that both branches are referencing so they both point to the same ID.

SQL Called on page

SET sql_mode = 'STRICT_ALL_TABLES'
SELECT name, value FROM 0_sys_prefs
SELECT value FROM 0_sys_prefs WHERE name='version_id'
SELECT name, value FROM 0_sys_prefs
SELECT COUNT(*) FROM 0_debtors_master
SELECT COUNT(*) FROM 0_salesman
SELECT COUNT(*) FROM 0_areas
SELECT COUNT(*) FROM 0_shippers
SELECT COUNT(*) FROM 0_tax_groups
SELECT debtor_no, debtor_ref, curr_code, inactive FROM 0_debtors_master  ORDER BY debtor_ref
SELECT COUNT(*) FROM 0_cust_branch WHERE debtor_no='757'
SELECT COUNT(*) FROM (SELECT b.branch_code, b.branch_ref, b.br_name, p.name as contact_name, s.salesman_name, a.description, p.phone, p.fax, p.email, t.name AS tax_group_name, b.inactive
        FROM 0_cust_branch b LEFT JOIN 0_crm_contacts c
            ON c.entity_id=b.branch_code AND c.type='cust_branch' AND c.action='general'
            LEFT JOIN 0_crm_persons p on c.person_id=p.id,0_areas a, 0_salesman s, 0_tax_groups t
        WHERE b.tax_group_id=t.id
        AND b.area=a.area_code
        AND b.salesman=s.salesman_code
        AND b.debtor_no = '757' AND !b.inactive GROUP BY b.branch_code ORDER BY branch_ref) tmp_count
SELECT b.branch_code, b.branch_ref, b.br_name, p.name as contact_name, s.salesman_name, a.description, p.phone, p.fax, p.email, t.name AS tax_group_name, b.inactive
     FROM 0_cust_branch b LEFT JOIN 0_crm_contacts c
            ON c.entity_id=b.branch_code AND c.type='cust_branch' AND c.action='general'
            LEFT JOIN 0_crm_persons p on c.person_id=p.id,0_areas a, 0_salesman s, 0_tax_groups t
      WHERE (b.tax_group_id=t.id
        AND b.area=a.area_code
        AND b.salesman=s.salesman_code
        AND b.debtor_no = '757' AND !b.inactive) GROUP BY b.branch_code ORDER BY branch_ref LIMIT 0, 10
SELECT name, address, debtor_ref
        FROM 0_debtors_master WHERE debtor_no = '757'
SELECT salesman_code, salesman_name, inactive FROM 0_salesman ORDER BY salesman_name
SELECT area_code, description, inactive FROM 0_areas ORDER BY description
SELECT id, description, inactive FROM 0_groups ORDER BY description
SELECT loc_code, location_name, inactive FROM 0_locations WHERE fixed_asset=0 ORDER BY location_name
SELECT shipper_id, shipper_name, inactive FROM 0_shippers ORDER BY shipper_name
SELECT id, name, inactive FROM 0_tax_groups ORDER BY id
SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
            FROM 0_chart_master chart,0_chart_types type
            WHERE chart.account_type=type.id ORDER BY type.class_id,type.id,account_code
SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
            FROM 0_chart_master chart,0_chart_types type
            WHERE chart.account_type=type.id ORDER BY type.class_id,type.id,account_code
SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
            FROM (0_chart_master chart,0_chart_types type) LEFT JOIN 0_bank_accounts acc ON chart.account_code=acc.account_code
                WHERE acc.account_code  IS NULL
            AND chart.account_type=type.id ORDER BY type.class_id,type.id,account_code
SELECT chart.account_code, chart.account_name, type.name, chart.inactive, type.id
            FROM 0_chart_master chart,0_chart_types type
            WHERE chart.account_type=type.id ORDER BY type.class_id,type.id,account_code

Thanks for considering taking a look at this.
a though would be a branch select list with the first option for all branches then the other branches.

I can get it to output by branch by add this if statement to the loop

if ($_POST['BranchID'] == $myrow['branch_code']){
Blah blah do the table stuff here
}

but what is strange is the BranchID select box doesnt update any $_POST data?

only customer select and bank select appear to be working properly. To update $_POST['BranchID'] you have to select the branch then adjust the bank account to update it.

If you change the customer it will select the default first BranchID again so that works ok.