23-01-2026

This commit is contained in:
Kevin Adametz 2026-01-23 17:35:23 +01:00
parent a939cd51ef
commit a8b395e20d
248 changed files with 29342 additions and 4805 deletions

View file

@ -14,7 +14,8 @@ use App\Models\ShoppingOrderItem;
use Illuminate\Support\Collection;
class CheckoutRepository extends BaseRepository {
class CheckoutRepository extends BaseRepository
{
private $session;
private $instance;
@ -26,11 +27,12 @@ class CheckoutRepository extends BaseRepository {
$this->instance = 'checkout';
}
public function makeShoppingOrder($shopping_user, $data){
public function makeShoppingOrder($shopping_user, $data)
{
$user_shop = Util::getUserShop();
if($shopping_user->is_from === 'homeparty'){
if ($shopping_user->is_from === 'homeparty') {
//get data
$homeparty = Homeparty::find($shopping_user->homeparty_id);
//set Data!
@ -50,37 +52,37 @@ class CheckoutRepository extends BaseRepository {
'subtotal_ws' => 0,
'tax' => $total - $homeparty->order['ek_price_net'],
'total_shipping' => Yard::instance($this->instance)->totalWithShipping(2, '.', ''),
'points' => $homeparty->order['points'] - $homeparty->order['bonus_points_diff'],
'points' => round($homeparty->order['points'] - $homeparty->order['bonus_points_diff'], 2),
'weight' => 0,
'txaction' => 'prev',
'mode' => Util::getUserShoppingMode(),
];
}elseif($shopping_user->is_from === 'collection'){
//get data
$ShoppingCollectOrder = ShoppingCollectOrder::find($shopping_user->shopping_collect_order_id);
//set Data!
$total = Yard::instance($this->instance)->total(2, '.', ''); //ek_price
$data = [
'shopping_user_id' => $shopping_user->id,
'auth_user_id' => $shopping_user->auth_user_id,
'country_id' => Yard::instance($this->instance)->getShippingCountryId(),
'language' => \App::getLocale(),
'user_shop_id' => $user_shop->id,
'payment_for' => $shopping_user->getOrderPaymentFor(),
'total' => $total,
'subtotal' => $ShoppingCollectOrder->price_total_net,
'shipping' => 0,
'shipping_net' => 0,
'subtotal_ws' => $ShoppingCollectOrder->price_total_net,
'tax' => $ShoppingCollectOrder->tax_total,
'tax_split' => $ShoppingCollectOrder->tax_split,
'total_shipping' => Yard::instance($this->instance)->totalWithShipping(2, '.', ''),
'points' => $ShoppingCollectOrder->points,
'weight' => 0,
'txaction' => 'prev',
'mode' => Util::getUserShoppingMode(),
];
}else{
} elseif ($shopping_user->is_from === 'collection') {
//get data
$ShoppingCollectOrder = ShoppingCollectOrder::find($shopping_user->shopping_collect_order_id);
//set Data!
$total = Yard::instance($this->instance)->total(2, '.', ''); //ek_price
$data = [
'shopping_user_id' => $shopping_user->id,
'auth_user_id' => $shopping_user->auth_user_id,
'country_id' => Yard::instance($this->instance)->getShippingCountryId(),
'language' => \App::getLocale(),
'user_shop_id' => $user_shop->id,
'payment_for' => $shopping_user->getOrderPaymentFor(),
'total' => $total,
'subtotal' => $ShoppingCollectOrder->price_total_net,
'shipping' => 0,
'shipping_net' => 0,
'subtotal_ws' => $ShoppingCollectOrder->price_total_net,
'tax' => $ShoppingCollectOrder->tax_total,
'tax_split' => $ShoppingCollectOrder->tax_split,
'total_shipping' => Yard::instance($this->instance)->totalWithShipping(2, '.', ''),
'points' => round($ShoppingCollectOrder->points, 2),
'weight' => 0,
'txaction' => 'prev',
'mode' => Util::getUserShoppingMode(),
];
} else {
$data = [
'shopping_user_id' => $shopping_user->id,
'auth_user_id' => $shopping_user->auth_user_id,
@ -95,7 +97,7 @@ class CheckoutRepository extends BaseRepository {
'subtotal_ws' => Yard::instance($this->instance)->subtotalWithShipping(2, '.', ''),
'tax' => Yard::instance($this->instance)->taxWithShipping(2, '.', ''),
'total_shipping' => Yard::instance($this->instance)->totalWithShipping(2, '.', ''),
'points' => Yard::instance($this->instance)->points(),
'points' => round(Yard::instance($this->instance)->points(), 2),
'weight' => Yard::instance($this->instance)->weight(),
'is_abo' => isset($data['is_abo']) ? $data['is_abo'] : false,
'abo_interval' => isset($data['abo_interval']) ? $data['abo_interval'] : null,
@ -104,60 +106,60 @@ class CheckoutRepository extends BaseRepository {
];
}
$shopping_order= false;
if($this->getSessionPayments('shopping_order_id')){
$shopping_order = false;
if ($this->getSessionPayments('shopping_order_id')) {
$shopping_order = ShoppingOrder::find($this->getSessionPayments('shopping_order_id'));
if($shopping_order){
if ($shopping_order) {
$shopping_order->fill($data);
$shopping_order->save();
}
}
if(!$shopping_order){
if (!$shopping_order) {
$shopping_order = ShoppingOrder::create($data);
if($shopping_user->is_from === 'collection' && $ShoppingCollectOrder){
if ($shopping_user->is_from === 'collection' && $ShoppingCollectOrder) {
$ShoppingCollectOrder->shopping_order_id = $shopping_order->id;
$ShoppingCollectOrder->save();
}
}
$this->putSessionPayments('shopping_order_id', $shopping_order->id);
$items = Yard::instance($this->instance)->getContentByOrder();
$shopping_order->shopping_order_items()->each(function($model) use ($items, $shopping_order, $shopping_user) {
foreach ($items as $item) {
if ($model->row_id === $item->rowId) {
$price_net = Yard::instance($this->instance)->rowPriceNet($item, 2, '.', '');
$tax = $item->price - $price_net;
$data = [
'shopping_order_id' => $shopping_order->id,
'row_id' => $item->rowId,
'product_id' => $item->id,
'comp' => $item->options->comp,
'qty' => $item->qty,
'price' => $item->price,
'price_net' => $price_net,
'tax_rate' => $item->taxRate,
'tax' => $tax,
'price_vk_net' => $shopping_order->getPriceVkNetBy($item->id),
'discount' => $item->options->no_commission ? 0 : $shopping_order->getUserDiscount(),
'points' => $item->options->points,
'slug' => $item->options->slug,
];
if($shopping_user->is_from === 'homeparty'){
$data['homeparty_id'] = (int) $shopping_user->homeparty_id;
$data['product_id'] = null;
}
if($shopping_user->is_from === 'collection'){
$data['shopping_collect_order_id'] = (int) $shopping_user->shopping_collect_order_id;
$data['product_id'] = null;
}
$model->fill($data)->save();
return false;
$items = Yard::instance($this->instance)->getContentByOrder();
$shopping_order->shopping_order_items()->each(function ($model) use ($items, $shopping_order, $shopping_user) {
foreach ($items as $item) {
if ($model->row_id === $item->rowId) {
$price_net = Yard::instance($this->instance)->rowPriceNet($item, 2, '.', '');
$tax = $item->price - $price_net;
$data = [
'shopping_order_id' => $shopping_order->id,
'row_id' => $item->rowId,
'product_id' => $item->id,
'comp' => $item->options->comp,
'qty' => $item->qty,
'price' => $item->price,
'price_net' => $price_net,
'tax_rate' => $item->taxRate,
'tax' => $tax,
'price_vk_net' => $shopping_order->getPriceVkNetBy($item->id),
'discount' => $item->options->no_commission ? 0 : $shopping_order->getUserDiscount(),
'points' => $item->options->points,
'slug' => $item->options->slug,
];
if ($shopping_user->is_from === 'homeparty') {
$data['homeparty_id'] = (int) $shopping_user->homeparty_id;
$data['product_id'] = null;
}
if ($shopping_user->is_from === 'collection') {
$data['shopping_collect_order_id'] = (int) $shopping_user->shopping_collect_order_id;
$data['product_id'] = null;
}
$model->fill($data)->save();
return false;
}
return $model->delete();
}
return $model->delete();
});
foreach ($items as $item) {
if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count()){
if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count()) {
$price_net = Yard::instance($this->instance)->rowPriceNet($item, 2, '.', '');
$tax = $item->price - $price_net;
@ -178,12 +180,12 @@ class CheckoutRepository extends BaseRepository {
'slug' => $item->options->slug
];
if($shopping_user->is_from === 'homeparty'){
if ($shopping_user->is_from === 'homeparty') {
$data['homeparty_id'] = (int) $shopping_user->homeparty_id;
$data['price_vk_net'] = 0;
$data['product_id'] = null;
}
if($shopping_user->is_from === 'collection'){
if ($shopping_user->is_from === 'collection') {
$data['price_vk_net'] = 0;
$data['shopping_collect_order_id'] = (int) $shopping_user->shopping_collect_order_id;
$data['product_id'] = null;
@ -191,29 +193,30 @@ class CheckoutRepository extends BaseRepository {
$shopping_order_item = ShoppingOrderItem::create($data);
}
}
if($shopping_user->is_from === 'homeparty'){
if ($shopping_user->is_from === 'homeparty') {
$shopping_order->makeHomepartyTaxSplit();
}elseif($shopping_user->is_from === 'collection'){
} elseif ($shopping_user->is_from === 'collection') {
//is set on create / filll.
}else{
} else {
$shopping_order->makeTaxSplit();
}
return $shopping_order;
}
public function makeShoppingUser($data){
public function makeShoppingUser($data)
{
$data['same_as_billing'] = isset($data['same_as_billing']) ? false : true; //reinvert
$data['accepted_data_checkbox'] = isset($data['accepted_data_checkbox']) ? true : false;
$shopping_user = false;
if($this->getSessionPayments('shopping_user_id')){
if ($this->getSessionPayments('shopping_user_id')) {
$shopping_user = ShoppingUser::find($this->getSessionPayments('shopping_user_id'));
if($shopping_user){
if ($shopping_user) {
$shopping_user->fill($data);
$shopping_user->mode = null;
$shopping_user->save();
}
}
if(!$shopping_user){
if (!$shopping_user) {
$shopping_user = ShoppingUser::create($data);
}
$this->putSessionPayments('shopping_user_id', $shopping_user->id);
@ -221,53 +224,55 @@ class CheckoutRepository extends BaseRepository {
return $shopping_user;
}
public function getPaymentsMethods($is_from, $is_abo = false){
public function getPaymentsMethods($is_from, $is_abo = false)
{
$payment_methods = [];
if($is_from !== 'shopping' && Util::getAuthUser()){
if ($is_from !== 'shopping' && Util::getAuthUser()) {
$user = Util::getAuthUser();
$payment_methods['default'] = $user->payment_methods;
$payment_methods['data'] = $user->account->payment_data;
}else{
} else {
$payment_methods['default'] = PaymentMethod::getDefaultAsArray($is_abo)->toArray();
$payment_methods['data'] = false;
}
if($is_abo){
$payment_methods['active'] = \App\Models\PaymentMethod::where('active', true)->where('is_abo', true)->get()->pluck( 'id', 'short')->toArray();
}else{
$payment_methods['active'] = \App\Models\PaymentMethod::where('active', true)->get()->pluck( 'id', 'short')->toArray();
if ($is_abo) {
$payment_methods['active'] = \App\Models\PaymentMethod::where('active', true)->where('is_abo', true)->get()->pluck('id', 'short')->toArray();
} else {
$payment_methods['active'] = \App\Models\PaymentMethod::where('active', true)->get()->pluck('id', 'short')->toArray();
}
return $payment_methods;
}
public function isPaymentsMethodsActive($payment_method, $is_from, $is_abo = false){
public function isPaymentsMethodsActive($payment_method, $is_from, $is_abo = false)
{
$payment_names = ['wlt#PPE' => 'PP', 'cc' => 'CC', 'sb#PNT' => 'SB', 'elv' => 'SEPA', 'vor' => 'VOR', 'fnc#MIV' => 'FNC'];
$payment_methods = $this->getPaymentsMethods($is_from, $is_abo);
if(isset($payment_names[$payment_method])){
if (isset($payment_names[$payment_method])) {
$payment_with = $payment_names[$payment_method];
if(array_key_exists($payment_with, $payment_methods['active']) && in_array($payment_methods['active'][$payment_with], $payment_methods['default'])){
return true;
if (array_key_exists($payment_with, $payment_methods['active']) && in_array($payment_methods['active'][$payment_with], $payment_methods['default'])) {
return true;
}
}
abort(404);
}
public function makeCustomerShoppingUser($shopping_data, $is_for, $is_from){
public function makeCustomerShoppingUser($shopping_data, $is_for, $is_from)
{
// $shopping_user = ShoppingUser::findOrFail($shopping_data['shopping_user_id']);
$shopping_user = new ShoppingUser();
$shopping_user->fill($shopping_data);
$shopping_user->faker_mail = false;
$shopping_user->auth_user_id = null;
$shopping_user->homeparty_id = null;
$shopping_user->same_as_billing = $shopping_user->same_as_billing ? false : true; //reinvert
// $shopping_user->id = null;
$shopping_user->accepted_data_checkbox = 1;
$shopping_user->is_for = $is_for;
$shopping_user->is_from = $is_from;
$shopping_user->mode = 'prev';
$shopping_user->language = \App::getLocale();
return $shopping_user;
}
$shopping_user = new ShoppingUser();
$shopping_user->fill($shopping_data);
$shopping_user->faker_mail = false;
$shopping_user->auth_user_id = null;
$shopping_user->homeparty_id = null;
$shopping_user->same_as_billing = $shopping_user->same_as_billing ? false : true; //reinvert
// $shopping_user->id = null;
$shopping_user->accepted_data_checkbox = 1;
$shopping_user->is_for = $is_for;
$shopping_user->is_from = $is_from;
$shopping_user->mode = 'prev';
$shopping_user->language = \App::getLocale();
return $shopping_user;
}
public function initShoppingUser($is_for, $is_from, $homeparty_id = null)
{
@ -275,11 +280,11 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->homeparty_id = $homeparty_id;
$shopping_user->language = \App::getLocale();
//eingeloggter Kunde
if(\Auth::guard('customers')->check()){
if (\Auth::guard('customers')->check()) {
$shopping_user = $this->shoppingUserByAuthCustomer(\Auth::guard('customers')->user());
}
//eingeloggter User Berater
if(\Auth::guard('user')->check()){
if (\Auth::guard('user')->check()) {
$shopping_user = $this->shoppingUserByAuthUser(\Auth::guard('user')->user(), $is_from, $is_for);
}
$shopping_user->mode = 'prev';
@ -288,29 +293,31 @@ class CheckoutRepository extends BaseRepository {
return $shopping_user;
}
public function shoppingUserByAuthCustomer(\App\Models\Customer $user){
public function shoppingUserByAuthCustomer(\App\Models\Customer $user)
{
//clone shopping user!
if($user->shopping_user_id){
if ($user->shopping_user_id) {
$find_shopping_user = ShoppingUser::find($user->shopping_user_id);
if($find_shopping_user){
if ($find_shopping_user) {
$shopping_user = $find_shopping_user->replicate();
$shopping_user->billing_country_id = null;
$shopping_user->shipping_country_id = null;
}
}else{
} else {
$shopping_user = new ShoppingUser();
$shopping_user->language = \App::getLocale();
}
return $shopping_user;
}
public function shoppingUserByAuthUser(\App\User $user, $is_from, $is_for){
public function shoppingUserByAuthUser(\App\User $user, $is_from, $is_for)
{
$shopping_user = new ShoppingUser();
$shopping_user->language = \App::getLocale();
$shopping_user->billing_salutation = $user->account->salutation;
$shopping_user->billing_company = $user->account->company;
$shopping_user->billing_firstname = $user->account->first_name;
@ -327,7 +334,7 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->accepted_data_checkbox = 1;
//Lieferadresse
$shopping_user->same_as_billing = $user->account->same_as_billing ? false : true;
$shopping_user->shipping_salutation = $user->account->shipping_salutation;
@ -340,19 +347,21 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->shipping_city = $user->account->shipping_city;
//$shopping_user->shipping_country_id = $user->account->shipping_country_id;
$shopping_user->shipping_phone = $user->account->shipping_phone;
$shopping_user->shipping_postnumber = $user->account->shipping_postnumber;
return $shopping_user;
}
public function shoppingUserAuthData($is_from, $is_for, $data = []){
public function shoppingUserAuthData($is_from, $is_for, $data = [])
{
$user = Util::getAuthUser();
$shopping_user = new ShoppingUser();
$shopping_user->auth_user_id = $user->id;
$shopping_user->mode = 'prev';
$shopping_user->language = \App::getLocale();
$shopping_user->billing_salutation = $user->account->salutation;
$shopping_user->billing_company = $user->account->company;
$shopping_user->billing_firstname = $user->account->first_name;
@ -374,10 +383,10 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->shopping_collect_order_id = isset($data['shopping_collect_order_id']) ? $data['shopping_collect_order_id'] : null;
//Lieferadresse
if($is_from === 'user_order'){
if(isset($data['shopping_user_id']) && strpos($data['is_for'], 'ot') !== false){
if ($is_from === 'user_order') {
if (isset($data['shopping_user_id']) && strpos($data['is_for'], 'ot') !== false) {
$s_user = ShoppingUser::findOrFail($data['shopping_user_id']);
/* $shopping_user->billing_salutation = $s_user->billing_salutation;
/* $shopping_user->billing_salutation = $s_user->billing_salutation;
$shopping_user->billing_company = $s_user->billing_company;
$shopping_user->billing_firstname = $s_user->billing_firstname;
$shopping_user->billing_lastname = $s_user->billing_lastname;
@ -390,7 +399,7 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->billing_email = $s_user->billing_email;
;*/
$shopping_user->faker_mail = $s_user->faker_mail;
if(!$s_user->faker_mail){
if (!$s_user->faker_mail) {
$shopping_user->shipping_email = $s_user->billing_email;
}
$shopping_user->shopping_user_id = $data['shopping_user_id'];
@ -407,8 +416,8 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->shipping_city = isset($data['shipping_city']) ? $data['shipping_city'] : '';
$shopping_user->shipping_country_id = Yard::instance($this->instance)->getShippingCountryCountryId();
$shopping_user->shipping_phone = isset($data['shipping_phone']) ? $data['shipping_phone'] : '';
}else{
$shopping_user->shipping_postnumber = isset($data['shipping_postnumber']) ? $data['shipping_postnumber'] : '';
} else {
$shopping_user->same_as_billing = $user->account->same_as_billing ? false : true;
$shopping_user->shipping_salutation = $user->account->shipping_salutation;
$shopping_user->shipping_company = $user->account->shipping_company;
@ -420,22 +429,24 @@ class CheckoutRepository extends BaseRepository {
$shopping_user->shipping_city = $user->account->shipping_city;
$shopping_user->shipping_country_id = $user->account->shipping_country_id;
$shopping_user->shipping_phone = $user->account->shipping_phone;
$shopping_user->shipping_postnumber = $user->account->shipping_postnumber;
}
return $shopping_user;
}
public function putSessionPayments($key, $value){
public function putSessionPayments($key, $value)
{
$content = $this->getContent();
$content->put($key, $value);
$this->session->put($this->instance, $content);
}
public function getSessionPayments($key){
public function getSessionPayments($key)
{
$content = $this->getContent();
if ($content->has($key)){
if ($content->has($key)) {
return $content->get($key);
}
return false;
@ -443,10 +454,10 @@ class CheckoutRepository extends BaseRepository {
public function sessionDestroy($with_shopping = false)
{
if($with_shopping){
if(session('user_shop_payment') === 1){ //ShoppingInstance payment 1 = webshop
if ($with_shopping) {
if (session('user_shop_payment') === 1) { //ShoppingInstance payment 1 = webshop
Yard::instance('webshop')->destroy();
}else{
} else {
Yard::instance('shopping')->destroy();
}
}
@ -460,4 +471,4 @@ class CheckoutRepository extends BaseRepository {
}
return $this->session->get($this->instance);
}
}
}