In chart_master table if I change the data type of account_code field from Varchar to int, will it cause any anomaly in relationships with other tables?
I have kept all Account Codes as Integer
It's much more fun, when you can discuss your problems with others...
You are not logged in. Please login or register.
FrontAccounting forum → Posts by boxygen
In chart_master table if I change the data type of account_code field from Varchar to int, will it cause any anomaly in relationships with other tables?
I have kept all Account Codes as Integer
There is an inactive column in Table 0_crm_persons which is inactive.
Is it deliberately set inactive or by mistake.
I need to have this activated in sales/manage/customer_branches.php Contacts tab.
Yes this is a serious issue I have also been facing for long time. The issue Arises when the transaction is recorded (almost for all transactions like sales, purchases, gl transactions) but the Reference Number is not incremented to then next one in the Table reflines
This doesn't happen every time but some time. No behavior could be recorded that after how many transactions this fails to increment.
yes
While creating Direct Invoice, the system automatically creates Direct GRN. This GRN is supposed to be the source for Direct Invoice. The src_id is actually the id of GRN
Shouldn't we customize the function
safe_exit() as below in dimension_entry.php
function safe_exit()
{
global $path_to_root;
$trans_no=isset($_GET['AddedID']) ? $_GET['AddedID'] : $_GET['UpdatedID'];
hyperlink_no_params("", _("Enter a &new dimension"));
echo "<br>";
hyperlink_no_params($path_to_root . "/dimensions/inquiry/search_dimensions.php", _("&Select an existing dimension"));
echo "<br>";
hyperlink_no_params($path_to_root . "/admin/attachments.php?filterType=40&trans_no=$trans_no", _("&Add Attachment"));
display_footer_exit();
}
@Braath Waate you are right
I have modified import_multiplejournalentries.php to add Journal Entries for Customers and Suppliers
<?php
/**********************************************
Author: Tom Hallman
Name: Import Multiple Journal Entries/Deposits/Payments v2.3
Free software under GNU GPL
***********************************************/
$page_security = 'SA_CSVMULTIJOURNALIMPORT';
$path_to_root="../..";
include_once($path_to_root . "/includes/ui/items_cart.inc");
include_once($path_to_root . "/gl/includes/db/gl_db_trans.inc");
include_once($path_to_root . "/includes/session.inc");
add_access_extensions();
// Turn these next two lines on for debugging
//error_reporting(E_ALL);
//ini_set("display_errors", "on");
//--------------------------------------------------------------------------------------------------
function init_entry(&$entry,$type,$date,$reference) // See gl/gl_journal::create_cart() & gl/gl_bank::handle_new_order()
{
$entry = new items_cart($type);
$entry->order_id = 0;
$entry->tran_date = $date;
$entry->reference = $reference;
$entry->memo_ = 'Imported via \'Import Multiple Journal Entries\' plugin';
}
//--------------------------------------------------------------------------------------------------
function import_type_list_row($label, $name, $selected=null, $submit_on_change=false)
{
$arr = array(
ST_JOURNAL=> "Journal Entry",
ST_BANKDEPOSIT=> "Deposit",
ST_BANKPAYMENT=> "Payment"
);
echo "<tr><td class='label'>$label</td><td>";
echo array_selector($name, $selected, $arr,
array(
'select_submit'=> $submit_on_change,
'async' => false,
));
echo "</td></tr>\n";
}
//--------------------------------------------------------------------------------------------------
function check_journal_entry(&$entry, $entryid)
{
// Check that this journal entry adds up!
if (abs($entry->gl_items_total()) > 0.0001)
{
display_error("Error: journal entry with entryid '$entryid' does not balance (import file: '{$_FILES['imp']['name']}')");
return true;
}
}
function write_trans($type, $entry, $curEntryId, $bank_account)
{
if ($type == ST_JOURNAL)
{
if (!check_journal_entry($entry, $curEntryId));
write_journal_entries($entry, false, false); // FA built-in function
}
elseif ($type == ST_BANKDEPOSIT || $type == ST_BANKPAYMENT) {
add_bank_transaction($entry->trans_type, $bank_account, $entry, $entry->tran_date, // FA built-in function
false, false, false, $entry->reference, $entry->memo_, false);
}
}
//--------------------------------------------------------------------------------------------------
function get_dimension_id_from_reference($ref)
{
if ($ref == null || trim($ref) == '')
return 0;
$sql = "SELECT id FROM ".TB_PREF."dimensions WHERE reference LIKE ".db_escape($ref);
$result = db_query($sql, "could not get dimension from reference");
$row = db_fetch_row($result);
return $row[0];
}
//--------------------------------------------------------------------------------------------------
// Begin the UI
include_once($path_to_root . "/includes/ui.inc");
page("Import Multiple Journal Entries / Deposits / Payments");
// If the import button was selected, we'll process the form here. (If not, skip to actual content below.)
if (isset($_POST['import']))
{
if (isset($_FILES['imp']) && $_FILES['imp']['name'] != '')
{
$filename = $_FILES['imp']['tmp_name'];
$sep = $_POST['sep'];
$type = $_POST['type'];
$bank_account = isset($_POST['bank_account']) ? $_POST['bank_account'] : "";
// Open the file
$fp = @fopen($filename, "r");
if (!$fp)
{
display_error("Error opening file $filename");
} else {
// Initialize first entryid & date to be null so that a new one is established
$curEntryId = $curDate = null;
// Prepare the DB to receive the imported journal entries
begin_transaction();
// Process the import file
$line = 0;
$entryCount = 0;
$error = false;
$errCnt = 0;
while ($data = fgetcsv($fp, 4096, $sep))
{
// Skip the first line, as it's a header
if ($line++ == 0) continue;
// Skip blank lines (which shouldn't happen in a well-formed CSV, but we'll be safe)
if (count($data) == 1) continue;
// Parse the row of data; Format: entryid,date,reference,accountcode,dimension1,dimension2,amount,memo
list($entryid, $date, $reference, $code, $dim1_ref, $dim2_ref, $amt, $memo, $person_id) = $data;
// If the entryid has changed, create the current journal entry (if there was one) and start a new one
if ($entryid != $curEntryId) {
// Check that date is properly-formatted
if (!is_date($date)) {
display_error("Error: date '$date' not properly formatted (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// Check that the date is in range
if (!is_date_in_fiscalyear($date)) {
display_error("Error: date not in fiscal year (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// Assign a default reference if it is not specified
if ($reference == '') {
// If the entryid has shifted but date is the same, it needs another reference
if ($date == $curDate)
$refCount++;
else // else the entryid and date have shifted, so we can start with a new reference
$refCount = 1;
list($day, $month, $year) = explode_date_to_dmy($date);
$reference = "$month/$day-$refCount";
}
// Check that the reference is not in use
global $Refs;
if (!$Refs->is_new_reference($reference,$type)) {
display_error("Error: reference '$reference' is already in use (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// All good! Initialize a new entry
if ($curEntryId != null) {
if (!$error)
{
write_trans($type, $entry, $curEntryId, $bank_account);
$entryCount++;
}
}
if ($error)
$errCnt++;
$error = false;
init_entry($entry,$type,$date,$reference);
$curEntryId = $entryid;
$curDate = $date;
}
if ($entryid == '') {
display_error("Error: entryid not specified (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// Check that the account code exists
if (get_gl_account($code) == null) {
display_error("Error: Could not find account code '$code' (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// Check that dimension 1 exists
$dim1 = get_dimension_id_from_reference($dim1_ref);
if ($dim1_ref != '' && $dim1 == null) {
display_error("Error: Could not find dimension with reference '$dim1_ref' (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
// Check that dimension 2 exists
$dim2 = get_dimension_id_from_reference($dim2_ref);
if ($dim2_ref != '' && $dim2 == null) {
display_error("Error: Could not find dimension with reference '$dim2_ref' (line $line in import file '{$_FILES['imp']['name']}')");
$error = true;
}
if ($type == ST_BANKDEPOSIT)
$amt = -$amt;
// Add to the journal entry / deposit / payment
if (!$error)
$entry->add_gl_item($code, $dim1, $dim2, $amt, $memo,'',$person_id);
}
// Process final entries in the file
if (!$error)
{
if ($curEntryId != null) {
write_trans($type, $entry, $curEntryId, $bank_account);
$entryCount++;
}
} else
$errCnt++;
@fclose($fp);
// Commit import to database
if (!$errCnt)
commit_transaction();
if ($type == ST_JOURNAL)
$typeString = "journal entries";
elseif ($type == ST_BANKDEPOSIT)
$typeString = "deposits";
elseif ($type == ST_BANKPAYMENT)
$typeString = "payments";
if (!$errCnt) {
if ($entryCount > 0)
display_notification_centered("$entryCount $typeString have been imported.");
else
display_error("Import file contained no $typeString.");
}
}
}
else
display_error("No import file selected");
}
start_form(true);
start_table(TABLESTYLE2);
if (!isset($_POST['type']))
$_POST['type'] = ST_JOURNAL;
if (!isset($_POST['sep']))
$_POST['sep'] = ",";
echo ' | ';
echo "<a href=https://my.pakerp.net/modules/import_multijournalentries/Journal_Entry.cs>Click Here To Download Sample File For Import </a>";
echo "<br> There should be no Comma (,) in any value in any column. Please double check before import";
echo "<br> For Customers Opening Balance person_id shall contain debtor_no field value and code shall be Accounts Receivable Code.";
echo "<br> For Suppliers Opening Balance person_id shall contain supplier_id field value and code shall be Accounts Payable Code.";
table_section_title("Import Settings");
import_type_list_row("Import Type:", 'type', $_POST['type'], true);
if ($_POST['type'] != ST_JOURNAL)
bank_accounts_list_row( $_POST['type'] == ST_BANKPAYMENT ? _("From:") : _("To:"), 'bank_account', null, false);
text_row("Field Separator:", 'sep', $_POST['sep'], 2, 1);
label_row("Import File:", "<input type='file' id='imp' name='imp'>");
end_table(1);
submit_center('import', "Perform Import");//,true,false,'process',ICON_SUBMIT);
end_form();
end_page();
This is very helpful to record opening balances of all Trial Balance Accounts when shifting to FA from any other ERP.
ini_set('max_execution_time', 300);
Worked in my case
One of my client creates Recurring Invoices that are around 230 invoices.
When he clicks to Print Recurring Invoices the Ajax fails to show the print preview. The document is however created in the company's pdf folder but Print Preview is not shown.
HOw to resolve this issue. Any Idea?
Oh yes, you are right
Oh, Yes I missed that. But I think either this Variable is set to 0 or 1, the result shall be same because the function getAverageCost also returns UnitCost with the same algorithm, the weighted average, which is used to calculate the material_cost stored in stock_master.
This was discussed in detail in the topic mentioned in Post # 2
Yes, you are right. There is no Estimation System in FA right now.
$use_costed_values is not used anywhere in reports in latest FA Versions
It was well discussed in this topic.
Adding following 2 Code Components in gl/includes/db/gl_db_rates.inc Worked
at Line 163
elseif ($provider == 'CCA') //free.currencyconverterapi.com
{
$filename = "/api/v5/convert?q={$curr_b}_{$curr_a}&compact=y";
$site = "free.currencyconverterapi.com";
$proto = 'https://';
}
and at Line 240
elseif ($provider == 'CCA')
{
$rates = json_decode($contents, true);
$val = $rates[$curr_b.'_'.$curr_a]['val'];
}
and It works for all currencies without fail
https://free.currencyconverterapi.com/api/v5/convert?q=PHP_PKR&compact=y
This Gives Results. Can anyone suggest the Code for this
Is there any solution for PKR as base currency?
@Joe, this fix works fine if the Value in Transaction References is a Not Used Value
But I am facing complaints from some of the clients and I couldn't figure out the reason that after some transactions specially in Bank Payment Entry the Value in Transaction References doesn't increment.
How to Fix this?
Thanks @joe for considering me. However, I am not a good PHP Developer and don't know anything about Javascript. I am basically a financial consultant. I have been trying to Hack FA Code for some of my solutions for my clients. As you have talked about 'Landing Costs'. I think you meant Import Landing Cost. I have developed a simple module for this using Dimensions and Stock Adjustment. What it does is it Divides the Total Cost of Imports using Weighted Average Method to all products in Imports. Thus Adding Value to the Purchase Price of the Product.
Similarly I have developed a Manufacturing Module. The Current Manufacturing Module of FA have two Levels
1. Simple Manufacturing
2. Advance Manufacturing
In Advance Manufacturing, we can't handle a manufacturing process that generates 2 or more Finished Goods. We can input multiple Raw Materials but Finished Good is Single. Anyhow, I didn't like it.
My manufacturing module can be used for Simple as well as Advanced Processes. However it doesn't take into account the Labour and Overhead Costs separately. But it just calculates the per unit cost of each Finished Good Item using Weighted Average Method.
In Both Imports and Manufacturing Process, you need to open a Job in Dimensions of Type 2.
I have linked the Stock Adjustment also with Dimension. So all Raw Material can be Stocked Out in that Job day by day as process moves on.
Similarly all cash expenses can be loaded to that Job.
Once Job is Finished, you process it and all cost of that Job is allocated to each Item in Process.
If you are interested in this then give me email address to send the code to.
Regards.
@joe and @apmuthu,
It is necessary in two scenarios
1. You have more than one data entry operators who are recording bank transactions at the same time. Both have same Next Reference say BP115 on their forms. The person who will commit transaction lately will see the error Transaction Reference Already in Use
2. Even if we have only one Data Entry operator but it happens many times that the next reference stucks and don't increase itself. Then one needs to manually go to Transaction References Page and increase it.
This is my point of view.
Also we need to add following lines in copy_to_cart () function in sales_order_entry.php page
function copy_to_cart()
{
check_reference($_POST['ref'], $_SESSION['Items']->trans_type, $_SESSION['Items']->trans_no); //added by faisal
I found one problem with this.
In Supplier Invoice and Supplier Credit Notes the name of reference input field is not ref but reference
@davidkumi, @itronics, @joe, @apmuthu
I have a suggestion and I have tested it with many transactions (not all) and it is working
Modify the function check_reference() with following single line change
function check_reference($reference, $trans_type, $trans_no=0, $context=null, $line=null)
{
global $Refs;
if (!$Refs->is_valid($reference, $trans_type, $context, $line))
{
display_error(_("The entered reference is invalid.")); return false;
}
elseif (!$Refs->is_new_reference($reference, $trans_type, $trans_no))
{
$_POST['ref'] = $Refs->get_next($trans_type, null, $context); //modified by faisal
// display_error( _("The entered reference is already in use.")); return false;
}
return true;
}
Before applying to my main server I request you all to please authenticate it. I don't know if it conflicts with some other behaviour of FA
Try Using this API
FrontAccounting forum → Posts by boxygen
Powered by PunBB, supported by Informer Technologies, Inc.
Currently installed 4 official extensions. Copyright © 2003–2009 PunBB.