mirror of
https://github.com/Karaka-Management/oms-Billing.git
synced 2026-01-26 14:28:42 +00:00
todo implementations
This commit is contained in:
parent
881dc15ac5
commit
6af2fbaf63
|
|
@ -1,6 +0,0 @@
|
|||
[Dolphin]
|
||||
Timestamp=2021,2,7,12,37,21
|
||||
Version=4
|
||||
|
||||
[Settings]
|
||||
HiddenFilesShown=true
|
||||
19
Admin/Install/Admin.install.php
Normal file
19
Admin/Install/Admin.install.php
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 8.0
|
||||
*
|
||||
* @package Modules\Billing\Admin
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link https://orange-management.org
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Modules\Billing\Controller\ApiController;
|
||||
use Modules\Billing\Models\SettingsEnum;
|
||||
|
||||
return [
|
||||
];
|
||||
|
|
@ -70,6 +70,11 @@
|
|||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_numberformat": {
|
||||
"name": "billing_bill_numberformat",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_info": {
|
||||
"name": "billing_bill_info",
|
||||
"type": "TEXT",
|
||||
|
|
@ -203,23 +208,43 @@
|
|||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"billing_bill_gross": {
|
||||
"name": "billing_bill_gross",
|
||||
"billing_bill_netprofit": {
|
||||
"name": "billing_bill_netprofit",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_net": {
|
||||
"name": "billing_bill_net",
|
||||
"billing_bill_grossprofit": {
|
||||
"name": "billing_bill_grossprofit",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_costs": {
|
||||
"name": "billing_bill_costs",
|
||||
"billing_bill_netcosts": {
|
||||
"name": "billing_bill_netcosts",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_profit": {
|
||||
"name": "billing_bill_profit",
|
||||
"billing_bill_grosscosts": {
|
||||
"name": "billing_bill_grosscosts",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_netsales": {
|
||||
"name": "billing_bill_netsales",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_grosssales": {
|
||||
"name": "billing_bill_grosssales",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_netdiscount": {
|
||||
"name": "billing_bill_netdiscount",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_grossdiscount": {
|
||||
"name": "billing_bill_grossdiscount",
|
||||
"type": "BIGINT",
|
||||
"null": false
|
||||
},
|
||||
|
|
@ -329,26 +354,98 @@
|
|||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"billing_bill_element_single_salesprice_net": {
|
||||
"name": "billing_bill_element_single_salesprice_net",
|
||||
"billing_bill_element_single_netlistprice": {
|
||||
"name": "billing_bill_element_single_netlistprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_purchaseprice_net": {
|
||||
"name": "billing_bill_element_single_purchaseprice_net",
|
||||
"billing_bill_element_single_grosslistprice": {
|
||||
"name": "billing_bill_element_single_netlistprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_salesprice_net": {
|
||||
"name": "billing_bill_element_total_salesprice_net",
|
||||
"billing_bill_element_total_netlistprice": {
|
||||
"name": "billing_bill_element_total_netlistprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_purchaseprice_net": {
|
||||
"name": "billing_bill_element_total_purchaseprice_net",
|
||||
"billing_bill_element_total_grosslistprice": {
|
||||
"name": "billing_bill_element_total_netlistprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_netsalesprice": {
|
||||
"name": "billing_bill_element_single_netsalesprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_grosssalesprice": {
|
||||
"name": "billing_bill_element_single_netsalesprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_netsalesprice": {
|
||||
"name": "billing_bill_element_total_netsalesprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_grosssalesprice": {
|
||||
"name": "billing_bill_element_total_netsalesprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_netpurchaseprice": {
|
||||
"name": "billing_bill_element_single_netpurchaseprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_grosspurchaseprice": {
|
||||
"name": "billing_bill_element_single_netpurchaseprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_netpurchaseprice": {
|
||||
"name": "billing_bill_element_total_netpurchaseprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_grosspurchaseprice": {
|
||||
"name": "billing_bill_element_total_netpurchaseprice",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_netprofit": {
|
||||
"name": "billing_bill_element_single_netprofit",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_single_grossprofit": {
|
||||
"name": "billing_bill_element_single_netprofit",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_netprofit": {
|
||||
"name": "billing_bill_element_total_netprofit",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"billing_bill_element_total_grossprofit": {
|
||||
"name": "billing_bill_element_total_netprofit",
|
||||
"type": "BIGINT",
|
||||
"null": true,
|
||||
"default": null
|
||||
|
|
@ -471,5 +568,31 @@
|
|||
"foreignKey": "media_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"billing_bill_note": {
|
||||
"name": "billing_bill_note",
|
||||
"fields": {
|
||||
"billing_bill_note_id": {
|
||||
"name": "billing_bill_note_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"billing_bill_note_item": {
|
||||
"name": "billing_bill_note_bill",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "billing_bill",
|
||||
"foreignKey": "billing_bill_id"
|
||||
},
|
||||
"billing_bill_note_doc": {
|
||||
"name": "billing_bill_note_doc",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "editor_doc",
|
||||
"foreignKey": "editor_doc_id"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -68,6 +68,11 @@ final class ApiController extends Controller
|
|||
|
||||
$bill = $this->createBillFromRequest($request, $response, $data);
|
||||
$this->createModel($request->header->account, $bill, BillMapper::class, 'bill', $request->getOrigin());
|
||||
|
||||
$new = clone $bill;
|
||||
$new->buildNumber(); // The bill id is part of the number
|
||||
$this->updateModel($request->header->account, $bill, $new, BillMapper::class, 'bill', $request->getOrigin());
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Bill', 'Bill successfully created.', $bill);
|
||||
}
|
||||
|
||||
|
|
@ -128,6 +133,73 @@ final class ApiController extends Controller
|
|||
return [];
|
||||
}
|
||||
|
||||
public function apiMediaAddToBill(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateMediaAddToBill($request))) {
|
||||
$response->set($request->uri->__toString(), new FormValidation($val));
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!empty($uploadedFiles = $request->getFiles() ?? [])) {
|
||||
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
|
||||
[],
|
||||
[],
|
||||
$uploadedFiles,
|
||||
$request->header->account,
|
||||
__DIR__ . '/../../../Modules/Media/Files/Modules/Editor',
|
||||
'/Modules/Editor',
|
||||
);
|
||||
|
||||
foreach ($uploaded as $media) {
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$request->getData('bill'),
|
||||
$media->getId(),
|
||||
BillMapper::class, 'media', '', $request->getOrigin()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($mediaFiles = $request->getDataJson('media') ?? [])) {
|
||||
foreach ($mediaFiles as $media) {
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$request->getData('bill'),
|
||||
$media,
|
||||
BillMapper::class, 'media', '', $request->getOrigin()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to bill.', [
|
||||
'upload' => $uploaded,
|
||||
'media' => $mediaFiles
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to validate bill creation from request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateMediaAddToBill(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['media'] = empty($request->getData('media')) && empty($request->getFiles()))
|
||||
|| ($val['bill'] = empty($request->getData('bill')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create a bill element
|
||||
*
|
||||
|
|
@ -338,4 +410,57 @@ final class ApiController extends Controller
|
|||
public function apiBillPdfCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create item files
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiNoteCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateNoteCreate($request))) {
|
||||
$response->set('item_note_create', new FormValidation($val));
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$request->setData('virtualpath', '/Modules/Billing/Articles/' . $request->getData('id'), true);
|
||||
$this->app->moduleManager->get('Editor')->apiEditorCreate($request, $response, $data);
|
||||
|
||||
if ($response->header->status !== RequestStatusCode::R_200) {
|
||||
return;
|
||||
}
|
||||
|
||||
$model = $response->get($request->uri->__toString())['response'];
|
||||
$this->createModelRelation($request->header->account, $request->getData('id'), $model->getId(), BillMapper::class, 'notes', '', $request->getOrigin());
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate item note create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateNoteCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['id'] = empty($request->getData('id')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
121
Models/Bill.php
121
Models/Bill.php
|
|
@ -21,6 +21,8 @@ use Modules\Media\Models\Media;
|
|||
use Modules\SupplierManagement\Models\Supplier;
|
||||
use phpOMS\Localization\ISO4217CharEnum;
|
||||
use phpOMS\Localization\Money;
|
||||
use Modules\Editor\Models\EditorDoc;
|
||||
use Mpdf\Tag\P;
|
||||
|
||||
/**
|
||||
* Bill class.
|
||||
|
|
@ -48,6 +50,14 @@ class Bill implements \JsonSerializable
|
|||
*/
|
||||
public string $number = '';
|
||||
|
||||
/**
|
||||
* Number format ID.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public string $numberFormat = '';
|
||||
|
||||
/**
|
||||
* Bill type.
|
||||
*
|
||||
|
|
@ -96,6 +106,14 @@ class Bill implements \JsonSerializable
|
|||
*/
|
||||
public Account $createdBy;
|
||||
|
||||
/**
|
||||
* Files.
|
||||
*
|
||||
* @var EditorDoc[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private array $notes = [];
|
||||
|
||||
public ?Client $client = null;
|
||||
|
||||
public ?Supplier $supplier = null;
|
||||
|
|
@ -212,7 +230,7 @@ class Bill implements \JsonSerializable
|
|||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $net;
|
||||
public Money $netProfit;
|
||||
|
||||
/**
|
||||
* Gross amount.
|
||||
|
|
@ -220,7 +238,7 @@ class Bill implements \JsonSerializable
|
|||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $gross;
|
||||
public Money $grossProfit;
|
||||
|
||||
/**
|
||||
* Costs in net.
|
||||
|
|
@ -228,7 +246,7 @@ class Bill implements \JsonSerializable
|
|||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $costs;
|
||||
public Money $netCosts;
|
||||
|
||||
/**
|
||||
* Profit in net.
|
||||
|
|
@ -236,7 +254,39 @@ class Bill implements \JsonSerializable
|
|||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $profit;
|
||||
public Money $grossCosts;
|
||||
|
||||
/**
|
||||
* Costs in net.
|
||||
*
|
||||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $netSales;
|
||||
|
||||
/**
|
||||
* Profit in net.
|
||||
*
|
||||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $grossSales;
|
||||
|
||||
/**
|
||||
* Costs in net.
|
||||
*
|
||||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $netDiscount;
|
||||
|
||||
/**
|
||||
* Profit in net.
|
||||
*
|
||||
* @var Money
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public Money $grossDiscount;
|
||||
|
||||
/**
|
||||
* Insurance fees in net.
|
||||
|
|
@ -365,10 +415,14 @@ class Bill implements \JsonSerializable
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->net = new Money(0);
|
||||
$this->gross = new Money(0);
|
||||
$this->costs = new Money(0);
|
||||
$this->profit = new Money(0);
|
||||
$this->netProfit = new Money(0);
|
||||
$this->grossProfit = new Money(0);
|
||||
$this->netCosts = new Money(0);
|
||||
$this->grossCosts = new Money(0);
|
||||
$this->netSales = new Money(0);
|
||||
$this->grossSales = new Money(0);
|
||||
$this->netDiscount = new Money(0);
|
||||
$this->grossDiscount = new Money(0);
|
||||
|
||||
$this->createdAt = new \DateTimeImmutable();
|
||||
$this->performanceDate = new \DateTime();
|
||||
|
|
@ -389,17 +443,15 @@ class Bill implements \JsonSerializable
|
|||
}
|
||||
|
||||
/**
|
||||
* Get Bill number.
|
||||
* Build the invoice number.
|
||||
*
|
||||
* @return string
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getNumber() : string
|
||||
public function buildNumber() : void
|
||||
{
|
||||
$number = $this->number;
|
||||
|
||||
return \str_replace(
|
||||
$this->number = \str_replace(
|
||||
[
|
||||
'{y}',
|
||||
'{m}',
|
||||
|
|
@ -414,10 +466,22 @@ class Bill implements \JsonSerializable
|
|||
$this->id,
|
||||
\is_int($this->type) ? $this->type : $this->type->getId(),
|
||||
],
|
||||
$number
|
||||
$this->numberFormat
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Bill number.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getNumber() : string
|
||||
{
|
||||
return $this->number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get type
|
||||
*
|
||||
|
|
@ -574,6 +638,32 @@ class Bill implements \JsonSerializable
|
|||
$this->elements[] = $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add note to item
|
||||
*
|
||||
* @param EditorDoc $note Note
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addNote(EditorDoc $note) : void
|
||||
{
|
||||
$this->notes[] = $note;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get notes
|
||||
*
|
||||
* @return EditorDoc[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getNotes() : array
|
||||
{
|
||||
return $this->notes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all media
|
||||
*
|
||||
|
|
@ -629,6 +719,7 @@ class Bill implements \JsonSerializable
|
|||
return [
|
||||
'id' => $this->id,
|
||||
'number' => $this->number,
|
||||
'numberFormat' => $this->numberFormat,
|
||||
'type' => $this->type,
|
||||
'shipTo' => $this->shipTo,
|
||||
'shipFAO' => $this->shipFAO,
|
||||
|
|
|
|||
|
|
@ -49,8 +49,12 @@ class BillElement implements \JsonSerializable
|
|||
|
||||
public Money $singleSalesPriceNet;
|
||||
|
||||
public Money $singleSalesPriceGross;
|
||||
|
||||
public Money $totalSalesPriceNet;
|
||||
|
||||
public Money $totalSalesPriceGross;
|
||||
|
||||
public ?FloatInt $singleDiscountP = null;
|
||||
|
||||
public ?FloatInt $totalDiscountP = null;
|
||||
|
|
@ -59,22 +63,34 @@ class BillElement implements \JsonSerializable
|
|||
|
||||
public ?FloatInt $discountQ = null;
|
||||
|
||||
public ?FloatInt $singlePriceNet = null;
|
||||
public Money $singleListPriceNet;
|
||||
|
||||
public ?FloatInt $totalPriceNet = null;
|
||||
public Money $singleListPriceGross;
|
||||
|
||||
public Money $totalListPriceNet;
|
||||
|
||||
public Money $totalListPriceGross;
|
||||
|
||||
public Money $singlePurchasePriceNet;
|
||||
|
||||
public Money $singlePurchasePriceGross;
|
||||
|
||||
public Money $totalPurchasePriceNet;
|
||||
|
||||
public Money $totalPurchasePriceGross;
|
||||
|
||||
public Money $singleProfitNet;
|
||||
|
||||
public Money $singleProfitGross;
|
||||
|
||||
public Money $totalProfitNet;
|
||||
|
||||
public Money $totalProfitGross;
|
||||
|
||||
public ?FloatInt $taxP = null;
|
||||
|
||||
public ?FloatInt $taxR = null;
|
||||
|
||||
public ?FloatInt $singleSalesPriceGross = null;
|
||||
|
||||
public ?FloatInt $totalSalesPriceGross = null;
|
||||
|
||||
/**
|
||||
* Event assigned to this element.
|
||||
*
|
||||
|
|
@ -100,11 +116,29 @@ class BillElement implements \JsonSerializable
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->singleListPriceNet = new Money();
|
||||
$this->singleListPriceGross = new Money();
|
||||
|
||||
$this->totalListPriceNet = new Money();
|
||||
$this->totalListPriceGross = new Money();
|
||||
|
||||
$this->singleSalesPriceNet = new Money();
|
||||
$this->singleSalesPriceGross = new Money();
|
||||
|
||||
$this->totalSalesPriceNet = new Money();
|
||||
$this->totalSalesPriceGross = new Money();
|
||||
|
||||
$this->singlePurchasePriceNet = new Money();
|
||||
$this->singlePurchasePriceGross = new Money();
|
||||
|
||||
$this->totalPurchasePriceNet = new Money();
|
||||
$this->totalPurchasePriceGross = new Money();
|
||||
|
||||
$this->singleProfitNet = new Money();
|
||||
$this->singleProfitGross = new Money();
|
||||
|
||||
$this->totalProfitNet = new Money();
|
||||
$this->totalProfitGross = new Money();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -40,10 +40,26 @@ final class BillElementMapper extends DataMapperAbstract
|
|||
'billing_bill_element_item_name' => ['name' => 'billing_bill_element_item_name', 'type' => 'string', 'internal' => 'itemName'],
|
||||
'billing_bill_element_item_desc' => ['name' => 'billing_bill_element_item_desc', 'type' => 'string', 'internal' => 'itemDescription'],
|
||||
'billing_bill_element_quantity' => ['name' => 'billing_bill_element_quantity', 'type' => 'int', 'internal' => 'quantity'],
|
||||
'billing_bill_element_single_salesprice_net' => ['name' => 'billing_bill_element_single_salesprice_net', 'type' => 'Serializable', 'internal' => 'singleSalesPriceNet'],
|
||||
'billing_bill_element_single_purchaseprice_net' => ['name' => 'billing_bill_element_single_purchaseprice_net', 'type' => 'Serializable', 'internal' => 'singlePurchasePriceNet'],
|
||||
'billing_bill_element_total_salesprice_net' => ['name' => 'billing_bill_element_total_salesprice_net', 'type' => 'Serializable', 'internal' => 'totalSalesPriceNet'],
|
||||
'billing_bill_element_total_purchaseprice_net' => ['name' => 'billing_bill_element_total_purchaseprice_net', 'type' => 'Serializable', 'internal' => 'totalPurchasePriceNet'],
|
||||
|
||||
'billing_bill_element_single_netlistprice' => ['name' => 'billing_bill_element_single_netlistprice', 'type' => 'Serializable', 'internal' => 'singleListPriceNet'],
|
||||
'billing_bill_element_single_grosslistprice' => ['name' => 'billing_bill_element_single_grosslistprice', 'type' => 'Serializable', 'internal' => 'singleListPriceGross'],
|
||||
'billing_bill_element_total_netlistprice' => ['name' => 'billing_bill_element_total_netlistprice', 'type' => 'Serializable', 'internal' => 'totalListPriceNet'],
|
||||
'billing_bill_element_total_grosslistprice' => ['name' => 'billing_bill_element_total_grosslistprice', 'type' => 'Serializable', 'internal' => 'totalListPriceGross'],
|
||||
|
||||
'billing_bill_element_single_netsalesprice' => ['name' => 'billing_bill_element_single_netsalesprice', 'type' => 'Serializable', 'internal' => 'singleSalesPriceNet'],
|
||||
'billing_bill_element_single_grosssalesprice' => ['name' => 'billing_bill_element_single_grosssalesprice', 'type' => 'Serializable', 'internal' => 'singleSalesPriceGross'],
|
||||
'billing_bill_element_total_netsalesprice' => ['name' => 'billing_bill_element_total_netsalesprice', 'type' => 'Serializable', 'internal' => 'totalSalesPriceNet'],
|
||||
'billing_bill_element_total_grosssalesprice' => ['name' => 'billing_bill_element_total_grosssalesprice', 'type' => 'Serializable', 'internal' => 'totalSalesPriceGross'],
|
||||
|
||||
'billing_bill_element_single_netprofit' => ['name' => 'billing_bill_element_single_netprofit', 'type' => 'Serializable', 'internal' => 'singleProfitNet'],
|
||||
'billing_bill_element_single_grossprofit' => ['name' => 'billing_bill_element_single_grossprofit', 'type' => 'Serializable', 'internal' => 'singleProfitGross'],
|
||||
'billing_bill_element_total_netprofit' => ['name' => 'billing_bill_element_total_netprofit', 'type' => 'Serializable', 'internal' => 'totalProfitNet'],
|
||||
'billing_bill_element_total_grossprofit' => ['name' => 'billing_bill_element_total_grossprofit', 'type' => 'Serializable', 'internal' => 'totalProfitGross'],
|
||||
|
||||
'billing_bill_element_single_netpurchaseprice' => ['name' => 'billing_bill_element_single_netpurchaseprice', 'type' => 'Serializable', 'internal' => 'singlePurchasePriceNet'],
|
||||
'billing_bill_element_single_grosspurchaseprice' => ['name' => 'billing_bill_element_single_grosspurchaseprice', 'type' => 'Serializable', 'internal' => 'singlePurchasePriceGross'],
|
||||
'billing_bill_element_total_netpurchaseprice' => ['name' => 'billing_bill_element_total_netpurchaseprice', 'type' => 'Serializable', 'internal' => 'totalPurchasePriceNet'],
|
||||
'billing_bill_element_total_grosspurchaseprice' => ['name' => 'billing_bill_element_total_grosspurchaseprice', 'type' => 'Serializable', 'internal' => 'totalPurchasePriceGross'],
|
||||
'billing_bill_element_bill' => ['name' => 'billing_bill_element_bill', 'type' => 'int', 'internal' => 'bill'],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use Modules\ClientManagement\Models\ClientMapper;
|
|||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\SupplierManagement\Models\SupplierMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use Modules\Editor\Models\EditorDocMapper;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
@ -39,6 +40,7 @@ class BillMapper extends DataMapperAbstract
|
|||
protected static array $columns = [
|
||||
'billing_bill_id' => ['name' => 'billing_bill_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'billing_bill_number' => ['name' => 'billing_bill_number', 'type' => 'string', 'internal' => 'number'],
|
||||
'billing_bill_numberformat' => ['name' => 'billing_bill_numberformat', 'type' => 'string', 'internal' => 'numberFormat'],
|
||||
'billing_bill_type' => ['name' => 'billing_bill_type', 'type' => 'int', 'internal' => 'type'],
|
||||
'billing_bill_info' => ['name' => 'billing_bill_info', 'type' => 'string', 'internal' => 'info'],
|
||||
'billing_bill_status' => ['name' => 'billing_bill_status', 'type' => 'int', 'internal' => 'status'],
|
||||
|
|
@ -54,10 +56,14 @@ class BillMapper extends DataMapperAbstract
|
|||
'billing_bill_billCity' => ['name' => 'billing_bill_billCity', 'type' => 'string', 'internal' => 'billCity'],
|
||||
'billing_bill_billZip' => ['name' => 'billing_bill_billZip', 'type' => 'string', 'internal' => 'billZip'],
|
||||
'billing_bill_billCountry' => ['name' => 'billing_bill_billCountry', 'type' => 'string', 'internal' => 'billCountry'],
|
||||
'billing_bill_gross' => ['name' => 'billing_bill_gross', 'type' => 'Serializable', 'internal' => 'gross'],
|
||||
'billing_bill_net' => ['name' => 'billing_bill_net', 'type' => 'Serializable', 'internal' => 'net'],
|
||||
'billing_bill_costs' => ['name' => 'billing_bill_costs', 'type' => 'Serializable', 'internal' => 'costs'],
|
||||
'billing_bill_profit' => ['name' => 'billing_bill_profit', 'type' => 'Serializable', 'internal' => 'profit'],
|
||||
'billing_bill_netprofit' => ['name' => 'billing_bill_netprofit', 'type' => 'Serializable', 'internal' => 'netProfit'],
|
||||
'billing_bill_grossprofit' => ['name' => 'billing_bill_grossprofit', 'type' => 'Serializable', 'internal' => 'grossProfit'],
|
||||
'billing_bill_netcosts' => ['name' => 'billing_bill_netcosts', 'type' => 'Serializable', 'internal' => 'netCosts'],
|
||||
'billing_bill_grosscosts' => ['name' => 'billing_bill_grosscosts', 'type' => 'Serializable', 'internal' => 'grossCosts'],
|
||||
'billing_bill_netsales' => ['name' => 'billing_bill_netsales', 'type' => 'Serializable', 'internal' => 'netSales'],
|
||||
'billing_bill_grosssales' => ['name' => 'billing_bill_grosssales', 'type' => 'Serializable', 'internal' => 'grossSales'],
|
||||
'billing_bill_netdiscount' => ['name' => 'billing_bill_netdiscount', 'type' => 'Serializable', 'internal' => 'netDiscount'],
|
||||
'billing_bill_grossdiscount' => ['name' => 'billing_bill_grossdiscount', 'type' => 'Serializable', 'internal' => 'grossDiscount'],
|
||||
'billing_bill_currency' => ['name' => 'billing_bill_currency', 'type' => 'string', 'internal' => 'currency'],
|
||||
'billing_bill_referral' => ['name' => 'billing_bill_referral', 'type' => 'int', 'internal' => 'referral'],
|
||||
'billing_bill_referral_name' => ['name' => 'billing_bill_referral_name', 'type' => 'string', 'internal' => 'referralName'],
|
||||
|
|
@ -94,6 +100,12 @@ class BillMapper extends DataMapperAbstract
|
|||
'external' => 'billing_bill_media_dst',
|
||||
'self' => 'billing_bill_media_src',
|
||||
],
|
||||
'notes' => [
|
||||
'mapper' => EditorDocMapper::class, /* mapper of the related object */
|
||||
'table' => 'billing_bill_note', /* table of the related object, null if no relation table is used (many->1) */
|
||||
'external' => 'billing_bill_note_doc',
|
||||
'self' => 'billing_bill_note_item',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
30
Models/SettingsEnum.php
Normal file
30
Models/SettingsEnum.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Orange Management
|
||||
*
|
||||
* PHP Version 8.0
|
||||
*
|
||||
* @package Modules\Billing\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link https://orange-management.org
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Billing\Models;
|
||||
|
||||
use phpOMS\Stdlib\Base\Enum;
|
||||
|
||||
/**
|
||||
* Module settings enum.
|
||||
*
|
||||
* @package Modules\Billing\Models
|
||||
* @license OMS License 1.0
|
||||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
abstract class SettingsEnum extends Enum
|
||||
{
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user