Skip to content

Commit

Permalink
enhancement: multi currency support - attempt to handle foreign curre…
Browse files Browse the repository at this point in the history
…ncy invoices in JPK-FA (LMS+ #906)
  • Loading branch information
chilek committed Nov 6, 2019
1 parent 3f83534 commit 6d412ad
Showing 1 changed file with 46 additions and 1 deletion.
47 changes: 46 additions & 1 deletion modules/invoice.php
Expand Up @@ -666,7 +666,7 @@ function try_generate_archive_invoices($ids)
// JPK body positions (invoices)
$jpk_data .= "\t<Faktura" . ($jpk_fa_version == 2 ? ' typ="G"' : '') . ">\n";
if ($jpk_fa_version == 3) {
$jpk_data .= "\t\t<KodWaluty>PLN</KodWaluty>\n";
$jpk_data .= "\t\t<KodWaluty>" . (isset($invoice['currency']) ? $invoice['currency'] : 'PLN') . "</KodWaluty>\n";
}
$jpk_data .= "\t\t<P_1>" . strftime('%Y-%m-%d', $invoice['cdate']) . "</P_1>\n";
$invoices[$invoiceid] = $invoice;
Expand Down Expand Up @@ -702,11 +702,17 @@ function try_generate_archive_invoices($ids)
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$tax = ($invoice['taxest']['23.00']['tax'] - $invoice['invoice']['taxest']['23.00']['tax']) * $currencyvalue;
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
} elseif (isset($invoice['invoice']['taxest']['23.00'])) {
$base = -$invoice['invoice']['taxest']['23.00']['base'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$tax = -$invoice['invoice']['taxest']['23.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
} else {
$base = $tax = 0;
}
Expand All @@ -717,11 +723,17 @@ function try_generate_archive_invoices($ids)
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$tax = ($invoice['taxest']['22.00']['tax'] - $invoice['invoice']['taxest']['22.00']['tax']) * $currencyvalue;
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
} elseif (isset($invoice['invoice']['taxest']['22.00'])) {
$base = -$invoice['invoice']['taxest']['22.00']['base'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$tax = -$invoice['invoice']['taxest']['22.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
} else {
$base = $tax = 0;
}
Expand All @@ -732,11 +744,17 @@ function try_generate_archive_invoices($ids)
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$tax = ($invoice['taxest']['8.00']['tax'] - $invoice['invoice']['taxest']['8.00']['tax']) * $currencyvalue;
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
} elseif (isset($invoice['invoice']['taxest']['8.00'])) {
$base = -$invoice['invoice']['taxest']['8.00']['base'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$tax = -$invoice['invoice']['taxest']['8.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
} else {
$base = $tax = 0;
}
Expand All @@ -747,11 +765,17 @@ function try_generate_archive_invoices($ids)
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$tax = ($invoice['taxest']['7.00']['tax'] - $invoice['invoice']['taxest']['7.00']['tax']) * $currencyvalue;
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
} elseif (isset($invoice['invoice']['taxest']['7.00'])) {
$base = -$invoice['invoice']['taxest']['7.00']['base'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$tax = -$invoice['invoice']['taxest']['7.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
} else {
$base = $tax = 0;
}
Expand All @@ -762,11 +786,17 @@ function try_generate_archive_invoices($ids)
$jpk_data .= "\t\t<P_13_3>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_3>\n";
$tax = ($invoice['taxest']['5.00']['tax'] - $invoice['invoice']['taxest']['5.00']['tax']) * $currencyvalue;
$jpk_data .= "\t\t<P_14_3>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_3W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3W>\n";
}
} elseif (isset($invoice['invoice']['taxest']['5.00'])) {
$base = -$invoice['invoice']['taxest']['5.00']['base'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_3>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_3>\n";
$tax = -$invoice['invoice']['taxest']['5.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_14_3>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_3W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3W>\n";
}
} else {
$base = $tax = 0;
}
Expand Down Expand Up @@ -801,32 +831,47 @@ function try_generate_archive_invoices($ids)
$tax = $invoice['taxest']['23.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
}
if (isset($invoice['taxest']['22.00'])) {
$base = $invoice['taxest']['22.00']['base'] * $currencyvalue;
$tax = $invoice['taxest']['22.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_1>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_1>\n";
$jpk_data .= "\t\t<P_14_1>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_1W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_1W>\n";
}
}

if (isset($invoice['taxest']['8.00'])) {
$base = $invoice['taxest']['8.00']['base'] * $currencyvalue;
$tax = $invoice['taxest']['8.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
}
if (isset($invoice['taxest']['7.00'])) {
$base = $invoice['taxest']['7.00']['base'] * $currencyvalue;
$tax = $invoice['taxest']['7.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_2>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_2>\n";
$jpk_data .= "\t\t<P_14_2>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_2W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_2W>\n";
}
}

if (isset($invoice['taxest']['5.00'])) {
$base = $invoice['taxest']['5.00']['base'] * $currencyvalue;
$tax = $invoice['taxest']['5.00']['tax'] * $currencyvalue;
$jpk_data .= "\t\t<P_13_3>" . str_replace(',', '.', sprintf('%.2f', $base)) . "</P_13_3>\n";
$jpk_data .= "\t\t<P_14_3>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3>\n";
if ($jpk_fa_version == 3 && isset($invoice['currency']) && $invoice['currency'] != LMS::$currency) {
$jpk_data .= "\t\t<P_14_3W>" . str_replace(',', '.', sprintf('%.2f', $tax)) . "</P_14_3W>\n";
}
}

if (isset($invoice['taxest']['0.00'])) {
Expand Down

0 comments on commit 6d412ad

Please sign in to comment.