mirror of
https://github.com/Karaka-Management/oms-BusinessExpenses.git
synced 2026-01-11 15:18:44 +00:00
Add notes and approved by
This commit is contained in:
parent
a2782df026
commit
21c0fe1d55
|
|
@ -120,6 +120,14 @@
|
|||
"type": "TINYINT(1)",
|
||||
"null": false
|
||||
},
|
||||
"bizexpenses_expense_approvedby": {
|
||||
"name": "bizexpenses_expense_approvedby",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"bizexpenses_expense_paid": {
|
||||
"name": "bizexpenses_expense_paid",
|
||||
"type": "TINYINT(1)",
|
||||
|
|
@ -199,6 +207,14 @@
|
|||
"type": "TINYINT(1)",
|
||||
"null": false
|
||||
},
|
||||
"bizexpenses_expense_element_approvedby": {
|
||||
"name": "bizexpenses_expense_element_approvedby",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "account",
|
||||
"foreignKey": "account_id"
|
||||
},
|
||||
"bizexpenses_expense_element_net": {
|
||||
"name": "bizexpenses_expense_element_net",
|
||||
"type": "BIGINT",
|
||||
|
|
@ -329,5 +345,31 @@
|
|||
"foreignKey": "media_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bizexpenses_expense_note": {
|
||||
"name": "bizexpenses_expense_note",
|
||||
"fields": {
|
||||
"bizexpenses_expense_note_id": {
|
||||
"name": "bizexpenses_expense_note_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"bizexpenses_expense_note_expense": {
|
||||
"name": "bizexpenses_expense_note_expense",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "bizexpenses_expense",
|
||||
"foreignKey": "bizexpenses_expense_id"
|
||||
},
|
||||
"bizexpenses_expense_note_doc": {
|
||||
"name": "bizexpenses_expense_note_doc",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "editor_doc",
|
||||
"foreignKey": "editor_doc_id"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -684,4 +684,62 @@ final class ApiController extends Controller
|
|||
public function apiExpenseFromUpload(RequestAbstract $request, ResponseAbstract $response, mixed $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, mixed $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateNoteCreate($request))) {
|
||||
$response->data['expense_note_create'] = new FormValidation($val);
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$request->setData('virtualpath', '/Modules/BusinessExpenses/Items/' . $request->getData('id'), true);
|
||||
$this->app->moduleManager->get('Editor', 'Api')->apiEditorCreate($request, $response, $data);
|
||||
|
||||
if ($response->header->status !== RequestStatusCode::R_200) {
|
||||
return;
|
||||
}
|
||||
|
||||
$responseData = $response->get($request->uri->__toString());
|
||||
if (!\is_array($responseData)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$model = $responseData['response'];
|
||||
$this->createModelRelation($request->header->account, (int) $request->getData('id'), $model->id, ExpenseMapper::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'] = !$request->hasData('id'))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ class Expense
|
|||
|
||||
public Account $from;
|
||||
|
||||
public ?Account $approvedBy = null;
|
||||
|
||||
public int $status = ExpenseStatus::DRAFT;
|
||||
|
||||
public BaseStringL11nType $type;
|
||||
|
|
@ -67,6 +69,8 @@ class Expense
|
|||
|
||||
public string $country = ISO3166TwoEnum::_USA;
|
||||
|
||||
public array $notes = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = new BaseStringL11nType();
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ class ExpenseElement
|
|||
|
||||
public bool $approved = false;
|
||||
|
||||
public ?Account $approvedBy = null;
|
||||
|
||||
public string $description = '';
|
||||
|
||||
public FloatInt $net;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ final class ExpenseElementMapper extends DataMapperFactory
|
|||
'bizexpenses_expense_element_id' => ['name' => 'bizexpenses_expense_element_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'bizexpenses_expense_element_description' => ['name' => 'bizexpenses_expense_element_description', 'type' => 'string', 'internal' => 'description'],
|
||||
'bizexpenses_expense_element_approved' => ['name' => 'bizexpenses_expense_element_approved', 'type' => 'bool', 'internal' => 'approved'],
|
||||
'bizexpenses_expense_element_approvedby' => ['name' => 'bizexpenses_expense_element_approvedby', 'type' => 'bool', 'internal' => 'approvedBy'],
|
||||
'bizexpenses_expense_element_net' => ['name' => 'bizexpenses_expense_element_net', 'type' => 'Serializable', 'internal' => 'net'],
|
||||
'bizexpenses_expense_element_gross' => ['name' => 'bizexpenses_expense_element_gross', 'type' => 'Serializable', 'internal' => 'gross'],
|
||||
'bizexpenses_expense_element_taxp' => ['name' => 'bizexpenses_expense_element_taxp', 'type' => 'Serializable', 'internal' => 'taxP'],
|
||||
|
|
@ -87,6 +88,10 @@ final class ExpenseElementMapper extends DataMapperFactory
|
|||
'mapper' => SupplierMapper::class,
|
||||
'external' => 'bizexpenses_expense_element_supplier',
|
||||
],
|
||||
'approvedBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'external' => 'bizexpenses_expense_element_approvedby',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace Modules\BusinessExpenses\Models;
|
|||
use Modules\Admin\Models\AccountMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use Modules\Editor\Models\EditorDocMapper;
|
||||
|
||||
/**
|
||||
* mapper class.
|
||||
|
|
@ -42,6 +43,7 @@ final class ExpenseMapper extends DataMapperFactory
|
|||
'bizexpenses_expense_status' => ['name' => 'bizexpenses_expense_status', 'type' => 'int', 'internal' => 'status'],
|
||||
'bizexpenses_expense_description' => ['name' => 'bizexpenses_expense_description', 'type' => 'string', 'internal' => 'description'],
|
||||
'bizexpenses_expense_approved' => ['name' => 'bizexpenses_expense_approved', 'type' => 'bool', 'internal' => 'approved'],
|
||||
'bizexpenses_expense_approvedby' => ['name' => 'bizexpenses_expense_approvedby', 'type' => 'bool', 'internal' => 'approvedBy'],
|
||||
'bizexpenses_expense_paid' => ['name' => 'bizexpenses_expense_paid', 'type' => 'bool', 'internal' => 'paid'],
|
||||
'bizexpenses_expense_net' => ['name' => 'bizexpenses_expense_net', 'type' => 'Serializable', 'internal' => 'net'],
|
||||
'bizexpenses_expense_gross' => ['name' => 'bizexpenses_expense_gross', 'type' => 'Serializable', 'internal' => 'gross'],
|
||||
|
|
@ -73,6 +75,12 @@ final class ExpenseMapper extends DataMapperFactory
|
|||
'external' => 'bizexpenses_expense_media_dst',
|
||||
'self' => 'bizexpenses_expense_media_src',
|
||||
],
|
||||
'notes' => [
|
||||
'mapper' => EditorDocMapper::class, /* mapper of the related object */
|
||||
'table' => 'bizexpenses_expense_note', /* table of the related object, null if no relation table is used (many->1) */
|
||||
'external' => 'bizexpenses_expense_note_doc',
|
||||
'self' => 'bizexpenses_expense_note_expense',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -86,6 +94,10 @@ final class ExpenseMapper extends DataMapperFactory
|
|||
'mapper' => AccountMapper::class,
|
||||
'external' => 'bizexpenses_expense_from',
|
||||
],
|
||||
'approvedBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'external' => 'bizexpenses_expense_approvedby',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user