#51 Festschreiben der Points, Gutschriftenmodul
This commit is contained in:
parent
dfd049aaa9
commit
3f2fbd6d5b
63 changed files with 4610 additions and 971 deletions
125
app/Repositories/CreditRepository.php
Normal file
125
app/Repositories/CreditRepository.php
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repositories;
|
||||
|
||||
use PDF;
|
||||
use Storage;
|
||||
use App\User;
|
||||
use App\Services\Credit;
|
||||
use App\Models\UserCredit;
|
||||
use App\Services\UserMarign;
|
||||
|
||||
use App\Services\MyPDFMerger;
|
||||
use App\Models\UserCreditItem;
|
||||
|
||||
class CreditRepository extends BaseRepository {
|
||||
|
||||
private $user_credit;
|
||||
public function __construct(User $model)
|
||||
{
|
||||
$this->model = $model;
|
||||
}
|
||||
|
||||
public function create($request = [])
|
||||
{
|
||||
//need invoice $data
|
||||
$number = Credit::getCreditNumber();
|
||||
$credit_date = isset($request['credit_date']) ? $request['credit_date'] : \Carbon::now()->format("d.m.Y");
|
||||
$credit_send_mail = isset($request['credit_send_mail']) ? true: false;
|
||||
$credit_number = Credit::createCreditNumber($number, $credit_date);
|
||||
|
||||
$this->user_credit = new UserCredit();
|
||||
$user_credit_items = $this->makeUserCredit();
|
||||
$data = [
|
||||
'user' => $this->model,
|
||||
'credit_date' => $credit_date,
|
||||
'credit_number' => $credit_number,
|
||||
'user_credits' => $this->user_credit,
|
||||
'user_credit_items' => $user_credit_items,
|
||||
];
|
||||
$pdf = PDF::loadView('pdf.credit', $data);
|
||||
$pdf->setPaper('A4', 'portrait');
|
||||
|
||||
$dir = Credit::getCreditStorageDir($credit_date);
|
||||
if(!Storage::disk('public')->exists( $dir )){
|
||||
Storage::disk('public')->makeDirectory($dir); //creates directory
|
||||
}
|
||||
$path = Storage::disk('public')->getAdapter()->getPathPrefix();
|
||||
$filename = Credit::makeCreditFilename($credit_number);
|
||||
|
||||
$pdf->save($path.$dir.$filename);
|
||||
|
||||
$pdfMerger = new MyPDFMerger();
|
||||
$pdfMerger->addPDF($path.$dir.$filename);
|
||||
$file = $pdfMerger->myMerge('string', $filename, 'template_invoice_de');
|
||||
Storage::disk('public')->put($dir.$filename, $file);
|
||||
|
||||
|
||||
|
||||
$this->user_credit->user_id = $this->model->id;
|
||||
$this->user_credit->year = \Carbon::parse($credit_date)->format('Y');
|
||||
$this->user_credit->month = \Carbon::parse($credit_date)->format('n');
|
||||
$this->user_credit->date = $credit_date;
|
||||
$this->user_credit->filename = $filename;
|
||||
$this->user_credit->dir = $dir;
|
||||
$this->user_credit->disk = 'public';
|
||||
$this->user_credit->number = $number;
|
||||
$this->user_credit->full_number = $credit_number;
|
||||
$this->user_credit->save();
|
||||
|
||||
if($credit_send_mail){
|
||||
Credit::sendCreditMail($this->user_credit);
|
||||
}
|
||||
$this->finishUserCredit($this->user_credit->id, $user_credit_items);
|
||||
return true;
|
||||
}
|
||||
|
||||
private function finishUserCredit($user_credit_id, $user_credit_items){
|
||||
//next credits
|
||||
Credit::makeNextCreditNumber();
|
||||
//mark as payed
|
||||
//$UserCreditItems = UserCreditItem::where('user_id', $this->model->id)->wherePaid(false)->get();
|
||||
foreach($user_credit_items as $user_credit_item){
|
||||
$user_credit_item->paid = true;
|
||||
$user_credit_item->user_credit_id = $user_credit_id;
|
||||
$user_credit_item->save();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function makeUserCredit(){
|
||||
|
||||
$this->user_credit->net = 0;
|
||||
$this->user_credit->infos = [];
|
||||
$infos = [];
|
||||
$user_credit_items = [];
|
||||
|
||||
|
||||
$UserCreditItems = UserCreditItem::where('user_id', $this->model->id)->wherePaid(false)->get();
|
||||
foreach($UserCreditItems as $userCreditItem){
|
||||
$user_credit_items[] = $userCreditItem;
|
||||
$infos[] = ['id' => $userCreditItem->id, 'credit' => $userCreditItem->credit];
|
||||
$this->user_credit->net += $userCreditItem->credit;
|
||||
}
|
||||
/* taxable_sales //user tax
|
||||
1 //umsatzsteuerpflichtig
|
||||
2 // nicht umsatzsteuerpflichtig
|
||||
*/
|
||||
if($this->model->account){
|
||||
$this->user_credit->taxable = $this->model->account->taxable_sales == 2 ? false : true;
|
||||
if($this->user_credit->taxable){
|
||||
$this->user_credit->tax_rate = config('app.main_tax_rate');
|
||||
$this->user_credit->total = round($this->user_credit->net * config('app.main_tax'), 2);
|
||||
$this->user_credit->tax = $this->user_credit->total - $this->user_credit->net;
|
||||
|
||||
}else{
|
||||
$this->user_credit->tax_rate = 0;
|
||||
$this->user_credit->total = $this->user_credit->net;
|
||||
$this->user_credit->tax = 0;
|
||||
}
|
||||
}
|
||||
$this->user_credit->infos = $infos;
|
||||
return $user_credit_items;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue