mirror of
https://github.com/Karaka-Management/oms-ItemManagement.git
synced 2026-02-04 22:48:39 +00:00
update composer and some item/client impl.
This commit is contained in:
parent
abd42067f0
commit
dde51536e9
37
.github/workflows/main.yml
vendored
37
.github/workflows/main.yml
vendored
|
|
@ -3,7 +3,42 @@ name: CI/CD
|
|||
on: [push]
|
||||
|
||||
jobs:
|
||||
codestyle-tests:
|
||||
autoformat:
|
||||
runs-on: ubuntu-latest
|
||||
if: "!contains(github.event.head_commit.message, 'NO_CI')"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 3
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Get Composer Cache Directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
- name: Setup Composer
|
||||
run: composer install
|
||||
- name: Autoformat
|
||||
run: 'vendor/bin/php-cs-fixer fix ./ --rules=''{"array_syntax": {"syntax": "short"}, "blank_line_after_namespace": true, "binary_operator_spaces": {"operators": {"=": "align", ".=": "align", "+=": "align", "-=": "align", "*=": "align", "/=": "align", "|=": "align", "&=": "align", "=>": "align", "??=": "align"}}, "cast_spaces": {"space": "single"}, "class_attributes_separation": { "elements": ["const", "method", "property"] }, "combine_consecutive_issets": true, "compact_nullable_typehint": true, "declare_strict_types": true, "declare_equal_normalize": {"space": "none"}, "elseif": true, "encoding": true, "explicit_indirect_variable": true, "explicit_string_variable": true, "function_to_constant": true, "implode_call": true, "increment_style": {"style": "pre"}, "is_null": {"use_yoda_style": false}, "line_ending": true, "logical_operators": true, "lowercase_cast": true, "lowercase_constants": true, "lowercase_keywords": true, "modernize_types_casting": true, "native_constant_invocation": true, "native_function_casing": true, "native_function_invocation": true, "new_with_braces": true, "no_extra_blank_lines": ["break", "case", "continue", "curly_brace_block", "extra", "return", "switch", "throw", "use"], "no_spaces_after_function_name": true, "no_alias_functions": true, "no_closing_tag": true, "no_empty_comment": true, "no_empty_phpdoc": true, "no_empty_statement": true, "no_homoglyph_names": true, "no_mixed_echo_print": {"use": "echo"}, "no_php4_constructor": true, "no_singleline_whitespace_before_semicolons": true, "no_spaces_inside_parenthesis": true, "no_trailing_whitespace": true, "no_unneeded_final_method": true, "no_unused_imports": true, "no_useless_return": true, "no_whitespace_before_comma_in_array": true, "no_whitespace_in_blank_line": true, "non_printable_character": true, "normalize_index_brace": true, "ordered_imports": {"sort_algorithm": "alpha"}, "ordered_interfaces": {"order": "alpha"}, "php_unit_construct": true, "php_unit_internal_class": true, "php_unit_ordered_covers": true, "php_unit_set_up_tear_down_visibility": true, "phpdoc_indent": true, "phpdoc_align": {"align": "vertical"}, "phpdoc_annotation_without_dot": true, "phpdoc_scalar": true, "phpdoc_return_self_reference": {"this": "self"}, "phpdoc_trim": true, "phpdoc_trim_consecutive_blank_line_separation": true, "random_api_migration": true, "self_accessor": true, "return_type_declaration": {"space_before": "one"}, "semicolon_after_instruction": true, "set_type_to_cast": true, "short_scalar_cast": true, "single_blank_line_at_eof": true, "single_line_after_imports": true, "standardize_increment": true, "trailing_comma_in_multiline_array": true, "trim_array_spaces": true, "visibility_required": true, "void_return": true}'' --allow-risky=yes'
|
||||
- name: Check for modified files
|
||||
id: git-check
|
||||
run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
|
||||
- name: Push changes
|
||||
if: steps.git-check.outputs.modified == 'true'
|
||||
run: |
|
||||
git config --global user.name 'Formatter Bot'
|
||||
git config --global user.email 'formatter.bot@orange-management.email'
|
||||
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
|
||||
git commit -am "Automated formatting changes"
|
||||
git push
|
||||
code-tests:
|
||||
runs-on: ubuntu-latest
|
||||
if: "!contains(github.event.head_commit.message, 'NO_CI')"
|
||||
strategy:
|
||||
|
|
|
|||
287
Admin/Install/Media/bill.pdf.php
Normal file
287
Admin/Install/Media/bill.pdf.php
Normal file
|
|
@ -0,0 +1,287 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
use Mpdf\Mpdf;
|
||||
|
||||
/**
|
||||
* @var \phpOMS\Views\View $this
|
||||
*/
|
||||
$bill = $this->getData('bill');
|
||||
|
||||
$mpdf = new Mpdf([
|
||||
'mode' => 'utf-8',
|
||||
'format' => 'A4-L',
|
||||
'orientation' => 'L',
|
||||
'margin_left' => 0,
|
||||
'margin_right' => 0,
|
||||
'margin_top' => 0,
|
||||
'margin_bottom' => 0,
|
||||
'margin_header' => 0,
|
||||
'margin_footer' => 0,
|
||||
]);
|
||||
|
||||
$mpdf->SetDisplayMode('fullpage');
|
||||
$mpdf->SetTitle($bill->getNumber());
|
||||
$mpdf->SetAuthor('Orange Management');
|
||||
|
||||
$mpdf->AddPage();
|
||||
|
||||
$mpdf->SetHTMLHeader('
|
||||
');
|
||||
|
||||
$mpdf->SetHTMLFooter('
|
||||
');
|
||||
|
||||
$mpdf->WriteHTML('
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {font-family: sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
p { margin: 0pt; }
|
||||
table.items {
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
td { vertical-align: top; }
|
||||
.items td {
|
||||
border-left: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
table thead td { background-color: #EEEEEE;
|
||||
text-align: center;
|
||||
border: 0.1mm solid #000000;
|
||||
font-variant: small-caps;
|
||||
}
|
||||
.items td.blanktotal {
|
||||
background-color: #EEEEEE;
|
||||
border: 0.1mm solid #000000;
|
||||
background-color: #FFFFFF;
|
||||
border: 0mm none #000000;
|
||||
border-top: 0.1mm solid #000000;
|
||||
border-right: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.totals {
|
||||
text-align: right;
|
||||
border: 0.1mm solid #000000;
|
||||
}
|
||||
.items td.cost {
|
||||
text-align: "." center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!--mpdf
|
||||
<htmlpageheader name="myheader">
|
||||
<table width="100%"><tr>
|
||||
<td width="50%" style="color:#0000BB; "><span style="font-weight: bold; font-size: 14pt;">Acme Trading Co.</span><br />123 Anystreet<br />Your City<br />GD12 4LP<br /><span style="font-family:dejavusanscondensed;">☎</span> 01777 123 567</td>
|
||||
<td width="50%" style="text-align: right;">Invoice No.<br /><span style="font-weight: bold; font-size: 12pt;">0012345</span></td>
|
||||
</tr></table>
|
||||
</htmlpageheader>
|
||||
<htmlpagefooter name="myfooter">
|
||||
<div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; ">
|
||||
Page {PAGENO} of {nb}
|
||||
</div>
|
||||
</htmlpagefooter>
|
||||
<sethtmlpageheader name="myheader" value="on" show-this-page="1" />
|
||||
<sethtmlpagefooter name="myfooter" value="on" />
|
||||
mpdf-->
|
||||
<div style="text-align: right">Date: 13th November 2008</div>
|
||||
<table width="100%" style="font-family: serif;" cellpadding="10"><tr>
|
||||
<td width="45%" style="border: 0.1mm solid #888888; "><span style="font-size: 7pt; color: #555555; font-family: sans;">SOLD TO:</span><br /><br />345 Anotherstreet<br />Little Village<br />Their City<br />CB22 6SO</td>
|
||||
<td width="10%"> </td>
|
||||
<td width="45%" style="border: 0.1mm solid #888888;"><span style="font-size: 7pt; color: #555555; font-family: sans;">SHIP TO:</span><br /><br />345 Anotherstreet<br />Little Village<br />Their City<br />CB22 6SO</td>
|
||||
</tr></table>
|
||||
<br />
|
||||
<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse; " cellpadding="8">
|
||||
<thead>
|
||||
<tr>
|
||||
<td width="15%">Ref. No.</td>
|
||||
<td width="10%">Quantity</td>
|
||||
<td width="45%">Description</td>
|
||||
<td width="15%">Unit Price</td>
|
||||
<td width="15%">Amount</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- ITEMS HERE -->
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MF1234567</td>
|
||||
<td align="center">10</td>
|
||||
<td>Large pack Hoover bags</td>
|
||||
<td class="cost">£2.56</td>
|
||||
<td class="cost">£25.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MX37801982</td>
|
||||
<td align="center">1</td>
|
||||
<td>Womans waterproof jacket<br />Options - Red and charcoal.</td>
|
||||
<td class="cost">£102.11</td>
|
||||
<td class="cost">£102.11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">MR7009298</td>
|
||||
<td align="center">25</td>
|
||||
<td>Steel nails; oval head; 30mm x 3mm. Packs of 1000.</td>
|
||||
<td class="cost">£12.26</td>
|
||||
<td class="cost">£325.60</td>
|
||||
</tr>
|
||||
<!-- END ITEMS HERE -->
|
||||
<tr>
|
||||
<td class="blanktotal" colspan="3" rowspan="6"></td>
|
||||
<td class="totals">Subtotal:</td>
|
||||
<td class="totals cost">£1825.60</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Tax:</td>
|
||||
<td class="totals cost">£18.25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Shipping:</td>
|
||||
<td class="totals cost">£42.56</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals"><b>TOTAL:</b></td>
|
||||
<td class="totals cost"><b>£1882.56</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals">Deposit:</td>
|
||||
<td class="totals cost">£100.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="totals"><b>Balance due:</b></td>
|
||||
<td class="totals cost"><b>£1782.56</b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; font-style: italic;">Payment terms: payment due in 30 days</div>
|
||||
</body>
|
||||
</html>
|
||||
');
|
||||
|
||||
$mpdf->Output();
|
||||
BIN
Admin/Install/Media/logo.png
Executable file
BIN
Admin/Install/Media/logo.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
|
|
@ -64,6 +64,19 @@ final class Installer extends InstallerAbstract
|
|||
ItemAttributeTypeL11nMapper::create(new ItemAttributeTypeL11n($itemAttrType['color']->getId(), 'Color', ISO639x1Enum::_EN));
|
||||
ItemAttributeTypeL11nMapper::create(new ItemAttributeTypeL11n($itemAttrType['color']->getId(), 'Farbe', ISO639x1Enum::_DE));
|
||||
|
||||
// weight
|
||||
// segment_level_1
|
||||
// segment_level_2
|
||||
// segment_level_3
|
||||
// segment_level_4
|
||||
// product_group
|
||||
// consumable
|
||||
// packaging
|
||||
// service
|
||||
// machine
|
||||
// spare part
|
||||
// transportation
|
||||
|
||||
return $itemAttrType;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ final class ApiController extends Controller
|
|||
$item->number = $request->getData('number') ?? '';
|
||||
$item->salesPrice = new Money($request->getData('salesprice', 'int') ?? 0);
|
||||
$item->purchasePrice = new Money($request->getData('purchaseprice', 'int') ?? 0);
|
||||
$item->info = $request->getData('info') ?? '';
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace Modules\ItemManagement\Controller;
|
|||
use Model\SettingsEnum;
|
||||
use Modules\Admin\Models\LocalizationMapper;
|
||||
use Modules\Billing\Models\BillMapper;
|
||||
use Modules\ItemManagement\Models\ItemL11nTypeMapper;
|
||||
use Modules\ItemManagement\Models\ItemMapper;
|
||||
use phpOMS\Contract\RenderableInterface;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
|
|
@ -25,6 +26,9 @@ use phpOMS\Views\View;
|
|||
use phpOMS\Stdlib\Base\SmartDateTime;
|
||||
use phpOMS\Localization\Money;
|
||||
use phpOMS\Asset\AssetType;
|
||||
use Modules\ItemManagement\Models\ItemL11nMapper;
|
||||
use Modules\ItemManagement\Models\ItemAttributeMapper;
|
||||
use Modules\Billing\Models\BillTypeL11n;
|
||||
|
||||
/**
|
||||
* ItemManagement controller class.
|
||||
|
|
@ -200,12 +204,22 @@ final class BackendController extends Controller
|
|||
|
||||
$view->setData('defaultlocalization', LocalizationMapper::get((int) $settings['id']));
|
||||
|
||||
$itemL11n = ItemL11nMapper::withConditional('language', $response->getLanguage())
|
||||
::withConditional('item', $item->getId())::getAll();
|
||||
$view->addData('itemL11n', $itemL11n);
|
||||
|
||||
$itemAttribute = ItemAttributeMapper::withConditional('language', $response->getLanguage())
|
||||
::withConditional('item', $item->getId())::getAll();
|
||||
$view->addData('itemAttribute', $itemAttribute);
|
||||
|
||||
// stats
|
||||
if ($this->app->moduleManager->isActive('Billing')) {
|
||||
$ytd = BillMapper::getSalesByItemId($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'));
|
||||
$mtd = BillMapper::getSalesByItemId($item->getId(), new SmartDateTime('Y-m-01'), new SmartDateTime('now'));
|
||||
$avg = BillMapper::getAvgSalesPriceByItemId($item->getId(), (new SmartDateTime('now'))->smartModify(-1), new SmartDateTime('now'));
|
||||
$lastOrder = BillMapper::getLastOrderDateByItemId($item->getId());
|
||||
$newestInvoices = BillMapper::getNewestItemInvoices($item->getId(), 5);
|
||||
// @todo: why is the conditional array necessary, shouldn't the mapper realize when it mustn't use the conditional (when the field doesn't exist in the mapper)
|
||||
$newestInvoices = BillMapper::withConditional('language', $response->getLanguage(), [BillTypeL11n::class])::getNewestItemInvoices($item->getId(), 5);
|
||||
$topCustomers = BillMapper::getItemTopCustomers($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'), 5);
|
||||
$regionSales = BillMapper::getItemRegionSales($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'));
|
||||
$countrySales = BillMapper::getItemCountrySales($item->getId(), new SmartDateTime('Y-01-01'), new SmartDateTime('now'), 5);
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class ItemAttributeType implements \JsonSerializable, ArrayableInterface
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected string $name = '';
|
||||
protected string $name = ''; // @todo: currently not filled, should be used as identifier or if not required removed (at the moment it seems like it is useless?!)
|
||||
|
||||
/**
|
||||
* Which field data type is required (string, int, ...) in the value
|
||||
|
|
@ -120,6 +120,16 @@ class ItemAttributeType implements \JsonSerializable, ArrayableInterface
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getL11n() : string
|
||||
{
|
||||
return $this->l11n instanceof ItemAttributeTypeL11n ? $this->l11n->title : $this->l11n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set fields
|
||||
*
|
||||
|
|
|
|||
|
|
@ -153,6 +153,21 @@ class ItemAttributeValue implements \JsonSerializable, ArrayableInterface
|
|||
}
|
||||
}
|
||||
|
||||
public function getValue() : mixed
|
||||
{
|
||||
if (!empty($this->valueStr)) {
|
||||
return $this->valueStr;
|
||||
} elseif (!empty($this->valueInt)) {
|
||||
return $this->valueInt;
|
||||
} elseif (!empty($this->valueDec)) {
|
||||
return $this->valueDec;
|
||||
} elseif ($this->valueDat instanceof \DateTimeInterface) {
|
||||
return $this->valueDat;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set language
|
||||
*
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ echo $this->getData('nav')->render(); ?>
|
|||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n('name1')->description); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n('name2')->description); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n('name3')->description); ?></a>
|
||||
<td>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->salesPrice->getCurrency()); ?></a>
|
||||
<td>
|
||||
<td>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -16,18 +16,22 @@ use Modules\Media\Models\NullMedia;
|
|||
use phpOMS\Localization\NullLocalization;
|
||||
use phpOMS\Uri\UriFactory;
|
||||
use phpOMS\Localization\Money;
|
||||
use phpOMS\Localization\ISO639Enum;
|
||||
|
||||
/**
|
||||
* @var \Modules\ItemManagement\Models\Item $item
|
||||
*/
|
||||
$item = $this->getData('item');
|
||||
$itemL11n = $this->getData('itemL11n');
|
||||
$itemAttribute = $this->getData('itemAttribute');
|
||||
|
||||
$newestInvoices = $this->getData('newestInvoices') ?? [];
|
||||
$topCustomers = $this->getData('topCustomers') ?? [];
|
||||
$regionSales = $this->getData('regionSales') ?? [];
|
||||
$countrySales = $this->getData('countrySales') ?? [];
|
||||
$monthlySalesCosts = $this->getData('monthlySalesCosts') ?? [];
|
||||
|
||||
$languages = \phpOMS\Localization\ISO639Enum::getConstants();
|
||||
$languages = ISO639Enum::getConstants();
|
||||
|
||||
$l11n = $this->getData('defaultlocalization') ?? new NullLocalization();
|
||||
|
||||
|
|
@ -175,12 +179,14 @@ echo $this->getData('nav')->render();
|
|||
<td>Net
|
||||
<td>Date
|
||||
<tbody>
|
||||
<?php foreach ($newestInvoices as $invoice) : ?>
|
||||
<tr>
|
||||
<td><?= $invoice->getNumber(); ?>
|
||||
<td><?= $invoice->billTo; ?>
|
||||
<td><?= $invoice->net->getCurrency(); ?>
|
||||
<td><?= $invoice->createdAt->format('Y-m-d'); ?>
|
||||
<?php foreach ($newestInvoices as $invoice) :
|
||||
$url = UriFactory::build('{/prefix}sales/invoice?{?}&id=' . $invoice->getId());
|
||||
?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="<?= $url; ?>"><?= $invoice->getNumber(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $invoice->billTo; ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $invoice->net->getCurrency(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $invoice->createdAt->format('Y-m-d'); ?></a>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</section>
|
||||
|
|
@ -279,6 +285,9 @@ echo $this->getData('nav')->render();
|
|||
"display": true,
|
||||
"labelString": "Margin %"
|
||||
},
|
||||
"gridLines": {
|
||||
"display": false
|
||||
},
|
||||
"beginAtZero": true,
|
||||
"ticks": {
|
||||
"min": 0,
|
||||
|
|
@ -367,12 +376,10 @@ echo $this->getData('nav')->render();
|
|||
<div class="tab">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<section class="box wf-100">
|
||||
<header>
|
||||
<h1><?= $this->getHtml('Description'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form id="item-edit" action="<?= \phpOMS\Uri\UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<section class="portlet">
|
||||
<form id="item-edit" action="<?= UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<div class="portlet-head"><?= $this->getHtml('Description'); ?></div>
|
||||
<div class="portlet-body">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -397,37 +404,39 @@ echo $this->getData('nav')->render();
|
|||
<td><label for="iText1"><?= $this->getHtml('Text'); ?></label>
|
||||
<tr>
|
||||
<td><textarea id="iText1" name="text1"></textarea>
|
||||
<tr>
|
||||
<td><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-foot"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>"></div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<table id="groupTable" class="box table default">
|
||||
<caption><?= $this->getHtml('Groups'); ?><i class="fa fa-download floatRight download btn"></i></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
<td><?= $this->getHtml('ID', '0', '0'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td class="wf-100"><?= $this->getHtml('Name'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<tbody>
|
||||
<?php $c = 0;
|
||||
$l11ns = [];
|
||||
foreach ($l11ns as $key => $value) : ++$c;
|
||||
$url = \phpOMS\Uri\UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->name); ?></a>
|
||||
<?php endforeach; ?>
|
||||
<?php if ($c === 0) : ?>
|
||||
<section class="portlet">
|
||||
<div class="portlet-head"><?= $this->getHtml('Localizations'); ?><i class="fa fa-download floatRight download btn"></i></div>
|
||||
<table id="groupTable" class="default">
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="5" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
<td>
|
||||
<td><?= $this->getHtml('ID', '0', '0'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td><?= $this->getHtml('Name'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td class="wf-100"><?= $this->getHtml('Localization'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<tbody>
|
||||
<?php $c = 0;
|
||||
foreach ($itemL11n as $key => $value) : ++$c;
|
||||
$url = UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->type->title); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->description); ?></a>
|
||||
<?php endforeach; ?>
|
||||
<?php if ($c === 0) : ?>
|
||||
<tr>
|
||||
<td colspan="5" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -435,12 +444,10 @@ echo $this->getData('nav')->render();
|
|||
<div class="tab">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<section class="box wf-100">
|
||||
<header>
|
||||
<h1><?= $this->getHtml('Attribute'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form id="item-edit" action="<?= \phpOMS\Uri\UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<section class="portlet">
|
||||
<div class="portlet-head"><?= $this->getHtml('Attribute'); ?></div class="portlet-head">
|
||||
<div class="portlet-body">
|
||||
<form id="item-edit" action="<?= UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -483,28 +490,31 @@ echo $this->getData('nav')->render();
|
|||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<table id="groupTable" class="box table default">
|
||||
<caption><?= $this->getHtml('Groups'); ?><i class="fa fa-download floatRight download btn"></i></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>
|
||||
<td><?= $this->getHtml('ID', '0', '0'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td class="wf-100"><?= $this->getHtml('Name'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<tbody>
|
||||
<?php $c = 0;
|
||||
$l11ns = [];
|
||||
foreach ($l11ns as $key => $value) : ++$c;
|
||||
$url = \phpOMS\Uri\UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->name); ?></a>
|
||||
<?php endforeach; ?>
|
||||
<?php if ($c === 0) : ?>
|
||||
<section class="portlet">
|
||||
<div class="portlet-head"><?= $this->getHtml('Groups'); ?><i class="fa fa-download floatRight download btn"></i></div>
|
||||
<table id="groupTable" class="default">
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="5" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
<td>
|
||||
<td><?= $this->getHtml('ID', '0', '0'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td><?= $this->getHtml('Name'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<td class="wf-100"><?= $this->getHtml('Name'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
|
||||
<tbody>
|
||||
<?php $c = 0;
|
||||
foreach ($itemAttribute as $key => $value) : ++$c;
|
||||
$url = UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $this->printHtml($value->type->getL11n()); ?></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->value->getValue() instanceof \DateTime ? $value->value->getValue()->format('Y-m-d') : $this->printHtml((string) $value->value->getValue()); ?></a>
|
||||
<?php endforeach; ?>
|
||||
<?php if ($c === 0) : ?>
|
||||
<tr>
|
||||
<td colspan="5" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -517,7 +527,7 @@ echo $this->getData('nav')->render();
|
|||
<h1><?= $this->getHtml('Customer'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form id="item-edit" action="<?= \phpOMS\Uri\UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<form id="item-edit" action="<?= UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -573,7 +583,7 @@ echo $this->getData('nav')->render();
|
|||
<?php $c = 0;
|
||||
$l11ns = [];
|
||||
foreach ($l11ns as $key => $value) : ++$c;
|
||||
$url = \phpOMS\Uri\UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
$url = UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
|
|
@ -596,7 +606,7 @@ echo $this->getData('nav')->render();
|
|||
<h1><?= $this->getHtml('Purchase'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form action="<?= \phpOMS\Uri\UriFactory::build('{/api}...'); ?>" method="post">
|
||||
<form action="<?= UriFactory::build('{/api}...'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -635,7 +645,7 @@ echo $this->getData('nav')->render();
|
|||
<h1><?= $this->getHtml('Supplier'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form id="item-edit" action="<?= \phpOMS\Uri\UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<form id="item-edit" action="<?= UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -703,7 +713,7 @@ echo $this->getData('nav')->render();
|
|||
<?php $c = 0;
|
||||
$l11ns = [];
|
||||
foreach ($l11ns as $key => $value) : ++$c;
|
||||
$url = \phpOMS\Uri\UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
$url = UriFactory::build('{/prefix}admin/group/settings?{?}&id=' . $value->getId()); ?>
|
||||
<tr data-href="<?= $url; ?>">
|
||||
<td><a href="#"><i class="fa fa-times"></i></a>
|
||||
<td><a href="<?= $url; ?>"><?= $value->getId(); ?></a>
|
||||
|
|
@ -736,7 +746,7 @@ echo $this->getData('nav')->render();
|
|||
<h1><?= $this->getHtml('General'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form action="<?= \phpOMS\Uri\UriFactory::build('{/api}...'); ?>" method="post">
|
||||
<form action="<?= UriFactory::build('{/api}...'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
@ -791,7 +801,7 @@ echo $this->getData('nav')->render();
|
|||
<h1><?= $this->getHtml('General'); ?></h1>
|
||||
</header>
|
||||
<div class="inner">
|
||||
<form id="item-edit" action="<?= \phpOMS\Uri\UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<form id="item-edit" action="<?= UriFactory::build('{/api}itemmgmt/item'); ?>" method="post">
|
||||
<table class="layout wf-100">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
],
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": ">=9.4",
|
||||
"friendsofphp/php-cs-fixer": ">=2.18",
|
||||
"squizlabs/php_codesniffer": ">=3.5",
|
||||
"phpmd/phpmd": ">=2.9",
|
||||
"phpstan/phpstan": ">=0.12.58",
|
||||
|
|
|
|||
10
composer.lock
generated
10
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "38570a7f31334ef1b0fd42df055bafe2",
|
||||
"content-hash": "a2683b12c2f52a958b7692f4827e52d4",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
|
|
@ -3792,12 +3792,12 @@
|
|||
"version": "1.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webmozart/assert.git",
|
||||
"url": "https://github.com/webmozarts/assert.git",
|
||||
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
||||
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
|
||||
"shasum": ""
|
||||
},
|
||||
|
|
@ -3835,8 +3835,8 @@
|
|||
"validate"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/webmozart/assert/issues",
|
||||
"source": "https://github.com/webmozart/assert/tree/master"
|
||||
"issues": "https://github.com/webmozarts/assert/issues",
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.9.1"
|
||||
},
|
||||
"time": "2020-07-08T17:02:28+00:00"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user