@apmuthu, I was right. The problem was not of PHP.

This Post helped me. STACK OVERFLOW

now facurlrest.php looks like below

<?php
// FrontAccounting Bridge REST Test Script
// Author: Ap.Muthu
// Website: www.apmuthu.com
// Release Date: 2012-11-28

include_once "fabridge.php";

$method = isset($_GET['m']) ? $_GET['m'] : 'g'; // g, p, t, d => GET, POST, PUT, DELETE
$action = isset($_GET['a']) ? $_GET['a'] : '';
$record = isset($_GET['r']) ? $_GET['r'] : '';
$filter = isset($_GET['f']) ? $_GET['f'] : false;

$data =  array(
      'trans_type' => '10',
      'ref'=> 'NoGuia0001',
      'customer_id'=> '78',
      'branch_id'=> '78',
      'location'=> 'DEF',
      'deliver_to'=> 'ABC, S.A. DE C.V.',
      'delivery_date'=> '09/11/2019',
      'delivery_address'=> 'Karachi',
      'order_date'=> '09/11/2019',
      'phone'=> '',
      'cust_ref'=> '',
      'comments'=> '',
      'ship_via'=> '1',
      'payment'=> '1',
      'sales_type'=> '1',
      'items'=> array
        (
          0 => array
          (
            'stock_id'=> '2801',
            'description'=> 'iPhone',
            'qty'=> '1',
            'price'=> '100',
            'discount'=> '0'
          ),
          1 => array
          (
            'stock_id'=> '2802',
            'description'=> 'Samsung',
            'qty'=> '1',
            'price'=> '100',
            'discount'=> '0'
          ),
        ),

      );

$data = http_build_query($data);

$output = fa_bridge($method, $action, $record, $filter, $data);

?>

Ok, one more thing.

The current core api module doesn't have the line of code to decode as below.

json_decode($info, true);

So is it assumed that the POST data being sent through api is already decoded by the time it reaches at this point

function sales_add()
{
    $app    = \Slim\Slim::getInstance('SASYS');
    $req    = $app->request();
    $info    = $req->post();

Or something is missed here?

Because without converting the JSON data into PHP Array we can't add it to cart.

Ok, I have created a fresh invoice and the Credited it. It is showing single entry. I have to look into the specific transaction in detail.

I am using PHP Version 5.6.40 on CentOs Linux Cloud.

But I think this is not related to PHP version. Have you given the above output after sending the $data through curl request in API?

In my first post I have shown two outputs of same data.

First one is read at the receiving server of API call. (Not JSON optimized)

Second one is at the Send Server before API call. (JSON optimized)

So If the PHP version is causing the issue then both outputs shall be same.

In my case sending and receiving servers are same server with two different directories.

Can you please retest it with the API Call?

Ok Thanks for pointing this out. But problem doesn't lie here.

Even If I pass following simplest data as given in wiki

$data = json_encode(array(
'firstName'=> 'John',
'lastName'=> 'Doe'
));

$output = fa_bridge($method, $action, $record, $filter, $data);

It is parsed in api/sales.inc as below

function sales_add()
{
    $app    = \Slim\Slim::getInstance('SASYS');
    $req    = $app->request();
    $info    = $req->post();

The variable $info is read as below

Array
(
    [{"firstName":"John","lastName":"Doe"}] => 
)

While it shall be parsed as below

{"firstName":"John","lastName":"Doe"}

Please Check this https://prnt.sc/pvdi0b

Hello,

When a Credit Note is Entered, In inventory/inquiry/stock_movements.php each line is repeated two times as shown in image below.

https://prnt.sc/pvd1o8

@joe my vote for it, please consider.

Using the Latest API module (modified by @ApMuthu) and guidance given in Wiki I modified the following file

facurlrest.php

<?php
// FrontAccounting Bridge REST Test Script
// Author: Ap.Muthu
// Website: www.apmuthu.com
// Release Date: 2012-11-28

include_once "fabridge.php";

$method = isset($_GET['m']) ? $_GET['m'] : 'g'; // g, p, t, d => GET, POST, PUT, DELETE
$action = isset($_GET['a']) ? $_GET['a'] : '';
$record = isset($_GET['r']) ? $_GET['r'] : '';
$filter = isset($_GET['f']) ? $_GET['f'] : false;

$data =  json_encode(array(
      'trans_type' => '10',
      'ref'=> 'NoGuia0001',
      'customer_id'=> '78',
      'branch_id'=> '78',
      'location'=> 'DEF',
      'deliver_to'=> 'ABC, S.A. DE C.V.',
      'delivery_date'=> '2019/11/09',
      'delivery_address'=> 'Karachi',
      'order_date'=> '09/11/2019',
      'phone'=> '',
      'cust_ref'=> '',
      'comments'=> '',
      'ship_via'=> '1',
      'payment'=> '1',
      'sales_type'=> '1',
      'items'=> array
        (
          0 => array
          (
            'stock_id'=> '2801',
            'description'=> 'iPhone',
            'qty'=> '1',
            'price'=> '100',
            'discount'=> '0'
          ),
          0 => array
          (
            'stock_id'=> '2802',
            'description'=> 'Samsung',
            'qty'=> '1',
            'price'=> '100',
            'discount'=> '0'
          ),
        ),

      ));


$output = fa_bridge($method, $action, $record, $filter, $data);

?>

The $data is being read at modules/api/sales.inc at Line: 256 as below

Array
(
    [{"trans_type":"10","ref":"NoGuia0001","customer_id":"78","branch_id":"78","location":"DEF","deliver_to":"ABC,_S_A__DE_C_V_","delivery_date":"2019\/11\/09","delivery_address":"Karachi","order_date":"09\/11\/2019","phone":"","cust_ref":"","comments":"","ship_via":"1","payment":"1","sales_type":"1","items":] => Array
        (
            [{"stock_id":"2802","description":"Samsung","qty":"1","price":"100","discount":"0"}] => 
        )

)

While the Correct JSON Presentation of this Data shall be

{"trans_type":"10","ref":"NoGuia0001","customer_id":"78","branch_id":"78","location":"DEF","deliver_to":"ABC, S.A. DE C.V.","delivery_date":"2019\/11\/09","delivery_address":"Karachi","order_date":"09\/11\/2019","phone":"","cust_ref":"","comments":"","ship_via":"1","payment":"1","sales_type":"1",
"items":[{"stock_id":"2802","description":"Samsung","qty":"1","price":"100","discount":"0"}]}

How to handle this?

Due to wrong presentation of JSON Data I am not able to apply json_decode($data, true).

However, I have tested the api successfully by manually putting the correct presentation of this data on modules/api/sales.inc

Regards.

One of my client has reported this problem. Here is the ledger of his Walk In Customer.

All Transactions are being shown Knocked Off, But the total of Charges and Debits gives a difference of -36000.

Since this is Walk in Customer so Payment is settled then and there and the same is being reflected that Not a Single Transaction in itself has a balance.

But How shall I interpret this -36000?

Even the Customer Transaction Inquiry is showing the Balance of -36,000

If I see this report with Show Balance = Yes then it gives the Ending Balance of -36,000.

The client says there is no Dues or Extra Payments from this customer as all Individual Transactions are being Knocked Off.

The ledger is complete from the Day1 till date.

Hello @popsicles12

It is very important to know for all of us that why and when the standard cost of an item changes. FA tries to keep the weighted average of the material cost so that the Inventory Valuation reflecting in Trial Balance shall be same as that of in the Inventory Valuation Report.

FA does this by calling update_average_material_cost function from 5 different places in FA.

1. When a Stock Movement is Voided. Even if Location Transfer is Voided. (As per my understanding on Location Transfer Void this function shall not be called because Location Transfer doesn't affect the overall cost of the Item in FA)

2. When Stock Adjustment is Done either positive or negative if the Cost of Adjustment is manually changed to differ from the existing standard cost.

3. When the GRN of Item is recorded.

4. When a Purchased Item is Returned to Supplier

5. When the Direct Supplier Invoice is Recorded.

You can search the said function in FA to find out its location.

You can create a New instance of FA and do random operations to find out the change in Standard Cost and Log it to find out the behaviour of FA.

Q#3: You can do manual feeding of Standard Cost if you totally disable the call of this function in FA.

please go through this post https://frontaccounting.com/punbb/viewtopic.php?id=8157

You can also go through this post https://frontaccounting.com/punbb/viewtopic.php?id=8184

You can go through this post https://frontaccounting.com/punbb/viewtopic.php?id=8238

These problems were discussed in detail earlier.

We are hoping that in FA 2.5 these problems will be handled properly.

Change the Price List to Wholesale on this document and then add Line items

187

(15 replies, posted in Reporting)

@joe, @barbarian has already done some work available in github for upgrading reporting folder with latest TCPDF. You can check that

https://frontaccounting.com/punbb/viewtopic.php?id=8216

The problem is that when same window is opened at two different computers then the next available reference is picked by the system which is same for both users.

Whoever lucky to process earlier will be through but later will see this message due to same reference usage.

In order to overcome this you need to do some changes is core references.inc

The function is_new_reference() shall be customized to return the newest reference irrespective of reference number on the form being picked by system

189

(8 replies, posted in Report Bugs here)

Try using this module FA SMTP Mailer

190

(5 replies, posted in FA Modifications)

@naeem you may need to edit purchasing/includes/ui/po_ui.inc and grn_ui.inc and some other core files to get it working.

@joe, which module. I couldn't locate

192

(1 replies, posted in Reporting)

Actually dimension is not mandatory in all transactions that hit customer balances. specially Customer Payments has no option of Dimensions selection.

So I think your desired report needs alot of changes in the core.

Thanks, got it

Hello,

Can anyone help me to know the option to control the retention of PDF reports in company/x/pdf_files folder. I can see that such report files are removed after sometimes. Which option is controlling this?

195

(21 replies, posted in Wish List)

Thanks my pleasure. Looking forward to your findings

196

(21 replies, posted in Wish List)

Ok now if Invoice is digested for the time being lets discuss Purchases.

Practically and Logically if a Manufacturer (ABC) sells a Candy to a Non Registered Retailer (Xehroz) @ Rs. 70 then then invoice shall reflect as below

Inventory                  70
       GRN Account                      70


GRN Account            70
17% Tax                  11.9
3%   AT                    2.1
2%   ET                    1.4
            Payable                          85.40

But What I am understanding that even the ABC Supplier is Invoicing at 70, but he is applying All Taxes on MRP i.e. 100. Is that Right? as below

Inventory                  70
       GRN Account                      70


GRN Account            70
17% Tax                  17
3%   AT                    3
2%   ET                    2
            Payable                          92


IN that case wouldn't your Input Tax will always be Equal to Output Tax? If true, then is it necessary to do all this accounting of Taxes as Retailer? Simply you can record all your purchases @ 92 and record all your sales @ 122 and your Rs. 30 Profit will be there and you have no Tax Liabilities. Any way I raised this point just to understand your need to Record all taxes.


Now lets come to your problem. If any way you need to record all Purchase Taxes on MRP then we will have to modify FA Purchases to link it to the MRP. MRP can be defined as a Sales Type Retail in FA and can be used for calculating Tax Purchases.

It will have no Adverse impact on Input and Output Tax working. It will show something like THIS

197

(21 replies, posted in Wish List)

My previous solution is self explanatory depending on your statement that you want to setup this for Retailer.

Retailer shall always sell the product on MRP. 100 was taken for simplicity. It can be any number but it shall be MRP.

And your all taxes apply on MRP.

As a retailer the case will be very similar to Registered Buyer invoice for candy and non candy.

And this solution is without any hack.

198

(21 replies, posted in Wish List)

Yes, this is achievable if the Price Before Tax is set to 100 PKR and Resulting Net Price to the Buyer is calculated as a discount say 15% of MRP = 85 PKR.

A little modification in the Invoice Write() function to link the Tax Calculations to MRP instead of Resulting Net Price can achieve this.

199

(21 replies, posted in Wish List)

Case 1: Non Registered Buyer with Candy

Case 2: Non Registered Non Candy

Case 3: Registered Buyer with Candy

Case 4: Registered Buyer with Non Candy


Is this exactly what you want?

200

(21 replies, posted in Wish List)

xehroz wrote:

First situation
The Manufacturer sell this to it's registered customer (In this step to a Retailer) at following rate
90+17+2=109
90 Goes into COGS account for that product
17 goes to Sales Tax Account for that product (this can be passed on / Claimable)
2 goes to "Extra Tax" account for that product (this can also be passed on further to next customer  / Claimable)

Question # 1: Are we trying to setup this Tax System for the Manufacturer or Distributor or Retailer? I am assuming we are doing this for Manufacturer.

Understanding # 1: MRP = 100 and all Taxes are being applied on MRP on each intermediary selling steps (irrespective of the selling price at each step ** ) till it reach End Consumer. Right?

** for e.g. This Candy's Manufactured Cost could be 70. It was the sold to the Retailer at 90 but the taxes are applied keeping MRP as a base.

Objection # 1: If Manufacturer is selling at 90+17+2 then 90 Can be the Purchase Price of Retailer but it can't be the COGS for Manufacturer. The COGS can be 70 as mentioned above.


xehroz wrote:

Second situation
The Manufacturer sell this to it's Un-registered customer (In this step to a Retailer) at following rate
90+17+3+2=112
90 Goes into COGS account for that product
17 goes to Sales Tax Account for that product (this can be passed on  / Claimable)
3 goes to "Additional Sales Tax" for that product (THIS CAN-NOT BE PASSED ON FURTHER / non-claimable)
2 goes to "Extra Tax" account for that product (this can also be passed on further to next customer / Claimable)

This situation is similar accept the Retailer is Unregistered so he is penalized extra 3%. This 3% is an Output Tax for Manufacturer but Not an Input Tax for the Retailer.

Extra Tax 2% is related directly to the Item Type not the Buyer Type.

Let us first digest the Sales Side then we will discuss the procurement side.

Comment: Normally in Distribution Setup Where MRP is always the Base, the Selling Price to Retailer is also defined as a discounted MRP price. But you didn't mentioned that. If this is possible then it will be much easier to implement this within the current Tax System of FA with small modification.

You didn't mentioned the Fixed Value Rate handling mentioned in This Doc

I have create an online sheet. Please check Click Here