rechnungsanhang handlign

charts bugfix only empty database
This commit is contained in:
Markus
2026-06-08 15:58:11 +02:00
parent aedd66202a
commit 6457f38f01
7 changed files with 117 additions and 96 deletions

View File

@@ -56,6 +56,9 @@ class Charts extends BaseController {
GROUP BY description, account_id
EOD;
$data = array();
$werte = array();
$ids = array();
$labels = array();
$result = $this->db->query($query);
foreach ($result->getResult() as $row) {
$werte[] = $row->amount;

View File

@@ -160,17 +160,23 @@ class Home extends BaseController
return $result;
}
public function viewBill($filename) {
public function viewBill(string $filename) {
$filePath= WRITEPATH . '/uploads';
$file = new \CodeIgniter\Files\File($filePath."/".$filename);
log_message('debug',$file->getMimeType());
if ($file->getMimeType() == 'application/pdf')
$this->viewPdf($filename);
else
return view('viewBillImg', ['filename'=>WRITEPATH . '/uploads'.$filename]);
else{
$imginfo = getimagesize($filePath."/".$filename);
header("Content-type: {$imginfo['mime']}");
readfile($filePath."/".$filename);
exit;
}
// return view('viewBillImg', ['filename'=>'writable/uploads/'.$filename]);
}
public function viewPdf($filename) {
public function viewPdf(string $filename) {
$view = \Config\Services::renderer();
log_message('debug',$filename);
$filePath= WRITEPATH . '/uploads';
@@ -212,7 +218,7 @@ class Home extends BaseController
if (! $file->isValid() && ($file->getError() != UPLOAD_ERR_NO_FILE)) {
throw new \RuntimeException($file->getErrorString() . '(' . $file->getError() . ')');
} else if ($file->isValid()) {
$rules['billfile'] = ['uploaded[billfile]','max_size[billfile,10000]','mime_in[billfile,application/pdf]'];
$rules['billfile'] = ['uploaded[billfile]','max_size[billfile,10000]','mime_in[billfile,application/pdf,image/jpg,image/jpeg]'];
$errors['billfile'] = ['uploaded'=>'Fehler beim Upload','max_size' => 'Zu Groß', 'mime_in' => "Ungültiger Datentyp"];
$uploading = true;
}
@@ -223,23 +229,30 @@ class Home extends BaseController
}
else{
$data = $this->request->getPost();
//log_message('debug',print_r($data,true));
log_message('debug',print_r($data,true));
if ($this->request->getPost('scheduled') =="0"){
if ($uploading){
$date = Time::parse($this->request->getPost('datum'));
$file->move(WRITEPATH . 'uploads',$date->toLocalizedString('yyyyMMdd')." ".$this->request->getPost('receiver')." ".$this->request->getPost("comment[0]").".".$file->guessExtension());
$data['rechnung'] = $file->getName();
log_message('debug', $file->getName());
}
$bills = model('App\Models\mBills');
$bills->saveBill($data);
if ($this->request->getPost('removeBillFile')){
$bills->deleteBillFile($data['id']);
unlink(WRITEPATH . 'uploads/'.$this->request->getPost('removeBillFile'));
}
$billId = $bills->saveBill($data);
if ($uploading){
$date = Time::parse($data['datum']);
$file->move(WRITEPATH . 'uploads',$date->toLocalizedString('yyyyMMdd')." ".$data['receiver']." ".$billId.".".$file->guessExtension());
log_message('debug', $file->getName());
$bills->storeBillFile($billId, $file->getName());
}
$redirectURL = session('redirect_url') ?? site_url('/');
unset($_SESSION['redirect_url']);
return redirect()->to($redirectURL);
}
else{
$scheduled = model('App\Models\mScheduled');
$scheduled->saveBill($this->request->getPost());
$scheduled->saveBill($data);
}
$this->response->redirect(site_url('/'));
}

View File

@@ -6,12 +6,17 @@ use App\Models\Mcategories;
class mBills extends Model {
protected $table = 'budget_bills';
protected $primaryKey = 'id';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'object';
protected $useSoftDeletes = false;
//TODO timestamps aktivieren
// protected $createdField = 'created_at';
// protected $updatedField = 'updated_at';
// protected $deletedField = 'deleted_at';
protected $allowedFields = ['renummer','datum','receiver','source_id','amount','type','comment','validate','lkz','rechnung'];
@@ -131,45 +136,19 @@ class mBills extends Model {
return $result;
}
function getAccountsBalance(){
// $this->select('SUM(amount) as amount, source_id as idd, budget_accounts.description',FALSE);
// $this->groupby('source_id')->asArray();
// $this->join('budget_accounts', 'budget_accounts.id = budget_bills.source_id', 'left');
// $this->where('budget_accounts.type','account');
// $this->where('budget_accounts.lkz',null);
// $this->where('budget_bills.validate',false);
// $result1 = $this->where('budget_bills.lkz',null)->findAll();
// $assoc1 = array();
// foreach ($result1 as $value) {
// $assoc1[$value['idd']] = $value;
// }
// $details = model('App\Models\mBillDetails');
// $details->select('SUM((-1)*subamount) as amount, account_id as idd, budget_accounts.description',FALSE);
// $details->groupby('account_id')->asArray();
// $details->join('budget_accounts', 'budget_accounts.id = budget_billdetails.account_id', 'left');
// $details->join('budget_bills', 'budget_bills.id = budget_billdetails.bill_id', 'left');
// $details->where('budget_accounts.type','account');
// $details->where('budget_bills.validate',false);
// $details->where('budget_accounts.lkz',NULL);
// $result3 = $details->where('budget_billdetails.lkz',NULL)->findAll();
// $assoc3 = array();
// foreach ($result3 as $value) {
// $assoc3[$value['idd']] = $value;
// }
// $sums = array();
// foreach (array_keys($assoc1 + $assoc3) as $key) {
// $obj = new \stdClass;
// $obj->amount = (isset($assoc1[$key]) ? floatval($assoc1[$key]['amount']) : 0) + (isset($assoc3[$key]) ? floatval($assoc3[$key]['amount']) : 0);
// $obj->description = isset($assoc1[$key]) ? $assoc1[$key]['description'] : $assoc3[$key]['description'];
// $sums[] = $obj;
// }
$sums = $this->db->query("SELECT * FROM get_account_balance4()");
//$this->from("get_account_balance4()")->findAll();
// $this->groupby('source_id')->asArray();
return $sums->getResult();
}
public function saveBill($data){
public function storeBillFile(int $billId, string $filename){
$this->update($billId, [ 'rechnung' => $filename ]);
}
public function deleteBillFile(int $billId){
$this->set('rechnung', 'NULL',false);
$this->update($billId);
}
public function saveBill($data) : int {
$details = model('App\Models\mBillDetails');
$accounts = model('App\Models\mAccounts');
$this->set('datum', date( "Y-m-d", strtotime($data['datum'] ) ));
@@ -201,7 +180,7 @@ class mBills extends Model {
$this->update($data['id']);
}
$details->saveEntries($data, $billId);
return $billId;
}
/**

View File

@@ -1,6 +1,7 @@
<?= $this->extend('layouts/smarthome'); ?>
<?= $this->extend('layout'); ?>
<?= $this->section('menu'); ?>
<?= $this->include('menu/dashboard_menu') ?>
<?= $this->include('sidebar') ?>
<?= $this->endSection(); ?>
<?= $this->section('content'); ?>
<div class="container">

View File

@@ -14,7 +14,12 @@
<div class="col-md-8 col-12">
<div class="card">
<div class="card-header pb-0">
<?php if ($id) : ?>
<h4 class="card-title"><?= ($transfer?'Transfer bearbeiten':($isScheduled?'Terminbuchung bearbeiten':'Rechnung bearbeiten'))?></h4>
<?php else: ?>
<h4 class="card-title"><?= ($transfer?'Neuer Transfer':($isScheduled?'Neue Terminbuchung':'Neue Rechnung'))?></h4>
<?php endif; ?>
<?php if (! empty($validation)) : ?>
<div class='alert alert-danger mt-2'>
<div class="errors" role="alert">
@@ -42,11 +47,11 @@
</div>
</div>
<div class="col-12 <?= ($transfer?' d-none':($isScheduled?' d-none':'')) ?>">
<label for="billfile">Rechnung</label>
<?php if (!isset($billfile)): ?>
<input type="file" id="billfile" name="billfile" class="form-control" capture="environment" accept="image/*, application/pdf">
<?php else: ?>
<input type="text" disabled="disabled" name="temp" id="billfile1" class="form-control" value="<?= set_value('billfile1', $billfile??'') ?>">
<label for="billfile">Rechnung:</label>
<input type="file" id="billfile" name="billfile" class="form-control <?= (!isset($billfile))?'':'d-none' ?>" capture="environment" accept="image/*, application/pdf">
<?php if (isset($billfile)): ?>
<a href="/viewBill/<?= $billfile ?>" id="billfileRef"><?= $billfile ?></a>
<a class="" onclick="removeBillFile(this);"><i class="fa fa-trash"></i></a>
<?php endif; ?>
</div>
<div class="col-12 <?= ($transfer?' d-none':'d-none') ?>">
@@ -124,8 +129,11 @@
<a class="btn btn-info multi" onclick="addLine();" role="button">+ Zeile</a>
<input type="checkbox" id="validate" name="validate" value="1" class='btn-check' autocomplete="off" <?= set_checkbox('validate', '1', (($validate??"f")=="t")?true:false) ?>>
<label class="btn btn-outline-danger" for="validate">Entwurf</label>
<?php if ($id) : ?>
<a class="btn btn-danger" data-bs-toggle="modal" data-bs-id="<?= $id ?>" data-bs-target="#mymodal"><i class="fa fa-trash"></i></a>
<?php endif; ?>
<button type="submit" class="btn btn-primary">Submit</button>
<a class="btn btn-secondary" onclick="history.back();" role="button">Zurück</a>
<a class="btn btn-secondary" onclick="history.back();" role="button"><i class="fa-solid fa-rotate-left"></i></a>
</div>
</div>
</div>

View File

@@ -0,0 +1 @@
<img src="<?=$filename?>" alt="Rechnung <?=$filename?>">

View File

@@ -45,17 +45,33 @@ function addLine(){
});
}
function convertInput( number )
{
function removeBillFile(e) {
e.classList.add("d-none");
document.getElementById("billfile").classList.remove("d-none");
const billFile = document.getElementById("billfileRef");
const form = document.getElementById('newbill');
var DOB = document.createElement("input");
DOB.setAttribute("name", "removeBillFile");
DOB.setAttribute("value", billFile.innerText);
DOB.setAttribute("type", "hidden");
form.appendChild(DOB);
billFile.innerText = "REMOVED FILE: "+billFile.innerText;
billFile.classList.add("text-decoration-line-through");
billFile.classList.add("text-danger");
billFile.removeAttribute("href");
}
function convertInput(number) {
var zahl = number.replace(/\,/g, ".");
var czahl = eval(zahl);
return czahl;
}
function convertOutput( number )
{
if ( typeof number !== 'undefined' )
{
function convertOutput(number) {
if (typeof number !== 'undefined') {
var string = number.toFixed(2);
return string.replace(/\,/g, ".");
}