Merge branch 'develop'

This commit is contained in:
Dennis Eichhorn 2023-10-15 16:35:14 +00:00
commit 9804d352ec
65 changed files with 740 additions and 3066 deletions

View File

@ -18,3 +18,5 @@ jobs:
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_PAT: ${{ secrets.GH_PAT }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

View File

@ -260,8 +260,6 @@ foreach ($taxes as $rate => $tax) {
$pdf->Ln();
}
// @todo: add currency
$pdf->setFillColor(255, 162, 7);
$pdf->setTextColor(255);
$pdf->setDrawColor(255, 162, 7);

View File

@ -197,21 +197,6 @@
}
]
},
{
"id": 1005107001,
"pid": "/sales/analysis",
"type": 3,
"subtype": 1,
"name": "Bill",
"uri": "{/base}/sales/analysis/bill",
"target": "self",
"icon": null,
"order": 15,
"from": "Billing",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1001602001,
"children": []
},
{
"id": 1005108001,
"pid": "/purchase/analysis",
@ -224,7 +209,7 @@
"order": 15,
"from": "Billing",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1001602001,
"parent": 1002101001,
"children": []
},
{
@ -232,8 +217,8 @@
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Purchase",
"uri": "{/base}/private/purchase/billing/dashboard?{?}",
"name": "InvoiceRecognition",
"uri": "{/base}/private/purchase/recognition/dashboard?{?}",
"target": "self",
"icon": null,
"order": 5,
@ -247,7 +232,7 @@
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/base}/private/purchase/billing/dashboard?{?}",
"uri": "{/base}/private/purchase/recognition/dashboard?{?}",
"target": "self",
"icon": null,
"order": 1,
@ -263,7 +248,7 @@
"type": 3,
"subtype": 1,
"name": "Upload",
"uri": "{/base}/private/purchase/billing/upload?{?}",
"uri": "{/base}/private/purchase/recognition/upload?{?}",
"target": "self",
"icon": null,
"order": 5,
@ -274,5 +259,53 @@
]
}
]
},
{
"id": 1005110001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "InvoiceRecognition",
"uri": "{/base}/purchase/recognition/dashboard?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "Billing",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003401001,
"children": [
{
"id": 1005110101,
"pid": "/",
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/base}/purchase/recognition/dashboard?{?}",
"target": "self",
"icon": null,
"order": 1,
"from": "Billing",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1005110001,
"children": [
]
},
{
"id": 1005110201,
"pid": "/",
"type": 3,
"subtype": 1,
"name": "Upload",
"uri": "{/base}/purchase/recognition/upload?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "Billing",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1005110001,
"children": [
]
}
]
}
]

View File

@ -135,7 +135,7 @@ final class Installer extends InstallerAbstract
$module->apiBillAttributeTypeCreate($request, $response);
$responseData = $response->get('');
$responseData = $response->getData('');
if (!\is_array($responseData)) {
continue;
@ -207,7 +207,7 @@ final class Installer extends InstallerAbstract
$module->apiBillAttributeValueCreate($request, $response);
$responseData = $response->get('');
$responseData = $response->getData('');
if (!\is_array($responseData)) {
continue;
}
@ -293,7 +293,7 @@ final class Installer extends InstallerAbstract
$module->apiTaxCombinationCreate($request, $response);
$responseData = $response->get('');
$responseData = $response->getData('');
if (!\is_array($responseData)) {
continue;
}
@ -345,7 +345,7 @@ final class Installer extends InstallerAbstract
$module->apiBillTypeCreate($request, $response);
$responseData = $response->get('');
$responseData = $response->getData('');
if (!\is_array($responseData)) {
continue;
}

View File

@ -131,41 +131,7 @@ return [
],
],
'^.*/sales/analysis/bill(\?.*|$)$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewBillAnalysis',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::SALES_INVOICE,
],
],
],
'^.*/sales/analysis/rep(\?.*|$)$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewSalesRepAnalysis',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::SALES_ANALYSIS,
],
],
],
'^.*/sales/analysis/region(\?.*|$)$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewRegionAnalysis',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::SALES_ANALYSIS,
],
],
],
'^.*/private/purchase/billing/dashboard.*$' => [
'^.*/private/purchase/recognition/dashboard.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivatePurchaseBillDashboard',
'verb' => RouteVerb::GET,
@ -176,7 +142,7 @@ return [
],
],
],
'^.*/private/purchase/billing/upload.*$' => [
'^.*/private/purchase/recognition/upload.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivatePurchaseBillUpload',
'verb' => RouteVerb::GET,
@ -187,7 +153,40 @@ return [
],
],
],
'^.*/private/purchase/billing/bill.*$' => [
'^.*/private/purchase/recognition/bill.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivateBillingPurchaseInvoice',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::PRIVATE_DASHBOARD,
],
],
],
'^.*/purchase/recognition/dashboard.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivatePurchaseBillDashboard',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::PRIVATE_DASHBOARD,
],
],
],
'^.*/purchase/recognition/upload.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivatePurchaseBillUpload',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::PRIVATE_BILL_UPLOAD,
],
],
],
'^.*/purchase/recognition/bill.*$' => [
[
'dest' => '\Modules\Billing\Controller\BackendController:viewPrivateBillingPurchaseInvoice',
'verb' => RouteVerb::GET,

View File

@ -61,7 +61,8 @@ final class ApiAttributeController extends Controller
return;
}
$attribute = $this->createAttributeFromRequest($request);
$type = BillAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('type'))->execute();
$attribute = $this->createAttributeFromRequest($request, $type);
$this->createModel($request->header->account, $attribute, BillAttributeMapper::class, 'attribute', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $attribute);
}
@ -358,7 +359,7 @@ final class ApiAttributeController extends Controller
}
/** @var AttributeType $old */
$old = BillAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute();
$old = BillAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateAttributeTypeFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, BillAttributeTypeMapper::class, 'bill_attribute_type', $request->getOrigin());
@ -390,7 +391,7 @@ final class ApiAttributeController extends Controller
}
/** @var AttributeType $billAttributeType */
$billAttributeType = BillAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute();
$billAttributeType = BillAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $billAttributeType, BillAttributeTypeMapper::class, 'bill_attribute_type', $request->getOrigin());
$this->createStandardDeleteResponse($request, $response, $billAttributeType);
}

View File

@ -182,8 +182,10 @@ final class ApiBillController extends Controller
{
$this->createModel($request->header->account, $bill, BillMapper::class, 'bill', $request->getOrigin());
// We ned to get the bill again since the bill has a trigger which is executed on insert
// @todo: consider to remove the trigger and select the latest bill here and add + 1 to the new sequence since we have to tdo an update anyways
// We need to get the bill again since the bill has a trigger which is executed on insert
// Doing this manually would cause concurrency issues because there are times (up to 200ms)
// when the previous element doesn't have a sequence defined.
/** @var Bill $bill */
$tmp = BillMapper::get()
->where('id', $bill->id)
@ -192,7 +194,7 @@ final class ApiBillController extends Controller
$bill->sequence = $tmp->sequence;
$old = clone $bill;
$bill->buildNumber(); // The bill id is part of the number
$bill->buildNumber(); // The bill sequence number is part of the number
$this->updateModel($request->header->account, $old, $bill, BillMapper::class, 'bill', $request->getOrigin());
}
@ -537,7 +539,7 @@ final class ApiBillController extends Controller
->execute();
if (\count($billCollection) !== 1) {
// For some reason there are multiple collections with the same virtual path?
// @todo: For some reason there are multiple collections with the same virtual path?
// @todo: check if this is the correct way to handle it or if we need to make sure that it is a collection
return;
}

View File

@ -106,7 +106,6 @@ final class ApiPriceController extends Controller
}
// Get all relevant prices
// @todo: allow to define NOT IN somehow (e.g. not in France -> simple solution to define export prices etc.)
$queryMapper = PriceMapper::getAll();
if ($request->hasData('price_name')) {

View File

@ -367,320 +367,6 @@ final class BackendController extends Controller
return $view;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return RenderableInterface
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewRegionAnalysis(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
{
$head = $response->data['Content']->head;
$nonce = $this->app->appSettings->getOption('script-nonce');
$head->addAsset(AssetType::CSS, 'Resources/chartjs/Chartjs/chart.css');
$head->addAsset(AssetType::JSLATE, 'Resources/chartjs/Chartjs/chart.js', ['nonce' => $nonce]);
$head->addAsset(AssetType::JSLATE, 'Modules/ClientManagement/Controller.js', ['nonce' => $nonce, 'type' => 'module']);
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Billing/Theme/Backend/region-analysis');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001602001, $request, $response);
$monthlySalesCosts = [];
for ($i = 1; $i < 13; ++$i) {
$monthlySalesCosts[] = [
'net_sales' => $sales = \mt_rand(1200000000, 2000000000),
'net_costs' => (int) ($sales * \mt_rand(25, 55) / 100),
'year' => 2020,
'month' => $i,
];
}
$view->data['monthlySalesCosts'] = $monthlySalesCosts;
/////
$currentCustomerRegion = [
'Europe' => (int) (\mt_rand(200, 400) / 4),
'America' => (int) (\mt_rand(200, 400) / 4),
'Asia' => (int) (\mt_rand(200, 400) / 4),
'Africa' => (int) (\mt_rand(200, 400) / 4),
'CIS' => (int) (\mt_rand(200, 400) / 4),
'Other' => (int) (\mt_rand(200, 400) / 4),
];
$view->data['currentCustomerRegion'] = $currentCustomerRegion;
$annualCustomerRegion = [];
for ($i = 1; $i < 11; ++$i) {
$annualCustomerRegion[] = [
'year' => 2020 - 10 + $i,
'Europe' => $a = (int) (\mt_rand(200, 400) / 4),
'America' => $b = (int) (\mt_rand(200, 400) / 4),
'Asia' => $c = (int) (\mt_rand(200, 400) / 4),
'Africa' => $d = (int) (\mt_rand(200, 400) / 4),
'CIS' => $e = (int) (\mt_rand(200, 400) / 4),
'Other' => $f = (int) (\mt_rand(200, 400) / 4),
'Total' => $a + $b + $c + $d + $e + $f,
];
}
$view->data['annualCustomerRegion'] = $annualCustomerRegion;
/////
$monthlySalesCustomer = [];
for ($i = 1; $i < 13; ++$i) {
$monthlySalesCustomer[] = [
'net_sales' => $sales = \mt_rand(1200000000, 2000000000),
'customers' => \mt_rand(200, 400),
'year' => 2020,
'month' => $i,
];
}
$view->data['monthlySalesCustomer'] = $monthlySalesCustomer;
$annualSalesCustomer = [];
for ($i = 1; $i < 11; ++$i) {
$annualSalesCustomer[] = [
'net_sales' => $sales = \mt_rand(1200000000, 2000000000) * 12,
'customers' => \mt_rand(200, 400) * 6,
'year' => 2020 - 10 + $i,
];
}
$view->data['annualSalesCustomer'] = $annualSalesCustomer;
/////
$monthlyCustomerRetention = [];
for ($i = 1; $i < 10; ++$i) {
$monthlyCustomerRetention[] = [
'customers' => \mt_rand(200, 400),
'year' => \date('y') - 9 + $i,
];
}
$view->data['monthlyCustomerRetention'] = $monthlyCustomerRetention;
/////
$currentCustomerRegion = [
'Europe' => (int) (\mt_rand(200, 400) / 4),
'America' => (int) (\mt_rand(200, 400) / 4),
'Asia' => (int) (\mt_rand(200, 400) / 4),
'Africa' => (int) (\mt_rand(200, 400) / 4),
'CIS' => (int) (\mt_rand(200, 400) / 4),
'Other' => (int) (\mt_rand(200, 400) / 4),
];
$view->data['currentCustomerRegion'] = $currentCustomerRegion;
$annualCustomerRegion = [];
for ($i = 1; $i < 11; ++$i) {
$annualCustomerRegion[] = [
'year' => 2020 - 10 + $i,
'Europe' => $a = (int) (\mt_rand(200, 400) / 4),
'America' => $b = (int) (\mt_rand(200, 400) / 4),
'Asia' => $c = (int) (\mt_rand(200, 400) / 4),
'Africa' => $d = (int) (\mt_rand(200, 400) / 4),
'CIS' => $e = (int) (\mt_rand(200, 400) / 4),
'Other' => $f = (int) (\mt_rand(200, 400) / 4),
'Total' => $a + $b + $c + $d + $e + $f,
];
}
$view->data['annualCustomerRegion'] = $annualCustomerRegion;
/////
$currentCustomersRep = [];
for ($i = 1; $i < 13; ++$i) {
$currentCustomersRep['Rep ' . $i] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
];
}
\uasort($currentCustomersRep, function($a, $b) {
return $b['customers'] <=> $a['customers'];
});
$view->data['currentCustomersRep'] = $currentCustomersRep;
$annualCustomersRep = [];
for ($i = 1; $i < 13; ++$i) {
$annualCustomersRep['Rep ' . $i] = [];
for ($j = 1; $j < 11; ++$j) {
$annualCustomersRep['Rep ' . $i][] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
'year' => 2020 - 10 + $j,
];
}
}
$view->data['annualCustomersRep'] = $annualCustomersRep;
/////
$currentCustomersCountry = [];
for ($i = 1; $i < 51; ++$i) {
$country = (string) ISO3166NameEnum::getRandom();
$currentCustomersCountry[\substr($country, 0, 20)] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
];
}
\uasort($currentCustomersCountry, function($a, $b) {
return $b['customers'] <=> $a['customers'];
});
$view->data['currentCustomersCountry'] = $currentCustomersCountry;
$annualCustomersCountry = [];
for ($i = 1; $i < 51; ++$i) {
$countryCode = ISO3166CharEnum::getRandom();
$countryName = (string) ISO3166NameEnum::getByName('_' . $countryCode);
$annualCustomersCountry[\substr($countryName, 0, 20)] = [];
for ($j = 1; $j < 11; ++$j) {
$annualCustomersCountry[\substr($countryName, 0, 20)][] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
'year' => 2020 - 10 + $j,
'name' => $countryName,
'code' => $countryCode,
];
}
}
$view->data['annualCustomersCountry'] = $annualCustomersCountry;
/////
$customerGroups = [];
for ($i = 1; $i < 7; ++$i) {
$customerGroups['Group ' . $i] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
];
}
$view->data['customerGroups'] = $customerGroups;
return $view;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return RenderableInterface
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewBillAnalysis(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
{
$head = $response->data['Content']->head;
$nonce = $this->app->appSettings->getOption('script-nonce');
$head->addAsset(AssetType::CSS, 'Resources/chartjs/Chartjs/chart.css');
$head->addAsset(AssetType::JSLATE, 'Resources/chartjs/Chartjs/chart.js', ['nonce' => $nonce]);
$head->addAsset(AssetType::JSLATE, 'Modules/ClientManagement/Controller.js', ['nonce' => $nonce, 'type' => 'module']);
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Billing/Theme/Backend/bill-analysis');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001602001, $request, $response);
return $view;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param array $data Generic data
*
* @return RenderableInterface
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewSalesRepAnalysis(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
{
$head = $response->data['Content']->head;
$nonce = $this->app->appSettings->getOption('script-nonce');
$head->addAsset(AssetType::CSS, 'Resources/chartjs/Chartjs/chart.css');
$head->addAsset(AssetType::JSLATE, 'Resources/chartjs/Chartjs/chart.js', ['nonce' => $nonce]);
$head->addAsset(AssetType::JSLATE, 'Modules/ClientManagement/Controller.js', ['nonce' => $nonce, 'type' => 'module']);
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Billing/Theme/Backend/rep-analysis');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001602001, $request, $response);
/////
$currentCustomerRegion = [
'Europe' => (int) (\mt_rand(200, 400) / 4),
'America' => (int) (\mt_rand(200, 400) / 4),
'Asia' => (int) (\mt_rand(200, 400) / 4),
'Africa' => (int) (\mt_rand(200, 400) / 4),
'CIS' => (int) (\mt_rand(200, 400) / 4),
'Other' => (int) (\mt_rand(200, 400) / 4),
];
$view->data['currentCustomerRegion'] = $currentCustomerRegion;
$annualCustomerRegion = [];
for ($i = 1; $i < 11; ++$i) {
$annualCustomerRegion[] = [
'year' => 2020 - 10 + $i,
'Europe' => $a = (int) (\mt_rand(200, 400) / 4),
'America' => $b = (int) (\mt_rand(200, 400) / 4),
'Asia' => $c = (int) (\mt_rand(200, 400) / 4),
'Africa' => $d = (int) (\mt_rand(200, 400) / 4),
'CIS' => $e = (int) (\mt_rand(200, 400) / 4),
'Other' => $f = (int) (\mt_rand(200, 400) / 4),
'Total' => $a + $b + $c + $d + $e + $f,
];
}
$view->data['annualCustomerRegion'] = $annualCustomerRegion;
/////
$currentCustomersRep = [];
for ($i = 1; $i < 13; ++$i) {
$currentCustomersRep['Rep ' . $i] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
];
}
\uasort($currentCustomersRep, function($a, $b) {
return $b['customers'] <=> $a['customers'];
});
$view->data['currentCustomersRep'] = $currentCustomersRep;
$annualCustomersRep = [];
for ($i = 1; $i < 13; ++$i) {
$annualCustomersRep['Rep ' . $i] = [];
for ($j = 1; $j < 11; ++$j) {
$annualCustomersRep['Rep ' . $i][] = [
'customers' => (int) (\mt_rand(200, 400) / 12),
'year' => 2020 - 10 + $j,
];
}
}
$view->data['annualCustomersRep'] = $annualCustomersRep;
return $view;
}
/**
* Routing end-point for application behaviour.
*

View File

@ -414,7 +414,7 @@ class Bill implements \JsonSerializable
* @var array
* @since 1.0.0
*/
private array $vouchers = [];
public array $vouchers = [];
/**
* Tracking ids for shipping.
@ -422,7 +422,7 @@ class Bill implements \JsonSerializable
* @var array
* @since 1.0.0
*/
private array $trackings = [];
public array $trackings = [];
/**
* Bill elements / bill lines.

View File

@ -48,7 +48,7 @@ class BillElement implements \JsonSerializable
public string $itemDescription = '';
protected int $quantity = 0;
public int $quantity = 0;
public ?Subscription $subscription = null;
@ -257,7 +257,7 @@ class BillElement implements \JsonSerializable
$element->totalPurchasePriceNet->setInt($element->quantity * $item->purchasePrice->getInt());
$element->singleProfitNet->setInt($element->singleSalesPriceNet->getInt() - $element->singlePurchasePriceNet->getInt());
$element->totalProfitNet->setInt($element->quantity * ($element->totalSalesPriceNet->getInt() - $element->totalPurchasePriceNet->getInt()));
$element->totalProfitNet->setInt($element->totalSalesPriceNet->getInt() - $element->totalPurchasePriceNet->getInt());
$element->taxP = new FloatInt((int) (($code->percentageInvoice * $element->totalSalesPriceNet->getInt()) / 10000));
$element->taxR = new FloatInt($code->percentageInvoice);

View File

@ -57,7 +57,7 @@ class BillType implements \JsonSerializable
*
* @var string|BaseStringL11n
*/
protected string | BaseStringL11n $l11n;
public string | BaseStringL11n $l11n;
public bool $isTemplate = false;

View File

@ -1,5 +1,75 @@
# Billing
<p align="center"><img src="https://raw.githubusercontent.com/Karaka-Management/Assets/master/art/logo.png" width="256" alt="Logo"></p>
Sample invoices as selection for offers promotions etc.
The Karaka software is a modular web application for small to mid sized companies that need CRM, ERP, Intranet and/or CMS functionalities and much more.
credit note by selecting invoice(s) via checkbox
With Karaka you have one partner who can provide many tools and software solutions you are used to at fair and reasonable prices even for small organizations and companies/startups. Our solutions can be used independently from each other or fully integrated with other solutions we provide. By choosing Karaka as your partner you'll be able to adjust your software based on the changes in your requirements without worrying about integration and workflow optimization.
## Table of Contents
- [Table of Contents](#table-of-contents)
- [Requirements](#requirements)
- [Developer tools](#developer-tools)
- [Installation](#installation)
- [Philosophy & Demo](#philosophy--demo)
- [Development status](#development-status)
- [Tech stack](#tech-stack)
- [Become a contributor](#become-a-contributor)
- [Misc](#misc)
## Requirements
* PHP 8.1
* PHP extension: php8.1-dev php8.1-cli php8.1-common php8.1-mysql php8.1-pgsql php8.1-xdebug php8.1-opcache php8.1-pdo php8.1-sqlite php8.1-mbstring php8.1-curl php8.1-imap php8.1-bcmath php8.1-zip php8.1-dom php8.1-xml php8.1-phar php8.1-gd php-pear
* apache2 (recommended) or nginx
* mysql-server (recommended) or postgresql postgresql-contrib
* Tools: tesseract-ocr, pdftotext, pdftoppm
* Make sure that URL rewriting is active!
### Developer tools
* Php extension: xdebug
* Tools: Composer, Npm
* Composer tools: phpstan, phpunit, phpcs
* Npm tools: eslint
## Installation
Detailed installation instructions can be found at:
* [Developer Setup](https://github.com/Karaka-Management/Developer-Guide/blob/develop/general/setup.md)
* [User Setup](https://github.com/Karaka-Management/User-Guide/blob/develop/setup/install.md)
## Philosophy & Demo
We believe software should support a business in it's daily tasks and growth in a very efficient way without frustration. In order to achieve this we constantly take feedback from our customers and expand and improve our software solutions.
You can find a freely available online demo at https://demo.karaka.app (user: admin, pass: orange) without any registration or inquiry.
## Development status
Currently Karaka is still developing the first Alpha version. As soon as we have a running Beta version we are allowing external testers to use our software and a selected amount of inhouse developed modules.
General updates can be found in our info section at https://jingga.app/info and developer updates can be found in our developer section at https://jingga.app/dev. In our developer section you can also check out the automatically generated reports such as code coverage, code style, static analysis etc. as well as our code style guide lines and developer documentation.
* [Project Status](https://github.com/Karaka-Management/Organization-Guide/blob/master/Project/PROJECT.md)
## Tech stack
* Language: php, js, c/c++, c#, html, css, markdown, shell script
* Database: Maria/MySQL, PostgreSQL, MSSQL/SQLSrv, SQLite
* Webserver: apache2, nginx
* Cache: Redis, Memcached
## Become a contributor
Karaka has a very open culture and we always welcome new people who share our philosophy in providing create solutions which just work. You can find the development process description which also describes how to become a contributer in the [Organization documentation](https://github.com/Karaka-Management/Organization-Guide/blob/master/Processes/Development.md).
## Misc
* End-User documentation: https://github.com/Karaka-Management/Documentation
* Developer documentation: https://github.com/Karaka-Management/Developer-Guide
* Organization documentation: https://github.com/Karaka-Management/Organization-Guide
* Website: [https://jingga.app](https://jingga.app)
* Demo: [https://jingga.app](https://jingga.app) (user: admin, pass: orange)
* Dev: [https://jingga.app/dev](https://jingga.app/dev)
* Contact: info@jingga.app

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'أرشيف',
'Bill' => 'فاتورة',
'Billing' => 'الفواتير',
'Open' => '',
'Upload' => '',
'Archive' => 'أرشيف',
'Bill' => 'فاتورة',
'Billing' => 'الفواتير',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archiv',
'Bill' => 'Účtovat',
'Billing' => 'Fakturační',
'Open' => '',
'Upload' => '',
'Archive' => 'Archiv',
'Bill' => 'Účtovat',
'Billing' => 'Fakturační',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arkiv',
'Bill' => 'Regning',
'Billing' => 'Fakturering',
'Open' => '',
'Upload' => '',
'Archive' => 'Arkiv',
'Bill' => 'Regning',
'Billing' => 'Fakturering',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archiv',
'Bill' => 'Rechnung',
'Billing' => 'Billing',
'Open' => '',
'Upload' => '',
'Archive' => 'Archiv',
'Bill' => 'Rechnung',
'Billing' => 'Billing',
'InvoiceRecognition' => 'Rechnungserkennung',
'Open' => 'Offen',
'Upload' => 'Hochladen',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Αρχειοθέτηση',
'Bill' => 'Νομοσχέδιο',
'Billing' => 'Χρέωση',
'Open' => '',
'Upload' => '',
'Archive' => 'Αρχειοθέτηση',
'Bill' => 'Νομοσχέδιο',
'Billing' => 'Χρέωση',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archive',
'Bill' => 'Bill',
'Billing' => 'Billing',
'Open' => 'Open',
'Upload' => 'Upload',
'Archive' => 'Archive',
'Bill' => 'Bill',
'Billing' => 'Billing',
'InvoiceRecognition' => 'Invoice Recognition',
'Open' => 'Open',
'Upload' => 'Upload',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archivo',
'Bill' => 'Factura',
'Billing' => 'Facturación',
'Open' => '',
'Upload' => '',
'Archive' => 'Archivo',
'Bill' => 'Factura',
'Billing' => 'Facturación',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arkisto',
'Bill' => 'Laskuttaa',
'Billing' => 'Laskutus',
'Open' => '',
'Upload' => '',
'Archive' => 'Arkisto',
'Bill' => 'Laskuttaa',
'Billing' => 'Laskutus',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archiver',
'Bill' => 'Facture',
'Billing' => 'Facturation',
'Open' => '',
'Upload' => '',
'Archive' => 'Archiver',
'Bill' => 'Facture',
'Billing' => 'Facturation',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archívum',
'Bill' => 'Számla',
'Billing' => 'Számlázás',
'Open' => '',
'Upload' => '',
'Archive' => 'Archívum',
'Bill' => 'Számla',
'Billing' => 'Számlázás',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archivio',
'Bill' => 'Conto',
'Billing' => 'Fatturazione',
'Open' => '',
'Upload' => '',
'Archive' => 'Archivio',
'Bill' => 'Conto',
'Billing' => 'Fatturazione',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'アーカイブ',
'Bill' => '明細書',
'Billing' => '請求する',
'Open' => '',
'Upload' => '',
'Archive' => 'アーカイブ',
'Bill' => '明細書',
'Billing' => '請求する',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => '보관소',
'Bill' => '청구서',
'Billing' => '청구자',
'Open' => '',
'Upload' => '',
'Archive' => '보관소',
'Bill' => '청구서',
'Billing' => '청구자',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arkivet',
'Bill' => 'Regning',
'Billing' => 'Fakturering',
'Open' => '',
'Upload' => '',
'Archive' => 'Arkivet',
'Bill' => 'Regning',
'Billing' => 'Fakturering',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Archiwum.',
'Bill' => 'Rachunek',
'Billing' => 'Dane do faktury',
'Open' => '',
'Upload' => '',
'Archive' => 'Archiwum.',
'Bill' => 'Rachunek',
'Billing' => 'Dane do faktury',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arquivo',
'Bill' => 'Conta',
'Billing' => 'Cobrança',
'Open' => '',
'Upload' => '',
'Archive' => 'Arquivo',
'Bill' => 'Conta',
'Billing' => 'Cobrança',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Архив',
'Bill' => 'Счет',
'Billing' => 'Биллинг',
'Open' => '',
'Upload' => '',
'Archive' => 'Архив',
'Bill' => 'Счет',
'Billing' => 'Биллинг',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arkiv',
'Bill' => 'Räkningen',
'Billing' => 'Fakturering',
'Open' => '',
'Upload' => '',
'Archive' => 'Arkiv',
'Bill' => 'Räkningen',
'Billing' => 'Fakturering',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'คลังเก็บเอกสารสำคัญ',
'Bill' => 'ใบแจ้งหนี้',
'Billing' => 'การเรียกเก็บเงิน',
'Open' => '',
'Upload' => '',
'Archive' => 'คลังเก็บเอกสารสำคัญ',
'Bill' => 'ใบแจ้งหนี้',
'Billing' => 'การเรียกเก็บเงิน',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Arşiv',
'Bill' => 'Fatura',
'Billing' => 'Fatura',
'Open' => '',
'Upload' => '',
'Archive' => 'Arşiv',
'Bill' => 'Fatura',
'Billing' => 'Fatura',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => 'Архів',
'Bill' => 'Вексель',
'Billing' => 'Платіж',
'Open' => '',
'Upload' => '',
'Archive' => 'Архів',
'Bill' => 'Вексель',
'Billing' => 'Платіж',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -13,9 +13,10 @@
declare(strict_types=1);
return ['Navigation' => [
'Archive' => '档案',
'Bill' => '账单',
'Billing' => '结算',
'Open' => '',
'Upload' => '',
'Archive' => '档案',
'Bill' => '账单',
'Billing' => '结算',
'InvoiceRecognition' => '',
'Open' => '',
'Upload' => '',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'تبوك',
'Addresses' => 'عناوين',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'مدفوع بالفعل',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'فواتير',
'Bonus' => 'علاوة',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'استرداد النقدي',
'City' => 'مدينة',
'Client' => 'عميل',
'ClientID' => 'معرف العميل',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'تأكيد',
'Country' => 'دولة',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'بطاقة إئتمان',
'CreditNote' => 'اشعار دائن',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'تاريخ',
'Delivery' => 'توصيل',
'DeliveryNote' => 'مذكرة تسليم',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'خصم ٪',
'Due' => 'بسبب',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'شحن',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'أزداد',
'Invoice' => 'فاتورة',
'Invoices' => 'الفواتير',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'شبكة',
'Offer' => 'عرض',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'دفع',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'بريدي',
'Prepaid' => 'مسبقة الدفع',
'Preview' => 'معاينة',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'ربح',
'Quantity' => 'كمية',
'Recipient' => 'متلقي',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'يختار',
'Shipment' => 'شحنة',
'Source' => 'مصدر',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'نوع',
'Types' => '',
'Upload' => 'تحميل',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'تفاوت',
'Zip' => 'أزيز',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adresa',
'Addresses' => 'Adresy',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Již zaplatil',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Účtenka',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Hotovost',
'City' => 'Město',
'Client' => 'Klienta',
'ClientID' => 'ID klienta',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'potvrzení',
'Country' => 'Země',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Kreditní karta',
'CreditNote' => 'Dobropis',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'datum',
'Delivery' => 'dodávka',
'DeliveryNote' => 'Dodací list',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Sleva%',
'Due' => 'Způsoben',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Dopravné',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Hrubý',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Síť',
'Offer' => 'Nabídka',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Způsob platby',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Poštovní',
'Prepaid' => 'Předplacený',
'Preview' => 'Náhled',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Zisk',
'Quantity' => 'Množství',
'Recipient' => 'Příjemce',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Vybrat',
'Shipment' => 'náklad',
'Source' => 'Zdroj',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Typ',
'Types' => '',
'Upload' => 'nahrát',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variace',
'Zip' => 'Zip',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adresse',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Allerede betalt',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Regninger.',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Penge tilbage',
'City' => 'City.',
'Client' => 'Klient',
'ClientID' => 'Klient ID.',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Bekræftelse',
'Country' => 'Land',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Kreditkort',
'CreditNote' => 'Kreditnota',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Dato',
'Delivery' => 'Levering',
'DeliveryNote' => 'Levering note',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Rabat%',
'Due' => 'På grund',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Gods',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Brutto',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer.',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Net',
'Offer' => 'Tilbud',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Betaling',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postal.',
'Prepaid' => 'Forudbetalt',
'Preview' => 'Preview.',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Profit',
'Quantity' => 'Antal',
'Recipient' => 'Modtager',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Vælg',
'Shipment' => 'Forsendelse',
'Source' => 'Kilde',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Type',
'Types' => '',
'Upload' => 'Upload',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variation',
'Zip' => 'Zip.',
]];

View File

@ -31,7 +31,7 @@ return ['Billing' => [
'CIS' => 'CIS',
'Cashback' => 'Kennzeichnen',
'City' => 'Stadt',
'Client' => 'Klient',
'Client' => 'Kunde',
'ClientID' => 'Kunden ID',
'ComparisonTime' => 'Vergleichszeit',
'Confirmation' => 'Bestätigung',
@ -70,8 +70,7 @@ return ['Billing' => [
'Original' => 'Original',
'Other' => 'Sonstige',
'Payment' => 'Zahlung',
'PaymentPlan' => '',
'PazmentPlan' => 'Zahlplan',
'PaymentPlan' => 'Zahlungsplan',
'Postal' => 'Post',
'Prepaid' => 'Vorausbezahlt',
'Preview' => 'Vorschau',

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Διεύθυνση',
'Addresses' => 'Διευθύνσεις',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Ήδη πληρωθεί',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Λογαριασμοί',
'Bonus' => 'Δώρο',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Επιστροφή μετρητών',
'City' => 'Πόλη',
'Client' => 'Πελάτης',
'ClientID' => 'ταυτότητα πελάτη',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Επιβεβαίωση',
'Country' => 'Χώρα',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Πιστωτική κάρτα',
'CreditNote' => 'Πιστωτικό σημείωμα',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Ημερομηνία',
'Delivery' => 'Διανομή',
'DeliveryNote' => 'Δελτίο παράδοσης',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Έκπτωση%',
'Due' => 'Λόγω',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Ναύλος',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Ακαθάριστο',
'Invoice' => 'Τιμολόγιο',
'Invoices' => 'Τιμολόγια',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Καθαρά',
'Offer' => 'Προσφορά',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Πληρωμή',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Ταχυδρομικός',
'Prepaid' => 'Προπληρωμένος',
'Preview' => 'Προεπισκόπηση',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Κέρδος',
'Quantity' => 'Ποσότητα',
'Recipient' => 'Παραλήπτης',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Επιλέγω',
'Shipment' => 'Αποστολή',
'Source' => 'Πηγή',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Τύπος',
'Types' => '',
'Upload' => 'Μεταφόρτω',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Παραλλαγή',
'Zip' => 'Φερμουάρ',
]];

View File

@ -71,7 +71,6 @@ return ['Billing' => [
'Other' => 'Other',
'Payment' => 'Payment',
'PaymentPlan' => 'Payment Plan',
'PazmentPlan' => '',
'Postal' => 'Postal',
'Prepaid' => 'Prepaid',
'Preview' => 'Preview',

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Habla a',
'Addresses' => 'Direcciones',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Ya pagado',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Facturas',
'Bonus' => 'Prima',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Devolución de dinero',
'City' => 'Ciudad',
'Client' => 'Cliente',
'ClientID' => 'Identificación del cliente',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Confirmación',
'Country' => 'País',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Tarjeta de crédito',
'CreditNote' => 'Nota de crédito',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Fecha',
'Delivery' => 'Entrega',
'DeliveryNote' => 'Nota de entrega',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Descuento%',
'Due' => 'Vencer',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Flete',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Bruto',
'Invoice' => 'Factura',
'Invoices' => 'Facturas',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Red',
'Offer' => 'Oferta',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Pago',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postal',
'Prepaid' => 'Pagado por adelantado',
'Preview' => 'Avance',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Lucro',
'Quantity' => 'Cantidad',
'Recipient' => 'Recipiente',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Seleccione',
'Shipment' => 'Envío',
'Source' => 'Fuente',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Escribe',
'Types' => '',
'Upload' => 'Subir',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variación',
'Zip' => 'Cremallera',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Osoite',
'Addresses' => 'Osoitteet',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Jo maksettu',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Laskut',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Vaihtorahat',
'City' => 'Kaupunki',
'Client' => 'Asiakas',
'ClientID' => 'Asiakastunnus',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Vahvistus',
'Country' => 'Maa',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Luottokortti',
'CreditNote' => 'Luottoluotto',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Päivämäärä',
'Delivery' => 'Toimitus',
'DeliveryNote' => 'Saapumisilmoitus',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Alennus %',
'Due' => 'Takia',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Rahti',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Ällöttävä',
'Invoice' => 'Lasku',
'Invoices' => 'Laskut',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Netto',
'Offer' => 'Tarjous',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Maksu',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Posti-',
'Prepaid' => 'Prepaid',
'Preview' => 'Esikatselu',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Voitto',
'Quantity' => 'Määrä',
'Recipient' => 'Vastaanottaja',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Valitse',
'Shipment' => 'Lähetys',
'Source' => 'Lähde',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Tyyppi',
'Types' => '',
'Upload' => 'Ladata',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Vaihtelu',
'Zip' => 'Postinumero',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adresse',
'Addresses' => 'Adresses',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Déjà payé',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Factures',
'Bonus' => 'Prime',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Remise en argent',
'City' => 'Ville',
'Client' => 'Client',
'ClientID' => 'identité du client',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Confirmation',
'Country' => 'Pays',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Carte de crédit',
'CreditNote' => 'Note de crédit',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Date',
'Delivery' => 'Livraison',
'DeliveryNote' => 'Bon de livraison',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Remise %',
'Due' => 'Dû',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Fret',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Brut',
'Invoice' => 'Facture d\'achat',
'Invoices' => 'Factures',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Rapporter',
'Offer' => 'Offrir',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Paiement',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postal',
'Prepaid' => 'Prépayé',
'Preview' => 'Aperçu',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Profit',
'Quantity' => 'Quantité',
'Recipient' => 'Destinataire',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Sélectionner',
'Shipment' => 'Expédition',
'Source' => 'La source',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Taper',
'Types' => '',
'Upload' => 'Télécharger',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variation',
'Zip' => 'Zipper',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Cím',
'Addresses' => 'Címek',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Fizetve',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Számlák',
'Bonus' => 'Bónusz',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Pénzvisszafizetés',
'City' => 'Város',
'Client' => 'Ügyfél',
'ClientID' => 'Ügyfélazonosító',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Megerősítés',
'Country' => 'Ország',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Hitelkártya',
'CreditNote' => 'Jóváírás',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Dátum',
'Delivery' => 'Szállítás',
'DeliveryNote' => 'Fuvarlevél',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Árengedmény%',
'Due' => 'Esedékes',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Fuvardíj',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Bruttó',
'Invoice' => 'Számla',
'Invoices' => 'Számlák',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Háló',
'Offer' => 'Ajánlat',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Fizetés',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postai',
'Prepaid' => 'Előre kifizetett',
'Preview' => 'Előnézet',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Nyereség',
'Quantity' => 'Mennyiség',
'Recipient' => 'Befogadó',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Kiválaszt',
'Shipment' => 'Szállítmány',
'Source' => 'Forrás',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'típus',
'Types' => '',
'Upload' => 'Feltöltés',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variáció',
'Zip' => 'Postai irányítószám',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Indirizzo',
'Addresses' => 'Indirizzi',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Già pagato',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Fatture',
'Bonus' => 'Bonus.',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Rimborso',
'City' => 'Città',
'Client' => 'Cliente',
'ClientID' => 'Identificativo cliente',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Conferma',
'Country' => 'Nazione',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Carta di credito',
'CreditNote' => 'Nota di credito',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Data',
'Delivery' => 'Consegna',
'DeliveryNote' => 'Bolla d\'accompagnamento',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Sconto%',
'Due' => 'Dovuto',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Liberare',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Schifoso',
'Invoice' => 'Fattura',
'Invoices' => 'Fatture',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Rete',
'Offer' => 'Offerta',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Pagamento',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'postale',
'Prepaid' => 'Prepagato',
'Preview' => 'Anteprima',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Profitto',
'Quantity' => 'Quantità',
'Recipient' => 'Destinatario',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Selezionare',
'Shipment' => 'Spedizione',
'Source' => 'Fonte',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Tipo',
'Types' => '',
'Upload' => 'Caricamento',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variazione',
'Zip' => 'Cerniera lampo',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => '住所',
'Addresses' => 'アドレス',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => '既に支払いました',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'bill',
'Bonus' => 'ボーナス',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'キャッシュバック',
'City' => '市',
'Client' => 'クライアント',
'ClientID' => 'クライアントID',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => '確認',
'Country' => '国',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'クレジットカード',
'CreditNote' => 'クレジットノート',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => '日にち',
'Delivery' => '配達',
'DeliveryNote' => '配達メモ',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => '割引 ',
'Due' => '期限',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'fre fre',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'きもい',
'Invoice' => '請求書',
'Invoices' => '請求書',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'ネット',
'Offer' => 'オファー',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => '支払い',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => '郵便',
'Prepaid' => '前払い',
'Preview' => 'プレビュー',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => '利益',
'Quantity' => '量',
'Recipient' => '受信者',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => '選択する',
'Shipment' => '出荷',
'Source' => 'ソース',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'タイプ',
'Types' => '',
'Upload' => 'アップロード',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => '変化',
'Zip' => 'ジップ',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => '주소',
'Addresses' => '구애',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => '이미 지불',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => '청구서',
'Bonus' => '보너스',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => '현금',
'City' => '도시',
'Client' => '고객',
'ClientID' => '클라이언트 ID.',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => '확인',
'Country' => '국가',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => '신용 카드',
'CreditNote' => '신용 노트',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => '날짜',
'Delivery' => '배달',
'DeliveryNote' => '배달 메모',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => '할인 %',
'Due' => '로 인한',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => '화물',
'General' => '#VALUE!',
'General' => '',
'Gross' => '역겨운',
'Invoice' => '송장',
'Invoices' => '송장',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => '그물',
'Offer' => '권하다',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => '지불',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => '우편 엽서',
'Prepaid' => '선불',
'Preview' => '시사',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => '이익',
'Quantity' => '수량',
'Recipient' => '받는 사람',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => '선택하다',
'Shipment' => '선적',
'Source' => '원천',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => '유형',
'Types' => '',
'Upload' => '업로드',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => '변화',
'Zip' => '지퍼',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adresse',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Allerede betalt',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Regninger',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Penger tilbake',
'City' => 'By',
'Client' => 'Klient',
'ClientID' => 'klient-ID',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Bekreftelse',
'Country' => 'Land',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Kredittkort',
'CreditNote' => 'Kredittnota',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Dato',
'Delivery' => 'Leveranse',
'DeliveryNote' => 'Leveringsnotat',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Rabatt%',
'Due' => 'På grunn av det',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Frakt',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Ekkelt',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Nett',
'Offer' => 'By på',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'innbetaling',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postal.',
'Prepaid' => 'Forhåndsbetalt',
'Preview' => 'Forhåndsvisning',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Profitt',
'Quantity' => 'Mengde',
'Recipient' => 'Mottaker',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Plukke ut',
'Shipment' => 'Forsendelse',
'Source' => 'Kilde',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Type',
'Types' => '',
'Upload' => 'Laste opp',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variasjon',
'Zip' => 'Glidelås',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adres',
'Addresses' => 'Adresy',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Już zapłacone',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Rachunki',
'Bonus' => 'Premia',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Zwrot gotówki',
'City' => 'Miasto',
'Client' => 'Klient',
'ClientID' => 'Identyfikator klienta',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Potwierdzenie',
'Country' => 'Kraj',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Karta kredytowa',
'CreditNote' => 'Uwaga kredytowa',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Data',
'Delivery' => 'Dostawa',
'DeliveryNote' => 'Dowód dostawy',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Zniżka %',
'Due' => 'Z powodu',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Frachtowanie',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Brutto',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Internet',
'Offer' => 'Oferta',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Zapłata',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Pocztowy',
'Prepaid' => 'Opłacony z góry',
'Preview' => 'Zapowiedź',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Zysk',
'Quantity' => 'Ilość',
'Recipient' => 'Odbiorca',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Wybierać',
'Shipment' => 'Wysyłka',
'Source' => 'Źródło',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Rodzaj',
'Types' => '',
'Upload' => 'Wgrywać',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Zmiana',
'Zip' => 'Zamek błyskawiczny',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Endereço',
'Addresses' => 'Endereços',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Já pago',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Notas',
'Bonus' => 'Bônus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Dinheiro de volta',
'City' => 'Cidade',
'Client' => 'Cliente',
'ClientID' => 'ID do Cliente',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Confirmação',
'Country' => 'País',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Cartão de crédito',
'CreditNote' => 'Nota de crédito',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Encontro',
'Delivery' => 'Entrega',
'DeliveryNote' => 'Nota de entrega',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Desconto%',
'Due' => 'Vencimento',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Freightage',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Bruto',
'Invoice' => 'Fatura',
'Invoices' => 'Faturas',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Internet',
'Offer' => 'Oferta',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Pagamento',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Postal',
'Prepaid' => 'Pré-pago',
'Preview' => 'Pré-visualização',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Lucro',
'Quantity' => 'Quantidade',
'Recipient' => 'Destinatário',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Selecione.',
'Shipment' => 'envio',
'Source' => 'Fonte',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Modelo',
'Types' => '',
'Upload' => 'Envio',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variação',
'Zip' => 'Fecho eclair',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Адрес',
'Addresses' => 'Адреса',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Уже оплачено',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Счета',
'Bonus' => 'Бонус',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Возврат наличных',
'City' => 'Город',
'Client' => 'Клиент',
'ClientID' => 'ID клиента',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Подтверждение',
'Country' => 'Страна',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Кредитная карта',
'CreditNote' => 'Кредитная нота',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Дата',
'Delivery' => 'Доставка',
'DeliveryNote' => 'Накладная',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Скидка %',
'Due' => 'Должное',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Фрахты',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Валовой',
'Invoice' => 'Счет',
'Invoices' => 'Счета',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Сеть',
'Offer' => 'Предложение',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Оплата',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Почтовый',
'Prepaid' => 'Предоплаты',
'Preview' => 'Превью',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Выгода',
'Quantity' => 'Количество',
'Recipient' => 'Получатель',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Выбирать',
'Shipment' => 'Отгрузка',
'Source' => 'Источник',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Тип',
'Types' => '',
'Upload' => 'Загрузить',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Вариация',
'Zip' => 'Zip.',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adress',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Redan betalat',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Räkningar',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Pengar tillbaka',
'City' => 'Stad',
'Client' => 'Klient',
'ClientID' => 'Klient ID',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Bekräftelse',
'Country' => 'Land',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Kreditkort',
'CreditNote' => 'Kreditanteckning',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Datum',
'Delivery' => 'Leverans',
'DeliveryNote' => 'Leveransanteckning',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Rabatt%',
'Due' => 'På grund av',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Frakt',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Äckligt',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturor',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Netto',
'Offer' => 'Erbjudande',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Betalning',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Post',
'Prepaid' => 'Förbetalt',
'Preview' => 'Förhandsvisning',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Vinst',
'Quantity' => 'Kvantitet',
'Recipient' => 'Mottagare',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Välj',
'Shipment' => 'Sändning',
'Source' => 'Källa',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Typ',
'Types' => '',
'Upload' => 'Ladda upp',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Variation',
'Zip' => 'Blixtlås',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'ที่อยู่',
'Addresses' => 'ที่อยู่',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'จ่ายแล้ว',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'การเรียกเก็บเงิน',
'Bonus' => 'โบนัส',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'เงินคืน',
'City' => 'เมือง',
'Client' => 'ลูกค้า',
'ClientID' => 'รหัสลูกค้า',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'การยืนยัน',
'Country' => 'ประเทศ',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'บัตรเครดิต',
'CreditNote' => 'ใบลดหนี้',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'วันที่',
'Delivery' => 'จัดส่ง',
'DeliveryNote' => 'บันทึกการส่งมอบ',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'การลดราคา %',
'Due' => 'เนื่องจาก',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'การขนส่งสินค้า',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'ทั้งหมด',
'Invoice' => 'ใบแจ้งหนี้',
'Invoices' => 'ใบแจ้งหนี้',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'สุทธิ',
'Offer' => 'เสนอ',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'การชำระเงิน',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'เกี่ยวกับการไปรษณีย์',
'Prepaid' => 'ชำระล่วงหน้า',
'Preview' => 'ดูตัวอย่าง',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'กำไร',
'Quantity' => 'ปริมาณ',
'Recipient' => 'ผู้รับ',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'เลือก',
'Shipment' => 'การจัดส่ง',
'Source' => 'แหล่งที่มา',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'พิมพ์',
'Types' => '',
'Upload' => 'ที่อัพโหลด',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'การเปลี่ยนแปลง',
'Zip' => 'ซิป',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Adres',
'Addresses' => 'Adresler',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Zaten ödendi',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Faturalar',
'Bonus' => 'Bonus',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Nakit para',
'City' => 'Şehir',
'Client' => 'Müşteri',
'ClientID' => 'Müşteri Kimliği',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Onayla',
'Country' => 'Ülke',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Kredi kartı',
'CreditNote' => 'Kredi notu',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Tarih',
'Delivery' => 'Teslimat',
'DeliveryNote' => 'Teslimat notu',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'İndirim %',
'Due' => 'Vadesi dolmuş',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Yük',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Brüt',
'Invoice' => 'Fatura',
'Invoices' => 'Faturalar',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Ağ',
'Offer' => 'Teklif',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Ödeme',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Posta',
'Prepaid' => 'Ön ödemeli',
'Preview' => 'Ön izleme',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Kâr',
'Quantity' => 'Miktar',
'Recipient' => 'Alıcı',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Seçme',
'Shipment' => 'gönderi',
'Source' => 'Kaynak',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Tip',
'Types' => '',
'Upload' => 'Yüklemek',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'varyasyon',
'Zip' => 'Zip',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => 'Адреса',
'Addresses' => 'Адреси',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => 'Вже оплачено',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => 'Векселі',
'Bonus' => 'Бонус',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => 'Готівка',
'City' => 'Місто',
'Client' => 'Клієнт',
'ClientID' => 'Ідентифікатор клієнта',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => 'Підтвердження',
'Country' => 'Країна',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => 'Кредитна карта',
'CreditNote' => 'Кредитове авізо',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => 'Дата',
'Delivery' => 'Доставка',
'DeliveryNote' => 'Накладна',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => 'Знижка%',
'Due' => 'Заборгованість',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'Фрахт',
'General' => '#VALUE!',
'General' => '',
'Gross' => 'Валовий',
'Invoice' => 'Рахунок-фактура',
'Invoices' => 'Рахунки-фактури',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => 'Сітка',
'Offer' => 'Пропозиція',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => 'Платіж',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => 'Поштовий',
'Prepaid' => 'Передплачений',
'Preview' => 'Попередній перегляд',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => 'Прибуток',
'Quantity' => 'Кількість',
'Recipient' => 'Одержувач',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => 'Вибирати',
'Shipment' => 'Відвантаження',
'Source' => 'Джерело',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => 'Тип',
'Types' => '',
'Upload' => 'Завантажувати',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => 'Зміна',
'Zip' => 'Блиск',
]];

View File

@ -15,25 +15,25 @@ declare(strict_types=1);
return ['Billing' => [
'Address' => '地址',
'Addresses' => '地址',
'Africa' => '#VALUE!',
'Africa' => '',
'AlreadyPaid' => '已付款',
'America' => '#VALUE!',
'America' => '',
'Amount' => '',
'Analyse' => '#VALUE!',
'Analyse' => '',
'Archive' => '',
'Articles' => '#VALUE!',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'BaseTime' => '#VALUE!',
'Articles' => '',
'Asia' => '',
'Attribute' => '',
'BaseTime' => '',
'Billing' => '',
'Bills' => '账单',
'Bonus' => '奖金',
'CIS' => '#VALUE!',
'CIS' => '',
'Cashback' => '返现金',
'City' => '城市',
'Client' => '客户',
'ClientID' => '客户ID',
'ComparisonTime' => '#VALUE!',
'ComparisonTime' => '',
'Confirmation' => '确认',
'Country' => '国家',
'CreateBill' => '',
@ -41,7 +41,7 @@ return ['Billing' => [
'CreditCard' => '信用卡',
'CreditNote' => '信用票据',
'Currency' => '',
'Customers' => '#VALUE!',
'Customers' => '',
'Date' => '日期',
'Delivery' => '交货',
'DeliveryNote' => '送货单',
@ -50,10 +50,10 @@ return ['Billing' => [
'DiscountP' => '折扣 ',
'Due' => '到期的',
'Email' => '',
'Europe' => '#VALUE!',
'Filter' => '#VALUE!',
'Europe' => '',
'Filter' => '',
'Freightage' => 'FRIGUTAGE.',
'General' => '#VALUE!',
'General' => '',
'Gross' => '总的',
'Invoice' => '发票',
'Invoices' => '发票',
@ -68,10 +68,9 @@ return ['Billing' => [
'Net' => '网',
'Offer' => '提供',
'Original' => '',
'Other' => '#VALUE!',
'Other' => '',
'Payment' => '支付',
'PaymentPlan' => '',
'PazmentPlan' => '',
'Postal' => '邮政',
'Prepaid' => '预付款',
'Preview' => '预览',
@ -79,9 +78,9 @@ return ['Billing' => [
'Profit' => '利润',
'Quantity' => '数量',
'Recipient' => '接受者',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Sales' => '#VALUE!',
'Region' => '',
'Rep' => '',
'Sales' => '',
'Select' => '选择',
'Shipment' => '运输',
'Source' => '来源',
@ -93,7 +92,7 @@ return ['Billing' => [
'Type' => '类型',
'Types' => '',
'Upload' => '上传',
'Value' => '#VALUE!',
'Value' => '',
'Variation' => '变化',
'Zip' => '压缩',
]];

View File

@ -1,21 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
/* @todo: single month/quarter/fiscal year/calendar year */
/* @todo: time range (<= 12 month = monthly view; else annual view/comparison) */
/**
* @var \phpOMS\Views\View $this
*/
echo $this->data['nav']->render();

View File

@ -22,6 +22,7 @@ include __DIR__ . '/../../../Media/Theme/Backend/template-functions.php';
* @var \phpOMS\Views\View $this
*/
/** @var \Modules\Billing\Models\Bill $bill */
$bill = $this->data['bill'];
$elements = $bill->getElements();
@ -29,7 +30,7 @@ $previewType = $this->data['previewType'];
$originalType = $this->data['originalType'];
$billPdf = $bill->getFileByType($previewType);
$original = $bill->getFileByType($originalType);
$media = $bill->getMedia();
$media = $bill->files;
echo $this->data['nav']->render(); ?>
@ -219,7 +220,7 @@ echo $this->data['nav']->render(); ?>
<section id="mediaFile" class="portlet col-simple">
<div class="portlet-body col-simple">
<?php if ($original->id > 0) : ?>
<iframe class="col-simple" data-form="iUiSettings" data-name="iframeHelper" id="iHelperFrame" src="<?= UriFactory::build('Resources/mozilla/Pdf/web/viewer.html{?}&file=' . \urlencode(($original->isAbsolute ? '' : '/../../../../') . $original->getPath())); ?>" allowfullscreen></iframe>
<iframe class="col-simple" id="iOriginal" src="<?= UriFactory::build('Resources/mozilla/Pdf/web/viewer.html?file=' . \urlencode(UriFactory::build('{/api}media/export?id=' . $original->id))); ?>" allowfullscreen></iframe>
<?php endif; ?>
</div>
</section>

File diff suppressed because it is too large Load Diff

View File

@ -1,344 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
/* @todo: single month/quarter/fiscal year/calendar year */
/* @todo: time range (<= 12 month = monthly view; else annual view/comparison) */
/**
* @var \phpOMS\Views\View $this
*/
echo $this->data['nav']->render();
?>
<div class="tabview tab-2">
<div class="box">
<ul class="tab-links">
<li><label for="c-tab-2"><?= $this->getHtml('General'); ?></label></li>
<li><label for="c-tab-1"><?= $this->getHtml('Filter'); ?></label></li>
</ul>
</div>
<div class="tab-content">
<input type="radio" id="c-tab-1" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<form>
<div class="portlet-head"><?= $this->getHtml('Filter'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iId"><?= $this->getHtml('Client'); ?></label>
<input type="text" id="iName1" name="name1">
</div>
<div class="form-group">
<div class="input-control">
<label for="iDecimalPoint"><?= $this->getHtml('BaseTime'); ?></label>
<input id="iDecimalPoint" name="settings_decimal" type="text" value="" placeholder=".">
</div>
<div class="input-control">
<label for="iThousandSep"><?= $this->getHtml('ComparisonTime'); ?></label>
<input id="iThousandSep" name="settings_thousands" type="text" value="" placeholder=",">
</div>
</div>
<div class="form-group">
<div class="input-control">
<label for="iDecimalPoint"><?= $this->getHtml('Attribute'); ?></label>
<input id="iDecimalPoint" name="settings_decimal" type="text" value="" placeholder=".">
</div>
<div class="input-control">
<label for="iThousandSep"><?= $this->getHtml('Value'); ?></label>
<input id="iThousandSep" name="settings_thousands" type="text" value="" placeholder=",">
</div>
</div>
<div class="form-group">
<label for="iId"><?= $this->getHtml('Region'); ?></label>
<input type="text" id="iName1" name="name1">
</div>
<div class="form-group">
<label for="iId"><?= $this->getHtml('Country'); ?></label>
<input type="text" id="iName1" name="name1">
</div>
<div class="form-group">
<label for="iId"><?= $this->getHtml('Rep'); ?></label>
<input type="text" id="iName1" name="name1">
</div>
</div>
<div class="portlet-foot"><input id="iSubmitGeneral" name="submitGeneral" type="submit" value="<?= $this->getHtml('Save', '0', '0'); ?>"></div>
</form>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Sales per Rep - Current
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $customersRep = $this->data['currentCustomersRep']; ?>
<div class="portlet-body">
<canvas id="sales-region" data-chart='{
"type": "horizontalBar",
"data": {
"labels": [
<?php
$temp = [];
foreach ($customersRep as $name => $rep) {
$temp[] = $name;
}
?>
<?= '"' . \implode('", "', $temp) . '"'; ?>
],
"datasets": [
{
"label": "<?= $this->getHtml('Customers'); ?>",
"type": "horizontalBar",
"data": [
<?php
$temp = [];
foreach ($customersRep as $values) {
$temp[] = ((int) $values['customers']);
}
?>
<?= \implode(',', $temp); ?>
],
"fill": false,
"borderColor": "rgb(54, 162, 235)",
"backgroundColor": "rgb(54, 162, 235)",
"tension": 0.0
}
]
},
"options": {
"title": {
"display": false,
"text": "Customers per rep"
}
}
}'></canvas>
<div class="more-container">
<input id="more-customer-rep-current" type="checkbox" name="more-container">
<label for="more-customer-rep-current">
<span>Data</span>
<i class="fa fa-chevron-right expand"></i>
</label>
<div>
<table class="default">
<thead>
<tr>
<td>Rep
<td>Customer count
<tbody>
<?php
$sum = 0;
foreach ($customersRep as $rep => $values) : $sum += $values['customers']; ?>
<tr>
<td><?= $rep; ?>
<td><?= $values['customers']; ?>
<?php endforeach; ?>
<tr>
<td>Total
<td><?= $sum; ?>
</table>
</div>
</div>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Sales per Rep - Annual
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $customersRep = $this->data['annualCustomersRep']; ?>
<table class="default">
<thead>
<tr>
<td>Rep
<?php foreach ([2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020] as $year) : ?>
<td><?= $year; ?>
<?php endforeach; ?>
<tbody>
<?php
$sum = [];
foreach ($customersRep as $rep => $annual) : ?>
<tr>
<td><?= $rep; ?>
<?php foreach ($annual as $year => $values) :
$sum[$values['year']] = ($sum[$values['year']] ?? 0) + $values['customers']; ?>
<td><?= $values['customers']; ?>
<?php endforeach; ?>
<?php endforeach; ?>
<tr>
<td>Total
<?php foreach ([2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020] as $year) : ?>
<td><?= $sum[$year]; ?>
<?php endforeach; ?>
</table>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Profit per Rep - Current
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $customersRep = $this->data['currentCustomersRep']; ?>
<div class="portlet-body">
<canvas id="sales-region" data-chart='{
"type": "horizontalBar",
"data": {
"labels": [
<?php
$temp = [];
foreach ($customersRep as $name => $rep) {
$temp[] = $name;
}
?>
<?= '"' . \implode('", "', $temp) . '"'; ?>
],
"datasets": [
{
"label": "<?= $this->getHtml('Customers'); ?>",
"type": "horizontalBar",
"data": [
<?php
$temp = [];
foreach ($customersRep as $values) {
$temp[] = ((int) $values['customers']);
}
?>
<?= \implode(',', $temp); ?>
],
"fill": false,
"borderColor": "rgb(54, 162, 235)",
"backgroundColor": "rgb(54, 162, 235)",
"tension": 0.0
}
]
},
"options": {
"title": {
"display": false,
"text": "Customers per rep"
}
}
}'></canvas>
<div class="more-container">
<input id="more-customer-rep-current" type="checkbox" name="more-container">
<label for="more-customer-rep-current">
<span>Data</span>
<i class="fa fa-chevron-right expand"></i>
</label>
<div>
<table class="default">
<thead>
<tr>
<td>Rep
<td>Customer count
<tbody>
<?php
$sum = 0;
foreach ($customersRep as $rep => $values) : $sum += $values['customers']; ?>
<tr>
<td><?= $rep; ?>
<td><?= $values['customers']; ?>
<?php endforeach; ?>
<tr>
<td>Total
<td><?= $sum; ?>
</table>
</div>
</div>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Profit per Rep - Annual
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $customersRep = $this->data['annualCustomersRep']; ?>
<table class="default">
<thead>
<tr>
<td>Rep
<?php foreach ([2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020] as $year) : ?>
<td><?= $year; ?>
<?php endforeach; ?>
<tbody>
<?php
$sum = [];
foreach ($customersRep as $rep => $annual) : ?>
<tr>
<td><?= $rep; ?>
<?php foreach ($annual as $year => $values) :
$sum[$values['year']] = ($sum[$values['year']] ?? 0) + $values['customers']; ?>
<td><?= $values['customers']; ?>
<?php endforeach; ?>
<?php endforeach; ?>
<tr>
<td>Total
<?php foreach ([2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020] as $year) : ?>
<td><?= $sum[$year]; ?>
<?php endforeach; ?>
</table>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head">
Sales / Rep
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<table class="default">
<thead>
<tr>
<td>Rep
<td>Sales PY
<td>Sales B
<td>Sales A
<td>Diff PY
<td>Diff B
<tbody>
</table>
</section>
</div>
</div>
</div>
</div>
</div>

View File

@ -79,7 +79,7 @@ final class Autoloader
$class = \strtr($class, '_\\', '//');
if (\stripos($class, 'Web/Backend') !== false || \stripos($class, 'Web/Api') !== false) {
$class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'Karaka/Web/', $class);
$class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'MainRepository/Web/', $class);
}
$class2 = $class;

View File

@ -7,7 +7,10 @@ declare(strict_types=1);
\error_reporting(\E_ALL);
\setlocale(\LC_ALL, 'en_US.UTF-8');
require_once __DIR__ . '/../vendor/autoload.php';
if (\is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
require_once __DIR__ . '/Autoloader.php';
use phpOMS\DataStorage\Database\DatabasePool;
@ -71,9 +74,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -81,9 +84,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -91,9 +94,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -101,9 +104,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -111,9 +114,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -121,9 +124,9 @@ $CONFIG = [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -133,9 +136,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -143,9 +146,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -153,9 +156,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -163,9 +166,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -173,9 +176,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -183,9 +186,9 @@ $CONFIG = [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'login' => 'test', /* db login name */
'password' => 'orange', /* db login password */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -233,9 +236,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -243,9 +246,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -253,9 +256,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -263,9 +266,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -273,9 +276,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],
@ -283,9 +286,9 @@ $CONFIG = [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'login' => 'test', /* db login name */
'password' => 'c0MplicatedP@ssword', /* db login password */
'database' => 'oms', /* db name */
'database' => 'omt', /* db name */
'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s',
],

View File

@ -123,7 +123,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->module->apiBillCreate($request, $response);
$bId = $response->get('')['response']->id;
$bId = $response->getDataArray('')['response']->id;
self::assertGreaterThan(0, $bId);
for ($k = 0; $k < 10; ++$k) {
@ -151,7 +151,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
}
$this->module->apiBillElementCreate($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->id);
self::assertGreaterThan(0, $response->getDataArray('')['response']->id);
}
$response = new HttpResponse();
@ -162,7 +162,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->module->apiBillPdfArchiveCreate($request, $response);
$result = $response->get('');
$result = $response->getData('');
self::assertGreaterThan(0, $result === null ? -1 : $result['response']?->id);
}
*/
@ -199,7 +199,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->module->apiBillCreate($request, $response);
$bId = $response->get('')['response']->id;
$bId = $response->getDataArray('')['response']->id;
self::assertGreaterThan(0, $bId);
for ($k = 0; $k < 10; ++$k) {
@ -227,7 +227,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
}
$this->module->apiBillElementCreate($request, $response);
self::assertGreaterThan(0, $response->get('')['response']->id);
self::assertGreaterThan(0, $response->getDataArray('')['response']->id);
}
$response = new HttpResponse();
@ -238,7 +238,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->module->apiBillPdfArchiveCreate($request, $response);
$result = $response->get('');
$result = $response->getData('');
self::assertGreaterThan(0, $result === null ? -1 : $result['response']?->id);
}
*/

View File

@ -7,6 +7,7 @@
<exclude>
<directory>../vendor*</directory>
<directory>../MainRepository*</directory>
<directory>../Karaka*</directory>
<directory>../Admin/Install/Application*</directory>
<directory>../phpOMS*</directory>
<directory>../tests*</directory>